<?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>216194</bug_id>
          
          <creation_ts>2020-09-04 15:04:58 -0700</creation_ts>
          <short_desc>[WebIDL] Realign our IDL extended attribute names with those specified in WebIDL</short_desc>
          <delta_ts>2020-11-12 09:52:09 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>d</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1685865</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-04 15:04:58 -0700</bug_when>
    <thetext>[WebIDL] Realign our IDL extended attribute names with those specified in WebIDL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685868</commentid>
    <comment_count>1</comment_count>
      <attachid>408028</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-04 15:16:50 -0700</bug_when>
    <thetext>Created attachment 408028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685873</commentid>
    <comment_count>2</comment_count>
      <attachid>408030</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-04 15:23:56 -0700</bug_when>
    <thetext>Created attachment 408030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685883</commentid>
    <comment_count>3</comment_count>
      <attachid>408034</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-04 15:31:56 -0700</bug_when>
    <thetext>Created attachment 408034
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685950</commentid>
    <comment_count>4</comment_count>
      <attachid>408050</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-04 17:21:54 -0700</bug_when>
    <thetext>Created attachment 408050
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686069</commentid>
    <comment_count>5</comment_count>
      <attachid>408086</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-05 08:44:34 -0700</bug_when>
    <thetext>Created attachment 408086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686073</commentid>
    <comment_count>6</comment_count>
      <attachid>408087</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-05 08:53:44 -0700</bug_when>
    <thetext>Created attachment 408087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686077</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-05 09:02:09 -0700</bug_when>
    <thetext>This is a big one, but really just renames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686078</commentid>
    <comment_count>8</comment_count>
      <attachid>408087</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-05 09:02:25 -0700</bug_when>
    <thetext>Comment on attachment 408087
Patch

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

Given the “legacy” in LegacyNoInterfaceObject, it’s surprising that it’s so often needed for correct behavior even in relatively new features. Perhaps they erred when naming it?

r=me assuming great EWS results

&gt; Source/WebCore/bindings/js/JSDOMAbstractOperations.h:35
&gt; +enum class LegacyOverrideBuiltIns {

Make this a one-liner? Vertical form not great for a Yes/No.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686082</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-05 10:01:46 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #8)
&gt; Comment on attachment 408087 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=408087&amp;action=review
&gt; 
&gt; Given the “legacy” in LegacyNoInterfaceObject, it’s surprising that it’s so
&gt; often needed for correct behavior even in relatively new features. Perhaps
&gt; they erred when naming it?
&gt; 

It has mostly been replaced with the &quot;mixin interface&quot; construct, which we don&apos;t support yet (or at least until later today).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686083</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-05 10:14:30 -0700</bug_when>
    <thetext>Committed r266662: &lt;https://trac.webkit.org/changeset/266662&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 408087.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686084</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-05 10:15:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/68399022&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686125</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-05 14:38:51 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #8)
&gt; &gt; Source/WebCore/bindings/js/JSDOMAbstractOperations.h:35
&gt; &gt; +enum class LegacyOverrideBuiltIns {
&gt; 
&gt; Make this a one-liner? Vertical form not great for a Yes/No.

Neglected to do this in the commit. Fix up for review at https://bugs.webkit.org/show_bug.cgi?id=216218.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706899</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-11-12 09:52:09 -0800</bug_when>
    <thetext>*** Bug 210762 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408028</attachid>
            <date>2020-09-04 15:16:50 -0700</date>
            <delta_ts>2020-09-04 15:23:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216194-20200904151648.patch</filename>
            <type>text/plain</type>
            <size>446138</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2MiBAQAorMjAyMC0wOS0wNCAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYklETF0gUmVhbGlnbiBvdXIg
SURMIGV4dGVuZGVkIGF0dHJpYnV0ZSBuYW1lcyB3aXRoIHRob3NlIHNwZWNpZmllZCBpbiBXZWJJ
REwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjE5
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE92ZXIg
dGltZSwgdGhlIFdlYklETCBhbmQgSFRNTCBzcGVjaWZpY2F0aW9ucyBoYXZlIGFkZGVkIC8gcmVu
YW1lZCBleHRlbmRlZCBhdHRyaWJ1dGVzIGFuZCB3ZSBoYXZlCisgICAgICAgIG5vdCBzdGF5ZWQg
dXAgdG8gZGF0ZS4gVGhpcyB1cGRhdGVzIHRoZSBuYW1lcyBldmVyeXdoZXJlIGFuZCBVUkxzIGlu
IElETEF0dHJpYnV0ZXMuanNvbi4KKyAgICAKKyAgICAgICAgICAgICBbQWxsb3dTaGFyZWRdIC0+
IG5ldywgbWFya2VkIGFzIHVuc3VwcG9ydGVkCisgICAgICAgICAgICAgW0hUTUxDb25zdHJ1Y3Rv
cl0gLSA+IG5ldywgbWFya2VkIGFzIHVuc3VwcG9ydGVkCisgICAgICAgICAgICAgW0xlZ2FjeUxl
bmllbnRTZXR0ZXJdIC0+IHJlbmFtZWQgZnJvbSBbTGVuaWVudFNldHRlcl0sIHN0aWxsIHVuc3Vw
cG9ydGVkCisgICAgICAgICAgICAgW0xlZ2FjeUxlbmllbnRUaGlzXSAtPiByZW5hbWVkIGZyb20g
W0xlbmllbnRUaGlzXQorICAgICAgICAgICAgIFtMZWdhY3lOYW1lc3BhY2VdIC0+IG5ldywgbWFy
a2VkIGFzIHVuc3VwcG9ydGVkCisgICAgICAgICAgICAgW0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
XSAtPiByZW5hbWVkIGZyb20gW05vSW50ZXJmYWNlT2JqZWN0XQorICAgICAgICAgICAgIFtMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ10gLT4gcmVuYW1lZCBmcm9tIFtUcmVhdE51bGxBcz1FbXB0eVN0
cmluZ10KKyAgICAgICAgICAgICBbTGVnYWN5T3ZlcnJpZGVCdWlsdEluc10gLT4gcmVuYW1lZCBm
cm9tIE92ZXJyaWRlQnVpbHRpbnMKKyAgICAgICAgICAgICBbTGVnYWN5VHJlYXROb25PYmplY3RB
c051bGxdIC0+IHJlbmFtZWQgZnJvbSBbVHJlYXROb25PYmplY3RBc051bGxdLCBzdGlsbCB1bnN1
cHBvcnRlZAorICAgICAgICAgICAgIFtMZWdhY3lVbmZvcmdlYWJsZV0gLT4gcmVuYW1lZCBmcm9t
IFtVbmZvcmdlYWJsZV0KKyAgICAgICAgICAgICBbU2VyaWFsaXphYmxlXSAtPiBuZXcsIG1hcmtl
ZCBhcyB1bnN1cHBvcnRlZAorICAgICAgICAgICAgIFtUcmFuc2ZlcmFibGVdIC0+IG5ldywgbWFy
a2VkIGFzIHVuc3VwcG9ydGVkCisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
Q2FuY2VsRXZlbnQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXlt
ZW50QXV0aG9yaXplZEV2ZW50LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50Lmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2
ZW50LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5pZGw6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvUGxheWJhY2tRdWFsaXR5LmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaWRsOgorICAgICAgICAq
IE1vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm8uaWRsOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEv
U3RvcmFnZVF1b3RhLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVz
aXMuaWRsOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvTGlzdGVuZXIuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGw6CisgICAg
ICAgICogU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVk
LmlkbC5lcmI6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Um9sZS5pZGw6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BcmlhQXR0cmlidXRlcy5pZGw6CisgICAgICAgICog
YW5pbWF0aW9uL0FuaW1hdGFibGUuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL0lETFR5cGVzLmg6
CisgICAgICAgICogYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmg6CisgICAgICAgIChXZWJD
b3JlOjpET01XcmFwcGVyV29ybGQ6OmRpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZp
b3IpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpzaG91bGREaXNhYmxlTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0JlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVdyYXBwZXJXb3JsZDo6ZGlzYWJsZU92ZXJyaWRlQnVpbHRpbnNCZWhhdmlvcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OnNob3VsZERpc2FibGVPdmVycmlk
ZUJ1aWx0aW5zQmVoYXZpb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjppc1Zpc2libGVO
YW1lZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnROdWxsYWJsZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnZlcnRlcjxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxUPj46OmNvbnZlcnQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDb252ZXJ0ZXI8SURMVHJlYXROdWxsQXNFbXB0
eUFkYXB0b3I8VD4+Ojpjb252ZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAg
ICAgIChHZW5lcmF0ZVB1dCk6CisgICAgICAgIChHZW5lcmF0ZVB1dEJ5SW5kZXgpOgorICAgICAg
ICAoR2VuZXJhdGVJc0xlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKToKKyAgICAgICAgKEdl
bmVyYXRlRGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoR2VuZXJhdGVEZWxldGVQcm9wZXJ0
eUNvbW1vbik6CisgICAgICAgIChBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UpOgorICAgICAg
ICAoT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKToKKyAgICAgICAgKElzQWNjZWxlcmF0ZWRE
T01BdHRyaWJ1dGUpOgorICAgICAgICAoR2V0SlNDQXR0cmlidXRlc0ZvckF0dHJpYnV0ZSk6Cisg
ICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9u
KToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyVHJhbXBvbGluZURlZmluaXRpb24p
OgorICAgICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJUcmFtcG9saW5lRGVmaW5pdGlvbik6
CisgICAgICAgIChJc0Fubm90YXRlZFR5cGUpOgorICAgICAgICAoR2V0QW5ub3RhdGVkSURMVHlw
ZSk6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcyk6CisgICAgICAg
IChOZWVkc0NvbnN0cnVjdG9yUHJvcGVydHkpOgorICAgICAgICAoSXNMZWdhY3lVbmZvcmdlYWJs
ZSk6CisgICAgICAgIChDb21wdXRlRnVuY3Rpb25TcGVjaWFsKToKKyAgICAgICAgKEdlbmVyYXRl
SXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChJc1VuZm9yZ2Vh
YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
anNvbjoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3Rv
cnMuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRh
cmdldC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zLmNwcDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmg6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVu
Y2llcy5kZXA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbmNsdWRlcy5p
ZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmlkbDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmlkbDogQWRkZWQuCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPcGVyYXRpb25C
YXNlLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE92ZXJyaWRlQnVp
bHRpbnMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGNzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlk
bDoKKyAgICAgICAgKiBjc3MvQ1NTVW5rbm93blJ1bGUuaWRsOgorICAgICAgICAqIGNzcy9FbGVt
ZW50Q1NTSW5saW5lU3R5bGUuaWRsOgorICAgICAgICAqIGNzcy9NZWRpYUxpc3QuaWRsOgorICAg
ICAgICAqIGNzcy9TdHlsZU1lZGlhLmlkbDoKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5p
ZGw6CisgICAgICAgICogZG9tL0NoaWxkTm9kZS5pZGw6CisgICAgICAgICogZG9tL0RPTUltcGxl
bWVudGF0aW9uLmlkbDoKKyAgICAgICAgKiBkb20vRE9NU3RyaW5nTWFwLmlkbDoKKyAgICAgICAg
KiBkb20vRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEFuZEVsZW1lbnRFdmVudEhhbmRs
ZXJzLmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsOgorICAgICAg
ICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRXZlbnQuaWRsOgorICAgICAgICAq
IGRvbS9FdmVudExpc3RlbmVyLmlkbDoKKyAgICAgICAgKiBkb20vR2xvYmFsRXZlbnRIYW5kbGVy
cy5pZGw6CisgICAgICAgICogZG9tL05hdmlnYXRvck1heFRvdWNoUG9pbnRzLmlkbDoKKyAgICAg
ICAgKiBkb20vTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlLmlkbDoKKyAgICAgICAgKiBkb20vTm9u
RWxlbWVudFBhcmVudE5vZGUuaWRsOgorICAgICAgICAqIGRvbS9QYXJlbnROb2RlLmlkbDoKKyAg
ICAgICAgKiBkb20vU2hhZG93Um9vdC5pZGw6CisgICAgICAgICogZG9tL1Nsb3RhYmxlLmlkbDoK
KyAgICAgICAgKiBodG1sL0hUTUxCb2R5RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1M
RG9jdW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaWRsOgorICAgICAgICAq
IGh0bWwvSFRNTEZvbnRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVu
dC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbDoKKyAgICAgICAgKiBo
dG1sL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTElG
cmFtZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5pZGw6Cisg
ICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxP
YmplY3RFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxPckZvcmVpZ25FbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1s
L0hUTUxUYWJsZUNlbGxFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1l
bnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5pZGw6CisgICAgICAg
ICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9B
TkdMRUluc3RhbmNlZEFycmF5cy5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzQ29t
cG9zaXRpbmcuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0RyYXdJbWFnZS5pZGw6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzRHJhd1BhdGguaWRsOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc0ZpbGxTdHJva2VTdHlsZXMuaWRsOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc0ZpbHRlcnMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0ltYWdl
RGF0YS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VTbW9vdGhpbmcuaWRs
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdGguaWRsOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1BhdGhEcmF3aW5nU3R5bGVzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZWN0LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNTaGFkb3dTdHls
ZXMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1N0YXRlLmlkbDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNUZXh0LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNUZXh0RHJhd2luZ1N0eWxlcy5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzVHJh
bnNmb3JtLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNVc2VySW50ZXJmYWNlLmlk
bDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5pZGw6CisgICAgICAgICog
aHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5pZGw6CisgICAgICAgICogaHRtbC9jYW52
YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VY
VEZyYWdEZXB0aC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxP
RC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRzUkdCLmlkbDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9P
RVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVh
ci5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5pZGw6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5pZGw6CisgICAg
ICAgICogaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaWRsOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5pZGw6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMxLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlUFZSVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQ3NSR0IuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVi
dWdSZW5kZXJlckluZm8uaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFk
ZXJzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5pZGw6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5pZGw6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tD
dWVHZW5lcmljLmlkbDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVFJlZ2lvbkxpc3QuaWRsOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaWRsOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsOgorICAgICAgICAqIHBhZ2UvRE9NV2lu
ZG93LmlkbDoKKyAgICAgICAgKiBwYWdlL0dsb2JhbENyeXB0by5pZGw6CisgICAgICAgICogcGFn
ZS9HbG9iYWxQZXJmb3JtYW5jZS5pZGw6CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5pZGw6Cisg
ICAgICAgICogcGFnZS9OYXZpZ2F0b3JJRC5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JM
YW5ndWFnZS5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JPbkxpbmUuaWRsOgorICAgICAg
ICAqIHBhZ2UvTmF2aWdhdG9yUGx1Z2lucy5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JT
ZXJ2aWNlV29ya2VyLmlkbDoKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvclNoYXJlLmlkbDoKKyAg
ICAgICAgKiBwYWdlL1JlbW90ZURPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGFnZS9XaW5kb3dF
dmVudEhhbmRsZXJzLmlkbDoKKyAgICAgICAgKiBwYWdlL1dpbmRvd09yV29ya2VyR2xvYmFsU2Nv
cGUuaWRsOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaWRsOgorICAgICAgICAqIHN2Zy9TVkdGaXRUb1ZpZXdCb3guaWRsOgorICAgICAgICAqIHN2
Zy9TVkdUZXN0cy5pZGw6CisgICAgICAgICogc3ZnL1NWR1VSSVJlZmVyZW5jZS5pZGw6CisgICAg
ICAgICogc3ZnL1NWR1pvb21BbmRQYW4uaWRsOgorICAgICAgICAqIHRlc3RpbmcvR0NPYnNlcnZh
dGlvbi5pZGw6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHNN
YXBMaWtlLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsc1NldExpa2UuaWRsOgorICAg
ICAgICAqIHRlc3RpbmcvTWFsbG9jU3RhdGlzdGljcy5pZGw6CisgICAgICAgICogdGVzdGluZy9N
ZW1vcnlJbmZvLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmlkbDoKKyAg
ICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaWRsOgorICAgICAgICAq
IHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tQYXlt
ZW50Q29vcmRpbmF0b3IuaWRsOgorICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVy
bmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaWRsOgorICAgICAg
ICAqIHRlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZh
a2VYUklucHV0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogdGVzdGluZy9XZWJYUlRlc3QuaWRs
OgorICAgICAgICAqIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsOgorICAgICAgICAqIHhtbC9Y
UGF0aE5TUmVzb2x2ZXIuaWRsOgorCiAyMDIwLTA5LTA0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYSxFTUVdIC1vdXRwdXRPYnNjdXJlZER1ZVRvSW5z
dWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uIEtWTyB3aWxsIHNldCBPdXRwdXRPYnNjdXJlZCBm
b3IgYWxsIGF0dGFjaGVkIE1lZGlhS2V5U2Vzc2lvbnMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5Q2FuY2VsRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlDYW5jZWxFdmVudC5pZGwJKHJl
dmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlDYW5jZWxFdmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwog
ICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIEFwcGxlUGF5Q2FuY2VsRXZlbnQg
OiBFdmVudCB7CiAgICAgW0NhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIEFwcGxl
UGF5U2Vzc2lvbkVycm9yIHNlc3Npb25FcnJvcjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRB
dXRob3JpemVkRXZlbnQuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPUFQUExFX1BB
WSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
IF0gaW50ZXJmYWNlIEFwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudCA6IEV2ZW50IHsKICAg
ICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUgQXBwbGVQYXlQYXltZW50IHBh
eW1lbnQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQu
aWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1BUFBMRV9QQVksCi0gICAgTm9J
bnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFj
ZSBBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50IDogRXZlbnQgewogICAgIFtDYWNo
ZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBBcHBsZVBheVBheW1lbnRNZXRob2QgcGF5
bWVudE1ldGhvZDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVj
dGVkRXZlbnQuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPUFQUExFX1BB
WSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
IF0gaW50ZXJmYWNlIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudCA6IEV2ZW50
IHsKICAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUgQXBwbGVQYXlQYXlt
ZW50Q29udGFjdCBzaGlwcGluZ0NvbnRhY3Q7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBw
aW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZl
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBDb25kaXRp
b25hbD1BUFBMRV9QQVksCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRF
dmVudCA6IEV2ZW50IHsKICAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUg
QXBwbGVQYXlTaGlwcGluZ01ldGhvZCBzaGlwcGluZ01ldGhvZDsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
VmFsaWRhdGVNZXJjaGFudEV2ZW50LmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPUFQ
UExFX1BBWSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9i
amVjdCwKIF0gaW50ZXJmYWNlIEFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50IDogRXZlbnQg
ewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsaWRhdGlvblVSTDsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaWRsCShyZXZpc2lv
biAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICAgICBFbmFibGVkQXRSdW50aW1lPUZl
dGNoQVBJLAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAgIEludGVyZmFjZU5hbWU9
Qm9keSwKLSAgICBOb0ludGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
CiBdIGludGVyZmFjZSBGZXRjaEJvZHkgewogICAgIFtJbXBsZW1lbnRlZEFzPXJlYWRhYmxlU3Ry
ZWFtLCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBSZWFkYWJsZVN0
cmVhbT8gYm9keTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBib2R5VXNlZDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9z
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xz
L01lZGlhQ29udHJvbHNIb3N0LmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNyArMzIsNyBAQCBlbnVtIERldmljZVR5cGUgewogWwogICAgIENvbmRpdGlv
bmFsPU1FRElBX0NPTlRST0xTX1NDUklQVCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAog
XSBpbnRlcmZhY2UgTWVkaWFDb250cm9sc0hvc3QgewogICAgIHNlcXVlbmNlPFRleHRUcmFjaz4g
c29ydGVkVHJhY2tMaXN0Rm9yTWVudShUZXh0VHJhY2tMaXN0IHRyYWNrTGlzdCk7CiAgICAgc2Vx
dWVuY2U8QXVkaW9UcmFjaz4gc29ydGVkVHJhY2tMaXN0Rm9yTWVudShBdWRpb1RyYWNrTGlzdCB0
cmFja0xpc3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9WaWRl
b1BsYXliYWNrUXVhbGl0eS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9WaWRlb1BsYXliYWNrUXVhbGl0eS5pZGwJKHJldmlzaW9uIDI2NjYzNCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvVmlkZW9QbGF5YmFja1F1YWxp
dHkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBDb25kaXRp
b25hbD1WSURFTywKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2UgVmlk
ZW9QbGF5YmFja1F1YWxpdHkgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQg
ZG91YmxlIGNyZWF0aW9uVGltZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCShyZXZpc2lvbiAyNjY2
MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBAIHR5cGVkZWYgKG9iamVj
dCBvciBET01TdHJpbmcpIEFsZ29yaXRobUkKICAgICAvLyA2LjEgUGVlci10by1wZWVyIGRhdGEg
QVBJCiAgICAgLy8gRklYTUUgMTY5NjQ0OiBtaXNzaW5nIHNjdHAKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gUlRDRGF0YUNoYW5uZWwgY3JlYXRlRGF0YUNoYW5uZWwoW1RyZWF0TnVsbEFzPUVt
cHR5U3RyaW5nXSBVU1ZTdHJpbmcgbGFiZWwsIG9wdGlvbmFsIFJUQ0RhdGFDaGFubmVsSW5pdCBv
cHRpb25zKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJUQ0RhdGFDaGFubmVsIGNyZWF0ZURh
dGFDaGFubmVsKFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gVVNWU3RyaW5nIGxhYmVsLCBvcHRp
b25hbCBSVENEYXRhQ2hhbm5lbEluaXQgb3B0aW9ucyk7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFu
ZGxlciBvbmRhdGFjaGFubmVsOwogCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmlkbAko
cmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKIF0gaW50ZXJmYWNlIFF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyBsb25nIG1vdmllU2l6ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvU3Rv
cmFnZUluZm8uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
U3RvcmFnZUluZm8uaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1RVU9UQSwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlLAogXSBpbnRlcmZhY2UgU3RvcmFnZUluZm8gewpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9xdW90YS9TdG9yYWdlUXVvdGEuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcXVvdGEvU3RvcmFnZVF1b3RhLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9TdG9yYWdlUXVvdGEuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAor
ICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVFVT1RBLAogICAg
IEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBTdG9yYWdlUXVvdGEgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVz
aXMuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hTeW50aGVzaXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAg
CiBbCiAgICAgQ29uZGl0aW9uYWw9U1BFRUNIX1NZTlRIRVNJUywKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFNwZWVjaFN5
bnRoZXNpcyAgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHBlbmRpbmc7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3BlYWtpbmc7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaWRsCShy
ZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNWb2ljZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwog
IAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
LAogICAgIENvbmRpdGlvbmFsPVNQRUVDSF9TWU5USEVTSVMKIF0gaW50ZXJmYWNlIFNwZWVjaFN5
bnRoZXNpc1ZvaWNlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZvaWNlVVJJ
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2lu
ay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtU2luay5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw3ICsyNSw3IEBACiAKIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0LAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uCiBdIGludGVyZmFjZSBS
ZWFkYWJsZVN0cmVhbVNpbmsgewogICAgIHVuZGVmaW5lZCBlbnF1ZXVlKEJ1ZmZlclNvdXJjZSBj
aHVuayk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW1Tb3VyY2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3Qs
CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24K
IF0gaW50ZXJmYWNlIFJlYWRhYmxlU3RyZWFtU291cmNlIHsKICAgICBbQ3VzdG9tXSBQcm9taXNl
PHVuZGVmaW5lZD4gc3RhcnQoUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciBjb250cm9s
bGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwJKHJldmlzaW9uIDI2NjYz
NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogICAgIENvbmRp
dGlvbmFsPVdFQl9BVURJTywKICAgICBFbmFibGVkQnlTZXR0aW5nPVByZWZpeGVkV2ViQXVkaW8s
CiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QKKyAgICBM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdAogXSBpbnRlcmZhY2UgV2ViS2l0QXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlIDogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsKICAgICBhdHRyaWJ1dGUgQXVkaW9C
dWZmZXI/IGJ1ZmZlcjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRBdWRpb0xpc3RlbmVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvTGlzdGVuZXIuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvTGlzdGVuZXIuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VC
X0FVRElPLAogICAgIEVuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpbywKLSAgICBOb0lu
dGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNl
IFdlYktpdEF1ZGlvTGlzdGVuZXIgewogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQg
ZG9wcGxlckZhY3RvcjsgIC8vIHNhbWUgYXMgT3BlbkFMIChkZWZhdWx0IDEuMCkKICAgICBhdHRy
aWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IHNwZWVkT2ZTb3VuZDsgICAvLyBpbiBtZXRlcnMgLyBz
ZWNvbmQgKGRlZmF1bHQgMzQzLjMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1dlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5p
ZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcg
KzI3LDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgRW5hYmxlZEJ5U2V0dGlu
Zz1QcmVmaXhlZFdlYkF1ZGlvLAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIE5vSW50
ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJmYWNlIFdl
YktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgOiBBdWRpb05vZGUgewogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBBdWRpb1BhcmFtIHRocmVzaG9sZDsgLy8gaW4gRGVjaWJlbHMKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBrbmVlOyAvLyBpbiBEZWNpYmVscwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9y
Tm9kZS5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0T3NjaWxsYXRvck5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsy
OCw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAogICAgIEVuYWJsZWRCeVNldHRpbmc9
V2ViQXVkaW8mUHJlZml4ZWRXZWJBdWRpbywKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAg
ICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50
ZXJmYWNlIFdlYktpdE9zY2lsbGF0b3JOb2RlIDogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsK
ICAgICBhdHRyaWJ1dGUgT3NjaWxsYXRvclR5cGUgdHlwZTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlk
bC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBs
YXRlcy9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlkbC5lcmIJKHJldmlzaW9uIDI2NjYzNCkK
KysrIFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvSW50ZXJuYWxTZXR0
aW5nc0dlbmVyYXRlZC5pZGwuZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAg
Ki8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRl
cmZhY2UgSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZCB7CiA8JS0gZm9yIEBzZXR0aW5nIGluIEBz
ZXR0aW5ncyBkbyAtJT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJvbGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJvbGUuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSb2xlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjUsNyArMjUsNyBAQAogCiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1BcmlhUmVmbGVjdGlv
biwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
IF0gaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlSb2xlIHsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRl
IERPTVN0cmluZz8gcm9sZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FyaWFBdHRyaWJ1dGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FyaWFBdHRyaWJ1dGVzLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BcmlhQXR0cmlidXRlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDcgQEAKIAogWwogICAgIEVuYWJsZWRBdFJ1bnRpbWU9QXJpYVJlZmxlY3Rpb24s
Ci0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBd
IGludGVyZmFjZSBBcmlhQXR0cmlidXRlcyB7CiAgICAgW1JlZmxlY3Q9YXJpYV9hdG9taWNdICAg
ICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhQXRvbWljOwogICAgIFtSZWZsZWN0PWFy
aWFfYXV0b2NvbXBsZXRlXSAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJpYUF1dG9Db21wbGV0
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRhYmxlLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0YWJsZS5pZGwJKHJldmlzaW9u
IDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRhYmxlLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1X
ZWJBbmltYXRpb25zLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3QKIF0gaW50ZXJmYWNlIEFuaW1hdGFibGUgewogICAgIFtNYXlUaHJvd0V4Y2VwdGlv
biwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBXZWJBbmltYXRpb24gYW5pbWF0ZShvYmplY3Q/IGtl
eWZyYW1lcywgb3B0aW9uYWwgKHVucmVzdHJpY3RlZCBkb3VibGUgb3IgS2V5ZnJhbWVBbmltYXRp
b25PcHRpb25zKSBvcHRpb25zKTsKICAgICBzZXF1ZW5jZTxXZWJBbmltYXRpb24+IGdldEFuaW1h
dGlvbnMob3B0aW9uYWwgR2V0QW5pbWF0aW9uc09wdGlvbnMgb3B0aW9ucyk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL0lETFR5cGVzLmgJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL0lETFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBA
QCBzdHJ1Y3QgSURMRE9NU3RyaW5nIDogSURMU3RyaW5nPFN0cmluZz4gCiBzdHJ1Y3QgSURMQnl0
ZVN0cmluZyA6IElETFN0cmluZzxTdHJpbmc+IHsgfTsKIHN0cnVjdCBJRExVU1ZTdHJpbmcgOiBJ
RExTdHJpbmc8U3RyaW5nPiB7IH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExU
cmVhdE51bGxBc0VtcHR5QWRhcHRvciA6IElETFN0cmluZzxTdHJpbmc+IHsKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3IgOiBJRExT
dHJpbmc8U3RyaW5nPiB7CiAgICAgdXNpbmcgSW5uZXJUeXBlID0gVDsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCShyZXZpc2lvbiAy
NjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTMsOCArNTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaGFk
b3dSb290SXNBbHdheXNPcGVuKCkgeyBtX3NoYWRvd1Jvb3RJc0Fsd2F5c09wZW4gPSB0cnVlOyB9
CiAgICAgYm9vbCBzaGFkb3dSb290SXNBbHdheXNPcGVuKCkgY29uc3QgeyByZXR1cm4gbV9zaGFk
b3dSb290SXNBbHdheXNPcGVuOyB9CiAKLSAgICB2b2lkIGRpc2FibGVPdmVycmlkZUJ1aWx0aW5z
QmVoYXZpb3IoKSB7IG1fc2hvdWxkRGlzYWJsZU92ZXJyaWRlQnVpbHRpbnNCZWhhdmlvciA9IHRy
dWU7IH0KLSAgICBib29sIHNob3VsZERpc2FibGVPdmVycmlkZUJ1aWx0aW5zQmVoYXZpb3IoKSBj
b25zdCB7IHJldHVybiBtX3Nob3VsZERpc2FibGVPdmVycmlkZUJ1aWx0aW5zQmVoYXZpb3I7IH0K
KyAgICB2b2lkIGRpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZpb3IoKSB7IG1fc2hv
dWxkRGlzYWJsZUxlZ2FjeU92ZXJyaWRlQnVpbHRJbnNCZWhhdmlvciA9IHRydWU7IH0KKyAgICBi
b29sIHNob3VsZERpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZpb3IoKSBjb25zdCB7
IHJldHVybiBtX3Nob3VsZERpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZpb3I7IH0K
IAogICAgIERPTU9iamVjdFdyYXBwZXJNYXAmIHdyYXBwZXJzKCkgeyByZXR1cm4gbV93cmFwcGVy
czsgfQogCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgVHlwZSBtX3R5cGUgeyBUeXBl
OjpJbnRlcm5hbCB9OwogCiAgICAgYm9vbCBtX3NoYWRvd1Jvb3RJc0Fsd2F5c09wZW4geyBmYWxz
ZSB9OwotICAgIGJvb2wgbV9zaG91bGREaXNhYmxlT3ZlcnJpZGVCdWlsdGluc0JlaGF2aW9yIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkRGlzYWJsZUxlZ2FjeU92ZXJyaWRlQnVpbHRJbnNC
ZWhhdmlvciB7IGZhbHNlIH07CiB9OwogCiBET01XcmFwcGVyV29ybGQmIG5vcm1hbFdvcmxkKEpT
Qzo6Vk0mKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RP
cGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01BYnN0cmFjdE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsMTQgKzMyLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEltcGxlbWVudGF0aW9u
cyBvZiB0aGUgYWJzdHJhY3Qgb3BlcmF0aW9ucyBkZWZpbmVkIGF0CiAvLyBodHRwczovL2hleWNh
bS5naXRodWIuaW8vd2ViaWRsLyNsZWdhY3ktcGxhdGZvcm0tb2JqZWN0LWFic3RyYWN0LW9wcwog
Ci1lbnVtIGNsYXNzIE92ZXJyaWRlQnVpbHRpbnMgeworZW51bSBjbGFzcyBMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zIHsKICAgICBObywKICAgICBZZXMKIH07CiAKIC8vIEFuIGltcGxlbWVudGF0aW9u
IG9mIHRoZSAnbmFtZWQgcHJvcGVydHkgdmlzaWJpbGl0eSBhbGdvcml0aG0nCiAvLyBodHRwczov
L2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tbmFtZWQtcHJvcGVydHktdmlzaWJpbGl0eQot
dGVtcGxhdGU8T3ZlcnJpZGVCdWlsdGlucyBvdmVycmlkZUJ1aWx0aW5zLCBjbGFzcyBKU0NsYXNz
PgordGVtcGxhdGU8TGVnYWN5T3ZlcnJpZGVCdWlsdElucyBvdmVycmlkZUJ1aWx0aW5zLCBjbGFz
cyBKU0NsYXNzPgogc3RhdGljIGJvb2wgaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eShKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NsYXNzJiB0aGlzT2JqZWN0LCBKU0M6
OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgLy8gRklYTUU6IEl0IHNlZW1zIHVu
Zm9ydHVuYXRlIHRoYXQgaGF2ZSB0byBkbyB0d28gbG9va3VwcyBmb3IgdGhlIHByb3BlcnR5IG5h
bWUsCkBAIC02Myw4ICs2Myw4IEBAIHN0YXRpYyBib29sIGlzVmlzaWJsZU5hbWVkUHJvcGVydHko
SlNDOjoKICAgICBpZiAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KCZ0aGlzT2Jq
ZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAotICAgIC8vIDMuIElmIE8gaW1wbGVtZW50cyBhbiBpbnRlcmZh
Y2UgdGhhdCBoYXMgdGhlIFtPdmVycmlkZUJ1aWx0aW5zXSBleHRlbmRlZCBhdHRyaWJ1dGUsIHRo
ZW4gcmV0dXJuIHRydWUuCi0gICAgaWYgKG92ZXJyaWRlQnVpbHRpbnMgPT0gT3ZlcnJpZGVCdWls
dGluczo6WWVzKQorICAgIC8vIDMuIElmIE8gaW1wbGVtZW50cyBhbiBpbnRlcmZhY2UgdGhhdCBo
YXMgdGhlIFtMZWdhY3lPdmVycmlkZUJ1aWx0SW5zXSBleHRlbmRlZCBhdHRyaWJ1dGUsIHRoZW4g
cmV0dXJuIHRydWUuCisgICAgaWYgKG92ZXJyaWRlQnVpbHRpbnMgPT0gTGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6WWVzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIDQuIEluaXRpYWxp
emUgcHJvdG90eXBlIHRvIGJlIHRoZSB2YWx1ZSBvZiB0aGUgaW50ZXJuYWwgW1tQcm90b3R5cGVd
XSBwcm9wZXJ0eSBvZiBPLgpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgYm9vbCBpc1Zpc2libGVO
YW1lZFByb3BlcnR5KEpTQzo6CiAvLyBmb3IgdGhlIHByb3BlcnR5IG5hbWUsIHZpYSBwYXNzZWQg
aW4gZnVuY3Rvci4gVGhpcyBhbGxvd3MgdXMgdG8gYXZvaWQgdHdvIGxvb2tpbmcgdXAgdGhlCiAv
LyB0aGUgcHJvcGVydHkgbmFtZSB0d2ljZTsgb25jZSBmb3IgJ25hbWVkIHByb3BlcnR5IHZpc2li
aWxpdHkgYWxnb3JpdGhtJyBjaGVjaywgYW5kIHRoZW4KIC8vIGFnYWluIHdoZW4gdGhlIHZhbHVl
IGlzIG5lZWRlZC4KLXRlbXBsYXRlPE92ZXJyaWRlQnVpbHRpbnMgb3ZlcnJpZGVCdWlsdGlucywg
Y2xhc3MgSlNDbGFzcywgY2xhc3MgRnVuY3Rvcj4KK3RlbXBsYXRlPExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMgb3ZlcnJpZGVCdWlsdGlucywgY2xhc3MgSlNDbGFzcywgY2xhc3MgRnVuY3Rvcj4KIHN0
YXRpYyBhdXRvIGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5KEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ2xhc3MmIHRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgRnVuY3RvciYmIGl0ZW1BY2Nlc3NvcikgLT4gZGVjbHR5cGUoaXRl
bUFjY2Vzc29yKHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpCiB7CiAgICAgLy8gTk9URTogV2hp
bGUgaXQgaXMgbm90IHNwZWNpZmllZCwgYSBTeW1ib2wgY2FuIG5ldmVyIGJlIGEgJ3N1cHBvcnRl
ZCBwcm9wZXJ0eQpAQCAtMTAzLDggKzEwMyw4IEBAIHN0YXRpYyBhdXRvIGFjY2Vzc1Zpc2libGVO
YW1lZFByb3BlcnR5KEoKICAgICBpZiAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KCZ0aGlzT2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIC8vIDMuIElmIE8gaW1wbGVtZW50
cyBhbiBpbnRlcmZhY2UgdGhhdCBoYXMgdGhlIFtPdmVycmlkZUJ1aWx0aW5zXSBleHRlbmRlZCBh
dHRyaWJ1dGUsIHRoZW4gcmV0dXJuIHRydWUuCi0gICAgaWYgKG92ZXJyaWRlQnVpbHRpbnMgPT0g
T3ZlcnJpZGVCdWlsdGluczo6WWVzICYmICF3b3JsZEZvckRPTU9iamVjdCh0aGlzT2JqZWN0KS5z
aG91bGREaXNhYmxlT3ZlcnJpZGVCdWlsdGluc0JlaGF2aW9yKCkpCisgICAgLy8gMy4gSWYgTyBp
bXBsZW1lbnRzIGFuIGludGVyZmFjZSB0aGF0IGhhcyB0aGUgW0xlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgdGhlbiByZXR1cm4gdHJ1ZS4KKyAgICBpZiAob3ZlcnJp
ZGVCdWlsdGlucyA9PSBMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXMgJiYgIXdvcmxkRm9yRE9N
T2JqZWN0KHRoaXNPYmplY3QpLnNob3VsZERpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVo
YXZpb3IoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIC8vIDQuIEluaXRpYWxpemUg
cHJvdG90eXBlIHRvIGJlIHRoZSB2YWx1ZSBvZiB0aGUgaW50ZXJuYWwgW1tQcm90b3R5cGVdXSBw
cm9wZXJ0eSBvZiBPLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0TnVsbGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUNvbnZlcnROdWxsYWJsZS5oCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnROdWxsYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MCw4ICs2MCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8SUQKICAg
ICAKICAgICAvLyAxLiBJZiBUeXBlKFYpIGlzIG5vdCBPYmplY3QsIGFuZCB0aGUgY29udmVyc2lv
biB0byBhbiBJREwgdmFsdWUgaXMgYmVpbmcgcGVyZm9ybWVkCiAgICAgLy8gZHVlIHRvIFYgYmVp
bmcgYXNzaWduZWQgdG8gYW4gYXR0cmlidXRlIHdob3NlIHR5cGUgaXMgYSBudWxsYWJsZSBjYWxs
YmFjayBmdW5jdGlvbgotICAgIC8vIHRoYXQgaXMgYW5ub3RhdGVkIHdpdGggW1RyZWF0Tm9uT2Jq
ZWN0QXNOdWxsXSwgdGhlbiByZXR1cm4gdGhlIElETCBudWxsYWJsZSB0eXBlIFQ/Ci0gICAgLy8g
dmFsdWUgbnVsbC4KKyAgICAvLyB0aGF0IGlzIGFubm90YXRlZCB3aXRoIFtMZWdhY3lUcmVhdE5v
bk9iamVjdEFzTnVsbF0sIHRoZW4gcmV0dXJuIHRoZSBJREwgbnVsbGFibGUKKyAgICAvLyB0eXBl
IFQ/IHZhbHVlIG51bGwuCiAgICAgLy8KICAgICAvLyBOT1RFOiBIYW5kbGVkIGVsc2V3aGVyZS4K
ICAgICAvLwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0U3Ry
aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
dmVydFN0cmluZ3MuaAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0U3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNyArMTQ4
LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURMVVNWU3RyaQogLy8gTUFSSzog
LQogLy8gTUFSSzogU3RyaW5nIHR5cGUgYWRhcHRvcnMKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IENvbnZlcnRlcjxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxUPj4gOiBEZWZhdWx0
Q29udmVydGVyPElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPFQ+PiB7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVyPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxUPj4gOiBEZWZhdWx0Q29udmVydGVyPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxUPj4gewogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBp
ZiAodmFsdWUuaXNOdWxsKCkpCkBAIC0xNTcsNyArMTU3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IENvbnZlcnRlcjxJRAogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
ICBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8VD4+IHsKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+ICBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPFQ+PiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3Rh
dGUgPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9
IGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTY4
Niw3ICs2ODYsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3QKICAgICAgICAgCiAg
ICAgICAgIEdlbmVyYXRlTmFtZWRHZXR0ZXJMYW1iZGEoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNl
LCAkbmFtZWRHZXR0ZXJPcGVyYXRpb24sICRuYW1lZEdldHRlckZ1bmN0aW9uTmFtZSwgIkdldHRl
cklETFR5cGUiKTsKICAgICAgICAgCi0gICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW4gPSAkY29k
ZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiT3ZlcnJp
ZGVCdWlsdGlucyIpID8gIk92ZXJyaWRlQnVpbHRpbnM6OlllcyIgOiAiT3ZlcnJpZGVCdWlsdGlu
czo6Tm8iOworICAgICAgICBteSAkb3ZlcnJpZGVCdWlsdGluID0gJGNvZGVHZW5lcmF0b3ItPklu
aGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkxlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMiKSA/ICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXMiIDogIkxlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6Ok5vIjsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChhdXRvIG5h
bWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTwke292ZXJyaWRlQnVpbHRp
bn0+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0
ZXJGdW5jdG9yKSkge1xuIik7CiAgICAgICAgIAogICAgICAgICAjIE5PVEU6IEdlbmVyYXRlTmFt
ZWRHZXR0ZXIgaW1wbGVtZW50cyBzdGVwcyAyLjEgLSAyLjEwLgpAQCAtODAwLDcgKzgwMCw3IEBA
IHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgKICAgICAgICAgCiAgICAgICAg
IEdlbmVyYXRlTmFtZWRHZXR0ZXJMYW1iZGEoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkbmFt
ZWRHZXR0ZXJPcGVyYXRpb24sICRuYW1lZEdldHRlckZ1bmN0aW9uTmFtZSwgIkdldHRlcklETFR5
cGUiKTsKICAgICAgICAgCi0gICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW4gPSAkY29kZUdlbmVy
YXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiT3ZlcnJpZGVCdWls
dGlucyIpID8gIk92ZXJyaWRlQnVpbHRpbnM6OlllcyIgOiAiT3ZlcnJpZGVCdWlsdGluczo6Tm8i
OworICAgICAgICBteSAkb3ZlcnJpZGVCdWlsdGluID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRz
RXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkxlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKSA/
ICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXMiIDogIkxlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6
Ok5vIjsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChhdXRvIG5hbWVkUHJv
cGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTwke292ZXJyaWRlQnVpbHRpbn0+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5j
dG9yKSkge1xuIik7CiAgICAgICAgIAogICAgICAgICAjIE5PVEU6IEdlbmVyYXRlTmFtZWRHZXR0
ZXIgaW1wbGVtZW50cyBzdGVwcyAyLjEgLSAyLjEwLgpAQCAtOTY4LDggKzk2OCw4IEBAIHN1YiBH
ZW5lcmF0ZVB1dAogICAgICAgICAKICAgICAgICAgbXkgJGFkZGl0aW9uYWxJbmRlbnQgPSAiIjsK
ICAgICAgICAgCi0gICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW5zID0gJGNvZGVHZW5lcmF0b3It
PkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIk92ZXJyaWRlQnVpbHRpbnMi
KTsKLSAgICAgICAgaWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgeworICAgICAgICBteSAkbGVnYWN5
T3ZlcnJpZGVCdWlsdGlucyA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmli
dXRlKCRpbnRlcmZhY2UsICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIik7CisgICAgICAgIGlmICgh
JGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMpIHsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0o
KSB9O1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVj
dChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTtcbiIpOwpAQCAtOTg1LDcgKzk4NSw3IEBAIHN1YiBHZW5lcmF0ZVB1dAog
ICAgICAgICB9CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQg
LiAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwogCi0gICAgICAgIGlmICghJG92ZXJyaWRlQnVp
bHRpbnMpIHsKKyAgICAgICAgaWYgKCEkbGVnYWN5T3ZlcnJpZGVCdWlsdGlucykgewogICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICB9XG4iKTsKICAgICAgICAgfQogICAg
ICAgICAKQEAgLTEwMTQsOCArMTAxNCw4IEBAIHN1YiBHZW5lcmF0ZVB1dEJ5SW5kZXgKICAgICBt
eSAkbmFtZWRTZXR0ZXJPcGVyYXRpb24gPSBHZXROYW1lZFNldHRlck9wZXJhdGlvbigkaW50ZXJm
YWNlKTsKICAgICBteSAkaW5kZXhlZFNldHRlck9wZXJhdGlvbiA9IEdldEluZGV4ZWRTZXR0ZXJP
cGVyYXRpb24oJGludGVyZmFjZSk7CiAgICAgCi0gICAgbXkgJG92ZXJyaWRlQnVpbHRpbnMgPSAk
Y29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiT3Zl
cnJpZGVCdWlsdGlucyIpOwotICAgIG15ICRlbGxpZGVzQ2FsbHNUb0Jhc2UgPSAoJG5hbWVkU2V0
dGVyT3BlcmF0aW9uICYmICRvdmVycmlkZUJ1aWx0aW5zKSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57UGx1Z2lufSAmJiAhJG5hbWVkU2V0dGVyT3BlcmF0aW9uLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDYWxsTmFtZWRTZXR0ZXJPbmx5Rm9yU3VwcG9ydGVkUHJvcGVydGllc307
CisgICAgbXkgJGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMgPSAkY29kZUdlbmVyYXRvci0+SW5oZXJp
dHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIp
OworICAgIG15ICRlbGxpZGVzQ2FsbHNUb0Jhc2UgPSAoJG5hbWVkU2V0dGVyT3BlcmF0aW9uICYm
ICRsZWdhY3lPdmVycmlkZUJ1aWx0aW5zKSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57UGx1Z2lufSAmJiAhJG5hbWVkU2V0dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDYWxsTmFtZWRTZXR0ZXJPbmx5Rm9yU3VwcG9ydGVkUHJvcGVydGllc307CiAgICAgCiAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NsYXNzTmFtZX06OnB1dEJ5SW5kZXgoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQg
aW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wiIC4gKCEkZWxsaWRlc0NhbGxzVG9CYXNlID8gIiBz
aG91bGRUaHJvdyIgOiAiIikgLiAiKVxuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xu
Iik7CkBAIC0xMDQ3LDcgKzEwNDcsNyBAQCBzdWIgR2VuZXJhdGVQdXRCeUluZGV4CiAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb20odm0sIGluZGV4KTtcbiIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICBteSAkYWRk
aXRpb25hbEluZGVudCA9ICIiOwotICAgICAgICBpZiAoISRvdmVycmlkZUJ1aWx0aW5zKSB7Cisg
ICAgICAgIGlmICghJGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMpIHsKICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSB9O1xuIik7CiAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlz
T2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFz
T2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CkBAIC0xMDYzLDcgKzEwNjMsNyBAQCBzdWIgR2VuZXJh
dGVQdXRCeUluZGV4CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkYWRk
aXRpb25hbEluZGVudCAuICIgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgCi0gICAgICAg
IGlmICghJG92ZXJyaWRlQnVpbHRpbnMpIHsKKyAgICAgICAgaWYgKCEkbGVnYWN5T3ZlcnJpZGVC
dWlsdGlucykgewogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cblxuIik7
CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDg1LDcgKzEwODUsNyBAQCBzdWIgR2VuZXJhdGVQdXRC
eUluZGV4CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIH0KIAotc3ViIEdlbmVy
YXRlSXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZQorc3ViIEdlbmVyYXRlSXNMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnR5TmFtZQogewogICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UpID0g
QF87CiAgICAgCkBAIC0xMDkzLDcgKzEwOTMsNyBAQCBzdWIgR2VuZXJhdGVJc1VuZm9yZ2VhYmxl
UHJvcGVydHlOYW1lCiAgICAgZm9yZWFjaCBteSAkcHJvcGVydHkgKEB7JGludGVyZmFjZS0+YXR0
cmlidXRlc30sIEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKICAgICAgICAgbmV4dCBpZiAk
cHJvcGVydHktPmlzU3RhdGljOwogICAgICAgICAKLSAgICAgICAgaWYgKElzVW5mb3JnZWFibGUo
JGludGVyZmFjZSwgJHByb3BlcnR5KSkgeworICAgICAgICBpZiAoSXNMZWdhY3lVbmZvcmdlYWJs
ZSgkaW50ZXJmYWNlLCAkcHJvcGVydHkpKSB7CiAgICAgICAgICAgICBwdXNoKEB1bmZvcmdlYWJs
ZVByb3BlcnR5TmFtZXMsICRwcm9wZXJ0eS0+bmFtZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0x
MTAyLDcgKzExMDIsNyBAQCBzdWIgR2VuZXJhdGVJc1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lCiAg
ICAgCiAgICAgbXkgJGNvbmRpdGlvbiA9IGpvaW4oIiB8fCAiLCBtYXAgeyAicHJvcGVydHlOYW1l
ID09IFwiIiAuICRfIC4gIlwiIiB9IEB1bmZvcmdlYWJsZVByb3BlcnR5TmFtZXMpOwogICAgIAot
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBib29sIGlzVW5mb3JnZWFibGVQcm9wZXJ0
eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSlcbiIpOworICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgInN0YXRpYyBib29sIGlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSlcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIp
OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gJHtjb25kaXRpb259O1xuIik7
CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKQEAgLTExNjksMTkgKzExNjksMTkg
QEAgc3ViIEdlbmVyYXRlRGVmaW5lT3duUHJvcGVydHkKICAgICAgICAgCiAgICAgICAgIG15ICRh
ZGRpdGlvbmFsSW5kZW50ID0gIiI7CiAgICAgICAgIAotICAgICAgICBteSAkaGFzVW5mb3JnYWJs
ZVByb3BlcnRpZXMgPSBHZW5lcmF0ZUlzVW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoJG91dHB1dEFy
cmF5LCAkaW50ZXJmYWNlKTsKKyAgICAgICAgbXkgJGhhc1VuZm9yZ2FibGVQcm9wZXJ0aWVzID0g
R2VuZXJhdGVJc0xlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKCRvdXRwdXRBcnJheSwgJGlu
dGVyZmFjZSk7CiAgICAgICAgIGlmICgkaGFzVW5mb3JnYWJsZVByb3BlcnRpZXMpIHsKLSAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFpc1VuZm9yZ2VhYmxlUHJv
cGVydHlOYW1lKHByb3BlcnR5TmFtZSkpIHtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICBpZiAoIWlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUocHJv
cGVydHlOYW1lKSkge1xuIik7CiAgICAgICAgICAgICAkYWRkaXRpb25hbEluZGVudCAuPSAiICAg
ICI7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgICMgMS4gTGV0IGNyZWF0aW5nIGJlIHRy
dWUgaWYgUCBpcyBub3QgYSBzdXBwb3J0ZWQgcHJvcGVydHkgbmFtZSwgYW5kIGZhbHNlIG90aGVy
d2lzZS4KICAgICAgICAgIyBOT1RFOiBUaGlzIHN0ZXAgaXMgc3RyZW5ndGggcmVkdWNlZCBpbnRv
IHRoZSBvbmx5IHVzZSBvZiAnY3JlYXRpbmcnIGluIHN0ZXAgMi4yLjEKICAgICAgICAgCi0gICAg
ICAgICMgMi4gSWYgTyBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSB3aXRoIHRoZSBbT3ZlcnJpZGVC
dWlsdGluc10gZXh0ZW5kZWQgYXR0cmlidXRlIG9yIE8KKyAgICAgICAgIyAyLiBJZiBPIGltcGxl
bWVudHMgYW4gaW50ZXJmYWNlIHdpdGggdGhlIFtMZWdhY3lPdmVycmlkZUJ1aWx0SW5zXSBleHRl
bmRlZCBhdHRyaWJ1dGUgb3IgTwogICAgICAgICAjICAgIGRvZXMgbm90IGhhdmUgYW4gb3duIHBy
b3BlcnR5IG5hbWVkIFAsIHRoZW46Ci0gICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW5zID0gJGNv
ZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIk92ZXJy
aWRlQnVpbHRpbnMiKTsKLSAgICAgICAgaWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgeworICAgICAg
ICBteSAkbGVnYWN5T3ZlcnJpZGVCdWlsdGlucyA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4
dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIik7Cisg
ICAgICAgIGlmICghJGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMpIHsKICAgICAgICAgICAgICMgRklY
TUU6IElzIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QgdGhlIHJpZ2h0IGZ1bmN0aW9uIHRv
IGNhbGw/IElzIHRoZXJlIGEgZnVuY3Rpb24gdGhhdCB3aWxsCiAgICAgICAgICAgICAjICAgICAg
ICBvbmx5IGxvb2sgYXQgdGhlIGFjdHVhbCBwcm9wZXJ0aWVzLCBhbmQgbm90IGNhbGwgaW50byBv
dXIgaW1wbGVtZW50YXRpb24gb2YgdGhlCiAgICAgICAgICAgICAjICAgICAgICBbW0dldE93blBy
b3BlcnR5XV0gaG9vaz8KQEAgLTEyMTIsNyArMTIxMiw3IEBAIHN1YiBHZW5lcmF0ZURlZmluZU93
blByb3BlcnR5CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlvbmFsSW5k
ZW50IC4gIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgaWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgeworICAgICAgICBpZiAoISRsZWdhY3lPdmVy
cmlkZUJ1aWx0aW5zKSB7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlv
bmFsSW5kZW50IC4gIiAgICB9XG4iKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTEyNTIsNyAr
MTI1Miw3IEBAIHN1YiBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5Q29tbW9uCiAgICAgYXNzZXJ0KCJO
YW1lZCBwcm9wZXJ0eSBkZWxldGVycyBhcmUgbm90IGFsbG93ZWQgb24gZ2xvYmFsIG9iamVjdCBp
bnRlcmZhY2VzLiIpIGlmIElzR2xvYmFsSW50ZXJmYWNlKCRpbnRlcmZhY2UpOwogCiAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiLCAkY29uZGl0aW9uYWwp
OwotICAgIG15ICRvdmVycmlkZUJ1aWx0aW4gPSAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRl
bmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiT3ZlcnJpZGVCdWlsdGlucyIpID8gIk92ZXJyaWRl
QnVpbHRpbnM6OlllcyIgOiAiT3ZlcnJpZGVCdWlsdGluczo6Tm8iOworICAgIG15ICRvdmVycmlk
ZUJ1aWx0aW4gPSAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50
ZXJmYWNlLCAiTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpID8gIkxlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM6OlllcyIgOiAiTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8iOwogICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTwke292ZXJyaWRlQnVpbHRp
bn0+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7XG4i
KTsKIAogICAgIEdlbmVyYXRlQ3VzdG9tRWxlbWVudFJlYWN0aW9uc1N0YWNrSWZOZWVkZWQoJG91
dHB1dEFycmF5LCAkb3BlcmF0aW9uLCAiKmxleGljYWxHbG9iYWxPYmplY3QiKTsKQEAgLTE2ODYs
OSArMTY4Niw5IEBAIHN1YiBBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UKICAgICByZXR1cm4g
MSBpZiBJc0dsb2JhbEludGVyZmFjZSgkaW50ZXJmYWNlKTsKICAgICByZXR1cm4gMSBpZiAkY29k
ZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlwZSk7CiAKLSAgICAj
IFtVbmZvcmdlYWJsZV0gYXR0cmlidXRlcyBzaG91bGQgYmUgb24gdGhlIGluc3RhbmNlLgotICAg
ICMgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jVW5mb3JnZWFibGUKLSAgICByZXR1
cm4gMSBpZiBJc1VuZm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICMgW0xl
Z2FjeVVuZm9yZ2VhYmxlXSBhdHRyaWJ1dGVzIHNob3VsZCBiZSBvbiB0aGUgaW5zdGFuY2UuCisg
ICAgIyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNMZWdhY3lVbmZvcmdlYWJsZQor
ICAgIHJldHVybiAxIGlmIElzTGVnYWN5VW5mb3JnZWFibGUoJGludGVyZmFjZSwgJGF0dHJpYnV0
ZSk7CiAKICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2hlY2tTZWN1
cml0eX0pIHsKICAgICAgICAgcmV0dXJuIDAgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57RG9Ob3RDaGVja1NlY3VyaXR5fTsKQEAgLTE3NDksOCArMTc0OSw4IEBAIHN1YiBPcGVy
YXRpb25TaG91bGRCZU9uSW5zdGFuY2UKIAogICAgIHJldHVybiAxIGlmIElzR2xvYmFsSW50ZXJm
YWNlKCRpbnRlcmZhY2UpOwogCi0gICAgIyBbVW5mb3JnZWFibGVdIG9wZXJhdGlvbnMgc2hvdWxk
IGJlIG9uIHRoZSBpbnN0YW5jZS4gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jVW5m
b3JnZWFibGUKLSAgICBpZiAoSXNVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKSkg
eworICAgICMgW0xlZ2FjeVVuZm9yZ2VhYmxlXSBvcGVyYXRpb25zIHNob3VsZCBiZSBvbiB0aGUg
aW5zdGFuY2UuIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeVVuZm9yZ2Vh
YmxlCisgICAgaWYgKElzTGVnYWN5VW5mb3JnZWFibGUoJGludGVyZmFjZSwgJG9wZXJhdGlvbikp
IHsKICAgICAgICAgYXNzZXJ0KCJUaGUgYmluZGluZ3MgZ2VuZXJhdG9yIGRvZXMgbm90IHN1cHBv
cnQgcHV0dGluZyBydW50aW1lLWVuYWJsZWQgb3BlcmF0aW9ucyBvbiB0aGUgaW5zdGFuY2UgeWV0
IChleGNlcHQgZm9yIGdsb2JhbCBvYmplY3RzKTpbIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUg
LiAiOjoiIC4gJG9wZXJhdGlvbi0+bmFtZSAuICJdIikgaWYgTmVlZHNSdW50aW1lQ2hlY2soJGlu
dGVyZmFjZSwgJG9wZXJhdGlvbik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KQEAgLTE3ODgs
NyArMTc4OCw3IEBAIHN1YiBJc0FjY2VsZXJhdGVkRE9NQXR0cmlidXRlCiAgICAgcmV0dXJuIDAg
aWYgJGF0dHJpYnV0ZS0+aXNTZXRMaWtlOwogICAgIHJldHVybiAwIGlmICRjb2RlR2VuZXJhdG9y
LT5Jc0NvbnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT50eXBlKTsKICAgICByZXR1cm4gMCBpZiBJ
c0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICByZXR1cm4gMCBpZiAkYXR0
cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZW5pZW50VGhpc307CisgICAgcmV0dXJuIDAg
aWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5TGVuaWVudFRoaXN9Owog
ICAgIHJldHVybiAwIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VUeXBlKCRhdHRyaWJ1dGUt
PnR5cGUpOwogICAgIHJldHVybiAwIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0RPTUpJVH07CiAgICAgcmV0dXJuIDE7CkBAIC0xODAwLDcgKzE4MDAsNyBAQCBzdWIgR2V0SlND
QXR0cmlidXRlc0ZvckF0dHJpYnV0ZQogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKIAogICAg
IG15IEBzcGVjaWFscyA9ICgpOwotICAgIHB1c2goQHNwZWNpYWxzLCAiSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSIpIGlmIElzVW5mb3JnZWFibGUoJGludGVyZmFjZSwgJGF0dHJp
YnV0ZSk7CisgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIikgaWYgSXNMZWdhY3lVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsK
IAogICAgICMgQXMgcGVyIFdlYiBJREwgc3BlY2lmaWNhdGlvbiwgY29uc3RydWN0b3IgcHJvcGVy
dGllcyBvbiB0aGUgRUNNQVNjcmlwdCBnbG9iYWwgb2JqZWN0IHNob3VsZCBub3QgYmUgZW51bWVy
YWJsZS4KICAgICBteSAkaXNHbG9iYWxDb25zdHJ1Y3RvciA9ICRjb2RlR2VuZXJhdG9yLT5Jc0Nv
bnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT50eXBlKTsKQEAgLTI2NzAsNyArMjY3MCw3IEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBGSVhNRTogV2h5IGRvZXNuJ3QgdGhpcyBhbHNvIGlu
Y2x1ZGUgSW5kZXhlZCBHZXR0ZXJzIGFuZCBbQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90XQogICAg
IGlmICgkbmFtZWRHZXR0ZXJPcGVyYXRpb24pIHsKLSAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJPdmVycmlkZUJ1aWx0aW5z
IikpIHsKKyAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmli
dXRlKCRpbnRlcmZhY2UsICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIikpIHsKICAgICAgICAgICAg
ICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSJ9ID0gMTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpHZXRP
d25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSJ9ID0gMTsKQEAgLTI3NzUs
NyArMjc3NSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0KICAgICAKICAgICAjIENvbnN0
cnVjdG9yIG9iamVjdCBnZXR0ZXIKLSAgICB1bmxlc3MgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e05vSW50ZXJmYWNlT2JqZWN0fSkgeworICAgIHVubGVzcyAoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3R9KSB7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopO1xuIik7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXROYW1lZENv
bnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7XG4iKSBpZiAkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfTsKICAgICB9CkBAIC00
MTk1LDcgKzQxOTUsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAg
cHVzaChAaGFzaEtleXMsICRuYW1lKTsKIAogICAgICAgICAgICAgbXkgQHNwZWNpYWxzID0gKCk7
Ci0gICAgICAgICAgICBwdXNoKEBzcGVjaWFscywgIkpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUiKSBpZiBJc1VuZm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAg
ICAgICAgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIikgaWYgSXNMZWdhY3lVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAg
ICAgICAgICAgIHB1c2goQHNwZWNpYWxzLCAiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkiKSBpZiBJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVzaChAc3BlY2lh
bHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUiKSBpZiBJc0FjY2VsZXJh
dGVkRE9NQXR0cmlidXRlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVz
aChAc3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRBdHRyaWJ1dGUiKSBp
ZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9OwpAQCAtNDU0Myw3ICs0
NTQzLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ9XG5cbiIpOwogICAgIH0KIAotICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Tm9JbnRlcmZhY2VPYmplY3R9KSB7CisgICAgaWYgKCEkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lOb0ludGVyZmFjZU9iamVjdH0pIHsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3Io
Vk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOwpA
QCAtNDYzNiw3ICs0NjM2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKVxuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTtcbiIpOwogCi0gICAgICAgIGlmICgh
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm9JbnRlcmZhY2VPYmplY3R9KSB7Cisg
ICAgICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3R9KSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKCR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpO1xuIik7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBK
U1ZhbHVlIGNvbnN0cnVjdG9yID0gJHtjbGFzc05hbWV9Q29uc3RydWN0b3I6OmNyZWF0ZShKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCAke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksICpwcm90b3R5cGUt
Pmdsb2JhbE9iamVjdCgpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5
cGUoKSksICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihwcm90b3R5cGUtPmdsb2JhbE9iamVj
dCgpKSk7XG4iKTsKQEAgLTUwODUsNyArNTA4NSw3IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZUdl
dHRlclRyYW1wb2xpbmVEZWYKICAgICAKICAgICBteSBAdGVtcGxhdGVQYXJhbWV0ZXJzID0gKCk7
CiAgICAgcHVzaChAdGVtcGxhdGVQYXJhbWV0ZXJzLCAkYXR0cmlidXRlR2V0dGVyQm9keU5hbWUp
OwotICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZW5pZW50VGhpc30p
IHsKKyAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5TGVuaWVu
dFRoaXN9KSB7CiAgICAgICAgIHB1c2goQHRlbXBsYXRlUGFyYW1ldGVycywgIkNhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpSZXR1cm5FYXJseSIpCiAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3It
PklzUHJvbWlzZVR5cGUoJGF0dHJpYnV0ZS0+dHlwZSkpIHsKICAgICAgICAgcHVzaChAdGVtcGxh
dGVQYXJhbWV0ZXJzLCAiQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJlamVjdFByb21pc2UiKQpA
QCAtNTI4MCw3ICs1MjgwLDcgQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlU2V0dGVyVHJhbXBvbGlu
ZURlZgogICAgIAogICAgIG15IEB0ZW1wbGF0ZVBhcmFtZXRlcnMgPSAoKTsKICAgICBwdXNoKEB0
ZW1wbGF0ZVBhcmFtZXRlcnMsICRhdHRyaWJ1dGVTZXR0ZXJCb2R5TmFtZSk7Ci0gICAgcHVzaChA
dGVtcGxhdGVQYXJhbWV0ZXJzLCAiQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJldHVybkVhcmx5
IikgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVuaWVudFRoaXN9OworICAg
IHB1c2goQHRlbXBsYXRlUGFyYW1ldGVycywgIkNhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpSZXR1
cm5FYXJseSIpIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUxlbmll
bnRUaGlzfTsKICAgICAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJib29sICR7YXR0cmlidXRl
U2V0dGVyTmFtZX0oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKVxuIik7CiAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CkBAIC02NzIxLDcgKzY3MjEsNyBAQCBzdWIgSXNB
bm5vdGF0ZWRUeXBlCiAKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q2xhbXB9OwogICAgIHJldHVybiAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntF
bmZvcmNlUmFuZ2V9OwotICAgIHJldHVybiAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntUcmVhdE51bGxBc30gJiYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1RyZWF0TnVsbEFz
fSBlcSAiRW1wdHlTdHJpbmciOworICAgIHJldHVybiAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ307CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0F0b21TdHJpbmd9OwogICAgIHJldHVybiAxIGlmICR0eXBl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ307CiB9CkBA
IC02NzMyLDcgKzY3MzIsNyBAQCBzdWIgR2V0QW5ub3RhdGVkSURMVHlwZQogCiAgICAgcmV0dXJu
ICJJRExDbGFtcEFkYXB0b3IiIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDbGFtcH07
CiAgICAgcmV0dXJuICJJRExFbmZvcmNlUmFuZ2VBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57RW5mb3JjZVJhbmdlfTsKLSAgICByZXR1cm4gIklETFRyZWF0TnVsbEFzRW1w
dHlBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VHJlYXROdWxsQXN9ICYm
ICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntUcmVhdE51bGxBc30gZXEgIkVtcHR5U3RyaW5n
IjsKKyAgICByZXR1cm4gIklETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvciIgaWYgJHR5
cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nfTsKICAgICBy
ZXR1cm4gIklETEF0b21TdHJpbmdBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57QXRvbVN0cmluZ307CiAgICAgcmV0dXJuICJJRExSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmlu
Z0FkYXB0b3IiIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZXF1aXJlc0V4aXN0aW5n
QXRvbVN0cmluZ307CiB9CkBAIC03NjE2LDEyICs3NjE2LDEyIEBAIHN1YiBHZW5lcmF0ZUNvbnN0
cnVjdG9ySGVscGVyTWV0aG9kcwogICAgICAgICAkbGVhc3RDb25zdHJ1Y3Rvckxlbmd0aCA9IDA7
CiAgICAgfQogCi0gICAgIyBJZiB0aGUgaW50ZXJmYWNlIGhhcyBhIHBhcmVudCBpbnRlcmZhY2Ug
d2hpY2ggZG9lcyBub3QgaGF2ZSBbTm9JbnRlcmZhY2VPYmplY3RdLCB0aGVuIHVzZSBpdHMgaW50
ZXJmYWNlIG9iamVjdCBhcyBwcm90b3R5cGUsCisgICAgIyBJZiB0aGUgaW50ZXJmYWNlIGhhcyBh
IHBhcmVudCBpbnRlcmZhY2Ugd2hpY2ggZG9lcyBub3QgaGF2ZSBbTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3RdLCB0aGVuIHVzZSBpdHMgaW50ZXJmYWNlIG9iamVjdCBhcyBwcm90b3R5cGUsCiAgICAg
IyBvdGhlcndpc2UgdXNlIEZ1bmN0aW9uUHJvdG90eXBlOiBodHRwOi8vaGV5Y2FtLmdpdGh1Yi5p
by93ZWJpZGwvI2ludGVyZmFjZS1vYmplY3QKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ0ZW1w
bGF0ZTw+IEpTVmFsdWUgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OnByb3RvdHlwZUZvclN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdClc
biIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogCi0gICAgYXNzZXJ0KCJBbiBp
bnRlcmZhY2UgY2Fubm90IGluaGVyaXQgZnJvbSBhbm90aGVyIGludGVyZmFjZSB0aGF0IGlzIG1h
cmtlZCBhcyBbTm9JbnRlcmZhY2VPYmplY3RdIikgaWYgJGludGVyZmFjZS0+cGFyZW50VHlwZSAm
JiAkY29kZUdlbmVyYXRvci0+R2V0SW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzRnJvbU5hbWUo
JGludGVyZmFjZS0+cGFyZW50VHlwZS0+bmFtZSktPntOb0ludGVyZmFjZU9iamVjdH07CisgICAg
YXNzZXJ0KCJBbiBpbnRlcmZhY2UgY2Fubm90IGluaGVyaXQgZnJvbSBhbm90aGVyIGludGVyZmFj
ZSB0aGF0IGlzIG1hcmtlZCBhcyBbTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RdIikgaWYgJGludGVy
ZmFjZS0+cGFyZW50VHlwZSAmJiAkY29kZUdlbmVyYXRvci0+R2V0SW50ZXJmYWNlRXh0ZW5kZWRB
dHRyaWJ1dGVzRnJvbU5hbWUoJGludGVyZmFjZS0+cGFyZW50VHlwZS0+bmFtZSktPntMZWdhY3lO
b0ludGVyZmFjZU9iamVjdH07CiAKICAgICBpZiAoISRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3Rv
ciBhbmQgJGludGVyZmFjZS0+cGFyZW50VHlwZSkgewogICAgICAgICBteSAkcGFyZW50Q2xhc3NO
YW1lID0gIkpTIiAuICRpbnRlcmZhY2UtPnBhcmVudFR5cGUtPm5hbWU7CkBAIC03NjM4LDcgKzc2
MzgsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJ7XG4iKTsKIAogICAgICMgVGhlcmUgbXVzdCBleGlzdCBhbiBpbnRlcmZh
Y2UgcHJvdG90eXBlIG9iamVjdCBmb3IgZXZlcnkgbm9uLWNhbGxiYWNrIGludGVyZmFjZSBkZWZp
bmVkLCByZWdhcmRsZXNzCi0gICAgIyBvZiB3aGV0aGVyIHRoZSBpbnRlcmZhY2Ugd2FzIGRlY2xh
cmVkIHdpdGggdGhlIFtOb0ludGVyZmFjZU9iamVjdF0gZXh0ZW5kZWQgYXR0cmlidXRlLgorICAg
ICMgb2Ygd2hldGhlciB0aGUgaW50ZXJmYWNlIHdhcyBkZWNsYXJlZCB3aXRoIHRoZSBbTGVnYWN5
Tm9JbnRlcmZhY2VPYmplY3RdIGV4dGVuZGVkIGF0dHJpYnV0ZS4KICAgICAjIGh0dHBzOi8vaGV5
Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2ludGVyZmFjZS1wcm90b3R5cGUtb2JqZWN0CiAgICAgaWYg
KFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSgkaW50ZXJmYWNlKSkgewogICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIGdsb2JhbE9iamVjdC5nZXRQcm90b3R5cGVEaXJlY3Qodm0pLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7XG4iKTsKQEAgLTc3MzcsNyAr
NzczNyw3IEBAIHN1YiBOZWVkc0NvbnN0cnVjdG9yUHJvcGVydHkKIHsKICAgICBteSAkaW50ZXJm
YWNlID0gc2hpZnQ7CiAgICAgCi0gICAgcmV0dXJuICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntOb0ludGVyZmFjZU9iamVjdH07CisgICAgcmV0dXJuICEkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lOb0ludGVyZmFjZU9iamVjdH07CiB9CiAKIHN1YiBJc0Nv
bnN0cnVjdGFibGUKQEAgLTc3NjAsMTEgKzc3NjAsMTEgQEAgc3ViIEhlYWRlck5lZWRzUHJvdG90
eXBlRGVjbGFyYXRpb24KICAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q3VzdG9tRGVmaW5lT3duUHJvcGVydHlPblByb3RvdHlwZX07CiB9CiAKLXN1YiBJc1VuZm9y
Z2VhYmxlCitzdWIgSXNMZWdhY3lVbmZvcmdlYWJsZQogewogICAgIG15ICgkaW50ZXJmYWNlLCAk
cHJvcGVydHkpID0gQF87CiAKLSAgICByZXR1cm4gJHByb3BlcnR5LT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntVbmZvcmdlYWJsZX0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VW5m
b3JnZWFibGV9OworICAgIHJldHVybiAkcHJvcGVydHktPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xl
Z2FjeVVuZm9yZ2VhYmxlfSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdh
Y3lVbmZvcmdlYWJsZX07CiB9CiAKIHN1YiBDb21wdXRlRnVuY3Rpb25TcGVjaWFsCkBAIC03Nzcy
LDcgKzc3NzIsNyBAQCBzdWIgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbAogICAgIG15ICgkaW50ZXJm
YWNlLCAkb3BlcmF0aW9uKSA9IEBfOwogCiAgICAgbXkgQHNwZWNpYWxzID0gKCk7Ci0gICAgcHVz
aChAc3BlY2lhbHMsICgiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSIsICJKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSIpKSBpZiBJc1VuZm9yZ2VhYmxlKCRpbnRlcmZh
Y2UsICRvcGVyYXRpb24pOworICAgIHB1c2goQHNwZWNpYWxzLCAoIkpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUiLCAiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkiKSkg
aWYgSXNMZWdhY3lVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKTsKICAgICBwdXNo
KEBzcGVjaWFscywgIkpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIikgaWYgJG9wZXJh
dGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm90RW51bWVyYWJsZX07CiAgICAgaWYgKElzSlNC
dWlsdGluKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pKSB7CiAgICAgICAgIHB1c2goQHNwZWNpYWxz
LCAiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbiIpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHJldmlzaW9u
IDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRl
cy5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw2ICsxOSwxMyBAQAogICAgICAgICAiQWN0aXZl
RE9NT2JqZWN0IjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNl
Il0KICAgICAgICAgfSwKKyAgICAgICAgIkFsbG93U2hhcmVkIjogeworICAgICAgICAgICAgImNv
bnRleHRzQWxsb3dlZCI6IFsidHlwZSJdLAorICAgICAgICAgICAgInN0YW5kYXJkIjogeworICAg
ICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jQWxs
b3dTaGFyZWQiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInVuc3VwcG9ydGVkIjogdHJ1
ZQorICAgICAgICB9LAogICAgICAgICAiQXBwbGVDb3B5cmlnaHQiOiB7CiAgICAgICAgICAgICAi
Y29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiLCAiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJd
CiAgICAgICAgIH0sCkBAIC0yNiw3ICszMywxMCBAQAogICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsidHlwZSJdCiAgICAgICAgIH0sCiAgICAgICAgICJDRVJlYWN0aW9ucyI6IHsKLSAg
ICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQor
ICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJd
LAorICAgICAgICAgICAgInN0YW5kYXJkIjogeworICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvY3VzdG9tLWVsZW1lbnRzLmh0bWwj
Y2VyZWFjdGlvbnMiCisgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgICJDYWNoZWRB
dHRyaWJ1dGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUi
XQpAQCAtMjQyLDYgKzI1MiwxMyBAQAogICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9o
ZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jR2xvYmFsIgogICAgICAgICAgICAgfQogICAgICAgICB9
LAorICAgICAgICAiSFRNTENvbnN0cnVjdG9yIjogeworICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsib3BlcmF0aW9uIl0sCisgICAgICAgICAgICAic3RhbmRhcmQiOiB7CisgICAgICAg
ICAgICAgICAgInVybCI6ICJodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9k
b20uaHRtbCNodG1sY29uc3RydWN0b3IiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInVu
c3VwcG9ydGVkIjogdHJ1ZQorICAgICAgICB9LAogICAgICAgICAiSW1wbGVtZW50ZWRBcyI6IHsK
ICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSIsICJkaWN0aW9uYXJ5
IiwgImRpY3Rpb25hcnktbWVtYmVyIiwgImVudW0iLCAiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJd
LAogICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdCkBAIC0yOTYsMzAgKzMxMyw2OCBAQAogICAg
ICAgICAiTGVnYWN5Q2FsbGVyIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsi
b3BlcmF0aW9uIl0KICAgICAgICAgfSwKLSAgICAgICAgIkxlZ2FjeVVuZW51bWVyYWJsZU5hbWVk
UHJvcGVydGllcyI6IHsKKyAgICAgICAgIkxlZ2FjeUxlbmllbnRTZXR0ZXIiOiB7CisgICAgICAg
ICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwKKyAgICAgICAgICAgICJzdGFu
ZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5p
by93ZWJpZGwvI0xlZ2FjeUxlbmllbnRTZXR0ZXIiCisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgInVuc3VwcG9ydGVkIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5TGVuaWVu
dFRoaXMiOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwK
KyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBz
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeUxlbmllbnRUaGlzIgorICAgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5TmFtZXNwYWNlIjogewogICAgICAgICAg
ICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCiAgICAgICAgICAgICAic3RhbmRh
cmQiOiB7Ci0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8v
d2ViaWRsLyNMZWdhY3lVbmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMiCisgICAgICAgICAgICAg
ICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNMZWdhY3lOYW1lc3Bh
Y2UiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInVuc3VwcG9ydGVkIjogdHJ1ZQorICAg
ICAgICB9LAorICAgICAgICAiTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QiOiB7CisgICAgICAgICAg
ICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAgICAgICAgICJzdGFuZGFy
ZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93
ZWJpZGwvI0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0IgogICAgICAgICAgICAgfQogICAgICAgICB9
LAotICAgICAgICAiTGVnYWN5V2luZG93QWxpYXMiOiB7CisgICAgICAgICJMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZyI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbInR5cGUiXSwK
KyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBz
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nIgorICAg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5T3ZlcnJpZGVCdWlsdElucyI6
IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAotICAgICAg
ICAgICAgInZhbHVlcyI6IFsiKiJdLAogICAgICAgICAgICAgInN0YW5kYXJkIjogewotICAgICAg
ICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jTGVnYWN5
V2luZG93QWxpYXMiCisgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRo
dWIuaW8vd2ViaWRsLyNMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIgogICAgICAgICAgICAgfQogICAg
ICAgICB9LAotICAgICAgICAiTGVuaWVudFNldHRlciI6IHsKLSAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdLAorICAgICAgICAiTGVnYWN5VHJlYXROb25PYmplY3RB
c051bGwiOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJjYWxsYmFjay1mdW5j
dGlvbiJdLAogICAgICAgICAgICAgInN0YW5kYXJkIjogewotICAgICAgICAgICAgICAgICJ1cmwi
OiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jTGVuaWVudFNldHRlciIKKyAgICAg
ICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2Fj
eVRyZWF0Tm9uT2JqZWN0QXNOdWxsIgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJ1bnN1
cHBvcnRlZCI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgIkxlbmllbnRUaGlzIjogewotICAg
ICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIl0sCisgICAgICAgICJMZWdh
Y3lVbmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMiOiB7CisgICAgICAgICAgICAiY29udGV4dHNB
bGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAg
ICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2Fj
eVVuZW51bWVyYWJsZU5hbWVkUHJvcGVydGllcyIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgIkxlZ2FjeVVuZm9yZ2VhYmxlIjogeworICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiIsICJpbnRlcmZhY2UiXSwKKyAgICAgICAg
ICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2Ft
LmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeVVuZm9yZ2VhYmxlIgorICAgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAiTGVnYWN5V2luZG93QWxpYXMiOiB7CisgICAgICAgICAgICAiY29u
dGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioi
XSwKICAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAgICAgICAgICAgICAidXJsIjogImh0
dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlbmllbnRUaGlzIgorICAgICAgICAgICAg
ICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jTGVnYWN5V2luZG93
QWxpYXMiCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgICJNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkIjogewpAQCAtMzM5LDI2ICszOTQsMTQgQEAKICAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCiAgICAgICAgICJOZXdPYmplY3Qi
OiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiLCAib3BlcmF0
aW9uIl0sCisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJvcGVyYXRpb24iXSwKICAg
ICAgICAgICAgICJzdGFuZGFyZCI6IHsKICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8v
aGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI05ld09iamVjdCIKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSwKLSAgICAgICAgIk5vSW50ZXJmYWNlT2JqZWN0IjogewotICAgICAgICAgICAgImNvbnRl
eHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCi0gICAgICAgICAgICAic3RhbmRhcmQiOiB7Ci0g
ICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNO
b0ludGVyZmFjZU9iamVjdCIKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKICAgICAgICAgIk5v
dEVudW1lcmFibGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1
dGUiLCAib3BlcmF0aW9uIl0KICAgICAgICAgfSwKLSAgICAgICAgIk92ZXJyaWRlQnVpbHRpbnMi
OiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKLSAgICAg
ICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5
Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI092ZXJyaWRlQnVpbHRpbnMiCi0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0sCiAgICAgICAgICJPdmVycmlkZUlETFR5cGUiOiB7CiAgICAgICAgICAgICAiY29u
dGV4dHNBbGxvd2VkIjogWyJ0eXBlIl0sCiAgICAgICAgICAgICAidmFsdWVzIjogWyIqIl0KQEAg
LTQyMyw3ICs0NjYsNyBAQAogICAgICAgICAiU2FtZU9iamVjdCI6IHsKICAgICAgICAgICAgICJj
b250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdLAogICAgICAgICAgICAgInN0YW5kYXJkIjog
ewotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlk
bC8jUmVwbGFjZWFibGUiCisgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5n
aXRodWIuaW8vd2ViaWRsLyNTYW1lT2JqZWN0IgogICAgICAgICAgICAgfSwKICAgICAgICAgICAg
ICJ1bnN1cHBvcnRlZCI6IHRydWUKICAgICAgICAgfSwKQEAgLTQzMyw2ICs0NzYsMTMgQEAKICAg
ICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI1Nl
Y3VyZUNvbnRleHQiCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCisgICAgICAgICJTZXJpYWxp
emFibGUiOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwK
KyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N0cnVjdHVyZWQtZGF0YS5odG1sI3Nl
cmlhbGl6YWJsZSIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAidW5zdXBwb3J0ZWQiOiB0
cnVlCisgICAgICAgIH0sCiAgICAgICAgICJTZXR0ZXJDYWxsV2l0aCI6IHsKICAgICAgICAgICAg
ICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdLAogICAgICAgICAgICAgInZhbHVlcyI6
IFsiRXhlY1N0YXRlIiwgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiLCAiR2xvYmFsT2JqZWN0Iiwg
IkFjdGl2ZVdpbmRvdyIsICJGaXJzdFdpbmRvdyJdLApAQCAtNDQ3LDI5ICs0OTcsMTYgQEAKICAg
ICAgICAgIlN1cHByZXNzVG9KU09iamVjdCI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93
ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCi0gICAgICAgICJUcmVhdE5vbk9iamVjdEFz
TnVsbCI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImNhbGxiYWNrLWZ1bmN0
aW9uIl0sCisgICAgICAgICJUcmFuc2ZlcmFibGUiOiB7CisgICAgICAgICAgICAiY29udGV4dHNB
bGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKICAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAg
ICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI1RyZWF0
Tm9uT2JqZWN0QXNOdWxsIgorICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3RydWN0dXJlZC1kYXRhLmh0bWwjdHJhbnNmZXJhYmxl
IgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCI6IHRydWUKICAgICAg
ICAgfSwKLSAgICAgICAgIlRyZWF0TnVsbEFzIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsidHlwZSJdLAotICAgICAgICAgICAgInZhbHVlcyI6IFsiRW1wdHlTdHJpbmciXSwK
LSAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAgICAgICAgICAgICAidXJsIjogImh0dHBz
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI1RyZWF0TnVsbEFzIgotICAgICAgICAgICAgfQot
ICAgICAgICB9LAogICAgICAgICAiVVJMIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dl
ZCI6IFsiYXR0cmlidXRlIl0KICAgICAgICAgfSwKLSAgICAgICAgIlVuZm9yZ2VhYmxlIjogewot
ICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiIs
ICJpbnRlcmZhY2UiXSwKLSAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAgICAgICAgICAg
ICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI1VuZm9yZ2VhYmxlIgot
ICAgICAgICAgICAgfQotICAgICAgICB9LAogICAgICAgICAiVW5zY29wYWJsZSI6IHsKICAgICAg
ICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXSwKICAg
ICAgICAgICAgICJzdGFuZGFyZCI6IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTY0LDcgKzE2NCw3IEBAIGZvcmVhY2ggbXkgJGlkbEZpbGUgKHNvcnQga2V5
cyAlaWRsRmlsZUgKIAogICAgICMgRm9yIGV2ZXJ5IGludGVyZmFjZSB0aGF0IGlzIGV4cG9zZWQg
aW4gYSBnaXZlbiBFQ01BU2NyaXB0IGdsb2JhbCBlbnZpcm9ubWVudCBhbmQ6CiAgICAgIyAtIGlz
IGEgY2FsbGJhY2sgaW50ZXJmYWNlIHRoYXQgaGFzIGNvbnN0YW50cyBkZWNsYXJlZCBvbiBpdCwg
b3IKLSAgICAjIC0gaXMgYSBub24tY2FsbGJhY2sgaW50ZXJmYWNlIHRoYXQgaXMgbm90IGRlY2xh
cmVkIHdpdGggdGhlIFtOb0ludGVyZmFjZU9iamVjdF0gZXh0ZW5kZWQgYXR0cmlidXRlLCBhIGNv
cnJlc3BvbmRpbmcKKyAgICAjIC0gaXMgYSBub24tY2FsbGJhY2sgaW50ZXJmYWNlIHRoYXQgaXMg
bm90IGRlY2xhcmVkIHdpdGggdGhlIFtMZWdhY3lOb0ludGVyZmFjZU9iamVjdF0gZXh0ZW5kZWQg
YXR0cmlidXRlLCBhIGNvcnJlc3BvbmRpbmcKICAgICAjICAgcHJvcGVydHkgbXVzdCBleGlzdCBv
biB0aGUgRUNNQVNjcmlwdCBlbnZpcm9ubWVudCdzIGdsb2JhbCBvYmplY3QuCiAgICAgIyBTZWUg
aHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZXMtaW50ZXJmYWNlcwogICAgIG15ICRl
eHRlbmRlZEF0dHJpYnV0ZXMgPSBnZXRJbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXNGcm9tSURM
KCRpZGxGaWxlQ29udGVudHMpOwpAQCAtNDU5LDcgKzQ1OSw3IEBAIHN1YiBzaG91bGRFeHBvc2VJ
bnRlcmZhY2UKIHsKICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVzID0gc2hpZnQ7CiAKLSAgICBy
ZXR1cm4gISRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiTm9JbnRlcmZhY2VPYmplY3QifTsKKyAgICBy
ZXR1cm4gISRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QifTsK
IH0KIAogc3ViIHVwZGF0ZURpY3Rpb25hcnlEZXBlbmRlbmNpZXMKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9ycy5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0Jp
bmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3Ry
dWN0b3JzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQCBwYXJ0aWFsIGludGVy
ZmFjZSBUZXN0R2xvYmFsT2JqZWN0IHsKICAgICBhdHRyaWJ1dGUgVGVzdEludGVyZmFjZUxlYWRp
bmdVbmRlcnNjb3JlQ29uc3RydWN0b3IgVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOwog
ICAgIGF0dHJpYnV0ZSBUZXN0SXRlcmFibGVDb25zdHJ1Y3RvciBUZXN0SXRlcmFibGU7CiAgICAg
YXR0cmlidXRlIFRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yIFRlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvcjsKKyAgICBhdHRyaWJ1dGUgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnND
b25zdHJ1Y3RvciBUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczsKICAgICBhdHRyaWJ1dGUgVGVz
dE1hcExpa2VDb25zdHJ1Y3RvciBUZXN0TWFwTGlrZTsKICAgICBhdHRyaWJ1dGUgVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yIFRlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXI7CiAgICAgYXR0cmlidXRlIFRlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yIFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbjsKQEAgLTQyLDEyICs0MywxMSBAQCBwYXJ0aWFsIGludGVyZmFj
ZSBUZXN0R2xvYmFsT2JqZWN0IHsKICAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXJDb25zdHJ1Y3RvciBUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjsKICAgICBh
dHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3RvciBUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjsKICAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvciBUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjsKLSAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVy
V2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJp
ZGVCdWlsdGluczsKLSAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQ29uc3RydWN0b3IgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzOwotICAgIGF0dHJpYnV0ZSBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczsKKyAgICBhdHRyaWJ1dGUgVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciBUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluczsKKyAgICBhdHRyaWJ1dGUgVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yIFRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM7CisgICAgYXR0cmlidXRlIFRl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM7CiAgICAgW0NvbmRpdGlvbmFs
PUNvbmRpdGlvbkRlcml2ZWRdIGF0dHJpYnV0ZSBUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxDb25z
dHJ1Y3RvciBUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWw7CiAgICAgYXR0cmlidXRlIFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IgVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U7Ci0gICAgYXR0cmlidXRlIFRlc3RPdmVycmlkZUJ1aWx0
aW5zQ29uc3RydWN0b3IgVGVzdE92ZXJyaWRlQnVpbHRpbnM7CiAgICAgYXR0cmlidXRlIFRlc3RQ
bHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3RvciBUZXN0UGx1Z2luSW50ZXJmYWNlOwogICAgIGF0dHJp
YnV0ZSBUZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3IgVGVzdFJlYWRPbmx5TWFwTGlrZTsK
ICAgICBhdHRyaWJ1dGUgVGVzdFJlYWRPbmx5U2V0TGlrZUNvbnN0cnVjdG9yIFRlc3RSZWFkT25s
eVNldExpa2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3Vw
cGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAkocmV2aXNp
b24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBs
ZW1lbnRhbERlcGVuZGVuY2llcy5kZXAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsOSBA
QCBXZWJET01UZXN0SXRlcmFibGUuaDogCiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOiAK
IERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOiAKIFdlYkRPTVRlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5oOiAKK0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaDogCitET01UZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdElucy5oOiAKK1dlYkRPTVRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Lmg6IAogSlNUZXN0TWFwTGlrZS5oOiAKIERPTVRlc3RNYXBMaWtlLmg6IAogV2ViRE9NVGVzdE1h
cExpa2UuaDogCkBAIC0xNjEsMTUgKzE2NCwxNSBAQCBXZWJET01UZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlci5oCiBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyLmg6IAogRE9NVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuaDog
CiBXZWJET01UZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5oOiAKLUpT
VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaDogCi1ET01UZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5oOiAKLVdlYkRPTVRlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zLmg6IAotSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXMuaDogCi1ET01UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaDogCi1X
ZWJET01UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaDogCi1KU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaDog
Ci1ET01UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zLmg6IAotV2ViRE9NVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGlucy5oOiAKK0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMuaDogCitET01UZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWls
dElucy5oOiAKK1dlYkRPTVRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Lmg6IAorSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmg6
IAorRE9NVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5oOiAK
K1dlYkRPTVRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaDog
CitKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zLmg6IAorRE9NVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaDogCitXZWJET01UZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucy5oOiAKIEpTVGVzdE5vZGUuaDogCiBET01UZXN0Tm9kZS5oOiAKIFdlYkRPTVRl
c3ROb2RlLmg6IApAQCAtMTgzLDkgKzE4Niw2IEBAIFRlc3RPcGVyYXRpb25CYXNlLmlkbDoKIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuaDogCiBET01UZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5oOiAKIFdlYkRPTVRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlLmg6IAotSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oOiAKLURP
TVRlc3RPdmVycmlkZUJ1aWx0aW5zLmg6IAotV2ViRE9NVGVzdE92ZXJyaWRlQnVpbHRpbnMuaDog
CiBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaDogCiBET01UZXN0UGx1Z2luSW50ZXJmYWNlLmg6IAog
V2ViRE9NVGVzdFBsdWdpbkludGVyZmFjZS5oOiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0SW5jbHVkZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW5jbHVkZXMuaWRsCShyZXZpc2lvbiAy
NjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEluY2x1
ZGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogLy8gY2hhbmdlcyBpbiBp
dHMgb3V0cHV0LgogWwogICAgIENvbmRpdGlvbmFsPUNvbmRpdGlvbjIyfENvbmRpdGlvbjIzLAot
ICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50
ZXJmYWNlIFRlc3RJbmNsdWRlcyB7CiAgICAgc3RhdGljIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25n
IGluY2x1ZGVzU3RhdGljUmVhZE9ubHlBdHRyOwogICAgIHN0YXRpYyBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGluY2x1ZGVzU3RhdGljQXR0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cworXSBpbnRlcmZhY2UgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgeworICAgIGdldHRlciBO
b2RlIG5hbWVkSXRlbShET01TdHJpbmcgbmFtZSk7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaWRsCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
CitdIGludGVyZmFjZSBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyB7
CisgICAgc2V0dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyB2YWx1ZSk7
CisKKyAgICAvLyBOT1RFOiBOYW1lZCBzZXR0ZXJzIHJlcXVpcmUgdGhlIHByZXNlbmNlIG9mIGEg
bmFtZWQgZ2V0dGVyIGFzIHdlbGwuCisgICAgZ2V0dGVyIERPTVN0cmluZyAoRE9NU3RyaW5nIG5h
bWUpOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitpbnRlcmZhY2UgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcyB7CisgICAgc2V0dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5nIG5hbWUs
IERPTVN0cmluZyB2YWx1ZSk7CisKKyAgICAvLyBOT1RFOiBOYW1lZCBzZXR0ZXJzIHJlcXVpcmUg
dGhlIHByZXNlbmNlIG9mIGEgbmFtZWQgZ2V0dGVyIGFzIHdlbGwuCisgICAgZ2V0dGVyIERPTVN0
cmluZyAoRE9NU3RyaW5nIG5hbWUpOworCisgICAgW0xlZ2FjeVVuZm9yZ2VhYmxlXSByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVuZm9yZ2VhYmxlQXR0cmlidXRlOworICAgIFtMZWdhY3lV
bmZvcmdlYWJsZV0gdW5kZWZpbmVkIHVuZm9yZ2VhYmxlT3BlcmF0aW9uKCk7Cit9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1sKKyAgICBMZWdhY3lPdmVycmlkZUJ1aWx0SW5zCitdIGludGVy
ZmFjZSBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucyB7CisgICAgc2V0dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5nIG5h
bWUsIERPTVN0cmluZyB2YWx1ZSk7CisKKyAgICAvLyBOT1RFOiBOYW1lZCBzZXR0ZXJzIHJlcXVp
cmUgdGhlIHByZXNlbmNlIG9mIGEgbmFtZWQgZ2V0dGVyIGFzIHdlbGwuCisgICAgZ2V0dGVyIERP
TVN0cmluZyAoRE9NU3RyaW5nIG5hbWUpOworCisgICAgW0xlZ2FjeVVuZm9yZ2VhYmxlXSByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVuZm9yZ2VhYmxlQXR0cmlidXRlOworICAgIFtMZWdh
Y3lVbmZvcmdlYWJsZV0gdW5kZWZpbmVkIHVuZm9yZ2VhYmxlT3BlcmF0aW9uKCk7Cit9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaWRs
CShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaWRsCShub25leGlzdGVudCkK
QEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBPdmVycmlkZUJ1aWx0aW5zCi1d
IGludGVyZmFjZSBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyB7Ci0gICAgc2V0
dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyB2YWx1ZSk7Ci0KLSAgICAv
LyBOT1RFOiBOYW1lZCBzZXR0ZXJzIHJlcXVpcmUgdGhlIHByZXNlbmNlIG9mIGEgbmFtZWQgZ2V0
dGVyIGFzIHdlbGwuCi0gICAgZ2V0dGVyIERPTVN0cmluZyAoRE9NU3RyaW5nIG5hbWUpOwotfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXMuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmlk
bAkobm9uZXhpc3RlbnQpCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1pbnRlcmZhY2Ug
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIHsKLSAgICBzZXR0ZXIgdW5k
ZWZpbmVkIChET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKLQotICAgIC8vIE5PVEU6
IE5hbWVkIHNldHRlcnMgcmVxdWlyZSB0aGUgcHJlc2VuY2Ugb2YgYSBuYW1lZCBnZXR0ZXIgYXMg
d2VsbC4KLSAgICBnZXR0ZXIgRE9NU3RyaW5nIChET01TdHJpbmcgbmFtZSk7Ci0KLSAgICBbVW5m
b3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdW5mb3JnZWFibGVBdHRyaWJ1
dGU7Ci0gICAgW1VuZm9yZ2VhYmxlXSB1bmRlZmluZWQgdW5mb3JnZWFibGVPcGVyYXRpb24oKTsK
LX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaWRsCShy
ZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
cy5pZGwJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAg
IE92ZXJyaWRlQnVpbHRpbnMKLV0gaW50ZXJmYWNlIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMgewotICAgIHNldHRlciB1bmRlZmluZWQg
KERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgdmFsdWUpOwotCi0gICAgLy8gTk9URTogTmFtZWQg
c2V0dGVycyByZXF1aXJlIHRoZSBwcmVzZW5jZSBvZiBhIG5hbWVkIGdldHRlciBhcyB3ZWxsLgot
ICAgIGdldHRlciBET01TdHJpbmcgKERPTVN0cmluZyBuYW1lKTsKLQotICAgIFtVbmZvcmdlYWJs
ZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1bmZvcmdlYWJsZUF0dHJpYnV0ZTsKLSAg
ICBbVW5mb3JnZWFibGVdIHVuZGVmaW5lZCB1bmZvcmdlYWJsZU9wZXJhdGlvbigpOwotfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNzMsMTEgKzczLDExIEBAIGVudW0g
VGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBhdHRyaWJ1dGUgVVNWU3Ry
aW5nIHVzdnN0cmluZ0F0dHI7CiAgICAgYXR0cmlidXRlIFRlc3RPYmogdGVzdE9iakF0dHI7CiAg
ICAgYXR0cmlidXRlIFRlc3RPYmo/IHRlc3ROdWxsYWJsZU9iakF0dHI7Ci0gICAgW0xlbmllbnRU
aGlzXSBhdHRyaWJ1dGUgVGVzdE9iaiBsZW5pZW50VGVzdE9iakF0dHI7Ci0gICAgW1VuZm9yZ2Vh
YmxlXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVuZm9yZ2VhYmxlQXR0cjsKLSAgICBh
dHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgc3RyaW5nQXR0clRy
ZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmc7Ci0gICAgYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0
eVN0cmluZ10gVVNWU3RyaW5nIHVzdnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5n
OwotICAgIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIEJ5dGVTdHJpbmcgYnl0
ZVN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nOworICAgIFtMZWdhY3lMZW5pZW50
VGhpc10gYXR0cmlidXRlIFRlc3RPYmogbGVuaWVudFRlc3RPYmpBdHRyOworICAgIFtMZWdhY3lV
bmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1bmZvcmdlYWJsZUF0dHI7
CisgICAgYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHN0cmlu
Z0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nOworICAgIGF0dHJpYnV0ZSBbTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmddIFVTVlN0cmluZyB1c3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZzsKKyAgICBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBCeXRlU3Ry
aW5nIGJ5dGVTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZzsKICAgICBhdHRyaWJ1
dGUgcmVjb3JkPERPTVN0cmluZywgbG9uZz4gc3RyaW5nTG9uZ1JlY29yZEF0dHI7CiAgICAgYXR0
cmlidXRlIHJlY29yZDxVU1ZTdHJpbmcsIGxvbmc+IHVzdnN0cmluZ0xvbmdSZWNvcmRBdHRyOwog
ICAgIGF0dHJpYnV0ZSByZWNvcmQ8Qnl0ZVN0cmluZywgbG9uZz4gdXN2c3RyaW5nTG9uZ1JlY29y
ZEF0dHI7CkBAIC0xNDIsOCArMTQyLDggQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwg
ImtpbmRhLWxvdwogICAgIGxvbmcgbG9uZ01ldGhvZFdpdGhBcmdzKGxvbmcgbG9uZ0FyZywgRE9N
U3RyaW5nIHN0ckFyZywgVGVzdE9iaiBvYmpBcmcpOwogICAgIFRlc3RPYmogb2JqTWV0aG9kKCk7
CiAgICAgVGVzdE9iaiBvYmpNZXRob2RXaXRoQXJncyhsb25nIGxvbmdBcmcsIERPTVN0cmluZyBz
dHJBcmcsIFRlc3RPYmogb2JqQXJnKTsKLSAgICBbVW5mb3JnZWFibGVdIGxvbmcgdW5mb3JnZWFi
bGVNZXRob2QoKTsKLSAgICB1bmRlZmluZWQgbWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1w
dHlTdHJpbmcoW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgYXJnKTsKKyAgICBb
TGVnYWN5VW5mb3JnZWFibGVdIGxvbmcgdW5mb3JnZWFibGVNZXRob2QoKTsKKyAgICB1bmRlZmlu
ZWQgbWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoW0xlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nXSBET01TdHJpbmcgYXJnKTsKICAgICB1bmRlZmluZWQgbWV0aG9kV2l0aFhQYXRo
TlNSZXNvbHZlclBhcmFtZXRlcihYUGF0aE5TUmVzb2x2ZXIgcmVzb2x2ZXIpOwogCiAgICAgLy8g
TnVsbGFibGUgU3RyaW5nIHJldHVybiB2YWx1ZXMuCkBAIC0xNTksMTEgKzE1OSwxMSBAQCBlbnVt
IFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAKICAgICB1bmRlZmluZWQgbWV0
aG9kV2l0aFVTVlN0cmluZ0FyZyhVU1ZTdHJpbmcgc3RyKTsKICAgICB1bmRlZmluZWQgbWV0aG9k
V2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnKFVTVlN0cmluZz8gc3RyKTsKLSAgICB1bmRlZmluZWQg
bWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoW1RyZWF0TnVs
bEFzPUVtcHR5U3RyaW5nXSBVU1ZTdHJpbmcgc3RyKTsKKyAgICB1bmRlZmluZWQgbWV0aG9kV2l0
aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoW0xlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nXSBVU1ZTdHJpbmcgc3RyKTsKIAogICAgIHVuZGVmaW5lZCBtZXRob2RXaXRoQnl0ZVN0
cmluZ0FyZyhCeXRlU3RyaW5nIHN0cik7CiAgICAgdW5kZWZpbmVkIG1ldGhvZFdpdGhOdWxsYWJs
ZUJ5dGVTdHJpbmdBcmcoQnl0ZVN0cmluZz8gc3RyKTsKLSAgICB1bmRlZmluZWQgbWV0aG9kV2l0
aEJ5dGVTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFtUcmVhdE51bGxBcz1FbXB0
eVN0cmluZ10gQnl0ZVN0cmluZyBzdHIpOworICAgIHVuZGVmaW5lZCBtZXRob2RXaXRoQnl0ZVN0
cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
XSBCeXRlU3RyaW5nIHN0cik7CiAKICAgICB1bmRlZmluZWQgc2VyaWFsaXplZFZhbHVlKFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSBzZXJpYWxpemVkQXJnKTsKIApAQCAtNDUwLDggKzQ1MCw4IEBAIGVu
dW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBbQ29uZGl0aW9uYWw9
Q09ORElUSU9OMiwgQ29uZGl0aW9uYWxseVJlYWRXcml0ZT1DT05ESVRJT05dIGF0dHJpYnV0ZSBO
b2RlIGNvbmRpdGlvbmFsQW5kQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZTsKIAogICAg
IFtSdW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZT1UZXN0RmVhdHVyZV0gYXR0cmlidXRlIE5v
ZGUgcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGU7Ci0gICAgW1J1bnRpbWVD
b25kaXRpb25hbGx5UmVhZFdyaXRlPVRlc3RGZWF0dXJlLCBVbmZvcmdlYWJsZV0gYXR0cmlidXRl
IE5vZGUgcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZTsK
LSAgICBbUnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGU9VGVzdEZlYXR1cmUsIFByaXZhdGVJ
ZGVudGlmaWVyLCBVbmZvcmdlYWJsZV0gYXR0cmlidXRlIE5vZGUgcnVudGltZUNvbmRpdGlvbmFs
bHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZVByaXZhdGU7CisgICAgW1J1bnRpbWVDb25k
aXRpb25hbGx5UmVhZFdyaXRlPVRlc3RGZWF0dXJlLCBMZWdhY3lVbmZvcmdlYWJsZV0gYXR0cmli
dXRlIE5vZGUgcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJs
ZTsKKyAgICBbUnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGU9VGVzdEZlYXR1cmUsIFByaXZh
dGVJZGVudGlmaWVyLCBMZWdhY3lVbmZvcmdlYWJsZV0gYXR0cmlidXRlIE5vZGUgcnVudGltZUNv
bmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZVByaXZhdGU7CiAgICAgW1J1
bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlPVRlc3RGZWF0dXJlXSBhdHRyaWJ1dGUgUHJvbWlz
ZTxkb3VibGU+IHJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlUHJvbWlzZTsK
IAogICAgIFtFeHBvc2VkPVdpbmRvd10gYXR0cmlidXRlIGxvbmcgY29uZGl0aW9uYWxseUV4cG9z
ZWRUb1dpbmRvd0F0dHJpYnV0ZTsKQEAgLTQ3Niw3ICs0NzYsNyBAQCB0eXBlZGVmIGFueSBBbnlU
eXBlZGVmOwogICAgIERPTVN0cmluZyBzdHJpbmdXaXRoRGVmYXVsdCA9ICJkZWZhdWx0U3RyaW5n
IjsKICAgICBET01TdHJpbmcgc3RyaW5nV2l0aG91dERlZmF1bHQ7CiAgICAgRE9NU3RyaW5nPyBu
dWxsYWJsZVN0cmluZ1dpdGhEZWZhdWx0ID0gbnVsbDsKLSAgICBbVHJlYXROdWxsQXM9RW1wdHlT
dHJpbmddIERPTVN0cmluZyBzdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nOworICAgIFtMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJp
bmc7CiAgICAgYm9vbGVhbiBib29sZWFuV2l0aERlZmF1bHQgPSBmYWxzZTsKICAgICBib29sZWFu
IGJvb2xlYW5XaXRob3V0RGVmYXVsdDsKICAgICBzZXF1ZW5jZTxET01TdHJpbmc+IHNlcXVlbmNl
T2ZTdHJpbmdzOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RPcGVyYXRpb25CYXNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE9wZXJhdGlvbkJhc2UuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9wZXJhdGlvbkJhc2Uu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAKIFsKICAgICBDb25kaXRpb25h
bD1Db25kaXRpb25CYXNlLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgVGVzdE9wZXJhdGlvbkJhc2UgewogICAgIHVuZGVm
aW5lZCBub25Db25kaXRpb25hbE9wZXJhdGlvbigpOwogICAgIFtDb25kaXRpb25hbD1Db25kaXRp
b25PcGVyYXRpb25dIHVuZGVmaW5lZCBjb25kaXRpb25hbE9wZXJhdGlvbigpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE92ZXJyaWRlQnVpbHRpbnMuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE92ZXJyaWRlQnVpbHRpbnMuaWRsCShub25leGlz
dGVudCkKQEAgLTEsNiArMCwwIEBACi1bCi0gICAgT3ZlcnJpZGVCdWlsdGlucwotXSBpbnRlcmZh
Y2UgVGVzdE92ZXJyaWRlQnVpbHRpbnMKLXsKLSAgICBnZXR0ZXIgTm9kZSBuYW1lZEl0ZW0oRE9N
U3RyaW5nIG5hbWUpOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAkocmV2aXNp
b24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw3IEBAIGJv
b2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5U2wKICAgICAgICAgICAgIHJldHVy
biB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExU
eXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAg
ICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVn
YWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0g
dG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dC0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTIwMSw3ICsyMDEsNyBAQCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9w
ZXJ0eVNsCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJl
c3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChh
dXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1
aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG5hbWVk
UHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZh
bHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0
LmNwcAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYg
KzU3LDcgQEAKICNpbmNsdWRlICJKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5oIgog
I2luY2x1ZGUgIkpTVGVzdEl0ZXJhYmxlLmgiCiAjaW5jbHVkZSAiSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgiCiAj
aW5jbHVkZSAiSlNUZXN0TWFwTGlrZS5oIgogI2luY2x1ZGUgIkpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uLmgiCkBAIC03NSwxMSArNzYsMTAgQEAKICNpbmNsdWRlICJK
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5oIgogI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuaCIKLSNpbmNsdWRlICJKU1Rlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zLmgiCi0jaW5jbHVkZSAiSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXMuaCIKLSNpbmNsdWRlICJKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaCIKKyNpbmNsdWRlICJKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgiCisjaW5jbHVkZSAiSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmgiCisjaW5jbHVkZSAi
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdElucy5oIgogI2luY2x1ZGUgIkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2UuaCIKLSNpbmNsdWRlICJKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgiCiAj
aW5jbHVkZSAiSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSlNUZXN0UmVhZE9u
bHlNYXBMaWtlLmgiCiAjaW5jbHVkZSAiSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmgiCkBAIC0yMjMs
NiArMjIzLDggQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZQogYm9v
bCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0SXRlcmFibGVDb25zdHJ1Y3RvcihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
c0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE1hcExpa2VDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TWFwTGlrZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0
cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7CkBAIC0yNTksMjAgKzI2MSwxOCBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEdsb2JhbE9iamVjdFRlCiBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyQ29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1
Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25z
dHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKICNpZiBFTkFCTEUoQ29uZGl0aW9uRGVyaXZlZCkKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0R2xvYmFsT2JqZWN0VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsQ29uc3RydWN0b3IoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsQ29u
c3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2Jh
bE9iamVjdFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3Io
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEdsb2JhbE9iamVjdFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJv
b2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RQbHVnaW5J
bnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0
UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAg
LTMyMCwxMyArMzIwLDEzIEBAIHVzaW5nIEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yID0g
SlMKIAogLyogSGFzaCB0YWJsZSAqLwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNo
SW5kZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFsyNjhdID0geworc3RhdGljIGNvbnN0
IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY5
XSA9IHsKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDAsIC0xIH0sCisgICAgeyA0MSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgMCwgLTEgfSwKLSAgICB7IDgsIDI2MyB9LAotICAgIHsg
NDQsIC0xIH0sCisgICAgeyA4LCAyNjQgfSwKKyAgICB7IDQ1LCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzU2LDcgKzM1Niw3IEBA
IHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDM0LCAtMSB9LAorICAg
IHsgMzUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCkBAIC0zNzEsMTAgKzM3MSwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RI
YXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCi0gICAgeyAzOCwgLTEgfSwKLSAgICB7IDIwLCAyNjQgfSwKKyAgICB7IDM5LCAtMSB9
LAorICAgIHsgMjAsIDI2NSB9LAogICAgIHsgMTAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IDQ2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LApAQCAtMzgzLDE1ICszODQsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0
SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzNiwgLTEgfSwKKyAgICB7IDM3LCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjIs
IDI2NSB9LAorICAgIHsgMjIsIDI2NiB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LApAQCAtNDE5LDI0ICs0MTksMjQgQEAgc3RhdGljIGNvbnN0IHN0
cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgMTksIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDYsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKICAg
ICB7IDE4LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzNSwgLTEgfSwKKyAgICB7IDM2LCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDQsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1MCwg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAogICAgIHsgMjUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
LSAgICB7IDIsIDI2NyB9LAotICAgIHsgMzcsIC0xIH0sCisgICAgeyAyLCAyNjggfSwKKyAgICB7
IDM4LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LApAQCAtNDUyLDEwICs0NTIsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFz
aEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAotICAgIHsgMzEsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKKyAgICB7IDMyLCAtMSB9LAor
ICAgIHsgMjcsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQyLCAtMSB9LAorICAgIHsg
NDMsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCkBAIC00NjksNyArNDY5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaElu
ZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAotICAgIHsgLTEsIC0xIH0sCisgICAgeyA0OCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQ4Myw4ICs0ODMsOCBAQCBzdGF0aWMg
Y29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzMiwgLTEgfSwKLSAgICB7IDI5LCAy
NjIgfSwKKyAgICB7IDMzLCAtMSB9LAorICAgIHsgMzAsIDI2MiB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyA1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC01MDUsNyArNTA1LDcgQEAgc3Rh
dGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzMsIDI2NiB9LAorICAgIHsg
MzQsIDI2NyB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAxNywgLTEgfSwKICAgICB7IC0xLCAt
MSB9LApAQCAtNTI4LDcgKzUyOCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJ
bmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKLSAgICB7IDU2LCAtMSB9LAorICAgIHsgNDcsIDI2MyB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IDMsIC0xIH0sCkBAIC01NTAsMTIgKzU1MCwxMiBAQCBzdGF0
aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0OCwgMjYxIH0sCisgICAgeyA0
OSwgMjYxIH0sCiAgICAgeyAxMSwgMjYwIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDYzLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0NywgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNTY1
LDEwICs1NjUsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAog
ICAgIHsgMjYsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsg
MjgsIC0xIH0sCisgICAgeyAyOSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ1LCAtMSB9LAogICAgIHsgNywgLTEgfSwKICAg
ICB7IDUxLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC01NzcsMTMgKzU3NywxNCBAQCBzdGF0
aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyNywgMjU5IH0sCi0gICAgeyAz
MCwgLTEgfSwKLSAgICB7IDM5LCAtMSB9LAotICAgIHsgNDEsIC0xIH0sCi0gICAgeyA0MywgLTEg
fSwKLSAgICB7IDQ5LCAtMSB9LAorICAgIHsgMjgsIDI1OSB9LAorICAgIHsgMzEsIC0xIH0sCisg
ICAgeyA0MCwgLTEgfSwKKyAgICB7IDQyLCAtMSB9LAorICAgIHsgNDQsIC0xIH0sCisgICAgeyA1
MCwgLTEgfSwKICAgICB7IDU1LCAtMSB9LAorICAgIHsgNTYsIC0xIH0sCiAgICAgeyA1NywgLTEg
fSwKICAgICB7IDU5LCAtMSB9LAogICAgIHsgNjQsIC0xIH0sCkBAIC02MzMsNiArNjM0LDcgQEAg
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdsb2JhbAogICAgIHsgIlRlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RU
ZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgIlRl
c3RJdGVyYWJsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdEl0ZXJhYmxlQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0SXRlcmFibGVDb25zdHJ1Y3RvcikgfSB9LAog
ICAgIHsgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgIlRlc3RNYXBMaWtl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TWFwTGlrZUNvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0R2xvYmFsT2JqZWN0VGVzdE1hcExpa2VDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgIlRlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9i
amVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25z
dHJ1Y3RvcikgfSB9LAogICAgIHsgIlRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvcikgfSB9LApA
QCAtNjUxLDE2ICs2NTMsMTUgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEds
b2JhbAogICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rv
cikgfSB9LAogICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQW5kU2V0dGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvcikgfSB9
LAotICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVp
bHRpbnNDb25zdHJ1Y3RvcikgfSB9LAotICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcikgfSB9LAot
ICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25z
dHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1
Y3RvcikgfSB9LAorICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxP
YmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnNDb25zdHJ1Y3RvcikgfSB9LAogI2lmIEVOQUJMRShDb25kaXRpb25EZXJpdmVkKQog
ICAgIHsgIlRlc3RPcGVyYXRpb25Db25kaXRpb25hbCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxDb25zdHJ1Y3RvcikgfSB9LAogI2Vsc2UKICAgICB7
IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAgICAgeyAiVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVj
dFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RHbG9iYWxPYmplY3RUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0
cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdE92ZXJyaWRlQnVpbHRpbnMiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dEdsb2JhbE9iamVjdFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVz
dFBsdWdpbkludGVyZmFjZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdFBsdWdpbklu
dGVyZmFjZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFBsdWdpbkludGVyZmFj
ZUNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdFJlYWRPbmx5TWFwTGlrZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0R2xvYmFsT2JqZWN0VGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
R2xvYmFsT2JqZWN0VGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAi
VGVzdFJlYWRPbmx5U2V0TGlrZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdFJlYWRP
bmx5U2V0TGlrZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFJlYWRPbmx5U2V0
TGlrZUNvbnN0cnVjdG9yKSB9IH0sCkBAIC0xNTYxLDYgKzE1NjIsMjkgQEAgYm9vbCBzZXRKU1Rl
c3RHbG9iYWxPYmplY3RUZXN0SlNCdWlsdGluQwogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvckNvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiKTsKIH0KIAorc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0
aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0R2xv
YmFsT2JqZWN0VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+
OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1
Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rv
ci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMiKSwgc3RybGVuKCJUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpKSwgdmFs
dWUpOworfQorCitib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorewor
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3JTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zIik7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RH
bG9iYWxPYmplY3RUZXN0TWFwTGlrZUNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpAQCAtMTk3NSw3MyArMTk5OSw3
MyBAQCBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlCiAgICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvclNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIiKTsKIH0KIAotc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3N0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdEluc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBKU1Rlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7CisgICAgcmV0dXJuIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldENvbnN0cnVjdG9yKEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RU
ZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yR2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnMiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46
OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdEluc0NvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKTsKIH0KIAotc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAg
ICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdE5hbWVkU2V0dGVyV2l0aE92
ZXJyaWRlQnVpbHRpbnMiKSwgc3RybGVuKCJUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWls
dGlucyIpKSwgdmFsdWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpLCBzdHJsZW4oIlRlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIikpLCB2YWx1ZSk7CiB9CiAKLWJv
b2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNl
dEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEds
b2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRl
c3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIik7CisgICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvclNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworICAgIHJldHVybiBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmdldENvbnN0cnVj
dG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9i
amVjdCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXND
b25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyIpOworICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvckdldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMiKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Nv
bnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rl
c3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCitzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAgICByZXR1cm4gdGhp
c09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzIiksIHN0cmxlbigiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
IikpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMiKSwgc3RybGVuKCJUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzIikpLCB2YWx1ZSk7CiB9
CiAKLWJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQorYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6
c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0NvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMi
KTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRK
U1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnND
b25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNU
ZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkK
IHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
czo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNP
YmplY3QuZ2xvYmFsT2JqZWN0KCkpOworICAgIHJldHVybiBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRD
b25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5n
bG9iYWxPYmplY3QoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnND
b25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9i
YWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
LSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+
OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvckdldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIik7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVj
dCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rl
c3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAg
ICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyIpLCBzdHJsZW4oIlRlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMiKSksIHZh
bHVlKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMiKSwgc3RybGVuKCJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpKSwgdmFsdWUpOwogfQogCi1ib29sIHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCitib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnND
b25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0
Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3JTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zIik7CiB9CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uRGVyaXZlZCkKQEAgLTIwOTYs
MjkgKzIxMjAsNiBAQCBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVybG9hZGVkCiAg
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0
R2xvYmFsT2JqZWN0VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1
Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UiKTsKIH0KIAotc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29u
c3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVz
dEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKLXsKLSAgICBVTlVTRURfUEFSQU0obGV4aWNhbEds
b2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldENvbnN0
cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2Jh
bE9iamVjdCgpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE92
ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RPdmVycmlkZUJ1aWx0aW5zIik7Ci19Ci0KLXN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0
cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RH
bG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiVGVzdE92ZXJyaWRlQnVpbHRpbnMiKSwgc3RybGVuKCJUZXN0T3ZlcnJpZGVCdWlsdGlucyIp
KSwgdmFsdWUpOwotfQotCi1ib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVycmlkZUJ1
aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewot
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RPdmVycmlkZUJ1
aWx0aW5zIik7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RU
ZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKIHsKICAgICBV
TlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1MSBAQAorLyoKKyAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBm
aWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1P
RElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5oIgorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVk
ZSAiRE9NSXNvU3Vic3BhY2VzLmgiCisjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMu
aCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZS5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydEludGVyZmFjZS5oIgor
I2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKKyNpbmNsdWRlICJKU0RPTUV4Y2VwdGlv
bkhhbmRsaW5nLmgiCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJK
U0RPTU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVk
ZSAiSlNOb2RlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCisv
LyBGdW5jdGlvbnMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbShKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKKworLy8gQXR0cmlidXRlcworCitKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OworYm9vbCBzZXRKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworCitjbGFzcyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlIGZpbmFsIDog
cHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9
IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdEluc1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAg
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBl
Pih2bS5oZWFwKSkgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc1Byb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDog
SlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUsIEpT
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU6OkJhc2UpOworCit1c2luZyBKU1Rl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZTxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjsKKwordGVtcGxhdGU8
PiBKU1ZhbHVlIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9i
amVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+IGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwor
CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
c1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJuYW1lZEl0ZW0iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbSksIChpbnRw
dHJfdCkgKDEpIH0gfSwKK307CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSkgfTsKKwordm9pZCBKU1Rlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7
CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGll
cyh2bSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6aW5mbygpLCBKU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKKyAgICBKU0NfVE9f
U1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnNfaW5mbyA9IHsgIlRlc3RMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKSB9OworCitKU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zOjpKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnM+JiYgaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcjxUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdElucz4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkp
Cit7Cit9CisKK3ZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQo
aW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNl
X29mPEFjdGl2ZURPTU9iamVjdCwgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+Ojp2YWx1ZSwg
IkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3RdIGV2ZW4gdGhvdWdo
IGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIpOworCit9
CisKK0pTT2JqZWN0KiBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpjcmVhdGVQcm90b3R5
cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVy
biBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9i
YWxPYmplY3QsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgp
KSk7Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpwcm90b3R5
cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVy
biBnZXRET01Qcm90b3R5cGU8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4odm0sIGdsb2Jh
bE9iamVjdCk7Cit9CisKK0pTVmFsdWUgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0
Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KSk7Cit9CisKK3ZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6ZGVz
dHJveShKU0M6OkpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6
On5KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKCk7Cit9CisKK2Jvb2wgSlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4ob2JqZWN0KTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgdXNpbmcgR2V0dGVySURM
VHlwZSA9IElETEludGVyZmFjZTxOb2RlPjsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAo
YXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1l
IEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4geworICAgICAgICBhdXRvIHJlc3Vs
dCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJp
bmcocHJvcGVydHlOYW1lKSk7CisgICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFs
dWUocmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJ
bXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFi
bGUocmVzdWx0KSB9OworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH07CisgICAg
aWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnM6Olllcz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0
LT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAg
ICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChvYmplY3Qs
IGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09i
amVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWdu
ZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOworICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJ
RExJbnRlcmZhY2U8Tm9kZT47CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRo
aXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOworICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3Vs
dCkpCisgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50
YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3Vs
dCkgfTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9OworICAgIGlmIChhdXRv
IG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjpZZXM+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVy
dHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExJ
bnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC0+Z2xvYmFs
T2JqZWN0KCksIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIHNsb3Qu
c2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHNsb3QpOworfQorCit2b2lkIEpTVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBw
cm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhvYmplY3QsIGluZm8oKSk7CisgICAgZm9yIChhdXRvJiBwcm9wZXJ0
eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpKQor
ICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBwcm9w
ZXJ0eU5hbWUpKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworfQorCit0ZW1wbGF0ZTw+
IGlubGluZSBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBJRExPcGVyYXRpb248SlNUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdElucz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQoreworICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUg
anNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHBy
b3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3Rv
dHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZ
KCFwcm90b3R5cGUpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVz
dExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKK30KKworYm9vbCBz
ZXRKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
KyAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIHJl
dHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKK30KKworc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVG
dW5jdGlvbk5hbWVkSXRlbUJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQor
eworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgYXV0byBuYW1lID0g
Y29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFs
dWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLm5hbWVkSXRlbShXVEZNb3ZlKG5hbWUpKSkpKTsKK30K
KworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0ZW0oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz46OmNhbGw8anNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtQm9keT4oKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICJuYW1lZEl0ZW0iKTsKK30KKworSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNl
cygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHx8ICFKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zOjpuZWVkc0Rlc3RydWN0aW9uKTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjp2aXNp
dE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50
cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNw
YWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1
cm4gc3BhY2U7Cit9CisKK3ZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6YW5hbHl6
ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQoreworICAgIGF1dG8q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KGNlbGwp
OworICAgIGFuYWx5emVyLnNldFdyYXBwZWRPYmplY3RGb3JDZWxsKGNlbGwsICZ0aGlzT2JqZWN0
LT53cmFwcGVkKCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpCisgICAgICAgIGFuYWx5emVyLnNldExhYmVsRm9yQ2VsbChjZWxsLCAidXJsICIgKyB0aGlz
T2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVybCgpLnN0cmluZygpKTsKKyAgICBC
YXNlOjphbmFseXplSGVhcChjZWxsLCBhbmFseXplcik7Cit9CisKK2Jvb2wgSlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdEluc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6Okhh
bmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBj
b25zdCBjaGFyKiogcmVhc29uKQoreworICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOworICAgIFVO
VVNFRF9QQVJBTSh2aXNpdG9yKTsKKyAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc093bmVyOjpm
aW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkK
K3sKKyAgICBhdXRvKiBqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gc3RhdGljX2Nhc3Q8
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsK
KyAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0
KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMtPndyYXBwZWQoKSwganNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7Cit9CisKKyNpZiBF
TkFCTEUoQklORElOR19JTlRFR1JJVFkpCisjaWYgUExBVEZPUk0oV0lOKQorI3ByYWdtYSB3YXJu
aW5nKGRpc2FibGU6IDQ0ODMpCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lk
ZW50aWZpZXIoIj8/XzdUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0BXZWJDb3JlQEA2QkAiKVtd
KSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMjZU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0VbXTsgfQorI2VuZGlmCisjZW5kaWYKKworSlNDOjpK
U1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4mJiBp
bXBsKQoreworCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorICAgIGNvbnN0IHZvaWQq
IGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkpOworI2lm
IFBMQVRGT1JNKFdJTikKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50
aWZpZXIoIj8/XzdUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0BXZWJDb3JlQEA2QkAiKTsKKyNl
bHNlCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUyNlRl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRVsyXTsKKyNlbmRpZgorCisgICAgLy8gSWYgdGhpcyBm
YWlscyBUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBz
byB5b3UgbmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBh
dHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3BvbHltb3JwaGljPFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6dmFsdWUsICJU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyBpcyBub3QgcG9seW1vcnBoaWMiKTsKKworICAgIC8v
IElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZy
ZWUgYnVnLCBvcgorICAgIC8vIFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIGhhcyBzdWJjbGFz
c2VzLiBJZiBUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyBoYXMgc3ViY2xhc3NlcyB0aGF0IGdl
dCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMgeW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKKyAg
ICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUg
aW50ZXJmYWNlIElETCBkZWZpbml0aW9uCisgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxl
UG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOworI2VuZGlmCisgICAgcmV0dXJuIGNy
ZWF0ZVdyYXBwZXI8VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KGdsb2JhbE9iamVjdCwgV1RG
TW92ZShpbXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKGxleGlj
YWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK1Rlc3RMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zKiBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjp0b1dyYXBwZWQoSlND
OjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoYXV0byogd3JhcHBlciA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KHZtLCB2YWx1ZSkp
CisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOworICAgIHJldHVybiBudWxscHRy
OworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDk4IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBz
b3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiSlNET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIDogcHVibGljIEpTRE9N
V3JhcHBlcjxUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4geworcHVibGljOgorICAgIHVzaW5n
IEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OworICAgIHN0
YXRpYyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpCisgICAgeworICAgICAgICBKU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1v
dmUoaW1wbCkpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0o
KSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNPYmpl
Y3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBz
dGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVj
dCYpOworICAgIHN0YXRpYyBUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyogdG9XcmFwcGVkKEpT
Qzo6Vk0mLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1l
LCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIHZvaWQgZ2V0T3du
UHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRp
b25Nb2RlKCkpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKKworICAg
IERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFj
Y2Vzc29ycyk7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3Rv
cihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAo
bW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAg
fQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pOworICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5
emVyJik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0lt
cHVyZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxl
bmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcyB8
IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworcHJvdGVjdGVkOgorICAgIEpTVGVz
dExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVj
dCYsIFJlZjxUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4mJik7CisKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CisKK2NsYXNzIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAg
dmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImLCBjb25zdCBjaGFyKiop
OworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2
b2lkKiBjb250ZXh0KTsKK307CisKK2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBl
ck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKikKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc093
bmVyPiBvd25lcjsKKyAgICByZXR1cm4gJm93bmVyLmdldCgpOworfQorCitpbmxpbmUgdm9pZCog
d3JhcHBlcktleShUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyogd3JhcHBhYmxlT2JqZWN0KQor
eworICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKGxl
eGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsg
fQorSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmKTsKK2lu
bGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQ
dHI8VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRv
SlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJl
bGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBK
U0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHsK
KyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOwor
ICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyo7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2
aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MSw3ICsxNzEsNyBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5v
SWRlbnRpCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJl
c3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChh
dXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1
aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDAsNyArMjAwLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRl
cklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1
ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAg
ICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJv
cGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVk
UHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7
CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNyArMTcxLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRl
cklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1
ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAg
ICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJv
cGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVk
UHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7
CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjAwLDcgKzIwMCw3IEBAIGJv
b2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmcKICAgICAgICAgICAgIHJldHVy
biB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExU
eXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAg
ICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVn
YWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0g
dG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJv
cGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDcgKzE4MCw3IEBAIGJvb2wgSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW4KICAgICAgICAgICAgIHJldHVybiB0eXBlbmFt
ZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRy
YWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVO
YW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0
byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVy
dHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFs
dWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIwOSw3ICsyMDks
NyBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVuCiAgICAgICAgICAg
ICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0
dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkg
PSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3Ip
KSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2
YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShu
YW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNw
cAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2Miw3ICsxNjIsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6
Z2V0CiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50
YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3Vs
dCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRv
IG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0
aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zp
c2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsK
ICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRW
YWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTgzLDcg
KzE4Myw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpnZXQKICAgICAg
ICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUg
eyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9w
ZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVu
Y3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVk
UHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBh
dXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNP
YmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDUsNyArMjA1LDcgQEAg
Ym9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmRlbAogewogICAgIGF1dG8mIHRo
aXNPYmplY3QgPSAqanNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcio+KGNlbGwp
OwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBpZiAoaXNWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoaXNWaXNpYmxlTmFtZWRQ
cm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgcmV0dXJuIGltcGwuZGVsZXRl
TmFtZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICB9
CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIGJvb2wgSlNU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpkZWwKICAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4
KTsKLSAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKKyAgICBp
ZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAg
cmV0dXJuIGltcGwuZGVsZXRlTmFtZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKICAgICB9CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZp
c2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjIsNyArMTYyLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
bgogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQp
IH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBu
YW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGlu
czo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBn
ZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9i
YWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAg
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4Myw3ICsx
ODMsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uCiAgICAgICAg
ICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsg
R2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0
b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0
byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92
ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjA1LDcgKzIwNSw3IEBAIGJv
b2wgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24KIHsKICAgICBhdXRvJiB0aGlz
T2JqZWN0ID0gKmpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbio+KGNl
bGwpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBpZiAoaXNW
aXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoaXNWaXNpYmxlTmFt
ZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBp
bXBsLmRlbGV0ZU5hbWVkUHJvcGVydHkocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1l
KSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KSk7CkBAIC0yMjQsNyArMjI0LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbgogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIGlmIChpc1Zp
c2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkgeworICAgIGlmIChpc1Zpc2libGVOYW1l
ZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICBhdXRvIHJlc3VsdCA9IGlt
cGwuZGVsZXRlTmFtZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUp
KTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXI6OmcKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVG
cm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFBy
b3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdElu
czo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBn
ZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwog
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC0xODksNyArMTg5LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllcjo6ZwogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6Oklt
cGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJs
ZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBp
ZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJp
ZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVy
dHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBh
Y2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0
b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNs
b3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTIxMSw3ICsyMTEsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpk
CiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXIqPihjZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7Ci0gICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CisgICAg
aWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAg
IGltcGwubmFtZWREZWxldGVyKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yMjQsNyArMjI0LDcgQEAgYm9vbCBKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZAogICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgp
OwotICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkgeworICAgIGlm
IChpc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICBp
bXBsLm5hbWVkRGVsZXRlcihwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyNjY2MzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNyArMTcxLDcg
QEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcgogICAgICAgICAgICAg
cmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRl
cklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0g
YWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkg
eworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0
eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFs
dWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFt
ZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwg
dmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIwMCw3ICsyMDAsNyBAQCBib29sIEpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyCiAgICAgICAgICAgICByZXR1cm4gdHlw
ZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6
ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYg
KGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5
LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjI2LDcgKzIyNiw3IEBAIGJvb2wgSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAg
ICAgICAgIHJldHVybiAhaW1wbC5pc1N1cHBvcnRlZFByb3BlcnR5SW5kZXgoaW5kZXgudmFsdWUo
KSk7Ci0gICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CisgICAg
aWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAg
IHJldHVybiBpbXBsLmRlbGV0ZU5hbWVkUHJvcGVydHkocHJvcGVydHlOYW1lVG9TdHJpbmcocHJv
cGVydHlOYW1lKSk7CiAgICAgfQogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
Y2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNh
bGxXaXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHJldmlzaW9uIDI2NjYzNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdl
dHRlckNhbGxXaXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIGJvb2wg
SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6Z2V0T3duUHIKICAgICAgICAgICAgIHJldHVybiB0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBl
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zp
c2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBp
ZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVy
dHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBKU1Rlc3ROYW1l
ZEdldHRlckNhbGxXaXRoOjpnZXRPd25QcgogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdl
dHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RW
YWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVk
UHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhp
c09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5h
bWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgp
KSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVu
dGlmaWVyLmNwcAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50
aWZpZXI6OmdldE8KICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJ
bXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFi
bGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAg
aWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJy
aWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3Bl
cnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0g
YWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5j
dG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBz
bG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0xODMsNyArMTgzLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcjo6Z2V0
TwogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQp
IH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBu
YW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGlu
czo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBn
ZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9i
YWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAg
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9u
IDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDcg
KzE2OCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2UKICAgICAg
ICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUg
eyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9w
ZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVu
Y3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVk
UHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBh
dXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNP
YmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODksNyArMTg5LDcgQEAg
Ym9vbCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjpnZQogICAgICAgICAgICAgcmV0
dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklE
TFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNj
ZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewor
ICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUg
PSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQ
cm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFs
dWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlm
aWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIGJvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmdldE8KICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBH
ZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0
VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1l
ZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBu
YW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUo
KSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4Myw3ICsxODMsNyBA
QCBib29sIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZXRPCiAgICAgICAgICAgICBy
ZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVy
SURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBh
Y2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxH
bG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7
CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5
PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1
ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1l
ZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb246CiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6
SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxh
YmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAg
IGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVy
cmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9
IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVu
Y3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAg
c2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVl
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBKU1Rlc3RO
YW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1l
IEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJh
Y3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5h
bWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
dGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRv
IG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERP
TVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1
ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50
aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY2
NjM0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4
LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpnZQogICAgICAgICAg
ICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdl
dHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5
ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9y
KSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9w
ZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0
aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8g
dmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUo
bmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVj
dCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMTg5LDcgKzE4OSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cjo6Z2UKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1l
bnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVz
dWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1
dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVp
bHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFt
ZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNz
VmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkg
ewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNl
dFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDcgKzE4MCw3IEBAIGJvb2wgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjoKICAgICAgICAgICAgIHJldHVybiB0eXBl
bmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpl
eHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2li
bGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAo
YXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3Zl
cnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJv
cGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHku
dmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIwOSw3ICsy
MDksNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAgICAgICAg
ICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsg
R2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0
b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0
byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92
ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw3ICsxODAs
NyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBCiAgICAgICAgICAg
ICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0
dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkg
PSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3Ip
KSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2
YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShu
YW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0yMDksNyArMjA5LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVu
dGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1
bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0
byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWls
dGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
LCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NW
aXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxH
bG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7
CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0
VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0NTcgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcy5oIgorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisj
aW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCisjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJh
dGlvbnMuaCIKKyNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCisj
aW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9u
SGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9G
dW5jdGlvblByb3RvdHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXpl
ci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CisvLyBGdW5jdGlvbnMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0luc3RhbmNlRnVuY3Rp
b25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKKworLy8gQXR0cmlidXRlcworCitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citi
b29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Nv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVW5mb3JnZWFibGVBdHRyaWJ1dGUoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
KworY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6
CisgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlKiBj
cmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4g
cHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgfQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRl
OgorICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1By
b3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1
cmUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwor
fTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlOjpCYXNlKTsKKwordXNp
bmcgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3Ry
dWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+OworCisvKiBIYXNoIHRhYmxlICovCisK
K3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNUYWJsZUluZGV4WzRdID0geworICAgIHsgLTEs
IC0xIH0sCisgICAgeyAxLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAtMSB9LAor
fTsKKworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAidW5m
b3JnZWFibGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc1VuZm9yZ2VhYmxlQXR0cmlidXRlKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsg
InVuZm9yZ2VhYmxlT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVP
cGVyYXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCit9OworCitzdGF0aWMgY29uc3QgSGFzaFRh
YmxlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1RhYmxl
ID0geyAyLCAzLCB0cnVlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXM6OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzVGFibGVWYWx1ZXMsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc1RhYmxlSW5kZXggfTsKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9i
amVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3I6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
K3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpwcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlw
ZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Cit7Cisg
ICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IpIH0gfSwKK307CisKK2NvbnN0IENs
YXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c1Byb3RvdHlwZSkgfTsKKwordm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmluZm8oKSwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBl
VGFibGVWYWx1ZXMsICp0aGlzKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5T
SVRJT04oKTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllczo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNUYWJsZSwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMpIH07CisKK0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllczo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4mJiBpbXBsKQor
ICAgIDogSlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXM+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQoreworfQor
Cit2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAgc3RhdGljX2Fzc2VydCgh
c3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcz46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQg
YXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3Vi
Y2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7CisKK30KKworSlNPYmplY3QqIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6Y3JlYXRlUHJvdG90eXBlKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlOjpj
cmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpKTsKK30KKworSlNPYmplY3QqIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6cHJvdG90eXBl
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4g
Z2V0RE9NUHJvdG90eXBlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcz4odm0sIGdsb2JhbE9iamVjdCk7Cit9CisKK0pTVmFsdWUgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0s
IGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERP
TUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOworfQorCit2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllczo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqIHRoaXNPYmplY3Qg
PSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6On5KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXMoKTsKK30KKworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2Jq
ZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
Kj4ob2JqZWN0KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7CisgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKKyAgICBhdXRv
IGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUp
IC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4g
eworICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShw
cm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgICAgIGlmICghR2V0
dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiB0eXBl
bmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpl
eHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OworICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIH07CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2li
bGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAg
ICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30K
KworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6
OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbSh2bSwgaW5kZXgpOworICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01T
dHJpbmc7CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1
dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBs
ZW1lbnRhdGlvblR5cGU+IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwor
ICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCisgICAgICAg
ICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsg
R2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9OworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpO
bz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRl
ckZ1bmN0b3IpKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2
YWx1ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gSlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBp
bmRleCwgc2xvdCk7Cit9CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit7CisgICAgVk0mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+KG9iamVj
dCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhvYmplY3QsIGluZm8oKSk7CisgICAg
Zm9yIChhdXRvJiBwcm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVk
UHJvcGVydHlOYW1lcygpKQorICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUp
OworfQorCitib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllczo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYgcHV0UHJvcGVydHlTbG90KQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKj4oY2VsbCk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisg
ICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgeworICAgICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpIH07CisgICAgICAgIEpTVmFsdWUgcHJv
dG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCkpOworICAgICAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0
KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5
LnJlc2V0KCk7CisgICAgICAgIGlmICghZm91bmQpIHsKKyAgICAgICAgICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KSk7CisgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHRydWUpOworICAgICAgICAgICAgdGhpc09iamVjdC0+d3JhcHBl
ZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7Cit9CisKK2Jv
b2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpwdXRC
eUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQoreworICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXMqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20o
dm0sIGluZGV4KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSB9OworICAgIEpTVmFsdWUg
cHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKKyAgICBib29s
IGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0
UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICBpZiAoIWZvdW5kKSB7CisgICAg
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKKyAgICAgICAgdGhpc09iamVjdC0+d3Jh
cHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IHJldHVybiBKU09iamVjdDo6cHV0QnlJbmRleChjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBp
bmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKK30KKworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIHByb3BlcnR5RGVzY3Jp
cHRvciwgYm9vbCBzaG91bGRUaHJvdykKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+KG9iamVj
dCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwor
CisgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgeworc3RhdGljIGJvb2wgaXNMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnR5TmFtZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorewor
ICAgIHJldHVybiBwcm9wZXJ0eU5hbWUgPT0gInVuZm9yZ2VhYmxlQXR0cmlidXRlIiB8fCBwcm9w
ZXJ0eU5hbWUgPT0gInVuZm9yZ2VhYmxlT3BlcmF0aW9uIjsKK30KKworICAgICAgICBpZiAoIWlz
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkgeworICAgICAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9OworICAg
ICAgICAgICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09i
amVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAg
ICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgICAgICAgICBpZiAoIWZvdW5k
KSB7CisgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVzY3Jp
cHRvcigpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eURlc2NyaXB0
b3IudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc2V0TmFt
ZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKworICAgIFByb3BlcnR5RGVzY3JpcHRvciBuZXdQcm9wZXJ0eURlc2Ny
aXB0b3IgPSBwcm9wZXJ0eURlc2NyaXB0b3I7CisgICAgbmV3UHJvcGVydHlEZXNjcmlwdG9yLnNl
dENvbmZpZ3VyYWJsZSh0cnVlKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlZmluZU93blByb3Bl
cnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBuZXdQcm9wZXJ0
eURlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKiBJRExBdHRyaWJ1dGU8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPjo6Y2FzdChK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlKQoreworICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cit9CisKK3RlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyogSURMT3Bl
cmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz46
OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2Fs
bEZyYW1lKQoreworICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcihK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQorICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOworfQorCitib29sIHNl
dEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVj
dG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90
eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFko
IXByb3RvdHlwZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBT
aGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIHJldHVybiBwcm90b3R5cGUtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1VuZm9yZ2VhYmxlQXR0cmlidXRl
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMmIHRoaXNPYmplY3QpCit7CisgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC51
bmZvcmdlYWJsZUF0dHJpYnV0ZSgpKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNVbmZvcmdlYWJsZUF0dHJpYnV0
ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+OjpnZXQ8anNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVW5mb3JnZWFibGVBdHRyaWJ1
dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJ1bmZvcmdlYWJsZUF0dHJpYnV0ZSIpOworfQorCitzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uQm9k
eShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFt
ZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykK
K3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7
CisgICAgaW1wbC51bmZvcmdlYWJsZU9wZXJhdGlvbigpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzSW5zdGFuY2VG
dW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz46OmNhbGw8
anNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzSW5zdGFuY2VG
dW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YWxsRnJhbWUsICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiIpOworfQorCitKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OnN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2Vz
ID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXMuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6bmVlZHNEZXN0cnVjdGlvbik7CisgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+KQorICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyk7CisgICAgZWxzZQorICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjp2aXNpdE91dHB1
dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAg
ICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsK
K0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3Bh
Y2U7Cit9CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIp
Cit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqPihjZWxsKTsKKyAgICBhbmFseXplci5zZXRXcmFw
cGVkT2JqZWN0Rm9yQ2VsbChjZWxsLCAmdGhpc09iamVjdC0+d3JhcHBlZCgpKTsKKyAgICBpZiAo
dGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICBhbmFseXplci5z
ZXRMYWJlbEZvckNlbGwoY2VsbCwgInVybCAiICsgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT51cmwoKS5zdHJpbmcoKSk7CisgICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwg
YW5hbHl6ZXIpOworfQorCitib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25z
dCBjaGFyKiogcmVhc29uKQoreworICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOworICAgIFVOVVNF
RF9QQVJBTSh2aXNpdG9yKTsKKyAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxl
LCB2b2lkKiBjb250ZXh0KQoreworICAgIGF1dG8qIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcyA9IHN0YXRpY19jYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsK
KyAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0
KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcy0+d3JhcHBlZCgpLCBqc1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5U
RUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgz
KQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0BXZWJDb3JlQEA2QkAi
KVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3Jl
NDZUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzRVtdOyB9Cisj
ZW5kaWYKKyNlbmRpZgorCitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+JiYgaW1wbCkKK3sKKworI2lm
IEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICBjb25zdCB2b2lkKiBhY3R1YWxWVGFibGVQ
b2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKKyNpZiBQTEFURk9STShXSU4p
CisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/P183VGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0BXZWJDb3JlQEA2QkAi
KTsKKyNlbHNlCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNv
cmU0NlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNFWzJdOwor
I2VuZGlmCisKKyAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXMgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQg
dG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRv
IHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5
bW9ycGhpYzxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPjo6
dmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzIGlz
IG5vdCBwb2x5bW9ycGhpYyIpOworCisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5
b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8gVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyBoYXMgc3ViY2xhc3Nlcy4gSWYg
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyBoYXMgc3ViY2xh
c3NlcyB0aGF0IGdldCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVp
cmUgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyB5b3UgdG8g
b3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZworICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZU
YWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24K
KyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxl
UG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPihnbG9iYWxPYmplY3QsIFdURk1vdmUo
aW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzJiBpbXBsKQoreworICAgIHJl
dHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisK
K1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6dG9XcmFwcGVkKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllcyo+KHZtLCB2YWx1ZSkpCisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwor
ICAgIHJldHVybiBudWxscHRyOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
cy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBi
ZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlRl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaCIKKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgOiBwdWJsaWMg
SlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXM+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+OworICAgIHN0YXRpYyBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqIGNyZWF0ZShKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4mJiBpbXBsKQor
ICAgIHsKKyAgICAgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4oZ2xvYmFsT2JqZWN0LT52bSgp
LmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMo
c3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5m
aW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICByZXR1cm4gcHRyOwor
ICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpW
TSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3Rv
dHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyogdG9XcmFwcGVkKEpTQzo6Vk0m
LCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6
OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVy
dHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVy
dHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2Rl
KCkpOworICAgIHN0YXRpYyBib29sIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xv
dCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpOworICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIGNvbnN0IEpTQzo6
UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3Mg
bW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQor
ICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6
OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1
cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CisgICAgc3RhdGljIHZvaWQgYW5hbHl6
ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlND
OjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlT
bG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNBbnlGb3Jt
T2ZHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBK
U0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKK3Byb3RlY3RlZDoKKyAgICBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMoSlNDOjpTdHJ1Y3R1cmUqLCBK
U0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzPiYmKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwor
fTsKKworY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIHZp
cnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJiwgY29uc3QgY2hhcioqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9p
ZCogY29udGV4dCk7Cit9OworCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJP
d25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzKikKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzT3duZXI+IG93bmVyOworICAgIHJl
dHVybiAmb3duZXIuZ2V0KCk7Cit9CisKK2lubGluZSB2b2lkKiB3cmFwcGVyS2V5KFRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqIHdyYXBwYWJsZU9iamVjdCkK
K3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllcyogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4aWNhbEdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9CitKU0M6OkpTVmFsdWUg
dG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3Qq
LCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4mJik7
CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmUHRyPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+JiYg
aW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsg
fQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4geworICAgIHVzaW5nIFdy
YXBwZXJDbGFzcyA9IEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllczsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzOCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBi
ZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oIgorCisj
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgi
CisjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0RPTUF0
dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5n
cy5oIgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RP
TU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2Vi
Q29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCisvLyBGdW5jdGlvbnMKKworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNJbnN0YW5jZUZ1bmN0aW9u
VW5mb3JnZWFibGVPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CisKKy8vIEF0dHJpYnV0ZXMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9y
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1VuZm9yZ2VhYmxl
QXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CisKK2NsYXNzIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUgZmluYWwg
OiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNl
ID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJv
dG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5G
TzsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4K
KyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisg
ICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU0M6OkpTTm9uRmlu
YWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihKU0M6OlZNJik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6
QmFzZSk7CisKK3VzaW5nIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OworCisvKiBIYXNoIHRhYmxl
ICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zVGFibGVJbmRleFs0XSA9IHsKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMSwgLTEgfSwKKyAg
ICB7IC0xLCAtMSB9LAorICAgIHsgMCwgLTEgfSwKK307CisKKworc3RhdGljIGNvbnN0IEhhc2hU
YWJsZVZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJ1bmZv
cmdlYWJsZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1VuZm9yZ2VhYmxl
QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oMCkgfSB9LAorICAgIHsgInVuZm9yZ2VhYmxlT3BlcmF0aW9uIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9u
KSwgKGludHB0cl90KSAoMCkgfSB9LAorfTsKKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zVGFibGUgPSB7IDIsIDMsIHRydWUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmluZm8o
KSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc1RhYmxlVmFsdWVzLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zVGFibGVJbmRl
eCB9OwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rvcjo6cHJv
dG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGdsb2Jh
bE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2
aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOworfQorCit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3Ry
dWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZVRhYmxlVmFsdWVzW10g
PQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH0gfSwKK307CisKK2NvbnN0IENs
YXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dElucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSkgfTsKKwordm9pZCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
czo6aW5mbygpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsK
KyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwg
JkJhc2U6OnNfaW5mbywgJkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKSB9OworCitKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+JiYgaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBl
cjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdElucz4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkp
Cit7Cit9CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQor
eworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0s
IGluZm8oKSkpOworCisgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURP
TU9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+Ojp2YWx1ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2Vk
IGFzIFtBY3RpdmVET01PYmplY3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1
YmNsYXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIpOworCit9CisKK0pTT2JqZWN0KiBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQoreworICAgIHJldHVybiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpjcmVhdGUo
dm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7
Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Qcm90b3R5
cGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucz4odm0sIGdsb2JhbE9iamVjdCk7Cit9CisKK0pTVmFsdWUgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdEluczo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6ZGVzdHJveShK
U0M6OkpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiB0aGlzT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnM6On5KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKCk7Cit9CisKK2Jvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zKj4ob2JqZWN0KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CisgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsK
KyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9w
ZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZT4geworICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgICAg
IGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKKyAgICAgICAgICAgIHJl
dHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJ
RExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OworICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIH07CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFj
Y2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Olllcz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0
b3IpKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIHNs
b3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOworICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExE
T01TdHJpbmc7CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3Qs
IGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJ
bXBsZW1lbnRhdGlvblR5cGU+IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkp
OworICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCisgICAg
ICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBl
IHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9OworICAgIGlmIChhdXRvIG5hbWVkUHJv
cGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
OjpZZXM+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBn
ZXR0ZXJGdW5jdG9yKSkgeworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwor
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigw
KSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIEpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgaW5kZXgsIHNsb3QpOworfQorCit2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwor
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhvYmplY3QsIGluZm8oKSk7CisgICAgZm9y
IChhdXRvJiBwcm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVkUHJv
cGVydHlOYW1lcygpKQorICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwor
fQorCitib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFByb3BlcnR5U2xvdCkKK3sKKyAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihjZWxsKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBpZiAoIXBy
b3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CisgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0
cnVlKTsKKyAgICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0
eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNP
YmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3Bl
cnR5U2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6cHV0QnlJbmRleChKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRl
eCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdElucyo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2
bSwgaW5kZXgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CisgICAgdGhpc09iamVjdC0+d3Jh
cHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluczo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNv
bnN0IFByb3BlcnR5RGVzY3JpcHRvciYgcHJvcGVydHlEZXNjcmlwdG9yLCBib29sIHNob3VsZFRo
cm93KQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+
KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpOworCisgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgeworc3RhdGljIGJvb2wg
aXNMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnR5TmFtZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQoreworICAgIHJldHVybiBwcm9wZXJ0eU5hbWUgPT0gInVuZm9yZ2VhYmxlQXR0cmlidXRlIiB8
fCBwcm9wZXJ0eU5hbWUgPT0gInVuZm9yZ2VhYmxlT3BlcmF0aW9uIjsKK30KKworICAgICAgICBp
ZiAoIWlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkgeworICAg
ICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Cisg
ICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eURlc2NyaXB0b3IudmFsdWUoKSk7CisgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOworICAgICAgICAgICAgdGhp
c09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9w
ZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFByb3BlcnR5RGVzY3JpcHRvciBuZXdQcm9wZXJ0
eURlc2NyaXB0b3IgPSBwcm9wZXJ0eURlc2NyaXB0b3I7CisgICAgbmV3UHJvcGVydHlEZXNjcmlw
dG9yLnNldENvbmZpZ3VyYWJsZSh0cnVlKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBuZXdQ
cm9wZXJ0eURlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdElucyogSURMQXR0cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OjpjYXN0KEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUpCit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIElETE9wZXJhdGlvbjxK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdElucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJh
bWUudGhpc1ZhbHVlKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOworfQorCitib29s
IHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBh
dXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUq
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghcHJv
dG90eXBlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIC8vIFNoYWRv
d2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSkpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
c1VuZm9yZ2VhYmxlQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zJiB0aGlzT2JqZWN0KQoreworICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExET01T
dHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudW5mb3JnZWFibGVB
dHRyaWJ1dGUoKSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1VuZm9y
Z2VhYmxlQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OjpnZXQ8anNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1VuZm9yZ2VhYmxl
QXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidW5mb3JnZWFibGVBdHRyaWJ1dGUiKTsKK30KKwor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNJbnN0YW5j
ZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykK
K3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7
CisgICAgaW1wbC51bmZvcmdlYWJsZU9wZXJhdGlvbigpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdEluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7
CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6Y2FsbDxqc1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uQm9keT4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiIpOworfQor
CitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpzdWJzcGFjZUZvckltcGwoSlND
OjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xp
ZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEu
c3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucz4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOworICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucz4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5nZXQoKTsKK0lHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnZp
c2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFp
bnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQo
c3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJl
dHVybiBzcGFjZTsKK30KKwordm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjphbmFseXplSGVhcChKU0Nl
bGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCit7CisgICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4oY2VsbCk7CisgICAgYW5hbHl6ZXIuc2V0V3Jh
cHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQoKSk7CisgICAgaWYg
KHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgYW5hbHl6ZXIu
c2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGws
IGFuYWx5emVyKTsKK30KKworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zT3duZXI6OmlzUmVhY2hhYmxl
RnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFzb24pCit7CisgICAgVU5VU0VE
X1BBUkFNKGhhbmRsZSk7CisgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOworICAgIFVOVVNFRF9Q
QVJBTShyZWFzb24pOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiBjb250ZXh0KQoreworICAgIGF1dG8qIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBzdGF0aWNfY2FzdDxK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOworICAgIGF1dG8mIHdv
cmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOworICAgIHVuY2Fj
aGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy0+d3JhcHBlZCgpLCBqc1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zKTsKK30KKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyNpZiBQTEFURk9S
TShXSU4pCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKK2V4dGVybiAiQyIgeyBleHRl
cm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQFdlYkNvcmVA
QDZCQCIpW10pKCk7IH0KKyNlbHNlCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dl
YkNvcmU3MVRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zRVtdOyB9CisjZW5kaWYKKyNlbmRpZgorCitKU0M6OkpTVmFs
dWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpCit7CisKKyNpZiBF
TkFCTEUoQklORElOR19JTlRFR1JJVFkpCisgICAgY29uc3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9p
bnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7CisjaWYgUExBVEZPUk0oV0lOKQor
ICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRpZmllcigiPz9fN1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zQFdlYkNvcmVAQDZCQCIpOworI2Vsc2UKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJs
ZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTcxVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNFWzJdOworI2VuZGlmCisK
KyAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIGRvZXMgbm90IGhhdmUgYSB2dGFi
bGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKKyAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRh
YmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KKyAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+Ojp2YWx1ZSwgIlRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zIGlzIG5vdCBwb2x5bW9ycGhpYyIpOworCisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFz
c2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8g
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIGhhcyBzdWJj
bGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAorICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVx
dWlyZSBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucyB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZwor
ICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRo
ZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFi
bGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1cm4g
Y3JlYXRlV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwp
KTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMmIGltcGwpCit7CisgICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LCBpbXBsKTsKK30KKworVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnRv
V3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmIChhdXRv
KiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4odm0sIHZhbHVlKSkK
KyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJl
ZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIDogcHVibGljIEpTRE9NV3Jh
cHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucz4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdy
YXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnM+OworICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBjcmVh
dGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpCisgICAgeworICAgICAgICBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyhzdHJ1
Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBwdHItPmZpbmlz
aENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAg
fQorCisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwg
SlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBl
KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9
IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOworICAgIHN0YXRpYyBib29sIHB1dChKU0M6OkpTQ2Vs
bCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVl
LCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlND
OjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIGNvbnN0IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJv
dyk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVDTEFS
RV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3Jz
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6
Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUs
IEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09
IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7Cisg
ICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlIHwg
SlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNBbnlG
b3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKK3Byb3RlY3RlZDoKKyAgICBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM+JiYpOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9Owor
CitjbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3du
ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNp
dG9yJiwgY29uc3QgY2hhcioqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Cit9OworCitpbmxpbmUgSlNDOjpXZWFr
SGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyopCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNPd25lcj4g
b3duZXI7CisgICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30KKworaW5saW5lIHZvaWQqIHdyYXBw
ZXJLZXkoVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMqIHdyYXBwYWJsZU9iamVjdCkKK3sKKyAgICByZXR1cm4gd3Jh
cHBhYmxlT2JqZWN0OworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyYpOworaW5saW5lIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBpbXBsKSB7IHJldHVy
biBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6
IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4mJik7
CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmUHRyPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlD
cmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9u
TnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KKwordGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFw
cGVyQ29udmVydGVyVHJhaXRzPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiB7CisgICAgdXNpbmcgV3JhcHBlckNs
YXNzID0gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluczsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0g
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMqOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
LmNwcAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3BwCShub25l
eGlzdGVudCkKQEAgLTEsMzY3ICswLDAgQEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnMuaCIKLQotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkRP
TUlzb1N1YnNwYWNlcy5oIgotI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiCi0j
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGUuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCi0jaW5jbHVk
ZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgotI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkNv
cmVKU0NsaWVudERhdGEuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci11c2luZyBuYW1lc3BhY2UgSlNDOwotCi0vLyBBdHRyaWJ1
dGVzCi0KLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVC
dWlsdGluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92
ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Ci0KLWNsYXNzIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05v
bkZpbmFsT2JqZWN0IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFs
T2JqZWN0OwotICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBKU1Rlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnNQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7Ci0gICAgICAgIHB0ci0+
ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQotICAgIERF
Q0xBUkVfSU5GTzsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFj
ZUFjY2Vzcz4KLSAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCi0gICAgewotICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwotICAgIH0KLSAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmpl
Y3Qodm0sIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0M6OlZNJik7Ci19OwotU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6QmFzZSk7Ci0KLXVzaW5nIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnM+OwotCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVC
dWlsdGluc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgVU5VU0VEX1BBUkFN
KHZtKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Ci19Ci0K
LXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKLXsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlu
cyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci19Ci0KLXRlbXBsYXRlPD4gY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcikgfTsKLQotLyogSGFzaCB0
YWJsZSBmb3IgcHJvdG90eXBlICovCi0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rl
c3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9
Ci17Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aE92
ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnNDb25zdHJ1Y3RvcikgfSB9LAotfTsKLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zUHJvdG90eXBlKSB9OwotCi12b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJy
aWRlQnVpbHRpbnNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjppbmZvKCksIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAg
IEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwotfQotCi1jb25zdCBDbGFz
c0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6c19pbmZvID0geyAi
VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92
ZXJyaWRlQnVpbHRpbnMpIH07Ci0KLUpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnM6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4mJiBpbXBsKQotICAgIDogSlNET01XcmFwcGVyPFRlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSkKLXsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwotICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0KLSAgICBzdGF0
aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQg
YXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3Vi
Y2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7Ci0KLX0KLQotSlNPYmplY3QqIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVj
dCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBl
KCkpKTsKLX0KLQotSlNPYmplY3QqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnM6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17
Ci0gICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zPih2bSwgZ2xvYmFsT2JqZWN0KTsKLX0KLQotSlNWYWx1ZSBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVj
dG9yPEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKLX0KLQot
dm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpkZXN0cm95KEpTQzo6
SlNDZWxsKiBjZWxsKQotewotICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zKj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+SlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGluczo6fkpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMo
KTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnMqPihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9N
U3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBh
dXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1w
bGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFw
cGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
LSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAg
ICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7
IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3Bl
cnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6WWVzPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVu
Y3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKLSAgICAgICAg
c2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVl
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBz
bG90KQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0g
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7Ci0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
KHZtLCBpbmRleCk7Ci0gICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAg
ICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0
eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9u
VHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVk
SXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlm
ICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVy
biB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExU
eXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Olllcz4oKmxleGljYWxHbG9i
YWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0g
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7Ci0gICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgc2xvdCk7Ci19
Ci0KLXZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZSBtb2RlKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKG9i
amVjdCwgaW5mbygpKTsKLSAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6IHRoaXNPYmplY3Qt
PndyYXBwZWQoKS5zdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkpCi0gICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHByb3BlcnR5TmFtZSkpOwotICAgIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lcywgbW9kZSk7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGluczo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgcHV0UHJvcGVydHlTbG90KQotewotICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyo+KGNlbGwpOwot
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLQotICAg
IGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsK
LSAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHRydWUpOwotICAgICAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc2V0TmFtZWRJdGVt
KHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIEpTT2JqZWN0Ojpw
dXQodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
cHV0UHJvcGVydHlTbG90KTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sKQotewot
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
Kj4oY2VsbCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpOwotCi0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRl
eCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7Ci0gICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKLSAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCku
c2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2Jq
ZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBwcm9wZXJ0eURlc2NyaXB0b3Is
IGJvb2wgc2hvdWxkVGhyb3cpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rl
c3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0KLSAgICBpZiAoIXByb3Bl
cnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlz
RGF0YURlc2NyaXB0b3IoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpKTsKLSAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3Ry
aW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlEZXNjcmlwdG9yLnZhbHVlKCkpOwot
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwotICAgICAgICB0
aGlzT2JqZWN0LT53cmFwcGVkKCkuc2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHBy
b3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgUHJvcGVydHlEZXNjcmlwdG9yIG5ld1Byb3BlcnR5RGVzY3JpcHRvciA9
IHByb3BlcnR5RGVzY3JpcHRvcjsKLSAgICBuZXdQcm9wZXJ0eURlc2NyaXB0b3Iuc2V0Q29uZmln
dXJhYmxlKHRydWUpOwotICAgIHJldHVybiBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkob2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG5ld1Byb3BlcnR5RGVzY3Jp
cHRvciwgc2hvdWxkVGhyb3cpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewot
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBl
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJv
dG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtF
TFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwot
fQotCi1ib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0g
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBl
KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSkpOwotfQotCi1KU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCi17Ci0gICAgYXV0byYg
Y2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEp
OwotICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Ci0gICAgaWYgKGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJp
ZGVCdWlsdGlucy5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aE92
ZXJyaWRlQnVpbHRpbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwotICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMpOwotICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGlucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnMpOwotICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5nZXQoKTsKLUlHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCi1JR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKLSAgICBpZiAoJkpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJy
aWRlQnVpbHRpbnM6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNp
dE91dHB1dENvbnN0cmFpbnRzKQotICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRT
cGFjZXMoKS5hcHBlbmQoc3BhY2UpOwotSUdOT1JFX1dBUk5JTkdTX0VORAotSUdOT1JFX1dBUk5J
TkdTX0VORAotICAgIHJldHVybiBzcGFjZTsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXpl
ciYgYW5hbHl6ZXIpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKj4oY2VsbCk7Ci0gICAgYW5hbHl6ZXIuc2V0V3Jh
cHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQoKSk7Ci0gICAgaWYg
KHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgYW5hbHl6ZXIu
c2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOwotICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGws
IGFuYWx5emVyKTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiBy
ZWFzb24pCi17Ci0gICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZp
c2l0b3IpOwotICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOwotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zT3duZXI6OmZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQotewot
ICAgIGF1dG8qIGpzVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMgPSBzdGF0aWNf
Y2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKj4oaGFuZGxlLnNsb3Qo
KS0+YXNDZWxsKCkpOwotICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJX
b3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0TmFtZWRT
ZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy0+d3JhcHBlZCgpLCBqc1Rlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zKTsKLX0KLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkK
LSNpZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKLWV4dGVy
biAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KLSNlbHNlCi1l
eHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUzNVRlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zRVtdOyB9Ci0jZW5kaWYKLSNlbmRpZgotCi1KU0M6OkpTVmFsdWUg
dG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPiYm
IGltcGwpCi17Ci0KLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0gICAgY29uc3Qgdm9p
ZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7Ci0j
aWYgUExBVEZPUk0oV0lOKQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRl
bnRpZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQFdlYkNvcmVA
QDZCQCIpOwotI2Vsc2UKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43
V2ViQ29yZTM1VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNFWzJdOwotI2VuZGlm
Ci0KLSAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKLSAgICAv
LyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRl
ZmluaXRpb24KLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+Ojp2YWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zIGlzIG5vdCBwb2x5bW9ycGhpYyIpOwotCi0gICAgLy8gSWYgeW91IGhp
dCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9y
Ci0gICAgLy8gVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMgaGFzIHN1YmNsYXNz
ZXMuIElmIFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIGhhcyBzdWJjbGFzc2Vz
IHRoYXQgZ2V0IHBhc3NlZAotICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBU
ZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyB5b3UgdG8gb3B0IG91dCBvZiBiaW5k
aW5nIGhhcmRlbmluZwotICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24g
YXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KLSAgICBSRUxFQVNFX0FT
U0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7Ci0jZW5k
aWYKLSAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVC
dWlsdGlucz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnMmIGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LCBpbXBsKTsKLX0KLQotVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMq
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OnRvV3JhcHBlZChKU0M6OlZN
JiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKj4odm0sIHZh
bHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIG51
bGxwdHI7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJy
aWRlQnVpbHRpbnMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwMSArMCwwIEBACi0vKgotICAgIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgICBU
aGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBO
T1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0g
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSlNET01XcmFwcGVyLmgi
Ci0jaW5jbHVkZSAiVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaCIKLSNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIDogcHVibGljIEpTRE9NV3Jh
cHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4gewotcHVibGljOgotICAg
IHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVp
bHRpbnM+OwotICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPiYmIGlt
cGwpCi0gICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVy
V2l0aE92ZXJyaWRlQnVpbHRpbnM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdU
Rk1vdmUoaW1wbCkpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+
dm0oKSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKLSAg
ICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9i
amVjdCYpOwotICAgIHN0YXRpYyBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyog
dG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwotICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGlj
IHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpT
Qzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0YXRpYyBib29sIHB1dChKU0M6OkpTQ2VsbCos
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBK
U0M6OlB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDOjpK
U0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6
OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyBib29sIGRlZmluZU93blBy
b3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIGNvbnN0IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7
Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwotCi0gICAgREVDTEFSRV9J
TkZPOwotCi0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0m
LCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpT
Qzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQotICAgIHsKLSAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpT
Qzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKLSAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKLSAgICB9Ci0gICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7Ci0gICAg
c3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlIHwgSlND
OjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3Ra
ZXJvIHwgSlNDOjpPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsK
LXByb3RlY3RlZDoKLSAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKEpT
Qzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnM+JiYpOwotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZN
Jik7Ci19OwotCi1jbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zT3du
ZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewotcHVibGljOgotICAgIHZpcnR1YWwg
Ym9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJiwgY29uc3QgY2hhcioqKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29u
dGV4dCk7Ci19OwotCi1pbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihE
T01XcmFwcGVyV29ybGQmLCBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyopCi17
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnNPd25lcj4gb3duZXI7Ci0gICAgcmV0dXJuICZvd25lci5nZXQoKTsKLX0KLQotaW5s
aW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMq
IHdyYXBwYWJsZU9iamVjdCkKLXsKLSAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OwotfQotCi1K
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3Qq
LCBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyYpOwotaW5saW5lIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1
aWx0aW5zKiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KLUpTQzo6SlNWYWx1ZSB0b0pT
TmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJl
ZjxUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4mJik7Ci1pbmxpbmUgSlNDOjpK
U1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPFRlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pT
TmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxl
YXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSlNE
T01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zPiB7Ci0gICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGluczsKLSAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMqOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXMuY3BwCShub25leGlzdGVudCkKQEAgLTEsNDU3ICswLDAgQEAKLS8qCi0g
ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0Lgot
ICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwu
IERPIE5PVCBNT0RJRlkhCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmgiCi0KLSNpbmNsdWRlICJBY3Rp
dmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKLSNpbmNsdWRlICJK
U0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCi0j
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGUuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCi0jaW5jbHVk
ZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgotI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgi
Ci0jaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSGVhcEFuYWx5emVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+Ci0j
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+Ci0jaW5jbHVkZSA8d3RmL1VSTC5oPgotCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5n
IG5hbWVzcGFjZSBKU0M7Ci0KLS8vIEZ1bmN0aW9ucwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0
YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7Ci0KLS8vIEF0dHJpYnV0ZXMKLQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
Ci1ib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3Ry
dWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc1VuZm9yZ2VhYmxlQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci0KLWNsYXNzIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlIGZpbmFsIDog
cHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9
IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAg
ICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJv
dG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNQcm90b3R5cGUodm0sIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAg
ICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgREVDTEFSRV9JTkZPOwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgotICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAgICB7Ci0gICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOwotICAgIH0KLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZv
KEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1Byb3Rv
dHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCi0gICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUp
Ci0gICAgewotICAgIH0KLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotfTsK
LVNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc1Byb3RvdHlwZTo6QmFzZSk7Ci0KLXVzaW5nIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
cz47Ci0KLS8qIEhhc2ggdGFibGUgKi8KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFz
aEluZGV4IEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzVGFibGVJbmRl
eFs0XSA9IHsKLSAgICB7IC0xLCAtMSB9LAotICAgIHsgMSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9
LAotICAgIHsgMCwgLTEgfSwKLX07Ci0KLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzVGFibGVWYWx1ZXNbXSA9Ci17
Ci0gICAgeyAidW5mb3JnZWFibGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzVW5mb3JnZWFibGVBdHRyaWJ1dGUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0g
ICAgeyAidW5mb3JnZWFibGVPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3Bl
cmF0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAotfTsKLQotc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1RhYmxlID0geyAyLCAz
LCB0cnVlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6aW5mbygp
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1RhYmxlVmFsdWVzLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1RhYmxlSW5kZXggfTsKLXRl
bXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHZtKTsK
LSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Ci19Ci0KLXRlbXBs
YXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCi17Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpwcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUs
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllcyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci19Ci0KLXRlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllcyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3Rv
cikgfTsKLQotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCi0KLXN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1By
b3RvdHlwZVRhYmxlVmFsdWVzW10gPQotewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcikgfSB9LAot
fTsKLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90
eXBlKSB9OwotCi12b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwotICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIEpT
Q19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwotfQotCi1jb25zdCBDbGFzc0lu
Zm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OnNfaW5mbyA9IHsg
IlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyIsICZCYXNlOjpzX2luZm8s
ICZKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1RhYmxlLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzKSB9OwotCi1KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+JiYgaW1wbCkKLSAgICA6IEpTRE9NV3JhcHBlcjxU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+KHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKQotewotfQotCi12b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7
Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+Ojp2YWx1ZSwgIkludGVyZmFj
ZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVu
dGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIpOwotCi19Ci0KLUpTT2Jq
ZWN0KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6Y3JlYXRlUHJv
dG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICBy
ZXR1cm4gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Ci19Ci0KLUpTT2JqZWN0KiBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6cHJvdG90eXBlKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1cm4gZ2V0RE9NUHJvdG90
eXBlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPih2bSwgZ2xvYmFs
T2JqZWN0KTsKLX0KLQotSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllczo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQotewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwotfQotCi12b2lkIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBj
ZWxsKQotewotICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKiB0
aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXMqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT5KU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllczo6fkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzKCk7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihvYmplY3QpOwotICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICB1c2luZyBHZXR0ZXJJ
RExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRv
JiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0
dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0g
dGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShy
ZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxl
bWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShy
ZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKLSAgICBpZiAo
YXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVC
dWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUo
KSkpOwotICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPigwKSwgdmFsdWUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJu
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotfQotCi1ib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBv
YmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRl
eCwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyo+KG9iamVjdCk7Ci0gICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIHVzaW5nIEdldHRlcklETFR5
cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRo
aXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3Vs
dCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50
YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3Vs
dCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OwotICAgIGlmIChhdXRv
IG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0
aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7
Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KDApLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gSlNP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBpbmRleCwgc2xvdCk7Ci19Ci0KLXZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9w
ZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihvYmplY3QpOwotICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMob2JqZWN0LCBpbmZvKCkpOwotICAgIGZvciAoYXV0
byYgcHJvcGVydHlOYW1lIDogdGhpc09iamVjdC0+d3JhcHBlZCgpLnN1cHBvcnRlZFByb3BlcnR5
TmFtZXMoKSkKLSAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgcHJvcGVydHlOYW1lKSk7Ci0gICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKLX0KLQot
Ym9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6cHV0KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0UHJvcGVy
dHlTbG90KQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihjZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0KLSAgICBpZiAoIXByb3BlcnR5TmFtZS5p
c1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxP
YmplY3QtPnZtKCkgfTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5n
ZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAg
ICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5
cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKLSAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKLSAgICAgICAgaWYg
KCFmb3VuZCkgewotICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICAgICAgICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1
ZSk7Ci0gICAgICAgICAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc2V0TmFtZWRJdGVtKHByb3Bl
cnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIEpT
T2JqZWN0OjpwdXQodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllczo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1
ZSwgYm9vbCBzaG91bGRUaHJvdykKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihjZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0KLSAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7
IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnks
ICZ2bSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBl
RGlyZWN0KHZtKTsKLSAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNP
YmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKLSAg
ICBpZiAoIWZvdW5kKSB7Ci0gICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKLSAg
ICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0
cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBKU09iamVjdDo6cHV0QnlJbmRleChjZWxsLCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKLX0KLQotYm9v
bCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6ZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYg
cHJvcGVydHlEZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQotewotICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMq
PihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5m
bygpKTsKLQotICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLXN0YXRpYyBib29s
IGlzVW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKLXsK
LSAgICByZXR1cm4gcHJvcGVydHlOYW1lID09ICJ1bmZvcmdlYWJsZUF0dHJpYnV0ZSIgfHwgcHJv
cGVydHlOYW1lID09ICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiI7Ci19Ci0KLSAgICAgICAgaWYgKCFp
c1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkgfTsKLSAgICAgICAg
ICAgIGJvb2wgZm91bmQgPSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3Qs
IGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgICAgICAgICBz
bG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOwotICAgICAgICAgICAgaWYgKCFmb3VuZCkgewot
ICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3Io
KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KSk7Ci0gICAgICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlEZXNjcmlwdG9yLnZh
bHVlKCkpOwotICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
dHJ1ZSk7Ci0gICAgICAgICAgICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRl
bShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBQcm9wZXJ0eURlc2NyaXB0b3IgbmV3UHJvcGVydHlEZXNjcmlwdG9y
ID0gcHJvcGVydHlEZXNjcmlwdG9yOwotICAgIG5ld1Byb3BlcnR5RGVzY3JpcHRvci5zZXRDb25m
aWd1cmFibGUodHJ1ZSk7Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShv
YmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgbmV3UHJvcGVydHlEZXNj
cmlwdG9yLCBzaG91bGRUaHJvdyk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKiBJRExBdHRyaWJ1dGU8SlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMq
PihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllcyogSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQotRW5jb2RlZEpT
VmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0
cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCi1z
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNVbmZvcmdlYWJsZUF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMmIHRo
aXNPYmplY3QpCi17Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC51bmZvcmdlYWJsZUF0dHJpYnV0ZSgpKSkpOwotfQotCi1FbmNvZGVk
SlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1VuZm9yZ2Vh
YmxlQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPjo6Z2V0PGpzVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzVW5mb3JnZWFibGVBdHRyaWJ1dGVH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJ1bmZvcmdlYWJsZUF0dHJpYnV0ZSIpOwotfQotCi1zdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb25Cb2R5KEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJh
bWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCi17Ci0gICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
LSAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwudW5mb3Jn
ZWFibGVPcGVyYXRpb24oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0
aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbkJvZHk+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidW5mb3JnZWFibGVPcGVyYXRpb24iKTsKLX0K
LQotSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXM6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKLXsKLSAgICBhdXRvJiBjbGllbnRE
YXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Ci0gICAg
YXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKLSAgICBpZiAoYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllcy5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllczo6bmVlZHNEZXN0cnVjdGlvbik7Ci0gICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllcyk7Ci0gICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKTsKLSAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzLmdldCgpOwotSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQotICAgIGlm
ICgmSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OnZpc2l0T3V0cHV0
Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQotICAg
ICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOwot
SUdOT1JFX1dBUk5JTkdTX0VORAotSUdOT1JFX1dBUk5JTkdTX0VORAotICAgIHJldHVybiBzcGFj
ZTsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6
YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQotewotICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXMqPihjZWxsKTsKLSAgICBhbmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2Vs
bChjZWxsLCAmdGhpc09iamVjdC0+d3JhcHBlZCgpKTsKLSAgICBpZiAodGhpc09iamVjdC0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwo
Y2VsbCwgInVybCAiICsgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwo
KS5zdHJpbmcoKSk7Ci0gICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOwotfQot
Ci1ib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzT3duZXI6Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxl
LCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFzb24pCi17Ci0g
ICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwotICAg
IFVOVVNFRF9QQVJBTShyZWFzb24pOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc093bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKLXsKLSAgICBhdXRv
KiBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyA9IHN0YXRpY19jYXN0
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKj4oaGFuZGxlLnNsb3Qo
KS0+YXNDZWxsKCkpOwotICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJX
b3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMtPndyYXBwZWQoKSwganNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMpOwotfQotCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5U
RUdSSVRZKQotI2lmIFBMQVRGT1JNKFdJTikKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgz
KQotZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQFdlYkNvcmVAQDZCQCIpW10pKCk7
IH0KLSNlbHNlCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUzOVRlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0VbXTsgfQotI2VuZGlmCi0jZW5kaWYK
LQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXM+JiYgaW1wbCkKLXsKLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVH
UklUWSkKLSAgICBjb25zdCB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9p
bnRlcihpbXBsLnB0cigpKTsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgdm9pZCogZXhwZWN0ZWRW
VGFibGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/P183VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQFdlYkNvcmVAQDZCQCIpOwotI2Vsc2UKLSAgICB2b2lkKiBleHBlY3Rl
ZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTM5VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzRVsyXTsKLSNlbmRpZgotCi0gICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMgZG9lcyBub3QgaGF2ZSBhIHZ0YWJs
ZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQotICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgotICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXM+Ojp2YWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyBp
cyBub3QgcG9seW1vcnBoaWMiKTsKLQotICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24g
eW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgotICAgIC8vIFRlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0
IHBhc3NlZAotICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMgeW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBo
YXJkZW5pbmcKLSAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJp
YnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCi0gICAgUkVMRUFTRV9BU1NFUlQo
YWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwotI2VuZGlmCi0g
ICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwotfQotCi1KU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXMmIGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LCBpbXBsKTsKLX0KLQotVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6dG9XcmFw
cGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYgKGF1dG8qIHdy
YXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzKj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7
Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5oCShyZXZpc2lv
biAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaAkobm9uZXhpc3RlbnQpCkBA
IC0xLDEwMSArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQg
b3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCi0jaW5jbHVkZSAiVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXMgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcz4gewotcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBKU0RP
TVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPjsKLSAgICBz
dGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqIGNyZWF0ZShK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPiYmIGltcGwpCi0g
ICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyog
cHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcz4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9i
amVjdC0+dm0oKSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3Qm
KTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUds
b2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXMqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKLSAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwot
ICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlv
bk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBwdXQoSlND
OjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBwdXRCeUlu
ZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9vbCBk
ZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6UHJvcGVydHlOYW1lLCBjb25zdCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hv
dWxkVGhyb3cpOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKLQotICAg
IERFQ0xBUkVfSU5GTzsKLQotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFj
Y2Vzc29ycyk7Ci0gICAgfQotCi0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3Rv
cihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHRlbXBsYXRlPHR5
cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAgICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAo
bW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCi0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7Ci0gICAg
fQotICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pOwotICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5
emVyJik7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0lt
cHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpT
Qzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90
WmVybyB8IEpTQzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6T3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7
Ci1wcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+JiYpOwotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0M6OlZNJik7Ci19OwotCi1jbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc093bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLXB1YmxpYzoK
LSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8
SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYsIGNvbnN0IGNo
YXIqKik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4sIHZvaWQqIGNvbnRleHQpOwotfTsKLQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3
cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzKikKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNPd25lcj4gb3duZXI7Ci0gICAgcmV0dXJuICZv
d25lci5nZXQoKTsKLX0KLQotaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKiB3cmFwcGFibGVPYmplY3QpCi17Ci0gICAgcmV0dXJu
IHdyYXBwYWJsZU9iamVjdDsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzJik7Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKiBpbXBsKSB7IHJldHVybiBp
bXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpT
Qzo6anNOdWxsKCk7IH0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXM+JiYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVh
dGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXM+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4
aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDog
SlNDOjpqc051bGwoKTsgfQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0
ZXJUcmFpdHM8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPiB7Ci0gICAg
dXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXM7Ci0gICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcyo7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNw
cAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MzggKzAsMCBAQAotLyoKLSAgICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gICAg
VGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8g
Tk9UIE1PRElGWSEKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQot
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmgiCi0K
LSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMu
aCIKLSNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgIkpTRE9N
QXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJp
bmdzLmgiCi0jaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgotI2luY2x1ZGUgIkpT
RE9NT3BlcmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKLSNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0
YS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+Ci0jaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3Bh
Y2VJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Qb2lu
dGVyUHJlcGFyYXRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1VSTC5oPgotCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLS8vIEZ1bmN0aW9ucwotCi1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxl
T3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwotCi0vLyBB
dHRyaWJ1dGVzCi0KLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJv
b2wgc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNVbmZv
cmdlYWJsZUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotCi1jbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUgZmluYWwgOiBwdWJs
aWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlND
OjpKU05vbkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqIGNyZWF0ZShKU0M6
OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVh
dGlvbih2bSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgREVDTEFSRV9JTkZP
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgot
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAg
ICB7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1Byb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKLSAgICB9
Ci0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKLSAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Ci19OwotU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlLCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5
cGU6OkJhc2UpOwotCi11c2luZyBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGlucz47Ci0KLS8qIEhhc2ggdGFibGUgKi8KLQotc3RhdGljIGNvbnN0IHN0
cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1RhYmxlSW5kZXhbNF0gPSB7Ci0gICAgeyAtMSwgLTEg
fSwKLSAgICB7IDEsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKLSAgICB7IDAsIC0xIH0sCi19Owot
Ci0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNUYWJsZVZhbHVlc1tdID0KLXsKLSAg
ICB7ICJ1bmZvcmdlYWJsZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zVW5mb3JnZWFibGVBdHRy
aWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCi0gICAgeyAidW5mb3JnZWFibGVPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDAp
IH0gfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zVGFibGUgPSB7IDIsIDMsIHRy
dWUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGluczo6aW5mbygpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnNUYWJsZVZhbHVlcywgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zVGFibGVJbmRleCB9OwotdGVtcGxh
dGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgVU5V
U0VEX1BBUkFNKHZtKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBl
KCk7Ci19Ci0KLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3Bl
cnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OnByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNO
b250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci19
Ci0KLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnNDb25zdHJ1Y3RvcikgfTsKLQotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCi0K
LXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0K
LXsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25z
dHJ1Y3RvcikgfSB9LAotfTsKLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6c19pbmZv
ID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGlucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zUHJvdG90eXBlKSB9OwotCi12b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICByZWlmeVN0
YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6aW5mbygpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVUYWJsZVZhbHVlcywg
KnRoaXMpOwotICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwotfQot
Ci1jb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zIiwgJkJhc2U6OnNfaW5mbywgJkpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
c1RhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucykgfTsKLQotSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpKU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJl
ZjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zPiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz4oc3RydWN0dXJlLCBnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpCi17Ci19Ci0KLXZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIEFTU0VSVChpbmhlcml0
cyh2bSwgaW5mbygpKSk7Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0
aXZlRE9NT2JqZWN0LCBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0
aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2Vz
IEFjdGl2ZURPTU9iamVjdC4iKTsKLQotfQotCi1KU09iamVjdCogSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpjcmVhdGVQcm90b3R5
cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVy
biBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnNQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90
b3R5cGUoKSkpOwotfQotCi1KU09iamVjdCogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zPih2bSwgZ2xvYmFsT2JqZWN0KTsKLX0KLQotSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OmdldENvbnN0cnVjdG9y
KFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Ci19Ci0KLXZvaWQgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpkZXN0cm95
KEpTQzo6SlNDZWxsKiBjZWxsKQotewotICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGlucyo+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6fkpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucygpOwotfQotCi1ib29sIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
czo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqPihvYmplY3Qp
OwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAg
ICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVu
Y3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9u
YWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAg
IGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFt
ZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBl
Ojppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRl
cklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1
ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0g
ICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJv
cGVydHk8T3ZlcnJpZGVCdWlsdGluczo6WWVzPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1
ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1l
ZFByb3BlcnR5LnZhbHVlKCkpKTsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKLX0KLQotYm9vbCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Ci17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBh
dXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyo+KG9iamVjdCk7Ci0gICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIHVzaW5nIEdldHRlcklETFR5cGUg
PSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNP
YmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExU
eXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5
TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkp
Ci0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRp
b25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkg
fTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OwotICAgIGlmIChhdXRvIG5h
bWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5z
OjpZZXM+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBn
ZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwot
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigw
KSwgdmFsdWUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIEpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgaW5kZXgsIHNsb3QpOwotfQotCi12b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnMqPihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMob2JqZWN0LCBpbmZvKCkpOwotICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1lIDogdGhp
c09iamVjdC0+d3JhcHBlZCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSkKLSAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcHJvcGVydHlOYW1lKSk7
Ci0gICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OnB1dChKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFByb3BlcnR5
U2xvdCkKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyo+KGNlbGwpOwotICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLQotICAgIGlm
ICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAg
ICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHRydWUpOwotICAgICAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc2V0TmFtZWRJdGVtKHBy
b3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIEpTT2JqZWN0OjpwdXQo
dGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0
UHJvcGVydHlTbG90KTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIEpTVmFs
dWUgdmFsdWUsIGJvb2wpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyo+KGNlbGwpOwotICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLQotICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KSk7Ci0gICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgdHJ1ZSk7Ci0gICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShw
cm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBwcm9wZXJ0eURl
c2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnMqPihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKLQotICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLXN0
YXRpYyBib29sIGlzVW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKLXsKLSAgICByZXR1cm4gcHJvcGVydHlOYW1lID09ICJ1bmZvcmdlYWJsZUF0dHJpYnV0
ZSIgfHwgcHJvcGVydHlOYW1lID09ICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiI7Ci19Ci0KLSAgICAg
ICAgaWYgKCFpc1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpIHsKLSAgICAg
ICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAg
ICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlEZXNjcmlwdG9yLnZhbHVlKCkpOwotICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKLSAgICAgICAgICAgIHRoaXNP
YmplY3QtPndyYXBwZWQoKS5zZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVy
dHlOYW1lKSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBQcm9wZXJ0eURlc2NyaXB0b3IgbmV3UHJvcGVydHlE
ZXNjcmlwdG9yID0gcHJvcGVydHlEZXNjcmlwdG9yOwotICAgIG5ld1Byb3BlcnR5RGVzY3JpcHRv
ci5zZXRDb25maWd1cmFibGUodHJ1ZSk7Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWZpbmVPd25Q
cm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgbmV3UHJv
cGVydHlEZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
cyogSURMQXR0cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGlucz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqIElETE9wZXJhdGlv
bjxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqPihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQot
RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRK
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRp
bnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAg
Vk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAg
ICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KLXN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnNVbmZvcmdlYWJsZUF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zJiB0aGlzT2JqZWN0KQotewotICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExET01T
dHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudW5mb3JnZWFibGVB
dHRyaWJ1dGUoKSkpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zVW5mb3JnZWFibGVBdHRyaWJ1
dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPjo6
Z2V0PGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGluc1VuZm9yZ2VhYmxlQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidW5mb3JnZWFibGVB
dHRyaWJ1dGUiKTsKLX0KLQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0lu
c3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGlucz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCi17Ci0gICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGlt
cGwudW5mb3JnZWFibGVPcGVyYXRpb24oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0luc3Rh
bmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnM+OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbkJv
ZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidW5mb3JnZWFibGVPcGVyYXRp
b24iKTsKLX0KLQotSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpzdWJzcGFjZUZvckltcGwoSlNDOjpW
TSYgdm0pCi17Ci0gICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KHZtLmNsaWVudERhdGEpOwotICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vi
c3BhY2VzKCk7Ci0gICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmdl
dCgpKQotICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+IHx8ICFKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwotICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMpOwotICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKTsKLSAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5nZXQoKTsKLUlHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCi1JR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKLSAgICBpZiAoJkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6dmlzaXRPdXRwdXRDb25zdHJhaW50
cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCi0gICAgICAgIGNsaWVu
dERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7Ci1JR05PUkVfV0FS
TklOR1NfRU5ECi1JR05PUkVfV0FSTklOR1NfRU5ECi0gICAgcmV0dXJuIHNwYWNlOwotfQotCi12
b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGluczo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVy
KQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKj4oY2VsbCk7Ci0gICAgYW5h
bHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQo
KSk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAg
ICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOwotICAgIEJhc2U6OmFuYWx5
emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNPd25lcjo6aXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBT
bG90VmlzaXRvciYgdmlzaXRvciwgY29uc3QgY2hhcioqIHJlYXNvbikKLXsKLSAgICBVTlVTRURf
UEFSQU0oaGFuZGxlKTsKLSAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7Ci0gICAgVU5VU0VEX1BB
UkFNKHJlYXNvbik7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc093bmVyOjpmaW5h
bGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKLXsK
LSAgICBhdXRvKiBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnMgPSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwo
KSk7Ci0gICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29u
dGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMtPndyYXBwZWQoKSwganNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKTsK
LX0KLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSNpZiBQTEFURk9STShXSU4pCi0j
cHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAo
KmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNAV2ViQ29yZUBANkJAIilbXSkoKTsgfQotI2Vsc2UK
LWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTU4VGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0VbXTsgfQotI2VuZGlm
Ci0jZW5kaWYKLQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwpCi17
Ci0KLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0gICAgY29uc3Qgdm9pZCogYWN0dWFs
VlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7Ci0jaWYgUExBVEZP
Uk0oV0lOKQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRpZmllcigi
Pz9fN1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnNAV2ViQ29yZUBANkJAIik7Ci0jZWxzZQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9p
bnRlciA9ICZfWlRWTjdXZWJDb3JlNThUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zRVsyXTsKLSNlbmRpZgotCi0gICAgLy8gSWYgdGhpcyBm
YWlscyBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKLSAg
ICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNl
IGRlZmluaXRpb24KLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz46OnZh
bHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGlucyBpcyBub3QgcG9seW1vcnBoaWMiKTsKLQotICAgIC8vIElmIHlvdSBoaXQgdGhpcyBh
c3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgotICAgIC8v
IFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRp
bnMgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnMgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCi0g
ICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIFRlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMgeW91IHRvIG9wdCBvdXQgb2Yg
YmluZGluZyBoYXJkZW5pbmcKLSAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0
aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCi0gICAgUkVMRUFT
RV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwot
I2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyYgaW1w
bCkKLXsKLSAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGltcGwpOwotfQotCi1UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnM6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVl
IHZhbHVlKQotewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqPih2
bSwgdmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKLSAgICByZXR1
cm4gbnVsbHB0cjsKLX0KLQotfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3Zl
cnJpZGVCdWlsdGlucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnMuaAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5oCShub25leGlzdGVudCkKQEAgLTEsMTAxICsw
LDAgQEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJj
ZSBwcm9qZWN0LgotICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUt
YmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJKU0RPTVdyYXBwZXIuaCIKLSNpbmNsdWRlICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zIDogcHVibGljIEpT
RE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zPiB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5z
PjsKLSAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+JiYgaW1wbCkKLSAgICB7Ci0gICAg
ICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGlucyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+KGdsb2Jh
bE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92
ZShpbXBsKSk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgp
KTsKLSAgICAgICAgcmV0dXJuIHB0cjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgSlNDOjpKU09iamVj
dCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwotICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0
Jik7Ci0gICAgc3RhdGljIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnMqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKLSAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVj
dCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpF
bnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9v
bCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5h
bWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9v
bCBwdXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0
aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBjb25zdCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwq
KTsKLQotICAgIERFQ0xBUkVfSU5GTzsKLQotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gSlNDOjpT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUlu
Zm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZl
SW5kZXhlZEFjY2Vzc29ycyk7Ci0gICAgfQotCi0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRD
b25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHRl
bXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAgICB7Ci0gICAgICAgIGlmIGNv
bnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCi0gICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2
bSk7Ci0gICAgfQotICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwo
SlNDOjpWTSYgdm0pOwotICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6
SGVhcEFuYWx5emVyJik7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0
eVNsb3RJc0ltcHVyZSB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW50ZXJj
ZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpT
Qzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7Ci1wcm90ZWN0
ZWQ6Ci0gICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz4m
Jik7Ci0KLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKLX07Ci0KLWNsYXNzIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
c093bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0
dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYsIGNvbnN0IGNoYXIqKik7Ci0g
ICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQq
IGNvbnRleHQpOwotfTsKLQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3du
ZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyopCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
c093bmVyPiBvd25lcjsKLSAgICByZXR1cm4gJm93bmVyLmdldCgpOwotfQotCi1pbmxpbmUgdm9p
ZCogd3JhcHBlcktleShUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zKiB3cmFwcGFibGVPYmplY3QpCi17Ci0gICAgcmV0dXJuIHdyYXBwYWJs
ZU9iamVjdDsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0KiwgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGlucyYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJy
aWRlQnVpbHRpbnMqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKGxleGljYWxHbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsgfQotSlNDOjpKU1ZhbHVl
IHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0
KiwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnM+JiYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlD
cmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9u
TnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFw
cGVyQ29udmVydGVyVHJhaXRzPFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnM+IHsKLSAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM7Ci0g
ICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04MjcsNyArODI3LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZl
cnREaQogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAg
fQogICAgIGlmICghc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZ1ZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKLSAgICAgICAgcmVzdWx0LnN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmcgPSBjb252
ZXJ0PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETERPTVN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmdWYWx1ZSk7CisgICAgICAgIHJl
c3VsdC5zdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
c3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZ1ZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHN0cmluZ1dpdGhE
ZWZhdWx0VmFsdWU7CkBAIC0xMDU5LDggKzEwNTksOCBAQCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0
RGljdGlvbmFyeVRvSlMoSlNDCiAgICAgfQogICAgIGF1dG8gc21hbGxVbnNpZ25lZEludGVnZXJX
aXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExPY3RldD4oZGljdGlvbmFyeS5zbWFsbFVuc2lnbmVk
SW50ZWdlcldpdGhEZWZhdWx0KTsKICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdCIp
LCBzbWFsbFVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUpOwotICAgIGlmICghSURMVHJl
YXROdWxsQXNFbXB0eUFkYXB0b3I8SURMRE9NU3RyaW5nPjo6aXNOdWxsVmFsdWUoZGljdGlvbmFy
eS5zdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nKSkgewotICAgICAgICBhdXRvIHN0cmluZ1Ry
ZWF0TnVsbEFzRW1wdHlTdHJpbmdWYWx1ZSA9IHRvSlM8SURMVHJlYXROdWxsQXNFbXB0eUFkYXB0
b3I8SURMRE9NU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgSURMVHJlYXROdWxsQXNFbXB0
eUFkYXB0b3I8SURMRE9NU3RyaW5nPjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25h
cnkuc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZykpOworICAgIGlmICghSURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz46OmlzTnVsbFZhbHVlKGRpY3Rpb25h
cnkuc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZykpIHsKKyAgICAgICAgYXV0byBzdHJpbmdU
cmVhdE51bGxBc0VtcHR5U3RyaW5nVmFsdWUgPSB0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExET01TdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPjo6ZXh0cmFjdFZhbHVlRnJvbU51
bGxhYmxlKGRpY3Rpb25hcnkuc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZykpOwogICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
c3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZyIpLCBzdHJpbmdUcmVhdE51bGxBc0VtcHR5U3Ry
aW5nVmFsdWUpOwogICAgIH0KICAgICBhdXRvIHN0cmluZ1dpdGhEZWZhdWx0VmFsdWUgPSB0b0pT
PElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgZGljdGlvbmFyeS5zdHJpbmdXaXRo
RGVmYXVsdCk7CkBAIC0zMjU2LDcgKzMyNTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0T2JqU3RyaW5nQXR0CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETERP
TVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuc3RyaW5nQXR0
clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETERP
TVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuc3RyaW5nQXR0
clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQpAQCAtMzI2OSw3ICszMjY5LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9i
alN0cmluZ0F0dAogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETERPTVN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgICByZXR1cm4gaW1wbC5zZXRTdHJpbmdBdHRyVHJlYXRp
bmdOdWxsQXNFbXB0eVN0cmluZyhXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CkBAIC0zMjg3LDcgKzMy
ODcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqVXN2c3RyaW5nCiAgICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwudXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlT
dHJpbmcoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1w
dHlTdHJpbmcoKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVXN2c3RyaW5nQXR0
clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQpAQCAtMzMwMCw3
ICszMzAwLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialVzdnN0cmluZwogICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFRy
ZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgICByZXR1cm4gaW1wbC5zZXRVc3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZyhXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CkBAIC0zMzE4LDcgKzMzMTgsNyBAQCBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQnl0ZVN0cmluCiAgICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETFRyZWF0TnVs
bEFzRW1wdHlBZGFwdG9yPElETEJ5dGVTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmJ5dGVTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZygpKSkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMQnl0ZVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuYnl0ZVN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5n
KCkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakJ5dGVTdHJpbmdBdHRyVHJlYXRp
bmdOdWxsQXNFbXB0eVN0cmluZyhKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCkBAIC0zMzMxLDcgKzMzMzEs
NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqQnl0ZVN0cmluCiAgICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7Ci0gICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMVHJlYXROdWxs
QXNFbXB0eUFkYXB0b3I8SURMQnl0ZVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMQnl0ZVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICAgcmV0dXJuIGltcGwuc2V0Qnl0ZVN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3Ry
aW5nKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKQEAgLTU5ODksNyArNTk4OSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBpZiAoVU5MSUtFTFkoY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFy
Z3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBhcmcg
PSBjb252ZXJ0PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETERPTVN0cmluZz4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CisgICAgYXV0byBhcmcgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7CiAgICAgaW1wbC5tZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhX
VEZNb3ZlKGFyZykpOwpAQCAtNjIzMyw3ICs2MjMzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxH
bG9iYWxPYmplY3QpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRvIHN0ciA9IGNvbnZlcnQ8SURM
VHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8SURMVVNWU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKKyAgICBhdXRvIHN0ciA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICBp
bXBsLm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFdURk1v
dmUoc3RyKSk7CkBAIC02Mjk5LDcgKzYyOTksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIGF1dG8gc3RyID0gY29udmVydDxJRExUcmVh
dE51bGxBc0VtcHR5QWRhcHRvcjxJRExCeXRlU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50MC52YWx1ZSgpKTsKKyAgICBhdXRvIHN0ciA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETEJ5dGVTdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgaW1w
bC5tZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoV1RGTW92
ZShzdHIpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAJKHJldmlz
aW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDM1MSArMCwwIEBA
Ci0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJv
amVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRp
bmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgiCi0KLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKLSNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKLSNpbmNsdWRlICJKU0RPTUFic3RyYWN0
T3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9N
Q29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0SW50
ZXJmYWNlLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgotI2luY2x1ZGUgIkpT
RE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgot
I2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUu
aCIKLSNpbmNsdWRlICJKU05vZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCi0jaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cEFuYWx5emVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Ci0jaW5j
bHVkZSA8d3RmL1VSTC5oPgotCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFj
ZSBKU0M7Ci0KLS8vIEZ1bmN0aW9ucwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwotCi0vLyBBdHRyaWJ1dGVzCi0KLUpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
Ci1ib29sIHNldEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Ci0KLWNs
YXNzIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpK
U05vbkZpbmFsT2JqZWN0IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZp
bmFsT2JqZWN0OwotICAgIHN0YXRpYyBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBj
cmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVz
dE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7Ci0gICAgICAgIHB0ci0+
ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQotICAgIERF
Q0xBUkVfSU5GTzsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFj
ZUFjY2Vzcz4KLSAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCi0gICAgewotICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOwotICAgIH0KLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAg
ICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAg
fQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Ci19OwotU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSwg
SlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6QmFzZSk7Ci0KLXVzaW5nIEpTVGVzdE92
ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+OwotCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0
T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgVU5V
U0VEX1BBUkFNKHZtKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBl
KCk7Ci19Ci0KLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKLXsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJUZXN0T3ZlcnJpZGVCdWlsdGlucyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci19
Ci0KLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE92ZXJyaWRlQnVpbHRpbnMiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnNDb25zdHJ1Y3RvcikgfTsKLQotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCi0K
LXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90
eXBlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25z
dHJ1Y3RvcikgfSB9LAotICAgIHsgIm5hbWVkSXRlbSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T3ZlcnJpZGVCdWlsdGluc1By
b3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKSwgKGludHB0cl90KSAoMSkgfSB9LAotfTsKLQotY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IlRlc3RPdmVycmlkZUJ1aWx0aW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKSB9Owot
Ci12b2lkIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmVpZnlTdGF0aWNQ
cm9wZXJ0aWVzKHZtLCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjppbmZvKCksIEpTVGVzdE92ZXJy
aWRlQnVpbHRpbnNQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIEpTQ19UT19TVFJJ
TkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwotfQotCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0
T3ZlcnJpZGVCdWlsdGluczo6c19pbmZvID0geyAiVGVzdE92ZXJyaWRlQnVpbHRpbnMiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92
ZXJyaWRlQnVpbHRpbnMpIH07Ci0KLUpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OkpTVGVzdE92ZXJy
aWRlQnVpbHRpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QsIFJlZjxUZXN0T3ZlcnJpZGVCdWlsdGlucz4mJiBpbXBsKQotICAgIDogSlNET01X
cmFwcGVyPFRlc3RPdmVycmlkZUJ1aWx0aW5zPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RG
TW92ZShpbXBsKSkKLXsKLX0KLQotdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIEFT
U0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6Omlz
X2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0T3ZlcnJpZGVCdWlsdGlucz46OnZhbHVlLCAi
SW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2gg
aW1wbGVtZW50YXRpb24gY2xhc3Mgc3ViY2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7Ci0KLX0K
LQotSlNPYmplY3QqIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmNyZWF0ZVByb3RvdHlwZShWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIEpTVGVz
dE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNU
ZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpKTsKLX0KLQotSlNPYmplY3Qq
IEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zPih2bSwgZ2xvYmFsT2JqZWN0KTsKLX0KLQotSlNWYWx1ZSBKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVz
dE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKLX0KLQotdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQotewotICAgIEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4o
Y2VsbCk7Ci0gICAgdGhpc09iamVjdC0+SlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6fkpTVGVzdE92
ZXJyaWRlQnVpbHRpbnMoKTsKLX0KLQotYm9vbCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRp
bnMqPihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKLSAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMSW50ZXJmYWNlPE5vZGU+Owot
ICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3Bl
cnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRp
b25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFt
ZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAg
aWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0
dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklE
TFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNj
ZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6WWVzPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsK
LSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG5hbWVkUHJv
cGVydHkudmFsdWUoKSkpOwotICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVl
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKLX0KLQotYm9vbCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIFZN
JiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0gICAgdXNpbmcgR2V0dGVy
SURMVHlwZSA9IElETEludGVyZmFjZTxOb2RlPjsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBb
XSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVu
YW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJl
c3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21T
dHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxs
VmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBl
OjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVs
bGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07Ci0g
ICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92
ZXJyaWRlQnVpbHRpbnM6Olllcz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pT
PElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LT5n
bG9iYWxPYmplY3QoKSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKLSAgICAgICAg
c2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgc2xvdCk7Ci19Ci0KLXZvaWQgSlNUZXN0
T3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHBy
b3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAgIFZNJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKG9iamVjdCwgaW5mbygpKTsKLSAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6
IHRoaXNPYmplY3QtPndyYXBwZWQoKS5zdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkpCi0gICAgICAg
IHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHByb3BlcnR5TmFt
ZSkpOwotICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqIElETE9wZXJhdGlvbjxKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
JiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcnJpZGVC
dWlsdGlucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhp
c1ZhbHVlKCkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0Q29uc3RydWN0b3IoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkp
OwotfQotCi1ib29sIHNldEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92
ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAg
cmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCi1zdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0
aW9uTmFtZWRJdGVtQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0
T3ZlcnJpZGVCdWlsdGlucz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCi17Ci0gICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxH
bG9iYWxPYmplY3QpKTsKLSAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRvIG5hbWUgPSBjb252ZXJ0PElE
TERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKLSAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJ
bnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIGltcGwubmFtZWRJdGVtKFdURk1vdmUobmFtZSkpKSkpOwotfQotCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5j
dGlvbk5hbWVkSXRlbShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zPjo6Y2FsbDxqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlRnVuY3Rpb25O
YW1lZEl0ZW1Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm5hbWVkSXRl
bSIpOwotfQotCi1KU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpzdWJz
cGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCi17Ci0gICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwotICAgIGF1dG8mIHNwYWNl
cyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Ci0gICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0T3ZlcnJpZGVCdWlsdGlucy5nZXQoKSkKLSAgICAgICAgcmV0dXJu
IHNwYWNlOwotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucz4gfHwgIUpTVGVzdE92ZXJyaWRl
QnVpbHRpbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwotICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
cz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJyaWRlQnVpbHRpbnMgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMp
OwotICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcnJpZGVCdWls
dGlucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMpOwotICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcnJpZGVCdWlsdGlucy5n
ZXQoKTsKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCi1JR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKLSAgICBpZiAoJkpTVGVzdE92
ZXJyaWRlQnVpbHRpbnM6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2
aXNpdE91dHB1dENvbnN0cmFpbnRzKQotICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFp
bnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOwotSUdOT1JFX1dBUk5JTkdTX0VORAotSUdOT1JFX1dB
Uk5JTkdTX0VORAotICAgIHJldHVybiBzcGFjZTsKLX0KLQotdm9pZCBKU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIp
Ci17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
Kj4oY2VsbCk7Ci0gICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRo
aXNPYmplY3QtPndyYXBwZWQoKSk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSkKLSAgICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwg
IiArIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkp
OwotICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKLX0KLQotYm9vbCBKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3Is
IGNvbnN0IGNoYXIqKiByZWFzb24pCi17Ci0gICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHZpc2l0b3IpOwotICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOwotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zT3duZXI6OmZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQotewot
ICAgIGF1dG8qIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIGF1dG8mIHdvcmxk
ID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVX
cmFwcGVyKHdvcmxkLCAmanNUZXN0T3ZlcnJpZGVCdWlsdGlucy0+d3JhcHBlZCgpLCBqc1Rlc3RP
dmVycmlkZUJ1aWx0aW5zKTsKLX0KLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSNp
ZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKLWV4dGVybiAi
QyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RPdmVycmlkZUJ1
aWx0aW5zQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KLSNlbHNlCi1leHRlcm4gIkMiIHsgZXh0ZXJu
IHZvaWQqIF9aVFZON1dlYkNvcmUyMFRlc3RPdmVycmlkZUJ1aWx0aW5zRVtdOyB9Ci0jZW5kaWYK
LSNlbmRpZgotCi1KU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RPdmVycmlkZUJ1
aWx0aW5zPiYmIGltcGwpCi17Ci0KLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0gICAg
Y29uc3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5w
dHIoKSk7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRl
ciA9IF9faWRlbnRpZmllcigiPz9fN1Rlc3RPdmVycmlkZUJ1aWx0aW5zQFdlYkNvcmVAQDZCQCIp
OwotI2Vsc2UKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29y
ZTIwVGVzdE92ZXJyaWRlQnVpbHRpbnNFWzJdOwotI2VuZGlmCi0KLSAgICAvLyBJZiB0aGlzIGZh
aWxzIFRlc3RPdmVycmlkZUJ1aWx0aW5zIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBu
ZWVkIHRvIGFkZCB0aGUKLSAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0
ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
cG9seW1vcnBoaWM8VGVzdE92ZXJyaWRlQnVpbHRpbnM+Ojp2YWx1ZSwgIlRlc3RPdmVycmlkZUJ1
aWx0aW5zIGlzIG5vdCBwb2x5bW9ycGhpYyIpOwotCi0gICAgLy8gSWYgeW91IGhpdCB0aGlzIGFz
c2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCi0gICAgLy8g
VGVzdE92ZXJyaWRlQnVpbHRpbnMgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3RPdmVycmlkZUJ1aWx0
aW5zIGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAotICAgIC8vIHRvIHRvSlMoKSB3ZSBj
dXJyZW50bHkgcmVxdWlyZSBUZXN0T3ZlcnJpZGVCdWlsdGlucyB5b3UgdG8gb3B0IG91dCBvZiBi
aW5kaW5nIGhhcmRlbmluZwotICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRp
b24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KLSAgICBSRUxFQVNF
X0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7Ci0j
ZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0T3ZlcnJpZGVCdWlsdGlucz4oZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGVzdE92ZXJyaWRlQnVpbHRpbnMmIGltcGwpCi17Ci0gICAgcmV0dXJuIHdy
YXAobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKLX0KLQotVGVzdE92
ZXJyaWRlQnVpbHRpbnMqIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnRvV3JhcHBlZChKU0M6OlZN
JiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4odm0sIHZhbHVlKSkKLSAgICAgICAg
cmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaAkocmV2aXNpb24gMjY2NjM0KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRl
QnVpbHRpbnMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDk4ICswLDAgQEAKLS8qCi0gICAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICAgIFRoaXMg
ZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBN
T0RJRlkhCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKLSNp
bmNsdWRlICJUZXN0T3ZlcnJpZGVCdWlsdGlucy5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnMgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RPdmVycmlkZUJ1aWx0aW5zPiB7Ci1wdWJs
aWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0T3ZlcnJpZGVCdWlsdGlucz47
Ci0gICAgc3RhdGljIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqIGNyZWF0ZShKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE92
ZXJyaWRlQnVpbHRpbnM+JiYgaW1wbCkKLSAgICB7Ci0gICAgICAgIEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnMqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T3ZlcnJp
ZGVCdWlsdGlucz4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci0gICAgICAgIHB0
ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKLSAgICAgICAgcmV0dXJuIHB0
cjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpT
Qzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBw
cm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7Ci0gICAgc3RhdGljIFRlc3RP
dmVycmlkZUJ1aWx0aW5zKiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7Ci0gICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNs
b3QmKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51
bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0M6OkpTQ2VsbCopOwotCi0gICAgREVDTEFSRV9JTkZPOwotCi0gICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3Mg
bW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQot
ICAgIHsKLSAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6
OkNvbmN1cnJlbnRseSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1
cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKLSAgICB9Ci0gICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7Ci0gICAgc3RhdGljIHZvaWQgYW5hbHl6
ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3du
UHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlk
ZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3Q7Ci1wcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucyhKU0M6OlN0cnVj
dHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RPdmVycmlkZUJ1aWx0aW5zPiYmKTsK
LQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotfTsKLQotY2xhc3MgSlNUZXN0
T3ZlcnJpZGVCdWlsdGluc093bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYsIGNv
bnN0IGNoYXIqKik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwotfTsKLQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93
bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdE92ZXJyaWRlQnVpbHRpbnMq
KQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zT3du
ZXI+IG93bmVyOwotICAgIHJldHVybiAmb3duZXIuZ2V0KCk7Ci19Ci0KLWlubGluZSB2b2lkKiB3
cmFwcGVyS2V5KFRlc3RPdmVycmlkZUJ1aWx0aW5zKiB3cmFwcGFibGVPYmplY3QpCi17Ci0gICAg
cmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE92ZXJyaWRlQnVpbHRpbnMmKTsK
LWlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T3ZlcnJpZGVC
dWlsdGlucyogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1KU0M6OkpTVmFsdWUgdG9K
U05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBS
ZWY8VGVzdE92ZXJyaWRlQnVpbHRpbnM+JiYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3
bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0T3ZlcnJpZGVCdWlsdGlucz4m
JiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgp
OyB9Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0
T3ZlcnJpZGVCdWlsdGlucz4gewotICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IEpTVGVzdE92ZXJy
aWRlQnVpbHRpbnM7Ci0gICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRlc3RPdmVycmlk
ZUJ1aWx0aW5zKjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5n
ZXMgb246IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICsw
LDAgIyMKLUxGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMzMsMTMgKzMzLDEzIEBACiAgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gRE9NU3RyaW5nIHJlbW92ZVByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwogICAg
IERPTVN0cmluZz8gZ2V0UHJvcGVydHlQcmlvcml0eShET01TdHJpbmcgcHJvcGVydHlOYW1lKTsK
IAotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRQcm9w
ZXJ0eShET01TdHJpbmcgcHJvcGVydHlOYW1lLCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERP
TVN0cmluZyB2YWx1ZSwgb3B0aW9uYWwgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJp
bmcgcHJpb3JpdHkgPSAiIik7CisgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5kZWZpbmVkIHNldFByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUsIFtMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVlLCBvcHRpb25hbCBbTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmddIERPTVN0cmluZyBwcmlvcml0eSA9ICIiKTsKIAogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBnZXR0ZXIgRE9NU3RyaW5nIGl0ZW0odW5z
aWduZWQgbG9uZyBpbmRleCk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIENTU1J1bGU/IHBhcmVu
dFJ1bGU7CiAKLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlT
dHJpbmddIERPTVN0cmluZyBjc3NGbG9hdDsKKyAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBb
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBjc3NGbG9hdDsKIAogICAgIERPTVN0
cmluZz8gZ2V0UHJvcGVydHlTaG9ydGhhbmQob3B0aW9uYWwgRE9NU3RyaW5nIHByb3BlcnR5TmFt
ZSk7CiAgICAgYm9vbGVhbiBpc1Byb3BlcnR5SW1wbGljaXQob3B0aW9uYWwgRE9NU3RyaW5nIHBy
b3BlcnR5TmFtZSk7CkBAIC00OSw3ICs0OSw3IEBACiAgICAgLy8gcHJlZml4ZXMgZm9yIHRoaXMg
dG8gYmUgcHJhY3RpY2FsLiBJZiB3ZSByZW1vdmUgbGVnYWN5IGFsaWFzZXMsIHdlIHNob3VsZAog
ICAgIC8vIHJlY29uc2lkZXIgdGhpcyBkZWNpc2lvbi4KICAgICBnZXR0ZXIgKERPTVN0cmluZyBv
ciBkb3VibGUpIChET01TdHJpbmcgbmFtZSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4
Y2VwdGlvbiwgQ2FsbE5hbWVkU2V0dGVyT25seUZvclN1cHBvcnRlZFByb3BlcnRpZXNdIHNldHRl
ciB1bmRlZmluZWQgKERPTVN0cmluZyBuYW1lLCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERP
TVN0cmluZyB2YWx1ZSk7CisgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbiwgQ2Fs
bE5hbWVkU2V0dGVyT25seUZvclN1cHBvcnRlZFByb3BlcnRpZXNdIHNldHRlciB1bmRlZmluZWQg
KERPTVN0cmluZyBuYW1lLCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1
ZSk7CiAKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLCBhbmQgd2Ugd291bGQgbGlr
ZSB0byBkcm9wIHN1cHBvcnQgZm9yIGl0IHNvbWVkYXkKICAgICBEZXByZWNhdGVkQ1NTT01WYWx1
ZT8gZ2V0UHJvcGVydHlDU1NWYWx1ZShET01TdHJpbmcgcHJvcGVydHlOYW1lKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmtub3duUnVsZS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL0NTU1Vua25vd25SdWxlLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Vua25vd25SdWxlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjAs
NyArMjAsNyBAQAogCiAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAyOgogWwotICAgIE5vSW50
ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2Ug
Q1NTVW5rbm93blJ1bGUgOiBDU1NSdWxlIHsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9FbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9FbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvRWxlbWVudENTU0lubGluZVN0eWxlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNyArMjYsNyBAQAogLy8gQ1NTT00gZXh0ZW5zaW9ucyB0byBIVE1MRWxlbWVudCAvIFNW
R0VsZW1lbnQ6CiAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3RoZS1lbGVtZW50
Y3NzaW5saW5lc3R5bGUtaW50ZXJmYWNlCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAg
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBFbGVtZW50Q1NTSW5saW5lU3R5
bGUgewogICAgIFtJbXBsZW1lbnRlZEFzPWNzc29tU3R5bGUsIFB1dEZvcndhcmRzPWNzc1RleHRd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NTdHlsZURlY2xhcmF0aW9uIHN0eWxlOyAvLyBGSVhNRTog
U2hvdWxkIGJlIFtTYW1lT2JqZWN0XS4KICAgICBbSW1wbGVtZW50ZWRBcz1lbnN1cmVBdHRyaWJ1
dGVTdHlsZU1hcCwgQ2FjaGVkQXR0cmlidXRlLCBFbmFibGVkQXRSdW50aW1lPUNTU1R5cGVkT00s
IENvbmRpdGlvbmFsPUNTU19UWVBFRF9PTV0gcmVhZG9ubHkgYXR0cmlidXRlIFN0eWxlUHJvcGVy
dHlNYXAgYXR0cmlidXRlU3R5bGVNYXA7IC8vIEZJWE1FOiBTaG91bGQgYmUgW1NhbWVPYmplY3Rd
LgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsy
OSw3IEBACiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKICAgICBKU0N1c3RvbUhlYWRl
ciwKIF0gaW50ZXJmYWNlIE1lZGlhTGlzdCB7Ci0gICAgYXR0cmlidXRlIFtUcmVhdE51bGxBcz1F
bXB0eVN0cmluZ10gRE9NU3RyaW5nIG1lZGlhVGV4dDsKKyAgICBhdHRyaWJ1dGUgW0xlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgbWVkaWFUZXh0OwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKIAogICAgIGdldHRlciBET01TdHJpbmc/IGl0ZW0o
dW5zaWduZWQgbG9uZyBpbmRleCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRp
YS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEuaWRsCShy
ZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VP
YmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgR2VuZXJhdGVJc1JlYWNo
YWJsZT1SZWFjaGFibGVGcm9tRE9NV2luZG93LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUsCiBdIGludGVyZmFjZSBTdHlsZU1lZGlhIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9D
aGFyYWN0ZXJEYXRhLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFj
dGVyRGF0YS5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGFy
YWN0ZXJEYXRhLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTgsNyArMTgsNyBAQAogICovCiAKIGlu
dGVyZmFjZSBDaGFyYWN0ZXJEYXRhIDogTm9kZSB7Ci0gICAgYXR0cmlidXRlIFtUcmVhdE51bGxB
cz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGRhdGE7CisgICAgYXR0cmlidXRlIFtMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGRhdGE7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHN1
YnN0cmluZ0RhdGEodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgY291bnQpOwog
ICAgIHVuZGVmaW5lZCBhcHBlbmREYXRhKERPTVN0cmluZyBkYXRhKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9DaGlsZE5vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9DaGlsZE5vZGUuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
Q2hpbGROb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogCiAvLyBodHRw
czovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2NoaWxkbm9kZQogWwotICAgIE5vSW50ZXJmYWNlT2Jq
ZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgQ2hpbGROb2Rl
IHsKICAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGUsIE1heVRocm93RXhjZXB0aW9uXSB1bmRl
ZmluZWQgYmVmb3JlKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwogICAgIFtDRVJlYWN0
aW9ucywgVW5zY29wYWJsZSwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBhZnRlcigoTm9k
ZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01J
bXBsZW1lbnRhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTUlt
cGxlbWVudGF0aW9uLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0RPTUltcGxlbWVudGF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAog
ICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBET01JbXBsZW1lbnRh
dGlvbiB7CiAgICAgW05ld09iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIERvY3VtZW50VHlwZSBj
cmVhdGVEb2N1bWVudFR5cGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIERPTVN0cmluZyBwdWJs
aWNJZCwgRE9NU3RyaW5nIHN5c3RlbUlkKTsKLSAgICBbTmV3T2JqZWN0LCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gWE1MRG9jdW1lbnQgY3JlYXRlRG9jdW1lbnQoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkks
IFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIG9wdGlv
bmFsIERvY3VtZW50VHlwZT8gZG9jdHlwZSA9IG51bGwpOworICAgIFtOZXdPYmplY3QsIE1heVRo
cm93RXhjZXB0aW9uXSBYTUxEb2N1bWVudCBjcmVhdGVEb2N1bWVudChET01TdHJpbmc/IG5hbWVz
cGFjZVVSSSwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgcXVhbGlmaWVkTmFt
ZSwgb3B0aW9uYWwgRG9jdW1lbnRUeXBlPyBkb2N0eXBlID0gbnVsbCk7CiAgICAgW05ld09iamVj
dF0gSFRNTERvY3VtZW50IGNyZWF0ZUhUTUxEb2N1bWVudChvcHRpb25hbCBET01TdHJpbmcgdGl0
bGUpOwogCiAgICAgYm9vbGVhbiBoYXNGZWF0dXJlKCk7IC8vIFVzZWxlc3M7IGFsd2F5cyByZXR1
cm5zIHRydWUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NU3RyaW5nTWFwLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRE9NU3RyaW5nTWFwLmlkbAkocmV2aXNpb24g
MjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1w
bEVsZW1lbnRSb290LAotICAgIE92ZXJyaWRlQnVpbHRpbnMsCisgICAgTGVnYWN5T3ZlcnJpZGVC
dWlsdElucywKICAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbiwKIF0gaW50ZXJmYWNlIERPTVN0cmlu
Z01hcCB7CiAgICAgZ2V0dGVyIERPTVN0cmluZyAoRE9NU3RyaW5nIG5hbWUpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25FdmVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25FdmVu
dC5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmll
bnRhdGlvbk9yTW90aW9uRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBA
CiAKIFsKICAgICBDb25kaXRpb25hbD1ERVZJQ0VfT1JJRU5UQVRJT04sCi0gICAgTm9JbnRlcmZh
Y2VPYmplY3QKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdAogXSBpbnRlcmZhY2UgRGV2aWNl
T3JpZW50YXRpb25Pck1vdGlvbkV2ZW50IHsKICAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIEVuYWJs
ZWRCeVNldHRpbmc9RGV2aWNlT3JpZW50YXRpb25QZXJtaXNzaW9uQVBJXSBzdGF0aWMgUHJvbWlz
ZTxEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlPiByZXF1ZXN0UGVybWlz
c2lvbigpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNpb24gMjY2NjM0
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
ODMsNyArODMsNyBAQCB0eXBlZGVmIChIVE1MU2NyaXB0RWxlbWVudCBvciBTVkdTY3JpcHRFCiAg
ICAgW05ld09iamVjdF0gVHJlZVdhbGtlciBjcmVhdGVUcmVlV2Fsa2VyKE5vZGUgcm9vdCwgb3B0
aW9uYWwgdW5zaWduZWQgbG9uZyB3aGF0VG9TaG93ID0gMHhGRkZGRkZGRiwgb3B0aW9uYWwgTm9k
ZUZpbHRlcj8gZmlsdGVyID0gbnVsbCk7CiAKICAgICAvLyBFeHRlbnNpb25zIGZyb20gSFRNTCBz
cGVjaWZpY2F0aW9uIChodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN0aGUtZG9jdW1lbnQt
b2JqZWN0KS4KLSAgICBbUHV0Rm9yd2FyZHM9aHJlZiwgVW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBMb2NhdGlvbj8gbG9jYXRpb247CisgICAgW1B1dEZvcndhcmRzPWhyZWYsIExlZ2Fj
eVVuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgTG9jYXRpb24/IGxvY2F0aW9uOwogICAg
IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgZG9tYWluOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZT
dHJpbmcgcmVmZXJyZXI7CiAgICAgYXR0cmlidXRlIFVTVlN0cmluZyBjb29raWU7CkBAIC0xMzAs
NyArMTMwLDcgQEAgdHlwZWRlZiAoSFRNTFNjcmlwdEVsZW1lbnQgb3IgU1ZHU2NyaXB0RQogICAg
IFtFbmFibGVkQnlTZXR0aW5nPVVuZG9NYW5hZ2VyQVBJXSByZWFkb25seSBhdHRyaWJ1dGUgVW5k
b01hbmFnZXIgdW5kb01hbmFnZXI7CiAKICAgICAvLyBTcGVjaWFsIGV2ZW50IGhhbmRsZXIgSURM
IGF0dHJpYnV0ZXMgdGhhdCBvbmx5IGFwcGx5IHRvIERvY3VtZW50IG9iamVjdHMuCi0gICAgW0xl
bmllbnRUaGlzXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ucmVhZHlzdGF0ZWNoYW5nZTsKKyAg
ICBbTGVnYWN5TGVuaWVudFRoaXNdIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25yZWFkeXN0YXRl
Y2hhbmdlOwogCiAgICAgLy8gRXh0ZW5zaW9ucyBmcm9tIHRoZSBDU1NPTS1WaWV3IHNwZWNpZmlj
YXRpb24gKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS12aWV3LyNleHRlbnNpb25zLXRv
LXRoZS1kb2N1bWVudC1pbnRlcmZhY2UpLgogICAgIFtJbXBsZW1lbnRlZEFzPXNjcm9sbGluZ0Vs
ZW1lbnRGb3JBUEldIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50PyBzY3JvbGxpbmdFbGVtZW50
OwpAQCAtMTc5LDExICsxNzksMTEgQEAgdHlwZWRlZiAoSFRNTFNjcmlwdEVsZW1lbnQgb3IgU1ZH
U2NyaXB0RQogCiAgICAgLy8gT2Jzb2xldGUgZmVhdHVyZXMgZnJvbSBodHRwczovL2h0bWwuc3Bl
Yy53aGF0d2cub3JnL211bHRpcGFnZS9vYnNvbGV0ZS5odG1sCiAKLSAgICBbQ0VSZWFjdGlvbnNd
IGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBmZ0NvbG9yOwot
ICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1saW5rQ29sb3JGb3JCaW5kaW5nc10gYXR0
cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGxpbmtDb2xvcjsKLSAg
ICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0
cmluZyB2bGlua0NvbG9yOwotICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtUcmVhdE51bGxB
cz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGFsaW5rQ29sb3I7Ci0gICAgW0NFUmVhY3Rpb25zXSBh
dHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgYmdDb2xvcjsKKyAg
ICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0
cmluZyBmZ0NvbG9yOworICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1saW5rQ29sb3JG
b3JCaW5kaW5nc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5n
IGxpbmtDb2xvcjsKKyAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmddIERPTVN0cmluZyB2bGlua0NvbG9yOworICAgIFtDRVJlYWN0aW9uc10gYXR0cmli
dXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGFsaW5rQ29sb3I7CisgICAg
W0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJp
bmcgYmdDb2xvcjsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MQ29sbGVjdGlvbiBhbmNo
b3JzOyAvKiBbU2FtZU9iamVjdF0gKi8KICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxl
Y3Rpb24gYXBwbGV0czsgLyogW1NhbWVPYmplY3RdICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRBbmRFbGVtZW50RXZlbnRIYW5kbGVycy5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMuaWRsCShyZXZp
c2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRBbmRFbGVtZW50RXZl
bnRIYW5kbGVycy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jZG9jdW1lbnRhbmRlbGVtZW50ZXZlbnRoYW5kbGVy
cwogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
LAogXSBpbnRlcmZhY2UgRG9jdW1lbnRBbmRFbGVtZW50RXZlbnRIYW5kbGVycyB7CiAgICAgYXR0
cmlidXRlIEV2ZW50SGFuZGxlciBvbmNvcHk7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBv
bmN1dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yU2hhZG93Um9vdC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JTaGFkb3dSb290Lmlk
bAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JTaGFk
b3dSb290LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiAvLyBodHRwczov
L2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvY3VtZW50b3JzaGFkb3dyb290CiBbCi0gICAgTm9JbnRl
cmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBE
b2N1bWVudE9yU2hhZG93Um9vdCB7CiAgICAgLy8gRXh0ZW5zaW9ucyBmcm9tIFNoYWRvdyBET00g
QVBJIChodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL3NoYWRvdy8jZXh0
ZW5zaW9ucy10by10aGUtZG9jdW1lbnRvcnNoYWRvd3Jvb3QtbWl4aW4pLgogICAgIC8vIERPTVNl
bGVjdGlvbj8gZ2V0U2VsZWN0aW9uKCk7IC8vIEZJWE1FOiBXZSBjdXJyZW50bHkgaGF2ZSB0aGlz
IG9uIERvY3VtZW50IG9ubHkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCShyZXZpc2lvbiAy
NjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTkwLDggKzkwLDggQEAKIAogICAgIC8vIEV4dGVuc2lvbnMgdG8gRWxlbWVudCBmcm9tIERP
TSBQYXJzaW5nIGFuZCBTZXJpYWxpemF0aW9uIHNwZWNpZmljYXRpb24uCiAgICAgLy8gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL0RPTS1QYXJzaW5nLyNleHRlbnNpb25zLXRvLXRoZS1lbGVtZW50LWlu
dGVyZmFjZQotICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIGlubmVySFRNTDsKLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBb
VHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBvdXRlckhUTUw7CisgICAgW0NFUmVh
Y3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgaW5u
ZXJIVE1MOworICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIG91dGVySFRNTDsKICAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhj
ZXB0aW9uXSB1bmRlZmluZWQgaW5zZXJ0QWRqYWNlbnRIVE1MKERPTVN0cmluZyBwb3NpdGlvbiwg
RE9NU3RyaW5nIHRleHQpOwogCiAgICAgLy8gRXh0ZW5zaW9ucyBmcm9tIEZ1bGwgU2NyZWVuIEFQ
SSAoaHR0cHM6Ly9mdWxsc2NyZWVuLnNwZWMud2hhdHdnLm9yZy8jYXBpKS4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50LmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCB0eXBlZGVmIGRvdWJsZSBET01I
aWdoUmVzVGltZVN0YW1wOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGRlZmF1bHRQ
cmV2ZW50ZWQ7CiAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9U2hhZG93RE9NXSByZWFkb25seSBhdHRy
aWJ1dGUgYm9vbGVhbiBjb21wb3NlZDsKIAotICAgIFtVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0
cmlidXRlIGJvb2xlYW4gaXNUcnVzdGVkOworICAgIFtMZWdhY3lVbmZvcmdlYWJsZV0gcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gaXNUcnVzdGVkOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBJbXBsZW1lbnRlZEFzPXRpbWVTdGFtcEZvckJpbmRpbmdzXSByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NSGlnaFJlc1RpbWVTdGFtcCB0aW1lU3RhbXA7CiAKICAgICB1bmRlZmlu
ZWQgaW5pdEV2ZW50KERPTVN0cmluZyB0eXBlLCBvcHRpb25hbCBib29sZWFuIGJ1YmJsZXMgPSBm
YWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlID0gZmFsc2UpOyAvLyBIaXN0b3JpY2Fs
LgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmlkbAkocmV2aXNpb24gMjY2NjM0
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0xOSw3ICsxOSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAg
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJmYWNlIEV2ZW50TGlzdGVuZXIgewogICAg
IHVuZGVmaW5lZCBoYW5kbGVFdmVudChFdmVudCBldmVudCk7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0dsb2JhbEV2ZW50SGFuZGxlcnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9HbG9iYWxFdmVudEhhbmRsZXJzLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0dsb2JhbEV2ZW50SGFuZGxlcnMuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw3ICsyNiw3IEBACiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL3dlYmFwcGFwaXMuaHRtbCNnbG9iYWxldmVudGhhbmRsZXJzCiBbCi0gICAgTm9JbnRl
cmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBH
bG9iYWxFdmVudEhhbmRsZXJzIHsKICAgICAvLyBDb21tZW50ZWQgb3V0IGV2ZW50IGhhbmRsZXJz
IGFyZSBkZWZpbmVkIGJ5IHRoZSBIVE1MNSBzcGVjaWZpY2F0aW9uIGJ1dAogICAgIC8vIGFyZSBu
b3QgeWV0IGltcGxlbWVudGVkLgpAQCAtNjUsOCArNjUsOCBAQAogICAgIGF0dHJpYnV0ZSBFdmVu
dEhhbmRsZXIgb25sb2FkZWRtZXRhZGF0YTsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9u
bG9hZHN0YXJ0OwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tb3VzZWRvd247Ci0gICAg
W0xlbmllbnRUaGlzXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubW91c2VlbnRlcjsKLSAgICBb
TGVuaWVudFRoaXNdIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tb3VzZWxlYXZlOworICAgIFtM
ZWdhY3lMZW5pZW50VGhpc10gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbm1vdXNlZW50ZXI7Cisg
ICAgW0xlZ2FjeUxlbmllbnRUaGlzXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubW91c2VsZWF2
ZTsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubW91c2Vtb3ZlOwogICAgIGF0dHJpYnV0
ZSBFdmVudEhhbmRsZXIgb25tb3VzZW91dDsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9u
bW91c2VvdmVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05hdmlnYXRvck1heFRvdWNoUG9p
bnRzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTmF2aWdhdG9yTWF4VG91
Y2hQb2ludHMuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTmF2
aWdhdG9yTWF4VG91Y2hQb2ludHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBA
CiAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QsCiBdIGludGVyZmFjZSBNYXhUb3VjaFBvaW50cyB7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGxvbmcgbWF4VG91Y2hQb2ludHM7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05v
bkRvY3VtZW50VHlwZUNoaWxkTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL05vbkRvY3VtZW50VHlwZUNoaWxkTm9kZS5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob25Eb2N1bWVudFR5cGVDaGlsZE5vZGUuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKIC8vIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8j
aW50ZXJmYWNlLW5vbmRvY3VtZW50dHlwZWNoaWxkbm9kZQogWwotICAgIE5vSW50ZXJmYWNlT2Jq
ZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgTm9uRG9jdW1l
bnRUeXBlQ2hpbGROb2RlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudD8gcHJldmlv
dXNFbGVtZW50U2libGluZzsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudD8gbmV4dEVs
ZW1lbnRTaWJsaW5nOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vbkVsZW1lbnRQYXJlbnRO
b2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9uRWxlbWVudFBhcmVu
dE5vZGUuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9uRWxl
bWVudFBhcmVudE5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKIC8v
IGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jaW50ZXJmYWNlLW5vbmVsZW1lbnRwYXJlbnRu
b2RlCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3QsCiBdIGludGVyZmFjZSBOb25FbGVtZW50UGFyZW50Tm9kZSB7CiAgICAgW0RPTUpJVD1SZWFk
RE9NXSBFbGVtZW50PyBnZXRFbGVtZW50QnlJZChbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmdd
IERPTVN0cmluZyBlbGVtZW50SWQpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9QYXJl
bnROb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUGFyZW50Tm9kZS5p
ZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9QYXJlbnROb2RlLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiAvLyBodHRwczovL2RvbS5zcGVj
LndoYXR3Zy5vcmcvI2ludGVyZmFjZS1wYXJlbnRub2RlCiBbCi0gICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBQYXJlbnROb2Rl
IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24gY2hpbGRyZW47IC8vIEZJ
WE1FOiBTaG91bGQgYmUgW1NhbWVPYmplY3RdLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVt
ZW50PyBmaXJzdEVsZW1lbnRDaGlsZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5pZGwJ
KHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBF
bGVtZW50IGhvc3Q7CiAKICAgICAvLyBGSVhNRTogU2VlbXMgdG8gaGF2ZSBiZWVuIGRyb3BwZWQg
ZnJvbSB0aGUgU2hhZG93IERPTSBBUEkuCi0gICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1Ry
ZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgaW5uZXJIVE1MOworICAgIFtDRVJlYWN0
aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGlubmVy
SFRNTDsKIH07CiAKIFNoYWRvd1Jvb3QgaW5jbHVkZXMgRG9jdW1lbnRPclNoYWRvd1Jvb3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdGFibGUuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TbG90YWJsZS5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9TbG90YWJsZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAK
ICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QsCiAgICAgRW5hYmxlZEF0UnVudGltZT1TaGFkb3dET00sCiBdIGludGVyZmFjZSBTbG90
YWJsZSB7CiAgICAgW0ltcGxlbWVudGVkQXM9YXNzaWduZWRTbG90Rm9yQmluZGluZ3NdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBIVE1MU2xvdEVsZW1lbnQ/IGFzc2lnbmVkU2xvdDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MTksMTIgKzE5LDEyIEBACiAgKi8KIAogaW50ZXJmYWNlIEhUTUxCb2R5RWxlbWVudCA6IEhUTUxF
bGVtZW50IHsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUg
W1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgYUxpbms7CisgICAgW0NFUmVhY3Rp
b25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z10gRE9NU3RyaW5nIGFMaW5rOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3Rd
IGF0dHJpYnV0ZSBET01TdHJpbmcgYmFja2dyb3VuZDsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVl
ZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJp
bmcgYmdDb2xvcjsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1
dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgbGluazsKLSAgICBbQ0VSZWFj
dGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3Ry
aW5nXSBET01TdHJpbmcgdGV4dDsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0
XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgdkxpbms7Cisg
ICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5l
ZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3Ry
aW5nIGxpbms7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRl
IFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHRleHQ7CisgICAgW0NFUmVhY3Rp
b25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z10gRE9NU3RyaW5nIHZMaW5rOwogCiAgICAgW05vdEVudW1lcmFibGUsIFdpbmRvd0V2ZW50SGFu
ZGxlcl0gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmJsdXI7CiAgICAgW05vdEVudW1lcmFibGUs
IFdpbmRvd0V2ZW50SGFuZGxlcl0gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmVycm9yOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
MSw3ICsyMSw3IEBACiBbCiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBOZXdJbXB1cmVQcm9w
ZXJ0eUZpcmVzV2F0Y2hwb2ludHMsCi0gICAgT3ZlcnJpZGVCdWlsdGlucywKKyAgICBMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zLAogXSBpbnRlcmZhY2UgSFRNTERvY3VtZW50IDogRG9jdW1lbnQgeyAg
ICAKICAgICBnZXR0ZXIgKFdpbmRvd1Byb3h5IG9yIEVsZW1lbnQgb3IgSFRNTENvbGxlY3Rpb24p
IChET01TdHJpbmcgbmFtZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5p
ZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBACiAgICAgW0NFUmVhY3Rpb25zXSBh
dHRyaWJ1dGUgYm9vbGVhbiBzcGVsbGNoZWNrOwogICAgIC8vIHVuZGVmaW5lZCBmb3JjZVNwZWxs
Q2hlY2soKTsgLy8gRklYTUU6IE5vdCBzdXBwb3J0ZWQuCiAKLSAgICBbQ0VSZWFjdGlvbnNdIGF0
dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBpbm5lclRleHQ7Cisg
ICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01T
dHJpbmcgaW5uZXJUZXh0OwogCiAgICAgLy8gRklYTUU6IFNob3VsZCBiZSBpbiBhIHNlcGFyYXRl
IEVsZW1lbnRDb250ZW50RWRpdGFibGUgaW50ZXJmYWNlLgogICAgIC8vIGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvI2VsZW1lbnRjb250ZW50ZWRpdGFibGUKQEAgLTU2LDExICs1NiwxMSBA
QAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgb2Zmc2V0SGVpZ2h0OyAvLyBGSVhNRTog
U2hvdWxkIGJlIG9mIHR5cGUgbG9uZy4KIAogICAgIC8vIE5vbiBTdGFuZGFyZCBidXQgbWF5IGdl
dCBhZGRlZCB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9o
dG1sL2lzc3Vlcy82NjgpLgotICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtUcmVhdE51bGxB
cz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG91dGVyVGV4dDsKKyAgICBbQ0VSZWFjdGlvbnNdIGF0
dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBvdXRlclRleHQ7CiAK
ICAgICAvLyBpT1MgYXV0b2NvcnJlY3QgLyBhdXRvY2FwaXRhbGl6YXRpb24gZXh0ZW5zaW9ucy4K
ICAgICBbQ29uZGl0aW9uYWw9QVVUT0NPUlJFQ1QsIENFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgYm9v
bGVhbiBhdXRvY29ycmVjdDsKLSAgICBbQ29uZGl0aW9uYWw9QVVUT0NBUElUQUxJWkUsIENFUmVh
Y3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgYXV0
b2NhcGl0YWxpemU7CisgICAgW0NvbmRpdGlvbmFsPUFVVE9DQVBJVEFMSVpFLCBDRVJlYWN0aW9u
c10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGF1dG9jYXBp
dGFsaXplOwogCiAgICAgLy8gRklYTUU6IFdlIGFyZSB0aGUgb25seSBicm93c2VyIHRvIHN1cHBv
cnQgdGhpcyBub3cgdGhhdCBCbGluayBkcm9wcGVkIGl0IChodHRwOi8vY3JidWcuY29tLzY4ODk0
MykuCiAgICAgW0NFUmVhY3Rpb25zLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdlYmtp
dGRyb3B6b25lOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmlkbAko
cmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw3IEBACiAgKi8KIAogaW50ZXJmYWNlIEhU
TUxGb250RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVk
LCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcg
Y29sb3I7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGNvbG9yOwogICAgIFtDRVJlYWN0aW9u
cz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgZmFjZTsKICAgICBbQ0VS
ZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNpemU7CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbAkocmV2aXNpb24g
MjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAKIFsKICAgICBMZWdhY3lVbmVudW1lcmFibGVO
YW1lZFByb3BlcnRpZXMsCi0gICAgT3ZlcnJpZGVCdWlsdGlucywKKyAgICBMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zLAogICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKIF0gaW50ZXJmYWNlIEhU
TUxGb3JtRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVk
LCBSZWZsZWN0PWFjY2VwdF9jaGFyc2V0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFjY2VwdENoYXJz
ZXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwJKHJldmlz
aW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDggQEAgaW50ZXJmYWNlIEhUTUxGcmFtZUVsZW1l
bnQgOiBIVE1MRWxlbWVudAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVhZG9ubHkgYXR0
cmlidXRlIERvY3VtZW50IGNvbnRlbnREb2N1bWVudDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
V2luZG93UHJveHkgY29udGVudFdpbmRvdzsKIAotICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQs
IFJlZmxlY3RdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBt
YXJnaW5IZWlnaHQ7Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmli
dXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1hcmdpbldpZHRoOworICAg
IFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmddIERPTVN0cmluZyBtYXJnaW5IZWlnaHQ7CisgICAgW0NFUmVhY3Rpb25zPU5v
dE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9N
U3RyaW5nIG1hcmdpbldpZHRoOwogCiAgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlLCBNYXlUaHJv
d0V4Y2VwdGlvbl0gRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMuaWRsCShyZXZpc2lv
biAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRp
bHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5v
SW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJmYWNl
IEhUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMgewogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQs
IFJlZmxlY3QsIFVSTF0gc3RyaW5naWZpZXIgYXR0cmlidXRlIFVTVlN0cmluZyBocmVmOwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgb3JpZ2luOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
Myw4ICsyMyw4IEBAIGludGVyZmFjZSBIVE1MSUZyYW1lRWxlbWVudCA6IEhUTUxFbGVtZW4KICAg
ICBbUmVmbGVjdCwgQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZy
YW1lQm9yZGVyOwogICAgIFtSZWZsZWN0LCBDRVJlYWN0aW9ucz1Ob3ROZWVkZWRdIGF0dHJpYnV0
ZSBET01TdHJpbmcgaGVpZ2h0OwogICAgIFtSZWZsZWN0LCBVUkwsIENFUmVhY3Rpb25zPU5vdE5l
ZWRlZF0gYXR0cmlidXRlIFVTVlN0cmluZyBsb25nRGVzYzsKLSAgICBbUmVmbGVjdCwgQ0VSZWFj
dGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01T
dHJpbmcgbWFyZ2luSGVpZ2h0OwotICAgIFtSZWZsZWN0LCBDRVJlYWN0aW9ucz1Ob3ROZWVkZWRd
IGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBtYXJnaW5XaWR0
aDsKKyAgICBbUmVmbGVjdCwgQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgW0xlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luSGVpZ2h0OworICAgIFtSZWZsZWN0
LCBDRVJlYWN0aW9ucz1Ob3ROZWVkZWRdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmddIERPTVN0cmluZyBtYXJnaW5XaWR0aDsKICAgICBbUmVmbGVjdCwgQ0VSZWFjdGlvbnM9Tm90
TmVlZGVkXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7CiAKICAgICBbUHV0Rm9yd2FyZHM9dmFs
dWVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01Ub2tlbkxpc3Qgc2FuZGJveDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsNyBAQAogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0
dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZs
ZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsaWduOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVk
ZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWx0OwotICAgIFtDRVJlYWN0aW9ucz1O
b3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERP
TVN0cmluZyBib3JkZXI7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0
cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJvcmRlcjsKICAgICBb
Q0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBjcm9zc09yaWdpbjsK
ICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBoZWln
aHQ7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgaHNwYWNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBACiAgICAgW0NFUmVh
Y3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRlIERPTVN0cmluZyB0eXBlOyAvLyByZWFkb25seSBk
cm9wcGVkIGFzIHBhcnQgb2YgRE9NIGxldmVsIDIKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVk
XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlZmF1bHRWYWx1ZTsKICAgICAvLyBTZWUgdGhlIGRpc2N1
c3Npb24gaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDA4NQot
ICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWRdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlT
dHJpbmddIERPTVN0cmluZyB2YWx1ZTsKKyAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRy
aWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWU7CiAgICAgYXR0
cmlidXRlIERhdGU/IHZhbHVlQXNEYXRlOwogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91
YmxlIHZhbHVlQXNOdW1iZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVj
dEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVj
dEVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPYmplY3RFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogICAg
IFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgY29k
ZTsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGFsaWduOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0
ZSBET01TdHJpbmcgYXJjaGl2ZTsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0
XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgYm9yZGVyOwor
ICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBib3JkZXI7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5l
ZWRlZCwgUmVmbGVjdCwgVVJMXSBhdHRyaWJ1dGUgVVNWU3RyaW5nIGNvZGVCYXNlOwogICAgIFtD
RVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgY29kZVR5
cGU7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdCwgVVJMXSBhdHRyaWJ1dGUg
VVNWU3RyaW5nIGRhdGE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPckZvcmVpZ25F
bGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPckZvcmVp
Z25FbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3JGb3JlaWduRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAK
IC8vIEZJWE1FOiB1cGRhdGUgYWJvdmUgbGluayB3aGVuIHRoaXMgY2hhbmdlIGhhcyBiZWVuIGlt
cGxlbWVudGVkOgogLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9odG1sL2lzc3Vlcy80NzAy
CiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Qs
CiBdIGludGVyZmFjZSBIVE1MT3JGb3JlaWduRWxlbWVudCB7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZ01hcCBkYXRhc2V0OyAvLyBGSVhNRTogU2hvdWxkIGJlIFtTYW1lT2JqZWN0
XS4KICAgICBbQ0VSZWFjdGlvbnMsIEltcGxlbWVudGVkQXM9dGFiSW5kZXhGb3JCaW5kaW5nc10g
YXR0cmlidXRlIGxvbmcgdGFiSW5kZXg7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
dXRwdXRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
dXRwdXRFbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3V0cHV0RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAg
aW50ZXJmYWNlIEhUTUxPdXRwdXRFbGVtZW50IDogSFRNTEVsZW1lbgogICAgIFtDRVJlYWN0aW9u
cz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKIAogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsKLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJp
YnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBkZWZhdWx0VmFsdWU7Ci0g
ICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01T
dHJpbmcgdmFsdWU7CisgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nXSBET01TdHJpbmcgZGVmYXVsdFZhbHVlOworICAgIFtDRVJlYWN0aW9uc10gYXR0
cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVlOwogCiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2lsbFZhbGlkYXRlOwogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBWYWxpZGl0eVN0YXRlIHZhbGlkaXR5OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVDZWxsRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yMiw3ICsyMiw3IEBAIGludGVyZmFjZSBIVE1MVGFibGVDZWxsRWxlbWVudCA6IEhUTUxFbGUK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBjZWxsSW5kZXg7CiAgICAgW0NFUmVhY3Rpb25z
PU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBhbGlnbjsKICAgICBbQ0VS
ZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGF4aXM7Ci0g
ICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxB
cz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5l
ZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3Ry
aW5nIGJnQ29sb3I7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdD1jaGFyXSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGNoOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxl
Y3Q9Y2hhcm9mZl0gYXR0cmlidXRlIERPTVN0cmluZyBjaE9mZjsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
NiwxMCArMjYsMTAgQEAgaW50ZXJmYWNlIEhUTUxUYWJsZUVsZW1lbnQgOiBIVE1MRWxlbWVudAog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MQ29sbGVjdGlvbiByb3dzOwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBIVE1MQ29sbGVjdGlvbiB0Qm9kaWVzOwogICAgIFtDRVJlYWN0aW9ucz1Ob3RO
ZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWxpZ247Ci0gICAgW0NFUmVhY3Rp
b25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmlu
Z10gRE9NU3RyaW5nIGJnQ29sb3I7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVj
dF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7
CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmlu
ZyBib3JkZXI7Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRl
IFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGNlbGxQYWRkaW5nOwotICAgIFtD
RVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1w
dHlTdHJpbmddIERPTVN0cmluZyBjZWxsU3BhY2luZzsKKyAgICBbQ0VSZWFjdGlvbnM9Tm90TmVl
ZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJp
bmcgY2VsbFBhZGRpbmc7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0
cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGNlbGxTcGFjaW5nOwog
CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmlu
ZyBmcmFtZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1l
bnQuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZVJvd0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBAIGludGVyZmFj
ZSBIVE1MVGFibGVSb3dFbGVtZW50IDogSFRNTEVsZW0KICAgICByZWFkb25seSBhdHRyaWJ1dGUg
bG9uZyBzZWN0aW9uUm93SW5kZXg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxDb2xsZWN0
aW9uIGNlbGxzOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0
ZSBET01TdHJpbmcgYWxpZ247Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0g
YXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7Cisg
ICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5l
ZWRlZCwgUmVmbGVjdD1jaGFyXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNoOwogICAgIFtDRVJlYWN0
aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3Q9Y2hhcm9mZl0gYXR0cmlidXRlIERPTVN0cmluZyBjaE9m
ZjsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIHZBbGlnbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBpbnRlcmZh
Y2UgSFRNTFRleHRBcmVhRWxlbWVudCA6IEhUTUxFbGVtCiAKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIHR5cGU7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRl
IERPTVN0cmluZyBkZWZhdWx0VmFsdWU7Ci0gICAgYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0
eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVlOworICAgIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyB0ZXh0TGVuZ3RoOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2ls
bFZhbGlkYXRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5j
ZWRBcnJheXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FO
R0xFSW5zdGFuY2VkQXJyYXlzLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIEdlbmVy
YXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKIF0gaW50ZXJmYWNlIEFO
R0xFSW5zdGFuY2VkQXJyYXlzIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc0NvbXBvc2l0aW5nLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNDb21wb3NpdGluZy5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0NvbXBvc2l0aW5nLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKQogXSBp
bnRlcmZhY2UgQ2FudmFzQ29tcG9zaXRpbmcgewogICAgIC8vIEZJWE1FOiBBbGwgdGhlIHVucmVz
dHJpY3RlZCBmbG9hdCBhdHRyaWJ1dGVzIGJlbG93IHNob3VsZCBiZSB1bnJlc3RyaWN0ZWQgZG91
Ymxlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0RyYXdJbWFnZS5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRHJhd0lt
YWdlLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzRHJhd0ltYWdlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCB0eXBl
ZGVmIChIVE1MSW1hZ2VFbGVtZW50IG9yIEhUTUxDYW52YXNFCiApIENhbnZhc0ltYWdlU291cmNl
OwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3QsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc0RyYXdJ
bWFnZSB7CiAgICAgLy8gRklYTUU6IEFsbCB0aGUgdW5yZXN0cmljdGVkIGZsb2F0IGFyZ3VtZW50
cyBiZWxvdyBzaG91bGQgYmUgdW5yZXN0cmljdGVkIGRvdWJsZXMuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNEcmF3UGF0aC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRHJhd1BhdGguaWRsCShyZXZpc2lvbiAyNjY2MzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNEcmF3UGF0aC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93LFdv
cmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc0RyYXdQYXRoIHsKICAgICAvLyBwYXRoIEFQSSAoc2Vl
IGFsc28gQ2FudmFzUGF0aCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c0ZpbGxTdHJva2VTdHlsZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc0ZpbGxTdHJva2VTdHlsZXMuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNGaWxsU3Ryb2tlU3R5bGVzLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCB0eXBlZGVmIChIVE1MSW1hZ2VFbGVtZW50IG9y
IEhUTUxDYW52YXNFCiApIENhbnZhc0ltYWdlU291cmNlOwogCiBbCi0gICAgTm9JbnRlcmZhY2VP
YmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93
LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc0ZpbGxTdHJva2VTdHlsZXMgewogICAgIC8vIGNv
bG9ycyBhbmQgc3R5bGVzIChzZWUgYWxzbyB0aGUgQ2FudmFzUGF0aERyYXdpbmdTdHlsZXMgYW5k
IENhbnZhc1RleHREcmF3aW5nU3R5bGVzIGludGVyZmFjZXMpCkBAIC00Nyw1ICs0Nyw1IEBAIHR5
cGVkZWYgKEhUTUxJbWFnZUVsZW1lbnQgb3IgSFRNTENhbnZhc0UKICAgICAvLyBGSVhNRTogQWxs
IHRoZSBmbG9hdCBwYXJhbWV0ZXJzIGJlbG93IHNob3VsZCBiZSBkb3VibGVzLgogICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gQ2FudmFzR3JhZGllbnQgY3JlYXRlTGluZWFyR3JhZGllbnQoZmxvYXQg
eDAsIGZsb2F0IHkwLCBmbG9hdCB4MSwgZmxvYXQgeTEpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gQ2FudmFzR3JhZGllbnQgY3JlYXRlUmFkaWFsR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkw
LCBmbG9hdCByMCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCByMSk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBDYW52YXNQYXR0ZXJuPyBjcmVhdGVQYXR0ZXJuKENhbnZhc0ltYWdlU291cmNl
IGltYWdlLCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyByZXBldGl0aW9uKTsK
KyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENhbnZhc1BhdHRlcm4/IGNyZWF0ZVBhdHRlcm4oQ2Fu
dmFzSW1hZ2VTb3VyY2UgaW1hZ2UsIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5n
IHJlcGV0aXRpb24pOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c0ZpbHRlcnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc0ZpbHRlcnMuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNGaWx0ZXJzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKQogXSBpbnRlcmZhY2UgQ2FudmFz
RmlsdGVycyB7CiAgICAgLy8gZmlsdGVycwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpCiBdIGlu
dGVyZmFjZSBDYW52YXNJbWFnZURhdGEgewogICAgIC8vIEZJWE1FOiBBbGwgdGhlIGZsb2F0IGFy
Z3VtZW50cyBiZWxvdyBzaG91bGQgYmUgbG9uZ3MuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNJbWFnZVNtb290aGluZy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VTbW9vdGhpbmcuaWRsCShyZXZpc2lvbiAyNjY2
MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNJbWFnZVNtb290aGluZy5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRl
cmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD0o
V2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc0ltYWdlU21vb3RoaW5nIHsKICAgICAv
LyBpbWFnZSBzbW9vdGhpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1BhdGguaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1BhdGguaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNQYXRoLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogICovCiAK
IFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
ICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKQogXSBpbnRlcmZhY2UgQ2FudmFzUGF0aCB7CiAg
ICAgLy8gc2hhcmVkIHBhdGggQVBJIG1ldGhvZHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1BhdGhEcmF3aW5nU3R5bGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoRHJhd2luZ1N0eWxlcy5pZGwJKHJldmlzaW9u
IDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGhEcmF3aW5n
U3R5bGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAg
ICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBF
eHBvc2VkPShXaW5kb3csV29ya2VyKQogXSBpbnRlcmZhY2UgQ2FudmFzUGF0aERyYXdpbmdTdHls
ZXMgewogICAgIC8vIEZJWE1FOiBBbGwgdGhlIHVucmVzdHJpY3RlZCBmbG9hdCBhcmd1bWVudHMg
LyBhdHRyaWJ1dGVzIGJlbG93IHNob3VsZCBiZSB1bnJlc3RyaWN0ZWQgZG91Ymxlcy4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlY3QuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlY3QuaWRsCShyZXZpc2lvbiAyNjY2
MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZWN0LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVj
dCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5kb3csV29y
a2VyKQogXSBpbnRlcmZhY2UgQ2FudmFzUmVjdCB7CiAgICAgLy8gRklYTUU6IEFsbCB0aGUgdW5y
ZXN0cmljdGVkIGZsb2F0IHBhcmFtZXRlcnMgYmVsb3cgc2hvdWxkIGJlIHVucmVzdHJpY3RlZCBk
b3VibGVzLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU2hhZG93U3R5
bGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNT
aGFkb3dTdHlsZXMuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNTaGFkb3dTdHlsZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsy
NCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpCiBdIGludGVyZmFjZSBD
YW52YXNTaGFkb3dTdHlsZXMgewogICAgIC8vIEZJWE1FOiBBbGwgdGhlIHVucmVzdHJpY3RlZCBm
bG9hdCBhdHRyaWJ1dGVzIGJlbG93IHNob3VsZCBiZSB1bnJlc3RyaWN0ZWQgZG91Ymxlcy4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0YXRlLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdGF0ZS5pZGwJKHJldmlzaW9u
IDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0YXRlLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFj
ZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5k
b3csV29ya2VyKQogXSBpbnRlcmZhY2UgQ2FudmFzU3RhdGUgewogICAgIC8vIHN0YXRlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNUZXh0LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNUZXh0LmlkbAkocmV2aXNpb24gMjY2
NjM0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVGV4dC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0g
aW50ZXJmYWNlIENhbnZhc1RleHQgewogICAgIC8vIEZJWE1FOiBBbGwgdGhlIHVucmVzdHJpY3Rl
ZCBmbG9hdCBwYXJhbWV0ZXJzIGJlbG93IHNob3VsZCBiZSB1bnJlc3RyaWN0ZWQgZG91Ymxlcy4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1RleHREcmF3aW5nU3R5bGVz
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNUZXh0
RHJhd2luZ1N0eWxlcy5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1RleHREcmF3aW5nU3R5bGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgQ2Fu
dmFzVGV4dERyYXdpbmdTdHlsZXMgewogICAgIC8vIHRleHQKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1RyYW5zZm9ybS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVHJhbnNmb3JtLmlkbAkocmV2aXNpb24gMjY2NjM0KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVHJhbnNmb3JtLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVj
dCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5kb3csV29y
a2VyKQogXSBpbnRlcmZhY2UgQ2FudmFzVHJhbnNmb3JtIHsKICAgICAvLyBGSVhNRTogQWxsIHRo
ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgcGFyYW1ldGVycyBiZWxvdyBzaG91bGQgYmUgdW5yZXN0cmlj
dGVkIGRvdWJsZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNVc2Vy
SW50ZXJmYWNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNVc2VySW50ZXJmYWNlLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzVXNlckludGVyZmFjZS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIENh
bnZhc1VzZXJJbnRlcmZhY2UgewogICAgIHVuZGVmaW5lZCBkcmF3Rm9jdXNJZk5lZWRlZChFbGVt
ZW50IGVsZW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQmxlbmRN
aW5NYXguaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEJs
ZW5kTWluTWF4LmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvRVhUQmxlbmRNaW5NYXguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBs
V2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgRVhUQmxlbmRNaW5NYXggewogICAgIGNv
bnN0IHVuc2lnbmVkIGxvbmcgTUlOX0VYVCA9IDB4ODAwNzsKICAgICBjb25zdCB1bnNpZ25lZCBs
b25nIE1BWF9FWFQgPSAweDgwMDg7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9F
WFRDb2xvckJ1ZmZlckZsb2F0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwK
KyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAg
ICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQKIF0gaW50ZXJm
YWNlIEVYVENvbG9yQnVmZmVyRmxvYXQgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0LmlkbAkocmV2aXNpb24gMjY2
NjM0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxv
YXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAqLwogCiBbCi0gICAgTm9J
bnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0
aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdD
b250ZXh0CiBdIGludGVyZmFjZSBFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdCB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZyYWdEZXB0aC5pZGwJKHJldmlzaW9uIDI2NjYz
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZyYWdEZXB0aC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVj
dCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwK
ICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQKIF0gaW50
ZXJmYWNlIEVYVEZyYWdEZXB0aCB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9F
WFRTaGFkZXJUZXh0dXJlTE9ELmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9FWFRTaGFkZXJUZXh0dXJlTE9ELmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3Qs
CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAg
ICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0CiBdIGludGVy
ZmFjZSBFWFRTaGFkZXJUZXh0dXJlTE9EIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmlkbAkocmV2
aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZp
bHRlckFuaXNvdHJvcGljLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogWwog
ICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdM
UmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyB7
CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBURVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCA9IDB4
ODRGRTsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIE1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZ
X0VYVCA9IDB4ODRGRjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVHNSR0Iu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVHNSR0IuaWRs
CShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRzUkdC
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogWwogICAgIENvbmRpdGlvbmFs
PVdFQkdMLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4
dCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
IF0gaW50ZXJmYWNlIEVYVHNSR0IgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgU1JHQl9FWFQg
PSAweDhDNDA7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBTUkdCX0FMUEhBX0VYVCA9IDB4OEM0
MjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0VsZW1lbnRJbmRleFVpbnQu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0VsZW1lbnRJ
bmRleFVpbnQuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQs
NyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVy
ZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hh
YmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCiBdIGludGVyZmFjZSBPRVNFbGVtZW50SW5k
ZXhVaW50IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVy
aXZhdGl2ZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1N0YW5kYXJkRGVyaXZhdGl2ZXMuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNyArMjcsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIERvTm90Q2hl
Y2tDb25zdGFudHMsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdD
b250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0LAogXSBpbnRlcmZhY2UgT0VTU3RhbmRhcmREZXJpdmF0aXZlcyB7CiAgICAgY29uc3QgdW5z
aWduZWQgbG9uZyBGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUyA9IDB4OEI4QjsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9h
dC5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVGbG9hdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwog
CiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Qs
CiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LAogXSBpbnRlcmZhY2UgT0VTVGV4dHVyZUZsb2F0IHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVhci5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0TGlu
ZWFyLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T0VTVGV4dHVyZUZsb2F0TGluZWFyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxl
PUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCiBdIGludGVyZmFjZSBPRVNUZXh0dXJlRmxvYXRM
aW5lYXIgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZG
bG9hdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4
dHVyZUhhbGZGbG9hdC5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3
ICsyNSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIEdlbmVyYXRlSXNS
ZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKIF0gaW50ZXJmYWNlIE9FU1RleHR1
cmVIYWxmRmxvYXQgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVy
ZUhhbGZGbG9hdExpbmVhci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJm
YWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIENvbmRpdGlvbmFs
PVdFQkdMLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4
dCwKIF0gaW50ZXJmYWNlIE9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIgewpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmlkbAko
cmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4
QXJyYXlPYmplY3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29u
ZGl0aW9uYWw9V0VCR0wsIAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgR2VuZXJhdGVJ
c1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2Jq
ZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgT0VTVmVydGV4
QXJyYXlPYmplY3QgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgVkVSVEVYX0FSUkFZX0JJTkRJ
TkdfT0VTID0gMHg4NUI1OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbG9yQnVmZmVyRmxvYXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVj
dCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwK
ICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQKIF0gaW50
ZXJmYWNlIFdlYkdMQ29sb3JCdWZmZXJGbG9hdCB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaWRsCShy
ZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlQVNUQy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAg
ICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIEdlbmVy
YXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0ludGVyZmFj
ZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVBU1RDIHsKICAgICAvKiBDb21wcmVzc2VkIFRleHR1cmUgRm9ybWF0
ICovCiAgICAgY29uc3QgR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFIgPSAweDkz
QjA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlQVRDLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlQVRDLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBEb05v
dENoZWNrQ29uc3RhbnRzLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVy
aW5nQ29udGV4dCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKIF0gaW50ZXJmYWNlIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMgewogICAgIGNv
bnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9SR0JfQVRDX1dFQkdMID0gMHg4QzkyOwogICAg
IGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9SR0JBX0FUQ19FWFBMSUNJVF9BTFBIQV9X
RUJHTCA9IDB4OEM5MzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5pZGwJKHJldmlzaW9uIDI2NjYzNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMx
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogICAgIENvbmRpdGlvbmFsPVdF
QkdMLAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1J
bXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUVUQzEgewogICAgIC8qIENvbXByZXNzZWQgVGV4dHVyZSBGb3JtYXRzICovCiAgICAgY29uc3Qg
dW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1JHQl9FVEMxX1dFQkdMID0gMHg4RDY0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUVUQy5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgRG9Ob3RDaGVja0NvbnN0
YW50cywKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQs
Ci0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBd
IGludGVyZmFjZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDIHsKICAgICAvKiBDb21wcmVzc2Vk
IFRleHR1cmUgRm9ybWF0ICovCiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1Ix
MV9FQUMgICAgICAgICAgICAgICAgICAgICAgICA9IDB4OTI3MDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBW
UlRDLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyAr
MjcsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIERvTm90Q2hlY2tDb25zdGFudHMs
CiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAg
IE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRl
cmZhY2UgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDIHsKICAgICBjb25zdCB1bnNpZ25lZCBs
b25nIENPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcgPSAweDhDMDA7CiAgICAgY29uc3Qg
dW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HID0gMHg4QzAxOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgRG9Ob3RD
aGVja0NvbnN0YW50cywKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmlu
Z0NvbnRleHQsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QsCiBdIGludGVyZmFjZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyB7CiAgICAgY29u
c3QgdW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUID0gMHg4M0YwOwog
ICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgPSAw
eDgzRjE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQ3NSR0IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5pZGwJKHJldmlzaW9uIDI2NjYzNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
c1JHQi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICBDb25kaXRpb25h
bD1XRUJHTCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIEdlbmVyYXRlSXNSZWFjaGFi
bGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAg
ICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDc1JHQiB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1NSR0Jf
UzNUQ19EWFQxX0VYVCA9IDB4OEM0QzsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIENPTVBSRVNT
RURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUID0gMHg4QzREOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5pZGwJKHJl
dmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdS
ZW5kZXJlckluZm8uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29u
ZGl0aW9uYWw9V0VCR0wsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBHZW5lcmF0ZUlz
UmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCi0gICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBXZWJHTERlYnVn
UmVuZGVyZXJJbmZvIHsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIFVOTUFTS0VEX1ZFTkRPUl9X
RUJHTCA9IDB4OTI0NTsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIFVOTUFTS0VEX1JFTkRFUkVS
X1dFQkdMID0gMHg5MjQ2OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
ZWJ1Z1NoYWRlcnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRGVidWdTaGFkZXJzLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1Jl
YWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0
LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgV2ViR0xEZWJ1Z1No
YWRlcnMgewogICAgIERPTVN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlKFdlYkdMU2hh
ZGVyIHNoYWRlcik7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
ZXB0aFRleHR1cmUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRGVwdGhUZXh0dXJlLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw3ICsyNyw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgRG9Ob3RDaGVja0NvbnN0
YW50cywKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQs
Ci0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBd
IGludGVyZmFjZSBXZWJHTERlcHRoVGV4dHVyZSB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBV
TlNJR05FRF9JTlRfMjRfOF9XRUJHTCA9IDB4ODRGQTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmlkbAkocmV2aXNpb24gMjY2NjM0
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBHTGVu
dW07CiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9i
amVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUlt
cGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaWRsCShy
ZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTExvc2VD
b250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAg
ICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBD
b25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRl
cmluZ0NvbnRleHQsCiBdIGludGVyZmFjZSBXZWJHTExvc2VDb250ZXh0IHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyAr
NTMsNyBAQCB0eXBlZGVmIChIVE1MQ2FudmFzRWxlbWVudCkgV2ViR0xDYW52YXM7CiAgICAgQ3Vz
dG9tVG9KU09iamVjdCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIEpTQ3VzdG9tTWFy
a0Z1bmN0aW9uLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNl
T2JqZWN0LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAogXSBpbnRlcmZhY2UgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsCShyZXZpc2lv
biAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsK
LSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAg
ICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGwKIF0gaW50
ZXJmYWNlIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMgewpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaWRsCShyZXZpc2lvbiAyNjY2
MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29uZGl0aW9uYWw9VklERU8s
CiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0
LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAog
ICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAogXSBpbnRlcmZhY2UgVGV4dFRyYWNrQ3Vl
R2VuZXJpYyA6IFZUVEN1ZSB7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
VFRSZWdpb25MaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZUVFJlZ2lvbkxpc3QuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVFJlZ2lvbkxpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3
IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9VklERU8sCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZU
YWJsZSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVj
dCwKIF0gaW50ZXJmYWNlIFZUVFJlZ2lvbkxpc3QgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBnZXR0ZXIgVlRUUmVnaW9uPyBpdGVtKHVuc2lnbmVk
IGxvbmcgaW5kZXgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5l
QVBJSG9zdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJSG9zdC5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICsz
MSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKIF0gaW50ZXJmYWNl
IENvbW1hbmRMaW5lQVBJSG9zdCB7CiAgICAgdW5kZWZpbmVkIGNsZWFyQ29uc29sZU1lc3NhZ2Vz
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMy
LDcgQEAKIAogWwogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgTm9JbnRlcmZh
Y2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBJbnNw
ZWN0b3JGcm9udGVuZEhvc3QgewogICAgIHVuZGVmaW5lZCBsb2FkZWQoKTsKICAgICB1bmRlZmlu
ZWQgY2xvc2VXaW5kb3coKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlz
aW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsMTEgKzUxLDExIEBAIHR5cGVkZWYgVVNWU3RyaW5nIENTU09NU3RyaW5n
OwogICAgIEV4cG9zZWQ9V2luZG93LAogXSBpbnRlcmZhY2UgRE9NV2luZG93IDogRXZlbnRUYXJn
ZXQgewogICAgIC8vIFRoZSBjdXJyZW50IGJyb3dzaW5nIGNvbnRleHQuCi0gICAgW0RvTm90Q2hl
Y2tTZWN1cml0eSwgVW5mb3JnZWFibGUsIEN1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRl
IFdpbmRvd1Byb3h5IHdpbmRvdzsKKyAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBMZWdhY3lVbmZv
cmdlYWJsZSwgQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgd2lu
ZG93OwogICAgIFtSZXBsYWNlYWJsZSwgRG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXIsIEN1c3Rv
bUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHNlbGY7Ci0gICAgW1VuZm9y
Z2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQgZG9jdW1lbnQ7CisgICAgW0xlZ2Fj
eVVuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQgZG9jdW1lbnQ7CiAgICAg
YXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwotICAgIFtEb05vdENoZWNrU2VjdXJpdHksIFB1dEZv
cndhcmRzPWhyZWYsIFVuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgTG9jYXRpb24gbG9j
YXRpb247CisgICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgUHV0Rm9yd2FyZHM9aHJlZiwgTGVnYWN5
VW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBMb2NhdGlvbiBsb2NhdGlvbjsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgSGlzdG9yeSBoaXN0b3J5OwogICAgIFtFbmFibGVkQnlTZXR0aW5n
PUN1c3RvbUVsZW1lbnRzLCBJbXBsZW1lbnRlZEFzPWVuc3VyZUN1c3RvbUVsZW1lbnRSZWdpc3Ry
eV0gcmVhZG9ubHkgYXR0cmlidXRlIEN1c3RvbUVsZW1lbnRSZWdpc3RyeSBjdXN0b21FbGVtZW50
czsKICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBCYXJQcm9wIGxvY2F0aW9u
YmFyOwpAQCAtNzQsMTEgKzc0LDExIEBAIHR5cGVkZWYgVVNWU3RyaW5nIENTU09NU3RyaW5nOwog
ICAgIC8vIE90aGVyIGJyb3dzaW5nIGNvbnRleHRzLgogICAgIFtSZXBsYWNlYWJsZSwgRG9Ob3RD
aGVja1NlY3VyaXR5T25HZXR0ZXIsIEN1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIFdp
bmRvd1Byb3h5IGZyYW1lczsKICAgICBbUmVwbGFjZWFibGUsIERvTm90Q2hlY2tTZWN1cml0eU9u
R2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7Ci0gICAgW0Rv
Tm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyLCBVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRl
IFdpbmRvd1Byb3h5PyB0b3A7CisgICAgW0RvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyLCBMZWdh
Y3lVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5PyB0b3A7CiAgICAg
W0RvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyLCBDdXN0b21TZXR0ZXJdIGF0dHJpYnV0ZSBXaW5k
b3dQcm94eT8gb3BlbmVyOwogICAgIFtSZXBsYWNlYWJsZSwgRG9Ob3RDaGVja1NlY3VyaXR5T25H
ZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gcGFyZW50OwogICAgIFtDaGVj
a1NlY3VyaXR5Rm9yTm9kZV0gcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IGZyYW1lRWxlbWVu
dDsKLSAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gV2luZG93UHJveHk/IG9wZW4ob3B0aW9uYWwgVVNWU3RyaW5nIHVybCA9ICIiLCBvcHRp
b25hbCBET01TdHJpbmcgdGFyZ2V0ID0gIl9ibGFuayIsIG9wdGlvbmFsIFtUcmVhdE51bGxBcz1F
bXB0eVN0cmluZ10gRE9NU3RyaW5nIGZlYXR1cmVzID0gIiIpOworICAgIFtDYWxsV2l0aD1BY3Rp
dmVXaW5kb3cmRmlyc3RXaW5kb3csIE1heVRocm93RXhjZXB0aW9uXSBXaW5kb3dQcm94eT8gb3Bl
bihvcHRpb25hbCBVU1ZTdHJpbmcgdXJsID0gIiIsIG9wdGlvbmFsIERPTVN0cmluZyB0YXJnZXQg
PSAiX2JsYW5rIiwgb3B0aW9uYWwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcg
ZmVhdHVyZXMgPSAiIik7CiAKICAgICAvLyBUaGUgdXNlciBhZ2VudC4KICAgICByZWFkb25seSBh
dHRyaWJ1dGUgTmF2aWdhdG9yIG5hdmlnYXRvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
R2xvYmFsQ3J5cHRvLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2Jh
bENyeXB0by5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2xv
YmFsQ3J5cHRvLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogKi8KIAogWwot
ICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBp
bnRlcmZhY2UgR2xvYmFsQ3J5cHRvIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ3J5cHRvIGNy
eXB0bzsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbFBlcmZvcm1hbmNlLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbFBlcmZvcm1hbmNlLmlk
bAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxQZXJmb3Jt
YW5jZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIC8vIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby9oci10aW1lLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50
ZXJmYWNlIEdsb2JhbFBlcmZvcm1hbmNlIHsKICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBQZXJmb3JtYW5jZSBwZXJmb3JtYW5jZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvTG9jYXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRp
b24uaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9u
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQAogICAgIEdlbmVyYXRlSXNSZWFj
aGFibGU9UmVhY2hhYmxlRnJvbURPTVdpbmRvdywKICAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4
b3RpY09iamVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIFVuZm9yZ2Vh
YmxlCisgICAgTGVnYWN5VW5mb3JnZWFibGUKIF0gaW50ZXJmYWNlIExvY2F0aW9uIHsKICAgICBb
U2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBEb05vdENoZWNrU2VjdXJp
dHlPblNldHRlcl0gc3RyaW5naWZpZXIgYXR0cmlidXRlIFVTVlN0cmluZyBocmVmOwogCkBAIC02
Miw1ICs2Miw1IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBvcmlnaW47CiAK
ICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIFNhbWVPYmplY3QuCi0gICAgW1VuZm9yZ2Vh
YmxlLCBDYWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IGFu
Y2VzdG9yT3JpZ2luczsKKyAgICBbTGVnYWN5VW5mb3JnZWFibGUsIENhY2hlZEF0dHJpYnV0ZV0g
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZ0xpc3QgYW5jZXN0b3JPcmlnaW5zOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9ySUQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9ySUQuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvcklELmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NyArMjcsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0CiBdIGludGVyZmFjZSBOYXZpZ2F0b3JJRCB7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBhcHBDb2RlTmFtZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGFwcE5hbWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckxh
bmd1YWdlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckxh
bmd1YWdlLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZp
Z2F0b3JMYW5ndWFnZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAqLwog
CiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdAog
XSBpbnRlcmZhY2UgTmF2aWdhdG9yTGFuZ3VhZ2UgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgbGFuZ3VhZ2U7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEZyb3plbkFycmF5PERP
TVN0cmluZz4gbGFuZ3VhZ2VzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JP
bkxpbmUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yT25M
aW5lLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0
b3JPbkxpbmUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgKi8KIAogWwot
ICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50
ZXJmYWNlIE5hdmlnYXRvck9uTGluZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4g
b25MaW5lOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yUGx1Z2lucy5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JQbHVnaW5zLmlk
bAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JQbHVn
aW5zLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBO
b0ludGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0CiBdIGludGVyZmFj
ZSBOYXZpZ2F0b3JQbHVnaW5zIHsKICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRl
IERPTVBsdWdpbkFycmF5IHBsdWdpbnM7CiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01NaW1lVHlwZUFycmF5IG1pbWVUeXBlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvTmF2aWdhdG9yU2VydmljZVdvcmtlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9OYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwK
KyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1TRVJWSUNFX1dP
UktFUiwKICAgICBFbmFibGVkQXRSdW50aW1lPVNlcnZpY2VXb3JrZXIKIF0gaW50ZXJmYWNlIE5h
dmlnYXRvclNlcnZpY2VXb3JrZXIgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0
b3JTaGFyZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JT
aGFyZS5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdh
dG9yU2hhcmUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIAogWwotICAg
IE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEVu
YWJsZWRCeVNldHRpbmc9V2ViU2hhcmUKIF0gaW50ZXJmYWNlIE5hdmlnYXRvclNoYXJlIHsKICAg
ICBbQ2FsbFdpdGg9RG9jdW1lbnQsIFNlY3VyZUNvbnRleHRdIGJvb2xlYW4gY2FuU2hhcmUob3B0
aW9uYWwgU2hhcmVEYXRhIHNoYXJlRGF0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Jl
bW90ZURPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9SZW1v
dGVET01XaW5kb3cuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbW90ZURPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQwLDIwICs0MCwyMCBAQAog
ICAgIEpTQ3VzdG9tVG9OYXRpdmVPYmplY3QsCiAgICAgSlNMZWdhY3lQYXJlbnQ9SlNSZW1vdGVE
T01XaW5kb3dCYXNlLAogICAgIExlZ2FjeVVuZW51bWVyYWJsZU5hbWVkUHJvcGVydGllcywKLSAg
ICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBH
bG9iYWw9V2luZG93LAogICAgIEV4cG9zZWQ9V2luZG93LAogXSBpbnRlcmZhY2UgUmVtb3RlRE9N
V2luZG93IHsKLSAgICBbVW5mb3JnZWFibGUsIEltcGxlbWVudGVkQXM9c2VsZl0gcmVhZG9ubHkg
YXR0cmlidXRlIFdpbmRvd1Byb3h5IHdpbmRvdzsKKyAgICBbTGVnYWN5VW5mb3JnZWFibGUsIElt
cGxlbWVudGVkQXM9c2VsZl0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHdpbmRvdzsK
ICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSBzZWxmOwot
ICAgIFtQdXRGb3J3YXJkcz1ocmVmLCBVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIExv
Y2F0aW9uPyBsb2NhdGlvbjsgLy8gRklYTUU6IFNob3VsZCBub3QgYmUgbnVsbGFibGUuCisgICAg
W1B1dEZvcndhcmRzPWhyZWYsIExlZ2FjeVVuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUg
TG9jYXRpb24/IGxvY2F0aW9uOyAvLyBGSVhNRTogU2hvdWxkIG5vdCBiZSBudWxsYWJsZS4KICAg
ICBbQ2FsbFdpdGg9SW5jdW1iZW50RG9jdW1lbnQsIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVu
ZGVmaW5lZCBjbG9zZSgpOwogICAgIFtGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSByZWFkb25seSBh
dHRyaWJ1dGUgYm9vbGVhbiBjbG9zZWQ7CiAgICAgW0NhbGxXaXRoPUluY3VtYmVudFdpbmRvdywg
Rm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGZvY3VzKCk7CiAgICAgW0ZvcndhcmRE
ZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBibHVyKCk7CiAgICAgW1JlcGxhY2VhYmxlLCBJbXBs
ZW1lbnRlZEFzPXNlbGZdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSBmcmFtZXM7CiAg
ICAgW1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7
Ci0gICAgW1VuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHk/IHRvcDsK
KyAgICBbTGVnYWN5VW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8g
dG9wOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gb3BlbmVyOwogICAgIFtS
ZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5PyBwYXJlbnQ7CiAgICAg
W0NhbGxXaXRoPUdsb2JhbE9iamVjdCZJbmN1bWJlbnRXaW5kb3csIEZvcndhcmREZWNsYXJlSW5I
ZWFkZXJdIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgVVNWU3RyaW5nIHRhcmdl
dE9yaWdpbiwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RXZlbnRIYW5kbGVycy5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dFdmVudEhhbmRsZXJzLmlkbAkocmV2aXNpb24g
MjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dFdmVudEhhbmRsZXJzLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiAvLyBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjd2luZG93ZXZlbnRoYW5kbGVycwog
WwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAog
XSBpbnRlcmZhY2UgV2luZG93RXZlbnRIYW5kbGVycyB7CiAgICAgLy8gQ29tbWVudGVkIG91dCBl
dmVudCBoYW5kbGVycyBhcmUgZGVmaW5lZCBieSB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiBidXQK
ICAgICAvLyBhcmUgbm90IHlldCBpbXBsZW1lbnRlZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9XaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlLmlkbAkocmV2aXNpb24gMjY2NjM0
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCB0eXBlZGVmIChIVE1MSW1hZ2VFbGVtZW50
CiB0eXBlZGVmIChDYW52YXNJbWFnZVNvdXJjZSBvciBCbG9iIG9yIEltYWdlRGF0YSkgSW1hZ2VC
aXRtYXBTb3VyY2U7CiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFdpbmRvd09yV29ya2VyR2xvYmFsU2NvcGUgewog
ICAgIFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBvcmlnaW47CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNW
R0FuaW1hdGVkTGVuZ3RoIHg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVu
Z3RoIHk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmlkbAkocmV2aXNp
b24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VP
YmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBTVkdGaXRU
b1ZpZXdCb3ggewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFJlY3Qgdmlld0Jv
eDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlv
IHByZXNlcnZlQXNwZWN0UmF0aW87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5pZGwJKHJldmlz
aW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3Qs
CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgU3VwcHJlc3NUb0pTT2JqZWN0LAog
XSBpbnRlcmZhY2UgU1ZHVGVzdHMgewogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1
dGUgU1ZHU3RyaW5nTGlzdCByZXF1aXJlZEZlYXR1cmVzOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1VSSVJlZmVyZW5jZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VSSVJlZmVyZW5jZS5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdVUklSZWZlcmVuY2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBA
CiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNl
T2JqZWN0LAogICAgIFN1cHByZXNzVG9KU09iamVjdCwKIF0gaW50ZXJmYWNlIFNWR1VSSVJlZmVy
ZW5jZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGhyZWY7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uaWRsCShyZXZpc2lvbiAyNjY2MzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBTVkdab29tQW5kUGFuIHsKICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfWk9PTUFORFBBTl9VTktOT1dOID0gMDsKICAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBTVkdfWk9PTUFORFBBTl9ESVNBQkxFID0gMTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysg
U291cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNyArMzAsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAog
ICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRlcmZhY2Ug
R0NPYnNlcnZhdGlvbiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxT
ZXR0aW5ncy5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgZW51
bSBGcmFtZUZsYXR0ZW5pbmdWYWx1ZSB7ICJEaXNhYmxlZCIsIAogZW51bSBGb250TG9hZFRpbWlu
Z092ZXJyaWRlIHsgIkJsb2NrIiwgIlN3YXAiLCAiRmFpbHVyZSIgfTsKIAogWwotICAgIE5vSW50
ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEpTR2VuZXJh
dGVUb0pTT2JqZWN0LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JU
LAogXSBpbnRlcmZhY2UgSW50ZXJuYWxTZXR0aW5ncyA6IEludGVybmFsU2V0dGluZ3NHZW5lcmF0
ZWQgewpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMjY2
NjM0KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDYsNyArMjQ2LDcgQEAgZW51bSBDb250ZW50U2l6ZUNhdGVnb3J5IHsKIAogWwog
ICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAotICAgIE5vSW50ZXJm
YWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgSW50
ZXJuYWxzIHsKICAgICBET01TdHJpbmcgYWRkcmVzcyhOb2RlIG5vZGUpOwogICAgIGJvb2xlYW4g
bm9kZU5lZWRzU3R5bGVSZWNhbGMoTm9kZSBub2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzTWFwTGlrZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHNNYXBMaWtlLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHNNYXBMaWtlLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX1RFU1RTVVBQT1JU
X0VYUE9SVCwKICAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbiwKIF0gaW50ZXJmYWNlIEludGVybmFs
c01hcExpa2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzU2V0TGlrZS5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHNTZXRMaWtl
LmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHNTZXRMaWtlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsK
LSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAg
ICBFeHBvcnRNYWNybz1XRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCwKICAgICBTa2lwVlRhYmxl
VmFsaWRhdGlvbiwKIF0gaW50ZXJmYWNlIEludGVybmFsc1NldExpa2UKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTWFsbG9jU3RhdGlzdGljcy5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvdGVzdGluZy9NYWxsb2NTdGF0aXN0aWNzLmlkbAkocmV2aXNpb24gMjY2NjM0KQor
KysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9NYWxsb2NTdGF0aXN0aWNzLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwK
KyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRh
YmxlLAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRl
cmZhY2UgTWFsbG9jU3RhdGlzdGljcyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01l
bW9yeUluZm8uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTWVtb3J5
SW5mby5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTWVt
b3J5SW5mby5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICAqLwogCiBbCi0g
ICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAg
SW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX1RFU1RT
VVBQT1JUX0VYUE9SVCwKIF0gaW50ZXJmYWNlIE1lbW9yeUluZm8gewpJbmRleDogU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEsCi0g
ICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAg
RXhwb3J0TWFjcm89V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQsCiBdIGludGVyZmFjZSBNb2Nr
Q0RNRmFjdG9yeSB7CiAgICAgYXR0cmlidXRlIHNlcXVlbmNlPERPTVN0cmluZz4gc3VwcG9ydGVk
RGF0YVR5cGVzOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRl
clNldHRpbmdzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw3ICszOSw3IEBAIGVudW0gRGVjaXNpb24gewogCiBbCiAgICAgQ29uZGl0aW9uYWw9
Q09OVEVOVF9GSUxURVJJTkcsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3QsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQogXSBpbnRlcmZh
Y2UgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyB7CiAgICAgYXR0cmlidXRlIGJvb2xlYW4gZW5h
YmxlZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheS5pZGwJ
KHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVy
bGF5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBO
b0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBJbXBs
ZW1lbnRhdGlvbkxhY2tzVlRhYmxlCiBdIGludGVyZmFjZSBNb2NrUGFnZU92ZXJsYXkgewogICAg
IHVuZGVmaW5lZCBzZXRGcmFtZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB3aWR0aCwgZG91
YmxlIGhlaWdodCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29v
cmRpbmF0b3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1Bh
eW1lbnRDb29yZGluYXRvci5pZGwJKHJldmlzaW9uIDI2NjYzNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1
LDcgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWSwKLSAgICBOb0ludGVy
ZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIE1v
Y2tQYXltZW50Q29vcmRpbmF0b3IgewogICAgIHVuZGVmaW5lZCBzZXRDYW5NYWtlUGF5bWVudHMo
Ym9vbGVhbiBjYW5NYWtlUGF5bWVudHMpOwogICAgIHVuZGVmaW5lZCBzZXRDYW5NYWtlUGF5bWVu
dHNXaXRoQWN0aXZlQ2FyZChib29sZWFuIGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJu
YWxzLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2
aWNlV29ya2VySW50ZXJuYWxzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAog
ICAgIENvbmRpdGlvbmFsPVNFUlZJQ0VfV09SS0VSLAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVf
VEVTVFNVUFBPUlRfRVhQT1JULAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAg
Tm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVy
ZmFjZSBTZXJ2aWNlV29ya2VySW50ZXJuYWxzIHsKICAgICB1bmRlZmluZWQgc2V0T25saW5lKGJv
b2xlYW4gaXNPbmxpbmUpOwogICAgIFByb21pc2U8UmVzcG9uc2U+IHdhaXRGb3JGZXRjaEV2ZW50
VG9GaW5pc2goRmV0Y2hFdmVudCBldmVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L1R5cGVDb252ZXJzaW9ucy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9UeXBlQ29udmVyc2lvbnMuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0
LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKICAgICBFeHBvcnRN
YWNybz1XRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCwKIF0gaW50ZXJmYWNlIFR5cGVDb252ZXJz
aW9ucyB7CkBAIC02NCw3ICs2NCw3IEBACiAgICAgYXR0cmlidXRlIERPTVN0cmluZyB0ZXN0U3Ry
aW5nOwogICAgIGF0dHJpYnV0ZSBCeXRlU3RyaW5nIHRlc3RCeXRlU3RyaW5nOwogICAgIGF0dHJp
YnV0ZSBVU1ZTdHJpbmcgdGVzdFVTVlN0cmluZzsKLSAgICBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFz
PUVtcHR5U3RyaW5nXSBET01TdHJpbmcgdGVzdFRyZWF0TnVsbEFzRW1wdHlTdHJpbmc7CisgICAg
YXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHRlc3RUcmVhdE51
bGxBc0VtcHR5U3RyaW5nOwogCiAgICAgdW5kZWZpbmVkIHNldFRlc3RMb25nUmVjb3JkKHJlY29y
ZDxET01TdHJpbmcsIGxvbmc+IHJlY29yZCk7CiAgICAgcmVjb3JkPERPTVN0cmluZywgbG9uZz4g
dGVzdExvbmdSZWNvcmQoKTsKQEAgLTgxLDcgKzgxLDcgQEAKIAogICAgIGF0dHJpYnV0ZSAoRE9N
U3RyaW5nIG9yIFtDbGFtcF0gbG9uZyBvciBzZXF1ZW5jZTxbQ2xhbXBdIGxvbmc+KSB0ZXN0Q2xh
bXBVbmlvbjsKICAgICBhdHRyaWJ1dGUgKERPTVN0cmluZyBvciBbRW5mb3JjZVJhbmdlXSBsb25n
IG9yIHNlcXVlbmNlPFtFbmZvcmNlUmFuZ2VdIGxvbmc+KSB0ZXN0RW5mb3JjZVJhbmdlVW5pb247
Ci0gICAgYXR0cmlidXRlIChbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBvciBs
b25nIG9yIHNlcXVlbmNlPFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nPikgdGVz
dFRyZWF0TnVsbEFzRW1wdHlTdHJpbmdVbmlvbjsKKyAgICBhdHRyaWJ1dGUgKFtMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG9yIGxvbmcgb3Igc2VxdWVuY2U8W0xlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nXSBET01TdHJpbmc+KSB0ZXN0VHJlYXROdWxsQXNFbXB0eVN0cmluZ1VuaW9u
OwogfTsKIAogWwpAQCAtOTYsNyArOTYsNyBAQAogXSBkaWN0aW9uYXJ5IFR5cGVDb252ZXJzaW9u
c0RpY3Rpb25hcnkgewogICAgIGxvbmcgbG9uZ1ZhbHVlID0gMDsKICAgICBET01TdHJpbmcgc3Ry
aW5nVmFsdWUgPSAiIjsKLSAgICBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyB0
cmVhdE51bGxBc0VtcHR5U3RyaW5nVmFsdWUgPSAiIjsKKyAgICBbTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmddIERPTVN0cmluZyB0cmVhdE51bGxBc0VtcHR5U3RyaW5nVmFsdWUgPSAiIjsKICAgICBz
ZXF1ZW5jZTxET01TdHJpbmc+IHNlcXVlbmNlVmFsdWUgPSBbXTsKICAgICAoTm9kZSBvciBzZXF1
ZW5jZTxET01TdHJpbmc+IG9yIFR5cGVDb252ZXJzaW9uc090aGVyRGljdGlvbmFyeSkgdW5pb25W
YWx1ZSA9IG51bGw7CiAgICAgW0NsYW1wXSBsb25nIGNsYW1wTG9uZ1ZhbHVlID0gMDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5pZGwJKHJldmlzaW9uIDI2
NjYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQlhSLAogICAg
IEludGVyZmFjZU5hbWU9RmFrZVhSRGV2aWNlLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Qs
CiBdIGludGVyZmFjZSBXZWJGYWtlWFJEZXZpY2UgewogICAvLyBTZXRzIHRoZSB2YWx1ZXMgdG8g
YmUgdXNlZCBmb3Igc3Vic2VxdWVudAogICAvLyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKSBjYWxs
YmFja3MuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJv
bGxlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJ
bnB1dENvbnRyb2xsZXIuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDcgKzI4LDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJYUiwKICAgICBJbXBsZW1lbnRhdGlvbkxh
Y2tzVlRhYmxlLAogICAgIEludGVyZmFjZU5hbWU9RmFrZVhSSW5wdXRDb250cm9sbGVyLAotICAg
IE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJm
YWNlIFdlYkZha2VYUklucHV0Q29udHJvbGxlciB7CiAgICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhl
IGhhbmRlZG5lc3Mgb2YgdGhlIGRldmljZSBoYXMgY2hhbmdlZC4KICAgICB1bmRlZmluZWQgc2V0
SGFuZGVkbmVzcyhYUkhhbmRlZG5lc3MgaGFuZGVkbmVzcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL1dlYlhSVGVzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVz
dGluZy9XZWJYUlRlc3QuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1dlYlhSVGVzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICAg
ICBDb25kaXRpb25hbD1XRUJYUiwKICAgICBFeHBvc2VkPVdpbmRvdywKICAgICBJbnRlcmZhY2VO
YW1lPVhSVGVzdCwKLSAgICBOb0ludGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNl
T2JqZWN0CiBdIGludGVyZmFjZSBXZWJYUlRlc3QgewogICAgIC8vIFNpbXVsYXRlcyBjb25uZWN0
aW5nIGEgZGV2aWNlIHRvIHRoZSBzeXN0ZW0uCiAgICAgLy8gVXNlZCB0byBpbnN0YW50aWF0ZSBh
IGZha2UgZGV2aWNlIGZvciB1c2UgaW4gdGVzdHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL0Fic3RyYWN0V29ya2VyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL0Fic3RyYWN0V29ya2VyLmlkbAkocmV2aXNpb24gMjY2NjM0KQorKysgU291cmNlL1dlYkNv
cmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBBYnN0cmFjdFdvcmtlciB7CiAgICAgYXR0cmlidXRl
IEV2ZW50SGFuZGxlciBvbmVycm9yOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0
aE5TUmVzb2x2ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5T
UmVzb2x2ZXIuaWRsCShyZXZpc2lvbiAyNjY2MzQpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhOU1Jlc29sdmVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQAogICovCiAK
IFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
ICAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbiwKIF0gaW50ZXJmYWNlIFhQYXRoTlNSZXNvbHZlciB7
CiAgICAgRE9NU3RyaW5nPyBsb29rdXBOYW1lc3BhY2VVUkkoRE9NU3RyaW5nPyBwcmVmaXgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408030</attachid>
            <date>2020-09-04 15:23:56 -0700</date>
            <delta_ts>2020-09-04 15:31:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216194-20200904152355.patch</filename>
            <type>text/plain</type>
            <size>447941</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2MiBAQAorMjAyMC0wOS0wNCAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYklETF0gUmVhbGlnbiBvdXIg
SURMIGV4dGVuZGVkIGF0dHJpYnV0ZSBuYW1lcyB3aXRoIHRob3NlIHNwZWNpZmllZCBpbiBXZWJJ
REwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjE5
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE92ZXIg
dGltZSwgdGhlIFdlYklETCBhbmQgSFRNTCBzcGVjaWZpY2F0aW9ucyBoYXZlIGFkZGVkIC8gcmVu
YW1lZCBleHRlbmRlZCBhdHRyaWJ1dGVzIGFuZCB3ZSBoYXZlCisgICAgICAgIG5vdCBzdGF5ZWQg
dXAgdG8gZGF0ZS4gVGhpcyB1cGRhdGVzIHRoZSBuYW1lcyBldmVyeXdoZXJlIGFuZCBVUkxzIGlu
IElETEF0dHJpYnV0ZXMuanNvbi4KKyAgICAKKyAgICAgICAgICAgICBbQWxsb3dTaGFyZWRdIC0+
IG5ldywgbWFya2VkIGFzIHVuc3VwcG9ydGVkCisgICAgICAgICAgICAgW0hUTUxDb25zdHJ1Y3Rv
cl0gLSA+IG5ldywgbWFya2VkIGFzIHVuc3VwcG9ydGVkCisgICAgICAgICAgICAgW0xlZ2FjeUxl
bmllbnRTZXR0ZXJdIC0+IHJlbmFtZWQgZnJvbSBbTGVuaWVudFNldHRlcl0sIHN0aWxsIHVuc3Vw
cG9ydGVkCisgICAgICAgICAgICAgW0xlZ2FjeUxlbmllbnRUaGlzXSAtPiByZW5hbWVkIGZyb20g
W0xlbmllbnRUaGlzXQorICAgICAgICAgICAgIFtMZWdhY3lOYW1lc3BhY2VdIC0+IG5ldywgbWFy
a2VkIGFzIHVuc3VwcG9ydGVkCisgICAgICAgICAgICAgW0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
XSAtPiByZW5hbWVkIGZyb20gW05vSW50ZXJmYWNlT2JqZWN0XQorICAgICAgICAgICAgIFtMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ10gLT4gcmVuYW1lZCBmcm9tIFtUcmVhdE51bGxBcz1FbXB0eVN0
cmluZ10KKyAgICAgICAgICAgICBbTGVnYWN5T3ZlcnJpZGVCdWlsdEluc10gLT4gcmVuYW1lZCBm
cm9tIE92ZXJyaWRlQnVpbHRpbnMKKyAgICAgICAgICAgICBbTGVnYWN5VHJlYXROb25PYmplY3RB
c051bGxdIC0+IHJlbmFtZWQgZnJvbSBbVHJlYXROb25PYmplY3RBc051bGxdLCBzdGlsbCB1bnN1
cHBvcnRlZAorICAgICAgICAgICAgIFtMZWdhY3lVbmZvcmdlYWJsZV0gLT4gcmVuYW1lZCBmcm9t
IFtVbmZvcmdlYWJsZV0KKyAgICAgICAgICAgICBbU2VyaWFsaXphYmxlXSAtPiBuZXcsIG1hcmtl
ZCBhcyB1bnN1cHBvcnRlZAorICAgICAgICAgICAgIFtUcmFuc2ZlcmFibGVdIC0+IG5ldywgbWFy
a2VkIGFzIHVuc3VwcG9ydGVkCisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
Q2FuY2VsRXZlbnQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXlt
ZW50QXV0aG9yaXplZEV2ZW50LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50Lmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2
ZW50LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5pZGw6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvUGxheWJhY2tRdWFsaXR5LmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaWRsOgorICAgICAgICAq
IE1vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm8uaWRsOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEv
U3RvcmFnZVF1b3RhLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVz
aXMuaWRsOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvTGlzdGVuZXIuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGw6CisgICAg
ICAgICogU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVk
LmlkbC5lcmI6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Um9sZS5pZGw6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BcmlhQXR0cmlidXRlcy5pZGw6CisgICAgICAgICog
YW5pbWF0aW9uL0FuaW1hdGFibGUuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL0lETFR5cGVzLmg6
CisgICAgICAgICogYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmg6CisgICAgICAgIChXZWJD
b3JlOjpET01XcmFwcGVyV29ybGQ6OmRpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZp
b3IpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpzaG91bGREaXNhYmxlTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0JlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVdyYXBwZXJXb3JsZDo6ZGlzYWJsZU92ZXJyaWRlQnVpbHRpbnNCZWhhdmlvcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OnNob3VsZERpc2FibGVPdmVycmlk
ZUJ1aWx0aW5zQmVoYXZpb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjppc1Zpc2libGVO
YW1lZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnROdWxsYWJsZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnZlcnRlcjxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxUPj46OmNvbnZlcnQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDb252ZXJ0ZXI8SURMVHJlYXROdWxsQXNFbXB0
eUFkYXB0b3I8VD4+Ojpjb252ZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAg
ICAgIChHZW5lcmF0ZVB1dCk6CisgICAgICAgIChHZW5lcmF0ZVB1dEJ5SW5kZXgpOgorICAgICAg
ICAoR2VuZXJhdGVJc0xlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKToKKyAgICAgICAgKEdl
bmVyYXRlRGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoR2VuZXJhdGVEZWxldGVQcm9wZXJ0
eUNvbW1vbik6CisgICAgICAgIChBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UpOgorICAgICAg
ICAoT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKToKKyAgICAgICAgKElzQWNjZWxlcmF0ZWRE
T01BdHRyaWJ1dGUpOgorICAgICAgICAoR2V0SlNDQXR0cmlidXRlc0ZvckF0dHJpYnV0ZSk6Cisg
ICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9u
KToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyVHJhbXBvbGluZURlZmluaXRpb24p
OgorICAgICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJUcmFtcG9saW5lRGVmaW5pdGlvbik6
CisgICAgICAgIChJc0Fubm90YXRlZFR5cGUpOgorICAgICAgICAoR2V0QW5ub3RhdGVkSURMVHlw
ZSk6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcyk6CisgICAgICAg
IChOZWVkc0NvbnN0cnVjdG9yUHJvcGVydHkpOgorICAgICAgICAoSXNMZWdhY3lVbmZvcmdlYWJs
ZSk6CisgICAgICAgIChDb21wdXRlRnVuY3Rpb25TcGVjaWFsKToKKyAgICAgICAgKEdlbmVyYXRl
SXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChJc1VuZm9yZ2Vh
YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
anNvbjoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3Rv
cnMuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRh
cmdldC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zLmNwcDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmg6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVu
Y2llcy5kZXA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbmNsdWRlcy5p
ZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmlkbDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmlkbDogQWRkZWQuCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPcGVyYXRpb25C
YXNlLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE92ZXJyaWRlQnVp
bHRpbnMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGNzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlk
bDoKKyAgICAgICAgKiBjc3MvQ1NTVW5rbm93blJ1bGUuaWRsOgorICAgICAgICAqIGNzcy9FbGVt
ZW50Q1NTSW5saW5lU3R5bGUuaWRsOgorICAgICAgICAqIGNzcy9NZWRpYUxpc3QuaWRsOgorICAg
ICAgICAqIGNzcy9TdHlsZU1lZGlhLmlkbDoKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5p
ZGw6CisgICAgICAgICogZG9tL0NoaWxkTm9kZS5pZGw6CisgICAgICAgICogZG9tL0RPTUltcGxl
bWVudGF0aW9uLmlkbDoKKyAgICAgICAgKiBkb20vRE9NU3RyaW5nTWFwLmlkbDoKKyAgICAgICAg
KiBkb20vRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEFuZEVsZW1lbnRFdmVudEhhbmRs
ZXJzLmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsOgorICAgICAg
ICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRXZlbnQuaWRsOgorICAgICAgICAq
IGRvbS9FdmVudExpc3RlbmVyLmlkbDoKKyAgICAgICAgKiBkb20vR2xvYmFsRXZlbnRIYW5kbGVy
cy5pZGw6CisgICAgICAgICogZG9tL05hdmlnYXRvck1heFRvdWNoUG9pbnRzLmlkbDoKKyAgICAg
ICAgKiBkb20vTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlLmlkbDoKKyAgICAgICAgKiBkb20vTm9u
RWxlbWVudFBhcmVudE5vZGUuaWRsOgorICAgICAgICAqIGRvbS9QYXJlbnROb2RlLmlkbDoKKyAg
ICAgICAgKiBkb20vU2hhZG93Um9vdC5pZGw6CisgICAgICAgICogZG9tL1Nsb3RhYmxlLmlkbDoK
KyAgICAgICAgKiBodG1sL0hUTUxCb2R5RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1M
RG9jdW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaWRsOgorICAgICAgICAq
IGh0bWwvSFRNTEZvbnRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVu
dC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbDoKKyAgICAgICAgKiBo
dG1sL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTElG
cmFtZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5pZGw6Cisg
ICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxP
YmplY3RFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxPckZvcmVpZ25FbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1s
L0hUTUxUYWJsZUNlbGxFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1l
bnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5pZGw6CisgICAgICAg
ICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9B
TkdMRUluc3RhbmNlZEFycmF5cy5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzQ29t
cG9zaXRpbmcuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0RyYXdJbWFnZS5pZGw6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzRHJhd1BhdGguaWRsOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc0ZpbGxTdHJva2VTdHlsZXMuaWRsOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc0ZpbHRlcnMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0ltYWdl
RGF0YS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VTbW9vdGhpbmcuaWRs
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdGguaWRsOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1BhdGhEcmF3aW5nU3R5bGVzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZWN0LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNTaGFkb3dTdHls
ZXMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1N0YXRlLmlkbDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNUZXh0LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNUZXh0RHJhd2luZ1N0eWxlcy5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzVHJh
bnNmb3JtLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNVc2VySW50ZXJmYWNlLmlk
bDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5pZGw6CisgICAgICAgICog
aHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5pZGw6CisgICAgICAgICogaHRtbC9jYW52
YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VY
VEZyYWdEZXB0aC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxP
RC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRzUkdCLmlkbDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9P
RVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVh
ci5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5pZGw6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5pZGw6CisgICAg
ICAgICogaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaWRsOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5pZGw6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMxLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlUFZSVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQ3NSR0IuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVi
dWdSZW5kZXJlckluZm8uaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFk
ZXJzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5pZGw6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5pZGw6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tD
dWVHZW5lcmljLmlkbDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVFJlZ2lvbkxpc3QuaWRsOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaWRsOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsOgorICAgICAgICAqIHBhZ2UvRE9NV2lu
ZG93LmlkbDoKKyAgICAgICAgKiBwYWdlL0dsb2JhbENyeXB0by5pZGw6CisgICAgICAgICogcGFn
ZS9HbG9iYWxQZXJmb3JtYW5jZS5pZGw6CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5pZGw6Cisg
ICAgICAgICogcGFnZS9OYXZpZ2F0b3JJRC5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JM
YW5ndWFnZS5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JPbkxpbmUuaWRsOgorICAgICAg
ICAqIHBhZ2UvTmF2aWdhdG9yUGx1Z2lucy5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JT
ZXJ2aWNlV29ya2VyLmlkbDoKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvclNoYXJlLmlkbDoKKyAg
ICAgICAgKiBwYWdlL1JlbW90ZURPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGFnZS9XaW5kb3dF
dmVudEhhbmRsZXJzLmlkbDoKKyAgICAgICAgKiBwYWdlL1dpbmRvd09yV29ya2VyR2xvYmFsU2Nv
cGUuaWRsOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaWRsOgorICAgICAgICAqIHN2Zy9TVkdGaXRUb1ZpZXdCb3guaWRsOgorICAgICAgICAqIHN2
Zy9TVkdUZXN0cy5pZGw6CisgICAgICAgICogc3ZnL1NWR1VSSVJlZmVyZW5jZS5pZGw6CisgICAg
ICAgICogc3ZnL1NWR1pvb21BbmRQYW4uaWRsOgorICAgICAgICAqIHRlc3RpbmcvR0NPYnNlcnZh
dGlvbi5pZGw6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHNN
YXBMaWtlLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsc1NldExpa2UuaWRsOgorICAg
ICAgICAqIHRlc3RpbmcvTWFsbG9jU3RhdGlzdGljcy5pZGw6CisgICAgICAgICogdGVzdGluZy9N
ZW1vcnlJbmZvLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmlkbDoKKyAg
ICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaWRsOgorICAgICAgICAq
IHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tQYXlt
ZW50Q29vcmRpbmF0b3IuaWRsOgorICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVy
bmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaWRsOgorICAgICAg
ICAqIHRlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZh
a2VYUklucHV0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogdGVzdGluZy9XZWJYUlRlc3QuaWRs
OgorICAgICAgICAqIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsOgorICAgICAgICAqIHhtbC9Y
UGF0aE5TUmVzb2x2ZXIuaWRsOgorCiAyMDIwLTA5LTA0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYSxFTUVdIC1vdXRwdXRPYnNjdXJlZER1ZVRvSW5z
dWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uIEtWTyB3aWxsIHNldCBPdXRwdXRPYnNjdXJlZCBm
b3IgYWxsIGF0dGFjaGVkIE1lZGlhS2V5U2Vzc2lvbnMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5Q2FuY2VsRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlDYW5jZWxFdmVudC5pZGwJKHJl
dmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlDYW5jZWxFdmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwog
ICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIEFwcGxlUGF5Q2FuY2VsRXZlbnQg
OiBFdmVudCB7CiAgICAgW0NhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIEFwcGxl
UGF5U2Vzc2lvbkVycm9yIHNlc3Npb25FcnJvcjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRB
dXRob3JpemVkRXZlbnQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPUFQUExFX1BB
WSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
IF0gaW50ZXJmYWNlIEFwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudCA6IEV2ZW50IHsKICAg
ICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUgQXBwbGVQYXlQYXltZW50IHBh
eW1lbnQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQu
aWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1BUFBMRV9QQVksCi0gICAgTm9J
bnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFj
ZSBBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50IDogRXZlbnQgewogICAgIFtDYWNo
ZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBBcHBsZVBheVBheW1lbnRNZXRob2QgcGF5
bWVudE1ldGhvZDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVj
dGVkRXZlbnQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPUFQUExFX1BB
WSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
IF0gaW50ZXJmYWNlIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudCA6IEV2ZW50
IHsKICAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUgQXBwbGVQYXlQYXlt
ZW50Q29udGFjdCBzaGlwcGluZ0NvbnRhY3Q7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBw
aW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZl
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBDb25kaXRp
b25hbD1BUFBMRV9QQVksCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRF
dmVudCA6IEV2ZW50IHsKICAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUg
QXBwbGVQYXlTaGlwcGluZ01ldGhvZCBzaGlwcGluZ01ldGhvZDsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
VmFsaWRhdGVNZXJjaGFudEV2ZW50LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPUFQ
UExFX1BBWSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9i
amVjdCwKIF0gaW50ZXJmYWNlIEFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50IDogRXZlbnQg
ewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsaWRhdGlvblVSTDsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaWRsCShyZXZpc2lv
biAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICAgICBFbmFibGVkQXRSdW50aW1lPUZl
dGNoQVBJLAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAgIEludGVyZmFjZU5hbWU9
Qm9keSwKLSAgICBOb0ludGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
CiBdIGludGVyZmFjZSBGZXRjaEJvZHkgewogICAgIFtJbXBsZW1lbnRlZEFzPXJlYWRhYmxlU3Ry
ZWFtLCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBSZWFkYWJsZVN0
cmVhbT8gYm9keTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBib2R5VXNlZDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9z
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xz
L01lZGlhQ29udHJvbHNIb3N0LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNyArMzIsNyBAQCBlbnVtIERldmljZVR5cGUgewogWwogICAgIENvbmRpdGlv
bmFsPU1FRElBX0NPTlRST0xTX1NDUklQVCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAog
XSBpbnRlcmZhY2UgTWVkaWFDb250cm9sc0hvc3QgewogICAgIHNlcXVlbmNlPFRleHRUcmFjaz4g
c29ydGVkVHJhY2tMaXN0Rm9yTWVudShUZXh0VHJhY2tMaXN0IHRyYWNrTGlzdCk7CiAgICAgc2Vx
dWVuY2U8QXVkaW9UcmFjaz4gc29ydGVkVHJhY2tMaXN0Rm9yTWVudShBdWRpb1RyYWNrTGlzdCB0
cmFja0xpc3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9WaWRl
b1BsYXliYWNrUXVhbGl0eS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9WaWRlb1BsYXliYWNrUXVhbGl0eS5pZGwJKHJldmlzaW9uIDI2NjYzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvVmlkZW9QbGF5YmFja1F1YWxp
dHkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBDb25kaXRp
b25hbD1WSURFTywKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2UgVmlk
ZW9QbGF5YmFja1F1YWxpdHkgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQg
ZG91YmxlIGNyZWF0aW9uVGltZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCShyZXZpc2lvbiAyNjY2
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBAIHR5cGVkZWYgKG9iamVj
dCBvciBET01TdHJpbmcpIEFsZ29yaXRobUkKICAgICAvLyA2LjEgUGVlci10by1wZWVyIGRhdGEg
QVBJCiAgICAgLy8gRklYTUUgMTY5NjQ0OiBtaXNzaW5nIHNjdHAKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gUlRDRGF0YUNoYW5uZWwgY3JlYXRlRGF0YUNoYW5uZWwoW1RyZWF0TnVsbEFzPUVt
cHR5U3RyaW5nXSBVU1ZTdHJpbmcgbGFiZWwsIG9wdGlvbmFsIFJUQ0RhdGFDaGFubmVsSW5pdCBv
cHRpb25zKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJUQ0RhdGFDaGFubmVsIGNyZWF0ZURh
dGFDaGFubmVsKFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gVVNWU3RyaW5nIGxhYmVsLCBvcHRp
b25hbCBSVENEYXRhQ2hhbm5lbEluaXQgb3B0aW9ucyk7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFu
ZGxlciBvbmRhdGFjaGFubmVsOwogCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmlkbAko
cmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKIF0gaW50ZXJmYWNlIFF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyBsb25nIG1vdmllU2l6ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvU3Rv
cmFnZUluZm8uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
U3RvcmFnZUluZm8uaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1RVU9UQSwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlLAogXSBpbnRlcmZhY2UgU3RvcmFnZUluZm8gewpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9xdW90YS9TdG9yYWdlUXVvdGEuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcXVvdGEvU3RvcmFnZVF1b3RhLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9TdG9yYWdlUXVvdGEuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAor
ICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVFVT1RBLAogICAg
IEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBTdG9yYWdlUXVvdGEgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVz
aXMuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hTeW50aGVzaXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAg
CiBbCiAgICAgQ29uZGl0aW9uYWw9U1BFRUNIX1NZTlRIRVNJUywKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFNwZWVjaFN5
bnRoZXNpcyAgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHBlbmRpbmc7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3BlYWtpbmc7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaWRsCShy
ZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNWb2ljZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwog
IAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
LAogICAgIENvbmRpdGlvbmFsPVNQRUVDSF9TWU5USEVTSVMKIF0gaW50ZXJmYWNlIFNwZWVjaFN5
bnRoZXNpc1ZvaWNlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZvaWNlVVJJ
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2lu
ay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtU2luay5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw3ICsyNSw3IEBACiAKIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0LAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uCiBdIGludGVyZmFjZSBS
ZWFkYWJsZVN0cmVhbVNpbmsgewogICAgIHVuZGVmaW5lZCBlbnF1ZXVlKEJ1ZmZlclNvdXJjZSBj
aHVuayk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW1Tb3VyY2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3Qs
CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24K
IF0gaW50ZXJmYWNlIFJlYWRhYmxlU3RyZWFtU291cmNlIHsKICAgICBbQ3VzdG9tXSBQcm9taXNl
PHVuZGVmaW5lZD4gc3RhcnQoUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciBjb250cm9s
bGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwJKHJldmlzaW9uIDI2NjYz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogICAgIENvbmRp
dGlvbmFsPVdFQl9BVURJTywKICAgICBFbmFibGVkQnlTZXR0aW5nPVByZWZpeGVkV2ViQXVkaW8s
CiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QKKyAgICBM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdAogXSBpbnRlcmZhY2UgV2ViS2l0QXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlIDogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsKICAgICBhdHRyaWJ1dGUgQXVkaW9C
dWZmZXI/IGJ1ZmZlcjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRBdWRpb0xpc3RlbmVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvTGlzdGVuZXIuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvTGlzdGVuZXIuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VC
X0FVRElPLAogICAgIEVuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpbywKLSAgICBOb0lu
dGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNl
IFdlYktpdEF1ZGlvTGlzdGVuZXIgewogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQg
ZG9wcGxlckZhY3RvcjsgIC8vIHNhbWUgYXMgT3BlbkFMIChkZWZhdWx0IDEuMCkKICAgICBhdHRy
aWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IHNwZWVkT2ZTb3VuZDsgICAvLyBpbiBtZXRlcnMgLyBz
ZWNvbmQgKGRlZmF1bHQgMzQzLjMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1dlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5p
ZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcg
KzI3LDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgRW5hYmxlZEJ5U2V0dGlu
Zz1QcmVmaXhlZFdlYkF1ZGlvLAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIE5vSW50
ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJmYWNlIFdl
YktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgOiBBdWRpb05vZGUgewogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBBdWRpb1BhcmFtIHRocmVzaG9sZDsgLy8gaW4gRGVjaWJlbHMKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBrbmVlOyAvLyBpbiBEZWNpYmVscwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9y
Tm9kZS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0T3NjaWxsYXRvck5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsy
OCw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAogICAgIEVuYWJsZWRCeVNldHRpbmc9
V2ViQXVkaW8mUHJlZml4ZWRXZWJBdWRpbywKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAg
ICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50
ZXJmYWNlIFdlYktpdE9zY2lsbGF0b3JOb2RlIDogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsK
ICAgICBhdHRyaWJ1dGUgT3NjaWxsYXRvclR5cGUgdHlwZTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlk
bC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBs
YXRlcy9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlkbC5lcmIJKHJldmlzaW9uIDI2NjYzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvSW50ZXJuYWxTZXR0
aW5nc0dlbmVyYXRlZC5pZGwuZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAg
Ki8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRl
cmZhY2UgSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZCB7CiA8JS0gZm9yIEBzZXR0aW5nIGluIEBz
ZXR0aW5ncyBkbyAtJT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJvbGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJvbGUuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSb2xlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjUsNyArMjUsNyBAQAogCiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1BcmlhUmVmbGVjdGlv
biwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
IF0gaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlSb2xlIHsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRl
IERPTVN0cmluZz8gcm9sZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FyaWFBdHRyaWJ1dGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FyaWFBdHRyaWJ1dGVzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BcmlhQXR0cmlidXRlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDcgQEAKIAogWwogICAgIEVuYWJsZWRBdFJ1bnRpbWU9QXJpYVJlZmxlY3Rpb24s
Ci0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBd
IGludGVyZmFjZSBBcmlhQXR0cmlidXRlcyB7CiAgICAgW1JlZmxlY3Q9YXJpYV9hdG9taWNdICAg
ICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhQXRvbWljOwogICAgIFtSZWZsZWN0PWFy
aWFfYXV0b2NvbXBsZXRlXSAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJpYUF1dG9Db21wbGV0
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRhYmxlLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0YWJsZS5pZGwJKHJldmlzaW9u
IDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRhYmxlLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1X
ZWJBbmltYXRpb25zLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3QKIF0gaW50ZXJmYWNlIEFuaW1hdGFibGUgewogICAgIFtNYXlUaHJvd0V4Y2VwdGlv
biwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBXZWJBbmltYXRpb24gYW5pbWF0ZShvYmplY3Q/IGtl
eWZyYW1lcywgb3B0aW9uYWwgKHVucmVzdHJpY3RlZCBkb3VibGUgb3IgS2V5ZnJhbWVBbmltYXRp
b25PcHRpb25zKSBvcHRpb25zKTsKICAgICBzZXF1ZW5jZTxXZWJBbmltYXRpb24+IGdldEFuaW1h
dGlvbnMob3B0aW9uYWwgR2V0QW5pbWF0aW9uc09wdGlvbnMgb3B0aW9ucyk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL0lETFR5cGVzLmgJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL0lETFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBA
QCBzdHJ1Y3QgSURMRE9NU3RyaW5nIDogSURMU3RyaW5nPFN0cmluZz4gCiBzdHJ1Y3QgSURMQnl0
ZVN0cmluZyA6IElETFN0cmluZzxTdHJpbmc+IHsgfTsKIHN0cnVjdCBJRExVU1ZTdHJpbmcgOiBJ
RExTdHJpbmc8U3RyaW5nPiB7IH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExU
cmVhdE51bGxBc0VtcHR5QWRhcHRvciA6IElETFN0cmluZzxTdHJpbmc+IHsKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3IgOiBJRExT
dHJpbmc8U3RyaW5nPiB7CiAgICAgdXNpbmcgSW5uZXJUeXBlID0gVDsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCShyZXZpc2lvbiAy
NjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTMsOCArNTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaGFk
b3dSb290SXNBbHdheXNPcGVuKCkgeyBtX3NoYWRvd1Jvb3RJc0Fsd2F5c09wZW4gPSB0cnVlOyB9
CiAgICAgYm9vbCBzaGFkb3dSb290SXNBbHdheXNPcGVuKCkgY29uc3QgeyByZXR1cm4gbV9zaGFk
b3dSb290SXNBbHdheXNPcGVuOyB9CiAKLSAgICB2b2lkIGRpc2FibGVPdmVycmlkZUJ1aWx0aW5z
QmVoYXZpb3IoKSB7IG1fc2hvdWxkRGlzYWJsZU92ZXJyaWRlQnVpbHRpbnNCZWhhdmlvciA9IHRy
dWU7IH0KLSAgICBib29sIHNob3VsZERpc2FibGVPdmVycmlkZUJ1aWx0aW5zQmVoYXZpb3IoKSBj
b25zdCB7IHJldHVybiBtX3Nob3VsZERpc2FibGVPdmVycmlkZUJ1aWx0aW5zQmVoYXZpb3I7IH0K
KyAgICB2b2lkIGRpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZpb3IoKSB7IG1fc2hv
dWxkRGlzYWJsZUxlZ2FjeU92ZXJyaWRlQnVpbHRJbnNCZWhhdmlvciA9IHRydWU7IH0KKyAgICBi
b29sIHNob3VsZERpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZpb3IoKSBjb25zdCB7
IHJldHVybiBtX3Nob3VsZERpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZpb3I7IH0K
IAogICAgIERPTU9iamVjdFdyYXBwZXJNYXAmIHdyYXBwZXJzKCkgeyByZXR1cm4gbV93cmFwcGVy
czsgfQogCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgVHlwZSBtX3R5cGUgeyBUeXBl
OjpJbnRlcm5hbCB9OwogCiAgICAgYm9vbCBtX3NoYWRvd1Jvb3RJc0Fsd2F5c09wZW4geyBmYWxz
ZSB9OwotICAgIGJvb2wgbV9zaG91bGREaXNhYmxlT3ZlcnJpZGVCdWlsdGluc0JlaGF2aW9yIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkRGlzYWJsZUxlZ2FjeU92ZXJyaWRlQnVpbHRJbnNC
ZWhhdmlvciB7IGZhbHNlIH07CiB9OwogCiBET01XcmFwcGVyV29ybGQmIG5vcm1hbFdvcmxkKEpT
Qzo6Vk0mKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RP
cGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01BYnN0cmFjdE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsMTQgKzMyLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEltcGxlbWVudGF0aW9u
cyBvZiB0aGUgYWJzdHJhY3Qgb3BlcmF0aW9ucyBkZWZpbmVkIGF0CiAvLyBodHRwczovL2hleWNh
bS5naXRodWIuaW8vd2ViaWRsLyNsZWdhY3ktcGxhdGZvcm0tb2JqZWN0LWFic3RyYWN0LW9wcwog
Ci1lbnVtIGNsYXNzIE92ZXJyaWRlQnVpbHRpbnMgeworZW51bSBjbGFzcyBMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zIHsKICAgICBObywKICAgICBZZXMKIH07CiAKIC8vIEFuIGltcGxlbWVudGF0aW9u
IG9mIHRoZSAnbmFtZWQgcHJvcGVydHkgdmlzaWJpbGl0eSBhbGdvcml0aG0nCiAvLyBodHRwczov
L2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tbmFtZWQtcHJvcGVydHktdmlzaWJpbGl0eQot
dGVtcGxhdGU8T3ZlcnJpZGVCdWlsdGlucyBvdmVycmlkZUJ1aWx0aW5zLCBjbGFzcyBKU0NsYXNz
PgordGVtcGxhdGU8TGVnYWN5T3ZlcnJpZGVCdWlsdElucyBvdmVycmlkZUJ1aWx0aW5zLCBjbGFz
cyBKU0NsYXNzPgogc3RhdGljIGJvb2wgaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eShKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NsYXNzJiB0aGlzT2JqZWN0LCBKU0M6
OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgLy8gRklYTUU6IEl0IHNlZW1zIHVu
Zm9ydHVuYXRlIHRoYXQgaGF2ZSB0byBkbyB0d28gbG9va3VwcyBmb3IgdGhlIHByb3BlcnR5IG5h
bWUsCkBAIC02Myw4ICs2Myw4IEBAIHN0YXRpYyBib29sIGlzVmlzaWJsZU5hbWVkUHJvcGVydHko
SlNDOjoKICAgICBpZiAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KCZ0aGlzT2Jq
ZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAotICAgIC8vIDMuIElmIE8gaW1wbGVtZW50cyBhbiBpbnRlcmZh
Y2UgdGhhdCBoYXMgdGhlIFtPdmVycmlkZUJ1aWx0aW5zXSBleHRlbmRlZCBhdHRyaWJ1dGUsIHRo
ZW4gcmV0dXJuIHRydWUuCi0gICAgaWYgKG92ZXJyaWRlQnVpbHRpbnMgPT0gT3ZlcnJpZGVCdWls
dGluczo6WWVzKQorICAgIC8vIDMuIElmIE8gaW1wbGVtZW50cyBhbiBpbnRlcmZhY2UgdGhhdCBo
YXMgdGhlIFtMZWdhY3lPdmVycmlkZUJ1aWx0SW5zXSBleHRlbmRlZCBhdHRyaWJ1dGUsIHRoZW4g
cmV0dXJuIHRydWUuCisgICAgaWYgKG92ZXJyaWRlQnVpbHRpbnMgPT0gTGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6WWVzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIDQuIEluaXRpYWxp
emUgcHJvdG90eXBlIHRvIGJlIHRoZSB2YWx1ZSBvZiB0aGUgaW50ZXJuYWwgW1tQcm90b3R5cGVd
XSBwcm9wZXJ0eSBvZiBPLgpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgYm9vbCBpc1Zpc2libGVO
YW1lZFByb3BlcnR5KEpTQzo6CiAvLyBmb3IgdGhlIHByb3BlcnR5IG5hbWUsIHZpYSBwYXNzZWQg
aW4gZnVuY3Rvci4gVGhpcyBhbGxvd3MgdXMgdG8gYXZvaWQgdHdvIGxvb2tpbmcgdXAgdGhlCiAv
LyB0aGUgcHJvcGVydHkgbmFtZSB0d2ljZTsgb25jZSBmb3IgJ25hbWVkIHByb3BlcnR5IHZpc2li
aWxpdHkgYWxnb3JpdGhtJyBjaGVjaywgYW5kIHRoZW4KIC8vIGFnYWluIHdoZW4gdGhlIHZhbHVl
IGlzIG5lZWRlZC4KLXRlbXBsYXRlPE92ZXJyaWRlQnVpbHRpbnMgb3ZlcnJpZGVCdWlsdGlucywg
Y2xhc3MgSlNDbGFzcywgY2xhc3MgRnVuY3Rvcj4KK3RlbXBsYXRlPExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMgb3ZlcnJpZGVCdWlsdGlucywgY2xhc3MgSlNDbGFzcywgY2xhc3MgRnVuY3Rvcj4KIHN0
YXRpYyBhdXRvIGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5KEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ2xhc3MmIHRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgRnVuY3RvciYmIGl0ZW1BY2Nlc3NvcikgLT4gZGVjbHR5cGUoaXRl
bUFjY2Vzc29yKHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpCiB7CiAgICAgLy8gTk9URTogV2hp
bGUgaXQgaXMgbm90IHNwZWNpZmllZCwgYSBTeW1ib2wgY2FuIG5ldmVyIGJlIGEgJ3N1cHBvcnRl
ZCBwcm9wZXJ0eQpAQCAtMTAzLDggKzEwMyw4IEBAIHN0YXRpYyBhdXRvIGFjY2Vzc1Zpc2libGVO
YW1lZFByb3BlcnR5KEoKICAgICBpZiAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KCZ0aGlzT2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIC8vIDMuIElmIE8gaW1wbGVtZW50
cyBhbiBpbnRlcmZhY2UgdGhhdCBoYXMgdGhlIFtPdmVycmlkZUJ1aWx0aW5zXSBleHRlbmRlZCBh
dHRyaWJ1dGUsIHRoZW4gcmV0dXJuIHRydWUuCi0gICAgaWYgKG92ZXJyaWRlQnVpbHRpbnMgPT0g
T3ZlcnJpZGVCdWlsdGluczo6WWVzICYmICF3b3JsZEZvckRPTU9iamVjdCh0aGlzT2JqZWN0KS5z
aG91bGREaXNhYmxlT3ZlcnJpZGVCdWlsdGluc0JlaGF2aW9yKCkpCisgICAgLy8gMy4gSWYgTyBp
bXBsZW1lbnRzIGFuIGludGVyZmFjZSB0aGF0IGhhcyB0aGUgW0xlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgdGhlbiByZXR1cm4gdHJ1ZS4KKyAgICBpZiAob3ZlcnJp
ZGVCdWlsdGlucyA9PSBMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXMgJiYgIXdvcmxkRm9yRE9N
T2JqZWN0KHRoaXNPYmplY3QpLnNob3VsZERpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVo
YXZpb3IoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIC8vIDQuIEluaXRpYWxpemUg
cHJvdG90eXBlIHRvIGJlIHRoZSB2YWx1ZSBvZiB0aGUgaW50ZXJuYWwgW1tQcm90b3R5cGVdXSBw
cm9wZXJ0eSBvZiBPLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0TnVsbGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUNvbnZlcnROdWxsYWJsZS5oCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnROdWxsYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MCw4ICs2MCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8SUQKICAg
ICAKICAgICAvLyAxLiBJZiBUeXBlKFYpIGlzIG5vdCBPYmplY3QsIGFuZCB0aGUgY29udmVyc2lv
biB0byBhbiBJREwgdmFsdWUgaXMgYmVpbmcgcGVyZm9ybWVkCiAgICAgLy8gZHVlIHRvIFYgYmVp
bmcgYXNzaWduZWQgdG8gYW4gYXR0cmlidXRlIHdob3NlIHR5cGUgaXMgYSBudWxsYWJsZSBjYWxs
YmFjayBmdW5jdGlvbgotICAgIC8vIHRoYXQgaXMgYW5ub3RhdGVkIHdpdGggW1RyZWF0Tm9uT2Jq
ZWN0QXNOdWxsXSwgdGhlbiByZXR1cm4gdGhlIElETCBudWxsYWJsZSB0eXBlIFQ/Ci0gICAgLy8g
dmFsdWUgbnVsbC4KKyAgICAvLyB0aGF0IGlzIGFubm90YXRlZCB3aXRoIFtMZWdhY3lUcmVhdE5v
bk9iamVjdEFzTnVsbF0sIHRoZW4gcmV0dXJuIHRoZSBJREwgbnVsbGFibGUKKyAgICAvLyB0eXBl
IFQ/IHZhbHVlIG51bGwuCiAgICAgLy8KICAgICAvLyBOT1RFOiBIYW5kbGVkIGVsc2V3aGVyZS4K
ICAgICAvLwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0U3Ry
aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
dmVydFN0cmluZ3MuaAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0U3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNyArMTQ4
LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURMVVNWU3RyaQogLy8gTUFSSzog
LQogLy8gTUFSSzogU3RyaW5nIHR5cGUgYWRhcHRvcnMKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IENvbnZlcnRlcjxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxUPj4gOiBEZWZhdWx0
Q29udmVydGVyPElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPFQ+PiB7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVyPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxUPj4gOiBEZWZhdWx0Q29udmVydGVyPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxUPj4gewogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBp
ZiAodmFsdWUuaXNOdWxsKCkpCkBAIC0xNTcsNyArMTU3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IENvbnZlcnRlcjxJRAogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
ICBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8VD4+IHsKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+ICBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPFQ+PiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3Rh
dGUgPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9
IGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTY4
Niw3ICs2ODYsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3QKICAgICAgICAgCiAg
ICAgICAgIEdlbmVyYXRlTmFtZWRHZXR0ZXJMYW1iZGEoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNl
LCAkbmFtZWRHZXR0ZXJPcGVyYXRpb24sICRuYW1lZEdldHRlckZ1bmN0aW9uTmFtZSwgIkdldHRl
cklETFR5cGUiKTsKICAgICAgICAgCi0gICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW4gPSAkY29k
ZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiT3ZlcnJp
ZGVCdWlsdGlucyIpID8gIk92ZXJyaWRlQnVpbHRpbnM6OlllcyIgOiAiT3ZlcnJpZGVCdWlsdGlu
czo6Tm8iOworICAgICAgICBteSAkb3ZlcnJpZGVCdWlsdGluID0gJGNvZGVHZW5lcmF0b3ItPklu
aGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkxlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMiKSA/ICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXMiIDogIkxlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6Ok5vIjsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChhdXRvIG5h
bWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTwke292ZXJyaWRlQnVpbHRp
bn0+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0
ZXJGdW5jdG9yKSkge1xuIik7CiAgICAgICAgIAogICAgICAgICAjIE5PVEU6IEdlbmVyYXRlTmFt
ZWRHZXR0ZXIgaW1wbGVtZW50cyBzdGVwcyAyLjEgLSAyLjEwLgpAQCAtODAwLDcgKzgwMCw3IEBA
IHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgKICAgICAgICAgCiAgICAgICAg
IEdlbmVyYXRlTmFtZWRHZXR0ZXJMYW1iZGEoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkbmFt
ZWRHZXR0ZXJPcGVyYXRpb24sICRuYW1lZEdldHRlckZ1bmN0aW9uTmFtZSwgIkdldHRlcklETFR5
cGUiKTsKICAgICAgICAgCi0gICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW4gPSAkY29kZUdlbmVy
YXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiT3ZlcnJpZGVCdWls
dGlucyIpID8gIk92ZXJyaWRlQnVpbHRpbnM6OlllcyIgOiAiT3ZlcnJpZGVCdWlsdGluczo6Tm8i
OworICAgICAgICBteSAkb3ZlcnJpZGVCdWlsdGluID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRz
RXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkxlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKSA/
ICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXMiIDogIkxlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6
Ok5vIjsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChhdXRvIG5hbWVkUHJv
cGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTwke292ZXJyaWRlQnVpbHRpbn0+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5j
dG9yKSkge1xuIik7CiAgICAgICAgIAogICAgICAgICAjIE5PVEU6IEdlbmVyYXRlTmFtZWRHZXR0
ZXIgaW1wbGVtZW50cyBzdGVwcyAyLjEgLSAyLjEwLgpAQCAtOTY4LDggKzk2OCw4IEBAIHN1YiBH
ZW5lcmF0ZVB1dAogICAgICAgICAKICAgICAgICAgbXkgJGFkZGl0aW9uYWxJbmRlbnQgPSAiIjsK
ICAgICAgICAgCi0gICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW5zID0gJGNvZGVHZW5lcmF0b3It
PkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIk92ZXJyaWRlQnVpbHRpbnMi
KTsKLSAgICAgICAgaWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgeworICAgICAgICBteSAkbGVnYWN5
T3ZlcnJpZGVCdWlsdGlucyA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmli
dXRlKCRpbnRlcmZhY2UsICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIik7CisgICAgICAgIGlmICgh
JGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMpIHsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0o
KSB9O1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVj
dChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTtcbiIpOwpAQCAtOTg1LDcgKzk4NSw3IEBAIHN1YiBHZW5lcmF0ZVB1dAog
ICAgICAgICB9CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQg
LiAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwogCi0gICAgICAgIGlmICghJG92ZXJyaWRlQnVp
bHRpbnMpIHsKKyAgICAgICAgaWYgKCEkbGVnYWN5T3ZlcnJpZGVCdWlsdGlucykgewogICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICB9XG4iKTsKICAgICAgICAgfQogICAg
ICAgICAKQEAgLTEwMTQsOCArMTAxNCw4IEBAIHN1YiBHZW5lcmF0ZVB1dEJ5SW5kZXgKICAgICBt
eSAkbmFtZWRTZXR0ZXJPcGVyYXRpb24gPSBHZXROYW1lZFNldHRlck9wZXJhdGlvbigkaW50ZXJm
YWNlKTsKICAgICBteSAkaW5kZXhlZFNldHRlck9wZXJhdGlvbiA9IEdldEluZGV4ZWRTZXR0ZXJP
cGVyYXRpb24oJGludGVyZmFjZSk7CiAgICAgCi0gICAgbXkgJG92ZXJyaWRlQnVpbHRpbnMgPSAk
Y29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiT3Zl
cnJpZGVCdWlsdGlucyIpOwotICAgIG15ICRlbGxpZGVzQ2FsbHNUb0Jhc2UgPSAoJG5hbWVkU2V0
dGVyT3BlcmF0aW9uICYmICRvdmVycmlkZUJ1aWx0aW5zKSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57UGx1Z2lufSAmJiAhJG5hbWVkU2V0dGVyT3BlcmF0aW9uLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDYWxsTmFtZWRTZXR0ZXJPbmx5Rm9yU3VwcG9ydGVkUHJvcGVydGllc307
CisgICAgbXkgJGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMgPSAkY29kZUdlbmVyYXRvci0+SW5oZXJp
dHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIp
OworICAgIG15ICRlbGxpZGVzQ2FsbHNUb0Jhc2UgPSAoJG5hbWVkU2V0dGVyT3BlcmF0aW9uICYm
ICRsZWdhY3lPdmVycmlkZUJ1aWx0aW5zKSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57UGx1Z2lufSAmJiAhJG5hbWVkU2V0dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDYWxsTmFtZWRTZXR0ZXJPbmx5Rm9yU3VwcG9ydGVkUHJvcGVydGllc307CiAgICAgCiAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NsYXNzTmFtZX06OnB1dEJ5SW5kZXgoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQg
aW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wiIC4gKCEkZWxsaWRlc0NhbGxzVG9CYXNlID8gIiBz
aG91bGRUaHJvdyIgOiAiIikgLiAiKVxuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xu
Iik7CkBAIC0xMDQ3LDcgKzEwNDcsNyBAQCBzdWIgR2VuZXJhdGVQdXRCeUluZGV4CiAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb20odm0sIGluZGV4KTtcbiIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICBteSAkYWRk
aXRpb25hbEluZGVudCA9ICIiOwotICAgICAgICBpZiAoISRvdmVycmlkZUJ1aWx0aW5zKSB7Cisg
ICAgICAgIGlmICghJGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMpIHsKICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSB9O1xuIik7CiAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlz
T2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFz
T2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CkBAIC0xMDYzLDcgKzEwNjMsNyBAQCBzdWIgR2VuZXJh
dGVQdXRCeUluZGV4CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkYWRk
aXRpb25hbEluZGVudCAuICIgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgCi0gICAgICAg
IGlmICghJG92ZXJyaWRlQnVpbHRpbnMpIHsKKyAgICAgICAgaWYgKCEkbGVnYWN5T3ZlcnJpZGVC
dWlsdGlucykgewogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cblxuIik7
CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDg1LDcgKzEwODUsNyBAQCBzdWIgR2VuZXJhdGVQdXRC
eUluZGV4CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIH0KIAotc3ViIEdlbmVy
YXRlSXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZQorc3ViIEdlbmVyYXRlSXNMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnR5TmFtZQogewogICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UpID0g
QF87CiAgICAgCkBAIC0xMDkzLDcgKzEwOTMsNyBAQCBzdWIgR2VuZXJhdGVJc1VuZm9yZ2VhYmxl
UHJvcGVydHlOYW1lCiAgICAgZm9yZWFjaCBteSAkcHJvcGVydHkgKEB7JGludGVyZmFjZS0+YXR0
cmlidXRlc30sIEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKICAgICAgICAgbmV4dCBpZiAk
cHJvcGVydHktPmlzU3RhdGljOwogICAgICAgICAKLSAgICAgICAgaWYgKElzVW5mb3JnZWFibGUo
JGludGVyZmFjZSwgJHByb3BlcnR5KSkgeworICAgICAgICBpZiAoSXNMZWdhY3lVbmZvcmdlYWJs
ZSgkaW50ZXJmYWNlLCAkcHJvcGVydHkpKSB7CiAgICAgICAgICAgICBwdXNoKEB1bmZvcmdlYWJs
ZVByb3BlcnR5TmFtZXMsICRwcm9wZXJ0eS0+bmFtZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0x
MTAyLDcgKzExMDIsNyBAQCBzdWIgR2VuZXJhdGVJc1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lCiAg
ICAgCiAgICAgbXkgJGNvbmRpdGlvbiA9IGpvaW4oIiB8fCAiLCBtYXAgeyAicHJvcGVydHlOYW1l
ID09IFwiIiAuICRfIC4gIlwiIiB9IEB1bmZvcmdlYWJsZVByb3BlcnR5TmFtZXMpOwogICAgIAot
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBib29sIGlzVW5mb3JnZWFibGVQcm9wZXJ0
eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSlcbiIpOworICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgInN0YXRpYyBib29sIGlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSlcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIp
OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gJHtjb25kaXRpb259O1xuIik7
CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKQEAgLTExNjksMTkgKzExNjksMTkg
QEAgc3ViIEdlbmVyYXRlRGVmaW5lT3duUHJvcGVydHkKICAgICAgICAgCiAgICAgICAgIG15ICRh
ZGRpdGlvbmFsSW5kZW50ID0gIiI7CiAgICAgICAgIAotICAgICAgICBteSAkaGFzVW5mb3JnYWJs
ZVByb3BlcnRpZXMgPSBHZW5lcmF0ZUlzVW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoJG91dHB1dEFy
cmF5LCAkaW50ZXJmYWNlKTsKKyAgICAgICAgbXkgJGhhc1VuZm9yZ2FibGVQcm9wZXJ0aWVzID0g
R2VuZXJhdGVJc0xlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKCRvdXRwdXRBcnJheSwgJGlu
dGVyZmFjZSk7CiAgICAgICAgIGlmICgkaGFzVW5mb3JnYWJsZVByb3BlcnRpZXMpIHsKLSAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFpc1VuZm9yZ2VhYmxlUHJv
cGVydHlOYW1lKHByb3BlcnR5TmFtZSkpIHtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICBpZiAoIWlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUocHJv
cGVydHlOYW1lKSkge1xuIik7CiAgICAgICAgICAgICAkYWRkaXRpb25hbEluZGVudCAuPSAiICAg
ICI7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgICMgMS4gTGV0IGNyZWF0aW5nIGJlIHRy
dWUgaWYgUCBpcyBub3QgYSBzdXBwb3J0ZWQgcHJvcGVydHkgbmFtZSwgYW5kIGZhbHNlIG90aGVy
d2lzZS4KICAgICAgICAgIyBOT1RFOiBUaGlzIHN0ZXAgaXMgc3RyZW5ndGggcmVkdWNlZCBpbnRv
IHRoZSBvbmx5IHVzZSBvZiAnY3JlYXRpbmcnIGluIHN0ZXAgMi4yLjEKICAgICAgICAgCi0gICAg
ICAgICMgMi4gSWYgTyBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSB3aXRoIHRoZSBbT3ZlcnJpZGVC
dWlsdGluc10gZXh0ZW5kZWQgYXR0cmlidXRlIG9yIE8KKyAgICAgICAgIyAyLiBJZiBPIGltcGxl
bWVudHMgYW4gaW50ZXJmYWNlIHdpdGggdGhlIFtMZWdhY3lPdmVycmlkZUJ1aWx0SW5zXSBleHRl
bmRlZCBhdHRyaWJ1dGUgb3IgTwogICAgICAgICAjICAgIGRvZXMgbm90IGhhdmUgYW4gb3duIHBy
b3BlcnR5IG5hbWVkIFAsIHRoZW46Ci0gICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW5zID0gJGNv
ZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIk92ZXJy
aWRlQnVpbHRpbnMiKTsKLSAgICAgICAgaWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgeworICAgICAg
ICBteSAkbGVnYWN5T3ZlcnJpZGVCdWlsdGlucyA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4
dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIik7Cisg
ICAgICAgIGlmICghJGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMpIHsKICAgICAgICAgICAgICMgRklY
TUU6IElzIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QgdGhlIHJpZ2h0IGZ1bmN0aW9uIHRv
IGNhbGw/IElzIHRoZXJlIGEgZnVuY3Rpb24gdGhhdCB3aWxsCiAgICAgICAgICAgICAjICAgICAg
ICBvbmx5IGxvb2sgYXQgdGhlIGFjdHVhbCBwcm9wZXJ0aWVzLCBhbmQgbm90IGNhbGwgaW50byBv
dXIgaW1wbGVtZW50YXRpb24gb2YgdGhlCiAgICAgICAgICAgICAjICAgICAgICBbW0dldE93blBy
b3BlcnR5XV0gaG9vaz8KQEAgLTEyMTIsNyArMTIxMiw3IEBAIHN1YiBHZW5lcmF0ZURlZmluZU93
blByb3BlcnR5CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlvbmFsSW5k
ZW50IC4gIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgaWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgeworICAgICAgICBpZiAoISRsZWdhY3lPdmVy
cmlkZUJ1aWx0aW5zKSB7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlv
bmFsSW5kZW50IC4gIiAgICB9XG4iKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTEyNTIsNyAr
MTI1Miw3IEBAIHN1YiBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5Q29tbW9uCiAgICAgYXNzZXJ0KCJO
YW1lZCBwcm9wZXJ0eSBkZWxldGVycyBhcmUgbm90IGFsbG93ZWQgb24gZ2xvYmFsIG9iamVjdCBp
bnRlcmZhY2VzLiIpIGlmIElzR2xvYmFsSW50ZXJmYWNlKCRpbnRlcmZhY2UpOwogCiAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiLCAkY29uZGl0aW9uYWwp
OwotICAgIG15ICRvdmVycmlkZUJ1aWx0aW4gPSAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRl
bmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiT3ZlcnJpZGVCdWlsdGlucyIpID8gIk92ZXJyaWRl
QnVpbHRpbnM6OlllcyIgOiAiT3ZlcnJpZGVCdWlsdGluczo6Tm8iOworICAgIG15ICRvdmVycmlk
ZUJ1aWx0aW4gPSAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50
ZXJmYWNlLCAiTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpID8gIkxlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM6OlllcyIgOiAiTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8iOwogICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTwke292ZXJyaWRlQnVpbHRp
bn0+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7XG4i
KTsKIAogICAgIEdlbmVyYXRlQ3VzdG9tRWxlbWVudFJlYWN0aW9uc1N0YWNrSWZOZWVkZWQoJG91
dHB1dEFycmF5LCAkb3BlcmF0aW9uLCAiKmxleGljYWxHbG9iYWxPYmplY3QiKTsKQEAgLTE2ODYs
OSArMTY4Niw5IEBAIHN1YiBBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UKICAgICByZXR1cm4g
MSBpZiBJc0dsb2JhbEludGVyZmFjZSgkaW50ZXJmYWNlKTsKICAgICByZXR1cm4gMSBpZiAkY29k
ZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlwZSk7CiAKLSAgICAj
IFtVbmZvcmdlYWJsZV0gYXR0cmlidXRlcyBzaG91bGQgYmUgb24gdGhlIGluc3RhbmNlLgotICAg
ICMgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jVW5mb3JnZWFibGUKLSAgICByZXR1
cm4gMSBpZiBJc1VuZm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICMgW0xl
Z2FjeVVuZm9yZ2VhYmxlXSBhdHRyaWJ1dGVzIHNob3VsZCBiZSBvbiB0aGUgaW5zdGFuY2UuCisg
ICAgIyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNMZWdhY3lVbmZvcmdlYWJsZQor
ICAgIHJldHVybiAxIGlmIElzTGVnYWN5VW5mb3JnZWFibGUoJGludGVyZmFjZSwgJGF0dHJpYnV0
ZSk7CiAKICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2hlY2tTZWN1
cml0eX0pIHsKICAgICAgICAgcmV0dXJuIDAgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57RG9Ob3RDaGVja1NlY3VyaXR5fTsKQEAgLTE3NDksOCArMTc0OSw4IEBAIHN1YiBPcGVy
YXRpb25TaG91bGRCZU9uSW5zdGFuY2UKIAogICAgIHJldHVybiAxIGlmIElzR2xvYmFsSW50ZXJm
YWNlKCRpbnRlcmZhY2UpOwogCi0gICAgIyBbVW5mb3JnZWFibGVdIG9wZXJhdGlvbnMgc2hvdWxk
IGJlIG9uIHRoZSBpbnN0YW5jZS4gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jVW5m
b3JnZWFibGUKLSAgICBpZiAoSXNVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKSkg
eworICAgICMgW0xlZ2FjeVVuZm9yZ2VhYmxlXSBvcGVyYXRpb25zIHNob3VsZCBiZSBvbiB0aGUg
aW5zdGFuY2UuIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeVVuZm9yZ2Vh
YmxlCisgICAgaWYgKElzTGVnYWN5VW5mb3JnZWFibGUoJGludGVyZmFjZSwgJG9wZXJhdGlvbikp
IHsKICAgICAgICAgYXNzZXJ0KCJUaGUgYmluZGluZ3MgZ2VuZXJhdG9yIGRvZXMgbm90IHN1cHBv
cnQgcHV0dGluZyBydW50aW1lLWVuYWJsZWQgb3BlcmF0aW9ucyBvbiB0aGUgaW5zdGFuY2UgeWV0
IChleGNlcHQgZm9yIGdsb2JhbCBvYmplY3RzKTpbIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUg
LiAiOjoiIC4gJG9wZXJhdGlvbi0+bmFtZSAuICJdIikgaWYgTmVlZHNSdW50aW1lQ2hlY2soJGlu
dGVyZmFjZSwgJG9wZXJhdGlvbik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KQEAgLTE3ODgs
NyArMTc4OCw3IEBAIHN1YiBJc0FjY2VsZXJhdGVkRE9NQXR0cmlidXRlCiAgICAgcmV0dXJuIDAg
aWYgJGF0dHJpYnV0ZS0+aXNTZXRMaWtlOwogICAgIHJldHVybiAwIGlmICRjb2RlR2VuZXJhdG9y
LT5Jc0NvbnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT50eXBlKTsKICAgICByZXR1cm4gMCBpZiBJ
c0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICByZXR1cm4gMCBpZiAkYXR0
cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZW5pZW50VGhpc307CisgICAgcmV0dXJuIDAg
aWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5TGVuaWVudFRoaXN9Owog
ICAgIHJldHVybiAwIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VUeXBlKCRhdHRyaWJ1dGUt
PnR5cGUpOwogICAgIHJldHVybiAwIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0RPTUpJVH07CiAgICAgcmV0dXJuIDE7CkBAIC0xODAwLDcgKzE4MDAsNyBAQCBzdWIgR2V0SlND
QXR0cmlidXRlc0ZvckF0dHJpYnV0ZQogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKIAogICAg
IG15IEBzcGVjaWFscyA9ICgpOwotICAgIHB1c2goQHNwZWNpYWxzLCAiSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSIpIGlmIElzVW5mb3JnZWFibGUoJGludGVyZmFjZSwgJGF0dHJp
YnV0ZSk7CisgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIikgaWYgSXNMZWdhY3lVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsK
IAogICAgICMgQXMgcGVyIFdlYiBJREwgc3BlY2lmaWNhdGlvbiwgY29uc3RydWN0b3IgcHJvcGVy
dGllcyBvbiB0aGUgRUNNQVNjcmlwdCBnbG9iYWwgb2JqZWN0IHNob3VsZCBub3QgYmUgZW51bWVy
YWJsZS4KICAgICBteSAkaXNHbG9iYWxDb25zdHJ1Y3RvciA9ICRjb2RlR2VuZXJhdG9yLT5Jc0Nv
bnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT50eXBlKTsKQEAgLTI2NzAsNyArMjY3MCw3IEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBGSVhNRTogV2h5IGRvZXNuJ3QgdGhpcyBhbHNvIGlu
Y2x1ZGUgSW5kZXhlZCBHZXR0ZXJzIGFuZCBbQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90XQogICAg
IGlmICgkbmFtZWRHZXR0ZXJPcGVyYXRpb24pIHsKLSAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJPdmVycmlkZUJ1aWx0aW5z
IikpIHsKKyAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmli
dXRlKCRpbnRlcmZhY2UsICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIikpIHsKICAgICAgICAgICAg
ICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSJ9ID0gMTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpHZXRP
d25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSJ9ID0gMTsKQEAgLTI3NzUs
NyArMjc3NSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0KICAgICAKICAgICAjIENvbnN0
cnVjdG9yIG9iamVjdCBnZXR0ZXIKLSAgICB1bmxlc3MgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e05vSW50ZXJmYWNlT2JqZWN0fSkgeworICAgIHVubGVzcyAoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3R9KSB7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopO1xuIik7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXROYW1lZENv
bnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7XG4iKSBpZiAkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfTsKICAgICB9CkBAIC00
MTk1LDcgKzQxOTUsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAg
cHVzaChAaGFzaEtleXMsICRuYW1lKTsKIAogICAgICAgICAgICAgbXkgQHNwZWNpYWxzID0gKCk7
Ci0gICAgICAgICAgICBwdXNoKEBzcGVjaWFscywgIkpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUiKSBpZiBJc1VuZm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAg
ICAgICAgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIikgaWYgSXNMZWdhY3lVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAg
ICAgICAgICAgIHB1c2goQHNwZWNpYWxzLCAiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkiKSBpZiBJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVzaChAc3BlY2lh
bHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUiKSBpZiBJc0FjY2VsZXJh
dGVkRE9NQXR0cmlidXRlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVz
aChAc3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRBdHRyaWJ1dGUiKSBp
ZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9OwpAQCAtNDU0Myw3ICs0
NTQzLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ9XG5cbiIpOwogICAgIH0KIAotICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Tm9JbnRlcmZhY2VPYmplY3R9KSB7CisgICAgaWYgKCEkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lOb0ludGVyZmFjZU9iamVjdH0pIHsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3Io
Vk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOwpA
QCAtNDYzNiw3ICs0NjM2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKVxuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTtcbiIpOwogCi0gICAgICAgIGlmICgh
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm9JbnRlcmZhY2VPYmplY3R9KSB7Cisg
ICAgICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3R9KSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKCR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpO1xuIik7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBK
U1ZhbHVlIGNvbnN0cnVjdG9yID0gJHtjbGFzc05hbWV9Q29uc3RydWN0b3I6OmNyZWF0ZShKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCAke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksICpwcm90b3R5cGUt
Pmdsb2JhbE9iamVjdCgpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5
cGUoKSksICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihwcm90b3R5cGUtPmdsb2JhbE9iamVj
dCgpKSk7XG4iKTsKQEAgLTUwODUsNyArNTA4NSw3IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZUdl
dHRlclRyYW1wb2xpbmVEZWYKICAgICAKICAgICBteSBAdGVtcGxhdGVQYXJhbWV0ZXJzID0gKCk7
CiAgICAgcHVzaChAdGVtcGxhdGVQYXJhbWV0ZXJzLCAkYXR0cmlidXRlR2V0dGVyQm9keU5hbWUp
OwotICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZW5pZW50VGhpc30p
IHsKKyAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5TGVuaWVu
dFRoaXN9KSB7CiAgICAgICAgIHB1c2goQHRlbXBsYXRlUGFyYW1ldGVycywgIkNhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpSZXR1cm5FYXJseSIpCiAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3It
PklzUHJvbWlzZVR5cGUoJGF0dHJpYnV0ZS0+dHlwZSkpIHsKICAgICAgICAgcHVzaChAdGVtcGxh
dGVQYXJhbWV0ZXJzLCAiQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJlamVjdFByb21pc2UiKQpA
QCAtNTI4MCw3ICs1MjgwLDcgQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlU2V0dGVyVHJhbXBvbGlu
ZURlZgogICAgIAogICAgIG15IEB0ZW1wbGF0ZVBhcmFtZXRlcnMgPSAoKTsKICAgICBwdXNoKEB0
ZW1wbGF0ZVBhcmFtZXRlcnMsICRhdHRyaWJ1dGVTZXR0ZXJCb2R5TmFtZSk7Ci0gICAgcHVzaChA
dGVtcGxhdGVQYXJhbWV0ZXJzLCAiQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJldHVybkVhcmx5
IikgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVuaWVudFRoaXN9OworICAg
IHB1c2goQHRlbXBsYXRlUGFyYW1ldGVycywgIkNhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpSZXR1
cm5FYXJseSIpIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUxlbmll
bnRUaGlzfTsKICAgICAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJib29sICR7YXR0cmlidXRl
U2V0dGVyTmFtZX0oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKVxuIik7CiAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CkBAIC02NzIxLDcgKzY3MjEsNyBAQCBzdWIgSXNB
bm5vdGF0ZWRUeXBlCiAKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q2xhbXB9OwogICAgIHJldHVybiAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntF
bmZvcmNlUmFuZ2V9OwotICAgIHJldHVybiAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntUcmVhdE51bGxBc30gJiYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1RyZWF0TnVsbEFz
fSBlcSAiRW1wdHlTdHJpbmciOworICAgIHJldHVybiAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ307CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0F0b21TdHJpbmd9OwogICAgIHJldHVybiAxIGlmICR0eXBl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ307CiB9CkBA
IC02NzMyLDcgKzY3MzIsNyBAQCBzdWIgR2V0QW5ub3RhdGVkSURMVHlwZQogCiAgICAgcmV0dXJu
ICJJRExDbGFtcEFkYXB0b3IiIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDbGFtcH07
CiAgICAgcmV0dXJuICJJRExFbmZvcmNlUmFuZ2VBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57RW5mb3JjZVJhbmdlfTsKLSAgICByZXR1cm4gIklETFRyZWF0TnVsbEFzRW1w
dHlBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VHJlYXROdWxsQXN9ICYm
ICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntUcmVhdE51bGxBc30gZXEgIkVtcHR5U3RyaW5n
IjsKKyAgICByZXR1cm4gIklETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvciIgaWYgJHR5
cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nfTsKICAgICBy
ZXR1cm4gIklETEF0b21TdHJpbmdBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57QXRvbVN0cmluZ307CiAgICAgcmV0dXJuICJJRExSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmlu
Z0FkYXB0b3IiIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZXF1aXJlc0V4aXN0aW5n
QXRvbVN0cmluZ307CiB9CkBAIC03NjE2LDEyICs3NjE2LDEyIEBAIHN1YiBHZW5lcmF0ZUNvbnN0
cnVjdG9ySGVscGVyTWV0aG9kcwogICAgICAgICAkbGVhc3RDb25zdHJ1Y3Rvckxlbmd0aCA9IDA7
CiAgICAgfQogCi0gICAgIyBJZiB0aGUgaW50ZXJmYWNlIGhhcyBhIHBhcmVudCBpbnRlcmZhY2Ug
d2hpY2ggZG9lcyBub3QgaGF2ZSBbTm9JbnRlcmZhY2VPYmplY3RdLCB0aGVuIHVzZSBpdHMgaW50
ZXJmYWNlIG9iamVjdCBhcyBwcm90b3R5cGUsCisgICAgIyBJZiB0aGUgaW50ZXJmYWNlIGhhcyBh
IHBhcmVudCBpbnRlcmZhY2Ugd2hpY2ggZG9lcyBub3QgaGF2ZSBbTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3RdLCB0aGVuIHVzZSBpdHMgaW50ZXJmYWNlIG9iamVjdCBhcyBwcm90b3R5cGUsCiAgICAg
IyBvdGhlcndpc2UgdXNlIEZ1bmN0aW9uUHJvdG90eXBlOiBodHRwOi8vaGV5Y2FtLmdpdGh1Yi5p
by93ZWJpZGwvI2ludGVyZmFjZS1vYmplY3QKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ0ZW1w
bGF0ZTw+IEpTVmFsdWUgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OnByb3RvdHlwZUZvclN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdClc
biIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogCi0gICAgYXNzZXJ0KCJBbiBp
bnRlcmZhY2UgY2Fubm90IGluaGVyaXQgZnJvbSBhbm90aGVyIGludGVyZmFjZSB0aGF0IGlzIG1h
cmtlZCBhcyBbTm9JbnRlcmZhY2VPYmplY3RdIikgaWYgJGludGVyZmFjZS0+cGFyZW50VHlwZSAm
JiAkY29kZUdlbmVyYXRvci0+R2V0SW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzRnJvbU5hbWUo
JGludGVyZmFjZS0+cGFyZW50VHlwZS0+bmFtZSktPntOb0ludGVyZmFjZU9iamVjdH07CisgICAg
YXNzZXJ0KCJBbiBpbnRlcmZhY2UgY2Fubm90IGluaGVyaXQgZnJvbSBhbm90aGVyIGludGVyZmFj
ZSB0aGF0IGlzIG1hcmtlZCBhcyBbTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RdIikgaWYgJGludGVy
ZmFjZS0+cGFyZW50VHlwZSAmJiAkY29kZUdlbmVyYXRvci0+R2V0SW50ZXJmYWNlRXh0ZW5kZWRB
dHRyaWJ1dGVzRnJvbU5hbWUoJGludGVyZmFjZS0+cGFyZW50VHlwZS0+bmFtZSktPntMZWdhY3lO
b0ludGVyZmFjZU9iamVjdH07CiAKICAgICBpZiAoISRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3Rv
ciBhbmQgJGludGVyZmFjZS0+cGFyZW50VHlwZSkgewogICAgICAgICBteSAkcGFyZW50Q2xhc3NO
YW1lID0gIkpTIiAuICRpbnRlcmZhY2UtPnBhcmVudFR5cGUtPm5hbWU7CkBAIC03NjM4LDcgKzc2
MzgsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJ7XG4iKTsKIAogICAgICMgVGhlcmUgbXVzdCBleGlzdCBhbiBpbnRlcmZh
Y2UgcHJvdG90eXBlIG9iamVjdCBmb3IgZXZlcnkgbm9uLWNhbGxiYWNrIGludGVyZmFjZSBkZWZp
bmVkLCByZWdhcmRsZXNzCi0gICAgIyBvZiB3aGV0aGVyIHRoZSBpbnRlcmZhY2Ugd2FzIGRlY2xh
cmVkIHdpdGggdGhlIFtOb0ludGVyZmFjZU9iamVjdF0gZXh0ZW5kZWQgYXR0cmlidXRlLgorICAg
ICMgb2Ygd2hldGhlciB0aGUgaW50ZXJmYWNlIHdhcyBkZWNsYXJlZCB3aXRoIHRoZSBbTGVnYWN5
Tm9JbnRlcmZhY2VPYmplY3RdIGV4dGVuZGVkIGF0dHJpYnV0ZS4KICAgICAjIGh0dHBzOi8vaGV5
Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2ludGVyZmFjZS1wcm90b3R5cGUtb2JqZWN0CiAgICAgaWYg
KFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSgkaW50ZXJmYWNlKSkgewogICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIGdsb2JhbE9iamVjdC5nZXRQcm90b3R5cGVEaXJlY3Qodm0pLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7XG4iKTsKQEAgLTc3MzcsNyAr
NzczNyw3IEBAIHN1YiBOZWVkc0NvbnN0cnVjdG9yUHJvcGVydHkKIHsKICAgICBteSAkaW50ZXJm
YWNlID0gc2hpZnQ7CiAgICAgCi0gICAgcmV0dXJuICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntOb0ludGVyZmFjZU9iamVjdH07CisgICAgcmV0dXJuICEkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lOb0ludGVyZmFjZU9iamVjdH07CiB9CiAKIHN1YiBJc0Nv
bnN0cnVjdGFibGUKQEAgLTc3NjAsMTEgKzc3NjAsMTEgQEAgc3ViIEhlYWRlck5lZWRzUHJvdG90
eXBlRGVjbGFyYXRpb24KICAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q3VzdG9tRGVmaW5lT3duUHJvcGVydHlPblByb3RvdHlwZX07CiB9CiAKLXN1YiBJc1VuZm9y
Z2VhYmxlCitzdWIgSXNMZWdhY3lVbmZvcmdlYWJsZQogewogICAgIG15ICgkaW50ZXJmYWNlLCAk
cHJvcGVydHkpID0gQF87CiAKLSAgICByZXR1cm4gJHByb3BlcnR5LT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntVbmZvcmdlYWJsZX0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VW5m
b3JnZWFibGV9OworICAgIHJldHVybiAkcHJvcGVydHktPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xl
Z2FjeVVuZm9yZ2VhYmxlfSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdh
Y3lVbmZvcmdlYWJsZX07CiB9CiAKIHN1YiBDb21wdXRlRnVuY3Rpb25TcGVjaWFsCkBAIC03Nzcy
LDcgKzc3NzIsNyBAQCBzdWIgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbAogICAgIG15ICgkaW50ZXJm
YWNlLCAkb3BlcmF0aW9uKSA9IEBfOwogCiAgICAgbXkgQHNwZWNpYWxzID0gKCk7Ci0gICAgcHVz
aChAc3BlY2lhbHMsICgiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSIsICJKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSIpKSBpZiBJc1VuZm9yZ2VhYmxlKCRpbnRlcmZh
Y2UsICRvcGVyYXRpb24pOworICAgIHB1c2goQHNwZWNpYWxzLCAoIkpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUiLCAiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkiKSkg
aWYgSXNMZWdhY3lVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKTsKICAgICBwdXNo
KEBzcGVjaWFscywgIkpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIikgaWYgJG9wZXJh
dGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm90RW51bWVyYWJsZX07CiAgICAgaWYgKElzSlNC
dWlsdGluKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pKSB7CiAgICAgICAgIHB1c2goQHNwZWNpYWxz
LCAiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbiIpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHJldmlzaW9u
IDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRl
cy5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw2ICsxOSwxMyBAQAogICAgICAgICAiQWN0aXZl
RE9NT2JqZWN0IjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNl
Il0KICAgICAgICAgfSwKKyAgICAgICAgIkFsbG93U2hhcmVkIjogeworICAgICAgICAgICAgImNv
bnRleHRzQWxsb3dlZCI6IFsidHlwZSJdLAorICAgICAgICAgICAgInN0YW5kYXJkIjogeworICAg
ICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jQWxs
b3dTaGFyZWQiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInVuc3VwcG9ydGVkIjogdHJ1
ZQorICAgICAgICB9LAogICAgICAgICAiQXBwbGVDb3B5cmlnaHQiOiB7CiAgICAgICAgICAgICAi
Y29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiLCAiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJd
CiAgICAgICAgIH0sCkBAIC0yNiw3ICszMywxMCBAQAogICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsidHlwZSJdCiAgICAgICAgIH0sCiAgICAgICAgICJDRVJlYWN0aW9ucyI6IHsKLSAg
ICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQor
ICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJd
LAorICAgICAgICAgICAgInN0YW5kYXJkIjogeworICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvY3VzdG9tLWVsZW1lbnRzLmh0bWwj
Y2VyZWFjdGlvbnMiCisgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgICJDYWNoZWRB
dHRyaWJ1dGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUi
XQpAQCAtMjQyLDYgKzI1MiwxMyBAQAogICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9o
ZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jR2xvYmFsIgogICAgICAgICAgICAgfQogICAgICAgICB9
LAorICAgICAgICAiSFRNTENvbnN0cnVjdG9yIjogeworICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsib3BlcmF0aW9uIl0sCisgICAgICAgICAgICAic3RhbmRhcmQiOiB7CisgICAgICAg
ICAgICAgICAgInVybCI6ICJodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9k
b20uaHRtbCNodG1sY29uc3RydWN0b3IiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInVu
c3VwcG9ydGVkIjogdHJ1ZQorICAgICAgICB9LAogICAgICAgICAiSW1wbGVtZW50ZWRBcyI6IHsK
ICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSIsICJkaWN0aW9uYXJ5
IiwgImRpY3Rpb25hcnktbWVtYmVyIiwgImVudW0iLCAiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJd
LAogICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdCkBAIC0yOTYsMzAgKzMxMyw2OCBAQAogICAg
ICAgICAiTGVnYWN5Q2FsbGVyIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsi
b3BlcmF0aW9uIl0KICAgICAgICAgfSwKLSAgICAgICAgIkxlZ2FjeVVuZW51bWVyYWJsZU5hbWVk
UHJvcGVydGllcyI6IHsKKyAgICAgICAgIkxlZ2FjeUxlbmllbnRTZXR0ZXIiOiB7CisgICAgICAg
ICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwKKyAgICAgICAgICAgICJzdGFu
ZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5p
by93ZWJpZGwvI0xlZ2FjeUxlbmllbnRTZXR0ZXIiCisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgInVuc3VwcG9ydGVkIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5TGVuaWVu
dFRoaXMiOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwK
KyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBz
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeUxlbmllbnRUaGlzIgorICAgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5TmFtZXNwYWNlIjogewogICAgICAgICAg
ICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCiAgICAgICAgICAgICAic3RhbmRh
cmQiOiB7Ci0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8v
d2ViaWRsLyNMZWdhY3lVbmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMiCisgICAgICAgICAgICAg
ICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNMZWdhY3lOYW1lc3Bh
Y2UiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInVuc3VwcG9ydGVkIjogdHJ1ZQorICAg
ICAgICB9LAorICAgICAgICAiTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QiOiB7CisgICAgICAgICAg
ICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAgICAgICAgICJzdGFuZGFy
ZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93
ZWJpZGwvI0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0IgogICAgICAgICAgICAgfQogICAgICAgICB9
LAotICAgICAgICAiTGVnYWN5V2luZG93QWxpYXMiOiB7CisgICAgICAgICJMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZyI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbInR5cGUiXSwK
KyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBz
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nIgorICAg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5T3ZlcnJpZGVCdWlsdElucyI6
IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAotICAgICAg
ICAgICAgInZhbHVlcyI6IFsiKiJdLAogICAgICAgICAgICAgInN0YW5kYXJkIjogewotICAgICAg
ICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jTGVnYWN5
V2luZG93QWxpYXMiCisgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRo
dWIuaW8vd2ViaWRsLyNMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIgogICAgICAgICAgICAgfQogICAg
ICAgICB9LAotICAgICAgICAiTGVuaWVudFNldHRlciI6IHsKLSAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdLAorICAgICAgICAiTGVnYWN5VHJlYXROb25PYmplY3RB
c051bGwiOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJjYWxsYmFjay1mdW5j
dGlvbiJdLAogICAgICAgICAgICAgInN0YW5kYXJkIjogewotICAgICAgICAgICAgICAgICJ1cmwi
OiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jTGVuaWVudFNldHRlciIKKyAgICAg
ICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2Fj
eVRyZWF0Tm9uT2JqZWN0QXNOdWxsIgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJ1bnN1
cHBvcnRlZCI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgIkxlbmllbnRUaGlzIjogewotICAg
ICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIl0sCisgICAgICAgICJMZWdh
Y3lVbmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMiOiB7CisgICAgICAgICAgICAiY29udGV4dHNB
bGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAg
ICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2Fj
eVVuZW51bWVyYWJsZU5hbWVkUHJvcGVydGllcyIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgIkxlZ2FjeVVuZm9yZ2VhYmxlIjogeworICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiIsICJpbnRlcmZhY2UiXSwKKyAgICAgICAg
ICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2Ft
LmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeVVuZm9yZ2VhYmxlIgorICAgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAiTGVnYWN5V2luZG93QWxpYXMiOiB7CisgICAgICAgICAgICAiY29u
dGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioi
XSwKICAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAgICAgICAgICAgICAidXJsIjogImh0
dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlbmllbnRUaGlzIgorICAgICAgICAgICAg
ICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jTGVnYWN5V2luZG93
QWxpYXMiCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgICJNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkIjogewpAQCAtMzM5LDI2ICszOTQsMTQgQEAKICAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCiAgICAgICAgICJOZXdPYmplY3Qi
OiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiLCAib3BlcmF0
aW9uIl0sCisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJvcGVyYXRpb24iXSwKICAg
ICAgICAgICAgICJzdGFuZGFyZCI6IHsKICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8v
aGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI05ld09iamVjdCIKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSwKLSAgICAgICAgIk5vSW50ZXJmYWNlT2JqZWN0IjogewotICAgICAgICAgICAgImNvbnRl
eHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCi0gICAgICAgICAgICAic3RhbmRhcmQiOiB7Ci0g
ICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNO
b0ludGVyZmFjZU9iamVjdCIKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKICAgICAgICAgIk5v
dEVudW1lcmFibGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1
dGUiLCAib3BlcmF0aW9uIl0KICAgICAgICAgfSwKLSAgICAgICAgIk92ZXJyaWRlQnVpbHRpbnMi
OiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKLSAgICAg
ICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5
Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI092ZXJyaWRlQnVpbHRpbnMiCi0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0sCiAgICAgICAgICJPdmVycmlkZUlETFR5cGUiOiB7CiAgICAgICAgICAgICAiY29u
dGV4dHNBbGxvd2VkIjogWyJ0eXBlIl0sCiAgICAgICAgICAgICAidmFsdWVzIjogWyIqIl0KQEAg
LTQyMyw3ICs0NjYsNyBAQAogICAgICAgICAiU2FtZU9iamVjdCI6IHsKICAgICAgICAgICAgICJj
b250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdLAogICAgICAgICAgICAgInN0YW5kYXJkIjog
ewotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlk
bC8jUmVwbGFjZWFibGUiCisgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5n
aXRodWIuaW8vd2ViaWRsLyNTYW1lT2JqZWN0IgogICAgICAgICAgICAgfSwKICAgICAgICAgICAg
ICJ1bnN1cHBvcnRlZCI6IHRydWUKICAgICAgICAgfSwKQEAgLTQzMyw2ICs0NzYsMTMgQEAKICAg
ICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI1Nl
Y3VyZUNvbnRleHQiCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCisgICAgICAgICJTZXJpYWxp
emFibGUiOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwK
KyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N0cnVjdHVyZWQtZGF0YS5odG1sI3Nl
cmlhbGl6YWJsZSIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAidW5zdXBwb3J0ZWQiOiB0
cnVlCisgICAgICAgIH0sCiAgICAgICAgICJTZXR0ZXJDYWxsV2l0aCI6IHsKICAgICAgICAgICAg
ICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdLAogICAgICAgICAgICAgInZhbHVlcyI6
IFsiRXhlY1N0YXRlIiwgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiLCAiR2xvYmFsT2JqZWN0Iiwg
IkFjdGl2ZVdpbmRvdyIsICJGaXJzdFdpbmRvdyJdLApAQCAtNDQ3LDI5ICs0OTcsMTYgQEAKICAg
ICAgICAgIlN1cHByZXNzVG9KU09iamVjdCI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93
ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCi0gICAgICAgICJUcmVhdE5vbk9iamVjdEFz
TnVsbCI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImNhbGxiYWNrLWZ1bmN0
aW9uIl0sCisgICAgICAgICJUcmFuc2ZlcmFibGUiOiB7CisgICAgICAgICAgICAiY29udGV4dHNB
bGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKICAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAg
ICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI1RyZWF0
Tm9uT2JqZWN0QXNOdWxsIgorICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3RydWN0dXJlZC1kYXRhLmh0bWwjdHJhbnNmZXJhYmxl
IgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCI6IHRydWUKICAgICAg
ICAgfSwKLSAgICAgICAgIlRyZWF0TnVsbEFzIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsidHlwZSJdLAotICAgICAgICAgICAgInZhbHVlcyI6IFsiRW1wdHlTdHJpbmciXSwK
LSAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAgICAgICAgICAgICAidXJsIjogImh0dHBz
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI1RyZWF0TnVsbEFzIgotICAgICAgICAgICAgfQot
ICAgICAgICB9LAogICAgICAgICAiVVJMIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dl
ZCI6IFsiYXR0cmlidXRlIl0KICAgICAgICAgfSwKLSAgICAgICAgIlVuZm9yZ2VhYmxlIjogewot
ICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiIs
ICJpbnRlcmZhY2UiXSwKLSAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAgICAgICAgICAg
ICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI1VuZm9yZ2VhYmxlIgot
ICAgICAgICAgICAgfQotICAgICAgICB9LAogICAgICAgICAiVW5zY29wYWJsZSI6IHsKICAgICAg
ICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXSwKICAg
ICAgICAgICAgICJzdGFuZGFyZCI6IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTY0LDcgKzE2NCw3IEBAIGZvcmVhY2ggbXkgJGlkbEZpbGUgKHNvcnQga2V5
cyAlaWRsRmlsZUgKIAogICAgICMgRm9yIGV2ZXJ5IGludGVyZmFjZSB0aGF0IGlzIGV4cG9zZWQg
aW4gYSBnaXZlbiBFQ01BU2NyaXB0IGdsb2JhbCBlbnZpcm9ubWVudCBhbmQ6CiAgICAgIyAtIGlz
IGEgY2FsbGJhY2sgaW50ZXJmYWNlIHRoYXQgaGFzIGNvbnN0YW50cyBkZWNsYXJlZCBvbiBpdCwg
b3IKLSAgICAjIC0gaXMgYSBub24tY2FsbGJhY2sgaW50ZXJmYWNlIHRoYXQgaXMgbm90IGRlY2xh
cmVkIHdpdGggdGhlIFtOb0ludGVyZmFjZU9iamVjdF0gZXh0ZW5kZWQgYXR0cmlidXRlLCBhIGNv
cnJlc3BvbmRpbmcKKyAgICAjIC0gaXMgYSBub24tY2FsbGJhY2sgaW50ZXJmYWNlIHRoYXQgaXMg
bm90IGRlY2xhcmVkIHdpdGggdGhlIFtMZWdhY3lOb0ludGVyZmFjZU9iamVjdF0gZXh0ZW5kZWQg
YXR0cmlidXRlLCBhIGNvcnJlc3BvbmRpbmcKICAgICAjICAgcHJvcGVydHkgbXVzdCBleGlzdCBv
biB0aGUgRUNNQVNjcmlwdCBlbnZpcm9ubWVudCdzIGdsb2JhbCBvYmplY3QuCiAgICAgIyBTZWUg
aHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZXMtaW50ZXJmYWNlcwogICAgIG15ICRl
eHRlbmRlZEF0dHJpYnV0ZXMgPSBnZXRJbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXNGcm9tSURM
KCRpZGxGaWxlQ29udGVudHMpOwpAQCAtNDU5LDcgKzQ1OSw3IEBAIHN1YiBzaG91bGRFeHBvc2VJ
bnRlcmZhY2UKIHsKICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVzID0gc2hpZnQ7CiAKLSAgICBy
ZXR1cm4gISRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiTm9JbnRlcmZhY2VPYmplY3QifTsKKyAgICBy
ZXR1cm4gISRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QifTsK
IH0KIAogc3ViIHVwZGF0ZURpY3Rpb25hcnlEZXBlbmRlbmNpZXMKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9ycy5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0Jp
bmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3Ry
dWN0b3JzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQCBwYXJ0aWFsIGludGVy
ZmFjZSBUZXN0R2xvYmFsT2JqZWN0IHsKICAgICBhdHRyaWJ1dGUgVGVzdEludGVyZmFjZUxlYWRp
bmdVbmRlcnNjb3JlQ29uc3RydWN0b3IgVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOwog
ICAgIGF0dHJpYnV0ZSBUZXN0SXRlcmFibGVDb25zdHJ1Y3RvciBUZXN0SXRlcmFibGU7CiAgICAg
YXR0cmlidXRlIFRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yIFRlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvcjsKKyAgICBhdHRyaWJ1dGUgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnND
b25zdHJ1Y3RvciBUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczsKICAgICBhdHRyaWJ1dGUgVGVz
dE1hcExpa2VDb25zdHJ1Y3RvciBUZXN0TWFwTGlrZTsKICAgICBhdHRyaWJ1dGUgVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yIFRlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXI7CiAgICAgYXR0cmlidXRlIFRlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yIFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbjsKQEAgLTQyLDEyICs0MywxMSBAQCBwYXJ0aWFsIGludGVyZmFj
ZSBUZXN0R2xvYmFsT2JqZWN0IHsKICAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXJDb25zdHJ1Y3RvciBUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjsKICAgICBh
dHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3RvciBUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjsKICAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvciBUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjsKLSAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVy
V2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJp
ZGVCdWlsdGluczsKLSAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQ29uc3RydWN0b3IgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzOwotICAgIGF0dHJpYnV0ZSBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczsKKyAgICBhdHRyaWJ1dGUgVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciBUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluczsKKyAgICBhdHRyaWJ1dGUgVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yIFRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM7CisgICAgYXR0cmlidXRlIFRl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM7CiAgICAgW0NvbmRpdGlvbmFs
PUNvbmRpdGlvbkRlcml2ZWRdIGF0dHJpYnV0ZSBUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxDb25z
dHJ1Y3RvciBUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWw7CiAgICAgYXR0cmlidXRlIFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IgVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U7Ci0gICAgYXR0cmlidXRlIFRlc3RPdmVycmlkZUJ1aWx0
aW5zQ29uc3RydWN0b3IgVGVzdE92ZXJyaWRlQnVpbHRpbnM7CiAgICAgYXR0cmlidXRlIFRlc3RQ
bHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3RvciBUZXN0UGx1Z2luSW50ZXJmYWNlOwogICAgIGF0dHJp
YnV0ZSBUZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3IgVGVzdFJlYWRPbmx5TWFwTGlrZTsK
ICAgICBhdHRyaWJ1dGUgVGVzdFJlYWRPbmx5U2V0TGlrZUNvbnN0cnVjdG9yIFRlc3RSZWFkT25s
eVNldExpa2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3Vw
cGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAkocmV2aXNp
b24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBs
ZW1lbnRhbERlcGVuZGVuY2llcy5kZXAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsOSBA
QCBXZWJET01UZXN0SXRlcmFibGUuaDogCiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOiAK
IERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOiAKIFdlYkRPTVRlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5oOiAKK0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaDogCitET01UZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdElucy5oOiAKK1dlYkRPTVRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Lmg6IAogSlNUZXN0TWFwTGlrZS5oOiAKIERPTVRlc3RNYXBMaWtlLmg6IAogV2ViRE9NVGVzdE1h
cExpa2UuaDogCkBAIC0xNjEsMTUgKzE2NCwxNSBAQCBXZWJET01UZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlci5oCiBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyLmg6IAogRE9NVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuaDog
CiBXZWJET01UZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5oOiAKLUpT
VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaDogCi1ET01UZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5oOiAKLVdlYkRPTVRlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zLmg6IAotSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXMuaDogCi1ET01UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaDogCi1X
ZWJET01UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaDogCi1KU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaDog
Ci1ET01UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zLmg6IAotV2ViRE9NVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGlucy5oOiAKK0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMuaDogCitET01UZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWls
dElucy5oOiAKK1dlYkRPTVRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Lmg6IAorSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmg6
IAorRE9NVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5oOiAK
K1dlYkRPTVRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaDog
CitKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zLmg6IAorRE9NVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaDogCitXZWJET01UZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucy5oOiAKIEpTVGVzdE5vZGUuaDogCiBET01UZXN0Tm9kZS5oOiAKIFdlYkRPTVRl
c3ROb2RlLmg6IApAQCAtMTgzLDkgKzE4Niw2IEBAIFRlc3RPcGVyYXRpb25CYXNlLmlkbDoKIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuaDogCiBET01UZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5oOiAKIFdlYkRPTVRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlLmg6IAotSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oOiAKLURP
TVRlc3RPdmVycmlkZUJ1aWx0aW5zLmg6IAotV2ViRE9NVGVzdE92ZXJyaWRlQnVpbHRpbnMuaDog
CiBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaDogCiBET01UZXN0UGx1Z2luSW50ZXJmYWNlLmg6IAog
V2ViRE9NVGVzdFBsdWdpbkludGVyZmFjZS5oOiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0SW5jbHVkZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW5jbHVkZXMuaWRsCShyZXZpc2lvbiAy
NjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEluY2x1
ZGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogLy8gY2hhbmdlcyBpbiBp
dHMgb3V0cHV0LgogWwogICAgIENvbmRpdGlvbmFsPUNvbmRpdGlvbjIyfENvbmRpdGlvbjIzLAot
ICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50
ZXJmYWNlIFRlc3RJbmNsdWRlcyB7CiAgICAgc3RhdGljIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25n
IGluY2x1ZGVzU3RhdGljUmVhZE9ubHlBdHRyOwogICAgIHN0YXRpYyBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGluY2x1ZGVzU3RhdGljQXR0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cworXSBpbnRlcmZhY2UgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgeworICAgIGdldHRlciBO
b2RlIG5hbWVkSXRlbShET01TdHJpbmcgbmFtZSk7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaWRsCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
CitdIGludGVyZmFjZSBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyB7
CisgICAgc2V0dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyB2YWx1ZSk7
CisKKyAgICAvLyBOT1RFOiBOYW1lZCBzZXR0ZXJzIHJlcXVpcmUgdGhlIHByZXNlbmNlIG9mIGEg
bmFtZWQgZ2V0dGVyIGFzIHdlbGwuCisgICAgZ2V0dGVyIERPTVN0cmluZyAoRE9NU3RyaW5nIG5h
bWUpOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitpbnRlcmZhY2UgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcyB7CisgICAgc2V0dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5nIG5hbWUs
IERPTVN0cmluZyB2YWx1ZSk7CisKKyAgICAvLyBOT1RFOiBOYW1lZCBzZXR0ZXJzIHJlcXVpcmUg
dGhlIHByZXNlbmNlIG9mIGEgbmFtZWQgZ2V0dGVyIGFzIHdlbGwuCisgICAgZ2V0dGVyIERPTVN0
cmluZyAoRE9NU3RyaW5nIG5hbWUpOworCisgICAgW0xlZ2FjeVVuZm9yZ2VhYmxlXSByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVuZm9yZ2VhYmxlQXR0cmlidXRlOworICAgIFtMZWdhY3lV
bmZvcmdlYWJsZV0gdW5kZWZpbmVkIHVuZm9yZ2VhYmxlT3BlcmF0aW9uKCk7Cit9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1sKKyAgICBMZWdhY3lPdmVycmlkZUJ1aWx0SW5zCitdIGludGVy
ZmFjZSBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucyB7CisgICAgc2V0dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5nIG5h
bWUsIERPTVN0cmluZyB2YWx1ZSk7CisKKyAgICAvLyBOT1RFOiBOYW1lZCBzZXR0ZXJzIHJlcXVp
cmUgdGhlIHByZXNlbmNlIG9mIGEgbmFtZWQgZ2V0dGVyIGFzIHdlbGwuCisgICAgZ2V0dGVyIERP
TVN0cmluZyAoRE9NU3RyaW5nIG5hbWUpOworCisgICAgW0xlZ2FjeVVuZm9yZ2VhYmxlXSByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVuZm9yZ2VhYmxlQXR0cmlidXRlOworICAgIFtMZWdh
Y3lVbmZvcmdlYWJsZV0gdW5kZWZpbmVkIHVuZm9yZ2VhYmxlT3BlcmF0aW9uKCk7Cit9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaWRs
CShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaWRsCShub25leGlzdGVudCkK
QEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBPdmVycmlkZUJ1aWx0aW5zCi1d
IGludGVyZmFjZSBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyB7Ci0gICAgc2V0
dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyB2YWx1ZSk7Ci0KLSAgICAv
LyBOT1RFOiBOYW1lZCBzZXR0ZXJzIHJlcXVpcmUgdGhlIHByZXNlbmNlIG9mIGEgbmFtZWQgZ2V0
dGVyIGFzIHdlbGwuCi0gICAgZ2V0dGVyIERPTVN0cmluZyAoRE9NU3RyaW5nIG5hbWUpOwotfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXMuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmlk
bAkobm9uZXhpc3RlbnQpCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1pbnRlcmZhY2Ug
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIHsKLSAgICBzZXR0ZXIgdW5k
ZWZpbmVkIChET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKLQotICAgIC8vIE5PVEU6
IE5hbWVkIHNldHRlcnMgcmVxdWlyZSB0aGUgcHJlc2VuY2Ugb2YgYSBuYW1lZCBnZXR0ZXIgYXMg
d2VsbC4KLSAgICBnZXR0ZXIgRE9NU3RyaW5nIChET01TdHJpbmcgbmFtZSk7Ci0KLSAgICBbVW5m
b3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdW5mb3JnZWFibGVBdHRyaWJ1
dGU7Ci0gICAgW1VuZm9yZ2VhYmxlXSB1bmRlZmluZWQgdW5mb3JnZWFibGVPcGVyYXRpb24oKTsK
LX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaWRsCShy
ZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
cy5pZGwJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAg
IE92ZXJyaWRlQnVpbHRpbnMKLV0gaW50ZXJmYWNlIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMgewotICAgIHNldHRlciB1bmRlZmluZWQg
KERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgdmFsdWUpOwotCi0gICAgLy8gTk9URTogTmFtZWQg
c2V0dGVycyByZXF1aXJlIHRoZSBwcmVzZW5jZSBvZiBhIG5hbWVkIGdldHRlciBhcyB3ZWxsLgot
ICAgIGdldHRlciBET01TdHJpbmcgKERPTVN0cmluZyBuYW1lKTsKLQotICAgIFtVbmZvcmdlYWJs
ZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1bmZvcmdlYWJsZUF0dHJpYnV0ZTsKLSAg
ICBbVW5mb3JnZWFibGVdIHVuZGVmaW5lZCB1bmZvcmdlYWJsZU9wZXJhdGlvbigpOwotfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNzMsMTEgKzczLDExIEBAIGVudW0g
VGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBhdHRyaWJ1dGUgVVNWU3Ry
aW5nIHVzdnN0cmluZ0F0dHI7CiAgICAgYXR0cmlidXRlIFRlc3RPYmogdGVzdE9iakF0dHI7CiAg
ICAgYXR0cmlidXRlIFRlc3RPYmo/IHRlc3ROdWxsYWJsZU9iakF0dHI7Ci0gICAgW0xlbmllbnRU
aGlzXSBhdHRyaWJ1dGUgVGVzdE9iaiBsZW5pZW50VGVzdE9iakF0dHI7Ci0gICAgW1VuZm9yZ2Vh
YmxlXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVuZm9yZ2VhYmxlQXR0cjsKLSAgICBh
dHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgc3RyaW5nQXR0clRy
ZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmc7Ci0gICAgYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0
eVN0cmluZ10gVVNWU3RyaW5nIHVzdnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5n
OwotICAgIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIEJ5dGVTdHJpbmcgYnl0
ZVN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nOworICAgIFtMZWdhY3lMZW5pZW50
VGhpc10gYXR0cmlidXRlIFRlc3RPYmogbGVuaWVudFRlc3RPYmpBdHRyOworICAgIFtMZWdhY3lV
bmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1bmZvcmdlYWJsZUF0dHI7
CisgICAgYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHN0cmlu
Z0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nOworICAgIGF0dHJpYnV0ZSBbTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmddIFVTVlN0cmluZyB1c3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZzsKKyAgICBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBCeXRlU3Ry
aW5nIGJ5dGVTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZzsKICAgICBhdHRyaWJ1
dGUgcmVjb3JkPERPTVN0cmluZywgbG9uZz4gc3RyaW5nTG9uZ1JlY29yZEF0dHI7CiAgICAgYXR0
cmlidXRlIHJlY29yZDxVU1ZTdHJpbmcsIGxvbmc+IHVzdnN0cmluZ0xvbmdSZWNvcmRBdHRyOwog
ICAgIGF0dHJpYnV0ZSByZWNvcmQ8Qnl0ZVN0cmluZywgbG9uZz4gdXN2c3RyaW5nTG9uZ1JlY29y
ZEF0dHI7CkBAIC0xNDIsOCArMTQyLDggQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwg
ImtpbmRhLWxvdwogICAgIGxvbmcgbG9uZ01ldGhvZFdpdGhBcmdzKGxvbmcgbG9uZ0FyZywgRE9N
U3RyaW5nIHN0ckFyZywgVGVzdE9iaiBvYmpBcmcpOwogICAgIFRlc3RPYmogb2JqTWV0aG9kKCk7
CiAgICAgVGVzdE9iaiBvYmpNZXRob2RXaXRoQXJncyhsb25nIGxvbmdBcmcsIERPTVN0cmluZyBz
dHJBcmcsIFRlc3RPYmogb2JqQXJnKTsKLSAgICBbVW5mb3JnZWFibGVdIGxvbmcgdW5mb3JnZWFi
bGVNZXRob2QoKTsKLSAgICB1bmRlZmluZWQgbWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1w
dHlTdHJpbmcoW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgYXJnKTsKKyAgICBb
TGVnYWN5VW5mb3JnZWFibGVdIGxvbmcgdW5mb3JnZWFibGVNZXRob2QoKTsKKyAgICB1bmRlZmlu
ZWQgbWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoW0xlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nXSBET01TdHJpbmcgYXJnKTsKICAgICB1bmRlZmluZWQgbWV0aG9kV2l0aFhQYXRo
TlNSZXNvbHZlclBhcmFtZXRlcihYUGF0aE5TUmVzb2x2ZXIgcmVzb2x2ZXIpOwogCiAgICAgLy8g
TnVsbGFibGUgU3RyaW5nIHJldHVybiB2YWx1ZXMuCkBAIC0xNTksMTEgKzE1OSwxMSBAQCBlbnVt
IFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAKICAgICB1bmRlZmluZWQgbWV0
aG9kV2l0aFVTVlN0cmluZ0FyZyhVU1ZTdHJpbmcgc3RyKTsKICAgICB1bmRlZmluZWQgbWV0aG9k
V2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnKFVTVlN0cmluZz8gc3RyKTsKLSAgICB1bmRlZmluZWQg
bWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoW1RyZWF0TnVs
bEFzPUVtcHR5U3RyaW5nXSBVU1ZTdHJpbmcgc3RyKTsKKyAgICB1bmRlZmluZWQgbWV0aG9kV2l0
aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoW0xlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nXSBVU1ZTdHJpbmcgc3RyKTsKIAogICAgIHVuZGVmaW5lZCBtZXRob2RXaXRoQnl0ZVN0
cmluZ0FyZyhCeXRlU3RyaW5nIHN0cik7CiAgICAgdW5kZWZpbmVkIG1ldGhvZFdpdGhOdWxsYWJs
ZUJ5dGVTdHJpbmdBcmcoQnl0ZVN0cmluZz8gc3RyKTsKLSAgICB1bmRlZmluZWQgbWV0aG9kV2l0
aEJ5dGVTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFtUcmVhdE51bGxBcz1FbXB0
eVN0cmluZ10gQnl0ZVN0cmluZyBzdHIpOworICAgIHVuZGVmaW5lZCBtZXRob2RXaXRoQnl0ZVN0
cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
XSBCeXRlU3RyaW5nIHN0cik7CiAKICAgICB1bmRlZmluZWQgc2VyaWFsaXplZFZhbHVlKFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSBzZXJpYWxpemVkQXJnKTsKIApAQCAtNDUwLDggKzQ1MCw4IEBAIGVu
dW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBbQ29uZGl0aW9uYWw9
Q09ORElUSU9OMiwgQ29uZGl0aW9uYWxseVJlYWRXcml0ZT1DT05ESVRJT05dIGF0dHJpYnV0ZSBO
b2RlIGNvbmRpdGlvbmFsQW5kQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZTsKIAogICAg
IFtSdW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZT1UZXN0RmVhdHVyZV0gYXR0cmlidXRlIE5v
ZGUgcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGU7Ci0gICAgW1J1bnRpbWVD
b25kaXRpb25hbGx5UmVhZFdyaXRlPVRlc3RGZWF0dXJlLCBVbmZvcmdlYWJsZV0gYXR0cmlidXRl
IE5vZGUgcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZTsK
LSAgICBbUnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGU9VGVzdEZlYXR1cmUsIFByaXZhdGVJ
ZGVudGlmaWVyLCBVbmZvcmdlYWJsZV0gYXR0cmlidXRlIE5vZGUgcnVudGltZUNvbmRpdGlvbmFs
bHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZVByaXZhdGU7CisgICAgW1J1bnRpbWVDb25k
aXRpb25hbGx5UmVhZFdyaXRlPVRlc3RGZWF0dXJlLCBMZWdhY3lVbmZvcmdlYWJsZV0gYXR0cmli
dXRlIE5vZGUgcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJs
ZTsKKyAgICBbUnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGU9VGVzdEZlYXR1cmUsIFByaXZh
dGVJZGVudGlmaWVyLCBMZWdhY3lVbmZvcmdlYWJsZV0gYXR0cmlidXRlIE5vZGUgcnVudGltZUNv
bmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZVByaXZhdGU7CiAgICAgW1J1
bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlPVRlc3RGZWF0dXJlXSBhdHRyaWJ1dGUgUHJvbWlz
ZTxkb3VibGU+IHJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlUHJvbWlzZTsK
IAogICAgIFtFeHBvc2VkPVdpbmRvd10gYXR0cmlidXRlIGxvbmcgY29uZGl0aW9uYWxseUV4cG9z
ZWRUb1dpbmRvd0F0dHJpYnV0ZTsKQEAgLTQ3Niw3ICs0NzYsNyBAQCB0eXBlZGVmIGFueSBBbnlU
eXBlZGVmOwogICAgIERPTVN0cmluZyBzdHJpbmdXaXRoRGVmYXVsdCA9ICJkZWZhdWx0U3RyaW5n
IjsKICAgICBET01TdHJpbmcgc3RyaW5nV2l0aG91dERlZmF1bHQ7CiAgICAgRE9NU3RyaW5nPyBu
dWxsYWJsZVN0cmluZ1dpdGhEZWZhdWx0ID0gbnVsbDsKLSAgICBbVHJlYXROdWxsQXM9RW1wdHlT
dHJpbmddIERPTVN0cmluZyBzdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nOworICAgIFtMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJp
bmc7CiAgICAgYm9vbGVhbiBib29sZWFuV2l0aERlZmF1bHQgPSBmYWxzZTsKICAgICBib29sZWFu
IGJvb2xlYW5XaXRob3V0RGVmYXVsdDsKICAgICBzZXF1ZW5jZTxET01TdHJpbmc+IHNlcXVlbmNl
T2ZTdHJpbmdzOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RPcGVyYXRpb25CYXNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE9wZXJhdGlvbkJhc2UuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9wZXJhdGlvbkJhc2Uu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAKIFsKICAgICBDb25kaXRpb25h
bD1Db25kaXRpb25CYXNlLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgVGVzdE9wZXJhdGlvbkJhc2UgewogICAgIHVuZGVm
aW5lZCBub25Db25kaXRpb25hbE9wZXJhdGlvbigpOwogICAgIFtDb25kaXRpb25hbD1Db25kaXRp
b25PcGVyYXRpb25dIHVuZGVmaW5lZCBjb25kaXRpb25hbE9wZXJhdGlvbigpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE92ZXJyaWRlQnVpbHRpbnMuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE92ZXJyaWRlQnVpbHRpbnMuaWRsCShub25leGlz
dGVudCkKQEAgLTEsNiArMCwwIEBACi1bCi0gICAgT3ZlcnJpZGVCdWlsdGlucwotXSBpbnRlcmZh
Y2UgVGVzdE92ZXJyaWRlQnVpbHRpbnMKLXsKLSAgICBnZXR0ZXIgTm9kZSBuYW1lZEl0ZW0oRE9N
U3RyaW5nIG5hbWUpOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAkocmV2aXNp
b24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw3IEBAIGJv
b2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5U2wKICAgICAgICAgICAgIHJldHVy
biB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExU
eXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAg
ICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVn
YWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0g
dG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dC0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTIwMSw3ICsyMDEsNyBAQCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9w
ZXJ0eVNsCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJl
c3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChh
dXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1
aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG5hbWVk
UHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZh
bHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0
LmNwcAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYg
KzU3LDcgQEAKICNpbmNsdWRlICJKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5oIgog
I2luY2x1ZGUgIkpTVGVzdEl0ZXJhYmxlLmgiCiAjaW5jbHVkZSAiSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgiCiAj
aW5jbHVkZSAiSlNUZXN0TWFwTGlrZS5oIgogI2luY2x1ZGUgIkpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uLmgiCkBAIC03NSwxMSArNzYsMTAgQEAKICNpbmNsdWRlICJK
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5oIgogI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuaCIKLSNpbmNsdWRlICJKU1Rlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zLmgiCi0jaW5jbHVkZSAiSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXMuaCIKLSNpbmNsdWRlICJKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaCIKKyNpbmNsdWRlICJKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgiCisjaW5jbHVkZSAiSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmgiCisjaW5jbHVkZSAi
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdElucy5oIgogI2luY2x1ZGUgIkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2UuaCIKLSNpbmNsdWRlICJKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgiCiAj
aW5jbHVkZSAiSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSlNUZXN0UmVhZE9u
bHlNYXBMaWtlLmgiCiAjaW5jbHVkZSAiSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmgiCkBAIC0yMjMs
NiArMjIzLDggQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZQogYm9v
bCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0SXRlcmFibGVDb25zdHJ1Y3RvcihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
c0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE1hcExpa2VDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TWFwTGlrZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0
cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7CkBAIC0yNTksMjAgKzI2MSwxOCBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEdsb2JhbE9iamVjdFRlCiBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyQ29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1
Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25z
dHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKICNpZiBFTkFCTEUoQ29uZGl0aW9uRGVyaXZlZCkKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0R2xvYmFsT2JqZWN0VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsQ29uc3RydWN0b3IoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsQ29u
c3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2Jh
bE9iamVjdFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3Io
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEdsb2JhbE9iamVjdFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJv
b2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RQbHVnaW5J
bnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0
UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAg
LTMyMCwxMyArMzIwLDEzIEBAIHVzaW5nIEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yID0g
SlMKIAogLyogSGFzaCB0YWJsZSAqLwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNo
SW5kZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFsyNjhdID0geworc3RhdGljIGNvbnN0
IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY5
XSA9IHsKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDAsIC0xIH0sCisgICAgeyA0MSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgMCwgLTEgfSwKLSAgICB7IDgsIDI2MyB9LAotICAgIHsg
NDQsIC0xIH0sCisgICAgeyA4LCAyNjQgfSwKKyAgICB7IDQ1LCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzU2LDcgKzM1Niw3IEBA
IHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDM0LCAtMSB9LAorICAg
IHsgMzUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCkBAIC0zNzEsMTAgKzM3MSwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RI
YXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCi0gICAgeyAzOCwgLTEgfSwKLSAgICB7IDIwLCAyNjQgfSwKKyAgICB7IDM5LCAtMSB9
LAorICAgIHsgMjAsIDI2NSB9LAogICAgIHsgMTAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IDQ2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LApAQCAtMzgzLDE1ICszODQsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0
SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzNiwgLTEgfSwKKyAgICB7IDM3LCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjIs
IDI2NSB9LAorICAgIHsgMjIsIDI2NiB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LApAQCAtNDE5LDI0ICs0MTksMjQgQEAgc3RhdGljIGNvbnN0IHN0
cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgMTksIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDYsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKICAg
ICB7IDE4LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzNSwgLTEgfSwKKyAgICB7IDM2LCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDQsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1MCwg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAogICAgIHsgMjUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
LSAgICB7IDIsIDI2NyB9LAotICAgIHsgMzcsIC0xIH0sCisgICAgeyAyLCAyNjggfSwKKyAgICB7
IDM4LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LApAQCAtNDUyLDEwICs0NTIsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFz
aEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAotICAgIHsgMzEsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKKyAgICB7IDMyLCAtMSB9LAor
ICAgIHsgMjcsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQyLCAtMSB9LAorICAgIHsg
NDMsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCkBAIC00NjksNyArNDY5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaElu
ZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAotICAgIHsgLTEsIC0xIH0sCisgICAgeyA0OCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQ4Myw4ICs0ODMsOCBAQCBzdGF0aWMg
Y29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzMiwgLTEgfSwKLSAgICB7IDI5LCAy
NjIgfSwKKyAgICB7IDMzLCAtMSB9LAorICAgIHsgMzAsIDI2MiB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyA1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC01MDUsNyArNTA1LDcgQEAgc3Rh
dGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzMsIDI2NiB9LAorICAgIHsg
MzQsIDI2NyB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAxNywgLTEgfSwKICAgICB7IC0xLCAt
MSB9LApAQCAtNTI4LDcgKzUyOCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJ
bmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKLSAgICB7IDU2LCAtMSB9LAorICAgIHsgNDcsIDI2MyB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IDMsIC0xIH0sCkBAIC01NTAsMTIgKzU1MCwxMiBAQCBzdGF0
aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0OCwgMjYxIH0sCisgICAgeyA0
OSwgMjYxIH0sCiAgICAgeyAxMSwgMjYwIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDYzLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0NywgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNTY1
LDEwICs1NjUsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAog
ICAgIHsgMjYsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsg
MjgsIC0xIH0sCisgICAgeyAyOSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ1LCAtMSB9LAogICAgIHsgNywgLTEgfSwKICAg
ICB7IDUxLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC01NzcsMTMgKzU3NywxNCBAQCBzdGF0
aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyNywgMjU5IH0sCi0gICAgeyAz
MCwgLTEgfSwKLSAgICB7IDM5LCAtMSB9LAotICAgIHsgNDEsIC0xIH0sCi0gICAgeyA0MywgLTEg
fSwKLSAgICB7IDQ5LCAtMSB9LAorICAgIHsgMjgsIDI1OSB9LAorICAgIHsgMzEsIC0xIH0sCisg
ICAgeyA0MCwgLTEgfSwKKyAgICB7IDQyLCAtMSB9LAorICAgIHsgNDQsIC0xIH0sCisgICAgeyA1
MCwgLTEgfSwKICAgICB7IDU1LCAtMSB9LAorICAgIHsgNTYsIC0xIH0sCiAgICAgeyA1NywgLTEg
fSwKICAgICB7IDU5LCAtMSB9LAogICAgIHsgNjQsIC0xIH0sCkBAIC02MzMsNiArNjM0LDcgQEAg
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdsb2JhbAogICAgIHsgIlRlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RU
ZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgIlRl
c3RJdGVyYWJsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdEl0ZXJhYmxlQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0SXRlcmFibGVDb25zdHJ1Y3RvcikgfSB9LAog
ICAgIHsgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgIlRlc3RNYXBMaWtl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TWFwTGlrZUNvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0R2xvYmFsT2JqZWN0VGVzdE1hcExpa2VDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgIlRlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9i
amVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25z
dHJ1Y3RvcikgfSB9LAogICAgIHsgIlRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvcikgfSB9LApA
QCAtNjUxLDE2ICs2NTMsMTUgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEds
b2JhbAogICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rv
cikgfSB9LAogICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQW5kU2V0dGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvcikgfSB9
LAotICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVp
bHRpbnNDb25zdHJ1Y3RvcikgfSB9LAotICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcikgfSB9LAot
ICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25z
dHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1
Y3RvcikgfSB9LAorICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxP
YmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnNDb25zdHJ1Y3RvcikgfSB9LAogI2lmIEVOQUJMRShDb25kaXRpb25EZXJpdmVkKQog
ICAgIHsgIlRlc3RPcGVyYXRpb25Db25kaXRpb25hbCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxDb25zdHJ1Y3RvcikgfSB9LAogI2Vsc2UKICAgICB7
IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAgICAgeyAiVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVj
dFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RHbG9iYWxPYmplY3RUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0
cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdE92ZXJyaWRlQnVpbHRpbnMiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dEdsb2JhbE9iamVjdFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVz
dFBsdWdpbkludGVyZmFjZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdFBsdWdpbklu
dGVyZmFjZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFBsdWdpbkludGVyZmFj
ZUNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdFJlYWRPbmx5TWFwTGlrZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0R2xvYmFsT2JqZWN0VGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
R2xvYmFsT2JqZWN0VGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAi
VGVzdFJlYWRPbmx5U2V0TGlrZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdFJlYWRP
bmx5U2V0TGlrZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFJlYWRPbmx5U2V0
TGlrZUNvbnN0cnVjdG9yKSB9IH0sCkBAIC0xNTYxLDYgKzE1NjIsMjkgQEAgYm9vbCBzZXRKU1Rl
c3RHbG9iYWxPYmplY3RUZXN0SlNCdWlsdGluQwogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvckNvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiKTsKIH0KIAorc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0
aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0R2xv
YmFsT2JqZWN0VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+
OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1
Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rv
ci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMiKSwgc3RybGVuKCJUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpKSwgdmFs
dWUpOworfQorCitib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorewor
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3JTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zIik7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RH
bG9iYWxPYmplY3RUZXN0TWFwTGlrZUNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpAQCAtMTk3NSw3MyArMTk5OSw3
MyBAQCBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlCiAgICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvclNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIiKTsKIH0KIAotc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3N0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdEluc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBKU1Rlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7CisgICAgcmV0dXJuIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldENvbnN0cnVjdG9yKEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RU
ZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yR2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnMiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46
OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdEluc0NvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKTsKIH0KIAotc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAg
ICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdE5hbWVkU2V0dGVyV2l0aE92
ZXJyaWRlQnVpbHRpbnMiKSwgc3RybGVuKCJUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWls
dGlucyIpKSwgdmFsdWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpLCBzdHJsZW4oIlRlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIikpLCB2YWx1ZSk7CiB9CiAKLWJv
b2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNl
dEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEds
b2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRl
c3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIik7CisgICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvclNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworICAgIHJldHVybiBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmdldENvbnN0cnVj
dG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9i
amVjdCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXND
b25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyIpOworICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvckdldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMiKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Nv
bnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rl
c3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCitzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAgICByZXR1cm4gdGhp
c09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzIiksIHN0cmxlbigiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
IikpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMiKSwgc3RybGVuKCJUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzIikpLCB2YWx1ZSk7CiB9
CiAKLWJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQorYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6
c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0NvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMi
KTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRK
U1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnND
b25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNU
ZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkK
IHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
czo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNP
YmplY3QuZ2xvYmFsT2JqZWN0KCkpOworICAgIHJldHVybiBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRD
b25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5n
bG9iYWxPYmplY3QoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnND
b25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9i
YWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
LSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+
OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvckdldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIik7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVj
dCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rl
c3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAg
ICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyIpLCBzdHJsZW4oIlRlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMiKSksIHZh
bHVlKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMiKSwgc3RybGVuKCJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpKSwgdmFsdWUpOwogfQogCi1ib29sIHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCitib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnND
b25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0
Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3JTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zIik7CiB9CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uRGVyaXZlZCkKQEAgLTIwOTYs
MjkgKzIxMjAsNiBAQCBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVybG9hZGVkCiAg
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0
R2xvYmFsT2JqZWN0VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1
Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UiKTsKIH0KIAotc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29u
c3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVz
dEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKLXsKLSAgICBVTlVTRURfUEFSQU0obGV4aWNhbEds
b2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldENvbnN0
cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2Jh
bE9iamVjdCgpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE92
ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RPdmVycmlkZUJ1aWx0aW5zIik7Ci19Ci0KLXN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0
cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RH
bG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiVGVzdE92ZXJyaWRlQnVpbHRpbnMiKSwgc3RybGVuKCJUZXN0T3ZlcnJpZGVCdWlsdGlucyIp
KSwgdmFsdWUpOwotfQotCi1ib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVycmlkZUJ1
aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewot
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RPdmVycmlkZUJ1
aWx0aW5zIik7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RU
ZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKIHsKICAgICBV
TlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1MSBAQAorLyoKKyAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBm
aWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1P
RElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5oIgorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVk
ZSAiRE9NSXNvU3Vic3BhY2VzLmgiCisjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMu
aCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZS5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydEludGVyZmFjZS5oIgor
I2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKKyNpbmNsdWRlICJKU0RPTUV4Y2VwdGlv
bkhhbmRsaW5nLmgiCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJK
U0RPTU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVk
ZSAiSlNOb2RlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCisv
LyBGdW5jdGlvbnMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbShKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKKworLy8gQXR0cmlidXRlcworCitKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OworYm9vbCBzZXRKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworCitjbGFzcyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlIGZpbmFsIDog
cHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9
IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdEluc1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAg
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBl
Pih2bS5oZWFwKSkgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc1Byb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDog
SlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUsIEpT
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU6OkJhc2UpOworCit1c2luZyBKU1Rl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZTxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjsKKwordGVtcGxhdGU8
PiBKU1ZhbHVlIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9i
amVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+IGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwor
CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
c1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJuYW1lZEl0ZW0iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbSksIChpbnRw
dHJfdCkgKDEpIH0gfSwKK307CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSkgfTsKKwordm9pZCBKU1Rlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7
CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGll
cyh2bSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6aW5mbygpLCBKU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKKyAgICBKU0NfVE9f
U1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnNfaW5mbyA9IHsgIlRlc3RMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKSB9OworCitKU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zOjpKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnM+JiYgaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcjxUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdElucz4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkp
Cit7Cit9CisKK3ZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQo
aW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNl
X29mPEFjdGl2ZURPTU9iamVjdCwgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+Ojp2YWx1ZSwg
IkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3RdIGV2ZW4gdGhvdWdo
IGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIpOworCit9
CisKK0pTT2JqZWN0KiBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpjcmVhdGVQcm90b3R5
cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVy
biBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9i
YWxPYmplY3QsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgp
KSk7Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpwcm90b3R5
cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVy
biBnZXRET01Qcm90b3R5cGU8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4odm0sIGdsb2Jh
bE9iamVjdCk7Cit9CisKK0pTVmFsdWUgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0
Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KSk7Cit9CisKK3ZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6ZGVz
dHJveShKU0M6OkpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6
On5KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKCk7Cit9CisKK2Jvb2wgSlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4ob2JqZWN0KTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgdXNpbmcgR2V0dGVySURM
VHlwZSA9IElETEludGVyZmFjZTxOb2RlPjsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAo
YXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1l
IEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4geworICAgICAgICBhdXRvIHJlc3Vs
dCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJp
bmcocHJvcGVydHlOYW1lKSk7CisgICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFs
dWUocmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJ
bXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFi
bGUocmVzdWx0KSB9OworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH07CisgICAg
aWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnM6Olllcz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0
LT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAg
ICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChvYmplY3Qs
IGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09i
amVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWdu
ZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOworICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJ
RExJbnRlcmZhY2U8Tm9kZT47CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRo
aXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOworICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3Vs
dCkpCisgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50
YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3Vs
dCkgfTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9OworICAgIGlmIChhdXRv
IG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjpZZXM+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVy
dHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExJ
bnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC0+Z2xvYmFs
T2JqZWN0KCksIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIHNsb3Qu
c2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHNsb3QpOworfQorCit2b2lkIEpTVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBw
cm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhvYmplY3QsIGluZm8oKSk7CisgICAgZm9yIChhdXRvJiBwcm9wZXJ0
eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpKQor
ICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBwcm9w
ZXJ0eU5hbWUpKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworfQorCit0ZW1wbGF0ZTw+
IGlubGluZSBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBJRExPcGVyYXRpb248SlNUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdElucz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQoreworICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUg
anNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHBy
b3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3Rv
dHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZ
KCFwcm90b3R5cGUpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVz
dExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKK30KKworYm9vbCBz
ZXRKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
KyAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIHJl
dHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKK30KKworc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVG
dW5jdGlvbk5hbWVkSXRlbUJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQor
eworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgYXV0byBuYW1lID0g
Y29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFs
dWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLm5hbWVkSXRlbShXVEZNb3ZlKG5hbWUpKSkpKTsKK30K
KworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0ZW0oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz46OmNhbGw8anNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtQm9keT4oKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICJuYW1lZEl0ZW0iKTsKK30KKworSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNl
cygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHx8ICFKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zOjpuZWVkc0Rlc3RydWN0aW9uKTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjp2aXNp
dE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50
cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNw
YWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1
cm4gc3BhY2U7Cit9CisKK3ZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6YW5hbHl6
ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQoreworICAgIGF1dG8q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KGNlbGwp
OworICAgIGFuYWx5emVyLnNldFdyYXBwZWRPYmplY3RGb3JDZWxsKGNlbGwsICZ0aGlzT2JqZWN0
LT53cmFwcGVkKCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpCisgICAgICAgIGFuYWx5emVyLnNldExhYmVsRm9yQ2VsbChjZWxsLCAidXJsICIgKyB0aGlz
T2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVybCgpLnN0cmluZygpKTsKKyAgICBC
YXNlOjphbmFseXplSGVhcChjZWxsLCBhbmFseXplcik7Cit9CisKK2Jvb2wgSlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdEluc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6Okhh
bmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBj
b25zdCBjaGFyKiogcmVhc29uKQoreworICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOworICAgIFVO
VVNFRF9QQVJBTSh2aXNpdG9yKTsKKyAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc093bmVyOjpm
aW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkK
K3sKKyAgICBhdXRvKiBqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gc3RhdGljX2Nhc3Q8
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsK
KyAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0
KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMtPndyYXBwZWQoKSwganNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7Cit9CisKKyNpZiBF
TkFCTEUoQklORElOR19JTlRFR1JJVFkpCisjaWYgUExBVEZPUk0oV0lOKQorI3ByYWdtYSB3YXJu
aW5nKGRpc2FibGU6IDQ0ODMpCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lk
ZW50aWZpZXIoIj8/XzdUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0BXZWJDb3JlQEA2QkAiKVtd
KSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMjZU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0VbXTsgfQorI2VuZGlmCisjZW5kaWYKKworSlNDOjpK
U1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4mJiBp
bXBsKQoreworCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorICAgIGNvbnN0IHZvaWQq
IGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkpOworI2lm
IFBMQVRGT1JNKFdJTikKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50
aWZpZXIoIj8/XzdUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0BXZWJDb3JlQEA2QkAiKTsKKyNl
bHNlCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUyNlRl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRVsyXTsKKyNlbmRpZgorCisgICAgLy8gSWYgdGhpcyBm
YWlscyBUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBz
byB5b3UgbmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBh
dHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3BvbHltb3JwaGljPFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6dmFsdWUsICJU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyBpcyBub3QgcG9seW1vcnBoaWMiKTsKKworICAgIC8v
IElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZy
ZWUgYnVnLCBvcgorICAgIC8vIFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIGhhcyBzdWJjbGFz
c2VzLiBJZiBUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyBoYXMgc3ViY2xhc3NlcyB0aGF0IGdl
dCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMgeW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKKyAg
ICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUg
aW50ZXJmYWNlIElETCBkZWZpbml0aW9uCisgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxl
UG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOworI2VuZGlmCisgICAgcmV0dXJuIGNy
ZWF0ZVdyYXBwZXI8VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KGdsb2JhbE9iamVjdCwgV1RG
TW92ZShpbXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKGxleGlj
YWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK1Rlc3RMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zKiBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjp0b1dyYXBwZWQoSlND
OjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoYXV0byogd3JhcHBlciA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KHZtLCB2YWx1ZSkp
CisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOworICAgIHJldHVybiBudWxscHRy
OworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDk4IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBz
b3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiSlNET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIDogcHVibGljIEpTRE9N
V3JhcHBlcjxUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4geworcHVibGljOgorICAgIHVzaW5n
IEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OworICAgIHN0
YXRpYyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpCisgICAgeworICAgICAgICBKU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1v
dmUoaW1wbCkpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0o
KSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNPYmpl
Y3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBz
dGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVj
dCYpOworICAgIHN0YXRpYyBUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyogdG9XcmFwcGVkKEpT
Qzo6Vk0mLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1l
LCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIHZvaWQgZ2V0T3du
UHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRp
b25Nb2RlKCkpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKKworICAg
IERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFj
Y2Vzc29ycyk7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3Rv
cihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAo
bW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAg
fQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pOworICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5
emVyJik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0lt
cHVyZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxl
bmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcyB8
IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworcHJvdGVjdGVkOgorICAgIEpTVGVz
dExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVj
dCYsIFJlZjxUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4mJik7CisKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CisKK2NsYXNzIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAg
dmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImLCBjb25zdCBjaGFyKiop
OworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2
b2lkKiBjb250ZXh0KTsKK307CisKK2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBl
ck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKikKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc093
bmVyPiBvd25lcjsKKyAgICByZXR1cm4gJm93bmVyLmdldCgpOworfQorCitpbmxpbmUgdm9pZCog
d3JhcHBlcktleShUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyogd3JhcHBhYmxlT2JqZWN0KQor
eworICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKGxl
eGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsg
fQorSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmKTsKK2lu
bGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQ
dHI8VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRv
SlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJl
bGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBK
U0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHsK
KyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOwor
ICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyo7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2
aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MSw3ICsxNzEsNyBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5v
SWRlbnRpCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJl
c3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChh
dXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1
aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDAsNyArMjAwLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRl
cklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1
ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAg
ICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJv
cGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVk
UHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7
CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNyArMTcxLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRl
cklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1
ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAg
ICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJv
cGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVk
UHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7
CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjAwLDcgKzIwMCw3IEBAIGJv
b2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmcKICAgICAgICAgICAgIHJldHVy
biB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExU
eXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAg
ICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVn
YWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0g
dG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJv
cGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDcgKzE4MCw3IEBAIGJvb2wgSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW4KICAgICAgICAgICAgIHJldHVybiB0eXBlbmFt
ZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRy
YWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVO
YW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0
byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVy
dHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFs
dWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIwOSw3ICsyMDks
NyBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVuCiAgICAgICAgICAg
ICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0
dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkg
PSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3Ip
KSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2
YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShu
YW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNw
cAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2Miw3ICsxNjIsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6
Z2V0CiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50
YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3Vs
dCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRv
IG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0
aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zp
c2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsK
ICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRW
YWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTgzLDcg
KzE4Myw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpnZXQKICAgICAg
ICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUg
eyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9w
ZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVu
Y3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVk
UHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBh
dXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNP
YmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDUsNyArMjA1LDcgQEAg
Ym9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmRlbAogewogICAgIGF1dG8mIHRo
aXNPYmplY3QgPSAqanNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcio+KGNlbGwp
OwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBpZiAoaXNWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoaXNWaXNpYmxlTmFtZWRQ
cm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgcmV0dXJuIGltcGwuZGVsZXRl
TmFtZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICB9
CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIGJvb2wgSlNU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpkZWwKICAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4
KTsKLSAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKKyAgICBp
ZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAg
cmV0dXJuIGltcGwuZGVsZXRlTmFtZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKICAgICB9CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZp
c2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjIsNyArMTYyLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
bgogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQp
IH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBu
YW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGlu
czo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBn
ZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9i
YWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAg
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4Myw3ICsx
ODMsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uCiAgICAgICAg
ICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsg
R2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0
b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0
byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92
ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjA1LDcgKzIwNSw3IEBAIGJv
b2wgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24KIHsKICAgICBhdXRvJiB0aGlz
T2JqZWN0ID0gKmpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbio+KGNl
bGwpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBpZiAoaXNW
aXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoaXNWaXNpYmxlTmFt
ZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBp
bXBsLmRlbGV0ZU5hbWVkUHJvcGVydHkocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1l
KSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KSk7CkBAIC0yMjQsNyArMjI0LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbgogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIGlmIChpc1Zp
c2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkgeworICAgIGlmIChpc1Zpc2libGVOYW1l
ZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICBhdXRvIHJlc3VsdCA9IGlt
cGwuZGVsZXRlTmFtZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUp
KTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXI6OmcKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVG
cm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFBy
b3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdElu
czo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBn
ZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwog
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC0xODksNyArMTg5LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllcjo6ZwogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6Oklt
cGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJs
ZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBp
ZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJp
ZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVy
dHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBh
Y2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0
b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNs
b3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTIxMSw3ICsyMTEsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpk
CiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXIqPihjZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7Ci0gICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CisgICAg
aWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAg
IGltcGwubmFtZWREZWxldGVyKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yMjQsNyArMjI0LDcgQEAgYm9vbCBKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZAogICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgp
OwotICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkgeworICAgIGlm
IChpc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICBp
bXBsLm5hbWVkRGVsZXRlcihwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyNjY2MzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNyArMTcxLDcg
QEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcgogICAgICAgICAgICAg
cmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRl
cklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0g
YWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkg
eworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0
eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFs
dWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFt
ZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwg
dmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIwMCw3ICsyMDAsNyBAQCBib29sIEpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyCiAgICAgICAgICAgICByZXR1cm4gdHlw
ZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6
ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYg
KGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5
LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjI2LDcgKzIyNiw3IEBAIGJvb2wgSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAg
ICAgICAgIHJldHVybiAhaW1wbC5pc1N1cHBvcnRlZFByb3BlcnR5SW5kZXgoaW5kZXgudmFsdWUo
KSk7Ci0gICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CisgICAg
aWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAg
IHJldHVybiBpbXBsLmRlbGV0ZU5hbWVkUHJvcGVydHkocHJvcGVydHlOYW1lVG9TdHJpbmcocHJv
cGVydHlOYW1lKSk7CiAgICAgfQogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
Y2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNh
bGxXaXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHJldmlzaW9uIDI2NjYzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdl
dHRlckNhbGxXaXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIGJvb2wg
SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6Z2V0T3duUHIKICAgICAgICAgICAgIHJldHVybiB0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBl
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zp
c2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBp
ZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVy
dHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBKU1Rlc3ROYW1l
ZEdldHRlckNhbGxXaXRoOjpnZXRPd25QcgogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdl
dHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RW
YWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVk
UHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhp
c09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5h
bWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgp
KSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVu
dGlmaWVyLmNwcAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50
aWZpZXI6OmdldE8KICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJ
bXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFi
bGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAg
aWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJy
aWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3Bl
cnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0g
YWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5j
dG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBz
bG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0xODMsNyArMTgzLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcjo6Z2V0
TwogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQp
IH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBu
YW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGlu
czo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBn
ZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9i
YWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAg
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9u
IDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDcg
KzE2OCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2UKICAgICAg
ICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUg
eyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9w
ZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVu
Y3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVk
UHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBh
dXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNP
YmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODksNyArMTg5LDcgQEAg
Ym9vbCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjpnZQogICAgICAgICAgICAgcmV0
dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklE
TFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNj
ZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewor
ICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUg
PSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQ
cm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFs
dWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlm
aWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIGJvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmdldE8KICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBH
ZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0
VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1l
ZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBu
YW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUo
KSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4Myw3ICsxODMsNyBA
QCBib29sIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZXRPCiAgICAgICAgICAgICBy
ZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVy
SURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBh
Y2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxH
bG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7
CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5
PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1
ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1l
ZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb246CiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6
SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxh
YmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAg
IGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVy
cmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9
IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVu
Y3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAg
c2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVl
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBKU1Rlc3RO
YW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1l
IEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJh
Y3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5h
bWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
dGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRv
IG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERP
TVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1
ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50
aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY2
NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4
LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpnZQogICAgICAgICAg
ICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdl
dHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5
ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9y
KSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9w
ZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0
aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8g
dmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUo
bmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVj
dCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMTg5LDcgKzE4OSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cjo6Z2UKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1l
bnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVz
dWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1
dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVp
bHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFt
ZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNz
VmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkg
ewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNl
dFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDcgKzE4MCw3IEBAIGJvb2wgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjoKICAgICAgICAgICAgIHJldHVybiB0eXBl
bmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpl
eHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2li
bGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAo
YXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3Zl
cnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJv
cGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHku
dmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIwOSw3ICsy
MDksNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAgICAgICAg
ICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsg
R2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0
b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0
byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92
ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw3ICsxODAs
NyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBCiAgICAgICAgICAg
ICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0
dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkg
PSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3Ip
KSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2
YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShu
YW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0yMDksNyArMjA5LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVu
dGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1
bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0
byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWls
dGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
LCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NW
aXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxH
bG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7
CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0
VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0NTcgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcy5oIgorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisj
aW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCisjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJh
dGlvbnMuaCIKKyNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCisj
aW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9u
SGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9G
dW5jdGlvblByb3RvdHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXpl
ci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CisvLyBGdW5jdGlvbnMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0luc3RhbmNlRnVuY3Rp
b25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKKworLy8gQXR0cmlidXRlcworCitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citi
b29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Nv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVW5mb3JnZWFibGVBdHRyaWJ1dGUoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
KworY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6
CisgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlKiBj
cmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4g
cHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgfQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRl
OgorICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1By
b3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1
cmUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwor
fTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlOjpCYXNlKTsKKwordXNp
bmcgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3Ry
dWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+OworCisvKiBIYXNoIHRhYmxlICovCisK
K3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNUYWJsZUluZGV4WzRdID0geworICAgIHsgLTEs
IC0xIH0sCisgICAgeyAxLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAtMSB9LAor
fTsKKworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAidW5m
b3JnZWFibGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc1VuZm9yZ2VhYmxlQXR0cmlidXRlKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsg
InVuZm9yZ2VhYmxlT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVP
cGVyYXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCit9OworCitzdGF0aWMgY29uc3QgSGFzaFRh
YmxlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1RhYmxl
ID0geyAyLCAzLCB0cnVlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXM6OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzVGFibGVWYWx1ZXMsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc1RhYmxlSW5kZXggfTsKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9i
amVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3I6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
K3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpwcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlw
ZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Cit7Cisg
ICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IpIH0gfSwKK307CisKK2NvbnN0IENs
YXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c1Byb3RvdHlwZSkgfTsKKwordm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmluZm8oKSwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBl
VGFibGVWYWx1ZXMsICp0aGlzKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5T
SVRJT04oKTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllczo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNUYWJsZSwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMpIH07CisKK0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllczo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4mJiBpbXBsKQor
ICAgIDogSlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXM+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQoreworfQor
Cit2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAgc3RhdGljX2Fzc2VydCgh
c3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcz46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQg
YXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3Vi
Y2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7CisKK30KKworSlNPYmplY3QqIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6Y3JlYXRlUHJvdG90eXBlKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlOjpj
cmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpKTsKK30KKworSlNPYmplY3QqIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6cHJvdG90eXBl
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4g
Z2V0RE9NUHJvdG90eXBlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcz4odm0sIGdsb2JhbE9iamVjdCk7Cit9CisKK0pTVmFsdWUgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0s
IGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERP
TUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOworfQorCit2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllczo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqIHRoaXNPYmplY3Qg
PSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6On5KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXMoKTsKK30KKworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2Jq
ZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
Kj4ob2JqZWN0KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7CisgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKKyAgICBhdXRv
IGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUp
IC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4g
eworICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShw
cm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgICAgIGlmICghR2V0
dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiB0eXBl
bmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpl
eHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OworICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIH07CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2li
bGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAg
ICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30K
KworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6
OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbSh2bSwgaW5kZXgpOworICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01T
dHJpbmc7CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1
dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBs
ZW1lbnRhdGlvblR5cGU+IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwor
ICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCisgICAgICAg
ICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsg
R2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9OworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpO
bz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRl
ckZ1bmN0b3IpKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2
YWx1ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gSlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBp
bmRleCwgc2xvdCk7Cit9CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit7CisgICAgVk0mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+KG9iamVj
dCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhvYmplY3QsIGluZm8oKSk7CisgICAg
Zm9yIChhdXRvJiBwcm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVk
UHJvcGVydHlOYW1lcygpKQorICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUp
OworfQorCitib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllczo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYgcHV0UHJvcGVydHlTbG90KQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKj4oY2VsbCk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisg
ICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgeworICAgICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpIH07CisgICAgICAgIEpTVmFsdWUgcHJv
dG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCkpOworICAgICAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0
KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5
LnJlc2V0KCk7CisgICAgICAgIGlmICghZm91bmQpIHsKKyAgICAgICAgICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KSk7CisgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHRydWUpOworICAgICAgICAgICAgdGhpc09iamVjdC0+d3JhcHBl
ZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7Cit9CisKK2Jv
b2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpwdXRC
eUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQoreworICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXMqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20o
dm0sIGluZGV4KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSB9OworICAgIEpTVmFsdWUg
cHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKKyAgICBib29s
IGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0
UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICBpZiAoIWZvdW5kKSB7CisgICAg
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKKyAgICAgICAgdGhpc09iamVjdC0+d3Jh
cHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IHJldHVybiBKU09iamVjdDo6cHV0QnlJbmRleChjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBp
bmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKK30KKworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIHByb3BlcnR5RGVzY3Jp
cHRvciwgYm9vbCBzaG91bGRUaHJvdykKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+KG9iamVj
dCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwor
CisgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgeworc3RhdGljIGJvb2wgaXNMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnR5TmFtZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorewor
ICAgIHJldHVybiBwcm9wZXJ0eU5hbWUgPT0gInVuZm9yZ2VhYmxlQXR0cmlidXRlIiB8fCBwcm9w
ZXJ0eU5hbWUgPT0gInVuZm9yZ2VhYmxlT3BlcmF0aW9uIjsKK30KKworICAgICAgICBpZiAoIWlz
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkgeworICAgICAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9OworICAg
ICAgICAgICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09i
amVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAg
ICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgICAgICAgICBpZiAoIWZvdW5k
KSB7CisgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVzY3Jp
cHRvcigpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eURlc2NyaXB0
b3IudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc2V0TmFt
ZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKworICAgIFByb3BlcnR5RGVzY3JpcHRvciBuZXdQcm9wZXJ0eURlc2Ny
aXB0b3IgPSBwcm9wZXJ0eURlc2NyaXB0b3I7CisgICAgbmV3UHJvcGVydHlEZXNjcmlwdG9yLnNl
dENvbmZpZ3VyYWJsZSh0cnVlKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlZmluZU93blByb3Bl
cnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBuZXdQcm9wZXJ0
eURlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKiBJRExBdHRyaWJ1dGU8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPjo6Y2FzdChK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlKQoreworICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cit9CisKK3RlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyogSURMT3Bl
cmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz46
OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2Fs
bEZyYW1lKQoreworICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcihK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQorICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOworfQorCitib29sIHNl
dEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVj
dG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90
eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFko
IXByb3RvdHlwZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBT
aGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIHJldHVybiBwcm90b3R5cGUtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1VuZm9yZ2VhYmxlQXR0cmlidXRl
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMmIHRoaXNPYmplY3QpCit7CisgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC51
bmZvcmdlYWJsZUF0dHJpYnV0ZSgpKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNVbmZvcmdlYWJsZUF0dHJpYnV0
ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+OjpnZXQ8anNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVW5mb3JnZWFibGVBdHRyaWJ1
dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJ1bmZvcmdlYWJsZUF0dHJpYnV0ZSIpOworfQorCitzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uQm9k
eShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFt
ZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykK
K3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7
CisgICAgaW1wbC51bmZvcmdlYWJsZU9wZXJhdGlvbigpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzSW5zdGFuY2VG
dW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz46OmNhbGw8
anNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzSW5zdGFuY2VG
dW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YWxsRnJhbWUsICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiIpOworfQorCitKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OnN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2Vz
ID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXMuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6bmVlZHNEZXN0cnVjdGlvbik7CisgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+KQorICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyk7CisgICAgZWxzZQorICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjp2aXNpdE91dHB1
dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAg
ICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsK
K0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3Bh
Y2U7Cit9CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIp
Cit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqPihjZWxsKTsKKyAgICBhbmFseXplci5zZXRXcmFw
cGVkT2JqZWN0Rm9yQ2VsbChjZWxsLCAmdGhpc09iamVjdC0+d3JhcHBlZCgpKTsKKyAgICBpZiAo
dGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICBhbmFseXplci5z
ZXRMYWJlbEZvckNlbGwoY2VsbCwgInVybCAiICsgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT51cmwoKS5zdHJpbmcoKSk7CisgICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwg
YW5hbHl6ZXIpOworfQorCitib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25z
dCBjaGFyKiogcmVhc29uKQoreworICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOworICAgIFVOVVNF
RF9QQVJBTSh2aXNpdG9yKTsKKyAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxl
LCB2b2lkKiBjb250ZXh0KQoreworICAgIGF1dG8qIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcyA9IHN0YXRpY19jYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsK
KyAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0
KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcy0+d3JhcHBlZCgpLCBqc1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5U
RUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgz
KQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0BXZWJDb3JlQEA2QkAi
KVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3Jl
NDZUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzRVtdOyB9Cisj
ZW5kaWYKKyNlbmRpZgorCitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+JiYgaW1wbCkKK3sKKworI2lm
IEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICBjb25zdCB2b2lkKiBhY3R1YWxWVGFibGVQ
b2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKKyNpZiBQTEFURk9STShXSU4p
CisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/P183VGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0BXZWJDb3JlQEA2QkAi
KTsKKyNlbHNlCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNv
cmU0NlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNFWzJdOwor
I2VuZGlmCisKKyAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXMgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQg
dG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRv
IHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5
bW9ycGhpYzxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPjo6
dmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzIGlz
IG5vdCBwb2x5bW9ycGhpYyIpOworCisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5
b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8gVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyBoYXMgc3ViY2xhc3Nlcy4gSWYg
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyBoYXMgc3ViY2xh
c3NlcyB0aGF0IGdldCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVp
cmUgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyB5b3UgdG8g
b3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZworICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZU
YWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24K
KyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxl
UG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPihnbG9iYWxPYmplY3QsIFdURk1vdmUo
aW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzJiBpbXBsKQoreworICAgIHJl
dHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisK
K1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6dG9XcmFwcGVkKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllcyo+KHZtLCB2YWx1ZSkpCisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwor
ICAgIHJldHVybiBudWxscHRyOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
cy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBi
ZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlRl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaCIKKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgOiBwdWJsaWMg
SlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXM+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+OworICAgIHN0YXRpYyBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqIGNyZWF0ZShKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4mJiBpbXBsKQor
ICAgIHsKKyAgICAgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4oZ2xvYmFsT2JqZWN0LT52bSgp
LmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMo
c3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5m
aW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICByZXR1cm4gcHRyOwor
ICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpW
TSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3Rv
dHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyogdG9XcmFwcGVkKEpTQzo6Vk0m
LCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6
OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVy
dHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVy
dHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2Rl
KCkpOworICAgIHN0YXRpYyBib29sIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xv
dCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpOworICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIGNvbnN0IEpTQzo6
UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3Mg
bW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQor
ICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6
OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1
cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CisgICAgc3RhdGljIHZvaWQgYW5hbHl6
ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlND
OjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlT
bG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNBbnlGb3Jt
T2ZHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBK
U0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKK3Byb3RlY3RlZDoKKyAgICBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMoSlNDOjpTdHJ1Y3R1cmUqLCBK
U0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzPiYmKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwor
fTsKKworY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIHZp
cnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJiwgY29uc3QgY2hhcioqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9p
ZCogY29udGV4dCk7Cit9OworCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJP
d25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzKikKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzT3duZXI+IG93bmVyOworICAgIHJl
dHVybiAmb3duZXIuZ2V0KCk7Cit9CisKK2lubGluZSB2b2lkKiB3cmFwcGVyS2V5KFRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqIHdyYXBwYWJsZU9iamVjdCkK
K3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllcyogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4aWNhbEdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9CitKU0M6OkpTVmFsdWUg
dG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3Qq
LCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4mJik7
CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmUHRyPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+JiYg
aW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsg
fQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4geworICAgIHVzaW5nIFdy
YXBwZXJDbGFzcyA9IEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllczsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzOCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBi
ZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oIgorCisj
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgi
CisjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0RPTUF0
dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5n
cy5oIgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RP
TU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2Vi
Q29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCisvLyBGdW5jdGlvbnMKKworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNJbnN0YW5jZUZ1bmN0aW9u
VW5mb3JnZWFibGVPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CisKKy8vIEF0dHJpYnV0ZXMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9y
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1VuZm9yZ2VhYmxl
QXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CisKK2NsYXNzIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUgZmluYWwg
OiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNl
ID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJv
dG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5G
TzsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4K
KyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisg
ICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU0M6OkpTTm9uRmlu
YWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihKU0M6OlZNJik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6
QmFzZSk7CisKK3VzaW5nIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OworCisvKiBIYXNoIHRhYmxl
ICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zVGFibGVJbmRleFs0XSA9IHsKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMSwgLTEgfSwKKyAg
ICB7IC0xLCAtMSB9LAorICAgIHsgMCwgLTEgfSwKK307CisKKworc3RhdGljIGNvbnN0IEhhc2hU
YWJsZVZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJ1bmZv
cmdlYWJsZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1VuZm9yZ2VhYmxl
QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oMCkgfSB9LAorICAgIHsgInVuZm9yZ2VhYmxlT3BlcmF0aW9uIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9u
KSwgKGludHB0cl90KSAoMCkgfSB9LAorfTsKKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zVGFibGUgPSB7IDIsIDMsIHRydWUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmluZm8o
KSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc1RhYmxlVmFsdWVzLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zVGFibGVJbmRl
eCB9OwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rvcjo6cHJv
dG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGdsb2Jh
bE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2
aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOworfQorCit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3Ry
dWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZVRhYmxlVmFsdWVzW10g
PQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH0gfSwKK307CisKK2NvbnN0IENs
YXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dElucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSkgfTsKKwordm9pZCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
czo6aW5mbygpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsK
KyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwg
JkJhc2U6OnNfaW5mbywgJkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKSB9OworCitKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+JiYgaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBl
cjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdElucz4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkp
Cit7Cit9CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQor
eworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0s
IGluZm8oKSkpOworCisgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURP
TU9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+Ojp2YWx1ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2Vk
IGFzIFtBY3RpdmVET01PYmplY3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1
YmNsYXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIpOworCit9CisKK0pTT2JqZWN0KiBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQoreworICAgIHJldHVybiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpjcmVhdGUo
dm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7
Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Qcm90b3R5
cGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucz4odm0sIGdsb2JhbE9iamVjdCk7Cit9CisKK0pTVmFsdWUgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdEluczo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6ZGVzdHJveShK
U0M6OkpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiB0aGlzT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnM6On5KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKCk7Cit9CisKK2Jvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zKj4ob2JqZWN0KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CisgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsK
KyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9w
ZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZT4geworICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgICAg
IGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKKyAgICAgICAgICAgIHJl
dHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJ
RExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OworICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIH07CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFj
Y2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Olllcz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0
b3IpKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIHNs
b3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOworICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExE
T01TdHJpbmc7CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3Qs
IGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJ
bXBsZW1lbnRhdGlvblR5cGU+IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkp
OworICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCisgICAg
ICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBl
IHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9OworICAgIGlmIChhdXRvIG5hbWVkUHJv
cGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
OjpZZXM+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBn
ZXR0ZXJGdW5jdG9yKSkgeworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwor
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigw
KSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIEpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgaW5kZXgsIHNsb3QpOworfQorCit2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwor
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhvYmplY3QsIGluZm8oKSk7CisgICAgZm9y
IChhdXRvJiBwcm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVkUHJv
cGVydHlOYW1lcygpKQorICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwor
fQorCitib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFByb3BlcnR5U2xvdCkKK3sKKyAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihjZWxsKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBpZiAoIXBy
b3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CisgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0
cnVlKTsKKyAgICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0
eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNP
YmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3Bl
cnR5U2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6cHV0QnlJbmRleChKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRl
eCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdElucyo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2
bSwgaW5kZXgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CisgICAgdGhpc09iamVjdC0+d3Jh
cHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluczo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNv
bnN0IFByb3BlcnR5RGVzY3JpcHRvciYgcHJvcGVydHlEZXNjcmlwdG9yLCBib29sIHNob3VsZFRo
cm93KQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+
KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpOworCisgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgeworc3RhdGljIGJvb2wg
aXNMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnR5TmFtZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQoreworICAgIHJldHVybiBwcm9wZXJ0eU5hbWUgPT0gInVuZm9yZ2VhYmxlQXR0cmlidXRlIiB8
fCBwcm9wZXJ0eU5hbWUgPT0gInVuZm9yZ2VhYmxlT3BlcmF0aW9uIjsKK30KKworICAgICAgICBp
ZiAoIWlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkgeworICAg
ICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Cisg
ICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eURlc2NyaXB0b3IudmFsdWUoKSk7CisgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOworICAgICAgICAgICAgdGhp
c09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9w
ZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFByb3BlcnR5RGVzY3JpcHRvciBuZXdQcm9wZXJ0
eURlc2NyaXB0b3IgPSBwcm9wZXJ0eURlc2NyaXB0b3I7CisgICAgbmV3UHJvcGVydHlEZXNjcmlw
dG9yLnNldENvbmZpZ3VyYWJsZSh0cnVlKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBuZXdQ
cm9wZXJ0eURlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdElucyogSURMQXR0cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OjpjYXN0KEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUpCit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIElETE9wZXJhdGlvbjxK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdElucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJh
bWUudGhpc1ZhbHVlKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOworfQorCitib29s
IHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBh
dXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUq
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghcHJv
dG90eXBlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIC8vIFNoYWRv
d2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSkpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
c1VuZm9yZ2VhYmxlQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zJiB0aGlzT2JqZWN0KQoreworICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExET01T
dHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudW5mb3JnZWFibGVB
dHRyaWJ1dGUoKSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1VuZm9y
Z2VhYmxlQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OjpnZXQ8anNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1VuZm9yZ2VhYmxl
QXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidW5mb3JnZWFibGVBdHRyaWJ1dGUiKTsKK30KKwor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNJbnN0YW5j
ZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykK
K3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7
CisgICAgaW1wbC51bmZvcmdlYWJsZU9wZXJhdGlvbigpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdEluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7
CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6Y2FsbDxqc1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uQm9keT4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiIpOworfQor
CitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpzdWJzcGFjZUZvckltcGwoSlND
OjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xp
ZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEu
c3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucz4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOworICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucz4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5nZXQoKTsKK0lHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnZp
c2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFp
bnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQo
c3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJl
dHVybiBzcGFjZTsKK30KKwordm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjphbmFseXplSGVhcChKU0Nl
bGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCit7CisgICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4oY2VsbCk7CisgICAgYW5hbHl6ZXIuc2V0V3Jh
cHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQoKSk7CisgICAgaWYg
KHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgYW5hbHl6ZXIu
c2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGws
IGFuYWx5emVyKTsKK30KKworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zT3duZXI6OmlzUmVhY2hhYmxl
RnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFzb24pCit7CisgICAgVU5VU0VE
X1BBUkFNKGhhbmRsZSk7CisgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOworICAgIFVOVVNFRF9Q
QVJBTShyZWFzb24pOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiBjb250ZXh0KQoreworICAgIGF1dG8qIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBzdGF0aWNfY2FzdDxK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOworICAgIGF1dG8mIHdv
cmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOworICAgIHVuY2Fj
aGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy0+d3JhcHBlZCgpLCBqc1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zKTsKK30KKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyNpZiBQTEFURk9S
TShXSU4pCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKK2V4dGVybiAiQyIgeyBleHRl
cm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQFdlYkNvcmVA
QDZCQCIpW10pKCk7IH0KKyNlbHNlCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dl
YkNvcmU3MVRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zRVtdOyB9CisjZW5kaWYKKyNlbmRpZgorCitKU0M6OkpTVmFs
dWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpCit7CisKKyNpZiBF
TkFCTEUoQklORElOR19JTlRFR1JJVFkpCisgICAgY29uc3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9p
bnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7CisjaWYgUExBVEZPUk0oV0lOKQor
ICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRpZmllcigiPz9fN1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zQFdlYkNvcmVAQDZCQCIpOworI2Vsc2UKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJs
ZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTcxVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNFWzJdOworI2VuZGlmCisK
KyAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIGRvZXMgbm90IGhhdmUgYSB2dGFi
bGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKKyAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRh
YmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KKyAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+Ojp2YWx1ZSwgIlRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zIGlzIG5vdCBwb2x5bW9ycGhpYyIpOworCisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFz
c2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8g
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIGhhcyBzdWJj
bGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAorICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVx
dWlyZSBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucyB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZwor
ICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRo
ZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFi
bGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1cm4g
Y3JlYXRlV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwp
KTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMmIGltcGwpCit7CisgICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LCBpbXBsKTsKK30KKworVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnRv
V3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmIChhdXRv
KiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4odm0sIHZhbHVlKSkK
KyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJl
ZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIDogcHVibGljIEpTRE9NV3Jh
cHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucz4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdy
YXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnM+OworICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBjcmVh
dGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpCisgICAgeworICAgICAgICBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyhzdHJ1
Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBwdHItPmZpbmlz
aENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAg
fQorCisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwg
SlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBl
KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9
IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOworICAgIHN0YXRpYyBib29sIHB1dChKU0M6OkpTQ2Vs
bCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVl
LCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlND
OjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIGNvbnN0IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJv
dyk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVDTEFS
RV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3Jz
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6
Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUs
IEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09
IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7Cisg
ICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlIHwg
SlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNBbnlG
b3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKK3Byb3RlY3RlZDoKKyAgICBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM+JiYpOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9Owor
CitjbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3du
ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNp
dG9yJiwgY29uc3QgY2hhcioqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Cit9OworCitpbmxpbmUgSlNDOjpXZWFr
SGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyopCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNPd25lcj4g
b3duZXI7CisgICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30KKworaW5saW5lIHZvaWQqIHdyYXBw
ZXJLZXkoVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMqIHdyYXBwYWJsZU9iamVjdCkKK3sKKyAgICByZXR1cm4gd3Jh
cHBhYmxlT2JqZWN0OworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyYpOworaW5saW5lIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBpbXBsKSB7IHJldHVy
biBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6
IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4mJik7
CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmUHRyPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlD
cmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9u
TnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KKwordGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFw
cGVyQ29udmVydGVyVHJhaXRzPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiB7CisgICAgdXNpbmcgV3JhcHBlckNs
YXNzID0gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluczsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0g
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMqOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
LmNwcAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3BwCShub25l
eGlzdGVudCkKQEAgLTEsMzY3ICswLDAgQEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnMuaCIKLQotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkRP
TUlzb1N1YnNwYWNlcy5oIgotI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiCi0j
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGUuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCi0jaW5jbHVk
ZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgotI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkNv
cmVKU0NsaWVudERhdGEuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci11c2luZyBuYW1lc3BhY2UgSlNDOwotCi0vLyBBdHRyaWJ1
dGVzCi0KLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVC
dWlsdGluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92
ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Ci0KLWNsYXNzIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05v
bkZpbmFsT2JqZWN0IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFs
T2JqZWN0OwotICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBKU1Rlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnNQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7Ci0gICAgICAgIHB0ci0+
ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQotICAgIERF
Q0xBUkVfSU5GTzsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFj
ZUFjY2Vzcz4KLSAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCi0gICAgewotICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwotICAgIH0KLSAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmpl
Y3Qodm0sIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0M6OlZNJik7Ci19OwotU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6QmFzZSk7Ci0KLXVzaW5nIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnM+OwotCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVC
dWlsdGluc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgVU5VU0VEX1BBUkFN
KHZtKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Ci19Ci0K
LXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKLXsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlu
cyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci19Ci0KLXRlbXBsYXRlPD4gY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcikgfTsKLQotLyogSGFzaCB0
YWJsZSBmb3IgcHJvdG90eXBlICovCi0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rl
c3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9
Ci17Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aE92
ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnNDb25zdHJ1Y3RvcikgfSB9LAotfTsKLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zUHJvdG90eXBlKSB9OwotCi12b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJy
aWRlQnVpbHRpbnNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjppbmZvKCksIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAg
IEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwotfQotCi1jb25zdCBDbGFz
c0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6c19pbmZvID0geyAi
VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92
ZXJyaWRlQnVpbHRpbnMpIH07Ci0KLUpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnM6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4mJiBpbXBsKQotICAgIDogSlNET01XcmFwcGVyPFRlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSkKLXsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwotICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0KLSAgICBzdGF0
aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQg
YXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3Vi
Y2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7Ci0KLX0KLQotSlNPYmplY3QqIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVj
dCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBl
KCkpKTsKLX0KLQotSlNPYmplY3QqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnM6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17
Ci0gICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zPih2bSwgZ2xvYmFsT2JqZWN0KTsKLX0KLQotSlNWYWx1ZSBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVj
dG9yPEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKLX0KLQot
dm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpkZXN0cm95KEpTQzo6
SlNDZWxsKiBjZWxsKQotewotICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zKj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+SlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGluczo6fkpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMo
KTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnMqPihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9N
U3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBh
dXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1w
bGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFw
cGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
LSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAg
ICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7
IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3Bl
cnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6WWVzPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVu
Y3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKLSAgICAgICAg
c2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVl
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBz
bG90KQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0g
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7Ci0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
KHZtLCBpbmRleCk7Ci0gICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAg
ICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0
eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9u
VHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVk
SXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlm
ICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVy
biB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExU
eXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Olllcz4oKmxleGljYWxHbG9i
YWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0g
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7Ci0gICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgc2xvdCk7Ci19
Ci0KLXZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZSBtb2RlKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKG9i
amVjdCwgaW5mbygpKTsKLSAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6IHRoaXNPYmplY3Qt
PndyYXBwZWQoKS5zdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkpCi0gICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHByb3BlcnR5TmFtZSkpOwotICAgIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lcywgbW9kZSk7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGluczo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgcHV0UHJvcGVydHlTbG90KQotewotICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyo+KGNlbGwpOwot
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLQotICAg
IGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsK
LSAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHRydWUpOwotICAgICAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc2V0TmFtZWRJdGVt
KHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIEpTT2JqZWN0Ojpw
dXQodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
cHV0UHJvcGVydHlTbG90KTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sKQotewot
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
Kj4oY2VsbCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpOwotCi0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRl
eCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7Ci0gICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKLSAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCku
c2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2Jq
ZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBwcm9wZXJ0eURlc2NyaXB0b3Is
IGJvb2wgc2hvdWxkVGhyb3cpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rl
c3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0KLSAgICBpZiAoIXByb3Bl
cnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlz
RGF0YURlc2NyaXB0b3IoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpKTsKLSAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3Ry
aW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlEZXNjcmlwdG9yLnZhbHVlKCkpOwot
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwotICAgICAgICB0
aGlzT2JqZWN0LT53cmFwcGVkKCkuc2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHBy
b3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgUHJvcGVydHlEZXNjcmlwdG9yIG5ld1Byb3BlcnR5RGVzY3JpcHRvciA9
IHByb3BlcnR5RGVzY3JpcHRvcjsKLSAgICBuZXdQcm9wZXJ0eURlc2NyaXB0b3Iuc2V0Q29uZmln
dXJhYmxlKHRydWUpOwotICAgIHJldHVybiBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkob2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG5ld1Byb3BlcnR5RGVzY3Jp
cHRvciwgc2hvdWxkVGhyb3cpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewot
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBl
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJv
dG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtF
TFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwot
fQotCi1ib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0g
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBl
KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSkpOwotfQotCi1KU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCi17Ci0gICAgYXV0byYg
Y2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEp
OwotICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Ci0gICAgaWYgKGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJp
ZGVCdWlsdGlucy5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aE92
ZXJyaWRlQnVpbHRpbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwotICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMpOwotICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGlucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnMpOwotICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5nZXQoKTsKLUlHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCi1JR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKLSAgICBpZiAoJkpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJy
aWRlQnVpbHRpbnM6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNp
dE91dHB1dENvbnN0cmFpbnRzKQotICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRT
cGFjZXMoKS5hcHBlbmQoc3BhY2UpOwotSUdOT1JFX1dBUk5JTkdTX0VORAotSUdOT1JFX1dBUk5J
TkdTX0VORAotICAgIHJldHVybiBzcGFjZTsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXpl
ciYgYW5hbHl6ZXIpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKj4oY2VsbCk7Ci0gICAgYW5hbHl6ZXIuc2V0V3Jh
cHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQoKSk7Ci0gICAgaWYg
KHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgYW5hbHl6ZXIu
c2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOwotICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGws
IGFuYWx5emVyKTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiBy
ZWFzb24pCi17Ci0gICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZp
c2l0b3IpOwotICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOwotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zT3duZXI6OmZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQotewot
ICAgIGF1dG8qIGpzVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMgPSBzdGF0aWNf
Y2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKj4oaGFuZGxlLnNsb3Qo
KS0+YXNDZWxsKCkpOwotICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJX
b3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0TmFtZWRT
ZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy0+d3JhcHBlZCgpLCBqc1Rlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zKTsKLX0KLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkK
LSNpZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKLWV4dGVy
biAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KLSNlbHNlCi1l
eHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUzNVRlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zRVtdOyB9Ci0jZW5kaWYKLSNlbmRpZgotCi1KU0M6OkpTVmFsdWUg
dG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPiYm
IGltcGwpCi17Ci0KLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0gICAgY29uc3Qgdm9p
ZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7Ci0j
aWYgUExBVEZPUk0oV0lOKQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRl
bnRpZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQFdlYkNvcmVA
QDZCQCIpOwotI2Vsc2UKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43
V2ViQ29yZTM1VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNFWzJdOwotI2VuZGlm
Ci0KLSAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKLSAgICAv
LyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRl
ZmluaXRpb24KLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+Ojp2YWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zIGlzIG5vdCBwb2x5bW9ycGhpYyIpOwotCi0gICAgLy8gSWYgeW91IGhp
dCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9y
Ci0gICAgLy8gVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMgaGFzIHN1YmNsYXNz
ZXMuIElmIFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIGhhcyBzdWJjbGFzc2Vz
IHRoYXQgZ2V0IHBhc3NlZAotICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBU
ZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyB5b3UgdG8gb3B0IG91dCBvZiBiaW5k
aW5nIGhhcmRlbmluZwotICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24g
YXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KLSAgICBSRUxFQVNFX0FT
U0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7Ci0jZW5k
aWYKLSAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVC
dWlsdGlucz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnMmIGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LCBpbXBsKTsKLX0KLQotVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMq
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OnRvV3JhcHBlZChKU0M6OlZN
JiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKj4odm0sIHZh
bHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIG51
bGxwdHI7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJy
aWRlQnVpbHRpbnMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwMSArMCwwIEBACi0vKgotICAgIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgICBU
aGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBO
T1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0g
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSlNET01XcmFwcGVyLmgi
Ci0jaW5jbHVkZSAiVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaCIKLSNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIDogcHVibGljIEpTRE9NV3Jh
cHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4gewotcHVibGljOgotICAg
IHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVp
bHRpbnM+OwotICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPiYmIGlt
cGwpCi0gICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVy
V2l0aE92ZXJyaWRlQnVpbHRpbnM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdU
Rk1vdmUoaW1wbCkpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+
dm0oKSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKLSAg
ICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9i
amVjdCYpOwotICAgIHN0YXRpYyBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyog
dG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwotICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGlj
IHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpT
Qzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0YXRpYyBib29sIHB1dChKU0M6OkpTQ2VsbCos
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBK
U0M6OlB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDOjpK
U0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6
OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyBib29sIGRlZmluZU93blBy
b3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIGNvbnN0IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7
Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwotCi0gICAgREVDTEFSRV9J
TkZPOwotCi0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0m
LCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpT
Qzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQotICAgIHsKLSAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpT
Qzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKLSAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKLSAgICB9Ci0gICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7Ci0gICAg
c3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlIHwgSlND
OjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3Ra
ZXJvIHwgSlNDOjpPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsK
LXByb3RlY3RlZDoKLSAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKEpT
Qzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnM+JiYpOwotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZN
Jik7Ci19OwotCi1jbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zT3du
ZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewotcHVibGljOgotICAgIHZpcnR1YWwg
Ym9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJiwgY29uc3QgY2hhcioqKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29u
dGV4dCk7Ci19OwotCi1pbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihE
T01XcmFwcGVyV29ybGQmLCBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyopCi17
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnNPd25lcj4gb3duZXI7Ci0gICAgcmV0dXJuICZvd25lci5nZXQoKTsKLX0KLQotaW5s
aW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMq
IHdyYXBwYWJsZU9iamVjdCkKLXsKLSAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OwotfQotCi1K
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3Qq
LCBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyYpOwotaW5saW5lIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1
aWx0aW5zKiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KLUpTQzo6SlNWYWx1ZSB0b0pT
TmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJl
ZjxUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4mJik7Ci1pbmxpbmUgSlNDOjpK
U1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPFRlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pT
TmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxl
YXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSlNE
T01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zPiB7Ci0gICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGluczsKLSAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMqOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXMuY3BwCShub25leGlzdGVudCkKQEAgLTEsNDU3ICswLDAgQEAKLS8qCi0g
ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0Lgot
ICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwu
IERPIE5PVCBNT0RJRlkhCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmgiCi0KLSNpbmNsdWRlICJBY3Rp
dmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKLSNpbmNsdWRlICJK
U0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCi0j
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGUuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCi0jaW5jbHVk
ZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgotI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgi
Ci0jaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSGVhcEFuYWx5emVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+Ci0j
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+Ci0jaW5jbHVkZSA8d3RmL1VSTC5oPgotCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5n
IG5hbWVzcGFjZSBKU0M7Ci0KLS8vIEZ1bmN0aW9ucwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0
YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7Ci0KLS8vIEF0dHJpYnV0ZXMKLQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
Ci1ib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3Ry
dWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc1VuZm9yZ2VhYmxlQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci0KLWNsYXNzIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlIGZpbmFsIDog
cHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9
IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAg
ICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJv
dG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNQcm90b3R5cGUodm0sIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAg
ICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgREVDTEFSRV9JTkZPOwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgotICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAgICB7Ci0gICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOwotICAgIH0KLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZv
KEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1Byb3Rv
dHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCi0gICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUp
Ci0gICAgewotICAgIH0KLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotfTsK
LVNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc1Byb3RvdHlwZTo6QmFzZSk7Ci0KLXVzaW5nIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
cz47Ci0KLS8qIEhhc2ggdGFibGUgKi8KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFz
aEluZGV4IEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzVGFibGVJbmRl
eFs0XSA9IHsKLSAgICB7IC0xLCAtMSB9LAotICAgIHsgMSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9
LAotICAgIHsgMCwgLTEgfSwKLX07Ci0KLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzVGFibGVWYWx1ZXNbXSA9Ci17
Ci0gICAgeyAidW5mb3JnZWFibGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzVW5mb3JnZWFibGVBdHRyaWJ1dGUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0g
ICAgeyAidW5mb3JnZWFibGVPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3Bl
cmF0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAotfTsKLQotc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1RhYmxlID0geyAyLCAz
LCB0cnVlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6aW5mbygp
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1RhYmxlVmFsdWVzLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1RhYmxlSW5kZXggfTsKLXRl
bXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHZtKTsK
LSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Ci19Ci0KLXRlbXBs
YXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCi17Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpwcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUs
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllcyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci19Ci0KLXRlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllcyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3Rv
cikgfTsKLQotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCi0KLXN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1By
b3RvdHlwZVRhYmxlVmFsdWVzW10gPQotewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcikgfSB9LAot
fTsKLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90
eXBlKSB9OwotCi12b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwotICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIEpT
Q19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwotfQotCi1jb25zdCBDbGFzc0lu
Zm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OnNfaW5mbyA9IHsg
IlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyIsICZCYXNlOjpzX2luZm8s
ICZKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1RhYmxlLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzKSB9OwotCi1KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+JiYgaW1wbCkKLSAgICA6IEpTRE9NV3JhcHBlcjxU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+KHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKQotewotfQotCi12b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7
Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+Ojp2YWx1ZSwgIkludGVyZmFj
ZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVu
dGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIpOwotCi19Ci0KLUpTT2Jq
ZWN0KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6Y3JlYXRlUHJv
dG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICBy
ZXR1cm4gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Ci19Ci0KLUpTT2JqZWN0KiBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6cHJvdG90eXBlKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1cm4gZ2V0RE9NUHJvdG90
eXBlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPih2bSwgZ2xvYmFs
T2JqZWN0KTsKLX0KLQotSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllczo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQotewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwotfQotCi12b2lkIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBj
ZWxsKQotewotICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKiB0
aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXMqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT5KU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllczo6fkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzKCk7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihvYmplY3QpOwotICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICB1c2luZyBHZXR0ZXJJ
RExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRv
JiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0
dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0g
dGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShy
ZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxl
bWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShy
ZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKLSAgICBpZiAo
YXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVC
dWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUo
KSkpOwotICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPigwKSwgdmFsdWUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJu
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotfQotCi1ib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBv
YmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRl
eCwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyo+KG9iamVjdCk7Ci0gICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIHVzaW5nIEdldHRlcklETFR5
cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRo
aXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3Vs
dCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50
YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3Vs
dCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OwotICAgIGlmIChhdXRv
IG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0
aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7
Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KDApLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gSlNP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBpbmRleCwgc2xvdCk7Ci19Ci0KLXZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9w
ZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihvYmplY3QpOwotICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMob2JqZWN0LCBpbmZvKCkpOwotICAgIGZvciAoYXV0
byYgcHJvcGVydHlOYW1lIDogdGhpc09iamVjdC0+d3JhcHBlZCgpLnN1cHBvcnRlZFByb3BlcnR5
TmFtZXMoKSkKLSAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgcHJvcGVydHlOYW1lKSk7Ci0gICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKLX0KLQot
Ym9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6cHV0KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0UHJvcGVy
dHlTbG90KQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihjZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0KLSAgICBpZiAoIXByb3BlcnR5TmFtZS5p
c1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxP
YmplY3QtPnZtKCkgfTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5n
ZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAg
ICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5
cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKLSAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKLSAgICAgICAgaWYg
KCFmb3VuZCkgewotICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICAgICAgICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1
ZSk7Ci0gICAgICAgICAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc2V0TmFtZWRJdGVtKHByb3Bl
cnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIEpT
T2JqZWN0OjpwdXQodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllczo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1
ZSwgYm9vbCBzaG91bGRUaHJvdykKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihjZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0KLSAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7
IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnks
ICZ2bSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBl
RGlyZWN0KHZtKTsKLSAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNP
YmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKLSAg
ICBpZiAoIWZvdW5kKSB7Ci0gICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKLSAg
ICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0
cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBKU09iamVjdDo6cHV0QnlJbmRleChjZWxsLCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKLX0KLQotYm9v
bCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6ZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYg
cHJvcGVydHlEZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQotewotICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMq
PihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5m
bygpKTsKLQotICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLXN0YXRpYyBib29s
IGlzVW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKLXsK
LSAgICByZXR1cm4gcHJvcGVydHlOYW1lID09ICJ1bmZvcmdlYWJsZUF0dHJpYnV0ZSIgfHwgcHJv
cGVydHlOYW1lID09ICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiI7Ci19Ci0KLSAgICAgICAgaWYgKCFp
c1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkgfTsKLSAgICAgICAg
ICAgIGJvb2wgZm91bmQgPSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3Qs
IGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgICAgICAgICBz
bG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOwotICAgICAgICAgICAgaWYgKCFmb3VuZCkgewot
ICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3Io
KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KSk7Ci0gICAgICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlEZXNjcmlwdG9yLnZh
bHVlKCkpOwotICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
dHJ1ZSk7Ci0gICAgICAgICAgICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRl
bShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBQcm9wZXJ0eURlc2NyaXB0b3IgbmV3UHJvcGVydHlEZXNjcmlwdG9y
ID0gcHJvcGVydHlEZXNjcmlwdG9yOwotICAgIG5ld1Byb3BlcnR5RGVzY3JpcHRvci5zZXRDb25m
aWd1cmFibGUodHJ1ZSk7Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShv
YmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgbmV3UHJvcGVydHlEZXNj
cmlwdG9yLCBzaG91bGRUaHJvdyk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKiBJRExBdHRyaWJ1dGU8SlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMq
PihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllcyogSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQotRW5jb2RlZEpT
VmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0
cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCi1z
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNVbmZvcmdlYWJsZUF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMmIHRo
aXNPYmplY3QpCi17Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC51bmZvcmdlYWJsZUF0dHJpYnV0ZSgpKSkpOwotfQotCi1FbmNvZGVk
SlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1VuZm9yZ2Vh
YmxlQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPjo6Z2V0PGpzVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzVW5mb3JnZWFibGVBdHRyaWJ1dGVH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJ1bmZvcmdlYWJsZUF0dHJpYnV0ZSIpOwotfQotCi1zdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb25Cb2R5KEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJh
bWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCi17Ci0gICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
LSAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwudW5mb3Jn
ZWFibGVPcGVyYXRpb24oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0
aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbkJvZHk+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidW5mb3JnZWFibGVPcGVyYXRpb24iKTsKLX0K
LQotSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXM6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKLXsKLSAgICBhdXRvJiBjbGllbnRE
YXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Ci0gICAg
YXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKLSAgICBpZiAoYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllcy5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllczo6bmVlZHNEZXN0cnVjdGlvbik7Ci0gICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllcyk7Ci0gICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKTsKLSAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzLmdldCgpOwotSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQotICAgIGlm
ICgmSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OnZpc2l0T3V0cHV0
Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQotICAg
ICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOwot
SUdOT1JFX1dBUk5JTkdTX0VORAotSUdOT1JFX1dBUk5JTkdTX0VORAotICAgIHJldHVybiBzcGFj
ZTsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6
YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQotewotICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXMqPihjZWxsKTsKLSAgICBhbmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2Vs
bChjZWxsLCAmdGhpc09iamVjdC0+d3JhcHBlZCgpKTsKLSAgICBpZiAodGhpc09iamVjdC0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwo
Y2VsbCwgInVybCAiICsgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwo
KS5zdHJpbmcoKSk7Ci0gICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOwotfQot
Ci1ib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzT3duZXI6Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxl
LCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFzb24pCi17Ci0g
ICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwotICAg
IFVOVVNFRF9QQVJBTShyZWFzb24pOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc093bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKLXsKLSAgICBhdXRv
KiBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyA9IHN0YXRpY19jYXN0
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKj4oaGFuZGxlLnNsb3Qo
KS0+YXNDZWxsKCkpOwotICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJX
b3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMtPndyYXBwZWQoKSwganNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMpOwotfQotCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5U
RUdSSVRZKQotI2lmIFBMQVRGT1JNKFdJTikKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgz
KQotZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQFdlYkNvcmVAQDZCQCIpW10pKCk7
IH0KLSNlbHNlCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUzOVRlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0VbXTsgfQotI2VuZGlmCi0jZW5kaWYK
LQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXM+JiYgaW1wbCkKLXsKLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVH
UklUWSkKLSAgICBjb25zdCB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9p
bnRlcihpbXBsLnB0cigpKTsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgdm9pZCogZXhwZWN0ZWRW
VGFibGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/P183VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQFdlYkNvcmVAQDZCQCIpOwotI2Vsc2UKLSAgICB2b2lkKiBleHBlY3Rl
ZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTM5VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzRVsyXTsKLSNlbmRpZgotCi0gICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMgZG9lcyBub3QgaGF2ZSBhIHZ0YWJs
ZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQotICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgotICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXM+Ojp2YWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyBp
cyBub3QgcG9seW1vcnBoaWMiKTsKLQotICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24g
eW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgotICAgIC8vIFRlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0
IHBhc3NlZAotICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMgeW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBo
YXJkZW5pbmcKLSAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJp
YnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCi0gICAgUkVMRUFTRV9BU1NFUlQo
YWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwotI2VuZGlmCi0g
ICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwotfQotCi1KU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXMmIGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LCBpbXBsKTsKLX0KLQotVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6dG9XcmFw
cGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYgKGF1dG8qIHdy
YXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzKj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7
Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5oCShyZXZpc2lv
biAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaAkobm9uZXhpc3RlbnQpCkBA
IC0xLDEwMSArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQg
b3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCi0jaW5jbHVkZSAiVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXMgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcz4gewotcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBKU0RP
TVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPjsKLSAgICBz
dGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqIGNyZWF0ZShK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPiYmIGltcGwpCi0g
ICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyog
cHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcz4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9i
amVjdC0+dm0oKSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3Qm
KTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUds
b2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXMqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKLSAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwot
ICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlv
bk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBwdXQoSlND
OjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBwdXRCeUlu
ZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9vbCBk
ZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6UHJvcGVydHlOYW1lLCBjb25zdCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hv
dWxkVGhyb3cpOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKLQotICAg
IERFQ0xBUkVfSU5GTzsKLQotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFj
Y2Vzc29ycyk7Ci0gICAgfQotCi0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3Rv
cihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHRlbXBsYXRlPHR5
cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAgICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAo
bW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCi0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7Ci0gICAg
fQotICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pOwotICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5
emVyJik7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0lt
cHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpT
Qzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90
WmVybyB8IEpTQzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6T3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7
Ci1wcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+JiYpOwotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0M6OlZNJik7Ci19OwotCi1jbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc093bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLXB1YmxpYzoK
LSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8
SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYsIGNvbnN0IGNo
YXIqKik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4sIHZvaWQqIGNvbnRleHQpOwotfTsKLQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3
cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzKikKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNPd25lcj4gb3duZXI7Ci0gICAgcmV0dXJuICZv
d25lci5nZXQoKTsKLX0KLQotaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKiB3cmFwcGFibGVPYmplY3QpCi17Ci0gICAgcmV0dXJu
IHdyYXBwYWJsZU9iamVjdDsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzJik7Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKiBpbXBsKSB7IHJldHVybiBp
bXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpT
Qzo6anNOdWxsKCk7IH0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXM+JiYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVh
dGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXM+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4
aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDog
SlNDOjpqc051bGwoKTsgfQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0
ZXJUcmFpdHM8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPiB7Ci0gICAg
dXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXM7Ci0gICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcyo7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNw
cAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MzggKzAsMCBAQAotLyoKLSAgICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gICAg
VGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8g
Tk9UIE1PRElGWSEKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQot
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmgiCi0K
LSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMu
aCIKLSNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgIkpTRE9N
QXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJp
bmdzLmgiCi0jaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgotI2luY2x1ZGUgIkpT
RE9NT3BlcmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKLSNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0
YS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+Ci0jaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3Bh
Y2VJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Qb2lu
dGVyUHJlcGFyYXRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1VSTC5oPgotCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLS8vIEZ1bmN0aW9ucwotCi1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxl
T3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwotCi0vLyBB
dHRyaWJ1dGVzCi0KLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJv
b2wgc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNVbmZv
cmdlYWJsZUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotCi1jbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUgZmluYWwgOiBwdWJs
aWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlND
OjpKU05vbkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqIGNyZWF0ZShKU0M6
OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVh
dGlvbih2bSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgREVDTEFSRV9JTkZP
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgot
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAg
ICB7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1Byb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKLSAgICB9
Ci0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKLSAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Ci19OwotU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlLCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5
cGU6OkJhc2UpOwotCi11c2luZyBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGlucz47Ci0KLS8qIEhhc2ggdGFibGUgKi8KLQotc3RhdGljIGNvbnN0IHN0
cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1RhYmxlSW5kZXhbNF0gPSB7Ci0gICAgeyAtMSwgLTEg
fSwKLSAgICB7IDEsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKLSAgICB7IDAsIC0xIH0sCi19Owot
Ci0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNUYWJsZVZhbHVlc1tdID0KLXsKLSAg
ICB7ICJ1bmZvcmdlYWJsZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zVW5mb3JnZWFibGVBdHRy
aWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCi0gICAgeyAidW5mb3JnZWFibGVPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDAp
IH0gfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zVGFibGUgPSB7IDIsIDMsIHRy
dWUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGluczo6aW5mbygpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnNUYWJsZVZhbHVlcywgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zVGFibGVJbmRleCB9OwotdGVtcGxh
dGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgVU5V
U0VEX1BBUkFNKHZtKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBl
KCk7Ci19Ci0KLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3Bl
cnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OnByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNO
b250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci19
Ci0KLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnNDb25zdHJ1Y3RvcikgfTsKLQotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCi0K
LXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0K
LXsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25z
dHJ1Y3RvcikgfSB9LAotfTsKLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6c19pbmZv
ID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGlucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zUHJvdG90eXBlKSB9OwotCi12b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICByZWlmeVN0
YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6aW5mbygpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVUYWJsZVZhbHVlcywg
KnRoaXMpOwotICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwotfQot
Ci1jb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zIiwgJkJhc2U6OnNfaW5mbywgJkpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
c1RhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucykgfTsKLQotSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpKU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJl
ZjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zPiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz4oc3RydWN0dXJlLCBnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpCi17Ci19Ci0KLXZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIEFTU0VSVChpbmhlcml0
cyh2bSwgaW5mbygpKSk7Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0
aXZlRE9NT2JqZWN0LCBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0
aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2Vz
IEFjdGl2ZURPTU9iamVjdC4iKTsKLQotfQotCi1KU09iamVjdCogSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpjcmVhdGVQcm90b3R5
cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVy
biBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnNQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90
b3R5cGUoKSkpOwotfQotCi1KU09iamVjdCogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zPih2bSwgZ2xvYmFsT2JqZWN0KTsKLX0KLQotSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OmdldENvbnN0cnVjdG9y
KFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Ci19Ci0KLXZvaWQgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpkZXN0cm95
KEpTQzo6SlNDZWxsKiBjZWxsKQotewotICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGlucyo+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6fkpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucygpOwotfQotCi1ib29sIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
czo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqPihvYmplY3Qp
OwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAg
ICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVu
Y3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9u
YWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAg
IGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFt
ZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBl
Ojppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRl
cklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1
ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0g
ICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJv
cGVydHk8T3ZlcnJpZGVCdWlsdGluczo6WWVzPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1
ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1l
ZFByb3BlcnR5LnZhbHVlKCkpKTsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKLX0KLQotYm9vbCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Ci17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBh
dXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyo+KG9iamVjdCk7Ci0gICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIHVzaW5nIEdldHRlcklETFR5cGUg
PSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNP
YmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExU
eXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5
TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkp
Ci0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRp
b25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkg
fTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OwotICAgIGlmIChhdXRvIG5h
bWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5z
OjpZZXM+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBn
ZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwot
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigw
KSwgdmFsdWUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIEpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgaW5kZXgsIHNsb3QpOwotfQotCi12b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnMqPihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMob2JqZWN0LCBpbmZvKCkpOwotICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1lIDogdGhp
c09iamVjdC0+d3JhcHBlZCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSkKLSAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcHJvcGVydHlOYW1lKSk7
Ci0gICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OnB1dChKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFByb3BlcnR5
U2xvdCkKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyo+KGNlbGwpOwotICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLQotICAgIGlm
ICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAg
ICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHRydWUpOwotICAgICAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc2V0TmFtZWRJdGVtKHBy
b3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIEpTT2JqZWN0OjpwdXQo
dGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0
UHJvcGVydHlTbG90KTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIEpTVmFs
dWUgdmFsdWUsIGJvb2wpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyo+KGNlbGwpOwotICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLQotICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KSk7Ci0gICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgdHJ1ZSk7Ci0gICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShw
cm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBwcm9wZXJ0eURl
c2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnMqPihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKLQotICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLXN0
YXRpYyBib29sIGlzVW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKLXsKLSAgICByZXR1cm4gcHJvcGVydHlOYW1lID09ICJ1bmZvcmdlYWJsZUF0dHJpYnV0
ZSIgfHwgcHJvcGVydHlOYW1lID09ICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiI7Ci19Ci0KLSAgICAg
ICAgaWYgKCFpc1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpIHsKLSAgICAg
ICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAg
ICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlEZXNjcmlwdG9yLnZhbHVlKCkpOwotICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKLSAgICAgICAgICAgIHRoaXNP
YmplY3QtPndyYXBwZWQoKS5zZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVy
dHlOYW1lKSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBQcm9wZXJ0eURlc2NyaXB0b3IgbmV3UHJvcGVydHlE
ZXNjcmlwdG9yID0gcHJvcGVydHlEZXNjcmlwdG9yOwotICAgIG5ld1Byb3BlcnR5RGVzY3JpcHRv
ci5zZXRDb25maWd1cmFibGUodHJ1ZSk7Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWZpbmVPd25Q
cm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgbmV3UHJv
cGVydHlEZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
cyogSURMQXR0cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGlucz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqIElETE9wZXJhdGlv
bjxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqPihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQot
RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRK
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRp
bnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAg
Vk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAg
ICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KLXN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnNVbmZvcmdlYWJsZUF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zJiB0aGlzT2JqZWN0KQotewotICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExET01T
dHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudW5mb3JnZWFibGVB
dHRyaWJ1dGUoKSkpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zVW5mb3JnZWFibGVBdHRyaWJ1
dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPjo6
Z2V0PGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGluc1VuZm9yZ2VhYmxlQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidW5mb3JnZWFibGVB
dHRyaWJ1dGUiKTsKLX0KLQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0lu
c3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGlucz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCi17Ci0gICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGlt
cGwudW5mb3JnZWFibGVPcGVyYXRpb24oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0luc3Rh
bmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnM+OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbkJv
ZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidW5mb3JnZWFibGVPcGVyYXRp
b24iKTsKLX0KLQotSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpzdWJzcGFjZUZvckltcGwoSlNDOjpW
TSYgdm0pCi17Ci0gICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KHZtLmNsaWVudERhdGEpOwotICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vi
c3BhY2VzKCk7Ci0gICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmdl
dCgpKQotICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+IHx8ICFKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwotICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMpOwotICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKTsKLSAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5nZXQoKTsKLUlHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCi1JR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKLSAgICBpZiAoJkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6dmlzaXRPdXRwdXRDb25zdHJhaW50
cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCi0gICAgICAgIGNsaWVu
dERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7Ci1JR05PUkVfV0FS
TklOR1NfRU5ECi1JR05PUkVfV0FSTklOR1NfRU5ECi0gICAgcmV0dXJuIHNwYWNlOwotfQotCi12
b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGluczo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVy
KQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKj4oY2VsbCk7Ci0gICAgYW5h
bHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQo
KSk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAg
ICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOwotICAgIEJhc2U6OmFuYWx5
emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNPd25lcjo6aXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBT
bG90VmlzaXRvciYgdmlzaXRvciwgY29uc3QgY2hhcioqIHJlYXNvbikKLXsKLSAgICBVTlVTRURf
UEFSQU0oaGFuZGxlKTsKLSAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7Ci0gICAgVU5VU0VEX1BB
UkFNKHJlYXNvbik7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc093bmVyOjpmaW5h
bGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKLXsK
LSAgICBhdXRvKiBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnMgPSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwo
KSk7Ci0gICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29u
dGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMtPndyYXBwZWQoKSwganNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKTsK
LX0KLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSNpZiBQTEFURk9STShXSU4pCi0j
cHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAo
KmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNAV2ViQ29yZUBANkJAIilbXSkoKTsgfQotI2Vsc2UK
LWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTU4VGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0VbXTsgfQotI2VuZGlm
Ci0jZW5kaWYKLQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwpCi17
Ci0KLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0gICAgY29uc3Qgdm9pZCogYWN0dWFs
VlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7Ci0jaWYgUExBVEZP
Uk0oV0lOKQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRpZmllcigi
Pz9fN1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnNAV2ViQ29yZUBANkJAIik7Ci0jZWxzZQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9p
bnRlciA9ICZfWlRWTjdXZWJDb3JlNThUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zRVsyXTsKLSNlbmRpZgotCi0gICAgLy8gSWYgdGhpcyBm
YWlscyBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKLSAg
ICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNl
IGRlZmluaXRpb24KLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz46OnZh
bHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGlucyBpcyBub3QgcG9seW1vcnBoaWMiKTsKLQotICAgIC8vIElmIHlvdSBoaXQgdGhpcyBh
c3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgotICAgIC8v
IFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRp
bnMgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnMgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCi0g
ICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIFRlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMgeW91IHRvIG9wdCBvdXQgb2Yg
YmluZGluZyBoYXJkZW5pbmcKLSAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0
aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCi0gICAgUkVMRUFT
RV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwot
I2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyYgaW1w
bCkKLXsKLSAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGltcGwpOwotfQotCi1UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnM6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVl
IHZhbHVlKQotewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqPih2
bSwgdmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKLSAgICByZXR1
cm4gbnVsbHB0cjsKLX0KLQotfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3Zl
cnJpZGVCdWlsdGlucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnMuaAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5oCShub25leGlzdGVudCkKQEAgLTEsMTAxICsw
LDAgQEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJj
ZSBwcm9qZWN0LgotICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUt
YmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJKU0RPTVdyYXBwZXIuaCIKLSNpbmNsdWRlICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zIDogcHVibGljIEpT
RE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zPiB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5z
PjsKLSAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+JiYgaW1wbCkKLSAgICB7Ci0gICAg
ICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGlucyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+KGdsb2Jh
bE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92
ZShpbXBsKSk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgp
KTsKLSAgICAgICAgcmV0dXJuIHB0cjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgSlNDOjpKU09iamVj
dCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwotICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0
Jik7Ci0gICAgc3RhdGljIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnMqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKLSAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVj
dCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpF
bnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9v
bCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5h
bWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9v
bCBwdXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0
aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBjb25zdCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwq
KTsKLQotICAgIERFQ0xBUkVfSU5GTzsKLQotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gSlNDOjpT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUlu
Zm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZl
SW5kZXhlZEFjY2Vzc29ycyk7Ci0gICAgfQotCi0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRD
b25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHRl
bXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAgICB7Ci0gICAgICAgIGlmIGNv
bnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCi0gICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2
bSk7Ci0gICAgfQotICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwo
SlNDOjpWTSYgdm0pOwotICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6
SGVhcEFuYWx5emVyJik7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0
eVNsb3RJc0ltcHVyZSB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW50ZXJj
ZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpT
Qzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7Ci1wcm90ZWN0
ZWQ6Ci0gICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz4m
Jik7Ci0KLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKLX07Ci0KLWNsYXNzIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
c093bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0
dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYsIGNvbnN0IGNoYXIqKik7Ci0g
ICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQq
IGNvbnRleHQpOwotfTsKLQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3du
ZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyopCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
c093bmVyPiBvd25lcjsKLSAgICByZXR1cm4gJm93bmVyLmdldCgpOwotfQotCi1pbmxpbmUgdm9p
ZCogd3JhcHBlcktleShUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zKiB3cmFwcGFibGVPYmplY3QpCi17Ci0gICAgcmV0dXJuIHdyYXBwYWJs
ZU9iamVjdDsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0KiwgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGlucyYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJy
aWRlQnVpbHRpbnMqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKGxleGljYWxHbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsgfQotSlNDOjpKU1ZhbHVl
IHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0
KiwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnM+JiYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlD
cmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9u
TnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFw
cGVyQ29udmVydGVyVHJhaXRzPFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnM+IHsKLSAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM7Ci0g
ICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04MjcsNyArODI3LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZl
cnREaQogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAg
fQogICAgIGlmICghc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZ1ZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKLSAgICAgICAgcmVzdWx0LnN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmcgPSBjb252
ZXJ0PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETERPTVN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmdWYWx1ZSk7CisgICAgICAgIHJl
c3VsdC5zdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
c3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZ1ZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHN0cmluZ1dpdGhE
ZWZhdWx0VmFsdWU7CkBAIC0xMDU5LDggKzEwNTksOCBAQCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0
RGljdGlvbmFyeVRvSlMoSlNDCiAgICAgfQogICAgIGF1dG8gc21hbGxVbnNpZ25lZEludGVnZXJX
aXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExPY3RldD4oZGljdGlvbmFyeS5zbWFsbFVuc2lnbmVk
SW50ZWdlcldpdGhEZWZhdWx0KTsKICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdCIp
LCBzbWFsbFVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUpOwotICAgIGlmICghSURMVHJl
YXROdWxsQXNFbXB0eUFkYXB0b3I8SURMRE9NU3RyaW5nPjo6aXNOdWxsVmFsdWUoZGljdGlvbmFy
eS5zdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nKSkgewotICAgICAgICBhdXRvIHN0cmluZ1Ry
ZWF0TnVsbEFzRW1wdHlTdHJpbmdWYWx1ZSA9IHRvSlM8SURMVHJlYXROdWxsQXNFbXB0eUFkYXB0
b3I8SURMRE9NU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgSURMVHJlYXROdWxsQXNFbXB0
eUFkYXB0b3I8SURMRE9NU3RyaW5nPjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25h
cnkuc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZykpOworICAgIGlmICghSURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz46OmlzTnVsbFZhbHVlKGRpY3Rpb25h
cnkuc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZykpIHsKKyAgICAgICAgYXV0byBzdHJpbmdU
cmVhdE51bGxBc0VtcHR5U3RyaW5nVmFsdWUgPSB0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExET01TdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPjo6ZXh0cmFjdFZhbHVlRnJvbU51
bGxhYmxlKGRpY3Rpb25hcnkuc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZykpOwogICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
c3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZyIpLCBzdHJpbmdUcmVhdE51bGxBc0VtcHR5U3Ry
aW5nVmFsdWUpOwogICAgIH0KICAgICBhdXRvIHN0cmluZ1dpdGhEZWZhdWx0VmFsdWUgPSB0b0pT
PElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgZGljdGlvbmFyeS5zdHJpbmdXaXRo
RGVmYXVsdCk7CkBAIC0zMjU2LDcgKzMyNTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0T2JqU3RyaW5nQXR0CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETERP
TVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuc3RyaW5nQXR0
clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETERP
TVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuc3RyaW5nQXR0
clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQpAQCAtMzI2OSw3ICszMjY5LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9i
alN0cmluZ0F0dAogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETERPTVN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgICByZXR1cm4gaW1wbC5zZXRTdHJpbmdBdHRyVHJlYXRp
bmdOdWxsQXNFbXB0eVN0cmluZyhXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CkBAIC0zMjg3LDcgKzMy
ODcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqVXN2c3RyaW5nCiAgICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwudXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlT
dHJpbmcoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1w
dHlTdHJpbmcoKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVXN2c3RyaW5nQXR0
clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQpAQCAtMzMwMCw3
ICszMzAwLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialVzdnN0cmluZwogICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFRy
ZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgICByZXR1cm4gaW1wbC5zZXRVc3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZyhXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CkBAIC0zMzE4LDcgKzMzMTgsNyBAQCBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQnl0ZVN0cmluCiAgICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETFRyZWF0TnVs
bEFzRW1wdHlBZGFwdG9yPElETEJ5dGVTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmJ5dGVTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZygpKSkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMQnl0ZVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuYnl0ZVN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5n
KCkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakJ5dGVTdHJpbmdBdHRyVHJlYXRp
bmdOdWxsQXNFbXB0eVN0cmluZyhKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCkBAIC0zMzMxLDcgKzMzMzEs
NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqQnl0ZVN0cmluCiAgICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7Ci0gICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMVHJlYXROdWxs
QXNFbXB0eUFkYXB0b3I8SURMQnl0ZVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMQnl0ZVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICAgcmV0dXJuIGltcGwuc2V0Qnl0ZVN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3Ry
aW5nKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKQEAgLTU5ODksNyArNTk4OSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBpZiAoVU5MSUtFTFkoY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFy
Z3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBhcmcg
PSBjb252ZXJ0PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETERPTVN0cmluZz4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CisgICAgYXV0byBhcmcgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7CiAgICAgaW1wbC5tZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhX
VEZNb3ZlKGFyZykpOwpAQCAtNjIzMyw3ICs2MjMzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxH
bG9iYWxPYmplY3QpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRvIHN0ciA9IGNvbnZlcnQ8SURM
VHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8SURMVVNWU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKKyAgICBhdXRvIHN0ciA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICBp
bXBsLm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFdURk1v
dmUoc3RyKSk7CkBAIC02Mjk5LDcgKzYyOTksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIGF1dG8gc3RyID0gY29udmVydDxJRExUcmVh
dE51bGxBc0VtcHR5QWRhcHRvcjxJRExCeXRlU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50MC52YWx1ZSgpKTsKKyAgICBhdXRvIHN0ciA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETEJ5dGVTdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgaW1w
bC5tZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoV1RGTW92
ZShzdHIpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAJKHJldmlz
aW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDM1MSArMCwwIEBA
Ci0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJv
amVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRp
bmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgiCi0KLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKLSNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKLSNpbmNsdWRlICJKU0RPTUFic3RyYWN0
T3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9N
Q29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0SW50
ZXJmYWNlLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgotI2luY2x1ZGUgIkpT
RE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgot
I2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUu
aCIKLSNpbmNsdWRlICJKU05vZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCi0jaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cEFuYWx5emVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Ci0jaW5j
bHVkZSA8d3RmL1VSTC5oPgotCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFj
ZSBKU0M7Ci0KLS8vIEZ1bmN0aW9ucwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwotCi0vLyBBdHRyaWJ1dGVzCi0KLUpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
Ci1ib29sIHNldEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Ci0KLWNs
YXNzIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpK
U05vbkZpbmFsT2JqZWN0IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZp
bmFsT2JqZWN0OwotICAgIHN0YXRpYyBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBj
cmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVz
dE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7Ci0gICAgICAgIHB0ci0+
ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQotICAgIERF
Q0xBUkVfSU5GTzsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFj
ZUFjY2Vzcz4KLSAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCi0gICAgewotICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOwotICAgIH0KLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAg
ICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAg
fQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Ci19OwotU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSwg
SlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6QmFzZSk7Ci0KLXVzaW5nIEpTVGVzdE92
ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+OwotCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0
T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgVU5V
U0VEX1BBUkFNKHZtKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBl
KCk7Ci19Ci0KLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKLXsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJUZXN0T3ZlcnJpZGVCdWlsdGlucyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci19
Ci0KLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE92ZXJyaWRlQnVpbHRpbnMiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnNDb25zdHJ1Y3RvcikgfTsKLQotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCi0K
LXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90
eXBlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25z
dHJ1Y3RvcikgfSB9LAotICAgIHsgIm5hbWVkSXRlbSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T3ZlcnJpZGVCdWlsdGluc1By
b3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKSwgKGludHB0cl90KSAoMSkgfSB9LAotfTsKLQotY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IlRlc3RPdmVycmlkZUJ1aWx0aW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKSB9Owot
Ci12b2lkIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmVpZnlTdGF0aWNQ
cm9wZXJ0aWVzKHZtLCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjppbmZvKCksIEpTVGVzdE92ZXJy
aWRlQnVpbHRpbnNQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIEpTQ19UT19TVFJJ
TkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwotfQotCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0
T3ZlcnJpZGVCdWlsdGluczo6c19pbmZvID0geyAiVGVzdE92ZXJyaWRlQnVpbHRpbnMiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92
ZXJyaWRlQnVpbHRpbnMpIH07Ci0KLUpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OkpTVGVzdE92ZXJy
aWRlQnVpbHRpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QsIFJlZjxUZXN0T3ZlcnJpZGVCdWlsdGlucz4mJiBpbXBsKQotICAgIDogSlNET01X
cmFwcGVyPFRlc3RPdmVycmlkZUJ1aWx0aW5zPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RG
TW92ZShpbXBsKSkKLXsKLX0KLQotdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIEFT
U0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6Omlz
X2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0T3ZlcnJpZGVCdWlsdGlucz46OnZhbHVlLCAi
SW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2gg
aW1wbGVtZW50YXRpb24gY2xhc3Mgc3ViY2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7Ci0KLX0K
LQotSlNPYmplY3QqIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmNyZWF0ZVByb3RvdHlwZShWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIEpTVGVz
dE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNU
ZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpKTsKLX0KLQotSlNPYmplY3Qq
IEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zPih2bSwgZ2xvYmFsT2JqZWN0KTsKLX0KLQotSlNWYWx1ZSBKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVz
dE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKLX0KLQotdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQotewotICAgIEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4o
Y2VsbCk7Ci0gICAgdGhpc09iamVjdC0+SlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6fkpTVGVzdE92
ZXJyaWRlQnVpbHRpbnMoKTsKLX0KLQotYm9vbCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRp
bnMqPihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKLSAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMSW50ZXJmYWNlPE5vZGU+Owot
ICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3Bl
cnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRp
b25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFt
ZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAg
aWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0
dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklE
TFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNj
ZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6WWVzPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsK
LSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG5hbWVkUHJv
cGVydHkudmFsdWUoKSkpOwotICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVl
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKLX0KLQotYm9vbCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIFZN
JiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0gICAgdXNpbmcgR2V0dGVy
SURMVHlwZSA9IElETEludGVyZmFjZTxOb2RlPjsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBb
XSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVu
YW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJl
c3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21T
dHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxs
VmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBl
OjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVs
bGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07Ci0g
ICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92
ZXJyaWRlQnVpbHRpbnM6Olllcz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pT
PElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LT5n
bG9iYWxPYmplY3QoKSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKLSAgICAgICAg
c2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgc2xvdCk7Ci19Ci0KLXZvaWQgSlNUZXN0
T3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHBy
b3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAgIFZNJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKG9iamVjdCwgaW5mbygpKTsKLSAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6
IHRoaXNPYmplY3QtPndyYXBwZWQoKS5zdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkpCi0gICAgICAg
IHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHByb3BlcnR5TmFt
ZSkpOwotICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqIElETE9wZXJhdGlvbjxKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
JiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcnJpZGVC
dWlsdGlucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhp
c1ZhbHVlKCkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0Q29uc3RydWN0b3IoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkp
OwotfQotCi1ib29sIHNldEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92
ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAg
cmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCi1zdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0
aW9uTmFtZWRJdGVtQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0
T3ZlcnJpZGVCdWlsdGlucz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCi17Ci0gICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxH
bG9iYWxPYmplY3QpKTsKLSAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRvIG5hbWUgPSBjb252ZXJ0PElE
TERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKLSAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJ
bnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIGltcGwubmFtZWRJdGVtKFdURk1vdmUobmFtZSkpKSkpOwotfQotCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5j
dGlvbk5hbWVkSXRlbShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zPjo6Y2FsbDxqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlRnVuY3Rpb25O
YW1lZEl0ZW1Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm5hbWVkSXRl
bSIpOwotfQotCi1KU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpzdWJz
cGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCi17Ci0gICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwotICAgIGF1dG8mIHNwYWNl
cyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Ci0gICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0T3ZlcnJpZGVCdWlsdGlucy5nZXQoKSkKLSAgICAgICAgcmV0dXJu
IHNwYWNlOwotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucz4gfHwgIUpTVGVzdE92ZXJyaWRl
QnVpbHRpbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwotICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
cz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJyaWRlQnVpbHRpbnMgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMp
OwotICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcnJpZGVCdWls
dGlucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMpOwotICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcnJpZGVCdWlsdGlucy5n
ZXQoKTsKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCi1JR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKLSAgICBpZiAoJkpTVGVzdE92
ZXJyaWRlQnVpbHRpbnM6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2
aXNpdE91dHB1dENvbnN0cmFpbnRzKQotICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFp
bnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOwotSUdOT1JFX1dBUk5JTkdTX0VORAotSUdOT1JFX1dB
Uk5JTkdTX0VORAotICAgIHJldHVybiBzcGFjZTsKLX0KLQotdm9pZCBKU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIp
Ci17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
Kj4oY2VsbCk7Ci0gICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRo
aXNPYmplY3QtPndyYXBwZWQoKSk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSkKLSAgICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwg
IiArIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkp
OwotICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKLX0KLQotYm9vbCBKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3Is
IGNvbnN0IGNoYXIqKiByZWFzb24pCi17Ci0gICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHZpc2l0b3IpOwotICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOwotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zT3duZXI6OmZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQotewot
ICAgIGF1dG8qIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIGF1dG8mIHdvcmxk
ID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVX
cmFwcGVyKHdvcmxkLCAmanNUZXN0T3ZlcnJpZGVCdWlsdGlucy0+d3JhcHBlZCgpLCBqc1Rlc3RP
dmVycmlkZUJ1aWx0aW5zKTsKLX0KLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSNp
ZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKLWV4dGVybiAi
QyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RPdmVycmlkZUJ1
aWx0aW5zQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KLSNlbHNlCi1leHRlcm4gIkMiIHsgZXh0ZXJu
IHZvaWQqIF9aVFZON1dlYkNvcmUyMFRlc3RPdmVycmlkZUJ1aWx0aW5zRVtdOyB9Ci0jZW5kaWYK
LSNlbmRpZgotCi1KU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RPdmVycmlkZUJ1
aWx0aW5zPiYmIGltcGwpCi17Ci0KLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0gICAg
Y29uc3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5w
dHIoKSk7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRl
ciA9IF9faWRlbnRpZmllcigiPz9fN1Rlc3RPdmVycmlkZUJ1aWx0aW5zQFdlYkNvcmVAQDZCQCIp
OwotI2Vsc2UKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29y
ZTIwVGVzdE92ZXJyaWRlQnVpbHRpbnNFWzJdOwotI2VuZGlmCi0KLSAgICAvLyBJZiB0aGlzIGZh
aWxzIFRlc3RPdmVycmlkZUJ1aWx0aW5zIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBu
ZWVkIHRvIGFkZCB0aGUKLSAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0
ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
cG9seW1vcnBoaWM8VGVzdE92ZXJyaWRlQnVpbHRpbnM+Ojp2YWx1ZSwgIlRlc3RPdmVycmlkZUJ1
aWx0aW5zIGlzIG5vdCBwb2x5bW9ycGhpYyIpOwotCi0gICAgLy8gSWYgeW91IGhpdCB0aGlzIGFz
c2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCi0gICAgLy8g
VGVzdE92ZXJyaWRlQnVpbHRpbnMgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3RPdmVycmlkZUJ1aWx0
aW5zIGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAotICAgIC8vIHRvIHRvSlMoKSB3ZSBj
dXJyZW50bHkgcmVxdWlyZSBUZXN0T3ZlcnJpZGVCdWlsdGlucyB5b3UgdG8gb3B0IG91dCBvZiBi
aW5kaW5nIGhhcmRlbmluZwotICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRp
b24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KLSAgICBSRUxFQVNF
X0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7Ci0j
ZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0T3ZlcnJpZGVCdWlsdGlucz4oZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGVzdE92ZXJyaWRlQnVpbHRpbnMmIGltcGwpCi17Ci0gICAgcmV0dXJuIHdy
YXAobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKLX0KLQotVGVzdE92
ZXJyaWRlQnVpbHRpbnMqIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnRvV3JhcHBlZChKU0M6OlZN
JiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4odm0sIHZhbHVlKSkKLSAgICAgICAg
cmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaAkocmV2aXNpb24gMjY2NjM5KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRl
QnVpbHRpbnMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDk4ICswLDAgQEAKLS8qCi0gICAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICAgIFRoaXMg
ZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBN
T0RJRlkhCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKLSNp
bmNsdWRlICJUZXN0T3ZlcnJpZGVCdWlsdGlucy5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnMgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RPdmVycmlkZUJ1aWx0aW5zPiB7Ci1wdWJs
aWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0T3ZlcnJpZGVCdWlsdGlucz47
Ci0gICAgc3RhdGljIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqIGNyZWF0ZShKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE92
ZXJyaWRlQnVpbHRpbnM+JiYgaW1wbCkKLSAgICB7Ci0gICAgICAgIEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnMqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T3ZlcnJp
ZGVCdWlsdGlucz4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci0gICAgICAgIHB0
ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKLSAgICAgICAgcmV0dXJuIHB0
cjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpT
Qzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBw
cm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7Ci0gICAgc3RhdGljIFRlc3RP
dmVycmlkZUJ1aWx0aW5zKiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7Ci0gICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNs
b3QmKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51
bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0M6OkpTQ2VsbCopOwotCi0gICAgREVDTEFSRV9JTkZPOwotCi0gICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3Mg
bW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQot
ICAgIHsKLSAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6
OkNvbmN1cnJlbnRseSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1
cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKLSAgICB9Ci0gICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7Ci0gICAgc3RhdGljIHZvaWQgYW5hbHl6
ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3du
UHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlk
ZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3Q7Ci1wcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucyhKU0M6OlN0cnVj
dHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RPdmVycmlkZUJ1aWx0aW5zPiYmKTsK
LQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotfTsKLQotY2xhc3MgSlNUZXN0
T3ZlcnJpZGVCdWlsdGluc093bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYsIGNv
bnN0IGNoYXIqKik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwotfTsKLQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93
bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdE92ZXJyaWRlQnVpbHRpbnMq
KQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zT3du
ZXI+IG93bmVyOwotICAgIHJldHVybiAmb3duZXIuZ2V0KCk7Ci19Ci0KLWlubGluZSB2b2lkKiB3
cmFwcGVyS2V5KFRlc3RPdmVycmlkZUJ1aWx0aW5zKiB3cmFwcGFibGVPYmplY3QpCi17Ci0gICAg
cmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE92ZXJyaWRlQnVpbHRpbnMmKTsK
LWlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T3ZlcnJpZGVC
dWlsdGlucyogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1KU0M6OkpTVmFsdWUgdG9K
U05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBS
ZWY8VGVzdE92ZXJyaWRlQnVpbHRpbnM+JiYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3
bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0T3ZlcnJpZGVCdWlsdGlucz4m
JiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgp
OyB9Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0
T3ZlcnJpZGVCdWlsdGlucz4gewotICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IEpTVGVzdE92ZXJy
aWRlQnVpbHRpbnM7Ci0gICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRlc3RPdmVycmlk
ZUJ1aWx0aW5zKjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5n
ZXMgb246IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICsw
LDAgIyMKLUxGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMzMsMTMgKzMzLDEzIEBACiAgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gRE9NU3RyaW5nIHJlbW92ZVByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwogICAg
IERPTVN0cmluZz8gZ2V0UHJvcGVydHlQcmlvcml0eShET01TdHJpbmcgcHJvcGVydHlOYW1lKTsK
IAotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRQcm9w
ZXJ0eShET01TdHJpbmcgcHJvcGVydHlOYW1lLCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERP
TVN0cmluZyB2YWx1ZSwgb3B0aW9uYWwgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJp
bmcgcHJpb3JpdHkgPSAiIik7CisgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5kZWZpbmVkIHNldFByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUsIFtMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVlLCBvcHRpb25hbCBbTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmddIERPTVN0cmluZyBwcmlvcml0eSA9ICIiKTsKIAogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBnZXR0ZXIgRE9NU3RyaW5nIGl0ZW0odW5z
aWduZWQgbG9uZyBpbmRleCk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIENTU1J1bGU/IHBhcmVu
dFJ1bGU7CiAKLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlT
dHJpbmddIERPTVN0cmluZyBjc3NGbG9hdDsKKyAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBb
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBjc3NGbG9hdDsKIAogICAgIERPTVN0
cmluZz8gZ2V0UHJvcGVydHlTaG9ydGhhbmQob3B0aW9uYWwgRE9NU3RyaW5nIHByb3BlcnR5TmFt
ZSk7CiAgICAgYm9vbGVhbiBpc1Byb3BlcnR5SW1wbGljaXQob3B0aW9uYWwgRE9NU3RyaW5nIHBy
b3BlcnR5TmFtZSk7CkBAIC00OSw3ICs0OSw3IEBACiAgICAgLy8gcHJlZml4ZXMgZm9yIHRoaXMg
dG8gYmUgcHJhY3RpY2FsLiBJZiB3ZSByZW1vdmUgbGVnYWN5IGFsaWFzZXMsIHdlIHNob3VsZAog
ICAgIC8vIHJlY29uc2lkZXIgdGhpcyBkZWNpc2lvbi4KICAgICBnZXR0ZXIgKERPTVN0cmluZyBv
ciBkb3VibGUpIChET01TdHJpbmcgbmFtZSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4
Y2VwdGlvbiwgQ2FsbE5hbWVkU2V0dGVyT25seUZvclN1cHBvcnRlZFByb3BlcnRpZXNdIHNldHRl
ciB1bmRlZmluZWQgKERPTVN0cmluZyBuYW1lLCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERP
TVN0cmluZyB2YWx1ZSk7CisgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbiwgQ2Fs
bE5hbWVkU2V0dGVyT25seUZvclN1cHBvcnRlZFByb3BlcnRpZXNdIHNldHRlciB1bmRlZmluZWQg
KERPTVN0cmluZyBuYW1lLCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1
ZSk7CiAKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLCBhbmQgd2Ugd291bGQgbGlr
ZSB0byBkcm9wIHN1cHBvcnQgZm9yIGl0IHNvbWVkYXkKICAgICBEZXByZWNhdGVkQ1NTT01WYWx1
ZT8gZ2V0UHJvcGVydHlDU1NWYWx1ZShET01TdHJpbmcgcHJvcGVydHlOYW1lKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmtub3duUnVsZS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL0NTU1Vua25vd25SdWxlLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Vua25vd25SdWxlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjAs
NyArMjAsNyBAQAogCiAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAyOgogWwotICAgIE5vSW50
ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2Ug
Q1NTVW5rbm93blJ1bGUgOiBDU1NSdWxlIHsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9FbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9FbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvRWxlbWVudENTU0lubGluZVN0eWxlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNyArMjYsNyBAQAogLy8gQ1NTT00gZXh0ZW5zaW9ucyB0byBIVE1MRWxlbWVudCAvIFNW
R0VsZW1lbnQ6CiAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3RoZS1lbGVtZW50
Y3NzaW5saW5lc3R5bGUtaW50ZXJmYWNlCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAg
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBFbGVtZW50Q1NTSW5saW5lU3R5
bGUgewogICAgIFtJbXBsZW1lbnRlZEFzPWNzc29tU3R5bGUsIFB1dEZvcndhcmRzPWNzc1RleHRd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NTdHlsZURlY2xhcmF0aW9uIHN0eWxlOyAvLyBGSVhNRTog
U2hvdWxkIGJlIFtTYW1lT2JqZWN0XS4KICAgICBbSW1wbGVtZW50ZWRBcz1lbnN1cmVBdHRyaWJ1
dGVTdHlsZU1hcCwgQ2FjaGVkQXR0cmlidXRlLCBFbmFibGVkQXRSdW50aW1lPUNTU1R5cGVkT00s
IENvbmRpdGlvbmFsPUNTU19UWVBFRF9PTV0gcmVhZG9ubHkgYXR0cmlidXRlIFN0eWxlUHJvcGVy
dHlNYXAgYXR0cmlidXRlU3R5bGVNYXA7IC8vIEZJWE1FOiBTaG91bGQgYmUgW1NhbWVPYmplY3Rd
LgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsy
OSw3IEBACiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKICAgICBKU0N1c3RvbUhlYWRl
ciwKIF0gaW50ZXJmYWNlIE1lZGlhTGlzdCB7Ci0gICAgYXR0cmlidXRlIFtUcmVhdE51bGxBcz1F
bXB0eVN0cmluZ10gRE9NU3RyaW5nIG1lZGlhVGV4dDsKKyAgICBhdHRyaWJ1dGUgW0xlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgbWVkaWFUZXh0OwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKIAogICAgIGdldHRlciBET01TdHJpbmc/IGl0ZW0o
dW5zaWduZWQgbG9uZyBpbmRleCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRp
YS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEuaWRsCShy
ZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VP
YmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgR2VuZXJhdGVJc1JlYWNo
YWJsZT1SZWFjaGFibGVGcm9tRE9NV2luZG93LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUsCiBdIGludGVyZmFjZSBTdHlsZU1lZGlhIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9D
aGFyYWN0ZXJEYXRhLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFj
dGVyRGF0YS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGFy
YWN0ZXJEYXRhLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTgsNyArMTgsNyBAQAogICovCiAKIGlu
dGVyZmFjZSBDaGFyYWN0ZXJEYXRhIDogTm9kZSB7Ci0gICAgYXR0cmlidXRlIFtUcmVhdE51bGxB
cz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGRhdGE7CisgICAgYXR0cmlidXRlIFtMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGRhdGE7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHN1
YnN0cmluZ0RhdGEodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgY291bnQpOwog
ICAgIHVuZGVmaW5lZCBhcHBlbmREYXRhKERPTVN0cmluZyBkYXRhKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9DaGlsZE5vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9DaGlsZE5vZGUuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
Q2hpbGROb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogCiAvLyBodHRw
czovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2NoaWxkbm9kZQogWwotICAgIE5vSW50ZXJmYWNlT2Jq
ZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgQ2hpbGROb2Rl
IHsKICAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGUsIE1heVRocm93RXhjZXB0aW9uXSB1bmRl
ZmluZWQgYmVmb3JlKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwogICAgIFtDRVJlYWN0
aW9ucywgVW5zY29wYWJsZSwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBhZnRlcigoTm9k
ZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01J
bXBsZW1lbnRhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTUlt
cGxlbWVudGF0aW9uLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0RPTUltcGxlbWVudGF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAog
ICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBET01JbXBsZW1lbnRh
dGlvbiB7CiAgICAgW05ld09iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIERvY3VtZW50VHlwZSBj
cmVhdGVEb2N1bWVudFR5cGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIERPTVN0cmluZyBwdWJs
aWNJZCwgRE9NU3RyaW5nIHN5c3RlbUlkKTsKLSAgICBbTmV3T2JqZWN0LCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gWE1MRG9jdW1lbnQgY3JlYXRlRG9jdW1lbnQoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkks
IFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIG9wdGlv
bmFsIERvY3VtZW50VHlwZT8gZG9jdHlwZSA9IG51bGwpOworICAgIFtOZXdPYmplY3QsIE1heVRo
cm93RXhjZXB0aW9uXSBYTUxEb2N1bWVudCBjcmVhdGVEb2N1bWVudChET01TdHJpbmc/IG5hbWVz
cGFjZVVSSSwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgcXVhbGlmaWVkTmFt
ZSwgb3B0aW9uYWwgRG9jdW1lbnRUeXBlPyBkb2N0eXBlID0gbnVsbCk7CiAgICAgW05ld09iamVj
dF0gSFRNTERvY3VtZW50IGNyZWF0ZUhUTUxEb2N1bWVudChvcHRpb25hbCBET01TdHJpbmcgdGl0
bGUpOwogCiAgICAgYm9vbGVhbiBoYXNGZWF0dXJlKCk7IC8vIFVzZWxlc3M7IGFsd2F5cyByZXR1
cm5zIHRydWUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NU3RyaW5nTWFwLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRE9NU3RyaW5nTWFwLmlkbAkocmV2aXNpb24g
MjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1w
bEVsZW1lbnRSb290LAotICAgIE92ZXJyaWRlQnVpbHRpbnMsCisgICAgTGVnYWN5T3ZlcnJpZGVC
dWlsdElucywKICAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbiwKIF0gaW50ZXJmYWNlIERPTVN0cmlu
Z01hcCB7CiAgICAgZ2V0dGVyIERPTVN0cmluZyAoRE9NU3RyaW5nIG5hbWUpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25FdmVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25FdmVu
dC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmll
bnRhdGlvbk9yTW90aW9uRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBA
CiAKIFsKICAgICBDb25kaXRpb25hbD1ERVZJQ0VfT1JJRU5UQVRJT04sCi0gICAgTm9JbnRlcmZh
Y2VPYmplY3QKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdAogXSBpbnRlcmZhY2UgRGV2aWNl
T3JpZW50YXRpb25Pck1vdGlvbkV2ZW50IHsKICAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIEVuYWJs
ZWRCeVNldHRpbmc9RGV2aWNlT3JpZW50YXRpb25QZXJtaXNzaW9uQVBJXSBzdGF0aWMgUHJvbWlz
ZTxEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlPiByZXF1ZXN0UGVybWlz
c2lvbigpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNpb24gMjY2NjM5
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
ODMsNyArODMsNyBAQCB0eXBlZGVmIChIVE1MU2NyaXB0RWxlbWVudCBvciBTVkdTY3JpcHRFCiAg
ICAgW05ld09iamVjdF0gVHJlZVdhbGtlciBjcmVhdGVUcmVlV2Fsa2VyKE5vZGUgcm9vdCwgb3B0
aW9uYWwgdW5zaWduZWQgbG9uZyB3aGF0VG9TaG93ID0gMHhGRkZGRkZGRiwgb3B0aW9uYWwgTm9k
ZUZpbHRlcj8gZmlsdGVyID0gbnVsbCk7CiAKICAgICAvLyBFeHRlbnNpb25zIGZyb20gSFRNTCBz
cGVjaWZpY2F0aW9uIChodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN0aGUtZG9jdW1lbnQt
b2JqZWN0KS4KLSAgICBbUHV0Rm9yd2FyZHM9aHJlZiwgVW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBMb2NhdGlvbj8gbG9jYXRpb247CisgICAgW1B1dEZvcndhcmRzPWhyZWYsIExlZ2Fj
eVVuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgTG9jYXRpb24/IGxvY2F0aW9uOwogICAg
IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgZG9tYWluOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZT
dHJpbmcgcmVmZXJyZXI7CiAgICAgYXR0cmlidXRlIFVTVlN0cmluZyBjb29raWU7CkBAIC0xMzAs
NyArMTMwLDcgQEAgdHlwZWRlZiAoSFRNTFNjcmlwdEVsZW1lbnQgb3IgU1ZHU2NyaXB0RQogICAg
IFtFbmFibGVkQnlTZXR0aW5nPVVuZG9NYW5hZ2VyQVBJXSByZWFkb25seSBhdHRyaWJ1dGUgVW5k
b01hbmFnZXIgdW5kb01hbmFnZXI7CiAKICAgICAvLyBTcGVjaWFsIGV2ZW50IGhhbmRsZXIgSURM
IGF0dHJpYnV0ZXMgdGhhdCBvbmx5IGFwcGx5IHRvIERvY3VtZW50IG9iamVjdHMuCi0gICAgW0xl
bmllbnRUaGlzXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ucmVhZHlzdGF0ZWNoYW5nZTsKKyAg
ICBbTGVnYWN5TGVuaWVudFRoaXNdIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25yZWFkeXN0YXRl
Y2hhbmdlOwogCiAgICAgLy8gRXh0ZW5zaW9ucyBmcm9tIHRoZSBDU1NPTS1WaWV3IHNwZWNpZmlj
YXRpb24gKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS12aWV3LyNleHRlbnNpb25zLXRv
LXRoZS1kb2N1bWVudC1pbnRlcmZhY2UpLgogICAgIFtJbXBsZW1lbnRlZEFzPXNjcm9sbGluZ0Vs
ZW1lbnRGb3JBUEldIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50PyBzY3JvbGxpbmdFbGVtZW50
OwpAQCAtMTc5LDExICsxNzksMTEgQEAgdHlwZWRlZiAoSFRNTFNjcmlwdEVsZW1lbnQgb3IgU1ZH
U2NyaXB0RQogCiAgICAgLy8gT2Jzb2xldGUgZmVhdHVyZXMgZnJvbSBodHRwczovL2h0bWwuc3Bl
Yy53aGF0d2cub3JnL211bHRpcGFnZS9vYnNvbGV0ZS5odG1sCiAKLSAgICBbQ0VSZWFjdGlvbnNd
IGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBmZ0NvbG9yOwot
ICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1saW5rQ29sb3JGb3JCaW5kaW5nc10gYXR0
cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGxpbmtDb2xvcjsKLSAg
ICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0
cmluZyB2bGlua0NvbG9yOwotICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtUcmVhdE51bGxB
cz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGFsaW5rQ29sb3I7Ci0gICAgW0NFUmVhY3Rpb25zXSBh
dHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgYmdDb2xvcjsKKyAg
ICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0
cmluZyBmZ0NvbG9yOworICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1saW5rQ29sb3JG
b3JCaW5kaW5nc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5n
IGxpbmtDb2xvcjsKKyAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmddIERPTVN0cmluZyB2bGlua0NvbG9yOworICAgIFtDRVJlYWN0aW9uc10gYXR0cmli
dXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGFsaW5rQ29sb3I7CisgICAg
W0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJp
bmcgYmdDb2xvcjsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MQ29sbGVjdGlvbiBhbmNo
b3JzOyAvKiBbU2FtZU9iamVjdF0gKi8KICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxl
Y3Rpb24gYXBwbGV0czsgLyogW1NhbWVPYmplY3RdICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRBbmRFbGVtZW50RXZlbnRIYW5kbGVycy5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMuaWRsCShyZXZp
c2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRBbmRFbGVtZW50RXZl
bnRIYW5kbGVycy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jZG9jdW1lbnRhbmRlbGVtZW50ZXZlbnRoYW5kbGVy
cwogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
LAogXSBpbnRlcmZhY2UgRG9jdW1lbnRBbmRFbGVtZW50RXZlbnRIYW5kbGVycyB7CiAgICAgYXR0
cmlidXRlIEV2ZW50SGFuZGxlciBvbmNvcHk7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBv
bmN1dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yU2hhZG93Um9vdC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JTaGFkb3dSb290Lmlk
bAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JTaGFk
b3dSb290LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiAvLyBodHRwczov
L2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvY3VtZW50b3JzaGFkb3dyb290CiBbCi0gICAgTm9JbnRl
cmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBE
b2N1bWVudE9yU2hhZG93Um9vdCB7CiAgICAgLy8gRXh0ZW5zaW9ucyBmcm9tIFNoYWRvdyBET00g
QVBJIChodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL3NoYWRvdy8jZXh0
ZW5zaW9ucy10by10aGUtZG9jdW1lbnRvcnNoYWRvd3Jvb3QtbWl4aW4pLgogICAgIC8vIERPTVNl
bGVjdGlvbj8gZ2V0U2VsZWN0aW9uKCk7IC8vIEZJWE1FOiBXZSBjdXJyZW50bHkgaGF2ZSB0aGlz
IG9uIERvY3VtZW50IG9ubHkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCShyZXZpc2lvbiAy
NjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTkwLDggKzkwLDggQEAKIAogICAgIC8vIEV4dGVuc2lvbnMgdG8gRWxlbWVudCBmcm9tIERP
TSBQYXJzaW5nIGFuZCBTZXJpYWxpemF0aW9uIHNwZWNpZmljYXRpb24uCiAgICAgLy8gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL0RPTS1QYXJzaW5nLyNleHRlbnNpb25zLXRvLXRoZS1lbGVtZW50LWlu
dGVyZmFjZQotICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIGlubmVySFRNTDsKLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBb
VHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBvdXRlckhUTUw7CisgICAgW0NFUmVh
Y3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgaW5u
ZXJIVE1MOworICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIG91dGVySFRNTDsKICAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhj
ZXB0aW9uXSB1bmRlZmluZWQgaW5zZXJ0QWRqYWNlbnRIVE1MKERPTVN0cmluZyBwb3NpdGlvbiwg
RE9NU3RyaW5nIHRleHQpOwogCiAgICAgLy8gRXh0ZW5zaW9ucyBmcm9tIEZ1bGwgU2NyZWVuIEFQ
SSAoaHR0cHM6Ly9mdWxsc2NyZWVuLnNwZWMud2hhdHdnLm9yZy8jYXBpKS4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCB0eXBlZGVmIGRvdWJsZSBET01I
aWdoUmVzVGltZVN0YW1wOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGRlZmF1bHRQ
cmV2ZW50ZWQ7CiAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9U2hhZG93RE9NXSByZWFkb25seSBhdHRy
aWJ1dGUgYm9vbGVhbiBjb21wb3NlZDsKIAotICAgIFtVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0
cmlidXRlIGJvb2xlYW4gaXNUcnVzdGVkOworICAgIFtMZWdhY3lVbmZvcmdlYWJsZV0gcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gaXNUcnVzdGVkOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBJbXBsZW1lbnRlZEFzPXRpbWVTdGFtcEZvckJpbmRpbmdzXSByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NSGlnaFJlc1RpbWVTdGFtcCB0aW1lU3RhbXA7CiAKICAgICB1bmRlZmlu
ZWQgaW5pdEV2ZW50KERPTVN0cmluZyB0eXBlLCBvcHRpb25hbCBib29sZWFuIGJ1YmJsZXMgPSBm
YWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlID0gZmFsc2UpOyAvLyBIaXN0b3JpY2Fs
LgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmlkbAkocmV2aXNpb24gMjY2NjM5
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0xOSw3ICsxOSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAg
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJmYWNlIEV2ZW50TGlzdGVuZXIgewogICAg
IHVuZGVmaW5lZCBoYW5kbGVFdmVudChFdmVudCBldmVudCk7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0dsb2JhbEV2ZW50SGFuZGxlcnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9HbG9iYWxFdmVudEhhbmRsZXJzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0dsb2JhbEV2ZW50SGFuZGxlcnMuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw3ICsyNiw3IEBACiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL3dlYmFwcGFwaXMuaHRtbCNnbG9iYWxldmVudGhhbmRsZXJzCiBbCi0gICAgTm9JbnRl
cmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBH
bG9iYWxFdmVudEhhbmRsZXJzIHsKICAgICAvLyBDb21tZW50ZWQgb3V0IGV2ZW50IGhhbmRsZXJz
IGFyZSBkZWZpbmVkIGJ5IHRoZSBIVE1MNSBzcGVjaWZpY2F0aW9uIGJ1dAogICAgIC8vIGFyZSBu
b3QgeWV0IGltcGxlbWVudGVkLgpAQCAtNjUsOCArNjUsOCBAQAogICAgIGF0dHJpYnV0ZSBFdmVu
dEhhbmRsZXIgb25sb2FkZWRtZXRhZGF0YTsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9u
bG9hZHN0YXJ0OwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tb3VzZWRvd247Ci0gICAg
W0xlbmllbnRUaGlzXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubW91c2VlbnRlcjsKLSAgICBb
TGVuaWVudFRoaXNdIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tb3VzZWxlYXZlOworICAgIFtM
ZWdhY3lMZW5pZW50VGhpc10gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbm1vdXNlZW50ZXI7Cisg
ICAgW0xlZ2FjeUxlbmllbnRUaGlzXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubW91c2VsZWF2
ZTsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubW91c2Vtb3ZlOwogICAgIGF0dHJpYnV0
ZSBFdmVudEhhbmRsZXIgb25tb3VzZW91dDsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9u
bW91c2VvdmVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05hdmlnYXRvck1heFRvdWNoUG9p
bnRzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTmF2aWdhdG9yTWF4VG91
Y2hQb2ludHMuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTmF2
aWdhdG9yTWF4VG91Y2hQb2ludHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBA
CiAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QsCiBdIGludGVyZmFjZSBNYXhUb3VjaFBvaW50cyB7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGxvbmcgbWF4VG91Y2hQb2ludHM7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05v
bkRvY3VtZW50VHlwZUNoaWxkTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL05vbkRvY3VtZW50VHlwZUNoaWxkTm9kZS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob25Eb2N1bWVudFR5cGVDaGlsZE5vZGUuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKIC8vIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8j
aW50ZXJmYWNlLW5vbmRvY3VtZW50dHlwZWNoaWxkbm9kZQogWwotICAgIE5vSW50ZXJmYWNlT2Jq
ZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgTm9uRG9jdW1l
bnRUeXBlQ2hpbGROb2RlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudD8gcHJldmlv
dXNFbGVtZW50U2libGluZzsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudD8gbmV4dEVs
ZW1lbnRTaWJsaW5nOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vbkVsZW1lbnRQYXJlbnRO
b2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9uRWxlbWVudFBhcmVu
dE5vZGUuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9uRWxl
bWVudFBhcmVudE5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKIC8v
IGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jaW50ZXJmYWNlLW5vbmVsZW1lbnRwYXJlbnRu
b2RlCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3QsCiBdIGludGVyZmFjZSBOb25FbGVtZW50UGFyZW50Tm9kZSB7CiAgICAgW0RPTUpJVD1SZWFk
RE9NXSBFbGVtZW50PyBnZXRFbGVtZW50QnlJZChbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmdd
IERPTVN0cmluZyBlbGVtZW50SWQpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9QYXJl
bnROb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUGFyZW50Tm9kZS5p
ZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9QYXJlbnROb2RlLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiAvLyBodHRwczovL2RvbS5zcGVj
LndoYXR3Zy5vcmcvI2ludGVyZmFjZS1wYXJlbnRub2RlCiBbCi0gICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBQYXJlbnROb2Rl
IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24gY2hpbGRyZW47IC8vIEZJ
WE1FOiBTaG91bGQgYmUgW1NhbWVPYmplY3RdLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVt
ZW50PyBmaXJzdEVsZW1lbnRDaGlsZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5pZGwJ
KHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBF
bGVtZW50IGhvc3Q7CiAKICAgICAvLyBGSVhNRTogU2VlbXMgdG8gaGF2ZSBiZWVuIGRyb3BwZWQg
ZnJvbSB0aGUgU2hhZG93IERPTSBBUEkuCi0gICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1Ry
ZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgaW5uZXJIVE1MOworICAgIFtDRVJlYWN0
aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGlubmVy
SFRNTDsKIH07CiAKIFNoYWRvd1Jvb3QgaW5jbHVkZXMgRG9jdW1lbnRPclNoYWRvd1Jvb3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdGFibGUuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TbG90YWJsZS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9TbG90YWJsZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAK
ICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QsCiAgICAgRW5hYmxlZEF0UnVudGltZT1TaGFkb3dET00sCiBdIGludGVyZmFjZSBTbG90
YWJsZSB7CiAgICAgW0ltcGxlbWVudGVkQXM9YXNzaWduZWRTbG90Rm9yQmluZGluZ3NdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBIVE1MU2xvdEVsZW1lbnQ/IGFzc2lnbmVkU2xvdDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MTksMTIgKzE5LDEyIEBACiAgKi8KIAogaW50ZXJmYWNlIEhUTUxCb2R5RWxlbWVudCA6IEhUTUxF
bGVtZW50IHsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUg
W1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgYUxpbms7CisgICAgW0NFUmVhY3Rp
b25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z10gRE9NU3RyaW5nIGFMaW5rOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3Rd
IGF0dHJpYnV0ZSBET01TdHJpbmcgYmFja2dyb3VuZDsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVl
ZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJp
bmcgYmdDb2xvcjsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1
dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgbGluazsKLSAgICBbQ0VSZWFj
dGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3Ry
aW5nXSBET01TdHJpbmcgdGV4dDsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0
XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgdkxpbms7Cisg
ICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5l
ZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3Ry
aW5nIGxpbms7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRl
IFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHRleHQ7CisgICAgW0NFUmVhY3Rp
b25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z10gRE9NU3RyaW5nIHZMaW5rOwogCiAgICAgW05vdEVudW1lcmFibGUsIFdpbmRvd0V2ZW50SGFu
ZGxlcl0gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmJsdXI7CiAgICAgW05vdEVudW1lcmFibGUs
IFdpbmRvd0V2ZW50SGFuZGxlcl0gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmVycm9yOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
MSw3ICsyMSw3IEBACiBbCiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBOZXdJbXB1cmVQcm9w
ZXJ0eUZpcmVzV2F0Y2hwb2ludHMsCi0gICAgT3ZlcnJpZGVCdWlsdGlucywKKyAgICBMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zLAogXSBpbnRlcmZhY2UgSFRNTERvY3VtZW50IDogRG9jdW1lbnQgeyAg
ICAKICAgICBnZXR0ZXIgKFdpbmRvd1Byb3h5IG9yIEVsZW1lbnQgb3IgSFRNTENvbGxlY3Rpb24p
IChET01TdHJpbmcgbmFtZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5p
ZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBACiAgICAgW0NFUmVhY3Rpb25zXSBh
dHRyaWJ1dGUgYm9vbGVhbiBzcGVsbGNoZWNrOwogICAgIC8vIHVuZGVmaW5lZCBmb3JjZVNwZWxs
Q2hlY2soKTsgLy8gRklYTUU6IE5vdCBzdXBwb3J0ZWQuCiAKLSAgICBbQ0VSZWFjdGlvbnNdIGF0
dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBpbm5lclRleHQ7Cisg
ICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01T
dHJpbmcgaW5uZXJUZXh0OwogCiAgICAgLy8gRklYTUU6IFNob3VsZCBiZSBpbiBhIHNlcGFyYXRl
IEVsZW1lbnRDb250ZW50RWRpdGFibGUgaW50ZXJmYWNlLgogICAgIC8vIGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvI2VsZW1lbnRjb250ZW50ZWRpdGFibGUKQEAgLTU2LDExICs1NiwxMSBA
QAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgb2Zmc2V0SGVpZ2h0OyAvLyBGSVhNRTog
U2hvdWxkIGJlIG9mIHR5cGUgbG9uZy4KIAogICAgIC8vIE5vbiBTdGFuZGFyZCBidXQgbWF5IGdl
dCBhZGRlZCB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9o
dG1sL2lzc3Vlcy82NjgpLgotICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtUcmVhdE51bGxB
cz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG91dGVyVGV4dDsKKyAgICBbQ0VSZWFjdGlvbnNdIGF0
dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBvdXRlclRleHQ7CiAK
ICAgICAvLyBpT1MgYXV0b2NvcnJlY3QgLyBhdXRvY2FwaXRhbGl6YXRpb24gZXh0ZW5zaW9ucy4K
ICAgICBbQ29uZGl0aW9uYWw9QVVUT0NPUlJFQ1QsIENFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgYm9v
bGVhbiBhdXRvY29ycmVjdDsKLSAgICBbQ29uZGl0aW9uYWw9QVVUT0NBUElUQUxJWkUsIENFUmVh
Y3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgYXV0
b2NhcGl0YWxpemU7CisgICAgW0NvbmRpdGlvbmFsPUFVVE9DQVBJVEFMSVpFLCBDRVJlYWN0aW9u
c10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGF1dG9jYXBp
dGFsaXplOwogCiAgICAgLy8gRklYTUU6IFdlIGFyZSB0aGUgb25seSBicm93c2VyIHRvIHN1cHBv
cnQgdGhpcyBub3cgdGhhdCBCbGluayBkcm9wcGVkIGl0IChodHRwOi8vY3JidWcuY29tLzY4ODk0
MykuCiAgICAgW0NFUmVhY3Rpb25zLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdlYmtp
dGRyb3B6b25lOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmlkbAko
cmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw3IEBACiAgKi8KIAogaW50ZXJmYWNlIEhU
TUxGb250RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVk
LCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcg
Y29sb3I7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGNvbG9yOwogICAgIFtDRVJlYWN0aW9u
cz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgZmFjZTsKICAgICBbQ0VS
ZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNpemU7CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbAkocmV2aXNpb24g
MjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAKIFsKICAgICBMZWdhY3lVbmVudW1lcmFibGVO
YW1lZFByb3BlcnRpZXMsCi0gICAgT3ZlcnJpZGVCdWlsdGlucywKKyAgICBMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zLAogICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKIF0gaW50ZXJmYWNlIEhU
TUxGb3JtRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVk
LCBSZWZsZWN0PWFjY2VwdF9jaGFyc2V0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFjY2VwdENoYXJz
ZXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwJKHJldmlz
aW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDggQEAgaW50ZXJmYWNlIEhUTUxGcmFtZUVsZW1l
bnQgOiBIVE1MRWxlbWVudAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVhZG9ubHkgYXR0
cmlidXRlIERvY3VtZW50IGNvbnRlbnREb2N1bWVudDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
V2luZG93UHJveHkgY29udGVudFdpbmRvdzsKIAotICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQs
IFJlZmxlY3RdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBt
YXJnaW5IZWlnaHQ7Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmli
dXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1hcmdpbldpZHRoOworICAg
IFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmddIERPTVN0cmluZyBtYXJnaW5IZWlnaHQ7CisgICAgW0NFUmVhY3Rpb25zPU5v
dE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9N
U3RyaW5nIG1hcmdpbldpZHRoOwogCiAgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlLCBNYXlUaHJv
d0V4Y2VwdGlvbl0gRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMuaWRsCShyZXZpc2lv
biAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRp
bHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5v
SW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJmYWNl
IEhUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMgewogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQs
IFJlZmxlY3QsIFVSTF0gc3RyaW5naWZpZXIgYXR0cmlidXRlIFVTVlN0cmluZyBocmVmOwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgb3JpZ2luOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
Myw4ICsyMyw4IEBAIGludGVyZmFjZSBIVE1MSUZyYW1lRWxlbWVudCA6IEhUTUxFbGVtZW4KICAg
ICBbUmVmbGVjdCwgQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZy
YW1lQm9yZGVyOwogICAgIFtSZWZsZWN0LCBDRVJlYWN0aW9ucz1Ob3ROZWVkZWRdIGF0dHJpYnV0
ZSBET01TdHJpbmcgaGVpZ2h0OwogICAgIFtSZWZsZWN0LCBVUkwsIENFUmVhY3Rpb25zPU5vdE5l
ZWRlZF0gYXR0cmlidXRlIFVTVlN0cmluZyBsb25nRGVzYzsKLSAgICBbUmVmbGVjdCwgQ0VSZWFj
dGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01T
dHJpbmcgbWFyZ2luSGVpZ2h0OwotICAgIFtSZWZsZWN0LCBDRVJlYWN0aW9ucz1Ob3ROZWVkZWRd
IGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBtYXJnaW5XaWR0
aDsKKyAgICBbUmVmbGVjdCwgQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgW0xlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luSGVpZ2h0OworICAgIFtSZWZsZWN0
LCBDRVJlYWN0aW9ucz1Ob3ROZWVkZWRdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmddIERPTVN0cmluZyBtYXJnaW5XaWR0aDsKICAgICBbUmVmbGVjdCwgQ0VSZWFjdGlvbnM9Tm90
TmVlZGVkXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7CiAKICAgICBbUHV0Rm9yd2FyZHM9dmFs
dWVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01Ub2tlbkxpc3Qgc2FuZGJveDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsNyBAQAogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0
dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZs
ZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsaWduOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVk
ZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWx0OwotICAgIFtDRVJlYWN0aW9ucz1O
b3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERP
TVN0cmluZyBib3JkZXI7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0
cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJvcmRlcjsKICAgICBb
Q0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBjcm9zc09yaWdpbjsK
ICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBoZWln
aHQ7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgaHNwYWNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBACiAgICAgW0NFUmVh
Y3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRlIERPTVN0cmluZyB0eXBlOyAvLyByZWFkb25seSBk
cm9wcGVkIGFzIHBhcnQgb2YgRE9NIGxldmVsIDIKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVk
XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlZmF1bHRWYWx1ZTsKICAgICAvLyBTZWUgdGhlIGRpc2N1
c3Npb24gaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDA4NQot
ICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWRdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlT
dHJpbmddIERPTVN0cmluZyB2YWx1ZTsKKyAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRy
aWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWU7CiAgICAgYXR0
cmlidXRlIERhdGU/IHZhbHVlQXNEYXRlOwogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91
YmxlIHZhbHVlQXNOdW1iZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVj
dEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVj
dEVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPYmplY3RFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogICAg
IFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgY29k
ZTsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGFsaWduOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0
ZSBET01TdHJpbmcgYXJjaGl2ZTsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0
XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgYm9yZGVyOwor
ICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBib3JkZXI7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5l
ZWRlZCwgUmVmbGVjdCwgVVJMXSBhdHRyaWJ1dGUgVVNWU3RyaW5nIGNvZGVCYXNlOwogICAgIFtD
RVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgY29kZVR5
cGU7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdCwgVVJMXSBhdHRyaWJ1dGUg
VVNWU3RyaW5nIGRhdGE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPckZvcmVpZ25F
bGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPckZvcmVp
Z25FbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3JGb3JlaWduRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAK
IC8vIEZJWE1FOiB1cGRhdGUgYWJvdmUgbGluayB3aGVuIHRoaXMgY2hhbmdlIGhhcyBiZWVuIGlt
cGxlbWVudGVkOgogLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9odG1sL2lzc3Vlcy80NzAy
CiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Qs
CiBdIGludGVyZmFjZSBIVE1MT3JGb3JlaWduRWxlbWVudCB7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZ01hcCBkYXRhc2V0OyAvLyBGSVhNRTogU2hvdWxkIGJlIFtTYW1lT2JqZWN0
XS4KICAgICBbQ0VSZWFjdGlvbnMsIEltcGxlbWVudGVkQXM9dGFiSW5kZXhGb3JCaW5kaW5nc10g
YXR0cmlidXRlIGxvbmcgdGFiSW5kZXg7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
dXRwdXRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
dXRwdXRFbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3V0cHV0RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAg
aW50ZXJmYWNlIEhUTUxPdXRwdXRFbGVtZW50IDogSFRNTEVsZW1lbgogICAgIFtDRVJlYWN0aW9u
cz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKIAogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsKLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJp
YnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBkZWZhdWx0VmFsdWU7Ci0g
ICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01T
dHJpbmcgdmFsdWU7CisgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nXSBET01TdHJpbmcgZGVmYXVsdFZhbHVlOworICAgIFtDRVJlYWN0aW9uc10gYXR0
cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVlOwogCiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2lsbFZhbGlkYXRlOwogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBWYWxpZGl0eVN0YXRlIHZhbGlkaXR5OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVDZWxsRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yMiw3ICsyMiw3IEBAIGludGVyZmFjZSBIVE1MVGFibGVDZWxsRWxlbWVudCA6IEhUTUxFbGUK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBjZWxsSW5kZXg7CiAgICAgW0NFUmVhY3Rpb25z
PU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBhbGlnbjsKICAgICBbQ0VS
ZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGF4aXM7Ci0g
ICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxB
cz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5l
ZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3Ry
aW5nIGJnQ29sb3I7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdD1jaGFyXSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGNoOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxl
Y3Q9Y2hhcm9mZl0gYXR0cmlidXRlIERPTVN0cmluZyBjaE9mZjsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
NiwxMCArMjYsMTAgQEAgaW50ZXJmYWNlIEhUTUxUYWJsZUVsZW1lbnQgOiBIVE1MRWxlbWVudAog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MQ29sbGVjdGlvbiByb3dzOwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBIVE1MQ29sbGVjdGlvbiB0Qm9kaWVzOwogICAgIFtDRVJlYWN0aW9ucz1Ob3RO
ZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWxpZ247Ci0gICAgW0NFUmVhY3Rp
b25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmlu
Z10gRE9NU3RyaW5nIGJnQ29sb3I7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVj
dF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7
CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmlu
ZyBib3JkZXI7Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRl
IFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGNlbGxQYWRkaW5nOwotICAgIFtD
RVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1w
dHlTdHJpbmddIERPTVN0cmluZyBjZWxsU3BhY2luZzsKKyAgICBbQ0VSZWFjdGlvbnM9Tm90TmVl
ZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJp
bmcgY2VsbFBhZGRpbmc7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0
cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGNlbGxTcGFjaW5nOwog
CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmlu
ZyBmcmFtZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1l
bnQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZVJvd0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBAIGludGVyZmFj
ZSBIVE1MVGFibGVSb3dFbGVtZW50IDogSFRNTEVsZW0KICAgICByZWFkb25seSBhdHRyaWJ1dGUg
bG9uZyBzZWN0aW9uUm93SW5kZXg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxDb2xsZWN0
aW9uIGNlbGxzOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0
ZSBET01TdHJpbmcgYWxpZ247Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0g
YXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7Cisg
ICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5l
ZWRlZCwgUmVmbGVjdD1jaGFyXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNoOwogICAgIFtDRVJlYWN0
aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3Q9Y2hhcm9mZl0gYXR0cmlidXRlIERPTVN0cmluZyBjaE9m
ZjsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIHZBbGlnbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBpbnRlcmZh
Y2UgSFRNTFRleHRBcmVhRWxlbWVudCA6IEhUTUxFbGVtCiAKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIHR5cGU7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRl
IERPTVN0cmluZyBkZWZhdWx0VmFsdWU7Ci0gICAgYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0
eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVlOworICAgIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyB0ZXh0TGVuZ3RoOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2ls
bFZhbGlkYXRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5j
ZWRBcnJheXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FO
R0xFSW5zdGFuY2VkQXJyYXlzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIEdlbmVy
YXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKIF0gaW50ZXJmYWNlIEFO
R0xFSW5zdGFuY2VkQXJyYXlzIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc0NvbXBvc2l0aW5nLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNDb21wb3NpdGluZy5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0NvbXBvc2l0aW5nLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKQogXSBp
bnRlcmZhY2UgQ2FudmFzQ29tcG9zaXRpbmcgewogICAgIC8vIEZJWE1FOiBBbGwgdGhlIHVucmVz
dHJpY3RlZCBmbG9hdCBhdHRyaWJ1dGVzIGJlbG93IHNob3VsZCBiZSB1bnJlc3RyaWN0ZWQgZG91
Ymxlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0RyYXdJbWFnZS5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRHJhd0lt
YWdlLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzRHJhd0ltYWdlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCB0eXBl
ZGVmIChIVE1MSW1hZ2VFbGVtZW50IG9yIEhUTUxDYW52YXNFCiApIENhbnZhc0ltYWdlU291cmNl
OwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3QsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc0RyYXdJ
bWFnZSB7CiAgICAgLy8gRklYTUU6IEFsbCB0aGUgdW5yZXN0cmljdGVkIGZsb2F0IGFyZ3VtZW50
cyBiZWxvdyBzaG91bGQgYmUgdW5yZXN0cmljdGVkIGRvdWJsZXMuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNEcmF3UGF0aC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRHJhd1BhdGguaWRsCShyZXZpc2lvbiAyNjY2Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNEcmF3UGF0aC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93LFdv
cmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc0RyYXdQYXRoIHsKICAgICAvLyBwYXRoIEFQSSAoc2Vl
IGFsc28gQ2FudmFzUGF0aCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c0ZpbGxTdHJva2VTdHlsZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc0ZpbGxTdHJva2VTdHlsZXMuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNGaWxsU3Ryb2tlU3R5bGVzLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCB0eXBlZGVmIChIVE1MSW1hZ2VFbGVtZW50IG9y
IEhUTUxDYW52YXNFCiApIENhbnZhc0ltYWdlU291cmNlOwogCiBbCi0gICAgTm9JbnRlcmZhY2VP
YmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93
LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc0ZpbGxTdHJva2VTdHlsZXMgewogICAgIC8vIGNv
bG9ycyBhbmQgc3R5bGVzIChzZWUgYWxzbyB0aGUgQ2FudmFzUGF0aERyYXdpbmdTdHlsZXMgYW5k
IENhbnZhc1RleHREcmF3aW5nU3R5bGVzIGludGVyZmFjZXMpCkBAIC00Nyw1ICs0Nyw1IEBAIHR5
cGVkZWYgKEhUTUxJbWFnZUVsZW1lbnQgb3IgSFRNTENhbnZhc0UKICAgICAvLyBGSVhNRTogQWxs
IHRoZSBmbG9hdCBwYXJhbWV0ZXJzIGJlbG93IHNob3VsZCBiZSBkb3VibGVzLgogICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gQ2FudmFzR3JhZGllbnQgY3JlYXRlTGluZWFyR3JhZGllbnQoZmxvYXQg
eDAsIGZsb2F0IHkwLCBmbG9hdCB4MSwgZmxvYXQgeTEpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gQ2FudmFzR3JhZGllbnQgY3JlYXRlUmFkaWFsR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkw
LCBmbG9hdCByMCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCByMSk7Ci0gICAgW01heVRocm93
RXhjZXB0aW9uXSBDYW52YXNQYXR0ZXJuPyBjcmVhdGVQYXR0ZXJuKENhbnZhc0ltYWdlU291cmNl
IGltYWdlLCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyByZXBldGl0aW9uKTsK
KyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENhbnZhc1BhdHRlcm4/IGNyZWF0ZVBhdHRlcm4oQ2Fu
dmFzSW1hZ2VTb3VyY2UgaW1hZ2UsIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5n
IHJlcGV0aXRpb24pOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c0ZpbHRlcnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc0ZpbHRlcnMuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNGaWx0ZXJzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKQogXSBpbnRlcmZhY2UgQ2FudmFz
RmlsdGVycyB7CiAgICAgLy8gZmlsdGVycwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpCiBdIGlu
dGVyZmFjZSBDYW52YXNJbWFnZURhdGEgewogICAgIC8vIEZJWE1FOiBBbGwgdGhlIGZsb2F0IGFy
Z3VtZW50cyBiZWxvdyBzaG91bGQgYmUgbG9uZ3MuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNJbWFnZVNtb290aGluZy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VTbW9vdGhpbmcuaWRsCShyZXZpc2lvbiAyNjY2
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNJbWFnZVNtb290aGluZy5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRl
cmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD0o
V2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc0ltYWdlU21vb3RoaW5nIHsKICAgICAv
LyBpbWFnZSBzbW9vdGhpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1BhdGguaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1BhdGguaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNQYXRoLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogICovCiAK
IFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
ICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKQogXSBpbnRlcmZhY2UgQ2FudmFzUGF0aCB7CiAg
ICAgLy8gc2hhcmVkIHBhdGggQVBJIG1ldGhvZHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1BhdGhEcmF3aW5nU3R5bGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoRHJhd2luZ1N0eWxlcy5pZGwJKHJldmlzaW9u
IDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGhEcmF3aW5n
U3R5bGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAg
ICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBF
eHBvc2VkPShXaW5kb3csV29ya2VyKQogXSBpbnRlcmZhY2UgQ2FudmFzUGF0aERyYXdpbmdTdHls
ZXMgewogICAgIC8vIEZJWE1FOiBBbGwgdGhlIHVucmVzdHJpY3RlZCBmbG9hdCBhcmd1bWVudHMg
LyBhdHRyaWJ1dGVzIGJlbG93IHNob3VsZCBiZSB1bnJlc3RyaWN0ZWQgZG91Ymxlcy4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlY3QuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlY3QuaWRsCShyZXZpc2lvbiAyNjY2
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZWN0LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVj
dCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5kb3csV29y
a2VyKQogXSBpbnRlcmZhY2UgQ2FudmFzUmVjdCB7CiAgICAgLy8gRklYTUU6IEFsbCB0aGUgdW5y
ZXN0cmljdGVkIGZsb2F0IHBhcmFtZXRlcnMgYmVsb3cgc2hvdWxkIGJlIHVucmVzdHJpY3RlZCBk
b3VibGVzLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU2hhZG93U3R5
bGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNT
aGFkb3dTdHlsZXMuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNTaGFkb3dTdHlsZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsy
NCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpCiBdIGludGVyZmFjZSBD
YW52YXNTaGFkb3dTdHlsZXMgewogICAgIC8vIEZJWE1FOiBBbGwgdGhlIHVucmVzdHJpY3RlZCBm
bG9hdCBhdHRyaWJ1dGVzIGJlbG93IHNob3VsZCBiZSB1bnJlc3RyaWN0ZWQgZG91Ymxlcy4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0YXRlLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdGF0ZS5pZGwJKHJldmlzaW9u
IDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0YXRlLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFj
ZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5k
b3csV29ya2VyKQogXSBpbnRlcmZhY2UgQ2FudmFzU3RhdGUgewogICAgIC8vIHN0YXRlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNUZXh0LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNUZXh0LmlkbAkocmV2aXNpb24gMjY2
NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVGV4dC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0g
aW50ZXJmYWNlIENhbnZhc1RleHQgewogICAgIC8vIEZJWE1FOiBBbGwgdGhlIHVucmVzdHJpY3Rl
ZCBmbG9hdCBwYXJhbWV0ZXJzIGJlbG93IHNob3VsZCBiZSB1bnJlc3RyaWN0ZWQgZG91Ymxlcy4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1RleHREcmF3aW5nU3R5bGVz
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNUZXh0
RHJhd2luZ1N0eWxlcy5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1RleHREcmF3aW5nU3R5bGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgQ2Fu
dmFzVGV4dERyYXdpbmdTdHlsZXMgewogICAgIC8vIHRleHQKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1RyYW5zZm9ybS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVHJhbnNmb3JtLmlkbAkocmV2aXNpb24gMjY2NjM5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVHJhbnNmb3JtLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVj
dCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5kb3csV29y
a2VyKQogXSBpbnRlcmZhY2UgQ2FudmFzVHJhbnNmb3JtIHsKICAgICAvLyBGSVhNRTogQWxsIHRo
ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgcGFyYW1ldGVycyBiZWxvdyBzaG91bGQgYmUgdW5yZXN0cmlj
dGVkIGRvdWJsZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNVc2Vy
SW50ZXJmYWNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNVc2VySW50ZXJmYWNlLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzVXNlckludGVyZmFjZS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIENh
bnZhc1VzZXJJbnRlcmZhY2UgewogICAgIHVuZGVmaW5lZCBkcmF3Rm9jdXNJZk5lZWRlZChFbGVt
ZW50IGVsZW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQmxlbmRN
aW5NYXguaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEJs
ZW5kTWluTWF4LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvRVhUQmxlbmRNaW5NYXguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBs
V2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgRVhUQmxlbmRNaW5NYXggewogICAgIGNv
bnN0IHVuc2lnbmVkIGxvbmcgTUlOX0VYVCA9IDB4ODAwNzsKICAgICBjb25zdCB1bnNpZ25lZCBs
b25nIE1BWF9FWFQgPSAweDgwMDg7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9F
WFRDb2xvckJ1ZmZlckZsb2F0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwK
KyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAg
ICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQKIF0gaW50ZXJm
YWNlIEVYVENvbG9yQnVmZmVyRmxvYXQgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0LmlkbAkocmV2aXNpb24gMjY2
NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxv
YXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAqLwogCiBbCi0gICAgTm9J
bnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0
aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdD
b250ZXh0CiBdIGludGVyZmFjZSBFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdCB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZyYWdEZXB0aC5pZGwJKHJldmlzaW9uIDI2NjYz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZyYWdEZXB0aC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVj
dCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwK
ICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQKIF0gaW50
ZXJmYWNlIEVYVEZyYWdEZXB0aCB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9F
WFRTaGFkZXJUZXh0dXJlTE9ELmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9FWFRTaGFkZXJUZXh0dXJlTE9ELmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3Qs
CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAg
ICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0CiBdIGludGVy
ZmFjZSBFWFRTaGFkZXJUZXh0dXJlTE9EIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmlkbAkocmV2
aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZp
bHRlckFuaXNvdHJvcGljLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogWwog
ICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdM
UmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyB7
CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBURVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCA9IDB4
ODRGRTsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIE1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZ
X0VYVCA9IDB4ODRGRjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVHNSR0Iu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVHNSR0IuaWRs
CShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRzUkdC
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogWwogICAgIENvbmRpdGlvbmFs
PVdFQkdMLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4
dCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
IF0gaW50ZXJmYWNlIEVYVHNSR0IgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgU1JHQl9FWFQg
PSAweDhDNDA7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBTUkdCX0FMUEhBX0VYVCA9IDB4OEM0
MjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0VsZW1lbnRJbmRleFVpbnQu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0VsZW1lbnRJ
bmRleFVpbnQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQs
NyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVy
ZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hh
YmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCiBdIGludGVyZmFjZSBPRVNFbGVtZW50SW5k
ZXhVaW50IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVy
aXZhdGl2ZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1N0YW5kYXJkRGVyaXZhdGl2ZXMuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNyArMjcsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIERvTm90Q2hl
Y2tDb25zdGFudHMsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdD
b250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0LAogXSBpbnRlcmZhY2UgT0VTU3RhbmRhcmREZXJpdmF0aXZlcyB7CiAgICAgY29uc3QgdW5z
aWduZWQgbG9uZyBGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUyA9IDB4OEI4QjsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9h
dC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVGbG9hdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwog
CiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Qs
CiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LAogXSBpbnRlcmZhY2UgT0VTVGV4dHVyZUZsb2F0IHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVhci5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0TGlu
ZWFyLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T0VTVGV4dHVyZUZsb2F0TGluZWFyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxl
PUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCiBdIGludGVyZmFjZSBPRVNUZXh0dXJlRmxvYXRM
aW5lYXIgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZG
bG9hdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4
dHVyZUhhbGZGbG9hdC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3
ICsyNSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIEdlbmVyYXRlSXNS
ZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKIF0gaW50ZXJmYWNlIE9FU1RleHR1
cmVIYWxmRmxvYXQgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVy
ZUhhbGZGbG9hdExpbmVhci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJm
YWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIENvbmRpdGlvbmFs
PVdFQkdMLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4
dCwKIF0gaW50ZXJmYWNlIE9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIgewpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmlkbAko
cmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4
QXJyYXlPYmplY3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29u
ZGl0aW9uYWw9V0VCR0wsIAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgR2VuZXJhdGVJ
c1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2Jq
ZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgT0VTVmVydGV4
QXJyYXlPYmplY3QgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgVkVSVEVYX0FSUkFZX0JJTkRJ
TkdfT0VTID0gMHg4NUI1OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbG9yQnVmZmVyRmxvYXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVj
dCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwK
ICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQKIF0gaW50
ZXJmYWNlIFdlYkdMQ29sb3JCdWZmZXJGbG9hdCB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaWRsCShy
ZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlQVNUQy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAg
ICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIEdlbmVy
YXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0ludGVyZmFj
ZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVBU1RDIHsKICAgICAvKiBDb21wcmVzc2VkIFRleHR1cmUgRm9ybWF0
ICovCiAgICAgY29uc3QgR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFIgPSAweDkz
QjA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlQVRDLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlQVRDLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBEb05v
dENoZWNrQ29uc3RhbnRzLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVy
aW5nQ29udGV4dCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKIF0gaW50ZXJmYWNlIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMgewogICAgIGNv
bnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9SR0JfQVRDX1dFQkdMID0gMHg4QzkyOwogICAg
IGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9SR0JBX0FUQ19FWFBMSUNJVF9BTFBIQV9X
RUJHTCA9IDB4OEM5MzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5pZGwJKHJldmlzaW9uIDI2NjYzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMx
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogICAgIENvbmRpdGlvbmFsPVdF
QkdMLAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1J
bXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUVUQzEgewogICAgIC8qIENvbXByZXNzZWQgVGV4dHVyZSBGb3JtYXRzICovCiAgICAgY29uc3Qg
dW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1JHQl9FVEMxX1dFQkdMID0gMHg4RDY0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUVUQy5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgRG9Ob3RDaGVja0NvbnN0
YW50cywKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQs
Ci0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBd
IGludGVyZmFjZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDIHsKICAgICAvKiBDb21wcmVzc2Vk
IFRleHR1cmUgRm9ybWF0ICovCiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1Ix
MV9FQUMgICAgICAgICAgICAgICAgICAgICAgICA9IDB4OTI3MDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBW
UlRDLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyAr
MjcsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIERvTm90Q2hlY2tDb25zdGFudHMs
CiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAg
IE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRl
cmZhY2UgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDIHsKICAgICBjb25zdCB1bnNpZ25lZCBs
b25nIENPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcgPSAweDhDMDA7CiAgICAgY29uc3Qg
dW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HID0gMHg4QzAxOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgRG9Ob3RD
aGVja0NvbnN0YW50cywKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmlu
Z0NvbnRleHQsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QsCiBdIGludGVyZmFjZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyB7CiAgICAgY29u
c3QgdW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUID0gMHg4M0YwOwog
ICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgPSAw
eDgzRjE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQ3NSR0IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5pZGwJKHJldmlzaW9uIDI2NjYzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
c1JHQi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICBDb25kaXRpb25h
bD1XRUJHTCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIEdlbmVyYXRlSXNSZWFjaGFi
bGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAg
ICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDc1JHQiB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1NSR0Jf
UzNUQ19EWFQxX0VYVCA9IDB4OEM0QzsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIENPTVBSRVNT
RURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUID0gMHg4QzREOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5pZGwJKHJl
dmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdS
ZW5kZXJlckluZm8uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29u
ZGl0aW9uYWw9V0VCR0wsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBHZW5lcmF0ZUlz
UmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCi0gICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBXZWJHTERlYnVn
UmVuZGVyZXJJbmZvIHsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIFVOTUFTS0VEX1ZFTkRPUl9X
RUJHTCA9IDB4OTI0NTsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIFVOTUFTS0VEX1JFTkRFUkVS
X1dFQkdMID0gMHg5MjQ2OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
ZWJ1Z1NoYWRlcnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRGVidWdTaGFkZXJzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1Jl
YWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0
LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgV2ViR0xEZWJ1Z1No
YWRlcnMgewogICAgIERPTVN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlKFdlYkdMU2hh
ZGVyIHNoYWRlcik7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
ZXB0aFRleHR1cmUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRGVwdGhUZXh0dXJlLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw3ICsyNyw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgRG9Ob3RDaGVja0NvbnN0
YW50cywKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQs
Ci0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBd
IGludGVyZmFjZSBXZWJHTERlcHRoVGV4dHVyZSB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBV
TlNJR05FRF9JTlRfMjRfOF9XRUJHTCA9IDB4ODRGQTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmlkbAkocmV2aXNpb24gMjY2NjM5
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBHTGVu
dW07CiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9i
amVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUlt
cGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaWRsCShy
ZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTExvc2VD
b250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAg
ICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBD
b25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRl
cmluZ0NvbnRleHQsCiBdIGludGVyZmFjZSBXZWJHTExvc2VDb250ZXh0IHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyAr
NTMsNyBAQCB0eXBlZGVmIChIVE1MQ2FudmFzRWxlbWVudCkgV2ViR0xDYW52YXM7CiAgICAgQ3Vz
dG9tVG9KU09iamVjdCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIEpTQ3VzdG9tTWFy
a0Z1bmN0aW9uLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNl
T2JqZWN0LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAogXSBpbnRlcmZhY2UgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsCShyZXZpc2lv
biAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsK
LSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAg
ICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGwKIF0gaW50
ZXJmYWNlIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMgewpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaWRsCShyZXZpc2lvbiAyNjY2
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29uZGl0aW9uYWw9VklERU8s
CiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0
LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAog
ICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAogXSBpbnRlcmZhY2UgVGV4dFRyYWNrQ3Vl
R2VuZXJpYyA6IFZUVEN1ZSB7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
VFRSZWdpb25MaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZUVFJlZ2lvbkxpc3QuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVFJlZ2lvbkxpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3
IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9VklERU8sCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZU
YWJsZSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVj
dCwKIF0gaW50ZXJmYWNlIFZUVFJlZ2lvbkxpc3QgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBnZXR0ZXIgVlRUUmVnaW9uPyBpdGVtKHVuc2lnbmVk
IGxvbmcgaW5kZXgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5l
QVBJSG9zdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJSG9zdC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICsz
MSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKIF0gaW50ZXJmYWNl
IENvbW1hbmRMaW5lQVBJSG9zdCB7CiAgICAgdW5kZWZpbmVkIGNsZWFyQ29uc29sZU1lc3NhZ2Vz
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3Np
YmlsaXR5T2JqZWN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmlkbAkocmV2aXNpb24gMjY2NjM5KQor
KysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9i
amVjdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIFsKICAgICBJbXBsZW1l
bnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIE5vSW50
ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2Ug
SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0IHsKICAgICBbQ2FsbFdpdGg9RG9jdW1l
bnQsIE1heVRocm93RXhjZXB0aW9uXSBzZXF1ZW5jZTxOb2RlPiBnZXRFbGVtZW50c0J5Q29tcHV0
ZWRSb2xlKERPTVN0cmluZyByb2xlLCBvcHRpb25hbCBOb2RlPyBjb250YWluZXIpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRET01PYmplY3QuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdERPTU9i
amVjdC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBdWRpdERPTU9iamVjdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcg
QEAKIFsKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEpTR2VuZXJhdGVUb0pT
T2JqZWN0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0LAogXSBpbnRlcmZhY2UgSW5zcGVjdG9yQXVkaXRET01PYmplY3QgewogICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gYm9vbGVhbiBoYXNFdmVudExpc3RlbmVycyhOb2RlIG5vZGUsIG9wdGlvbmFs
IERPTVN0cmluZyB0eXBlKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQXVkaXRSZXNvdXJjZXNPYmplY3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdFJlc291cmNlc09iamVjdC5pZGwJKHJldmlzaW9u
IDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdFJlc291
cmNlc09iamVjdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIFsKICAgICBJ
bXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAg
IE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRl
cmZhY2UgSW5zcGVjdG9yQXVkaXRSZXNvdXJjZXNPYmplY3QgewogICAgIFtDYWxsV2l0aD1Eb2N1
bWVudCwgTWF5VGhyb3dFeGNlcHRpb25dIHNlcXVlbmNlPFJlc291cmNlPiBnZXRSZXNvdXJjZXMo
KTsKICAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIE1heVRocm93RXhjZXB0aW9uXSBSZXNvdXJjZUNv
bnRlbnQgZ2V0UmVzb3VyY2VDb250ZW50KERPTVN0cmluZyBpZCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbAkocmV2aXNp
b24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogWwogICAgIEltcGxl
bWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5
Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBJbnNwZWN0b3JGcm9udGVuZEhvc3Qgewog
ICAgIHVuZGVmaW5lZCBsb2FkZWQoKTsKICAgICB1bmRlZmluZWQgY2xvc2VXaW5kb3coKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTEgKzUx
LDExIEBAIHR5cGVkZWYgVVNWU3RyaW5nIENTU09NU3RyaW5nOwogICAgIEV4cG9zZWQ9V2luZG93
LAogXSBpbnRlcmZhY2UgRE9NV2luZG93IDogRXZlbnRUYXJnZXQgewogICAgIC8vIFRoZSBjdXJy
ZW50IGJyb3dzaW5nIGNvbnRleHQuCi0gICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgVW5mb3JnZWFi
bGUsIEN1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHdpbmRvdzsK
KyAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBMZWdhY3lVbmZvcmdlYWJsZSwgQ3VzdG9tR2V0dGVy
XSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgd2luZG93OwogICAgIFtSZXBsYWNlYWJs
ZSwgRG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXIsIEN1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0
cmlidXRlIFdpbmRvd1Byb3h5IHNlbGY7Ci0gICAgW1VuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRy
aWJ1dGUgRG9jdW1lbnQgZG9jdW1lbnQ7CisgICAgW0xlZ2FjeVVuZm9yZ2VhYmxlXSByZWFkb25s
eSBhdHRyaWJ1dGUgRG9jdW1lbnQgZG9jdW1lbnQ7CiAgICAgYXR0cmlidXRlIERPTVN0cmluZyBu
YW1lOwotICAgIFtEb05vdENoZWNrU2VjdXJpdHksIFB1dEZvcndhcmRzPWhyZWYsIFVuZm9yZ2Vh
YmxlXSByZWFkb25seSBhdHRyaWJ1dGUgTG9jYXRpb24gbG9jYXRpb247CisgICAgW0RvTm90Q2hl
Y2tTZWN1cml0eSwgUHV0Rm9yd2FyZHM9aHJlZiwgTGVnYWN5VW5mb3JnZWFibGVdIHJlYWRvbmx5
IGF0dHJpYnV0ZSBMb2NhdGlvbiBsb2NhdGlvbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSGlz
dG9yeSBoaXN0b3J5OwogICAgIFtFbmFibGVkQnlTZXR0aW5nPUN1c3RvbUVsZW1lbnRzLCBJbXBs
ZW1lbnRlZEFzPWVuc3VyZUN1c3RvbUVsZW1lbnRSZWdpc3RyeV0gcmVhZG9ubHkgYXR0cmlidXRl
IEN1c3RvbUVsZW1lbnRSZWdpc3RyeSBjdXN0b21FbGVtZW50czsKICAgICBbUmVwbGFjZWFibGVd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBCYXJQcm9wIGxvY2F0aW9uYmFyOwpAQCAtNzQsMTEgKzc0LDEx
IEBAIHR5cGVkZWYgVVNWU3RyaW5nIENTU09NU3RyaW5nOwogICAgIC8vIE90aGVyIGJyb3dzaW5n
IGNvbnRleHRzLgogICAgIFtSZXBsYWNlYWJsZSwgRG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXIs
IEN1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IGZyYW1lczsKICAg
ICBbUmVwbGFjZWFibGUsIERvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyXSByZWFkb25seSBhdHRy
aWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7Ci0gICAgW0RvTm90Q2hlY2tTZWN1cml0eU9uR2V0
dGVyLCBVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5PyB0b3A7Cisg
ICAgW0RvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyLCBMZWdhY3lVbmZvcmdlYWJsZV0gcmVhZG9u
bHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5PyB0b3A7CiAgICAgW0RvTm90Q2hlY2tTZWN1cml0eU9u
R2V0dGVyLCBDdXN0b21TZXR0ZXJdIGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gb3BlbmVyOwogICAg
IFtSZXBsYWNlYWJsZSwgRG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXJdIHJlYWRvbmx5IGF0dHJp
YnV0ZSBXaW5kb3dQcm94eT8gcGFyZW50OwogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVh
ZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IGZyYW1lRWxlbWVudDsKLSAgICBbQ2FsbFdpdGg9QWN0
aXZlV2luZG93JkZpcnN0V2luZG93LCBNYXlUaHJvd0V4Y2VwdGlvbl0gV2luZG93UHJveHk/IG9w
ZW4ob3B0aW9uYWwgVVNWU3RyaW5nIHVybCA9ICIiLCBvcHRpb25hbCBET01TdHJpbmcgdGFyZ2V0
ID0gIl9ibGFuayIsIG9wdGlvbmFsIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5n
IGZlYXR1cmVzID0gIiIpOworICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3cs
IE1heVRocm93RXhjZXB0aW9uXSBXaW5kb3dQcm94eT8gb3BlbihvcHRpb25hbCBVU1ZTdHJpbmcg
dXJsID0gIiIsIG9wdGlvbmFsIERPTVN0cmluZyB0YXJnZXQgPSAiX2JsYW5rIiwgb3B0aW9uYWwg
W0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgZmVhdHVyZXMgPSAiIik7CiAKICAg
ICAvLyBUaGUgdXNlciBhZ2VudC4KICAgICByZWFkb25seSBhdHRyaWJ1dGUgTmF2aWdhdG9yIG5h
dmlnYXRvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsQ3J5cHRvLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbENyeXB0by5pZGwJKHJldmlzaW9u
IDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsQ3J5cHRvLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0
LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgR2xvYmFsQ3J5cHRv
IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ3J5cHRvIGNyeXB0bzsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0dsb2JhbFBlcmZvcm1hbmNlLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0dsb2JhbFBlcmZvcm1hbmNlLmlkbAkocmV2aXNpb24gMjY2NjM5KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxQZXJmb3JtYW5jZS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDcgQEAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9oci10aW1lLwog
CiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Qs
CiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIEdsb2JhbFBlcmZvcm1h
bmNlIHsKICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBQZXJmb3JtYW5jZSBw
ZXJmb3JtYW5jZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRsCShyZXZpc2lvbiAyNjY2
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNyArNDIsNyBAQAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9UmVhY2hhYmxlRnJvbURP
TVdpbmRvdywKICAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCwKICAgICBJbXBs
ZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIFVuZm9yZ2VhYmxlCisgICAgTGVnYWN5VW5mb3Jn
ZWFibGUKIF0gaW50ZXJmYWNlIExvY2F0aW9uIHsKICAgICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZl
V2luZG93JkZpcnN0V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHlPblNldHRlcl0gc3RyaW5naWZp
ZXIgYXR0cmlidXRlIFVTVlN0cmluZyBocmVmOwogCkBAIC02Miw1ICs2Miw1IEBACiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBvcmlnaW47CiAKICAgICAvLyBGSVhNRTogQWRkIHN1
cHBvcnQgZm9yIFNhbWVPYmplY3QuCi0gICAgW1VuZm9yZ2VhYmxlLCBDYWNoZWRBdHRyaWJ1dGVd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IGFuY2VzdG9yT3JpZ2luczsKKyAgICBb
TGVnYWN5VW5mb3JnZWFibGUsIENhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZ0xpc3QgYW5jZXN0b3JPcmlnaW5zOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvTmF2aWdhdG9ySUQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2
aWdhdG9ySUQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL05h
dmlnYXRvcklELmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICovCiAKIFsK
LSAgICBOb0ludGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0CiBdIGlu
dGVyZmFjZSBOYXZpZ2F0b3JJRCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBh
cHBDb2RlTmFtZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFwcE5hbWU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckxhbmd1YWdlLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckxhbmd1YWdlLmlkbAkocmV2aXNpb24g
MjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JMYW5ndWFnZS5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VP
YmplY3QKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdAogXSBpbnRlcmZhY2UgTmF2aWdhdG9y
TGFuZ3VhZ2UgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFuZ3VhZ2U7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIEZyb3plbkFycmF5PERPTVN0cmluZz4gbGFuZ3VhZ2VzOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JPbkxpbmUuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yT25MaW5lLmlkbAkocmV2aXNpb24gMjY2
NjM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JPbkxpbmUuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0
CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJmYWNlIE5hdmlnYXRvck9uTGlu
ZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gb25MaW5lOwogfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yUGx1Z2lucy5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JQbHVnaW5zLmlkbAkocmV2aXNpb24gMjY2NjM5KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JQbHVnaW5zLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdAorICAg
IExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0CiBdIGludGVyZmFjZSBOYXZpZ2F0b3JQbHVnaW5zIHsK
ICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVBsdWdpbkFycmF5IHBsdWdp
bnM7CiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01NaW1lVHlwZUFycmF5
IG1pbWVUeXBlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yU2VydmljZVdv
cmtlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JTZXJ2
aWNlV29ya2VyLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9O
YXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1TRVJWSUNFX1dPUktFUiwKICAgICBFbmFibGVkQXRS
dW50aW1lPVNlcnZpY2VXb3JrZXIKIF0gaW50ZXJmYWNlIE5hdmlnYXRvclNlcnZpY2VXb3JrZXIg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JTaGFyZS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JTaGFyZS5pZGwJKHJldmlzaW9uIDI2
NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yU2hhcmUuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAor
ICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViU2hh
cmUKIF0gaW50ZXJmYWNlIE5hdmlnYXRvclNoYXJlIHsKICAgICBbQ2FsbFdpdGg9RG9jdW1lbnQs
IFNlY3VyZUNvbnRleHRdIGJvb2xlYW4gY2FuU2hhcmUob3B0aW9uYWwgU2hhcmVEYXRhIHNoYXJl
RGF0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuaWRsCShyZXZp
c2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDIwICs0MCwyMCBAQAogICAgIEpTQ3VzdG9tVG9OYXRpdmVP
YmplY3QsCiAgICAgSlNMZWdhY3lQYXJlbnQ9SlNSZW1vdGVET01XaW5kb3dCYXNlLAogICAgIExl
Z2FjeVVuZW51bWVyYWJsZU5hbWVkUHJvcGVydGllcywKLSAgICBOb0ludGVyZmFjZU9iamVjdCwK
KyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBHbG9iYWw9V2luZG93LAogICAgIEV4
cG9zZWQ9V2luZG93LAogXSBpbnRlcmZhY2UgUmVtb3RlRE9NV2luZG93IHsKLSAgICBbVW5mb3Jn
ZWFibGUsIEltcGxlbWVudGVkQXM9c2VsZl0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5
IHdpbmRvdzsKKyAgICBbTGVnYWN5VW5mb3JnZWFibGUsIEltcGxlbWVudGVkQXM9c2VsZl0gcmVh
ZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHdpbmRvdzsKICAgICBbUmVwbGFjZWFibGVdIHJl
YWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSBzZWxmOwotICAgIFtQdXRGb3J3YXJkcz1ocmVm
LCBVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIExvY2F0aW9uPyBsb2NhdGlvbjsgLy8g
RklYTUU6IFNob3VsZCBub3QgYmUgbnVsbGFibGUuCisgICAgW1B1dEZvcndhcmRzPWhyZWYsIExl
Z2FjeVVuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgTG9jYXRpb24/IGxvY2F0aW9uOyAv
LyBGSVhNRTogU2hvdWxkIG5vdCBiZSBudWxsYWJsZS4KICAgICBbQ2FsbFdpdGg9SW5jdW1iZW50
RG9jdW1lbnQsIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBjbG9zZSgpOwogICAg
IFtGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBjbG9z
ZWQ7CiAgICAgW0NhbGxXaXRoPUluY3VtYmVudFdpbmRvdywgRm9yd2FyZERlY2xhcmVJbkhlYWRl
cl0gdW5kZWZpbmVkIGZvY3VzKCk7CiAgICAgW0ZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVm
aW5lZCBibHVyKCk7CiAgICAgW1JlcGxhY2VhYmxlLCBJbXBsZW1lbnRlZEFzPXNlbGZdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSBmcmFtZXM7CiAgICAgW1JlcGxhY2VhYmxlXSByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7Ci0gICAgW1VuZm9yZ2VhYmxlXSBy
ZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHk/IHRvcDsKKyAgICBbTGVnYWN5VW5mb3JnZWFi
bGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gdG9wOwogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBXaW5kb3dQcm94eT8gb3BlbmVyOwogICAgIFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkg
YXR0cmlidXRlIFdpbmRvd1Byb3h5PyBwYXJlbnQ7CiAgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVj
dCZJbmN1bWJlbnRXaW5kb3csIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBwb3N0
TWVzc2FnZShhbnkgbWVzc2FnZSwgVVNWU3RyaW5nIHRhcmdldE9yaWdpbiwgb3B0aW9uYWwgc2Vx
dWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
V2luZG93RXZlbnRIYW5kbGVycy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9XaW5kb3dFdmVudEhhbmRsZXJzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9XaW5kb3dFdmVudEhhbmRsZXJzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsNyBAQAogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93
ZWJhcHBhcGlzLmh0bWwjd2luZG93ZXZlbnRoYW5kbGVycwogWwotICAgIE5vSW50ZXJmYWNlT2Jq
ZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgV2luZG93RXZl
bnRIYW5kbGVycyB7CiAgICAgLy8gQ29tbWVudGVkIG91dCBldmVudCBoYW5kbGVycyBhcmUgZGVm
aW5lZCBieSB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiBidXQKICAgICAvLyBhcmUgbm90IHlldCBp
bXBsZW1lbnRlZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93T3JXb3JrZXJHbG9i
YWxTY29wZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dPcldv
cmtlckdsb2JhbFNjb3BlLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9XaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NyArNDMsNyBAQCB0eXBlZGVmIChIVE1MSW1hZ2VFbGVtZW50CiB0eXBlZGVmIChDYW52YXNJbWFn
ZVNvdXJjZSBvciBCbG9iIG9yIEltYWdlRGF0YSkgSW1hZ2VCaXRtYXBTb3VyY2U7CiAKIFsKLSAg
ICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50
ZXJmYWNlIFdpbmRvd09yV29ya2VyR2xvYmFsU2NvcGUgewogICAgIFtSZXBsYWNlYWJsZV0gcmVh
ZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBvcmlnaW47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyAr
MjUsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcyB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHg7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcg
KzI1LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBTVkdGaXRUb1ZpZXdCb3ggewogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFJlY3Qgdmlld0JveDsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHByZXNlcnZlQXNwZWN0UmF0aW87
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcg
QEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3QsCiAgICAgU3VwcHJlc3NUb0pTT2JqZWN0LAogXSBpbnRlcmZhY2UgU1ZHVGVzdHMg
ewogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgU1ZHU3RyaW5nTGlzdCByZXF1
aXJlZEZlYXR1cmVzOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5pZGwJ
KHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2Uu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50
ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIFN1cHByZXNz
VG9KU09iamVjdCwKIF0gaW50ZXJmYWNlIFNWR1VSSVJlZmVyZW5jZSB7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGhyZWY7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHWm9vbUFuZFBhbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1pvb21BbmRQYW4uaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHWm9vbUFuZFBhbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICAqLwog
CiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Qs
CiBdIGludGVyZmFjZSBTVkdab29tQW5kUGFuIHsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBT
VkdfWk9PTUFORFBBTl9VTktOT1dOID0gMDsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdf
Wk9PTUFORFBBTl9ESVNBQkxFID0gMTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NP
YnNlcnZhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09i
c2VydmF0aW9uLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9HQ09ic2VydmF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogICov
CiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVj
dCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEV4cG9ydE1hY3JvPVdFQkNP
UkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRlcmZhY2UgR0NPYnNlcnZhdGlvbiB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwJKHJldmlzaW9u
IDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgZW51bSBGcmFtZUZsYXR0ZW5pbmdWYWx1
ZSB7ICJEaXNhYmxlZCIsIAogZW51bSBGb250TG9hZFRpbWluZ092ZXJyaWRlIHsgIkJsb2NrIiwg
IlN3YXAiLCAiRmFpbHVyZSIgfTsKIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAogICAgIEV4
cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRlcmZhY2UgSW50ZXJu
YWxTZXR0aW5ncyA6IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQgewpJbmRleDogU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNDYsNyArMjQ2LDcg
QEAgZW51bSBDb250ZW50U2l6ZUNhdGVnb3J5IHsKIAogWwogICAgIEV4cG9ydE1hY3JvPVdFQkNP
UkVfVEVTVFNVUFBPUlRfRVhQT1JULAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgSW50ZXJuYWxzIHsKICAgICBET01TdHJp
bmcgYWRkcmVzcyhOb2RlIG5vZGUpOwogICAgIGJvb2xlYW4gbm9kZU5lZWRzU3R5bGVSZWNhbGMo
Tm9kZSBub2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzTWFwTGlr
ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHNNYXBM
aWtlLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHNNYXBMaWtlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAK
IFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
ICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCwKICAgICBTa2lwVlRh
YmxlVmFsaWRhdGlvbiwKIF0gaW50ZXJmYWNlIEludGVybmFsc01hcExpa2UKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzU2V0TGlrZS5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHNTZXRMaWtlLmlkbAkocmV2aXNpb24gMjY2NjM5
KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHNTZXRMaWtlLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVj
dCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JF
X1RFU1RTVVBQT1JUX0VYUE9SVCwKICAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbiwKIF0gaW50ZXJm
YWNlIEludGVybmFsc1NldExpa2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTWFsbG9j
U3RhdGlzdGljcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9NYWxs
b2NTdGF0aXN0aWNzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvdGVz
dGluZy9NYWxsb2NTdGF0aXN0aWNzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEV4cG9ydE1hY3Jv
PVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRlcmZhY2UgTWFsbG9jU3RhdGlzdGlj
cyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01lbW9yeUluZm8uaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTWVtb3J5SW5mby5pZGwJKHJldmlzaW9uIDI2
NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTWVtb3J5SW5mby5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3Qs
CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZU
YWJsZSwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCwKIF0gaW50
ZXJmYWNlIE1lbW9yeUluZm8gewpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NETUZhY3RvcnkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIFsK
ICAgICBDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEsCi0gICAgTm9JbnRlcmZhY2VPYmplY3Qs
CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9U
RVNUU1VQUE9SVF9FWFBPUlQsCiBdIGludGVyZmFjZSBNb2NrQ0RNRmFjdG9yeSB7CiAgICAgYXR0
cmlidXRlIHNlcXVlbmNlPERPTVN0cmluZz4gc3VwcG9ydGVkRGF0YVR5cGVzOwpJbmRleDogU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mu
aWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIGVu
dW0gRGVjaXNpb24gewogCiBbCiAgICAgQ29uZGl0aW9uYWw9Q09OVEVOVF9GSUxURVJJTkcsCi0g
ICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAg
SW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQogXSBpbnRlcmZhY2UgTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncyB7CiAgICAgYXR0cmlidXRlIGJvb2xlYW4gZW5hYmxlZDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAg
ICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
CiBdIGludGVyZmFjZSBNb2NrUGFnZU92ZXJsYXkgewogICAgIHVuZGVmaW5lZCBzZXRGcmFtZShk
b3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5pZGwJ
KHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRD
b29yZGluYXRvci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAg
IENvbmRpdGlvbmFsPUFQUExFX1BBWSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIE1vY2tQYXltZW50Q29vcmRpbmF0b3Ig
ewogICAgIHVuZGVmaW5lZCBzZXRDYW5NYWtlUGF5bWVudHMoYm9vbGVhbiBjYW5NYWtlUGF5bWVu
dHMpOwogICAgIHVuZGVmaW5lZCBzZXRDYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChib29s
ZWFuIGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMjY2
NjM5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICAgIENvbmRpdGlvbmFsPVNFUlZJ
Q0VfV09SS0VSLAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAog
ICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisg
ICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBTZXJ2aWNlV29ya2VySW50
ZXJuYWxzIHsKICAgICB1bmRlZmluZWQgc2V0T25saW5lKGJvb2xlYW4gaXNPbmxpbmUpOwogICAg
IFByb21pc2U8UmVzcG9uc2U+IHdhaXRGb3JGZXRjaEV2ZW50VG9GaW5pc2goRmV0Y2hFdmVudCBl
dmVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaWRs
CShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1R5cGVDb252ZXJz
aW9ucy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAg
Tm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgSW1w
bGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX1RFU1RTVVBQ
T1JUX0VYUE9SVCwKIF0gaW50ZXJmYWNlIFR5cGVDb252ZXJzaW9ucyB7CkBAIC02NCw3ICs2NCw3
IEBACiAgICAgYXR0cmlidXRlIERPTVN0cmluZyB0ZXN0U3RyaW5nOwogICAgIGF0dHJpYnV0ZSBC
eXRlU3RyaW5nIHRlc3RCeXRlU3RyaW5nOwogICAgIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgdGVzdFVT
VlN0cmluZzsKLSAgICBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJp
bmcgdGVzdFRyZWF0TnVsbEFzRW1wdHlTdHJpbmc7CisgICAgYXR0cmlidXRlIFtMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHRlc3RUcmVhdE51bGxBc0VtcHR5U3RyaW5nOwogCiAg
ICAgdW5kZWZpbmVkIHNldFRlc3RMb25nUmVjb3JkKHJlY29yZDxET01TdHJpbmcsIGxvbmc+IHJl
Y29yZCk7CiAgICAgcmVjb3JkPERPTVN0cmluZywgbG9uZz4gdGVzdExvbmdSZWNvcmQoKTsKQEAg
LTgxLDcgKzgxLDcgQEAKIAogICAgIGF0dHJpYnV0ZSAoRE9NU3RyaW5nIG9yIFtDbGFtcF0gbG9u
ZyBvciBzZXF1ZW5jZTxbQ2xhbXBdIGxvbmc+KSB0ZXN0Q2xhbXBVbmlvbjsKICAgICBhdHRyaWJ1
dGUgKERPTVN0cmluZyBvciBbRW5mb3JjZVJhbmdlXSBsb25nIG9yIHNlcXVlbmNlPFtFbmZvcmNl
UmFuZ2VdIGxvbmc+KSB0ZXN0RW5mb3JjZVJhbmdlVW5pb247Ci0gICAgYXR0cmlidXRlIChbVHJl
YXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBvciBsb25nIG9yIHNlcXVlbmNlPFtUcmVh
dE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nPikgdGVzdFRyZWF0TnVsbEFzRW1wdHlTdHJp
bmdVbmlvbjsKKyAgICBhdHRyaWJ1dGUgKFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3Ry
aW5nIG9yIGxvbmcgb3Igc2VxdWVuY2U8W0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJp
bmc+KSB0ZXN0VHJlYXROdWxsQXNFbXB0eVN0cmluZ1VuaW9uOwogfTsKIAogWwpAQCAtOTYsNyAr
OTYsNyBAQAogXSBkaWN0aW9uYXJ5IFR5cGVDb252ZXJzaW9uc0RpY3Rpb25hcnkgewogICAgIGxv
bmcgbG9uZ1ZhbHVlID0gMDsKICAgICBET01TdHJpbmcgc3RyaW5nVmFsdWUgPSAiIjsKLSAgICBb
VHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyB0cmVhdE51bGxBc0VtcHR5U3RyaW5n
VmFsdWUgPSAiIjsKKyAgICBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyB0cmVh
dE51bGxBc0VtcHR5U3RyaW5nVmFsdWUgPSAiIjsKICAgICBzZXF1ZW5jZTxET01TdHJpbmc+IHNl
cXVlbmNlVmFsdWUgPSBbXTsKICAgICAoTm9kZSBvciBzZXF1ZW5jZTxET01TdHJpbmc+IG9yIFR5
cGVDb252ZXJzaW9uc090aGVyRGljdGlvbmFyeSkgdW5pb25WYWx1ZSA9IG51bGw7CiAgICAgW0Ns
YW1wXSBsb25nIGNsYW1wTG9uZ1ZhbHVlID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvV2ViRmFrZVhSRGV2aWNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL1dlYkZha2VYUkRldmljZS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQlhSLAogICAgIEludGVyZmFjZU5hbWU9RmFrZVhS
RGV2aWNlLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgTm9JbnRlcmZhY2VP
YmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBXZWJGYWtl
WFJEZXZpY2UgewogICAvLyBTZXRzIHRoZSB2YWx1ZXMgdG8gYmUgdXNlZCBmb3Igc3Vic2VxdWVu
dAogICAvLyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKSBjYWxsYmFja3MuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaWRsCShy
ZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0
Q29udHJvbGxlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICAgICBDb25k
aXRpb25hbD1XRUJYUiwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEludGVy
ZmFjZU5hbWU9RmFrZVhSSW5wdXRDb250cm9sbGVyLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0Cisg
ICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJmYWNlIFdlYkZha2VYUklucHV0Q29u
dHJvbGxlciB7CiAgICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhlIGhhbmRlZG5lc3Mgb2YgdGhlIGRl
dmljZSBoYXMgY2hhbmdlZC4KICAgICB1bmRlZmluZWQgc2V0SGFuZGVkbmVzcyhYUkhhbmRlZG5l
c3MgaGFuZGVkbmVzcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJYUlRlc3QuaWRsCShy
ZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJYUiwK
ICAgICBFeHBvc2VkPVdpbmRvdywKICAgICBJbnRlcmZhY2VOYW1lPVhSVGVzdCwKLSAgICBOb0lu
dGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0CiBdIGludGVyZmFjZSBX
ZWJYUlRlc3QgewogICAgIC8vIFNpbXVsYXRlcyBjb25uZWN0aW5nIGEgZGV2aWNlIHRvIHRoZSBz
eXN0ZW0uCiAgICAgLy8gVXNlZCB0byBpbnN0YW50aWF0ZSBhIGZha2UgZGV2aWNlIGZvciB1c2Ug
aW4gdGVzdHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlk
bAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdv
cmtlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICAqLwogCiBbCi0gICAg
Tm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVy
ZmFjZSBBYnN0cmFjdFdvcmtlciB7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmVycm9y
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5TUmVzb2x2ZXIuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5TUmVzb2x2ZXIuaWRsCShyZXZpc2lv
biAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOU1Jlc29sdmVyLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBTa2lwVlRhYmxlVmFsaWRh
dGlvbiwKIF0gaW50ZXJmYWNlIFhQYXRoTlNSZXNvbHZlciB7CiAgICAgRE9NU3RyaW5nPyBsb29r
dXBOYW1lc3BhY2VVUkkoRE9NU3RyaW5nPyBwcmVmaXgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408034</attachid>
            <date>2020-09-04 15:31:56 -0700</date>
            <delta_ts>2020-09-04 17:21:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216194-20200904153155.patch</filename>
            <type>text/plain</type>
            <size>448520</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2MiBAQAorMjAyMC0wOS0wNCAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYklETF0gUmVhbGlnbiBvdXIg
SURMIGV4dGVuZGVkIGF0dHJpYnV0ZSBuYW1lcyB3aXRoIHRob3NlIHNwZWNpZmllZCBpbiBXZWJJ
REwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjE5
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE92ZXIg
dGltZSwgdGhlIFdlYklETCBhbmQgSFRNTCBzcGVjaWZpY2F0aW9ucyBoYXZlIGFkZGVkIC8gcmVu
YW1lZCBleHRlbmRlZCBhdHRyaWJ1dGVzIGFuZCB3ZSBoYXZlCisgICAgICAgIG5vdCBzdGF5ZWQg
dXAgdG8gZGF0ZS4gVGhpcyB1cGRhdGVzIHRoZSBuYW1lcyBldmVyeXdoZXJlIGFuZCBVUkxzIGlu
IElETEF0dHJpYnV0ZXMuanNvbi4KKyAgICAKKyAgICAgICAgICAgICBbQWxsb3dTaGFyZWRdIC0+
IG5ldywgbWFya2VkIGFzIHVuc3VwcG9ydGVkCisgICAgICAgICAgICAgW0hUTUxDb25zdHJ1Y3Rv
cl0gLSA+IG5ldywgbWFya2VkIGFzIHVuc3VwcG9ydGVkCisgICAgICAgICAgICAgW0xlZ2FjeUxl
bmllbnRTZXR0ZXJdIC0+IHJlbmFtZWQgZnJvbSBbTGVuaWVudFNldHRlcl0sIHN0aWxsIHVuc3Vw
cG9ydGVkCisgICAgICAgICAgICAgW0xlZ2FjeUxlbmllbnRUaGlzXSAtPiByZW5hbWVkIGZyb20g
W0xlbmllbnRUaGlzXQorICAgICAgICAgICAgIFtMZWdhY3lOYW1lc3BhY2VdIC0+IG5ldywgbWFy
a2VkIGFzIHVuc3VwcG9ydGVkCisgICAgICAgICAgICAgW0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
XSAtPiByZW5hbWVkIGZyb20gW05vSW50ZXJmYWNlT2JqZWN0XQorICAgICAgICAgICAgIFtMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ10gLT4gcmVuYW1lZCBmcm9tIFtUcmVhdE51bGxBcz1FbXB0eVN0
cmluZ10KKyAgICAgICAgICAgICBbTGVnYWN5T3ZlcnJpZGVCdWlsdEluc10gLT4gcmVuYW1lZCBm
cm9tIE92ZXJyaWRlQnVpbHRpbnMKKyAgICAgICAgICAgICBbTGVnYWN5VHJlYXROb25PYmplY3RB
c051bGxdIC0+IHJlbmFtZWQgZnJvbSBbVHJlYXROb25PYmplY3RBc051bGxdLCBzdGlsbCB1bnN1
cHBvcnRlZAorICAgICAgICAgICAgIFtMZWdhY3lVbmZvcmdlYWJsZV0gLT4gcmVuYW1lZCBmcm9t
IFtVbmZvcmdlYWJsZV0KKyAgICAgICAgICAgICBbU2VyaWFsaXphYmxlXSAtPiBuZXcsIG1hcmtl
ZCBhcyB1bnN1cHBvcnRlZAorICAgICAgICAgICAgIFtUcmFuc2ZlcmFibGVdIC0+IG5ldywgbWFy
a2VkIGFzIHVuc3VwcG9ydGVkCisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
Q2FuY2VsRXZlbnQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXlt
ZW50QXV0aG9yaXplZEV2ZW50LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50Lmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2
ZW50LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5pZGw6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvUGxheWJhY2tRdWFsaXR5LmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaWRsOgorICAgICAgICAq
IE1vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm8uaWRsOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEv
U3RvcmFnZVF1b3RhLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVz
aXMuaWRsOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvTGlzdGVuZXIuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGw6CisgICAg
ICAgICogU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVk
LmlkbC5lcmI6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Um9sZS5pZGw6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BcmlhQXR0cmlidXRlcy5pZGw6CisgICAgICAgICog
YW5pbWF0aW9uL0FuaW1hdGFibGUuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL0lETFR5cGVzLmg6
CisgICAgICAgICogYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmg6CisgICAgICAgIChXZWJD
b3JlOjpET01XcmFwcGVyV29ybGQ6OmRpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZp
b3IpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpzaG91bGREaXNhYmxlTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0JlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVdyYXBwZXJXb3JsZDo6ZGlzYWJsZU92ZXJyaWRlQnVpbHRpbnNCZWhhdmlvcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OnNob3VsZERpc2FibGVPdmVycmlk
ZUJ1aWx0aW5zQmVoYXZpb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjppc1Zpc2libGVO
YW1lZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnROdWxsYWJsZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnZlcnRlcjxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxUPj46OmNvbnZlcnQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDb252ZXJ0ZXI8SURMVHJlYXROdWxsQXNFbXB0
eUFkYXB0b3I8VD4+Ojpjb252ZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAg
ICAgIChHZW5lcmF0ZVB1dCk6CisgICAgICAgIChHZW5lcmF0ZVB1dEJ5SW5kZXgpOgorICAgICAg
ICAoR2VuZXJhdGVJc0xlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKToKKyAgICAgICAgKEdl
bmVyYXRlRGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoR2VuZXJhdGVEZWxldGVQcm9wZXJ0
eUNvbW1vbik6CisgICAgICAgIChBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UpOgorICAgICAg
ICAoT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKToKKyAgICAgICAgKElzQWNjZWxlcmF0ZWRE
T01BdHRyaWJ1dGUpOgorICAgICAgICAoR2V0SlNDQXR0cmlidXRlc0ZvckF0dHJpYnV0ZSk6Cisg
ICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9u
KToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyVHJhbXBvbGluZURlZmluaXRpb24p
OgorICAgICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJUcmFtcG9saW5lRGVmaW5pdGlvbik6
CisgICAgICAgIChJc0Fubm90YXRlZFR5cGUpOgorICAgICAgICAoR2V0QW5ub3RhdGVkSURMVHlw
ZSk6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcyk6CisgICAgICAg
IChOZWVkc0NvbnN0cnVjdG9yUHJvcGVydHkpOgorICAgICAgICAoSXNMZWdhY3lVbmZvcmdlYWJs
ZSk6CisgICAgICAgIChDb21wdXRlRnVuY3Rpb25TcGVjaWFsKToKKyAgICAgICAgKEdlbmVyYXRl
SXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChJc1VuZm9yZ2Vh
YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
anNvbjoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3Rv
cnMuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRh
cmdldC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zLmNwcDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmg6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVu
Y2llcy5kZXA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbmNsdWRlcy5p
ZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmlkbDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmlkbDogQWRkZWQuCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPcGVyYXRpb25C
YXNlLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE92ZXJyaWRlQnVp
bHRpbnMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGNzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlk
bDoKKyAgICAgICAgKiBjc3MvQ1NTVW5rbm93blJ1bGUuaWRsOgorICAgICAgICAqIGNzcy9FbGVt
ZW50Q1NTSW5saW5lU3R5bGUuaWRsOgorICAgICAgICAqIGNzcy9NZWRpYUxpc3QuaWRsOgorICAg
ICAgICAqIGNzcy9TdHlsZU1lZGlhLmlkbDoKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5p
ZGw6CisgICAgICAgICogZG9tL0NoaWxkTm9kZS5pZGw6CisgICAgICAgICogZG9tL0RPTUltcGxl
bWVudGF0aW9uLmlkbDoKKyAgICAgICAgKiBkb20vRE9NU3RyaW5nTWFwLmlkbDoKKyAgICAgICAg
KiBkb20vRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEFuZEVsZW1lbnRFdmVudEhhbmRs
ZXJzLmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsOgorICAgICAg
ICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRXZlbnQuaWRsOgorICAgICAgICAq
IGRvbS9FdmVudExpc3RlbmVyLmlkbDoKKyAgICAgICAgKiBkb20vR2xvYmFsRXZlbnRIYW5kbGVy
cy5pZGw6CisgICAgICAgICogZG9tL05hdmlnYXRvck1heFRvdWNoUG9pbnRzLmlkbDoKKyAgICAg
ICAgKiBkb20vTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlLmlkbDoKKyAgICAgICAgKiBkb20vTm9u
RWxlbWVudFBhcmVudE5vZGUuaWRsOgorICAgICAgICAqIGRvbS9QYXJlbnROb2RlLmlkbDoKKyAg
ICAgICAgKiBkb20vU2hhZG93Um9vdC5pZGw6CisgICAgICAgICogZG9tL1Nsb3RhYmxlLmlkbDoK
KyAgICAgICAgKiBodG1sL0hUTUxCb2R5RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1M
RG9jdW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaWRsOgorICAgICAgICAq
IGh0bWwvSFRNTEZvbnRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVu
dC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbDoKKyAgICAgICAgKiBo
dG1sL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTElG
cmFtZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5pZGw6Cisg
ICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxP
YmplY3RFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxPckZvcmVpZ25FbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1s
L0hUTUxUYWJsZUNlbGxFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1l
bnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5pZGw6CisgICAgICAg
ICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9B
TkdMRUluc3RhbmNlZEFycmF5cy5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzQ29t
cG9zaXRpbmcuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0RyYXdJbWFnZS5pZGw6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzRHJhd1BhdGguaWRsOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc0ZpbGxTdHJva2VTdHlsZXMuaWRsOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc0ZpbHRlcnMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0ltYWdl
RGF0YS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VTbW9vdGhpbmcuaWRs
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdGguaWRsOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1BhdGhEcmF3aW5nU3R5bGVzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZWN0LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNTaGFkb3dTdHls
ZXMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1N0YXRlLmlkbDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNUZXh0LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNUZXh0RHJhd2luZ1N0eWxlcy5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzVHJh
bnNmb3JtLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNVc2VySW50ZXJmYWNlLmlk
bDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5pZGw6CisgICAgICAgICog
aHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5pZGw6CisgICAgICAgICogaHRtbC9jYW52
YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VY
VEZyYWdEZXB0aC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxP
RC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRzUkdCLmlkbDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9P
RVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVh
ci5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5pZGw6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5pZGw6CisgICAg
ICAgICogaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaWRsOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5pZGw6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMxLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlUFZSVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQ3NSR0IuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVi
dWdSZW5kZXJlckluZm8uaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFk
ZXJzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5pZGw6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5pZGw6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tD
dWVHZW5lcmljLmlkbDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVFJlZ2lvbkxpc3QuaWRsOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaWRsOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsOgorICAgICAgICAqIHBhZ2UvRE9NV2lu
ZG93LmlkbDoKKyAgICAgICAgKiBwYWdlL0dsb2JhbENyeXB0by5pZGw6CisgICAgICAgICogcGFn
ZS9HbG9iYWxQZXJmb3JtYW5jZS5pZGw6CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5pZGw6Cisg
ICAgICAgICogcGFnZS9OYXZpZ2F0b3JJRC5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JM
YW5ndWFnZS5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JPbkxpbmUuaWRsOgorICAgICAg
ICAqIHBhZ2UvTmF2aWdhdG9yUGx1Z2lucy5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JT
ZXJ2aWNlV29ya2VyLmlkbDoKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvclNoYXJlLmlkbDoKKyAg
ICAgICAgKiBwYWdlL1JlbW90ZURPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGFnZS9XaW5kb3dF
dmVudEhhbmRsZXJzLmlkbDoKKyAgICAgICAgKiBwYWdlL1dpbmRvd09yV29ya2VyR2xvYmFsU2Nv
cGUuaWRsOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaWRsOgorICAgICAgICAqIHN2Zy9TVkdGaXRUb1ZpZXdCb3guaWRsOgorICAgICAgICAqIHN2
Zy9TVkdUZXN0cy5pZGw6CisgICAgICAgICogc3ZnL1NWR1VSSVJlZmVyZW5jZS5pZGw6CisgICAg
ICAgICogc3ZnL1NWR1pvb21BbmRQYW4uaWRsOgorICAgICAgICAqIHRlc3RpbmcvR0NPYnNlcnZh
dGlvbi5pZGw6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHNN
YXBMaWtlLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsc1NldExpa2UuaWRsOgorICAg
ICAgICAqIHRlc3RpbmcvTWFsbG9jU3RhdGlzdGljcy5pZGw6CisgICAgICAgICogdGVzdGluZy9N
ZW1vcnlJbmZvLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmlkbDoKKyAg
ICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaWRsOgorICAgICAgICAq
IHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tQYXlt
ZW50Q29vcmRpbmF0b3IuaWRsOgorICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVy
bmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaWRsOgorICAgICAg
ICAqIHRlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZh
a2VYUklucHV0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogdGVzdGluZy9XZWJYUlRlc3QuaWRs
OgorICAgICAgICAqIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsOgorICAgICAgICAqIHhtbC9Y
UGF0aE5TUmVzb2x2ZXIuaWRsOgorCiAyMDIwLTA5LTA0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYSxFTUVdIC1vdXRwdXRPYnNjdXJlZER1ZVRvSW5z
dWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uIEtWTyB3aWxsIHNldCBPdXRwdXRPYnNjdXJlZCBm
b3IgYWxsIGF0dGFjaGVkIE1lZGlhS2V5U2Vzc2lvbnMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5Q2FuY2VsRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlDYW5jZWxFdmVudC5pZGwJKHJl
dmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlDYW5jZWxFdmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwog
ICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIEFwcGxlUGF5Q2FuY2VsRXZlbnQg
OiBFdmVudCB7CiAgICAgW0NhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIEFwcGxl
UGF5U2Vzc2lvbkVycm9yIHNlc3Npb25FcnJvcjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRB
dXRob3JpemVkRXZlbnQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPUFQUExFX1BB
WSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
IF0gaW50ZXJmYWNlIEFwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudCA6IEV2ZW50IHsKICAg
ICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUgQXBwbGVQYXlQYXltZW50IHBh
eW1lbnQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQu
aWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1BUFBMRV9QQVksCi0gICAgTm9J
bnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFj
ZSBBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50IDogRXZlbnQgewogICAgIFtDYWNo
ZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBBcHBsZVBheVBheW1lbnRNZXRob2QgcGF5
bWVudE1ldGhvZDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVj
dGVkRXZlbnQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPUFQUExFX1BB
WSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
IF0gaW50ZXJmYWNlIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudCA6IEV2ZW50
IHsKICAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUgQXBwbGVQYXlQYXlt
ZW50Q29udGFjdCBzaGlwcGluZ0NvbnRhY3Q7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBw
aW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZl
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBDb25kaXRp
b25hbD1BUFBMRV9QQVksCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRF
dmVudCA6IEV2ZW50IHsKICAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUg
QXBwbGVQYXlTaGlwcGluZ01ldGhvZCBzaGlwcGluZ01ldGhvZDsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
VmFsaWRhdGVNZXJjaGFudEV2ZW50LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPUFQ
UExFX1BBWSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9i
amVjdCwKIF0gaW50ZXJmYWNlIEFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50IDogRXZlbnQg
ewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsaWRhdGlvblVSTDsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaWRsCShyZXZpc2lv
biAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICAgICBFbmFibGVkQXRSdW50aW1lPUZl
dGNoQVBJLAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAgIEludGVyZmFjZU5hbWU9
Qm9keSwKLSAgICBOb0ludGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
CiBdIGludGVyZmFjZSBGZXRjaEJvZHkgewogICAgIFtJbXBsZW1lbnRlZEFzPXJlYWRhYmxlU3Ry
ZWFtLCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBSZWFkYWJsZVN0
cmVhbT8gYm9keTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBib2R5VXNlZDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9z
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xz
L01lZGlhQ29udHJvbHNIb3N0LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNyArMzIsNyBAQCBlbnVtIERldmljZVR5cGUgewogWwogICAgIENvbmRpdGlv
bmFsPU1FRElBX0NPTlRST0xTX1NDUklQVCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAog
XSBpbnRlcmZhY2UgTWVkaWFDb250cm9sc0hvc3QgewogICAgIHNlcXVlbmNlPFRleHRUcmFjaz4g
c29ydGVkVHJhY2tMaXN0Rm9yTWVudShUZXh0VHJhY2tMaXN0IHRyYWNrTGlzdCk7CiAgICAgc2Vx
dWVuY2U8QXVkaW9UcmFjaz4gc29ydGVkVHJhY2tMaXN0Rm9yTWVudShBdWRpb1RyYWNrTGlzdCB0
cmFja0xpc3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9WaWRl
b1BsYXliYWNrUXVhbGl0eS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9WaWRlb1BsYXliYWNrUXVhbGl0eS5pZGwJKHJldmlzaW9uIDI2NjYzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvVmlkZW9QbGF5YmFja1F1YWxp
dHkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBDb25kaXRp
b25hbD1WSURFTywKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2UgVmlk
ZW9QbGF5YmFja1F1YWxpdHkgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQg
ZG91YmxlIGNyZWF0aW9uVGltZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCShyZXZpc2lvbiAyNjY2
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBAIHR5cGVkZWYgKG9iamVj
dCBvciBET01TdHJpbmcpIEFsZ29yaXRobUkKICAgICAvLyA2LjEgUGVlci10by1wZWVyIGRhdGEg
QVBJCiAgICAgLy8gRklYTUUgMTY5NjQ0OiBtaXNzaW5nIHNjdHAKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gUlRDRGF0YUNoYW5uZWwgY3JlYXRlRGF0YUNoYW5uZWwoW1RyZWF0TnVsbEFzPUVt
cHR5U3RyaW5nXSBVU1ZTdHJpbmcgbGFiZWwsIG9wdGlvbmFsIFJUQ0RhdGFDaGFubmVsSW5pdCBv
cHRpb25zKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJUQ0RhdGFDaGFubmVsIGNyZWF0ZURh
dGFDaGFubmVsKFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gVVNWU3RyaW5nIGxhYmVsLCBvcHRp
b25hbCBSVENEYXRhQ2hhbm5lbEluaXQgb3B0aW9ucyk7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFu
ZGxlciBvbmRhdGFjaGFubmVsOwogCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmlkbAko
cmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKIF0gaW50ZXJmYWNlIFF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyBsb25nIG1vdmllU2l6ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvU3Rv
cmFnZUluZm8uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
U3RvcmFnZUluZm8uaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1RVU9UQSwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlLAogXSBpbnRlcmZhY2UgU3RvcmFnZUluZm8gewpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9xdW90YS9TdG9yYWdlUXVvdGEuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcXVvdGEvU3RvcmFnZVF1b3RhLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9TdG9yYWdlUXVvdGEuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAor
ICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVFVT1RBLAogICAg
IEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBTdG9yYWdlUXVvdGEgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVz
aXMuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hTeW50aGVzaXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAg
CiBbCiAgICAgQ29uZGl0aW9uYWw9U1BFRUNIX1NZTlRIRVNJUywKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFNwZWVjaFN5
bnRoZXNpcyAgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHBlbmRpbmc7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3BlYWtpbmc7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaWRsCShy
ZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNWb2ljZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwog
IAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
LAogICAgIENvbmRpdGlvbmFsPVNQRUVDSF9TWU5USEVTSVMKIF0gaW50ZXJmYWNlIFNwZWVjaFN5
bnRoZXNpc1ZvaWNlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZvaWNlVVJJ
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2lu
ay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtU2luay5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw3ICsyNSw3IEBACiAKIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0LAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uCiBdIGludGVyZmFjZSBS
ZWFkYWJsZVN0cmVhbVNpbmsgewogICAgIHVuZGVmaW5lZCBlbnF1ZXVlKEJ1ZmZlclNvdXJjZSBj
aHVuayk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW1Tb3VyY2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3Qs
CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24K
IF0gaW50ZXJmYWNlIFJlYWRhYmxlU3RyZWFtU291cmNlIHsKICAgICBbQ3VzdG9tXSBQcm9taXNl
PHVuZGVmaW5lZD4gc3RhcnQoUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciBjb250cm9s
bGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwJKHJldmlzaW9uIDI2NjYz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogICAgIENvbmRp
dGlvbmFsPVdFQl9BVURJTywKICAgICBFbmFibGVkQnlTZXR0aW5nPVByZWZpeGVkV2ViQXVkaW8s
CiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QKKyAgICBM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdAogXSBpbnRlcmZhY2UgV2ViS2l0QXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlIDogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsKICAgICBhdHRyaWJ1dGUgQXVkaW9C
dWZmZXI/IGJ1ZmZlcjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRBdWRpb0xpc3RlbmVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvTGlzdGVuZXIuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvTGlzdGVuZXIuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VC
X0FVRElPLAogICAgIEVuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpbywKLSAgICBOb0lu
dGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNl
IFdlYktpdEF1ZGlvTGlzdGVuZXIgewogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQg
ZG9wcGxlckZhY3RvcjsgIC8vIHNhbWUgYXMgT3BlbkFMIChkZWZhdWx0IDEuMCkKICAgICBhdHRy
aWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IHNwZWVkT2ZTb3VuZDsgICAvLyBpbiBtZXRlcnMgLyBz
ZWNvbmQgKGRlZmF1bHQgMzQzLjMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1dlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5p
ZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcg
KzI3LDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgRW5hYmxlZEJ5U2V0dGlu
Zz1QcmVmaXhlZFdlYkF1ZGlvLAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIE5vSW50
ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJmYWNlIFdl
YktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgOiBBdWRpb05vZGUgewogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBBdWRpb1BhcmFtIHRocmVzaG9sZDsgLy8gaW4gRGVjaWJlbHMKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBrbmVlOyAvLyBpbiBEZWNpYmVscwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9y
Tm9kZS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0T3NjaWxsYXRvck5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsy
OCw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAogICAgIEVuYWJsZWRCeVNldHRpbmc9
V2ViQXVkaW8mUHJlZml4ZWRXZWJBdWRpbywKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAg
ICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50
ZXJmYWNlIFdlYktpdE9zY2lsbGF0b3JOb2RlIDogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsK
ICAgICBhdHRyaWJ1dGUgT3NjaWxsYXRvclR5cGUgdHlwZTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlk
bC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBs
YXRlcy9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlkbC5lcmIJKHJldmlzaW9uIDI2NjYzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvSW50ZXJuYWxTZXR0
aW5nc0dlbmVyYXRlZC5pZGwuZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAg
Ki8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRl
cmZhY2UgSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZCB7CiA8JS0gZm9yIEBzZXR0aW5nIGluIEBz
ZXR0aW5ncyBkbyAtJT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJvbGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJvbGUuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSb2xlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjUsNyArMjUsNyBAQAogCiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1BcmlhUmVmbGVjdGlv
biwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
IF0gaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlSb2xlIHsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRl
IERPTVN0cmluZz8gcm9sZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FyaWFBdHRyaWJ1dGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FyaWFBdHRyaWJ1dGVzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BcmlhQXR0cmlidXRlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDcgQEAKIAogWwogICAgIEVuYWJsZWRBdFJ1bnRpbWU9QXJpYVJlZmxlY3Rpb24s
Ci0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBd
IGludGVyZmFjZSBBcmlhQXR0cmlidXRlcyB7CiAgICAgW1JlZmxlY3Q9YXJpYV9hdG9taWNdICAg
ICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhQXRvbWljOwogICAgIFtSZWZsZWN0PWFy
aWFfYXV0b2NvbXBsZXRlXSAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJpYUF1dG9Db21wbGV0
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRhYmxlLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0YWJsZS5pZGwJKHJldmlzaW9u
IDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRhYmxlLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1X
ZWJBbmltYXRpb25zLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3QKIF0gaW50ZXJmYWNlIEFuaW1hdGFibGUgewogICAgIFtNYXlUaHJvd0V4Y2VwdGlv
biwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBXZWJBbmltYXRpb24gYW5pbWF0ZShvYmplY3Q/IGtl
eWZyYW1lcywgb3B0aW9uYWwgKHVucmVzdHJpY3RlZCBkb3VibGUgb3IgS2V5ZnJhbWVBbmltYXRp
b25PcHRpb25zKSBvcHRpb25zKTsKICAgICBzZXF1ZW5jZTxXZWJBbmltYXRpb24+IGdldEFuaW1h
dGlvbnMob3B0aW9uYWwgR2V0QW5pbWF0aW9uc09wdGlvbnMgb3B0aW9ucyk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL0lETFR5cGVzLmgJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL0lETFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBA
QCBzdHJ1Y3QgSURMRE9NU3RyaW5nIDogSURMU3RyaW5nPFN0cmluZz4gCiBzdHJ1Y3QgSURMQnl0
ZVN0cmluZyA6IElETFN0cmluZzxTdHJpbmc+IHsgfTsKIHN0cnVjdCBJRExVU1ZTdHJpbmcgOiBJ
RExTdHJpbmc8U3RyaW5nPiB7IH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExU
cmVhdE51bGxBc0VtcHR5QWRhcHRvciA6IElETFN0cmluZzxTdHJpbmc+IHsKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3IgOiBJRExT
dHJpbmc8U3RyaW5nPiB7CiAgICAgdXNpbmcgSW5uZXJUeXBlID0gVDsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCShyZXZpc2lvbiAy
NjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTMsOCArNTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaGFk
b3dSb290SXNBbHdheXNPcGVuKCkgeyBtX3NoYWRvd1Jvb3RJc0Fsd2F5c09wZW4gPSB0cnVlOyB9
CiAgICAgYm9vbCBzaGFkb3dSb290SXNBbHdheXNPcGVuKCkgY29uc3QgeyByZXR1cm4gbV9zaGFk
b3dSb290SXNBbHdheXNPcGVuOyB9CiAKLSAgICB2b2lkIGRpc2FibGVPdmVycmlkZUJ1aWx0aW5z
QmVoYXZpb3IoKSB7IG1fc2hvdWxkRGlzYWJsZU92ZXJyaWRlQnVpbHRpbnNCZWhhdmlvciA9IHRy
dWU7IH0KLSAgICBib29sIHNob3VsZERpc2FibGVPdmVycmlkZUJ1aWx0aW5zQmVoYXZpb3IoKSBj
b25zdCB7IHJldHVybiBtX3Nob3VsZERpc2FibGVPdmVycmlkZUJ1aWx0aW5zQmVoYXZpb3I7IH0K
KyAgICB2b2lkIGRpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZpb3IoKSB7IG1fc2hv
dWxkRGlzYWJsZUxlZ2FjeU92ZXJyaWRlQnVpbHRJbnNCZWhhdmlvciA9IHRydWU7IH0KKyAgICBi
b29sIHNob3VsZERpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZpb3IoKSBjb25zdCB7
IHJldHVybiBtX3Nob3VsZERpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZpb3I7IH0K
IAogICAgIERPTU9iamVjdFdyYXBwZXJNYXAmIHdyYXBwZXJzKCkgeyByZXR1cm4gbV93cmFwcGVy
czsgfQogCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgVHlwZSBtX3R5cGUgeyBUeXBl
OjpJbnRlcm5hbCB9OwogCiAgICAgYm9vbCBtX3NoYWRvd1Jvb3RJc0Fsd2F5c09wZW4geyBmYWxz
ZSB9OwotICAgIGJvb2wgbV9zaG91bGREaXNhYmxlT3ZlcnJpZGVCdWlsdGluc0JlaGF2aW9yIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkRGlzYWJsZUxlZ2FjeU92ZXJyaWRlQnVpbHRJbnNC
ZWhhdmlvciB7IGZhbHNlIH07CiB9OwogCiBET01XcmFwcGVyV29ybGQmIG5vcm1hbFdvcmxkKEpT
Qzo6Vk0mKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RP
cGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01BYnN0cmFjdE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsMTQgKzMyLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEltcGxlbWVudGF0aW9u
cyBvZiB0aGUgYWJzdHJhY3Qgb3BlcmF0aW9ucyBkZWZpbmVkIGF0CiAvLyBodHRwczovL2hleWNh
bS5naXRodWIuaW8vd2ViaWRsLyNsZWdhY3ktcGxhdGZvcm0tb2JqZWN0LWFic3RyYWN0LW9wcwog
Ci1lbnVtIGNsYXNzIE92ZXJyaWRlQnVpbHRpbnMgeworZW51bSBjbGFzcyBMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zIHsKICAgICBObywKICAgICBZZXMKIH07CiAKIC8vIEFuIGltcGxlbWVudGF0aW9u
IG9mIHRoZSAnbmFtZWQgcHJvcGVydHkgdmlzaWJpbGl0eSBhbGdvcml0aG0nCiAvLyBodHRwczov
L2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tbmFtZWQtcHJvcGVydHktdmlzaWJpbGl0eQot
dGVtcGxhdGU8T3ZlcnJpZGVCdWlsdGlucyBvdmVycmlkZUJ1aWx0aW5zLCBjbGFzcyBKU0NsYXNz
PgordGVtcGxhdGU8TGVnYWN5T3ZlcnJpZGVCdWlsdElucyBvdmVycmlkZUJ1aWx0aW5zLCBjbGFz
cyBKU0NsYXNzPgogc3RhdGljIGJvb2wgaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eShKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NsYXNzJiB0aGlzT2JqZWN0LCBKU0M6
OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgLy8gRklYTUU6IEl0IHNlZW1zIHVu
Zm9ydHVuYXRlIHRoYXQgaGF2ZSB0byBkbyB0d28gbG9va3VwcyBmb3IgdGhlIHByb3BlcnR5IG5h
bWUsCkBAIC02Myw4ICs2Myw4IEBAIHN0YXRpYyBib29sIGlzVmlzaWJsZU5hbWVkUHJvcGVydHko
SlNDOjoKICAgICBpZiAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KCZ0aGlzT2Jq
ZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAotICAgIC8vIDMuIElmIE8gaW1wbGVtZW50cyBhbiBpbnRlcmZh
Y2UgdGhhdCBoYXMgdGhlIFtPdmVycmlkZUJ1aWx0aW5zXSBleHRlbmRlZCBhdHRyaWJ1dGUsIHRo
ZW4gcmV0dXJuIHRydWUuCi0gICAgaWYgKG92ZXJyaWRlQnVpbHRpbnMgPT0gT3ZlcnJpZGVCdWls
dGluczo6WWVzKQorICAgIC8vIDMuIElmIE8gaW1wbGVtZW50cyBhbiBpbnRlcmZhY2UgdGhhdCBo
YXMgdGhlIFtMZWdhY3lPdmVycmlkZUJ1aWx0SW5zXSBleHRlbmRlZCBhdHRyaWJ1dGUsIHRoZW4g
cmV0dXJuIHRydWUuCisgICAgaWYgKG92ZXJyaWRlQnVpbHRpbnMgPT0gTGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6WWVzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIDQuIEluaXRpYWxp
emUgcHJvdG90eXBlIHRvIGJlIHRoZSB2YWx1ZSBvZiB0aGUgaW50ZXJuYWwgW1tQcm90b3R5cGVd
XSBwcm9wZXJ0eSBvZiBPLgpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgYm9vbCBpc1Zpc2libGVO
YW1lZFByb3BlcnR5KEpTQzo6CiAvLyBmb3IgdGhlIHByb3BlcnR5IG5hbWUsIHZpYSBwYXNzZWQg
aW4gZnVuY3Rvci4gVGhpcyBhbGxvd3MgdXMgdG8gYXZvaWQgdHdvIGxvb2tpbmcgdXAgdGhlCiAv
LyB0aGUgcHJvcGVydHkgbmFtZSB0d2ljZTsgb25jZSBmb3IgJ25hbWVkIHByb3BlcnR5IHZpc2li
aWxpdHkgYWxnb3JpdGhtJyBjaGVjaywgYW5kIHRoZW4KIC8vIGFnYWluIHdoZW4gdGhlIHZhbHVl
IGlzIG5lZWRlZC4KLXRlbXBsYXRlPE92ZXJyaWRlQnVpbHRpbnMgb3ZlcnJpZGVCdWlsdGlucywg
Y2xhc3MgSlNDbGFzcywgY2xhc3MgRnVuY3Rvcj4KK3RlbXBsYXRlPExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMgb3ZlcnJpZGVCdWlsdGlucywgY2xhc3MgSlNDbGFzcywgY2xhc3MgRnVuY3Rvcj4KIHN0
YXRpYyBhdXRvIGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5KEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ2xhc3MmIHRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgRnVuY3RvciYmIGl0ZW1BY2Nlc3NvcikgLT4gZGVjbHR5cGUoaXRl
bUFjY2Vzc29yKHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpCiB7CiAgICAgLy8gTk9URTogV2hp
bGUgaXQgaXMgbm90IHNwZWNpZmllZCwgYSBTeW1ib2wgY2FuIG5ldmVyIGJlIGEgJ3N1cHBvcnRl
ZCBwcm9wZXJ0eQpAQCAtMTAzLDggKzEwMyw4IEBAIHN0YXRpYyBhdXRvIGFjY2Vzc1Zpc2libGVO
YW1lZFByb3BlcnR5KEoKICAgICBpZiAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KCZ0aGlzT2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIC8vIDMuIElmIE8gaW1wbGVtZW50
cyBhbiBpbnRlcmZhY2UgdGhhdCBoYXMgdGhlIFtPdmVycmlkZUJ1aWx0aW5zXSBleHRlbmRlZCBh
dHRyaWJ1dGUsIHRoZW4gcmV0dXJuIHRydWUuCi0gICAgaWYgKG92ZXJyaWRlQnVpbHRpbnMgPT0g
T3ZlcnJpZGVCdWlsdGluczo6WWVzICYmICF3b3JsZEZvckRPTU9iamVjdCh0aGlzT2JqZWN0KS5z
aG91bGREaXNhYmxlT3ZlcnJpZGVCdWlsdGluc0JlaGF2aW9yKCkpCisgICAgLy8gMy4gSWYgTyBp
bXBsZW1lbnRzIGFuIGludGVyZmFjZSB0aGF0IGhhcyB0aGUgW0xlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgdGhlbiByZXR1cm4gdHJ1ZS4KKyAgICBpZiAob3ZlcnJp
ZGVCdWlsdGlucyA9PSBMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXMgJiYgIXdvcmxkRm9yRE9N
T2JqZWN0KHRoaXNPYmplY3QpLnNob3VsZERpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVo
YXZpb3IoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIC8vIDQuIEluaXRpYWxpemUg
cHJvdG90eXBlIHRvIGJlIHRoZSB2YWx1ZSBvZiB0aGUgaW50ZXJuYWwgW1tQcm90b3R5cGVdXSBw
cm9wZXJ0eSBvZiBPLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0TnVsbGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUNvbnZlcnROdWxsYWJsZS5oCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnROdWxsYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MCw4ICs2MCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8SUQKICAg
ICAKICAgICAvLyAxLiBJZiBUeXBlKFYpIGlzIG5vdCBPYmplY3QsIGFuZCB0aGUgY29udmVyc2lv
biB0byBhbiBJREwgdmFsdWUgaXMgYmVpbmcgcGVyZm9ybWVkCiAgICAgLy8gZHVlIHRvIFYgYmVp
bmcgYXNzaWduZWQgdG8gYW4gYXR0cmlidXRlIHdob3NlIHR5cGUgaXMgYSBudWxsYWJsZSBjYWxs
YmFjayBmdW5jdGlvbgotICAgIC8vIHRoYXQgaXMgYW5ub3RhdGVkIHdpdGggW1RyZWF0Tm9uT2Jq
ZWN0QXNOdWxsXSwgdGhlbiByZXR1cm4gdGhlIElETCBudWxsYWJsZSB0eXBlIFQ/Ci0gICAgLy8g
dmFsdWUgbnVsbC4KKyAgICAvLyB0aGF0IGlzIGFubm90YXRlZCB3aXRoIFtMZWdhY3lUcmVhdE5v
bk9iamVjdEFzTnVsbF0sIHRoZW4gcmV0dXJuIHRoZSBJREwgbnVsbGFibGUKKyAgICAvLyB0eXBl
IFQ/IHZhbHVlIG51bGwuCiAgICAgLy8KICAgICAvLyBOT1RFOiBIYW5kbGVkIGVsc2V3aGVyZS4K
ICAgICAvLwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0U3Ry
aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
dmVydFN0cmluZ3MuaAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0U3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNyArMTQ4
LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURMVVNWU3RyaQogLy8gTUFSSzog
LQogLy8gTUFSSzogU3RyaW5nIHR5cGUgYWRhcHRvcnMKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IENvbnZlcnRlcjxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxUPj4gOiBEZWZhdWx0
Q29udmVydGVyPElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPFQ+PiB7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVyPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxUPj4gOiBEZWZhdWx0Q29udmVydGVyPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxUPj4gewogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBp
ZiAodmFsdWUuaXNOdWxsKCkpCkBAIC0xNTcsNyArMTU3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IENvbnZlcnRlcjxJRAogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
ICBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8VD4+IHsKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+ICBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPFQ+PiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3Rh
dGUgPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9
IGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTY4
Niw3ICs2ODYsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3QKICAgICAgICAgCiAg
ICAgICAgIEdlbmVyYXRlTmFtZWRHZXR0ZXJMYW1iZGEoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNl
LCAkbmFtZWRHZXR0ZXJPcGVyYXRpb24sICRuYW1lZEdldHRlckZ1bmN0aW9uTmFtZSwgIkdldHRl
cklETFR5cGUiKTsKICAgICAgICAgCi0gICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW4gPSAkY29k
ZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiT3ZlcnJp
ZGVCdWlsdGlucyIpID8gIk92ZXJyaWRlQnVpbHRpbnM6OlllcyIgOiAiT3ZlcnJpZGVCdWlsdGlu
czo6Tm8iOworICAgICAgICBteSAkb3ZlcnJpZGVCdWlsdGluID0gJGNvZGVHZW5lcmF0b3ItPklu
aGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkxlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMiKSA/ICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXMiIDogIkxlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6Ok5vIjsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChhdXRvIG5h
bWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTwke292ZXJyaWRlQnVpbHRp
bn0+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0
ZXJGdW5jdG9yKSkge1xuIik7CiAgICAgICAgIAogICAgICAgICAjIE5PVEU6IEdlbmVyYXRlTmFt
ZWRHZXR0ZXIgaW1wbGVtZW50cyBzdGVwcyAyLjEgLSAyLjEwLgpAQCAtODAwLDcgKzgwMCw3IEBA
IHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgKICAgICAgICAgCiAgICAgICAg
IEdlbmVyYXRlTmFtZWRHZXR0ZXJMYW1iZGEoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkbmFt
ZWRHZXR0ZXJPcGVyYXRpb24sICRuYW1lZEdldHRlckZ1bmN0aW9uTmFtZSwgIkdldHRlcklETFR5
cGUiKTsKICAgICAgICAgCi0gICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW4gPSAkY29kZUdlbmVy
YXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiT3ZlcnJpZGVCdWls
dGlucyIpID8gIk92ZXJyaWRlQnVpbHRpbnM6OlllcyIgOiAiT3ZlcnJpZGVCdWlsdGluczo6Tm8i
OworICAgICAgICBteSAkb3ZlcnJpZGVCdWlsdGluID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRz
RXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkxlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKSA/
ICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXMiIDogIkxlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6
Ok5vIjsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChhdXRvIG5hbWVkUHJv
cGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTwke292ZXJyaWRlQnVpbHRpbn0+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5j
dG9yKSkge1xuIik7CiAgICAgICAgIAogICAgICAgICAjIE5PVEU6IEdlbmVyYXRlTmFtZWRHZXR0
ZXIgaW1wbGVtZW50cyBzdGVwcyAyLjEgLSAyLjEwLgpAQCAtOTY4LDggKzk2OCw4IEBAIHN1YiBH
ZW5lcmF0ZVB1dAogICAgICAgICAKICAgICAgICAgbXkgJGFkZGl0aW9uYWxJbmRlbnQgPSAiIjsK
ICAgICAgICAgCi0gICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW5zID0gJGNvZGVHZW5lcmF0b3It
PkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIk92ZXJyaWRlQnVpbHRpbnMi
KTsKLSAgICAgICAgaWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgeworICAgICAgICBteSAkbGVnYWN5
T3ZlcnJpZGVCdWlsdGlucyA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmli
dXRlKCRpbnRlcmZhY2UsICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIik7CisgICAgICAgIGlmICgh
JGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMpIHsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0o
KSB9O1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVj
dChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTtcbiIpOwpAQCAtOTg1LDcgKzk4NSw3IEBAIHN1YiBHZW5lcmF0ZVB1dAog
ICAgICAgICB9CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQg
LiAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwogCi0gICAgICAgIGlmICghJG92ZXJyaWRlQnVp
bHRpbnMpIHsKKyAgICAgICAgaWYgKCEkbGVnYWN5T3ZlcnJpZGVCdWlsdGlucykgewogICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICB9XG4iKTsKICAgICAgICAgfQogICAg
ICAgICAKQEAgLTEwMTQsOCArMTAxNCw4IEBAIHN1YiBHZW5lcmF0ZVB1dEJ5SW5kZXgKICAgICBt
eSAkbmFtZWRTZXR0ZXJPcGVyYXRpb24gPSBHZXROYW1lZFNldHRlck9wZXJhdGlvbigkaW50ZXJm
YWNlKTsKICAgICBteSAkaW5kZXhlZFNldHRlck9wZXJhdGlvbiA9IEdldEluZGV4ZWRTZXR0ZXJP
cGVyYXRpb24oJGludGVyZmFjZSk7CiAgICAgCi0gICAgbXkgJG92ZXJyaWRlQnVpbHRpbnMgPSAk
Y29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiT3Zl
cnJpZGVCdWlsdGlucyIpOwotICAgIG15ICRlbGxpZGVzQ2FsbHNUb0Jhc2UgPSAoJG5hbWVkU2V0
dGVyT3BlcmF0aW9uICYmICRvdmVycmlkZUJ1aWx0aW5zKSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57UGx1Z2lufSAmJiAhJG5hbWVkU2V0dGVyT3BlcmF0aW9uLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDYWxsTmFtZWRTZXR0ZXJPbmx5Rm9yU3VwcG9ydGVkUHJvcGVydGllc307
CisgICAgbXkgJGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMgPSAkY29kZUdlbmVyYXRvci0+SW5oZXJp
dHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIp
OworICAgIG15ICRlbGxpZGVzQ2FsbHNUb0Jhc2UgPSAoJG5hbWVkU2V0dGVyT3BlcmF0aW9uICYm
ICRsZWdhY3lPdmVycmlkZUJ1aWx0aW5zKSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57UGx1Z2lufSAmJiAhJG5hbWVkU2V0dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDYWxsTmFtZWRTZXR0ZXJPbmx5Rm9yU3VwcG9ydGVkUHJvcGVydGllc307CiAgICAgCiAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NsYXNzTmFtZX06OnB1dEJ5SW5kZXgoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQg
aW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wiIC4gKCEkZWxsaWRlc0NhbGxzVG9CYXNlID8gIiBz
aG91bGRUaHJvdyIgOiAiIikgLiAiKVxuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xu
Iik7CkBAIC0xMDQ3LDcgKzEwNDcsNyBAQCBzdWIgR2VuZXJhdGVQdXRCeUluZGV4CiAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb20odm0sIGluZGV4KTtcbiIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICBteSAkYWRk
aXRpb25hbEluZGVudCA9ICIiOwotICAgICAgICBpZiAoISRvdmVycmlkZUJ1aWx0aW5zKSB7Cisg
ICAgICAgIGlmICghJGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMpIHsKICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSB9O1xuIik7CiAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlz
T2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFz
T2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CkBAIC0xMDYzLDcgKzEwNjMsNyBAQCBzdWIgR2VuZXJh
dGVQdXRCeUluZGV4CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkYWRk
aXRpb25hbEluZGVudCAuICIgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgCi0gICAgICAg
IGlmICghJG92ZXJyaWRlQnVpbHRpbnMpIHsKKyAgICAgICAgaWYgKCEkbGVnYWN5T3ZlcnJpZGVC
dWlsdGlucykgewogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cblxuIik7
CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDg1LDcgKzEwODUsNyBAQCBzdWIgR2VuZXJhdGVQdXRC
eUluZGV4CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIH0KIAotc3ViIEdlbmVy
YXRlSXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZQorc3ViIEdlbmVyYXRlSXNMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnR5TmFtZQogewogICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UpID0g
QF87CiAgICAgCkBAIC0xMDkzLDcgKzEwOTMsNyBAQCBzdWIgR2VuZXJhdGVJc1VuZm9yZ2VhYmxl
UHJvcGVydHlOYW1lCiAgICAgZm9yZWFjaCBteSAkcHJvcGVydHkgKEB7JGludGVyZmFjZS0+YXR0
cmlidXRlc30sIEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKICAgICAgICAgbmV4dCBpZiAk
cHJvcGVydHktPmlzU3RhdGljOwogICAgICAgICAKLSAgICAgICAgaWYgKElzVW5mb3JnZWFibGUo
JGludGVyZmFjZSwgJHByb3BlcnR5KSkgeworICAgICAgICBpZiAoSXNMZWdhY3lVbmZvcmdlYWJs
ZSgkaW50ZXJmYWNlLCAkcHJvcGVydHkpKSB7CiAgICAgICAgICAgICBwdXNoKEB1bmZvcmdlYWJs
ZVByb3BlcnR5TmFtZXMsICRwcm9wZXJ0eS0+bmFtZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0x
MTAyLDcgKzExMDIsNyBAQCBzdWIgR2VuZXJhdGVJc1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lCiAg
ICAgCiAgICAgbXkgJGNvbmRpdGlvbiA9IGpvaW4oIiB8fCAiLCBtYXAgeyAicHJvcGVydHlOYW1l
ID09IFwiIiAuICRfIC4gIlwiIiB9IEB1bmZvcmdlYWJsZVByb3BlcnR5TmFtZXMpOwogICAgIAot
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBib29sIGlzVW5mb3JnZWFibGVQcm9wZXJ0
eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSlcbiIpOworICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgInN0YXRpYyBib29sIGlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSlcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIp
OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gJHtjb25kaXRpb259O1xuIik7
CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKQEAgLTExNjksMTkgKzExNjksMTkg
QEAgc3ViIEdlbmVyYXRlRGVmaW5lT3duUHJvcGVydHkKICAgICAgICAgCiAgICAgICAgIG15ICRh
ZGRpdGlvbmFsSW5kZW50ID0gIiI7CiAgICAgICAgIAotICAgICAgICBteSAkaGFzVW5mb3JnYWJs
ZVByb3BlcnRpZXMgPSBHZW5lcmF0ZUlzVW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoJG91dHB1dEFy
cmF5LCAkaW50ZXJmYWNlKTsKKyAgICAgICAgbXkgJGhhc1VuZm9yZ2FibGVQcm9wZXJ0aWVzID0g
R2VuZXJhdGVJc0xlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKCRvdXRwdXRBcnJheSwgJGlu
dGVyZmFjZSk7CiAgICAgICAgIGlmICgkaGFzVW5mb3JnYWJsZVByb3BlcnRpZXMpIHsKLSAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFpc1VuZm9yZ2VhYmxlUHJv
cGVydHlOYW1lKHByb3BlcnR5TmFtZSkpIHtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICBpZiAoIWlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUocHJv
cGVydHlOYW1lKSkge1xuIik7CiAgICAgICAgICAgICAkYWRkaXRpb25hbEluZGVudCAuPSAiICAg
ICI7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgICMgMS4gTGV0IGNyZWF0aW5nIGJlIHRy
dWUgaWYgUCBpcyBub3QgYSBzdXBwb3J0ZWQgcHJvcGVydHkgbmFtZSwgYW5kIGZhbHNlIG90aGVy
d2lzZS4KICAgICAgICAgIyBOT1RFOiBUaGlzIHN0ZXAgaXMgc3RyZW5ndGggcmVkdWNlZCBpbnRv
IHRoZSBvbmx5IHVzZSBvZiAnY3JlYXRpbmcnIGluIHN0ZXAgMi4yLjEKICAgICAgICAgCi0gICAg
ICAgICMgMi4gSWYgTyBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSB3aXRoIHRoZSBbT3ZlcnJpZGVC
dWlsdGluc10gZXh0ZW5kZWQgYXR0cmlidXRlIG9yIE8KKyAgICAgICAgIyAyLiBJZiBPIGltcGxl
bWVudHMgYW4gaW50ZXJmYWNlIHdpdGggdGhlIFtMZWdhY3lPdmVycmlkZUJ1aWx0SW5zXSBleHRl
bmRlZCBhdHRyaWJ1dGUgb3IgTwogICAgICAgICAjICAgIGRvZXMgbm90IGhhdmUgYW4gb3duIHBy
b3BlcnR5IG5hbWVkIFAsIHRoZW46Ci0gICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW5zID0gJGNv
ZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIk92ZXJy
aWRlQnVpbHRpbnMiKTsKLSAgICAgICAgaWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgeworICAgICAg
ICBteSAkbGVnYWN5T3ZlcnJpZGVCdWlsdGlucyA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4
dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIik7Cisg
ICAgICAgIGlmICghJGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMpIHsKICAgICAgICAgICAgICMgRklY
TUU6IElzIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QgdGhlIHJpZ2h0IGZ1bmN0aW9uIHRv
IGNhbGw/IElzIHRoZXJlIGEgZnVuY3Rpb24gdGhhdCB3aWxsCiAgICAgICAgICAgICAjICAgICAg
ICBvbmx5IGxvb2sgYXQgdGhlIGFjdHVhbCBwcm9wZXJ0aWVzLCBhbmQgbm90IGNhbGwgaW50byBv
dXIgaW1wbGVtZW50YXRpb24gb2YgdGhlCiAgICAgICAgICAgICAjICAgICAgICBbW0dldE93blBy
b3BlcnR5XV0gaG9vaz8KQEAgLTEyMTIsNyArMTIxMiw3IEBAIHN1YiBHZW5lcmF0ZURlZmluZU93
blByb3BlcnR5CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlvbmFsSW5k
ZW50IC4gIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgaWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgeworICAgICAgICBpZiAoISRsZWdhY3lPdmVy
cmlkZUJ1aWx0aW5zKSB7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlv
bmFsSW5kZW50IC4gIiAgICB9XG4iKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTEyNTIsNyAr
MTI1Miw3IEBAIHN1YiBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5Q29tbW9uCiAgICAgYXNzZXJ0KCJO
YW1lZCBwcm9wZXJ0eSBkZWxldGVycyBhcmUgbm90IGFsbG93ZWQgb24gZ2xvYmFsIG9iamVjdCBp
bnRlcmZhY2VzLiIpIGlmIElzR2xvYmFsSW50ZXJmYWNlKCRpbnRlcmZhY2UpOwogCiAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiLCAkY29uZGl0aW9uYWwp
OwotICAgIG15ICRvdmVycmlkZUJ1aWx0aW4gPSAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRl
bmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiT3ZlcnJpZGVCdWlsdGlucyIpID8gIk92ZXJyaWRl
QnVpbHRpbnM6OlllcyIgOiAiT3ZlcnJpZGVCdWlsdGluczo6Tm8iOworICAgIG15ICRvdmVycmlk
ZUJ1aWx0aW4gPSAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50
ZXJmYWNlLCAiTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpID8gIkxlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM6OlllcyIgOiAiTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8iOwogICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTwke292ZXJyaWRlQnVpbHRp
bn0+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7XG4i
KTsKIAogICAgIEdlbmVyYXRlQ3VzdG9tRWxlbWVudFJlYWN0aW9uc1N0YWNrSWZOZWVkZWQoJG91
dHB1dEFycmF5LCAkb3BlcmF0aW9uLCAiKmxleGljYWxHbG9iYWxPYmplY3QiKTsKQEAgLTE2ODYs
OSArMTY4Niw5IEBAIHN1YiBBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UKICAgICByZXR1cm4g
MSBpZiBJc0dsb2JhbEludGVyZmFjZSgkaW50ZXJmYWNlKTsKICAgICByZXR1cm4gMSBpZiAkY29k
ZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlwZSk7CiAKLSAgICAj
IFtVbmZvcmdlYWJsZV0gYXR0cmlidXRlcyBzaG91bGQgYmUgb24gdGhlIGluc3RhbmNlLgotICAg
ICMgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jVW5mb3JnZWFibGUKLSAgICByZXR1
cm4gMSBpZiBJc1VuZm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICMgW0xl
Z2FjeVVuZm9yZ2VhYmxlXSBhdHRyaWJ1dGVzIHNob3VsZCBiZSBvbiB0aGUgaW5zdGFuY2UuCisg
ICAgIyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNMZWdhY3lVbmZvcmdlYWJsZQor
ICAgIHJldHVybiAxIGlmIElzTGVnYWN5VW5mb3JnZWFibGUoJGludGVyZmFjZSwgJGF0dHJpYnV0
ZSk7CiAKICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2hlY2tTZWN1
cml0eX0pIHsKICAgICAgICAgcmV0dXJuIDAgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57RG9Ob3RDaGVja1NlY3VyaXR5fTsKQEAgLTE3NDksOCArMTc0OSw4IEBAIHN1YiBPcGVy
YXRpb25TaG91bGRCZU9uSW5zdGFuY2UKIAogICAgIHJldHVybiAxIGlmIElzR2xvYmFsSW50ZXJm
YWNlKCRpbnRlcmZhY2UpOwogCi0gICAgIyBbVW5mb3JnZWFibGVdIG9wZXJhdGlvbnMgc2hvdWxk
IGJlIG9uIHRoZSBpbnN0YW5jZS4gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jVW5m
b3JnZWFibGUKLSAgICBpZiAoSXNVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKSkg
eworICAgICMgW0xlZ2FjeVVuZm9yZ2VhYmxlXSBvcGVyYXRpb25zIHNob3VsZCBiZSBvbiB0aGUg
aW5zdGFuY2UuIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeVVuZm9yZ2Vh
YmxlCisgICAgaWYgKElzTGVnYWN5VW5mb3JnZWFibGUoJGludGVyZmFjZSwgJG9wZXJhdGlvbikp
IHsKICAgICAgICAgYXNzZXJ0KCJUaGUgYmluZGluZ3MgZ2VuZXJhdG9yIGRvZXMgbm90IHN1cHBv
cnQgcHV0dGluZyBydW50aW1lLWVuYWJsZWQgb3BlcmF0aW9ucyBvbiB0aGUgaW5zdGFuY2UgeWV0
IChleGNlcHQgZm9yIGdsb2JhbCBvYmplY3RzKTpbIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUg
LiAiOjoiIC4gJG9wZXJhdGlvbi0+bmFtZSAuICJdIikgaWYgTmVlZHNSdW50aW1lQ2hlY2soJGlu
dGVyZmFjZSwgJG9wZXJhdGlvbik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KQEAgLTE3ODgs
NyArMTc4OCw3IEBAIHN1YiBJc0FjY2VsZXJhdGVkRE9NQXR0cmlidXRlCiAgICAgcmV0dXJuIDAg
aWYgJGF0dHJpYnV0ZS0+aXNTZXRMaWtlOwogICAgIHJldHVybiAwIGlmICRjb2RlR2VuZXJhdG9y
LT5Jc0NvbnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT50eXBlKTsKICAgICByZXR1cm4gMCBpZiBJ
c0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICByZXR1cm4gMCBpZiAkYXR0
cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZW5pZW50VGhpc307CisgICAgcmV0dXJuIDAg
aWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5TGVuaWVudFRoaXN9Owog
ICAgIHJldHVybiAwIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VUeXBlKCRhdHRyaWJ1dGUt
PnR5cGUpOwogICAgIHJldHVybiAwIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0RPTUpJVH07CiAgICAgcmV0dXJuIDE7CkBAIC0xODAwLDcgKzE4MDAsNyBAQCBzdWIgR2V0SlND
QXR0cmlidXRlc0ZvckF0dHJpYnV0ZQogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKIAogICAg
IG15IEBzcGVjaWFscyA9ICgpOwotICAgIHB1c2goQHNwZWNpYWxzLCAiSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSIpIGlmIElzVW5mb3JnZWFibGUoJGludGVyZmFjZSwgJGF0dHJp
YnV0ZSk7CisgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIikgaWYgSXNMZWdhY3lVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsK
IAogICAgICMgQXMgcGVyIFdlYiBJREwgc3BlY2lmaWNhdGlvbiwgY29uc3RydWN0b3IgcHJvcGVy
dGllcyBvbiB0aGUgRUNNQVNjcmlwdCBnbG9iYWwgb2JqZWN0IHNob3VsZCBub3QgYmUgZW51bWVy
YWJsZS4KICAgICBteSAkaXNHbG9iYWxDb25zdHJ1Y3RvciA9ICRjb2RlR2VuZXJhdG9yLT5Jc0Nv
bnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT50eXBlKTsKQEAgLTI2NzAsNyArMjY3MCw3IEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBGSVhNRTogV2h5IGRvZXNuJ3QgdGhpcyBhbHNvIGlu
Y2x1ZGUgSW5kZXhlZCBHZXR0ZXJzIGFuZCBbQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90XQogICAg
IGlmICgkbmFtZWRHZXR0ZXJPcGVyYXRpb24pIHsKLSAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJPdmVycmlkZUJ1aWx0aW5z
IikpIHsKKyAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmli
dXRlKCRpbnRlcmZhY2UsICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIikpIHsKICAgICAgICAgICAg
ICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSJ9ID0gMTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpHZXRP
d25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSJ9ID0gMTsKQEAgLTI3NzUs
NyArMjc3NSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0KICAgICAKICAgICAjIENvbnN0
cnVjdG9yIG9iamVjdCBnZXR0ZXIKLSAgICB1bmxlc3MgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e05vSW50ZXJmYWNlT2JqZWN0fSkgeworICAgIHVubGVzcyAoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3R9KSB7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopO1xuIik7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXROYW1lZENv
bnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7XG4iKSBpZiAkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfTsKICAgICB9CkBAIC00
MTk1LDcgKzQxOTUsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAg
cHVzaChAaGFzaEtleXMsICRuYW1lKTsKIAogICAgICAgICAgICAgbXkgQHNwZWNpYWxzID0gKCk7
Ci0gICAgICAgICAgICBwdXNoKEBzcGVjaWFscywgIkpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUiKSBpZiBJc1VuZm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAg
ICAgICAgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIikgaWYgSXNMZWdhY3lVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAg
ICAgICAgICAgIHB1c2goQHNwZWNpYWxzLCAiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkiKSBpZiBJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVzaChAc3BlY2lh
bHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUiKSBpZiBJc0FjY2VsZXJh
dGVkRE9NQXR0cmlidXRlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVz
aChAc3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRBdHRyaWJ1dGUiKSBp
ZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9OwpAQCAtNDU0Myw3ICs0
NTQzLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ9XG5cbiIpOwogICAgIH0KIAotICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Tm9JbnRlcmZhY2VPYmplY3R9KSB7CisgICAgaWYgKCEkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lOb0ludGVyZmFjZU9iamVjdH0pIHsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3Io
Vk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOwpA
QCAtNDYzNiw3ICs0NjM2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKVxuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTtcbiIpOwogCi0gICAgICAgIGlmICgh
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm9JbnRlcmZhY2VPYmplY3R9KSB7Cisg
ICAgICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3R9KSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKCR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpO1xuIik7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBK
U1ZhbHVlIGNvbnN0cnVjdG9yID0gJHtjbGFzc05hbWV9Q29uc3RydWN0b3I6OmNyZWF0ZShKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCAke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksICpwcm90b3R5cGUt
Pmdsb2JhbE9iamVjdCgpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5
cGUoKSksICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihwcm90b3R5cGUtPmdsb2JhbE9iamVj
dCgpKSk7XG4iKTsKQEAgLTUwODUsNyArNTA4NSw3IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZUdl
dHRlclRyYW1wb2xpbmVEZWYKICAgICAKICAgICBteSBAdGVtcGxhdGVQYXJhbWV0ZXJzID0gKCk7
CiAgICAgcHVzaChAdGVtcGxhdGVQYXJhbWV0ZXJzLCAkYXR0cmlidXRlR2V0dGVyQm9keU5hbWUp
OwotICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZW5pZW50VGhpc30p
IHsKKyAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5TGVuaWVu
dFRoaXN9KSB7CiAgICAgICAgIHB1c2goQHRlbXBsYXRlUGFyYW1ldGVycywgIkNhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpSZXR1cm5FYXJseSIpCiAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3It
PklzUHJvbWlzZVR5cGUoJGF0dHJpYnV0ZS0+dHlwZSkpIHsKICAgICAgICAgcHVzaChAdGVtcGxh
dGVQYXJhbWV0ZXJzLCAiQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJlamVjdFByb21pc2UiKQpA
QCAtNTI4MCw3ICs1MjgwLDcgQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlU2V0dGVyVHJhbXBvbGlu
ZURlZgogICAgIAogICAgIG15IEB0ZW1wbGF0ZVBhcmFtZXRlcnMgPSAoKTsKICAgICBwdXNoKEB0
ZW1wbGF0ZVBhcmFtZXRlcnMsICRhdHRyaWJ1dGVTZXR0ZXJCb2R5TmFtZSk7Ci0gICAgcHVzaChA
dGVtcGxhdGVQYXJhbWV0ZXJzLCAiQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJldHVybkVhcmx5
IikgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVuaWVudFRoaXN9OworICAg
IHB1c2goQHRlbXBsYXRlUGFyYW1ldGVycywgIkNhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpSZXR1
cm5FYXJseSIpIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUxlbmll
bnRUaGlzfTsKICAgICAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJib29sICR7YXR0cmlidXRl
U2V0dGVyTmFtZX0oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKVxuIik7CiAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CkBAIC02NzIxLDcgKzY3MjEsNyBAQCBzdWIgSXNB
bm5vdGF0ZWRUeXBlCiAKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q2xhbXB9OwogICAgIHJldHVybiAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntF
bmZvcmNlUmFuZ2V9OwotICAgIHJldHVybiAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntUcmVhdE51bGxBc30gJiYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1RyZWF0TnVsbEFz
fSBlcSAiRW1wdHlTdHJpbmciOworICAgIHJldHVybiAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ307CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0F0b21TdHJpbmd9OwogICAgIHJldHVybiAxIGlmICR0eXBl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ307CiB9CkBA
IC02NzMyLDcgKzY3MzIsNyBAQCBzdWIgR2V0QW5ub3RhdGVkSURMVHlwZQogCiAgICAgcmV0dXJu
ICJJRExDbGFtcEFkYXB0b3IiIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDbGFtcH07
CiAgICAgcmV0dXJuICJJRExFbmZvcmNlUmFuZ2VBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57RW5mb3JjZVJhbmdlfTsKLSAgICByZXR1cm4gIklETFRyZWF0TnVsbEFzRW1w
dHlBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VHJlYXROdWxsQXN9ICYm
ICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntUcmVhdE51bGxBc30gZXEgIkVtcHR5U3RyaW5n
IjsKKyAgICByZXR1cm4gIklETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvciIgaWYgJHR5
cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nfTsKICAgICBy
ZXR1cm4gIklETEF0b21TdHJpbmdBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57QXRvbVN0cmluZ307CiAgICAgcmV0dXJuICJJRExSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmlu
Z0FkYXB0b3IiIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZXF1aXJlc0V4aXN0aW5n
QXRvbVN0cmluZ307CiB9CkBAIC03NjE2LDEyICs3NjE2LDEyIEBAIHN1YiBHZW5lcmF0ZUNvbnN0
cnVjdG9ySGVscGVyTWV0aG9kcwogICAgICAgICAkbGVhc3RDb25zdHJ1Y3Rvckxlbmd0aCA9IDA7
CiAgICAgfQogCi0gICAgIyBJZiB0aGUgaW50ZXJmYWNlIGhhcyBhIHBhcmVudCBpbnRlcmZhY2Ug
d2hpY2ggZG9lcyBub3QgaGF2ZSBbTm9JbnRlcmZhY2VPYmplY3RdLCB0aGVuIHVzZSBpdHMgaW50
ZXJmYWNlIG9iamVjdCBhcyBwcm90b3R5cGUsCisgICAgIyBJZiB0aGUgaW50ZXJmYWNlIGhhcyBh
IHBhcmVudCBpbnRlcmZhY2Ugd2hpY2ggZG9lcyBub3QgaGF2ZSBbTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3RdLCB0aGVuIHVzZSBpdHMgaW50ZXJmYWNlIG9iamVjdCBhcyBwcm90b3R5cGUsCiAgICAg
IyBvdGhlcndpc2UgdXNlIEZ1bmN0aW9uUHJvdG90eXBlOiBodHRwOi8vaGV5Y2FtLmdpdGh1Yi5p
by93ZWJpZGwvI2ludGVyZmFjZS1vYmplY3QKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ0ZW1w
bGF0ZTw+IEpTVmFsdWUgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OnByb3RvdHlwZUZvclN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdClc
biIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogCi0gICAgYXNzZXJ0KCJBbiBp
bnRlcmZhY2UgY2Fubm90IGluaGVyaXQgZnJvbSBhbm90aGVyIGludGVyZmFjZSB0aGF0IGlzIG1h
cmtlZCBhcyBbTm9JbnRlcmZhY2VPYmplY3RdIikgaWYgJGludGVyZmFjZS0+cGFyZW50VHlwZSAm
JiAkY29kZUdlbmVyYXRvci0+R2V0SW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzRnJvbU5hbWUo
JGludGVyZmFjZS0+cGFyZW50VHlwZS0+bmFtZSktPntOb0ludGVyZmFjZU9iamVjdH07CisgICAg
YXNzZXJ0KCJBbiBpbnRlcmZhY2UgY2Fubm90IGluaGVyaXQgZnJvbSBhbm90aGVyIGludGVyZmFj
ZSB0aGF0IGlzIG1hcmtlZCBhcyBbTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RdIikgaWYgJGludGVy
ZmFjZS0+cGFyZW50VHlwZSAmJiAkY29kZUdlbmVyYXRvci0+R2V0SW50ZXJmYWNlRXh0ZW5kZWRB
dHRyaWJ1dGVzRnJvbU5hbWUoJGludGVyZmFjZS0+cGFyZW50VHlwZS0+bmFtZSktPntMZWdhY3lO
b0ludGVyZmFjZU9iamVjdH07CiAKICAgICBpZiAoISRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3Rv
ciBhbmQgJGludGVyZmFjZS0+cGFyZW50VHlwZSkgewogICAgICAgICBteSAkcGFyZW50Q2xhc3NO
YW1lID0gIkpTIiAuICRpbnRlcmZhY2UtPnBhcmVudFR5cGUtPm5hbWU7CkBAIC03NjM4LDcgKzc2
MzgsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJ7XG4iKTsKIAogICAgICMgVGhlcmUgbXVzdCBleGlzdCBhbiBpbnRlcmZh
Y2UgcHJvdG90eXBlIG9iamVjdCBmb3IgZXZlcnkgbm9uLWNhbGxiYWNrIGludGVyZmFjZSBkZWZp
bmVkLCByZWdhcmRsZXNzCi0gICAgIyBvZiB3aGV0aGVyIHRoZSBpbnRlcmZhY2Ugd2FzIGRlY2xh
cmVkIHdpdGggdGhlIFtOb0ludGVyZmFjZU9iamVjdF0gZXh0ZW5kZWQgYXR0cmlidXRlLgorICAg
ICMgb2Ygd2hldGhlciB0aGUgaW50ZXJmYWNlIHdhcyBkZWNsYXJlZCB3aXRoIHRoZSBbTGVnYWN5
Tm9JbnRlcmZhY2VPYmplY3RdIGV4dGVuZGVkIGF0dHJpYnV0ZS4KICAgICAjIGh0dHBzOi8vaGV5
Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2ludGVyZmFjZS1wcm90b3R5cGUtb2JqZWN0CiAgICAgaWYg
KFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSgkaW50ZXJmYWNlKSkgewogICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIGdsb2JhbE9iamVjdC5nZXRQcm90b3R5cGVEaXJlY3Qodm0pLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7XG4iKTsKQEAgLTc3MzcsNyAr
NzczNyw3IEBAIHN1YiBOZWVkc0NvbnN0cnVjdG9yUHJvcGVydHkKIHsKICAgICBteSAkaW50ZXJm
YWNlID0gc2hpZnQ7CiAgICAgCi0gICAgcmV0dXJuICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntOb0ludGVyZmFjZU9iamVjdH07CisgICAgcmV0dXJuICEkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lOb0ludGVyZmFjZU9iamVjdH07CiB9CiAKIHN1YiBJc0Nv
bnN0cnVjdGFibGUKQEAgLTc3NjAsMTEgKzc3NjAsMTEgQEAgc3ViIEhlYWRlck5lZWRzUHJvdG90
eXBlRGVjbGFyYXRpb24KICAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q3VzdG9tRGVmaW5lT3duUHJvcGVydHlPblByb3RvdHlwZX07CiB9CiAKLXN1YiBJc1VuZm9y
Z2VhYmxlCitzdWIgSXNMZWdhY3lVbmZvcmdlYWJsZQogewogICAgIG15ICgkaW50ZXJmYWNlLCAk
cHJvcGVydHkpID0gQF87CiAKLSAgICByZXR1cm4gJHByb3BlcnR5LT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntVbmZvcmdlYWJsZX0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VW5m
b3JnZWFibGV9OworICAgIHJldHVybiAkcHJvcGVydHktPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xl
Z2FjeVVuZm9yZ2VhYmxlfSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdh
Y3lVbmZvcmdlYWJsZX07CiB9CiAKIHN1YiBDb21wdXRlRnVuY3Rpb25TcGVjaWFsCkBAIC03Nzcy
LDcgKzc3NzIsNyBAQCBzdWIgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbAogICAgIG15ICgkaW50ZXJm
YWNlLCAkb3BlcmF0aW9uKSA9IEBfOwogCiAgICAgbXkgQHNwZWNpYWxzID0gKCk7Ci0gICAgcHVz
aChAc3BlY2lhbHMsICgiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSIsICJKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSIpKSBpZiBJc1VuZm9yZ2VhYmxlKCRpbnRlcmZh
Y2UsICRvcGVyYXRpb24pOworICAgIHB1c2goQHNwZWNpYWxzLCAoIkpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUiLCAiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkiKSkg
aWYgSXNMZWdhY3lVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKTsKICAgICBwdXNo
KEBzcGVjaWFscywgIkpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIikgaWYgJG9wZXJh
dGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm90RW51bWVyYWJsZX07CiAgICAgaWYgKElzSlNC
dWlsdGluKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pKSB7CiAgICAgICAgIHB1c2goQHNwZWNpYWxz
LCAiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbiIpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHJldmlzaW9u
IDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRl
cy5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw2ICsxOSwxMyBAQAogICAgICAgICAiQWN0aXZl
RE9NT2JqZWN0IjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNl
Il0KICAgICAgICAgfSwKKyAgICAgICAgIkFsbG93U2hhcmVkIjogeworICAgICAgICAgICAgImNv
bnRleHRzQWxsb3dlZCI6IFsidHlwZSJdLAorICAgICAgICAgICAgInN0YW5kYXJkIjogeworICAg
ICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jQWxs
b3dTaGFyZWQiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInVuc3VwcG9ydGVkIjogdHJ1
ZQorICAgICAgICB9LAogICAgICAgICAiQXBwbGVDb3B5cmlnaHQiOiB7CiAgICAgICAgICAgICAi
Y29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiLCAiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJd
CiAgICAgICAgIH0sCkBAIC0yNiw3ICszMywxMCBAQAogICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsidHlwZSJdCiAgICAgICAgIH0sCiAgICAgICAgICJDRVJlYWN0aW9ucyI6IHsKLSAg
ICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQor
ICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJd
LAorICAgICAgICAgICAgInN0YW5kYXJkIjogeworICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvY3VzdG9tLWVsZW1lbnRzLmh0bWwj
Y2VyZWFjdGlvbnMiCisgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgICJDYWNoZWRB
dHRyaWJ1dGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUi
XQpAQCAtMjQyLDYgKzI1MiwxMyBAQAogICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9o
ZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jR2xvYmFsIgogICAgICAgICAgICAgfQogICAgICAgICB9
LAorICAgICAgICAiSFRNTENvbnN0cnVjdG9yIjogeworICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsib3BlcmF0aW9uIl0sCisgICAgICAgICAgICAic3RhbmRhcmQiOiB7CisgICAgICAg
ICAgICAgICAgInVybCI6ICJodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9k
b20uaHRtbCNodG1sY29uc3RydWN0b3IiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInVu
c3VwcG9ydGVkIjogdHJ1ZQorICAgICAgICB9LAogICAgICAgICAiSW1wbGVtZW50ZWRBcyI6IHsK
ICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSIsICJkaWN0aW9uYXJ5
IiwgImRpY3Rpb25hcnktbWVtYmVyIiwgImVudW0iLCAiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJd
LAogICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdCkBAIC0yOTYsMzAgKzMxMyw2OCBAQAogICAg
ICAgICAiTGVnYWN5Q2FsbGVyIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsi
b3BlcmF0aW9uIl0KICAgICAgICAgfSwKLSAgICAgICAgIkxlZ2FjeVVuZW51bWVyYWJsZU5hbWVk
UHJvcGVydGllcyI6IHsKKyAgICAgICAgIkxlZ2FjeUxlbmllbnRTZXR0ZXIiOiB7CisgICAgICAg
ICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwKKyAgICAgICAgICAgICJzdGFu
ZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5p
by93ZWJpZGwvI0xlZ2FjeUxlbmllbnRTZXR0ZXIiCisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgInVuc3VwcG9ydGVkIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5TGVuaWVu
dFRoaXMiOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwK
KyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBz
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeUxlbmllbnRUaGlzIgorICAgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5TmFtZXNwYWNlIjogewogICAgICAgICAg
ICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCiAgICAgICAgICAgICAic3RhbmRh
cmQiOiB7Ci0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8v
d2ViaWRsLyNMZWdhY3lVbmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMiCisgICAgICAgICAgICAg
ICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNMZWdhY3lOYW1lc3Bh
Y2UiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInVuc3VwcG9ydGVkIjogdHJ1ZQorICAg
ICAgICB9LAorICAgICAgICAiTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QiOiB7CisgICAgICAgICAg
ICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAgICAgICAgICJzdGFuZGFy
ZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93
ZWJpZGwvI0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0IgogICAgICAgICAgICAgfQogICAgICAgICB9
LAotICAgICAgICAiTGVnYWN5V2luZG93QWxpYXMiOiB7CisgICAgICAgICJMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZyI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbInR5cGUiXSwK
KyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBz
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nIgorICAg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5T3ZlcnJpZGVCdWlsdElucyI6
IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAotICAgICAg
ICAgICAgInZhbHVlcyI6IFsiKiJdLAogICAgICAgICAgICAgInN0YW5kYXJkIjogewotICAgICAg
ICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jTGVnYWN5
V2luZG93QWxpYXMiCisgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRo
dWIuaW8vd2ViaWRsLyNMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIgogICAgICAgICAgICAgfQogICAg
ICAgICB9LAotICAgICAgICAiTGVuaWVudFNldHRlciI6IHsKLSAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdLAorICAgICAgICAiTGVnYWN5VHJlYXROb25PYmplY3RB
c051bGwiOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJjYWxsYmFjay1mdW5j
dGlvbiJdLAogICAgICAgICAgICAgInN0YW5kYXJkIjogewotICAgICAgICAgICAgICAgICJ1cmwi
OiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jTGVuaWVudFNldHRlciIKKyAgICAg
ICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2Fj
eVRyZWF0Tm9uT2JqZWN0QXNOdWxsIgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJ1bnN1
cHBvcnRlZCI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgIkxlbmllbnRUaGlzIjogewotICAg
ICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIl0sCisgICAgICAgICJMZWdh
Y3lVbmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMiOiB7CisgICAgICAgICAgICAiY29udGV4dHNB
bGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAg
ICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2Fj
eVVuZW51bWVyYWJsZU5hbWVkUHJvcGVydGllcyIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgIkxlZ2FjeVVuZm9yZ2VhYmxlIjogeworICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiIsICJpbnRlcmZhY2UiXSwKKyAgICAgICAg
ICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2Ft
LmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeVVuZm9yZ2VhYmxlIgorICAgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAiTGVnYWN5V2luZG93QWxpYXMiOiB7CisgICAgICAgICAgICAiY29u
dGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioi
XSwKICAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAgICAgICAgICAgICAidXJsIjogImh0
dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlbmllbnRUaGlzIgorICAgICAgICAgICAg
ICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jTGVnYWN5V2luZG93
QWxpYXMiCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgICJNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkIjogewpAQCAtMzM5LDI2ICszOTQsMTQgQEAKICAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCiAgICAgICAgICJOZXdPYmplY3Qi
OiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiLCAib3BlcmF0
aW9uIl0sCisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJvcGVyYXRpb24iLCAiYXR0
cmlidXRlIl0sCiAgICAgICAgICAgICAic3RhbmRhcmQiOiB7CiAgICAgICAgICAgICAgICAgInVy
bCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNOZXdPYmplY3QiCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJOb0ludGVyZmFjZU9iamVjdCI6IHsKLSAgICAg
ICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAotICAgICAgICAgICAgInN0
YW5kYXJkIjogewotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHVi
LmlvL3dlYmlkbC8jTm9JbnRlcmZhY2VPYmplY3QiCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0s
CiAgICAgICAgICJOb3RFbnVtZXJhYmxlIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dl
ZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJdCiAgICAgICAgIH0sCi0gICAgICAgICJPdmVy
cmlkZUJ1aWx0aW5zIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJm
YWNlIl0sCi0gICAgICAgICAgICAic3RhbmRhcmQiOiB7Ci0gICAgICAgICAgICAgICAgInVybCI6
ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNPdmVycmlkZUJ1aWx0aW5zIgotICAg
ICAgICAgICAgfQotICAgICAgICB9LAogICAgICAgICAiT3ZlcnJpZGVJRExUeXBlIjogewogICAg
ICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsidHlwZSJdLAogICAgICAgICAgICAgInZhbHVl
cyI6IFsiKiJdCkBAIC00MjMsNyArNDY2LDcgQEAKICAgICAgICAgIlNhbWVPYmplY3QiOiB7CiAg
ICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwKICAgICAgICAgICAg
ICJzdGFuZGFyZCI6IHsKLSAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdp
dGh1Yi5pby93ZWJpZGwvI1JlcGxhY2VhYmxlIgorICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0
cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jU2FtZU9iamVjdCIKICAgICAgICAgICAgIH0s
CiAgICAgICAgICAgICAidW5zdXBwb3J0ZWQiOiB0cnVlCiAgICAgICAgIH0sCkBAIC00MzMsNiAr
NDc2LDEzIEBACiAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIu
aW8vd2ViaWRsLyNTZWN1cmVDb250ZXh0IgogICAgICAgICAgICAgfQogICAgICAgICB9LAorICAg
ICAgICAiU2VyaWFsaXphYmxlIjogeworICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsi
aW50ZXJmYWNlIl0sCisgICAgICAgICAgICAic3RhbmRhcmQiOiB7CisgICAgICAgICAgICAgICAg
InVybCI6ICJodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zdHJ1Y3R1cmVk
LWRhdGEuaHRtbCNzZXJpYWxpemFibGUiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInVu
c3VwcG9ydGVkIjogdHJ1ZQorICAgICAgICB9LAogICAgICAgICAiU2V0dGVyQ2FsbFdpdGgiOiB7
CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwKICAgICAgICAg
ICAgICJ2YWx1ZXMiOiBbIkV4ZWNTdGF0ZSIsICJTY3JpcHRFeGVjdXRpb25Db250ZXh0IiwgIkds
b2JhbE9iamVjdCIsICJBY3RpdmVXaW5kb3ciLCAiRmlyc3RXaW5kb3ciXSwKQEAgLTQ0NywyOSAr
NDk3LDE2IEBACiAgICAgICAgICJTdXBwcmVzc1RvSlNPYmplY3QiOiB7CiAgICAgICAgICAgICAi
Y29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LAotICAgICAgICAiVHJl
YXROb25PYmplY3RBc051bGwiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJj
YWxsYmFjay1mdW5jdGlvbiJdLAorICAgICAgICAiVHJhbnNmZXJhYmxlIjogeworICAgICAgICAg
ICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCiAgICAgICAgICAgICAic3RhbmRh
cmQiOiB7Ci0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8v
d2ViaWRsLyNUcmVhdE5vbk9iamVjdEFzTnVsbCIKKyAgICAgICAgICAgICAgICAidXJsIjogImh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N0cnVjdHVyZWQtZGF0YS5odG1s
I3RyYW5zZmVyYWJsZSIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAidW5zdXBwb3J0ZWQi
OiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJUcmVhdE51bGxBcyI6IHsKLSAgICAgICAgICAg
ICJjb250ZXh0c0FsbG93ZWQiOiBbInR5cGUiXSwKLSAgICAgICAgICAgICJ2YWx1ZXMiOiBbIkVt
cHR5U3RyaW5nIl0sCi0gICAgICAgICAgICAic3RhbmRhcmQiOiB7Ci0gICAgICAgICAgICAgICAg
InVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNUcmVhdE51bGxBcyIKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSwKICAgICAgICAgIlVSTCI6IHsKICAgICAgICAgICAgICJj
b250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdCiAgICAgICAgIH0sCi0gICAgICAgICJVbmZv
cmdlYWJsZSI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIs
ICJvcGVyYXRpb24iLCAiaW50ZXJmYWNlIl0sCi0gICAgICAgICAgICAic3RhbmRhcmQiOiB7Ci0g
ICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNV
bmZvcmdlYWJsZSIKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKICAgICAgICAgIlVuc2NvcGFi
bGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiLCAib3Bl
cmF0aW9uIl0sCiAgICAgICAgICAgICAic3RhbmRhcmQiOiB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAkocmV2aXNpb24g
MjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlk
bHMucGwJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw3ICsxNjQsNyBAQCBmb3JlYWNoIG15ICRpZGxG
aWxlIChzb3J0IGtleXMgJWlkbEZpbGVICiAKICAgICAjIEZvciBldmVyeSBpbnRlcmZhY2UgdGhh
dCBpcyBleHBvc2VkIGluIGEgZ2l2ZW4gRUNNQVNjcmlwdCBnbG9iYWwgZW52aXJvbm1lbnQgYW5k
OgogICAgICMgLSBpcyBhIGNhbGxiYWNrIGludGVyZmFjZSB0aGF0IGhhcyBjb25zdGFudHMgZGVj
bGFyZWQgb24gaXQsIG9yCi0gICAgIyAtIGlzIGEgbm9uLWNhbGxiYWNrIGludGVyZmFjZSB0aGF0
IGlzIG5vdCBkZWNsYXJlZCB3aXRoIHRoZSBbTm9JbnRlcmZhY2VPYmplY3RdIGV4dGVuZGVkIGF0
dHJpYnV0ZSwgYSBjb3JyZXNwb25kaW5nCisgICAgIyAtIGlzIGEgbm9uLWNhbGxiYWNrIGludGVy
ZmFjZSB0aGF0IGlzIG5vdCBkZWNsYXJlZCB3aXRoIHRoZSBbTGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3RdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgYSBjb3JyZXNwb25kaW5nCiAgICAgIyAgIHByb3BlcnR5
IG11c3QgZXhpc3Qgb24gdGhlIEVDTUFTY3JpcHQgZW52aXJvbm1lbnQncyBnbG9iYWwgb2JqZWN0
LgogICAgICMgU2VlIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2VzLWludGVyZmFj
ZXMKICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVzID0gZ2V0SW50ZXJmYWNlRXh0ZW5kZWRBdHRy
aWJ1dGVzRnJvbUlETCgkaWRsRmlsZUNvbnRlbnRzKTsKQEAgLTQ1OSw3ICs0NTksNyBAQCBzdWIg
c2hvdWxkRXhwb3NlSW50ZXJmYWNlCiB7CiAgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9IHNo
aWZ0OwogCi0gICAgcmV0dXJuICEkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vSW50ZXJmYWNlT2Jq
ZWN0In07CisgICAgcmV0dXJuICEkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkxlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0In07CiB9CiAKIHN1YiB1cGRhdGVEaWN0aW9uYXJ5RGVwZW5kZW5jaWVzCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9iYWxD
b25zdHJ1Y3RvcnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9CaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9ycy5pZGwJKHJldmlzaW9uIDI2
NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5nVGVz
dEdsb2JhbENvbnN0cnVjdG9ycy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAg
cGFydGlhbCBpbnRlcmZhY2UgVGVzdEdsb2JhbE9iamVjdCB7CiAgICAgYXR0cmlidXRlIFRlc3RJ
bnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yIFRlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZTsKICAgICBhdHRyaWJ1dGUgVGVzdEl0ZXJhYmxlQ29uc3RydWN0b3IgVGVzdEl0
ZXJhYmxlOwogICAgIGF0dHJpYnV0ZSBUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
ciBUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I7CisgICAgYXR0cmlidXRlIFRlc3RMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM7CiAgICAg
YXR0cmlidXRlIFRlc3RNYXBMaWtlQ29uc3RydWN0b3IgVGVzdE1hcExpa2U7CiAgICAgYXR0cmli
dXRlIFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciBUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOwogICAgIGF0dHJpYnV0ZSBUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvciBUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb247CkBAIC00MiwxMiArNDMsMTEgQEAgcGFy
dGlhbCBpbnRlcmZhY2UgVGVzdEdsb2JhbE9iamVjdCB7CiAgICAgYXR0cmlidXRlIFRlc3ROYW1l
ZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IgVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50
aWZpZXI7CiAgICAgYXR0cmlidXRlIFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQ29u
c3RydWN0b3IgVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI7CiAgICAgYXR0cmlidXRl
IFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyQ29uc3RydWN0b3IgVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI7Ci0gICAgYXR0cmlidXRlIFRl
c3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IgVGVzdE5hbWVkU2V0
dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM7Ci0gICAgYXR0cmlidXRlIFRlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yIFRlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllczsKLSAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yIFRlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM7CisgICAgYXR0
cmlidXRlIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0
b3IgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM7CisgICAgYXR0cmli
dXRlIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1
Y3RvciBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOworICAg
IGF0dHJpYnV0ZSBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yIFRlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOwogICAg
IFtDb25kaXRpb25hbD1Db25kaXRpb25EZXJpdmVkXSBhdHRyaWJ1dGUgVGVzdE9wZXJhdGlvbkNv
bmRpdGlvbmFsQ29uc3RydWN0b3IgVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsOwogICAgIGF0dHJp
YnV0ZSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yIFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOwotICAgIGF0dHJpYnV0ZSBUZXN0
T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yIFRlc3RPdmVycmlkZUJ1aWx0aW5zOwogICAgIGF0
dHJpYnV0ZSBUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IgVGVzdFBsdWdpbkludGVyZmFj
ZTsKICAgICBhdHRyaWJ1dGUgVGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0cnVjdG9yIFRlc3RSZWFk
T25seU1hcExpa2U7CiAgICAgYXR0cmlidXRlIFRlc3RSZWFkT25seVNldExpa2VDb25zdHJ1Y3Rv
ciBUZXN0UmVhZE9ubHlTZXRMaWtlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2ll
cy5kZXAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTAsNiArMTEwLDkgQEAgV2ViRE9NVGVzdEl0ZXJhYmxlLmg6IAogSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IuaDogCiBET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaDogCiBXZWJET01UZXN0
SlNCdWlsdGluQ29uc3RydWN0b3IuaDogCitKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmg6
IAorRE9NVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaDogCitXZWJET01UZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5oOiAKIEpTVGVzdE1hcExpa2UuaDogCiBET01UZXN0TWFwTGlrZS5oOiAK
IFdlYkRPTVRlc3RNYXBMaWtlLmg6IApAQCAtMTYxLDE1ICsxNjQsMTUgQEAgV2ViRE9NVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlci5oOiAKIERPTVRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyLmg6IAogV2ViRE9NVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXIuaDogCi1KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmg6IAotRE9N
VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaDogCi1XZWJET01UZXN0TmFtZWRT
ZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5oOiAKLUpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzLmg6IAotRE9NVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzLmg6IAotV2ViRE9NVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
Lmg6IAotSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zLmg6IAotRE9NVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGlucy5oOiAKLVdlYkRPTVRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaDogCitKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmg6IAorRE9NVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuaDogCitXZWJET01UZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5oOiAKK0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllcy5oOiAKK0RPTVRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXMuaDogCitXZWJET01UZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzLmg6IAorSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oOiAKK0RPTVRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmg6
IAorV2ViRE9NVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaDogCiBKU1Rlc3ROb2RlLmg6IAogRE9NVGVzdE5vZGUu
aDogCiBXZWJET01UZXN0Tm9kZS5oOiAKQEAgLTE4Myw5ICsxODYsNiBAQCBUZXN0T3BlcmF0aW9u
QmFzZS5pZGw6CiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmg6IAog
RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuaDogCiBXZWJET01UZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5oOiAKLUpTVGVzdE92ZXJyaWRlQnVp
bHRpbnMuaDogCi1ET01UZXN0T3ZlcnJpZGVCdWlsdGlucy5oOiAKLVdlYkRPTVRlc3RPdmVycmlk
ZUJ1aWx0aW5zLmg6IAogSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmg6IAogRE9NVGVzdFBsdWdpbklu
dGVyZmFjZS5oOiAKIFdlYkRPTVRlc3RQbHVnaW5JbnRlcmZhY2UuaDogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEluY2x1ZGVzLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEluY2x1ZGVzLmlk
bAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RJbmNsdWRlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIC8v
IGNoYW5nZXMgaW4gaXRzIG91dHB1dC4KIFsKICAgICBDb25kaXRpb25hbD1Db25kaXRpb24yMnxD
b25kaXRpb24yMywKLSAgICBOb0ludGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNl
T2JqZWN0CiBdIGludGVyZmFjZSBUZXN0SW5jbHVkZXMgewogICAgIHN0YXRpYyByZWFkb25seSBh
dHRyaWJ1dGUgbG9uZyBpbmNsdWRlc1N0YXRpY1JlYWRPbmx5QXR0cjsKICAgICBzdGF0aWMgYXR0
cmlidXRlIERPTVN0cmluZyBpbmNsdWRlc1N0YXRpY0F0dHI7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdElucy5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMKK10gaW50ZXJmYWNlIFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIHsK
KyAgICBnZXR0ZXIgTm9kZSBuYW1lZEl0ZW0oRE9NU3RyaW5nIG5hbWUpOworfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5T3ZlcnJpZGVCdWlsdElucy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgTGVnYWN5T3Zl
cnJpZGVCdWlsdElucworXSBpbnRlcmZhY2UgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMgeworICAgIHNldHRlciB1bmRlZmluZWQgKERPTVN0cmluZyBuYW1lLCBET01T
dHJpbmcgdmFsdWUpOworCisgICAgLy8gTk9URTogTmFtZWQgc2V0dGVycyByZXF1aXJlIHRoZSBw
cmVzZW5jZSBvZiBhIG5hbWVkIGdldHRlciBhcyB3ZWxsLgorICAgIGdldHRlciBET01TdHJpbmcg
KERPTVN0cmluZyBuYW1lKTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaWRsCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworaW50ZXJmYWNlIFRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgeworICAgIHNldHRlciB1bmRlZmluZWQgKERP
TVN0cmluZyBuYW1lLCBET01TdHJpbmcgdmFsdWUpOworCisgICAgLy8gTk9URTogTmFtZWQgc2V0
dGVycyByZXF1aXJlIHRoZSBwcmVzZW5jZSBvZiBhIG5hbWVkIGdldHRlciBhcyB3ZWxsLgorICAg
IGdldHRlciBET01TdHJpbmcgKERPTVN0cmluZyBuYW1lKTsKKworICAgIFtMZWdhY3lVbmZvcmdl
YWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1bmZvcmdlYWJsZUF0dHJpYnV0ZTsK
KyAgICBbTGVnYWN5VW5mb3JnZWFibGVdIHVuZGVmaW5lZCB1bmZvcmdlYWJsZU9wZXJhdGlvbigp
OworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdElucy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgTGVnYWN5T3ZlcnJpZGVCdWls
dElucworXSBpbnRlcmZhY2UgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgeworICAgIHNldHRlciB1bmRlZmluZWQg
KERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgdmFsdWUpOworCisgICAgLy8gTk9URTogTmFtZWQg
c2V0dGVycyByZXF1aXJlIHRoZSBwcmVzZW5jZSBvZiBhIG5hbWVkIGdldHRlciBhcyB3ZWxsLgor
ICAgIGdldHRlciBET01TdHJpbmcgKERPTVN0cmluZyBuYW1lKTsKKworICAgIFtMZWdhY3lVbmZv
cmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1bmZvcmdlYWJsZUF0dHJpYnV0
ZTsKKyAgICBbTGVnYWN5VW5mb3JnZWFibGVdIHVuZGVmaW5lZCB1bmZvcmdlYWJsZU9wZXJhdGlv
bigpOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmlkbAko
bm9uZXhpc3RlbnQpCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgT3ZlcnJp
ZGVCdWlsdGlucwotXSBpbnRlcmZhY2UgVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnMgewotICAgIHNldHRlciB1bmRlZmluZWQgKERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgdmFs
dWUpOwotCi0gICAgLy8gTk9URTogTmFtZWQgc2V0dGVycyByZXF1aXJlIHRoZSBwcmVzZW5jZSBv
ZiBhIG5hbWVkIGdldHRlciBhcyB3ZWxsLgotICAgIGdldHRlciBET01TdHJpbmcgKERPTVN0cmlu
ZyBuYW1lKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllcy5pZGwJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotaW50ZXJmYWNlIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyB7Ci0g
ICAgc2V0dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyB2YWx1ZSk7Ci0K
LSAgICAvLyBOT1RFOiBOYW1lZCBzZXR0ZXJzIHJlcXVpcmUgdGhlIHByZXNlbmNlIG9mIGEgbmFt
ZWQgZ2V0dGVyIGFzIHdlbGwuCi0gICAgZ2V0dGVyIERPTVN0cmluZyAoRE9NU3RyaW5nIG5hbWUp
OwotCi0gICAgW1VuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVuZm9y
Z2VhYmxlQXR0cmlidXRlOwotICAgIFtVbmZvcmdlYWJsZV0gdW5kZWZpbmVkIHVuZm9yZ2VhYmxl
T3BlcmF0aW9uKCk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnMuaWRsCShub25leGlzdGVudCkKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLVsKLSAgICBPdmVycmlkZUJ1aWx0aW5zCi1dIGludGVyZmFjZSBUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zIHsKLSAgICBzZXR0
ZXIgdW5kZWZpbmVkIChET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKLQotICAgIC8v
IE5PVEU6IE5hbWVkIHNldHRlcnMgcmVxdWlyZSB0aGUgcHJlc2VuY2Ugb2YgYSBuYW1lZCBnZXR0
ZXIgYXMgd2VsbC4KLSAgICBnZXR0ZXIgRE9NU3RyaW5nIChET01TdHJpbmcgbmFtZSk7Ci0KLSAg
ICBbVW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdW5mb3JnZWFibGVB
dHRyaWJ1dGU7Ci0gICAgW1VuZm9yZ2VhYmxlXSB1bmRlZmluZWQgdW5mb3JnZWFibGVPcGVyYXRp
b24oKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTczLDExICs3
MywxMSBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAgICAgYXR0
cmlidXRlIFVTVlN0cmluZyB1c3ZzdHJpbmdBdHRyOwogICAgIGF0dHJpYnV0ZSBUZXN0T2JqIHRl
c3RPYmpBdHRyOwogICAgIGF0dHJpYnV0ZSBUZXN0T2JqPyB0ZXN0TnVsbGFibGVPYmpBdHRyOwot
ICAgIFtMZW5pZW50VGhpc10gYXR0cmlidXRlIFRlc3RPYmogbGVuaWVudFRlc3RPYmpBdHRyOwot
ICAgIFtVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1bmZvcmdlYWJs
ZUF0dHI7Ci0gICAgYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5n
IHN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nOwotICAgIGF0dHJpYnV0ZSBbVHJl
YXROdWxsQXM9RW1wdHlTdHJpbmddIFVTVlN0cmluZyB1c3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxs
QXNFbXB0eVN0cmluZzsKLSAgICBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBC
eXRlU3RyaW5nIGJ5dGVTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZzsKKyAgICBb
TGVnYWN5TGVuaWVudFRoaXNdIGF0dHJpYnV0ZSBUZXN0T2JqIGxlbmllbnRUZXN0T2JqQXR0cjsK
KyAgICBbTGVnYWN5VW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdW5m
b3JnZWFibGVBdHRyOworICAgIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERP
TVN0cmluZyBzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZzsKKyAgICBhdHRyaWJ1
dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBVU1ZTdHJpbmcgdXN2c3RyaW5nQXR0clRyZWF0
aW5nTnVsbEFzRW1wdHlTdHJpbmc7CisgICAgYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ10gQnl0ZVN0cmluZyBieXRlU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmc7
CiAgICAgYXR0cmlidXRlIHJlY29yZDxET01TdHJpbmcsIGxvbmc+IHN0cmluZ0xvbmdSZWNvcmRB
dHRyOwogICAgIGF0dHJpYnV0ZSByZWNvcmQ8VVNWU3RyaW5nLCBsb25nPiB1c3ZzdHJpbmdMb25n
UmVjb3JkQXR0cjsKICAgICBhdHRyaWJ1dGUgcmVjb3JkPEJ5dGVTdHJpbmcsIGxvbmc+IHVzdnN0
cmluZ0xvbmdSZWNvcmRBdHRyOwpAQCAtMTQyLDggKzE0Miw4IEBAIGVudW0gVGVzdENvbmZpZGVu
Y2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBsb25nIGxvbmdNZXRob2RXaXRoQXJncyhsb25n
IGxvbmdBcmcsIERPTVN0cmluZyBzdHJBcmcsIFRlc3RPYmogb2JqQXJnKTsKICAgICBUZXN0T2Jq
IG9iak1ldGhvZCgpOwogICAgIFRlc3RPYmogb2JqTWV0aG9kV2l0aEFyZ3MobG9uZyBsb25nQXJn
LCBET01TdHJpbmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7Ci0gICAgW1VuZm9yZ2VhYmxlXSBs
b25nIHVuZm9yZ2VhYmxlTWV0aG9kKCk7Ci0gICAgdW5kZWZpbmVkIG1ldGhvZFdpdGhBcmdUcmVh
dGluZ051bGxBc0VtcHR5U3RyaW5nKFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5n
IGFyZyk7CisgICAgW0xlZ2FjeVVuZm9yZ2VhYmxlXSBsb25nIHVuZm9yZ2VhYmxlTWV0aG9kKCk7
CisgICAgdW5kZWZpbmVkIG1ldGhvZFdpdGhBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFtM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGFyZyk7CiAgICAgdW5kZWZpbmVkIG1l
dGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIoWFBhdGhOU1Jlc29sdmVyIHJlc29sdmVy
KTsKIAogICAgIC8vIE51bGxhYmxlIFN0cmluZyByZXR1cm4gdmFsdWVzLgpAQCAtMTU5LDExICsx
NTksMTEgQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogCiAgICAg
dW5kZWZpbmVkIG1ldGhvZFdpdGhVU1ZTdHJpbmdBcmcoVVNWU3RyaW5nIHN0cik7CiAgICAgdW5k
ZWZpbmVkIG1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyhVU1ZTdHJpbmc/IHN0cik7Ci0g
ICAgdW5kZWZpbmVkIG1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3Ry
aW5nKFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gVVNWU3RyaW5nIHN0cik7CisgICAgdW5kZWZp
bmVkIG1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFtMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ10gVVNWU3RyaW5nIHN0cik7CiAKICAgICB1bmRlZmluZWQgbWV0
aG9kV2l0aEJ5dGVTdHJpbmdBcmcoQnl0ZVN0cmluZyBzdHIpOwogICAgIHVuZGVmaW5lZCBtZXRo
b2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnKEJ5dGVTdHJpbmc/IHN0cik7Ci0gICAgdW5kZWZp
bmVkIG1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhbVHJl
YXROdWxsQXM9RW1wdHlTdHJpbmddIEJ5dGVTdHJpbmcgc3RyKTsKKyAgICB1bmRlZmluZWQgbWV0
aG9kV2l0aEJ5dGVTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFtMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ10gQnl0ZVN0cmluZyBzdHIpOwogCiAgICAgdW5kZWZpbmVkIHNlcmlhbGl6
ZWRWYWx1ZShTZXJpYWxpemVkU2NyaXB0VmFsdWUgc2VyaWFsaXplZEFyZyk7CiAKQEAgLTQ1MCw4
ICs0NTAsOCBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAgICAg
W0NvbmRpdGlvbmFsPUNPTkRJVElPTjIsIENvbmRpdGlvbmFsbHlSZWFkV3JpdGU9Q09ORElUSU9O
XSBhdHRyaWJ1dGUgTm9kZSBjb25kaXRpb25hbEFuZENvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRy
aWJ1dGU7CiAKICAgICBbUnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGU9VGVzdEZlYXR1cmVd
IGF0dHJpYnV0ZSBOb2RlIHJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlOwot
ICAgIFtSdW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZT1UZXN0RmVhdHVyZSwgVW5mb3JnZWFi
bGVdIGF0dHJpYnV0ZSBOb2RlIHJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRl
VW5mb3JnZWFibGU7Ci0gICAgW1J1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlPVRlc3RGZWF0
dXJlLCBQcml2YXRlSWRlbnRpZmllciwgVW5mb3JnZWFibGVdIGF0dHJpYnV0ZSBOb2RlIHJ1bnRp
bWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlVW5mb3JnZWFibGVQcml2YXRlOworICAg
IFtSdW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZT1UZXN0RmVhdHVyZSwgTGVnYWN5VW5mb3Jn
ZWFibGVdIGF0dHJpYnV0ZSBOb2RlIHJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmli
dXRlVW5mb3JnZWFibGU7CisgICAgW1J1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlPVRlc3RG
ZWF0dXJlLCBQcml2YXRlSWRlbnRpZmllciwgTGVnYWN5VW5mb3JnZWFibGVdIGF0dHJpYnV0ZSBO
b2RlIHJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlVW5mb3JnZWFibGVQcml2
YXRlOwogICAgIFtSdW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZT1UZXN0RmVhdHVyZV0gYXR0
cmlidXRlIFByb21pc2U8ZG91YmxlPiBydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJp
YnV0ZVByb21pc2U7CiAKICAgICBbRXhwb3NlZD1XaW5kb3ddIGF0dHJpYnV0ZSBsb25nIGNvbmRp
dGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBdHRyaWJ1dGU7CkBAIC00NzYsNyArNDc2LDcgQEAgdHlw
ZWRlZiBhbnkgQW55VHlwZWRlZjsKICAgICBET01TdHJpbmcgc3RyaW5nV2l0aERlZmF1bHQgPSAi
ZGVmYXVsdFN0cmluZyI7CiAgICAgRE9NU3RyaW5nIHN0cmluZ1dpdGhvdXREZWZhdWx0OwogICAg
IERPTVN0cmluZz8gbnVsbGFibGVTdHJpbmdXaXRoRGVmYXVsdCA9IG51bGw7Ci0gICAgW1RyZWF0
TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmlu
ZzsKKyAgICBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBzdHJpbmdUcmVhdE51
bGxBc0VtcHR5U3RyaW5nOwogICAgIGJvb2xlYW4gYm9vbGVhbldpdGhEZWZhdWx0ID0gZmFsc2U7
CiAgICAgYm9vbGVhbiBib29sZWFuV2l0aG91dERlZmF1bHQ7CiAgICAgc2VxdWVuY2U8RE9NU3Ry
aW5nPiBzZXF1ZW5jZU9mU3RyaW5nczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0T3BlcmF0aW9uQmFzZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPcGVyYXRpb25CYXNlLmlkbAkocmV2aXNp
b24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RP
cGVyYXRpb25CYXNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiBbCiAg
ICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9uQmFzZSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAg
ICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFRlc3RPcGVyYXRpb25CYXNl
IHsKICAgICB1bmRlZmluZWQgbm9uQ29uZGl0aW9uYWxPcGVyYXRpb24oKTsKICAgICBbQ29uZGl0
aW9uYWw9Q29uZGl0aW9uT3BlcmF0aW9uXSB1bmRlZmluZWQgY29uZGl0aW9uYWxPcGVyYXRpb24o
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T3ZlcnJp
ZGVCdWlsdGlucy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPdmVycmlkZUJ1aWx0aW5z
LmlkbAkobm9uZXhpc3RlbnQpCkBAIC0xLDYgKzAsMCBAQAotWwotICAgIE92ZXJyaWRlQnVpbHRp
bnMKLV0gaW50ZXJmYWNlIFRlc3RPdmVycmlkZUJ1aWx0aW5zCi17Ci0gICAgZ2V0dGVyIE5vZGUg
bmFtZWRJdGVtKERPTVN0cmluZyBuYW1lKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5jcHAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw3
ICsxNzIsNyBAQCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsCiAgICAg
ICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBl
IHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJv
cGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4o
KmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1
bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1l
ZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAg
YXV0byB2YWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFs
dWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0yMDEsNyArMjAxLDcgQEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdl
dDo6Z2V0T3duUHJvcGVydHlTbAogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklE
TFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZy
b21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAg
fTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVy
dHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJv
cGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
OjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdl
dHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxO
b2RlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwg
V1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0
aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmUuaCIKICNpbmNsdWRlICJKU1Rlc3RJdGVyYWJsZS5oIgogI2luY2x1ZGUgIkpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdElucy5oIgogI2luY2x1ZGUgIkpTVGVzdE1hcExpa2UuaCIKICNpbmNsdWRlICJKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oIgpAQCAtNzUsMTEgKzc2LDEwIEBA
CiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuaCIKICNpbmNsdWRlICJKU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmgiCi0jaW5jbHVkZSAiSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5oIgotI2luY2x1ZGUgIkpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmgiCi0jaW5jbHVkZSAiSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmgiCisjaW5j
bHVkZSAiSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oIgorI2lu
Y2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5o
IgorI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaCIKICNpbmNsdWRlICJKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmgiCi0jaW5jbHVkZSAiSlNUZXN0T3ZlcnJpZGVC
dWlsdGlucy5oIgogI2luY2x1ZGUgIkpTVGVzdFBsdWdpbkludGVyZmFjZS5oIgogI2luY2x1ZGUg
IkpTVGVzdFJlYWRPbmx5TWFwTGlrZS5oIgogI2luY2x1ZGUgIkpTVGVzdFJlYWRPbmx5U2V0TGlr
ZS5oIgpAQCAtMjIzLDYgKzIyMyw4IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFs
T2JqZWN0VGUKIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEl0ZXJhYmxlQ29uc3RydWN0
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RHbG9iYWxP
YmplY3RUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEdsb2JhbE9iamVjdFRlc3RNYXBMaWtlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNU
ZXN0R2xvYmFsT2JqZWN0VGVzdE1hcExpa2VDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXJDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwpAQCAtMjU5LDIwICsyNjEsMTggQEAgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZQogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVj
dG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRK
U1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0
cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJv
b2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9i
YWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0Nv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3Zl
cnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29u
c3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnND
b25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiAjaWYgRU5BQkxFKENvbmRpdGlvbkRlcml2ZWQpCiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RPcGVyYXRpb25Db25kaXRpb25hbENv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RPcGVyYXRpb25D
b25kaXRpb25hbENvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVj
dG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVycmlkZUJ1aWx0aW5z
Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0R2xv
YmFsT2JqZWN0VGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0cnVj
dG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CkBAIC0zMjAsMTMgKzMyMCwxMyBAQCB1c2luZyBKU1Rlc3RHbG9iYWxPYmplY3RD
b25zdHJ1Y3RvciA9IEpTCiAKIC8qIEhhc2ggdGFibGUgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVj
dCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY4XSA9IHsK
K3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RHbG9iYWxPYmplY3RU
YWJsZUluZGV4WzI2OV0gPSB7CiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQwLCAtMSB9LAorICAg
IHsgNDEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDAsIC0xIH0sCi0gICAgeyA4LCAy
NjMgfSwKLSAgICB7IDQ0LCAtMSB9LAorICAgIHsgOCwgMjY0IH0sCisgICAgeyA0NSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTM1
Niw3ICszNTYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAz
NCwgLTEgfSwKKyAgICB7IDM1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzcxLDEwICszNzEsMTEgQEAgc3RhdGljIGNvbnN0IHN0
cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzgsIC0xIH0sCi0gICAgeyAyMCwgMjY0IH0sCisg
ICAgeyAzOSwgLTEgfSwKKyAgICB7IDIwLCAyNjUgfSwKICAgICB7IDEwLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCisgICAgeyA0NiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTM4MywxNSArMzg0LDE0IEBAIHN0YXRpYyBjb25zdCBz
dHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAotICAgIHsgMzYsIC0xIH0sCisg
ICAgeyAzNywgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKLSAgICB7IDIyLCAyNjUgfSwKKyAgICB7IDIyLCAyNjYgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQxOSwyNCArNDE5LDI0IEBAIHN0
YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IDE5LCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ2LCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAxOCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzUsIC0xIH0sCisg
ICAgeyAzNiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyA0
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAotICAgIHsgNTAsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKICAgICB7IDI1LCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCi0gICAgeyAyLCAyNjcgfSwKLSAgICB7IDM3LCAtMSB9LAorICAgIHsgMiwg
MjY4IH0sCisgICAgeyAzOCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKQEAgLTQ1MiwxMCArNDUyLDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1
Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDMxLCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCisgICAg
eyAzMiwgLTEgfSwKKyAgICB7IDI3LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0Miwg
LTEgfSwKKyAgICB7IDQzLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LApAQCAtNDY5LDcgKzQ2OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg
Q29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAorICAgIHsgNDgsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00ODMsOCArNDgz
LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzIsIC0xIH0s
Ci0gICAgeyAyOSwgMjYyIH0sCisgICAgeyAzMywgLTEgfSwKKyAgICB7IDMwLCAyNjIgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgNSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNTA1LDcg
KzUwNSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDMzLCAy
NjYgfSwKKyAgICB7IDM0LCAyNjcgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMTcsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKQEAgLTUyOCw3ICs1MjgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0
IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1NiwgLTEgfSwKKyAgICB7IDQ3LCAyNjMgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAzLCAtMSB9LApAQCAtNTUwLDEyICs1
NTAsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDgsIDI2
MSB9LAorICAgIHsgNDksIDI2MSB9LAogICAgIHsgMTEsIDI2MCB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyA2MywgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDcsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKQEAgLTU2NSwxMCArNTY1LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1QKICAgICB7IDI2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKLSAgICB7IDI4LCAtMSB9LAorICAgIHsgMjksIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0NSwgLTEgfSwKICAgICB7
IDcsIC0xIH0sCiAgICAgeyA1MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNTc3LDEzICs1
NzcsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjcsIDI1
OSB9LAotICAgIHsgMzAsIC0xIH0sCi0gICAgeyAzOSwgLTEgfSwKLSAgICB7IDQxLCAtMSB9LAot
ICAgIHsgNDMsIC0xIH0sCi0gICAgeyA0OSwgLTEgfSwKKyAgICB7IDI4LCAyNTkgfSwKKyAgICB7
IDMxLCAtMSB9LAorICAgIHsgNDAsIC0xIH0sCisgICAgeyA0MiwgLTEgfSwKKyAgICB7IDQ0LCAt
MSB9LAorICAgIHsgNTAsIC0xIH0sCiAgICAgeyA1NSwgLTEgfSwKKyAgICB7IDU2LCAtMSB9LAog
ICAgIHsgNTcsIC0xIH0sCiAgICAgeyA1OSwgLTEgfSwKICAgICB7IDY0LCAtMSB9LApAQCAtNjMz
LDYgKzYzNCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RHbG9iYWwKICAg
ICB7ICJUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2Jh
bE9iamVjdFRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
R2xvYmFsT2JqZWN0VGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3IpIH0g
fSwKICAgICB7ICJUZXN0SXRlcmFibGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RJ
dGVyYWJsZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEl0ZXJhYmxlQ29uc3Ry
dWN0b3IpIH0gfSwKICAgICB7ICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0R2xvYmFsT2JqZWN0VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH0gfSwK
KyAgICB7ICJUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFs
T2JqZWN0VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2Jh
bE9iamVjdFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH0gfSwKICAgICB7
ICJUZXN0TWFwTGlrZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE1hcExpa2VDb25z
dHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RNYXBMaWtlQ29uc3RydWN0b3IpIH0gfSwK
ICAgICB7ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xv
YmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3Ry
dWN0b3IpIH0gfSwKQEAgLTY1MSwxNiArNjUzLDE1IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3RHbG9iYWwKICAgICB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJD
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyQ29u
c3RydWN0b3IpIH0gfSwKLSAgICB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlu
cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH0gfSwKLSAgICB7ICJUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3Ry
dWN0b3IpIH0gfSwKLSAgICB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xv
YmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2Jh
bE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH0gfSwKICNpZiBFTkFCTEUoQ29uZGl0
aW9uRGVyaXZlZCkKICAgICB7ICJUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdEdsb2JhbE9iamVjdFRlc3RPcGVyYXRpb25Db25kaXRpb25hbENvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0R2xvYmFsT2JqZWN0VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsQ29uc3RydWN0b3IpIH0gfSwK
ICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogICAg
IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RHbG9iYWxPYmplY3RUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2VDb25zdHJ1Y3RvcikgfSB9LAotICAgIHsgIlRlc3RPdmVycmlkZUJ1aWx0aW5zIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcikgfSB9
LAogICAgIHsgIlRlc3RQbHVnaW5JbnRlcmZhY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVj
dFRlc3RQbHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RQ
bHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgIlRlc3RSZWFkT25seU1hcExp
a2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RSZWFkT25seU1hcExpa2VDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RSZWFkT25seU1hcExpa2VDb25zdHJ1Y3Rvcikg
fSB9LAogICAgIHsgIlRlc3RSZWFkT25seVNldExpa2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9i
amVjdFRlc3RSZWFkT25seVNldExpa2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRl
c3RSZWFkT25seVNldExpa2VDb25zdHJ1Y3RvcikgfSB9LApAQCAtMTU2MSw2ICsxNTYyLDI5IEBA
IGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEpTQnVpbHRpbkMKICAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
Iik7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCit7CisgICAg
VU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1Zh
bHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rv
clNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFs
T2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQt
aW4gY29uc3RydWN0b3IuCisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiksIHN0cmxlbigiVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMiKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46
OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0
cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpOworfQorCiBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE1hcExpa2VDb25zdHJ1Y3RvckdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlz
T2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTE5
NzUsNzMgKzE5OTksNzMgQEAgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0
ZQogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
Q29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyIik7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCitzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQogewogICAg
IFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworICAgIHJl
dHVybiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRDb25z
dHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9i
YWxPYmplY3QoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0
R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rv
ckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RH
bG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Iik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFt
ZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvclNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3IuCi0gICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIiksIHN0cmxlbigiVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnMiKSksIHZhbHVlKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKSwg
c3RybGVuKCJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpKSwgdmFs
dWUpOwogfQogCi1ib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQorYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNl
dDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlu
c0NvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyIpOworICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2Jh
bE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0
b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
IlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIik7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQorc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQogewogICAg
IFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKKyAg
ICByZXR1cm4gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09i
amVjdC5nbG9iYWxPYmplY3QoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9i
amVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxP
YmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMiKTsKKyAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxP
YmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3Ry
dWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzIik7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNDb25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQor
c3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0g
ICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllcyIpLCBzdHJsZW4oIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllcyIpKSwgdmFsdWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzIiks
IHN0cmxlbigiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyIp
KSwgdmFsdWUpOwogfQogCi1ib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEds
b2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmpl
Y3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3N0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3Qm
IHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwot
ICAgIHJldHVybiBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKKyAgICByZXR1cm4gSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFs
dWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+
OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3Ry
dWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dElucyIpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0Nv
bnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rl
c3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCitzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvclNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3IuCi0gICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMiKSwgc3Ry
bGVuKCJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zIikpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
IlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zIiksIHN0cmxlbigiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKSksIHZhbHVlKTsKIH0K
IAotYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnMiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVz
dEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0Nv
bnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpOwogfQogCiAjaWYgRU5BQkxFKENvbmRpdGlvbkRlcml2
ZWQpCkBAIC0yMDk2LDI5ICsyMTIwLDYgQEAgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0
T3ZlcmxvYWRlZAogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6
c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlIik7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0T3ZlcnJp
ZGVCdWlsdGluc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCi17Ci0gICAgVU5VU0VEX1BB
UkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhp
c09iamVjdC5nbG9iYWxPYmplY3QoKSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2Jh
bE9iamVjdFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQotewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpz
VGVzdEdsb2JhbE9iamVjdFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JHZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJUZXN0T3ZlcnJpZGVCdWlsdGlucyIpOwot
fQotCi1zdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJyaWRl
QnVpbHRpbnNDb25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQotewot
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0gICAgcmV0dXJuIHRoaXNPYmplY3Qu
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oIlRlc3RPdmVycmlkZUJ1aWx0aW5zIiksIHN0cmxlbigiVGVzdE92ZXJy
aWRlQnVpbHRpbnMiKSksIHZhbHVlKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RU
ZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKLXsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46
OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9y
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJU
ZXN0T3ZlcnJpZGVCdWlsdGlucyIpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
R2xvYmFsT2JqZWN0VGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmpl
Y3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdElucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNTEgQEAKKy8q
CisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0
LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpT
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaCIKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgorI2luY2x1ZGUgIkpTRE9NQWJzdHJh
Y3RPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRJ
bnRlcmZhY2UuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCisjaW5jbHVkZSAi
SlNET01FeGNlcHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0Lmgi
CisjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNo
ZS5oIgorI2luY2x1ZGUgIkpTTm9kZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KKyNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CisKKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNw
YWNlIEpTQzsKKworLy8gRnVuY3Rpb25zCisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0
ZW0oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CisKKy8vIEF0dHJpYnV0
ZXMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29u
c3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0
cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKKworY2xhc3MgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3Rv
dHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAg
IHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIEpTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICB7CisgICAgICAgIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dEluc1Byb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgcHRyLT5maW5pc2hD
cmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgREVDTEFSRV9J
TkZPOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNz
PgorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
KyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlND
OjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlw
ZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQor
Citwcml2YXRlOgorICAgIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQorICAgIHsK
KyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CitTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
UHJvdG90eXBlLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpCYXNlKTsK
KwordXNpbmcgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yID0gSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz47
CisKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0odm0pOworICAgIHJl
dHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKK30KKwordGVtcGxhdGU8PiB2
b2lkIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKK30KKwor
dGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0Nv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSB9OworCisvKiBIYXNoIHRhYmxlIGZvciBw
cm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJjb25zdHJ1
Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAibmFt
ZWRJdGVtIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1
bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlRnVuY3Rpb25OYW1l
ZEl0ZW0pLCAoaW50cHRyX3QpICgxKSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUpIH07CisK
K3ZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZWlmeVN0
YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmluZm8oKSwg
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7
CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK2NvbnN0
IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpzX2luZm8gPSB7ICJUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucykgfTsKKwor
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwg
UmVmPFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpCisgICAgOiBKU0RPTVdyYXBw
ZXI8VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGltcGwpKQoreworfQorCit2b2lkIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIHN0YXRpY19hc3NlcnQo
IXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0
XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9i
amVjdC4iKTsKKworfQorCitKU09iamVjdCogSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6
Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
K3sKKyAgICByZXR1cm4gSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6Y3Jl
YXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmpl
Y3RQcm90b3R5cGUoKSkpOworfQorCitKU09iamVjdCogSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dEluczo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
K3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpTVGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworfQorCit2b2lkIEpTVGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCit7CisgICAgSlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdElucyogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU1Rlc3RMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zOjp+SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucygpOworfQorCitib29s
IEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIHVz
aW5nIEdldHRlcklETFR5cGUgPSBJRExJbnRlcmZhY2U8Tm9kZT47CisgICAgYXV0byBnZXR0ZXJG
dW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRp
b25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKKyAgICAg
ICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlO
YW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgICAgICBpZiAoIUdldHRlcklETFR5
cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCisgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0
dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZh
bHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICB9OworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQ
cm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXM+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgICAgICBh
dXRvIHZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1
ZSgpKSk7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwor
fQorCitib29sIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgVk0mIHZt
ID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihvYmplY3QpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKKyAgICB1c2luZyBHZXR0
ZXJJRExUeXBlID0gSURMSW50ZXJmYWNlPE5vZGU+OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9
IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlw
ZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7CisgICAgICAgIGF1dG8g
cmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRv
bVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051
bGxWYWx1ZShyZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5
cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShyZXN1bHQpIH07CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfTsK
KyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8
TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6WWVzPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICAgICAgYXV0byB2YWx1
ZSA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNP
YmplY3QtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwor
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIGluZGV4LCBzbG90KTsKK30KKwordm9p
ZCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit7CisgICAg
Vk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihvYmplY3QpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMob2JqZWN0LCBpbmZvKCkpOworICAgIGZvciAo
YXV0byYgcHJvcGVydHlOYW1lIDogdGhpc09iamVjdC0+d3JhcHBlZCgpLnN1cHBvcnRlZFByb3Bl
cnR5TmFtZXMoKSkKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcHJvcGVydHlOYW1lKSk7CisgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKK30K
KwordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyogSURMT3Bl
cmF0aW9uPEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4oSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAg
IGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRDb25zdHJ1Y3RvcihKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7
Cit9CisKK2Jvb2wgc2V0SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7CisgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3Ry
dWN0b3IKKyAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Cit9CisKK3N0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0ZW1Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6Q2xhc3NQYXJhbWV0ZXIg
Y2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgaWYgKFVOTElL
RUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgIEVuc3VyZVN0aWxsQWxp
dmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAg
IGF1dG8gbmFtZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
YXJndW1lbnQwLnZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5uYW1lZEl0ZW0oV1RGTW92ZShu
YW1lKSkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OjpjYWxsPGpzVGVz
dExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbUJvZHk+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibmFtZWRJdGVtIik7Cit9CisKK0pTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnN1YnNwYWNlRm9ySW1w
bChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50
RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmdldCgpKQorICAgICAgICByZXR1cm4gc3Bh
Y2U7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiB8fCAhSlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6bmVlZHNEZXN0cnVjdGlvbik7CisgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CisgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmdldCgpOworSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0
cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNl
cygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1Nf
RU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCit2b2lkIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikK
K3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMqPihjZWxsKTsKKyAgICBhbmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxs
LCAmdGhpc09iamVjdC0+d3JhcHBlZCgpKTsKKyAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQorICAgICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwg
InVybCAiICsgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJp
bmcoKSk7CisgICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOworfQorCitib29s
IEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRv
ciYgdmlzaXRvciwgY29uc3QgY2hhcioqIHJlYXNvbikKK3sKKyAgICBVTlVTRURfUEFSQU0oaGFu
ZGxlKTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAgVU5VU0VEX1BBUkFNKHJlYXNv
bik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZv
aWQqIGNvbnRleHQpCit7CisgICAgYXV0byoganNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9
IHN0YXRpY19jYXN0PEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihoYW5kbGUuc2xvdCgp
LT5hc0NlbGwoKSk7CisgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldv
cmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zLT53cmFwcGVkKCksIGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMp
OworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikK
KyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lk
ICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNAV2Vi
Q29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pU
Vk43V2ViQ29yZTI2VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNFW107IH0KKyNlbmRpZgorI2Vu
ZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM+JiYgaW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAg
ICBjb25zdCB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBs
LnB0cigpKTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2lu
dGVyID0gX19pZGVudGlmaWVyKCI/P183VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNAV2ViQ29y
ZUBANkJAIik7CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRW
TjdXZWJDb3JlMjZUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0VbMl07CisjZW5kaWYKKworICAg
IC8vIElmIHRoaXMgZmFpbHMgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgZG9lcyBub3QgaGF2
ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9u
TGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cz46OnZhbHVlLCAiVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgaXMgbm90IHBvbHltb3JwaGlj
Iik7CisKKyAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBh
IHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgaGFzIHN1YmNs
YXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1
aXJlIFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcg
aGFyZGVuaW5nCisgICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRy
aWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJU
KGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgor
ICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPihnbG9i
YWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyYgaW1wbCkKK3sKKyAgICByZXR1
cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwpOworfQorCitU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyogSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6
dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1
dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMq
Pih2bSwgdmFsdWUpKQorICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
V2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlRlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyA6
IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zPjsKKyAgICBzdGF0aWMgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyogY3JlYXRlKEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFJlZjxUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4mJiBpbXBsKQorICAgIHsKKyAgICAgICAg
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPihnbG9iYWxPYmplY3QtPnZt
KCkuaGVhcCkpIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMoc3RydWN0dXJlLCAqZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9i
YWxPYmplY3QtPnZtKCkpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2Jq
ZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNE
T01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMq
IHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRp
YyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBK
U0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlND
ZWxsKik7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6TWF5
SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUg
Z2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBp
ZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvcklt
cGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJ
bXBsKEpTQzo6Vk0mIHZtKTsKKyAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBK
U0M6OkhlYXBBbmFseXplciYpOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJv
cGVydHlTbG90SXNJbXB1cmUgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0FueUZvcm1PZkdldFBy
b3BlcnR5TmFtZXMgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKK3Byb3RlY3Rl
ZDoKKyAgICBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKEpTQzo6U3RydWN0dXJlKiwgSlNE
T01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+JiYpOworCisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCitjbGFzcyBKU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewor
cHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJiwg
Y29uc3QgY2hhcioqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Cit9OworCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxl
T3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdElucyopCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTVGVzdExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnNPd25lcj4gb3duZXI7CisgICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30KKwor
aW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIHdyYXBw
YWJsZU9iamVjdCkKK3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OworfQorCitKU0M6OkpT
VmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBpbXBsKSB7IHJldHVybiBp
bXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpT
Qzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dElucz4mJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVmUHRyPFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpIHsgcmV0
dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KKwordGVtcGxh
dGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3RMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluczsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMqOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRp
Zmllci5jcHAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNyArMTcxLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklE
TFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZy
b21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAg
fTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVy
dHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJv
cGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
OjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdl
dHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAg
ICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDAp
LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjAwLDcgKzIwMCw3IEBAIGJvb2wg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGkKICAgICAgICAgICAgIHJldHVybiB0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBl
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zp
c2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBp
ZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVy
dHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDcgKzE3MSw3IEBAIGJvb2wg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmcKICAgICAgICAgICAgIHJldHVybiB0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBl
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zp
c2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBp
ZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVy
dHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIwMCw3
ICsyMDAsNyBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nCiAgICAg
ICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBl
IHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJv
cGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4o
KmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1
bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1l
ZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAg
YXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RG
TW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw3ICsxODAsNyBA
QCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVuCiAgICAgICAgICAgICBy
ZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVy
SURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBh
Y2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxH
bG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7
CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5
PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1
ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1l
ZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0yMDksNyArMjA5LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bgogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQp
IH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBu
YW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGlu
czo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBn
ZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9i
YWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAg
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjIsNyArMTYyLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXI6OmdldAogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5
cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsK
LSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8
T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpO
bz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRl
ckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTE4Myw3ICsxODMsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmll
cjo6Z2V0CiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJl
c3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChh
dXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1
aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjA1
LDcgKzIwNSw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpkZWwKIHsK
ICAgICBhdXRvJiB0aGlzT2JqZWN0ID0gKmpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXIqPihjZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0g
ICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CisgICAgaWYgKGlz
VmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIHJldHVy
biBpbXBsLmRlbGV0ZU5hbWVkUHJvcGVydHkocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlO
YW1lKSk7CiAgICAgfQogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTIxNyw3ICsyMTcs
NyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVsCiAgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tKHZtLCBpbmRleCk7Ci0gICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVC
dWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpKSB7CisgICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWls
dEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUp
KSB7CiAgICAgICAgIHJldHVybiBpbXBsLmRlbGV0ZU5hbWVkUHJvcGVydHkocHJvcGVydHlOYW1l
VG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgfQogICAgIHJldHVybiBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIGluZGV4KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uLmNwcAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb24KICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBl
OjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVs
bGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0g
ICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92
ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5
ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJG
dW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAg
ICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbgogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVu
dGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1
bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0
byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWls
dGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
LCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NW
aXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxH
bG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7
CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0
VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIwNSw3
ICsyMDUsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uCiB7CiAg
ICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdF
eGNlcHRpb24qPihjZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
Ci0gICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CisgICAgaWYg
KGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGF1
dG8gcmVzdWx0ID0gaW1wbC5kZWxldGVOYW1lZFByb3BlcnR5KHByb3BlcnR5TmFtZVRvU3RyaW5n
KHByb3BlcnR5TmFtZSkpOwogICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAg
ICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwpAQCAtMjI0LDcgKzIyNCw3IEBAIGJvb2wgSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24KICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsK
LSAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAo
aXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgYXV0
byByZXN1bHQgPSBpbXBsLmRlbGV0ZU5hbWVkUHJvcGVydHkocHJvcGVydHlOYW1lVG9TdHJpbmco
cHJvcGVydHlOYW1lKSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAg
ICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsNyBAQCBib29sIEpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpnCiAgICAgICAgICAgICByZXR1cm4gdHlw
ZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6
ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYg
KGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5
LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTg5LDcgKzE4OSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXI6OmcKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0
ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFs
dWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
ICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1l
ZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWls
dEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
LCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJp
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkp
OwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0yMTEsNyArMjExLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllcjo6ZAogewogICAgIGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PEpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKj4oY2VsbCk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwotICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRl
QnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lKSkgeworICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
KSkgewogICAgICAgICBpbXBsLm5hbWVkRGVsZXRlcihwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjI0LDcgKzIyNCw3
IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmQKICAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b20odm0sIGluZGV4KTsKLSAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1
aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFt
ZSkpIHsKKyAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkp
IHsKICAgICAgICAgaW1wbC5uYW1lZERlbGV0ZXIocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVy
dHlOYW1lKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNp
b24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTcxLDcgKzE3MSw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIK
ICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlv
blR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9
OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFt
ZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6
Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0
dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJs
ZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAg
ICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVl
KHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDAsNyArMjAw
LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcgogICAgICAgICAg
ICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdl
dHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5
ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9y
KSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9w
ZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0
aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8g
dmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUo
bmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVj
dCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIyNiw3ICsyMjYsNyBAQCBib29s
IEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyCiAgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGlmIChhdXRvIGluZGV4ID0gcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gIWltcGwuaXNTdXBwb3J0ZWRQcm9wZXJ0eUluZGV4
KGluZGV4LnZhbHVlKCkpOwotICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRl
QnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lKSkgeworICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
KSkgewogICAgICAgICByZXR1cm4gaW1wbC5kZWxldGVOYW1lZFByb3BlcnR5KHByb3BlcnR5TmFt
ZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIH0KICAgICByZXR1cm4gSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCShyZXZp
c2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsx
NjIsNyBAQCBib29sIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6OmdldE93blByCiAgICAgICAg
ICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsg
R2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0
b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0
byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92
ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTgzLDcgKzE4Myw3IEBAIGJv
b2wgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6Z2V0T3duUHIKICAgICAgICAgICAgIHJldHVy
biB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExU
eXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAg
ICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVn
YWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0g
dG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJv
cGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVl
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmll
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCBib29sIEpTVGVzdE5hbWVk
R2V0dGVyTm9JZGVudGlmaWVyOjpnZXRPCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0
dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZh
bHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
ICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQ
cm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFt
ZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFt
ZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3Ry
aW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkp
KTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwpAQCAtMTgzLDcgKzE4Myw3IEBAIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJOb0lk
ZW50aWZpZXI6OmdldE8KICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBl
OjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVs
bGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0g
ICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92
ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5
ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJG
dW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAg
ICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIu
Y3BwCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2OCw3ICsxNjgsNyBAQCBib29sIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZp
ZXI6OmdlCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJl
c3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChh
dXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1
aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTg5
LDcgKzE4OSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2UKICAg
ICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5
cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9Owog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQ
cm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5v
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVy
RnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5h
bWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAg
ICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2NjYzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCBi
b29sIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZXRPCiAgICAgICAgICAgICByZXR1
cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURM
VHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nl
c3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9i
YWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Cisg
ICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9
IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFBy
b3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
ODMsNyArMTgzLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6Z2V0Twog
ICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9u
VHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1l
ZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6
Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0
ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxl
TmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxP
YmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNyArMTYyLDcgQEAgYm9vbCBKU1Rlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdl
dHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RW
YWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVk
UHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhp
c09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5h
bWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgp
KSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTgzLDcgKzE4Myw3IEBA
IGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjoKICAgICAgICAgICAgIHJl
dHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJ
RExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFj
Y2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsK
KyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8
TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVl
ID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVk
UHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJ
KHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTY4LDcgKzE2OCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6
Z2UKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRh
dGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0
KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8g
bmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRp
bnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
Z2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlz
aWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewog
ICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTE4OSw3ICsxODksNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aElkZW50aWZpZXI6OmdlCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURM
VHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJv
bU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9
OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0
eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9w
ZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6
Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0
dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAg
ICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCks
IHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyNjY2Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw3ICsxODAs
NyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAgICAgICAgICAg
ICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0
dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkg
PSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3Ip
KSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2
YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShu
YW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0yMDksNyArMjA5LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyOgogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVu
dGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1
bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0
byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWls
dGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
LCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NW
aXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxH
bG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7
CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0
VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAkocmV2aXNpb24gMjY2
NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODAsNyArMTgwLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQp
IH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBu
YW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGlu
czo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBn
ZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9i
YWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAg
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtMjA5LDcgKzIwOSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckEKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExU
eXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9t
TnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07
Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5
PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3Qs
IHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3Bl
cnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6
Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0
ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAg
ICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwg
dmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDU3IEBACisvKgorICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZp
bGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9E
SUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaCIKKworI2luY2x1ZGUgIkFjdGl2ZURP
TU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgorI2luY2x1ZGUgIkpTRE9N
QWJzdHJhY3RPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKKyNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZS5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKKyNpbmNsdWRlICJK
U0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCisjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKKyNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KKyNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFt
ZXNwYWNlIEpTQzsKKworLy8gRnVuY3Rpb25zCisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNJ
bnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CisKKy8vIEF0dHJpYnV0ZXMKKworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1
Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1VuZm9yZ2VhYmxlQXR0
cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7CisKK2NsYXNzIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc1Byb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmpl
Y3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7Cisg
ICAgc3RhdGljIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZSh2bSwgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6
OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVj
dCh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTQzo6Vk0mKTsKK307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUsIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZTo6
QmFzZSk7CisKK3VzaW5nIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0NvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPjsKKworLyogSGFz
aCB0YWJsZSAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVGFibGVJbmRleFs0XSA9
IHsKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgMCwgLTEgfSwKK307CisKKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1RhYmxlVmFsdWVzW10gPQor
eworICAgIHsgInVuZm9yZ2VhYmxlQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNVbmZvcmdlYWJsZUF0dHJpYnV0ZSks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDAp
IH0gfSwKKyAgICB7ICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlv
blVuZm9yZ2VhYmxlT3BlcmF0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAorfTsKKworc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNUYWJsZSA9IHsgMiwgMywgdHJ1ZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjppbmZvKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc1RhYmxlVmFsdWVzLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNUYWJsZUluZGV4IH07Cit0ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0odm0pOworICAgIHJl
dHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKK30KKwordGVtcGxhdGU8PiB2
b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCit7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6
cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKK30K
KwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKSB9OworCisvKiBIYXNoIHRhYmxl
IGZvciBwcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZVRhYmxlVmFs
dWVzW10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKSB9IH0sCit9
OworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNQcm90b3R5cGUpIH07CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJv
cGVydGllcyh2bSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzOjppbmZvKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc1Byb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CisgICAgSlNDX1RPX1NUUklOR19UQUdf
V0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OnNfaW5mbyA9IHsgIlRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMiLCAmQmFzZTo6c19pbmZvLCAm
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVGFibGUsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzKSB9OworCitKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXM6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllcyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXM+JiYgaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShp
bXBsKSkKK3sKK30KKwordm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXM6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIHN0
YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+Ojp2YWx1ZSwgIkludGVyZmFjZSBp
cyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0
aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIpOworCit9CisKK0pTT2JqZWN0
KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmNyZWF0
ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgcmV0dXJuIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c1Byb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Cit9CisK
K0pTT2JqZWN0KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXM6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7
CisgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXM+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6Z2V0Q29uc3Ry
dWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKK30KKwordm9pZCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwp
Cit7CisgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzKj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjp+SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKCk7Cit9CisKK2Jvb2wgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllcyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJp
bmc7CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8g
cHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1l
bnRhdGlvblR5cGU+IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAg
ICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCisgICAgICAgICAg
ICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0
dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9OworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkg
PSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4o
KmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1
bmN0b3IpKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAg
IHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1
ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3Qs
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJv
cGVydHlTbG90JiBzbG90KQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqPihvYmplY3QpOworICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKKyAgICB1c2luZyBHZXR0ZXJJRExU
eXBlID0gSURMRE9NU3RyaW5nOworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0
aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVy
SURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gdGhp
c09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKKyAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1
bHQpKQorICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVu
dGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1
bHQpIH07CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfTsKKyAgICBpZiAoYXV0
byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVy
dHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFs
dWUoKSkpOworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPigwKSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0
dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgaW5kZXgsIHNsb3QpOworfQorCit2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQoreworICAgIFZN
JiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMqPihvYmplY3QpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMob2JqZWN0LCBp
bmZvKCkpOworICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1lIDogdGhpc09iamVjdC0+d3JhcHBl
ZCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSkKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQo
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcHJvcGVydHlOYW1lKSk7CisgICAgSlNPYmplY3Q6
OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWVzLCBtb2RlKTsKK30KKworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXM6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFByb3BlcnR5U2xvdCkKK3sKKyAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllcyo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKKworICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKKyAgICAgICAg
UHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9OworICAgICAg
ICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgYm9vbCBmb3VuZCA9IHByb3Rv
dHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBzbG90LmRp
c2FsbG93Vk1FbnRyeS5yZXNldCgpOworICAgICAgICBpZiAoIWZvdW5kKSB7CisgICAgICAgICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKKyAgICAgICAgICAgIHRoaXNP
YmplY3QtPndyYXBwZWQoKS5zZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVy
dHlOYW1lKSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0eVNs
b3QpOworfQorCitib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllczo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRU
aHJvdykKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwor
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0gfTsK
KyAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2
bSk7CisgICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHBy
b3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOworICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgaWYgKCFm
b3VuZCkgeworICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CisgICAgICAgIHRo
aXNPYmplY3QtPndyYXBwZWQoKS5zZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJv
cGVydHlOYW1lKSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7Cit9CisKK2Jvb2wgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBw
cm9wZXJ0eURlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCit7CisgICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMqPihvYmplY3QpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKKworICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKK3N0YXRp
YyBib29sIGlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKK3sKKyAgICByZXR1cm4gcHJvcGVydHlOYW1lID09ICJ1bmZvcmdlYWJsZUF0dHJp
YnV0ZSIgfHwgcHJvcGVydHlOYW1lID09ICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiI7Cit9CisKKyAg
ICAgICAgaWYgKCFpc0xlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkp
IHsKKyAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3Qt
PnZtKCkgfTsKKyAgICAgICAgICAgIGJvb2wgZm91bmQgPSBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CisgICAgICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOworICAgICAgICAg
ICAgaWYgKCFmb3VuZCkgeworICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9y
LmlzRGF0YURlc2NyaXB0b3IoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICAgICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlEZXNjcmlwdG9yLnZhbHVlKCkpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+d3Jh
cHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgbmV3
UHJvcGVydHlEZXNjcmlwdG9yID0gcHJvcGVydHlEZXNjcmlwdG9yOworICAgIG5ld1Byb3BlcnR5
RGVzY3JpcHRvci5zZXRDb25maWd1cmFibGUodHJ1ZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0Ojpk
ZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgbmV3UHJvcGVydHlEZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7Cit9CisKK3RlbXBsYXRlPD4g
aW5saW5lIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyog
SURMQXR0cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllcz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqPihKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworfQorCit0ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMqIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUmIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqPihKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKK30KKworRW5jb2Rl
ZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUqPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghcHJvdG90
eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmdldENvbnN0cnVjdG9yKEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsK
K30KKworYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7Cisg
ICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAg
aWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICByZXR1cm4g
cHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNVbmZvcmdl
YWJsZUF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzJiB0aGlzT2Jq
ZWN0KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwudW5mb3JnZWFibGVBdHRyaWJ1dGUoKSkpKTsKK30KKworRW5jb2RlZEpTVmFs
dWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVW5mb3Jn
ZWFibGVBdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPjo6
Z2V0PGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1VuZm9y
Z2VhYmxlQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidW5mb3JnZWFibGVBdHRyaWJ1dGUiKTsK
K30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJs
ZU9wZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz46OkNsYXNzUGFyYW1ldGVy
IGNhc3RlZFRoaXMpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1l
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOworICAgIGltcGwudW5mb3JnZWFibGVPcGVyYXRpb24oKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXM+OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidW5mb3JnZWFibGVPcGVyYXRpb24iKTsKK30KKworSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50
RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAg
IGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+IHx8ICFKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6Om5lZWRzRGVzdHJ1Y3Rp
b24pOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOwor
ICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKTsKKyAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcy5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
KyAgICBpZiAoJkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
czo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29u
c3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFw
cGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisg
ICAgcmV0dXJuIHNwYWNlOworfQorCit2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllczo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6
ZXImIGFuYWx5emVyKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKj4oY2VsbCk7CisgICAgYW5h
bHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQo
KSk7CisgICAgaWYgKHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAg
ICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgIEJhc2U6OmFuYWx5
emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKK30KKworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYg
dmlzaXRvciwgY29uc3QgY2hhcioqIHJlYXNvbikKK3sKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxl
KTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAgVU5VU0VEX1BBUkFNKHJlYXNvbik7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKK3sKKyAgICBhdXRvKiBqc1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqPihoYW5kbGUuc2xvdCgp
LT5hc0NlbGwoKSk7CisgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldv
cmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMtPndyYXBwZWQoKSwganNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKTsKK30KKworI2lmIEVOQUJM
RShCSU5ESU5HX0lOVEVHUklUWSkKKyNpZiBQTEFURk9STShXSU4pCisjcHJhZ21hIHdhcm5pbmco
ZGlzYWJsZTogNDQ4MykKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRp
ZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNA
V2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCog
X1pUVk43V2ViQ29yZTQ2VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0VbXTsgfQorI2VuZGlmCisjZW5kaWYKKworSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0
ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPiYmIGlt
cGwpCit7CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisgICAgY29uc3Qgdm9pZCog
YWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7CisjaWYg
UExBVEZPUk0oV0lOKQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRp
ZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNA
V2ViQ29yZUBANkJAIik7CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9
ICZfWlRWTjdXZWJDb3JlNDZUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzRVsyXTsKKyNlbmRpZgorCisgICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzIGRvZXMgbm90IGhhdmUgYSB2dGFibGUs
IHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKKyAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
IGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KKyAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllcz46OnZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllcyBpcyBub3QgcG9seW1vcnBoaWMiKTsKKworICAgIC8vIElmIHlvdSBoaXQgdGhp
cyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgorICAg
IC8vIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgaGFzIHN1
YmNsYXNzZXMuIElmIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXMgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1
cnJlbnRseSByZXF1aXJlIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMgeW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKKyAgICAvLyBieSBhZGRp
bmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElE
TCBkZWZpbml0aW9uCisgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBl
eHBlY3RlZFZUYWJsZVBvaW50ZXIpOworI2VuZGlmCisgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4oZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyYgaW1w
bCkKK3sKKyAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGltcGwpOworfQorCitUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OnRv
V3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmIChhdXRv
KiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXMqPih2bSwgdmFsdWUpKQorICAgICAgICByZXR1cm4gJndyYXBwZXIt
PndyYXBwZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgICAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRo
aXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5P
VCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIK
KyNpbmNsdWRlICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzPiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBl
cjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPjsKKyAgICBz
dGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKiBj
cmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXM+JiYgaW1wbCkKKyAgICB7CisgICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+KGdsb2Jh
bE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cisg
ICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAg
cmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJv
dG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6OkpT
T2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3Rh
dGljIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqIHRvV3Jh
cHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVu
dW1lcmF0aW9uTW9kZSgpKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQ
dXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQzo6SlNDZWxs
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1Zh
bHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0
eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1l
LCBjb25zdCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOworICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKKworICAgIERFQ0xBUkVfSU5GTzsK
KworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7CisgICAg
fQorCisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29u
c3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1
YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1
YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOworICAgIHN0YXRp
YyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CitwdWJsaWM6
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5
QWJzZW5jZSB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW50ZXJjZXB0c0dl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3Zl
cnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7Citwcm90ZWN0ZWQ6Cisg
ICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKEpTQzo6
U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4mJik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTQzo6Vk0mKTsKK307CisKK2NsYXNzIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc093bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYsIGNv
bnN0IGNoYXIqKik7CisgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOworfTsKKworaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93
bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyopCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc093bmVyPiBv
d25lcjsKKyAgICByZXR1cm4gJm93bmVyLmdldCgpOworfQorCitpbmxpbmUgdm9pZCogd3JhcHBl
cktleShUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKiB3cmFw
cGFibGVPYmplY3QpCit7CisgICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKK30KKworSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyYpOworaW5saW5lIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKGxleGlj
YWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsgfQor
SlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9N
R2xvYmFsT2JqZWN0KiwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXM+JiYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGlj
YWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpT
Qzo6anNOdWxsKCk7IH0KKwordGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVy
VHJhaXRzPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+IHsK
KyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXM7CisgICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdElucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MzggQEAKKy8qCisgICAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRo
aXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5P
VCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMuaCIKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlz
b1N1YnNwYWNlcy5oIgorI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiCisjaW5j
bHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNs
dWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgorI2luY2x1ZGUgIkpTRE9N
Q29udmVydFN0cmluZ3MuaCIKKyNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCisj
aW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5o
IgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3Jl
SlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKKwor
bmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworLy8gRnVuY3Rpb25z
CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zSW5z
dGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworCisvLyBBdHRyaWJ1dGVzCisKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNVbmZvcmdlYWJsZUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworCitjbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJv
dG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6Cisg
ICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAg
ICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdEluc1Byb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBw
dHItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAg
ICBERUNMQVJFX0lORk87CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpTQzo6U3Vi
c3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDog
SlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNQcm90b3R5cGU6OkJhc2UpOworCit1c2luZyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjsKKwor
LyogSGFzaCB0YWJsZSAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXgg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdEluc1RhYmxlSW5kZXhbNF0gPSB7CisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IDEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDAsIC0xIH0sCit9OworCisKK3N0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zVGFibGVWYWx1ZXNbXSA9Cit7
CisgICAgeyAidW5mb3JnZWFibGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNVbmZvcmdlYWJsZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJ1bmZvcmdlYWJsZU9wZXJhdGlv
biIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxS
YXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdl
YWJsZU9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKK307CisKK3N0YXRpYyBjb25zdCBI
YXNoVGFibGUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1RhYmxlID0geyAyLCAzLCB0cnVlLCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjppbmZvKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNUYWJsZVZhbHVlcywgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluc1RhYmxlSW5kZXggfTsKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29u
c3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0odm0pOworICAg
IHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKK30KKwordGVtcGxhdGU8
PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpwcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5h
bWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIl9zKSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKK30KKwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdEluc0NvbnN0cnVjdG9yKSB9OworCisvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8K
Kworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVU
YWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdEluc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSB9IH0sCit9
OworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6c19pbmZvID0g
eyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUpIH07CisKK3ZvaWQgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnM6OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZVRhYmxlVmFs
dWVzLCAqdGhpcyk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7
Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpzX2luZm8gPSB7ICJUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zVGFibGUsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucykgfTsKKworSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpCisgICAg
OiBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGltcGwpKQoreworfQorCit2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJU
KGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFz
ZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6dmFsdWUsICJJbnRlcmZhY2Ug
aXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRh
dGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKKworfQorCitKU09iamVj
dCogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdEluczo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3Rv
dHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQ
cm90b3R5cGUoKSkpOworfQorCitKU09iamVjdCogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6cHJvdG90eXBl
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4g
Z2V0RE9NUHJvdG90eXBlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KHZtLCBnbG9iYWxPYmplY3QpOworfQor
CitKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3Qg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3Ry
dWN0b3I8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworfQorCit2b2lkIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCit7CisgICAgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihjZWxsKTsKKyAgICB0
aGlzT2JqZWN0LT5KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjp+SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucygpOworfQorCiti
b29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJ
RExET01TdHJpbmc7CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmpl
Y3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBl
OjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFt
ZSkpOworICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCisg
ICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25U
eXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9OworICAgIGlmIChhdXRvIG5hbWVk
UHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zOjpZZXM+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
LCBnZXR0ZXJGdW5jdG9yKSkgeworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJp
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkp
OworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PigwKSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7Cisg
ICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihvYmplY3QpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKKyAgICB1c2luZyBHZXR0ZXJJ
RExUeXBlID0gSURMRE9NU3RyaW5nOworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRv
JiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0
dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0g
dGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShy
ZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxl
bWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShy
ZXN1bHQpIH07CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfTsKKyAgICBpZiAo
YXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3Zl
cnJpZGVCdWlsdEluczo6WWVzPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5
LnZhbHVlKCkpKTsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIGxleGlj
YWxHbG9iYWxPYmplY3QsIGluZGV4LCBzbG90KTsKK30KKwordm9pZCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51
bWVyYXRpb25Nb2RlIG1vZGUpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMqPihvYmplY3QpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMob2JqZWN0LCBpbmZv
KCkpOworICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1lIDogdGhpc09iamVjdC0+d3JhcHBlZCgp
LnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSkKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcHJvcGVydHlOYW1lKSk7CisgICAgSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWVzLCBtb2RlKTsKK30KKworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpwdXQoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBwdXRQcm9wZXJ0eVNsb3Qp
Cit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwor
CisgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgeworICAgICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCkpOworICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgdHJ1ZSk7CisgICAgICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS5zZXROYW1l
ZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNPYmpl
Y3Q6OnB1dCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBwdXRQcm9wZXJ0eVNsb3QpOworfQorCitib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnB1dEJ5
SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
dW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wpCit7CisgICAgVk0mIHZtID0gSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb20odm0sIGluZGV4KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOworICAgIHRo
aXNPYmplY3QtPndyYXBwZWQoKS5zZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJv
cGVydHlOYW1lKSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmpl
Y3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIHByb3BlcnR5RGVzY3JpcHRvciwg
Ym9vbCBzaG91bGRUaHJvdykKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMqPihvYmplY3QpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKKworICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsK
K3N0YXRpYyBib29sIGlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gcHJvcGVydHlOYW1lID09ICJ1bmZvcmdlYWJs
ZUF0dHJpYnV0ZSIgfHwgcHJvcGVydHlOYW1lID09ICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiI7Cit9
CisKKyAgICAgICAgaWYgKCFpc0xlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKHByb3BlcnR5
TmFtZSkpIHsKKyAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlzRGF0YURlc2Ny
aXB0b3IoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCkpOworICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlEZXNjcmlwdG9yLnZhbHVlKCkp
OworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKKyAg
ICAgICAgICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS5zZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1l
VG9TdHJpbmcocHJvcGVydHlOYW1lKSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQcm9wZXJ0eURlc2NyaXB0
b3IgbmV3UHJvcGVydHlEZXNjcmlwdG9yID0gcHJvcGVydHlEZXNjcmlwdG9yOworICAgIG5ld1By
b3BlcnR5RGVzY3JpcHRvci5zZXRDb25maWd1cmFibGUodHJ1ZSk7CisgICAgcmV0dXJuIEpTT2Jq
ZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgbmV3UHJvcGVydHlEZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7Cit9CisKK3RlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIElETEF0dHJpYnV0ZTxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlKQoreworICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBJ
RExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQoreworICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBWTSYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQorICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldENvbnN0cnVjdG9yKEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkp
KTsKK30KKworYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAo
VU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIHJldHVybiBwcm90
b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnNVbmZvcmdlYWJsZUF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyYgdGhpc09iamVjdCkKK3sKKyAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LnVuZm9yZ2VhYmxlQXR0cmlidXRlKCkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnNVbmZvcmdlYWJsZUF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6Z2V0PGpzVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNVbmZvcmdlYWJsZUF0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInVuZm9yZ2VhYmxlQXR0cmli
dXRlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uQm9keShKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1l
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz46OkNsYXNzUGFyYW1ldGVy
IGNhc3RlZFRoaXMpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1l
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOworICAgIGltcGwudW5mb3JnZWFibGVPcGVyYXRpb24oKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVP
cGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz46
OmNhbGw8anNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlv
bkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidW5mb3JnZWFibGVPcGVy
YXRpb24iKTsKK30KKworSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6c3Vic3Bh
Y2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMg
PSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KQorICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
KTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMu
Z2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRP
dXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3Bh
Y2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5H
U19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6YW5h
bHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQoreworICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KGNlbGwpOworICAgIGFu
YWx5emVyLnNldFdyYXBwZWRPYmplY3RGb3JDZWxsKGNlbGwsICZ0aGlzT2JqZWN0LT53cmFwcGVk
KCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAg
ICAgIGFuYWx5emVyLnNldExhYmVsRm9yQ2VsbChjZWxsLCAidXJsICIgKyB0aGlzT2JqZWN0LT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVybCgpLnN0cmluZygpKTsKKyAgICBCYXNlOjphbmFs
eXplSGVhcChjZWxsLCBhbmFseXplcik7Cit9CisKK2Jvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc093bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhh
bmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQor
eworICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOworICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsK
KyAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdEluc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsZSwgdm9pZCogY29udGV4dCkKK3sKKyAgICBhdXRvKiBqc1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0g
c3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsK
KyAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0
KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMtPndyYXBwZWQo
KSwganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucyk7Cit9CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkp
CisjaWYgUExBVEZPUk0oV0lOKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCitleHRl
cm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluc0BXZWJDb3JlQEA2QkAiKVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2
b2lkKiBfWlRWTjdXZWJDb3JlNzFUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0VbXTsgfQorI2VuZGlmCisjZW5kaWYK
KworSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4mJiBpbXBs
KQoreworCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorICAgIGNvbnN0IHZvaWQqIGFj
dHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkpOworI2lmIFBM
QVRGT1JNKFdJTikKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZp
ZXIoIj8/XzdUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0BXZWJDb3JlQEA2QkAiKTsKKyNlbHNlCisgICAgdm9pZCog
ZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmU3MVRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRVsy
XTsKKyNlbmRpZgorCisgICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyBkb2VzIG5v
dCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50
YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHltb3JwaGljPFRlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6dmFs
dWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucyBpcyBub3QgcG9seW1vcnBoaWMiKTsKKworICAgIC8vIElmIHlv
dSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVn
LCBvcgorICAgIC8vIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dElucyBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2Ug
Y3VycmVudGx5IHJlcXVpcmUgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgeW91IHRvIG9wdCBvdXQgb2YgYmluZGlu
ZyBoYXJkZW5pbmcKKyAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0
dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCisgICAgUkVMRUFTRV9BU1NF
UlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOworI2VuZGlm
CisgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KGdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sK
KyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+
KHZtLCB2YWx1ZSkpCisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAgICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhp
cyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9U
IE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgor
I2luY2x1ZGUgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA6IHB1
YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBC
YXNlID0gSlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjsKKyAgICBzdGF0aWMgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdElucyogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4mJiBpbXBsKQorICAgIHsKKyAg
ICAgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRl
Q2VsbDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAg
ICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICByZXR1
cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5
cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmpl
Y3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMg
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xv
dCYpOworICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCos
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVt
ZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKKyAgICBzdGF0aWMgYm9vbCBw
dXQoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUs
IEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBw
dXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6UHJvcGVydHlOYW1lLCBjb25zdCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJv
b2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsK
KworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8o
SlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5k
ZXhlZEFjY2Vzc29ycyk7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25z
dHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0
ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7
CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlND
OjpWTSYgdm0pOworICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVh
cEFuYWx5emVyJik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNs
b3RJc0ltcHVyZSB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW50ZXJjZXB0
c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6
T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7Citwcm90ZWN0ZWQ6
CisgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0
JiwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlND
OjpWTSYpOworfTsKKworY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc093bmVyIDogcHVibGljIEpTQzo6
V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwg
SlNDOjpTbG90VmlzaXRvciYsIGNvbnN0IGNoYXIqKik7CisgICAgdmlydHVhbCB2b2lkIGZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOworfTsKKworaW5s
aW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwg
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMqKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zT3duZXI+IG93bmVyOworICAgIHJldHVybiAmb3duZXIuZ2V0KCk7Cit9CisKK2lubGlu
ZSB2b2lkKiB3cmFwcGVyS2V5KFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiB3cmFwcGFibGVPYmplY3QpCit7Cisg
ICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMmKTsKK2lu
bGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyog
aW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9CitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3Jl
YXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM+JiYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4mJiBpbXBsKSB7IHJldHVybiBpbXBs
ID8gdG9KU05ld2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlt
cGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4geworICAgIHVz
aW5nIFdyYXBwZXJDbGFzcyA9IEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM7CisgICAgdXNpbmcgVG9XcmFwcGVk
UmV0dXJuVHlwZSA9IFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGlucy5jcHAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDM2NyArMCwwIEBACi0vKgotICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgICBUaGlzIGZp
bGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9E
SUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU1Rlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zLmgiCi0KLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIK
LSNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKLSNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3Bl
cmF0aW9ucy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5n
cy5oIgotI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKLSNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RnVuY3Rpb25Qcm90b3R5cGUuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6
ZXIuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KLSNpbmNsdWRlIDx3
dGYvVVJMLmg+Ci0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIEpTQzsK
LQotLy8gQXR0cmlidXRlcwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVy
V2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotCi1jbGFzcyBK
U1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlIGZpbmFsIDogcHVi
bGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpT
Qzo6SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGluc1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAg
ICAgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwot
ICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAgcmV0dXJuIHB0cjsKLSAg
ICB9Ci0KLSAgICBERUNMQVJFX0lORk87Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IEpTQzo6U3Vic3BhY2VBY2Nlc3M+Ci0gICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQotICAgIHsKLSAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc1Byb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKLSAgICB9
Ci0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogSlNDOjpK
U05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotfTsKLVNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUs
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OkJhc2UpOwot
Ci11c2luZyBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zPjsKLQotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAg
IFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3Rv
dHlwZSgpOwotfQotCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJp
ZGVCdWlsdGluc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkU2V0dGVyV2l0aE92
ZXJyaWRlQnVpbHRpbnMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotfQotCi10ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1
aWx0aW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH07
Ci0KLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwotCi1zdGF0aWMgY29uc3QgSGFzaFRh
YmxlVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZVRh
YmxlVmFsdWVzW10gPQotewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH0gfSwKLX07Ci0KLWNvbnN0IENsYXNz
SW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSkgfTsKLQotdm9pZCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
Ci17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJlaWZ5U3RhdGljUHJvcGVy
dGllcyh2bSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6aW5mbygpLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlVGFibGVWYWx1ZXMs
ICp0aGlzKTsKLSAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKLX0K
LQotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6
OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKSB9OwotCi1KU1Rlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8
VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+JiYgaW1wbCkKLSAgICA6IEpTRE9N
V3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4oc3RydWN0dXJlLCBn
bG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCi17Ci19Ci0KLXZvaWQgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewotICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkp
OwotCi0gICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwg
VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+Ojp2YWx1ZSwgIkludGVyZmFjZSBp
cyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0
aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIpOwotCi19Ci0KLUpTT2JqZWN0
KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpjcmVhdGVQcm90b3R5cGUo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBK
U1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlOjpjcmVhdGUodm0s
ICZnbG9iYWxPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9i
amVjdFByb3RvdHlwZSgpKSk7Ci19Ci0KLUpTT2JqZWN0KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQotewotICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4odm0sIGdsb2JhbE9iamVjdCk7Ci19Ci0KLUpTVmFsdWUg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29u
c3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KSk7Ci19Ci0KLXZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6
ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKLXsKLSAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyo+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPkpTVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6On5KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zKCk7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVC
dWlsdGluczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgdXNpbmcgR2V0dGVySURM
VHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYg
dGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRl
cklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJv
cGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVz
dWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1l
bnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVz
dWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07Ci0gICAgaWYgKGF1
dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVp
bHRpbnM6Olllcz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgp
KSk7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KDApLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4g
SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyo+KG9iamVjdCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExE
T01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3Qs
IGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJ
bXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkp
OwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAg
ICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBl
IHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJv
cGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpZZXM+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJG
dW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwotICAgICAg
ICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFs
dWUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5k
ZXgsIHNsb3QpOwotfQotCi12b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBF
bnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyo+KG9iamVjdCk7Ci0gICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhvYmplY3QsIGluZm8oKSk7Ci0gICAgZm9yIChhdXRvJiBwcm9wZXJ0eU5hbWUg
OiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpKQotICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBwcm9wZXJ0eU5h
bWUpKTsKLSAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwotfQotCi1ib29sIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFByb3BlcnR5U2xvdCkKLXsKLSAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnMqPihjZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7Ci0KLSAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KSk7Ci0gICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKLSAgICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgp
LnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVy
biBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1
ZSwgYm9vbCkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGlucyo+KGNlbGwpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKLQotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbSh2bSwgaW5kZXgpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7Ci0gICAgdGhpc09iamVj
dC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5h
bWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgcHJvcGVy
dHlEZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQotewotICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyo+KG9iamVjdCk7
Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotCi0g
ICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBpZiAoIXByb3BlcnR5
RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5RGVzY3JpcHRv
ci52YWx1ZSgpKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVl
KTsKLSAgICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5h
bWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIFByb3BlcnR5RGVzY3JpcHRvciBuZXdQcm9wZXJ0
eURlc2NyaXB0b3IgPSBwcm9wZXJ0eURlc2NyaXB0b3I7Ci0gICAgbmV3UHJvcGVydHlEZXNjcmlw
dG9yLnNldENvbmZpZ3VyYWJsZSh0cnVlKTsKLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBuZXdQ
cm9wZXJ0eURlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKLX0KLQotRW5jb2RlZEpTVmFsdWUganNU
ZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1
dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJp
ZGVCdWlsdGluc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OmdldENvbnN0
cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1
aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewot
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBl
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJv
dG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtF
TFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAv
LyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQotSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQot
ewotICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKTsKLSAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygp
OwotICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0
dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuZ2V0KCkpCi0gICAgICAgIHJldHVybiBzcGFjZTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+IHx8ICFKU1Rlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpuZWVkc0Rlc3RydWN0aW9uKTsKLSAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1
aWx0aW5zKTsKLSAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKTsKLSAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuZ2V0KCk7
Ci1JR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQotSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCi0gICAgaWYgKCZKU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6
OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKLSAgICAgICAgY2xpZW50RGF0YS5vdXRw
dXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKLUlHTk9SRV9XQVJOSU5HU19FTkQK
LUlHTk9SRV9XQVJOSU5HU19FTkQKLSAgICByZXR1cm4gc3BhY2U7Ci19Ci0KLXZvaWQgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxs
LCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyo+KGNlbGwpOwotICAgIGFu
YWx5emVyLnNldFdyYXBwZWRPYmplY3RGb3JDZWxsKGNlbGwsICZ0aGlzT2JqZWN0LT53cmFwcGVk
KCkpOwotICAgIGlmICh0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAg
ICAgIGFuYWx5emVyLnNldExhYmVsRm9yQ2VsbChjZWxsLCAidXJsICIgKyB0aGlzT2JqZWN0LT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVybCgpLnN0cmluZygpKTsKLSAgICBCYXNlOjphbmFs
eXplSGVhcChjZWxsLCBhbmFseXplcik7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGluc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6Okhh
bmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBj
b25zdCBjaGFyKiogcmVhc29uKQotewotICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOwotICAgIFVO
VVNFRF9QQVJBTSh2aXNpdG9yKTsKLSAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLXZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlu
c093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCog
Y29udGV4dCkKLXsKLSAgICBhdXRvKiBqc1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zID0gc3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyo+
KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2Fz
dDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwg
JmpzVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMtPndyYXBwZWQoKSwganNUZXN0
TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyk7Ci19Ci0KLSNpZiBFTkFCTEUoQklORElO
R19JTlRFR1JJVFkpCi0jaWYgUExBVEZPUk0oV0lOKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6
IDQ0ODMpCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/
XzdUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0BXZWJDb3JlQEA2QkAiKVtdKSgp
OyB9Ci0jZWxzZQotZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMzVUZXN0
TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0VbXTsgfQotI2VuZGlmCi0jZW5kaWYKLQot
SlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJp
ZGVCdWlsdGlucz4mJiBpbXBsKQotewotCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQot
ICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGlt
cGwucHRyKCkpOwotI2lmIFBMQVRGT1JNKFdJTikKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBv
aW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWls
dGluc0BXZWJDb3JlQEA2QkAiKTsKLSNlbHNlCi0gICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2lu
dGVyID0gJl9aVFZON1dlYkNvcmUzNVRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
RVsyXTsKLSNlbmRpZgotCi0gICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGlucyBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBh
ZGQgdGhlCi0gICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhl
IGludGVyZmFjZSBkZWZpbml0aW9uCi0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHltb3Jw
aGljPFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPjo6dmFsdWUsICJUZXN0TmFt
ZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyBpcyBub3QgcG9seW1vcnBoaWMiKTsKLQotICAg
IC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVy
IGZyZWUgYnVnLCBvcgotICAgIC8vIFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
IGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyBo
YXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKLSAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVu
dGx5IHJlcXVpcmUgVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMgeW91IHRvIG9w
dCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKLSAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFi
bGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCi0g
ICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBv
aW50ZXIpOwotI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVy
V2l0aE92ZXJyaWRlQnVpbHRpbnM+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0K
LUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zJiBpbXBsKQotewotICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Ci19Ci0KLVRlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjp0b1dy
YXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAoYXV0byog
d3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWls
dGlucyo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwot
ICAgIHJldHVybiBudWxscHRyOwotfQotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmgJKHJldmlzaW9uIDI2NjYzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMDEgKzAsMCBA
QAotLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHBy
b2plY3QuCi0gICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5k
aW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkpT
RE9NV3JhcHBlci5oIgotI2luY2x1ZGUgIlRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyA6IHB1
YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+IHsK
LXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zPjsKLSAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGlucyogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVC
dWlsdGlucz4mJiBpbXBsKQotICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGlucyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPihnbG9iYWxPYmplY3QtPnZtKCkuaGVh
cCkpIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMoc3RydWN0dXJlLCAqZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihn
bG9iYWxPYmplY3QtPnZtKCkpOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQotICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFs
T2JqZWN0Jik7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwg
SlNET01HbG9iYWxPYmplY3QmKTsKLSAgICBzdGF0aWMgVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJy
aWRlQnVpbHRpbnMqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKLSAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJh
dGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBwdXQo
SlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpT
Qzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBwdXRC
eUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9v
bCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6UHJvcGVydHlOYW1lLCBjb25zdCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wg
c2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKLQot
ICAgIERFQ0xBUkVfSU5GTzsKLQotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhl
ZEFjY2Vzc29ycyk7Ci0gICAgfQotCi0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAgICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhw
ciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCi0gICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7Ci0g
ICAgfQotICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpW
TSYgdm0pOwotICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFu
YWx5emVyJik7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJ
c0ltcHVyZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hl
bkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1l
cyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9w
ZXJ0eUNhY2hpbmc7Ci1wcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJp
ZGVCdWlsdGlucyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPiYmKTsKLQotICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNDOjpWTSYpOwotfTsKLQotY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJp
ZGVCdWlsdGluc093bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLXB1YmxpYzoK
LSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8
SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYsIGNvbnN0IGNo
YXIqKik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4sIHZvaWQqIGNvbnRleHQpOwotfTsKLQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3
cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnMqKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU1Rlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zT3duZXI+IG93bmVyOwotICAgIHJldHVybiAmb3duZXIuZ2V0
KCk7Ci19Ci0KLWlubGluZSB2b2lkKiB3cmFwcGVyS2V5KFRlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zKiB3cmFwcGFibGVPYmplY3QpCi17Ci0gICAgcmV0dXJuIHdyYXBwYWJsZU9i
amVjdDsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9N
R2xvYmFsT2JqZWN0KiwgVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMmKTsKLWlu
bGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFtZWRTZXR0ZXJX
aXRoT3ZlcnJpZGVCdWlsdGlucyogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4aWNhbEds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1KU0M6
OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9i
YWxPYmplY3QqLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+JiYpOwot
aW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
ZlB0cjxUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4mJiBpbXBsKSB7IHJldHVy
biBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9Ci0KLXRlbXBsYXRl
PD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGlucz4gewotICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IEpTVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM7Ci0gICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlw
ZSA9IFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKjsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAkocmV2aXNpb24gMjY2NjM5KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ1NyAr
MCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3Vy
Y2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRl
LWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5oIgotCi0j
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgi
Ci0jaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKLSNpbmNsdWRlICJKU0RPTUF0
dHJpYnV0ZS5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5n
cy5oIgotI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKLSNpbmNsdWRlICJKU0RP
TU9wZXJhdGlvbi5oIgotI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCi0jaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci11c2luZyBuYW1lc3BhY2UgSlNDOwotCi0vLyBGdW5jdGlvbnMKLQotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwotCi0vLyBBdHRyaWJ1dGVzCi0KLUpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25z
dHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNVbmZvcmdlYWJsZUF0dHJpYnV0ZShKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OwotCi1jbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1Byb3Rv
dHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewotcHVibGljOgotICAg
IHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1Byb3RvdHlwZT4odm0u
aGVhcCkpIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRp
b24odm0pOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQotICAgIERFQ0xBUkVfSU5GTzsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KLSAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCi0gICAg
ewotICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKLSAgICB9Ci0gICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2
bSwgc3RydWN0dXJlKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpT
Qzo6Vk0mKTsKLX07Ci1TVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1Byb3RvdHlwZSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNQcm90b3R5cGU6OkJhc2UpOwotCi11c2luZyBK
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yID0gSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXM+OwotCi0vKiBIYXNoIHRhYmxlICovCi0KLXN0YXRpYyBjb25zdCBzdHJ1
Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc1RhYmxlSW5kZXhbNF0gPSB7Ci0gICAgeyAtMSwgLTEgfSwKLSAgICB7IDEsIC0xIH0sCi0g
ICAgeyAtMSwgLTEgfSwKLSAgICB7IDAsIC0xIH0sCi19OwotCi0KLXN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1RhYmxl
VmFsdWVzW10gPQotewotICAgIHsgInVuZm9yZ2VhYmxlQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1VuZm9yZ2VhYmxlQXR0cmli
dXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oMCkgfSB9LAotICAgIHsgInVuZm9yZ2VhYmxlT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0luc3RhbmNlRnVuY3Rpb25V
bmZvcmdlYWJsZU9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKLX07Ci0KLXN0YXRpYyBj
b25zdCBIYXNoVGFibGUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNU
YWJsZSA9IHsgMiwgMywgdHJ1ZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXM6OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNU
YWJsZVZhbHVlcywgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNUYWJs
ZUluZGV4IH07Ci10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIFVOVVNF
RF9QQVJBTSh2bSk7Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgp
OwotfQotCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotfQot
Ci10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQ29uc3RydWN0b3IpIH07Ci0KLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwotCi1z
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KLXsKLSAgICB7ICJjb25zdHJ1Y3Rv
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25z
dHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3Ry
dWN0b3IpIH0gfSwKLX07Ci0KLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc1Byb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc1Byb3RvdHlwZSkgfTsKLQotdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewotICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjppbmZvKCksIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0
aGlzKTsKLSAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKLX0KLQot
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
OjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMiLCAm
QmFzZTo6c19pbmZvLCAmSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNU
YWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllcykgfTsKLQotSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXM6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPiYmIGltcGwpCi0gICAgOiBK
U0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPihzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKLXsKLX0KLQotdm9pZCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBBU1NFUlQoaW5oZXJpdHMo
dm0sIGluZm8oKSkpOwotCi0gICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2
ZURPTU9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPjo6dmFs
dWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRo
b3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsK
LQotfQotCi1KU09iamVjdCogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXM6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCi17Ci0gICAgcmV0dXJuIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSkpOwotfQotCi1KU09i
amVjdCogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OnByb3RvdHlw
ZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJu
IGdldERPTVByb3RvdHlwZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
cz4odm0sIGdsb2JhbE9iamVjdCk7Ci19Ci0KLUpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXM6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKLX0KLQot
dm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6ZGVzdHJveShK
U0M6OkpTQ2VsbCogY2VsbCkKLXsKLSAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllcyogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6On5KU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllcygpOwotfQotCi1ib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKj4ob2JqZWN0KTsK
LSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAg
dXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0
b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFs
PHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBh
dXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVU
b0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6
aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVG
cm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAg
IH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9
IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFBy
b3BlcnR5LnZhbHVlKCkpKTsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
dW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICBWTSYgdm0gPSBKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihvYmplY3QpOwot
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKLSAgICB1c2lu
ZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9
IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlw
ZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8g
cmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRv
bVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051
bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5
cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsK
LSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8
T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVy
dHkudmFsdWUoKSkpOwotICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0g
ICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHNsb3QpOwotfQotCi12b2lkIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCi17Ci0gICAgVk0m
IHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKj4o
b2JqZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKG9iamVjdCwgaW5mbygpKTsK
LSAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6IHRoaXNPYmplY3QtPndyYXBwZWQoKS5zdXBw
b3J0ZWRQcm9wZXJ0eU5hbWVzKCkpCi0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHByb3BlcnR5TmFtZSkpOwotICAgIEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywg
bW9kZSk7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXM6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHB1dFByb3BlcnR5U2xvdCkKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKj4oY2VsbCk7Ci0gICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotCi0gICAgaWYgKCFw
cm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRo
aXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZs
ZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpIH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0g
dGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCkpOwotICAgICAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNP
YmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7
Ci0gICAgICAgIGlmICghZm91bmQpIHsKLSAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAg
ICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHRydWUpOwotICAgICAgICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7Ci19Ci0KLWJvb2wgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OnB1dEJ5SW5kZXgoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgs
IEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKj4oY2VsbCk7Ci0gICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotCi0gICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0gICAgUHJvcGVy
dHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5LCAmdm0gfTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3Qt
PmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09i
amVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5
LnJlc2V0KCk7Ci0gICAgaWYgKCFmb3VuZCkgewotICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAg
ICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgdHJ1ZSk7Ci0gICAgICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS5zZXROYW1lZEl0ZW0ocHJv
cGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5
SW5kZXgoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJv
dyk7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0
eURlc2NyaXB0b3ImIHByb3BlcnR5RGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKLXsKLSAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7Ci0KLSAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7
Ci1zdGF0aWMgYm9vbCBpc1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCi17Ci0gICAgcmV0dXJuIHByb3BlcnR5TmFtZSA9PSAidW5mb3JnZWFibGVBdHRy
aWJ1dGUiIHx8IHByb3BlcnR5TmFtZSA9PSAidW5mb3JnZWFibGVPcGVyYXRpb24iOwotfQotCi0g
ICAgICAgIGlmICghaXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKSB7Ci0g
ICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgp
IH07Ci0gICAgICAgICAgICBib29sIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwot
ICAgICAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKLSAgICAgICAgICAgIGlm
ICghZm91bmQpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVzY3JpcHRvci5pc0Rh
dGFEZXNjcmlwdG9yKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
RGVzY3JpcHRvci52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHRydWUpOwotICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPndyYXBwZWQo
KS5zZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgUHJvcGVydHlEZXNjcmlwdG9yIG5ld1Byb3Bl
cnR5RGVzY3JpcHRvciA9IHByb3BlcnR5RGVzY3JpcHRvcjsKLSAgICBuZXdQcm9wZXJ0eURlc2Ny
aXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOwotICAgIHJldHVybiBKU09iamVjdDo6ZGVmaW5l
T3duUHJvcGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG5l
d1Byb3BlcnR5RGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwotfQotCi10ZW1wbGF0ZTw+IGlubGlu
ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyogSURMQXR0cmlidXRl
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPjo6Y2FzdChKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQot
ewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKj4oSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19
Ci0KLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1Byb3RvdHlwZSo+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wg
c2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcihK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlKj4odm0sIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkp
IHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpKTsKLX0KLQotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzVW5mb3JnZWFibGVBdHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzJiB0aGlzT2JqZWN0KQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudW5mb3JnZWFibGVBdHRyaWJ1dGUoKSkpKTsK
LX0KLQotRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNVbmZvcmdlYWJsZUF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
cz46OmdldDxqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1VuZm9yZ2Vh
YmxlQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidW5mb3JnZWFibGVBdHRyaWJ1dGUiKTsKLX0K
LQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9u
Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxG
cmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQotewot
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAg
ICBpbXBsLnVuZm9yZ2VhYmxlT3BlcmF0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0luc3RhbmNlRnVuY3Rpb25VbmZv
cmdlYWJsZU9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcz46OmNhbGw8anNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRp
b25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInVuZm9yZ2VhYmxlT3Bl
cmF0aW9uIik7Ci19Ci0KLUpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCi17Ci0gICAg
YXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpOwotICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Ci0gICAg
aWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXMuZ2V0KCkpCi0gICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPiB8fCAhSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwotICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
cyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXMpOwotICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyk7
Ci0gICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcy5nZXQoKTsKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCi1JR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKLSAgICBpZiAoJkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25z
dHJhaW50cykKLSAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBw
ZW5kKHNwYWNlKTsKLUlHTk9SRV9XQVJOSU5HU19FTkQKLUlHTk9SRV9XQVJOSU5HU19FTkQKLSAg
ICByZXR1cm4gc3BhY2U7Ci19Ci0KLXZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXM6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFs
eXplcikKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKj4oY2VsbCk7Ci0gICAgYW5hbHl6ZXIuc2V0V3JhcHBl
ZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQoKSk7Ci0gICAgaWYgKHRo
aXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgYW5hbHl6ZXIuc2V0
TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOwotICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFu
YWx5emVyKTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiog
cmVhc29uKQotewotICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOwotICAgIFVOVVNFRF9QQVJBTSh2
aXNpdG9yKTsKLSAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLXZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNPd25lcjo6
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQp
Ci17Ci0gICAgYXV0byoganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMg
PSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyo+
KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2Fz
dDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwg
JmpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLT53cmFwcGVkKCksIGpz
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKTsKLX0KLQotI2lmIEVOQUJM
RShCSU5ESU5HX0lOVEVHUklUWSkKLSNpZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdhcm5pbmco
ZGlzYWJsZTogNDQ4MykKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRp
ZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0BXZWJDb3Jl
QEA2QkAiKVtdKSgpOyB9Ci0jZWxzZQotZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdX
ZWJDb3JlMzlUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNFW107IH0KLSNl
bmRpZgotI2VuZGlmCi0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPiYmIGltcGwpCi17Ci0KLSNpZiBFTkFCTEUo
QklORElOR19JTlRFR1JJVFkpCi0gICAgY29uc3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9
IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIHZv
aWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRpZmllcigiPz9fN1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0BXZWJDb3JlQEA2QkAiKTsKLSNlbHNlCi0gICAg
dm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUzOVRlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0VbMl07Ci0jZW5kaWYKLQotICAgIC8vIElmIHRo
aXMgZmFpbHMgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIGRvZXMgbm90
IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKLSAgICAvLyBJbXBsZW1lbnRh
dGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KLSAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzPjo6dmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXMgaXMgbm90IHBvbHltb3JwaGljIik7Ci0KLSAgICAvLyBJZiB5b3UgaGl0IHRo
aXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKLSAg
ICAvLyBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMgaGFzIHN1YmNsYXNz
ZXMuIElmIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyBoYXMgc3ViY2xh
c3NlcyB0aGF0IGdldCBwYXNzZWQKLSAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVp
cmUgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIHlvdSB0byBvcHQgb3V0
IG9mIGJpbmRpbmcgaGFyZGVuaW5nCi0gICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFs
aWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgotICAgIFJF
TEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVy
KTsKLSNlbmRpZgotICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllcz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQot
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzJiBpbXBsKQotewotICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Ci19Ci0KLVRlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllcyogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXM6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAg
IGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllcyo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBl
ci0+d3JhcHBlZCgpOwotICAgIHJldHVybiBudWxscHRyOwotfQotCi19CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXMuaAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmgJKG5v
bmV4aXN0ZW50KQpAQCAtMSwxMDEgKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gICAgVGhpcyBmaWxlIGhhcyBiZWVu
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLQotICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0j
cHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgotI2luY2x1ZGUgIlRlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5oIgotI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+IHsKLXB1YmxpYzoKLSAgICB1c2lu
ZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllcz47Ci0gICAgc3RhdGljIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
cz4mJiBpbXBsKQotICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXMqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+KGdsb2JhbE9iamVjdC0+dm0oKS5o
ZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMoc3RydWN0dXJl
LCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVh
dGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQot
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9N
R2xvYmFsT2JqZWN0Jik7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6
OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKLSAgICBzdGF0aWMgVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7
Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7
Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNP
YmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpT
Qzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAgc3RhdGlj
IGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVy
dHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGlj
IGJvb2wgcHV0QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAg
c3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgY29uc3QgSlNDOjpQcm9wZXJ0eURlc2NyaXB0
b3ImLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlND
ZWxsKik7Ci0KLSAgICBERUNMQVJFX0lORk87Ci0KLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6TWF5
SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOwotICAgIH0KLQotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUg
Z2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCi0gICAgewotICAgICAgICBp
ZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQot
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBzdWJzcGFjZUZvcklt
cGwodm0pOwotICAgIH0KLSAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJ
bXBsKEpTQzo6Vk0mIHZtKTsKLSAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBK
U0M6OkhlYXBBbmFseXplciYpOwotcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJv
cGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6Okhhc1N0YXRpY1Byb3Bl
cnR5VGFibGUgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldo
ZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5TmFt
ZXMgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6UHJvaGliaXRzUHJv
cGVydHlDYWNoaW5nOwotcHJvdGVjdGVkOgotICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPiYmKTsKLQotICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotfTsKLQotY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25l
ciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0
b3ImLCBjb25zdCBjaGFyKiopOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKLX07Ci0KLWlubGluZSBKU0M6OldlYWtI
YW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyopCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzT3duZXI+IG93bmVyOwot
ICAgIHJldHVybiAmb3duZXIuZ2V0KCk7Ci19Ci0KLWlubGluZSB2b2lkKiB3cmFwcGVyS2V5KFRl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyogd3JhcHBhYmxlT2JqZWN0KQot
ewotICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcyYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyogaW1w
bCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1KU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRl
ZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPiYmKTsKLWlubGluZSBKU0M6OkpTVmFsdWUg
dG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3
bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNl
Tm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01X
cmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllcz4gewotICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzOwotICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGlucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucy5jcHAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwCShub25leGlzdGVudCkKQEAgLTEsNDM4ICswLDAg
QEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBw
cm9qZWN0LgotICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmlu
ZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGlucy5oIgotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSAiRE9N
SXNvU3Vic3BhY2VzLmgiCi0jaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKLSNp
bmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2lu
Y2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCi0jaW5jbHVkZSAiSlNE
T01Db252ZXJ0U3RyaW5ncy5oIgotI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIK
LSNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgotI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkNv
cmVKU0NsaWVudERhdGEuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci11c2luZyBuYW1lc3BhY2UgSlNDOwotCi0vLyBGdW5jdGlv
bnMKLQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rp
b25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKLQotLy8gQXR0cmlidXRlcwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVj
dG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zVW5mb3JnZWFibGVBdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLQotY2xhc3MgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBl
IGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgdXNp
bmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBl
KiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlPih2bS5oZWFw
KSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7Ci0gICAgICAgIHB0
ci0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQotICAg
IERFQ0xBUkVfSU5GTzsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJz
cGFjZUFjY2Vzcz4KLSAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCi0gICAgewotICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7Ci0gICAgfQotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGluc1Byb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpW
TSYpOwotfTsKLVNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlw
ZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zUHJvdG90eXBlOjpCYXNlKTsKLQotdXNpbmcgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IgPSBKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+OwotCi0vKiBIYXNoIHRhYmxlICovCi0KLXN0
YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNUYWJsZUluZGV4WzRdID0gewot
ICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxLCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCi0gICAgeyAw
LCAtMSB9LAotfTsKLQotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zVGFibGVWYWx1
ZXNbXSA9Ci17Ci0gICAgeyAidW5mb3JnZWFibGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1Vu
Zm9yZ2VhYmxlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgInVuZm9yZ2VhYmxlT3BlcmF0aW9uIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24pLCAo
aW50cHRyX3QpICgwKSB9IH0sCi19OwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1RhYmxl
ID0geyAyLCAzLCB0cnVlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnM6OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zVGFibGVWYWx1ZXMsIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1RhYmxlSW5k
ZXggfTsKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQotewotICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5j
dGlvblByb3RvdHlwZSgpOwotfQotCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKLXsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5z
Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMiX3MpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwotfQotCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGlucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH07Ci0KLS8qIEhhc2ggdGFibGUgZm9yIHBy
b3RvdHlwZSAqLwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlVGFi
bGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH0gfSwKLX07Ci0KLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90
b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSkgfTsKLQotdm9pZCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
Ci0gICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OmluZm8oKSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBl
VGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5T
SVRJT04oKTsKLX0KLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6c19pbmZvID0geyAiVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyIsICZCYXNl
OjpzX2luZm8sICZKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnNUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMpIH07
Ci0KLUpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGluczo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGlucz4mJiBpbXBsKQotICAgIDogSlNET01XcmFwcGVyPFRlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+KHN0cnVjdHVy
ZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQotewotfQotCi12b2lkIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBB
U1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwotCi0gICAgc3RhdGljX2Fzc2VydCghc3RkOjpp
c19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBt
YXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xh
c3Mgc3ViY2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7Ci0KLX0KLQotSlNPYmplY3QqIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6
Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
LXsKLSAgICByZXR1cm4gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
c1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3Qub2JqZWN0UHJvdG90eXBlKCkpKTsKLX0KLQotSlNPYmplY3QqIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6cHJvdG90eXBlKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1cm4gZ2V0
RE9NUHJvdG90eXBlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGlucz4odm0sIGdsb2JhbE9iamVjdCk7Ci19Ci0KLUpTVmFsdWUgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpn
ZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
Ci17Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yPih2bSwgKmpz
Q2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwotfQotCi12b2lk
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGluczo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKLXsKLSAgICBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqIHRoaXNPYmplY3Qg
PSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnMqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT5KU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6On5KU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMoKTsK
LX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7Ci0gICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBh
dXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5h
bWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlw
ZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRl
bShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICgh
R2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBl
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zp
c2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Olllcz4oKmxleGljYWxHbG9iYWxP
YmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci19Ci0K
LWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVy
dHlTbG90JiBzbG90KQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqPihvYmplY3QpOwotICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKLSAgICB1c2luZyBH
ZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtd
IChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5h
bWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVz
dWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxW
YWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6
OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxs
YWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKLSAg
ICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3Zl
cnJpZGVCdWlsdGluczo6WWVzPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5
LnZhbHVlKCkpKTsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAg
IHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIGxleGlj
YWxHbG9iYWxPYmplY3QsIGluZGV4LCBzbG90KTsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwot
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKG9iamVjdCwgaW5mbygpKTsKLSAgICBmb3IgKGF1dG8mIHByb3Bl
cnR5TmFtZSA6IHRoaXNPYmplY3QtPndyYXBwZWQoKS5zdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkp
Ci0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHBy
b3BlcnR5TmFtZSkpOwotICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7Ci19Ci0KLWJvb2wgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5z
OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBwdXRQcm9wZXJ0eVNsb3QpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMq
PihjZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7Ci0KLSAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KSk7Ci0gICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB0cnVlKTsKLSAgICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNl
dE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBK
U09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpwdXRCeUluZGV4KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVk
IGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMq
PihjZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7Ci0KLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4
KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwotICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS5z
ZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6ZGVmaW5lT3du
UHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRv
ciYgcHJvcGVydHlEZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQotewotICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0KLSAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5
bWJvbCgpKSB7Ci1zdGF0aWMgYm9vbCBpc1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgcmV0dXJuIHByb3BlcnR5TmFtZSA9PSAidW5mb3Jn
ZWFibGVBdHRyaWJ1dGUiIHx8IHByb3BlcnR5TmFtZSA9PSAidW5mb3JnZWFibGVPcGVyYXRpb24i
OwotfQotCi0gICAgICAgIGlmICghaXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZShwcm9wZXJ0eU5h
bWUpKSB7Ci0gICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlw
dG9yKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpKTsKLSAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5RGVzY3JpcHRvci52YWx1ZSgpKTsK
LSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7Ci0gICAg
ICAgICAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRv
U3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUHJvcGVydHlEZXNjcmlwdG9y
IG5ld1Byb3BlcnR5RGVzY3JpcHRvciA9IHByb3BlcnR5RGVzY3JpcHRvcjsKLSAgICBuZXdQcm9w
ZXJ0eURlc2NyaXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOwotICAgIHJldHVybiBKU09iamVj
dDo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIG5ld1Byb3BlcnR5RGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwotfQotCi10ZW1wbGF0
ZTw+IGlubGluZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnMqIElETEF0dHJpYnV0ZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5z
KiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFs
dWUoKSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwot
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8q
IHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3RvcihKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19
Ci0KLWJvb2wgc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0g
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byog
cHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQot
Ci1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zVW5mb3JnZWFibGVBdHRyaWJ1dGVHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyYgdGhpc09iamVjdCkKLXsKLSAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LnVuZm9yZ2VhYmxlQXR0cmlidXRlKCkpKSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1VuZm9y
Z2VhYmxlQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucz46OmdldDxqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnNVbmZvcmdlYWJsZUF0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
InVuZm9yZ2VhYmxlQXR0cmlidXRlIik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJy
aWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb25Cb2R5KEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxs
RnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzKQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
LSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVh
c2UoKTsKLSAgICBpbXBsLnVuZm9yZ2VhYmxlT3BlcmF0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24oSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQotewotICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFi
bGVPcGVyYXRpb25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInVuZm9y
Z2VhYmxlT3BlcmF0aW9uIik7Ci19Ci0KLUpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6c3Vic3BhY2VG
b3JJbXBsKEpTQzo6Vk0mIHZtKQotewotICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKLSAgICBhdXRvJiBzcGFjZXMgPSBj
bGllbnREYXRhLnN1YnNwYWNlcygpOwotICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucy5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPiB8fCAh
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zOjpuZWVkc0Rlc3RydWN0aW9uKTsKLSAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKTsKLSAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGlucyk7Ci0gICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuZ2V0KCk7
Ci1JR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQotSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCi0gICAgaWYgKCZKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OnZpc2l0T3V0
cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQot
ICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2Up
OwotSUdOT1JFX1dBUk5JTkdTX0VORAotSUdOT1JFX1dBUk5JTkdTX0VORAotICAgIHJldHVybiBz
cGFjZTsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnM6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5
emVyJiBhbmFseXplcikKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyo+KGNl
bGwpOwotICAgIGFuYWx5emVyLnNldFdyYXBwZWRPYmplY3RGb3JDZWxsKGNlbGwsICZ0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkpOwotICAgIGlmICh0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpCi0gICAgICAgIGFuYWx5emVyLnNldExhYmVsRm9yQ2VsbChjZWxsLCAidXJsICIgKyB0
aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVybCgpLnN0cmluZygpKTsKLSAg
ICBCYXNlOjphbmFseXplSGVhcChjZWxsLCBhbmFseXplcik7Ci19Ci0KLWJvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zT3duZXI6
OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFu
ZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFzb24pCi17
Ci0gICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwot
ICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRp
bnNPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQq
IGNvbnRleHQpCi17Ci0gICAgYXV0byoganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zID0gc3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKj4oaGFuZGxlLnNs
b3QoKS0+YXNDZWxsKCkpOwotICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBw
ZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLT53cmFw
cGVkKCksIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucyk7Ci19Ci0KLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0jaWYgUExB
VEZPUk0oV0lOKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCi1leHRlcm4gIkMiIHsg
ZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQFdlYkNvcmVAQDZCQCIpW10p
KCk7IH0KLSNlbHNlCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmU1OFRl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNF
W107IH0KLSNlbmRpZgotI2VuZGlmCi0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
cz4mJiBpbXBsKQotewotCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotICAgIGNvbnN0
IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkp
OwotI2lmIFBMQVRGT1JNKFdJTikKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBf
X2lkZW50aWZpZXIoIj8/XzdUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zQFdlYkNvcmVAQDZCQCIpOwotI2Vsc2UKLSAgICB2b2lkKiBleHBl
Y3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTU4VGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0VbMl07Ci0jZW5kaWYKLQotICAg
IC8vIElmIHRoaXMgZmFpbHMgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGlucyBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0
byBhZGQgdGhlCi0gICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8g
dGhlIGludGVyZmFjZSBkZWZpbml0aW9uCi0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHlt
b3JwaGljPFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnM+Ojp2YWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnMgaXMgbm90IHBvbHltb3JwaGljIik7Ci0KLSAgICAvLyBJZiB5
b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1
Zywgb3IKLSAgICAvLyBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zIGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zIGhhcyBzdWJjbGFzc2VzIHRoYXQg
Z2V0IHBhc3NlZAotICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zIHlvdSB0
byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCi0gICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lw
VlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlv
bgotICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFi
bGVQb2ludGVyKTsKLSNlbmRpZgotICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+KGdsb2JhbE9i
amVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnMmIGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LCBpbXBsKTsKLX0KLQotVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjp0b1dyYXBwZWQoSlNDOjpWTSYgdm0s
IEpTQzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zKj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVk
KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmgJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaAkobm9uZXhpc3RlbnQp
CkBAIC0xLDEwMSArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJL
aXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCi0jaW5jbHVkZSAiVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5oIgotI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
cyA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz4gewotcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBK
U0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3Zl
cnJpZGVCdWlsdGlucz47Ci0gICAgc3RhdGljIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwp
Ci0gICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnMqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyhzdHJ1Y3R1cmUsICpnbG9iYWxP
YmplY3QsIFdURk1vdmUoaW1wbCkpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2Jh
bE9iamVjdC0+dm0oKSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgc3RhdGlj
IEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmpl
Y3QmKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RP
TUdsb2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6
SlNWYWx1ZSk7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6
OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVB
cnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0g
ICAgc3RhdGljIGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7Ci0g
ICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJv
dyk7Ci0gICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgY29uc3QgSlNDOjpQcm9wZXJ0
eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQzo6SlNDZWxsKik7Ci0KLSAgICBERUNMQVJFX0lORk87Ci0KLSAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCks
IEpTQzo6TWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOwotICAgIH0KLQotICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCi0gICAgewot
ICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3Vy
cmVudGx5KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBzdWJz
cGFjZUZvckltcGwodm0pOwotICAgIH0KLSAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKLSAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChK
U0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwotcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6
R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmUgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGUg
fCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJ
c05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5TmFtZXMgfCBKU0M6
Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6UHJvaGliaXRzUHJvcGVydHlDYWNo
aW5nOwotcHJvdGVjdGVkOgotICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0JiwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJy
aWRlQnVpbHRpbnM+JiYpOwotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Ci19
OwotCi1jbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnNPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImLCBjb25z
dCBjaGFyKiopOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+LCB2b2lkKiBjb250ZXh0KTsKLX07Ci0KLWlubGluZSBKU0M6OldlYWtIYW5kbGVPd25l
ciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqKQotewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnNPd25lcj4gb3duZXI7Ci0gICAgcmV0dXJuICZvd25lci5nZXQoKTsKLX0K
LQotaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyogd3JhcHBhYmxlT2JqZWN0KQotewotICAgIHJl
dHVybiB3cmFwcGFibGVPYmplY3Q7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMmKTsKLWlubGluZSBKU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0K
LUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RP
TUdsb2JhbE9iamVjdCosIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zPiYmKTsKLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5
Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz4mJiBpbXBsKSB7IHJldHVybiBpbXBs
ID8gdG9KU05ld2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlt
cGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9Ci0KLXRlbXBsYXRlPD4gc3Ry
dWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPiB7Ci0gICAgdXNpbmcgV3JhcHBlckNs
YXNzID0gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zOwotICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKjsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAyNjY2MzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODI3LDcgKzgyNyw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGlj
dGlvbmFyeSBjb252ZXJ0RGkKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOwogICAgIH0KICAgICBpZiAoIXN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmdWYWx1
ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHJlc3VsdC5zdHJpbmdUcmVhdE51bGxBc0VtcHR5
U3RyaW5nID0gY29udmVydDxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExET01TdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nVmFsdWUp
OworICAgICAgICByZXN1bHQuc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZyA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmdWYWx1ZSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgSlNWYWx1
ZSBzdHJpbmdXaXRoRGVmYXVsdFZhbHVlOwpAQCAtMTA1OSw4ICsxMDU5LDggQEAgSlNDOjpKU09i
amVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpTQwogICAgIH0KICAgICBhdXRvIHNtYWxsVW5z
aWduZWRJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IHRvSlM8SURMT2N0ZXQ+KGRpY3Rpb25hcnku
c21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdCk7CiAgICAgcmVzdWx0LT5wdXREaXJlY3Qo
dm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNtYWxsVW5zaWduZWRJbnRlZ2Vy
V2l0aERlZmF1bHQiKSwgc21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdFZhbHVlKTsKLSAg
ICBpZiAoIUlETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETERPTVN0cmluZz46OmlzTnVsbFZh
bHVlKGRpY3Rpb25hcnkuc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZykpIHsKLSAgICAgICAg
YXV0byBzdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nVmFsdWUgPSB0b0pTPElETFRyZWF0TnVs
bEFzRW1wdHlBZGFwdG9yPElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIElETFRy
ZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETERPTVN0cmluZz46OmV4dHJhY3RWYWx1ZUZyb21OdWxs
YWJsZShkaWN0aW9uYXJ5LnN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmcpKTsKKyAgICBpZiAo
IUlETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+Ojppc051bGxW
YWx1ZShkaWN0aW9uYXJ5LnN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmcpKSB7CisgICAgICAg
IGF1dG8gc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZ1ZhbHVlID0gdG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgSURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz46OmV4dHJh
Y3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJp
bmcpKTsKICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmciKSwgc3RyaW5nVHJlYXRO
dWxsQXNFbXB0eVN0cmluZ1ZhbHVlKTsKICAgICB9CiAgICAgYXV0byBzdHJpbmdXaXRoRGVmYXVs
dFZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIGRpY3Rpb25h
cnkuc3RyaW5nV2l0aERlZmF1bHQpOwpAQCAtMzI1Niw3ICszMjU2LDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dAogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExUcmVhdE51bGxBc0VtcHR5
QWRhcHRvcjxJRExET01TdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKCkpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExET01TdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKCkpKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKQEAgLTMyNjksNyArMzI2OSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHQKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExET01T
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETERPTVN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICAgcmV0dXJuIGltcGwuc2V0U3Ry
aW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwpA
QCAtMzI4Nyw3ICszMjg3LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialVzdnN0
cmluZwogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnVzdnN0cmluZ0F0dHJUcmVhdGlu
Z051bGxBc0VtcHR5U3RyaW5nKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnVzdnN0cmluZ0F0dHJUcmVh
dGluZ051bGxBc0VtcHR5U3RyaW5nKCkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alVzdnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKQEAgLTMzMDAsNyArMzMwMCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpV
c3ZzdHJpbmcKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICAgcmV0dXJuIGltcGwuc2V0VXN2c3RyaW5nQXR0clRyZWF0
aW5nTnVsbEFzRW1wdHlTdHJpbmcoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwpAQCAtMzMxOCw3ICsz
MzE4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakJ5dGVTdHJpbgogICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExCeXRlU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5ieXRlU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1w
dHlTdHJpbmcoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETEJ5dGVTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmJ5dGVTdHJpbmdBdHRyVHJlYXRpbmdOdWxs
QXNFbXB0eVN0cmluZygpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpCeXRlU3Ry
aW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQpAQCAt
MzMzMSw3ICszMzMxLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakJ5dGVTdHJp
bgogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETEJ5dGVTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETEJ5dGVTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgIHJldHVybiBpbXBsLnNldEJ5dGVTdHJpbmdBdHRyVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyhXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CkBAIC01OTg5LDcgKzU5ODks
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgaWYgKFVO
TElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIEVuc3VyZVN0aWxs
QWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwot
ICAgIGF1dG8gYXJnID0gY29udmVydDxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExET01T
dHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOworICAgIGF1
dG8gYXJnID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMRE9N
U3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHRo
cm93U2NvcGUucmVsZWFzZSgpOwogICAgIGltcGwubWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFz
RW1wdHlTdHJpbmcoV1RGTW92ZShhcmcpKTsKQEAgLTYyMzMsNyArNjIzMyw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBpZiAoVU5MSUtFTFkoY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFy
Z3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBzdHIg
PSBjb252ZXJ0PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETFVTVlN0cmluZz4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CisgICAgYXV0byBzdHIgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7CiAgICAgaW1wbC5tZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZyhXVEZNb3ZlKHN0cikpOwpAQCAtNjI5OSw3ICs2Mjk5LDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1l
bnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRvIHN0ciA9IGNv
bnZlcnQ8SURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8SURMQnl0ZVN0cmluZz4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CisgICAgYXV0byBzdHIgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExCeXRlU3RyaW5nPj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHRocm93U2NvcGUucmVsZWFz
ZSgpOwogICAgIGltcGwubWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5
U3RyaW5nKFdURk1vdmUoc3RyKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRp
bnMuY3BwCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAt
MSwzNTEgKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9w
ZW4gc291cmNlIHByb2plY3QuCi0gICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBn
ZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLQotICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oIgotCi0jaW5jbHVkZSAiQWN0
aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCi0jaW5jbHVkZSAi
SlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNp
bmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgotI2luY2x1ZGUgIkpT
RE9NQ29udmVydEludGVyZmFjZS5oIgotI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIK
LSNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCi0jaW5jbHVkZSAiSlNET01HbG9i
YWxPYmplY3QuaCIKLSNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgotI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCi0jaW5jbHVkZSAiSlNOb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgotI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5o
PgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0
aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci11
c2luZyBuYW1lc3BhY2UgSlNDOwotCi0vLyBGdW5jdGlvbnMKLQotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5h
bWVkSXRlbShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKLQotLy8gQXR0
cmlidXRlcwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25z
dHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3Io
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwotCi1jbGFzcyBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlIGZpbmFsIDog
cHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9
IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
c1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgSlNUZXN0
T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0
T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwot
ICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAgcmV0dXJuIHB0cjsKLSAg
ICB9Ci0KLSAgICBERUNMQVJFX0lORk87Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IEpTQzo6U3Vic3BhY2VBY2Nlc3M+Ci0gICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQotICAgIHsKLSAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKLSAgICB9Ci0gICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3Rv
dHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCi0gICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUp
Ci0gICAgewotICAgIH0KLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotfTsK
LVNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE92ZXJyaWRlQnVpbHRp
bnNQcm90b3R5cGUsIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OkJhc2UpOwotCi11
c2luZyBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZTxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zPjsKLQotdGVtcGxhdGU8PiBK
U1ZhbHVlIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQotewotICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5j
dGlvblByb3RvdHlwZSgpOwotfQotCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T3ZlcnJpZGVCdWls
dGluc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2
aWFsU3RyaW5nKHZtLCAiVGVzdE92ZXJyaWRlQnVpbHRpbnMiX3MpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwotfQotCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RPdmVycmlkZUJ1aWx0aW5zIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH07Ci0KLS8qIEhhc2ggdGFibGUgZm9yIHBy
b3RvdHlwZSAqLwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T3ZlcnJpZGVC
dWlsdGluc1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQotewotICAgIHsgImNvbnN0cnVjdG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH0gfSwKLSAgICB7ICJuYW1lZEl0ZW0iLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE92ZXJy
aWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbSksIChpbnRwdHJfdCkgKDEpIH0g
fSwKLX07Ci0KLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBl
OjpzX2luZm8gPSB7ICJUZXN0T3ZlcnJpZGVCdWlsdGlucyIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1By
b3RvdHlwZSkgfTsKLQotdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAg
IHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6aW5mbygp
LCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAg
ICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKLX0KLQotY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnNfaW5mbyA9IHsgIlRlc3RPdmVycmlkZUJ1
aWx0aW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKSB9OwotCi1KU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
OjpKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE92ZXJyaWRlQnVpbHRpbnM+JiYgaW1wbCkK
LSAgICA6IEpTRE9NV3JhcHBlcjxUZXN0T3ZlcnJpZGVCdWlsdGlucz4oc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCi17Ci19Ci0KLXZvaWQgSlNUZXN0T3ZlcnJpZGVCdWls
dGluczo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKLSAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwotCi0gICAgc3RhdGljX2Fz
c2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwgVGVzdE92ZXJyaWRlQnVpbHRp
bnM+Ojp2YWx1ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3Rd
IGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2Jq
ZWN0LiIpOwotCi19Ci0KLUpTT2JqZWN0KiBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpjcmVhdGVQ
cm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAg
IHJldHVybiBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9i
YWxPYmplY3QsIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Ci19
Ci0KLUpTT2JqZWN0KiBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpwcm90b3R5cGUoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBnZXRET01Qcm90
b3R5cGU8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucz4odm0sIGdsb2JhbE9iamVjdCk7Ci19Ci0KLUpT
VmFsdWUgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25z
dCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBnZXRET01Db25z
dHJ1Y3RvcjxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Ci19Ci0KLXZvaWQgSlNUZXN0
T3ZlcnJpZGVCdWlsdGluczo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKLXsKLSAgICBKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0T3ZlcnJp
ZGVCdWlsdGlucyo+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPkpTVGVzdE92ZXJyaWRlQnVpbHRp
bnM6On5KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKCk7Ci19Ci0KLWJvb2wgSlNUZXN0T3ZlcnJpZGVC
dWlsdGluczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETEludGVy
ZmFjZTxOb2RlPjsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVj
dCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6
OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1l
KSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAg
ICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5
cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9Owot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQ
cm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Olll
cz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRl
ckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2Rl
Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgV1RG
TW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4g
SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7Ci19Ci0KLWJvb2wgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xv
dCkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyo+KG9iamVj
dCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwot
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAg
IHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExJbnRlcmZhY2U8Tm9kZT47Ci0gICAgYXV0byBnZXR0
ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBP
cHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAg
ICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVy
dHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklE
TFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUg
R2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFj
dFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFt
ZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpZZXM+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
dGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRv
IHZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
dGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgp
KSk7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHNsb3QpOwotfQot
Ci12b2lkIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBW
TSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyo+KG9iamVjdCk7Ci0gICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhvYmplY3QsIGluZm8oKSk7Ci0gICAgZm9yIChhdXRvJiBw
cm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVkUHJvcGVydHlOYW1l
cygpKQotICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCBwcm9wZXJ0eU5hbWUpKTsKLSAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwotfQotCi10ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKiBJRExPcGVyYXRpb248SlNUZXN0
T3ZlcnJpZGVCdWlsdGlucz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpT
VGVzdE92ZXJyaWRlQnVpbHRpbnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwg
Y2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcnJp
ZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICBWTSYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldENv
bnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xv
YmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9
IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAg
dGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25z
dHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQ
cm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbUJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3Bl
cmF0aW9uPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlz
KQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpZiAoVU5MSUtFTFkoY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFy
Z3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBuYW1l
ID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAu
dmFsdWUoKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLm5hbWVkSXRlbShXVEZNb3ZlKG5hbWUpKSkpKTsK
LX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5z
UHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0ZW0oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQotewotICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T3ZlcnJpZGVCdWlsdGlucz46OmNhbGw8anNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3Rv
dHlwZUZ1bmN0aW9uTmFtZWRJdGVtQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJh
bWUsICJuYW1lZEl0ZW0iKTsKLX0KLQotSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0T3ZlcnJpZGVC
dWlsdGluczo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQotewotICAgIGF1dG8mIGNsaWVu
dERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKLSAg
ICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwotICAgIGlmIChhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJyaWRlQnVpbHRpbnMuZ2V0KCkpCi0g
ICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+IHx8ICFK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpuZWVkc0Rlc3RydWN0aW9uKTsKLSAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE92
ZXJyaWRlQnVpbHRpbnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVycmlk
ZUJ1aWx0aW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zKTsKLSAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE92ZXJyaWRlQnVpbHRpbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zKTsKLSAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJy
aWRlQnVpbHRpbnMuZ2V0KCk7Ci1JR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQotSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCi0gICAg
aWYgKCZKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZK
U0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKLSAgICAgICAgY2xpZW50RGF0YS5v
dXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKLUlHTk9SRV9XQVJOSU5HU19F
TkQKLUlHTk9SRV9XQVJOSU5HU19FTkQKLSAgICByZXR1cm4gc3BhY2U7Ci19Ci0KLXZvaWQgSlNU
ZXN0T3ZlcnJpZGVCdWlsdGluczo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6
ZXImIGFuYWx5emVyKQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0T3Zl
cnJpZGVCdWlsdGlucyo+KGNlbGwpOwotICAgIGFuYWx5emVyLnNldFdyYXBwZWRPYmplY3RGb3JD
ZWxsKGNlbGwsICZ0aGlzT2JqZWN0LT53cmFwcGVkKCkpOwotICAgIGlmICh0aGlzT2JqZWN0LT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgIGFuYWx5emVyLnNldExhYmVsRm9yQ2Vs
bChjZWxsLCAidXJsICIgKyB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVy
bCgpLnN0cmluZygpKTsKLSAgICBCYXNlOjphbmFseXplSGVhcChjZWxsLCBhbmFseXplcik7Ci19
Ci0KLWJvb2wgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNp
dG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQotewotICAgIFVOVVNFRF9QQVJBTSho
YW5kbGUpOwotICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKLSAgICBVTlVTRURfUEFSQU0ocmVh
c29uKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
c093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCog
Y29udGV4dCkKLXsKLSAgICBhdXRvKiBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zID0gc3RhdGljX2Nh
c3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAg
ICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsK
LSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE92ZXJyaWRlQnVpbHRpbnMtPndyYXBw
ZWQoKSwganNUZXN0T3ZlcnJpZGVCdWlsdGlucyk7Ci19Ci0KLSNpZiBFTkFCTEUoQklORElOR19J
TlRFR1JJVFkpCi0jaWYgUExBVEZPUk0oV0lOKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0
ODMpCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdU
ZXN0T3ZlcnJpZGVCdWlsdGluc0BXZWJDb3JlQEA2QkAiKVtdKSgpOyB9Ci0jZWxzZQotZXh0ZXJu
ICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMjBUZXN0T3ZlcnJpZGVCdWlsdGluc0Vb
XTsgfQotI2VuZGlmCi0jZW5kaWYKLQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxU
ZXN0T3ZlcnJpZGVCdWlsdGlucz4mJiBpbXBsKQotewotCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5U
RUdSSVRZKQotICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQ
b2ludGVyKGltcGwucHRyKCkpOwotI2lmIFBMQVRGT1JNKFdJTikKLSAgICB2b2lkKiBleHBlY3Rl
ZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdUZXN0T3ZlcnJpZGVCdWlsdGluc0BX
ZWJDb3JlQEA2QkAiKTsKLSNlbHNlCi0gICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0g
Jl9aVFZON1dlYkNvcmUyMFRlc3RPdmVycmlkZUJ1aWx0aW5zRVsyXTsKLSNlbmRpZgotCi0gICAg
Ly8gSWYgdGhpcyBmYWlscyBUZXN0T3ZlcnJpZGVCdWlsdGlucyBkb2VzIG5vdCBoYXZlIGEgdnRh
YmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCi0gICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZU
YWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCi0gICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3BvbHltb3JwaGljPFRlc3RPdmVycmlkZUJ1aWx0aW5zPjo6dmFsdWUsICJU
ZXN0T3ZlcnJpZGVCdWlsdGlucyBpcyBub3QgcG9seW1vcnBoaWMiKTsKLQotICAgIC8vIElmIHlv
dSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVn
LCBvcgotICAgIC8vIFRlc3RPdmVycmlkZUJ1aWx0aW5zIGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0
T3ZlcnJpZGVCdWlsdGlucyBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKLSAgICAvLyB0
byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVzdE92ZXJyaWRlQnVpbHRpbnMgeW91IHRv
IG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKLSAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBW
VGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9u
Ci0gICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJs
ZVBvaW50ZXIpOwotI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdE92ZXJyaWRl
QnVpbHRpbnM+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPdmVycmlkZUJ1aWx0aW5zJiBpbXBsKQotewot
ICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7
Ci19Ci0KLVRlc3RPdmVycmlkZUJ1aWx0aW5zKiBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjp0b1dy
YXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAoYXV0byog
d3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyo+KHZtLCB2YWx1
ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwotICAgIHJldHVybiBudWxs
cHRyOwotfQotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgJKHJldmlz
aW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw5OCArMCwwIEBACi0v
KgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdz
LnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSlNET01X
cmFwcGVyLmgiCi0jaW5jbHVkZSAiVGVzdE92ZXJyaWRlQnVpbHRpbnMuaCIKLSNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0T3ZlcnJpZGVCdWls
dGlucz4gewotcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE92ZXJy
aWRlQnVpbHRpbnM+OwotICAgIHN0YXRpYyBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKiBjcmVhdGUo
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3RPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwpCi0gICAgewotICAgICAgICBKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0
T3ZlcnJpZGVCdWlsdGlucyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkp
OwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7Ci0gICAg
ICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0
ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKLSAgICBzdGF0aWMgSlND
OjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwotICAg
IHN0YXRpYyBUZXN0T3ZlcnJpZGVCdWlsdGlucyogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpT
VmFsdWUpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpK
U09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJy
YXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKLQotICAgIERFQ0xBUkVfSU5GTzsK
LQotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCi0gICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7Ci0gICAg
fQotCi0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29u
c3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1
YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKLSAgICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1
YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7Ci0gICAgfQotICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwotICAgIHN0YXRp
YyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSB8IEpTQzo6SW50
ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8
IEpTQzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90OwotcHJvdGVjdGVkOgotICAgIEpTVGVzdE92ZXJyaWRlQnVpbHRp
bnMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0T3ZlcnJpZGVC
dWlsdGlucz4mJik7Ci0KLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKLX07Ci0K
LWNsYXNzIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5k
bGVPd25lciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xv
dFZpc2l0b3ImLCBjb25zdCBjaGFyKiopOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKLX07Ci0KLWlubGluZSBKU0M6
OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RPdmVy
cmlkZUJ1aWx0aW5zKikKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0T3ZlcnJp
ZGVCdWlsdGluc093bmVyPiBvd25lcjsKLSAgICByZXR1cm4gJm93bmVyLmdldCgpOwotfQotCi1p
bmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0T3ZlcnJpZGVCdWlsdGlucyogd3JhcHBhYmxlT2Jq
ZWN0KQotewotICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RPdmVycmlk
ZUJ1aWx0aW5zJik7Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGVzdE92ZXJyaWRlQnVpbHRpbnMqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKGxleGljYWxH
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsgfQotSlND
OjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xv
YmFsT2JqZWN0KiwgUmVmPFRlc3RPdmVycmlkZUJ1aWx0aW5zPiYmKTsKLWlubGluZSBKU0M6OkpT
VmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VGVzdE92ZXJy
aWRlQnVpbHRpbnM+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4
aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDog
SlNDOjpqc051bGwoKTsgfQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0
ZXJUcmFpdHM8VGVzdE92ZXJyaWRlQnVpbHRpbnM+IHsKLSAgICB1c2luZyBXcmFwcGVyQ2xhc3Mg
PSBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOwotICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUg
PSBUZXN0T3ZlcnJpZGVCdWlsdGlucyo7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1z
dHlsZQojIyAtMSArMCwwICMjCi1MRgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsCShyZXZpc2lv
biAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDEzICszMywxMyBAQAogICAgIFtDRVJlYWN0aW9ucywgTWF5
VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyByZW1vdmVQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVy
dHlOYW1lKTsKICAgICBET01TdHJpbmc/IGdldFByb3BlcnR5UHJpb3JpdHkoRE9NU3RyaW5nIHBy
b3BlcnR5TmFtZSk7CiAKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB1bmRl
ZmluZWQgc2V0UHJvcGVydHkoRE9NU3RyaW5nIHByb3BlcnR5TmFtZSwgW1RyZWF0TnVsbEFzPUVt
cHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWUsIG9wdGlvbmFsIFtUcmVhdE51bGxBcz1FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIHByaW9yaXR5ID0gIiIpOworICAgIFtDRVJlYWN0aW9ucywgTWF5VGhy
b3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVydHlOYW1l
LCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZSwgb3B0aW9uYWwgW0xl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgcHJpb3JpdHkgPSAiIik7CiAKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgZ2V0dGVyIERPTVN0
cmluZyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBD
U1NSdWxlPyBwYXJlbnRSdWxlOwogCi0gICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0
TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgY3NzRmxvYXQ7CisgICAgW0NFUmVhY3Rpb25z
XSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgY3NzRmxvYXQ7
CiAKICAgICBET01TdHJpbmc/IGdldFByb3BlcnR5U2hvcnRoYW5kKG9wdGlvbmFsIERPTVN0cmlu
ZyBwcm9wZXJ0eU5hbWUpOwogICAgIGJvb2xlYW4gaXNQcm9wZXJ0eUltcGxpY2l0KG9wdGlvbmFs
IERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwpAQCAtNDksNyArNDksNyBAQAogICAgIC8vIHByZWZp
eGVzIGZvciB0aGlzIHRvIGJlIHByYWN0aWNhbC4gSWYgd2UgcmVtb3ZlIGxlZ2FjeSBhbGlhc2Vz
LCB3ZSBzaG91bGQKICAgICAvLyByZWNvbnNpZGVyIHRoaXMgZGVjaXNpb24uCiAgICAgZ2V0dGVy
IChET01TdHJpbmcgb3IgZG91YmxlKSAoRE9NU3RyaW5nIG5hbWUpOwotICAgIFtDRVJlYWN0aW9u
cywgTWF5VGhyb3dFeGNlcHRpb24sIENhbGxOYW1lZFNldHRlck9ubHlGb3JTdXBwb3J0ZWRQcm9w
ZXJ0aWVzXSBzZXR0ZXIgdW5kZWZpbmVkIChET01TdHJpbmcgbmFtZSwgW1RyZWF0TnVsbEFzPUVt
cHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWUpOworICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dF
eGNlcHRpb24sIENhbGxOYW1lZFNldHRlck9ubHlGb3JTdXBwb3J0ZWRQcm9wZXJ0aWVzXSBzZXR0
ZXIgdW5kZWZpbmVkIChET01TdHJpbmcgbmFtZSwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBE
T01TdHJpbmcgdmFsdWUpOwogCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCwgYW5k
IHdlIHdvdWxkIGxpa2UgdG8gZHJvcCBzdXBwb3J0IGZvciBpdCBzb21lZGF5CiAgICAgRGVwcmVj
YXRlZENTU09NVmFsdWU/IGdldFByb3BlcnR5Q1NTVmFsdWUoRE9NU3RyaW5nIHByb3BlcnR5TmFt
ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5rbm93blJ1bGUuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmtub3duUnVsZS5pZGwJKHJldmlzaW9uIDI2
NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmtub3duUnVsZS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTIwLDcgKzIwLDcgQEAKIAogLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoK
IFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
IF0gaW50ZXJmYWNlIENTU1Vua25vd25SdWxlIDogQ1NTUnVsZSB7CiB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvRWxlbWVudENTU0lubGluZVN0eWxlLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudENTU0lubGluZVN0eWxlLmlkbAkocmV2aXNpb24gMjY2
NjM5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIC8vIENTU09NIGV4dGVuc2lvbnMgdG8gSFRN
TEVsZW1lbnQgLyBTVkdFbGVtZW50OgogLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29t
LyN0aGUtZWxlbWVudGNzc2lubGluZXN0eWxlLWludGVyZmFjZQogWwotICAgIE5vSW50ZXJmYWNl
T2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgRWxlbWVu
dENTU0lubGluZVN0eWxlIHsKICAgICBbSW1wbGVtZW50ZWRBcz1jc3NvbVN0eWxlLCBQdXRGb3J3
YXJkcz1jc3NUZXh0XSByZWFkb25seSBhdHRyaWJ1dGUgQ1NTU3R5bGVEZWNsYXJhdGlvbiBzdHls
ZTsgLy8gRklYTUU6IFNob3VsZCBiZSBbU2FtZU9iamVjdF0uCiAgICAgW0ltcGxlbWVudGVkQXM9
ZW5zdXJlQXR0cmlidXRlU3R5bGVNYXAsIENhY2hlZEF0dHJpYnV0ZSwgRW5hYmxlZEF0UnVudGlt
ZT1DU1NUeXBlZE9NLCBDb25kaXRpb25hbD1DU1NfVFlQRURfT01dIHJlYWRvbmx5IGF0dHJpYnV0
ZSBTdHlsZVByb3BlcnR5TWFwIGF0dHJpYnV0ZVN0eWxlTWFwOyAvLyBGSVhNRTogU2hvdWxkIGJl
IFtTYW1lT2JqZWN0XS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCShyZXZpc2lvbiAy
NjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMjksNyArMjksNyBAQAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiAgICAg
SlNDdXN0b21IZWFkZXIsCiBdIGludGVyZmFjZSBNZWRpYUxpc3QgewotICAgIGF0dHJpYnV0ZSBb
VHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBtZWRpYVRleHQ7CisgICAgYXR0cmli
dXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1lZGlhVGV4dDsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAKICAgICBnZXR0ZXIgRE9N
U3RyaW5nPyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlTWVkaWEuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZU1lZGlhLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
TWVkaWEuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAgKi8KIAogWwotICAg
IE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEdl
bmVyYXRlSXNSZWFjaGFibGU9UmVhY2hhYmxlRnJvbURPTVdpbmRvdywKICAgICBJbXBsZW1lbnRh
dGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2UgU3R5bGVNZWRpYSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0NoYXJhY3RlckRhdGEuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vQ2hhcmFjdGVyRGF0YS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE4LDcgKzE4LDcg
QEAKICAqLwogCiBpbnRlcmZhY2UgQ2hhcmFjdGVyRGF0YSA6IE5vZGUgewotICAgIGF0dHJpYnV0
ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBkYXRhOworICAgIGF0dHJpYnV0
ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBkYXRhOwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IERPTVN0cmluZyBzdWJzdHJpbmdEYXRhKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBs
b25nIGNvdW50KTsKICAgICB1bmRlZmluZWQgYXBwZW5kRGF0YShET01TdHJpbmcgZGF0YSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDcg
QEAKIAogLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNjaGlsZG5vZGUKIFsKLSAgICBO
b0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJm
YWNlIENoaWxkTm9kZSB7CiAgICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlLCBNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5kZWZpbmVkIGJlZm9yZSgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsK
ICAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGUsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmlu
ZWQgYWZ0ZXIoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDcgKzI0LDcgQEAKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2Ug
RE9NSW1wbGVtZW50YXRpb24gewogICAgIFtOZXdPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBE
b2N1bWVudFR5cGUgY3JlYXRlRG9jdW1lbnRUeXBlKERPTVN0cmluZyBxdWFsaWZpZWROYW1lLCBE
T01TdHJpbmcgcHVibGljSWQsIERPTVN0cmluZyBzeXN0ZW1JZCk7Ci0gICAgW05ld09iamVjdCwg
TWF5VGhyb3dFeGNlcHRpb25dIFhNTERvY3VtZW50IGNyZWF0ZURvY3VtZW50KERPTVN0cmluZz8g
bmFtZXNwYWNlVVJJLCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBxdWFsaWZp
ZWROYW1lLCBvcHRpb25hbCBEb2N1bWVudFR5cGU/IGRvY3R5cGUgPSBudWxsKTsKKyAgICBbTmV3
T2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gWE1MRG9jdW1lbnQgY3JlYXRlRG9jdW1lbnQoRE9N
U3RyaW5nPyBuYW1lc3BhY2VVUkksIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5n
IHF1YWxpZmllZE5hbWUsIG9wdGlvbmFsIERvY3VtZW50VHlwZT8gZG9jdHlwZSA9IG51bGwpOwog
ICAgIFtOZXdPYmplY3RdIEhUTUxEb2N1bWVudCBjcmVhdGVIVE1MRG9jdW1lbnQob3B0aW9uYWwg
RE9NU3RyaW5nIHRpdGxlKTsKIAogICAgIGJvb2xlYW4gaGFzRmVhdHVyZSgpOyAvLyBVc2VsZXNz
OyBhbHdheXMgcmV0dXJucyB0cnVlLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmlu
Z01hcC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5p
ZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBHZW5lcmF0ZUlz
UmVhY2hhYmxlPUltcGxFbGVtZW50Um9vdCwKLSAgICBPdmVycmlkZUJ1aWx0aW5zLAorICAgIExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMsCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCiBdIGludGVy
ZmFjZSBET01TdHJpbmdNYXAgewogICAgIGdldHRlciBET01TdHJpbmcgKERPTVN0cmluZyBuYW1l
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uRXZl
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlv
bk9yTW90aW9uRXZlbnQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNyArMjUsNyBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9REVWSUNFX09SSUVOVEFUSU9OLAot
ICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50
ZXJmYWNlIERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25FdmVudCB7CiAgICAgW0NhbGxXaXRoPURv
Y3VtZW50LCBFbmFibGVkQnlTZXR0aW5nPURldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbkFQSV0g
c3RhdGljIFByb21pc2U8RGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZT4g
cmVxdWVzdFBlcm1pc3Npb24oKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHJl
dmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgdHlwZWRlZiAoSFRNTFNjcmlwdEVsZW1lbnQgb3Ig
U1ZHU2NyaXB0RQogICAgIFtOZXdPYmplY3RdIFRyZWVXYWxrZXIgY3JlYXRlVHJlZVdhbGtlcihO
b2RlIHJvb3QsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgd2hhdFRvU2hvdyA9IDB4RkZGRkZGRkYs
IG9wdGlvbmFsIE5vZGVGaWx0ZXI/IGZpbHRlciA9IG51bGwpOwogCiAgICAgLy8gRXh0ZW5zaW9u
cyBmcm9tIEhUTUwgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8j
dGhlLWRvY3VtZW50LW9iamVjdCkuCi0gICAgW1B1dEZvcndhcmRzPWhyZWYsIFVuZm9yZ2VhYmxl
XSByZWFkb25seSBhdHRyaWJ1dGUgTG9jYXRpb24/IGxvY2F0aW9uOworICAgIFtQdXRGb3J3YXJk
cz1ocmVmLCBMZWdhY3lVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIExvY2F0aW9uPyBs
b2NhdGlvbjsKICAgICBhdHRyaWJ1dGUgVVNWU3RyaW5nIGRvbWFpbjsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgVVNWU3RyaW5nIHJlZmVycmVyOwogICAgIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgY29v
a2llOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHR5cGVkZWYgKEhUTUxTY3JpcHRFbGVtZW50IG9yIFNW
R1NjcmlwdEUKICAgICBbRW5hYmxlZEJ5U2V0dGluZz1VbmRvTWFuYWdlckFQSV0gcmVhZG9ubHkg
YXR0cmlidXRlIFVuZG9NYW5hZ2VyIHVuZG9NYW5hZ2VyOwogCiAgICAgLy8gU3BlY2lhbCBldmVu
dCBoYW5kbGVyIElETCBhdHRyaWJ1dGVzIHRoYXQgb25seSBhcHBseSB0byBEb2N1bWVudCBvYmpl
Y3RzLgotICAgIFtMZW5pZW50VGhpc10gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnJlYWR5c3Rh
dGVjaGFuZ2U7CisgICAgW0xlZ2FjeUxlbmllbnRUaGlzXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVy
IG9ucmVhZHlzdGF0ZWNoYW5nZTsKIAogICAgIC8vIEV4dGVuc2lvbnMgZnJvbSB0aGUgQ1NTT00t
VmlldyBzcGVjaWZpY2F0aW9uIChodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20tdmlldy8j
ZXh0ZW5zaW9ucy10by10aGUtZG9jdW1lbnQtaW50ZXJmYWNlKS4KICAgICBbSW1wbGVtZW50ZWRB
cz1zY3JvbGxpbmdFbGVtZW50Rm9yQVBJXSByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudD8gc2Ny
b2xsaW5nRWxlbWVudDsKQEAgLTE3OSwxMSArMTc5LDExIEBAIHR5cGVkZWYgKEhUTUxTY3JpcHRF
bGVtZW50IG9yIFNWR1NjcmlwdEUKIAogICAgIC8vIE9ic29sZXRlIGZlYXR1cmVzIGZyb20gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb2Jzb2xldGUuaHRtbAogCi0gICAg
W0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJp
bmcgZmdDb2xvcjsKLSAgICBbQ0VSZWFjdGlvbnMsIEltcGxlbWVudGVkQXM9bGlua0NvbG9yRm9y
QmluZGluZ3NdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBs
aW5rQ29sb3I7Ci0gICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5
U3RyaW5nXSBET01TdHJpbmcgdmxpbmtDb2xvcjsKLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0
ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBhbGlua0NvbG9yOwotICAgIFtD
RVJlYWN0aW9uc10gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5n
IGJnQ29sb3I7CisgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nXSBET01TdHJpbmcgZmdDb2xvcjsKKyAgICBbQ0VSZWFjdGlvbnMsIEltcGxlbWVudGVk
QXM9bGlua0NvbG9yRm9yQmluZGluZ3NdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmddIERPTVN0cmluZyBsaW5rQ29sb3I7CisgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgdmxpbmtDb2xvcjsKKyAgICBbQ0VSZWFj
dGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBhbGlu
a0NvbG9yOworICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENv
bGxlY3Rpb24gYW5jaG9yczsgLyogW1NhbWVPYmplY3RdICovCiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIEhUTUxDb2xsZWN0aW9uIGFwcGxldHM7IC8qIFtTYW1lT2JqZWN0XSAqLwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEFuZEVsZW1lbnRFdmVudEhhbmRs
ZXJzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3
IEBACiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2RvY3VtZW50YW5kZWxlbWVu
dGV2ZW50aGFuZGxlcnMKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIERvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxl
cnMgewogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25jb3B5OwogICAgIGF0dHJpYnV0ZSBF
dmVudEhhbmRsZXIgb25jdXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPclNo
YWRvd1Jvb3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9y
U2hhZG93Um9vdC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE9yU2hhZG93Um9vdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAK
IAogLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNkb2N1bWVudG9yc2hhZG93cm9vdAog
WwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAog
XSBpbnRlcmZhY2UgRG9jdW1lbnRPclNoYWRvd1Jvb3QgewogICAgIC8vIEV4dGVuc2lvbnMgZnJv
bSBTaGFkb3cgRE9NIEFQSSAoaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3Bl
Yy9zaGFkb3cvI2V4dGVuc2lvbnMtdG8tdGhlLWRvY3VtZW50b3JzaGFkb3dyb290LW1peGluKS4K
ICAgICAvLyBET01TZWxlY3Rpb24/IGdldFNlbGVjdGlvbigpOyAvLyBGSVhNRTogV2UgY3VycmVu
dGx5IGhhdmUgdGhpcyBvbiBEb2N1bWVudCBvbmx5LgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmlk
bAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC05MCw4ICs5MCw4IEBACiAKICAgICAvLyBFeHRlbnNpb25zIHRvIEVs
ZW1lbnQgZnJvbSBET00gUGFyc2luZyBhbmQgU2VyaWFsaXphdGlvbiBzcGVjaWZpY2F0aW9uLgog
ICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9ET00tUGFyc2luZy8jZXh0ZW5zaW9ucy10by10
aGUtZWxlbWVudC1pbnRlcmZhY2UKLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJlYXRO
dWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBpbm5lckhUTUw7Ci0gICAgW0NFUmVhY3Rpb25z
XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgb3V0ZXJIVE1M
OworICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10g
RE9NU3RyaW5nIGlubmVySFRNTDsKKyAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBvdXRlckhUTUw7CiAgICAgW0NFUmVhY3Rpb25z
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGluc2VydEFkamFjZW50SFRNTChET01TdHJp
bmcgcG9zaXRpb24sIERPTVN0cmluZyB0ZXh0KTsKIAogICAgIC8vIEV4dGVuc2lvbnMgZnJvbSBG
dWxsIFNjcmVlbiBBUEkgKGh0dHBzOi8vZnVsbHNjcmVlbi5zcGVjLndoYXR3Zy5vcmcvI2FwaSku
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgdHlwZWRl
ZiBkb3VibGUgRE9NSGlnaFJlc1RpbWVTdGFtcDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9v
bGVhbiBkZWZhdWx0UHJldmVudGVkOwogICAgIFtFbmFibGVkQXRSdW50aW1lPVNoYWRvd0RPTV0g
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gY29tcG9zZWQ7CiAKLSAgICBbVW5mb3JnZWFibGVd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzVHJ1c3RlZDsKKyAgICBbTGVnYWN5VW5mb3Jn
ZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzVHJ1c3RlZDsKICAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1wbGVtZW50ZWRBcz10aW1lU3RhbXBGb3JCaW5k
aW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIERPTUhpZ2hSZXNUaW1lU3RhbXAgdGltZVN0YW1wOwog
CiAgICAgdW5kZWZpbmVkIGluaXRFdmVudChET01TdHJpbmcgdHlwZSwgb3B0aW9uYWwgYm9vbGVh
biBidWJibGVzID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZhbHNlKTsg
Ly8gSGlzdG9yaWNhbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5pZGwJKHJl
dmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFj
ZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0CiBdIGludGVyZmFjZSBFdmVudExp
c3RlbmVyIHsKICAgICB1bmRlZmluZWQgaGFuZGxlRXZlbnQoRXZlbnQgZXZlbnQpOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9HbG9iYWxFdmVudEhhbmRsZXJzLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vR2xvYmFsRXZlbnRIYW5kbGVycy5pZGwJKHJldmlzaW9u
IDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9HbG9iYWxFdmVudEhhbmRsZXJzLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiAvLyBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjZ2xvYmFsZXZlbnRoYW5kbGVycwog
WwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAog
XSBpbnRlcmZhY2UgR2xvYmFsRXZlbnRIYW5kbGVycyB7CiAgICAgLy8gQ29tbWVudGVkIG91dCBl
dmVudCBoYW5kbGVycyBhcmUgZGVmaW5lZCBieSB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiBidXQK
ICAgICAvLyBhcmUgbm90IHlldCBpbXBsZW1lbnRlZC4KQEAgLTY1LDggKzY1LDggQEAKICAgICBh
dHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubG9hZGVkbWV0YWRhdGE7CiAgICAgYXR0cmlidXRlIEV2
ZW50SGFuZGxlciBvbmxvYWRzdGFydDsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubW91
c2Vkb3duOwotICAgIFtMZW5pZW50VGhpc10gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbm1vdXNl
ZW50ZXI7Ci0gICAgW0xlbmllbnRUaGlzXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubW91c2Vs
ZWF2ZTsKKyAgICBbTGVnYWN5TGVuaWVudFRoaXNdIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25t
b3VzZWVudGVyOworICAgIFtMZWdhY3lMZW5pZW50VGhpc10gYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbm1vdXNlbGVhdmU7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbm1vdXNlbW92ZTsK
ICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubW91c2VvdXQ7CiAgICAgYXR0cmlidXRlIEV2
ZW50SGFuZGxlciBvbm1vdXNlb3ZlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9OYXZpZ2F0
b3JNYXhUb3VjaFBvaW50cy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05h
dmlnYXRvck1heFRvdWNoUG9pbnRzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL05hdmlnYXRvck1heFRvdWNoUG9pbnRzLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNyArMjcsNyBAQAogKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgTWF4VG91Y2hQb2ludHMgewogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBsb25nIG1heFRvdWNoUG9pbnRzOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Ob25Eb2N1bWVudFR5cGVDaGlsZE5vZGUuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob25Eb2N1bWVudFR5cGVDaGlsZE5vZGUuaWRsCShyZXZpc2lvbiAy
NjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiAvLyBodHRwczovL2RvbS5zcGVj
LndoYXR3Zy5vcmcvI2ludGVyZmFjZS1ub25kb2N1bWVudHR5cGVjaGlsZG5vZGUKIFsKLSAgICBO
b0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJm
YWNlIE5vbkRvY3VtZW50VHlwZUNoaWxkTm9kZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVs
ZW1lbnQ/IHByZXZpb3VzRWxlbWVudFNpYmxpbmc7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVs
ZW1lbnQ/IG5leHRFbGVtZW50U2libGluZzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob25F
bGVtZW50UGFyZW50Tm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05v
bkVsZW1lbnRQYXJlbnROb2RlLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL05vbkVsZW1lbnRQYXJlbnROb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQAogCiAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2ludGVyZmFjZS1ub25l
bGVtZW50cGFyZW50bm9kZQogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgTm9uRWxlbWVudFBhcmVudE5vZGUgewogICAg
IFtET01KSVQ9UmVhZERPTV0gRWxlbWVudD8gZ2V0RWxlbWVudEJ5SWQoW1JlcXVpcmVzRXhpc3Rp
bmdBdG9tU3RyaW5nXSBET01TdHJpbmcgZWxlbWVudElkKTsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vUGFyZW50Tm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1BhcmVudE5vZGUuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
UGFyZW50Tm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogLy8gaHR0
cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNpbnRlcmZhY2UtcGFyZW50bm9kZQogWwotICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZh
Y2UgUGFyZW50Tm9kZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxDb2xsZWN0aW9uIGNo
aWxkcmVuOyAvLyBGSVhNRTogU2hvdWxkIGJlIFtTYW1lT2JqZWN0XS4KICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRWxlbWVudD8gZmlyc3RFbGVtZW50Q2hpbGQ7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRWxlbWVudCBob3N0OwogCiAgICAgLy8gRklYTUU6IFNlZW1zIHRvIGhhdmUg
YmVlbiBkcm9wcGVkIGZyb20gdGhlIFNoYWRvdyBET00gQVBJLgotICAgIFtDRVJlYWN0aW9uc10g
YXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGlubmVySFRNTDsK
KyAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERP
TVN0cmluZyBpbm5lckhUTUw7CiB9OwogCiBTaGFkb3dSb290IGluY2x1ZGVzIERvY3VtZW50T3JT
aGFkb3dSb290OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RhYmxlLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdGFibGUuaWRsCShyZXZpc2lvbiAyNjY2Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdGFibGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw3ICsyNSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9U2hhZG93RE9NLAogXSBp
bnRlcmZhY2UgU2xvdGFibGUgewogICAgIFtJbXBsZW1lbnRlZEFzPWFzc2lnbmVkU2xvdEZvckJp
bmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgSFRNTFNsb3RFbGVtZW50PyBhc3NpZ25lZFNsb3Q7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuaWRsCShyZXZpc2lvbiAy
NjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTE5LDEyICsxOSwxMiBAQAogICovCiAKIGludGVyZmFjZSBIVE1MQm9keUVs
ZW1lbnQgOiBIVE1MRWxlbWVudCB7Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVj
dF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGFMaW5rOwor
ICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBhTGluazsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVl
ZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGJhY2tncm91bmQ7Ci0gICAgW0NFUmVh
Y3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVm
bGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGxpbms7
Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51
bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHRleHQ7Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5l
ZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3Ry
aW5nIHZMaW5rOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0
ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBiZ0NvbG9yOworICAgIFtDRVJl
YWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmddIERPTVN0cmluZyBsaW5rOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxl
Y3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyB0ZXh0Owor
ICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyB2TGluazsKIAogICAgIFtOb3RFbnVtZXJhYmxlLCBX
aW5kb3dFdmVudEhhbmRsZXJdIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25ibHVyOwogICAgIFtO
b3RFbnVtZXJhYmxlLCBXaW5kb3dFdmVudEhhbmRsZXJdIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIg
b25lcnJvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwJKHJldmlzaW9u
IDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogWwogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAg
TmV3SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNocG9pbnRzLAotICAgIE92ZXJyaWRlQnVpbHRpbnMs
CisgICAgTGVnYWN5T3ZlcnJpZGVCdWlsdElucywKIF0gaW50ZXJmYWNlIEhUTUxEb2N1bWVudCA6
IERvY3VtZW50IHsgICAgCiAgICAgZ2V0dGVyIChXaW5kb3dQcm94eSBvciBFbGVtZW50IG9yIEhU
TUxDb2xsZWN0aW9uKSAoRE9NU3RyaW5nIG5hbWUpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQAogICAgIFtD
RVJlYWN0aW9uc10gYXR0cmlidXRlIGJvb2xlYW4gc3BlbGxjaGVjazsKICAgICAvLyB1bmRlZmlu
ZWQgZm9yY2VTcGVsbENoZWNrKCk7IC8vIEZJWE1FOiBOb3Qgc3VwcG9ydGVkLgogCi0gICAgW0NF
UmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcg
aW5uZXJUZXh0OworICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ10gRE9NU3RyaW5nIGlubmVyVGV4dDsKIAogICAgIC8vIEZJWE1FOiBTaG91bGQgYmUg
aW4gYSBzZXBhcmF0ZSBFbGVtZW50Q29udGVudEVkaXRhYmxlIGludGVyZmFjZS4KICAgICAvLyBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNlbGVtZW50Y29udGVudGVkaXRhYmxlCkBAIC01
NiwxMSArNTYsMTEgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIG9mZnNldEhlaWdo
dDsgLy8gRklYTUU6IFNob3VsZCBiZSBvZiB0eXBlIGxvbmcuCiAKICAgICAvLyBOb24gU3RhbmRh
cmQgYnV0IG1heSBnZXQgYWRkZWQgdG8gdGhlIHNwZWNpZmljYXRpb24gKGh0dHBzOi8vZ2l0aHVi
LmNvbS93aGF0d2cvaHRtbC9pc3N1ZXMvNjY4KS4KLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0
ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBvdXRlclRleHQ7CisgICAgW0NF
UmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcg
b3V0ZXJUZXh0OwogCiAgICAgLy8gaU9TIGF1dG9jb3JyZWN0IC8gYXV0b2NhcGl0YWxpemF0aW9u
IGV4dGVuc2lvbnMuCiAgICAgW0NvbmRpdGlvbmFsPUFVVE9DT1JSRUNULCBDRVJlYWN0aW9uc10g
YXR0cmlidXRlIGJvb2xlYW4gYXV0b2NvcnJlY3Q7Ci0gICAgW0NvbmRpdGlvbmFsPUFVVE9DQVBJ
VEFMSVpFLCBDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10g
RE9NU3RyaW5nIGF1dG9jYXBpdGFsaXplOworICAgIFtDb25kaXRpb25hbD1BVVRPQ0FQSVRBTEla
RSwgQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0
cmluZyBhdXRvY2FwaXRhbGl6ZTsKIAogICAgIC8vIEZJWE1FOiBXZSBhcmUgdGhlIG9ubHkgYnJv
d3NlciB0byBzdXBwb3J0IHRoaXMgbm93IHRoYXQgQmxpbmsgZHJvcHBlZCBpdCAoaHR0cDovL2Ny
YnVnLmNvbS82ODg5NDMpLgogICAgIFtDRVJlYWN0aW9ucywgUmVmbGVjdF0gYXR0cmlidXRlIERP
TVN0cmluZyB3ZWJraXRkcm9wem9uZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
bnRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250
RWxlbWVudC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvbnRFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTgsNyArMTgsNyBAQAogICovCiAK
IGludGVyZmFjZSBIVE1MRm9udEVsZW1lbnQgOiBIVE1MRWxlbWVudCB7Ci0gICAgW0NFUmVhY3Rp
b25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmlu
Z10gRE9NU3RyaW5nIGNvbG9yOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3Rd
IGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBjb2xvcjsKICAg
ICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZh
Y2U7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0
cmluZyBzaXplOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5p
ZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogCiBbCiAgICAgTGVnYWN5
VW5lbnVtZXJhYmxlTmFtZWRQcm9wZXJ0aWVzLAotICAgIE92ZXJyaWRlQnVpbHRpbnMsCisgICAg
TGVnYWN5T3ZlcnJpZGVCdWlsdElucywKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiBd
IGludGVyZmFjZSBIVE1MRm9ybUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW0NFUmVhY3Rp
b25zPU5vdE5lZWRlZCwgUmVmbGVjdD1hY2NlcHRfY2hhcnNldF0gYXR0cmlidXRlIERPTVN0cmlu
ZyBhY2NlcHRDaGFyc2V0OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1l
bnQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw4IEBAIGludGVyZmFjZSBI
VE1MRnJhbWVFbGVtZW50IDogSFRNTEVsZW1lbnQKICAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBEb2N1bWVudCBjb250ZW50RG9jdW1lbnQ7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IGNvbnRlbnRXaW5kb3c7CiAKLSAgICBbQ0VSZWFjdGlv
bnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5n
XSBET01TdHJpbmcgbWFyZ2luSGVpZ2h0OwotICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJl
ZmxlY3RdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBtYXJn
aW5XaWR0aDsKKyAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUg
W0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luSGVpZ2h0OworICAgIFtD
RVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmddIERPTVN0cmluZyBtYXJnaW5XaWR0aDsKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9y
Tm9kZSwgTWF5VGhyb3dFeGNlcHRpb25dIERvY3VtZW50IGdldFNWR0RvY3VtZW50KCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxz
LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSHlwZXJs
aW5rRWxlbWVudFV0aWxzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICov
CiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
CiBdIGludGVyZmFjZSBIVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzIHsKICAgICBbQ0VSZWFjdGlv
bnM9Tm90TmVlZGVkLCBSZWZsZWN0LCBVUkxdIHN0cmluZ2lmaWVyIGF0dHJpYnV0ZSBVU1ZTdHJp
bmcgaHJlZjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nIG9yaWdpbjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjY2
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsOCArMjMsOCBAQCBpbnRlcmZhY2UgSFRNTElGcmFtZUVsZW1lbnQgOiBI
VE1MRWxlbWVuCiAgICAgW1JlZmxlY3QsIENFUmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRl
IERPTVN0cmluZyBmcmFtZUJvcmRlcjsKICAgICBbUmVmbGVjdCwgQ0VSZWFjdGlvbnM9Tm90TmVl
ZGVkXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhlaWdodDsKICAgICBbUmVmbGVjdCwgVVJMLCBDRVJl
YWN0aW9ucz1Ob3ROZWVkZWRdIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgbG9uZ0Rlc2M7Ci0gICAgW1Jl
ZmxlY3QsIENFUmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0
eVN0cmluZ10gRE9NU3RyaW5nIG1hcmdpbkhlaWdodDsKLSAgICBbUmVmbGVjdCwgQ0VSZWFjdGlv
bnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJp
bmcgbWFyZ2luV2lkdGg7CisgICAgW1JlZmxlY3QsIENFUmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0
cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1hcmdpbkhlaWdodDsK
KyAgICBbUmVmbGVjdCwgQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgW0xlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luV2lkdGg7CiAgICAgW1JlZmxlY3QsIENF
UmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwogCiAgICAgW1B1
dEZvcndhcmRzPXZhbHVlXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NVG9rZW5MaXN0IHNhbmRib3g7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwJKHJldmlzaW9u
IDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVk
LCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7CiAgICAgW0NFUmVhY3Rpb25zPU5v
dE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBhbGlnbjsKICAgICBbQ0VSZWFj
dGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsdDsKLSAgICBb
Q0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVt
cHR5U3RyaW5nXSBET01TdHJpbmcgYm9yZGVyOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQs
IFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBi
b3JkZXI7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRlIERPTVN0cmluZz8g
Y3Jvc3NPcmlnaW47CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgaGVpZ2h0OwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGhzcGFjZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBA
QAogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWRdIGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsg
Ly8gcmVhZG9ubHkgZHJvcHBlZCBhcyBwYXJ0IG9mIERPTSBsZXZlbCAyCiAgICAgW0NFUmVhY3Rp
b25zPU5vdE5lZWRlZF0gYXR0cmlidXRlIERPTVN0cmluZyBkZWZhdWx0VmFsdWU7CiAgICAgLy8g
U2VlIHRoZSBkaXNjdXNzaW9uIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDAwODUKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgW1RyZWF0
TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWU7CisgICAgW0NFUmVhY3Rpb25zPU5v
dE5lZWRlZF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZh
bHVlOwogICAgIGF0dHJpYnV0ZSBEYXRlPyB2YWx1ZUFzRGF0ZTsKICAgICBhdHRyaWJ1dGUgdW5y
ZXN0cmljdGVkIGRvdWJsZSB2YWx1ZUFzTnVtYmVyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcg
KzI1LDcgQEAKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGNvZGU7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0
cmlidXRlIERPTVN0cmluZyBhbGlnbjsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZs
ZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFyY2hpdmU7Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5l
ZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3Ry
aW5nIGJvcmRlcjsKKyAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1
dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgYm9yZGVyOwogICAgIFtDRVJl
YWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3QsIFVSTF0gYXR0cmlidXRlIFVTVlN0cmluZyBjb2Rl
QmFzZTsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGNvZGVUeXBlOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3QsIFVS
TF0gYXR0cmlidXRlIFVTVlN0cmluZyBkYXRhOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3JGb3JlaWduRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3JGb3JlaWduRWxlbWVudC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9yRm9yZWlnbkVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw3ICsyNyw3IEBACiAvLyBGSVhNRTogdXBkYXRlIGFib3ZlIGxpbmsgd2hlbiB0aGlzIGNoYW5n
ZSBoYXMgYmVlbiBpbXBsZW1lbnRlZDoKIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaHRt
bC9pc3N1ZXMvNDcwMgogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgSFRNTE9yRm9yZWlnbkVsZW1lbnQgewogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdNYXAgZGF0YXNldDsgLy8gRklYTUU6IFNob3VsZCBi
ZSBbU2FtZU9iamVjdF0uCiAgICAgW0NFUmVhY3Rpb25zLCBJbXBsZW1lbnRlZEFzPXRhYkluZGV4
Rm9yQmluZGluZ3NdIGF0dHJpYnV0ZSBsb25nIHRhYkluZGV4OwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw4ICsyOSw4IEBAIGludGVyZmFjZSBIVE1MT3V0cHV0RWxlbWVudCA6IEhUTUxFbGVtZW4KICAg
ICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5h
bWU7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHR5cGU7Ci0gICAgW0NFUmVh
Y3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgZGVm
YXVsdFZhbHVlOwotICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0
eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVlOworICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGRlZmF1bHRWYWx1ZTsKKyAgICBbQ0VS
ZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyB2
YWx1ZTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHdpbGxWYWxpZGF0ZTsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgVmFsaWRpdHlTdGF0ZSB2YWxpZGl0eTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjY2
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQCBpbnRlcmZhY2UgSFRNTFRhYmxlQ2VsbEVsZW1l
bnQgOiBIVE1MRWxlCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgY2VsbEluZGV4OwogICAg
IFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWxp
Z247CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0
cmluZyBheGlzOwotICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0
ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBiZ0NvbG9yOworICAgIFtDRVJl
YWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmddIERPTVN0cmluZyBiZ0NvbG9yOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJl
ZmxlY3Q9Y2hhcl0gYXR0cmlidXRlIERPTVN0cmluZyBjaDsKICAgICBbQ0VSZWFjdGlvbnM9Tm90
TmVlZGVkLCBSZWZsZWN0PWNoYXJvZmZdIGF0dHJpYnV0ZSBET01TdHJpbmcgY2hPZmY7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmlkbAkocmV2aXNpb24gMjY2
NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsMTAgKzI2LDEwIEBAIGludGVyZmFjZSBIVE1MVGFibGVFbGVtZW50IDog
SFRNTEVsZW1lbnQKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24gcm93czsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24gdEJvZGllczsKICAgICBbQ0VS
ZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsaWduOwot
ICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbVHJlYXROdWxs
QXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBiZ0NvbG9yOworICAgIFtDRVJlYWN0aW9ucz1Ob3RO
ZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0
cmluZyBiZ0NvbG9yOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJp
YnV0ZSBET01TdHJpbmcgYm9yZGVyOwotICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxl
Y3RdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBjZWxsUGFk
ZGluZzsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1Ry
ZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgY2VsbFNwYWNpbmc7CisgICAgW0NFUmVh
Y3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIGNlbGxQYWRkaW5nOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQs
IFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBj
ZWxsU3BhY2luZzsKIAogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJp
YnV0ZSBET01TdHJpbmcgZnJhbWU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlUm93RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVSb3dFbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMs
NyBAQCBpbnRlcmZhY2UgSFRNTFRhYmxlUm93RWxlbWVudCA6IEhUTUxFbGVtCiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGxvbmcgc2VjdGlvblJvd0luZGV4OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBIVE1MQ29sbGVjdGlvbiBjZWxsczsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZs
ZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsaWduOwotICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVk
ZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmlu
ZyBiZ0NvbG9yOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0
ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBiZ0NvbG9yOwogICAgIFtDRVJl
YWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3Q9Y2hhcl0gYXR0cmlidXRlIERPTVN0cmluZyBjaDsK
ICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0PWNoYXJvZmZdIGF0dHJpYnV0ZSBE
T01TdHJpbmcgY2hPZmY7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0
cmlidXRlIERPTVN0cmluZyB2QWxpZ247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDcgQEAgaW50ZXJmYWNlIEhUTUxUZXh0QXJlYUVsZW1lbnQgOiBIVE1MRWxlbQogCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0eXBlOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVk
ZWRdIGF0dHJpYnV0ZSBET01TdHJpbmcgZGVmYXVsdFZhbHVlOwotICAgIGF0dHJpYnV0ZSBbVHJl
YXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZTsKKyAgICBhdHRyaWJ1dGUgW0xl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWU7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIGxvbmcgdGV4dExlbmd0aDsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIHdpbGxWYWxpZGF0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0FOR0xFSW5zdGFuY2VkQXJyYXlzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJH
TCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCiBd
IGludGVyZmFjZSBBTkdMRUluc3RhbmNlZEFycmF5cyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNDb21wb3NpdGluZy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzQ29tcG9zaXRpbmcuaWRsCShyZXZpc2lvbiAyNjY2Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNDb21wb3NpdGluZy5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VP
YmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93
LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc0NvbXBvc2l0aW5nIHsKICAgICAvLyBGSVhNRTog
QWxsIHRoZSB1bnJlc3RyaWN0ZWQgZmxvYXQgYXR0cmlidXRlcyBiZWxvdyBzaG91bGQgYmUgdW5y
ZXN0cmljdGVkIGRvdWJsZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNEcmF3SW1hZ2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc0RyYXdJbWFnZS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc0RyYXdJbWFnZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcg
KzM3LDcgQEAgdHlwZWRlZiAoSFRNTEltYWdlRWxlbWVudCBvciBIVE1MQ2FudmFzRQogKSBDYW52
YXNJbWFnZVNvdXJjZTsKIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpCiBdIGludGVyZmFj
ZSBDYW52YXNEcmF3SW1hZ2UgewogICAgIC8vIEZJWE1FOiBBbGwgdGhlIHVucmVzdHJpY3RlZCBm
bG9hdCBhcmd1bWVudHMgYmVsb3cgc2hvdWxkIGJlIHVucmVzdHJpY3RlZCBkb3VibGVzLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRHJhd1BhdGguaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0RyYXdQYXRoLmlkbAkocmV2
aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRHJhd1Bh
dGguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9z
ZWQ9KFdpbmRvdyxXb3JrZXIpCiBdIGludGVyZmFjZSBDYW52YXNEcmF3UGF0aCB7CiAgICAgLy8g
cGF0aCBBUEkgKHNlZSBhbHNvIENhbnZhc1BhdGgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNGaWxsU3Ryb2tlU3R5bGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNGaWxsU3Ryb2tlU3R5bGVzLmlkbAkocmV2aXNpb24g
MjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRmlsbFN0cm9rZVN0
eWxlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgdHlwZWRlZiAoSFRNTElt
YWdlRWxlbWVudCBvciBIVE1MQ2FudmFzRQogKSBDYW52YXNJbWFnZVNvdXJjZTsKIAogWwotICAg
IE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEV4
cG9zZWQ9KFdpbmRvdyxXb3JrZXIpCiBdIGludGVyZmFjZSBDYW52YXNGaWxsU3Ryb2tlU3R5bGVz
IHsKICAgICAvLyBjb2xvcnMgYW5kIHN0eWxlcyAoc2VlIGFsc28gdGhlIENhbnZhc1BhdGhEcmF3
aW5nU3R5bGVzIGFuZCBDYW52YXNUZXh0RHJhd2luZ1N0eWxlcyBpbnRlcmZhY2VzKQpAQCAtNDcs
NSArNDcsNSBAQCB0eXBlZGVmIChIVE1MSW1hZ2VFbGVtZW50IG9yIEhUTUxDYW52YXNFCiAgICAg
Ly8gRklYTUU6IEFsbCB0aGUgZmxvYXQgcGFyYW1ldGVycyBiZWxvdyBzaG91bGQgYmUgZG91Ymxl
cy4KICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENhbnZhc0dyYWRpZW50IGNyZWF0ZUxpbmVhckdy
YWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkxKTsKICAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIENhbnZhc0dyYWRpZW50IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0
IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2FudmFzUGF0dGVybj8gY3JlYXRlUGF0dGVybihDYW52
YXNJbWFnZVNvdXJjZSBpbWFnZSwgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcg
cmVwZXRpdGlvbik7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBDYW52YXNQYXR0ZXJuPyBjcmVh
dGVQYXR0ZXJuKENhbnZhc0ltYWdlU291cmNlIGltYWdlLCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmddIERPTVN0cmluZyByZXBldGl0aW9uKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNGaWx0ZXJzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNGaWx0ZXJzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRmlsdGVycy5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50
ZXJmYWNlIENhbnZhc0ZpbHRlcnMgewogICAgIC8vIGZpbHRlcnMKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc0ltYWdlRGF0YS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAkocmV2aXNpb24gMjY2NjM5
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5kb3cs
V29ya2VyKQogXSBpbnRlcmZhY2UgQ2FudmFzSW1hZ2VEYXRhIHsKICAgICAvLyBGSVhNRTogQWxs
IHRoZSBmbG9hdCBhcmd1bWVudHMgYmVsb3cgc2hvdWxkIGJlIGxvbmdzLgpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VTbW9vdGhpbmcuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0ltYWdlU21vb3RoaW5nLmlkbAko
cmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1h
Z2VTbW9vdGhpbmcuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAog
WwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAog
ICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpCiBdIGludGVyZmFjZSBDYW52YXNJbWFnZVNtb290
aGluZyB7CiAgICAgLy8gaW1hZ2Ugc21vb3RoaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNQYXRoLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNQYXRoLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0aC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIENh
bnZhc1BhdGggewogICAgIC8vIHNoYXJlZCBwYXRoIEFQSSBtZXRob2RzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoRHJhd2luZ1N0eWxlcy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0aERyYXdpbmdTdHlsZXMu
aWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNQYXRoRHJhd2luZ1N0eWxlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAK
ICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc1Bh
dGhEcmF3aW5nU3R5bGVzIHsKICAgICAvLyBGSVhNRTogQWxsIHRoZSB1bnJlc3RyaWN0ZWQgZmxv
YXQgYXJndW1lbnRzIC8gYXR0cmlidXRlcyBiZWxvdyBzaG91bGQgYmUgdW5yZXN0cmljdGVkIGRv
dWJsZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZWN0LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZWN0LmlkbAko
cmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVj
dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9J
bnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3Nl
ZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc1JlY3QgewogICAgIC8vIEZJWE1F
OiBBbGwgdGhlIHVucmVzdHJpY3RlZCBmbG9hdCBwYXJhbWV0ZXJzIGJlbG93IHNob3VsZCBiZSB1
bnJlc3RyaWN0ZWQgZG91Ymxlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1NoYWRvd1N0eWxlcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzU2hhZG93U3R5bGVzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU2hhZG93U3R5bGVzLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAg
ICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKQog
XSBpbnRlcmZhY2UgQ2FudmFzU2hhZG93U3R5bGVzIHsKICAgICAvLyBGSVhNRTogQWxsIHRoZSB1
bnJlc3RyaWN0ZWQgZmxvYXQgYXR0cmlidXRlcyBiZWxvdyBzaG91bGQgYmUgdW5yZXN0cmljdGVk
IGRvdWJsZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdGF0ZS5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3RhdGUu
aWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNTdGF0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0g
ICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAg
RXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc1N0YXRlIHsKICAgICAv
LyBzdGF0ZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVGV4dC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVGV4dC5pZGwJ
KHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Rl
eHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9z
ZWQ9V2luZG93CiBdIGludGVyZmFjZSBDYW52YXNUZXh0IHsKICAgICAvLyBGSVhNRTogQWxsIHRo
ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgcGFyYW1ldGVycyBiZWxvdyBzaG91bGQgYmUgdW5yZXN0cmlj
dGVkIGRvdWJsZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNUZXh0
RHJhd2luZ1N0eWxlcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzVGV4dERyYXdpbmdTdHlsZXMuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNUZXh0RHJhd2luZ1N0eWxlcy5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0g
aW50ZXJmYWNlIENhbnZhc1RleHREcmF3aW5nU3R5bGVzIHsKICAgICAvLyB0ZXh0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNUcmFuc2Zvcm0uaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1RyYW5zZm9ybS5pZGwJKHJldmlz
aW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1RyYW5zZm9y
bS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9J
bnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3Nl
ZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc1RyYW5zZm9ybSB7CiAgICAgLy8g
RklYTUU6IEFsbCB0aGUgdW5yZXN0cmljdGVkIGZsb2F0IHBhcmFtZXRlcnMgYmVsb3cgc2hvdWxk
IGJlIHVucmVzdHJpY3RlZCBkb3VibGVzLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzVXNlckludGVyZmFjZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzVXNlckludGVyZmFjZS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1VzZXJJbnRlcmZhY2UuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2Jq
ZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9zZWQ9V2luZG93CiBd
IGludGVyZmFjZSBDYW52YXNVc2VySW50ZXJmYWNlIHsKICAgICB1bmRlZmluZWQgZHJhd0ZvY3Vz
SWZOZWVkZWQoRWxlbWVudCBlbGVtZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0VYVEJsZW5kTWluTWF4LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9FWFRCbGVuZE1pbk1heC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVEJsZW5kTWluTWF4LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNyArMjYsNyBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIEdlbmVyYXRlSXNS
ZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0ludGVyZmFjZU9iamVj
dCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIEVYVEJsZW5kTWlu
TWF4IHsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIE1JTl9FWFQgPSAweDgwMDc7CiAgICAgY29u
c3QgdW5zaWduZWQgbG9uZyBNQVhfRVhUID0gMHg4MDA4OwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5pZGwJKHJldmlzaW9uIDI2
NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxvYXQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAqLwogCiBbCi0gICAgTm9JbnRl
cmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0aW9u
YWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250
ZXh0CiBdIGludGVyZmFjZSBFWFRDb2xvckJ1ZmZlckZsb2F0IHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5pZGwJ
KHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9y
QnVmZmVySGFsZkZsb2F0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogKi8K
IAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
LAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdl
YkdMUmVuZGVyaW5nQ29udGV4dAogXSBpbnRlcmZhY2UgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguaWRsCShy
ZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVw
dGguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAqLwogCiBbCi0gICAgTm9J
bnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0
aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdD
b250ZXh0CiBdIGludGVyZmFjZSBFWFRGcmFnRGVwdGggewpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5pZGwJKHJldmlzaW9uIDI2
NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0Qu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50
ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIENvbmRpdGlv
bmFsPVdFQkdMLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29u
dGV4dAogXSBpbnRlcmZhY2UgRVhUU2hhZGVyVGV4dHVyZUxPRCB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYy5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKIFsKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hh
YmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisg
ICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBFWFRUZXh0dXJlRmlsdGVy
QW5pc290cm9waWMgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgVEVYVFVSRV9NQVhfQU5JU09U
Uk9QWV9FWFQgPSAweDg0RkU7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBNQVhfVEVYVFVSRV9N
QVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkY7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9FWFRzUkdCLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9FWFRzUkdCLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvRVhUc1JHQi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIFsKICAg
ICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJl
bmRlcmluZ0NvbnRleHQsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBFWFRzUkdCIHsKICAgICBjb25zdCB1bnNpZ25lZCBs
b25nIFNSR0JfRVhUID0gMHg4QzQwOwogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgU1JHQl9BTFBI
QV9FWFQgPSAweDhDNDI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNFbGVt
ZW50SW5kZXhVaW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9PRVNFbGVtZW50SW5kZXhVaW50LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAg
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2Vu
ZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAogXSBpbnRlcmZhY2Ug
T0VTRWxlbWVudEluZGV4VWludCB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbAkocmV2aXNpb24gMjY2NjM5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJHTCwK
ICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdl
YkdMUmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lO
b0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMgewog
ICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9P
RVMgPSAweDhCOEI7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4
dHVyZUZsb2F0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNUZXh0dXJlRmxvYXQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsy
NCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIEdlbmVyYXRlSXNSZWFj
aGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKIF0gaW50ZXJmYWNlIE9FU1RleHR1cmVG
bG9hdCB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXRM
aW5lYXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1Rl
eHR1cmVGbG9hdExpbmVhci5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVhci5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJh
dGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAogXSBpbnRlcmZhY2UgT0VT
VGV4dHVyZUZsb2F0TGluZWFyIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVIYWxmRmxvYXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjUsNyArMjUsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwK
KyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAg
ICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCiBdIGludGVy
ZmFjZSBPRVNUZXh0dXJlSGFsZkZsb2F0IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaWRsCShyZXZpc2lv
biAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZs
b2F0TGluZWFyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsK
LSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAg
ICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJl
bmRlcmluZ0NvbnRleHQsCiBdIGludGVyZmFjZSBPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJh
eU9iamVjdC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NyBAQAogICAgIENvbmRpdGlvbmFsPVdFQkdMLCAKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAog
ICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKLSAgICBO
b0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJm
YWNlIE9FU1ZlcnRleEFycmF5T2JqZWN0IHsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIFZFUlRF
WF9BUlJBWV9CSU5ESU5HX09FUyA9IDB4ODVCNTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaWRsCShyZXZpc2lvbiAy
NjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxv
YXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAqLwogCiBbCi0gICAgTm9J
bnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0
aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdD
b250ZXh0CiBdIGludGVyZmFjZSBXZWJHTENvbG9yQnVmZmVyRmxvYXQgewpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1
cmVBU1RDLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3
ICsyNyw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50
cywKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCi0g
ICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGlu
dGVyZmFjZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQyB7CiAgICAgLyogQ29tcHJlc3NlZCBU
ZXh0dXJlIEZvcm1hdCAqLwogICAgIGNvbnN0IEdMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ180
eDRfS0hSID0gMHg5M0IwOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUFUQy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5pZGwJKHJldmlzaW9uIDI2NjYzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VC
R0wsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUlt
cGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBXZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDIHsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIENPTVBSRVNTRURfUkdCX0FUQ19XRUJHTCA9
IDB4OEM5MjsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIENPTVBSRVNTRURfUkdCQV9BVENfRVhQ
TElDSVRfQUxQSEFfV0VCR0wgPSAweDhDOTM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuaWRsCShyZXZp
c2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlRVRDMS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICAgICBD
b25kaXRpb25hbD1XRUJHTCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIEdlbmVyYXRl
SXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxIHsKICAgICAvKiBDb21wcmVzc2VkIFRleHR1cmUgRm9ybWF0cyAq
LwogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9SR0JfRVRDMV9XRUJHTCA9IDB4
OEQ2NDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVFVEMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIERv
Tm90Q2hlY2tDb25zdGFudHMsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQyB7CiAgICAg
LyogQ29tcHJlc3NlZCBUZXh0dXJlIEZvcm1hdCAqLwogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcg
Q09NUFJFU1NFRF9SMTFfRUFDICAgICAgICAgICAgICAgICAgICAgICAgPSAweDkyNzA7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVQVlJUQy5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBEb05vdENo
ZWNrQ29uc3RhbnRzLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5n
Q29udGV4dCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9i
amVjdCwKIF0gaW50ZXJmYWNlIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQyB7CiAgICAgY29u
c3QgdW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HID0gMHg4QzAw
OwogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lN
RyA9IDB4OEMwMTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQkdM
LAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBs
V2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VY
VCA9IDB4ODNGMDsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIENPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDFfRVhUID0gMHg4M0YxOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuaWRsCShyZXZp
c2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQ3NSR0IuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAg
ICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBHZW5l
cmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCi0gICAgTm9JbnRlcmZh
Y2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09N
UFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQgPSAweDhDNEM7CiAgICAgY29uc3QgdW5zaWduZWQg
bG9uZyBDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVCA9IDB4OEM0RDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJl
ckluZm8uaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NyBAQAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAg
ICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZh
Y2UgV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBVTk1B
U0tFRF9WRU5ET1JfV0VCR0wgPSAweDkyNDU7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBVTk1B
U0tFRF9SRU5ERVJFUl9XRUJHTCA9IDB4OTI0NjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAg
IEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0lu
dGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNl
IFdlYkdMRGVidWdTaGFkZXJzIHsKICAgICBET01TdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZShXZWJHTFNoYWRlciBzaGFkZXIpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIERv
Tm90Q2hlY2tDb25zdGFudHMsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgV2ViR0xEZXB0aFRleHR1cmUgewogICAgIGNvbnN0IHVu
c2lnbmVkIGxvbmcgVU5TSUdORURfSU5UXzI0XzhfV0VCR0wgPSAweDg0RkE7CiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5pZGwJKHJl
dmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1
ZmZlcnMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiB0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgR0xlbnVtOwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5
Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJ
c1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAogICAgIERvTm90Q2hlY2tDb25z
dGFudHMsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTExvc2VDb250ZXh0
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTExvc2VD
b250ZXh0LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xMb3NlQ29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAK
ICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QsCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1J
bXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAogXSBpbnRlcmZhY2UgV2ViR0xMb3NlQ29udGV4dCB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDcgKzUzLDcgQEAgdHlwZWRlZiAoSFRNTENhbnZhc0VsZW1lbnQpIFdlYkdMQ2Fu
dmFzOwogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAg
ICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKIF0g
aW50ZXJmYWNlIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgewogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcg
QEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJs
ZT1JbXBsCiBdIGludGVyZmFjZSBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmlkbAko
cmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWVHZW5lcmljLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICAgIENvbmRp
dGlvbmFsPVZJREVPLAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAogICAgIEpTR2VuZXJhdGVU
b05hdGl2ZU9iamVjdCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVy
ZmFjZU9iamVjdCwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKIF0gaW50ZXJmYWNl
IFRleHRUcmFja0N1ZUdlbmVyaWMgOiBWVFRDdWUgewogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVlRUUmVnaW9uTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WVFRSZWdpb25MaXN0LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb25MaXN0LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsNyBAQAogWwogICAgIENvbmRpdGlvbmFsPVZJREVPLAogICAgIEltcGxlbWVu
dGF0aW9uTGFja3NWVGFibGUsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBWVFRSZWdpb25MaXN0IHsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgZ2V0dGVyIFZUVFJlZ2lvbj8g
aXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSUhvc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNyArMzEsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAg
ICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
CiBdIGludGVyZmFjZSBDb21tYW5kTGluZUFQSUhvc3QgewogICAgIHVuZGVmaW5lZCBjbGVhckNv
bnNvbGVNZXNzYWdlcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5pZGwJKHJldmlz
aW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiBb
CiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKICAgICBKU0dlbmVyYXRlVG9KU09iamVj
dCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
IF0gaW50ZXJmYWNlIEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdCB7CiAgICAgW0Nh
bGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc2VxdWVuY2U8Tm9kZT4gZ2V0RWxl
bWVudHNCeUNvbXB1dGVkUm9sZShET01TdHJpbmcgcm9sZSwgb3B0aW9uYWwgTm9kZT8gY29udGFp
bmVyKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0RE9N
T2JqZWN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXVkaXRET01PYmplY3QuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRET01PYmplY3QuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw3ICsyNiw3IEBACiBbCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKICAgICBK
U0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lO
b0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIEluc3BlY3RvckF1ZGl0RE9NT2JqZWN0IHsK
ICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gaGFzRXZlbnRMaXN0ZW5lcnMoTm9kZSBu
b2RlLCBvcHRpb25hbCBET01TdHJpbmcgdHlwZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0UmVzb3VyY2VzT2JqZWN0LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRSZXNvdXJjZXNPYmplY3Qu
aWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXVkaXRSZXNvdXJjZXNPYmplY3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3
IEBACiBbCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKICAgICBKU0dlbmVyYXRlVG9K
U09iamVjdCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9i
amVjdCwKIF0gaW50ZXJmYWNlIEluc3BlY3RvckF1ZGl0UmVzb3VyY2VzT2JqZWN0IHsKICAgICBb
Q2FsbFdpdGg9RG9jdW1lbnQsIE1heVRocm93RXhjZXB0aW9uXSBzZXF1ZW5jZTxSZXNvdXJjZT4g
Z2V0UmVzb3VyY2VzKCk7CiAgICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlv
bl0gUmVzb3VyY2VDb250ZW50IGdldFJlc291cmNlQ29udGVudChET01TdHJpbmcgaWQpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAK
IFsKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0
LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0IHsKICAgICB1bmRlZmluZWQgbG9hZGVkKCk7CiAgICAgdW5kZWZpbmVkIGNsb3Nl
V2luZG93KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiAyNjY2
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDExICs1MSwxMSBAQCB0eXBlZGVmIFVTVlN0cmluZyBDU1NPTVN0cmluZzsKICAgICBF
eHBvc2VkPVdpbmRvdywKIF0gaW50ZXJmYWNlIERPTVdpbmRvdyA6IEV2ZW50VGFyZ2V0IHsKICAg
ICAvLyBUaGUgY3VycmVudCBicm93c2luZyBjb250ZXh0LgotICAgIFtEb05vdENoZWNrU2VjdXJp
dHksIFVuZm9yZ2VhYmxlLCBDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQ
cm94eSB3aW5kb3c7CisgICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgTGVnYWN5VW5mb3JnZWFibGUs
IEN1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHdpbmRvdzsKICAg
ICBbUmVwbGFjZWFibGUsIERvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyLCBDdXN0b21HZXR0ZXJd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSBzZWxmOwotICAgIFtVbmZvcmdlYWJsZV0g
cmVhZG9ubHkgYXR0cmlidXRlIERvY3VtZW50IGRvY3VtZW50OworICAgIFtMZWdhY3lVbmZvcmdl
YWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIERvY3VtZW50IGRvY3VtZW50OwogICAgIGF0dHJpYnV0
ZSBET01TdHJpbmcgbmFtZTsKLSAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBQdXRGb3J3YXJkcz1o
cmVmLCBVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIExvY2F0aW9uIGxvY2F0aW9uOwor
ICAgIFtEb05vdENoZWNrU2VjdXJpdHksIFB1dEZvcndhcmRzPWhyZWYsIExlZ2FjeVVuZm9yZ2Vh
YmxlXSByZWFkb25seSBhdHRyaWJ1dGUgTG9jYXRpb24gbG9jYXRpb247CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIEhpc3RvcnkgaGlzdG9yeTsKICAgICBbRW5hYmxlZEJ5U2V0dGluZz1DdXN0b21F
bGVtZW50cywgSW1wbGVtZW50ZWRBcz1lbnN1cmVDdXN0b21FbGVtZW50UmVnaXN0cnldIHJlYWRv
bmx5IGF0dHJpYnV0ZSBDdXN0b21FbGVtZW50UmVnaXN0cnkgY3VzdG9tRWxlbWVudHM7CiAgICAg
W1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgQmFyUHJvcCBsb2NhdGlvbmJhcjsKQEAg
LTc0LDExICs3NCwxMSBAQCB0eXBlZGVmIFVTVlN0cmluZyBDU1NPTVN0cmluZzsKICAgICAvLyBP
dGhlciBicm93c2luZyBjb250ZXh0cy4KICAgICBbUmVwbGFjZWFibGUsIERvTm90Q2hlY2tTZWN1
cml0eU9uR2V0dGVyLCBDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94
eSBmcmFtZXM7CiAgICAgW1JlcGxhY2VhYmxlLCBEb05vdENoZWNrU2VjdXJpdHlPbkdldHRlcl0g
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwotICAgIFtEb05vdENoZWNr
U2VjdXJpdHlPbkdldHRlciwgVW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQ
cm94eT8gdG9wOworICAgIFtEb05vdENoZWNrU2VjdXJpdHlPbkdldHRlciwgTGVnYWN5VW5mb3Jn
ZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gdG9wOwogICAgIFtEb05vdENo
ZWNrU2VjdXJpdHlPbkdldHRlciwgQ3VzdG9tU2V0dGVyXSBhdHRyaWJ1dGUgV2luZG93UHJveHk/
IG9wZW5lcjsKICAgICBbUmVwbGFjZWFibGUsIERvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyXSBy
ZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHk/IHBhcmVudDsKICAgICBbQ2hlY2tTZWN1cml0
eUZvck5vZGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50PyBmcmFtZUVsZW1lbnQ7Ci0gICAg
W0NhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgTWF5VGhyb3dFeGNlcHRpb25dIFdp
bmRvd1Byb3h5PyBvcGVuKG9wdGlvbmFsIFVTVlN0cmluZyB1cmwgPSAiIiwgb3B0aW9uYWwgRE9N
U3RyaW5nIHRhcmdldCA9ICJfYmxhbmsiLCBvcHRpb25hbCBbVHJlYXROdWxsQXM9RW1wdHlTdHJp
bmddIERPTVN0cmluZyBmZWF0dXJlcyA9ICIiKTsKKyAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93
JkZpcnN0V2luZG93LCBNYXlUaHJvd0V4Y2VwdGlvbl0gV2luZG93UHJveHk/IG9wZW4ob3B0aW9u
YWwgVVNWU3RyaW5nIHVybCA9ICIiLCBvcHRpb25hbCBET01TdHJpbmcgdGFyZ2V0ID0gIl9ibGFu
ayIsIG9wdGlvbmFsIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGZlYXR1cmVz
ID0gIiIpOwogCiAgICAgLy8gVGhlIHVzZXIgYWdlbnQuCiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IE5hdmlnYXRvciBuYXZpZ2F0b3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbENy
eXB0by5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxDcnlwdG8u
aWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbENyeXB0
by5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICovCiAKIFsKLSAgICBOb0lu
dGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNl
IEdsb2JhbENyeXB0byB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIENyeXB0byBjcnlwdG87CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxQZXJmb3JtYW5jZS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxQZXJmb3JtYW5jZS5pZGwJKHJldmlz
aW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsUGVyZm9ybWFuY2UuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAvLyBodHRwczovL3czYy5naXRodWIu
aW8vaHItdGltZS8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpCiBdIGludGVyZmFjZSBH
bG9iYWxQZXJmb3JtYW5jZSB7CiAgICAgW1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUg
UGVyZm9ybWFuY2UgcGVyZm9ybWFuY2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0
aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAko
cmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPVJl
YWNoYWJsZUZyb21ET01XaW5kb3csCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmpl
Y3QsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBVbmZvcmdlYWJsZQorICAg
IExlZ2FjeVVuZm9yZ2VhYmxlCiBdIGludGVyZmFjZSBMb2NhdGlvbiB7CiAgICAgW1NldHRlckNh
bGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgRG9Ob3RDaGVja1NlY3VyaXR5T25TZXR0
ZXJdIHN0cmluZ2lmaWVyIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaHJlZjsKIApAQCAtNjIsNSArNjIs
NSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgb3JpZ2luOwogCiAgICAgLy8g
RklYTUU6IEFkZCBzdXBwb3J0IGZvciBTYW1lT2JqZWN0LgotICAgIFtVbmZvcmdlYWJsZSwgQ2Fj
aGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nTGlzdCBhbmNlc3Rvck9y
aWdpbnM7CisgICAgW0xlZ2FjeVVuZm9yZ2VhYmxlLCBDYWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IGFuY2VzdG9yT3JpZ2luczsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvcklELmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvcklELmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3JJRC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcg
QEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdAogXSBpbnRlcmZhY2UgTmF2aWdhdG9ySUQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgYXBwQ29kZU5hbWU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBhcHBOYW1lOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JMYW5ndWFnZS5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JMYW5ndWFnZS5p
ZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yTGFu
Z3VhZ2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgKi8KIAogWwotICAg
IE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJm
YWNlIE5hdmlnYXRvckxhbmd1YWdlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGxhbmd1YWdlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxET01TdHJpbmc+
IGxhbmd1YWdlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yT25MaW5lLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvck9uTGluZS5pZGwJ
KHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yT25MaW5l
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICovCiAKIFsKLSAgICBOb0lu
dGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0CiBdIGludGVyZmFjZSBO
YXZpZ2F0b3JPbkxpbmUgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIG9uTGluZTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclBsdWdpbnMuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yUGx1Z2lucy5pZGwJKHJldmlz
aW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yUGx1Z2lucy5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZh
Y2VPYmplY3QKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdAogXSBpbnRlcmZhY2UgTmF2aWdh
dG9yUGx1Z2lucyB7CiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01QbHVn
aW5BcnJheSBwbHVnaW5zOwogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgRE9N
TWltZVR5cGVBcnJheSBtaW1lVHlwZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmln
YXRvclNlcnZpY2VXb3JrZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yU2VydmljZVdvcmtlci5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9yU2VydmljZVdvcmtlci5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVIsCiAg
ICAgRW5hYmxlZEF0UnVudGltZT1TZXJ2aWNlV29ya2VyCiBdIGludGVyZmFjZSBOYXZpZ2F0b3JT
ZXJ2aWNlV29ya2VyIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yU2hhcmUu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yU2hhcmUuaWRs
CShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclNoYXJl
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAKIFsKLSAgICBOb0ludGVy
ZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFbmFibGVkQnlT
ZXR0aW5nPVdlYlNoYXJlCiBdIGludGVyZmFjZSBOYXZpZ2F0b3JTaGFyZSB7CiAgICAgW0NhbGxX
aXRoPURvY3VtZW50LCBTZWN1cmVDb250ZXh0XSBib29sZWFuIGNhblNoYXJlKG9wdGlvbmFsIFNo
YXJlRGF0YSBzaGFyZURhdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01X
aW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2lu
ZG93LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVE
T01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MCwyMCArNDAsMjAgQEAKICAgICBKU0N1
c3RvbVRvTmF0aXZlT2JqZWN0LAogICAgIEpTTGVnYWN5UGFyZW50PUpTUmVtb3RlRE9NV2luZG93
QmFzZSwKICAgICBMZWdhY3lVbmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMsCi0gICAgTm9JbnRl
cmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgR2xvYmFsPVdp
bmRvdywKICAgICBFeHBvc2VkPVdpbmRvdywKIF0gaW50ZXJmYWNlIFJlbW90ZURPTVdpbmRvdyB7
Ci0gICAgW1VuZm9yZ2VhYmxlLCBJbXBsZW1lbnRlZEFzPXNlbGZdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBXaW5kb3dQcm94eSB3aW5kb3c7CisgICAgW0xlZ2FjeVVuZm9yZ2VhYmxlLCBJbXBsZW1lbnRl
ZEFzPXNlbGZdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSB3aW5kb3c7CiAgICAgW1Jl
cGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgc2VsZjsKLSAgICBbUHV0
Rm9yd2FyZHM9aHJlZiwgVW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBMb2NhdGlvbj8g
bG9jYXRpb247IC8vIEZJWE1FOiBTaG91bGQgbm90IGJlIG51bGxhYmxlLgorICAgIFtQdXRGb3J3
YXJkcz1ocmVmLCBMZWdhY3lVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIExvY2F0aW9u
PyBsb2NhdGlvbjsgLy8gRklYTUU6IFNob3VsZCBub3QgYmUgbnVsbGFibGUuCiAgICAgW0NhbGxX
aXRoPUluY3VtYmVudERvY3VtZW50LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQg
Y2xvc2UoKTsKICAgICBbRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gY2xvc2VkOwogICAgIFtDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3csIEZvcndhcmRE
ZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBmb2N1cygpOwogICAgIFtGb3J3YXJkRGVjbGFyZUlu
SGVhZGVyXSB1bmRlZmluZWQgYmx1cigpOwogICAgIFtSZXBsYWNlYWJsZSwgSW1wbGVtZW50ZWRB
cz1zZWxmXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgZnJhbWVzOwogICAgIFtSZXBs
YWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwotICAgIFtV
bmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5PyB0b3A7CisgICAgW0xl
Z2FjeVVuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHk/IHRvcDsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHk/IG9wZW5lcjsKICAgICBbUmVwbGFjZWFi
bGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gcGFyZW50OwogICAgIFtDYWxsV2l0
aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1
bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0YXJnZXRPcmlnaW4s
IG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1dpbmRvd0V2ZW50SGFuZGxlcnMuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2luZG93RXZlbnRIYW5kbGVycy5pZGwJKHJldmlzaW9uIDI2NjYzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RXZlbnRIYW5kbGVycy5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI3dpbmRvd2V2ZW50aGFuZGxlcnMKIFsKLSAgICBO
b0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJm
YWNlIFdpbmRvd0V2ZW50SGFuZGxlcnMgewogICAgIC8vIENvbW1lbnRlZCBvdXQgZXZlbnQgaGFu
ZGxlcnMgYXJlIGRlZmluZWQgYnkgdGhlIEhUTUw1IHNwZWNpZmljYXRpb24gYnV0CiAgICAgLy8g
YXJlIG5vdCB5ZXQgaW1wbGVtZW50ZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRv
d09yV29ya2VyR2xvYmFsU2NvcGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdHlwZWRlZiAoSFRNTEltYWdlRWxlbWVudAogdHlwZWRl
ZiAoQ2FudmFzSW1hZ2VTb3VyY2Ugb3IgQmxvYiBvciBJbWFnZURhdGEpIEltYWdlQml0bWFwU291
cmNlOwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QsCiBdIGludGVyZmFjZSBXaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlIHsKICAgICBbUmVw
bGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgb3JpZ2luOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisg
ICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRl
ZExlbmd0aCB4OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB5OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5pZGwJKHJldmlzaW9uIDI2NjYz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw3ICsyNSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAor
ICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgU1ZHRml0VG9WaWV3Qm94
IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRSZWN0IHZpZXdCb3g7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2
ZUFzcGVjdFJhdGlvOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaWRsCShyZXZpc2lvbiAyNjY2
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw3ICsyNSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIFN1cHByZXNzVG9KU09iamVjdCwKIF0gaW50ZXJm
YWNlIFNWR1Rlc3RzIHsKICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFNWR1N0
cmluZ0xpc3QgcmVxdWlyZWRGZWF0dXJlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdV
UklSZWZlcmVuY2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklS
ZWZlcmVuY2UuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VVJJUmVmZXJlbmNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogICovCiAK
IFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
ICAgICBTdXBwcmVzc1RvSlNPYmplY3QsCiBdIGludGVyZmFjZSBTVkdVUklSZWZlcmVuY2Ugewog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBocmVmOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsy
NSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgU1ZHWm9vbUFuZFBhbiB7CiAgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgU1ZHX1pPT01BTkRQQU5fVU5LTk9XTiA9IDA7CiAgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgU1ZHX1pPT01BTkRQQU5fRElTQUJMRSA9IDE7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHWm9vbUV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHWm9vbUV2ZW50LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1pvb21FdmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAogICovCiAKLWludGVyZmFjZSBTVkdab29tRXZlbnQgOiBVSUV2ZW50IHsgCitp
bnRlcmZhY2UgU1ZHWm9vbUV2ZW50IDogVUlFdmVudCB7CiAgICAgW05ld09iamVjdF0gcmVhZG9u
bHkgYXR0cmlidXRlIFNWR1JlY3Qgem9vbVJlY3RTY3JlZW47CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVucmVzdHJpY3RlZCBmbG9hdCBwcmV2aW91c1NjYWxlOwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBTVkdQb2ludCBwcmV2aW91c1RyYW5zbGF0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvR0NPYnNlcnZhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVz
dGluZy9HQ09ic2VydmF0aW9uLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNv
cmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAs
NyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVy
ZmFjZU9iamVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEV4cG9ydE1h
Y3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRlcmZhY2UgR0NPYnNlcnZhdGlv
biB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwJ
KHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgZW51bSBGcmFtZUZsYXR0
ZW5pbmdWYWx1ZSB7ICJEaXNhYmxlZCIsIAogZW51bSBGb250TG9hZFRpbWluZ092ZXJyaWRlIHsg
IkJsb2NrIiwgIlN3YXAiLCAiRmFpbHVyZSIgfTsKIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0
LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0
LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRlcmZh
Y2UgSW50ZXJuYWxTZXR0aW5ncyA6IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQgewpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNDYs
NyArMjQ2LDcgQEAgZW51bSBDb250ZW50U2l6ZUNhdGVnb3J5IHsKIAogWwogICAgIEV4cG9ydE1h
Y3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAor
ICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgSW50ZXJuYWxzIHsKICAg
ICBET01TdHJpbmcgYWRkcmVzcyhOb2RlIG5vZGUpOwogICAgIGJvb2xlYW4gbm9kZU5lZWRzU3R5
bGVSZWNhbGMoTm9kZSBub2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzTWFwTGlrZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHNNYXBMaWtlLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHNNYXBMaWtlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCwKICAg
ICBTa2lwVlRhYmxlVmFsaWRhdGlvbiwKIF0gaW50ZXJmYWNlIEludGVybmFsc01hcExpa2UKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzU2V0TGlrZS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHNTZXRMaWtlLmlkbAkocmV2aXNp
b24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHNTZXRMaWtlLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVy
ZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvcnRNYWNy
bz1XRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCwKICAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbiwK
IF0gaW50ZXJmYWNlIEludGVybmFsc1NldExpa2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTWFsbG9jU3RhdGlzdGljcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVz
dGluZy9NYWxsb2NTdGF0aXN0aWNzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvdGVzdGluZy9NYWxsb2NTdGF0aXN0aWNzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQs
NyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lO
b0ludGVyZmFjZU9iamVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEV4
cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRlcmZhY2UgTWFsbG9j
U3RhdGlzdGljcyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01lbW9yeUluZm8uaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTWVtb3J5SW5mby5pZGwJKHJl
dmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTWVtb3J5SW5mby5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZh
Y2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgSW1wbGVtZW50YXRp
b25MYWNrc1ZUYWJsZSwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9S
VCwKIF0gaW50ZXJmYWNlIE1lbW9yeUluZm8gewpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3
IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEsCi0gICAgTm9JbnRlcmZh
Y2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3J0TWFjcm89
V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQsCiBdIGludGVyZmFjZSBNb2NrQ0RNRmFjdG9yeSB7
CiAgICAgYXR0cmlidXRlIHNlcXVlbmNlPERPTVN0cmluZz4gc3VwcG9ydGVkRGF0YVR5cGVzOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICsz
OSw3IEBAIGVudW0gRGVjaXNpb24gewogCiBbCiAgICAgQ29uZGl0aW9uYWw9Q09OVEVOVF9GSUxU
RVJJTkcsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3QsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQogXSBpbnRlcmZhY2UgTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncyB7CiAgICAgYXR0cmlidXRlIGJvb2xlYW4gZW5hYmxlZDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheS5pZGwJKHJldmlzaW9uIDI2
NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxh
Y2tzVlRhYmxlCiBdIGludGVyZmFjZSBNb2NrUGFnZU92ZXJsYXkgewogICAgIHVuZGVmaW5lZCBz
ZXRGcmFtZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGlu
YXRvci5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1BheW1lbnRDb29yZGluYXRvci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAK
IAogWwogICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwK
KyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIE1vY2tQYXltZW50Q29v
cmRpbmF0b3IgewogICAgIHVuZGVmaW5lZCBzZXRDYW5NYWtlUGF5bWVudHMoYm9vbGVhbiBjYW5N
YWtlUGF5bWVudHMpOwogICAgIHVuZGVmaW5lZCBzZXRDYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZl
Q2FyZChib29sZWFuIGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbAkocmV2
aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50
ZXJuYWxzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICAgIENvbmRpdGlv
bmFsPVNFUlZJQ0VfV09SS0VSLAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRf
RVhQT1JULAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgTm9JbnRlcmZhY2VP
YmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBTZXJ2aWNl
V29ya2VySW50ZXJuYWxzIHsKICAgICB1bmRlZmluZWQgc2V0T25saW5lKGJvb2xlYW4gaXNPbmxp
bmUpOwogICAgIFByb21pc2U8UmVzcG9uc2U+IHdhaXRGb3JGZXRjaEV2ZW50VG9GaW5pc2goRmV0
Y2hFdmVudCBldmVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1R5cGVDb252ZXJz
aW9ucy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9UeXBlQ29udmVy
c2lvbnMuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1R5
cGVDb252ZXJzaW9ucy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwog
CiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Qs
CiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JF
X1RFU1RTVVBQT1JUX0VYUE9SVCwKIF0gaW50ZXJmYWNlIFR5cGVDb252ZXJzaW9ucyB7CkBAIC02
NCw3ICs2NCw3IEBACiAgICAgYXR0cmlidXRlIERPTVN0cmluZyB0ZXN0U3RyaW5nOwogICAgIGF0
dHJpYnV0ZSBCeXRlU3RyaW5nIHRlc3RCeXRlU3RyaW5nOwogICAgIGF0dHJpYnV0ZSBVU1ZTdHJp
bmcgdGVzdFVTVlN0cmluZzsKLSAgICBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5n
XSBET01TdHJpbmcgdGVzdFRyZWF0TnVsbEFzRW1wdHlTdHJpbmc7CisgICAgYXR0cmlidXRlIFtM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHRlc3RUcmVhdE51bGxBc0VtcHR5U3Ry
aW5nOwogCiAgICAgdW5kZWZpbmVkIHNldFRlc3RMb25nUmVjb3JkKHJlY29yZDxET01TdHJpbmcs
IGxvbmc+IHJlY29yZCk7CiAgICAgcmVjb3JkPERPTVN0cmluZywgbG9uZz4gdGVzdExvbmdSZWNv
cmQoKTsKQEAgLTgxLDcgKzgxLDcgQEAKIAogICAgIGF0dHJpYnV0ZSAoRE9NU3RyaW5nIG9yIFtD
bGFtcF0gbG9uZyBvciBzZXF1ZW5jZTxbQ2xhbXBdIGxvbmc+KSB0ZXN0Q2xhbXBVbmlvbjsKICAg
ICBhdHRyaWJ1dGUgKERPTVN0cmluZyBvciBbRW5mb3JjZVJhbmdlXSBsb25nIG9yIHNlcXVlbmNl
PFtFbmZvcmNlUmFuZ2VdIGxvbmc+KSB0ZXN0RW5mb3JjZVJhbmdlVW5pb247Ci0gICAgYXR0cmli
dXRlIChbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBvciBsb25nIG9yIHNlcXVl
bmNlPFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nPikgdGVzdFRyZWF0TnVsbEFz
RW1wdHlTdHJpbmdVbmlvbjsKKyAgICBhdHRyaWJ1dGUgKFtMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z10gRE9NU3RyaW5nIG9yIGxvbmcgb3Igc2VxdWVuY2U8W0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
XSBET01TdHJpbmc+KSB0ZXN0VHJlYXROdWxsQXNFbXB0eVN0cmluZ1VuaW9uOwogfTsKIAogWwpA
QCAtOTYsNyArOTYsNyBAQAogXSBkaWN0aW9uYXJ5IFR5cGVDb252ZXJzaW9uc0RpY3Rpb25hcnkg
ewogICAgIGxvbmcgbG9uZ1ZhbHVlID0gMDsKICAgICBET01TdHJpbmcgc3RyaW5nVmFsdWUgPSAi
IjsKLSAgICBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyB0cmVhdE51bGxBc0Vt
cHR5U3RyaW5nVmFsdWUgPSAiIjsKKyAgICBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0
cmluZyB0cmVhdE51bGxBc0VtcHR5U3RyaW5nVmFsdWUgPSAiIjsKICAgICBzZXF1ZW5jZTxET01T
dHJpbmc+IHNlcXVlbmNlVmFsdWUgPSBbXTsKICAgICAoTm9kZSBvciBzZXF1ZW5jZTxET01TdHJp
bmc+IG9yIFR5cGVDb252ZXJzaW9uc090aGVyRGljdGlvbmFyeSkgdW5pb25WYWx1ZSA9IG51bGw7
CiAgICAgW0NsYW1wXSBsb25nIGNsYW1wTG9uZ1ZhbHVlID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNyArMjgsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQlhSLAogICAgIEludGVyZmFjZU5h
bWU9RmFrZVhSRGV2aWNlLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgTm9J
bnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFj
ZSBXZWJGYWtlWFJEZXZpY2UgewogICAvLyBTZXRzIHRoZSB2YWx1ZXMgdG8gYmUgdXNlZCBmb3Ig
c3Vic2VxdWVudAogICAvLyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKSBjYWxsYmFja3MuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xs
ZXIuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZh
a2VYUklucHV0Q29udHJvbGxlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAK
ICAgICBDb25kaXRpb25hbD1XRUJYUiwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAog
ICAgIEludGVyZmFjZU5hbWU9RmFrZVhSSW5wdXRDb250cm9sbGVyLAotICAgIE5vSW50ZXJmYWNl
T2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJmYWNlIFdlYkZha2VY
UklucHV0Q29udHJvbGxlciB7CiAgICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhlIGhhbmRlZG5lc3Mg
b2YgdGhlIGRldmljZSBoYXMgY2hhbmdlZC4KICAgICB1bmRlZmluZWQgc2V0SGFuZGVkbmVzcyhY
UkhhbmRlZG5lc3MgaGFuZGVkbmVzcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dl
YlhSVGVzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJYUlRl
c3QuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhS
VGVzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICAgICBDb25kaXRpb25h
bD1XRUJYUiwKICAgICBFeHBvc2VkPVdpbmRvdywKICAgICBJbnRlcmZhY2VOYW1lPVhSVGVzdCwK
LSAgICBOb0ludGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0CiBdIGlu
dGVyZmFjZSBXZWJYUlRlc3QgewogICAgIC8vIFNpbXVsYXRlcyBjb25uZWN0aW5nIGEgZGV2aWNl
IHRvIHRoZSBzeXN0ZW0uCiAgICAgLy8gVXNlZCB0byBpbnN0YW50aWF0ZSBhIGZha2UgZGV2aWNl
IGZvciB1c2UgaW4gdGVzdHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0
V29ya2VyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0
V29ya2VyLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9B
YnN0cmFjdFdvcmtlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICAqLwog
CiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Qs
CiBdIGludGVyZmFjZSBBYnN0cmFjdFdvcmtlciB7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbmVycm9yOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5TUmVzb2x2ZXIu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5TUmVzb2x2ZXIuaWRs
CShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOU1Jlc29sdmVy
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQAogICovCiAKIFsKLSAgICBOb0lu
dGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBTa2lwVlRh
YmxlVmFsaWRhdGlvbiwKIF0gaW50ZXJmYWNlIFhQYXRoTlNSZXNvbHZlciB7CiAgICAgRE9NU3Ry
aW5nPyBsb29rdXBOYW1lc3BhY2VVUkkoRE9NU3RyaW5nPyBwcmVmaXgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408050</attachid>
            <date>2020-09-04 17:21:54 -0700</date>
            <delta_ts>2020-09-05 08:44:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216194-20200904172153.patch</filename>
            <type>text/plain</type>
            <size>449884</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2MiBAQAorMjAyMC0wOS0wNCAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYklETF0gUmVhbGlnbiBvdXIg
SURMIGV4dGVuZGVkIGF0dHJpYnV0ZSBuYW1lcyB3aXRoIHRob3NlIHNwZWNpZmllZCBpbiBXZWJJ
REwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjE5
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE92ZXIg
dGltZSwgdGhlIFdlYklETCBhbmQgSFRNTCBzcGVjaWZpY2F0aW9ucyBoYXZlIGFkZGVkIC8gcmVu
YW1lZCBleHRlbmRlZCBhdHRyaWJ1dGVzIGFuZCB3ZSBoYXZlCisgICAgICAgIG5vdCBzdGF5ZWQg
dXAgdG8gZGF0ZS4gVGhpcyB1cGRhdGVzIHRoZSBuYW1lcyBldmVyeXdoZXJlIGFuZCBVUkxzIGlu
IElETEF0dHJpYnV0ZXMuanNvbi4KKyAgICAKKyAgICAgICAgICAgICBbQWxsb3dTaGFyZWRdIC0+
IG5ldywgbWFya2VkIGFzIHVuc3VwcG9ydGVkCisgICAgICAgICAgICAgW0hUTUxDb25zdHJ1Y3Rv
cl0gLSA+IG5ldywgbWFya2VkIGFzIHVuc3VwcG9ydGVkCisgICAgICAgICAgICAgW0xlZ2FjeUxl
bmllbnRTZXR0ZXJdIC0+IHJlbmFtZWQgZnJvbSBbTGVuaWVudFNldHRlcl0sIHN0aWxsIHVuc3Vw
cG9ydGVkCisgICAgICAgICAgICAgW0xlZ2FjeUxlbmllbnRUaGlzXSAtPiByZW5hbWVkIGZyb20g
W0xlbmllbnRUaGlzXQorICAgICAgICAgICAgIFtMZWdhY3lOYW1lc3BhY2VdIC0+IG5ldywgbWFy
a2VkIGFzIHVuc3VwcG9ydGVkCisgICAgICAgICAgICAgW0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
XSAtPiByZW5hbWVkIGZyb20gW05vSW50ZXJmYWNlT2JqZWN0XQorICAgICAgICAgICAgIFtMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ10gLT4gcmVuYW1lZCBmcm9tIFtUcmVhdE51bGxBcz1FbXB0eVN0
cmluZ10KKyAgICAgICAgICAgICBbTGVnYWN5T3ZlcnJpZGVCdWlsdEluc10gLT4gcmVuYW1lZCBm
cm9tIE92ZXJyaWRlQnVpbHRpbnMKKyAgICAgICAgICAgICBbTGVnYWN5VHJlYXROb25PYmplY3RB
c051bGxdIC0+IHJlbmFtZWQgZnJvbSBbVHJlYXROb25PYmplY3RBc051bGxdLCBzdGlsbCB1bnN1
cHBvcnRlZAorICAgICAgICAgICAgIFtMZWdhY3lVbmZvcmdlYWJsZV0gLT4gcmVuYW1lZCBmcm9t
IFtVbmZvcmdlYWJsZV0KKyAgICAgICAgICAgICBbU2VyaWFsaXphYmxlXSAtPiBuZXcsIG1hcmtl
ZCBhcyB1bnN1cHBvcnRlZAorICAgICAgICAgICAgIFtUcmFuc2ZlcmFibGVdIC0+IG5ldywgbWFy
a2VkIGFzIHVuc3VwcG9ydGVkCisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
Q2FuY2VsRXZlbnQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXlt
ZW50QXV0aG9yaXplZEV2ZW50LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50Lmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2
ZW50LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5pZGw6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvUGxheWJhY2tRdWFsaXR5LmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaWRsOgorICAgICAgICAq
IE1vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm8uaWRsOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEv
U3RvcmFnZVF1b3RhLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVz
aXMuaWRsOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvTGlzdGVuZXIuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGw6CisgICAg
ICAgICogU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVk
LmlkbC5lcmI6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Um9sZS5pZGw6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BcmlhQXR0cmlidXRlcy5pZGw6CisgICAgICAgICog
YW5pbWF0aW9uL0FuaW1hdGFibGUuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL0lETFR5cGVzLmg6
CisgICAgICAgICogYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmg6CisgICAgICAgIChXZWJD
b3JlOjpET01XcmFwcGVyV29ybGQ6OmRpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZp
b3IpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpzaG91bGREaXNhYmxlTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0JlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVdyYXBwZXJXb3JsZDo6ZGlzYWJsZU92ZXJyaWRlQnVpbHRpbnNCZWhhdmlvcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OnNob3VsZERpc2FibGVPdmVycmlk
ZUJ1aWx0aW5zQmVoYXZpb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjppc1Zpc2libGVO
YW1lZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnROdWxsYWJsZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnZlcnRlcjxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxUPj46OmNvbnZlcnQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDb252ZXJ0ZXI8SURMVHJlYXROdWxsQXNFbXB0
eUFkYXB0b3I8VD4+Ojpjb252ZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAg
ICAgIChHZW5lcmF0ZVB1dCk6CisgICAgICAgIChHZW5lcmF0ZVB1dEJ5SW5kZXgpOgorICAgICAg
ICAoR2VuZXJhdGVJc0xlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKToKKyAgICAgICAgKEdl
bmVyYXRlRGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoR2VuZXJhdGVEZWxldGVQcm9wZXJ0
eUNvbW1vbik6CisgICAgICAgIChBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UpOgorICAgICAg
ICAoT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKToKKyAgICAgICAgKElzQWNjZWxlcmF0ZWRE
T01BdHRyaWJ1dGUpOgorICAgICAgICAoR2V0SlNDQXR0cmlidXRlc0ZvckF0dHJpYnV0ZSk6Cisg
ICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9u
KToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyVHJhbXBvbGluZURlZmluaXRpb24p
OgorICAgICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJUcmFtcG9saW5lRGVmaW5pdGlvbik6
CisgICAgICAgIChJc0Fubm90YXRlZFR5cGUpOgorICAgICAgICAoR2V0QW5ub3RhdGVkSURMVHlw
ZSk6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcyk6CisgICAgICAg
IChOZWVkc0NvbnN0cnVjdG9yUHJvcGVydHkpOgorICAgICAgICAoSXNMZWdhY3lVbmZvcmdlYWJs
ZSk6CisgICAgICAgIChDb21wdXRlRnVuY3Rpb25TcGVjaWFsKToKKyAgICAgICAgKEdlbmVyYXRl
SXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChJc1VuZm9yZ2Vh
YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
anNvbjoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3Rv
cnMuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRh
cmdldC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zLmNwcDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmg6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVu
Y2llcy5kZXA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbmNsdWRlcy5p
ZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmlkbDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmlkbDogQWRkZWQuCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPcGVyYXRpb25C
YXNlLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE92ZXJyaWRlQnVp
bHRpbnMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGNzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlk
bDoKKyAgICAgICAgKiBjc3MvQ1NTVW5rbm93blJ1bGUuaWRsOgorICAgICAgICAqIGNzcy9FbGVt
ZW50Q1NTSW5saW5lU3R5bGUuaWRsOgorICAgICAgICAqIGNzcy9NZWRpYUxpc3QuaWRsOgorICAg
ICAgICAqIGNzcy9TdHlsZU1lZGlhLmlkbDoKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5p
ZGw6CisgICAgICAgICogZG9tL0NoaWxkTm9kZS5pZGw6CisgICAgICAgICogZG9tL0RPTUltcGxl
bWVudGF0aW9uLmlkbDoKKyAgICAgICAgKiBkb20vRE9NU3RyaW5nTWFwLmlkbDoKKyAgICAgICAg
KiBkb20vRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEFuZEVsZW1lbnRFdmVudEhhbmRs
ZXJzLmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsOgorICAgICAg
ICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRXZlbnQuaWRsOgorICAgICAgICAq
IGRvbS9FdmVudExpc3RlbmVyLmlkbDoKKyAgICAgICAgKiBkb20vR2xvYmFsRXZlbnRIYW5kbGVy
cy5pZGw6CisgICAgICAgICogZG9tL05hdmlnYXRvck1heFRvdWNoUG9pbnRzLmlkbDoKKyAgICAg
ICAgKiBkb20vTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlLmlkbDoKKyAgICAgICAgKiBkb20vTm9u
RWxlbWVudFBhcmVudE5vZGUuaWRsOgorICAgICAgICAqIGRvbS9QYXJlbnROb2RlLmlkbDoKKyAg
ICAgICAgKiBkb20vU2hhZG93Um9vdC5pZGw6CisgICAgICAgICogZG9tL1Nsb3RhYmxlLmlkbDoK
KyAgICAgICAgKiBodG1sL0hUTUxCb2R5RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1M
RG9jdW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaWRsOgorICAgICAgICAq
IGh0bWwvSFRNTEZvbnRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVu
dC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbDoKKyAgICAgICAgKiBo
dG1sL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTElG
cmFtZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5pZGw6Cisg
ICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxP
YmplY3RFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxPckZvcmVpZ25FbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1s
L0hUTUxUYWJsZUNlbGxFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1l
bnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5pZGw6CisgICAgICAg
ICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9B
TkdMRUluc3RhbmNlZEFycmF5cy5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzQ29t
cG9zaXRpbmcuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0RyYXdJbWFnZS5pZGw6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzRHJhd1BhdGguaWRsOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc0ZpbGxTdHJva2VTdHlsZXMuaWRsOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc0ZpbHRlcnMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0ltYWdl
RGF0YS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VTbW9vdGhpbmcuaWRs
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdGguaWRsOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1BhdGhEcmF3aW5nU3R5bGVzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZWN0LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNTaGFkb3dTdHls
ZXMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1N0YXRlLmlkbDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNUZXh0LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNUZXh0RHJhd2luZ1N0eWxlcy5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzVHJh
bnNmb3JtLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNVc2VySW50ZXJmYWNlLmlk
bDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5pZGw6CisgICAgICAgICog
aHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5pZGw6CisgICAgICAgICogaHRtbC9jYW52
YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VY
VEZyYWdEZXB0aC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxP
RC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRzUkdCLmlkbDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9P
RVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVh
ci5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5pZGw6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5pZGw6CisgICAg
ICAgICogaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaWRsOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5pZGw6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMxLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlUFZSVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQ3NSR0IuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVi
dWdSZW5kZXJlckluZm8uaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFk
ZXJzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5pZGw6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5pZGw6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tD
dWVHZW5lcmljLmlkbDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVFJlZ2lvbkxpc3QuaWRsOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaWRsOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsOgorICAgICAgICAqIHBhZ2UvRE9NV2lu
ZG93LmlkbDoKKyAgICAgICAgKiBwYWdlL0dsb2JhbENyeXB0by5pZGw6CisgICAgICAgICogcGFn
ZS9HbG9iYWxQZXJmb3JtYW5jZS5pZGw6CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5pZGw6Cisg
ICAgICAgICogcGFnZS9OYXZpZ2F0b3JJRC5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JM
YW5ndWFnZS5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JPbkxpbmUuaWRsOgorICAgICAg
ICAqIHBhZ2UvTmF2aWdhdG9yUGx1Z2lucy5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JT
ZXJ2aWNlV29ya2VyLmlkbDoKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvclNoYXJlLmlkbDoKKyAg
ICAgICAgKiBwYWdlL1JlbW90ZURPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGFnZS9XaW5kb3dF
dmVudEhhbmRsZXJzLmlkbDoKKyAgICAgICAgKiBwYWdlL1dpbmRvd09yV29ya2VyR2xvYmFsU2Nv
cGUuaWRsOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaWRsOgorICAgICAgICAqIHN2Zy9TVkdGaXRUb1ZpZXdCb3guaWRsOgorICAgICAgICAqIHN2
Zy9TVkdUZXN0cy5pZGw6CisgICAgICAgICogc3ZnL1NWR1VSSVJlZmVyZW5jZS5pZGw6CisgICAg
ICAgICogc3ZnL1NWR1pvb21BbmRQYW4uaWRsOgorICAgICAgICAqIHRlc3RpbmcvR0NPYnNlcnZh
dGlvbi5pZGw6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHNN
YXBMaWtlLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsc1NldExpa2UuaWRsOgorICAg
ICAgICAqIHRlc3RpbmcvTWFsbG9jU3RhdGlzdGljcy5pZGw6CisgICAgICAgICogdGVzdGluZy9N
ZW1vcnlJbmZvLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmlkbDoKKyAg
ICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaWRsOgorICAgICAgICAq
IHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tQYXlt
ZW50Q29vcmRpbmF0b3IuaWRsOgorICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVy
bmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaWRsOgorICAgICAg
ICAqIHRlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZh
a2VYUklucHV0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogdGVzdGluZy9XZWJYUlRlc3QuaWRs
OgorICAgICAgICAqIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsOgorICAgICAgICAqIHhtbC9Y
UGF0aE5TUmVzb2x2ZXIuaWRsOgorCiAyMDIwLTA5LTA0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYSxFTUVdIC1vdXRwdXRPYnNjdXJlZER1ZVRvSW5z
dWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uIEtWTyB3aWxsIHNldCBPdXRwdXRPYnNjdXJlZCBm
b3IgYWxsIGF0dGFjaGVkIE1lZGlhS2V5U2Vzc2lvbnMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5Q2FuY2VsRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlDYW5jZWxFdmVudC5pZGwJKHJl
dmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlDYW5jZWxFdmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwog
ICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIEFwcGxlUGF5Q2FuY2VsRXZlbnQg
OiBFdmVudCB7CiAgICAgW0NhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIEFwcGxl
UGF5U2Vzc2lvbkVycm9yIHNlc3Npb25FcnJvcjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRB
dXRob3JpemVkRXZlbnQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPUFQUExFX1BB
WSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
IF0gaW50ZXJmYWNlIEFwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudCA6IEV2ZW50IHsKICAg
ICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUgQXBwbGVQYXlQYXltZW50IHBh
eW1lbnQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQu
aWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1BUFBMRV9QQVksCi0gICAgTm9J
bnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFj
ZSBBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50IDogRXZlbnQgewogICAgIFtDYWNo
ZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBBcHBsZVBheVBheW1lbnRNZXRob2QgcGF5
bWVudE1ldGhvZDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVj
dGVkRXZlbnQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPUFQUExFX1BB
WSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
IF0gaW50ZXJmYWNlIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudCA6IEV2ZW50
IHsKICAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUgQXBwbGVQYXlQYXlt
ZW50Q29udGFjdCBzaGlwcGluZ0NvbnRhY3Q7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBw
aW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZl
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBDb25kaXRp
b25hbD1BUFBMRV9QQVksCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRF
dmVudCA6IEV2ZW50IHsKICAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUg
QXBwbGVQYXlTaGlwcGluZ01ldGhvZCBzaGlwcGluZ01ldGhvZDsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
VmFsaWRhdGVNZXJjaGFudEV2ZW50LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPUFQ
UExFX1BBWSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9i
amVjdCwKIF0gaW50ZXJmYWNlIEFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50IDogRXZlbnQg
ewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsaWRhdGlvblVSTDsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaWRsCShyZXZpc2lv
biAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICAgICBFbmFibGVkQXRSdW50aW1lPUZl
dGNoQVBJLAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAgIEludGVyZmFjZU5hbWU9
Qm9keSwKLSAgICBOb0ludGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
CiBdIGludGVyZmFjZSBGZXRjaEJvZHkgewogICAgIFtJbXBsZW1lbnRlZEFzPXJlYWRhYmxlU3Ry
ZWFtLCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBSZWFkYWJsZVN0
cmVhbT8gYm9keTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBib2R5VXNlZDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9z
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xz
L01lZGlhQ29udHJvbHNIb3N0LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNyArMzIsNyBAQCBlbnVtIERldmljZVR5cGUgewogWwogICAgIENvbmRpdGlv
bmFsPU1FRElBX0NPTlRST0xTX1NDUklQVCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAog
XSBpbnRlcmZhY2UgTWVkaWFDb250cm9sc0hvc3QgewogICAgIHNlcXVlbmNlPFRleHRUcmFjaz4g
c29ydGVkVHJhY2tMaXN0Rm9yTWVudShUZXh0VHJhY2tMaXN0IHRyYWNrTGlzdCk7CiAgICAgc2Vx
dWVuY2U8QXVkaW9UcmFjaz4gc29ydGVkVHJhY2tMaXN0Rm9yTWVudShBdWRpb1RyYWNrTGlzdCB0
cmFja0xpc3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9WaWRl
b1BsYXliYWNrUXVhbGl0eS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9WaWRlb1BsYXliYWNrUXVhbGl0eS5pZGwJKHJldmlzaW9uIDI2NjYzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvVmlkZW9QbGF5YmFja1F1YWxp
dHkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBDb25kaXRp
b25hbD1WSURFTywKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2UgVmlk
ZW9QbGF5YmFja1F1YWxpdHkgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQg
ZG91YmxlIGNyZWF0aW9uVGltZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCShyZXZpc2lvbiAyNjY2
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBAIHR5cGVkZWYgKG9iamVj
dCBvciBET01TdHJpbmcpIEFsZ29yaXRobUkKICAgICAvLyA2LjEgUGVlci10by1wZWVyIGRhdGEg
QVBJCiAgICAgLy8gRklYTUUgMTY5NjQ0OiBtaXNzaW5nIHNjdHAKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gUlRDRGF0YUNoYW5uZWwgY3JlYXRlRGF0YUNoYW5uZWwoW1RyZWF0TnVsbEFzPUVt
cHR5U3RyaW5nXSBVU1ZTdHJpbmcgbGFiZWwsIG9wdGlvbmFsIFJUQ0RhdGFDaGFubmVsSW5pdCBv
cHRpb25zKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJUQ0RhdGFDaGFubmVsIGNyZWF0ZURh
dGFDaGFubmVsKFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gVVNWU3RyaW5nIGxhYmVsLCBvcHRp
b25hbCBSVENEYXRhQ2hhbm5lbEluaXQgb3B0aW9ucyk7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFu
ZGxlciBvbmRhdGFjaGFubmVsOwogCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmlkbAko
cmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKIF0gaW50ZXJmYWNlIFF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyBsb25nIG1vdmllU2l6ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvU3Rv
cmFnZUluZm8uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
U3RvcmFnZUluZm8uaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1RVU9UQSwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlLAogXSBpbnRlcmZhY2UgU3RvcmFnZUluZm8gewpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9xdW90YS9TdG9yYWdlUXVvdGEuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcXVvdGEvU3RvcmFnZVF1b3RhLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9TdG9yYWdlUXVvdGEuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAor
ICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVFVT1RBLAogICAg
IEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBTdG9yYWdlUXVvdGEgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVz
aXMuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hTeW50aGVzaXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAg
CiBbCiAgICAgQ29uZGl0aW9uYWw9U1BFRUNIX1NZTlRIRVNJUywKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFNwZWVjaFN5
bnRoZXNpcyAgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHBlbmRpbmc7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3BlYWtpbmc7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaWRsCShy
ZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNWb2ljZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwog
IAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
LAogICAgIENvbmRpdGlvbmFsPVNQRUVDSF9TWU5USEVTSVMKIF0gaW50ZXJmYWNlIFNwZWVjaFN5
bnRoZXNpc1ZvaWNlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZvaWNlVVJJ
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2lu
ay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtU2luay5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw3ICsyNSw3IEBACiAKIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0LAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uCiBdIGludGVyZmFjZSBS
ZWFkYWJsZVN0cmVhbVNpbmsgewogICAgIHVuZGVmaW5lZCBlbnF1ZXVlKEJ1ZmZlclNvdXJjZSBj
aHVuayk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW1Tb3VyY2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3Qs
CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24K
IF0gaW50ZXJmYWNlIFJlYWRhYmxlU3RyZWFtU291cmNlIHsKICAgICBbQ3VzdG9tXSBQcm9taXNl
PHVuZGVmaW5lZD4gc3RhcnQoUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciBjb250cm9s
bGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwJKHJldmlzaW9uIDI2NjYz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogICAgIENvbmRp
dGlvbmFsPVdFQl9BVURJTywKICAgICBFbmFibGVkQnlTZXR0aW5nPVByZWZpeGVkV2ViQXVkaW8s
CiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QKKyAgICBM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdAogXSBpbnRlcmZhY2UgV2ViS2l0QXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlIDogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsKICAgICBhdHRyaWJ1dGUgQXVkaW9C
dWZmZXI/IGJ1ZmZlcjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRBdWRpb0xpc3RlbmVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvTGlzdGVuZXIuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvTGlzdGVuZXIuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VC
X0FVRElPLAogICAgIEVuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpbywKLSAgICBOb0lu
dGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNl
IFdlYktpdEF1ZGlvTGlzdGVuZXIgewogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQg
ZG9wcGxlckZhY3RvcjsgIC8vIHNhbWUgYXMgT3BlbkFMIChkZWZhdWx0IDEuMCkKICAgICBhdHRy
aWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IHNwZWVkT2ZTb3VuZDsgICAvLyBpbiBtZXRlcnMgLyBz
ZWNvbmQgKGRlZmF1bHQgMzQzLjMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1dlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5p
ZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcg
KzI3LDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgRW5hYmxlZEJ5U2V0dGlu
Zz1QcmVmaXhlZFdlYkF1ZGlvLAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIE5vSW50
ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJmYWNlIFdl
YktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgOiBBdWRpb05vZGUgewogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBBdWRpb1BhcmFtIHRocmVzaG9sZDsgLy8gaW4gRGVjaWJlbHMKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBrbmVlOyAvLyBpbiBEZWNpYmVscwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9y
Tm9kZS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0T3NjaWxsYXRvck5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsy
OCw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAogICAgIEVuYWJsZWRCeVNldHRpbmc9
V2ViQXVkaW8mUHJlZml4ZWRXZWJBdWRpbywKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAg
ICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50
ZXJmYWNlIFdlYktpdE9zY2lsbGF0b3JOb2RlIDogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsK
ICAgICBhdHRyaWJ1dGUgT3NjaWxsYXRvclR5cGUgdHlwZTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlk
bC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBs
YXRlcy9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlkbC5lcmIJKHJldmlzaW9uIDI2NjYzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvSW50ZXJuYWxTZXR0
aW5nc0dlbmVyYXRlZC5pZGwuZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAg
Ki8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRl
cmZhY2UgSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZCB7CiA8JS0gZm9yIEBzZXR0aW5nIGluIEBz
ZXR0aW5ncyBkbyAtJT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJvbGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJvbGUuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSb2xlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjUsNyArMjUsNyBAQAogCiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1BcmlhUmVmbGVjdGlv
biwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
IF0gaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlSb2xlIHsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRl
IERPTVN0cmluZz8gcm9sZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FyaWFBdHRyaWJ1dGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FyaWFBdHRyaWJ1dGVzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BcmlhQXR0cmlidXRlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDcgQEAKIAogWwogICAgIEVuYWJsZWRBdFJ1bnRpbWU9QXJpYVJlZmxlY3Rpb24s
Ci0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBd
IGludGVyZmFjZSBBcmlhQXR0cmlidXRlcyB7CiAgICAgW1JlZmxlY3Q9YXJpYV9hdG9taWNdICAg
ICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhQXRvbWljOwogICAgIFtSZWZsZWN0PWFy
aWFfYXV0b2NvbXBsZXRlXSAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJpYUF1dG9Db21wbGV0
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRhYmxlLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0YWJsZS5pZGwJKHJldmlzaW9u
IDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRhYmxlLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1X
ZWJBbmltYXRpb25zLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3QKIF0gaW50ZXJmYWNlIEFuaW1hdGFibGUgewogICAgIFtNYXlUaHJvd0V4Y2VwdGlv
biwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBXZWJBbmltYXRpb24gYW5pbWF0ZShvYmplY3Q/IGtl
eWZyYW1lcywgb3B0aW9uYWwgKHVucmVzdHJpY3RlZCBkb3VibGUgb3IgS2V5ZnJhbWVBbmltYXRp
b25PcHRpb25zKSBvcHRpb25zKTsKICAgICBzZXF1ZW5jZTxXZWJBbmltYXRpb24+IGdldEFuaW1h
dGlvbnMob3B0aW9uYWwgR2V0QW5pbWF0aW9uc09wdGlvbnMgb3B0aW9ucyk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL0lETFR5cGVzLmgJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL0lETFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBA
QCBzdHJ1Y3QgSURMRE9NU3RyaW5nIDogSURMU3RyaW5nPFN0cmluZz4gCiBzdHJ1Y3QgSURMQnl0
ZVN0cmluZyA6IElETFN0cmluZzxTdHJpbmc+IHsgfTsKIHN0cnVjdCBJRExVU1ZTdHJpbmcgOiBJ
RExTdHJpbmc8U3RyaW5nPiB7IH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExU
cmVhdE51bGxBc0VtcHR5QWRhcHRvciA6IElETFN0cmluZzxTdHJpbmc+IHsKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3IgOiBJRExT
dHJpbmc8U3RyaW5nPiB7CiAgICAgdXNpbmcgSW5uZXJUeXBlID0gVDsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCShyZXZpc2lvbiAy
NjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTMsOCArNTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaGFk
b3dSb290SXNBbHdheXNPcGVuKCkgeyBtX3NoYWRvd1Jvb3RJc0Fsd2F5c09wZW4gPSB0cnVlOyB9
CiAgICAgYm9vbCBzaGFkb3dSb290SXNBbHdheXNPcGVuKCkgY29uc3QgeyByZXR1cm4gbV9zaGFk
b3dSb290SXNBbHdheXNPcGVuOyB9CiAKLSAgICB2b2lkIGRpc2FibGVPdmVycmlkZUJ1aWx0aW5z
QmVoYXZpb3IoKSB7IG1fc2hvdWxkRGlzYWJsZU92ZXJyaWRlQnVpbHRpbnNCZWhhdmlvciA9IHRy
dWU7IH0KLSAgICBib29sIHNob3VsZERpc2FibGVPdmVycmlkZUJ1aWx0aW5zQmVoYXZpb3IoKSBj
b25zdCB7IHJldHVybiBtX3Nob3VsZERpc2FibGVPdmVycmlkZUJ1aWx0aW5zQmVoYXZpb3I7IH0K
KyAgICB2b2lkIGRpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZpb3IoKSB7IG1fc2hv
dWxkRGlzYWJsZUxlZ2FjeU92ZXJyaWRlQnVpbHRJbnNCZWhhdmlvciA9IHRydWU7IH0KKyAgICBi
b29sIHNob3VsZERpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZpb3IoKSBjb25zdCB7
IHJldHVybiBtX3Nob3VsZERpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZpb3I7IH0K
IAogICAgIERPTU9iamVjdFdyYXBwZXJNYXAmIHdyYXBwZXJzKCkgeyByZXR1cm4gbV93cmFwcGVy
czsgfQogCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgVHlwZSBtX3R5cGUgeyBUeXBl
OjpJbnRlcm5hbCB9OwogCiAgICAgYm9vbCBtX3NoYWRvd1Jvb3RJc0Fsd2F5c09wZW4geyBmYWxz
ZSB9OwotICAgIGJvb2wgbV9zaG91bGREaXNhYmxlT3ZlcnJpZGVCdWlsdGluc0JlaGF2aW9yIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkRGlzYWJsZUxlZ2FjeU92ZXJyaWRlQnVpbHRJbnNC
ZWhhdmlvciB7IGZhbHNlIH07CiB9OwogCiBET01XcmFwcGVyV29ybGQmIG5vcm1hbFdvcmxkKEpT
Qzo6Vk0mKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RP
cGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01BYnN0cmFjdE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsMTQgKzMyLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEltcGxlbWVudGF0aW9u
cyBvZiB0aGUgYWJzdHJhY3Qgb3BlcmF0aW9ucyBkZWZpbmVkIGF0CiAvLyBodHRwczovL2hleWNh
bS5naXRodWIuaW8vd2ViaWRsLyNsZWdhY3ktcGxhdGZvcm0tb2JqZWN0LWFic3RyYWN0LW9wcwog
Ci1lbnVtIGNsYXNzIE92ZXJyaWRlQnVpbHRpbnMgeworZW51bSBjbGFzcyBMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zIHsKICAgICBObywKICAgICBZZXMKIH07CiAKIC8vIEFuIGltcGxlbWVudGF0aW9u
IG9mIHRoZSAnbmFtZWQgcHJvcGVydHkgdmlzaWJpbGl0eSBhbGdvcml0aG0nCiAvLyBodHRwczov
L2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tbmFtZWQtcHJvcGVydHktdmlzaWJpbGl0eQot
dGVtcGxhdGU8T3ZlcnJpZGVCdWlsdGlucyBvdmVycmlkZUJ1aWx0aW5zLCBjbGFzcyBKU0NsYXNz
PgordGVtcGxhdGU8TGVnYWN5T3ZlcnJpZGVCdWlsdElucyBvdmVycmlkZUJ1aWx0aW5zLCBjbGFz
cyBKU0NsYXNzPgogc3RhdGljIGJvb2wgaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eShKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NsYXNzJiB0aGlzT2JqZWN0LCBKU0M6
OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgLy8gRklYTUU6IEl0IHNlZW1zIHVu
Zm9ydHVuYXRlIHRoYXQgaGF2ZSB0byBkbyB0d28gbG9va3VwcyBmb3IgdGhlIHByb3BlcnR5IG5h
bWUsCkBAIC02Myw4ICs2Myw4IEBAIHN0YXRpYyBib29sIGlzVmlzaWJsZU5hbWVkUHJvcGVydHko
SlNDOjoKICAgICBpZiAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KCZ0aGlzT2Jq
ZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAotICAgIC8vIDMuIElmIE8gaW1wbGVtZW50cyBhbiBpbnRlcmZh
Y2UgdGhhdCBoYXMgdGhlIFtPdmVycmlkZUJ1aWx0aW5zXSBleHRlbmRlZCBhdHRyaWJ1dGUsIHRo
ZW4gcmV0dXJuIHRydWUuCi0gICAgaWYgKG92ZXJyaWRlQnVpbHRpbnMgPT0gT3ZlcnJpZGVCdWls
dGluczo6WWVzKQorICAgIC8vIDMuIElmIE8gaW1wbGVtZW50cyBhbiBpbnRlcmZhY2UgdGhhdCBo
YXMgdGhlIFtMZWdhY3lPdmVycmlkZUJ1aWx0SW5zXSBleHRlbmRlZCBhdHRyaWJ1dGUsIHRoZW4g
cmV0dXJuIHRydWUuCisgICAgaWYgKG92ZXJyaWRlQnVpbHRpbnMgPT0gTGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6WWVzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIDQuIEluaXRpYWxp
emUgcHJvdG90eXBlIHRvIGJlIHRoZSB2YWx1ZSBvZiB0aGUgaW50ZXJuYWwgW1tQcm90b3R5cGVd
XSBwcm9wZXJ0eSBvZiBPLgpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgYm9vbCBpc1Zpc2libGVO
YW1lZFByb3BlcnR5KEpTQzo6CiAvLyBmb3IgdGhlIHByb3BlcnR5IG5hbWUsIHZpYSBwYXNzZWQg
aW4gZnVuY3Rvci4gVGhpcyBhbGxvd3MgdXMgdG8gYXZvaWQgdHdvIGxvb2tpbmcgdXAgdGhlCiAv
LyB0aGUgcHJvcGVydHkgbmFtZSB0d2ljZTsgb25jZSBmb3IgJ25hbWVkIHByb3BlcnR5IHZpc2li
aWxpdHkgYWxnb3JpdGhtJyBjaGVjaywgYW5kIHRoZW4KIC8vIGFnYWluIHdoZW4gdGhlIHZhbHVl
IGlzIG5lZWRlZC4KLXRlbXBsYXRlPE92ZXJyaWRlQnVpbHRpbnMgb3ZlcnJpZGVCdWlsdGlucywg
Y2xhc3MgSlNDbGFzcywgY2xhc3MgRnVuY3Rvcj4KK3RlbXBsYXRlPExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMgb3ZlcnJpZGVCdWlsdGlucywgY2xhc3MgSlNDbGFzcywgY2xhc3MgRnVuY3Rvcj4KIHN0
YXRpYyBhdXRvIGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5KEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ2xhc3MmIHRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgRnVuY3RvciYmIGl0ZW1BY2Nlc3NvcikgLT4gZGVjbHR5cGUoaXRl
bUFjY2Vzc29yKHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpCiB7CiAgICAgLy8gTk9URTogV2hp
bGUgaXQgaXMgbm90IHNwZWNpZmllZCwgYSBTeW1ib2wgY2FuIG5ldmVyIGJlIGEgJ3N1cHBvcnRl
ZCBwcm9wZXJ0eQpAQCAtMTAzLDggKzEwMyw4IEBAIHN0YXRpYyBhdXRvIGFjY2Vzc1Zpc2libGVO
YW1lZFByb3BlcnR5KEoKICAgICBpZiAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KCZ0aGlzT2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIC8vIDMuIElmIE8gaW1wbGVtZW50
cyBhbiBpbnRlcmZhY2UgdGhhdCBoYXMgdGhlIFtPdmVycmlkZUJ1aWx0aW5zXSBleHRlbmRlZCBh
dHRyaWJ1dGUsIHRoZW4gcmV0dXJuIHRydWUuCi0gICAgaWYgKG92ZXJyaWRlQnVpbHRpbnMgPT0g
T3ZlcnJpZGVCdWlsdGluczo6WWVzICYmICF3b3JsZEZvckRPTU9iamVjdCh0aGlzT2JqZWN0KS5z
aG91bGREaXNhYmxlT3ZlcnJpZGVCdWlsdGluc0JlaGF2aW9yKCkpCisgICAgLy8gMy4gSWYgTyBp
bXBsZW1lbnRzIGFuIGludGVyZmFjZSB0aGF0IGhhcyB0aGUgW0xlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgdGhlbiByZXR1cm4gdHJ1ZS4KKyAgICBpZiAob3ZlcnJp
ZGVCdWlsdGlucyA9PSBMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXMgJiYgIXdvcmxkRm9yRE9N
T2JqZWN0KHRoaXNPYmplY3QpLnNob3VsZERpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVo
YXZpb3IoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIC8vIDQuIEluaXRpYWxpemUg
cHJvdG90eXBlIHRvIGJlIHRoZSB2YWx1ZSBvZiB0aGUgaW50ZXJuYWwgW1tQcm90b3R5cGVdXSBw
cm9wZXJ0eSBvZiBPLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0TnVsbGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUNvbnZlcnROdWxsYWJsZS5oCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnROdWxsYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MCw4ICs2MCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8SUQKICAg
ICAKICAgICAvLyAxLiBJZiBUeXBlKFYpIGlzIG5vdCBPYmplY3QsIGFuZCB0aGUgY29udmVyc2lv
biB0byBhbiBJREwgdmFsdWUgaXMgYmVpbmcgcGVyZm9ybWVkCiAgICAgLy8gZHVlIHRvIFYgYmVp
bmcgYXNzaWduZWQgdG8gYW4gYXR0cmlidXRlIHdob3NlIHR5cGUgaXMgYSBudWxsYWJsZSBjYWxs
YmFjayBmdW5jdGlvbgotICAgIC8vIHRoYXQgaXMgYW5ub3RhdGVkIHdpdGggW1RyZWF0Tm9uT2Jq
ZWN0QXNOdWxsXSwgdGhlbiByZXR1cm4gdGhlIElETCBudWxsYWJsZSB0eXBlIFQ/Ci0gICAgLy8g
dmFsdWUgbnVsbC4KKyAgICAvLyB0aGF0IGlzIGFubm90YXRlZCB3aXRoIFtMZWdhY3lUcmVhdE5v
bk9iamVjdEFzTnVsbF0sIHRoZW4gcmV0dXJuIHRoZSBJREwgbnVsbGFibGUKKyAgICAvLyB0eXBl
IFQ/IHZhbHVlIG51bGwuCiAgICAgLy8KICAgICAvLyBOT1RFOiBIYW5kbGVkIGVsc2V3aGVyZS4K
ICAgICAvLwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0U3Ry
aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
dmVydFN0cmluZ3MuaAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0U3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNyArMTQ4
LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURMVVNWU3RyaQogLy8gTUFSSzog
LQogLy8gTUFSSzogU3RyaW5nIHR5cGUgYWRhcHRvcnMKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IENvbnZlcnRlcjxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxUPj4gOiBEZWZhdWx0
Q29udmVydGVyPElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPFQ+PiB7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVyPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxUPj4gOiBEZWZhdWx0Q29udmVydGVyPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxUPj4gewogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBp
ZiAodmFsdWUuaXNOdWxsKCkpCkBAIC0xNTcsNyArMTU3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IENvbnZlcnRlcjxJRAogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
ICBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8VD4+IHsKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+ICBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPFQ+PiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3Rh
dGUgPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9
IGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTY4
Niw3ICs2ODYsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3QKICAgICAgICAgCiAg
ICAgICAgIEdlbmVyYXRlTmFtZWRHZXR0ZXJMYW1iZGEoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNl
LCAkbmFtZWRHZXR0ZXJPcGVyYXRpb24sICRuYW1lZEdldHRlckZ1bmN0aW9uTmFtZSwgIkdldHRl
cklETFR5cGUiKTsKICAgICAgICAgCi0gICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW4gPSAkY29k
ZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiT3ZlcnJp
ZGVCdWlsdGlucyIpID8gIk92ZXJyaWRlQnVpbHRpbnM6OlllcyIgOiAiT3ZlcnJpZGVCdWlsdGlu
czo6Tm8iOworICAgICAgICBteSAkb3ZlcnJpZGVCdWlsdGluID0gJGNvZGVHZW5lcmF0b3ItPklu
aGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkxlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMiKSA/ICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXMiIDogIkxlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6Ok5vIjsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChhdXRvIG5h
bWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTwke292ZXJyaWRlQnVpbHRp
bn0+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0
ZXJGdW5jdG9yKSkge1xuIik7CiAgICAgICAgIAogICAgICAgICAjIE5PVEU6IEdlbmVyYXRlTmFt
ZWRHZXR0ZXIgaW1wbGVtZW50cyBzdGVwcyAyLjEgLSAyLjEwLgpAQCAtODAwLDcgKzgwMCw3IEBA
IHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgKICAgICAgICAgCiAgICAgICAg
IEdlbmVyYXRlTmFtZWRHZXR0ZXJMYW1iZGEoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkbmFt
ZWRHZXR0ZXJPcGVyYXRpb24sICRuYW1lZEdldHRlckZ1bmN0aW9uTmFtZSwgIkdldHRlcklETFR5
cGUiKTsKICAgICAgICAgCi0gICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW4gPSAkY29kZUdlbmVy
YXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiT3ZlcnJpZGVCdWls
dGlucyIpID8gIk92ZXJyaWRlQnVpbHRpbnM6OlllcyIgOiAiT3ZlcnJpZGVCdWlsdGluczo6Tm8i
OworICAgICAgICBteSAkb3ZlcnJpZGVCdWlsdGluID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRz
RXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkxlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKSA/
ICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXMiIDogIkxlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6
Ok5vIjsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChhdXRvIG5hbWVkUHJv
cGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTwke292ZXJyaWRlQnVpbHRpbn0+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5j
dG9yKSkge1xuIik7CiAgICAgICAgIAogICAgICAgICAjIE5PVEU6IEdlbmVyYXRlTmFtZWRHZXR0
ZXIgaW1wbGVtZW50cyBzdGVwcyAyLjEgLSAyLjEwLgpAQCAtOTY4LDggKzk2OCw4IEBAIHN1YiBH
ZW5lcmF0ZVB1dAogICAgICAgICAKICAgICAgICAgbXkgJGFkZGl0aW9uYWxJbmRlbnQgPSAiIjsK
ICAgICAgICAgCi0gICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW5zID0gJGNvZGVHZW5lcmF0b3It
PkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIk92ZXJyaWRlQnVpbHRpbnMi
KTsKLSAgICAgICAgaWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgeworICAgICAgICBteSAkbGVnYWN5
T3ZlcnJpZGVCdWlsdGlucyA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmli
dXRlKCRpbnRlcmZhY2UsICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIik7CisgICAgICAgIGlmICgh
JGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMpIHsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0o
KSB9O1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVj
dChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTtcbiIpOwpAQCAtOTg1LDcgKzk4NSw3IEBAIHN1YiBHZW5lcmF0ZVB1dAog
ICAgICAgICB9CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQg
LiAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwogCi0gICAgICAgIGlmICghJG92ZXJyaWRlQnVp
bHRpbnMpIHsKKyAgICAgICAgaWYgKCEkbGVnYWN5T3ZlcnJpZGVCdWlsdGlucykgewogICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICB9XG4iKTsKICAgICAgICAgfQogICAg
ICAgICAKQEAgLTEwMTQsOCArMTAxNCw4IEBAIHN1YiBHZW5lcmF0ZVB1dEJ5SW5kZXgKICAgICBt
eSAkbmFtZWRTZXR0ZXJPcGVyYXRpb24gPSBHZXROYW1lZFNldHRlck9wZXJhdGlvbigkaW50ZXJm
YWNlKTsKICAgICBteSAkaW5kZXhlZFNldHRlck9wZXJhdGlvbiA9IEdldEluZGV4ZWRTZXR0ZXJP
cGVyYXRpb24oJGludGVyZmFjZSk7CiAgICAgCi0gICAgbXkgJG92ZXJyaWRlQnVpbHRpbnMgPSAk
Y29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiT3Zl
cnJpZGVCdWlsdGlucyIpOwotICAgIG15ICRlbGxpZGVzQ2FsbHNUb0Jhc2UgPSAoJG5hbWVkU2V0
dGVyT3BlcmF0aW9uICYmICRvdmVycmlkZUJ1aWx0aW5zKSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57UGx1Z2lufSAmJiAhJG5hbWVkU2V0dGVyT3BlcmF0aW9uLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDYWxsTmFtZWRTZXR0ZXJPbmx5Rm9yU3VwcG9ydGVkUHJvcGVydGllc307
CisgICAgbXkgJGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMgPSAkY29kZUdlbmVyYXRvci0+SW5oZXJp
dHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIp
OworICAgIG15ICRlbGxpZGVzQ2FsbHNUb0Jhc2UgPSAoJG5hbWVkU2V0dGVyT3BlcmF0aW9uICYm
ICRsZWdhY3lPdmVycmlkZUJ1aWx0aW5zKSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57UGx1Z2lufSAmJiAhJG5hbWVkU2V0dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDYWxsTmFtZWRTZXR0ZXJPbmx5Rm9yU3VwcG9ydGVkUHJvcGVydGllc307CiAgICAgCiAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NsYXNzTmFtZX06OnB1dEJ5SW5kZXgoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQg
aW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wiIC4gKCEkZWxsaWRlc0NhbGxzVG9CYXNlID8gIiBz
aG91bGRUaHJvdyIgOiAiIikgLiAiKVxuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xu
Iik7CkBAIC0xMDQ3LDcgKzEwNDcsNyBAQCBzdWIgR2VuZXJhdGVQdXRCeUluZGV4CiAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb20odm0sIGluZGV4KTtcbiIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICBteSAkYWRk
aXRpb25hbEluZGVudCA9ICIiOwotICAgICAgICBpZiAoISRvdmVycmlkZUJ1aWx0aW5zKSB7Cisg
ICAgICAgIGlmICghJGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMpIHsKICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSB9O1xuIik7CiAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlz
T2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFz
T2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CkBAIC0xMDYzLDcgKzEwNjMsNyBAQCBzdWIgR2VuZXJh
dGVQdXRCeUluZGV4CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkYWRk
aXRpb25hbEluZGVudCAuICIgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgCi0gICAgICAg
IGlmICghJG92ZXJyaWRlQnVpbHRpbnMpIHsKKyAgICAgICAgaWYgKCEkbGVnYWN5T3ZlcnJpZGVC
dWlsdGlucykgewogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cblxuIik7
CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDg1LDcgKzEwODUsNyBAQCBzdWIgR2VuZXJhdGVQdXRC
eUluZGV4CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIH0KIAotc3ViIEdlbmVy
YXRlSXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZQorc3ViIEdlbmVyYXRlSXNMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnR5TmFtZQogewogICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UpID0g
QF87CiAgICAgCkBAIC0xMDkzLDcgKzEwOTMsNyBAQCBzdWIgR2VuZXJhdGVJc1VuZm9yZ2VhYmxl
UHJvcGVydHlOYW1lCiAgICAgZm9yZWFjaCBteSAkcHJvcGVydHkgKEB7JGludGVyZmFjZS0+YXR0
cmlidXRlc30sIEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKICAgICAgICAgbmV4dCBpZiAk
cHJvcGVydHktPmlzU3RhdGljOwogICAgICAgICAKLSAgICAgICAgaWYgKElzVW5mb3JnZWFibGUo
JGludGVyZmFjZSwgJHByb3BlcnR5KSkgeworICAgICAgICBpZiAoSXNMZWdhY3lVbmZvcmdlYWJs
ZSgkaW50ZXJmYWNlLCAkcHJvcGVydHkpKSB7CiAgICAgICAgICAgICBwdXNoKEB1bmZvcmdlYWJs
ZVByb3BlcnR5TmFtZXMsICRwcm9wZXJ0eS0+bmFtZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0x
MTAyLDcgKzExMDIsNyBAQCBzdWIgR2VuZXJhdGVJc1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lCiAg
ICAgCiAgICAgbXkgJGNvbmRpdGlvbiA9IGpvaW4oIiB8fCAiLCBtYXAgeyAicHJvcGVydHlOYW1l
ID09IFwiIiAuICRfIC4gIlwiIiB9IEB1bmZvcmdlYWJsZVByb3BlcnR5TmFtZXMpOwogICAgIAot
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBib29sIGlzVW5mb3JnZWFibGVQcm9wZXJ0
eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSlcbiIpOworICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgInN0YXRpYyBib29sIGlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSlcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIp
OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gJHtjb25kaXRpb259O1xuIik7
CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKQEAgLTExNjksMTkgKzExNjksMTkg
QEAgc3ViIEdlbmVyYXRlRGVmaW5lT3duUHJvcGVydHkKICAgICAgICAgCiAgICAgICAgIG15ICRh
ZGRpdGlvbmFsSW5kZW50ID0gIiI7CiAgICAgICAgIAotICAgICAgICBteSAkaGFzVW5mb3JnYWJs
ZVByb3BlcnRpZXMgPSBHZW5lcmF0ZUlzVW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoJG91dHB1dEFy
cmF5LCAkaW50ZXJmYWNlKTsKKyAgICAgICAgbXkgJGhhc1VuZm9yZ2FibGVQcm9wZXJ0aWVzID0g
R2VuZXJhdGVJc0xlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKCRvdXRwdXRBcnJheSwgJGlu
dGVyZmFjZSk7CiAgICAgICAgIGlmICgkaGFzVW5mb3JnYWJsZVByb3BlcnRpZXMpIHsKLSAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFpc1VuZm9yZ2VhYmxlUHJv
cGVydHlOYW1lKHByb3BlcnR5TmFtZSkpIHtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICBpZiAoIWlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUocHJv
cGVydHlOYW1lKSkge1xuIik7CiAgICAgICAgICAgICAkYWRkaXRpb25hbEluZGVudCAuPSAiICAg
ICI7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgICMgMS4gTGV0IGNyZWF0aW5nIGJlIHRy
dWUgaWYgUCBpcyBub3QgYSBzdXBwb3J0ZWQgcHJvcGVydHkgbmFtZSwgYW5kIGZhbHNlIG90aGVy
d2lzZS4KICAgICAgICAgIyBOT1RFOiBUaGlzIHN0ZXAgaXMgc3RyZW5ndGggcmVkdWNlZCBpbnRv
IHRoZSBvbmx5IHVzZSBvZiAnY3JlYXRpbmcnIGluIHN0ZXAgMi4yLjEKICAgICAgICAgCi0gICAg
ICAgICMgMi4gSWYgTyBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSB3aXRoIHRoZSBbT3ZlcnJpZGVC
dWlsdGluc10gZXh0ZW5kZWQgYXR0cmlidXRlIG9yIE8KKyAgICAgICAgIyAyLiBJZiBPIGltcGxl
bWVudHMgYW4gaW50ZXJmYWNlIHdpdGggdGhlIFtMZWdhY3lPdmVycmlkZUJ1aWx0SW5zXSBleHRl
bmRlZCBhdHRyaWJ1dGUgb3IgTwogICAgICAgICAjICAgIGRvZXMgbm90IGhhdmUgYW4gb3duIHBy
b3BlcnR5IG5hbWVkIFAsIHRoZW46Ci0gICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW5zID0gJGNv
ZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIk92ZXJy
aWRlQnVpbHRpbnMiKTsKLSAgICAgICAgaWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgeworICAgICAg
ICBteSAkbGVnYWN5T3ZlcnJpZGVCdWlsdGlucyA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4
dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIik7Cisg
ICAgICAgIGlmICghJGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMpIHsKICAgICAgICAgICAgICMgRklY
TUU6IElzIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QgdGhlIHJpZ2h0IGZ1bmN0aW9uIHRv
IGNhbGw/IElzIHRoZXJlIGEgZnVuY3Rpb24gdGhhdCB3aWxsCiAgICAgICAgICAgICAjICAgICAg
ICBvbmx5IGxvb2sgYXQgdGhlIGFjdHVhbCBwcm9wZXJ0aWVzLCBhbmQgbm90IGNhbGwgaW50byBv
dXIgaW1wbGVtZW50YXRpb24gb2YgdGhlCiAgICAgICAgICAgICAjICAgICAgICBbW0dldE93blBy
b3BlcnR5XV0gaG9vaz8KQEAgLTEyMTIsNyArMTIxMiw3IEBAIHN1YiBHZW5lcmF0ZURlZmluZU93
blByb3BlcnR5CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlvbmFsSW5k
ZW50IC4gIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgaWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgeworICAgICAgICBpZiAoISRsZWdhY3lPdmVy
cmlkZUJ1aWx0aW5zKSB7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlv
bmFsSW5kZW50IC4gIiAgICB9XG4iKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTEyNTIsNyAr
MTI1Miw3IEBAIHN1YiBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5Q29tbW9uCiAgICAgYXNzZXJ0KCJO
YW1lZCBwcm9wZXJ0eSBkZWxldGVycyBhcmUgbm90IGFsbG93ZWQgb24gZ2xvYmFsIG9iamVjdCBp
bnRlcmZhY2VzLiIpIGlmIElzR2xvYmFsSW50ZXJmYWNlKCRpbnRlcmZhY2UpOwogCiAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiLCAkY29uZGl0aW9uYWwp
OwotICAgIG15ICRvdmVycmlkZUJ1aWx0aW4gPSAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRl
bmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiT3ZlcnJpZGVCdWlsdGlucyIpID8gIk92ZXJyaWRl
QnVpbHRpbnM6OlllcyIgOiAiT3ZlcnJpZGVCdWlsdGluczo6Tm8iOworICAgIG15ICRvdmVycmlk
ZUJ1aWx0aW4gPSAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50
ZXJmYWNlLCAiTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpID8gIkxlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM6OlllcyIgOiAiTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8iOwogICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTwke292ZXJyaWRlQnVpbHRp
bn0+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7XG4i
KTsKIAogICAgIEdlbmVyYXRlQ3VzdG9tRWxlbWVudFJlYWN0aW9uc1N0YWNrSWZOZWVkZWQoJG91
dHB1dEFycmF5LCAkb3BlcmF0aW9uLCAiKmxleGljYWxHbG9iYWxPYmplY3QiKTsKQEAgLTE2ODYs
OSArMTY4Niw5IEBAIHN1YiBBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UKICAgICByZXR1cm4g
MSBpZiBJc0dsb2JhbEludGVyZmFjZSgkaW50ZXJmYWNlKTsKICAgICByZXR1cm4gMSBpZiAkY29k
ZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlwZSk7CiAKLSAgICAj
IFtVbmZvcmdlYWJsZV0gYXR0cmlidXRlcyBzaG91bGQgYmUgb24gdGhlIGluc3RhbmNlLgotICAg
ICMgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jVW5mb3JnZWFibGUKLSAgICByZXR1
cm4gMSBpZiBJc1VuZm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICMgW0xl
Z2FjeVVuZm9yZ2VhYmxlXSBhdHRyaWJ1dGVzIHNob3VsZCBiZSBvbiB0aGUgaW5zdGFuY2UuCisg
ICAgIyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNMZWdhY3lVbmZvcmdlYWJsZQor
ICAgIHJldHVybiAxIGlmIElzTGVnYWN5VW5mb3JnZWFibGUoJGludGVyZmFjZSwgJGF0dHJpYnV0
ZSk7CiAKICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2hlY2tTZWN1
cml0eX0pIHsKICAgICAgICAgcmV0dXJuIDAgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57RG9Ob3RDaGVja1NlY3VyaXR5fTsKQEAgLTE3NDksOCArMTc0OSw4IEBAIHN1YiBPcGVy
YXRpb25TaG91bGRCZU9uSW5zdGFuY2UKIAogICAgIHJldHVybiAxIGlmIElzR2xvYmFsSW50ZXJm
YWNlKCRpbnRlcmZhY2UpOwogCi0gICAgIyBbVW5mb3JnZWFibGVdIG9wZXJhdGlvbnMgc2hvdWxk
IGJlIG9uIHRoZSBpbnN0YW5jZS4gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jVW5m
b3JnZWFibGUKLSAgICBpZiAoSXNVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKSkg
eworICAgICMgW0xlZ2FjeVVuZm9yZ2VhYmxlXSBvcGVyYXRpb25zIHNob3VsZCBiZSBvbiB0aGUg
aW5zdGFuY2UuIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeVVuZm9yZ2Vh
YmxlCisgICAgaWYgKElzTGVnYWN5VW5mb3JnZWFibGUoJGludGVyZmFjZSwgJG9wZXJhdGlvbikp
IHsKICAgICAgICAgYXNzZXJ0KCJUaGUgYmluZGluZ3MgZ2VuZXJhdG9yIGRvZXMgbm90IHN1cHBv
cnQgcHV0dGluZyBydW50aW1lLWVuYWJsZWQgb3BlcmF0aW9ucyBvbiB0aGUgaW5zdGFuY2UgeWV0
IChleGNlcHQgZm9yIGdsb2JhbCBvYmplY3RzKTpbIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUg
LiAiOjoiIC4gJG9wZXJhdGlvbi0+bmFtZSAuICJdIikgaWYgTmVlZHNSdW50aW1lQ2hlY2soJGlu
dGVyZmFjZSwgJG9wZXJhdGlvbik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KQEAgLTE3ODgs
NyArMTc4OCw3IEBAIHN1YiBJc0FjY2VsZXJhdGVkRE9NQXR0cmlidXRlCiAgICAgcmV0dXJuIDAg
aWYgJGF0dHJpYnV0ZS0+aXNTZXRMaWtlOwogICAgIHJldHVybiAwIGlmICRjb2RlR2VuZXJhdG9y
LT5Jc0NvbnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT50eXBlKTsKICAgICByZXR1cm4gMCBpZiBJ
c0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICByZXR1cm4gMCBpZiAkYXR0
cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZW5pZW50VGhpc307CisgICAgcmV0dXJuIDAg
aWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5TGVuaWVudFRoaXN9Owog
ICAgIHJldHVybiAwIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VUeXBlKCRhdHRyaWJ1dGUt
PnR5cGUpOwogICAgIHJldHVybiAwIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0RPTUpJVH07CiAgICAgcmV0dXJuIDE7CkBAIC0xODAwLDcgKzE4MDAsNyBAQCBzdWIgR2V0SlND
QXR0cmlidXRlc0ZvckF0dHJpYnV0ZQogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKIAogICAg
IG15IEBzcGVjaWFscyA9ICgpOwotICAgIHB1c2goQHNwZWNpYWxzLCAiSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSIpIGlmIElzVW5mb3JnZWFibGUoJGludGVyZmFjZSwgJGF0dHJp
YnV0ZSk7CisgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIikgaWYgSXNMZWdhY3lVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsK
IAogICAgICMgQXMgcGVyIFdlYiBJREwgc3BlY2lmaWNhdGlvbiwgY29uc3RydWN0b3IgcHJvcGVy
dGllcyBvbiB0aGUgRUNNQVNjcmlwdCBnbG9iYWwgb2JqZWN0IHNob3VsZCBub3QgYmUgZW51bWVy
YWJsZS4KICAgICBteSAkaXNHbG9iYWxDb25zdHJ1Y3RvciA9ICRjb2RlR2VuZXJhdG9yLT5Jc0Nv
bnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT50eXBlKTsKQEAgLTI2NzAsNyArMjY3MCw3IEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBGSVhNRTogV2h5IGRvZXNuJ3QgdGhpcyBhbHNvIGlu
Y2x1ZGUgSW5kZXhlZCBHZXR0ZXJzIGFuZCBbQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90XQogICAg
IGlmICgkbmFtZWRHZXR0ZXJPcGVyYXRpb24pIHsKLSAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJPdmVycmlkZUJ1aWx0aW5z
IikpIHsKKyAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmli
dXRlKCRpbnRlcmZhY2UsICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIikpIHsKICAgICAgICAgICAg
ICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSJ9ID0gMTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpHZXRP
d25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSJ9ID0gMTsKQEAgLTI3NzUs
NyArMjc3NSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0KICAgICAKICAgICAjIENvbnN0
cnVjdG9yIG9iamVjdCBnZXR0ZXIKLSAgICB1bmxlc3MgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e05vSW50ZXJmYWNlT2JqZWN0fSkgeworICAgIHVubGVzcyAoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3R9KSB7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopO1xuIik7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXROYW1lZENv
bnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7XG4iKSBpZiAkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfTsKICAgICB9CkBAIC00
MTk1LDcgKzQxOTUsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAg
cHVzaChAaGFzaEtleXMsICRuYW1lKTsKIAogICAgICAgICAgICAgbXkgQHNwZWNpYWxzID0gKCk7
Ci0gICAgICAgICAgICBwdXNoKEBzcGVjaWFscywgIkpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUiKSBpZiBJc1VuZm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAg
ICAgICAgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIikgaWYgSXNMZWdhY3lVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAg
ICAgICAgICAgIHB1c2goQHNwZWNpYWxzLCAiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkiKSBpZiBJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVzaChAc3BlY2lh
bHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUiKSBpZiBJc0FjY2VsZXJh
dGVkRE9NQXR0cmlidXRlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVz
aChAc3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRBdHRyaWJ1dGUiKSBp
ZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9OwpAQCAtNDU0Myw3ICs0
NTQzLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ9XG5cbiIpOwogICAgIH0KIAotICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Tm9JbnRlcmZhY2VPYmplY3R9KSB7CisgICAgaWYgKCEkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lOb0ludGVyZmFjZU9iamVjdH0pIHsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3Io
Vk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOwpA
QCAtNDYzNiw3ICs0NjM2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKVxuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTtcbiIpOwogCi0gICAgICAgIGlmICgh
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm9JbnRlcmZhY2VPYmplY3R9KSB7Cisg
ICAgICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3R9KSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKCR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpO1xuIik7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBK
U1ZhbHVlIGNvbnN0cnVjdG9yID0gJHtjbGFzc05hbWV9Q29uc3RydWN0b3I6OmNyZWF0ZShKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCAke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksICpwcm90b3R5cGUt
Pmdsb2JhbE9iamVjdCgpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5
cGUoKSksICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihwcm90b3R5cGUtPmdsb2JhbE9iamVj
dCgpKSk7XG4iKTsKQEAgLTUwODUsNyArNTA4NSw3IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZUdl
dHRlclRyYW1wb2xpbmVEZWYKICAgICAKICAgICBteSBAdGVtcGxhdGVQYXJhbWV0ZXJzID0gKCk7
CiAgICAgcHVzaChAdGVtcGxhdGVQYXJhbWV0ZXJzLCAkYXR0cmlidXRlR2V0dGVyQm9keU5hbWUp
OwotICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZW5pZW50VGhpc30p
IHsKKyAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5TGVuaWVu
dFRoaXN9KSB7CiAgICAgICAgIHB1c2goQHRlbXBsYXRlUGFyYW1ldGVycywgIkNhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpSZXR1cm5FYXJseSIpCiAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3It
PklzUHJvbWlzZVR5cGUoJGF0dHJpYnV0ZS0+dHlwZSkpIHsKICAgICAgICAgcHVzaChAdGVtcGxh
dGVQYXJhbWV0ZXJzLCAiQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJlamVjdFByb21pc2UiKQpA
QCAtNTI4MCw3ICs1MjgwLDcgQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlU2V0dGVyVHJhbXBvbGlu
ZURlZgogICAgIAogICAgIG15IEB0ZW1wbGF0ZVBhcmFtZXRlcnMgPSAoKTsKICAgICBwdXNoKEB0
ZW1wbGF0ZVBhcmFtZXRlcnMsICRhdHRyaWJ1dGVTZXR0ZXJCb2R5TmFtZSk7Ci0gICAgcHVzaChA
dGVtcGxhdGVQYXJhbWV0ZXJzLCAiQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJldHVybkVhcmx5
IikgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVuaWVudFRoaXN9OworICAg
IHB1c2goQHRlbXBsYXRlUGFyYW1ldGVycywgIkNhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpSZXR1
cm5FYXJseSIpIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUxlbmll
bnRUaGlzfTsKICAgICAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJib29sICR7YXR0cmlidXRl
U2V0dGVyTmFtZX0oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKVxuIik7CiAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CkBAIC02NzIxLDcgKzY3MjEsNyBAQCBzdWIgSXNB
bm5vdGF0ZWRUeXBlCiAKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q2xhbXB9OwogICAgIHJldHVybiAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntF
bmZvcmNlUmFuZ2V9OwotICAgIHJldHVybiAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntUcmVhdE51bGxBc30gJiYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1RyZWF0TnVsbEFz
fSBlcSAiRW1wdHlTdHJpbmciOworICAgIHJldHVybiAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ307CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0F0b21TdHJpbmd9OwogICAgIHJldHVybiAxIGlmICR0eXBl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ307CiB9CkBA
IC02NzMyLDcgKzY3MzIsNyBAQCBzdWIgR2V0QW5ub3RhdGVkSURMVHlwZQogCiAgICAgcmV0dXJu
ICJJRExDbGFtcEFkYXB0b3IiIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDbGFtcH07
CiAgICAgcmV0dXJuICJJRExFbmZvcmNlUmFuZ2VBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57RW5mb3JjZVJhbmdlfTsKLSAgICByZXR1cm4gIklETFRyZWF0TnVsbEFzRW1w
dHlBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VHJlYXROdWxsQXN9ICYm
ICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntUcmVhdE51bGxBc30gZXEgIkVtcHR5U3RyaW5n
IjsKKyAgICByZXR1cm4gIklETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvciIgaWYgJHR5
cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nfTsKICAgICBy
ZXR1cm4gIklETEF0b21TdHJpbmdBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57QXRvbVN0cmluZ307CiAgICAgcmV0dXJuICJJRExSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmlu
Z0FkYXB0b3IiIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZXF1aXJlc0V4aXN0aW5n
QXRvbVN0cmluZ307CiB9CkBAIC03NjE2LDEyICs3NjE2LDEyIEBAIHN1YiBHZW5lcmF0ZUNvbnN0
cnVjdG9ySGVscGVyTWV0aG9kcwogICAgICAgICAkbGVhc3RDb25zdHJ1Y3Rvckxlbmd0aCA9IDA7
CiAgICAgfQogCi0gICAgIyBJZiB0aGUgaW50ZXJmYWNlIGhhcyBhIHBhcmVudCBpbnRlcmZhY2Ug
d2hpY2ggZG9lcyBub3QgaGF2ZSBbTm9JbnRlcmZhY2VPYmplY3RdLCB0aGVuIHVzZSBpdHMgaW50
ZXJmYWNlIG9iamVjdCBhcyBwcm90b3R5cGUsCisgICAgIyBJZiB0aGUgaW50ZXJmYWNlIGhhcyBh
IHBhcmVudCBpbnRlcmZhY2Ugd2hpY2ggZG9lcyBub3QgaGF2ZSBbTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3RdLCB0aGVuIHVzZSBpdHMgaW50ZXJmYWNlIG9iamVjdCBhcyBwcm90b3R5cGUsCiAgICAg
IyBvdGhlcndpc2UgdXNlIEZ1bmN0aW9uUHJvdG90eXBlOiBodHRwOi8vaGV5Y2FtLmdpdGh1Yi5p
by93ZWJpZGwvI2ludGVyZmFjZS1vYmplY3QKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ0ZW1w
bGF0ZTw+IEpTVmFsdWUgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OnByb3RvdHlwZUZvclN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdClc
biIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogCi0gICAgYXNzZXJ0KCJBbiBp
bnRlcmZhY2UgY2Fubm90IGluaGVyaXQgZnJvbSBhbm90aGVyIGludGVyZmFjZSB0aGF0IGlzIG1h
cmtlZCBhcyBbTm9JbnRlcmZhY2VPYmplY3RdIikgaWYgJGludGVyZmFjZS0+cGFyZW50VHlwZSAm
JiAkY29kZUdlbmVyYXRvci0+R2V0SW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzRnJvbU5hbWUo
JGludGVyZmFjZS0+cGFyZW50VHlwZS0+bmFtZSktPntOb0ludGVyZmFjZU9iamVjdH07CisgICAg
YXNzZXJ0KCJBbiBpbnRlcmZhY2UgY2Fubm90IGluaGVyaXQgZnJvbSBhbm90aGVyIGludGVyZmFj
ZSB0aGF0IGlzIG1hcmtlZCBhcyBbTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RdIikgaWYgJGludGVy
ZmFjZS0+cGFyZW50VHlwZSAmJiAkY29kZUdlbmVyYXRvci0+R2V0SW50ZXJmYWNlRXh0ZW5kZWRB
dHRyaWJ1dGVzRnJvbU5hbWUoJGludGVyZmFjZS0+cGFyZW50VHlwZS0+bmFtZSktPntMZWdhY3lO
b0ludGVyZmFjZU9iamVjdH07CiAKICAgICBpZiAoISRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3Rv
ciBhbmQgJGludGVyZmFjZS0+cGFyZW50VHlwZSkgewogICAgICAgICBteSAkcGFyZW50Q2xhc3NO
YW1lID0gIkpTIiAuICRpbnRlcmZhY2UtPnBhcmVudFR5cGUtPm5hbWU7CkBAIC03NjM4LDcgKzc2
MzgsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJ7XG4iKTsKIAogICAgICMgVGhlcmUgbXVzdCBleGlzdCBhbiBpbnRlcmZh
Y2UgcHJvdG90eXBlIG9iamVjdCBmb3IgZXZlcnkgbm9uLWNhbGxiYWNrIGludGVyZmFjZSBkZWZp
bmVkLCByZWdhcmRsZXNzCi0gICAgIyBvZiB3aGV0aGVyIHRoZSBpbnRlcmZhY2Ugd2FzIGRlY2xh
cmVkIHdpdGggdGhlIFtOb0ludGVyZmFjZU9iamVjdF0gZXh0ZW5kZWQgYXR0cmlidXRlLgorICAg
ICMgb2Ygd2hldGhlciB0aGUgaW50ZXJmYWNlIHdhcyBkZWNsYXJlZCB3aXRoIHRoZSBbTGVnYWN5
Tm9JbnRlcmZhY2VPYmplY3RdIGV4dGVuZGVkIGF0dHJpYnV0ZS4KICAgICAjIGh0dHBzOi8vaGV5
Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2ludGVyZmFjZS1wcm90b3R5cGUtb2JqZWN0CiAgICAgaWYg
KFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSgkaW50ZXJmYWNlKSkgewogICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIGdsb2JhbE9iamVjdC5nZXRQcm90b3R5cGVEaXJlY3Qodm0pLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7XG4iKTsKQEAgLTc3MzcsNyAr
NzczNyw3IEBAIHN1YiBOZWVkc0NvbnN0cnVjdG9yUHJvcGVydHkKIHsKICAgICBteSAkaW50ZXJm
YWNlID0gc2hpZnQ7CiAgICAgCi0gICAgcmV0dXJuICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntOb0ludGVyZmFjZU9iamVjdH07CisgICAgcmV0dXJuICEkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lOb0ludGVyZmFjZU9iamVjdH07CiB9CiAKIHN1YiBJc0Nv
bnN0cnVjdGFibGUKQEAgLTc3NjAsMTEgKzc3NjAsMTEgQEAgc3ViIEhlYWRlck5lZWRzUHJvdG90
eXBlRGVjbGFyYXRpb24KICAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q3VzdG9tRGVmaW5lT3duUHJvcGVydHlPblByb3RvdHlwZX07CiB9CiAKLXN1YiBJc1VuZm9y
Z2VhYmxlCitzdWIgSXNMZWdhY3lVbmZvcmdlYWJsZQogewogICAgIG15ICgkaW50ZXJmYWNlLCAk
cHJvcGVydHkpID0gQF87CiAKLSAgICByZXR1cm4gJHByb3BlcnR5LT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntVbmZvcmdlYWJsZX0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VW5m
b3JnZWFibGV9OworICAgIHJldHVybiAkcHJvcGVydHktPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xl
Z2FjeVVuZm9yZ2VhYmxlfSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdh
Y3lVbmZvcmdlYWJsZX07CiB9CiAKIHN1YiBDb21wdXRlRnVuY3Rpb25TcGVjaWFsCkBAIC03Nzcy
LDcgKzc3NzIsNyBAQCBzdWIgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbAogICAgIG15ICgkaW50ZXJm
YWNlLCAkb3BlcmF0aW9uKSA9IEBfOwogCiAgICAgbXkgQHNwZWNpYWxzID0gKCk7Ci0gICAgcHVz
aChAc3BlY2lhbHMsICgiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSIsICJKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSIpKSBpZiBJc1VuZm9yZ2VhYmxlKCRpbnRlcmZh
Y2UsICRvcGVyYXRpb24pOworICAgIHB1c2goQHNwZWNpYWxzLCAoIkpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUiLCAiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkiKSkg
aWYgSXNMZWdhY3lVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKTsKICAgICBwdXNo
KEBzcGVjaWFscywgIkpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIikgaWYgJG9wZXJh
dGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm90RW51bWVyYWJsZX07CiAgICAgaWYgKElzSlNC
dWlsdGluKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pKSB7CiAgICAgICAgIHB1c2goQHNwZWNpYWxz
LCAiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbiIpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHJldmlzaW9u
IDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRl
cy5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw2ICsxOSwxMyBAQAogICAgICAgICAiQWN0aXZl
RE9NT2JqZWN0IjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNl
Il0KICAgICAgICAgfSwKKyAgICAgICAgIkFsbG93U2hhcmVkIjogeworICAgICAgICAgICAgImNv
bnRleHRzQWxsb3dlZCI6IFsidHlwZSJdLAorICAgICAgICAgICAgInN0YW5kYXJkIjogeworICAg
ICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jQWxs
b3dTaGFyZWQiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInVuc3VwcG9ydGVkIjogdHJ1
ZQorICAgICAgICB9LAogICAgICAgICAiQXBwbGVDb3B5cmlnaHQiOiB7CiAgICAgICAgICAgICAi
Y29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiLCAiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJd
CiAgICAgICAgIH0sCkBAIC0yNiw3ICszMywxMCBAQAogICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsidHlwZSJdCiAgICAgICAgIH0sCiAgICAgICAgICJDRVJlYWN0aW9ucyI6IHsKLSAg
ICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQor
ICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJd
LAorICAgICAgICAgICAgInN0YW5kYXJkIjogeworICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvY3VzdG9tLWVsZW1lbnRzLmh0bWwj
Y2VyZWFjdGlvbnMiCisgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgICJDYWNoZWRB
dHRyaWJ1dGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUi
XQpAQCAtMjQyLDYgKzI1MiwxMyBAQAogICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9o
ZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jR2xvYmFsIgogICAgICAgICAgICAgfQogICAgICAgICB9
LAorICAgICAgICAiSFRNTENvbnN0cnVjdG9yIjogeworICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsib3BlcmF0aW9uIl0sCisgICAgICAgICAgICAic3RhbmRhcmQiOiB7CisgICAgICAg
ICAgICAgICAgInVybCI6ICJodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9k
b20uaHRtbCNodG1sY29uc3RydWN0b3IiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInVu
c3VwcG9ydGVkIjogdHJ1ZQorICAgICAgICB9LAogICAgICAgICAiSW1wbGVtZW50ZWRBcyI6IHsK
ICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSIsICJkaWN0aW9uYXJ5
IiwgImRpY3Rpb25hcnktbWVtYmVyIiwgImVudW0iLCAiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJd
LAogICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdCkBAIC0yOTYsMzAgKzMxMyw2OCBAQAogICAg
ICAgICAiTGVnYWN5Q2FsbGVyIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsi
b3BlcmF0aW9uIl0KICAgICAgICAgfSwKLSAgICAgICAgIkxlZ2FjeVVuZW51bWVyYWJsZU5hbWVk
UHJvcGVydGllcyI6IHsKKyAgICAgICAgIkxlZ2FjeUxlbmllbnRTZXR0ZXIiOiB7CisgICAgICAg
ICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwKKyAgICAgICAgICAgICJzdGFu
ZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5p
by93ZWJpZGwvI0xlZ2FjeUxlbmllbnRTZXR0ZXIiCisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgInVuc3VwcG9ydGVkIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5TGVuaWVu
dFRoaXMiOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwK
KyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBz
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeUxlbmllbnRUaGlzIgorICAgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5TmFtZXNwYWNlIjogewogICAgICAgICAg
ICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCiAgICAgICAgICAgICAic3RhbmRh
cmQiOiB7Ci0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8v
d2ViaWRsLyNMZWdhY3lVbmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMiCisgICAgICAgICAgICAg
ICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNMZWdhY3lOYW1lc3Bh
Y2UiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInVuc3VwcG9ydGVkIjogdHJ1ZQorICAg
ICAgICB9LAorICAgICAgICAiTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QiOiB7CisgICAgICAgICAg
ICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAgICAgICAgICJzdGFuZGFy
ZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93
ZWJpZGwvI0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0IgogICAgICAgICAgICAgfQogICAgICAgICB9
LAotICAgICAgICAiTGVnYWN5V2luZG93QWxpYXMiOiB7CisgICAgICAgICJMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZyI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbInR5cGUiXSwK
KyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBz
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nIgorICAg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5T3ZlcnJpZGVCdWlsdElucyI6
IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAotICAgICAg
ICAgICAgInZhbHVlcyI6IFsiKiJdLAogICAgICAgICAgICAgInN0YW5kYXJkIjogewotICAgICAg
ICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jTGVnYWN5
V2luZG93QWxpYXMiCisgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRo
dWIuaW8vd2ViaWRsLyNMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIgogICAgICAgICAgICAgfQogICAg
ICAgICB9LAotICAgICAgICAiTGVuaWVudFNldHRlciI6IHsKLSAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdLAorICAgICAgICAiTGVnYWN5VHJlYXROb25PYmplY3RB
c051bGwiOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJjYWxsYmFjay1mdW5j
dGlvbiJdLAogICAgICAgICAgICAgInN0YW5kYXJkIjogewotICAgICAgICAgICAgICAgICJ1cmwi
OiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jTGVuaWVudFNldHRlciIKKyAgICAg
ICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2Fj
eVRyZWF0Tm9uT2JqZWN0QXNOdWxsIgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJ1bnN1
cHBvcnRlZCI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgIkxlbmllbnRUaGlzIjogewotICAg
ICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIl0sCisgICAgICAgICJMZWdh
Y3lVbmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMiOiB7CisgICAgICAgICAgICAiY29udGV4dHNB
bGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAg
ICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2Fj
eVVuZW51bWVyYWJsZU5hbWVkUHJvcGVydGllcyIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgIkxlZ2FjeVVuZm9yZ2VhYmxlIjogeworICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiIsICJpbnRlcmZhY2UiXSwKKyAgICAgICAg
ICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2Ft
LmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeVVuZm9yZ2VhYmxlIgorICAgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAiTGVnYWN5V2luZG93QWxpYXMiOiB7CisgICAgICAgICAgICAiY29u
dGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioi
XSwKICAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAgICAgICAgICAgICAidXJsIjogImh0
dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlbmllbnRUaGlzIgorICAgICAgICAgICAg
ICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jTGVnYWN5V2luZG93
QWxpYXMiCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgICJNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkIjogewpAQCAtMzM5LDI2ICszOTQsMTQgQEAKICAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCiAgICAgICAgICJOZXdPYmplY3Qi
OiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiLCAib3BlcmF0
aW9uIl0sCisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJvcGVyYXRpb24iLCAiYXR0
cmlidXRlIl0sCiAgICAgICAgICAgICAic3RhbmRhcmQiOiB7CiAgICAgICAgICAgICAgICAgInVy
bCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNOZXdPYmplY3QiCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJOb0ludGVyZmFjZU9iamVjdCI6IHsKLSAgICAg
ICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAotICAgICAgICAgICAgInN0
YW5kYXJkIjogewotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHVi
LmlvL3dlYmlkbC8jTm9JbnRlcmZhY2VPYmplY3QiCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0s
CiAgICAgICAgICJOb3RFbnVtZXJhYmxlIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dl
ZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJdCiAgICAgICAgIH0sCi0gICAgICAgICJPdmVy
cmlkZUJ1aWx0aW5zIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJm
YWNlIl0sCi0gICAgICAgICAgICAic3RhbmRhcmQiOiB7Ci0gICAgICAgICAgICAgICAgInVybCI6
ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNPdmVycmlkZUJ1aWx0aW5zIgotICAg
ICAgICAgICAgfQotICAgICAgICB9LAogICAgICAgICAiT3ZlcnJpZGVJRExUeXBlIjogewogICAg
ICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsidHlwZSJdLAogICAgICAgICAgICAgInZhbHVl
cyI6IFsiKiJdCkBAIC00MjMsNyArNDY2LDcgQEAKICAgICAgICAgIlNhbWVPYmplY3QiOiB7CiAg
ICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwKICAgICAgICAgICAg
ICJzdGFuZGFyZCI6IHsKLSAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdp
dGh1Yi5pby93ZWJpZGwvI1JlcGxhY2VhYmxlIgorICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0
cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jU2FtZU9iamVjdCIKICAgICAgICAgICAgIH0s
CiAgICAgICAgICAgICAidW5zdXBwb3J0ZWQiOiB0cnVlCiAgICAgICAgIH0sCkBAIC00MzMsNiAr
NDc2LDEzIEBACiAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIu
aW8vd2ViaWRsLyNTZWN1cmVDb250ZXh0IgogICAgICAgICAgICAgfQogICAgICAgICB9LAorICAg
ICAgICAiU2VyaWFsaXphYmxlIjogeworICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsi
aW50ZXJmYWNlIl0sCisgICAgICAgICAgICAic3RhbmRhcmQiOiB7CisgICAgICAgICAgICAgICAg
InVybCI6ICJodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zdHJ1Y3R1cmVk
LWRhdGEuaHRtbCNzZXJpYWxpemFibGUiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInVu
c3VwcG9ydGVkIjogdHJ1ZQorICAgICAgICB9LAogICAgICAgICAiU2V0dGVyQ2FsbFdpdGgiOiB7
CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwKICAgICAgICAg
ICAgICJ2YWx1ZXMiOiBbIkV4ZWNTdGF0ZSIsICJTY3JpcHRFeGVjdXRpb25Db250ZXh0IiwgIkds
b2JhbE9iamVjdCIsICJBY3RpdmVXaW5kb3ciLCAiRmlyc3RXaW5kb3ciXSwKQEAgLTQ0NywyOSAr
NDk3LDE2IEBACiAgICAgICAgICJTdXBwcmVzc1RvSlNPYmplY3QiOiB7CiAgICAgICAgICAgICAi
Y29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LAotICAgICAgICAiVHJl
YXROb25PYmplY3RBc051bGwiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJj
YWxsYmFjay1mdW5jdGlvbiJdLAorICAgICAgICAiVHJhbnNmZXJhYmxlIjogeworICAgICAgICAg
ICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCiAgICAgICAgICAgICAic3RhbmRh
cmQiOiB7Ci0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8v
d2ViaWRsLyNUcmVhdE5vbk9iamVjdEFzTnVsbCIKKyAgICAgICAgICAgICAgICAidXJsIjogImh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N0cnVjdHVyZWQtZGF0YS5odG1s
I3RyYW5zZmVyYWJsZSIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAidW5zdXBwb3J0ZWQi
OiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJUcmVhdE51bGxBcyI6IHsKLSAgICAgICAgICAg
ICJjb250ZXh0c0FsbG93ZWQiOiBbInR5cGUiXSwKLSAgICAgICAgICAgICJ2YWx1ZXMiOiBbIkVt
cHR5U3RyaW5nIl0sCi0gICAgICAgICAgICAic3RhbmRhcmQiOiB7Ci0gICAgICAgICAgICAgICAg
InVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNUcmVhdE51bGxBcyIKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSwKICAgICAgICAgIlVSTCI6IHsKICAgICAgICAgICAgICJj
b250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdCiAgICAgICAgIH0sCi0gICAgICAgICJVbmZv
cmdlYWJsZSI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIs
ICJvcGVyYXRpb24iLCAiaW50ZXJmYWNlIl0sCi0gICAgICAgICAgICAic3RhbmRhcmQiOiB7Ci0g
ICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNV
bmZvcmdlYWJsZSIKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKICAgICAgICAgIlVuc2NvcGFi
bGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiLCAib3Bl
cmF0aW9uIl0sCiAgICAgICAgICAgICAic3RhbmRhcmQiOiB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAkocmV2aXNpb24g
MjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlk
bHMucGwJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw3ICsxNjQsNyBAQCBmb3JlYWNoIG15ICRpZGxG
aWxlIChzb3J0IGtleXMgJWlkbEZpbGVICiAKICAgICAjIEZvciBldmVyeSBpbnRlcmZhY2UgdGhh
dCBpcyBleHBvc2VkIGluIGEgZ2l2ZW4gRUNNQVNjcmlwdCBnbG9iYWwgZW52aXJvbm1lbnQgYW5k
OgogICAgICMgLSBpcyBhIGNhbGxiYWNrIGludGVyZmFjZSB0aGF0IGhhcyBjb25zdGFudHMgZGVj
bGFyZWQgb24gaXQsIG9yCi0gICAgIyAtIGlzIGEgbm9uLWNhbGxiYWNrIGludGVyZmFjZSB0aGF0
IGlzIG5vdCBkZWNsYXJlZCB3aXRoIHRoZSBbTm9JbnRlcmZhY2VPYmplY3RdIGV4dGVuZGVkIGF0
dHJpYnV0ZSwgYSBjb3JyZXNwb25kaW5nCisgICAgIyAtIGlzIGEgbm9uLWNhbGxiYWNrIGludGVy
ZmFjZSB0aGF0IGlzIG5vdCBkZWNsYXJlZCB3aXRoIHRoZSBbTGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3RdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgYSBjb3JyZXNwb25kaW5nCiAgICAgIyAgIHByb3BlcnR5
IG11c3QgZXhpc3Qgb24gdGhlIEVDTUFTY3JpcHQgZW52aXJvbm1lbnQncyBnbG9iYWwgb2JqZWN0
LgogICAgICMgU2VlIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2VzLWludGVyZmFj
ZXMKICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVzID0gZ2V0SW50ZXJmYWNlRXh0ZW5kZWRBdHRy
aWJ1dGVzRnJvbUlETCgkaWRsRmlsZUNvbnRlbnRzKTsKQEAgLTQ1OSw3ICs0NTksNyBAQCBzdWIg
c2hvdWxkRXhwb3NlSW50ZXJmYWNlCiB7CiAgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9IHNo
aWZ0OwogCi0gICAgcmV0dXJuICEkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vSW50ZXJmYWNlT2Jq
ZWN0In07CisgICAgcmV0dXJuICEkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkxlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0In07CiB9CiAKIHN1YiB1cGRhdGVEaWN0aW9uYXJ5RGVwZW5kZW5jaWVzCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9iYWxD
b25zdHJ1Y3RvcnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9CaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9ycy5pZGwJKHJldmlzaW9uIDI2
NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5nVGVz
dEdsb2JhbENvbnN0cnVjdG9ycy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAg
cGFydGlhbCBpbnRlcmZhY2UgVGVzdEdsb2JhbE9iamVjdCB7CiAgICAgYXR0cmlidXRlIFRlc3RJ
bnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yIFRlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZTsKICAgICBhdHRyaWJ1dGUgVGVzdEl0ZXJhYmxlQ29uc3RydWN0b3IgVGVzdEl0
ZXJhYmxlOwogICAgIGF0dHJpYnV0ZSBUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
ciBUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I7CisgICAgYXR0cmlidXRlIFRlc3RMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM7CiAgICAg
YXR0cmlidXRlIFRlc3RNYXBMaWtlQ29uc3RydWN0b3IgVGVzdE1hcExpa2U7CiAgICAgYXR0cmli
dXRlIFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciBUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOwogICAgIGF0dHJpYnV0ZSBUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvciBUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb247CkBAIC00MiwxMiArNDMsMTEgQEAgcGFy
dGlhbCBpbnRlcmZhY2UgVGVzdEdsb2JhbE9iamVjdCB7CiAgICAgYXR0cmlidXRlIFRlc3ROYW1l
ZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IgVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50
aWZpZXI7CiAgICAgYXR0cmlidXRlIFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQ29u
c3RydWN0b3IgVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI7CiAgICAgYXR0cmlidXRl
IFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyQ29uc3RydWN0b3IgVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI7Ci0gICAgYXR0cmlidXRlIFRl
c3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IgVGVzdE5hbWVkU2V0
dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM7Ci0gICAgYXR0cmlidXRlIFRlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yIFRlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllczsKLSAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yIFRlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM7CisgICAgYXR0
cmlidXRlIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0
b3IgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM7CisgICAgYXR0cmli
dXRlIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1
Y3RvciBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOworICAg
IGF0dHJpYnV0ZSBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yIFRlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOwogICAg
IFtDb25kaXRpb25hbD1Db25kaXRpb25EZXJpdmVkXSBhdHRyaWJ1dGUgVGVzdE9wZXJhdGlvbkNv
bmRpdGlvbmFsQ29uc3RydWN0b3IgVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsOwogICAgIGF0dHJp
YnV0ZSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yIFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOwotICAgIGF0dHJpYnV0ZSBUZXN0
T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yIFRlc3RPdmVycmlkZUJ1aWx0aW5zOwogICAgIGF0
dHJpYnV0ZSBUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IgVGVzdFBsdWdpbkludGVyZmFj
ZTsKICAgICBhdHRyaWJ1dGUgVGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0cnVjdG9yIFRlc3RSZWFk
T25seU1hcExpa2U7CiAgICAgYXR0cmlidXRlIFRlc3RSZWFkT25seVNldExpa2VDb25zdHJ1Y3Rv
ciBUZXN0UmVhZE9ubHlTZXRMaWtlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2ll
cy5kZXAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTAsNiArMTEwLDkgQEAgV2ViRE9NVGVzdEl0ZXJhYmxlLmg6IAogSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IuaDogCiBET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaDogCiBXZWJET01UZXN0
SlNCdWlsdGluQ29uc3RydWN0b3IuaDogCitKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmg6
IAorRE9NVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaDogCitXZWJET01UZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5oOiAKIEpTVGVzdE1hcExpa2UuaDogCiBET01UZXN0TWFwTGlrZS5oOiAK
IFdlYkRPTVRlc3RNYXBMaWtlLmg6IApAQCAtMTYxLDE1ICsxNjQsMTUgQEAgV2ViRE9NVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlci5oOiAKIERPTVRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyLmg6IAogV2ViRE9NVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXIuaDogCi1KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmg6IAotRE9N
VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaDogCi1XZWJET01UZXN0TmFtZWRT
ZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5oOiAKLUpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzLmg6IAotRE9NVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzLmg6IAotV2ViRE9NVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
Lmg6IAotSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zLmg6IAotRE9NVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGlucy5oOiAKLVdlYkRPTVRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaDogCitKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmg6IAorRE9NVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuaDogCitXZWJET01UZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5oOiAKK0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllcy5oOiAKK0RPTVRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXMuaDogCitXZWJET01UZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzLmg6IAorSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oOiAKK0RPTVRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmg6
IAorV2ViRE9NVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaDogCiBKU1Rlc3ROb2RlLmg6IAogRE9NVGVzdE5vZGUu
aDogCiBXZWJET01UZXN0Tm9kZS5oOiAKQEAgLTE4Myw5ICsxODYsNiBAQCBUZXN0T3BlcmF0aW9u
QmFzZS5pZGw6CiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmg6IAog
RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuaDogCiBXZWJET01UZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5oOiAKLUpTVGVzdE92ZXJyaWRlQnVp
bHRpbnMuaDogCi1ET01UZXN0T3ZlcnJpZGVCdWlsdGlucy5oOiAKLVdlYkRPTVRlc3RPdmVycmlk
ZUJ1aWx0aW5zLmg6IAogSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmg6IAogRE9NVGVzdFBsdWdpbklu
dGVyZmFjZS5oOiAKIFdlYkRPTVRlc3RQbHVnaW5JbnRlcmZhY2UuaDogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEluY2x1ZGVzLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEluY2x1ZGVzLmlk
bAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RJbmNsdWRlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIC8v
IGNoYW5nZXMgaW4gaXRzIG91dHB1dC4KIFsKICAgICBDb25kaXRpb25hbD1Db25kaXRpb24yMnxD
b25kaXRpb24yMywKLSAgICBOb0ludGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNl
T2JqZWN0CiBdIGludGVyZmFjZSBUZXN0SW5jbHVkZXMgewogICAgIHN0YXRpYyByZWFkb25seSBh
dHRyaWJ1dGUgbG9uZyBpbmNsdWRlc1N0YXRpY1JlYWRPbmx5QXR0cjsKICAgICBzdGF0aWMgYXR0
cmlidXRlIERPTVN0cmluZyBpbmNsdWRlc1N0YXRpY0F0dHI7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdElucy5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMKK10gaW50ZXJmYWNlIFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIHsK
KyAgICBnZXR0ZXIgTm9kZSBuYW1lZEl0ZW0oRE9NU3RyaW5nIG5hbWUpOworfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5T3ZlcnJpZGVCdWlsdElucy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgTGVnYWN5T3Zl
cnJpZGVCdWlsdElucworXSBpbnRlcmZhY2UgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMgeworICAgIHNldHRlciB1bmRlZmluZWQgKERPTVN0cmluZyBuYW1lLCBET01T
dHJpbmcgdmFsdWUpOworCisgICAgLy8gTk9URTogTmFtZWQgc2V0dGVycyByZXF1aXJlIHRoZSBw
cmVzZW5jZSBvZiBhIG5hbWVkIGdldHRlciBhcyB3ZWxsLgorICAgIGdldHRlciBET01TdHJpbmcg
KERPTVN0cmluZyBuYW1lKTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaWRsCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworaW50ZXJmYWNlIFRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgeworICAgIHNldHRlciB1bmRlZmluZWQgKERP
TVN0cmluZyBuYW1lLCBET01TdHJpbmcgdmFsdWUpOworCisgICAgLy8gTk9URTogTmFtZWQgc2V0
dGVycyByZXF1aXJlIHRoZSBwcmVzZW5jZSBvZiBhIG5hbWVkIGdldHRlciBhcyB3ZWxsLgorICAg
IGdldHRlciBET01TdHJpbmcgKERPTVN0cmluZyBuYW1lKTsKKworICAgIFtMZWdhY3lVbmZvcmdl
YWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1bmZvcmdlYWJsZUF0dHJpYnV0ZTsK
KyAgICBbTGVnYWN5VW5mb3JnZWFibGVdIHVuZGVmaW5lZCB1bmZvcmdlYWJsZU9wZXJhdGlvbigp
OworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdElucy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgTGVnYWN5T3ZlcnJpZGVCdWls
dElucworXSBpbnRlcmZhY2UgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgeworICAgIHNldHRlciB1bmRlZmluZWQg
KERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgdmFsdWUpOworCisgICAgLy8gTk9URTogTmFtZWQg
c2V0dGVycyByZXF1aXJlIHRoZSBwcmVzZW5jZSBvZiBhIG5hbWVkIGdldHRlciBhcyB3ZWxsLgor
ICAgIGdldHRlciBET01TdHJpbmcgKERPTVN0cmluZyBuYW1lKTsKKworICAgIFtMZWdhY3lVbmZv
cmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1bmZvcmdlYWJsZUF0dHJpYnV0
ZTsKKyAgICBbTGVnYWN5VW5mb3JnZWFibGVdIHVuZGVmaW5lZCB1bmZvcmdlYWJsZU9wZXJhdGlv
bigpOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmlkbAko
bm9uZXhpc3RlbnQpCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgT3ZlcnJp
ZGVCdWlsdGlucwotXSBpbnRlcmZhY2UgVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnMgewotICAgIHNldHRlciB1bmRlZmluZWQgKERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgdmFs
dWUpOwotCi0gICAgLy8gTk9URTogTmFtZWQgc2V0dGVycyByZXF1aXJlIHRoZSBwcmVzZW5jZSBv
ZiBhIG5hbWVkIGdldHRlciBhcyB3ZWxsLgotICAgIGdldHRlciBET01TdHJpbmcgKERPTVN0cmlu
ZyBuYW1lKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllcy5pZGwJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotaW50ZXJmYWNlIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyB7Ci0g
ICAgc2V0dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyB2YWx1ZSk7Ci0K
LSAgICAvLyBOT1RFOiBOYW1lZCBzZXR0ZXJzIHJlcXVpcmUgdGhlIHByZXNlbmNlIG9mIGEgbmFt
ZWQgZ2V0dGVyIGFzIHdlbGwuCi0gICAgZ2V0dGVyIERPTVN0cmluZyAoRE9NU3RyaW5nIG5hbWUp
OwotCi0gICAgW1VuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVuZm9y
Z2VhYmxlQXR0cmlidXRlOwotICAgIFtVbmZvcmdlYWJsZV0gdW5kZWZpbmVkIHVuZm9yZ2VhYmxl
T3BlcmF0aW9uKCk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnMuaWRsCShub25leGlzdGVudCkKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLVsKLSAgICBPdmVycmlkZUJ1aWx0aW5zCi1dIGludGVyZmFjZSBUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zIHsKLSAgICBzZXR0
ZXIgdW5kZWZpbmVkIChET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKLQotICAgIC8v
IE5PVEU6IE5hbWVkIHNldHRlcnMgcmVxdWlyZSB0aGUgcHJlc2VuY2Ugb2YgYSBuYW1lZCBnZXR0
ZXIgYXMgd2VsbC4KLSAgICBnZXR0ZXIgRE9NU3RyaW5nIChET01TdHJpbmcgbmFtZSk7Ci0KLSAg
ICBbVW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdW5mb3JnZWFibGVB
dHRyaWJ1dGU7Ci0gICAgW1VuZm9yZ2VhYmxlXSB1bmRlZmluZWQgdW5mb3JnZWFibGVPcGVyYXRp
b24oKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTczLDExICs3
MywxMSBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAgICAgYXR0
cmlidXRlIFVTVlN0cmluZyB1c3ZzdHJpbmdBdHRyOwogICAgIGF0dHJpYnV0ZSBUZXN0T2JqIHRl
c3RPYmpBdHRyOwogICAgIGF0dHJpYnV0ZSBUZXN0T2JqPyB0ZXN0TnVsbGFibGVPYmpBdHRyOwot
ICAgIFtMZW5pZW50VGhpc10gYXR0cmlidXRlIFRlc3RPYmogbGVuaWVudFRlc3RPYmpBdHRyOwot
ICAgIFtVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1bmZvcmdlYWJs
ZUF0dHI7Ci0gICAgYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5n
IHN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nOwotICAgIGF0dHJpYnV0ZSBbVHJl
YXROdWxsQXM9RW1wdHlTdHJpbmddIFVTVlN0cmluZyB1c3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxs
QXNFbXB0eVN0cmluZzsKLSAgICBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBC
eXRlU3RyaW5nIGJ5dGVTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZzsKKyAgICBb
TGVnYWN5TGVuaWVudFRoaXNdIGF0dHJpYnV0ZSBUZXN0T2JqIGxlbmllbnRUZXN0T2JqQXR0cjsK
KyAgICBbTGVnYWN5VW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdW5m
b3JnZWFibGVBdHRyOworICAgIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERP
TVN0cmluZyBzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZzsKKyAgICBhdHRyaWJ1
dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBVU1ZTdHJpbmcgdXN2c3RyaW5nQXR0clRyZWF0
aW5nTnVsbEFzRW1wdHlTdHJpbmc7CisgICAgYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ10gQnl0ZVN0cmluZyBieXRlU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmc7
CiAgICAgYXR0cmlidXRlIHJlY29yZDxET01TdHJpbmcsIGxvbmc+IHN0cmluZ0xvbmdSZWNvcmRB
dHRyOwogICAgIGF0dHJpYnV0ZSByZWNvcmQ8VVNWU3RyaW5nLCBsb25nPiB1c3ZzdHJpbmdMb25n
UmVjb3JkQXR0cjsKICAgICBhdHRyaWJ1dGUgcmVjb3JkPEJ5dGVTdHJpbmcsIGxvbmc+IHVzdnN0
cmluZ0xvbmdSZWNvcmRBdHRyOwpAQCAtMTQyLDggKzE0Miw4IEBAIGVudW0gVGVzdENvbmZpZGVu
Y2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBsb25nIGxvbmdNZXRob2RXaXRoQXJncyhsb25n
IGxvbmdBcmcsIERPTVN0cmluZyBzdHJBcmcsIFRlc3RPYmogb2JqQXJnKTsKICAgICBUZXN0T2Jq
IG9iak1ldGhvZCgpOwogICAgIFRlc3RPYmogb2JqTWV0aG9kV2l0aEFyZ3MobG9uZyBsb25nQXJn
LCBET01TdHJpbmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7Ci0gICAgW1VuZm9yZ2VhYmxlXSBs
b25nIHVuZm9yZ2VhYmxlTWV0aG9kKCk7Ci0gICAgdW5kZWZpbmVkIG1ldGhvZFdpdGhBcmdUcmVh
dGluZ051bGxBc0VtcHR5U3RyaW5nKFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5n
IGFyZyk7CisgICAgW0xlZ2FjeVVuZm9yZ2VhYmxlXSBsb25nIHVuZm9yZ2VhYmxlTWV0aG9kKCk7
CisgICAgdW5kZWZpbmVkIG1ldGhvZFdpdGhBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFtM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGFyZyk7CiAgICAgdW5kZWZpbmVkIG1l
dGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIoWFBhdGhOU1Jlc29sdmVyIHJlc29sdmVy
KTsKIAogICAgIC8vIE51bGxhYmxlIFN0cmluZyByZXR1cm4gdmFsdWVzLgpAQCAtMTU5LDExICsx
NTksMTEgQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogCiAgICAg
dW5kZWZpbmVkIG1ldGhvZFdpdGhVU1ZTdHJpbmdBcmcoVVNWU3RyaW5nIHN0cik7CiAgICAgdW5k
ZWZpbmVkIG1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyhVU1ZTdHJpbmc/IHN0cik7Ci0g
ICAgdW5kZWZpbmVkIG1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3Ry
aW5nKFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gVVNWU3RyaW5nIHN0cik7CisgICAgdW5kZWZp
bmVkIG1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFtMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ10gVVNWU3RyaW5nIHN0cik7CiAKICAgICB1bmRlZmluZWQgbWV0
aG9kV2l0aEJ5dGVTdHJpbmdBcmcoQnl0ZVN0cmluZyBzdHIpOwogICAgIHVuZGVmaW5lZCBtZXRo
b2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnKEJ5dGVTdHJpbmc/IHN0cik7Ci0gICAgdW5kZWZp
bmVkIG1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhbVHJl
YXROdWxsQXM9RW1wdHlTdHJpbmddIEJ5dGVTdHJpbmcgc3RyKTsKKyAgICB1bmRlZmluZWQgbWV0
aG9kV2l0aEJ5dGVTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFtMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ10gQnl0ZVN0cmluZyBzdHIpOwogCiAgICAgdW5kZWZpbmVkIHNlcmlhbGl6
ZWRWYWx1ZShTZXJpYWxpemVkU2NyaXB0VmFsdWUgc2VyaWFsaXplZEFyZyk7CiAKQEAgLTQ1MCw4
ICs0NTAsOCBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAgICAg
W0NvbmRpdGlvbmFsPUNPTkRJVElPTjIsIENvbmRpdGlvbmFsbHlSZWFkV3JpdGU9Q09ORElUSU9O
XSBhdHRyaWJ1dGUgTm9kZSBjb25kaXRpb25hbEFuZENvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRy
aWJ1dGU7CiAKICAgICBbUnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGU9VGVzdEZlYXR1cmVd
IGF0dHJpYnV0ZSBOb2RlIHJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlOwot
ICAgIFtSdW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZT1UZXN0RmVhdHVyZSwgVW5mb3JnZWFi
bGVdIGF0dHJpYnV0ZSBOb2RlIHJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRl
VW5mb3JnZWFibGU7Ci0gICAgW1J1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlPVRlc3RGZWF0
dXJlLCBQcml2YXRlSWRlbnRpZmllciwgVW5mb3JnZWFibGVdIGF0dHJpYnV0ZSBOb2RlIHJ1bnRp
bWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlVW5mb3JnZWFibGVQcml2YXRlOworICAg
IFtSdW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZT1UZXN0RmVhdHVyZSwgTGVnYWN5VW5mb3Jn
ZWFibGVdIGF0dHJpYnV0ZSBOb2RlIHJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmli
dXRlVW5mb3JnZWFibGU7CisgICAgW1J1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlPVRlc3RG
ZWF0dXJlLCBQcml2YXRlSWRlbnRpZmllciwgTGVnYWN5VW5mb3JnZWFibGVdIGF0dHJpYnV0ZSBO
b2RlIHJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlVW5mb3JnZWFibGVQcml2
YXRlOwogICAgIFtSdW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZT1UZXN0RmVhdHVyZV0gYXR0
cmlidXRlIFByb21pc2U8ZG91YmxlPiBydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJp
YnV0ZVByb21pc2U7CiAKICAgICBbRXhwb3NlZD1XaW5kb3ddIGF0dHJpYnV0ZSBsb25nIGNvbmRp
dGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBdHRyaWJ1dGU7CkBAIC00NzYsNyArNDc2LDcgQEAgdHlw
ZWRlZiBhbnkgQW55VHlwZWRlZjsKICAgICBET01TdHJpbmcgc3RyaW5nV2l0aERlZmF1bHQgPSAi
ZGVmYXVsdFN0cmluZyI7CiAgICAgRE9NU3RyaW5nIHN0cmluZ1dpdGhvdXREZWZhdWx0OwogICAg
IERPTVN0cmluZz8gbnVsbGFibGVTdHJpbmdXaXRoRGVmYXVsdCA9IG51bGw7Ci0gICAgW1RyZWF0
TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmlu
ZzsKKyAgICBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBzdHJpbmdUcmVhdE51
bGxBc0VtcHR5U3RyaW5nOwogICAgIGJvb2xlYW4gYm9vbGVhbldpdGhEZWZhdWx0ID0gZmFsc2U7
CiAgICAgYm9vbGVhbiBib29sZWFuV2l0aG91dERlZmF1bHQ7CiAgICAgc2VxdWVuY2U8RE9NU3Ry
aW5nPiBzZXF1ZW5jZU9mU3RyaW5nczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0T3BlcmF0aW9uQmFzZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPcGVyYXRpb25CYXNlLmlkbAkocmV2aXNp
b24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RP
cGVyYXRpb25CYXNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiBbCiAg
ICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9uQmFzZSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAg
ICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFRlc3RPcGVyYXRpb25CYXNl
IHsKICAgICB1bmRlZmluZWQgbm9uQ29uZGl0aW9uYWxPcGVyYXRpb24oKTsKICAgICBbQ29uZGl0
aW9uYWw9Q29uZGl0aW9uT3BlcmF0aW9uXSB1bmRlZmluZWQgY29uZGl0aW9uYWxPcGVyYXRpb24o
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T3ZlcnJp
ZGVCdWlsdGlucy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPdmVycmlkZUJ1aWx0aW5z
LmlkbAkobm9uZXhpc3RlbnQpCkBAIC0xLDYgKzAsMCBAQAotWwotICAgIE92ZXJyaWRlQnVpbHRp
bnMKLV0gaW50ZXJmYWNlIFRlc3RPdmVycmlkZUJ1aWx0aW5zCi17Ci0gICAgZ2V0dGVyIE5vZGUg
bmFtZWRJdGVtKERPTVN0cmluZyBuYW1lKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5jcHAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw3
ICsxNzIsNyBAQCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsCiAgICAg
ICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBl
IHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJv
cGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4o
KmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1
bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1l
ZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAg
YXV0byB2YWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFs
dWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0yMDEsNyArMjAxLDcgQEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdl
dDo6Z2V0T3duUHJvcGVydHlTbAogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklE
TFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZy
b21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAg
fTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVy
dHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJv
cGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
OjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdl
dHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxO
b2RlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwg
V1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0
aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmUuaCIKICNpbmNsdWRlICJKU1Rlc3RJdGVyYWJsZS5oIgogI2luY2x1ZGUgIkpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdElucy5oIgogI2luY2x1ZGUgIkpTVGVzdE1hcExpa2UuaCIKICNpbmNsdWRlICJKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oIgpAQCAtNzUsMTEgKzc2LDEwIEBA
CiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuaCIKICNpbmNsdWRlICJKU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmgiCi0jaW5jbHVkZSAiSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5oIgotI2luY2x1ZGUgIkpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmgiCi0jaW5jbHVkZSAiSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmgiCisjaW5j
bHVkZSAiSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oIgorI2lu
Y2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5o
IgorI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaCIKICNpbmNsdWRlICJKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmgiCi0jaW5jbHVkZSAiSlNUZXN0T3ZlcnJpZGVC
dWlsdGlucy5oIgogI2luY2x1ZGUgIkpTVGVzdFBsdWdpbkludGVyZmFjZS5oIgogI2luY2x1ZGUg
IkpTVGVzdFJlYWRPbmx5TWFwTGlrZS5oIgogI2luY2x1ZGUgIkpTVGVzdFJlYWRPbmx5U2V0TGlr
ZS5oIgpAQCAtMjIzLDYgKzIyMyw4IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFs
T2JqZWN0VGUKIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEl0ZXJhYmxlQ29uc3RydWN0
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RHbG9iYWxP
YmplY3RUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEdsb2JhbE9iamVjdFRlc3RNYXBMaWtlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNU
ZXN0R2xvYmFsT2JqZWN0VGVzdE1hcExpa2VDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXJDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwpAQCAtMjU5LDIwICsyNjEsMTggQEAgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZQogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVj
dG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRK
U1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0
cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJv
b2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9i
YWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0Nv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3Zl
cnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29u
c3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnND
b25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiAjaWYgRU5BQkxFKENvbmRpdGlvbkRlcml2ZWQpCiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RPcGVyYXRpb25Db25kaXRpb25hbENv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RPcGVyYXRpb25D
b25kaXRpb25hbENvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVj
dG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVycmlkZUJ1aWx0aW5z
Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0R2xv
YmFsT2JqZWN0VGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0cnVj
dG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CkBAIC0zMjAsMTMgKzMyMCwxMyBAQCB1c2luZyBKU1Rlc3RHbG9iYWxPYmplY3RD
b25zdHJ1Y3RvciA9IEpTCiAKIC8qIEhhc2ggdGFibGUgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVj
dCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY4XSA9IHsK
K3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RHbG9iYWxPYmplY3RU
YWJsZUluZGV4WzI2OV0gPSB7CiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQwLCAtMSB9LAorICAg
IHsgNDEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDAsIC0xIH0sCi0gICAgeyA4LCAy
NjMgfSwKLSAgICB7IDQ0LCAtMSB9LAorICAgIHsgOCwgMjY0IH0sCisgICAgeyA0NSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTM1
Niw3ICszNTYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAz
NCwgLTEgfSwKKyAgICB7IDM1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzcxLDEwICszNzEsMTEgQEAgc3RhdGljIGNvbnN0IHN0
cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzgsIC0xIH0sCi0gICAgeyAyMCwgMjY0IH0sCisg
ICAgeyAzOSwgLTEgfSwKKyAgICB7IDIwLCAyNjUgfSwKICAgICB7IDEwLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCisgICAgeyA0NiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTM4MywxNSArMzg0LDE0IEBAIHN0YXRpYyBjb25zdCBz
dHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAotICAgIHsgMzYsIC0xIH0sCisg
ICAgeyAzNywgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKLSAgICB7IDIyLCAyNjUgfSwKKyAgICB7IDIyLCAyNjYgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQxOSwyNCArNDE5LDI0IEBAIHN0
YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IDE5LCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ2LCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAxOCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzUsIC0xIH0sCisg
ICAgeyAzNiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyA0
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAotICAgIHsgNTAsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKICAgICB7IDI1LCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCi0gICAgeyAyLCAyNjcgfSwKLSAgICB7IDM3LCAtMSB9LAorICAgIHsgMiwg
MjY4IH0sCisgICAgeyAzOCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKQEAgLTQ1MiwxMCArNDUyLDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1
Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDMxLCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCisgICAg
eyAzMiwgLTEgfSwKKyAgICB7IDI3LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0Miwg
LTEgfSwKKyAgICB7IDQzLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LApAQCAtNDY5LDcgKzQ2OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg
Q29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAorICAgIHsgNDgsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00ODMsOCArNDgz
LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzIsIC0xIH0s
Ci0gICAgeyAyOSwgMjYyIH0sCisgICAgeyAzMywgLTEgfSwKKyAgICB7IDMwLCAyNjIgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgNSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNTA1LDcg
KzUwNSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDMzLCAy
NjYgfSwKKyAgICB7IDM0LCAyNjcgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMTcsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKQEAgLTUyOCw3ICs1MjgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0
IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1NiwgLTEgfSwKKyAgICB7IDQ3LCAyNjMgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAzLCAtMSB9LApAQCAtNTUwLDEyICs1
NTAsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDgsIDI2
MSB9LAorICAgIHsgNDksIDI2MSB9LAogICAgIHsgMTEsIDI2MCB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyA2MywgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDcsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKQEAgLTU2NSwxMCArNTY1LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1QKICAgICB7IDI2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKLSAgICB7IDI4LCAtMSB9LAorICAgIHsgMjksIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0NSwgLTEgfSwKICAgICB7
IDcsIC0xIH0sCiAgICAgeyA1MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNTc3LDEzICs1
NzcsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjcsIDI1
OSB9LAotICAgIHsgMzAsIC0xIH0sCi0gICAgeyAzOSwgLTEgfSwKLSAgICB7IDQxLCAtMSB9LAot
ICAgIHsgNDMsIC0xIH0sCi0gICAgeyA0OSwgLTEgfSwKKyAgICB7IDI4LCAyNTkgfSwKKyAgICB7
IDMxLCAtMSB9LAorICAgIHsgNDAsIC0xIH0sCisgICAgeyA0MiwgLTEgfSwKKyAgICB7IDQ0LCAt
MSB9LAorICAgIHsgNTAsIC0xIH0sCiAgICAgeyA1NSwgLTEgfSwKKyAgICB7IDU2LCAtMSB9LAog
ICAgIHsgNTcsIC0xIH0sCiAgICAgeyA1OSwgLTEgfSwKICAgICB7IDY0LCAtMSB9LApAQCAtNjMz
LDYgKzYzNCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RHbG9iYWwKICAg
ICB7ICJUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2Jh
bE9iamVjdFRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
R2xvYmFsT2JqZWN0VGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3IpIH0g
fSwKICAgICB7ICJUZXN0SXRlcmFibGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RJ
dGVyYWJsZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEl0ZXJhYmxlQ29uc3Ry
dWN0b3IpIH0gfSwKICAgICB7ICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0R2xvYmFsT2JqZWN0VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH0gfSwK
KyAgICB7ICJUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFs
T2JqZWN0VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2Jh
bE9iamVjdFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH0gfSwKICAgICB7
ICJUZXN0TWFwTGlrZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE1hcExpa2VDb25z
dHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RNYXBMaWtlQ29uc3RydWN0b3IpIH0gfSwK
ICAgICB7ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xv
YmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3Ry
dWN0b3IpIH0gfSwKQEAgLTY1MSwxNiArNjUzLDE1IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3RHbG9iYWwKICAgICB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJD
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyQ29u
c3RydWN0b3IpIH0gfSwKLSAgICB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlu
cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH0gfSwKLSAgICB7ICJUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3Ry
dWN0b3IpIH0gfSwKLSAgICB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xv
YmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2Jh
bE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH0gfSwKICNpZiBFTkFCTEUoQ29uZGl0
aW9uRGVyaXZlZCkKICAgICB7ICJUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdEdsb2JhbE9iamVjdFRlc3RPcGVyYXRpb25Db25kaXRpb25hbENvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0R2xvYmFsT2JqZWN0VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsQ29uc3RydWN0b3IpIH0gfSwK
ICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogICAg
IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RHbG9iYWxPYmplY3RUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2VDb25zdHJ1Y3RvcikgfSB9LAotICAgIHsgIlRlc3RPdmVycmlkZUJ1aWx0aW5zIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcikgfSB9
LAogICAgIHsgIlRlc3RQbHVnaW5JbnRlcmZhY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVj
dFRlc3RQbHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RQ
bHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgIlRlc3RSZWFkT25seU1hcExp
a2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RSZWFkT25seU1hcExpa2VDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RSZWFkT25seU1hcExpa2VDb25zdHJ1Y3Rvcikg
fSB9LAogICAgIHsgIlRlc3RSZWFkT25seVNldExpa2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9i
amVjdFRlc3RSZWFkT25seVNldExpa2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRl
c3RSZWFkT25seVNldExpa2VDb25zdHJ1Y3RvcikgfSB9LApAQCAtMTU2MSw2ICsxNTYyLDI5IEBA
IGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEpTQnVpbHRpbkMKICAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
Iik7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCit7CisgICAg
VU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1Zh
bHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rv
clNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFs
T2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQt
aW4gY29uc3RydWN0b3IuCisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiksIHN0cmxlbigiVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMiKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46
OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0
cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpOworfQorCiBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE1hcExpa2VDb25zdHJ1Y3RvckdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlz
T2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTE5
NzUsNzMgKzE5OTksNzMgQEAgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0
ZQogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
Q29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyIik7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCitzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQogewogICAg
IFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworICAgIHJl
dHVybiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRDb25z
dHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9i
YWxPYmplY3QoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0
R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rv
ckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RH
bG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Iik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFt
ZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvclNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3IuCi0gICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIiksIHN0cmxlbigiVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnMiKSksIHZhbHVlKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKSwg
c3RybGVuKCJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpKSwgdmFs
dWUpOwogfQogCi1ib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQorYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNl
dDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlu
c0NvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyIpOworICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2Jh
bE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0
b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
IlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIik7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQorc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQogewogICAg
IFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKKyAg
ICByZXR1cm4gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09i
amVjdC5nbG9iYWxPYmplY3QoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9i
amVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxP
YmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMiKTsKKyAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxP
YmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3Ry
dWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzIik7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNDb25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQor
c3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0g
ICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllcyIpLCBzdHJsZW4oIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllcyIpKSwgdmFsdWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzIiks
IHN0cmxlbigiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyIp
KSwgdmFsdWUpOwogfQogCi1ib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEds
b2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmpl
Y3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3N0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3Qm
IHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwot
ICAgIHJldHVybiBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKKyAgICByZXR1cm4gSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFs
dWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+
OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3Ry
dWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dElucyIpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0Nv
bnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rl
c3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCitzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvclNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3IuCi0gICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMiKSwgc3Ry
bGVuKCJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zIikpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
IlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zIiksIHN0cmxlbigiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKSksIHZhbHVlKTsKIH0K
IAotYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnMiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVz
dEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0Nv
bnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpOwogfQogCiAjaWYgRU5BQkxFKENvbmRpdGlvbkRlcml2
ZWQpCkBAIC0yMDk2LDI5ICsyMTIwLDYgQEAgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0
T3ZlcmxvYWRlZAogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6
c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlIik7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0T3ZlcnJp
ZGVCdWlsdGluc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCi17Ci0gICAgVU5VU0VEX1BB
UkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhp
c09iamVjdC5nbG9iYWxPYmplY3QoKSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2Jh
bE9iamVjdFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQotewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpz
VGVzdEdsb2JhbE9iamVjdFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JHZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJUZXN0T3ZlcnJpZGVCdWlsdGlucyIpOwot
fQotCi1zdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJyaWRl
QnVpbHRpbnNDb25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQotewot
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0gICAgcmV0dXJuIHRoaXNPYmplY3Qu
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oIlRlc3RPdmVycmlkZUJ1aWx0aW5zIiksIHN0cmxlbigiVGVzdE92ZXJy
aWRlQnVpbHRpbnMiKSksIHZhbHVlKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RU
ZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKLXsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46
OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9y
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJU
ZXN0T3ZlcnJpZGVCdWlsdGlucyIpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
R2xvYmFsT2JqZWN0VGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmpl
Y3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdElucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNTEgQEAKKy8q
CisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0
LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpT
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaCIKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgorI2luY2x1ZGUgIkpTRE9NQWJzdHJh
Y3RPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRJ
bnRlcmZhY2UuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCisjaW5jbHVkZSAi
SlNET01FeGNlcHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0Lmgi
CisjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNo
ZS5oIgorI2luY2x1ZGUgIkpTTm9kZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KKyNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CisKKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNw
YWNlIEpTQzsKKworLy8gRnVuY3Rpb25zCisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0
ZW0oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CisKKy8vIEF0dHJpYnV0
ZXMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29u
c3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0
cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKKworY2xhc3MgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3Rv
dHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAg
IHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIEpTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICB7CisgICAgICAgIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dEluc1Byb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgcHRyLT5maW5pc2hD
cmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgREVDTEFSRV9J
TkZPOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNz
PgorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
KyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlND
OjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlw
ZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQor
Citwcml2YXRlOgorICAgIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQorICAgIHsK
KyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CitTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
UHJvdG90eXBlLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpCYXNlKTsK
KwordXNpbmcgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yID0gSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz47
CisKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0odm0pOworICAgIHJl
dHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKK30KKwordGVtcGxhdGU8PiB2
b2lkIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKK30KKwor
dGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0Nv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSB9OworCisvKiBIYXNoIHRhYmxlIGZvciBw
cm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJjb25zdHJ1
Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAibmFt
ZWRJdGVtIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1
bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlRnVuY3Rpb25OYW1l
ZEl0ZW0pLCAoaW50cHRyX3QpICgxKSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUpIH07CisK
K3ZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZWlmeVN0
YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmluZm8oKSwg
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7
CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK2NvbnN0
IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpzX2luZm8gPSB7ICJUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucykgfTsKKwor
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwg
UmVmPFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpCisgICAgOiBKU0RPTVdyYXBw
ZXI8VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGltcGwpKQoreworfQorCit2b2lkIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIHN0YXRpY19hc3NlcnQo
IXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0
XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9i
amVjdC4iKTsKKworfQorCitKU09iamVjdCogSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6
Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
K3sKKyAgICByZXR1cm4gSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6Y3Jl
YXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmpl
Y3RQcm90b3R5cGUoKSkpOworfQorCitKU09iamVjdCogSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dEluczo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
K3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpTVGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworfQorCit2b2lkIEpTVGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCit7CisgICAgSlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdElucyogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU1Rlc3RMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zOjp+SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucygpOworfQorCitib29s
IEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIHVz
aW5nIEdldHRlcklETFR5cGUgPSBJRExJbnRlcmZhY2U8Tm9kZT47CisgICAgYXV0byBnZXR0ZXJG
dW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRp
b25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKKyAgICAg
ICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlO
YW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgICAgICBpZiAoIUdldHRlcklETFR5
cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCisgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0
dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZh
bHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICB9OworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQ
cm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXM+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgICAgICBh
dXRvIHZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1
ZSgpKSk7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwor
fQorCitib29sIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgVk0mIHZt
ID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihvYmplY3QpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKKyAgICB1c2luZyBHZXR0
ZXJJRExUeXBlID0gSURMSW50ZXJmYWNlPE5vZGU+OworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9
IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlw
ZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7CisgICAgICAgIGF1dG8g
cmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRv
bVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051
bGxWYWx1ZShyZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5
cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShyZXN1bHQpIH07CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfTsK
KyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8
TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6WWVzPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICAgICAgYXV0byB2YWx1
ZSA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNP
YmplY3QtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwor
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIGluZGV4LCBzbG90KTsKK30KKwordm9p
ZCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit7CisgICAg
Vk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihvYmplY3QpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMob2JqZWN0LCBpbmZvKCkpOworICAgIGZvciAo
YXV0byYgcHJvcGVydHlOYW1lIDogdGhpc09iamVjdC0+d3JhcHBlZCgpLnN1cHBvcnRlZFByb3Bl
cnR5TmFtZXMoKSkKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcHJvcGVydHlOYW1lKSk7CisgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKK30K
KwordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyogSURMT3Bl
cmF0aW9uPEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4oSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAg
IGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRDb25zdHJ1Y3RvcihKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7
Cit9CisKK2Jvb2wgc2V0SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7CisgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3Ry
dWN0b3IKKyAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Cit9CisKK3N0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0ZW1Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6Q2xhc3NQYXJhbWV0ZXIg
Y2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgaWYgKFVOTElL
RUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgIEVuc3VyZVN0aWxsQWxp
dmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAg
IGF1dG8gbmFtZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
YXJndW1lbnQwLnZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5uYW1lZEl0ZW0oV1RGTW92ZShu
YW1lKSkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OjpjYWxsPGpzVGVz
dExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbUJvZHk+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibmFtZWRJdGVtIik7Cit9CisKK0pTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnN1YnNwYWNlRm9ySW1w
bChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50
RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmdldCgpKQorICAgICAgICByZXR1cm4gc3Bh
Y2U7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiB8fCAhSlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6bmVlZHNEZXN0cnVjdGlvbik7CisgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CisgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmdldCgpOworSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0
cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNl
cygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1Nf
RU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCit2b2lkIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikK
K3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMqPihjZWxsKTsKKyAgICBhbmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxs
LCAmdGhpc09iamVjdC0+d3JhcHBlZCgpKTsKKyAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQorICAgICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwg
InVybCAiICsgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJp
bmcoKSk7CisgICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOworfQorCitib29s
IEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRv
ciYgdmlzaXRvciwgY29uc3QgY2hhcioqIHJlYXNvbikKK3sKKyAgICBVTlVTRURfUEFSQU0oaGFu
ZGxlKTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAgVU5VU0VEX1BBUkFNKHJlYXNv
bik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZv
aWQqIGNvbnRleHQpCit7CisgICAgYXV0byoganNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9
IHN0YXRpY19jYXN0PEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihoYW5kbGUuc2xvdCgp
LT5hc0NlbGwoKSk7CisgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldv
cmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zLT53cmFwcGVkKCksIGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMp
OworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikK
KyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lk
ICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNAV2Vi
Q29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pU
Vk43V2ViQ29yZTI2VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNFW107IH0KKyNlbmRpZgorI2Vu
ZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM+JiYgaW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAg
ICBjb25zdCB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBs
LnB0cigpKTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2lu
dGVyID0gX19pZGVudGlmaWVyKCI/P183VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNAV2ViQ29y
ZUBANkJAIik7CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRW
TjdXZWJDb3JlMjZUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0VbMl07CisjZW5kaWYKKworICAg
IC8vIElmIHRoaXMgZmFpbHMgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgZG9lcyBub3QgaGF2
ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9u
TGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cz46OnZhbHVlLCAiVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgaXMgbm90IHBvbHltb3JwaGlj
Iik7CisKKyAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBh
IHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgaGFzIHN1YmNs
YXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1
aXJlIFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcg
aGFyZGVuaW5nCisgICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRy
aWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJU
KGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgor
ICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPihnbG9i
YWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyYgaW1wbCkKK3sKKyAgICByZXR1
cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwpOworfQorCitU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyogSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6
dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1
dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMq
Pih2bSwgdmFsdWUpKQorICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
V2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlRlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyA6
IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zPjsKKyAgICBzdGF0aWMgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyogY3JlYXRlKEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFJlZjxUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4mJiBpbXBsKQorICAgIHsKKyAgICAgICAg
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPihnbG9iYWxPYmplY3QtPnZt
KCkuaGVhcCkpIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMoc3RydWN0dXJlLCAqZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9i
YWxPYmplY3QtPnZtKCkpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2Jq
ZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNE
T01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMq
IHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRp
YyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBK
U0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlND
ZWxsKik7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6TWF5
SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUg
Z2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBp
ZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvcklt
cGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJ
bXBsKEpTQzo6Vk0mIHZtKTsKKyAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBK
U0M6OkhlYXBBbmFseXplciYpOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJv
cGVydHlTbG90SXNJbXB1cmUgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0FueUZvcm1PZkdldFBy
b3BlcnR5TmFtZXMgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKK3Byb3RlY3Rl
ZDoKKyAgICBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKEpTQzo6U3RydWN0dXJlKiwgSlNE
T01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+JiYpOworCisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCitjbGFzcyBKU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewor
cHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJiwg
Y29uc3QgY2hhcioqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Cit9OworCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxl
T3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdElucyopCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTVGVzdExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnNPd25lcj4gb3duZXI7CisgICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30KKwor
aW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIHdyYXBw
YWJsZU9iamVjdCkKK3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OworfQorCitKU0M6OkpT
VmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBpbXBsKSB7IHJldHVybiBp
bXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpT
Qzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dElucz4mJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVmUHRyPFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpIHsgcmV0
dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KKwordGVtcGxh
dGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3RMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluczsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMqOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRp
Zmllci5jcHAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNyArMTcxLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklE
TFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZy
b21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAg
fTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVy
dHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJv
cGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
OjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdl
dHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAg
ICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDAp
LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjAwLDcgKzIwMCw3IEBAIGJvb2wg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGkKICAgICAgICAgICAgIHJldHVybiB0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBl
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zp
c2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBp
ZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVy
dHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDcgKzE3MSw3IEBAIGJvb2wg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmcKICAgICAgICAgICAgIHJldHVybiB0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBl
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zp
c2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBp
ZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVy
dHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIwMCw3
ICsyMDAsNyBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nCiAgICAg
ICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBl
IHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJv
cGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4o
KmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1
bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1l
ZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAg
YXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RG
TW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw3ICsxODAsNyBA
QCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVuCiAgICAgICAgICAgICBy
ZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVy
SURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBh
Y2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxH
bG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7
CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5
PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1
ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1l
ZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0yMDksNyArMjA5LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bgogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQp
IH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBu
YW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGlu
czo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBn
ZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9i
YWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAg
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjIsNyArMTYyLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXI6OmdldAogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5
cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsK
LSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8
T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpO
bz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRl
ckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTE4Myw3ICsxODMsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmll
cjo6Z2V0CiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJl
c3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChh
dXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1
aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjA1
LDcgKzIwNSw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpkZWwKIHsK
ICAgICBhdXRvJiB0aGlzT2JqZWN0ID0gKmpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXIqPihjZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0g
ICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CisgICAgaWYgKGlz
VmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIHJldHVy
biBpbXBsLmRlbGV0ZU5hbWVkUHJvcGVydHkocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlO
YW1lKSk7CiAgICAgfQogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTIxNyw3ICsyMTcs
NyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVsCiAgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tKHZtLCBpbmRleCk7Ci0gICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVC
dWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpKSB7CisgICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWls
dEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUp
KSB7CiAgICAgICAgIHJldHVybiBpbXBsLmRlbGV0ZU5hbWVkUHJvcGVydHkocHJvcGVydHlOYW1l
VG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgfQogICAgIHJldHVybiBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIGluZGV4KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uLmNwcAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb24KICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBl
OjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVs
bGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0g
ICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92
ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5
ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJG
dW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAg
ICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbgogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVu
dGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1
bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0
byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWls
dGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
LCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NW
aXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxH
bG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7
CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0
VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIwNSw3
ICsyMDUsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uCiB7CiAg
ICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdF
eGNlcHRpb24qPihjZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
Ci0gICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CisgICAgaWYg
KGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGF1
dG8gcmVzdWx0ID0gaW1wbC5kZWxldGVOYW1lZFByb3BlcnR5KHByb3BlcnR5TmFtZVRvU3RyaW5n
KHByb3BlcnR5TmFtZSkpOwogICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAg
ICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwpAQCAtMjI0LDcgKzIyNCw3IEBAIGJvb2wgSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24KICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsK
LSAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAo
aXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgYXV0
byByZXN1bHQgPSBpbXBsLmRlbGV0ZU5hbWVkUHJvcGVydHkocHJvcGVydHlOYW1lVG9TdHJpbmco
cHJvcGVydHlOYW1lKSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAg
ICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsNyBAQCBib29sIEpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpnCiAgICAgICAgICAgICByZXR1cm4gdHlw
ZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6
ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYg
KGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5
LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTg5LDcgKzE4OSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXI6OmcKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0
ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFs
dWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
ICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1l
ZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWls
dEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
LCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJp
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkp
OwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0yMTEsNyArMjExLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllcjo6ZAogewogICAgIGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PEpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKj4oY2VsbCk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwotICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRl
QnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lKSkgeworICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
KSkgewogICAgICAgICBpbXBsLm5hbWVkRGVsZXRlcihwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjI0LDcgKzIyNCw3
IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmQKICAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b20odm0sIGluZGV4KTsKLSAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1
aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFt
ZSkpIHsKKyAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkp
IHsKICAgICAgICAgaW1wbC5uYW1lZERlbGV0ZXIocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVy
dHlOYW1lKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNp
b24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTcxLDcgKzE3MSw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIK
ICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlv
blR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9
OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFt
ZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6
Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0
dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJs
ZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAg
ICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVl
KHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDAsNyArMjAw
LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcgogICAgICAgICAg
ICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdl
dHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5
ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9y
KSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9w
ZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0
aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8g
dmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUo
bmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVj
dCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIyNiw3ICsyMjYsNyBAQCBib29s
IEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyCiAgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGlmIChhdXRvIGluZGV4ID0gcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gIWltcGwuaXNTdXBwb3J0ZWRQcm9wZXJ0eUluZGV4
KGluZGV4LnZhbHVlKCkpOwotICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRl
QnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lKSkgeworICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
KSkgewogICAgICAgICByZXR1cm4gaW1wbC5kZWxldGVOYW1lZFByb3BlcnR5KHByb3BlcnR5TmFt
ZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIH0KICAgICByZXR1cm4gSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCShyZXZp
c2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsx
NjIsNyBAQCBib29sIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6OmdldE93blByCiAgICAgICAg
ICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsg
R2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0
b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0
byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92
ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTgzLDcgKzE4Myw3IEBAIGJv
b2wgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6Z2V0T3duUHIKICAgICAgICAgICAgIHJldHVy
biB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExU
eXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAg
ICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVn
YWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0g
dG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJv
cGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVl
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmll
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCBib29sIEpTVGVzdE5hbWVk
R2V0dGVyTm9JZGVudGlmaWVyOjpnZXRPCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0
dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZh
bHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
ICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQ
cm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFt
ZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFt
ZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3Ry
aW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkp
KTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwpAQCAtMTgzLDcgKzE4Myw3IEBAIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJOb0lk
ZW50aWZpZXI6OmdldE8KICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBl
OjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVs
bGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0g
ICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92
ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5
ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJG
dW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAg
ICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIu
Y3BwCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2OCw3ICsxNjgsNyBAQCBib29sIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZp
ZXI6OmdlCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJl
c3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChh
dXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1
aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTg5
LDcgKzE4OSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2UKICAg
ICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5
cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9Owog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQ
cm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5v
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVy
RnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5h
bWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAg
ICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2NjYzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCBi
b29sIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZXRPCiAgICAgICAgICAgICByZXR1
cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURM
VHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nl
c3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9i
YWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Cisg
ICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9
IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFBy
b3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
ODMsNyArMTgzLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6Z2V0Twog
ICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9u
VHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1l
ZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6
Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0
ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxl
TmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxP
YmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNyArMTYyLDcgQEAgYm9vbCBKU1Rlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdl
dHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RW
YWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVk
UHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhp
c09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5h
bWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgp
KSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTgzLDcgKzE4Myw3IEBA
IGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjoKICAgICAgICAgICAgIHJl
dHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJ
RExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFj
Y2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsK
KyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8
TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVl
ID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVk
UHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJ
KHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTY4LDcgKzE2OCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6
Z2UKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRh
dGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0
KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8g
bmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRp
bnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
Z2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlz
aWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewog
ICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTE4OSw3ICsxODksNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aElkZW50aWZpZXI6OmdlCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURM
VHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJv
bU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9
OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0
eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9w
ZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6
Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0
dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAg
ICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCks
IHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyNjY2Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw3ICsxODAs
NyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAgICAgICAgICAg
ICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0
dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkg
PSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3Ip
KSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2
YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShu
YW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0yMDksNyArMjA5LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyOgogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVu
dGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1
bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0
byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWls
dGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
LCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NW
aXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxH
bG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7
CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0
VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAkocmV2aXNpb24gMjY2
NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODAsNyArMTgwLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQp
IH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBu
YW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGlu
czo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBn
ZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9i
YWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAg
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtMjA5LDcgKzIwOSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckEKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExU
eXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9t
TnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07
Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5
PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3Qs
IHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3Bl
cnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6
Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0
ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAg
ICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwg
dmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDU3IEBACisvKgorICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZp
bGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9E
SUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaCIKKworI2luY2x1ZGUgIkFjdGl2ZURP
TU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgorI2luY2x1ZGUgIkpTRE9N
QWJzdHJhY3RPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKKyNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZS5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKKyNpbmNsdWRlICJK
U0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCisjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKKyNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KKyNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFt
ZXNwYWNlIEpTQzsKKworLy8gRnVuY3Rpb25zCisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNJ
bnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CisKKy8vIEF0dHJpYnV0ZXMKKworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1
Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1VuZm9yZ2VhYmxlQXR0
cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7CisKK2NsYXNzIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc1Byb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmpl
Y3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7Cisg
ICAgc3RhdGljIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZSh2bSwgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6
OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVj
dCh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTQzo6Vk0mKTsKK307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUsIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZTo6
QmFzZSk7CisKK3VzaW5nIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0NvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPjsKKworLyogSGFz
aCB0YWJsZSAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVGFibGVJbmRleFs0XSA9
IHsKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgMCwgLTEgfSwKK307CisKKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1RhYmxlVmFsdWVzW10gPQor
eworICAgIHsgInVuZm9yZ2VhYmxlQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNVbmZvcmdlYWJsZUF0dHJpYnV0ZSks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDAp
IH0gfSwKKyAgICB7ICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlv
blVuZm9yZ2VhYmxlT3BlcmF0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAorfTsKKworc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNUYWJsZSA9IHsgMiwgMywgdHJ1ZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjppbmZvKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc1RhYmxlVmFsdWVzLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNUYWJsZUluZGV4IH07Cit0ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0odm0pOworICAgIHJl
dHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKK30KKwordGVtcGxhdGU8PiB2
b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCit7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6
cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKK30K
KwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKSB9OworCisvKiBIYXNoIHRhYmxl
IGZvciBwcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZVRhYmxlVmFs
dWVzW10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKSB9IH0sCit9
OworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNQcm90b3R5cGUpIH07CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJv
cGVydGllcyh2bSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzOjppbmZvKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc1Byb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CisgICAgSlNDX1RPX1NUUklOR19UQUdf
V0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OnNfaW5mbyA9IHsgIlRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMiLCAmQmFzZTo6c19pbmZvLCAm
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVGFibGUsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzKSB9OworCitKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXM6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllcyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXM+JiYgaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShp
bXBsKSkKK3sKK30KKwordm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXM6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIHN0
YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+Ojp2YWx1ZSwgIkludGVyZmFjZSBp
cyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0
aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIpOworCit9CisKK0pTT2JqZWN0
KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmNyZWF0
ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgcmV0dXJuIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c1Byb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Cit9CisK
K0pTT2JqZWN0KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXM6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7
CisgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXM+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6Z2V0Q29uc3Ry
dWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKK30KKwordm9pZCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwp
Cit7CisgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzKj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjp+SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKCk7Cit9CisKK2Jvb2wgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllcyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJp
bmc7CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8g
cHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1l
bnRhdGlvblR5cGU+IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAg
ICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCisgICAgICAgICAg
ICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0
dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9OworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkg
PSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4o
KmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1
bmN0b3IpKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAg
IHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1
ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3Qs
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJv
cGVydHlTbG90JiBzbG90KQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqPihvYmplY3QpOworICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKKyAgICB1c2luZyBHZXR0ZXJJRExU
eXBlID0gSURMRE9NU3RyaW5nOworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0
aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVy
SURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gdGhp
c09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKKyAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1
bHQpKQorICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVu
dGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1
bHQpIH07CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfTsKKyAgICBpZiAoYXV0
byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVy
dHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFs
dWUoKSkpOworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPigwKSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0
dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgaW5kZXgsIHNsb3QpOworfQorCit2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQoreworICAgIFZN
JiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMqPihvYmplY3QpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMob2JqZWN0LCBp
bmZvKCkpOworICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1lIDogdGhpc09iamVjdC0+d3JhcHBl
ZCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSkKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQo
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcHJvcGVydHlOYW1lKSk7CisgICAgSlNPYmplY3Q6
OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWVzLCBtb2RlKTsKK30KKworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXM6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFByb3BlcnR5U2xvdCkKK3sKKyAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllcyo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKKworICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKKyAgICAgICAg
UHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9OworICAgICAg
ICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgYm9vbCBmb3VuZCA9IHByb3Rv
dHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBzbG90LmRp
c2FsbG93Vk1FbnRyeS5yZXNldCgpOworICAgICAgICBpZiAoIWZvdW5kKSB7CisgICAgICAgICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKKyAgICAgICAgICAgIHRoaXNP
YmplY3QtPndyYXBwZWQoKS5zZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVy
dHlOYW1lKSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0eVNs
b3QpOworfQorCitib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllczo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRU
aHJvdykKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwor
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0gfTsK
KyAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2
bSk7CisgICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHBy
b3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOworICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgaWYgKCFm
b3VuZCkgeworICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CisgICAgICAgIHRo
aXNPYmplY3QtPndyYXBwZWQoKS5zZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJv
cGVydHlOYW1lKSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7Cit9CisKK2Jvb2wgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBw
cm9wZXJ0eURlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCit7CisgICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMqPihvYmplY3QpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKKworICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKK3N0YXRp
YyBib29sIGlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKK3sKKyAgICByZXR1cm4gcHJvcGVydHlOYW1lID09ICJ1bmZvcmdlYWJsZUF0dHJp
YnV0ZSIgfHwgcHJvcGVydHlOYW1lID09ICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiI7Cit9CisKKyAg
ICAgICAgaWYgKCFpc0xlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkp
IHsKKyAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3Qt
PnZtKCkgfTsKKyAgICAgICAgICAgIGJvb2wgZm91bmQgPSBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CisgICAgICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOworICAgICAgICAg
ICAgaWYgKCFmb3VuZCkgeworICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9y
LmlzRGF0YURlc2NyaXB0b3IoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICAgICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlEZXNjcmlwdG9yLnZhbHVlKCkpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+d3Jh
cHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgbmV3
UHJvcGVydHlEZXNjcmlwdG9yID0gcHJvcGVydHlEZXNjcmlwdG9yOworICAgIG5ld1Byb3BlcnR5
RGVzY3JpcHRvci5zZXRDb25maWd1cmFibGUodHJ1ZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0Ojpk
ZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgbmV3UHJvcGVydHlEZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7Cit9CisKK3RlbXBsYXRlPD4g
aW5saW5lIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyog
SURMQXR0cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllcz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqPihKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworfQorCit0ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMqIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUmIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqPihKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKK30KKworRW5jb2Rl
ZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUqPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghcHJvdG90
eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmdldENvbnN0cnVjdG9yKEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsK
K30KKworYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7Cisg
ICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAg
aWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICByZXR1cm4g
cHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNVbmZvcmdl
YWJsZUF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzJiB0aGlzT2Jq
ZWN0KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwudW5mb3JnZWFibGVBdHRyaWJ1dGUoKSkpKTsKK30KKworRW5jb2RlZEpTVmFs
dWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVW5mb3Jn
ZWFibGVBdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPjo6
Z2V0PGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1VuZm9y
Z2VhYmxlQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidW5mb3JnZWFibGVBdHRyaWJ1dGUiKTsK
K30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJs
ZU9wZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz46OkNsYXNzUGFyYW1ldGVy
IGNhc3RlZFRoaXMpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1l
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOworICAgIGltcGwudW5mb3JnZWFibGVPcGVyYXRpb24oKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXM+OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidW5mb3JnZWFibGVPcGVyYXRpb24iKTsKK30KKworSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50
RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAg
IGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+IHx8ICFKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6Om5lZWRzRGVzdHJ1Y3Rp
b24pOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOwor
ICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKTsKKyAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcy5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
KyAgICBpZiAoJkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
czo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29u
c3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFw
cGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisg
ICAgcmV0dXJuIHNwYWNlOworfQorCit2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllczo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6
ZXImIGFuYWx5emVyKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKj4oY2VsbCk7CisgICAgYW5h
bHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQo
KSk7CisgICAgaWYgKHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAg
ICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgIEJhc2U6OmFuYWx5
emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKK30KKworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYg
dmlzaXRvciwgY29uc3QgY2hhcioqIHJlYXNvbikKK3sKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxl
KTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAgVU5VU0VEX1BBUkFNKHJlYXNvbik7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKK3sKKyAgICBhdXRvKiBqc1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqPihoYW5kbGUuc2xvdCgp
LT5hc0NlbGwoKSk7CisgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldv
cmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMtPndyYXBwZWQoKSwganNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKTsKK30KKworI2lmIEVOQUJM
RShCSU5ESU5HX0lOVEVHUklUWSkKKyNpZiBQTEFURk9STShXSU4pCisjcHJhZ21hIHdhcm5pbmco
ZGlzYWJsZTogNDQ4MykKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRp
ZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNA
V2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCog
X1pUVk43V2ViQ29yZTQ2VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0VbXTsgfQorI2VuZGlmCisjZW5kaWYKKworSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0
ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPiYmIGlt
cGwpCit7CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisgICAgY29uc3Qgdm9pZCog
YWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7CisjaWYg
UExBVEZPUk0oV0lOKQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRp
ZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNA
V2ViQ29yZUBANkJAIik7CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9
ICZfWlRWTjdXZWJDb3JlNDZUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzRVsyXTsKKyNlbmRpZgorCisgICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzIGRvZXMgbm90IGhhdmUgYSB2dGFibGUs
IHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKKyAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
IGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KKyAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllcz46OnZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllcyBpcyBub3QgcG9seW1vcnBoaWMiKTsKKworICAgIC8vIElmIHlvdSBoaXQgdGhp
cyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgorICAg
IC8vIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgaGFzIHN1
YmNsYXNzZXMuIElmIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXMgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1
cnJlbnRseSByZXF1aXJlIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMgeW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKKyAgICAvLyBieSBhZGRp
bmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElE
TCBkZWZpbml0aW9uCisgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBl
eHBlY3RlZFZUYWJsZVBvaW50ZXIpOworI2VuZGlmCisgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4oZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyYgaW1w
bCkKK3sKKyAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGltcGwpOworfQorCitUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OnRv
V3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmIChhdXRv
KiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXMqPih2bSwgdmFsdWUpKQorICAgICAgICByZXR1cm4gJndyYXBwZXIt
PndyYXBwZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgICAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRo
aXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5P
VCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIK
KyNpbmNsdWRlICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzPiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBl
cjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPjsKKyAgICBz
dGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKiBj
cmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXM+JiYgaW1wbCkKKyAgICB7CisgICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+KGdsb2Jh
bE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cisg
ICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAg
cmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJv
dG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6OkpT
T2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3Rh
dGljIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqIHRvV3Jh
cHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVu
dW1lcmF0aW9uTW9kZSgpKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQ
dXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQzo6SlNDZWxs
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1Zh
bHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0
eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1l
LCBjb25zdCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOworICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKKworICAgIERFQ0xBUkVfSU5GTzsK
KworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7CisgICAg
fQorCisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29u
c3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1
YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1
YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOworICAgIHN0YXRp
YyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CitwdWJsaWM6
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5
QWJzZW5jZSB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW50ZXJjZXB0c0dl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3Zl
cnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7Citwcm90ZWN0ZWQ6Cisg
ICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKEpTQzo6
U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4mJik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTQzo6Vk0mKTsKK307CisKK2NsYXNzIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc093bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYsIGNv
bnN0IGNoYXIqKik7CisgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOworfTsKKworaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93
bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyopCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc093bmVyPiBv
d25lcjsKKyAgICByZXR1cm4gJm93bmVyLmdldCgpOworfQorCitpbmxpbmUgdm9pZCogd3JhcHBl
cktleShUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKiB3cmFw
cGFibGVPYmplY3QpCit7CisgICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKK30KKworSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyYpOworaW5saW5lIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKGxleGlj
YWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsgfQor
SlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9N
R2xvYmFsT2JqZWN0KiwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXM+JiYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGlj
YWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpT
Qzo6anNOdWxsKCk7IH0KKwordGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVy
VHJhaXRzPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+IHsK
KyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXM7CisgICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdElucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MzggQEAKKy8qCisgICAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRo
aXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5P
VCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMuaCIKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlz
b1N1YnNwYWNlcy5oIgorI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiCisjaW5j
bHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNs
dWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgorI2luY2x1ZGUgIkpTRE9N
Q29udmVydFN0cmluZ3MuaCIKKyNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCisj
aW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5o
IgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3Jl
SlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKKwor
bmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworLy8gRnVuY3Rpb25z
CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zSW5z
dGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworCisvLyBBdHRyaWJ1dGVzCisKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNVbmZvcmdlYWJsZUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworCitjbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJv
dG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6Cisg
ICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAg
ICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdEluc1Byb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBw
dHItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAg
ICBERUNMQVJFX0lORk87CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpTQzo6U3Vi
c3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDog
SlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNQcm90b3R5cGU6OkJhc2UpOworCit1c2luZyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjsKKwor
LyogSGFzaCB0YWJsZSAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXgg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdEluc1RhYmxlSW5kZXhbNF0gPSB7CisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IDEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDAsIC0xIH0sCit9OworCisKK3N0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zVGFibGVWYWx1ZXNbXSA9Cit7
CisgICAgeyAidW5mb3JnZWFibGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNVbmZvcmdlYWJsZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJ1bmZvcmdlYWJsZU9wZXJhdGlv
biIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxS
YXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdl
YWJsZU9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKK307CisKK3N0YXRpYyBjb25zdCBI
YXNoVGFibGUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1RhYmxlID0geyAyLCAzLCB0cnVlLCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjppbmZvKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNUYWJsZVZhbHVlcywgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluc1RhYmxlSW5kZXggfTsKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29u
c3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0odm0pOworICAg
IHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKK30KKwordGVtcGxhdGU8
PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpwcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5h
bWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIl9zKSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKK30KKwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdEluc0NvbnN0cnVjdG9yKSB9OworCisvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8K
Kworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVU
YWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdEluc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSB9IH0sCit9
OworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6c19pbmZvID0g
eyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUpIH07CisKK3ZvaWQgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnM6OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZVRhYmxlVmFs
dWVzLCAqdGhpcyk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7
Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpzX2luZm8gPSB7ICJUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zVGFibGUsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucykgfTsKKworSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpCisgICAg
OiBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGltcGwpKQoreworfQorCit2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJU
KGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFz
ZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6dmFsdWUsICJJbnRlcmZhY2Ug
aXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRh
dGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKKworfQorCitKU09iamVj
dCogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdEluczo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3Rv
dHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQ
cm90b3R5cGUoKSkpOworfQorCitKU09iamVjdCogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6cHJvdG90eXBl
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4g
Z2V0RE9NUHJvdG90eXBlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KHZtLCBnbG9iYWxPYmplY3QpOworfQor
CitKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3Qg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3Ry
dWN0b3I8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworfQorCit2b2lkIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCit7CisgICAgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihjZWxsKTsKKyAgICB0
aGlzT2JqZWN0LT5KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjp+SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucygpOworfQorCiti
b29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJ
RExET01TdHJpbmc7CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmpl
Y3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBl
OjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFt
ZSkpOworICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCisg
ICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25U
eXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9OworICAgIGlmIChhdXRvIG5hbWVk
UHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zOjpZZXM+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
LCBnZXR0ZXJGdW5jdG9yKSkgeworICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJp
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkp
OworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PigwKSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7Cisg
ICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihvYmplY3QpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKKyAgICB1c2luZyBHZXR0ZXJJ
RExUeXBlID0gSURMRE9NU3RyaW5nOworICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRv
JiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0
dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0g
dGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShy
ZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxl
bWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShy
ZXN1bHQpIH07CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfTsKKyAgICBpZiAo
YXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3Zl
cnJpZGVCdWlsdEluczo6WWVzPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5
LnZhbHVlKCkpKTsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIGxleGlj
YWxHbG9iYWxPYmplY3QsIGluZGV4LCBzbG90KTsKK30KKwordm9pZCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51
bWVyYXRpb25Nb2RlIG1vZGUpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMqPihvYmplY3QpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMob2JqZWN0LCBpbmZv
KCkpOworICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1lIDogdGhpc09iamVjdC0+d3JhcHBlZCgp
LnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSkKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcHJvcGVydHlOYW1lKSk7CisgICAgSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWVzLCBtb2RlKTsKK30KKworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpwdXQoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBwdXRQcm9wZXJ0eVNsb3Qp
Cit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwor
CisgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgeworICAgICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCkpOworICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgdHJ1ZSk7CisgICAgICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS5zZXROYW1l
ZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNPYmpl
Y3Q6OnB1dCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBwdXRQcm9wZXJ0eVNsb3QpOworfQorCitib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnB1dEJ5
SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
dW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wpCit7CisgICAgVk0mIHZtID0gSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb20odm0sIGluZGV4KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOworICAgIHRo
aXNPYmplY3QtPndyYXBwZWQoKS5zZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJv
cGVydHlOYW1lKSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmpl
Y3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIHByb3BlcnR5RGVzY3JpcHRvciwg
Ym9vbCBzaG91bGRUaHJvdykKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMqPihvYmplY3QpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKKworICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsK
K3N0YXRpYyBib29sIGlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gcHJvcGVydHlOYW1lID09ICJ1bmZvcmdlYWJs
ZUF0dHJpYnV0ZSIgfHwgcHJvcGVydHlOYW1lID09ICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiI7Cit9
CisKKyAgICAgICAgaWYgKCFpc0xlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKHByb3BlcnR5
TmFtZSkpIHsKKyAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlzRGF0YURlc2Ny
aXB0b3IoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCkpOworICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlEZXNjcmlwdG9yLnZhbHVlKCkp
OworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKKyAg
ICAgICAgICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS5zZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1l
VG9TdHJpbmcocHJvcGVydHlOYW1lKSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQcm9wZXJ0eURlc2NyaXB0
b3IgbmV3UHJvcGVydHlEZXNjcmlwdG9yID0gcHJvcGVydHlEZXNjcmlwdG9yOworICAgIG5ld1By
b3BlcnR5RGVzY3JpcHRvci5zZXRDb25maWd1cmFibGUodHJ1ZSk7CisgICAgcmV0dXJuIEpTT2Jq
ZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgbmV3UHJvcGVydHlEZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7Cit9CisKK3RlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIElETEF0dHJpYnV0ZTxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlKQoreworICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBJ
RExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQoreworICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBWTSYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQorICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldENvbnN0cnVjdG9yKEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkp
KTsKK30KKworYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAo
VU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIHJldHVybiBwcm90
b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnNVbmZvcmdlYWJsZUF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyYgdGhpc09iamVjdCkKK3sKKyAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LnVuZm9yZ2VhYmxlQXR0cmlidXRlKCkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnNVbmZvcmdlYWJsZUF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6Z2V0PGpzVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNVbmZvcmdlYWJsZUF0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInVuZm9yZ2VhYmxlQXR0cmli
dXRlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uQm9keShKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1l
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz46OkNsYXNzUGFyYW1ldGVy
IGNhc3RlZFRoaXMpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1l
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOworICAgIGltcGwudW5mb3JnZWFibGVPcGVyYXRpb24oKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVP
cGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz46
OmNhbGw8anNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlv
bkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidW5mb3JnZWFibGVPcGVy
YXRpb24iKTsKK30KKworSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6c3Vic3Bh
Y2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMg
PSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KQorICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
KTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMu
Z2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRP
dXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3Bh
Y2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5H
U19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6YW5h
bHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQoreworICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KGNlbGwpOworICAgIGFu
YWx5emVyLnNldFdyYXBwZWRPYmplY3RGb3JDZWxsKGNlbGwsICZ0aGlzT2JqZWN0LT53cmFwcGVk
KCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAg
ICAgIGFuYWx5emVyLnNldExhYmVsRm9yQ2VsbChjZWxsLCAidXJsICIgKyB0aGlzT2JqZWN0LT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVybCgpLnN0cmluZygpKTsKKyAgICBCYXNlOjphbmFs
eXplSGVhcChjZWxsLCBhbmFseXplcik7Cit9CisKK2Jvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc093bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhh
bmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQor
eworICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOworICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsK
KyAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdEluc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsZSwgdm9pZCogY29udGV4dCkKK3sKKyAgICBhdXRvKiBqc1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0g
c3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsK
KyAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0
KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMtPndyYXBwZWQo
KSwganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucyk7Cit9CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkp
CisjaWYgUExBVEZPUk0oV0lOKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCitleHRl
cm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluc0BXZWJDb3JlQEA2QkAiKVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2
b2lkKiBfWlRWTjdXZWJDb3JlNzFUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0VbXTsgfQorI2VuZGlmCisjZW5kaWYK
KworSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4mJiBpbXBs
KQoreworCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorICAgIGNvbnN0IHZvaWQqIGFj
dHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkpOworI2lmIFBM
QVRGT1JNKFdJTikKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZp
ZXIoIj8/XzdUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0BXZWJDb3JlQEA2QkAiKTsKKyNlbHNlCisgICAgdm9pZCog
ZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmU3MVRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRVsy
XTsKKyNlbmRpZgorCisgICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyBkb2VzIG5v
dCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50
YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHltb3JwaGljPFRlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6dmFs
dWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucyBpcyBub3QgcG9seW1vcnBoaWMiKTsKKworICAgIC8vIElmIHlv
dSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVn
LCBvcgorICAgIC8vIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dElucyBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2Ug
Y3VycmVudGx5IHJlcXVpcmUgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgeW91IHRvIG9wdCBvdXQgb2YgYmluZGlu
ZyBoYXJkZW5pbmcKKyAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0
dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCisgICAgUkVMRUFTRV9BU1NF
UlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOworI2VuZGlm
CisgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KGdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sK
KyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+
KHZtLCB2YWx1ZSkpCisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAgICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhp
cyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9U
IE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgor
I2luY2x1ZGUgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA6IHB1
YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBC
YXNlID0gSlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjsKKyAgICBzdGF0aWMgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdElucyogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4mJiBpbXBsKQorICAgIHsKKyAg
ICAgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRl
Q2VsbDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAg
ICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICByZXR1
cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5
cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmpl
Y3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMg
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xv
dCYpOworICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCos
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVt
ZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKKyAgICBzdGF0aWMgYm9vbCBw
dXQoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUs
IEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBw
dXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6UHJvcGVydHlOYW1lLCBjb25zdCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJv
b2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsK
KworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8o
SlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5k
ZXhlZEFjY2Vzc29ycyk7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25z
dHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0
ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7
CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlND
OjpWTSYgdm0pOworICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVh
cEFuYWx5emVyJik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNs
b3RJc0ltcHVyZSB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW50ZXJjZXB0
c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6
T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7Citwcm90ZWN0ZWQ6
CisgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0
JiwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlND
OjpWTSYpOworfTsKKworY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc093bmVyIDogcHVibGljIEpTQzo6
V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwg
SlNDOjpTbG90VmlzaXRvciYsIGNvbnN0IGNoYXIqKik7CisgICAgdmlydHVhbCB2b2lkIGZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOworfTsKKworaW5s
aW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwg
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMqKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zT3duZXI+IG93bmVyOworICAgIHJldHVybiAmb3duZXIuZ2V0KCk7Cit9CisKK2lubGlu
ZSB2b2lkKiB3cmFwcGVyS2V5KFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiB3cmFwcGFibGVPYmplY3QpCit7Cisg
ICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMmKTsKK2lu
bGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyog
aW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9CitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3Jl
YXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM+JiYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4mJiBpbXBsKSB7IHJldHVybiBpbXBs
ID8gdG9KU05ld2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlt
cGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4geworICAgIHVz
aW5nIFdyYXBwZXJDbGFzcyA9IEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM7CisgICAgdXNpbmcgVG9XcmFwcGVk
UmV0dXJuVHlwZSA9IFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGlucy5jcHAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDM2NyArMCwwIEBACi0vKgotICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgICBUaGlzIGZp
bGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9E
SUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU1Rlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zLmgiCi0KLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIK
LSNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKLSNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3Bl
cmF0aW9ucy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5n
cy5oIgotI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKLSNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RnVuY3Rpb25Qcm90b3R5cGUuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6
ZXIuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KLSNpbmNsdWRlIDx3
dGYvVVJMLmg+Ci0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIEpTQzsK
LQotLy8gQXR0cmlidXRlcwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVy
V2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotCi1jbGFzcyBK
U1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlIGZpbmFsIDogcHVi
bGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpT
Qzo6SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGluc1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAg
ICAgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwot
ICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAgcmV0dXJuIHB0cjsKLSAg
ICB9Ci0KLSAgICBERUNMQVJFX0lORk87Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IEpTQzo6U3Vic3BhY2VBY2Nlc3M+Ci0gICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQotICAgIHsKLSAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc1Byb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKLSAgICB9
Ci0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogSlNDOjpK
U05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotfTsKLVNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUs
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OkJhc2UpOwot
Ci11c2luZyBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zPjsKLQotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAg
IFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3Rv
dHlwZSgpOwotfQotCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJp
ZGVCdWlsdGluc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkU2V0dGVyV2l0aE92
ZXJyaWRlQnVpbHRpbnMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotfQotCi10ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1
aWx0aW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH07
Ci0KLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwotCi1zdGF0aWMgY29uc3QgSGFzaFRh
YmxlVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZVRh
YmxlVmFsdWVzW10gPQotewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH0gfSwKLX07Ci0KLWNvbnN0IENsYXNz
SW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSkgfTsKLQotdm9pZCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
Ci17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJlaWZ5U3RhdGljUHJvcGVy
dGllcyh2bSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6aW5mbygpLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlVGFibGVWYWx1ZXMs
ICp0aGlzKTsKLSAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKLX0K
LQotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6
OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKSB9OwotCi1KU1Rlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8
VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+JiYgaW1wbCkKLSAgICA6IEpTRE9N
V3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4oc3RydWN0dXJlLCBn
bG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCi17Ci19Ci0KLXZvaWQgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewotICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkp
OwotCi0gICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwg
VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+Ojp2YWx1ZSwgIkludGVyZmFjZSBp
cyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0
aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIpOwotCi19Ci0KLUpTT2JqZWN0
KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpjcmVhdGVQcm90b3R5cGUo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBK
U1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlOjpjcmVhdGUodm0s
ICZnbG9iYWxPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9i
amVjdFByb3RvdHlwZSgpKSk7Ci19Ci0KLUpTT2JqZWN0KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQotewotICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4odm0sIGdsb2JhbE9iamVjdCk7Ci19Ci0KLUpTVmFsdWUg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29u
c3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KSk7Ci19Ci0KLXZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6
ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKLXsKLSAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyo+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPkpTVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6On5KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zKCk7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVC
dWlsdGluczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgdXNpbmcgR2V0dGVySURM
VHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYg
dGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRl
cklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJv
cGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVz
dWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1l
bnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVz
dWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07Ci0gICAgaWYgKGF1
dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVp
bHRpbnM6Olllcz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgp
KSk7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KDApLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4g
SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyo+KG9iamVjdCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExE
T01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3Qs
IGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJ
bXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkp
OwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAg
ICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBl
IHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJv
cGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpZZXM+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJG
dW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwotICAgICAg
ICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFs
dWUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5k
ZXgsIHNsb3QpOwotfQotCi12b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBF
bnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyo+KG9iamVjdCk7Ci0gICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhvYmplY3QsIGluZm8oKSk7Ci0gICAgZm9yIChhdXRvJiBwcm9wZXJ0eU5hbWUg
OiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpKQotICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBwcm9wZXJ0eU5h
bWUpKTsKLSAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwotfQotCi1ib29sIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFByb3BlcnR5U2xvdCkKLXsKLSAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnMqPihjZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7Ci0KLSAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KSk7Ci0gICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKLSAgICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgp
LnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVy
biBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1
ZSwgYm9vbCkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGlucyo+KGNlbGwpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKLQotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbSh2bSwgaW5kZXgpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7Ci0gICAgdGhpc09iamVj
dC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5h
bWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgcHJvcGVy
dHlEZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQotewotICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyo+KG9iamVjdCk7
Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotCi0g
ICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBpZiAoIXByb3BlcnR5
RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5RGVzY3JpcHRv
ci52YWx1ZSgpKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVl
KTsKLSAgICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5h
bWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIFByb3BlcnR5RGVzY3JpcHRvciBuZXdQcm9wZXJ0
eURlc2NyaXB0b3IgPSBwcm9wZXJ0eURlc2NyaXB0b3I7Ci0gICAgbmV3UHJvcGVydHlEZXNjcmlw
dG9yLnNldENvbmZpZ3VyYWJsZSh0cnVlKTsKLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBuZXdQ
cm9wZXJ0eURlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKLX0KLQotRW5jb2RlZEpTVmFsdWUganNU
ZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1
dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJp
ZGVCdWlsdGluc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OmdldENvbnN0
cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1
aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewot
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBl
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJv
dG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtF
TFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAv
LyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQotSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQot
ewotICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKTsKLSAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygp
OwotICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0
dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuZ2V0KCkpCi0gICAgICAgIHJldHVybiBzcGFjZTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+IHx8ICFKU1Rlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpuZWVkc0Rlc3RydWN0aW9uKTsKLSAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1
aWx0aW5zKTsKLSAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKTsKLSAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuZ2V0KCk7
Ci1JR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQotSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCi0gICAgaWYgKCZKU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6
OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKLSAgICAgICAgY2xpZW50RGF0YS5vdXRw
dXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKLUlHTk9SRV9XQVJOSU5HU19FTkQK
LUlHTk9SRV9XQVJOSU5HU19FTkQKLSAgICByZXR1cm4gc3BhY2U7Ci19Ci0KLXZvaWQgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxs
LCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyo+KGNlbGwpOwotICAgIGFu
YWx5emVyLnNldFdyYXBwZWRPYmplY3RGb3JDZWxsKGNlbGwsICZ0aGlzT2JqZWN0LT53cmFwcGVk
KCkpOwotICAgIGlmICh0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAg
ICAgIGFuYWx5emVyLnNldExhYmVsRm9yQ2VsbChjZWxsLCAidXJsICIgKyB0aGlzT2JqZWN0LT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVybCgpLnN0cmluZygpKTsKLSAgICBCYXNlOjphbmFs
eXplSGVhcChjZWxsLCBhbmFseXplcik7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGluc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6Okhh
bmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBj
b25zdCBjaGFyKiogcmVhc29uKQotewotICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOwotICAgIFVO
VVNFRF9QQVJBTSh2aXNpdG9yKTsKLSAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLXZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlu
c093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCog
Y29udGV4dCkKLXsKLSAgICBhdXRvKiBqc1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zID0gc3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyo+
KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2Fz
dDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwg
JmpzVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMtPndyYXBwZWQoKSwganNUZXN0
TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyk7Ci19Ci0KLSNpZiBFTkFCTEUoQklORElO
R19JTlRFR1JJVFkpCi0jaWYgUExBVEZPUk0oV0lOKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6
IDQ0ODMpCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/
XzdUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0BXZWJDb3JlQEA2QkAiKVtdKSgp
OyB9Ci0jZWxzZQotZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMzVUZXN0
TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0VbXTsgfQotI2VuZGlmCi0jZW5kaWYKLQot
SlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJp
ZGVCdWlsdGlucz4mJiBpbXBsKQotewotCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQot
ICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGlt
cGwucHRyKCkpOwotI2lmIFBMQVRGT1JNKFdJTikKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBv
aW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWls
dGluc0BXZWJDb3JlQEA2QkAiKTsKLSNlbHNlCi0gICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2lu
dGVyID0gJl9aVFZON1dlYkNvcmUzNVRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
RVsyXTsKLSNlbmRpZgotCi0gICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGlucyBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBh
ZGQgdGhlCi0gICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhl
IGludGVyZmFjZSBkZWZpbml0aW9uCi0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHltb3Jw
aGljPFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPjo6dmFsdWUsICJUZXN0TmFt
ZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyBpcyBub3QgcG9seW1vcnBoaWMiKTsKLQotICAg
IC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVy
IGZyZWUgYnVnLCBvcgotICAgIC8vIFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
IGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyBo
YXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKLSAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVu
dGx5IHJlcXVpcmUgVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMgeW91IHRvIG9w
dCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKLSAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFi
bGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCi0g
ICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBv
aW50ZXIpOwotI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVy
V2l0aE92ZXJyaWRlQnVpbHRpbnM+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0K
LUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zJiBpbXBsKQotewotICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Ci19Ci0KLVRlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjp0b1dy
YXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAoYXV0byog
d3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWls
dGlucyo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwot
ICAgIHJldHVybiBudWxscHRyOwotfQotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmgJKHJldmlzaW9uIDI2NjYzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMDEgKzAsMCBA
QAotLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHBy
b2plY3QuCi0gICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5k
aW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkpT
RE9NV3JhcHBlci5oIgotI2luY2x1ZGUgIlRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyA6IHB1
YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+IHsK
LXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zPjsKLSAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGlucyogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVC
dWlsdGlucz4mJiBpbXBsKQotICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGlucyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPihnbG9iYWxPYmplY3QtPnZtKCkuaGVh
cCkpIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMoc3RydWN0dXJlLCAqZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihn
bG9iYWxPYmplY3QtPnZtKCkpOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQotICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFs
T2JqZWN0Jik7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwg
SlNET01HbG9iYWxPYmplY3QmKTsKLSAgICBzdGF0aWMgVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJy
aWRlQnVpbHRpbnMqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKLSAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJh
dGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBwdXQo
SlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpT
Qzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBwdXRC
eUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9v
bCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6UHJvcGVydHlOYW1lLCBjb25zdCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wg
c2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKLQot
ICAgIERFQ0xBUkVfSU5GTzsKLQotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhl
ZEFjY2Vzc29ycyk7Ci0gICAgfQotCi0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAgICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhw
ciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCi0gICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7Ci0g
ICAgfQotICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpW
TSYgdm0pOwotICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFu
YWx5emVyJik7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJ
c0ltcHVyZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hl
bkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1l
cyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9w
ZXJ0eUNhY2hpbmc7Ci1wcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJp
ZGVCdWlsdGlucyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPiYmKTsKLQotICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNDOjpWTSYpOwotfTsKLQotY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJp
ZGVCdWlsdGluc093bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLXB1YmxpYzoK
LSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8
SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYsIGNvbnN0IGNo
YXIqKik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4sIHZvaWQqIGNvbnRleHQpOwotfTsKLQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3
cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnMqKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU1Rlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zT3duZXI+IG93bmVyOwotICAgIHJldHVybiAmb3duZXIuZ2V0
KCk7Ci19Ci0KLWlubGluZSB2b2lkKiB3cmFwcGVyS2V5KFRlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zKiB3cmFwcGFibGVPYmplY3QpCi17Ci0gICAgcmV0dXJuIHdyYXBwYWJsZU9i
amVjdDsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9N
R2xvYmFsT2JqZWN0KiwgVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMmKTsKLWlu
bGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFtZWRTZXR0ZXJX
aXRoT3ZlcnJpZGVCdWlsdGlucyogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4aWNhbEds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1KU0M6
OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9i
YWxPYmplY3QqLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+JiYpOwot
aW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
ZlB0cjxUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4mJiBpbXBsKSB7IHJldHVy
biBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9Ci0KLXRlbXBsYXRl
PD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGlucz4gewotICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IEpTVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM7Ci0gICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlw
ZSA9IFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKjsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAkocmV2aXNpb24gMjY2NjM5KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ1NyAr
MCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3Vy
Y2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRl
LWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5oIgotCi0j
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgi
Ci0jaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKLSNpbmNsdWRlICJKU0RPTUF0
dHJpYnV0ZS5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5n
cy5oIgotI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKLSNpbmNsdWRlICJKU0RP
TU9wZXJhdGlvbi5oIgotI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCi0jaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci11c2luZyBuYW1lc3BhY2UgSlNDOwotCi0vLyBGdW5jdGlvbnMKLQotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwotCi0vLyBBdHRyaWJ1dGVzCi0KLUpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25z
dHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNVbmZvcmdlYWJsZUF0dHJpYnV0ZShKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OwotCi1jbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1Byb3Rv
dHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewotcHVibGljOgotICAg
IHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1Byb3RvdHlwZT4odm0u
aGVhcCkpIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRp
b24odm0pOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQotICAgIERFQ0xBUkVfSU5GTzsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KLSAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCi0gICAg
ewotICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKLSAgICB9Ci0gICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2
bSwgc3RydWN0dXJlKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpT
Qzo6Vk0mKTsKLX07Ci1TVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1Byb3RvdHlwZSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNQcm90b3R5cGU6OkJhc2UpOwotCi11c2luZyBK
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yID0gSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXM+OwotCi0vKiBIYXNoIHRhYmxlICovCi0KLXN0YXRpYyBjb25zdCBzdHJ1
Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc1RhYmxlSW5kZXhbNF0gPSB7Ci0gICAgeyAtMSwgLTEgfSwKLSAgICB7IDEsIC0xIH0sCi0g
ICAgeyAtMSwgLTEgfSwKLSAgICB7IDAsIC0xIH0sCi19OwotCi0KLXN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1RhYmxl
VmFsdWVzW10gPQotewotICAgIHsgInVuZm9yZ2VhYmxlQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1VuZm9yZ2VhYmxlQXR0cmli
dXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oMCkgfSB9LAotICAgIHsgInVuZm9yZ2VhYmxlT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0luc3RhbmNlRnVuY3Rpb25V
bmZvcmdlYWJsZU9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKLX07Ci0KLXN0YXRpYyBj
b25zdCBIYXNoVGFibGUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNU
YWJsZSA9IHsgMiwgMywgdHJ1ZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXM6OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNU
YWJsZVZhbHVlcywgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNUYWJs
ZUluZGV4IH07Ci10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIFVOVVNF
RF9QQVJBTSh2bSk7Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgp
OwotfQotCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotfQot
Ci10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQ29uc3RydWN0b3IpIH07Ci0KLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwotCi1z
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KLXsKLSAgICB7ICJjb25zdHJ1Y3Rv
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25z
dHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3Ry
dWN0b3IpIH0gfSwKLX07Ci0KLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc1Byb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc1Byb3RvdHlwZSkgfTsKLQotdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewotICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjppbmZvKCksIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0
aGlzKTsKLSAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKLX0KLQot
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
OjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMiLCAm
QmFzZTo6c19pbmZvLCAmSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNU
YWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllcykgfTsKLQotSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXM6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPiYmIGltcGwpCi0gICAgOiBK
U0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPihzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKLXsKLX0KLQotdm9pZCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBBU1NFUlQoaW5oZXJpdHMo
dm0sIGluZm8oKSkpOwotCi0gICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2
ZURPTU9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPjo6dmFs
dWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRo
b3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsK
LQotfQotCi1KU09iamVjdCogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXM6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCi17Ci0gICAgcmV0dXJuIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSkpOwotfQotCi1KU09i
amVjdCogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OnByb3RvdHlw
ZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJu
IGdldERPTVByb3RvdHlwZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
cz4odm0sIGdsb2JhbE9iamVjdCk7Ci19Ci0KLUpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXM6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKLX0KLQot
dm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6ZGVzdHJveShK
U0M6OkpTQ2VsbCogY2VsbCkKLXsKLSAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllcyogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6On5KU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllcygpOwotfQotCi1ib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKj4ob2JqZWN0KTsK
LSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAg
dXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0
b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFs
PHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBh
dXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVU
b0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6
aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVG
cm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAg
IH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9
IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFBy
b3BlcnR5LnZhbHVlKCkpKTsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
dW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICBWTSYgdm0gPSBKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihvYmplY3QpOwot
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKLSAgICB1c2lu
ZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9
IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlw
ZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8g
cmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRv
bVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051
bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5
cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsK
LSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8
T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVy
dHkudmFsdWUoKSkpOwotICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0g
ICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHNsb3QpOwotfQotCi12b2lkIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCi17Ci0gICAgVk0m
IHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKj4o
b2JqZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKG9iamVjdCwgaW5mbygpKTsK
LSAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6IHRoaXNPYmplY3QtPndyYXBwZWQoKS5zdXBw
b3J0ZWRQcm9wZXJ0eU5hbWVzKCkpCi0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHByb3BlcnR5TmFtZSkpOwotICAgIEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywg
bW9kZSk7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXM6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHB1dFByb3BlcnR5U2xvdCkKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKj4oY2VsbCk7Ci0gICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotCi0gICAgaWYgKCFw
cm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRo
aXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZs
ZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpIH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0g
dGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCkpOwotICAgICAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNP
YmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7
Ci0gICAgICAgIGlmICghZm91bmQpIHsKLSAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAg
ICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHRydWUpOwotICAgICAgICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7Ci19Ci0KLWJvb2wgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OnB1dEJ5SW5kZXgoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgs
IEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKj4oY2VsbCk7Ci0gICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotCi0gICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0gICAgUHJvcGVy
dHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5LCAmdm0gfTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3Qt
PmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09i
amVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5
LnJlc2V0KCk7Ci0gICAgaWYgKCFmb3VuZCkgewotICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAg
ICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgdHJ1ZSk7Ci0gICAgICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS5zZXROYW1lZEl0ZW0ocHJv
cGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5
SW5kZXgoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJv
dyk7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0
eURlc2NyaXB0b3ImIHByb3BlcnR5RGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKLXsKLSAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7Ci0KLSAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7
Ci1zdGF0aWMgYm9vbCBpc1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCi17Ci0gICAgcmV0dXJuIHByb3BlcnR5TmFtZSA9PSAidW5mb3JnZWFibGVBdHRy
aWJ1dGUiIHx8IHByb3BlcnR5TmFtZSA9PSAidW5mb3JnZWFibGVPcGVyYXRpb24iOwotfQotCi0g
ICAgICAgIGlmICghaXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKSB7Ci0g
ICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgp
IH07Ci0gICAgICAgICAgICBib29sIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwot
ICAgICAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKLSAgICAgICAgICAgIGlm
ICghZm91bmQpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVzY3JpcHRvci5pc0Rh
dGFEZXNjcmlwdG9yKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
RGVzY3JpcHRvci52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHRydWUpOwotICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPndyYXBwZWQo
KS5zZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgUHJvcGVydHlEZXNjcmlwdG9yIG5ld1Byb3Bl
cnR5RGVzY3JpcHRvciA9IHByb3BlcnR5RGVzY3JpcHRvcjsKLSAgICBuZXdQcm9wZXJ0eURlc2Ny
aXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOwotICAgIHJldHVybiBKU09iamVjdDo6ZGVmaW5l
T3duUHJvcGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG5l
d1Byb3BlcnR5RGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwotfQotCi10ZW1wbGF0ZTw+IGlubGlu
ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyogSURMQXR0cmlidXRl
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPjo6Y2FzdChKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQot
ewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKj4oSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci19
Ci0KLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1Byb3RvdHlwZSo+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wg
c2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcihK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlKj4odm0sIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkp
IHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpKTsKLX0KLQotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzVW5mb3JnZWFibGVBdHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzJiB0aGlzT2JqZWN0KQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudW5mb3JnZWFibGVBdHRyaWJ1dGUoKSkpKTsK
LX0KLQotRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNVbmZvcmdlYWJsZUF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
cz46OmdldDxqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1VuZm9yZ2Vh
YmxlQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidW5mb3JnZWFibGVBdHRyaWJ1dGUiKTsKLX0K
LQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9u
Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxG
cmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQotewot
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAg
ICBpbXBsLnVuZm9yZ2VhYmxlT3BlcmF0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0luc3RhbmNlRnVuY3Rpb25VbmZv
cmdlYWJsZU9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcz46OmNhbGw8anNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRp
b25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInVuZm9yZ2VhYmxlT3Bl
cmF0aW9uIik7Ci19Ci0KLUpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCi17Ci0gICAg
YXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpOwotICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Ci0gICAg
aWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXMuZ2V0KCkpCi0gICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPiB8fCAhSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwotICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
cyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXMpOwotICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyk7
Ci0gICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcy5nZXQoKTsKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCi1JR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKLSAgICBpZiAoJkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25z
dHJhaW50cykKLSAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBw
ZW5kKHNwYWNlKTsKLUlHTk9SRV9XQVJOSU5HU19FTkQKLUlHTk9SRV9XQVJOSU5HU19FTkQKLSAg
ICByZXR1cm4gc3BhY2U7Ci19Ci0KLXZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXM6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFs
eXplcikKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKj4oY2VsbCk7Ci0gICAgYW5hbHl6ZXIuc2V0V3JhcHBl
ZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQoKSk7Ci0gICAgaWYgKHRo
aXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgYW5hbHl6ZXIuc2V0
TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOwotICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFu
YWx5emVyKTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiog
cmVhc29uKQotewotICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOwotICAgIFVOVVNFRF9QQVJBTSh2
aXNpdG9yKTsKLSAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLXZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNPd25lcjo6
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQp
Ci17Ci0gICAgYXV0byoganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMg
PSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyo+
KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2Fz
dDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwg
JmpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLT53cmFwcGVkKCksIGpz
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKTsKLX0KLQotI2lmIEVOQUJM
RShCSU5ESU5HX0lOVEVHUklUWSkKLSNpZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdhcm5pbmco
ZGlzYWJsZTogNDQ4MykKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRp
ZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0BXZWJDb3Jl
QEA2QkAiKVtdKSgpOyB9Ci0jZWxzZQotZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdX
ZWJDb3JlMzlUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNFW107IH0KLSNl
bmRpZgotI2VuZGlmCi0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPiYmIGltcGwpCi17Ci0KLSNpZiBFTkFCTEUo
QklORElOR19JTlRFR1JJVFkpCi0gICAgY29uc3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9
IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIHZv
aWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRpZmllcigiPz9fN1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0BXZWJDb3JlQEA2QkAiKTsKLSNlbHNlCi0gICAg
dm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUzOVRlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0VbMl07Ci0jZW5kaWYKLQotICAgIC8vIElmIHRo
aXMgZmFpbHMgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIGRvZXMgbm90
IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKLSAgICAvLyBJbXBsZW1lbnRh
dGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KLSAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzPjo6dmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXMgaXMgbm90IHBvbHltb3JwaGljIik7Ci0KLSAgICAvLyBJZiB5b3UgaGl0IHRo
aXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKLSAg
ICAvLyBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMgaGFzIHN1YmNsYXNz
ZXMuIElmIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyBoYXMgc3ViY2xh
c3NlcyB0aGF0IGdldCBwYXNzZWQKLSAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVp
cmUgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIHlvdSB0byBvcHQgb3V0
IG9mIGJpbmRpbmcgaGFyZGVuaW5nCi0gICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFs
aWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgotICAgIFJF
TEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVy
KTsKLSNlbmRpZgotICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllcz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQot
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzJiBpbXBsKQotewotICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Ci19Ci0KLVRlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllcyogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXM6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAg
IGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllcyo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBl
ci0+d3JhcHBlZCgpOwotICAgIHJldHVybiBudWxscHRyOwotfQotCi19CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXMuaAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmgJKG5v
bmV4aXN0ZW50KQpAQCAtMSwxMDEgKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gICAgVGhpcyBmaWxlIGhhcyBiZWVu
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLQotICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0j
cHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgotI2luY2x1ZGUgIlRlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5oIgotI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+IHsKLXB1YmxpYzoKLSAgICB1c2lu
ZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllcz47Ci0gICAgc3RhdGljIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
cz4mJiBpbXBsKQotICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXMqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+KGdsb2JhbE9iamVjdC0+dm0oKS5o
ZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMoc3RydWN0dXJl
LCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVh
dGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQot
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9N
R2xvYmFsT2JqZWN0Jik7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6
OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKLSAgICBzdGF0aWMgVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7
Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7
Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNP
YmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpT
Qzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAgc3RhdGlj
IGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVy
dHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGlj
IGJvb2wgcHV0QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAg
c3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgY29uc3QgSlNDOjpQcm9wZXJ0eURlc2NyaXB0
b3ImLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlND
ZWxsKik7Ci0KLSAgICBERUNMQVJFX0lORk87Ci0KLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6TWF5
SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOwotICAgIH0KLQotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUg
Z2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCi0gICAgewotICAgICAgICBp
ZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQot
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBzdWJzcGFjZUZvcklt
cGwodm0pOwotICAgIH0KLSAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJ
bXBsKEpTQzo6Vk0mIHZtKTsKLSAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBK
U0M6OkhlYXBBbmFseXplciYpOwotcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJv
cGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6Okhhc1N0YXRpY1Byb3Bl
cnR5VGFibGUgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldo
ZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5TmFt
ZXMgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6UHJvaGliaXRzUHJv
cGVydHlDYWNoaW5nOwotcHJvdGVjdGVkOgotICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPiYmKTsKLQotICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotfTsKLQotY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25l
ciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0
b3ImLCBjb25zdCBjaGFyKiopOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKLX07Ci0KLWlubGluZSBKU0M6OldlYWtI
YW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyopCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzT3duZXI+IG93bmVyOwot
ICAgIHJldHVybiAmb3duZXIuZ2V0KCk7Ci19Ci0KLWlubGluZSB2b2lkKiB3cmFwcGVyS2V5KFRl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyogd3JhcHBhYmxlT2JqZWN0KQot
ewotICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcyYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyogaW1w
bCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1KU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRl
ZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPiYmKTsKLWlubGluZSBKU0M6OkpTVmFsdWUg
dG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3
bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNl
Tm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01X
cmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllcz4gewotICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzOwotICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGlucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucy5jcHAJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwCShub25leGlzdGVudCkKQEAgLTEsNDM4ICswLDAg
QEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBw
cm9qZWN0LgotICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmlu
ZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGlucy5oIgotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSAiRE9N
SXNvU3Vic3BhY2VzLmgiCi0jaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKLSNp
bmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2lu
Y2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCi0jaW5jbHVkZSAiSlNE
T01Db252ZXJ0U3RyaW5ncy5oIgotI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIK
LSNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgotI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkNv
cmVKU0NsaWVudERhdGEuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci11c2luZyBuYW1lc3BhY2UgSlNDOwotCi0vLyBGdW5jdGlv
bnMKLQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rp
b25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKLQotLy8gQXR0cmlidXRlcwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVj
dG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zVW5mb3JnZWFibGVBdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLQotY2xhc3MgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBl
IGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgdXNp
bmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBl
KiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlPih2bS5oZWFw
KSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7Ci0gICAgICAgIHB0
ci0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQotICAg
IERFQ0xBUkVfSU5GTzsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJz
cGFjZUFjY2Vzcz4KLSAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCi0gICAgewotICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7Ci0gICAgfQotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGluc1Byb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpW
TSYpOwotfTsKLVNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlw
ZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zUHJvdG90eXBlOjpCYXNlKTsKLQotdXNpbmcgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IgPSBKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+OwotCi0vKiBIYXNoIHRhYmxlICovCi0KLXN0
YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNUYWJsZUluZGV4WzRdID0gewot
ICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxLCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCi0gICAgeyAw
LCAtMSB9LAotfTsKLQotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zVGFibGVWYWx1
ZXNbXSA9Ci17Ci0gICAgeyAidW5mb3JnZWFibGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1Vu
Zm9yZ2VhYmxlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgInVuZm9yZ2VhYmxlT3BlcmF0aW9uIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24pLCAo
aW50cHRyX3QpICgwKSB9IH0sCi19OwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1RhYmxl
ID0geyAyLCAzLCB0cnVlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnM6OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zVGFibGVWYWx1ZXMsIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1RhYmxlSW5k
ZXggfTsKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQotewotICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5j
dGlvblByb3RvdHlwZSgpOwotfQotCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKLXsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5z
Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMiX3MpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwotfQotCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGlucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH07Ci0KLS8qIEhhc2ggdGFibGUgZm9yIHBy
b3RvdHlwZSAqLwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlVGFi
bGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH0gfSwKLX07Ci0KLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90
b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSkgfTsKLQotdm9pZCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
Ci0gICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OmluZm8oKSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBl
VGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5T
SVRJT04oKTsKLX0KLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6c19pbmZvID0geyAiVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyIsICZCYXNl
OjpzX2luZm8sICZKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnNUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMpIH07
Ci0KLUpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGluczo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGlucz4mJiBpbXBsKQotICAgIDogSlNET01XcmFwcGVyPFRlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+KHN0cnVjdHVy
ZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQotewotfQotCi12b2lkIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBB
U1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwotCi0gICAgc3RhdGljX2Fzc2VydCghc3RkOjpp
c19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBt
YXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xh
c3Mgc3ViY2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7Ci0KLX0KLQotSlNPYmplY3QqIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6
Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
LXsKLSAgICByZXR1cm4gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
c1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3Qub2JqZWN0UHJvdG90eXBlKCkpKTsKLX0KLQotSlNPYmplY3QqIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6cHJvdG90eXBlKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1cm4gZ2V0
RE9NUHJvdG90eXBlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGlucz4odm0sIGdsb2JhbE9iamVjdCk7Ci19Ci0KLUpTVmFsdWUgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpn
ZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
Ci17Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yPih2bSwgKmpz
Q2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwotfQotCi12b2lk
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGluczo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKLXsKLSAgICBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqIHRoaXNPYmplY3Qg
PSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnMqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT5KU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6On5KU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMoKTsK
LX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7Ci0gICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBh
dXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5h
bWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlw
ZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRl
bShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICgh
R2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBl
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zp
c2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Olllcz4oKmxleGljYWxHbG9iYWxP
YmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci19Ci0K
LWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVy
dHlTbG90JiBzbG90KQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqPihvYmplY3QpOwotICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKLSAgICB1c2luZyBH
ZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtd
IChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5h
bWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVz
dWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxW
YWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6
OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxs
YWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKLSAg
ICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3Zl
cnJpZGVCdWlsdGluczo6WWVzPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5
LnZhbHVlKCkpKTsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAg
IHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIGxleGlj
YWxHbG9iYWxPYmplY3QsIGluZGV4LCBzbG90KTsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwot
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKG9iamVjdCwgaW5mbygpKTsKLSAgICBmb3IgKGF1dG8mIHByb3Bl
cnR5TmFtZSA6IHRoaXNPYmplY3QtPndyYXBwZWQoKS5zdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkp
Ci0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHBy
b3BlcnR5TmFtZSkpOwotICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7Ci19Ci0KLWJvb2wgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5z
OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBwdXRQcm9wZXJ0eVNsb3QpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMq
PihjZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7Ci0KLSAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KSk7Ci0gICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB0cnVlKTsKLSAgICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNl
dE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBK
U09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpwdXRCeUluZGV4KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVk
IGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMq
PihjZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7Ci0KLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4
KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwotICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS5z
ZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6ZGVmaW5lT3du
UHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRv
ciYgcHJvcGVydHlEZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQotewotICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0KLSAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5
bWJvbCgpKSB7Ci1zdGF0aWMgYm9vbCBpc1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgcmV0dXJuIHByb3BlcnR5TmFtZSA9PSAidW5mb3Jn
ZWFibGVBdHRyaWJ1dGUiIHx8IHByb3BlcnR5TmFtZSA9PSAidW5mb3JnZWFibGVPcGVyYXRpb24i
OwotfQotCi0gICAgICAgIGlmICghaXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZShwcm9wZXJ0eU5h
bWUpKSB7Ci0gICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlw
dG9yKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpKTsKLSAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5RGVzY3JpcHRvci52YWx1ZSgpKTsK
LSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7Ci0gICAg
ICAgICAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRv
U3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUHJvcGVydHlEZXNjcmlwdG9y
IG5ld1Byb3BlcnR5RGVzY3JpcHRvciA9IHByb3BlcnR5RGVzY3JpcHRvcjsKLSAgICBuZXdQcm9w
ZXJ0eURlc2NyaXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOwotICAgIHJldHVybiBKU09iamVj
dDo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIG5ld1Byb3BlcnR5RGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwotfQotCi10ZW1wbGF0
ZTw+IGlubGluZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnMqIElETEF0dHJpYnV0ZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5z
KiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFs
dWUoKSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwot
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8q
IHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3RvcihKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19
Ci0KLWJvb2wgc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0g
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byog
cHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQot
Ci1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zVW5mb3JnZWFibGVBdHRyaWJ1dGVHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyYgdGhpc09iamVjdCkKLXsKLSAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LnVuZm9yZ2VhYmxlQXR0cmlidXRlKCkpKSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1VuZm9y
Z2VhYmxlQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucz46OmdldDxqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnNVbmZvcmdlYWJsZUF0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
InVuZm9yZ2VhYmxlQXR0cmlidXRlIik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJy
aWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb25Cb2R5KEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxs
RnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzKQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
LSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVh
c2UoKTsKLSAgICBpbXBsLnVuZm9yZ2VhYmxlT3BlcmF0aW9uKCk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24oSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQotewotICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFi
bGVPcGVyYXRpb25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInVuZm9y
Z2VhYmxlT3BlcmF0aW9uIik7Ci19Ci0KLUpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6c3Vic3BhY2VG
b3JJbXBsKEpTQzo6Vk0mIHZtKQotewotICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKLSAgICBhdXRvJiBzcGFjZXMgPSBj
bGllbnREYXRhLnN1YnNwYWNlcygpOwotICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucy5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPiB8fCAh
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zOjpuZWVkc0Rlc3RydWN0aW9uKTsKLSAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKTsKLSAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGlucyk7Ci0gICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuZ2V0KCk7
Ci1JR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQotSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCi0gICAgaWYgKCZKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OnZpc2l0T3V0
cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQot
ICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2Up
OwotSUdOT1JFX1dBUk5JTkdTX0VORAotSUdOT1JFX1dBUk5JTkdTX0VORAotICAgIHJldHVybiBz
cGFjZTsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnM6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5
emVyJiBhbmFseXplcikKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyo+KGNl
bGwpOwotICAgIGFuYWx5emVyLnNldFdyYXBwZWRPYmplY3RGb3JDZWxsKGNlbGwsICZ0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkpOwotICAgIGlmICh0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpCi0gICAgICAgIGFuYWx5emVyLnNldExhYmVsRm9yQ2VsbChjZWxsLCAidXJsICIgKyB0
aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVybCgpLnN0cmluZygpKTsKLSAg
ICBCYXNlOjphbmFseXplSGVhcChjZWxsLCBhbmFseXplcik7Ci19Ci0KLWJvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zT3duZXI6
OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFu
ZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFzb24pCi17
Ci0gICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwot
ICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRp
bnNPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQq
IGNvbnRleHQpCi17Ci0gICAgYXV0byoganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zID0gc3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKj4oaGFuZGxlLnNs
b3QoKS0+YXNDZWxsKCkpOwotICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBw
ZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLT53cmFw
cGVkKCksIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucyk7Ci19Ci0KLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0jaWYgUExB
VEZPUk0oV0lOKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCi1leHRlcm4gIkMiIHsg
ZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQFdlYkNvcmVAQDZCQCIpW10p
KCk7IH0KLSNlbHNlCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmU1OFRl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNF
W107IH0KLSNlbmRpZgotI2VuZGlmCi0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
cz4mJiBpbXBsKQotewotCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotICAgIGNvbnN0
IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkp
OwotI2lmIFBMQVRGT1JNKFdJTikKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBf
X2lkZW50aWZpZXIoIj8/XzdUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zQFdlYkNvcmVAQDZCQCIpOwotI2Vsc2UKLSAgICB2b2lkKiBleHBl
Y3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTU4VGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0VbMl07Ci0jZW5kaWYKLQotICAg
IC8vIElmIHRoaXMgZmFpbHMgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGlucyBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0
byBhZGQgdGhlCi0gICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8g
dGhlIGludGVyZmFjZSBkZWZpbml0aW9uCi0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHlt
b3JwaGljPFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnM+Ojp2YWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnMgaXMgbm90IHBvbHltb3JwaGljIik7Ci0KLSAgICAvLyBJZiB5
b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1
Zywgb3IKLSAgICAvLyBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zIGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zIGhhcyBzdWJjbGFzc2VzIHRoYXQg
Z2V0IHBhc3NlZAotICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zIHlvdSB0
byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCi0gICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lw
VlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlv
bgotICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFi
bGVQb2ludGVyKTsKLSNlbmRpZgotICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+KGdsb2JhbE9i
amVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnMmIGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LCBpbXBsKTsKLX0KLQotVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjp0b1dyYXBwZWQoSlNDOjpWTSYgdm0s
IEpTQzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zKj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVk
KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmgJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaAkobm9uZXhpc3RlbnQp
CkBAIC0xLDEwMSArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJL
aXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCi0jaW5jbHVkZSAiVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5oIgotI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
cyA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz4gewotcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBK
U0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3Zl
cnJpZGVCdWlsdGlucz47Ci0gICAgc3RhdGljIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwp
Ci0gICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnMqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyhzdHJ1Y3R1cmUsICpnbG9iYWxP
YmplY3QsIFdURk1vdmUoaW1wbCkpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2Jh
bE9iamVjdC0+dm0oKSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgc3RhdGlj
IEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmpl
Y3QmKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RP
TUdsb2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6
SlNWYWx1ZSk7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6
OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVB
cnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0g
ICAgc3RhdGljIGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7Ci0g
ICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJv
dyk7Ci0gICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgY29uc3QgSlNDOjpQcm9wZXJ0
eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQzo6SlNDZWxsKik7Ci0KLSAgICBERUNMQVJFX0lORk87Ci0KLSAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCks
IEpTQzo6TWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOwotICAgIH0KLQotICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCi0gICAgewot
ICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3Vy
cmVudGx5KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBzdWJz
cGFjZUZvckltcGwodm0pOwotICAgIH0KLSAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKLSAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChK
U0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwotcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6
R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmUgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGUg
fCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJ
c05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5TmFtZXMgfCBKU0M6
Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6UHJvaGliaXRzUHJvcGVydHlDYWNo
aW5nOwotcHJvdGVjdGVkOgotICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0JiwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJy
aWRlQnVpbHRpbnM+JiYpOwotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Ci19
OwotCi1jbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnNPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImLCBjb25z
dCBjaGFyKiopOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+LCB2b2lkKiBjb250ZXh0KTsKLX07Ci0KLWlubGluZSBKU0M6OldlYWtIYW5kbGVPd25l
ciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqKQotewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnNPd25lcj4gb3duZXI7Ci0gICAgcmV0dXJuICZvd25lci5nZXQoKTsKLX0K
LQotaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyogd3JhcHBhYmxlT2JqZWN0KQotewotICAgIHJl
dHVybiB3cmFwcGFibGVPYmplY3Q7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMmKTsKLWlubGluZSBKU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0K
LUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RP
TUdsb2JhbE9iamVjdCosIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zPiYmKTsKLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5
Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz4mJiBpbXBsKSB7IHJldHVybiBpbXBs
ID8gdG9KU05ld2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlt
cGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9Ci0KLXRlbXBsYXRlPD4gc3Ry
dWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPiB7Ci0gICAgdXNpbmcgV3JhcHBlckNs
YXNzID0gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zOwotICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKjsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAyNjY2MzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODI3LDcgKzgyNyw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGlj
dGlvbmFyeSBjb252ZXJ0RGkKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOwogICAgIH0KICAgICBpZiAoIXN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmdWYWx1
ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHJlc3VsdC5zdHJpbmdUcmVhdE51bGxBc0VtcHR5
U3RyaW5nID0gY29udmVydDxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExET01TdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nVmFsdWUp
OworICAgICAgICByZXN1bHQuc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZyA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmdWYWx1ZSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgSlNWYWx1
ZSBzdHJpbmdXaXRoRGVmYXVsdFZhbHVlOwpAQCAtMTA1OSw4ICsxMDU5LDggQEAgSlNDOjpKU09i
amVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpTQwogICAgIH0KICAgICBhdXRvIHNtYWxsVW5z
aWduZWRJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IHRvSlM8SURMT2N0ZXQ+KGRpY3Rpb25hcnku
c21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdCk7CiAgICAgcmVzdWx0LT5wdXREaXJlY3Qo
dm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNtYWxsVW5zaWduZWRJbnRlZ2Vy
V2l0aERlZmF1bHQiKSwgc21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdFZhbHVlKTsKLSAg
ICBpZiAoIUlETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETERPTVN0cmluZz46OmlzTnVsbFZh
bHVlKGRpY3Rpb25hcnkuc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZykpIHsKLSAgICAgICAg
YXV0byBzdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nVmFsdWUgPSB0b0pTPElETFRyZWF0TnVs
bEFzRW1wdHlBZGFwdG9yPElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIElETFRy
ZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETERPTVN0cmluZz46OmV4dHJhY3RWYWx1ZUZyb21OdWxs
YWJsZShkaWN0aW9uYXJ5LnN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmcpKTsKKyAgICBpZiAo
IUlETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+Ojppc051bGxW
YWx1ZShkaWN0aW9uYXJ5LnN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmcpKSB7CisgICAgICAg
IGF1dG8gc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZ1ZhbHVlID0gdG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgSURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz46OmV4dHJh
Y3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJp
bmcpKTsKICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmciKSwgc3RyaW5nVHJlYXRO
dWxsQXNFbXB0eVN0cmluZ1ZhbHVlKTsKICAgICB9CiAgICAgYXV0byBzdHJpbmdXaXRoRGVmYXVs
dFZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIGRpY3Rpb25h
cnkuc3RyaW5nV2l0aERlZmF1bHQpOwpAQCAtMzI1Niw3ICszMjU2LDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dAogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExUcmVhdE51bGxBc0VtcHR5
QWRhcHRvcjxJRExET01TdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKCkpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExET01TdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKCkpKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKQEAgLTMyNjksNyArMzI2OSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHQKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExET01T
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETERPTVN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICAgcmV0dXJuIGltcGwuc2V0U3Ry
aW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwpA
QCAtMzI4Nyw3ICszMjg3LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialVzdnN0
cmluZwogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnVzdnN0cmluZ0F0dHJUcmVhdGlu
Z051bGxBc0VtcHR5U3RyaW5nKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnVzdnN0cmluZ0F0dHJUcmVh
dGluZ051bGxBc0VtcHR5U3RyaW5nKCkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alVzdnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKQEAgLTMzMDAsNyArMzMwMCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpV
c3ZzdHJpbmcKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICAgcmV0dXJuIGltcGwuc2V0VXN2c3RyaW5nQXR0clRyZWF0
aW5nTnVsbEFzRW1wdHlTdHJpbmcoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwpAQCAtMzMxOCw3ICsz
MzE4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakJ5dGVTdHJpbgogICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExCeXRlU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5ieXRlU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1w
dHlTdHJpbmcoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETEJ5dGVTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmJ5dGVTdHJpbmdBdHRyVHJlYXRpbmdOdWxs
QXNFbXB0eVN0cmluZygpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpCeXRlU3Ry
aW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQpAQCAt
MzMzMSw3ICszMzMxLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakJ5dGVTdHJp
bgogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETEJ5dGVTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETEJ5dGVTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgIHJldHVybiBpbXBsLnNldEJ5dGVTdHJpbmdBdHRyVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyhXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CkBAIC01OTg5LDcgKzU5ODks
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgaWYgKFVO
TElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIEVuc3VyZVN0aWxs
QWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwot
ICAgIGF1dG8gYXJnID0gY29udmVydDxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExET01T
dHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOworICAgIGF1
dG8gYXJnID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMRE9N
U3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHRo
cm93U2NvcGUucmVsZWFzZSgpOwogICAgIGltcGwubWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFz
RW1wdHlTdHJpbmcoV1RGTW92ZShhcmcpKTsKQEAgLTYyMzMsNyArNjIzMyw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBpZiAoVU5MSUtFTFkoY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFy
Z3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBzdHIg
PSBjb252ZXJ0PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETFVTVlN0cmluZz4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CisgICAgYXV0byBzdHIgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7CiAgICAgaW1wbC5tZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZyhXVEZNb3ZlKHN0cikpOwpAQCAtNjI5OSw3ICs2Mjk5LDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1l
bnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRvIHN0ciA9IGNv
bnZlcnQ8SURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8SURMQnl0ZVN0cmluZz4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CisgICAgYXV0byBzdHIgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExCeXRlU3RyaW5nPj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHRocm93U2NvcGUucmVsZWFz
ZSgpOwogICAgIGltcGwubWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5
U3RyaW5nKFdURk1vdmUoc3RyKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRp
bnMuY3BwCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAt
MSwzNTEgKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9w
ZW4gc291cmNlIHByb2plY3QuCi0gICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBn
ZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLQotICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oIgotCi0jaW5jbHVkZSAiQWN0
aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCi0jaW5jbHVkZSAi
SlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNp
bmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgotI2luY2x1ZGUgIkpT
RE9NQ29udmVydEludGVyZmFjZS5oIgotI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIK
LSNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCi0jaW5jbHVkZSAiSlNET01HbG9i
YWxPYmplY3QuaCIKLSNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgotI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCi0jaW5jbHVkZSAiSlNOb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgotI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5o
PgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0
aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci11
c2luZyBuYW1lc3BhY2UgSlNDOwotCi0vLyBGdW5jdGlvbnMKLQotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5h
bWVkSXRlbShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKLQotLy8gQXR0
cmlidXRlcwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25z
dHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3Io
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwotCi1jbGFzcyBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlIGZpbmFsIDog
cHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9
IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
c1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgSlNUZXN0
T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0
T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwot
ICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAgcmV0dXJuIHB0cjsKLSAg
ICB9Ci0KLSAgICBERUNMQVJFX0lORk87Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IEpTQzo6U3Vic3BhY2VBY2Nlc3M+Ci0gICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQotICAgIHsKLSAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKLSAgICB9Ci0gICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3Rv
dHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCi0gICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUp
Ci0gICAgewotICAgIH0KLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotfTsK
LVNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE92ZXJyaWRlQnVpbHRp
bnNQcm90b3R5cGUsIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OkJhc2UpOwotCi11
c2luZyBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZTxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zPjsKLQotdGVtcGxhdGU8PiBK
U1ZhbHVlIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQotewotICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5j
dGlvblByb3RvdHlwZSgpOwotfQotCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T3ZlcnJpZGVCdWls
dGluc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2
aWFsU3RyaW5nKHZtLCAiVGVzdE92ZXJyaWRlQnVpbHRpbnMiX3MpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwotfQotCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RPdmVycmlkZUJ1aWx0aW5zIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH07Ci0KLS8qIEhhc2ggdGFibGUgZm9yIHBy
b3RvdHlwZSAqLwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T3ZlcnJpZGVC
dWlsdGluc1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQotewotICAgIHsgImNvbnN0cnVjdG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH0gfSwKLSAgICB7ICJuYW1lZEl0ZW0iLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE92ZXJy
aWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbSksIChpbnRwdHJfdCkgKDEpIH0g
fSwKLX07Ci0KLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBl
OjpzX2luZm8gPSB7ICJUZXN0T3ZlcnJpZGVCdWlsdGlucyIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1By
b3RvdHlwZSkgfTsKLQotdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAg
IHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6aW5mbygp
LCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAg
ICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKLX0KLQotY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnNfaW5mbyA9IHsgIlRlc3RPdmVycmlkZUJ1
aWx0aW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKSB9OwotCi1KU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
OjpKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE92ZXJyaWRlQnVpbHRpbnM+JiYgaW1wbCkK
LSAgICA6IEpTRE9NV3JhcHBlcjxUZXN0T3ZlcnJpZGVCdWlsdGlucz4oc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCi17Ci19Ci0KLXZvaWQgSlNUZXN0T3ZlcnJpZGVCdWls
dGluczo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKLSAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwotCi0gICAgc3RhdGljX2Fz
c2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwgVGVzdE92ZXJyaWRlQnVpbHRp
bnM+Ojp2YWx1ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3Rd
IGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2Jq
ZWN0LiIpOwotCi19Ci0KLUpTT2JqZWN0KiBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpjcmVhdGVQ
cm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAg
IHJldHVybiBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9i
YWxPYmplY3QsIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Ci19
Ci0KLUpTT2JqZWN0KiBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpwcm90b3R5cGUoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBnZXRET01Qcm90
b3R5cGU8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucz4odm0sIGdsb2JhbE9iamVjdCk7Ci19Ci0KLUpT
VmFsdWUgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25z
dCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBnZXRET01Db25z
dHJ1Y3RvcjxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Ci19Ci0KLXZvaWQgSlNUZXN0
T3ZlcnJpZGVCdWlsdGluczo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKLXsKLSAgICBKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0T3ZlcnJp
ZGVCdWlsdGlucyo+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPkpTVGVzdE92ZXJyaWRlQnVpbHRp
bnM6On5KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKCk7Ci19Ci0KLWJvb2wgSlNUZXN0T3ZlcnJpZGVC
dWlsdGluczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETEludGVy
ZmFjZTxOb2RlPjsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVj
dCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6
OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1l
KSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAg
ICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5
cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9Owot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQ
cm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Olll
cz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRl
ckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2Rl
Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgV1RG
TW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4g
SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7Ci19Ci0KLWJvb2wgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xv
dCkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyo+KG9iamVj
dCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwot
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAg
IHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExJbnRlcmZhY2U8Tm9kZT47Ci0gICAgYXV0byBnZXR0
ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBP
cHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAg
ICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVy
dHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklE
TFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUg
R2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFj
dFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFt
ZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpZZXM+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
dGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRv
IHZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
dGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgp
KSk7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHNsb3QpOwotfQot
Ci12b2lkIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBW
TSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyo+KG9iamVjdCk7Ci0gICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhvYmplY3QsIGluZm8oKSk7Ci0gICAgZm9yIChhdXRvJiBw
cm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVkUHJvcGVydHlOYW1l
cygpKQotICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCBwcm9wZXJ0eU5hbWUpKTsKLSAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwotfQotCi10ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKiBJRExPcGVyYXRpb248SlNUZXN0
T3ZlcnJpZGVCdWlsdGlucz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpT
VGVzdE92ZXJyaWRlQnVpbHRpbnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwg
Y2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcnJp
ZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICBWTSYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldENv
bnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xv
YmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9
IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAg
dGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25z
dHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQ
cm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbUJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3Bl
cmF0aW9uPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlz
KQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBpZiAoVU5MSUtFTFkoY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFy
Z3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBuYW1l
ID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAu
dmFsdWUoKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLm5hbWVkSXRlbShXVEZNb3ZlKG5hbWUpKSkpKTsK
LX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5z
UHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0ZW0oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQotewotICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T3ZlcnJpZGVCdWlsdGlucz46OmNhbGw8anNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3Rv
dHlwZUZ1bmN0aW9uTmFtZWRJdGVtQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJh
bWUsICJuYW1lZEl0ZW0iKTsKLX0KLQotSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0T3ZlcnJpZGVC
dWlsdGluczo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQotewotICAgIGF1dG8mIGNsaWVu
dERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKLSAg
ICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwotICAgIGlmIChhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJyaWRlQnVpbHRpbnMuZ2V0KCkpCi0g
ICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+IHx8ICFK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpuZWVkc0Rlc3RydWN0aW9uKTsKLSAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE92
ZXJyaWRlQnVpbHRpbnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVycmlk
ZUJ1aWx0aW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zKTsKLSAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE92ZXJyaWRlQnVpbHRpbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zKTsKLSAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJy
aWRlQnVpbHRpbnMuZ2V0KCk7Ci1JR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQotSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCi0gICAg
aWYgKCZKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZK
U0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKLSAgICAgICAgY2xpZW50RGF0YS5v
dXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKLUlHTk9SRV9XQVJOSU5HU19F
TkQKLUlHTk9SRV9XQVJOSU5HU19FTkQKLSAgICByZXR1cm4gc3BhY2U7Ci19Ci0KLXZvaWQgSlNU
ZXN0T3ZlcnJpZGVCdWlsdGluczo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6
ZXImIGFuYWx5emVyKQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0T3Zl
cnJpZGVCdWlsdGlucyo+KGNlbGwpOwotICAgIGFuYWx5emVyLnNldFdyYXBwZWRPYmplY3RGb3JD
ZWxsKGNlbGwsICZ0aGlzT2JqZWN0LT53cmFwcGVkKCkpOwotICAgIGlmICh0aGlzT2JqZWN0LT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgIGFuYWx5emVyLnNldExhYmVsRm9yQ2Vs
bChjZWxsLCAidXJsICIgKyB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVy
bCgpLnN0cmluZygpKTsKLSAgICBCYXNlOjphbmFseXplSGVhcChjZWxsLCBhbmFseXplcik7Ci19
Ci0KLWJvb2wgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNp
dG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQotewotICAgIFVOVVNFRF9QQVJBTSho
YW5kbGUpOwotICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKLSAgICBVTlVTRURfUEFSQU0ocmVh
c29uKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
c093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCog
Y29udGV4dCkKLXsKLSAgICBhdXRvKiBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zID0gc3RhdGljX2Nh
c3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAg
ICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsK
LSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE92ZXJyaWRlQnVpbHRpbnMtPndyYXBw
ZWQoKSwganNUZXN0T3ZlcnJpZGVCdWlsdGlucyk7Ci19Ci0KLSNpZiBFTkFCTEUoQklORElOR19J
TlRFR1JJVFkpCi0jaWYgUExBVEZPUk0oV0lOKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0
ODMpCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdU
ZXN0T3ZlcnJpZGVCdWlsdGluc0BXZWJDb3JlQEA2QkAiKVtdKSgpOyB9Ci0jZWxzZQotZXh0ZXJu
ICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMjBUZXN0T3ZlcnJpZGVCdWlsdGluc0Vb
XTsgfQotI2VuZGlmCi0jZW5kaWYKLQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxU
ZXN0T3ZlcnJpZGVCdWlsdGlucz4mJiBpbXBsKQotewotCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5U
RUdSSVRZKQotICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQ
b2ludGVyKGltcGwucHRyKCkpOwotI2lmIFBMQVRGT1JNKFdJTikKLSAgICB2b2lkKiBleHBlY3Rl
ZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdUZXN0T3ZlcnJpZGVCdWlsdGluc0BX
ZWJDb3JlQEA2QkAiKTsKLSNlbHNlCi0gICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0g
Jl9aVFZON1dlYkNvcmUyMFRlc3RPdmVycmlkZUJ1aWx0aW5zRVsyXTsKLSNlbmRpZgotCi0gICAg
Ly8gSWYgdGhpcyBmYWlscyBUZXN0T3ZlcnJpZGVCdWlsdGlucyBkb2VzIG5vdCBoYXZlIGEgdnRh
YmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCi0gICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZU
YWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCi0gICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3BvbHltb3JwaGljPFRlc3RPdmVycmlkZUJ1aWx0aW5zPjo6dmFsdWUsICJU
ZXN0T3ZlcnJpZGVCdWlsdGlucyBpcyBub3QgcG9seW1vcnBoaWMiKTsKLQotICAgIC8vIElmIHlv
dSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVn
LCBvcgotICAgIC8vIFRlc3RPdmVycmlkZUJ1aWx0aW5zIGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0
T3ZlcnJpZGVCdWlsdGlucyBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKLSAgICAvLyB0
byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVzdE92ZXJyaWRlQnVpbHRpbnMgeW91IHRv
IG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKLSAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBW
VGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9u
Ci0gICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJs
ZVBvaW50ZXIpOwotI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdE92ZXJyaWRl
QnVpbHRpbnM+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPdmVycmlkZUJ1aWx0aW5zJiBpbXBsKQotewot
ICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7
Ci19Ci0KLVRlc3RPdmVycmlkZUJ1aWx0aW5zKiBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjp0b1dy
YXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAoYXV0byog
d3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyo+KHZtLCB2YWx1
ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwotICAgIHJldHVybiBudWxs
cHRyOwotfQotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgJKHJldmlz
aW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw5OCArMCwwIEBACi0v
KgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdz
LnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSlNET01X
cmFwcGVyLmgiCi0jaW5jbHVkZSAiVGVzdE92ZXJyaWRlQnVpbHRpbnMuaCIKLSNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0T3ZlcnJpZGVCdWls
dGlucz4gewotcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE92ZXJy
aWRlQnVpbHRpbnM+OwotICAgIHN0YXRpYyBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKiBjcmVhdGUo
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3RPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwpCi0gICAgewotICAgICAgICBKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0
T3ZlcnJpZGVCdWlsdGlucyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkp
OwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7Ci0gICAg
ICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0
ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKLSAgICBzdGF0aWMgSlND
OjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwotICAg
IHN0YXRpYyBUZXN0T3ZlcnJpZGVCdWlsdGlucyogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpT
VmFsdWUpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpK
U09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJy
YXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKLQotICAgIERFQ0xBUkVfSU5GTzsK
LQotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCi0gICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7Ci0gICAg
fQotCi0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29u
c3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1
YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKLSAgICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1
YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7Ci0gICAgfQotICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwotICAgIHN0YXRp
YyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSB8IEpTQzo6SW50
ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8
IEpTQzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90OwotcHJvdGVjdGVkOgotICAgIEpTVGVzdE92ZXJyaWRlQnVpbHRp
bnMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0T3ZlcnJpZGVC
dWlsdGlucz4mJik7Ci0KLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKLX07Ci0K
LWNsYXNzIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5k
bGVPd25lciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xv
dFZpc2l0b3ImLCBjb25zdCBjaGFyKiopOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKLX07Ci0KLWlubGluZSBKU0M6
OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RPdmVy
cmlkZUJ1aWx0aW5zKikKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0T3ZlcnJp
ZGVCdWlsdGluc093bmVyPiBvd25lcjsKLSAgICByZXR1cm4gJm93bmVyLmdldCgpOwotfQotCi1p
bmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0T3ZlcnJpZGVCdWlsdGlucyogd3JhcHBhYmxlT2Jq
ZWN0KQotewotICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RPdmVycmlk
ZUJ1aWx0aW5zJik7Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGVzdE92ZXJyaWRlQnVpbHRpbnMqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKGxleGljYWxH
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsgfQotSlND
OjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xv
YmFsT2JqZWN0KiwgUmVmPFRlc3RPdmVycmlkZUJ1aWx0aW5zPiYmKTsKLWlubGluZSBKU0M6OkpT
VmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VGVzdE92ZXJy
aWRlQnVpbHRpbnM+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4
aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDog
SlNDOjpqc051bGwoKTsgfQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0
ZXJUcmFpdHM8VGVzdE92ZXJyaWRlQnVpbHRpbnM+IHsKLSAgICB1c2luZyBXcmFwcGVyQ2xhc3Mg
PSBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOwotICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUg
PSBUZXN0T3ZlcnJpZGVCdWlsdGlucyo7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1z
dHlsZQojIyAtMSArMCwwICMjCi1MRgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsCShyZXZpc2lv
biAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDEzICszMywxMyBAQAogICAgIFtDRVJlYWN0aW9ucywgTWF5
VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyByZW1vdmVQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVy
dHlOYW1lKTsKICAgICBET01TdHJpbmc/IGdldFByb3BlcnR5UHJpb3JpdHkoRE9NU3RyaW5nIHBy
b3BlcnR5TmFtZSk7CiAKLSAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB1bmRl
ZmluZWQgc2V0UHJvcGVydHkoRE9NU3RyaW5nIHByb3BlcnR5TmFtZSwgW1RyZWF0TnVsbEFzPUVt
cHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWUsIG9wdGlvbmFsIFtUcmVhdE51bGxBcz1FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIHByaW9yaXR5ID0gIiIpOworICAgIFtDRVJlYWN0aW9ucywgTWF5VGhy
b3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVydHlOYW1l
LCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZSwgb3B0aW9uYWwgW0xl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgcHJpb3JpdHkgPSAiIik7CiAKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgZ2V0dGVyIERPTVN0
cmluZyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBD
U1NSdWxlPyBwYXJlbnRSdWxlOwogCi0gICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0
TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgY3NzRmxvYXQ7CisgICAgW0NFUmVhY3Rpb25z
XSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgY3NzRmxvYXQ7
CiAKICAgICBET01TdHJpbmc/IGdldFByb3BlcnR5U2hvcnRoYW5kKG9wdGlvbmFsIERPTVN0cmlu
ZyBwcm9wZXJ0eU5hbWUpOwogICAgIGJvb2xlYW4gaXNQcm9wZXJ0eUltcGxpY2l0KG9wdGlvbmFs
IERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwpAQCAtNDksNyArNDksNyBAQAogICAgIC8vIHByZWZp
eGVzIGZvciB0aGlzIHRvIGJlIHByYWN0aWNhbC4gSWYgd2UgcmVtb3ZlIGxlZ2FjeSBhbGlhc2Vz
LCB3ZSBzaG91bGQKICAgICAvLyByZWNvbnNpZGVyIHRoaXMgZGVjaXNpb24uCiAgICAgZ2V0dGVy
IChET01TdHJpbmcgb3IgZG91YmxlKSAoRE9NU3RyaW5nIG5hbWUpOwotICAgIFtDRVJlYWN0aW9u
cywgTWF5VGhyb3dFeGNlcHRpb24sIENhbGxOYW1lZFNldHRlck9ubHlGb3JTdXBwb3J0ZWRQcm9w
ZXJ0aWVzXSBzZXR0ZXIgdW5kZWZpbmVkIChET01TdHJpbmcgbmFtZSwgW1RyZWF0TnVsbEFzPUVt
cHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWUpOworICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dF
eGNlcHRpb24sIENhbGxOYW1lZFNldHRlck9ubHlGb3JTdXBwb3J0ZWRQcm9wZXJ0aWVzXSBzZXR0
ZXIgdW5kZWZpbmVkIChET01TdHJpbmcgbmFtZSwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBE
T01TdHJpbmcgdmFsdWUpOwogCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCwgYW5k
IHdlIHdvdWxkIGxpa2UgdG8gZHJvcCBzdXBwb3J0IGZvciBpdCBzb21lZGF5CiAgICAgRGVwcmVj
YXRlZENTU09NVmFsdWU/IGdldFByb3BlcnR5Q1NTVmFsdWUoRE9NU3RyaW5nIHByb3BlcnR5TmFt
ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5rbm93blJ1bGUuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmtub3duUnVsZS5pZGwJKHJldmlzaW9uIDI2
NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmtub3duUnVsZS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTIwLDcgKzIwLDcgQEAKIAogLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoK
IFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
IF0gaW50ZXJmYWNlIENTU1Vua25vd25SdWxlIDogQ1NTUnVsZSB7CiB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvRWxlbWVudENTU0lubGluZVN0eWxlLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudENTU0lubGluZVN0eWxlLmlkbAkocmV2aXNpb24gMjY2
NjM5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIC8vIENTU09NIGV4dGVuc2lvbnMgdG8gSFRN
TEVsZW1lbnQgLyBTVkdFbGVtZW50OgogLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29t
LyN0aGUtZWxlbWVudGNzc2lubGluZXN0eWxlLWludGVyZmFjZQogWwotICAgIE5vSW50ZXJmYWNl
T2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgRWxlbWVu
dENTU0lubGluZVN0eWxlIHsKICAgICBbSW1wbGVtZW50ZWRBcz1jc3NvbVN0eWxlLCBQdXRGb3J3
YXJkcz1jc3NUZXh0XSByZWFkb25seSBhdHRyaWJ1dGUgQ1NTU3R5bGVEZWNsYXJhdGlvbiBzdHls
ZTsgLy8gRklYTUU6IFNob3VsZCBiZSBbU2FtZU9iamVjdF0uCiAgICAgW0ltcGxlbWVudGVkQXM9
ZW5zdXJlQXR0cmlidXRlU3R5bGVNYXAsIENhY2hlZEF0dHJpYnV0ZSwgRW5hYmxlZEF0UnVudGlt
ZT1DU1NUeXBlZE9NLCBDb25kaXRpb25hbD1DU1NfVFlQRURfT01dIHJlYWRvbmx5IGF0dHJpYnV0
ZSBTdHlsZVByb3BlcnR5TWFwIGF0dHJpYnV0ZVN0eWxlTWFwOyAvLyBGSVhNRTogU2hvdWxkIGJl
IFtTYW1lT2JqZWN0XS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCShyZXZpc2lvbiAy
NjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMjksNyArMjksNyBAQAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiAgICAg
SlNDdXN0b21IZWFkZXIsCiBdIGludGVyZmFjZSBNZWRpYUxpc3QgewotICAgIGF0dHJpYnV0ZSBb
VHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBtZWRpYVRleHQ7CisgICAgYXR0cmli
dXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1lZGlhVGV4dDsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAKICAgICBnZXR0ZXIgRE9N
U3RyaW5nPyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlTWVkaWEuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZU1lZGlhLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
TWVkaWEuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAgKi8KIAogWwotICAg
IE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEdl
bmVyYXRlSXNSZWFjaGFibGU9UmVhY2hhYmxlRnJvbURPTVdpbmRvdywKICAgICBJbXBsZW1lbnRh
dGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2UgU3R5bGVNZWRpYSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0NoYXJhY3RlckRhdGEuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vQ2hhcmFjdGVyRGF0YS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE4LDcgKzE4LDcg
QEAKICAqLwogCiBpbnRlcmZhY2UgQ2hhcmFjdGVyRGF0YSA6IE5vZGUgewotICAgIGF0dHJpYnV0
ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBkYXRhOworICAgIGF0dHJpYnV0
ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBkYXRhOwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IERPTVN0cmluZyBzdWJzdHJpbmdEYXRhKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBs
b25nIGNvdW50KTsKICAgICB1bmRlZmluZWQgYXBwZW5kRGF0YShET01TdHJpbmcgZGF0YSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDcg
QEAKIAogLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNjaGlsZG5vZGUKIFsKLSAgICBO
b0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJm
YWNlIENoaWxkTm9kZSB7CiAgICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlLCBNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5kZWZpbmVkIGJlZm9yZSgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsK
ICAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGUsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmlu
ZWQgYWZ0ZXIoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDcgKzI0LDcgQEAKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2Ug
RE9NSW1wbGVtZW50YXRpb24gewogICAgIFtOZXdPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBE
b2N1bWVudFR5cGUgY3JlYXRlRG9jdW1lbnRUeXBlKERPTVN0cmluZyBxdWFsaWZpZWROYW1lLCBE
T01TdHJpbmcgcHVibGljSWQsIERPTVN0cmluZyBzeXN0ZW1JZCk7Ci0gICAgW05ld09iamVjdCwg
TWF5VGhyb3dFeGNlcHRpb25dIFhNTERvY3VtZW50IGNyZWF0ZURvY3VtZW50KERPTVN0cmluZz8g
bmFtZXNwYWNlVVJJLCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBxdWFsaWZp
ZWROYW1lLCBvcHRpb25hbCBEb2N1bWVudFR5cGU/IGRvY3R5cGUgPSBudWxsKTsKKyAgICBbTmV3
T2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gWE1MRG9jdW1lbnQgY3JlYXRlRG9jdW1lbnQoRE9N
U3RyaW5nPyBuYW1lc3BhY2VVUkksIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5n
IHF1YWxpZmllZE5hbWUsIG9wdGlvbmFsIERvY3VtZW50VHlwZT8gZG9jdHlwZSA9IG51bGwpOwog
ICAgIFtOZXdPYmplY3RdIEhUTUxEb2N1bWVudCBjcmVhdGVIVE1MRG9jdW1lbnQob3B0aW9uYWwg
RE9NU3RyaW5nIHRpdGxlKTsKIAogICAgIGJvb2xlYW4gaGFzRmVhdHVyZSgpOyAvLyBVc2VsZXNz
OyBhbHdheXMgcmV0dXJucyB0cnVlLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmlu
Z01hcC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5p
ZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBHZW5lcmF0ZUlz
UmVhY2hhYmxlPUltcGxFbGVtZW50Um9vdCwKLSAgICBPdmVycmlkZUJ1aWx0aW5zLAorICAgIExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMsCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCiBdIGludGVy
ZmFjZSBET01TdHJpbmdNYXAgewogICAgIGdldHRlciBET01TdHJpbmcgKERPTVN0cmluZyBuYW1l
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uRXZl
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlv
bk9yTW90aW9uRXZlbnQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNyArMjUsNyBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9REVWSUNFX09SSUVOVEFUSU9OLAot
ICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50
ZXJmYWNlIERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25FdmVudCB7CiAgICAgW0NhbGxXaXRoPURv
Y3VtZW50LCBFbmFibGVkQnlTZXR0aW5nPURldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbkFQSV0g
c3RhdGljIFByb21pc2U8RGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZT4g
cmVxdWVzdFBlcm1pc3Npb24oKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHJl
dmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgdHlwZWRlZiAoSFRNTFNjcmlwdEVsZW1lbnQgb3Ig
U1ZHU2NyaXB0RQogICAgIFtOZXdPYmplY3RdIFRyZWVXYWxrZXIgY3JlYXRlVHJlZVdhbGtlcihO
b2RlIHJvb3QsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgd2hhdFRvU2hvdyA9IDB4RkZGRkZGRkYs
IG9wdGlvbmFsIE5vZGVGaWx0ZXI/IGZpbHRlciA9IG51bGwpOwogCiAgICAgLy8gRXh0ZW5zaW9u
cyBmcm9tIEhUTUwgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8j
dGhlLWRvY3VtZW50LW9iamVjdCkuCi0gICAgW1B1dEZvcndhcmRzPWhyZWYsIFVuZm9yZ2VhYmxl
XSByZWFkb25seSBhdHRyaWJ1dGUgTG9jYXRpb24/IGxvY2F0aW9uOworICAgIFtQdXRGb3J3YXJk
cz1ocmVmLCBMZWdhY3lVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIExvY2F0aW9uPyBs
b2NhdGlvbjsKICAgICBhdHRyaWJ1dGUgVVNWU3RyaW5nIGRvbWFpbjsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgVVNWU3RyaW5nIHJlZmVycmVyOwogICAgIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgY29v
a2llOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHR5cGVkZWYgKEhUTUxTY3JpcHRFbGVtZW50IG9yIFNW
R1NjcmlwdEUKICAgICBbRW5hYmxlZEJ5U2V0dGluZz1VbmRvTWFuYWdlckFQSV0gcmVhZG9ubHkg
YXR0cmlidXRlIFVuZG9NYW5hZ2VyIHVuZG9NYW5hZ2VyOwogCiAgICAgLy8gU3BlY2lhbCBldmVu
dCBoYW5kbGVyIElETCBhdHRyaWJ1dGVzIHRoYXQgb25seSBhcHBseSB0byBEb2N1bWVudCBvYmpl
Y3RzLgotICAgIFtMZW5pZW50VGhpc10gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnJlYWR5c3Rh
dGVjaGFuZ2U7CisgICAgW0xlZ2FjeUxlbmllbnRUaGlzXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVy
IG9ucmVhZHlzdGF0ZWNoYW5nZTsKIAogICAgIC8vIEV4dGVuc2lvbnMgZnJvbSB0aGUgQ1NTT00t
VmlldyBzcGVjaWZpY2F0aW9uIChodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20tdmlldy8j
ZXh0ZW5zaW9ucy10by10aGUtZG9jdW1lbnQtaW50ZXJmYWNlKS4KICAgICBbSW1wbGVtZW50ZWRB
cz1zY3JvbGxpbmdFbGVtZW50Rm9yQVBJXSByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudD8gc2Ny
b2xsaW5nRWxlbWVudDsKQEAgLTE3OSwxMSArMTc5LDExIEBAIHR5cGVkZWYgKEhUTUxTY3JpcHRF
bGVtZW50IG9yIFNWR1NjcmlwdEUKIAogICAgIC8vIE9ic29sZXRlIGZlYXR1cmVzIGZyb20gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb2Jzb2xldGUuaHRtbAogCi0gICAg
W0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJp
bmcgZmdDb2xvcjsKLSAgICBbQ0VSZWFjdGlvbnMsIEltcGxlbWVudGVkQXM9bGlua0NvbG9yRm9y
QmluZGluZ3NdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBs
aW5rQ29sb3I7Ci0gICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5
U3RyaW5nXSBET01TdHJpbmcgdmxpbmtDb2xvcjsKLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0
ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBhbGlua0NvbG9yOwotICAgIFtD
RVJlYWN0aW9uc10gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5n
IGJnQ29sb3I7CisgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nXSBET01TdHJpbmcgZmdDb2xvcjsKKyAgICBbQ0VSZWFjdGlvbnMsIEltcGxlbWVudGVk
QXM9bGlua0NvbG9yRm9yQmluZGluZ3NdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmddIERPTVN0cmluZyBsaW5rQ29sb3I7CisgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgdmxpbmtDb2xvcjsKKyAgICBbQ0VSZWFj
dGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBhbGlu
a0NvbG9yOworICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENv
bGxlY3Rpb24gYW5jaG9yczsgLyogW1NhbWVPYmplY3RdICovCiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIEhUTUxDb2xsZWN0aW9uIGFwcGxldHM7IC8qIFtTYW1lT2JqZWN0XSAqLwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEFuZEVsZW1lbnRFdmVudEhhbmRs
ZXJzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3
IEBACiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2RvY3VtZW50YW5kZWxlbWVu
dGV2ZW50aGFuZGxlcnMKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIERvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxl
cnMgewogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25jb3B5OwogICAgIGF0dHJpYnV0ZSBF
dmVudEhhbmRsZXIgb25jdXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPclNo
YWRvd1Jvb3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9y
U2hhZG93Um9vdC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE9yU2hhZG93Um9vdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAK
IAogLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNkb2N1bWVudG9yc2hhZG93cm9vdAog
WwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAog
XSBpbnRlcmZhY2UgRG9jdW1lbnRPclNoYWRvd1Jvb3QgewogICAgIC8vIEV4dGVuc2lvbnMgZnJv
bSBTaGFkb3cgRE9NIEFQSSAoaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3Bl
Yy9zaGFkb3cvI2V4dGVuc2lvbnMtdG8tdGhlLWRvY3VtZW50b3JzaGFkb3dyb290LW1peGluKS4K
ICAgICAvLyBET01TZWxlY3Rpb24/IGdldFNlbGVjdGlvbigpOyAvLyBGSVhNRTogV2UgY3VycmVu
dGx5IGhhdmUgdGhpcyBvbiBEb2N1bWVudCBvbmx5LgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmlk
bAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC05MCw4ICs5MCw4IEBACiAKICAgICAvLyBFeHRlbnNpb25zIHRvIEVs
ZW1lbnQgZnJvbSBET00gUGFyc2luZyBhbmQgU2VyaWFsaXphdGlvbiBzcGVjaWZpY2F0aW9uLgog
ICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9ET00tUGFyc2luZy8jZXh0ZW5zaW9ucy10by10
aGUtZWxlbWVudC1pbnRlcmZhY2UKLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJlYXRO
dWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBpbm5lckhUTUw7Ci0gICAgW0NFUmVhY3Rpb25z
XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgb3V0ZXJIVE1M
OworICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10g
RE9NU3RyaW5nIGlubmVySFRNTDsKKyAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBvdXRlckhUTUw7CiAgICAgW0NFUmVhY3Rpb25z
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGluc2VydEFkamFjZW50SFRNTChET01TdHJp
bmcgcG9zaXRpb24sIERPTVN0cmluZyB0ZXh0KTsKIAogICAgIC8vIEV4dGVuc2lvbnMgZnJvbSBG
dWxsIFNjcmVlbiBBUEkgKGh0dHBzOi8vZnVsbHNjcmVlbi5zcGVjLndoYXR3Zy5vcmcvI2FwaSku
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgdHlwZWRl
ZiBkb3VibGUgRE9NSGlnaFJlc1RpbWVTdGFtcDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9v
bGVhbiBkZWZhdWx0UHJldmVudGVkOwogICAgIFtFbmFibGVkQXRSdW50aW1lPVNoYWRvd0RPTV0g
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gY29tcG9zZWQ7CiAKLSAgICBbVW5mb3JnZWFibGVd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzVHJ1c3RlZDsKKyAgICBbTGVnYWN5VW5mb3Jn
ZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzVHJ1c3RlZDsKICAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1wbGVtZW50ZWRBcz10aW1lU3RhbXBGb3JCaW5k
aW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIERPTUhpZ2hSZXNUaW1lU3RhbXAgdGltZVN0YW1wOwog
CiAgICAgdW5kZWZpbmVkIGluaXRFdmVudChET01TdHJpbmcgdHlwZSwgb3B0aW9uYWwgYm9vbGVh
biBidWJibGVzID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZhbHNlKTsg
Ly8gSGlzdG9yaWNhbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5pZGwJKHJl
dmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFj
ZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0CiBdIGludGVyZmFjZSBFdmVudExp
c3RlbmVyIHsKICAgICB1bmRlZmluZWQgaGFuZGxlRXZlbnQoRXZlbnQgZXZlbnQpOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9HbG9iYWxFdmVudEhhbmRsZXJzLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vR2xvYmFsRXZlbnRIYW5kbGVycy5pZGwJKHJldmlzaW9u
IDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9HbG9iYWxFdmVudEhhbmRsZXJzLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiAvLyBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjZ2xvYmFsZXZlbnRoYW5kbGVycwog
WwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAog
XSBpbnRlcmZhY2UgR2xvYmFsRXZlbnRIYW5kbGVycyB7CiAgICAgLy8gQ29tbWVudGVkIG91dCBl
dmVudCBoYW5kbGVycyBhcmUgZGVmaW5lZCBieSB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiBidXQK
ICAgICAvLyBhcmUgbm90IHlldCBpbXBsZW1lbnRlZC4KQEAgLTY1LDggKzY1LDggQEAKICAgICBh
dHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubG9hZGVkbWV0YWRhdGE7CiAgICAgYXR0cmlidXRlIEV2
ZW50SGFuZGxlciBvbmxvYWRzdGFydDsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubW91
c2Vkb3duOwotICAgIFtMZW5pZW50VGhpc10gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbm1vdXNl
ZW50ZXI7Ci0gICAgW0xlbmllbnRUaGlzXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubW91c2Vs
ZWF2ZTsKKyAgICBbTGVnYWN5TGVuaWVudFRoaXNdIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25t
b3VzZWVudGVyOworICAgIFtMZWdhY3lMZW5pZW50VGhpc10gYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbm1vdXNlbGVhdmU7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbm1vdXNlbW92ZTsK
ICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubW91c2VvdXQ7CiAgICAgYXR0cmlidXRlIEV2
ZW50SGFuZGxlciBvbm1vdXNlb3ZlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9OYXZpZ2F0
b3JNYXhUb3VjaFBvaW50cy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05h
dmlnYXRvck1heFRvdWNoUG9pbnRzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL05hdmlnYXRvck1heFRvdWNoUG9pbnRzLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNyArMjcsNyBAQAogKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgTWF4VG91Y2hQb2ludHMgewogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBsb25nIG1heFRvdWNoUG9pbnRzOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Ob25Eb2N1bWVudFR5cGVDaGlsZE5vZGUuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob25Eb2N1bWVudFR5cGVDaGlsZE5vZGUuaWRsCShyZXZpc2lvbiAy
NjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiAvLyBodHRwczovL2RvbS5zcGVj
LndoYXR3Zy5vcmcvI2ludGVyZmFjZS1ub25kb2N1bWVudHR5cGVjaGlsZG5vZGUKIFsKLSAgICBO
b0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJm
YWNlIE5vbkRvY3VtZW50VHlwZUNoaWxkTm9kZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVs
ZW1lbnQ/IHByZXZpb3VzRWxlbWVudFNpYmxpbmc7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVs
ZW1lbnQ/IG5leHRFbGVtZW50U2libGluZzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob25F
bGVtZW50UGFyZW50Tm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05v
bkVsZW1lbnRQYXJlbnROb2RlLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL05vbkVsZW1lbnRQYXJlbnROb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQAogCiAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2ludGVyZmFjZS1ub25l
bGVtZW50cGFyZW50bm9kZQogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgTm9uRWxlbWVudFBhcmVudE5vZGUgewogICAg
IFtET01KSVQ9UmVhZERPTV0gRWxlbWVudD8gZ2V0RWxlbWVudEJ5SWQoW1JlcXVpcmVzRXhpc3Rp
bmdBdG9tU3RyaW5nXSBET01TdHJpbmcgZWxlbWVudElkKTsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vUGFyZW50Tm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1BhcmVudE5vZGUuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
UGFyZW50Tm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogLy8gaHR0
cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNpbnRlcmZhY2UtcGFyZW50bm9kZQogWwotICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZh
Y2UgUGFyZW50Tm9kZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxDb2xsZWN0aW9uIGNo
aWxkcmVuOyAvLyBGSVhNRTogU2hvdWxkIGJlIFtTYW1lT2JqZWN0XS4KICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRWxlbWVudD8gZmlyc3RFbGVtZW50Q2hpbGQ7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRWxlbWVudCBob3N0OwogCiAgICAgLy8gRklYTUU6IFNlZW1zIHRvIGhhdmUg
YmVlbiBkcm9wcGVkIGZyb20gdGhlIFNoYWRvdyBET00gQVBJLgotICAgIFtDRVJlYWN0aW9uc10g
YXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGlubmVySFRNTDsK
KyAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERP
TVN0cmluZyBpbm5lckhUTUw7CiB9OwogCiBTaGFkb3dSb290IGluY2x1ZGVzIERvY3VtZW50T3JT
aGFkb3dSb290OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RhYmxlLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdGFibGUuaWRsCShyZXZpc2lvbiAyNjY2Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdGFibGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw3ICsyNSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9U2hhZG93RE9NLAogXSBp
bnRlcmZhY2UgU2xvdGFibGUgewogICAgIFtJbXBsZW1lbnRlZEFzPWFzc2lnbmVkU2xvdEZvckJp
bmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgSFRNTFNsb3RFbGVtZW50PyBhc3NpZ25lZFNsb3Q7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuaWRsCShyZXZpc2lvbiAy
NjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTE5LDEyICsxOSwxMiBAQAogICovCiAKIGludGVyZmFjZSBIVE1MQm9keUVs
ZW1lbnQgOiBIVE1MRWxlbWVudCB7Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVj
dF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGFMaW5rOwor
ICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBhTGluazsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVl
ZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGJhY2tncm91bmQ7Ci0gICAgW0NFUmVh
Y3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVm
bGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGxpbms7
Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51
bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHRleHQ7Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5l
ZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3Ry
aW5nIHZMaW5rOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0
ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBiZ0NvbG9yOworICAgIFtDRVJl
YWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmddIERPTVN0cmluZyBsaW5rOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxl
Y3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyB0ZXh0Owor
ICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyB2TGluazsKIAogICAgIFtOb3RFbnVtZXJhYmxlLCBX
aW5kb3dFdmVudEhhbmRsZXJdIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25ibHVyOwogICAgIFtO
b3RFbnVtZXJhYmxlLCBXaW5kb3dFdmVudEhhbmRsZXJdIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIg
b25lcnJvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwJKHJldmlzaW9u
IDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogWwogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAg
TmV3SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNocG9pbnRzLAotICAgIE92ZXJyaWRlQnVpbHRpbnMs
CisgICAgTGVnYWN5T3ZlcnJpZGVCdWlsdElucywKIF0gaW50ZXJmYWNlIEhUTUxEb2N1bWVudCA6
IERvY3VtZW50IHsgICAgCiAgICAgZ2V0dGVyIChXaW5kb3dQcm94eSBvciBFbGVtZW50IG9yIEhU
TUxDb2xsZWN0aW9uKSAoRE9NU3RyaW5nIG5hbWUpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQAogICAgIFtD
RVJlYWN0aW9uc10gYXR0cmlidXRlIGJvb2xlYW4gc3BlbGxjaGVjazsKICAgICAvLyB1bmRlZmlu
ZWQgZm9yY2VTcGVsbENoZWNrKCk7IC8vIEZJWE1FOiBOb3Qgc3VwcG9ydGVkLgogCi0gICAgW0NF
UmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcg
aW5uZXJUZXh0OworICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ10gRE9NU3RyaW5nIGlubmVyVGV4dDsKIAogICAgIC8vIEZJWE1FOiBTaG91bGQgYmUg
aW4gYSBzZXBhcmF0ZSBFbGVtZW50Q29udGVudEVkaXRhYmxlIGludGVyZmFjZS4KICAgICAvLyBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNlbGVtZW50Y29udGVudGVkaXRhYmxlCkBAIC01
NiwxMSArNTYsMTEgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIG9mZnNldEhlaWdo
dDsgLy8gRklYTUU6IFNob3VsZCBiZSBvZiB0eXBlIGxvbmcuCiAKICAgICAvLyBOb24gU3RhbmRh
cmQgYnV0IG1heSBnZXQgYWRkZWQgdG8gdGhlIHNwZWNpZmljYXRpb24gKGh0dHBzOi8vZ2l0aHVi
LmNvbS93aGF0d2cvaHRtbC9pc3N1ZXMvNjY4KS4KLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0
ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBvdXRlclRleHQ7CisgICAgW0NF
UmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcg
b3V0ZXJUZXh0OwogCiAgICAgLy8gaU9TIGF1dG9jb3JyZWN0IC8gYXV0b2NhcGl0YWxpemF0aW9u
IGV4dGVuc2lvbnMuCiAgICAgW0NvbmRpdGlvbmFsPUFVVE9DT1JSRUNULCBDRVJlYWN0aW9uc10g
YXR0cmlidXRlIGJvb2xlYW4gYXV0b2NvcnJlY3Q7Ci0gICAgW0NvbmRpdGlvbmFsPUFVVE9DQVBJ
VEFMSVpFLCBDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10g
RE9NU3RyaW5nIGF1dG9jYXBpdGFsaXplOworICAgIFtDb25kaXRpb25hbD1BVVRPQ0FQSVRBTEla
RSwgQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0
cmluZyBhdXRvY2FwaXRhbGl6ZTsKIAogICAgIC8vIEZJWE1FOiBXZSBhcmUgdGhlIG9ubHkgYnJv
d3NlciB0byBzdXBwb3J0IHRoaXMgbm93IHRoYXQgQmxpbmsgZHJvcHBlZCBpdCAoaHR0cDovL2Ny
YnVnLmNvbS82ODg5NDMpLgogICAgIFtDRVJlYWN0aW9ucywgUmVmbGVjdF0gYXR0cmlidXRlIERP
TVN0cmluZyB3ZWJraXRkcm9wem9uZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
bnRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250
RWxlbWVudC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvbnRFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTgsNyArMTgsNyBAQAogICovCiAK
IGludGVyZmFjZSBIVE1MRm9udEVsZW1lbnQgOiBIVE1MRWxlbWVudCB7Ci0gICAgW0NFUmVhY3Rp
b25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmlu
Z10gRE9NU3RyaW5nIGNvbG9yOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3Rd
IGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBjb2xvcjsKICAg
ICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZh
Y2U7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0
cmluZyBzaXplOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5p
ZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogCiBbCiAgICAgTGVnYWN5
VW5lbnVtZXJhYmxlTmFtZWRQcm9wZXJ0aWVzLAotICAgIE92ZXJyaWRlQnVpbHRpbnMsCisgICAg
TGVnYWN5T3ZlcnJpZGVCdWlsdElucywKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiBd
IGludGVyZmFjZSBIVE1MRm9ybUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW0NFUmVhY3Rp
b25zPU5vdE5lZWRlZCwgUmVmbGVjdD1hY2NlcHRfY2hhcnNldF0gYXR0cmlidXRlIERPTVN0cmlu
ZyBhY2NlcHRDaGFyc2V0OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1l
bnQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw4IEBAIGludGVyZmFjZSBI
VE1MRnJhbWVFbGVtZW50IDogSFRNTEVsZW1lbnQKICAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBEb2N1bWVudCBjb250ZW50RG9jdW1lbnQ7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IGNvbnRlbnRXaW5kb3c7CiAKLSAgICBbQ0VSZWFjdGlv
bnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5n
XSBET01TdHJpbmcgbWFyZ2luSGVpZ2h0OwotICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJl
ZmxlY3RdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBtYXJn
aW5XaWR0aDsKKyAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUg
W0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luSGVpZ2h0OworICAgIFtD
RVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmddIERPTVN0cmluZyBtYXJnaW5XaWR0aDsKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9y
Tm9kZSwgTWF5VGhyb3dFeGNlcHRpb25dIERvY3VtZW50IGdldFNWR0RvY3VtZW50KCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxz
LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSHlwZXJs
aW5rRWxlbWVudFV0aWxzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICov
CiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
CiBdIGludGVyZmFjZSBIVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzIHsKICAgICBbQ0VSZWFjdGlv
bnM9Tm90TmVlZGVkLCBSZWZsZWN0LCBVUkxdIHN0cmluZ2lmaWVyIGF0dHJpYnV0ZSBVU1ZTdHJp
bmcgaHJlZjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nIG9yaWdpbjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjY2
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsOCArMjMsOCBAQCBpbnRlcmZhY2UgSFRNTElGcmFtZUVsZW1lbnQgOiBI
VE1MRWxlbWVuCiAgICAgW1JlZmxlY3QsIENFUmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRl
IERPTVN0cmluZyBmcmFtZUJvcmRlcjsKICAgICBbUmVmbGVjdCwgQ0VSZWFjdGlvbnM9Tm90TmVl
ZGVkXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhlaWdodDsKICAgICBbUmVmbGVjdCwgVVJMLCBDRVJl
YWN0aW9ucz1Ob3ROZWVkZWRdIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgbG9uZ0Rlc2M7Ci0gICAgW1Jl
ZmxlY3QsIENFUmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0
eVN0cmluZ10gRE9NU3RyaW5nIG1hcmdpbkhlaWdodDsKLSAgICBbUmVmbGVjdCwgQ0VSZWFjdGlv
bnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJp
bmcgbWFyZ2luV2lkdGg7CisgICAgW1JlZmxlY3QsIENFUmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0
cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1hcmdpbkhlaWdodDsK
KyAgICBbUmVmbGVjdCwgQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgW0xlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luV2lkdGg7CiAgICAgW1JlZmxlY3QsIENF
UmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwogCiAgICAgW1B1
dEZvcndhcmRzPXZhbHVlXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NVG9rZW5MaXN0IHNhbmRib3g7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwJKHJldmlzaW9u
IDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVk
LCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7CiAgICAgW0NFUmVhY3Rpb25zPU5v
dE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBhbGlnbjsKICAgICBbQ0VSZWFj
dGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsdDsKLSAgICBb
Q0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVt
cHR5U3RyaW5nXSBET01TdHJpbmcgYm9yZGVyOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQs
IFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBi
b3JkZXI7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRlIERPTVN0cmluZz8g
Y3Jvc3NPcmlnaW47CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgaGVpZ2h0OwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGhzcGFjZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBA
QAogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWRdIGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsg
Ly8gcmVhZG9ubHkgZHJvcHBlZCBhcyBwYXJ0IG9mIERPTSBsZXZlbCAyCiAgICAgW0NFUmVhY3Rp
b25zPU5vdE5lZWRlZF0gYXR0cmlidXRlIERPTVN0cmluZyBkZWZhdWx0VmFsdWU7CiAgICAgLy8g
U2VlIHRoZSBkaXNjdXNzaW9uIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDAwODUKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgW1RyZWF0
TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWU7CisgICAgW0NFUmVhY3Rpb25zPU5v
dE5lZWRlZF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZh
bHVlOwogICAgIGF0dHJpYnV0ZSBEYXRlPyB2YWx1ZUFzRGF0ZTsKICAgICBhdHRyaWJ1dGUgdW5y
ZXN0cmljdGVkIGRvdWJsZSB2YWx1ZUFzTnVtYmVyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcg
KzI1LDcgQEAKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGNvZGU7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0
cmlidXRlIERPTVN0cmluZyBhbGlnbjsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZs
ZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFyY2hpdmU7Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5l
ZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3Ry
aW5nIGJvcmRlcjsKKyAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1
dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgYm9yZGVyOwogICAgIFtDRVJl
YWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3QsIFVSTF0gYXR0cmlidXRlIFVTVlN0cmluZyBjb2Rl
QmFzZTsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGNvZGVUeXBlOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3QsIFVS
TF0gYXR0cmlidXRlIFVTVlN0cmluZyBkYXRhOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3JGb3JlaWduRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3JGb3JlaWduRWxlbWVudC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9yRm9yZWlnbkVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw3ICsyNyw3IEBACiAvLyBGSVhNRTogdXBkYXRlIGFib3ZlIGxpbmsgd2hlbiB0aGlzIGNoYW5n
ZSBoYXMgYmVlbiBpbXBsZW1lbnRlZDoKIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaHRt
bC9pc3N1ZXMvNDcwMgogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgSFRNTE9yRm9yZWlnbkVsZW1lbnQgewogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdNYXAgZGF0YXNldDsgLy8gRklYTUU6IFNob3VsZCBi
ZSBbU2FtZU9iamVjdF0uCiAgICAgW0NFUmVhY3Rpb25zLCBJbXBsZW1lbnRlZEFzPXRhYkluZGV4
Rm9yQmluZGluZ3NdIGF0dHJpYnV0ZSBsb25nIHRhYkluZGV4OwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw4ICsyOSw4IEBAIGludGVyZmFjZSBIVE1MT3V0cHV0RWxlbWVudCA6IEhUTUxFbGVtZW4KICAg
ICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5h
bWU7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHR5cGU7Ci0gICAgW0NFUmVh
Y3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgZGVm
YXVsdFZhbHVlOwotICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0
eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVlOworICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGRlZmF1bHRWYWx1ZTsKKyAgICBbQ0VS
ZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyB2
YWx1ZTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHdpbGxWYWxpZGF0ZTsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgVmFsaWRpdHlTdGF0ZSB2YWxpZGl0eTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjY2
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQCBpbnRlcmZhY2UgSFRNTFRhYmxlQ2VsbEVsZW1l
bnQgOiBIVE1MRWxlCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgY2VsbEluZGV4OwogICAg
IFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWxp
Z247CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0
cmluZyBheGlzOwotICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0
ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBiZ0NvbG9yOworICAgIFtDRVJl
YWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmddIERPTVN0cmluZyBiZ0NvbG9yOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJl
ZmxlY3Q9Y2hhcl0gYXR0cmlidXRlIERPTVN0cmluZyBjaDsKICAgICBbQ0VSZWFjdGlvbnM9Tm90
TmVlZGVkLCBSZWZsZWN0PWNoYXJvZmZdIGF0dHJpYnV0ZSBET01TdHJpbmcgY2hPZmY7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmlkbAkocmV2aXNpb24gMjY2
NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsMTAgKzI2LDEwIEBAIGludGVyZmFjZSBIVE1MVGFibGVFbGVtZW50IDog
SFRNTEVsZW1lbnQKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24gcm93czsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24gdEJvZGllczsKICAgICBbQ0VS
ZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsaWduOwot
ICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbVHJlYXROdWxs
QXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBiZ0NvbG9yOworICAgIFtDRVJlYWN0aW9ucz1Ob3RO
ZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0
cmluZyBiZ0NvbG9yOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJp
YnV0ZSBET01TdHJpbmcgYm9yZGVyOwotICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxl
Y3RdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBjZWxsUGFk
ZGluZzsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1Ry
ZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgY2VsbFNwYWNpbmc7CisgICAgW0NFUmVh
Y3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIGNlbGxQYWRkaW5nOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQs
IFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBj
ZWxsU3BhY2luZzsKIAogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJp
YnV0ZSBET01TdHJpbmcgZnJhbWU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlUm93RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVSb3dFbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMs
NyBAQCBpbnRlcmZhY2UgSFRNTFRhYmxlUm93RWxlbWVudCA6IEhUTUxFbGVtCiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGxvbmcgc2VjdGlvblJvd0luZGV4OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBIVE1MQ29sbGVjdGlvbiBjZWxsczsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZs
ZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsaWduOwotICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVk
ZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmlu
ZyBiZ0NvbG9yOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0
ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBiZ0NvbG9yOwogICAgIFtDRVJl
YWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3Q9Y2hhcl0gYXR0cmlidXRlIERPTVN0cmluZyBjaDsK
ICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0PWNoYXJvZmZdIGF0dHJpYnV0ZSBE
T01TdHJpbmcgY2hPZmY7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0
cmlidXRlIERPTVN0cmluZyB2QWxpZ247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDcgQEAgaW50ZXJmYWNlIEhUTUxUZXh0QXJlYUVsZW1lbnQgOiBIVE1MRWxlbQogCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0eXBlOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVk
ZWRdIGF0dHJpYnV0ZSBET01TdHJpbmcgZGVmYXVsdFZhbHVlOwotICAgIGF0dHJpYnV0ZSBbVHJl
YXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZTsKKyAgICBhdHRyaWJ1dGUgW0xl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWU7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIGxvbmcgdGV4dExlbmd0aDsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIHdpbGxWYWxpZGF0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0FOR0xFSW5zdGFuY2VkQXJyYXlzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJH
TCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCiBd
IGludGVyZmFjZSBBTkdMRUluc3RhbmNlZEFycmF5cyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNDb21wb3NpdGluZy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzQ29tcG9zaXRpbmcuaWRsCShyZXZpc2lvbiAyNjY2Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNDb21wb3NpdGluZy5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VP
YmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93
LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc0NvbXBvc2l0aW5nIHsKICAgICAvLyBGSVhNRTog
QWxsIHRoZSB1bnJlc3RyaWN0ZWQgZmxvYXQgYXR0cmlidXRlcyBiZWxvdyBzaG91bGQgYmUgdW5y
ZXN0cmljdGVkIGRvdWJsZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNEcmF3SW1hZ2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc0RyYXdJbWFnZS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc0RyYXdJbWFnZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcg
KzM3LDcgQEAgdHlwZWRlZiAoSFRNTEltYWdlRWxlbWVudCBvciBIVE1MQ2FudmFzRQogKSBDYW52
YXNJbWFnZVNvdXJjZTsKIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpCiBdIGludGVyZmFj
ZSBDYW52YXNEcmF3SW1hZ2UgewogICAgIC8vIEZJWE1FOiBBbGwgdGhlIHVucmVzdHJpY3RlZCBm
bG9hdCBhcmd1bWVudHMgYmVsb3cgc2hvdWxkIGJlIHVucmVzdHJpY3RlZCBkb3VibGVzLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRHJhd1BhdGguaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0RyYXdQYXRoLmlkbAkocmV2
aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRHJhd1Bh
dGguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9z
ZWQ9KFdpbmRvdyxXb3JrZXIpCiBdIGludGVyZmFjZSBDYW52YXNEcmF3UGF0aCB7CiAgICAgLy8g
cGF0aCBBUEkgKHNlZSBhbHNvIENhbnZhc1BhdGgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNGaWxsU3Ryb2tlU3R5bGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNGaWxsU3Ryb2tlU3R5bGVzLmlkbAkocmV2aXNpb24g
MjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRmlsbFN0cm9rZVN0
eWxlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgdHlwZWRlZiAoSFRNTElt
YWdlRWxlbWVudCBvciBIVE1MQ2FudmFzRQogKSBDYW52YXNJbWFnZVNvdXJjZTsKIAogWwotICAg
IE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEV4
cG9zZWQ9KFdpbmRvdyxXb3JrZXIpCiBdIGludGVyZmFjZSBDYW52YXNGaWxsU3Ryb2tlU3R5bGVz
IHsKICAgICAvLyBjb2xvcnMgYW5kIHN0eWxlcyAoc2VlIGFsc28gdGhlIENhbnZhc1BhdGhEcmF3
aW5nU3R5bGVzIGFuZCBDYW52YXNUZXh0RHJhd2luZ1N0eWxlcyBpbnRlcmZhY2VzKQpAQCAtNDcs
NSArNDcsNSBAQCB0eXBlZGVmIChIVE1MSW1hZ2VFbGVtZW50IG9yIEhUTUxDYW52YXNFCiAgICAg
Ly8gRklYTUU6IEFsbCB0aGUgZmxvYXQgcGFyYW1ldGVycyBiZWxvdyBzaG91bGQgYmUgZG91Ymxl
cy4KICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENhbnZhc0dyYWRpZW50IGNyZWF0ZUxpbmVhckdy
YWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkxKTsKICAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIENhbnZhc0dyYWRpZW50IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0
IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2FudmFzUGF0dGVybj8gY3JlYXRlUGF0dGVybihDYW52
YXNJbWFnZVNvdXJjZSBpbWFnZSwgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcg
cmVwZXRpdGlvbik7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBDYW52YXNQYXR0ZXJuPyBjcmVh
dGVQYXR0ZXJuKENhbnZhc0ltYWdlU291cmNlIGltYWdlLCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmddIERPTVN0cmluZyByZXBldGl0aW9uKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNGaWx0ZXJzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNGaWx0ZXJzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRmlsdGVycy5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50
ZXJmYWNlIENhbnZhc0ZpbHRlcnMgewogICAgIC8vIGZpbHRlcnMKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc0ltYWdlRGF0YS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAkocmV2aXNpb24gMjY2NjM5
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5kb3cs
V29ya2VyKQogXSBpbnRlcmZhY2UgQ2FudmFzSW1hZ2VEYXRhIHsKICAgICAvLyBGSVhNRTogQWxs
IHRoZSBmbG9hdCBhcmd1bWVudHMgYmVsb3cgc2hvdWxkIGJlIGxvbmdzLgpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VTbW9vdGhpbmcuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0ltYWdlU21vb3RoaW5nLmlkbAko
cmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1h
Z2VTbW9vdGhpbmcuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAog
WwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAog
ICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpCiBdIGludGVyZmFjZSBDYW52YXNJbWFnZVNtb290
aGluZyB7CiAgICAgLy8gaW1hZ2Ugc21vb3RoaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNQYXRoLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNQYXRoLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0aC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIENh
bnZhc1BhdGggewogICAgIC8vIHNoYXJlZCBwYXRoIEFQSSBtZXRob2RzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoRHJhd2luZ1N0eWxlcy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0aERyYXdpbmdTdHlsZXMu
aWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNQYXRoRHJhd2luZ1N0eWxlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAK
ICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc1Bh
dGhEcmF3aW5nU3R5bGVzIHsKICAgICAvLyBGSVhNRTogQWxsIHRoZSB1bnJlc3RyaWN0ZWQgZmxv
YXQgYXJndW1lbnRzIC8gYXR0cmlidXRlcyBiZWxvdyBzaG91bGQgYmUgdW5yZXN0cmljdGVkIGRv
dWJsZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZWN0LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZWN0LmlkbAko
cmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVj
dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9J
bnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3Nl
ZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc1JlY3QgewogICAgIC8vIEZJWE1F
OiBBbGwgdGhlIHVucmVzdHJpY3RlZCBmbG9hdCBwYXJhbWV0ZXJzIGJlbG93IHNob3VsZCBiZSB1
bnJlc3RyaWN0ZWQgZG91Ymxlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1NoYWRvd1N0eWxlcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzU2hhZG93U3R5bGVzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU2hhZG93U3R5bGVzLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAg
ICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKQog
XSBpbnRlcmZhY2UgQ2FudmFzU2hhZG93U3R5bGVzIHsKICAgICAvLyBGSVhNRTogQWxsIHRoZSB1
bnJlc3RyaWN0ZWQgZmxvYXQgYXR0cmlidXRlcyBiZWxvdyBzaG91bGQgYmUgdW5yZXN0cmljdGVk
IGRvdWJsZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdGF0ZS5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3RhdGUu
aWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNTdGF0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0g
ICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAg
RXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc1N0YXRlIHsKICAgICAv
LyBzdGF0ZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVGV4dC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVGV4dC5pZGwJ
KHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Rl
eHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9z
ZWQ9V2luZG93CiBdIGludGVyZmFjZSBDYW52YXNUZXh0IHsKICAgICAvLyBGSVhNRTogQWxsIHRo
ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgcGFyYW1ldGVycyBiZWxvdyBzaG91bGQgYmUgdW5yZXN0cmlj
dGVkIGRvdWJsZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNUZXh0
RHJhd2luZ1N0eWxlcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzVGV4dERyYXdpbmdTdHlsZXMuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNUZXh0RHJhd2luZ1N0eWxlcy5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0g
aW50ZXJmYWNlIENhbnZhc1RleHREcmF3aW5nU3R5bGVzIHsKICAgICAvLyB0ZXh0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNUcmFuc2Zvcm0uaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1RyYW5zZm9ybS5pZGwJKHJldmlz
aW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1RyYW5zZm9y
bS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9J
bnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3Nl
ZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc1RyYW5zZm9ybSB7CiAgICAgLy8g
RklYTUU6IEFsbCB0aGUgdW5yZXN0cmljdGVkIGZsb2F0IHBhcmFtZXRlcnMgYmVsb3cgc2hvdWxk
IGJlIHVucmVzdHJpY3RlZCBkb3VibGVzLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzVXNlckludGVyZmFjZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzVXNlckludGVyZmFjZS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1VzZXJJbnRlcmZhY2UuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2Jq
ZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9zZWQ9V2luZG93CiBd
IGludGVyZmFjZSBDYW52YXNVc2VySW50ZXJmYWNlIHsKICAgICB1bmRlZmluZWQgZHJhd0ZvY3Vz
SWZOZWVkZWQoRWxlbWVudCBlbGVtZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0VYVEJsZW5kTWluTWF4LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9FWFRCbGVuZE1pbk1heC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVEJsZW5kTWluTWF4LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNyArMjYsNyBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIEdlbmVyYXRlSXNS
ZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0ludGVyZmFjZU9iamVj
dCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIEVYVEJsZW5kTWlu
TWF4IHsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIE1JTl9FWFQgPSAweDgwMDc7CiAgICAgY29u
c3QgdW5zaWduZWQgbG9uZyBNQVhfRVhUID0gMHg4MDA4OwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5pZGwJKHJldmlzaW9uIDI2
NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxvYXQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAqLwogCiBbCi0gICAgTm9JbnRl
cmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0aW9u
YWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250
ZXh0CiBdIGludGVyZmFjZSBFWFRDb2xvckJ1ZmZlckZsb2F0IHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5pZGwJ
KHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9y
QnVmZmVySGFsZkZsb2F0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogKi8K
IAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
LAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdl
YkdMUmVuZGVyaW5nQ29udGV4dAogXSBpbnRlcmZhY2UgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguaWRsCShy
ZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVw
dGguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAqLwogCiBbCi0gICAgTm9J
bnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0
aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdD
b250ZXh0CiBdIGludGVyZmFjZSBFWFRGcmFnRGVwdGggewpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5pZGwJKHJldmlzaW9uIDI2
NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0Qu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50
ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIENvbmRpdGlv
bmFsPVdFQkdMLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29u
dGV4dAogXSBpbnRlcmZhY2UgRVhUU2hhZGVyVGV4dHVyZUxPRCB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYy5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKIFsKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hh
YmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisg
ICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBFWFRUZXh0dXJlRmlsdGVy
QW5pc290cm9waWMgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgVEVYVFVSRV9NQVhfQU5JU09U
Uk9QWV9FWFQgPSAweDg0RkU7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBNQVhfVEVYVFVSRV9N
QVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkY7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9FWFRzUkdCLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9FWFRzUkdCLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvRVhUc1JHQi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIFsKICAg
ICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJl
bmRlcmluZ0NvbnRleHQsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBFWFRzUkdCIHsKICAgICBjb25zdCB1bnNpZ25lZCBs
b25nIFNSR0JfRVhUID0gMHg4QzQwOwogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgU1JHQl9BTFBI
QV9FWFQgPSAweDhDNDI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNFbGVt
ZW50SW5kZXhVaW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9PRVNFbGVtZW50SW5kZXhVaW50LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAg
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2Vu
ZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAogXSBpbnRlcmZhY2Ug
T0VTRWxlbWVudEluZGV4VWludCB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbAkocmV2aXNpb24gMjY2NjM5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJHTCwK
ICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdl
YkdMUmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lO
b0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMgewog
ICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9P
RVMgPSAweDhCOEI7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4
dHVyZUZsb2F0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNUZXh0dXJlRmxvYXQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsy
NCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIEdlbmVyYXRlSXNSZWFj
aGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKIF0gaW50ZXJmYWNlIE9FU1RleHR1cmVG
bG9hdCB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXRM
aW5lYXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1Rl
eHR1cmVGbG9hdExpbmVhci5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVhci5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJh
dGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAogXSBpbnRlcmZhY2UgT0VT
VGV4dHVyZUZsb2F0TGluZWFyIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVIYWxmRmxvYXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjUsNyArMjUsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwK
KyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAg
ICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCiBdIGludGVy
ZmFjZSBPRVNUZXh0dXJlSGFsZkZsb2F0IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaWRsCShyZXZpc2lv
biAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZs
b2F0TGluZWFyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsK
LSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAg
ICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJl
bmRlcmluZ0NvbnRleHQsCiBdIGludGVyZmFjZSBPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJh
eU9iamVjdC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NyBAQAogICAgIENvbmRpdGlvbmFsPVdFQkdMLCAKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAog
ICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKLSAgICBO
b0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJm
YWNlIE9FU1ZlcnRleEFycmF5T2JqZWN0IHsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIFZFUlRF
WF9BUlJBWV9CSU5ESU5HX09FUyA9IDB4ODVCNTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaWRsCShyZXZpc2lvbiAy
NjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxv
YXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAqLwogCiBbCi0gICAgTm9J
bnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0
aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdD
b250ZXh0CiBdIGludGVyZmFjZSBXZWJHTENvbG9yQnVmZmVyRmxvYXQgewpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1
cmVBU1RDLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3
ICsyNyw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50
cywKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCi0g
ICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGlu
dGVyZmFjZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQyB7CiAgICAgLyogQ29tcHJlc3NlZCBU
ZXh0dXJlIEZvcm1hdCAqLwogICAgIGNvbnN0IEdMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ180
eDRfS0hSID0gMHg5M0IwOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUFUQy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5pZGwJKHJldmlzaW9uIDI2NjYzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VC
R0wsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUlt
cGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBXZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDIHsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIENPTVBSRVNTRURfUkdCX0FUQ19XRUJHTCA9
IDB4OEM5MjsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIENPTVBSRVNTRURfUkdCQV9BVENfRVhQ
TElDSVRfQUxQSEFfV0VCR0wgPSAweDhDOTM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuaWRsCShyZXZp
c2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlRVRDMS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICAgICBD
b25kaXRpb25hbD1XRUJHTCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIEdlbmVyYXRl
SXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxIHsKICAgICAvKiBDb21wcmVzc2VkIFRleHR1cmUgRm9ybWF0cyAq
LwogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9SR0JfRVRDMV9XRUJHTCA9IDB4
OEQ2NDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVFVEMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIERv
Tm90Q2hlY2tDb25zdGFudHMsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQyB7CiAgICAg
LyogQ29tcHJlc3NlZCBUZXh0dXJlIEZvcm1hdCAqLwogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcg
Q09NUFJFU1NFRF9SMTFfRUFDICAgICAgICAgICAgICAgICAgICAgICAgPSAweDkyNzA7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVQVlJUQy5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBEb05vdENo
ZWNrQ29uc3RhbnRzLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5n
Q29udGV4dCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9i
amVjdCwKIF0gaW50ZXJmYWNlIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQyB7CiAgICAgY29u
c3QgdW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HID0gMHg4QzAw
OwogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lN
RyA9IDB4OEMwMTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQkdM
LAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBs
V2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VY
VCA9IDB4ODNGMDsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIENPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDFfRVhUID0gMHg4M0YxOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuaWRsCShyZXZp
c2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQ3NSR0IuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAg
ICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBHZW5l
cmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCi0gICAgTm9JbnRlcmZh
Y2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09N
UFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQgPSAweDhDNEM7CiAgICAgY29uc3QgdW5zaWduZWQg
bG9uZyBDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVCA9IDB4OEM0RDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJl
ckluZm8uaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NyBAQAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAg
ICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZh
Y2UgV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBVTk1B
U0tFRF9WRU5ET1JfV0VCR0wgPSAweDkyNDU7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBVTk1B
U0tFRF9SRU5ERVJFUl9XRUJHTCA9IDB4OTI0NjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAg
IEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0lu
dGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNl
IFdlYkdMRGVidWdTaGFkZXJzIHsKICAgICBET01TdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZShXZWJHTFNoYWRlciBzaGFkZXIpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIERv
Tm90Q2hlY2tDb25zdGFudHMsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgV2ViR0xEZXB0aFRleHR1cmUgewogICAgIGNvbnN0IHVu
c2lnbmVkIGxvbmcgVU5TSUdORURfSU5UXzI0XzhfV0VCR0wgPSAweDg0RkE7CiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5pZGwJKHJl
dmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1
ZmZlcnMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiB0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgR0xlbnVtOwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5
Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJ
c1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAogICAgIERvTm90Q2hlY2tDb25z
dGFudHMsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTExvc2VDb250ZXh0
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTExvc2VD
b250ZXh0LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xMb3NlQ29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAK
ICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QsCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1J
bXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAogXSBpbnRlcmZhY2UgV2ViR0xMb3NlQ29udGV4dCB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDcgKzUzLDcgQEAgdHlwZWRlZiAoSFRNTENhbnZhc0VsZW1lbnQpIFdlYkdMQ2Fu
dmFzOwogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAg
ICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKIF0g
aW50ZXJmYWNlIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgewogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcg
QEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJs
ZT1JbXBsCiBdIGludGVyZmFjZSBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmlkbAko
cmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWVHZW5lcmljLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICAgIENvbmRp
dGlvbmFsPVZJREVPLAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAogICAgIEpTR2VuZXJhdGVU
b05hdGl2ZU9iamVjdCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVy
ZmFjZU9iamVjdCwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKIF0gaW50ZXJmYWNl
IFRleHRUcmFja0N1ZUdlbmVyaWMgOiBWVFRDdWUgewogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVlRUUmVnaW9uTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WVFRSZWdpb25MaXN0LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb25MaXN0LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsNyBAQAogWwogICAgIENvbmRpdGlvbmFsPVZJREVPLAogICAgIEltcGxlbWVu
dGF0aW9uTGFja3NWVGFibGUsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBWVFRSZWdpb25MaXN0IHsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgZ2V0dGVyIFZUVFJlZ2lvbj8g
aXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSUhvc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNyArMzEsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAg
ICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
CiBdIGludGVyZmFjZSBDb21tYW5kTGluZUFQSUhvc3QgewogICAgIHVuZGVmaW5lZCBjbGVhckNv
bnNvbGVNZXNzYWdlcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5pZGwJKHJldmlz
aW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiBb
CiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKICAgICBKU0dlbmVyYXRlVG9KU09iamVj
dCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
IF0gaW50ZXJmYWNlIEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdCB7CiAgICAgW0Nh
bGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gc2VxdWVuY2U8Tm9kZT4gZ2V0RWxl
bWVudHNCeUNvbXB1dGVkUm9sZShET01TdHJpbmcgcm9sZSwgb3B0aW9uYWwgTm9kZT8gY29udGFp
bmVyKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0RE9N
T2JqZWN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXVkaXRET01PYmplY3QuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRET01PYmplY3QuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw3ICsyNiw3IEBACiBbCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKICAgICBK
U0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lO
b0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIEluc3BlY3RvckF1ZGl0RE9NT2JqZWN0IHsK
ICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gaGFzRXZlbnRMaXN0ZW5lcnMoTm9kZSBu
b2RlLCBvcHRpb25hbCBET01TdHJpbmcgdHlwZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0UmVzb3VyY2VzT2JqZWN0LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRSZXNvdXJjZXNPYmplY3Qu
aWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXVkaXRSZXNvdXJjZXNPYmplY3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3
IEBACiBbCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKICAgICBKU0dlbmVyYXRlVG9K
U09iamVjdCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9i
amVjdCwKIF0gaW50ZXJmYWNlIEluc3BlY3RvckF1ZGl0UmVzb3VyY2VzT2JqZWN0IHsKICAgICBb
Q2FsbFdpdGg9RG9jdW1lbnQsIE1heVRocm93RXhjZXB0aW9uXSBzZXF1ZW5jZTxSZXNvdXJjZT4g
Z2V0UmVzb3VyY2VzKCk7CiAgICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlv
bl0gUmVzb3VyY2VDb250ZW50IGdldFJlc291cmNlQ29udGVudChET01TdHJpbmcgaWQpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAK
IFsKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0
LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0IHsKICAgICB1bmRlZmluZWQgbG9hZGVkKCk7CiAgICAgdW5kZWZpbmVkIGNsb3Nl
V2luZG93KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiAyNjY2
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDExICs1MSwxMSBAQCB0eXBlZGVmIFVTVlN0cmluZyBDU1NPTVN0cmluZzsKICAgICBF
eHBvc2VkPVdpbmRvdywKIF0gaW50ZXJmYWNlIERPTVdpbmRvdyA6IEV2ZW50VGFyZ2V0IHsKICAg
ICAvLyBUaGUgY3VycmVudCBicm93c2luZyBjb250ZXh0LgotICAgIFtEb05vdENoZWNrU2VjdXJp
dHksIFVuZm9yZ2VhYmxlLCBDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQ
cm94eSB3aW5kb3c7CisgICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgTGVnYWN5VW5mb3JnZWFibGUs
IEN1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHdpbmRvdzsKICAg
ICBbUmVwbGFjZWFibGUsIERvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyLCBDdXN0b21HZXR0ZXJd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSBzZWxmOwotICAgIFtVbmZvcmdlYWJsZV0g
cmVhZG9ubHkgYXR0cmlidXRlIERvY3VtZW50IGRvY3VtZW50OworICAgIFtMZWdhY3lVbmZvcmdl
YWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIERvY3VtZW50IGRvY3VtZW50OwogICAgIGF0dHJpYnV0
ZSBET01TdHJpbmcgbmFtZTsKLSAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBQdXRGb3J3YXJkcz1o
cmVmLCBVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIExvY2F0aW9uIGxvY2F0aW9uOwor
ICAgIFtEb05vdENoZWNrU2VjdXJpdHksIFB1dEZvcndhcmRzPWhyZWYsIExlZ2FjeVVuZm9yZ2Vh
YmxlXSByZWFkb25seSBhdHRyaWJ1dGUgTG9jYXRpb24gbG9jYXRpb247CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIEhpc3RvcnkgaGlzdG9yeTsKICAgICBbRW5hYmxlZEJ5U2V0dGluZz1DdXN0b21F
bGVtZW50cywgSW1wbGVtZW50ZWRBcz1lbnN1cmVDdXN0b21FbGVtZW50UmVnaXN0cnldIHJlYWRv
bmx5IGF0dHJpYnV0ZSBDdXN0b21FbGVtZW50UmVnaXN0cnkgY3VzdG9tRWxlbWVudHM7CiAgICAg
W1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgQmFyUHJvcCBsb2NhdGlvbmJhcjsKQEAg
LTc0LDExICs3NCwxMSBAQCB0eXBlZGVmIFVTVlN0cmluZyBDU1NPTVN0cmluZzsKICAgICAvLyBP
dGhlciBicm93c2luZyBjb250ZXh0cy4KICAgICBbUmVwbGFjZWFibGUsIERvTm90Q2hlY2tTZWN1
cml0eU9uR2V0dGVyLCBDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94
eSBmcmFtZXM7CiAgICAgW1JlcGxhY2VhYmxlLCBEb05vdENoZWNrU2VjdXJpdHlPbkdldHRlcl0g
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwotICAgIFtEb05vdENoZWNr
U2VjdXJpdHlPbkdldHRlciwgVW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQ
cm94eT8gdG9wOworICAgIFtEb05vdENoZWNrU2VjdXJpdHlPbkdldHRlciwgTGVnYWN5VW5mb3Jn
ZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gdG9wOwogICAgIFtEb05vdENo
ZWNrU2VjdXJpdHlPbkdldHRlciwgQ3VzdG9tU2V0dGVyXSBhdHRyaWJ1dGUgV2luZG93UHJveHk/
IG9wZW5lcjsKICAgICBbUmVwbGFjZWFibGUsIERvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyXSBy
ZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHk/IHBhcmVudDsKICAgICBbQ2hlY2tTZWN1cml0
eUZvck5vZGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50PyBmcmFtZUVsZW1lbnQ7Ci0gICAg
W0NhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgTWF5VGhyb3dFeGNlcHRpb25dIFdp
bmRvd1Byb3h5PyBvcGVuKG9wdGlvbmFsIFVTVlN0cmluZyB1cmwgPSAiIiwgb3B0aW9uYWwgRE9N
U3RyaW5nIHRhcmdldCA9ICJfYmxhbmsiLCBvcHRpb25hbCBbVHJlYXROdWxsQXM9RW1wdHlTdHJp
bmddIERPTVN0cmluZyBmZWF0dXJlcyA9ICIiKTsKKyAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93
JkZpcnN0V2luZG93LCBNYXlUaHJvd0V4Y2VwdGlvbl0gV2luZG93UHJveHk/IG9wZW4ob3B0aW9u
YWwgVVNWU3RyaW5nIHVybCA9ICIiLCBvcHRpb25hbCBET01TdHJpbmcgdGFyZ2V0ID0gIl9ibGFu
ayIsIG9wdGlvbmFsIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGZlYXR1cmVz
ID0gIiIpOwogCiAgICAgLy8gVGhlIHVzZXIgYWdlbnQuCiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IE5hdmlnYXRvciBuYXZpZ2F0b3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbENy
eXB0by5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxDcnlwdG8u
aWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbENyeXB0
by5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICovCiAKIFsKLSAgICBOb0lu
dGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNl
IEdsb2JhbENyeXB0byB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIENyeXB0byBjcnlwdG87CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxQZXJmb3JtYW5jZS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxQZXJmb3JtYW5jZS5pZGwJKHJldmlz
aW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsUGVyZm9ybWFuY2UuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAvLyBodHRwczovL3czYy5naXRodWIu
aW8vaHItdGltZS8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpCiBdIGludGVyZmFjZSBH
bG9iYWxQZXJmb3JtYW5jZSB7CiAgICAgW1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUg
UGVyZm9ybWFuY2UgcGVyZm9ybWFuY2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0
aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAko
cmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPVJl
YWNoYWJsZUZyb21ET01XaW5kb3csCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmpl
Y3QsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBVbmZvcmdlYWJsZQorICAg
IExlZ2FjeVVuZm9yZ2VhYmxlCiBdIGludGVyZmFjZSBMb2NhdGlvbiB7CiAgICAgW1NldHRlckNh
bGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgRG9Ob3RDaGVja1NlY3VyaXR5T25TZXR0
ZXJdIHN0cmluZ2lmaWVyIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaHJlZjsKIApAQCAtNjIsNSArNjIs
NSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgb3JpZ2luOwogCiAgICAgLy8g
RklYTUU6IEFkZCBzdXBwb3J0IGZvciBTYW1lT2JqZWN0LgotICAgIFtVbmZvcmdlYWJsZSwgQ2Fj
aGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nTGlzdCBhbmNlc3Rvck9y
aWdpbnM7CisgICAgW0xlZ2FjeVVuZm9yZ2VhYmxlLCBDYWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IGFuY2VzdG9yT3JpZ2luczsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvcklELmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvcklELmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3JJRC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcg
QEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdAogXSBpbnRlcmZhY2UgTmF2aWdhdG9ySUQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgYXBwQ29kZU5hbWU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBhcHBOYW1lOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JMYW5ndWFnZS5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JMYW5ndWFnZS5p
ZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yTGFu
Z3VhZ2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgKi8KIAogWwotICAg
IE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJm
YWNlIE5hdmlnYXRvckxhbmd1YWdlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGxhbmd1YWdlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxET01TdHJpbmc+
IGxhbmd1YWdlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yT25MaW5lLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvck9uTGluZS5pZGwJ
KHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yT25MaW5l
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICovCiAKIFsKLSAgICBOb0lu
dGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0CiBdIGludGVyZmFjZSBO
YXZpZ2F0b3JPbkxpbmUgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIG9uTGluZTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclBsdWdpbnMuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yUGx1Z2lucy5pZGwJKHJldmlz
aW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yUGx1Z2lucy5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZh
Y2VPYmplY3QKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdAogXSBpbnRlcmZhY2UgTmF2aWdh
dG9yUGx1Z2lucyB7CiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01QbHVn
aW5BcnJheSBwbHVnaW5zOwogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgRE9N
TWltZVR5cGVBcnJheSBtaW1lVHlwZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmln
YXRvclNlcnZpY2VXb3JrZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yU2VydmljZVdvcmtlci5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9yU2VydmljZVdvcmtlci5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVIsCiAg
ICAgRW5hYmxlZEF0UnVudGltZT1TZXJ2aWNlV29ya2VyCiBdIGludGVyZmFjZSBOYXZpZ2F0b3JT
ZXJ2aWNlV29ya2VyIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yU2hhcmUu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yU2hhcmUuaWRs
CShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclNoYXJl
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAKIFsKLSAgICBOb0ludGVy
ZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFbmFibGVkQnlT
ZXR0aW5nPVdlYlNoYXJlCiBdIGludGVyZmFjZSBOYXZpZ2F0b3JTaGFyZSB7CiAgICAgW0NhbGxX
aXRoPURvY3VtZW50LCBTZWN1cmVDb250ZXh0XSBib29sZWFuIGNhblNoYXJlKG9wdGlvbmFsIFNo
YXJlRGF0YSBzaGFyZURhdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01X
aW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2lu
ZG93LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVE
T01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MCwyMCArNDAsMjAgQEAKICAgICBKU0N1
c3RvbVRvTmF0aXZlT2JqZWN0LAogICAgIEpTTGVnYWN5UGFyZW50PUpTUmVtb3RlRE9NV2luZG93
QmFzZSwKICAgICBMZWdhY3lVbmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMsCi0gICAgTm9JbnRl
cmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgR2xvYmFsPVdp
bmRvdywKICAgICBFeHBvc2VkPVdpbmRvdywKIF0gaW50ZXJmYWNlIFJlbW90ZURPTVdpbmRvdyB7
Ci0gICAgW1VuZm9yZ2VhYmxlLCBJbXBsZW1lbnRlZEFzPXNlbGZdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBXaW5kb3dQcm94eSB3aW5kb3c7CisgICAgW0xlZ2FjeVVuZm9yZ2VhYmxlLCBJbXBsZW1lbnRl
ZEFzPXNlbGZdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSB3aW5kb3c7CiAgICAgW1Jl
cGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgc2VsZjsKLSAgICBbUHV0
Rm9yd2FyZHM9aHJlZiwgVW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBMb2NhdGlvbj8g
bG9jYXRpb247IC8vIEZJWE1FOiBTaG91bGQgbm90IGJlIG51bGxhYmxlLgorICAgIFtQdXRGb3J3
YXJkcz1ocmVmLCBMZWdhY3lVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIExvY2F0aW9u
PyBsb2NhdGlvbjsgLy8gRklYTUU6IFNob3VsZCBub3QgYmUgbnVsbGFibGUuCiAgICAgW0NhbGxX
aXRoPUluY3VtYmVudERvY3VtZW50LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQg
Y2xvc2UoKTsKICAgICBbRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gY2xvc2VkOwogICAgIFtDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3csIEZvcndhcmRE
ZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBmb2N1cygpOwogICAgIFtGb3J3YXJkRGVjbGFyZUlu
SGVhZGVyXSB1bmRlZmluZWQgYmx1cigpOwogICAgIFtSZXBsYWNlYWJsZSwgSW1wbGVtZW50ZWRB
cz1zZWxmXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgZnJhbWVzOwogICAgIFtSZXBs
YWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwotICAgIFtV
bmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5PyB0b3A7CisgICAgW0xl
Z2FjeVVuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHk/IHRvcDsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHk/IG9wZW5lcjsKICAgICBbUmVwbGFjZWFi
bGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gcGFyZW50OwogICAgIFtDYWxsV2l0
aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1
bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0YXJnZXRPcmlnaW4s
IG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1dpbmRvd0V2ZW50SGFuZGxlcnMuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2luZG93RXZlbnRIYW5kbGVycy5pZGwJKHJldmlzaW9uIDI2NjYzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RXZlbnRIYW5kbGVycy5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI3dpbmRvd2V2ZW50aGFuZGxlcnMKIFsKLSAgICBO
b0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJm
YWNlIFdpbmRvd0V2ZW50SGFuZGxlcnMgewogICAgIC8vIENvbW1lbnRlZCBvdXQgZXZlbnQgaGFu
ZGxlcnMgYXJlIGRlZmluZWQgYnkgdGhlIEhUTUw1IHNwZWNpZmljYXRpb24gYnV0CiAgICAgLy8g
YXJlIG5vdCB5ZXQgaW1wbGVtZW50ZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRv
d09yV29ya2VyR2xvYmFsU2NvcGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdHlwZWRlZiAoSFRNTEltYWdlRWxlbWVudAogdHlwZWRl
ZiAoQ2FudmFzSW1hZ2VTb3VyY2Ugb3IgQmxvYiBvciBJbWFnZURhdGEpIEltYWdlQml0bWFwU291
cmNlOwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QsCiBdIGludGVyZmFjZSBXaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlIHsKICAgICBbUmVw
bGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgb3JpZ2luOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisg
ICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRl
ZExlbmd0aCB4OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB5OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5pZGwJKHJldmlzaW9uIDI2NjYz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw3ICsyNSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAor
ICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgU1ZHRml0VG9WaWV3Qm94
IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRSZWN0IHZpZXdCb3g7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2
ZUFzcGVjdFJhdGlvOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaWRsCShyZXZpc2lvbiAyNjY2
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw3ICsyNSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIFN1cHByZXNzVG9KU09iamVjdCwKIF0gaW50ZXJm
YWNlIFNWR1Rlc3RzIHsKICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFNWR1N0
cmluZ0xpc3QgcmVxdWlyZWRGZWF0dXJlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdV
UklSZWZlcmVuY2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklS
ZWZlcmVuY2UuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VVJJUmVmZXJlbmNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogICovCiAK
IFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
ICAgICBTdXBwcmVzc1RvSlNPYmplY3QsCiBdIGludGVyZmFjZSBTVkdVUklSZWZlcmVuY2Ugewog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBocmVmOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsy
NSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgU1ZHWm9vbUFuZFBhbiB7CiAgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgU1ZHX1pPT01BTkRQQU5fVU5LTk9XTiA9IDA7CiAgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgU1ZHX1pPT01BTkRQQU5fRElTQUJMRSA9IDE7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHWm9vbUV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHWm9vbUV2ZW50LmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1pvb21FdmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAogICovCiAKLWludGVyZmFjZSBTVkdab29tRXZlbnQgOiBVSUV2ZW50IHsgCitp
bnRlcmZhY2UgU1ZHWm9vbUV2ZW50IDogVUlFdmVudCB7CiAgICAgW05ld09iamVjdF0gcmVhZG9u
bHkgYXR0cmlidXRlIFNWR1JlY3Qgem9vbVJlY3RTY3JlZW47CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVucmVzdHJpY3RlZCBmbG9hdCBwcmV2aW91c1NjYWxlOwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBTVkdQb2ludCBwcmV2aW91c1RyYW5zbGF0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvR0NPYnNlcnZhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVz
dGluZy9HQ09ic2VydmF0aW9uLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNv
cmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAs
NyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVy
ZmFjZU9iamVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEV4cG9ydE1h
Y3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRlcmZhY2UgR0NPYnNlcnZhdGlv
biB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwJ
KHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgZW51bSBGcmFtZUZsYXR0
ZW5pbmdWYWx1ZSB7ICJEaXNhYmxlZCIsIAogZW51bSBGb250TG9hZFRpbWluZ092ZXJyaWRlIHsg
IkJsb2NrIiwgIlN3YXAiLCAiRmFpbHVyZSIgfTsKIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0
LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0
LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRlcmZh
Y2UgSW50ZXJuYWxTZXR0aW5ncyA6IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQgewpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNDYs
NyArMjQ2LDcgQEAgZW51bSBDb250ZW50U2l6ZUNhdGVnb3J5IHsKIAogWwogICAgIEV4cG9ydE1h
Y3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAor
ICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgSW50ZXJuYWxzIHsKICAg
ICBET01TdHJpbmcgYWRkcmVzcyhOb2RlIG5vZGUpOwogICAgIGJvb2xlYW4gbm9kZU5lZWRzU3R5
bGVSZWNhbGMoTm9kZSBub2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzTWFwTGlrZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHNNYXBMaWtlLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHNNYXBMaWtlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCwKICAg
ICBTa2lwVlRhYmxlVmFsaWRhdGlvbiwKIF0gaW50ZXJmYWNlIEludGVybmFsc01hcExpa2UKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzU2V0TGlrZS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHNTZXRMaWtlLmlkbAkocmV2aXNp
b24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHNTZXRMaWtlLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVy
ZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvcnRNYWNy
bz1XRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCwKICAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbiwK
IF0gaW50ZXJmYWNlIEludGVybmFsc1NldExpa2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTWFsbG9jU3RhdGlzdGljcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVz
dGluZy9NYWxsb2NTdGF0aXN0aWNzLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dl
YkNvcmUvdGVzdGluZy9NYWxsb2NTdGF0aXN0aWNzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQs
NyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lO
b0ludGVyZmFjZU9iamVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEV4
cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRlcmZhY2UgTWFsbG9j
U3RhdGlzdGljcyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01lbW9yeUluZm8uaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTWVtb3J5SW5mby5pZGwJKHJl
dmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTWVtb3J5SW5mby5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZh
Y2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgSW1wbGVtZW50YXRp
b25MYWNrc1ZUYWJsZSwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9S
VCwKIF0gaW50ZXJmYWNlIE1lbW9yeUluZm8gewpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3
IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEsCi0gICAgTm9JbnRlcmZh
Y2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3J0TWFjcm89
V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQsCiBdIGludGVyZmFjZSBNb2NrQ0RNRmFjdG9yeSB7
CiAgICAgYXR0cmlidXRlIHNlcXVlbmNlPERPTVN0cmluZz4gc3VwcG9ydGVkRGF0YVR5cGVzOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICsz
OSw3IEBAIGVudW0gRGVjaXNpb24gewogCiBbCiAgICAgQ29uZGl0aW9uYWw9Q09OVEVOVF9GSUxU
RVJJTkcsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3QsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQogXSBpbnRlcmZhY2UgTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncyB7CiAgICAgYXR0cmlidXRlIGJvb2xlYW4gZW5hYmxlZDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheS5pZGwJKHJldmlzaW9uIDI2
NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxh
Y2tzVlRhYmxlCiBdIGludGVyZmFjZSBNb2NrUGFnZU92ZXJsYXkgewogICAgIHVuZGVmaW5lZCBz
ZXRGcmFtZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGlu
YXRvci5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1BheW1lbnRDb29yZGluYXRvci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAK
IAogWwogICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwK
KyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIE1vY2tQYXltZW50Q29v
cmRpbmF0b3IgewogICAgIHVuZGVmaW5lZCBzZXRDYW5NYWtlUGF5bWVudHMoYm9vbGVhbiBjYW5N
YWtlUGF5bWVudHMpOwogICAgIHVuZGVmaW5lZCBzZXRDYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZl
Q2FyZChib29sZWFuIGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbAkocmV2
aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50
ZXJuYWxzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICAgIENvbmRpdGlv
bmFsPVNFUlZJQ0VfV09SS0VSLAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRf
RVhQT1JULAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgTm9JbnRlcmZhY2VP
YmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBTZXJ2aWNl
V29ya2VySW50ZXJuYWxzIHsKICAgICB1bmRlZmluZWQgc2V0T25saW5lKGJvb2xlYW4gaXNPbmxp
bmUpOwogICAgIFByb21pc2U8UmVzcG9uc2U+IHdhaXRGb3JGZXRjaEV2ZW50VG9GaW5pc2goRmV0
Y2hFdmVudCBldmVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1R5cGVDb252ZXJz
aW9ucy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9UeXBlQ29udmVy
c2lvbnMuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1R5
cGVDb252ZXJzaW9ucy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwog
CiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Qs
CiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JF
X1RFU1RTVVBQT1JUX0VYUE9SVCwKIF0gaW50ZXJmYWNlIFR5cGVDb252ZXJzaW9ucyB7CkBAIC02
NCw3ICs2NCw3IEBACiAgICAgYXR0cmlidXRlIERPTVN0cmluZyB0ZXN0U3RyaW5nOwogICAgIGF0
dHJpYnV0ZSBCeXRlU3RyaW5nIHRlc3RCeXRlU3RyaW5nOwogICAgIGF0dHJpYnV0ZSBVU1ZTdHJp
bmcgdGVzdFVTVlN0cmluZzsKLSAgICBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5n
XSBET01TdHJpbmcgdGVzdFRyZWF0TnVsbEFzRW1wdHlTdHJpbmc7CisgICAgYXR0cmlidXRlIFtM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHRlc3RUcmVhdE51bGxBc0VtcHR5U3Ry
aW5nOwogCiAgICAgdW5kZWZpbmVkIHNldFRlc3RMb25nUmVjb3JkKHJlY29yZDxET01TdHJpbmcs
IGxvbmc+IHJlY29yZCk7CiAgICAgcmVjb3JkPERPTVN0cmluZywgbG9uZz4gdGVzdExvbmdSZWNv
cmQoKTsKQEAgLTgxLDcgKzgxLDcgQEAKIAogICAgIGF0dHJpYnV0ZSAoRE9NU3RyaW5nIG9yIFtD
bGFtcF0gbG9uZyBvciBzZXF1ZW5jZTxbQ2xhbXBdIGxvbmc+KSB0ZXN0Q2xhbXBVbmlvbjsKICAg
ICBhdHRyaWJ1dGUgKERPTVN0cmluZyBvciBbRW5mb3JjZVJhbmdlXSBsb25nIG9yIHNlcXVlbmNl
PFtFbmZvcmNlUmFuZ2VdIGxvbmc+KSB0ZXN0RW5mb3JjZVJhbmdlVW5pb247Ci0gICAgYXR0cmli
dXRlIChbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBvciBsb25nIG9yIHNlcXVl
bmNlPFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nPikgdGVzdFRyZWF0TnVsbEFz
RW1wdHlTdHJpbmdVbmlvbjsKKyAgICBhdHRyaWJ1dGUgKFtMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z10gRE9NU3RyaW5nIG9yIGxvbmcgb3Igc2VxdWVuY2U8W0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
XSBET01TdHJpbmc+KSB0ZXN0VHJlYXROdWxsQXNFbXB0eVN0cmluZ1VuaW9uOwogfTsKIAogWwpA
QCAtOTYsNyArOTYsNyBAQAogXSBkaWN0aW9uYXJ5IFR5cGVDb252ZXJzaW9uc0RpY3Rpb25hcnkg
ewogICAgIGxvbmcgbG9uZ1ZhbHVlID0gMDsKICAgICBET01TdHJpbmcgc3RyaW5nVmFsdWUgPSAi
IjsKLSAgICBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyB0cmVhdE51bGxBc0Vt
cHR5U3RyaW5nVmFsdWUgPSAiIjsKKyAgICBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0
cmluZyB0cmVhdE51bGxBc0VtcHR5U3RyaW5nVmFsdWUgPSAiIjsKICAgICBzZXF1ZW5jZTxET01T
dHJpbmc+IHNlcXVlbmNlVmFsdWUgPSBbXTsKICAgICAoTm9kZSBvciBzZXF1ZW5jZTxET01TdHJp
bmc+IG9yIFR5cGVDb252ZXJzaW9uc090aGVyRGljdGlvbmFyeSkgdW5pb25WYWx1ZSA9IG51bGw7
CiAgICAgW0NsYW1wXSBsb25nIGNsYW1wTG9uZ1ZhbHVlID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5pZGwJKHJldmlzaW9uIDI2NjYzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNyArMjgsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQlhSLAogICAgIEludGVyZmFjZU5h
bWU9RmFrZVhSRGV2aWNlLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgTm9J
bnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFj
ZSBXZWJGYWtlWFJEZXZpY2UgewogICAvLyBTZXRzIHRoZSB2YWx1ZXMgdG8gYmUgdXNlZCBmb3Ig
c3Vic2VxdWVudAogICAvLyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKSBjYWxsYmFja3MuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xs
ZXIuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZh
a2VYUklucHV0Q29udHJvbGxlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAK
ICAgICBDb25kaXRpb25hbD1XRUJYUiwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAog
ICAgIEludGVyZmFjZU5hbWU9RmFrZVhSSW5wdXRDb250cm9sbGVyLAotICAgIE5vSW50ZXJmYWNl
T2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJmYWNlIFdlYkZha2VY
UklucHV0Q29udHJvbGxlciB7CiAgICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhlIGhhbmRlZG5lc3Mg
b2YgdGhlIGRldmljZSBoYXMgY2hhbmdlZC4KICAgICB1bmRlZmluZWQgc2V0SGFuZGVkbmVzcyhY
UkhhbmRlZG5lc3MgaGFuZGVkbmVzcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dl
YlhSVGVzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJYUlRl
c3QuaWRsCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhS
VGVzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICAgICBDb25kaXRpb25h
bD1XRUJYUiwKICAgICBFeHBvc2VkPVdpbmRvdywKICAgICBJbnRlcmZhY2VOYW1lPVhSVGVzdCwK
LSAgICBOb0ludGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0CiBdIGlu
dGVyZmFjZSBXZWJYUlRlc3QgewogICAgIC8vIFNpbXVsYXRlcyBjb25uZWN0aW5nIGEgZGV2aWNl
IHRvIHRoZSBzeXN0ZW0uCiAgICAgLy8gVXNlZCB0byBpbnN0YW50aWF0ZSBhIGZha2UgZGV2aWNl
IGZvciB1c2UgaW4gdGVzdHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0
V29ya2VyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0
V29ya2VyLmlkbAkocmV2aXNpb24gMjY2NjM5KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9B
YnN0cmFjdFdvcmtlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICAqLwog
CiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Qs
CiBdIGludGVyZmFjZSBBYnN0cmFjdFdvcmtlciB7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbmVycm9yOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5TUmVzb2x2ZXIu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5TUmVzb2x2ZXIuaWRs
CShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOU1Jlc29sdmVy
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQAogICovCiAKIFsKLSAgICBOb0lu
dGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBTa2lwVlRh
YmxlVmFsaWRhdGlvbiwKIF0gaW50ZXJmYWNlIFhQYXRoTlNSZXNvbHZlciB7CiAgICAgRE9NU3Ry
aW5nPyBsb29rdXBOYW1lc3BhY2VVUkkoRE9NU3RyaW5nPyBwcmVmaXgpOwpJbmRleDogU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI2NjY0OSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDktMDQgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBw
bGUuY29tPgorCisgICAgICAgIFtXZWJJRExdIFJlYWxpZ24gb3VyIElETCBleHRlbmRlZCBhdHRy
aWJ1dGUgbmFtZXMgd2l0aCB0aG9zZSBzcGVjaWZpZWQgaW4gV2ViSURMCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYxOTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmRpc2FibGVPdmVycmlkZUJ1aWx0aW5zQmVoYXZpb3Ip
OgorICAgICAgICBVcGRhdGUgZm9yIG5ldyBuYW1lIFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZC4K
KwogMjAyMC0wOS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IE1vdmUgbGF6eSBEaXNwbGF5TGluayB0ZWFyIGRvd24gbG9naWMgZnJvbSB0aGUgV2ViUHJvY2Vz
cyB0byB0aGUgVUlQcm9jZXNzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQuY3BwCShyZXZpc2lvbiAyNjY2MzkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om1h
a2VBbGxTCiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6ZGlzYWJsZU92ZXJyaWRl
QnVpbHRpbnNCZWhhdmlvcigpCiB7Ci0gICAgbV93b3JsZC0+ZGlzYWJsZU92ZXJyaWRlQnVpbHRp
bnNCZWhhdmlvcigpOworICAgIG1fd29ybGQtPmRpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
QmVoYXZpb3IoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408086</attachid>
            <date>2020-09-05 08:44:34 -0700</date>
            <delta_ts>2020-09-05 08:53:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216194-20200905084433.patch</filename>
            <type>text/plain</type>
            <size>449701</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2MiBAQAorMjAyMC0wOS0wNCAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYklETF0gUmVhbGlnbiBvdXIg
SURMIGV4dGVuZGVkIGF0dHJpYnV0ZSBuYW1lcyB3aXRoIHRob3NlIHNwZWNpZmllZCBpbiBXZWJJ
REwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjE5
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE92ZXIg
dGltZSwgdGhlIFdlYklETCBhbmQgSFRNTCBzcGVjaWZpY2F0aW9ucyBoYXZlIGFkZGVkIC8gcmVu
YW1lZCBleHRlbmRlZCBhdHRyaWJ1dGVzIGFuZCB3ZSBoYXZlCisgICAgICAgIG5vdCBzdGF5ZWQg
dXAgdG8gZGF0ZS4gVGhpcyB1cGRhdGVzIHRoZSBuYW1lcyBldmVyeXdoZXJlIGFuZCBVUkxzIGlu
IElETEF0dHJpYnV0ZXMuanNvbi4KKyAgICAKKyAgICAgICAgICAgICBbQWxsb3dTaGFyZWRdIC0+
IG5ldywgbWFya2VkIGFzIHVuc3VwcG9ydGVkCisgICAgICAgICAgICAgW0hUTUxDb25zdHJ1Y3Rv
cl0gLSA+IG5ldywgbWFya2VkIGFzIHVuc3VwcG9ydGVkCisgICAgICAgICAgICAgW0xlZ2FjeUxl
bmllbnRTZXR0ZXJdIC0+IHJlbmFtZWQgZnJvbSBbTGVuaWVudFNldHRlcl0sIHN0aWxsIHVuc3Vw
cG9ydGVkCisgICAgICAgICAgICAgW0xlZ2FjeUxlbmllbnRUaGlzXSAtPiByZW5hbWVkIGZyb20g
W0xlbmllbnRUaGlzXQorICAgICAgICAgICAgIFtMZWdhY3lOYW1lc3BhY2VdIC0+IG5ldywgbWFy
a2VkIGFzIHVuc3VwcG9ydGVkCisgICAgICAgICAgICAgW0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
XSAtPiByZW5hbWVkIGZyb20gW05vSW50ZXJmYWNlT2JqZWN0XQorICAgICAgICAgICAgIFtMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ10gLT4gcmVuYW1lZCBmcm9tIFtUcmVhdE51bGxBcz1FbXB0eVN0
cmluZ10KKyAgICAgICAgICAgICBbTGVnYWN5T3ZlcnJpZGVCdWlsdEluc10gLT4gcmVuYW1lZCBm
cm9tIE92ZXJyaWRlQnVpbHRpbnMKKyAgICAgICAgICAgICBbTGVnYWN5VHJlYXROb25PYmplY3RB
c051bGxdIC0+IHJlbmFtZWQgZnJvbSBbVHJlYXROb25PYmplY3RBc051bGxdLCBzdGlsbCB1bnN1
cHBvcnRlZAorICAgICAgICAgICAgIFtMZWdhY3lVbmZvcmdlYWJsZV0gLT4gcmVuYW1lZCBmcm9t
IFtVbmZvcmdlYWJsZV0KKyAgICAgICAgICAgICBbU2VyaWFsaXphYmxlXSAtPiBuZXcsIG1hcmtl
ZCBhcyB1bnN1cHBvcnRlZAorICAgICAgICAgICAgIFtUcmFuc2ZlcmFibGVdIC0+IG5ldywgbWFy
a2VkIGFzIHVuc3VwcG9ydGVkCisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
Q2FuY2VsRXZlbnQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXlt
ZW50QXV0aG9yaXplZEV2ZW50LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50Lmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2
ZW50LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5pZGw6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvUGxheWJhY2tRdWFsaXR5LmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaWRsOgorICAgICAgICAq
IE1vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm8uaWRsOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEv
U3RvcmFnZVF1b3RhLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVz
aXMuaWRsOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvTGlzdGVuZXIuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGw6CisgICAg
ICAgICogU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVk
LmlkbC5lcmI6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Um9sZS5pZGw6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BcmlhQXR0cmlidXRlcy5pZGw6CisgICAgICAgICog
YW5pbWF0aW9uL0FuaW1hdGFibGUuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL0lETFR5cGVzLmg6
CisgICAgICAgICogYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmg6CisgICAgICAgIChXZWJD
b3JlOjpET01XcmFwcGVyV29ybGQ6OmRpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZp
b3IpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpzaG91bGREaXNhYmxlTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0JlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVdyYXBwZXJXb3JsZDo6ZGlzYWJsZU92ZXJyaWRlQnVpbHRpbnNCZWhhdmlvcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OnNob3VsZERpc2FibGVPdmVycmlk
ZUJ1aWx0aW5zQmVoYXZpb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjppc1Zpc2libGVO
YW1lZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnROdWxsYWJsZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnZlcnRlcjxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxUPj46OmNvbnZlcnQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDb252ZXJ0ZXI8SURMVHJlYXROdWxsQXNFbXB0
eUFkYXB0b3I8VD4+Ojpjb252ZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAg
ICAgIChHZW5lcmF0ZVB1dCk6CisgICAgICAgIChHZW5lcmF0ZVB1dEJ5SW5kZXgpOgorICAgICAg
ICAoR2VuZXJhdGVJc0xlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKToKKyAgICAgICAgKEdl
bmVyYXRlRGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoR2VuZXJhdGVEZWxldGVQcm9wZXJ0
eUNvbW1vbik6CisgICAgICAgIChBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UpOgorICAgICAg
ICAoT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKToKKyAgICAgICAgKElzQWNjZWxlcmF0ZWRE
T01BdHRyaWJ1dGUpOgorICAgICAgICAoR2V0SlNDQXR0cmlidXRlc0ZvckF0dHJpYnV0ZSk6Cisg
ICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9u
KToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyVHJhbXBvbGluZURlZmluaXRpb24p
OgorICAgICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJUcmFtcG9saW5lRGVmaW5pdGlvbik6
CisgICAgICAgIChJc0Fubm90YXRlZFR5cGUpOgorICAgICAgICAoR2V0QW5ub3RhdGVkSURMVHlw
ZSk6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcyk6CisgICAgICAg
IChOZWVkc0NvbnN0cnVjdG9yUHJvcGVydHkpOgorICAgICAgICAoSXNMZWdhY3lVbmZvcmdlYWJs
ZSk6CisgICAgICAgIChDb21wdXRlRnVuY3Rpb25TcGVjaWFsKToKKyAgICAgICAgKEdlbmVyYXRl
SXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChJc1VuZm9yZ2Vh
YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
anNvbjoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3Rv
cnMuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRh
cmdldC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zLmNwcDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmg6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVu
Y2llcy5kZXA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbmNsdWRlcy5p
ZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmlkbDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmlkbDogQWRkZWQuCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPcGVyYXRpb25C
YXNlLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE92ZXJyaWRlQnVp
bHRpbnMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGNzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlk
bDoKKyAgICAgICAgKiBjc3MvQ1NTVW5rbm93blJ1bGUuaWRsOgorICAgICAgICAqIGNzcy9FbGVt
ZW50Q1NTSW5saW5lU3R5bGUuaWRsOgorICAgICAgICAqIGNzcy9NZWRpYUxpc3QuaWRsOgorICAg
ICAgICAqIGNzcy9TdHlsZU1lZGlhLmlkbDoKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5p
ZGw6CisgICAgICAgICogZG9tL0NoaWxkTm9kZS5pZGw6CisgICAgICAgICogZG9tL0RPTUltcGxl
bWVudGF0aW9uLmlkbDoKKyAgICAgICAgKiBkb20vRE9NU3RyaW5nTWFwLmlkbDoKKyAgICAgICAg
KiBkb20vRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEFuZEVsZW1lbnRFdmVudEhhbmRs
ZXJzLmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsOgorICAgICAg
ICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRXZlbnQuaWRsOgorICAgICAgICAq
IGRvbS9FdmVudExpc3RlbmVyLmlkbDoKKyAgICAgICAgKiBkb20vR2xvYmFsRXZlbnRIYW5kbGVy
cy5pZGw6CisgICAgICAgICogZG9tL05hdmlnYXRvck1heFRvdWNoUG9pbnRzLmlkbDoKKyAgICAg
ICAgKiBkb20vTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlLmlkbDoKKyAgICAgICAgKiBkb20vTm9u
RWxlbWVudFBhcmVudE5vZGUuaWRsOgorICAgICAgICAqIGRvbS9QYXJlbnROb2RlLmlkbDoKKyAg
ICAgICAgKiBkb20vU2hhZG93Um9vdC5pZGw6CisgICAgICAgICogZG9tL1Nsb3RhYmxlLmlkbDoK
KyAgICAgICAgKiBodG1sL0hUTUxCb2R5RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1M
RG9jdW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaWRsOgorICAgICAgICAq
IGh0bWwvSFRNTEZvbnRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVu
dC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbDoKKyAgICAgICAgKiBo
dG1sL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTElG
cmFtZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5pZGw6Cisg
ICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxP
YmplY3RFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxPckZvcmVpZ25FbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1s
L0hUTUxUYWJsZUNlbGxFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1l
bnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5pZGw6CisgICAgICAg
ICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9B
TkdMRUluc3RhbmNlZEFycmF5cy5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzQ29t
cG9zaXRpbmcuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0RyYXdJbWFnZS5pZGw6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzRHJhd1BhdGguaWRsOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc0ZpbGxTdHJva2VTdHlsZXMuaWRsOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc0ZpbHRlcnMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0ltYWdl
RGF0YS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VTbW9vdGhpbmcuaWRs
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdGguaWRsOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1BhdGhEcmF3aW5nU3R5bGVzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZWN0LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNTaGFkb3dTdHls
ZXMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1N0YXRlLmlkbDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNUZXh0LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNUZXh0RHJhd2luZ1N0eWxlcy5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzVHJh
bnNmb3JtLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNVc2VySW50ZXJmYWNlLmlk
bDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5pZGw6CisgICAgICAgICog
aHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5pZGw6CisgICAgICAgICogaHRtbC9jYW52
YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VY
VEZyYWdEZXB0aC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxP
RC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRzUkdCLmlkbDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9P
RVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVh
ci5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5pZGw6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5pZGw6CisgICAg
ICAgICogaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaWRsOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5pZGw6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMxLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlUFZSVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQ3NSR0IuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVi
dWdSZW5kZXJlckluZm8uaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFk
ZXJzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5pZGw6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5pZGw6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tD
dWVHZW5lcmljLmlkbDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVFJlZ2lvbkxpc3QuaWRsOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaWRsOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsOgorICAgICAgICAqIHBhZ2UvRE9NV2lu
ZG93LmlkbDoKKyAgICAgICAgKiBwYWdlL0dsb2JhbENyeXB0by5pZGw6CisgICAgICAgICogcGFn
ZS9HbG9iYWxQZXJmb3JtYW5jZS5pZGw6CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5pZGw6Cisg
ICAgICAgICogcGFnZS9OYXZpZ2F0b3JJRC5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JM
YW5ndWFnZS5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JPbkxpbmUuaWRsOgorICAgICAg
ICAqIHBhZ2UvTmF2aWdhdG9yUGx1Z2lucy5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JT
ZXJ2aWNlV29ya2VyLmlkbDoKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvclNoYXJlLmlkbDoKKyAg
ICAgICAgKiBwYWdlL1JlbW90ZURPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGFnZS9XaW5kb3dF
dmVudEhhbmRsZXJzLmlkbDoKKyAgICAgICAgKiBwYWdlL1dpbmRvd09yV29ya2VyR2xvYmFsU2Nv
cGUuaWRsOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaWRsOgorICAgICAgICAqIHN2Zy9TVkdGaXRUb1ZpZXdCb3guaWRsOgorICAgICAgICAqIHN2
Zy9TVkdUZXN0cy5pZGw6CisgICAgICAgICogc3ZnL1NWR1VSSVJlZmVyZW5jZS5pZGw6CisgICAg
ICAgICogc3ZnL1NWR1pvb21BbmRQYW4uaWRsOgorICAgICAgICAqIHRlc3RpbmcvR0NPYnNlcnZh
dGlvbi5pZGw6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHNN
YXBMaWtlLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsc1NldExpa2UuaWRsOgorICAg
ICAgICAqIHRlc3RpbmcvTWFsbG9jU3RhdGlzdGljcy5pZGw6CisgICAgICAgICogdGVzdGluZy9N
ZW1vcnlJbmZvLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmlkbDoKKyAg
ICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaWRsOgorICAgICAgICAq
IHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tQYXlt
ZW50Q29vcmRpbmF0b3IuaWRsOgorICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVy
bmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaWRsOgorICAgICAg
ICAqIHRlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZh
a2VYUklucHV0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogdGVzdGluZy9XZWJYUlRlc3QuaWRs
OgorICAgICAgICAqIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsOgorICAgICAgICAqIHhtbC9Y
UGF0aE5TUmVzb2x2ZXIuaWRsOgorCiAyMDIwLTA5LTA1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgc2VyaWFsaXphdGlvbiBvZiBDU1NQcm9wZXJ0
eUdhcApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUNhbmNl
bEV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5Q2FuY2VsRXZlbnQuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5Q2FuY2VsRXZlbnQuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1BUFBMRV9QQVksCi0g
ICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGlu
dGVyZmFjZSBBcHBsZVBheUNhbmNlbEV2ZW50IDogRXZlbnQgewogICAgIFtDYWNoZWRBdHRyaWJ1
dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBBcHBsZVBheVNlc3Npb25FcnJvciBzZXNzaW9uRXJyb3I7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRBdXRob3JpemVkRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50LmlkbAkocmV2aXNpb24g
MjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRBdXRob3JpemVkRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAK
IFsKICAgICBDb25kaXRpb25hbD1BUFBMRV9QQVksCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisg
ICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBBcHBsZVBheVBheW1lbnRB
dXRob3JpemVkRXZlbnQgOiBFdmVudCB7CiAgICAgW0NhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkg
YXR0cmlidXRlIEFwcGxlUGF5UGF5bWVudCBwYXltZW50OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3Rl
ZEV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBbCiAgICAgQ29u
ZGl0aW9uYWw9QVBQTEVfUEFZLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0
ZWRFdmVudCA6IEV2ZW50IHsKICAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1
dGUgQXBwbGVQYXlQYXltZW50TWV0aG9kIHBheW1lbnRNZXRob2Q7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVk
RXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmlkbAkocmV2aXNpb24gMjY2NjU5
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29u
dGFjdFNlbGVjdGVkRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAK
IFsKICAgICBDb25kaXRpb25hbD1BUFBMRV9QQVksCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisg
ICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBBcHBsZVBheVNoaXBwaW5n
Q29udGFjdFNlbGVjdGVkRXZlbnQgOiBFdmVudCB7CiAgICAgW0NhY2hlZEF0dHJpYnV0ZV0gcmVh
ZG9ubHkgYXR0cmlidXRlIEFwcGxlUGF5UGF5bWVudENvbnRhY3Qgc2hpcHBpbmdDb250YWN0Owog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGlu
Z01ldGhvZFNlbGVjdGVkRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuaWRsCShy
ZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUs
NyArMjUsNyBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9QVBQTEVfUEFZLAotICAgIE5vSW50ZXJm
YWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgQXBw
bGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQgOiBFdmVudCB7CiAgICAgW0NhY2hlZEF0
dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIEFwcGxlUGF5U2hpcHBpbmdNZXRob2Qgc2hpcHBp
bmdNZXRob2Q7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5pZGwJKHJl
dmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3
IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1BUFBMRV9QQVksCi0gICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBBcHBsZVBheVZh
bGlkYXRlTWVyY2hhbnRFdmVudCA6IEV2ZW50IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHZhbGlkYXRpb25VUkw7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3
IEBACiAgICAgRW5hYmxlZEF0UnVudGltZT1GZXRjaEFQSSwKICAgICBFeHBvc2VkPShXaW5kb3cs
V29ya2VyKSwKICAgICBJbnRlcmZhY2VOYW1lPUJvZHksCi0gICAgTm9JbnRlcmZhY2VPYmplY3QK
KyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdAogXSBpbnRlcmZhY2UgRmV0Y2hCb2R5IHsKICAg
ICBbSW1wbGVtZW50ZWRBcz1yZWFkYWJsZVN0cmVhbSwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBy
ZWFkb25seSBhdHRyaWJ1dGUgUmVhZGFibGVTdHJlYW0/IGJvZHk7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGJvb2xlYW4gYm9keVVzZWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5pZGwJKHJldmlz
aW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRp
YUNvbnRyb2xzSG9zdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgZW51bSBE
ZXZpY2VUeXBlIHsKIFsKICAgICBDb25kaXRpb25hbD1NRURJQV9DT05UUk9MU19TQ1JJUFQsCiAg
ICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAg
ICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIE1lZGlhQ29udHJvbHNIb3N0
IHsKICAgICBzZXF1ZW5jZTxUZXh0VHJhY2s+IHNvcnRlZFRyYWNrTGlzdEZvck1lbnUoVGV4dFRy
YWNrTGlzdCB0cmFja0xpc3QpOwogICAgIHNlcXVlbmNlPEF1ZGlvVHJhY2s+IHNvcnRlZFRyYWNr
TGlzdEZvck1lbnUoQXVkaW9UcmFja0xpc3QgdHJhY2tMaXN0KTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvVmlkZW9QbGF5YmFja1F1YWxpdHkuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvVmlkZW9QbGF5YmFja1F1
YWxpdHkuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1ZpZGVvUGxheWJhY2tRdWFsaXR5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUs
NyArMjUsNyBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9VklERU8sCi0gICAgTm9JbnRlcmZhY2VP
YmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgSW1wbGVtZW50YXRpb25M
YWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIFZpZGVvUGxheWJhY2tRdWFsaXR5IHsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjcmVhdGlvblRpbWU7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEz
Myw3ICsxMzMsNyBAQCB0eXBlZGVmIChvYmplY3Qgb3IgRE9NU3RyaW5nKSBBbGdvcml0aG1JCiAg
ICAgLy8gNi4xIFBlZXItdG8tcGVlciBkYXRhIEFQSQogICAgIC8vIEZJWE1FIDE2OTY0NDogbWlz
c2luZyBzY3RwCiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJUQ0RhdGFDaGFubmVsIGNyZWF0
ZURhdGFDaGFubmVsKFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gVVNWU3RyaW5nIGxhYmVsLCBv
cHRpb25hbCBSVENEYXRhQ2hhbm5lbEluaXQgb3B0aW9ucyk7CisgICAgW01heVRocm93RXhjZXB0
aW9uXSBSVENEYXRhQ2hhbm5lbCBjcmVhdGVEYXRhQ2hhbm5lbChbTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmddIFVTVlN0cmluZyBsYWJlbCwgb3B0aW9uYWwgUlRDRGF0YUNoYW5uZWxJbml0IG9wdGlv
bnMpOwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25kYXRhY2hhbm5lbDsKIAogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VP
YmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgSlNHZW5lcmF0ZVRvSlNP
YmplY3QsCiBdIGludGVyZmFjZSBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudCB7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyBtb3ZpZVNpemU7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmlkbAkocmV2aXNpb24gMjY2
NjU5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9TdG9yYWdlSW5mby5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VP
YmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9UVVP
VEEsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIFN0b3JhZ2VJ
bmZvIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvU3RvcmFnZVF1b3RhLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VRdW90
YS5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
U3RvcmFnZVF1b3RhLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAK
IFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
ICAgICBDb25kaXRpb25hbD1RVU9UQSwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAog
XSBpbnRlcmZhY2UgU3RvcmFnZVF1b3RhIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogIAogWwogICAgIENvbmRpdGlvbmFsPVNQRUVDSF9T
WU5USEVTSVMsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QsCiBdIGludGVyZmFjZSBTcGVlY2hTeW50aGVzaXMgIHsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgYm9vbGVhbiBwZW5kaW5nOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHNw
ZWFraW5nOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhl
c2lzVm9pY2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KICAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwK
KyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1TUEVFQ0hfU1lO
VEhFU0lTCiBdIGludGVyZmFjZSBTcGVlY2hTeW50aGVzaXNWb2ljZSB7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyB2b2ljZVVSSTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaWRsCShyZXZpc2lvbiAy
NjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1T
aW5rLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAKIFsKLSAgICBOb0lu
dGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBTa2lwVlRh
YmxlVmFsaWRhdGlvbgogXSBpbnRlcmZhY2UgUmVhZGFibGVTdHJlYW1TaW5rIHsKICAgICB1bmRl
ZmluZWQgZW5xdWV1ZShCdWZmZXJTb3VyY2UgY2h1bmspOwpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaWRsCShy
ZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW1Tb3VyY2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgKi8K
IAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
LAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uCiBdIGludGVyZmFjZSBSZWFkYWJsZVN0cmVhbVNv
dXJjZSB7CiAgICAgW0N1c3RvbV0gUHJvbWlzZTx1bmRlZmluZWQ+IHN0YXJ0KFJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXIgY29udHJvbGxlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0J1ZmZlclNv
dXJjZU5vZGUuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDcgKzI4LDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgRW5hYmxl
ZEJ5U2V0dGluZz1QcmVmaXhlZFdlYkF1ZGlvLAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAot
ICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50
ZXJmYWNlIFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZSA6IEF1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZSB7CiAgICAgYXR0cmlidXRlIEF1ZGlvQnVmZmVyPyBidWZmZXI7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9MaXN0ZW5lci5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xpc3Rl
bmVyLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0xpc3RlbmVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjks
NyBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKICAgICBFbmFibGVkQnlTZXR0aW5n
PVByZWZpeGVkV2ViQXVkaW8sCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBXZWJLaXRBdWRpb0xpc3RlbmVyIHsKICAgICBh
dHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IGRvcHBsZXJGYWN0b3I7ICAvLyBzYW1lIGFzIE9w
ZW5BTCAoZGVmYXVsdCAxLjApCiAgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBzcGVl
ZE9mU291bmQ7ICAgLy8gaW4gbWV0ZXJzIC8gc2Vjb25kIChkZWZhdWx0IDM0My4zKQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXREeW5hbWljc0NvbXByZXNzb3JO
b2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VC
X0FVRElPLAogICAgIEVuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpbywKICAgICBKU0dl
bmVyYXRlVG9KU09iamVjdCwKLSAgICBOb0ludGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0CiBdIGludGVyZmFjZSBXZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlIDog
QXVkaW9Ob2RlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSB0aHJlc2hvbGQ7
IC8vIGluIERlY2liZWxzCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvUGFyYW0ga25lZTsg
Ly8gaW4gRGVjaWJlbHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2Vi
S2l0T3NjaWxsYXRvck5vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2ViS2l0T3NjaWxsYXRvck5vZGUuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9zY2lsbGF0b3JOb2RlLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQl9B
VURJTywKICAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkF1ZGlvJlByZWZpeGVkV2ViQXVkaW8sCiAg
ICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBXZWJLaXRPc2NpbGxhdG9yTm9kZSA6
IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSB7CiAgICAgYXR0cmlidXRlIE9zY2lsbGF0b3JUeXBl
IHR5cGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMv
SW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5pZGwuZXJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRl
ZC5pZGwuZXJiCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1Nl
dHRpbmdzVGVtcGxhdGVzL0ludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsLmVyYgkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVj
dCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JF
X1RFU1RTVVBQT1JUX0VYUE9SVCwKIF0gaW50ZXJmYWNlIEludGVybmFsU2V0dGluZ3NHZW5lcmF0
ZWQgewogPCUtIGZvciBAc2V0dGluZyBpbiBAc2V0dGluZ3MgZG8gLSU+CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSb2xlLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSb2xlLmlkbAkocmV2
aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Um9sZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAgIEVu
YWJsZWRBdFJ1bnRpbWU9QXJpYVJlZmxlY3Rpb24sCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisg
ICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBBY2Nlc3NpYmlsaXR5Um9s
ZSB7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmc/IHJvbGU7CiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BcmlhQXR0cmlidXRlcy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BcmlhQXR0cmlidXRlcy5pZGwJKHJl
dmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQXJpYUF0dHJp
YnV0ZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBFbmFi
bGVkQXRSdW50aW1lPUFyaWFSZWZsZWN0aW9uLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAg
IExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgQXJpYUF0dHJpYnV0ZXMgewog
ICAgIFtSZWZsZWN0PWFyaWFfYXRvbWljXSAgICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZz8g
YXJpYUF0b21pYzsKICAgICBbUmVmbGVjdD1hcmlhX2F1dG9jb21wbGV0ZV0gICAgIGF0dHJpYnV0
ZSBET01TdHJpbmc/IGFyaWFBdXRvQ29tcGxldGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQW5pbWF0YWJsZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0FuaW1hdGFibGUuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vQW5pbWF0YWJsZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAK
IAogWwogICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViQW5pbWF0aW9ucywKLSAgICBOb0ludGVyZmFj
ZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0CiBdIGludGVyZmFjZSBBbmltYXRh
YmxlIHsKICAgICBbTWF5VGhyb3dFeGNlcHRpb24sIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gV2Vi
QW5pbWF0aW9uIGFuaW1hdGUob2JqZWN0PyBrZXlmcmFtZXMsIG9wdGlvbmFsICh1bnJlc3RyaWN0
ZWQgZG91YmxlIG9yIEtleWZyYW1lQW5pbWF0aW9uT3B0aW9ucykgb3B0aW9ucyk7CiAgICAgc2Vx
dWVuY2U8V2ViQW5pbWF0aW9uPiBnZXRBbmltYXRpb25zKG9wdGlvbmFsIEdldEFuaW1hdGlvbnNP
cHRpb25zIG9wdGlvbnMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCShyZXZp
c2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgc3RydWN0IElETERPTVN0cmluZyA6IElETFN0
cmluZzxTdHJpbmc+IAogc3RydWN0IElETEJ5dGVTdHJpbmcgOiBJRExTdHJpbmc8U3RyaW5nPiB7
IH07CiBzdHJ1Y3QgSURMVVNWU3RyaW5nIDogSURMU3RyaW5nPFN0cmluZz4geyB9OwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3IgOiBJRExT
dHJpbmc8U3RyaW5nPiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yIDogSURMU3RyaW5nPFN0cmluZz4gewogICAgIHVzaW5nIElu
bmVyVHlwZSA9IFQ7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01X
cmFwcGVyV29ybGQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9E
T01XcmFwcGVyV29ybGQuaAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDggKzUzLDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hhZG93Um9vdElzQWx3YXlzT3BlbigpIHsgbV9zaGFk
b3dSb290SXNBbHdheXNPcGVuID0gdHJ1ZTsgfQogICAgIGJvb2wgc2hhZG93Um9vdElzQWx3YXlz
T3BlbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93Um9vdElzQWx3YXlzT3BlbjsgfQogCi0gICAg
dm9pZCBkaXNhYmxlT3ZlcnJpZGVCdWlsdGluc0JlaGF2aW9yKCkgeyBtX3Nob3VsZERpc2FibGVP
dmVycmlkZUJ1aWx0aW5zQmVoYXZpb3IgPSB0cnVlOyB9Ci0gICAgYm9vbCBzaG91bGREaXNhYmxl
T3ZlcnJpZGVCdWlsdGluc0JlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGREaXNhYmxl
T3ZlcnJpZGVCdWlsdGluc0JlaGF2aW9yOyB9CisgICAgdm9pZCBkaXNhYmxlTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc0JlaGF2aW9yKCkgeyBtX3Nob3VsZERpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zQmVoYXZpb3IgPSB0cnVlOyB9CisgICAgYm9vbCBzaG91bGREaXNhYmxlTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc0JlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGREaXNhYmxlTGVnYWN5
T3ZlcnJpZGVCdWlsdEluc0JlaGF2aW9yOyB9CiAKICAgICBET01PYmplY3RXcmFwcGVyTWFwJiB3
cmFwcGVycygpIHsgcmV0dXJuIG1fd3JhcHBlcnM7IH0KIApAQCAtNzcsNyArNzcsNyBAQCBwcml2
YXRlOgogICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6SW50ZXJuYWwgfTsKIAogICAgIGJvb2wgbV9z
aGFkb3dSb290SXNBbHdheXNPcGVuIHsgZmFsc2UgfTsKLSAgICBib29sIG1fc2hvdWxkRGlzYWJs
ZU92ZXJyaWRlQnVpbHRpbnNCZWhhdmlvciB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZERp
c2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZpb3IgeyBmYWxzZSB9OwogfTsKIAogRE9N
V3JhcHBlcldvcmxkJiBub3JtYWxXb3JsZChKU0M6OlZNJik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgJKHJldmlz
aW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RP
cGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE0ICszMiwxNCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAvLyBJbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGFic3RyYWN0IG9wZXJhdGlvbnMg
ZGVmaW5lZCBhdAogLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jbGVnYWN5LXBs
YXRmb3JtLW9iamVjdC1hYnN0cmFjdC1vcHMKIAotZW51bSBjbGFzcyBPdmVycmlkZUJ1aWx0aW5z
IHsKK2VudW0gY2xhc3MgTGVnYWN5T3ZlcnJpZGVCdWlsdElucyB7CiAgICAgTm8sCiAgICAgWWVz
CiB9OwogCiAvLyBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgJ25hbWVkIHByb3BlcnR5IHZpc2li
aWxpdHkgYWxnb3JpdGhtJwogLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZu
LW5hbWVkLXByb3BlcnR5LXZpc2liaWxpdHkKLXRlbXBsYXRlPE92ZXJyaWRlQnVpbHRpbnMgb3Zl
cnJpZGVCdWlsdGlucywgY2xhc3MgSlNDbGFzcz4KK3RlbXBsYXRlPExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMgb3ZlcnJpZGVCdWlsdGlucywgY2xhc3MgSlNDbGFzcz4KIHN0YXRpYyBib29sIGlzVmlz
aWJsZU5hbWVkUHJvcGVydHkoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDbGFzcyYgdGhpc09iamVjdCwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
ewogICAgIC8vIEZJWE1FOiBJdCBzZWVtcyB1bmZvcnR1bmF0ZSB0aGF0IGhhdmUgdG8gZG8gdHdv
IGxvb2t1cHMgZm9yIHRoZSBwcm9wZXJ0eSBuYW1lLApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMg
Ym9vbCBpc1Zpc2libGVOYW1lZFByb3BlcnR5KEpTQzo6CiAgICAgaWYgKEpTQzo6SlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICAvLyAz
LiBJZiBPIGltcGxlbWVudHMgYW4gaW50ZXJmYWNlIHRoYXQgaGFzIHRoZSBbT3ZlcnJpZGVCdWls
dGluc10gZXh0ZW5kZWQgYXR0cmlidXRlLCB0aGVuIHJldHVybiB0cnVlLgotICAgIGlmIChvdmVy
cmlkZUJ1aWx0aW5zID09IE92ZXJyaWRlQnVpbHRpbnM6OlllcykKKyAgICAvLyAzLiBJZiBPIGlt
cGxlbWVudHMgYW4gaW50ZXJmYWNlIHRoYXQgaGFzIHRoZSBbTGVnYWN5T3ZlcnJpZGVCdWlsdElu
c10gZXh0ZW5kZWQgYXR0cmlidXRlLCB0aGVuIHJldHVybiB0cnVlLgorICAgIGlmIChvdmVycmlk
ZUJ1aWx0aW5zID09IExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OlllcykKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICAvLyA0LiBJbml0aWFsaXplIHByb3RvdHlwZSB0byBiZSB0aGUgdmFsdWUg
b2YgdGhlIGludGVybmFsIFtbUHJvdG90eXBlXV0gcHJvcGVydHkgb2YgTy4KQEAgLTg1LDcgKzg1
LDcgQEAgc3RhdGljIGJvb2wgaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eShKU0M6OgogLy8gZm9yIHRo
ZSBwcm9wZXJ0eSBuYW1lLCB2aWEgcGFzc2VkIGluIGZ1bmN0b3IuIFRoaXMgYWxsb3dzIHVzIHRv
IGF2b2lkIHR3byBsb29raW5nIHVwIHRoZQogLy8gdGhlIHByb3BlcnR5IG5hbWUgdHdpY2U7IG9u
Y2UgZm9yICduYW1lZCBwcm9wZXJ0eSB2aXNpYmlsaXR5IGFsZ29yaXRobScgY2hlY2ssIGFuZCB0
aGVuCiAvLyBhZ2FpbiB3aGVuIHRoZSB2YWx1ZSBpcyBuZWVkZWQuCi10ZW1wbGF0ZTxPdmVycmlk
ZUJ1aWx0aW5zIG92ZXJyaWRlQnVpbHRpbnMsIGNsYXNzIEpTQ2xhc3MsIGNsYXNzIEZ1bmN0b3I+
Cit0ZW1wbGF0ZTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIG92ZXJyaWRlQnVpbHRpbnMsIGNsYXNz
IEpTQ2xhc3MsIGNsYXNzIEZ1bmN0b3I+CiBzdGF0aWMgYXV0byBhY2Nlc3NWaXNpYmxlTmFtZWRQ
cm9wZXJ0eShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NsYXNz
JiB0aGlzT2JqZWN0LCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEZ1bmN0b3ImJiBp
dGVtQWNjZXNzb3IpIC0+IGRlY2x0eXBlKGl0ZW1BY2Nlc3Nvcih0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpKQogewogICAgIC8vIE5PVEU6IFdoaWxlIGl0IGlzIG5vdCBzcGVjaWZpZWQsIGEgU3lt
Ym9sIGNhbiBuZXZlciBiZSBhICdzdXBwb3J0ZWQgcHJvcGVydHkKQEAgLTEwMyw4ICsxMDMsOCBA
QCBzdGF0aWMgYXV0byBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eShKCiAgICAgaWYgKEpTQzo6
SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgJmxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKLSAgICAvLyAzLiBJZiBPIGltcGxlbWVudHMgYW4gaW50ZXJmYWNlIHRoYXQgaGFzIHRoZSBb
T3ZlcnJpZGVCdWlsdGluc10gZXh0ZW5kZWQgYXR0cmlidXRlLCB0aGVuIHJldHVybiB0cnVlLgot
ICAgIGlmIChvdmVycmlkZUJ1aWx0aW5zID09IE92ZXJyaWRlQnVpbHRpbnM6OlllcyAmJiAhd29y
bGRGb3JET01PYmplY3QodGhpc09iamVjdCkuc2hvdWxkRGlzYWJsZU92ZXJyaWRlQnVpbHRpbnNC
ZWhhdmlvcigpKQorICAgIC8vIDMuIElmIE8gaW1wbGVtZW50cyBhbiBpbnRlcmZhY2UgdGhhdCBo
YXMgdGhlIFtMZWdhY3lPdmVycmlkZUJ1aWx0SW5zXSBleHRlbmRlZCBhdHRyaWJ1dGUsIHRoZW4g
cmV0dXJuIHRydWUuCisgICAgaWYgKG92ZXJyaWRlQnVpbHRpbnMgPT0gTGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6WWVzICYmICF3b3JsZEZvckRPTU9iamVjdCh0aGlzT2JqZWN0KS5zaG91bGREaXNh
YmxlTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0JlaGF2aW9yKCkpCiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAKICAgICAvLyA0LiBJbml0aWFsaXplIHByb3RvdHlwZSB0byBiZSB0aGUgdmFsdWUgb2Yg
dGhlIGludGVybmFsIFtbUHJvdG90eXBlXV0gcHJvcGVydHkgb2YgTy4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydE51bGxhYmxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0TnVsbGFibGUuaAkocmV2aXNp
b24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0TnVs
bGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsOCArNjAsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgQ29udmVydGVyPElECiAgICAgCiAgICAgLy8gMS4gSWYgVHlwZShWKSBpcyBu
b3QgT2JqZWN0LCBhbmQgdGhlIGNvbnZlcnNpb24gdG8gYW4gSURMIHZhbHVlIGlzIGJlaW5nIHBl
cmZvcm1lZAogICAgIC8vIGR1ZSB0byBWIGJlaW5nIGFzc2lnbmVkIHRvIGFuIGF0dHJpYnV0ZSB3
aG9zZSB0eXBlIGlzIGEgbnVsbGFibGUgY2FsbGJhY2sgZnVuY3Rpb24KLSAgICAvLyB0aGF0IGlz
IGFubm90YXRlZCB3aXRoIFtUcmVhdE5vbk9iamVjdEFzTnVsbF0sIHRoZW4gcmV0dXJuIHRoZSBJ
REwgbnVsbGFibGUgdHlwZSBUPwotICAgIC8vIHZhbHVlIG51bGwuCisgICAgLy8gdGhhdCBpcyBh
bm5vdGF0ZWQgd2l0aCBbTGVnYWN5VHJlYXROb25PYmplY3RBc051bGxdLCB0aGVuIHJldHVybiB0
aGUgSURMIG51bGxhYmxlCisgICAgLy8gdHlwZSBUPyB2YWx1ZSBudWxsLgogICAgIC8vCiAgICAg
Ly8gTk9URTogSGFuZGxlZCBlbHNld2hlcmUuCiAgICAgLy8KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmgJKHJldmlzaW9uIDI2NjY1
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEpTQ29u
dmVydGVyPElETFVTVlN0cmkKIC8vIE1BUks6IC0KIC8vIE1BUks6IFN0cmluZyB0eXBlIGFkYXB0
b3JzCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8SURMVHJlYXROdWxs
QXNFbXB0eUFkYXB0b3I8VD4+IDogRGVmYXVsdENvbnZlcnRlcjxJRExUcmVhdE51bGxBc0VtcHR5
QWRhcHRvcjxUPj4gewordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8VD4+IDogRGVmYXVsdENvbnZlcnRlcjxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8VD4+IHsKICAgICBzdGF0aWMgU3RyaW5nIGNv
bnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQpAQCAtMTU3LDcg
KzE1Nyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8SUQKICAgICB9
CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiAgc3RydWN0IEpTQ29udmVydGVyPElETFRyZWF0
TnVsbEFzRW1wdHlBZGFwdG9yPFQ+PiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiAgc3RydWN0IEpT
Q29udmVydGVyPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxUPj4gewogICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc1N0YXRlID0gdHJ1ZTsKICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgbmVlZHNHbG9iYWxPYmplY3QgPSBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9u
IDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC02ODYsNyArNjg2LDcgQEAgc3ViIEdlbmVyYXRlR2V0
T3duUHJvcGVydHlTbG90CiAgICAgICAgIAogICAgICAgICBHZW5lcmF0ZU5hbWVkR2V0dGVyTGFt
YmRhKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJG5hbWVkR2V0dGVyT3BlcmF0aW9uLCAkbmFt
ZWRHZXR0ZXJGdW5jdGlvbk5hbWUsICJHZXR0ZXJJRExUeXBlIik7CiAgICAgICAgIAotICAgICAg
ICBteSAkb3ZlcnJpZGVCdWlsdGluID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRB
dHRyaWJ1dGUoJGludGVyZmFjZSwgIk92ZXJyaWRlQnVpbHRpbnMiKSA/ICJPdmVycmlkZUJ1aWx0
aW5zOjpZZXMiIDogIk92ZXJyaWRlQnVpbHRpbnM6Ok5vIjsKKyAgICAgICAgbXkgJG92ZXJyaWRl
QnVpbHRpbiA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRl
cmZhY2UsICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIikgPyAiTGVnYWN5T3ZlcnJpZGVCdWlsdElu
czo6WWVzIiA6ICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObyI7CiAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5h
bWVkUHJvcGVydHk8JHtvdmVycmlkZUJ1aWx0aW59PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHtcbiIpOwogICAgICAgICAK
ICAgICAgICAgIyBOT1RFOiBHZW5lcmF0ZU5hbWVkR2V0dGVyIGltcGxlbWVudHMgc3RlcHMgMi4x
IC0gMi4xMC4KQEAgLTgwMCw3ICs4MDAsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4CiAgICAgICAgIAogICAgICAgICBHZW5lcmF0ZU5hbWVkR2V0dGVyTGFtYmRhKCRv
dXRwdXRBcnJheSwgJGludGVyZmFjZSwgJG5hbWVkR2V0dGVyT3BlcmF0aW9uLCAkbmFtZWRHZXR0
ZXJGdW5jdGlvbk5hbWUsICJHZXR0ZXJJRExUeXBlIik7CiAgICAgICAgIAotICAgICAgICBteSAk
b3ZlcnJpZGVCdWlsdGluID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1
dGUoJGludGVyZmFjZSwgIk92ZXJyaWRlQnVpbHRpbnMiKSA/ICJPdmVycmlkZUJ1aWx0aW5zOjpZ
ZXMiIDogIk92ZXJyaWRlQnVpbHRpbnM6Ok5vIjsKKyAgICAgICAgbXkgJG92ZXJyaWRlQnVpbHRp
biA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2Us
ICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIikgPyAiTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6WWVz
IiA6ICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObyI7CiAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJv
cGVydHk8JHtvdmVycmlkZUJ1aWx0aW59PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHtcbiIpOwogICAgICAgICAKICAgICAg
ICAgIyBOT1RFOiBHZW5lcmF0ZU5hbWVkR2V0dGVyIGltcGxlbWVudHMgc3RlcHMgMi4xIC0gMi4x
MC4KQEAgLTk2OCw4ICs5NjgsOCBAQCBzdWIgR2VuZXJhdGVQdXQKICAgICAgICAgCiAgICAgICAg
IG15ICRhZGRpdGlvbmFsSW5kZW50ID0gIiI7CiAgICAgICAgIAotICAgICAgICBteSAkb3ZlcnJp
ZGVCdWlsdGlucyA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRp
bnRlcmZhY2UsICJPdmVycmlkZUJ1aWx0aW5zIik7Ci0gICAgICAgIGlmICghJG92ZXJyaWRlQnVp
bHRpbnMpIHsKKyAgICAgICAgbXkgJGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMgPSAkY29kZUdlbmVy
YXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyIpOworICAgICAgICBpZiAoISRsZWdhY3lPdmVycmlkZUJ1aWx0aW5zKSB7CiAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWly
eSwgJmxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkgfTtcbiIpOwogICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdl
dFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTtcbiIpOwog
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBib29sIGZvdW5kID0gcHJv
dG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90
KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKQEAgLTk4NSw3
ICs5ODUsNyBAQCBzdWIgR2VuZXJhdGVQdXQKICAgICAgICAgfQogICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICRhZGRpdGlvbmFsSW5kZW50IC4gIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsK
IAotICAgICAgICBpZiAoISRvdmVycmlkZUJ1aWx0aW5zKSB7CisgICAgICAgIGlmICghJGxlZ2Fj
eU92ZXJyaWRlQnVpbHRpbnMpIHsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgfVxuIik7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xMDE0LDggKzEwMTQsOCBAQCBz
dWIgR2VuZXJhdGVQdXRCeUluZGV4CiAgICAgbXkgJG5hbWVkU2V0dGVyT3BlcmF0aW9uID0gR2V0
TmFtZWRTZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSk7CiAgICAgbXkgJGluZGV4ZWRTZXR0ZXJP
cGVyYXRpb24gPSBHZXRJbmRleGVkU2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpOwogICAgIAot
ICAgIG15ICRvdmVycmlkZUJ1aWx0aW5zID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5k
ZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIk92ZXJyaWRlQnVpbHRpbnMiKTsKLSAgICBteSAkZWxs
aWRlc0NhbGxzVG9CYXNlID0gKCRuYW1lZFNldHRlck9wZXJhdGlvbiAmJiAkb3ZlcnJpZGVCdWls
dGlucykgJiYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1BsdWdpbn0gJiYgISRu
YW1lZFNldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbE5hbWVkU2V0dGVy
T25seUZvclN1cHBvcnRlZFByb3BlcnRpZXN9OworICAgIG15ICRsZWdhY3lPdmVycmlkZUJ1aWx0
aW5zID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFj
ZSwgIkxlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKTsKKyAgICBteSAkZWxsaWRlc0NhbGxzVG9CYXNl
ID0gKCRuYW1lZFNldHRlck9wZXJhdGlvbiAmJiAkbGVnYWN5T3ZlcnJpZGVCdWlsdGlucykgJiYg
ISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1BsdWdpbn0gJiYgISRuYW1lZFNldHRl
ck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbE5hbWVkU2V0dGVyT25seUZvclN1
cHBvcnRlZFByb3BlcnRpZXN9OwogICAgIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wg
JHtjbGFzc05hbWV9OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIiAu
ICghJGVsbGlkZXNDYWxsc1RvQmFzZSA/ICIgc2hvdWxkVGhyb3ciIDogIiIpIC4gIilcbiIpOwog
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwpAQCAtMTA0Nyw3ICsxMDQ3LDcgQEAgc3Vi
IEdlbmVyYXRlUHV0QnlJbmRleAogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7XG4iKTsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgbXkgJGFkZGl0aW9uYWxJbmRlbnQgPSAiIjsKLSAgICAgICAg
aWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgeworICAgICAgICBpZiAoISRsZWdhY3lPdmVycmlkZUJ1
aWx0aW5zKSB7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUHJvcGVydHlT
bG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5LCAmdm0gfTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZt
KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGJvb2wgZm91bmQg
PSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0
eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwpAQCAt
MTA2Myw3ICsxMDYzLDcgQEAgc3ViIEdlbmVyYXRlUHV0QnlJbmRleAogICAgICAgICB9CiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQgLiAiICAgIHJldHVybiB0
cnVlO1xuIik7CiAgICAgICAgIAotICAgICAgICBpZiAoISRvdmVycmlkZUJ1aWx0aW5zKSB7Cisg
ICAgICAgIGlmICghJGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMpIHsKICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICB9XG5cbiIpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTA4NSw3
ICsxMDg1LDcgQEAgc3ViIEdlbmVyYXRlUHV0QnlJbmRleAogICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIn1cblxuIik7CiB9CiAKLXN1YiBHZW5lcmF0ZUlzVW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUK
K3N1YiBHZW5lcmF0ZUlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUKIHsKICAgICBteSAo
JG91dHB1dEFycmF5LCAkaW50ZXJmYWNlKSA9IEBfOwogICAgIApAQCAtMTA5Myw3ICsxMDkzLDcg
QEAgc3ViIEdlbmVyYXRlSXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZQogICAgIGZvcmVhY2ggbXkg
JHByb3BlcnR5IChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9LCBAeyRpbnRlcmZhY2UtPm9wZXJh
dGlvbnN9KSB7CiAgICAgICAgIG5leHQgaWYgJHByb3BlcnR5LT5pc1N0YXRpYzsKICAgICAgICAg
Ci0gICAgICAgIGlmIChJc1VuZm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRwcm9wZXJ0eSkpIHsKKyAg
ICAgICAgaWYgKElzTGVnYWN5VW5mb3JnZWFibGUoJGludGVyZmFjZSwgJHByb3BlcnR5KSkgewog
ICAgICAgICAgICAgcHVzaChAdW5mb3JnZWFibGVQcm9wZXJ0eU5hbWVzLCAkcHJvcGVydHktPm5h
bWUpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTEwMiw3ICsxMTAyLDcgQEAgc3ViIEdlbmVyYXRl
SXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZQogICAgIAogICAgIG15ICRjb25kaXRpb24gPSBqb2lu
KCIgfHwgIiwgbWFwIHsgInByb3BlcnR5TmFtZSA9PSBcIiIgLiAkXyAuICJcIiIgfSBAdW5mb3Jn
ZWFibGVQcm9wZXJ0eU5hbWVzKTsKICAgICAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJzdGF0
aWMgYm9vbCBpc1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJzdGF0aWMgYm9vbCBpc0xlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydHlOYW1lKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpXG4iKTsKICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgcmV0dXJuICR7Y29uZGl0aW9ufTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1c
blxuIik7CkBAIC0xMTY5LDE5ICsxMTY5LDE5IEBAIHN1YiBHZW5lcmF0ZURlZmluZU93blByb3Bl
cnR5CiAgICAgICAgIAogICAgICAgICBteSAkYWRkaXRpb25hbEluZGVudCA9ICIiOwogICAgICAg
ICAKLSAgICAgICAgbXkgJGhhc1VuZm9yZ2FibGVQcm9wZXJ0aWVzID0gR2VuZXJhdGVJc1VuZm9y
Z2VhYmxlUHJvcGVydHlOYW1lKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSk7CisgICAgICAgIG15
ICRoYXNVbmZvcmdhYmxlUHJvcGVydGllcyA9IEdlbmVyYXRlSXNMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnR5TmFtZSgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UpOwogICAgICAgICBpZiAoJGhhc1Vu
Zm9yZ2FibGVQcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgIGlmICghaXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKSB7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFpc0xlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpIHtcbiIpOwogICAgICAgICAg
ICAgJGFkZGl0aW9uYWxJbmRlbnQgLj0gIiAgICAiOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICAjIDEuIExldCBjcmVhdGluZyBiZSB0cnVlIGlmIFAgaXMgbm90IGEgc3VwcG9ydGVkIHBy
b3BlcnR5IG5hbWUsIGFuZCBmYWxzZSBvdGhlcndpc2UuCiAgICAgICAgICMgTk9URTogVGhpcyBz
dGVwIGlzIHN0cmVuZ3RoIHJlZHVjZWQgaW50byB0aGUgb25seSB1c2Ugb2YgJ2NyZWF0aW5nJyBp
biBzdGVwIDIuMi4xCiAgICAgICAgIAotICAgICAgICAjIDIuIElmIE8gaW1wbGVtZW50cyBhbiBp
bnRlcmZhY2Ugd2l0aCB0aGUgW092ZXJyaWRlQnVpbHRpbnNdIGV4dGVuZGVkIGF0dHJpYnV0ZSBv
ciBPCisgICAgICAgICMgMi4gSWYgTyBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSB3aXRoIHRoZSBb
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc10gZXh0ZW5kZWQgYXR0cmlidXRlIG9yIE8KICAgICAgICAg
IyAgICBkb2VzIG5vdCBoYXZlIGFuIG93biBwcm9wZXJ0eSBuYW1lZCBQLCB0aGVuOgotICAgICAg
ICBteSAkb3ZlcnJpZGVCdWlsdGlucyA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVk
QXR0cmlidXRlKCRpbnRlcmZhY2UsICJPdmVycmlkZUJ1aWx0aW5zIik7Ci0gICAgICAgIGlmICgh
JG92ZXJyaWRlQnVpbHRpbnMpIHsKKyAgICAgICAgbXkgJGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMg
PSAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAi
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpOworICAgICAgICBpZiAoISRsZWdhY3lPdmVycmlkZUJ1
aWx0aW5zKSB7CiAgICAgICAgICAgICAjIEZJWE1FOiBJcyBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90IHRoZSByaWdodCBmdW5jdGlvbiB0byBjYWxsPyBJcyB0aGVyZSBhIGZ1bmN0aW9uIHRo
YXQgd2lsbAogICAgICAgICAgICAgIyAgICAgICAgb25seSBsb29rIGF0IHRoZSBhY3R1YWwgcHJv
cGVydGllcywgYW5kIG5vdCBjYWxsIGludG8gb3VyIGltcGxlbWVudGF0aW9uIG9mIHRoZQogICAg
ICAgICAgICAgIyAgICAgICAgW1tHZXRPd25Qcm9wZXJ0eV1dIGhvb2s/CkBAIC0xMjEyLDcgKzEy
MTIsNyBAQCBzdWIgR2VuZXJhdGVEZWZpbmVPd25Qcm9wZXJ0eQogICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAkYWRkaXRpb25hbEluZGVudCAuICIgICAgICAgIHJldHVybiB0cnVlO1xu
Iik7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICghJG92ZXJyaWRlQnVpbHRpbnMp
IHsKKyAgICAgICAgaWYgKCEkbGVnYWN5T3ZlcnJpZGVCdWlsdGlucykgewogICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAkYWRkaXRpb25hbEluZGVudCAuICIgICAgfVxuIik7CiAgICAg
ICAgIH0KICAgICAgICAgCkBAIC0xMjUyLDcgKzEyNTIsNyBAQCBzdWIgR2VuZXJhdGVEZWxldGVQ
cm9wZXJ0eUNvbW1vbgogICAgIGFzc2VydCgiTmFtZWQgcHJvcGVydHkgZGVsZXRlcnMgYXJlIG5v
dCBhbGxvd2VkIG9uIGdsb2JhbCBvYmplY3QgaW50ZXJmYWNlcy4iKSBpZiBJc0dsb2JhbEludGVy
ZmFjZSgkaW50ZXJmYWNlKTsKIAogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTUFic3RyYWN0
T3BlcmF0aW9ucy5oIiwgJGNvbmRpdGlvbmFsKTsKLSAgICBteSAkb3ZlcnJpZGVCdWlsdGluID0g
JGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIk92
ZXJyaWRlQnVpbHRpbnMiKSA/ICJPdmVycmlkZUJ1aWx0aW5zOjpZZXMiIDogIk92ZXJyaWRlQnVp
bHRpbnM6Ok5vIjsKKyAgICBteSAkb3ZlcnJpZGVCdWlsdGluID0gJGNvZGVHZW5lcmF0b3ItPklu
aGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkxlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMiKSA/ICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXMiIDogIkxlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6Ok5vIjsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKGlzVmlzaWJsZU5h
bWVkUHJvcGVydHk8JHtvdmVycmlkZUJ1aWx0aW59PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c09iamVjdCwgcHJvcGVydHlOYW1lKSkge1xuIik7CiAKICAgICBHZW5lcmF0ZUN1c3RvbUVsZW1l
bnRSZWFjdGlvbnNTdGFja0lmTmVlZGVkKCRvdXRwdXRBcnJheSwgJG9wZXJhdGlvbiwgIipsZXhp
Y2FsR2xvYmFsT2JqZWN0Iik7CkBAIC0xNjg2LDkgKzE2ODYsOSBAQCBzdWIgQXR0cmlidXRlU2hv
dWxkQmVPbkluc3RhbmNlCiAgICAgcmV0dXJuIDEgaWYgSXNHbG9iYWxJbnRlcmZhY2UoJGludGVy
ZmFjZSk7CiAgICAgcmV0dXJuIDEgaWYgJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUeXBl
KCRhdHRyaWJ1dGUtPnR5cGUpOwogCi0gICAgIyBbVW5mb3JnZWFibGVdIGF0dHJpYnV0ZXMgc2hv
dWxkIGJlIG9uIHRoZSBpbnN0YW5jZS4KLSAgICAjIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93
ZWJpZGwvI1VuZm9yZ2VhYmxlCi0gICAgcmV0dXJuIDEgaWYgSXNVbmZvcmdlYWJsZSgkaW50ZXJm
YWNlLCAkYXR0cmlidXRlKTsKKyAgICAjIFtMZWdhY3lVbmZvcmdlYWJsZV0gYXR0cmlidXRlcyBz
aG91bGQgYmUgb24gdGhlIGluc3RhbmNlLgorICAgICMgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlv
L3dlYmlkbC8jTGVnYWN5VW5mb3JnZWFibGUKKyAgICByZXR1cm4gMSBpZiBJc0xlZ2FjeVVuZm9y
Z2VhYmxlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogCiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0NoZWNrU2VjdXJpdHl9KSB7CiAgICAgICAgIHJldHVybiAwIGlm
ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RvTm90Q2hlY2tTZWN1cml0eX07CkBA
IC0xNzQ5LDggKzE3NDksOCBAQCBzdWIgT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlCiAKICAg
ICByZXR1cm4gMSBpZiBJc0dsb2JhbEludGVyZmFjZSgkaW50ZXJmYWNlKTsKIAotICAgICMgW1Vu
Zm9yZ2VhYmxlXSBvcGVyYXRpb25zIHNob3VsZCBiZSBvbiB0aGUgaW5zdGFuY2UuIGh0dHBzOi8v
aGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI1VuZm9yZ2VhYmxlCi0gICAgaWYgKElzVW5mb3JnZWFi
bGUoJGludGVyZmFjZSwgJG9wZXJhdGlvbikpIHsKKyAgICAjIFtMZWdhY3lVbmZvcmdlYWJsZV0g
b3BlcmF0aW9ucyBzaG91bGQgYmUgb24gdGhlIGluc3RhbmNlLiBodHRwczovL2hleWNhbS5naXRo
dWIuaW8vd2ViaWRsLyNMZWdhY3lVbmZvcmdlYWJsZQorICAgIGlmIChJc0xlZ2FjeVVuZm9yZ2Vh
YmxlKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pKSB7CiAgICAgICAgIGFzc2VydCgiVGhlIGJpbmRp
bmdzIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0IHB1dHRpbmcgcnVudGltZS1lbmFibGVkIG9w
ZXJhdGlvbnMgb24gdGhlIGluc3RhbmNlIHlldCAoZXhjZXB0IGZvciBnbG9iYWwgb2JqZWN0cyk6
WyIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gIjo6IiAuICRvcGVyYXRpb24tPm5hbWUgLiAi
XSIpIGlmIE5lZWRzUnVudGltZUNoZWNrKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pOwogICAgICAg
ICByZXR1cm4gMTsKICAgICB9CkBAIC0xNzg4LDcgKzE3ODgsNyBAQCBzdWIgSXNBY2NlbGVyYXRl
ZERPTUF0dHJpYnV0ZQogICAgIHJldHVybiAwIGlmICRhdHRyaWJ1dGUtPmlzU2V0TGlrZTsKICAg
ICByZXR1cm4gMCBpZiAkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0
ZS0+dHlwZSk7CiAgICAgcmV0dXJuIDAgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJp
YnV0ZSk7Ci0gICAgcmV0dXJuIDAgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
TGVuaWVudFRoaXN9OworICAgIHJldHVybiAwIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0xlZ2FjeUxlbmllbnRUaGlzfTsKICAgICByZXR1cm4gMCBpZiAkY29kZUdlbmVyYXRv
ci0+SXNQcm9taXNlVHlwZSgkYXR0cmlidXRlLT50eXBlKTsKICAgICByZXR1cm4gMCBpZiAkYXR0
cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9OwogICAgIHJldHVybiAxOwpAQCAt
MTgwMCw3ICsxODAwLDcgQEAgc3ViIEdldEpTQ0F0dHJpYnV0ZXNGb3JBdHRyaWJ1dGUKICAgICBt
eSAkYXR0cmlidXRlID0gc2hpZnQ7CiAKICAgICBteSBAc3BlY2lhbHMgPSAoKTsKLSAgICBwdXNo
KEBzcGVjaWFscywgIkpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUiKSBpZiBJc1Vu
Zm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgIHB1c2goQHNwZWNpYWxzLCAi
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSIpIGlmIElzTGVnYWN5VW5mb3JnZWFi
bGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAKICAgICAjIEFzIHBlciBXZWIgSURMIHNwZWNp
ZmljYXRpb24sIGNvbnN0cnVjdG9yIHByb3BlcnRpZXMgb24gdGhlIEVDTUFTY3JpcHQgZ2xvYmFs
IG9iamVjdCBzaG91bGQgbm90IGJlIGVudW1lcmFibGUuCiAgICAgbXkgJGlzR2xvYmFsQ29uc3Ry
dWN0b3IgPSAkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlw
ZSk7CkBAIC0yNjcwLDcgKzI2NzAsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICMgRklY
TUU6IFdoeSBkb2Vzbid0IHRoaXMgYWxzbyBpbmNsdWRlIEluZGV4ZWQgR2V0dGVycyBhbmQgW0N1
c3RvbUdldE93blByb3BlcnR5U2xvdF0KICAgICBpZiAoJG5hbWVkR2V0dGVyT3BlcmF0aW9uKSB7
Ci0gICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgk
aW50ZXJmYWNlLCAiT3ZlcnJpZGVCdWlsdGlucyIpKSB7CisgICAgICAgIGlmICgkY29kZUdlbmVy
YXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyIpKSB7CiAgICAgICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6R2V0T3du
UHJvcGVydHlTbG90SXNJbXB1cmUifSA9IDE7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9w
ZXJ0eUFic2VuY2UifSA9IDE7CkBAIC0yNzc1LDcgKzI3NzUsNyBAQCBzdWIgR2VuZXJhdGVIZWFk
ZXIKICAgICB9CiAgICAgCiAgICAgIyBDb25zdHJ1Y3RvciBvYmplY3QgZ2V0dGVyCi0gICAgdW5s
ZXNzICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOb0ludGVyZmFjZU9iamVjdH0p
IHsKKyAgICB1bmxlc3MgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0fSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0
YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNH
bG9iYWxPYmplY3QqKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0
YXRpYyBKU0M6OkpTVmFsdWUgZ2V0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKEpTQzo6Vk0mLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntMZWdhY3lGYWN0b3J5RnVuY3Rpb259OwogICAgIH0KQEAgLTQxOTUsNyArNDE5NSw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBoYXNoS2V5cywgJG5h
bWUpOwogCiAgICAgICAgICAgICBteSBAc3BlY2lhbHMgPSAoKTsKLSAgICAgICAgICAgIHB1c2go
QHNwZWNpYWxzLCAiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSIpIGlmIElzVW5m
b3JnZWFibGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBwdXNoKEBzcGVj
aWFscywgIkpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUiKSBpZiBJc0xlZ2FjeVVu
Zm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVzaChAc3Bl
Y2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSIpIGlmIElzUmVhZG9ubHko
JGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBzcGVjaWFscywgIkpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSIpIGlmIElzQWNjZWxlcmF0ZWRET01BdHRyaWJ1dGUoJGlu
dGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBzcGVjaWFscywgIkpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSIpIGlmICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0RPTUpJVH07CkBAIC00NTQzLDcgKzQ1NDMsNyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAg
ICAgfQogCi0gICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOb0ludGVy
ZmFjZU9iamVjdH0pIHsKKyAgICBpZiAoISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0fSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IkpTVmFsdWUgJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTUNv
bnN0cnVjdG9yPCR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpO1xuIik7CkBAIC00NjM2LDcgKzQ2MzYsNyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUpO1xuIik7CiAKLSAgICAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntOb0ludGVyZmFjZU9iamVjdH0pIHsKKyAgICAgICAgaWYgKCEkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lOb0ludGVyZmFjZU9iamVjdH0pIHsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
JHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgY29uc3RydWN0b3Ig
PSAke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6Y3JlYXRlKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCksICR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgKnByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIHBy
b3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKSwgKmpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTtcbiIpOwpAQCAtNTA4
OSw3ICs1MDg5LDcgQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyVHJhbXBvbGluZURlZgog
ICAgIAogICAgIG15IEB0ZW1wbGF0ZVBhcmFtZXRlcnMgPSAoKTsKICAgICBwdXNoKEB0ZW1wbGF0
ZVBhcmFtZXRlcnMsICRhdHRyaWJ1dGVHZXR0ZXJCb2R5TmFtZSk7Ci0gICAgaWYgKCRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlbmllbnRUaGlzfSkgeworICAgIGlmICgkYXR0cmli
dXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lMZW5pZW50VGhpc30pIHsKICAgICAgICAg
cHVzaChAdGVtcGxhdGVQYXJhbWV0ZXJzLCAiQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJldHVy
bkVhcmx5IikKICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkYXR0
cmlidXRlLT50eXBlKSkgewogICAgICAgICBwdXNoKEB0ZW1wbGF0ZVBhcmFtZXRlcnMsICJDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6UmVqZWN0UHJvbWlzZSIpCkBAIC01Mjg0LDcgKzUyODQsNyBA
QCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJUcmFtcG9saW5lRGVmCiAgICAgCiAgICAgbXkg
QHRlbXBsYXRlUGFyYW1ldGVycyA9ICgpOwogICAgIHB1c2goQHRlbXBsYXRlUGFyYW1ldGVycywg
JGF0dHJpYnV0ZVNldHRlckJvZHlOYW1lKTsKLSAgICBwdXNoKEB0ZW1wbGF0ZVBhcmFtZXRlcnMs
ICJDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6UmV0dXJuRWFybHkiKSBpZiAkYXR0cmlidXRlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntMZW5pZW50VGhpc307CisgICAgcHVzaChAdGVtcGxhdGVQYXJh
bWV0ZXJzLCAiQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJldHVybkVhcmx5IikgaWYgJGF0dHJp
YnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5TGVuaWVudFRoaXN9OwogICAgIAogICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHthdHRyaWJ1dGVTZXR0ZXJOYW1lfShKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICJ7XG4iKTsKQEAgLTY3MjUsNyArNjcyNSw3IEBAIHN1YiBJc0Fubm90YXRlZFR5cGUKIAogICAg
IHJldHVybiAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDbGFtcH07CiAgICAgcmV0
dXJuIDEgaWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuZm9yY2VSYW5nZX07Ci0gICAg
cmV0dXJuIDEgaWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1RyZWF0TnVsbEFzfSAmJiAk
dHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VHJlYXROdWxsQXN9IGVxICJFbXB0eVN0cmluZyI7
CisgICAgcmV0dXJuIDEgaWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nfTsKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57QXRvbVN0cmluZ307CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nfTsKIH0KQEAgLTY3MzYsNyArNjczNiw3IEBA
IHN1YiBHZXRBbm5vdGF0ZWRJRExUeXBlCiAKICAgICByZXR1cm4gIklETENsYW1wQWRhcHRvciIg
aWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NsYW1wfTsKICAgICByZXR1cm4gIklETEVu
Zm9yY2VSYW5nZUFkYXB0b3IiIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmZvcmNl
UmFuZ2V9OwotICAgIHJldHVybiAiSURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3IiIGlmICR0eXBl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntUcmVhdE51bGxBc30gJiYgJHR5cGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e1RyZWF0TnVsbEFzfSBlcSAiRW1wdHlTdHJpbmciOworICAgIHJldHVybiAiSURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmd9OwogICAgIHJldHVybiAiSURMQXRvbVN0cmlu
Z0FkYXB0b3IiIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBdG9tU3RyaW5nfTsKICAg
ICByZXR1cm4gIklETFJlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nQWRhcHRvciIgaWYgJHR5cGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nfTsKIH0KQEAg
LTc2MjAsMTIgKzc2MjAsMTIgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2Rz
CiAgICAgICAgICRsZWFzdENvbnN0cnVjdG9yTGVuZ3RoID0gMDsKICAgICB9CiAKLSAgICAjIElm
IHRoZSBpbnRlcmZhY2UgaGFzIGEgcGFyZW50IGludGVyZmFjZSB3aGljaCBkb2VzIG5vdCBoYXZl
IFtOb0ludGVyZmFjZU9iamVjdF0sIHRoZW4gdXNlIGl0cyBpbnRlcmZhY2Ugb2JqZWN0IGFzIHBy
b3RvdHlwZSwKKyAgICAjIElmIHRoZSBpbnRlcmZhY2UgaGFzIGEgcGFyZW50IGludGVyZmFjZSB3
aGljaCBkb2VzIG5vdCBoYXZlIFtMZWdhY3lOb0ludGVyZmFjZU9iamVjdF0sIHRoZW4gdXNlIGl0
cyBpbnRlcmZhY2Ugb2JqZWN0IGFzIHByb3RvdHlwZSwKICAgICAjIG90aGVyd2lzZSB1c2UgRnVu
Y3Rpb25Qcm90b3R5cGU6IGh0dHA6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaW50ZXJmYWNl
LW9iamVjdAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInRlbXBsYXRlPD4gSlNWYWx1ZSAke2Nv
bnN0cnVjdG9yQ2xhc3NOYW1lfTo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAie1xuIik7CiAKLSAgICBhc3NlcnQoIkFuIGludGVyZmFjZSBjYW5ub3QgaW5o
ZXJpdCBmcm9tIGFub3RoZXIgaW50ZXJmYWNlIHRoYXQgaXMgbWFya2VkIGFzIFtOb0ludGVyZmFj
ZU9iamVjdF0iKSBpZiAkaW50ZXJmYWNlLT5wYXJlbnRUeXBlICYmICRjb2RlR2VuZXJhdG9yLT5H
ZXRJbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXNGcm9tTmFtZSgkaW50ZXJmYWNlLT5wYXJlbnRU
eXBlLT5uYW1lKS0+e05vSW50ZXJmYWNlT2JqZWN0fTsKKyAgICBhc3NlcnQoIkFuIGludGVyZmFj
ZSBjYW5ub3QgaW5oZXJpdCBmcm9tIGFub3RoZXIgaW50ZXJmYWNlIHRoYXQgaXMgbWFya2VkIGFz
IFtMZWdhY3lOb0ludGVyZmFjZU9iamVjdF0iKSBpZiAkaW50ZXJmYWNlLT5wYXJlbnRUeXBlICYm
ICRjb2RlR2VuZXJhdG9yLT5HZXRJbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXNGcm9tTmFtZSgk
aW50ZXJmYWNlLT5wYXJlbnRUeXBlLT5uYW1lKS0+e0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0fTsK
IAogICAgIGlmICghJGdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5RnVuY3Rpb24gYW5kICRpbnRlcmZh
Y2UtPnBhcmVudFR5cGUpIHsKICAgICAgICAgbXkgJHBhcmVudENsYXNzTmFtZSA9ICJKUyIgLiAk
aW50ZXJmYWNlLT5wYXJlbnRUeXBlLT5uYW1lOwpAQCAtNzY0Miw3ICs3NjQyLDcgQEAgc3ViIEdl
bmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
e1xuIik7CiAKICAgICAjIFRoZXJlIG11c3QgZXhpc3QgYW4gaW50ZXJmYWNlIHByb3RvdHlwZSBv
YmplY3QgZm9yIGV2ZXJ5IG5vbi1jYWxsYmFjayBpbnRlcmZhY2UgZGVmaW5lZCwgcmVnYXJkbGVz
cwotICAgICMgb2Ygd2hldGhlciB0aGUgaW50ZXJmYWNlIHdhcyBkZWNsYXJlZCB3aXRoIHRoZSBb
Tm9JbnRlcmZhY2VPYmplY3RdIGV4dGVuZGVkIGF0dHJpYnV0ZS4KKyAgICAjIG9mIHdoZXRoZXIg
dGhlIGludGVyZmFjZSB3YXMgZGVjbGFyZWQgd2l0aCB0aGUgW0xlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0XSBleHRlbmRlZCBhdHRyaWJ1dGUuCiAgICAgIyBodHRwczovL2hleWNhbS5naXRodWIuaW8v
d2ViaWRsLyNpbnRlcmZhY2UtcHJvdG90eXBlLW9iamVjdAogICAgIGlmIChTaG91bGRVc2VHbG9i
YWxPYmplY3RQcm90b3R5cGUoJGludGVyZmFjZSkpIHsKICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnbG9i
YWxPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KHZtKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pO1xuIik7CkBAIC03NzQxLDcgKzc3NDEsNyBAQCBzdWIg
TmVlZHNDb25zdHJ1Y3RvclByb3BlcnR5CiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0Owog
ICAgIAotICAgIHJldHVybiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm9JbnRl
cmZhY2VPYmplY3R9OworICAgIHJldHVybiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3R9OwogfQogCiBzdWIgSXNDb25zdHJ1Y3RhYmxlCkBA
IC03NzY0LDExICs3NzY0LDExIEBAIHN1YiBIZWFkZXJOZWVkc1Byb3RvdHlwZURlY2xhcmF0aW9u
CiAgICAgICAgIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbURlZmlu
ZU93blByb3BlcnR5T25Qcm90b3R5cGV9OwogfQogCi1zdWIgSXNVbmZvcmdlYWJsZQorc3ViIElz
TGVnYWN5VW5mb3JnZWFibGUKIHsKICAgICBteSAoJGludGVyZmFjZSwgJHByb3BlcnR5KSA9IEBf
OwogCi0gICAgcmV0dXJuICRwcm9wZXJ0eS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VW5mb3JnZWFi
bGV9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1VuZm9yZ2VhYmxlfTsKKyAg
ICByZXR1cm4gJHByb3BlcnR5LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lVbmZvcmdlYWJs
ZX0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5VW5mb3JnZWFibGV9
OwogfQogCiBzdWIgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbApAQCAtNzc3Niw3ICs3Nzc2LDcgQEAg
c3ViIENvbXB1dGVGdW5jdGlvblNwZWNpYWwKICAgICBteSAoJGludGVyZmFjZSwgJG9wZXJhdGlv
bikgPSBAXzsKIAogICAgIG15IEBzcGVjaWFscyA9ICgpOwotICAgIHB1c2goQHNwZWNpYWxzLCAo
IkpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUiLCAiSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkiKSkgaWYgSXNVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkb3BlcmF0aW9u
KTsKKyAgICBwdXNoKEBzcGVjaWFscywgKCJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIiwgIkpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IikpIGlmIElzTGVnYWN5VW5m
b3JnZWFibGUoJGludGVyZmFjZSwgJG9wZXJhdGlvbik7CiAgICAgcHVzaChAc3BlY2lhbHMsICJK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSIpIGlmICRvcGVyYXRpb24tPmV4dGVuZGVk
QXR0cmlidXRlcy0+e05vdEVudW1lcmFibGV9OwogICAgIGlmIChJc0pTQnVpbHRpbigkaW50ZXJm
YWNlLCAkb3BlcmF0aW9uKSkgewogICAgICAgICBwdXNoKEBzcGVjaWFscywgIkpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkJ1aWx0aW4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvSURMQXR0cmlidXRlcy5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCShyZXZpc2lvbiAyNjY2NTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkod29ya2lu
ZyBjb3B5KQpAQCAtMTksNiArMTksMTMgQEAKICAgICAgICAgIkFjdGl2ZURPTU9iamVjdCI6IHsK
ICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0s
CisgICAgICAgICJBbGxvd1NoYXJlZCI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQi
OiBbInR5cGUiXSwKKyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAi
dXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0FsbG93U2hhcmVkIgorICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICJ1bnN1cHBvcnRlZCI6IHRydWUKKyAgICAgICAgfSwK
ICAgICAgICAgIkFwcGxlQ29weXJpZ2h0IjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dl
ZCI6IFsiaW50ZXJmYWNlIiwgImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQogICAgICAgICB9LApA
QCAtMjYsNyArMzMsMTAgQEAKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbInR5cGUi
XQogICAgICAgICB9LAogICAgICAgICAiQ0VSZWFjdGlvbnMiOiB7Ci0gICAgICAgICAgICAiY29u
dGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiLCAib3BlcmF0aW9uIl0KKyAgICAgICAgICAgICJj
b250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXSwKKyAgICAgICAgICAg
ICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvbXVsdGlwYWdlL2N1c3RvbS1lbGVtZW50cy5odG1sI2NlcmVhY3Rpb25zIgor
ICAgICAgICAgICAgfQogICAgICAgICB9LAogICAgICAgICAiQ2FjaGVkQXR0cmlidXRlIjogewog
ICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIl0KQEAgLTIyMyw2ICsy
MzMsMTMgQEAKICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5p
by93ZWJpZGwvI0dsb2JhbCIKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKKyAgICAgICAgIkhU
TUxDb25zdHJ1Y3RvciI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbIm9wZXJh
dGlvbiJdLAorICAgICAgICAgICAgInN0YW5kYXJkIjogeworICAgICAgICAgICAgICAgICJ1cmwi
OiAiaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG9tLmh0bWwjaHRtbGNv
bnN0cnVjdG9yIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJ1bnN1cHBvcnRlZCI6IHRy
dWUKKyAgICAgICAgfSwKICAgICAgICAgIkltcGxlbWVudGVkQXMiOiB7CiAgICAgICAgICAgICAi
Y29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiLCAiZGljdGlvbmFyeSIsICJkaWN0aW9uYXJ5
LW1lbWJlciIsICJlbnVtIiwgImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXSwKICAgICAgICAgICAg
ICJ2YWx1ZXMiOiBbIioiXQpAQCAtMjk3LDMwICszMTQsNjggQEAKICAgICAgICAgIkxlZ2FjeUZh
Y3RvcnlGdW5jdGlvbk1heVRocm93RXhjZXB0aW9uIjogewogICAgICAgICAgICAgImNvbnRleHRz
QWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0KICAgICAgICAgfSwKLSAgICAgICAgIkxlZ2FjeVVuZW51
bWVyYWJsZU5hbWVkUHJvcGVydGllcyI6IHsKKyAgICAgICAgIkxlZ2FjeUxlbmllbnRTZXR0ZXIi
OiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwKKyAgICAg
ICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5
Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeUxlbmllbnRTZXR0ZXIiCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgInVuc3VwcG9ydGVkIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAi
TGVnYWN5TGVuaWVudFRoaXMiOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJh
dHRyaWJ1dGUiXSwKKyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAi
dXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeUxlbmllbnRUaGlz
IgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5TmFtZXNwYWNlIjog
ewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCiAgICAgICAg
ICAgICAic3RhbmRhcmQiOiB7Ci0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNh
bS5naXRodWIuaW8vd2ViaWRsLyNMZWdhY3lVbmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMiCisg
ICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNM
ZWdhY3lOYW1lc3BhY2UiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInVuc3VwcG9ydGVk
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QiOiB7
CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAgICAg
ICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2Ft
LmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0IgogICAgICAgICAgICAg
fQogICAgICAgICB9LAotICAgICAgICAiTGVnYWN5V2luZG93QWxpYXMiOiB7CisgICAgICAgICJM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZyI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQi
OiBbInR5cGUiXSwKKyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAi
dXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nIgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFj
ZSJdLAotICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdLAogICAgICAgICAgICAgInN0YW5kYXJk
IjogewotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dl
YmlkbC8jTGVnYWN5V2luZG93QWxpYXMiCisgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczov
L2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIgogICAgICAg
ICAgICAgfQogICAgICAgICB9LAotICAgICAgICAiTGVuaWVudFNldHRlciI6IHsKLSAgICAgICAg
ICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdLAorICAgICAgICAiTGVnYWN5VHJl
YXROb25PYmplY3RBc051bGwiOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJj
YWxsYmFjay1mdW5jdGlvbiJdLAogICAgICAgICAgICAgInN0YW5kYXJkIjogewotICAgICAgICAg
ICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jTGVuaWVudFNl
dHRlciIKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93
ZWJpZGwvI0xlZ2FjeVRyZWF0Tm9uT2JqZWN0QXNOdWxsIgogICAgICAgICAgICAgfSwKICAgICAg
ICAgICAgICJ1bnN1cHBvcnRlZCI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgIkxlbmllbnRU
aGlzIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIl0sCisg
ICAgICAgICJMZWdhY3lVbmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMiOiB7CisgICAgICAgICAg
ICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAgICAgICAgICJzdGFuZGFy
ZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93
ZWJpZGwvI0xlZ2FjeVVuZW51bWVyYWJsZU5hbWVkUHJvcGVydGllcyIKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgIkxlZ2FjeVVuZm9yZ2VhYmxlIjogeworICAgICAgICAgICAg
ImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiIsICJpbnRlcmZhY2Ui
XSwKKyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0
dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeVVuZm9yZ2VhYmxlIgorICAgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5V2luZG93QWxpYXMiOiB7CisgICAg
ICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAgICAgICAgICJ2
YWx1ZXMiOiBbIioiXSwKICAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAgICAgICAgICAg
ICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlbmllbnRUaGlzIgor
ICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8j
TGVnYWN5V2luZG93QWxpYXMiCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgICJN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkIjogewpAQCAtMzMzLDI2ICszODgsMTQgQEAKICAgICAgICAg
ICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCiAgICAgICAg
ICJOZXdPYmplY3QiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1
dGUiLCAib3BlcmF0aW9uIl0sCisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJvcGVy
YXRpb24iLCAiYXR0cmlidXRlIl0sCiAgICAgICAgICAgICAic3RhbmRhcmQiOiB7CiAgICAgICAg
ICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNOZXdPYmpl
Y3QiCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJOb0ludGVyZmFjZU9iamVj
dCI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAotICAg
ICAgICAgICAgInN0YW5kYXJkIjogewotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9o
ZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jTm9JbnRlcmZhY2VPYmplY3QiCi0gICAgICAgICAgICB9
Ci0gICAgICAgIH0sCiAgICAgICAgICJOb3RFbnVtZXJhYmxlIjogewogICAgICAgICAgICAgImNv
bnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJdCiAgICAgICAgIH0sCi0g
ICAgICAgICJPdmVycmlkZUJ1aWx0aW5zIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dl
ZCI6IFsiaW50ZXJmYWNlIl0sCi0gICAgICAgICAgICAic3RhbmRhcmQiOiB7Ci0gICAgICAgICAg
ICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNPdmVycmlkZUJ1
aWx0aW5zIgotICAgICAgICAgICAgfQotICAgICAgICB9LAogICAgICAgICAiT3ZlcnJpZGVJRExU
eXBlIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsidHlwZSJdLAogICAgICAg
ICAgICAgInZhbHVlcyI6IFsiKiJdCkBAIC00MTcsNyArNDYwLDcgQEAKICAgICAgICAgIlNhbWVP
YmplY3QiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwK
ICAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAgICAgICAgICAgICAidXJsIjogImh0dHBz
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI1JlcGxhY2VhYmxlIgorICAgICAgICAgICAgICAg
ICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jU2FtZU9iamVjdCIKICAg
ICAgICAgICAgIH0sCiAgICAgICAgICAgICAidW5zdXBwb3J0ZWQiOiB0cnVlCiAgICAgICAgIH0s
CkBAIC00MjcsNiArNDcwLDEzIEBACiAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hl
eWNhbS5naXRodWIuaW8vd2ViaWRsLyNTZWN1cmVDb250ZXh0IgogICAgICAgICAgICAgfQogICAg
ICAgICB9LAorICAgICAgICAiU2VyaWFsaXphYmxlIjogeworICAgICAgICAgICAgImNvbnRleHRz
QWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCisgICAgICAgICAgICAic3RhbmRhcmQiOiB7CisgICAg
ICAgICAgICAgICAgInVybCI6ICJodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9zdHJ1Y3R1cmVkLWRhdGEuaHRtbCNzZXJpYWxpemFibGUiCisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgInVuc3VwcG9ydGVkIjogdHJ1ZQorICAgICAgICB9LAogICAgICAgICAiU2V0dGVy
Q2FsbFdpdGgiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUi
XSwKICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIkV4ZWNTdGF0ZSIsICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0IiwgIkdsb2JhbE9iamVjdCIsICJBY3RpdmVXaW5kb3ciLCAiRmlyc3RXaW5kb3ciXSwK
QEAgLTQ0MSwyOSArNDkxLDE2IEBACiAgICAgICAgICJTdXBwcmVzc1RvSlNPYmplY3QiOiB7CiAg
ICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LAot
ICAgICAgICAiVHJlYXROb25PYmplY3RBc051bGwiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNB
bGxvd2VkIjogWyJjYWxsYmFjay1mdW5jdGlvbiJdLAorICAgICAgICAiVHJhbnNmZXJhYmxlIjog
eworICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCiAgICAgICAg
ICAgICAic3RhbmRhcmQiOiB7Ci0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNh
bS5naXRodWIuaW8vd2ViaWRsLyNUcmVhdE5vbk9iamVjdEFzTnVsbCIKKyAgICAgICAgICAgICAg
ICAidXJsIjogImh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N0cnVjdHVy
ZWQtZGF0YS5odG1sI3RyYW5zZmVyYWJsZSIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAi
dW5zdXBwb3J0ZWQiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJUcmVhdE51bGxBcyI6IHsK
LSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbInR5cGUiXSwKLSAgICAgICAgICAgICJ2
YWx1ZXMiOiBbIkVtcHR5U3RyaW5nIl0sCi0gICAgICAgICAgICAic3RhbmRhcmQiOiB7Ci0gICAg
ICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNUcmVh
dE51bGxBcyIKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKICAgICAgICAgIlVSTCI6IHsKICAg
ICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdCiAgICAgICAgIH0sCi0g
ICAgICAgICJVbmZvcmdlYWJsZSI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBb
ImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iLCAiaW50ZXJmYWNlIl0sCi0gICAgICAgICAgICAic3Rh
bmRhcmQiOiB7Ci0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIu
aW8vd2ViaWRsLyNVbmZvcmdlYWJsZSIKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKICAgICAg
ICAgIlVuc2NvcGFibGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRy
aWJ1dGUiLCAib3BlcmF0aW9uIl0sCiAgICAgICAgICAgICAic3RhbmRhcmQiOiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5w
bAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9w
cmVwcm9jZXNzLWlkbHMucGwJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw3ICsxNjQsNyBAQCBmb3Jl
YWNoIG15ICRpZGxGaWxlIChzb3J0IGtleXMgJWlkbEZpbGVICiAKICAgICAjIEZvciBldmVyeSBp
bnRlcmZhY2UgdGhhdCBpcyBleHBvc2VkIGluIGEgZ2l2ZW4gRUNNQVNjcmlwdCBnbG9iYWwgZW52
aXJvbm1lbnQgYW5kOgogICAgICMgLSBpcyBhIGNhbGxiYWNrIGludGVyZmFjZSB0aGF0IGhhcyBj
b25zdGFudHMgZGVjbGFyZWQgb24gaXQsIG9yCi0gICAgIyAtIGlzIGEgbm9uLWNhbGxiYWNrIGlu
dGVyZmFjZSB0aGF0IGlzIG5vdCBkZWNsYXJlZCB3aXRoIHRoZSBbTm9JbnRlcmZhY2VPYmplY3Rd
IGV4dGVuZGVkIGF0dHJpYnV0ZSwgYSBjb3JyZXNwb25kaW5nCisgICAgIyAtIGlzIGEgbm9uLWNh
bGxiYWNrIGludGVyZmFjZSB0aGF0IGlzIG5vdCBkZWNsYXJlZCB3aXRoIHRoZSBbTGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3RdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgYSBjb3JyZXNwb25kaW5nCiAgICAg
IyAgIHByb3BlcnR5IG11c3QgZXhpc3Qgb24gdGhlIEVDTUFTY3JpcHQgZW52aXJvbm1lbnQncyBn
bG9iYWwgb2JqZWN0LgogICAgICMgU2VlIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwv
I2VzLWludGVyZmFjZXMKICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVzID0gZ2V0SW50ZXJmYWNl
RXh0ZW5kZWRBdHRyaWJ1dGVzRnJvbUlETCgkaWRsRmlsZUNvbnRlbnRzKTsKQEAgLTQ1OSw3ICs0
NTksNyBAQCBzdWIgc2hvdWxkRXhwb3NlSW50ZXJmYWNlCiB7CiAgICAgbXkgJGV4dGVuZGVkQXR0
cmlidXRlcyA9IHNoaWZ0OwogCi0gICAgcmV0dXJuICEkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5v
SW50ZXJmYWNlT2JqZWN0In07CisgICAgcmV0dXJuICEkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikxl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0In07CiB9CiAKIHN1YiB1cGRhdGVEaWN0aW9uYXJ5RGVwZW5k
ZW5jaWVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGlu
Z1Rlc3RHbG9iYWxDb25zdHJ1Y3RvcnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9ycy5pZGwJ
KHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9CaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9ycy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDcgQEAgcGFydGlhbCBpbnRlcmZhY2UgVGVzdEdsb2JhbE9iamVjdCB7CiAgICAgYXR0
cmlidXRlIFRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yIFRlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvcjsKICAgICBhdHRyaWJ1dGUgVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0
cnVjdG9yIFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb247CiAgICAgYXR0cmlidXRlIFRlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvciBBdWRpbzsK
KyAgICBhdHRyaWJ1dGUgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciBUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdEluczsKICAgICBhdHRyaWJ1dGUgVGVzdE1hcExpa2VDb25zdHJ1
Y3RvciBUZXN0TWFwTGlrZTsKICAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllckNvbnN0cnVjdG9yIFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXI7CiAgICAgYXR0cmlidXRlIFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbkNvbnN0cnVjdG9yIFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbjsKQEAgLTQyLDEyICs0MywxMSBAQCBwYXJ0aWFsIGludGVyZmFjZSBUZXN0R2xvYmFsT2Jq
ZWN0IHsKICAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1
Y3RvciBUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjsKICAgICBhdHRyaWJ1dGUgVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3RvciBUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlcjsKICAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvciBUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckFuZFNldHRlcjsKLSAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVp
bHRpbnNDb25zdHJ1Y3RvciBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczsKLSAg
ICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3Ry
dWN0b3IgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOwotICAgIGF0dHJp
YnV0ZSBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zQ29uc3RydWN0b3IgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGluczsKKyAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
T3ZlcnJpZGVCdWlsdEluczsKKyAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yIFRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXM7CisgICAgYXR0cmlidXRlIFRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29u
c3RydWN0b3IgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM7CiAgICAgW0NvbmRpdGlvbmFsPUNvbmRpdGlvbkRlcml2
ZWRdIGF0dHJpYnV0ZSBUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxDb25zdHJ1Y3RvciBUZXN0T3Bl
cmF0aW9uQ29uZGl0aW9uYWw7CiAgICAgYXR0cmlidXRlIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2U7Ci0gICAgYXR0cmlidXRlIFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3Ig
VGVzdE92ZXJyaWRlQnVpbHRpbnM7CiAgICAgYXR0cmlidXRlIFRlc3RQbHVnaW5JbnRlcmZhY2VD
b25zdHJ1Y3RvciBUZXN0UGx1Z2luSW50ZXJmYWNlOwogICAgIGF0dHJpYnV0ZSBUZXN0UmVhZE9u
bHlNYXBMaWtlQ29uc3RydWN0b3IgVGVzdFJlYWRPbmx5TWFwTGlrZTsKICAgICBhdHRyaWJ1dGUg
VGVzdFJlYWRPbmx5U2V0TGlrZUNvbnN0cnVjdG9yIFRlc3RSZWFkT25seVNldExpa2U7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5k
ZW5jaWVzLmRlcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAkocmV2aXNpb24gMjY2NjU5KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVu
Y2llcy5kZXAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsOSBAQCBXZWJET01UZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IuaDogCiBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaDogCiBE
T01UZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmg6IAogV2ViRE9NVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbi5oOiAKK0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaDogCitET01UZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdElucy5oOiAKK1dlYkRPTVRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Lmg6IAogSlNUZXN0TWFwTGlrZS5oOiAKIERPTVRlc3RNYXBMaWtlLmg6IAogV2ViRE9NVGVzdE1h
cExpa2UuaDogCkBAIC0xNjEsMTUgKzE2NCwxNSBAQCBXZWJET01UZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlci5oCiBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyLmg6IAogRE9NVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuaDog
CiBXZWJET01UZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5oOiAKLUpT
VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaDogCi1ET01UZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5oOiAKLVdlYkRPTVRlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zLmg6IAotSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXMuaDogCi1ET01UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaDogCi1X
ZWJET01UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaDogCi1KU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaDog
Ci1ET01UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zLmg6IAotV2ViRE9NVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGlucy5oOiAKK0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMuaDogCitET01UZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWls
dElucy5oOiAKK1dlYkRPTVRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Lmg6IAorSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmg6
IAorRE9NVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5oOiAK
K1dlYkRPTVRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaDog
CitKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zLmg6IAorRE9NVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaDogCitXZWJET01UZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucy5oOiAKIEpTVGVzdE5vZGUuaDogCiBET01UZXN0Tm9kZS5oOiAKIFdlYkRPTVRl
c3ROb2RlLmg6IApAQCAtMTgzLDkgKzE4Niw2IEBAIFRlc3RPcGVyYXRpb25CYXNlLmlkbDoKIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuaDogCiBET01UZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5oOiAKIFdlYkRPTVRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlLmg6IAotSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oOiAKLURP
TVRlc3RPdmVycmlkZUJ1aWx0aW5zLmg6IAotV2ViRE9NVGVzdE92ZXJyaWRlQnVpbHRpbnMuaDog
CiBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaDogCiBET01UZXN0UGx1Z2luSW50ZXJmYWNlLmg6IAog
V2ViRE9NVGVzdFBsdWdpbkludGVyZmFjZS5oOiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0SW5jbHVkZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW5jbHVkZXMuaWRsCShyZXZpc2lvbiAy
NjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEluY2x1
ZGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogLy8gY2hhbmdlcyBpbiBp
dHMgb3V0cHV0LgogWwogICAgIENvbmRpdGlvbmFsPUNvbmRpdGlvbjIyfENvbmRpdGlvbjIzLAot
ICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50
ZXJmYWNlIFRlc3RJbmNsdWRlcyB7CiAgICAgc3RhdGljIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25n
IGluY2x1ZGVzU3RhdGljUmVhZE9ubHlBdHRyOwogICAgIHN0YXRpYyBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGluY2x1ZGVzU3RhdGljQXR0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cworXSBpbnRlcmZhY2UgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgeworICAgIGdldHRlciBO
b2RlIG5hbWVkSXRlbShET01TdHJpbmcgbmFtZSk7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaWRsCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
CitdIGludGVyZmFjZSBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyB7
CisgICAgc2V0dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyB2YWx1ZSk7
CisKKyAgICAvLyBOT1RFOiBOYW1lZCBzZXR0ZXJzIHJlcXVpcmUgdGhlIHByZXNlbmNlIG9mIGEg
bmFtZWQgZ2V0dGVyIGFzIHdlbGwuCisgICAgZ2V0dGVyIERPTVN0cmluZyAoRE9NU3RyaW5nIG5h
bWUpOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitpbnRlcmZhY2UgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcyB7CisgICAgc2V0dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5nIG5hbWUs
IERPTVN0cmluZyB2YWx1ZSk7CisKKyAgICAvLyBOT1RFOiBOYW1lZCBzZXR0ZXJzIHJlcXVpcmUg
dGhlIHByZXNlbmNlIG9mIGEgbmFtZWQgZ2V0dGVyIGFzIHdlbGwuCisgICAgZ2V0dGVyIERPTVN0
cmluZyAoRE9NU3RyaW5nIG5hbWUpOworCisgICAgW0xlZ2FjeVVuZm9yZ2VhYmxlXSByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVuZm9yZ2VhYmxlQXR0cmlidXRlOworICAgIFtMZWdhY3lV
bmZvcmdlYWJsZV0gdW5kZWZpbmVkIHVuZm9yZ2VhYmxlT3BlcmF0aW9uKCk7Cit9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1sKKyAgICBMZWdhY3lPdmVycmlkZUJ1aWx0SW5zCitdIGludGVy
ZmFjZSBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucyB7CisgICAgc2V0dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5nIG5h
bWUsIERPTVN0cmluZyB2YWx1ZSk7CisKKyAgICAvLyBOT1RFOiBOYW1lZCBzZXR0ZXJzIHJlcXVp
cmUgdGhlIHByZXNlbmNlIG9mIGEgbmFtZWQgZ2V0dGVyIGFzIHdlbGwuCisgICAgZ2V0dGVyIERP
TVN0cmluZyAoRE9NU3RyaW5nIG5hbWUpOworCisgICAgW0xlZ2FjeVVuZm9yZ2VhYmxlXSByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVuZm9yZ2VhYmxlQXR0cmlidXRlOworICAgIFtMZWdh
Y3lVbmZvcmdlYWJsZV0gdW5kZWZpbmVkIHVuZm9yZ2VhYmxlT3BlcmF0aW9uKCk7Cit9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaWRs
CShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaWRsCShub25leGlzdGVudCkK
QEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBPdmVycmlkZUJ1aWx0aW5zCi1d
IGludGVyZmFjZSBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyB7Ci0gICAgc2V0
dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyB2YWx1ZSk7Ci0KLSAgICAv
LyBOT1RFOiBOYW1lZCBzZXR0ZXJzIHJlcXVpcmUgdGhlIHByZXNlbmNlIG9mIGEgbmFtZWQgZ2V0
dGVyIGFzIHdlbGwuCi0gICAgZ2V0dGVyIERPTVN0cmluZyAoRE9NU3RyaW5nIG5hbWUpOwotfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXMuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmlk
bAkobm9uZXhpc3RlbnQpCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1pbnRlcmZhY2Ug
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIHsKLSAgICBzZXR0ZXIgdW5k
ZWZpbmVkIChET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKLQotICAgIC8vIE5PVEU6
IE5hbWVkIHNldHRlcnMgcmVxdWlyZSB0aGUgcHJlc2VuY2Ugb2YgYSBuYW1lZCBnZXR0ZXIgYXMg
d2VsbC4KLSAgICBnZXR0ZXIgRE9NU3RyaW5nIChET01TdHJpbmcgbmFtZSk7Ci0KLSAgICBbVW5m
b3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdW5mb3JnZWFibGVBdHRyaWJ1
dGU7Ci0gICAgW1VuZm9yZ2VhYmxlXSB1bmRlZmluZWQgdW5mb3JnZWFibGVPcGVyYXRpb24oKTsK
LX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaWRsCShy
ZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
cy5pZGwJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAg
IE92ZXJyaWRlQnVpbHRpbnMKLV0gaW50ZXJmYWNlIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMgewotICAgIHNldHRlciB1bmRlZmluZWQg
KERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgdmFsdWUpOwotCi0gICAgLy8gTk9URTogTmFtZWQg
c2V0dGVycyByZXF1aXJlIHRoZSBwcmVzZW5jZSBvZiBhIG5hbWVkIGdldHRlciBhcyB3ZWxsLgot
ICAgIGdldHRlciBET01TdHJpbmcgKERPTVN0cmluZyBuYW1lKTsKLQotICAgIFtVbmZvcmdlYWJs
ZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1bmZvcmdlYWJsZUF0dHJpYnV0ZTsKLSAg
ICBbVW5mb3JnZWFibGVdIHVuZGVmaW5lZCB1bmZvcmdlYWJsZU9wZXJhdGlvbigpOwotfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNzMsMTEgKzczLDExIEBAIGVudW0g
VGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBhdHRyaWJ1dGUgVVNWU3Ry
aW5nIHVzdnN0cmluZ0F0dHI7CiAgICAgYXR0cmlidXRlIFRlc3RPYmogdGVzdE9iakF0dHI7CiAg
ICAgYXR0cmlidXRlIFRlc3RPYmo/IHRlc3ROdWxsYWJsZU9iakF0dHI7Ci0gICAgW0xlbmllbnRU
aGlzXSBhdHRyaWJ1dGUgVGVzdE9iaiBsZW5pZW50VGVzdE9iakF0dHI7Ci0gICAgW1VuZm9yZ2Vh
YmxlXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVuZm9yZ2VhYmxlQXR0cjsKLSAgICBh
dHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgc3RyaW5nQXR0clRy
ZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmc7Ci0gICAgYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0
eVN0cmluZ10gVVNWU3RyaW5nIHVzdnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5n
OwotICAgIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIEJ5dGVTdHJpbmcgYnl0
ZVN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nOworICAgIFtMZWdhY3lMZW5pZW50
VGhpc10gYXR0cmlidXRlIFRlc3RPYmogbGVuaWVudFRlc3RPYmpBdHRyOworICAgIFtMZWdhY3lV
bmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1bmZvcmdlYWJsZUF0dHI7
CisgICAgYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHN0cmlu
Z0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nOworICAgIGF0dHJpYnV0ZSBbTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmddIFVTVlN0cmluZyB1c3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZzsKKyAgICBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBCeXRlU3Ry
aW5nIGJ5dGVTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZzsKICAgICBhdHRyaWJ1
dGUgcmVjb3JkPERPTVN0cmluZywgbG9uZz4gc3RyaW5nTG9uZ1JlY29yZEF0dHI7CiAgICAgYXR0
cmlidXRlIHJlY29yZDxVU1ZTdHJpbmcsIGxvbmc+IHVzdnN0cmluZ0xvbmdSZWNvcmRBdHRyOwog
ICAgIGF0dHJpYnV0ZSByZWNvcmQ8Qnl0ZVN0cmluZywgbG9uZz4gdXN2c3RyaW5nTG9uZ1JlY29y
ZEF0dHI7CkBAIC0xNDIsOCArMTQyLDggQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwg
ImtpbmRhLWxvdwogICAgIGxvbmcgbG9uZ01ldGhvZFdpdGhBcmdzKGxvbmcgbG9uZ0FyZywgRE9N
U3RyaW5nIHN0ckFyZywgVGVzdE9iaiBvYmpBcmcpOwogICAgIFRlc3RPYmogb2JqTWV0aG9kKCk7
CiAgICAgVGVzdE9iaiBvYmpNZXRob2RXaXRoQXJncyhsb25nIGxvbmdBcmcsIERPTVN0cmluZyBz
dHJBcmcsIFRlc3RPYmogb2JqQXJnKTsKLSAgICBbVW5mb3JnZWFibGVdIGxvbmcgdW5mb3JnZWFi
bGVNZXRob2QoKTsKLSAgICB1bmRlZmluZWQgbWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1w
dHlTdHJpbmcoW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgYXJnKTsKKyAgICBb
TGVnYWN5VW5mb3JnZWFibGVdIGxvbmcgdW5mb3JnZWFibGVNZXRob2QoKTsKKyAgICB1bmRlZmlu
ZWQgbWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoW0xlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nXSBET01TdHJpbmcgYXJnKTsKICAgICB1bmRlZmluZWQgbWV0aG9kV2l0aFhQYXRo
TlNSZXNvbHZlclBhcmFtZXRlcihYUGF0aE5TUmVzb2x2ZXIgcmVzb2x2ZXIpOwogCiAgICAgLy8g
TnVsbGFibGUgU3RyaW5nIHJldHVybiB2YWx1ZXMuCkBAIC0xNTksMTEgKzE1OSwxMSBAQCBlbnVt
IFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAKICAgICB1bmRlZmluZWQgbWV0
aG9kV2l0aFVTVlN0cmluZ0FyZyhVU1ZTdHJpbmcgc3RyKTsKICAgICB1bmRlZmluZWQgbWV0aG9k
V2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnKFVTVlN0cmluZz8gc3RyKTsKLSAgICB1bmRlZmluZWQg
bWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoW1RyZWF0TnVs
bEFzPUVtcHR5U3RyaW5nXSBVU1ZTdHJpbmcgc3RyKTsKKyAgICB1bmRlZmluZWQgbWV0aG9kV2l0
aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoW0xlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nXSBVU1ZTdHJpbmcgc3RyKTsKIAogICAgIHVuZGVmaW5lZCBtZXRob2RXaXRoQnl0ZVN0
cmluZ0FyZyhCeXRlU3RyaW5nIHN0cik7CiAgICAgdW5kZWZpbmVkIG1ldGhvZFdpdGhOdWxsYWJs
ZUJ5dGVTdHJpbmdBcmcoQnl0ZVN0cmluZz8gc3RyKTsKLSAgICB1bmRlZmluZWQgbWV0aG9kV2l0
aEJ5dGVTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFtUcmVhdE51bGxBcz1FbXB0
eVN0cmluZ10gQnl0ZVN0cmluZyBzdHIpOworICAgIHVuZGVmaW5lZCBtZXRob2RXaXRoQnl0ZVN0
cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
XSBCeXRlU3RyaW5nIHN0cik7CiAKICAgICB1bmRlZmluZWQgc2VyaWFsaXplZFZhbHVlKFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSBzZXJpYWxpemVkQXJnKTsKIApAQCAtNDUwLDggKzQ1MCw4IEBAIGVu
dW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBbQ29uZGl0aW9uYWw9
Q09ORElUSU9OMiwgQ29uZGl0aW9uYWxseVJlYWRXcml0ZT1DT05ESVRJT05dIGF0dHJpYnV0ZSBO
b2RlIGNvbmRpdGlvbmFsQW5kQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZTsKIAogICAg
IFtSdW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZT1UZXN0RmVhdHVyZV0gYXR0cmlidXRlIE5v
ZGUgcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGU7Ci0gICAgW1J1bnRpbWVD
b25kaXRpb25hbGx5UmVhZFdyaXRlPVRlc3RGZWF0dXJlLCBVbmZvcmdlYWJsZV0gYXR0cmlidXRl
IE5vZGUgcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZTsK
LSAgICBbUnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGU9VGVzdEZlYXR1cmUsIFByaXZhdGVJ
ZGVudGlmaWVyLCBVbmZvcmdlYWJsZV0gYXR0cmlidXRlIE5vZGUgcnVudGltZUNvbmRpdGlvbmFs
bHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZVByaXZhdGU7CisgICAgW1J1bnRpbWVDb25k
aXRpb25hbGx5UmVhZFdyaXRlPVRlc3RGZWF0dXJlLCBMZWdhY3lVbmZvcmdlYWJsZV0gYXR0cmli
dXRlIE5vZGUgcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJs
ZTsKKyAgICBbUnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGU9VGVzdEZlYXR1cmUsIFByaXZh
dGVJZGVudGlmaWVyLCBMZWdhY3lVbmZvcmdlYWJsZV0gYXR0cmlidXRlIE5vZGUgcnVudGltZUNv
bmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZVByaXZhdGU7CiAgICAgW1J1
bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlPVRlc3RGZWF0dXJlXSBhdHRyaWJ1dGUgUHJvbWlz
ZTxkb3VibGU+IHJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlUHJvbWlzZTsK
IAogICAgIFtFeHBvc2VkPVdpbmRvd10gYXR0cmlidXRlIGxvbmcgY29uZGl0aW9uYWxseUV4cG9z
ZWRUb1dpbmRvd0F0dHJpYnV0ZTsKQEAgLTQ3Niw3ICs0NzYsNyBAQCB0eXBlZGVmIGFueSBBbnlU
eXBlZGVmOwogICAgIERPTVN0cmluZyBzdHJpbmdXaXRoRGVmYXVsdCA9ICJkZWZhdWx0U3RyaW5n
IjsKICAgICBET01TdHJpbmcgc3RyaW5nV2l0aG91dERlZmF1bHQ7CiAgICAgRE9NU3RyaW5nPyBu
dWxsYWJsZVN0cmluZ1dpdGhEZWZhdWx0ID0gbnVsbDsKLSAgICBbVHJlYXROdWxsQXM9RW1wdHlT
dHJpbmddIERPTVN0cmluZyBzdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nOworICAgIFtMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJp
bmc7CiAgICAgYm9vbGVhbiBib29sZWFuV2l0aERlZmF1bHQgPSBmYWxzZTsKICAgICBib29sZWFu
IGJvb2xlYW5XaXRob3V0RGVmYXVsdDsKICAgICBzZXF1ZW5jZTxET01TdHJpbmc+IHNlcXVlbmNl
T2ZTdHJpbmdzOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RPcGVyYXRpb25CYXNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE9wZXJhdGlvbkJhc2UuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9wZXJhdGlvbkJhc2Uu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAKIFsKICAgICBDb25kaXRpb25h
bD1Db25kaXRpb25CYXNlLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgVGVzdE9wZXJhdGlvbkJhc2UgewogICAgIHVuZGVm
aW5lZCBub25Db25kaXRpb25hbE9wZXJhdGlvbigpOwogICAgIFtDb25kaXRpb25hbD1Db25kaXRp
b25PcGVyYXRpb25dIHVuZGVmaW5lZCBjb25kaXRpb25hbE9wZXJhdGlvbigpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE92ZXJyaWRlQnVpbHRpbnMuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE92ZXJyaWRlQnVpbHRpbnMuaWRsCShub25leGlz
dGVudCkKQEAgLTEsNiArMCwwIEBACi1bCi0gICAgT3ZlcnJpZGVCdWlsdGlucwotXSBpbnRlcmZh
Y2UgVGVzdE92ZXJyaWRlQnVpbHRpbnMKLXsKLSAgICBnZXR0ZXIgTm9kZSBuYW1lZEl0ZW0oRE9N
U3RyaW5nIG5hbWUpOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAkocmV2aXNp
b24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw3IEBAIGJv
b2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5U2wKICAgICAgICAgICAgIHJldHVy
biB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExU
eXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAg
ICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVn
YWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0g
dG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dC0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTIwMSw3ICsyMDEsNyBAQCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9w
ZXJ0eVNsCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJl
c3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChh
dXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1
aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG5hbWVk
UHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZh
bHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0
LmNwcAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYg
KzU5LDcgQEAKICNpbmNsdWRlICJKU1Rlc3RJdGVyYWJsZS5oIgogI2luY2x1ZGUgIkpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uLmgiCisjaW5jbHVkZSAiSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oIgogI2luY2x1
ZGUgIkpTVGVzdE1hcExpa2UuaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5oIgpAQCAtNzUsMTEgKzc2LDEwIEBACiAjaW5jbHVkZSAiSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXIuaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQW5kU2V0dGVyLmgiCi0jaW5jbHVkZSAiSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGlucy5oIgotI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzLmgiCi0jaW5jbHVkZSAiSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmgiCisjaW5jbHVkZSAiSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oIgorI2luY2x1ZGUgIkpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5oIgorI2luY2x1ZGUgIkpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMuaCIKICNpbmNsdWRlICJKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlLmgiCi0jaW5jbHVkZSAiSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oIgogI2luY2x1
ZGUgIkpTVGVzdFBsdWdpbkludGVyZmFjZS5oIgogI2luY2x1ZGUgIkpTVGVzdFJlYWRPbmx5TWFw
TGlrZS5oIgogI2luY2x1ZGUgIkpTVGVzdFJlYWRPbmx5U2V0TGlrZS5oIgpAQCAtMjI3LDYgKzIy
Nyw4IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGUKIGJvb2wgc2V0
SlNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1
Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE1hcExpa2VDb25zdHJ1Y3RvcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OwogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TWFwTGlrZUNvbnN0cnVjdG9yKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CkBAIC0yNTksMjAgKzI2MSwx
OCBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlCiBib29sIHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29s
IHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9i
YWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Ci1ib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1
Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0Nv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFs
T2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0
cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNpZiBFTkFCTEUoQ29uZGl0aW9uRGVy
aXZlZCkKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE9wZXJhdGlv
bkNvbmRpdGlvbmFsQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0
VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3RvcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVycmlkZUJ1
aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE92
ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEdsb2JhbE9iamVjdFRlc3RQbHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9v
bCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0UmVhZE9ubHlN
YXBMaWtlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTMyMCwxMyArMzIwLDEzIEBAIHVzaW5nIEpTVGVz
dEdsb2JhbE9iamVjdENvbnN0cnVjdG9yID0gSlMKIAogLyogSGFzaCB0YWJsZSAqLwogCi1zdGF0
aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJ
bmRleFsyNjldID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVz
dEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjcwXSA9IHsKICAgICB7IC0xLCAtMSB9LAotICAgIHsg
NDAsIC0xIH0sCisgICAgeyA0MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMCwgLTEg
fSwKLSAgICB7IDgsIDI2NCB9LAotICAgIHsgNDQsIC0xIH0sCisgICAgeyA4LCAyNjUgfSwKKyAg
ICB7IDQ1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LApAQCAtMzU2LDcgKzM1Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKLSAgICB7IDM0LCAtMSB9LAorICAgIHsgMzUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0zNzEsMTAgKzM3MSwxMSBAQCBz
dGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzOCwgLTEgfSwKKyAgICB7
IDM5LCAtMSB9LAogICAgIHsgMjAsIDI1NiB9LAogICAgIHsgMTAsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKKyAgICB7IDQ2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LApAQCAtMzgzLDE1ICszODQsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVj
dCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzNiwgLTEgfSwKKyAgICB7
IDM3LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAot
ICAgIHsgMjIsIDI2NiB9LAorICAgIHsgMjIsIDI2NyB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNDE5LDI0ICs0MTksMjQgQEAgc3RhdGlj
IGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgMTksIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDYsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKICAgICB7IDE4LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzNSwgLTEgfSwKKyAgICB7
IDM2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDQsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0g
ICAgeyA1MCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAogICAgIHsgMjUsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKLSAgICB7IDIsIDI2OCB9LAotICAgIHsgMzcsIC0xIH0sCisgICAgeyAyLCAyNjkg
fSwKKyAgICB7IDM4LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LApAQCAtNDUzLDkgKzQ1Myw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29t
cGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKKyAgICB7IDI5LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAtMSwg
LTEgfSwKLSAgICB7IDQyLCAtMSB9LAorICAgIHsgNDMsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00NjksNyArNDY5LDcgQEAgc3Rh
dGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCisgICAgeyA0
OCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKQEAgLTQ4NCw3ICs0ODQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5k
ZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMjgsIC0xIH0s
Ci0gICAgeyAzMSwgMjYzIH0sCisgICAgeyAzMiwgMjYzIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IDUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMg
Y29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzMywgMjY3IH0sCisgICAgeyAzNCwg
MjY4IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDE3LCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4
IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAot
ICAgIHsgNTYsIC0xIH0sCisgICAgeyA0NywgMjY0IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgMywgLTEgfSwKQEAgLTU1MCwxMiArNTUwLDEyIEBAIHN0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ4LCAyNjIgfSwKKyAgICB7IDQ5LCAy
NjIgfSwKICAgICB7IDExLCAyNjEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgNjMsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ3LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC01NjUsMTAg
KzU2NSwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAg
eyAyNiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzMCwg
LTEgfSwKKyAgICB7IDMxLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDUsIC0xIH0sCiAgICAgeyA3LCAtMSB9LAogICAgIHsg
NTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTU3NywxNCArNTc3LDE1IEBAIHN0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDI3LCAyNjUgfSwKLSAgICB7IDI5LCAy
NjAgfSwKLSAgICB7IDMyLCAtMSB9LAotICAgIHsgMzksIC0xIH0sCi0gICAgeyA0MSwgLTEgfSwK
LSAgICB7IDQzLCAtMSB9LAotICAgIHsgNDksIC0xIH0sCisgICAgeyAyNywgMjY2IH0sCisgICAg
eyAzMCwgMjYwIH0sCisgICAgeyAzMywgLTEgfSwKKyAgICB7IDQwLCAtMSB9LAorICAgIHsgNDIs
IC0xIH0sCisgICAgeyA0NCwgLTEgfSwKKyAgICB7IDUwLCAtMSB9LAogICAgIHsgNTUsIC0xIH0s
CisgICAgeyA1NiwgLTEgfSwKICAgICB7IDU3LCAtMSB9LAogICAgIHsgNTksIC0xIH0sCiAgICAg
eyA2NCwgLTEgfSwKQEAgLTYzNiw2ICs2MzcsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFs
dWUgSlNUZXN0R2xvYmFsCiAgICAgeyAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9
IH0sCiAgICAgeyAiVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xv
YmFsT2JqZWN0VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xv
YmFsT2JqZWN0VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yKSB9IH0sCiAgICAg
eyAiQXVkaW8iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE1hcExpa2UiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RNYXBMaWtlQ29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RH
bG9iYWxPYmplY3RUZXN0TWFwTGlrZUNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVj
dG9yKSB9IH0sCiAgICAgeyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSB9IH0sCkBAIC02
NTIsMTYgKzY1NCwxNSBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFs
CiAgICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEds
b2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9
IH0sCiAgICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckNv
bnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJB
bmRTZXR0ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyQW5kU2V0dGVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVjdG9yKSB9IH0sCi0g
ICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlu
c0NvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKSB9IH0sCi0gICAg
eyAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGlucyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xv
YmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGluc0NvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVj
dG9yKSB9IH0sCisgICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9y
KSB9IH0sCisgICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVj
dFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluc0NvbnN0cnVjdG9yKSB9IH0sCiAjaWYgRU5BQkxFKENvbmRpdGlvbkRlcml2ZWQpCiAgICAg
eyAiVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RU
ZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRl
c3RPcGVyYXRpb25Db25kaXRpb25hbENvbnN0cnVjdG9yKSB9IH0sCiAjZWxzZQogICAgIHsgMCwg
MCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICAgICB7ICJUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEds
b2JhbE9iamVjdFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0
b3IpIH0gfSwKLSAgICB7ICJUZXN0T3ZlcnJpZGVCdWlsdGlucyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xv
YmFsT2JqZWN0VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0UGx1
Z2luSW50ZXJmYWNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0UGx1Z2luSW50ZXJm
YWNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0UGx1Z2luSW50ZXJmYWNlQ29u
c3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0UmVhZE9ubHlNYXBMaWtlIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RHbG9iYWxPYmplY3RUZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0
UmVhZE9ubHlTZXRMaWtlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0UmVhZE9ubHlT
ZXRMaWtlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0UmVhZE9ubHlTZXRMaWtl
Q29uc3RydWN0b3IpIH0gfSwKQEAgLTE2MDgsNiArMTYwOSwyOSBAQCBib29sIHNldEpTVGVzdEds
b2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0CiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RH
bG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1Y3RvclNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiQXVk
aW8iKTsKIH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAg
ICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKK30KKworRW5jb2RlZEpT
VmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnNDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgIlRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVj
dG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9i
YWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWls
dC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKSwgc3RybGVuKCJUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdElucyIpKSwgdmFsdWUpOworfQorCitib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0
Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29u
c3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIlRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIik7Cit9CisKIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TWFwTGlrZUNvbnN0cnVjdG9yR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRo
aXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpAQCAt
MTk3Niw3MyArMjAwMCw3MyBAQCBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNl
dHRlCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0
SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXJDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIiKTsK
IH0KIAotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3N0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBKU1Rlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7CisgICAg
cmV0dXJuIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldENv
bnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmds
b2JhbE9iamVjdCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rl
c3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVj
dG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdE5hbWVkU2V0
dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVz
dEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMiKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmpl
Y3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBj
b25zdHJ1Y3Rvci4KLSAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMiKSwgc3RybGVuKCJUZXN0TmFtZWRTZXR0ZXJX
aXRoT3ZlcnJpZGVCdWlsdGlucyIpKSwgdmFsdWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIp
LCBzdHJsZW4oIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIikpLCB2
YWx1ZSk7CiB9CiAKLWJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCitib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6
c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIik7CisgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xv
YmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1
Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKTsKIH0KIAotc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCitzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOwor
ICAgIHJldHVybiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlz
T2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFs
T2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2Jh
bE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyIpOworICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2Jh
bE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25z
dHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMiKTsKIH0KIAotc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0NvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4K
LSAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIiksIHN0cmxlbigiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzIikpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMi
KSwgc3RybGVuKCJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
IikpLCB2YWx1ZSk7CiB9CiAKLWJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXMiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9i
amVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXMiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQorc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3JHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVj
dCYgdGhpc09iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7
Ci0gICAgcmV0dXJuIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGluczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworICAgIHJldHVybiBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVj
dD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25z
dHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5z
Q29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
VGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3N0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmpl
Y3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBj
b25zdHJ1Y3Rvci4KLSAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyIpLCBz
dHJsZW4oIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnMiKSksIHZhbHVlKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMiKSwgc3RybGVuKCJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpKSwgdmFsdWUpOwog
fQogCi1ib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewot
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Q29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIik7CiB9CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uRGVy
aXZlZCkKQEAgLTIwOTcsMjkgKzIxMjEsNiBAQCBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRl
c3RPdmVybG9hZGVkCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+
OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2VDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2Ui
KTsKIH0KIAotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVy
cmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKLXsKLSAgICBVTlVTRURf
UEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0
aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUganNUZXN0R2xv
YmFsT2JqZWN0VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8
anNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvckdldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RPdmVycmlkZUJ1aWx0aW5zIik7
Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0T3ZlcnJp
ZGVCdWlsdGluc0NvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCi17
Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICAv
LyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAgICByZXR1cm4gdGhpc09iamVj
dC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigiVGVzdE92ZXJyaWRlQnVpbHRpbnMiKSwgc3RybGVuKCJUZXN0T3Zl
cnJpZGVCdWlsdGlucyIpKSwgdmFsdWUpOwotfQotCi1ib29sIHNldEpTVGVzdEdsb2JhbE9iamVj
dFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQotewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0
Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0
b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
IlRlc3RPdmVycmlkZUJ1aWx0aW5zIik7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RHbG9iYWxPYmplY3RUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09i
amVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdElucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1MSBAQAor
LyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2pl
Y3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5n
cy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oIgorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCisjaW5jbHVkZSAiSlNET01BYnN0
cmFjdE9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVy
dEludGVyZmFjZS5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKKyNpbmNsdWRl
ICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3Qu
aCIKKyNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCisjaW5jbHVkZSAiSlNOb2RlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgorI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1l
c3BhY2UgSlNDOworCisvLyBGdW5jdGlvbnMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVk
SXRlbShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKKworLy8gQXR0cmli
dXRlcworCitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnND
b25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29u
c3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOworCitjbGFzcyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJv
dG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6Cisg
ICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgSlNUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgIHsKKyAgICAgICAgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1By
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBwdHItPmZpbmlz
aENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBERUNMQVJF
X0lORk87CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VBY2Nl
c3M+CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAg
eworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKK1NUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNQcm90b3R5cGUsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU6OkJhc2Up
OworCit1c2luZyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IgPSBKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
PjsKKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25z
dHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAg
cmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQorCit0ZW1wbGF0ZTw+
IHZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworfQor
Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9y
IHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0
cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJu
YW1lZEl0ZW0iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVGdW5jdGlvbk5h
bWVkSXRlbSksIChpbnRwdHJfdCkgKDEpIH0gfSwKK307CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdElucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSkgfTsK
Kwordm9pZCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5
U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6aW5mbygp
LCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlz
KTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnNfaW5mbyA9IHsgIlRl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKSB9Owor
CitKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
LCBSZWY8VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+JiYgaW1wbCkKKyAgICA6IEpTRE9NV3Jh
cHBlcjxUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qs
IFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
czo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAgc3RhdGljX2Fzc2Vy
dCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwgVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM+Ojp2YWx1ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmpl
Y3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9N
T2JqZWN0LiIpOworCit9CisKK0pTT2JqZWN0KiBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
OjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQoreworICAgIHJldHVybiBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpj
cmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9i
amVjdFByb3RvdHlwZSgpKSk7Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQoreworICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dElucz4odm0sIGdsb2JhbE9iamVjdCk7Cit9CisKK0pTVmFsdWUgSlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluczo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK3ZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluczo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdElucyo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnM6On5KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKCk7Cit9CisKK2Jv
b2wgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgYXV0byogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4ob2JqZWN0KTsK
KyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAg
dXNpbmcgR2V0dGVySURMVHlwZSA9IElETEludGVyZmFjZTxOb2RlPjsKKyAgICBhdXRvIGdldHRl
ckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9w
dGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4geworICAg
ICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0
eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgICAgIGlmICghR2V0dGVySURM
VHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBH
ZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0
VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIH07CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1l
ZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Olllcz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgICAg
IGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZh
bHVlKCkpKTsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3Bl
cnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
Cit9CisKK2Jvb2wgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBWTSYg
dm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7CisgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOworICAgIHVzaW5nIEdl
dHRlcklETFR5cGUgPSBJRExJbnRlcmZhY2U8Tm9kZT47CisgICAgYXV0byBnZXR0ZXJGdW5jdG9y
ID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKKyAgICAgICAgYXV0
byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9B
dG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6Omlz
TnVsbFZhbHVlKHJlc3VsdCkpCisgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURM
VHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJv
bU51bGxhYmxlKHJlc3VsdCkgfTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9
OworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0
eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXM+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhp
c09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgICAgICBhdXRvIHZh
bHVlID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhp
c09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7
CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHNsb3QpOworfQorCit2
b2lkIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3sKKyAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhvYmplY3QsIGluZm8oKSk7CisgICAgZm9y
IChhdXRvJiBwcm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVkUHJv
cGVydHlOYW1lcygpKQorICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwor
fQorCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBJRExP
cGVyYXRpb248SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz46OmNhc3QoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQoreworICAgIHJl
dHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKK30KKwor
RW5jb2RlZEpTVmFsdWUganNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cisg
ICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldENvbnN0cnVjdG9yKEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkp
KTsKK30KKworYm9vbCBzZXRKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIFZNJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKKyAgICAgICAg
dGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25z
dHJ1Y3RvcgorICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKK30KKwor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbUJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFt
ZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpZiAoVU5M
SUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Cisg
ICAgYXV0byBuYW1lID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLm5hbWVkSXRlbShXVEZNb3Zl
KG5hbWUpKSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0ZW0oSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz46OmNhbGw8anNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtQm9keT4o
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJuYW1lZEl0ZW0iKTsKK30KKworSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6c3Vic3BhY2VGb3JJ
bXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGll
bnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuZ2V0KCkpCisgICAgICAgIHJldHVybiBz
cGFjZTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHx8ICFKU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zOjpuZWVkc0Rlc3RydWN0aW9uKTsKKyAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnM+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuZ2V0KCk7CitJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rlc3RMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRP
dXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3Bh
Y2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5H
U19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKK3ZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVy
KQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdElucyo+KGNlbGwpOworICAgIGFuYWx5emVyLnNldFdyYXBwZWRPYmplY3RGb3JDZWxsKGNl
bGwsICZ0aGlzT2JqZWN0LT53cmFwcGVkKCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIGFuYWx5emVyLnNldExhYmVsRm9yQ2VsbChjZWxs
LCAidXJsICIgKyB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVybCgpLnN0
cmluZygpKTsKKyAgICBCYXNlOjphbmFseXplSGVhcChjZWxsLCBhbmFseXplcik7Cit9CisKK2Jv
b2wgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNp
dG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQoreworICAgIFVOVVNFRF9QQVJBTSho
YW5kbGUpOworICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKKyAgICBVTlVTRURfUEFSQU0ocmVh
c29uKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdEluc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwg
dm9pZCogY29udGV4dCkKK3sKKyAgICBhdXRvKiBqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
ID0gc3RhdGljX2Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KGhhbmRsZS5zbG90
KCktPmFzQ2VsbCgpKTsKKyAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVy
V29ybGQqPihjb250ZXh0KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMtPndyYXBwZWQoKSwganNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyk7Cit9CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisjaWYgUExBVEZPUk0oV0lO
KQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZv
aWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0BX
ZWJDb3JlQEA2QkAiKVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBf
WlRWTjdXZWJDb3JlMjZUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0VbXTsgfQorI2VuZGlmCisj
ZW5kaWYKKworSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdElucz4mJiBpbXBsKQoreworCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQor
ICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGlt
cGwucHRyKCkpOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBv
aW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0BXZWJD
b3JlQEA2QkAiKTsKKyNlbHNlCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9a
VFZON1dlYkNvcmUyNlRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRVsyXTsKKyNlbmRpZgorCisg
ICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyBkb2VzIG5vdCBo
YXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50YXRp
b25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHltb3JwaGljPFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zPjo6dmFsdWUsICJUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyBpcyBub3QgcG9seW1vcnBo
aWMiKTsKKworICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZl
IGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgorICAgIC8vIFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zIGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyBoYXMgc3Vi
Y2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJl
cXVpcmUgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgeW91IHRvIG9wdCBvdXQgb2YgYmluZGlu
ZyBoYXJkZW5pbmcKKyAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0
dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCisgICAgUkVMRUFTRV9BU1NF
UlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOworI2VuZGlm
CisgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KGds
b2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zJiBpbXBsKQoreworICAgIHJl
dHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisK
K1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Ojp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAo
YXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyo+KHZtLCB2YWx1ZSkpCisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDk4IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
IDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4geworcHVi
bGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM+OworICAgIHN0YXRpYyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBjcmVhdGUo
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpCisgICAgeworICAgICAg
ICBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KGdsb2JhbE9iamVjdC0+
dm0oKS5oZWFwKSkgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyhzdHJ1Y3R1cmUsICpnbG9i
YWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGds
b2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3Rh
dGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxP
YmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBK
U0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9
IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpK
U0NlbGwqKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4g
SlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6
VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpN
YXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAg
IGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9y
SW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
ckltcGwoSlNDOjpWTSYgdm0pOworICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCos
IEpTQzo6SGVhcEFuYWx5emVyJik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Q
cm9wZXJ0eVNsb3RJc0ltcHVyZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5
SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0
UHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworcHJvdGVj
dGVkOgorICAgIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMoSlNDOjpTdHJ1Y3R1cmUqLCBK
U0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4mJik7CisK
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CisKK2NsYXNzIEpTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7
CitwdWJsaWM6CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3Im
LCBjb25zdCBjaGFyKiopOworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKK307CisKK2lubGluZSBKU0M6OldlYWtIYW5k
bGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zKikKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsdEluc093bmVyPiBvd25lcjsKKyAgICByZXR1cm4gJm93bmVyLmdldCgpOworfQor
CitpbmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyogd3Jh
cHBhYmxlT2JqZWN0KQoreworICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7Cit9CisKK0pTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIGltcGwpIHsgcmV0dXJu
IGltcGwgPyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDog
SlNDOjpqc051bGwoKTsgfQorSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zPiYmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBSZWZQdHI8VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+JiYgaW1wbCkgeyBy
ZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQorCit0ZW1w
bGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnM+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1Rlc3RMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zOworICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdElucyo7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQCBib29sIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlck5vSWRlbnRpCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVy
SURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVl
RnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAg
ICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9w
ZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQ
cm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
Z2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsK
ICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
MCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDAsNyArMjAwLDcgQEAgYm9v
bCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aQogICAgICAgICAgICAgcmV0dXJu
IHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5
cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNz
VmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAg
IGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9w
ZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNyArMTcxLDcgQEAgYm9v
bCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogICAgICAgICAgICAgcmV0dXJu
IHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5
cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNz
VmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAg
IGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9w
ZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjAw
LDcgKzIwMCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmcKICAg
ICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5
cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9Owog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQ
cm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5v
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVy
RnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5h
bWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAg
ICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY2NjU5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDcgKzE4MCw3
IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW4KICAgICAgICAgICAg
IHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0
ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9
IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVy
dHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhp
c09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZh
bHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5h
bWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3Qs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTIwOSw3ICsyMDksNyBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVuCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50
YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3Vs
dCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRv
IG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0
aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zp
c2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsK
ICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRW
YWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllcjo6Z2V0CiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURM
VHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJv
bU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9
OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0
eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9w
ZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6
Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0
dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAg
ICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMTgzLDcgKzE4Myw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyOjpnZXQKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBs
ZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUo
cmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYg
KGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRl
QnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNj
ZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9y
KSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0y
MDUsNyArMjA1LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmRlbAog
ewogICAgIGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlck5vSWRl
bnRpZmllcio+KGNlbGwpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
LSAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAo
aXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgcmV0
dXJuIGltcGwuZGVsZXRlTmFtZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0
eU5hbWUpKTsKICAgICB9CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxs
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjE3LDcgKzIx
Nyw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpkZWwKICAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb20odm0sIGluZGV4KTsKLSAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlk
ZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSkpIHsKKyAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFt
ZSkpIHsKICAgICAgICAgcmV0dXJuIGltcGwuZGVsZXRlTmFtZWRQcm9wZXJ0eShwcm9wZXJ0eU5h
bWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICB9CiAgICAgcmV0dXJuIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjIsNyArMTYyLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbgogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5
cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsK
LSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8
T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpO
bz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRl
ckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTE4Myw3ICsxODMsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJl
c3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChh
dXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1
aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjA1
LDcgKzIwNSw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24KIHsK
ICAgICBhdXRvJiB0aGlzT2JqZWN0ID0gKmpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbio+KGNlbGwpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKLSAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKKyAgICBp
ZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAg
YXV0byByZXN1bHQgPSBpbXBsLmRlbGV0ZU5hbWVkUHJvcGVydHkocHJvcGVydHlOYW1lVG9TdHJp
bmcocHJvcGVydHlOYW1lKSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkBAIC0yMjQsNyArMjI0LDcgQEAgYm9vbCBKU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbgogICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgp
OwotICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkgeworICAgIGlm
IChpc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICBh
dXRvIHJlc3VsdCA9IGltcGwuZGVsZXRlTmFtZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmlu
Zyhwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewog
ICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY2NjU5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIGJvb2wg
SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmcKICAgICAgICAgICAgIHJldHVybiB0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBl
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zp
c2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBp
ZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVy
dHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODksNyArMTg5LDcgQEAgYm9vbCBKU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZwogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdl
dHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RW
YWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVk
UHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhp
c09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5h
bWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgp
KSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyOjpkCiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIqPihjZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7Ci0gICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJp
ZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpKSB7CisgICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpKSB7CiAgICAgICAgIGltcGwubmFtZWREZWxldGVyKHByb3BlcnR5TmFtZVRvU3RyaW5nKHBy
b3BlcnR5TmFtZSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yMjQsNyArMjI0
LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZAogICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbSh2bSwgaW5kZXgpOwotICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRl
QnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lKSkgeworICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
KSkgewogICAgICAgICBpbXBsLm5hbWVkRGVsZXRlcihwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZp
c2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzEsNyArMTcxLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRl
cgogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQp
IH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBu
YW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGlu
czo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBn
ZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9i
YWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAg
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIwMCw3ICsy
MDAsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyCiAgICAgICAg
ICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsg
R2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0
b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0
byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92
ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjI2LDcgKzIyNiw3IEBAIGJv
b2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIKICAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4KHBy
b3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiAhaW1wbC5pc1N1cHBvcnRlZFByb3BlcnR5SW5k
ZXgoaW5kZXgudmFsdWUoKSk7Ci0gICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJp
ZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpKSB7CisgICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpKSB7CiAgICAgICAgIHJldHVybiBpbXBsLmRlbGV0ZU5hbWVkUHJvcGVydHkocHJvcGVydHlO
YW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgfQogICAgIHJldHVybiBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHJl
dmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDcg
KzE2Miw3IEBAIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6Z2V0T3duUHIKICAgICAg
ICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUg
eyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9w
ZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVu
Y3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVk
UHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBh
dXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNP
YmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODMsNyArMTgzLDcgQEAg
Ym9vbCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoOjpnZXRPd25QcgogICAgICAgICAgICAgcmV0
dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklE
TFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNj
ZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewor
ICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUg
PSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQ
cm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFs
dWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlm
aWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIGJvb2wgSlNUZXN0TmFt
ZWRHZXR0ZXJOb0lkZW50aWZpZXI6OmdldE8KICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBH
ZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0
VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1l
ZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBu
YW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUo
KSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllcjo6Z2V0TwogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5
cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsK
LSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8
T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpO
bz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRl
ckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
ci5jcHAJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
Zmllcjo6Z2UKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBs
ZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUo
cmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYg
KGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRl
QnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNj
ZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9y
KSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
ODksNyArMTg5LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjpnZQog
ICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9u
VHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1l
ZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6
Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0
ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxl
TmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxP
YmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRp
Zmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY2NjU5
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBA
IGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmdldE8KICAgICAgICAgICAgIHJl
dHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJ
RExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFj
Y2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsK
KyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8
TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVl
ID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVk
UHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTE4Myw3ICsxODMsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZXRP
CiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRp
b25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkg
fTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5h
bWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5z
OjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdl
dHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2li
bGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAg
ICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCBib29sIEpTVGVzdE5h
bWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246CiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUg
R2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFj
dFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFt
ZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0
aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8g
bmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVl
KCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODMsNyArMTgzLDcg
QEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogICAgICAgICAgICAg
cmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRl
cklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0g
YWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkg
eworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0
eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFs
dWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFt
ZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjgsNyArMTY4LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
OjpnZQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVu
dGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1
bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0
byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWls
dGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
LCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NW
aXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxH
bG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7
CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0
VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMTg5LDcgKzE4OSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllcjo6Z2UKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVG
cm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFBy
b3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdElu
czo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBn
ZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwog
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigw
KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9uIDI2NjY1
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDcgKzE4
MCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjoKICAgICAgICAg
ICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBH
ZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0
eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rv
cikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJv
cGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
dGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRv
IHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmpl
Y3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTIwOSw3ICsyMDksNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXI6CiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJl
c3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChh
dXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1
aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCShyZXZpc2lvbiAy
NjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4MCw3ICsxODAsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50
YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3Vs
dCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRv
IG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0
aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zp
c2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsK
ICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRW
YWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0yMDksNyArMjA5LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklE
TFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZy
b21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAg
fTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVy
dHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJv
cGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
OjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdl
dHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAg
ICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDAp
LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NTcgQEAKKy8qCisgICAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMg
ZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBN
T0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5oIgorCisjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCisjaW5jbHVkZSAiSlNE
T01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgorI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25z
dHJ1Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgorI2luY2x1ZGUg
IkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgor
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBu
YW1lc3BhY2UgSlNDOworCisvLyBGdW5jdGlvbnMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKKworLy8gQXR0cmlidXRlcworCitKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0
cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVW5mb3JnZWFibGVB
dHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKKworY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9i
amVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsK
KyAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlKHZtLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUsIEJhc2UpOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1
cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpT
Qzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc1Byb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNDOjpWTSYpOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZSwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBl
OjpCYXNlKTsKKwordXNpbmcgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+OworCisvKiBI
YXNoIHRhYmxlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNUYWJsZUluZGV4WzRd
ID0geworICAgIHsgLTEsIC0xIH0sCisgICAgeyAxLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAwLCAtMSB9LAorfTsKKworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVGFibGVWYWx1ZXNbXSA9
Cit7CisgICAgeyAidW5mb3JnZWFibGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1VuZm9yZ2VhYmxlQXR0cmlidXRl
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
MCkgfSB9LAorICAgIHsgInVuZm9yZ2VhYmxlT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNJbnN0YW5jZUZ1bmN0
aW9uVW5mb3JnZWFibGVPcGVyYXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCit9OworCitzdGF0
aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc1RhYmxlID0geyAyLCAzLCB0cnVlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVGFibGVWYWx1ZXMsIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1RhYmxlSW5kZXggfTsKK3RlbXBsYXRlPD4gSlNW
YWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25z
dHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAg
cmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQorCit0ZW1wbGF0ZTw+
IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwor
fQorCit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFi
bGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlVGFibGVW
YWx1ZXNbXSA9Cit7CisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IpIH0gfSwK
K307CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZSkgfTsKKwordm9pZCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmVpZnlTdGF0aWNQ
cm9wZXJ0aWVzKHZtLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXM6OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RB
R19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6c19pbmZvID0geyAiVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyIsICZCYXNlOjpzX2luZm8s
ICZKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNUYWJsZSwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXMpIH07CisKK0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllczo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllcz4mJiBpbXBsKQorICAgIDogSlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KGltcGwpKQoreworfQorCit2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllczo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAg
c3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwgVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz46OnZhbHVlLCAiSW50ZXJmYWNl
IGlzIG5vdCBtYXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50
YXRpb24gY2xhc3Mgc3ViY2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7CisKK30KKworSlNPYmpl
Y3QqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6Y3Jl
YXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sK
KyAgICByZXR1cm4gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpKTsKK30K
KworSlNPYmplY3QqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllczo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
K3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcz4odm0sIGdsb2JhbE9iamVjdCk7Cit9CisKK0pTVmFsdWUg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpnZXRDb25z
dHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworfQorCit2b2lkIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2Vs
bCkKK3sKKyAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXMqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6On5KU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMoKTsKK30KKworYm9vbCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzKj4ob2JqZWN0KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0
cmluZzsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0
byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxl
bWVudGF0aW9uVHlwZT4geworICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Cisg
ICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKKyAgICAgICAg
ICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBH
ZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OworICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH07CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0
eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5v
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVy
RnVuY3RvcikpIHsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAg
ICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZh
bHVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KTsKK30KKworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXM6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVj
dCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+KG9iamVjdCk7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOworICAgIHVzaW5nIEdldHRlcklE
TFR5cGUgPSBJRExET01TdHJpbmc7CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8m
IHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0
ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHBy
b3BlcnR5TmFtZSkpOworICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJl
c3VsdCkpCisgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJl
c3VsdCkgfTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9OworICAgIGlmIChh
dXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElE
TERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52
YWx1ZSgpKSk7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KDApLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBy
ZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBpbmRleCwgc2xvdCk7Cit9CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit7CisgICAg
Vk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhvYmplY3Qs
IGluZm8oKSk7CisgICAgZm9yIChhdXRvJiBwcm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFw
cGVkKCkuc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpKQorICAgICAgICBwcm9wZXJ0eU5hbWVzLmFk
ZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZXMsIG1vZGUpOworfQorCitib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllczo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0UHJvcGVydHlTbG90KQoreworICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpOworCisgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgeworICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpIH07CisgICAg
ICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICBib29sIGZvdW5kID0gcHJv
dG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90
KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIHNsb3Qu
ZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgICAgIGlmICghZm91bmQpIHsKKyAgICAgICAg
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOworICAgICAgICAgICAgdGhp
c09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9w
ZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmpl
Y3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5
U2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3Vs
ZFRocm93KQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNP
YmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSB9
OworICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0
KHZtKTsKKyAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3Qo
cHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CisgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICBpZiAo
IWZvdW5kKSB7CisgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKKyAgICAgICAg
dGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhw
cm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIHJldHVybiBKU09iamVjdDo6cHV0QnlJbmRleChjZWxsLCBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKK30KKworYm9vbCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3Im
IHByb3BlcnR5RGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKK3sKKyAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOworCisgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgeworc3Rh
dGljIGJvb2wgaXNMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnR5TmFtZShQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQoreworICAgIHJldHVybiBwcm9wZXJ0eU5hbWUgPT0gInVuZm9yZ2VhYmxlQXR0
cmlidXRlIiB8fCBwcm9wZXJ0eU5hbWUgPT0gInVuZm9yZ2VhYmxlT3BlcmF0aW9uIjsKK30KKwor
ICAgICAgICBpZiAoIWlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1l
KSkgeworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVj
dC0+dm0oKSB9OworICAgICAgICAgICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKKyAgICAgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgICAg
ICAgICBpZiAoIWZvdW5kKSB7CisgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0
b3IuaXNEYXRhRGVzY3JpcHRvcigpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgICAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eURlc2NyaXB0b3IudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT53
cmFwcGVkKCkuc2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSks
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIFByb3BlcnR5RGVzY3JpcHRvciBu
ZXdQcm9wZXJ0eURlc2NyaXB0b3IgPSBwcm9wZXJ0eURlc2NyaXB0b3I7CisgICAgbmV3UHJvcGVy
dHlEZXNjcmlwdG9yLnNldENvbmZpZ3VyYWJsZSh0cnVlKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6
OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBuZXdQcm9wZXJ0eURlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKK30KKwordGVtcGxhdGU8
PiBpbmxpbmUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
KiBJRExBdHRyaWJ1dGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+KEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cit9CisKK3Rl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcyogSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllcz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSYgY2FsbEZyYW1lKQoreworICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+KEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOworfQorCitFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgVk0mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZSo+
KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFwcm90
b3R5cGUpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6Z2V0Q29uc3RydWN0b3IoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkp
OworfQorCitib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sK
KyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlw
ZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIHJldHVy
biBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKK30KKworc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1VuZm9y
Z2VhYmxlQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMmIHRoaXNP
YmplY3QpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC51bmZvcmdlYWJsZUF0dHJpYnV0ZSgpKSkpOworfQorCitFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNVbmZv
cmdlYWJsZUF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+
OjpnZXQ8anNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVW5m
b3JnZWFibGVBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ1bmZvcmdlYWJsZUF0dHJpYnV0ZSIp
OworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2Vh
YmxlT3BlcmF0aW9uQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPjo6Q2xhc3NQYXJhbWV0
ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJh
bWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgdGhyb3dT
Y29wZS5yZWxlYXNlKCk7CisgICAgaW1wbC51bmZvcmdlYWJsZU9wZXJhdGlvbigpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcz46OmNhbGw8anNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uQm9keT4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiIpOworfQorCitK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXM6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGll
bnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Cisg
ICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXMuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4gfHwgIUpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6bmVlZHNEZXN0cnVj
dGlvbik7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXM+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyk7
CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOworICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQorICAgIGlmICgmSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRD
b25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCku
YXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQK
KyAgICByZXR1cm4gc3BhY2U7Cit9CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFs
eXplciYgYW5hbHl6ZXIpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqPihjZWxsKTsKKyAgICBh
bmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxsLCAmdGhpc09iamVjdC0+d3JhcHBl
ZCgpKTsKKyAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAg
ICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwgInVybCAiICsgdGhpc09iamVjdC0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJpbmcoKSk7CisgICAgQmFzZTo6YW5h
bHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOworfQorCitib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9y
JiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQoreworICAgIFVOVVNFRF9QQVJBTShoYW5k
bGUpOworICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKKyAgICBVTlVTRURfUEFSQU0ocmVhc29u
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQoreworICAgIGF1dG8qIGpzVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyA9IHN0YXRpY19jYXN0PEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+KGhhbmRsZS5zbG90
KCktPmFzQ2VsbCgpKTsKKyAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVy
V29ybGQqPihjb250ZXh0KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy0+d3JhcHBlZCgpLCBqc1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOworfQorCisjaWYgRU5B
QkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2Fybmlu
ZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVu
dGlmaWVyKCI/P183VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0BXZWJDb3JlQEA2QkAiKVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lk
KiBfWlRWTjdXZWJDb3JlNDZUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzRVtdOyB9CisjZW5kaWYKKyNlbmRpZgorCitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3Jl
YXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+JiYg
aW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICBjb25zdCB2b2lk
KiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKKyNp
ZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVu
dGlmaWVyKCI/P183VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0BXZWJDb3JlQEA2QkAiKTsKKyNlbHNlCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVy
ID0gJl9aVFZON1dlYkNvcmU0NlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNFWzJdOworI2VuZGlmCisKKyAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgZG9lcyBub3QgaGF2ZSBhIHZ0YWJs
ZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzPjo6dmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzIGlzIG5vdCBwb2x5bW9ycGhpYyIpOworCisgICAgLy8gSWYgeW91IGhpdCB0
aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisg
ICAgLy8gVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyBoYXMg
c3ViY2xhc3Nlcy4gSWYgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllcyBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2Ug
Y3VycmVudGx5IHJlcXVpcmUgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcyB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZworICAgIC8vIGJ5IGFk
ZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2Ug
SURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09
IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBl
cjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPihnbG9iYWxP
YmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzJiBp
bXBsKQoreworICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dCwgaW1wbCk7Cit9CisKK1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6
dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1
dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcyo+KHZtLCB2YWx1ZSkpCisgICAgICAgIHJldHVybiAmd3JhcHBl
ci0+d3JhcHBlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAgICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAg
VGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8g
Tk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5o
IgorI2luY2x1ZGUgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXM+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNET01XcmFw
cGVyPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+OworICAg
IHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMq
IGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllcz4mJiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVD
ZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4oZ2xv
YmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXMoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsK
KyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAg
ICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQ
cm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBz
dGF0aWMgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyogdG9X
cmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJv
cGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIHZv
aWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6
RW51bWVyYXRpb25Nb2RlKCkpOworICAgIHN0YXRpYyBib29sIHB1dChKU0M6OkpTQ2VsbCosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDOjpKU0Nl
bGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3Bl
cnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5h
bWUsIGNvbnN0IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7Cisg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVDTEFSRV9JTkZP
OworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBj
b25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6
U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6
U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CisgICAgc3Rh
dGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVy
dHlBYnNlbmNlIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHwgSlNDOjpJbnRlcmNlcHRz
R2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpP
dmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKK3Byb3RlY3RlZDoK
KyAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMoSlND
OjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPiYmKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNDOjpWTSYpOworfTsKKworY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewor
cHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJiwg
Y29uc3QgY2hhcioqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Cit9OworCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxl
T3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKikKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzT3duZXI+
IG93bmVyOworICAgIHJldHVybiAmb3duZXIuZ2V0KCk7Cit9CisKK2lubGluZSB2b2lkKiB3cmFw
cGVyS2V5KFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqIHdy
YXBwYWJsZU9iamVjdCkKK3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OworfQorCitKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzJik7CitpbmxpbmUg
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4
aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9
CitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNE
T01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllcz4mJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVmUHRyPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXM+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4
aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDog
SlNDOjpqc051bGwoKTsgfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0
ZXJUcmFpdHM8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4g
eworICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllczsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzOCBAQAorLyoKKyAgICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAg
VGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8g
Tk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdElucy5oIgorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9N
SXNvU3Vic3BhY2VzLmgiCisjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKKyNp
bmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2lu
Y2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNE
T01Db252ZXJ0U3RyaW5ncy5oIgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIK
KyNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNv
cmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKwor
CituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCisvLyBGdW5jdGlv
bnMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNJ
bnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CisKKy8vIEF0dHJpYnV0ZXMKKworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluc1VuZm9yZ2VhYmxlQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CisKK2NsYXNzIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQ
cm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoK
KyAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAg
ICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAg
IHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKwor
ICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpT
dWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAg
OiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluc1Byb3RvdHlwZTo6QmFzZSk7CisKK3VzaW5nIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rv
ciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+Owor
CisvKiBIYXNoIHRhYmxlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRl
eCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zVGFibGVJbmRleFs0XSA9IHsKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMCwgLTEgfSwKK307CisKKworc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNUYWJsZVZhbHVlc1tdID0K
K3sKKyAgICB7ICJ1bmZvcmdlYWJsZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluc1VuZm9yZ2VhYmxlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgInVuZm9yZ2VhYmxlT3BlcmF0
aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zSW5zdGFuY2VGdW5jdGlvblVuZm9y
Z2VhYmxlT3BlcmF0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAorfTsKKworc3RhdGljIGNvbnN0
IEhhc2hUYWJsZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zVGFibGUgPSB7IDIsIDMsIHRydWUsIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM6OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1RhYmxlVmFsdWVzLCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zVGFibGVJbmRleCB9OwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnND
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTSh2bSk7Cisg
ICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQorCit0ZW1wbGF0
ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiX3MpLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAq
LworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlw
ZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH0gfSwK
K307CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSkgfTsKKwordm9pZCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6aW5mbygpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlVGFibGVW
YWx1ZXMsICp0aGlzKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04o
KTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnNfaW5mbyA9IHsgIlRl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNUYWJsZSwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKSB9OworCitKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+JiYgaW1wbCkKKyAg
ICA6IEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qs
IFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NF
UlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19i
YXNlX29mPEFjdGl2ZURPTU9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+Ojp2YWx1ZSwgIkludGVyZmFj
ZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVu
dGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIpOworCit9CisKK0pTT2Jq
ZWN0KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJv
dG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVj
dFByb3RvdHlwZSgpKSk7Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpwcm90b3R5
cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVy
biBnZXRET01Qcm90b3R5cGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4odm0sIGdsb2JhbE9iamVjdCk7Cit9
CisKK0pTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25z
dCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Db25z
dHJ1Y3RvcjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK3ZvaWQgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluczo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KGNlbGwpOworICAg
IHRoaXNPYmplY3QtPkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6On5KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKCk7Cit9CisK
K2Jvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmpl
Y3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4ob2JqZWN0KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9
IElETERPTVN0cmluZzsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09i
amVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5
cGU6OkltcGxlbWVudGF0aW9uVHlwZT4geworICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlO
YW1lKSk7CisgICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkK
KyAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlv
blR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9
OworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH07CisgICAgaWYgKGF1dG8gbmFt
ZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6Olllcz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgp
KSk7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KDApLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0T3du
UHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sK
KyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOworICAgIHVzaW5nIEdldHRl
cklETFR5cGUgPSBJRExET01TdHJpbmc7CisgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1
dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBH
ZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKKyAgICAgICAgYXV0byByZXN1bHQg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5n
KHByb3BlcnR5TmFtZSkpOworICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVl
KHJlc3VsdCkpCisgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1w
bGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxl
KHJlc3VsdCkgfTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9OworICAgIGlm
IChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zOjpZZXM+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVy
dHkudmFsdWUoKSkpOworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHNsb3QpOworfQorCit2b2lkIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBF
bnVtZXJhdGlvbk1vZGUgbW9kZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dElucyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhvYmplY3QsIGlu
Zm8oKSk7CisgICAgZm9yIChhdXRvJiBwcm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFwcGVk
KCkuc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpKQorICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZXMsIG1vZGUpOworfQorCitib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnB1dChKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFByb3BlcnR5U2xv
dCkKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihj
ZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7
CisKKyAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CisgICAgICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSk7CisgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB0cnVlKTsKKyAgICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBKU09i
amVjdDo6cHV0KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6cHV0
QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCkKK3sKKyAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CisgICAg
dGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhw
cm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9i
amVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgcHJvcGVydHlEZXNjcmlwdG9y
LCBib29sIHNob3VsZFRocm93KQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdElucyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkg
eworc3RhdGljIGJvb2wgaXNMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnR5TmFtZShQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBwcm9wZXJ0eU5hbWUgPT0gInVuZm9yZ2Vh
YmxlQXR0cmlidXRlIiB8fCBwcm9wZXJ0eU5hbWUgPT0gInVuZm9yZ2VhYmxlT3BlcmF0aW9uIjsK
K30KKworICAgICAgICBpZiAoIWlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUocHJvcGVy
dHlOYW1lKSkgeworICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVz
Y3JpcHRvcigpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KSk7CisgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eURlc2NyaXB0b3IudmFsdWUo
KSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwor
ICAgICAgICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5h
bWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFByb3BlcnR5RGVzY3Jp
cHRvciBuZXdQcm9wZXJ0eURlc2NyaXB0b3IgPSBwcm9wZXJ0eURlc2NyaXB0b3I7CisgICAgbmV3
UHJvcGVydHlEZXNjcmlwdG9yLnNldENvbmZpZ3VyYWJsZSh0cnVlKTsKKyAgICByZXR1cm4gSlNP
YmplY3Q6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBuZXdQcm9wZXJ0eURlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKK30KKwordGVt
cGxhdGU8PiBpbmxpbmUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyogSURMQXR0cmlidXRlPEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdElucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMq
IElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIGpz
RHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIFZNJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0Q29uc3RydWN0b3Io
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3Qo
KSkpOworfQorCitib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlm
IChVTkxJS0VMWSghcHJvdG90eXBlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgcmV0dXJuIHBy
b3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdEluc1VuZm9yZ2VhYmxlQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zJiB0aGlzT2JqZWN0KQorewor
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwudW5mb3JnZWFibGVBdHRyaWJ1dGUoKSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc1VuZm9yZ2VhYmxlQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OjpnZXQ8anNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluc1VuZm9yZ2VhYmxlQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidW5mb3JnZWFibGVBdHRy
aWJ1dGUiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb25Cb2R5KEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJh
bWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6Q2xhc3NQYXJhbWV0
ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJh
bWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgdGhyb3dT
Y29wZS5yZWxlYXNlKCk7CisgICAgaW1wbC51bmZvcmdlYWJsZU9wZXJhdGlvbigpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJs
ZU9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Pjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0
aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ1bmZvcmdlYWJsZU9w
ZXJhdGlvbiIpOworfQorCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpzdWJz
cGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNl
cyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNl
OworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Om5lZWRzRGVz
dHJ1Y3Rpb24pOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4pCisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cy5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnM6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNp
dE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRT
cGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5J
TkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwordm9pZCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjph
bmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCit7CisgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4oY2VsbCk7CisgICAg
YW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBw
ZWQoKSk7CisgICAgaWYgKHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAg
ICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3Qt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgIEJhc2U6OmFu
YWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKK30KKworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zT3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4g
aGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFzb24p
Cit7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CisgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3Ip
OworICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9p
ZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQoreworICAgIGF1dG8qIGpzVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMg
PSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkp
OworICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRl
eHQpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy0+d3JhcHBl
ZCgpLCBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKK30KKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklU
WSkKKyNpZiBQTEFURk9STShXSU4pCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKK2V4
dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KKyNlbHNlCitleHRlcm4gIkMiIHsgZXh0ZXJu
IHZvaWQqIF9aVFZON1dlYkNvcmU3MVRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRVtdOyB9CisjZW5kaWYKKyNlbmRp
ZgorCitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGlt
cGwpCit7CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisgICAgY29uc3Qgdm9pZCog
YWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7CisjaWYg
UExBVEZPUk0oV0lOKQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRp
ZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQFdlYkNvcmVAQDZCQCIpOworI2Vsc2UKKyAgICB2b2lk
KiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTcxVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNF
WzJdOworI2VuZGlmCisKKyAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIGRvZXMg
bm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKKyAgICAvLyBJbXBsZW1l
bnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24K
KyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+Ojp2
YWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zIGlzIG5vdCBwb2x5bW9ycGhpYyIpOworCisgICAgLy8gSWYg
eW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBi
dWcsIG9yCisgICAgLy8gVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zIGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAorICAgIC8vIHRvIHRvSlMoKSB3
ZSBjdXJyZW50bHkgcmVxdWlyZSBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyB5b3UgdG8gb3B0IG91dCBvZiBiaW5k
aW5nIGhhcmRlbmluZworICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24g
YXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FT
U0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5k
aWYKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4oZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMmIGltcGwpCit7CisgICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKK30KKworVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnM6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQor
eworICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Kj4odm0sIHZhbHVlKSkKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICAgIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBU
aGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBO
T1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgi
CisjaW5jbHVkZSAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIDog
cHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4geworcHVibGljOgorICAgIHVzaW5n
IEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OworICAgIHN0YXRpYyBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpCisgICAgewor
ICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAg
ICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJl
dHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3Rv
dHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpKU09i
amVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRp
YyBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdElucyogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOworICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlT
bG90Jik7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVu
dW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOworICAgIHN0YXRpYyBib29s
IHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFt
ZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29s
IHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRp
YyBib29sIGRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIGNvbnN0IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwg
Ym9vbCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCop
OworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5m
byhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJ
bmRleGVkQWNjZXNzb3JzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENv
bnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29u
c3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZt
KTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChK
U0M6OlZNJiB2bSk7CisgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpI
ZWFwQW5hbHl6ZXImKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5
U2xvdElzSW1wdXJlIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHwgSlNDOjpJbnRlcmNl
cHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlND
OjpPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKK3Byb3RlY3Rl
ZDoKKyAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmpl
Y3QmLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+JiYpOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0M6OlZNJik7Cit9OworCitjbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zT3duZXIgOiBwdWJsaWMgSlND
OjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJs
ZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0
LCBKU0M6OlNsb3RWaXNpdG9yJiwgY29uc3QgY2hhcioqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlu
YWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Cit9OworCitp
bmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQm
LCBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdElucyopCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnNPd25lcj4gb3duZXI7CisgICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30KKworaW5s
aW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIHdyYXBwYWJsZU9iamVjdCkKK3sK
KyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyYpOwor
aW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
KiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlD
cmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucz4mJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVmUHRyPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpIHsgcmV0dXJuIGlt
cGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwg
aW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KKwordGVtcGxhdGU8PiBz
dHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiB7CisgICAg
dXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczsKKyAgICB1c2luZyBUb1dyYXBw
ZWRSZXR1cm5UeXBlID0gVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zLmNwcAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVp
bHRpbnMuY3BwCShub25leGlzdGVudCkKQEAgLTEsMzY3ICswLDAgQEAKLS8qCi0gICAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICAgIFRoaXMg
ZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBN
T0RJRlkhCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0
dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaCIKLQotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgotI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgotI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RP
cGVyYXRpb25zLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJp
bmdzLmgiCi0jaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgotI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9GdW5jdGlvblByb3RvdHlwZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFs
eXplci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgotI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KLQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci11c2luZyBuYW1lc3BhY2UgSlND
OwotCi0vLyBBdHRyaWJ1dGVzCi0KLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Ci0KLWNsYXNz
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUgZmluYWwgOiBw
dWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0g
SlNDOjpKU05vbkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewot
ICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7
Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICByZXR1cm4gcHRyOwot
ICAgIH0KLQotICAgIERFQ0xBUkVfSU5GTzsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KLSAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCi0gICAgewotICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwotICAg
IH0KLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgOiBKU0M6
OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Ci19OwotU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlw
ZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6QmFzZSk7
Ci0KLXVzaW5nIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rv
ciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnM+OwotCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0g
ICAgVU5VU0VEX1BBUkFNKHZtKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJv
dG90eXBlKCk7Ci19Ci0KLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWls
dGluczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGlucyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci19Ci0KLXRl
bXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVp
bHRpbnNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcikg
fTsKLQotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCi0KLXN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBl
VGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5hbWVkU2V0
dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcikgfSB9LAotfTsKLQotY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OnNf
aW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKSB9OwotCi12b2lkIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmVpZnlTdGF0aWNQcm9w
ZXJ0aWVzKHZtLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjppbmZvKCks
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVUYWJsZVZhbHVl
cywgKnRoaXMpOwotICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwot
fQotCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlu
czo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMpIH07Ci0KLUpTVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnM6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJl
ZjxUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4mJiBpbXBsKQotICAgIDogSlNE
T01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPihzdHJ1Y3R1cmUs
IGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKLXsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygp
KSk7Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0
LCBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz46OnZhbHVlLCAiSW50ZXJmYWNl
IGlzIG5vdCBtYXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50
YXRpb24gY2xhc3Mgc3ViY2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7Ci0KLX0KLQotSlNPYmpl
Y3QqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OmNyZWF0ZVByb3RvdHlw
ZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJu
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OmNyZWF0ZSh2
bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc1By
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qu
b2JqZWN0UHJvdG90eXBlKCkpKTsKLX0KLQotSlNPYmplY3QqIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnM6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPih2bSwgZ2xvYmFsT2JqZWN0KTsKLX0KLQotSlNWYWx1
ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3RvcihW
TSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJu
IGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnND
b25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QpKTsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
OjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQotewotICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+SlNUZXN0
TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6fkpTVGVzdE5hbWVkU2V0dGVyV2l0aE92
ZXJyaWRlQnVpbHRpbnMoKTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMqPihvYmplY3QpOwotICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICB1c2luZyBHZXR0ZXJJ
RExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRv
JiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0
dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0g
dGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShy
ZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxl
bWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShy
ZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKLSAgICBpZiAo
YXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVC
dWlsdGluczo6WWVzPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVl
KCkpKTsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oMCksIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVy
biBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmpl
Y3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwg
UHJvcGVydHlTbG90JiBzbG90KQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJ
ZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0gICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElE
TERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVj
dCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6
OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1l
KSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAg
ICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5
cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9Owot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQ
cm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Olll
cz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRl
ckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7Ci0gICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2
YWx1ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBp
bmRleCwgc2xvdCk7Ci19Ci0KLXZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWls
dGluczo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMs
IEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKG9iamVjdCwgaW5mbygpKTsKLSAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFt
ZSA6IHRoaXNPYmplY3QtPndyYXBwZWQoKS5zdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkpCi0gICAg
ICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHByb3BlcnR5
TmFtZSkpOwotICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7Ci19Ci0KLWJvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0UHJvcGVydHlTbG90KQotewotICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWls
dGlucyo+KGNlbGwpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKLQotICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpKTsKLSAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwotICAgICAgICB0aGlzT2JqZWN0LT53cmFwcGVk
KCkuc2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0
dXJuIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZh
bHVlLCBib29sKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zKj4oY2VsbCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOwotCi0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tKHZtLCBpbmRleCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKLSAgICB0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkuc2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5
TmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpkZWZpbmVPd25Qcm9wZXJ0
eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBwcm9w
ZXJ0eURlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCi17Ci0gICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0
KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0K
LSAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIGlmICghcHJvcGVy
dHlEZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlEZXNjcmlw
dG9yLnZhbHVlKCkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRy
dWUpOwotICAgICAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc2V0TmFtZWRJdGVtKHByb3BlcnR5
TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgUHJvcGVydHlEZXNjcmlwdG9yIG5ld1Byb3Bl
cnR5RGVzY3JpcHRvciA9IHByb3BlcnR5RGVzY3JpcHRvcjsKLSAgICBuZXdQcm9wZXJ0eURlc2Ny
aXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOwotICAgIHJldHVybiBKU09iamVjdDo6ZGVmaW5l
T3duUHJvcGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG5l
d1Byb3BlcnR5RGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBq
c1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
YXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6Z2V0Q29u
c3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9i
YWxPYmplY3QoKSkpOwotfQotCi1ib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17
Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5
cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQ
cm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJ
S0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlw
ZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCi1KU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0p
Ci17Ci0gICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+
KHZtLmNsaWVudERhdGEpOwotICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2Vz
KCk7Ci0gICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRT
ZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHNwYWNlOwot
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4gfHwgIUpTVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwotICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnMpOwotICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMpOwotICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5nZXQo
KTsKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCi1JR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKLSAgICBpZiAoJkpTVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpT
Qzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQotICAgICAgICBjbGllbnREYXRhLm91
dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOwotSUdOT1JFX1dBUk5JTkdTX0VO
RAotSUdOT1JFX1dBUk5JTkdTX0VORAotICAgIHJldHVybiBzcGFjZTsKLX0KLQotdm9pZCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjphbmFseXplSGVhcChKU0NlbGwqIGNl
bGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKj4oY2VsbCk7Ci0gICAg
YW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBw
ZWQoKSk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAg
ICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3Qt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOwotICAgIEJhc2U6OmFu
YWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3Is
IGNvbnN0IGNoYXIqKiByZWFzb24pCi17Ci0gICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHZpc2l0b3IpOwotICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOwotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiBjb250ZXh0KQotewotICAgIGF1dG8qIGpzVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVp
bHRpbnMgPSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19j
YXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxk
LCAmanNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy0+d3JhcHBlZCgpLCBqc1Rl
c3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKTsKLX0KLQotI2lmIEVOQUJMRShCSU5E
SU5HX0lOVEVHUklUWSkKLSNpZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTogNDQ4MykKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigi
Pz9fN1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQFdlYkNvcmVAQDZCQCIpW10p
KCk7IH0KLSNlbHNlCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUzNVRl
c3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zRVtdOyB9Ci0jZW5kaWYKLSNlbmRpZgot
Ci1KU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zPiYmIGltcGwpCi17Ci0KLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkp
Ci0gICAgY29uc3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIo
aW1wbC5wdHIoKSk7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxl
UG9pbnRlciA9IF9faWRlbnRpZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1
aWx0aW5zQFdlYkNvcmVAQDZCQCIpOwotI2Vsc2UKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBv
aW50ZXIgPSAmX1pUVk43V2ViQ29yZTM1VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnNFWzJdOwotI2VuZGlmCi0KLSAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRv
IGFkZCB0aGUKLSAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0
aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1v
cnBoaWM8VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+Ojp2YWx1ZSwgIlRlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIGlzIG5vdCBwb2x5bW9ycGhpYyIpOwotCi0g
ICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0
ZXIgZnJlZSBidWcsIG9yCi0gICAgLy8gVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnMgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
IGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAotICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJy
ZW50bHkgcmVxdWlyZSBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyB5b3UgdG8g
b3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZwotICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZU
YWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24K
LSAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxl
UG9pbnRlcik7Ci0jZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0K
LQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnMmIGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKLX0KLQotVGVzdE5hbWVkU2V0dGVyV2l0aE92
ZXJyaWRlQnVpbHRpbnMqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OnRv
V3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIGlmIChhdXRv
KiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1
aWx0aW5zKj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7
Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaAkocmV2aXNpb24gMjY2NjU5
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwMSArMCww
IEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2Ug
cHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJp
bmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAi
SlNET01XcmFwcGVyLmgiCi0jaW5jbHVkZSAiVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVp
bHRpbnMuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIDog
cHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4g
ewotcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVy
V2l0aE92ZXJyaWRlQnVpbHRpbnM+OwotICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zPiYmIGltcGwpCi0gICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+KGdsb2JhbE9iamVjdC0+dm0oKS5o
ZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyhzdHJ1Y3R1cmUsICpn
bG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KGdsb2JhbE9iamVjdC0+dm0oKSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAg
c3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9i
YWxPYmplY3QmKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0m
LCBKU0RPTUdsb2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGlucyogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwotICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90
Jik7Ci0gICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1l
cmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0YXRpYyBib29sIHB1
dChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwg
SlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIHB1
dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIGNvbnN0IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9v
bCBzaG91bGRUaHJvdyk7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwot
Ci0gICAgREVDTEFSRV9JTkZPOwotCi0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhK
U0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJbmRl
eGVkQWNjZXNzb3JzKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0
cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQotICAgIHsKLSAgICAgICAgaWYgY29uc3Rl
eHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKLSAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsK
LSAgICB9Ci0gICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6
OlZNJiB2bSk7Ci0gICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFw
QW5hbHl6ZXImKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xv
dElzSW1wdXJlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5X
aGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5h
bWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OlByb2hpYml0c1By
b3BlcnR5Q2FjaGluZzsKLXByb3RlY3RlZDoKLSAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVz
dE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+JiYpOwotCi0gICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihKU0M6OlZNJik7Ci19OwotCi1jbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewotcHVibGlj
OgotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJiwgY29uc3Qg
Y2hhcioqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiwgdm9pZCogY29udGV4dCk7Ci19OwotCi1pbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIq
IHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJp
ZGVCdWlsdGlucyopCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTVGVzdE5hbWVkU2V0
dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNPd25lcj4gb3duZXI7Ci0gICAgcmV0dXJuICZvd25lci5n
ZXQoKTsKLX0KLQotaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdE5hbWVkU2V0dGVyV2l0aE92
ZXJyaWRlQnVpbHRpbnMqIHdyYXBwYWJsZU9iamVjdCkKLXsKLSAgICByZXR1cm4gd3JhcHBhYmxl
T2JqZWN0OwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNE
T01HbG9iYWxPYmplY3QqLCBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyYpOwot
aW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zKiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KLUpT
Qzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUds
b2JhbE9iamVjdCosIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4mJik7
Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmUHRyPFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwpIHsgcmV0
dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KLQotdGVtcGxh
dGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zPiB7Ci0gICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczsKLSAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5U
eXBlID0gVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMqOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCShyZXZpc2lvbiAyNjY2NTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCShub25leGlzdGVudCkKQEAgLTEsNDU3
ICswLDAgQEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNv
dXJjZSBwcm9qZWN0LgotICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJh
dGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmgiCi0K
LSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMu
aCIKLSNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgIkpTRE9N
QXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJp
bmdzLmgiCi0jaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgotI2luY2x1ZGUgIkpT
RE9NT3BlcmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKLSNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0
YS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+Ci0jaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3Bh
Y2VJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Qb2lu
dGVyUHJlcGFyYXRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1VSTC5oPgotCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLS8vIEZ1bmN0aW9ucwotCi1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24oSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7Ci0KLS8vIEF0dHJpYnV0ZXMKLQotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Nv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1VuZm9yZ2VhYmxlQXR0cmlidXRlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Ci0KLWNsYXNzIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJv
dG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7Ci1wdWJsaWM6Ci0g
ICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNQcm90b3R5cGUqIGNyZWF0ZShKU0M6
OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVD
ZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlPih2
bS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNQcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVh
dGlvbih2bSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgREVDTEFSRV9JTkZP
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgot
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAg
ICB7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwotICAgIH0KLSAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc1Byb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0
KHZtLCBzdHJ1Y3R1cmUpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
SlNDOjpWTSYpOwotfTsKLVNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlLCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1Byb3RvdHlwZTo6QmFzZSk7Ci0KLXVzaW5n
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IgPSBK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllcz47Ci0KLS8qIEhhc2ggdGFibGUgKi8KLQotc3RhdGljIGNvbnN0IHN0
cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzVGFibGVJbmRleFs0XSA9IHsKLSAgICB7IC0xLCAtMSB9LAotICAgIHsgMSwgLTEgfSwK
LSAgICB7IC0xLCAtMSB9LAotICAgIHsgMCwgLTEgfSwKLX07Ci0KLQotc3RhdGljIGNvbnN0IEhh
c2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzVGFi
bGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAidW5mb3JnZWFibGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzVW5mb3JnZWFibGVBdHRy
aWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCi0gICAgeyAidW5mb3JnZWFibGVPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlv
blVuZm9yZ2VhYmxlT3BlcmF0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAotfTsKLQotc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c1RhYmxlID0geyAyLCAzLCB0cnVlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllczo6aW5mbygpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c1RhYmxlVmFsdWVzLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1Rh
YmxlSW5kZXggfTsKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgVU5V
U0VEX1BBUkFNKHZtKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBl
KCk7Ci19Ci0KLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci19
Ci0KLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNDb25zdHJ1Y3RvcikgfTsKLQotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCi0K
LXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQotewotICAgIHsgImNvbnN0cnVj
dG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Nv
bnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25z
dHJ1Y3RvcikgfSB9LAotfTsKLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzUHJvdG90eXBlKSB9OwotCi12b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OmluZm8oKSwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNQcm90b3R5cGVUYWJsZVZhbHVlcywg
KnRoaXMpOwotICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwotfQot
Ci1jb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXM6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyIs
ICZCYXNlOjpzX2luZm8sICZKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c1RhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKSB9OwotCi1KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllczo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJl
ZjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+JiYgaW1wbCkKLSAgICA6
IEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+KHN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQotewotfQotCi12b2lkIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIEFTU0VSVChpbmhlcml0
cyh2bSwgaW5mbygpKSk7Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0
aXZlRE9NT2JqZWN0LCBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+Ojp2
YWx1ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3RdIGV2ZW4g
dGhvdWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIp
OwotCi19Ci0KLUpTT2JqZWN0KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllczo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKLXsKLSAgICByZXR1cm4gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
Jmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Ci19Ci0KLUpT
T2JqZWN0KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6cHJvdG90
eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1
cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzPih2bSwgZ2xvYmFsT2JqZWN0KTsKLX0KLQotSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllczo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rv
cjxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yPih2
bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwotfQot
Ci12b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpkZXN0cm95
KEpTQzo6SlNDZWxsKiBjZWxsKQotewotICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT5KU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6fkpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKCk7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihvYmplY3Qp
OwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAg
ICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVu
Y3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9u
YWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAg
IGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFt
ZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBl
Ojppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRl
cklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1
ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0g
ICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJv
cGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVl
ID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVk
UHJvcGVydHkudmFsdWUoKSkpOwotICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotfQotCi1ib29sIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIFZNJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyo+KG9iamVjdCk7
Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIHVz
aW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9y
ID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0
byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9B
dG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6Omlz
TnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURM
VHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJv
bU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9
OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0
eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9w
ZXJ0eS52YWx1ZSgpKSk7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgc2xvdCk7Ci19Ci0KLXZvaWQgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBW
TSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMq
PihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMob2JqZWN0LCBpbmZvKCkp
OwotICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1lIDogdGhpc09iamVjdC0+d3JhcHBlZCgpLnN1
cHBvcnRlZFByb3BlcnR5TmFtZXMoKSkKLSAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcHJvcGVydHlOYW1lKSk7Ci0gICAgSlNPYmplY3Q6OmdldE93
blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVz
LCBtb2RlKTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllczo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYgcHV0UHJvcGVydHlTbG90KQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihjZWxsKTsKLSAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0KLSAgICBpZiAo
IXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsg
dGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwg
JmxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkgfTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUg
PSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KSk7Ci0gICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBh
c09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQo
KTsKLSAgICAgICAgaWYgKCFmb3VuZCkgewotICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAg
ICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgdHJ1ZSk7Ci0gICAgICAgICAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc2V0
TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKLX0KLQotYm9vbCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6cHV0QnlJbmRleChKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRl
eCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKLXsKLSAgICBWTSYgdm0gPSBKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihjZWxsKTsKLSAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0KLSAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKLSAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnksICZ2bSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVj
dC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKLSAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlz
T2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgc2xvdC5kaXNhbGxvd1ZNRW50
cnkucmVzZXQoKTsKLSAgICBpZiAoIWZvdW5kKSB7Ci0gICAgICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0g
ICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB0cnVlKTsKLSAgICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShw
cm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBKU09iamVjdDo6cHV0
QnlJbmRleChjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIHNob3VsZFRo
cm93KTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
czo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3Bl
cnR5RGVzY3JpcHRvciYgcHJvcGVydHlEZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQotewot
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXMqPihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKLQotICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkp
IHsKLXN0YXRpYyBib29sIGlzVW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKLXsKLSAgICByZXR1cm4gcHJvcGVydHlOYW1lID09ICJ1bmZvcmdlYWJsZUF0
dHJpYnV0ZSIgfHwgcHJvcGVydHlOYW1lID09ICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiI7Ci19Ci0K
LSAgICAgICAgaWYgKCFpc1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpIHsK
LSAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3QtPnZt
KCkgfTsKLSAgICAgICAgICAgIGJvb2wgZm91bmQgPSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
Ci0gICAgICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOwotICAgICAgICAgICAg
aWYgKCFmb3VuZCkgewotICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlz
RGF0YURlc2NyaXB0b3IoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgICAgICAgICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlEZXNjcmlwdG9yLnZhbHVlKCkpOwotICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgdGhpc09iamVjdC0+d3JhcHBl
ZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBQcm9wZXJ0eURlc2NyaXB0b3IgbmV3UHJv
cGVydHlEZXNjcmlwdG9yID0gcHJvcGVydHlEZXNjcmlwdG9yOwotICAgIG5ld1Byb3BlcnR5RGVz
Y3JpcHRvci5zZXRDb25maWd1cmFibGUodHJ1ZSk7Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWZp
bmVPd25Qcm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
bmV3UHJvcGVydHlEZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5s
aW5lIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKiBJRExBdHRyaWJ1
dGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+OjpjYXN0KEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUp
Ci17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyogSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpz
RHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsK
LX0KLQotRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgVk0mIHZtID0gSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlKj4odm0s
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlw
ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9v
bCBzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNQcm90b3R5cGUqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBl
KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSkpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNVbmZvcmdlYWJsZUF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXMmIHRoaXNPYmplY3QpCi17Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC51bmZvcmdlYWJsZUF0dHJpYnV0ZSgpKSkp
OwotfQotCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc1VuZm9yZ2VhYmxlQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzPjo6Z2V0PGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzVW5mb3Jn
ZWFibGVBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ1bmZvcmdlYWJsZUF0dHJpYnV0ZSIpOwot
fQotCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRp
b25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCi17
Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwot
ICAgIGltcGwudW5mb3JnZWFibGVPcGVyYXRpb24oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVu
Zm9yZ2VhYmxlT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJh
dGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidW5mb3JnZWFibGVP
cGVyYXRpb24iKTsKLX0KLQotSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXM6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKLXsKLSAg
ICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSk7Ci0gICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKLSAg
ICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcy5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHNwYWNlOwotICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+IHx8ICFKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6bmVlZHNEZXN0cnVjdGlvbik7Ci0g
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcz4pCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyk7Ci0gICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
KTsKLSAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmdldCgpOwotSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQotICAgIGlmICgmSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXM6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENv
bnN0cmFpbnRzKQotICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5h
cHBlbmQoc3BhY2UpOwotSUdOT1JFX1dBUk5JTkdTX0VORAotSUdOT1JFX1dBUk5JTkdTX0VORAot
ICAgIHJldHVybiBzcGFjZTsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllczo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFu
YWx5emVyKQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihjZWxsKTsKLSAgICBhbmFseXplci5zZXRXcmFw
cGVkT2JqZWN0Rm9yQ2VsbChjZWxsLCAmdGhpc09iamVjdC0+d3JhcHBlZCgpKTsKLSAgICBpZiAo
dGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICAgICBhbmFseXplci5z
ZXRMYWJlbEZvckNlbGwoY2VsbCwgInVybCAiICsgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT51cmwoKS5zdHJpbmcoKSk7Ci0gICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwg
YW5hbHl6ZXIpOwotfQotCi1ib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIq
KiByZWFzb24pCi17Ci0gICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHZpc2l0b3IpOwotICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOwotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc093bmVy
OjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4
dCkKLXsKLSAgICBhdXRvKiBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
cyA9IHN0YXRpY19jYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19j
YXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxk
LCAmanNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMtPndyYXBwZWQoKSwg
anNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMpOwotfQotCi0jaWYgRU5B
QkxFKEJJTkRJTkdfSU5URUdSSVRZKQotI2lmIFBMQVRGT1JNKFdJTikKLSNwcmFnbWEgd2Fybmlu
ZyhkaXNhYmxlOiA0NDgzKQotZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVu
dGlmaWVyKCI/P183VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQFdlYkNv
cmVAQDZCQCIpW10pKCk7IH0KLSNlbHNlCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZO
N1dlYkNvcmUzOVRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0VbXTsgfQot
I2VuZGlmCi0jZW5kaWYKLQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+JiYgaW1wbCkKLXsKLQotI2lmIEVOQUJM
RShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICBjb25zdCB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVy
ID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKLSNpZiBQTEFURk9STShXSU4pCi0gICAg
dm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/P183VGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQFdlYkNvcmVAQDZCQCIpOwotI2Vsc2UKLSAg
ICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTM5VGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzRVsyXTsKLSNlbmRpZgotCi0gICAgLy8gSWYg
dGhpcyBmYWlscyBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMgZG9lcyBu
b3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQotICAgIC8vIEltcGxlbWVu
dGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgot
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXM+Ojp2YWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllcyBpcyBub3QgcG9seW1vcnBoaWMiKTsKLQotICAgIC8vIElmIHlvdSBoaXQg
dGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgot
ICAgIC8vIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyBoYXMgc3ViY2xh
c3Nlcy4gSWYgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIGhhcyBzdWJj
bGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAotICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVx
dWlyZSBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMgeW91IHRvIG9wdCBv
dXQgb2YgYmluZGluZyBoYXJkZW5pbmcKLSAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVW
YWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCi0gICAg
UkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50
ZXIpOwotI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwotfQot
Ci1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXMmIGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXAobGV4aWNhbEds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKLX0KLQotVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllczo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCi17Ci0g
ICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFw
cGVyLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllcy5oCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaAko
bm9uZXhpc3RlbnQpCkBAIC0xLDEwMSArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJl
ZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0g
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
Ci0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0K
LSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCi0jaW5jbHVkZSAiVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmgiCi0jaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcz4gewotcHVibGljOgotICAgIHVz
aW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzPjsKLSAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXMqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzPiYmIGltcGwpCi0gICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllcyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcz4oZ2xvYmFsT2JqZWN0LT52bSgp
LmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyhzdHJ1Y3R1
cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwotICAgICAgICBwdHItPmZpbmlzaENy
ZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQot
Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNE
T01HbG9iYWxPYmplY3QmKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpT
Qzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVl
KTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlBy
b3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpK
U09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5Jiwg
SlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0
aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0
aWMgYm9vbCBwdXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAg
ICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBjb25zdCBKU0M6OlByb3BlcnR5RGVzY3Jp
cHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpK
U0NlbGwqKTsKLQotICAgIERFQ0xBUkVfSU5GTzsKLQotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4g
SlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6
VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpN
YXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7Ci0gICAgfQotCi0gICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAgICB7Ci0gICAgICAg
IGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkp
Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9y
SW1wbCh2bSk7Ci0gICAgfQotICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
ckltcGwoSlNDOjpWTSYgdm0pOwotICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCos
IEpTQzo6SGVhcEFuYWx5emVyJik7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Q
cm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SGFzU3RhdGljUHJv
cGVydHlUYWJsZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVu
V2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlO
YW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQ
cm9wZXJ0eUNhY2hpbmc7Ci1wcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJl
ZjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+JiYpOwotCi0gICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Ci19OwotCi1jbGFzcyBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc093bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93
bmVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90Vmlz
aXRvciYsIGNvbnN0IGNoYXIqKik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwotfTsKLQotaW5saW5lIEpTQzo6V2Vh
a0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKikKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNPd25lcj4gb3duZXI7
Ci0gICAgcmV0dXJuICZvd25lci5nZXQoKTsKLX0KLQotaW5saW5lIHZvaWQqIHdyYXBwZXJLZXko
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKiB3cmFwcGFibGVPYmplY3Qp
Ci17Ci0gICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzJik7Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKiBp
bXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVh
dGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+JiYpOwotaW5saW5lIEpTQzo6SlNWYWx1
ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNO
ZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVh
c2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBKU0RP
TVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzPiB7Ci0gICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXM7Ci0gICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyo7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zLmNwcAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MzggKzAs
MCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNl
IHByb2plY3QuCi0gICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1i
aW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zLmgiCi0KLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJE
T01Jc29TdWJzcGFjZXMuaCIKLSNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgot
I2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0j
aW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKLSNpbmNsdWRlICJK
U0RPTUNvbnZlcnRTdHJpbmdzLmgiCi0jaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5o
IgotI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNET01XcmFwcGVyQ2Fj
aGUuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJv
dG90eXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+Ci0jaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1VSTC5oPgot
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLS8vIEZ1bmN0
aW9ucwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zSW5zdGFuY2VGdW5j
dGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOwotCi0vLyBBdHRyaWJ1dGVzCi0KLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3Ry
dWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJy
aWRlQnVpbHRpbnNVbmZvcmdlYWJsZUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotCi1jbGFzcyBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5
cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKLXB1YmxpYzoKLSAgICB1
c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5
cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSog
cHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU+KHZtLmhl
YXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnNQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKLSAgICAgICAg
cHRyLT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0g
ICAgREVDTEFSRV9JTkZPOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1
YnNwYWNlQWNjZXNzPgotICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKLSAgICB7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGluc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKLSAgICB9Ci0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0s
IHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6
OlZNJik7Ci19OwotU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90
eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnNQcm90b3R5cGU6OkJhc2UpOwotCi11c2luZyBKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciA9IEpTRE9N
Q29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz47Ci0KLS8qIEhhc2ggdGFibGUgKi8KLQot
c3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1RhYmxlSW5kZXhbNF0gPSB7
Ci0gICAgeyAtMSwgLTEgfSwKLSAgICB7IDEsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKLSAgICB7
IDAsIC0xIH0sCi19OwotCi0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNUYWJsZVZh
bHVlc1tdID0KLXsKLSAgICB7ICJ1bmZvcmdlYWJsZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5z
VW5mb3JnZWFibGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAidW5mb3JnZWFibGVPcGVyYXRpb24i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbiks
IChpbnRwdHJfdCkgKDApIH0gfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zVGFi
bGUgPSB7IDIsIDMsIHRydWUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6aW5mbygpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNUYWJsZVZhbHVlcywgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zVGFibGVJ
bmRleCB9OwotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1
bmN0aW9uUHJvdG90eXBlKCk7Ci19Ci0KLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQotewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRp
bnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyJfcyksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwot
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7Ci19Ci0KLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcikgfTsKLQotLyogSGFzaCB0YWJsZSBmb3Ig
cHJvdG90eXBlICovCi0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVU
YWJsZVZhbHVlc1tdID0KLXsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJy
aWRlQnVpbHRpbnNDb25zdHJ1Y3RvcikgfSB9LAotfTsKLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1By
b3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKSB9OwotCi12b2lkIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKLSAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6aW5mbygpLCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5
cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJB
TlNJVElPTigpOwotfQotCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpzX2luZm8gPSB7ICJUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zIiwgJkJh
c2U6OnNfaW5mbywgJkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGluc1RhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucykg
fTsKLQotSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXI8VGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz4oc3RydWN0
dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCi17Ci19Ci0KLXZvaWQgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAg
IEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6
OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90
IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBj
bGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKLQotfQotCi1KU09iamVjdCogSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5z
OjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQotewotICAgIHJldHVybiBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC5vYmplY3RQcm90b3R5cGUoKSkpOwotfQotCi1KU09iamVjdCogSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpwcm90b3R5cGUo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBn
ZXRET01Qcm90b3R5cGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zPih2bSwgZ2xvYmFsT2JqZWN0KTsKLX0KLQotSlNWYWx1ZSBKU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6
OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKLXsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3I+KHZtLCAq
anNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Ci19Ci0KLXZv
aWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQotewotICAgIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyogdGhpc09iamVj
dCA9IHN0YXRpY19jYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGlucyo+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPkpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6fkpTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucygp
OwotfQotCi1ib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnMqPihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKLSAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAg
IGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5
TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25U
eXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJ
dGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYg
KCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJu
IHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5
cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0gICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNz
VmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6WWVzPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAg
ICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKLSAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKLX0K
LQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJy
aWRlQnVpbHRpbnM6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyo+KG9iamVjdCk7Ci0g
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIHVzaW5n
IEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0ZXJGdW5jdG9yID0g
W10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBl
bmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byBy
ZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9t
U3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVs
bFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlw
ZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51
bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9Owot
ICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxP
dmVycmlkZUJ1aWx0aW5zOjpZZXM+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVy
dHkudmFsdWUoKSkpOwotICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0g
ICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHNsb3QpOwotfQotCi12b2lkIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZSBtb2RlKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqPihvYmplY3QpOwotICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMob2JqZWN0LCBpbmZvKCkpOwotICAgIGZvciAoYXV0byYgcHJv
cGVydHlOYW1lIDogdGhpc09iamVjdC0+d3JhcHBlZCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMo
KSkKLSAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
cHJvcGVydHlOYW1lKSk7Ci0gICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKLX0KLQotYm9vbCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRp
bnM6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHB1dFByb3BlcnR5U2xvdCkKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
cyo+KGNlbGwpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5m
bygpKTsKLQotICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpKTsKLSAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3Ry
aW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwotICAgICAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCku
c2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJu
IEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OnB1dEJ5SW5kZXgo
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWdu
ZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
cyo+KGNlbGwpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5m
bygpKTsKLQotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5k
ZXgpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7Ci0gICAgdGhpc09iamVjdC0+d3JhcHBlZCgp
LnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpkZWZpbmVP
d25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiBwcm9wZXJ0eURlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCi17Ci0gICAgYXV0byog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqPihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLQotICAgIGlmICghcHJvcGVydHlOYW1lLmlz
U3ltYm9sKCkpIHsKLXN0YXRpYyBib29sIGlzVW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKLXsKLSAgICByZXR1cm4gcHJvcGVydHlOYW1lID09ICJ1bmZv
cmdlYWJsZUF0dHJpYnV0ZSIgfHwgcHJvcGVydHlOYW1lID09ICJ1bmZvcmdlYWJsZU9wZXJhdGlv
biI7Ci19Ci0KLSAgICAgICAgaWYgKCFpc1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKHByb3BlcnR5
TmFtZSkpIHsKLSAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlzRGF0YURlc2Ny
aXB0b3IoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCkpOwotICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlEZXNjcmlwdG9yLnZhbHVlKCkp
OwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKLSAg
ICAgICAgICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS5zZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1l
VG9TdHJpbmcocHJvcGVydHlOYW1lKSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBQcm9wZXJ0eURlc2NyaXB0
b3IgbmV3UHJvcGVydHlEZXNjcmlwdG9yID0gcHJvcGVydHlEZXNjcmlwdG9yOwotICAgIG5ld1By
b3BlcnR5RGVzY3JpcHRvci5zZXRDb25maWd1cmFibGUodHJ1ZSk7Ci0gICAgcmV0dXJuIEpTT2Jq
ZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgbmV3UHJvcGVydHlEZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7Ci19Ci0KLXRlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGlucyogSURMQXR0cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz46OmNhc3QoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICBy
ZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBK
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRp
bnMqIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNW
YWx1ZSgpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0
byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OmdldENvbnN0cnVjdG9yKEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsK
LX0KLQotYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
LSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRv
KiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNVbmZvcmdlYWJsZUF0dHJpYnV0ZUdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zJiB0aGlzT2JqZWN0KQotewot
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwudW5mb3JnZWFibGVBdHRyaWJ1dGUoKSkpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUganNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zVW5m
b3JnZWFibGVBdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zPjo6Z2V0PGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1VuZm9yZ2VhYmxlQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAidW5mb3JnZWFibGVBdHRyaWJ1dGUiKTsKLX0KLQotc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3Zl
cnJpZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbkJvZHkoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMpCi17Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUucmVs
ZWFzZSgpOwotICAgIGltcGwudW5mb3JnZWFibGVPcGVyYXRpb24oKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCi17Ci0gICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdl
YWJsZU9wZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidW5m
b3JnZWFibGVPcGVyYXRpb24iKTsKLX0KLQotSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpzdWJzcGFj
ZUZvckltcGwoSlNDOjpWTSYgdm0pCi17Ci0gICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNf
Y2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwotICAgIGF1dG8mIHNwYWNlcyA9
IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Ci0gICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zLmdldCgpKQotICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+IHx8
ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwotICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMpOwot
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zKTsKLSAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5nZXQo
KTsKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCi1JR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKLSAgICBpZiAoJkpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6dmlzaXRP
dXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMp
Ci0gICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFj
ZSk7Ci1JR05PUkVfV0FSTklOR1NfRU5ECi1JR05PUkVfV0FSTklOR1NfRU5ECi0gICAgcmV0dXJu
IHNwYWNlOwotfQotCi12b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5h
bHl6ZXImIGFuYWx5emVyKQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKj4o
Y2VsbCk7Ci0gICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNP
YmplY3QtPndyYXBwZWQoKSk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkKLSAgICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiAr
IHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOwot
ICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKLX0KLQotYm9vbCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNPd25l
cjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBo
YW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvciwgY29uc3QgY2hhcioqIHJlYXNvbikK
LXsKLSAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKLSAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7
Ci0gICAgVU5VU0VEX1BBUkFNKHJlYXNvbik7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lk
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGluc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9p
ZCogY29udGV4dCkKLXsKLSAgICBhdXRvKiBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMgPSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqPihoYW5kbGUu
c2xvdCgpLT5hc0NlbGwoKSk7Ci0gICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3Jh
cHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMtPndy
YXBwZWQoKSwganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zKTsKLX0KLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSNpZiBQ
TEFURk9STShXSU4pCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKLWV4dGVybiAiQyIg
eyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNAV2ViQ29yZUBANkJAIilb
XSkoKTsgfQotI2Vsc2UKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTU4
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
c0VbXTsgfQotI2VuZGlmCi0jZW5kaWYKLQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
ZjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zPiYmIGltcGwpCi17Ci0KLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0gICAgY29u
c3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIo
KSk7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9
IF9faWRlbnRpZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnNAV2ViQ29yZUBANkJAIik7Ci0jZWxzZQotICAgIHZvaWQqIGV4
cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlNThUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zRVsyXTsKLSNlbmRpZgotCi0g
ICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVk
IHRvIGFkZCB0aGUKLSAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0
byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9s
eW1vcnBoaWM8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucz46OnZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyBpcyBub3QgcG9seW1vcnBoaWMiKTsKLQotICAgIC8vIElm
IHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUg
YnVnLCBvcgotICAgIC8vIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnMgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMgaGFzIHN1YmNsYXNzZXMgdGhh
dCBnZXQgcGFzc2VkCi0gICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIFRlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMgeW91
IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKLSAgICAvLyBieSBhZGRpbmcgdGhlIFNr
aXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0
aW9uCi0gICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZU
YWJsZVBvaW50ZXIpOwotI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz4oZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucyYgaW1wbCkKLXsKLSAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QsIGltcGwpOwotfQotCi1UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OnRvV3JhcHBlZChKU0M6OlZNJiB2
bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJy
aWRlQnVpbHRpbnMqPih2bSwgdmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBw
ZWQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotfQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaAkocmV2aXNpb24gMjY2NjU5KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5oCShub25leGlzdGVu
dCkKQEAgLTEsMTAxICswLDAgQEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0KLSAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKLSNpbmNsdWRlICJUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmgiCi0jaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPiB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9
IEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zPjsKLSAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+JiYgaW1w
bCkKLSAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRl
Q2VsbDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKHN0cnVjdHVyZSwgKmdsb2Jh
bE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xv
YmFsT2JqZWN0LT52bSgpKTsKLSAgICAgICAgcmV0dXJuIHB0cjsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9i
amVjdCYpOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpT
RE9NR2xvYmFsT2JqZWN0Jik7Ci0gICAgc3RhdGljIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlND
OjpKU1ZhbHVlKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09i
amVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFt
ZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFt
ZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsK
LSAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsK
LSAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKLSAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBjb25zdCBKU0M6OlByb3Bl
cnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDOjpKU0NlbGwqKTsKLQotICAgIERFQ0xBUkVfSU5GTzsKLQotICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7Ci0gICAgfQotCi0gICAgc3RhdGljIEpT
Qzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9i
amVjdCopOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAgICB7
Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25j
dXJyZW50bHkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHN1
YnNwYWNlRm9ySW1wbCh2bSk7Ci0gICAgfQotICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwotICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFw
KEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlND
OjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJs
ZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0
aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcyB8IEpT
Qzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNh
Y2hpbmc7Ci1wcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxP
YmplY3QmLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3Zl
cnJpZGVCdWlsdGlucz4mJik7Ci0KLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsK
LX07Ci0KLWNsYXNzIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGluc093bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYsIGNv
bnN0IGNoYXIqKik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwotfTsKLQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93
bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyopCi17Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGluc093bmVyPiBvd25lcjsKLSAgICByZXR1cm4gJm93bmVyLmdldCgpOwot
fQotCi1pbmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKiB3cmFwcGFibGVPYmplY3QpCi17Ci0gICAg
cmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyYpOwotaW5saW5lIEpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKGxl
eGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsg
fQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+JiYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3
bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwpIHsgcmV0dXJuIGlt
cGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwg
aW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KLQotdGVtcGxhdGU8PiBz
dHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+IHsKLSAgICB1c2luZyBXcmFwcGVy
Q2xhc3MgPSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJy
aWRlQnVpbHRpbnM7Ci0gICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9uIDI2NjY1OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04MjcsNyArODI3LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpE
aWN0aW9uYXJ5IGNvbnZlcnREaQogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZ1Zh
bHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVzdWx0LnN0cmluZ1RyZWF0TnVsbEFzRW1w
dHlTdHJpbmcgPSBjb252ZXJ0PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETERPTVN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmdWYWx1
ZSk7CisgICAgICAgIHJlc3VsdC5zdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZ1ZhbHVlKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1Zh
bHVlIHN0cmluZ1dpdGhEZWZhdWx0VmFsdWU7CkBAIC0xMDU5LDggKzEwNTksOCBAQCBKU0M6OkpT
T2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRvSlMoSlNDCiAgICAgfQogICAgIGF1dG8gc21hbGxV
bnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExPY3RldD4oZGljdGlvbmFy
eS5zbWFsbFVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0KTsKICAgICByZXN1bHQtPnB1dERpcmVj
dCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic21hbGxVbnNpZ25lZEludGVn
ZXJXaXRoRGVmYXVsdCIpLCBzbWFsbFVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUpOwot
ICAgIGlmICghSURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8SURMRE9NU3RyaW5nPjo6aXNOdWxs
VmFsdWUoZGljdGlvbmFyeS5zdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nKSkgewotICAgICAg
ICBhdXRvIHN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmdWYWx1ZSA9IHRvSlM8SURMVHJlYXRO
dWxsQXNFbXB0eUFkYXB0b3I8SURMRE9NU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgSURM
VHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8SURMRE9NU3RyaW5nPjo6ZXh0cmFjdFZhbHVlRnJvbU51
bGxhYmxlKGRpY3Rpb25hcnkuc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZykpOworICAgIGlm
ICghSURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz46OmlzTnVs
bFZhbHVlKGRpY3Rpb25hcnkuc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZykpIHsKKyAgICAg
ICAgYXV0byBzdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nVmFsdWUgPSB0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPjo6ZXh0
cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0
cmluZykpOwogICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAic3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZyIpLCBzdHJpbmdUcmVh
dE51bGxBc0VtcHR5U3RyaW5nVmFsdWUpOwogICAgIH0KICAgICBhdXRvIHN0cmluZ1dpdGhEZWZh
dWx0VmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgZGljdGlv
bmFyeS5zdHJpbmdXaXRoRGVmYXVsdCk7CkBAIC0zMjU2LDcgKzMyNTYsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETFRyZWF0TnVsbEFzRW1w
dHlBZGFwdG9yPElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuc3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoKSkpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuc3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoKSkpKTsKIH0KIAogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmco
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQpAQCAtMzI2OSw3ICszMjY5LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIHNldEpTVGVzdE9ialN0cmluZ0F0dAogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETERP
TVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMRE9NU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgICByZXR1cm4gaW1wbC5zZXRT
dHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CkBAIC0zMjg3LDcgKzMyODcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqVXN2
c3RyaW5nCiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudXN2c3RyaW5nQXR0clRyZWF0
aW5nTnVsbEFzRW1wdHlTdHJpbmcoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudXN2c3RyaW5nQXR0clRy
ZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqVXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQpAQCAtMzMwMCw3ICszMzAwLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9i
alVzdnN0cmluZwogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgICByZXR1cm4gaW1wbC5zZXRVc3ZzdHJpbmdBdHRyVHJl
YXRpbmdOdWxsQXNFbXB0eVN0cmluZyhXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CkBAIC0zMzE4LDcg
KzMzMTgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQnl0ZVN0cmluCiAgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETEJ5dGVTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmJ5dGVTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNF
bXB0eVN0cmluZygpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMQnl0ZVN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuYnl0ZVN0cmluZ0F0dHJUcmVhdGluZ051
bGxBc0VtcHR5U3RyaW5nKCkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakJ5dGVT
dHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCkBA
IC0zMzMxLDcgKzMzMzEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqQnl0ZVN0
cmluCiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8SURMQnl0ZVN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMQnl0ZVN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICAgcmV0dXJuIGltcGwuc2V0Qnl0ZVN0cmluZ0F0dHJUcmVhdGlu
Z051bGxBc0VtcHR5U3RyaW5nKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKQEAgLTU5ODksNyArNTk4
OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBpZiAo
VU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7
Ci0gICAgYXV0byBhcmcgPSBjb252ZXJ0PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETERP
TVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CisgICAg
YXV0byBhcmcgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExE
T01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
dGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgaW1wbC5tZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxs
QXNFbXB0eVN0cmluZyhXVEZNb3ZlKGFyZykpOwpAQCAtNjIzMyw3ICs2MjMzLDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGlmIChVTkxJS0VMWShjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRvIHN0
ciA9IGNvbnZlcnQ8SURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8SURMVVNWU3RyaW5nPj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKKyAgICBhdXRvIHN0ciA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB0aHJvd1Njb3BlLnJl
bGVhc2UoKTsKICAgICBpbXBsLm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0Vt
cHR5U3RyaW5nKFdURk1vdmUoc3RyKSk7CkBAIC02Mjk5LDcgKzYyOTksNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgaWYgKFVOTElLRUxZKGNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIGF1dG8gc3RyID0g
Y29udmVydDxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExCeXRlU3RyaW5nPj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKKyAgICBhdXRvIHN0ciA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETEJ5dGVTdHJpbmc+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7CiAgICAgaW1wbC5tZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1w
dHlTdHJpbmcoV1RGTW92ZShzdHIpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWls
dGlucy5jcHAJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAkobm9uZXhpc3RlbnQpCkBA
IC0xLDM1MSArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQg
b3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgiCi0KLSNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKLSNpbmNsdWRl
ICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgot
I2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCi0jaW5jbHVkZSAi
SlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5o
IgotI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUds
b2JhbE9iamVjdC5oIgotI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKLSNpbmNsdWRlICJKU05vZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+Ci0jaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVz
Lmg+Ci0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFy
YXRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1VSTC5oPgotCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLS8vIEZ1bmN0aW9ucwotCi1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9u
TmFtZWRJdGVtKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwotCi0vLyBB
dHRyaWJ1dGVzCi0KLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcnJpZGVCdWlsdGluc0Nv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rv
cihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7Ci0KLWNsYXNzIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUgZmluYWwg
OiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNl
ID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7
Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICByZXR1cm4gcHRyOwot
ICAgIH0KLQotICAgIERFQ0xBUkVfSU5GTzsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KLSAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCi0gICAgewotICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwotICAgIH0KLSAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJv
dG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKLSAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVy
ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Ci19
OwotU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3ZlcnJpZGVCdWls
dGluc1Byb3RvdHlwZSwgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6QmFzZSk7Ci0K
LXVzaW5nIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+OwotCi10ZW1wbGF0ZTw+
IEpTVmFsdWUgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1
bmN0aW9uUHJvdG90eXBlKCk7Ci19Ci0KLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6cHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRy
aXZpYWxTdHJpbmcodm0sICJUZXN0T3ZlcnJpZGVCdWlsdGlucyJfcyksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwot
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7Ci19Ci0KLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJy
aWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE92ZXJyaWRlQnVpbHRpbnMi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcikgfTsKLQotLyogSGFzaCB0YWJsZSBmb3Ig
cHJvdG90eXBlICovCi0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAiY29uc3RydWN0b3Ii
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE92ZXJy
aWRlQnVpbHRpbnNDb25zdHJ1Y3RvcikgfSB9LAotICAgIHsgIm5hbWVkSXRlbSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T3Zl
cnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKSwgKGludHB0cl90KSAoMSkg
fSB9LAotfTsKLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5
cGU6OnNfaW5mbyA9IHsgIlRlc3RPdmVycmlkZUJ1aWx0aW5zIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
UHJvdG90eXBlKSB9OwotCi12b2lkIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0g
ICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjppbmZv
KCksIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwot
ICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwotfQotCi1jb25zdCBD
bGFzc0luZm8gSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6c19pbmZvID0geyAiVGVzdE92ZXJyaWRl
QnVpbHRpbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMpIH07Ci0KLUpTVGVzdE92ZXJyaWRlQnVpbHRp
bnM6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0T3ZlcnJpZGVCdWlsdGlucz4mJiBpbXBs
KQotICAgIDogSlNET01XcmFwcGVyPFRlc3RPdmVycmlkZUJ1aWx0aW5zPihzdHJ1Y3R1cmUsIGds
b2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKLXsKLX0KLQotdm9pZCBKU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOwotICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0KLSAgICBzdGF0aWNf
YXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0T3ZlcnJpZGVCdWls
dGlucz46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQgYXMgW0FjdGl2ZURPTU9iamVj
dF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3ViY2xhc3NlcyBBY3RpdmVET01P
YmplY3QuIik7Ci0KLX0KLQotSlNPYmplY3QqIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmNyZWF0
ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0g
ICAgcmV0dXJuIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmds
b2JhbE9iamVjdCwgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpKTsK
LX0KLQotSlNPYmplY3QqIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnByb3RvdHlwZShWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIGdldERPTVBy
b3RvdHlwZTxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zPih2bSwgZ2xvYmFsT2JqZWN0KTsKLX0KLQot
SlNWYWx1ZSBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNv
bnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIGdldERPTUNv
bnN0cnVjdG9yPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8
Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKLX0KLQotdm9pZCBKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQotewotICAgIEpT
VGVzdE92ZXJyaWRlQnVpbHRpbnMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zKj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+SlNUZXN0T3ZlcnJpZGVCdWls
dGluczo6fkpTVGVzdE92ZXJyaWRlQnVpbHRpbnMoKTsKLX0KLQotYm9vbCBKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dE92ZXJyaWRlQnVpbHRpbnMqPihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMSW50
ZXJmYWNlPE5vZGU+OwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2Jq
ZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlw
ZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVj
dC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5h
bWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQot
ICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9u
VHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKLSAgICBpZiAoYXV0byBuYW1l
ZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6
WWVzPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0
dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPE5v
ZGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCBX
VEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwotICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVy
biBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKLX0KLQotYm9vbCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBz
bG90KQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0g
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4ob2Jq
ZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7
Ci0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0g
ICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETEludGVyZmFjZTxOb2RlPjsKLSAgICBhdXRvIGdl
dHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+
IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewot
ICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9w
ZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVy
SURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFt
ZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRy
YWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVO
YW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Olllcz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
ICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1
dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
ICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVl
KCkpKTsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgc2xvdCk7Ci19
Ci0KLXZvaWQgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKG9iamVjdCwgaW5mbygpKTsKLSAgICBmb3IgKGF1dG8m
IHByb3BlcnR5TmFtZSA6IHRoaXNPYmplY3QtPndyYXBwZWQoKS5zdXBwb3J0ZWRQcm9wZXJ0eU5h
bWVzKCkpCi0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHByb3BlcnR5TmFtZSkpOwotICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7Ci19Ci0KLXRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqIElETE9wZXJhdGlvbjxKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
LCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0
Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5n
bG9iYWxPYmplY3QoKSkpOwotfQotCi1ib29sIHNldEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZt
ID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQot
Ci1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcnJpZGVCdWlsdGlu
c1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNUZXN0T3ZlcnJpZGVCdWlsdGlucz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMpCi17Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwot
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGlmIChVTkxJS0VMWShjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRvIG5h
bWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
MC52YWx1ZSgpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwubmFtZWRJdGVtKFdURk1vdmUobmFtZSkpKSkp
OwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRp
bnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zPjo6Y2FsbDxqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJv
dG90eXBlRnVuY3Rpb25OYW1lZEl0ZW1Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxG
cmFtZSwgIm5hbWVkSXRlbSIpOwotfQotCi1KU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCi17Ci0gICAgYXV0byYgY2xp
ZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwot
ICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Ci0gICAgaWYgKGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcnJpZGVCdWlsdGlucy5nZXQoKSkK
LSAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucz4gfHwg
IUpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwotICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
T3ZlcnJpZGVCdWlsdGlucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJy
aWRlQnVpbHRpbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE92
ZXJyaWRlQnVpbHRpbnMpOwotICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0T3ZlcnJpZGVCdWlsdGlucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE92ZXJyaWRl
QnVpbHRpbnMpOwotICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3Zl
cnJpZGVCdWlsdGlucy5nZXQoKTsKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCi1JR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKLSAg
ICBpZiAoJkpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0g
JkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQotICAgICAgICBjbGllbnREYXRh
Lm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOwotSUdOT1JFX1dBUk5JTkdT
X0VORAotSUdOT1JFX1dBUk5JTkdTX0VORAotICAgIHJldHVybiBzcGFjZTsKLX0KLQotdm9pZCBK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFs
eXplciYgYW5hbHl6ZXIpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zKj4oY2VsbCk7Ci0gICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZv
ckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQoKSk7Ci0gICAgaWYgKHRoaXNPYmplY3Qt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JD
ZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
dXJsKCkuc3RyaW5nKCkpOwotICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsK
LX0KLQotYm9vbCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFzb24pCi17Ci0gICAgVU5VU0VEX1BBUkFN
KGhhbmRsZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwotICAgIFVOVVNFRF9QQVJBTShy
ZWFzb24pOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiBjb250ZXh0KQotewotICAgIGF1dG8qIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnMgPSBzdGF0aWNf
Y2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwot
ICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQp
OwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0T3ZlcnJpZGVCdWlsdGlucy0+d3Jh
cHBlZCgpLCBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zKTsKLX0KLQotI2lmIEVOQUJMRShCSU5ESU5H
X0lOVEVHUklUWSkKLSNpZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTog
NDQ4MykKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9f
N1Rlc3RPdmVycmlkZUJ1aWx0aW5zQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KLSNlbHNlCi1leHRl
cm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUyMFRlc3RPdmVycmlkZUJ1aWx0aW5z
RVtdOyB9Ci0jZW5kaWYKLSNlbmRpZgotCi1KU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVm
PFRlc3RPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwpCi17Ci0KLSNpZiBFTkFCTEUoQklORElOR19J
TlRFR1JJVFkpCi0gICAgY29uc3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJs
ZVBvaW50ZXIoaW1wbC5wdHIoKSk7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIHZvaWQqIGV4cGVj
dGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRpZmllcigiPz9fN1Rlc3RPdmVycmlkZUJ1aWx0aW5z
QFdlYkNvcmVAQDZCQCIpOwotI2Vsc2UKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIg
PSAmX1pUVk43V2ViQ29yZTIwVGVzdE92ZXJyaWRlQnVpbHRpbnNFWzJdOwotI2VuZGlmCi0KLSAg
ICAvLyBJZiB0aGlzIGZhaWxzIFRlc3RPdmVycmlkZUJ1aWx0aW5zIGRvZXMgbm90IGhhdmUgYSB2
dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKLSAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KLSAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdE92ZXJyaWRlQnVpbHRpbnM+Ojp2YWx1ZSwg
IlRlc3RPdmVycmlkZUJ1aWx0aW5zIGlzIG5vdCBwb2x5bW9ycGhpYyIpOwotCi0gICAgLy8gSWYg
eW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBi
dWcsIG9yCi0gICAgLy8gVGVzdE92ZXJyaWRlQnVpbHRpbnMgaGFzIHN1YmNsYXNzZXMuIElmIFRl
c3RPdmVycmlkZUJ1aWx0aW5zIGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAotICAgIC8v
IHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBUZXN0T3ZlcnJpZGVCdWlsdGlucyB5b3Ug
dG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZwotICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tp
cFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRp
b24KLSAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRh
YmxlUG9pbnRlcik7Ci0jZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0T3ZlcnJp
ZGVCdWlsdGlucz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE92ZXJyaWRlQnVpbHRpbnMmIGltcGwpCi17
Ci0gICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBs
KTsKLX0KLQotVGVzdE92ZXJyaWRlQnVpbHRpbnMqIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnRv
V3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIGlmIChhdXRv
KiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4odm0sIHZh
bHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIG51
bGxwdHI7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaAkocmV2
aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDk4ICswLDAgQEAK
LS8qCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9q
ZWN0LgotICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGlu
Z3MucGwuIERPIE5PVCBNT0RJRlkhCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJKU0RP
TVdyYXBwZXIuaCIKLSNpbmNsdWRlICJUZXN0T3ZlcnJpZGVCdWlsdGlucy5oIgotI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEpT
VGVzdE92ZXJyaWRlQnVpbHRpbnMgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RPdmVycmlkZUJ1
aWx0aW5zPiB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0T3Zl
cnJpZGVCdWlsdGlucz47Ci0gICAgc3RhdGljIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqIGNyZWF0
ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBSZWY8VGVzdE92ZXJyaWRlQnVpbHRpbnM+JiYgaW1wbCkKLSAgICB7Ci0gICAgICAgIEpT
VGVzdE92ZXJyaWRlQnVpbHRpbnMqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucz4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBs
KSk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKLSAg
ICAgICAgcmV0dXJuIHB0cjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3Jl
YXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBK
U0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7Ci0g
ICAgc3RhdGljIFRlc3RPdmVycmlkZUJ1aWx0aW5zKiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6
SlNWYWx1ZSk7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6
OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVB
cnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0g
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwotCi0gICAgREVDTEFSRV9JTkZP
OwotCi0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBj
b25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6
U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQotICAgIHsKLSAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6
U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKLSAgICB9Ci0gICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7Ci0gICAgc3Rh
dGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlIHwgSlNDOjpJ
bnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJv
IHwgSlNDOjpPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7Ci1wcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0T3ZlcnJpZGVCdWls
dGlucyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RPdmVycmlk
ZUJ1aWx0aW5zPiYmKTsKLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotfTsK
LQotY2xhc3MgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc093bmVyIDogcHVibGljIEpTQzo6V2Vha0hh
bmRsZU93bmVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpT
bG90VmlzaXRvciYsIGNvbnN0IGNoYXIqKik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwotfTsKLQotaW5saW5lIEpT
Qzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdE92
ZXJyaWRlQnVpbHRpbnMqKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zT3duZXI+IG93bmVyOwotICAgIHJldHVybiAmb3duZXIuZ2V0KCk7Ci19Ci0K
LWlubGluZSB2b2lkKiB3cmFwcGVyS2V5KFRlc3RPdmVycmlkZUJ1aWx0aW5zKiB3cmFwcGFibGVP
YmplY3QpCi17Ci0gICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKLX0KLQotSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE92ZXJy
aWRlQnVpbHRpbnMmKTsKLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBUZXN0T3ZlcnJpZGVCdWlsdGlucyogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4aWNh
bEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1K
U0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01H
bG9iYWxPYmplY3QqLCBSZWY8VGVzdE92ZXJyaWRlQnVpbHRpbnM+JiYpOwotaW5saW5lIEpTQzo6
SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0T3Zl
cnJpZGVCdWlsdGlucz4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkg
OiBKU0M6OmpzTnVsbCgpOyB9Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZl
cnRlclRyYWl0czxUZXN0T3ZlcnJpZGVCdWlsdGlucz4gewotICAgIHVzaW5nIFdyYXBwZXJDbGFz
cyA9IEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM7Ci0gICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlw
ZSA9IFRlc3RPdmVycmlkZUJ1aWx0aW5zKjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9s
LXN0eWxlCiMjIC0xICswLDAgIyMKLUxGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwJKHJldmlz
aW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTMgKzMzLDEzIEBACiAgICAgW0NFUmVhY3Rpb25zLCBN
YXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHJlbW92ZVByb3BlcnR5KERPTVN0cmluZyBwcm9w
ZXJ0eU5hbWUpOwogICAgIERPTVN0cmluZz8gZ2V0UHJvcGVydHlQcmlvcml0eShET01TdHJpbmcg
cHJvcGVydHlOYW1lKTsKIAotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHVu
ZGVmaW5lZCBzZXRQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVydHlOYW1lLCBbVHJlYXROdWxsQXM9
RW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZSwgb3B0aW9uYWwgW1RyZWF0TnVsbEFzPUVtcHR5
U3RyaW5nXSBET01TdHJpbmcgcHJpb3JpdHkgPSAiIik7CisgICAgW0NFUmVhY3Rpb25zLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eU5h
bWUsIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVlLCBvcHRpb25hbCBb
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBwcmlvcml0eSA9ICIiKTsKIAogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBnZXR0ZXIgRE9N
U3RyaW5nIGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IENTU1J1bGU/IHBhcmVudFJ1bGU7CiAKLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJl
YXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBjc3NGbG9hdDsKKyAgICBbQ0VSZWFjdGlv
bnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBjc3NGbG9h
dDsKIAogICAgIERPTVN0cmluZz8gZ2V0UHJvcGVydHlTaG9ydGhhbmQob3B0aW9uYWwgRE9NU3Ry
aW5nIHByb3BlcnR5TmFtZSk7CiAgICAgYm9vbGVhbiBpc1Byb3BlcnR5SW1wbGljaXQob3B0aW9u
YWwgRE9NU3RyaW5nIHByb3BlcnR5TmFtZSk7CkBAIC00OSw3ICs0OSw3IEBACiAgICAgLy8gcHJl
Zml4ZXMgZm9yIHRoaXMgdG8gYmUgcHJhY3RpY2FsLiBJZiB3ZSByZW1vdmUgbGVnYWN5IGFsaWFz
ZXMsIHdlIHNob3VsZAogICAgIC8vIHJlY29uc2lkZXIgdGhpcyBkZWNpc2lvbi4KICAgICBnZXR0
ZXIgKERPTVN0cmluZyBvciBkb3VibGUpIChET01TdHJpbmcgbmFtZSk7Ci0gICAgW0NFUmVhY3Rp
b25zLCBNYXlUaHJvd0V4Y2VwdGlvbiwgQ2FsbE5hbWVkU2V0dGVyT25seUZvclN1cHBvcnRlZFBy
b3BlcnRpZXNdIHNldHRlciB1bmRlZmluZWQgKERPTVN0cmluZyBuYW1lLCBbVHJlYXROdWxsQXM9
RW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZSk7CisgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJv
d0V4Y2VwdGlvbiwgQ2FsbE5hbWVkU2V0dGVyT25seUZvclN1cHBvcnRlZFByb3BlcnRpZXNdIHNl
dHRlciB1bmRlZmluZWQgKERPTVN0cmluZyBuYW1lLCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdd
IERPTVN0cmluZyB2YWx1ZSk7CiAKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLCBh
bmQgd2Ugd291bGQgbGlrZSB0byBkcm9wIHN1cHBvcnQgZm9yIGl0IHNvbWVkYXkKICAgICBEZXBy
ZWNhdGVkQ1NTT01WYWx1ZT8gZ2V0UHJvcGVydHlDU1NWYWx1ZShET01TdHJpbmcgcHJvcGVydHlO
YW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmtub3duUnVsZS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Vua25vd25SdWxlLmlkbAkocmV2aXNpb24g
MjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Vua25vd25SdWxlLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogCiAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAy
OgogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
LAogXSBpbnRlcmZhY2UgQ1NTVW5rbm93blJ1bGUgOiBDU1NSdWxlIHsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsCShyZXZpc2lvbiAy
NjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudENTU0lubGluZVN0eWxlLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogLy8gQ1NTT00gZXh0ZW5zaW9ucyB0byBI
VE1MRWxlbWVudCAvIFNWR0VsZW1lbnQ6CiAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nz
b20vI3RoZS1lbGVtZW50Y3NzaW5saW5lc3R5bGUtaW50ZXJmYWNlCiBbCi0gICAgTm9JbnRlcmZh
Y2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBFbGVt
ZW50Q1NTSW5saW5lU3R5bGUgewogICAgIFtJbXBsZW1lbnRlZEFzPWNzc29tU3R5bGUsIFB1dEZv
cndhcmRzPWNzc1RleHRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NTdHlsZURlY2xhcmF0aW9uIHN0
eWxlOyAvLyBGSVhNRTogU2hvdWxkIGJlIFtTYW1lT2JqZWN0XS4KICAgICBbSW1wbGVtZW50ZWRB
cz1lbnN1cmVBdHRyaWJ1dGVTdHlsZU1hcCwgQ2FjaGVkQXR0cmlidXRlLCBFbmFibGVkQXRSdW50
aW1lPUNTU1R5cGVkT00sIENvbmRpdGlvbmFsPUNTU19UWVBFRF9PTV0gcmVhZG9ubHkgYXR0cmli
dXRlIFN0eWxlUHJvcGVydHlNYXAgYXR0cmlidXRlU3R5bGVNYXA7IC8vIEZJWE1FOiBTaG91bGQg
YmUgW1NhbWVPYmplY3RdLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5pZGwJKHJldmlzaW9u
IDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw3ICsyOSw3IEBACiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKICAg
ICBKU0N1c3RvbUhlYWRlciwKIF0gaW50ZXJmYWNlIE1lZGlhTGlzdCB7Ci0gICAgYXR0cmlidXRl
IFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1lZGlhVGV4dDsKKyAgICBhdHRy
aWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgbWVkaWFUZXh0OwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKIAogICAgIGdldHRlciBE
T01TdHJpbmc/IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVNZWRpYS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlTWVkaWEuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVNZWRpYS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICAqLwogCiBbCi0g
ICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAg
R2VuZXJhdGVJc1JlYWNoYWJsZT1SZWFjaGFibGVGcm9tRE9NV2luZG93LAogICAgIEltcGxlbWVu
dGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBTdHlsZU1lZGlhIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vQ2hhcmFjdGVyRGF0YS5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTgsNyArMTgs
NyBAQAogICovCiAKIGludGVyZmFjZSBDaGFyYWN0ZXJEYXRhIDogTm9kZSB7Ci0gICAgYXR0cmli
dXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGRhdGE7CisgICAgYXR0cmli
dXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGRhdGE7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gRE9NU3RyaW5nIHN1YnN0cmluZ0RhdGEodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVk
IGxvbmcgY291bnQpOwogICAgIHVuZGVmaW5lZCBhcHBlbmREYXRhKERPTVN0cmluZyBkYXRhKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGUuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGUuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAs
NyBAQAogCiAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2NoaWxkbm9kZQogWwotICAg
IE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRl
cmZhY2UgQ2hpbGROb2RlIHsKICAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGUsIE1heVRocm93
RXhjZXB0aW9uXSB1bmRlZmluZWQgYmVmb3JlKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMp
OwogICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZSwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVm
aW5lZCBhZnRlcigoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjQsNyArMjQsNyBAQAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFj
ZSBET01JbXBsZW1lbnRhdGlvbiB7CiAgICAgW05ld09iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25d
IERvY3VtZW50VHlwZSBjcmVhdGVEb2N1bWVudFR5cGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUs
IERPTVN0cmluZyBwdWJsaWNJZCwgRE9NU3RyaW5nIHN5c3RlbUlkKTsKLSAgICBbTmV3T2JqZWN0
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gWE1MRG9jdW1lbnQgY3JlYXRlRG9jdW1lbnQoRE9NU3RyaW5n
PyBuYW1lc3BhY2VVUkksIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHF1YWxp
ZmllZE5hbWUsIG9wdGlvbmFsIERvY3VtZW50VHlwZT8gZG9jdHlwZSA9IG51bGwpOworICAgIFtO
ZXdPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBYTUxEb2N1bWVudCBjcmVhdGVEb2N1bWVudChE
T01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJp
bmcgcXVhbGlmaWVkTmFtZSwgb3B0aW9uYWwgRG9jdW1lbnRUeXBlPyBkb2N0eXBlID0gbnVsbCk7
CiAgICAgW05ld09iamVjdF0gSFRNTERvY3VtZW50IGNyZWF0ZUhUTUxEb2N1bWVudChvcHRpb25h
bCBET01TdHJpbmcgdGl0bGUpOwogCiAgICAgYm9vbGVhbiBoYXNGZWF0dXJlKCk7IC8vIFVzZWxl
c3M7IGFsd2F5cyByZXR1cm5zIHRydWUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NU3Ry
aW5nTWFwLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRE9NU3RyaW5nTWFw
LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ01h
cC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAgIEdlbmVyYXRl
SXNSZWFjaGFibGU9SW1wbEVsZW1lbnRSb290LAotICAgIE92ZXJyaWRlQnVpbHRpbnMsCisgICAg
TGVnYWN5T3ZlcnJpZGVCdWlsdElucywKICAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbiwKIF0gaW50
ZXJmYWNlIERPTVN0cmluZ01hcCB7CiAgICAgZ2V0dGVyIERPTVN0cmluZyAoRE9NU3RyaW5nIG5h
bWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25F
dmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0
aW9uT3JNb3Rpb25FdmVudC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9EZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1ERVZJQ0VfT1JJRU5UQVRJT04s
Ci0gICAgTm9JbnRlcmZhY2VPYmplY3QKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdAogXSBp
bnRlcmZhY2UgRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50IHsKICAgICBbQ2FsbFdpdGg9
RG9jdW1lbnQsIEVuYWJsZWRCeVNldHRpbmc9RGV2aWNlT3JpZW50YXRpb25QZXJtaXNzaW9uQVBJ
XSBzdGF0aWMgUHJvbWlzZTxEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRl
PiByZXF1ZXN0UGVybWlzc2lvbigpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAko
cmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQCB0eXBlZGVmIChIVE1MU2NyaXB0RWxlbWVudCBv
ciBTVkdTY3JpcHRFCiAgICAgW05ld09iamVjdF0gVHJlZVdhbGtlciBjcmVhdGVUcmVlV2Fsa2Vy
KE5vZGUgcm9vdCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyB3aGF0VG9TaG93ID0gMHhGRkZGRkZG
Riwgb3B0aW9uYWwgTm9kZUZpbHRlcj8gZmlsdGVyID0gbnVsbCk7CiAKICAgICAvLyBFeHRlbnNp
b25zIGZyb20gSFRNTCBzcGVjaWZpY2F0aW9uIChodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
LyN0aGUtZG9jdW1lbnQtb2JqZWN0KS4KLSAgICBbUHV0Rm9yd2FyZHM9aHJlZiwgVW5mb3JnZWFi
bGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBMb2NhdGlvbj8gbG9jYXRpb247CisgICAgW1B1dEZvcndh
cmRzPWhyZWYsIExlZ2FjeVVuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgTG9jYXRpb24/
IGxvY2F0aW9uOwogICAgIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgZG9tYWluOwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcmVmZXJyZXI7CiAgICAgYXR0cmlidXRlIFVTVlN0cmluZyBj
b29raWU7CkBAIC0xMzAsNyArMTMwLDcgQEAgdHlwZWRlZiAoSFRNTFNjcmlwdEVsZW1lbnQgb3Ig
U1ZHU2NyaXB0RQogICAgIFtFbmFibGVkQnlTZXR0aW5nPVVuZG9NYW5hZ2VyQVBJXSByZWFkb25s
eSBhdHRyaWJ1dGUgVW5kb01hbmFnZXIgdW5kb01hbmFnZXI7CiAKICAgICAvLyBTcGVjaWFsIGV2
ZW50IGhhbmRsZXIgSURMIGF0dHJpYnV0ZXMgdGhhdCBvbmx5IGFwcGx5IHRvIERvY3VtZW50IG9i
amVjdHMuCi0gICAgW0xlbmllbnRUaGlzXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ucmVhZHlz
dGF0ZWNoYW5nZTsKKyAgICBbTGVnYWN5TGVuaWVudFRoaXNdIGF0dHJpYnV0ZSBFdmVudEhhbmRs
ZXIgb25yZWFkeXN0YXRlY2hhbmdlOwogCiAgICAgLy8gRXh0ZW5zaW9ucyBmcm9tIHRoZSBDU1NP
TS1WaWV3IHNwZWNpZmljYXRpb24gKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS12aWV3
LyNleHRlbnNpb25zLXRvLXRoZS1kb2N1bWVudC1pbnRlcmZhY2UpLgogICAgIFtJbXBsZW1lbnRl
ZEFzPXNjcm9sbGluZ0VsZW1lbnRGb3JBUEldIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50PyBz
Y3JvbGxpbmdFbGVtZW50OwpAQCAtMTc5LDExICsxNzksMTEgQEAgdHlwZWRlZiAoSFRNTFNjcmlw
dEVsZW1lbnQgb3IgU1ZHU2NyaXB0RQogCiAgICAgLy8gT2Jzb2xldGUgZmVhdHVyZXMgZnJvbSBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vYnNvbGV0ZS5odG1sCiAKLSAg
ICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0
cmluZyBmZ0NvbG9yOwotICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1saW5rQ29sb3JG
b3JCaW5kaW5nc10gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5n
IGxpbmtDb2xvcjsKLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1w
dHlTdHJpbmddIERPTVN0cmluZyB2bGlua0NvbG9yOwotICAgIFtDRVJlYWN0aW9uc10gYXR0cmli
dXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGFsaW5rQ29sb3I7Ci0gICAg
W0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJp
bmcgYmdDb2xvcjsKKyAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmddIERPTVN0cmluZyBmZ0NvbG9yOworICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50
ZWRBcz1saW5rQ29sb3JGb3JCaW5kaW5nc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIGxpbmtDb2xvcjsKKyAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBb
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyB2bGlua0NvbG9yOworICAgIFtDRVJl
YWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGFs
aW5rQ29sb3I7CisgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nXSBET01TdHJpbmcgYmdDb2xvcjsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1M
Q29sbGVjdGlvbiBhbmNob3JzOyAvKiBbU2FtZU9iamVjdF0gKi8KICAgICByZWFkb25seSBhdHRy
aWJ1dGUgSFRNTENvbGxlY3Rpb24gYXBwbGV0czsgLyogW1NhbWVPYmplY3RdICovCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRBbmRFbGVtZW50RXZlbnRIYW5kbGVycy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFu
ZGxlcnMuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRBbmRFbGVtZW50RXZlbnRIYW5kbGVycy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1
LDcgQEAKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jZG9jdW1lbnRhbmRlbGVt
ZW50ZXZlbnRoYW5kbGVycwogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgRG9jdW1lbnRBbmRFbGVtZW50RXZlbnRIYW5k
bGVycyB7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmNvcHk7CiAgICAgYXR0cmlidXRl
IEV2ZW50SGFuZGxlciBvbmN1dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9y
U2hhZG93Um9vdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
T3JTaGFkb3dSb290LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50T3JTaGFkb3dSb290LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBA
QAogCiAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvY3VtZW50b3JzaGFkb3dyb290
CiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Qs
CiBdIGludGVyZmFjZSBEb2N1bWVudE9yU2hhZG93Um9vdCB7CiAgICAgLy8gRXh0ZW5zaW9ucyBm
cm9tIFNoYWRvdyBET00gQVBJIChodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9z
cGVjL3NoYWRvdy8jZXh0ZW5zaW9ucy10by10aGUtZG9jdW1lbnRvcnNoYWRvd3Jvb3QtbWl4aW4p
LgogICAgIC8vIERPTVNlbGVjdGlvbj8gZ2V0U2VsZWN0aW9uKCk7IC8vIEZJWE1FOiBXZSBjdXJy
ZW50bHkgaGF2ZSB0aGlzIG9uIERvY3VtZW50IG9ubHkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTkwLDggKzkwLDggQEAKIAogICAgIC8vIEV4dGVuc2lvbnMgdG8g
RWxlbWVudCBmcm9tIERPTSBQYXJzaW5nIGFuZCBTZXJpYWxpemF0aW9uIHNwZWNpZmljYXRpb24u
CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL0RPTS1QYXJzaW5nLyNleHRlbnNpb25zLXRv
LXRoZS1lbGVtZW50LWludGVyZmFjZQotICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtUcmVh
dE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGlubmVySFRNTDsKLSAgICBbQ0VSZWFjdGlv
bnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBvdXRlckhU
TUw7CisgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
XSBET01TdHJpbmcgaW5uZXJIVE1MOworICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG91dGVySFRNTDsKICAgICBbQ0VSZWFjdGlv
bnMsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgaW5zZXJ0QWRqYWNlbnRIVE1MKERPTVN0
cmluZyBwb3NpdGlvbiwgRE9NU3RyaW5nIHRleHQpOwogCiAgICAgLy8gRXh0ZW5zaW9ucyBmcm9t
IEZ1bGwgU2NyZWVuIEFQSSAoaHR0cHM6Ly9mdWxsc2NyZWVuLnNwZWMud2hhdHdnLm9yZy8jYXBp
KS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCB0eXBl
ZGVmIGRvdWJsZSBET01IaWdoUmVzVGltZVN0YW1wOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBi
b29sZWFuIGRlZmF1bHRQcmV2ZW50ZWQ7CiAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9U2hhZG93RE9N
XSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBjb21wb3NlZDsKIAotICAgIFtVbmZvcmdlYWJs
ZV0gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNUcnVzdGVkOworICAgIFtMZWdhY3lVbmZv
cmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNUcnVzdGVkOwogICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBJbXBsZW1lbnRlZEFzPXRpbWVTdGFtcEZvckJp
bmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NSGlnaFJlc1RpbWVTdGFtcCB0aW1lU3RhbXA7
CiAKICAgICB1bmRlZmluZWQgaW5pdEV2ZW50KERPTVN0cmluZyB0eXBlLCBvcHRpb25hbCBib29s
ZWFuIGJ1YmJsZXMgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlID0gZmFsc2Up
OyAvLyBIaXN0b3JpY2FsLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmlkbAko
cmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJm
YWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJmYWNlIEV2ZW50
TGlzdGVuZXIgewogICAgIHVuZGVmaW5lZCBoYW5kbGVFdmVudChFdmVudCBldmVudCk7CiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0dsb2JhbEV2ZW50SGFuZGxlcnMuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9HbG9iYWxFdmVudEhhbmRsZXJzLmlkbAkocmV2aXNp
b24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0dsb2JhbEV2ZW50SGFuZGxlcnMuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFwaXMuaHRtbCNnbG9iYWxldmVudGhhbmRsZXJz
CiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Qs
CiBdIGludGVyZmFjZSBHbG9iYWxFdmVudEhhbmRsZXJzIHsKICAgICAvLyBDb21tZW50ZWQgb3V0
IGV2ZW50IGhhbmRsZXJzIGFyZSBkZWZpbmVkIGJ5IHRoZSBIVE1MNSBzcGVjaWZpY2F0aW9uIGJ1
dAogICAgIC8vIGFyZSBub3QgeWV0IGltcGxlbWVudGVkLgpAQCAtNjUsOCArNjUsOCBAQAogICAg
IGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25sb2FkZWRtZXRhZGF0YTsKICAgICBhdHRyaWJ1dGUg
RXZlbnRIYW5kbGVyIG9ubG9hZHN0YXJ0OwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25t
b3VzZWRvd247Ci0gICAgW0xlbmllbnRUaGlzXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubW91
c2VlbnRlcjsKLSAgICBbTGVuaWVudFRoaXNdIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tb3Vz
ZWxlYXZlOworICAgIFtMZWdhY3lMZW5pZW50VGhpc10gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBv
bm1vdXNlZW50ZXI7CisgICAgW0xlZ2FjeUxlbmllbnRUaGlzXSBhdHRyaWJ1dGUgRXZlbnRIYW5k
bGVyIG9ubW91c2VsZWF2ZTsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubW91c2Vtb3Zl
OwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tb3VzZW91dDsKICAgICBhdHRyaWJ1dGUg
RXZlbnRIYW5kbGVyIG9ubW91c2VvdmVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05hdmln
YXRvck1heFRvdWNoUG9pbnRzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
TmF2aWdhdG9yTWF4VG91Y2hQb2ludHMuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vTmF2aWdhdG9yTWF4VG91Y2hQb2ludHMuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw3ICsyNyw3IEBACiAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBNYXhUb3VjaFBvaW50cyB7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbWF4VG91Y2hQb2ludHM7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL05vbkRvY3VtZW50VHlwZUNoaWxkTm9kZS5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL05vbkRvY3VtZW50VHlwZUNoaWxkTm9kZS5pZGwJKHJldmlzaW9u
IDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob25Eb2N1bWVudFR5cGVDaGlsZE5vZGUu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKIC8vIGh0dHBzOi8vZG9tLnNw
ZWMud2hhdHdnLm9yZy8jaW50ZXJmYWNlLW5vbmRvY3VtZW50dHlwZWNoaWxkbm9kZQogWwotICAg
IE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRl
cmZhY2UgTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RWxlbWVudD8gcHJldmlvdXNFbGVtZW50U2libGluZzsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RWxlbWVudD8gbmV4dEVsZW1lbnRTaWJsaW5nOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05v
bkVsZW1lbnRQYXJlbnROb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9uRWxlbWVudFBhcmVudE5vZGUuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vTm9uRWxlbWVudFBhcmVudE5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw3IEBACiAKIC8vIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jaW50ZXJmYWNlLW5v
bmVsZW1lbnRwYXJlbnRub2RlCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5
Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBOb25FbGVtZW50UGFyZW50Tm9kZSB7CiAg
ICAgW0RPTUpJVD1SZWFkRE9NXSBFbGVtZW50PyBnZXRFbGVtZW50QnlJZChbUmVxdWlyZXNFeGlz
dGluZ0F0b21TdHJpbmddIERPTVN0cmluZyBlbGVtZW50SWQpOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9QYXJlbnROb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vUGFyZW50Tm9kZS5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9QYXJlbnROb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiAvLyBo
dHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2ludGVyZmFjZS1wYXJlbnRub2RlCiBbCi0gICAg
Tm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVy
ZmFjZSBQYXJlbnROb2RlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24g
Y2hpbGRyZW47IC8vIEZJWE1FOiBTaG91bGQgYmUgW1NhbWVPYmplY3RdLgogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBFbGVtZW50PyBmaXJzdEVsZW1lbnRDaGlsZDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBFbGVtZW50IGhvc3Q7CiAKICAgICAvLyBGSVhNRTogU2VlbXMgdG8gaGF2
ZSBiZWVuIGRyb3BwZWQgZnJvbSB0aGUgU2hhZG93IERPTSBBUEkuCi0gICAgW0NFUmVhY3Rpb25z
XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgaW5uZXJIVE1M
OworICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10g
RE9NU3RyaW5nIGlubmVySFRNTDsKIH07CiAKIFNoYWRvd1Jvb3QgaW5jbHVkZXMgRG9jdW1lbnRP
clNoYWRvd1Jvb3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdGFibGUuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TbG90YWJsZS5pZGwJKHJldmlzaW9uIDI2NjY1
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TbG90YWJsZS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRW5hYmxlZEF0UnVudGltZT1TaGFkb3dET00sCiBd
IGludGVyZmFjZSBTbG90YWJsZSB7CiAgICAgW0ltcGxlbWVudGVkQXM9YXNzaWduZWRTbG90Rm9y
QmluZGluZ3NdIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MU2xvdEVsZW1lbnQ/IGFzc2lnbmVkU2xv
dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5pZGwJKHJldmlzaW9u
IDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMTksMTIgKzE5LDEyIEBACiAgKi8KIAogaW50ZXJmYWNlIEhUTUxCb2R5
RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZs
ZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgYUxpbms7
CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGFMaW5rOwogICAgIFtDRVJlYWN0aW9ucz1Ob3RO
ZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYmFja2dyb3VuZDsKLSAgICBbQ0VS
ZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5
U3RyaW5nXSBET01TdHJpbmcgYmdDb2xvcjsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBS
ZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgbGlu
azsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0
TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgdGV4dDsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90
TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01T
dHJpbmcgdkxpbms7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmli
dXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7CisgICAgW0NF
UmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ10gRE9NU3RyaW5nIGxpbms7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVm
bGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHRleHQ7
CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZMaW5rOwogCiAgICAgW05vdEVudW1lcmFibGUs
IFdpbmRvd0V2ZW50SGFuZGxlcl0gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmJsdXI7CiAgICAg
W05vdEVudW1lcmFibGUsIFdpbmRvd0V2ZW50SGFuZGxlcl0gYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbmVycm9yOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmlkbAkocmV2aXNp
b24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiBbCiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAg
ICBOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMsCi0gICAgT3ZlcnJpZGVCdWlsdGlu
cywKKyAgICBMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLAogXSBpbnRlcmZhY2UgSFRNTERvY3VtZW50
IDogRG9jdW1lbnQgeyAgICAKICAgICBnZXR0ZXIgKFdpbmRvd1Byb3h5IG9yIEVsZW1lbnQgb3Ig
SFRNTENvbGxlY3Rpb24pIChET01TdHJpbmcgbmFtZSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBACiAgICAg
W0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgYm9vbGVhbiBzcGVsbGNoZWNrOwogICAgIC8vIHVuZGVm
aW5lZCBmb3JjZVNwZWxsQ2hlY2soKTsgLy8gRklYTUU6IE5vdCBzdXBwb3J0ZWQuCiAKLSAgICBb
Q0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmlu
ZyBpbm5lclRleHQ7CisgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nXSBET01TdHJpbmcgaW5uZXJUZXh0OwogCiAgICAgLy8gRklYTUU6IFNob3VsZCBi
ZSBpbiBhIHNlcGFyYXRlIEVsZW1lbnRDb250ZW50RWRpdGFibGUgaW50ZXJmYWNlLgogICAgIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2VsZW1lbnRjb250ZW50ZWRpdGFibGUKQEAg
LTU2LDExICs1NiwxMSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgb2Zmc2V0SGVp
Z2h0OyAvLyBGSVhNRTogU2hvdWxkIGJlIG9mIHR5cGUgbG9uZy4KIAogICAgIC8vIE5vbiBTdGFu
ZGFyZCBidXQgbWF5IGdldCBhZGRlZCB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly9naXRo
dWIuY29tL3doYXR3Zy9odG1sL2lzc3Vlcy82NjgpLgotICAgIFtDRVJlYWN0aW9uc10gYXR0cmli
dXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG91dGVyVGV4dDsKKyAgICBb
Q0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmlu
ZyBvdXRlclRleHQ7CiAKICAgICAvLyBpT1MgYXV0b2NvcnJlY3QgLyBhdXRvY2FwaXRhbGl6YXRp
b24gZXh0ZW5zaW9ucy4KICAgICBbQ29uZGl0aW9uYWw9QVVUT0NPUlJFQ1QsIENFUmVhY3Rpb25z
XSBhdHRyaWJ1dGUgYm9vbGVhbiBhdXRvY29ycmVjdDsKLSAgICBbQ29uZGl0aW9uYWw9QVVUT0NB
UElUQUxJWkUsIENFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5n
XSBET01TdHJpbmcgYXV0b2NhcGl0YWxpemU7CisgICAgW0NvbmRpdGlvbmFsPUFVVE9DQVBJVEFM
SVpFLCBDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9N
U3RyaW5nIGF1dG9jYXBpdGFsaXplOwogCiAgICAgLy8gRklYTUU6IFdlIGFyZSB0aGUgb25seSBi
cm93c2VyIHRvIHN1cHBvcnQgdGhpcyBub3cgdGhhdCBCbGluayBkcm9wcGVkIGl0IChodHRwOi8v
Y3JidWcuY29tLzY4ODk0MykuCiAgICAgW0NFUmVhY3Rpb25zLCBSZWZsZWN0XSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIHdlYmtpdGRyb3B6b25lOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9udEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
bnRFbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9udEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw3IEBACiAgKi8K
IAogaW50ZXJmYWNlIEhUTUxGb250RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKLSAgICBbQ0VSZWFj
dGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3Ry
aW5nXSBET01TdHJpbmcgY29sb3I7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVj
dF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGNvbG9yOwog
ICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcg
ZmFjZTsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHNpemU7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAKIFsKICAgICBMZWdh
Y3lVbmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMsCi0gICAgT3ZlcnJpZGVCdWlsdGlucywKKyAg
ICBMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLAogICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwK
IF0gaW50ZXJmYWNlIEhUTUxGb3JtRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICBbQ0VSZWFj
dGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0PWFjY2VwdF9jaGFyc2V0XSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGFjY2VwdENoYXJzZXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVs
ZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxl
bWVudC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZy
YW1lRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDggQEAgaW50ZXJmYWNl
IEhUTUxGcmFtZUVsZW1lbnQgOiBIVE1MRWxlbWVudAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9k
ZV0gcmVhZG9ubHkgYXR0cmlidXRlIERvY3VtZW50IGNvbnRlbnREb2N1bWVudDsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgY29udGVudFdpbmRvdzsKIAotICAgIFtDRVJlYWN0
aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJp
bmddIERPTVN0cmluZyBtYXJnaW5IZWlnaHQ7Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwg
UmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1h
cmdpbldpZHRoOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0
ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBtYXJnaW5IZWlnaHQ7CisgICAg
W0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ10gRE9NU3RyaW5nIG1hcmdpbldpZHRoOwogCiAgICAgW0NoZWNrU2VjdXJpdHlG
b3JOb2RlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRp
bHMuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIeXBl
cmxpbmtFbGVtZW50VXRpbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAg
Ki8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3QKIF0gaW50ZXJmYWNlIEhUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMgewogICAgIFtDRVJlYWN0
aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3QsIFVSTF0gc3RyaW5naWZpZXIgYXR0cmlidXRlIFVTVlN0
cmluZyBocmVmOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgb3JpZ2luOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJKHJldmlzaW9uIDI2
NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw4IEBAIGludGVyZmFjZSBIVE1MSUZyYW1lRWxlbWVudCA6
IEhUTUxFbGVtZW4KICAgICBbUmVmbGVjdCwgQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGZyYW1lQm9yZGVyOwogICAgIFtSZWZsZWN0LCBDRVJlYWN0aW9ucz1Ob3RO
ZWVkZWRdIGF0dHJpYnV0ZSBET01TdHJpbmcgaGVpZ2h0OwogICAgIFtSZWZsZWN0LCBVUkwsIENF
UmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRlIFVTVlN0cmluZyBsb25nRGVzYzsKLSAgICBb
UmVmbGVjdCwgQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVt
cHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luSGVpZ2h0OwotICAgIFtSZWZsZWN0LCBDRVJlYWN0
aW9ucz1Ob3ROZWVkZWRdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0
cmluZyBtYXJnaW5XaWR0aDsKKyAgICBbUmVmbGVjdCwgQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBh
dHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luSGVpZ2h0
OworICAgIFtSZWZsZWN0LCBDRVJlYWN0aW9ucz1Ob3ROZWVkZWRdIGF0dHJpYnV0ZSBbTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBtYXJnaW5XaWR0aDsKICAgICBbUmVmbGVjdCwg
Q0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7CiAKICAgICBb
UHV0Rm9yd2FyZHM9dmFsdWVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01Ub2tlbkxpc3Qgc2FuZGJv
eDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAkocmV2aXNp
b24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVk
ZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKICAgICBbQ0VSZWFjdGlvbnM9
Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsaWduOwogICAgIFtDRVJl
YWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWx0OwotICAg
IFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9
RW1wdHlTdHJpbmddIERPTVN0cmluZyBib3JkZXI7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRl
ZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5n
IGJvcmRlcjsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgRE9NU3RyaW5n
PyBjcm9zc09yaWdpbjsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBoZWlnaHQ7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0g
YXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgaHNwYWNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3
IEBACiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRlIERPTVN0cmluZyB0eXBl
OyAvLyByZWFkb25seSBkcm9wcGVkIGFzIHBhcnQgb2YgRE9NIGxldmVsIDIKICAgICBbQ0VSZWFj
dGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlZmF1bHRWYWx1ZTsKICAgICAv
LyBTZWUgdGhlIGRpc2N1c3Npb24gaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMDA4NQotICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWRdIGF0dHJpYnV0ZSBbVHJl
YXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZTsKKyAgICBbQ0VSZWFjdGlvbnM9
Tm90TmVlZGVkXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcg
dmFsdWU7CiAgICAgYXR0cmlidXRlIERhdGU/IHZhbHVlQXNEYXRlOwogICAgIGF0dHJpYnV0ZSB1
bnJlc3RyaWN0ZWQgZG91YmxlIHZhbHVlQXNOdW1iZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUs
NyArMjUsNyBAQAogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0
ZSBET01TdHJpbmcgY29kZTsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGFsaWduOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJl
ZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYXJjaGl2ZTsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90
TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01T
dHJpbmcgYm9yZGVyOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJp
YnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBib3JkZXI7CiAgICAgW0NF
UmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdCwgVVJMXSBhdHRyaWJ1dGUgVVNWU3RyaW5nIGNv
ZGVCYXNlOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBE
T01TdHJpbmcgY29kZVR5cGU7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdCwg
VVJMXSBhdHRyaWJ1dGUgVVNWU3RyaW5nIGRhdGE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPckZvcmVpZ25FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPckZvcmVpZ25FbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3JGb3JlaWduRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDcgKzI3LDcgQEAKIC8vIEZJWE1FOiB1cGRhdGUgYWJvdmUgbGluayB3aGVuIHRoaXMgY2hh
bmdlIGhhcyBiZWVuIGltcGxlbWVudGVkOgogLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9o
dG1sL2lzc3Vlcy80NzAyCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBIVE1MT3JGb3JlaWduRWxlbWVudCB7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZ01hcCBkYXRhc2V0OyAvLyBGSVhNRTogU2hvdWxk
IGJlIFtTYW1lT2JqZWN0XS4KICAgICBbQ0VSZWFjdGlvbnMsIEltcGxlbWVudGVkQXM9dGFiSW5k
ZXhGb3JCaW5kaW5nc10gYXR0cmlidXRlIGxvbmcgdGFiSW5kZXg7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDggKzI5LDggQEAgaW50ZXJmYWNlIEhUTUxPdXRwdXRFbGVtZW50IDogSFRNTEVsZW1lbgog
ICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcg
bmFtZTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsKLSAgICBbQ0VS
ZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBk
ZWZhdWx0VmFsdWU7Ci0gICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVt
cHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWU7CisgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUg
W0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgZGVmYXVsdFZhbHVlOworICAgIFtD
RVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5n
IHZhbHVlOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2lsbFZhbGlkYXRlOwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBWYWxpZGl0eVN0YXRlIHZhbGlkaXR5OwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5pZGwJKHJldmlzaW9uIDI2
NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBAIGludGVyZmFjZSBIVE1MVGFibGVDZWxsRWxl
bWVudCA6IEhUTUxFbGUKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBjZWxsSW5kZXg7CiAg
ICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBh
bGlnbjsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGF4aXM7Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmli
dXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7CisgICAgW0NF
UmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwg
UmVmbGVjdD1jaGFyXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNoOwogICAgIFtDRVJlYWN0aW9ucz1O
b3ROZWVkZWQsIFJlZmxlY3Q9Y2hhcm9mZl0gYXR0cmlidXRlIERPTVN0cmluZyBjaE9mZjsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsCShyZXZpc2lvbiAy
NjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsMTAgQEAgaW50ZXJmYWNlIEhUTUxUYWJsZUVsZW1lbnQg
OiBIVE1MRWxlbWVudAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MQ29sbGVjdGlvbiByb3dz
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MQ29sbGVjdGlvbiB0Qm9kaWVzOwogICAgIFtD
RVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWxpZ247
Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51
bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7CisgICAgW0NFUmVhY3Rpb25zPU5v
dE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9N
U3RyaW5nIGJnQ29sb3I7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0
cmlidXRlIERPTVN0cmluZyBib3JkZXI7Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVm
bGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGNlbGxQ
YWRkaW5nOwotICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBb
VHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBjZWxsU3BhY2luZzsKKyAgICBbQ0VS
ZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nXSBET01TdHJpbmcgY2VsbFBhZGRpbmc7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRl
ZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5n
IGNlbGxTcGFjaW5nOwogCiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0
cmlidXRlIERPTVN0cmluZyBmcmFtZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVSb3dFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZVJvd0VsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsy
Myw3IEBAIGludGVyZmFjZSBIVE1MVGFibGVSb3dFbGVtZW50IDogSFRNTEVsZW0KICAgICByZWFk
b25seSBhdHRyaWJ1dGUgbG9uZyBzZWN0aW9uUm93SW5kZXg7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIEhUTUxDb2xsZWN0aW9uIGNlbGxzOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJl
ZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWxpZ247Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5l
ZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3Ry
aW5nIGJnQ29sb3I7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmli
dXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7CiAgICAgW0NF
UmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdD1jaGFyXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNo
OwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3Q9Y2hhcm9mZl0gYXR0cmlidXRl
IERPTVN0cmluZyBjaE9mZjsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIHZBbGlnbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyAr
MzYsNyBAQCBpbnRlcmZhY2UgSFRNTFRleHRBcmVhRWxlbWVudCA6IEhUTUxFbGVtCiAKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHR5cGU7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5l
ZWRlZF0gYXR0cmlidXRlIERPTVN0cmluZyBkZWZhdWx0VmFsdWU7Ci0gICAgYXR0cmlidXRlIFtU
cmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVlOworICAgIGF0dHJpYnV0ZSBb
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZTsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB0ZXh0TGVuZ3RoOwogCiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGJvb2xlYW4gd2lsbFZhbGlkYXRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmlkbAkocmV2aXNpb24gMjY2NjU5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNl
T2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVdF
QkdMLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwK
IF0gaW50ZXJmYWNlIEFOR0xFSW5zdGFuY2VkQXJyYXlzIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc0NvbXBvc2l0aW5nLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNDb21wb3NpdGluZy5pZGwJKHJldmlzaW9uIDI2NjY1
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0NvbXBvc2l0aW5nLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFj
ZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5k
b3csV29ya2VyKQogXSBpbnRlcmZhY2UgQ2FudmFzQ29tcG9zaXRpbmcgewogICAgIC8vIEZJWE1F
OiBBbGwgdGhlIHVucmVzdHJpY3RlZCBmbG9hdCBhdHRyaWJ1dGVzIGJlbG93IHNob3VsZCBiZSB1
bnJlc3RyaWN0ZWQgZG91Ymxlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc0RyYXdJbWFnZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzRHJhd0ltYWdlLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzRHJhd0ltYWdlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NyArMzcsNyBAQCB0eXBlZGVmIChIVE1MSW1hZ2VFbGVtZW50IG9yIEhUTUxDYW52YXNFCiApIENh
bnZhc0ltYWdlU291cmNlOwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5
Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJm
YWNlIENhbnZhc0RyYXdJbWFnZSB7CiAgICAgLy8gRklYTUU6IEFsbCB0aGUgdW5yZXN0cmljdGVk
IGZsb2F0IGFyZ3VtZW50cyBiZWxvdyBzaG91bGQgYmUgdW5yZXN0cmljdGVkIGRvdWJsZXMuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNEcmF3UGF0aC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRHJhd1BhdGguaWRsCShy
ZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNEcmF3
UGF0aC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAg
Tm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhw
b3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc0RyYXdQYXRoIHsKICAgICAv
LyBwYXRoIEFQSSAoc2VlIGFsc28gQ2FudmFzUGF0aCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc0ZpbGxTdHJva2VTdHlsZXMuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0ZpbGxTdHJva2VTdHlsZXMuaWRsCShyZXZpc2lv
biAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNGaWxsU3Ryb2tl
U3R5bGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCB0eXBlZGVmIChIVE1M
SW1hZ2VFbGVtZW50IG9yIEhUTUxDYW52YXNFCiApIENhbnZhc0ltYWdlU291cmNlOwogCiBbCi0g
ICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAg
RXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc0ZpbGxTdHJva2VTdHls
ZXMgewogICAgIC8vIGNvbG9ycyBhbmQgc3R5bGVzIChzZWUgYWxzbyB0aGUgQ2FudmFzUGF0aERy
YXdpbmdTdHlsZXMgYW5kIENhbnZhc1RleHREcmF3aW5nU3R5bGVzIGludGVyZmFjZXMpCkBAIC00
Nyw1ICs0Nyw1IEBAIHR5cGVkZWYgKEhUTUxJbWFnZUVsZW1lbnQgb3IgSFRNTENhbnZhc0UKICAg
ICAvLyBGSVhNRTogQWxsIHRoZSBmbG9hdCBwYXJhbWV0ZXJzIGJlbG93IHNob3VsZCBiZSBkb3Vi
bGVzLgogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2FudmFzR3JhZGllbnQgY3JlYXRlTGluZWFy
R3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCB4MSwgZmxvYXQgeTEpOwogICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gQ2FudmFzR3JhZGllbnQgY3JlYXRlUmFkaWFsR3JhZGllbnQoZmxv
YXQgeDAsIGZsb2F0IHkwLCBmbG9hdCByMCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCByMSk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBDYW52YXNQYXR0ZXJuPyBjcmVhdGVQYXR0ZXJuKENh
bnZhc0ltYWdlU291cmNlIGltYWdlLCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmlu
ZyByZXBldGl0aW9uKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENhbnZhc1BhdHRlcm4/IGNy
ZWF0ZVBhdHRlcm4oQ2FudmFzSW1hZ2VTb3VyY2UgaW1hZ2UsIFtMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIHJlcGV0aXRpb24pOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc0ZpbHRlcnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc0ZpbHRlcnMuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNGaWx0ZXJzLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKQogXSBp
bnRlcmZhY2UgQ2FudmFzRmlsdGVycyB7CiAgICAgLy8gZmlsdGVycwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsCShyZXZpc2lvbiAyNjY2
NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNl
T2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9zZWQ9KFdpbmRv
dyxXb3JrZXIpCiBdIGludGVyZmFjZSBDYW52YXNJbWFnZURhdGEgewogICAgIC8vIEZJWE1FOiBB
bGwgdGhlIGZsb2F0IGFyZ3VtZW50cyBiZWxvdyBzaG91bGQgYmUgbG9uZ3MuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNJbWFnZVNtb290aGluZy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VTbW9vdGhpbmcuaWRs
CShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNJ
bWFnZVNtb290aGluZy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwog
CiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Qs
CiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc0ltYWdlU21v
b3RoaW5nIHsKICAgICAvLyBpbWFnZSBzbW9vdGhpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1BhdGguaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1BhdGguaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKQogXSBpbnRlcmZhY2Ug
Q2FudmFzUGF0aCB7CiAgICAgLy8gc2hhcmVkIHBhdGggQVBJIG1ldGhvZHMKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGhEcmF3aW5nU3R5bGVzLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoRHJhd2luZ1N0eWxl
cy5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1BhdGhEcmF3aW5nU3R5bGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKQogXSBpbnRlcmZhY2UgQ2FudmFz
UGF0aERyYXdpbmdTdHlsZXMgewogICAgIC8vIEZJWE1FOiBBbGwgdGhlIHVucmVzdHJpY3RlZCBm
bG9hdCBhcmd1bWVudHMgLyBhdHRyaWJ1dGVzIGJlbG93IHNob3VsZCBiZSB1bnJlc3RyaWN0ZWQg
ZG91Ymxlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlY3QuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlY3QuaWRs
CShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZWN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBO
b0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBv
c2VkPShXaW5kb3csV29ya2VyKQogXSBpbnRlcmZhY2UgQ2FudmFzUmVjdCB7CiAgICAgLy8gRklY
TUU6IEFsbCB0aGUgdW5yZXN0cmljdGVkIGZsb2F0IHBhcmFtZXRlcnMgYmVsb3cgc2hvdWxkIGJl
IHVucmVzdHJpY3RlZCBkb3VibGVzLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzU2hhZG93U3R5bGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNTaGFkb3dTdHlsZXMuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTaGFkb3dTdHlsZXMuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAor
ICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIp
CiBdIGludGVyZmFjZSBDYW52YXNTaGFkb3dTdHlsZXMgewogICAgIC8vIEZJWE1FOiBBbGwgdGhl
IHVucmVzdHJpY3RlZCBmbG9hdCBhdHRyaWJ1dGVzIGJlbG93IHNob3VsZCBiZSB1bnJlc3RyaWN0
ZWQgZG91Ymxlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0YXRl
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdGF0
ZS5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1N0YXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsK
LSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAg
ICBFeHBvc2VkPShXaW5kb3csV29ya2VyKQogXSBpbnRlcmZhY2UgQ2FudmFzU3RhdGUgewogICAg
IC8vIHN0YXRlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNUZXh0Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNUZXh0Lmlk
bAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
VGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAg
Tm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhw
b3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIENhbnZhc1RleHQgewogICAgIC8vIEZJWE1FOiBBbGwg
dGhlIHVucmVzdHJpY3RlZCBmbG9hdCBwYXJhbWV0ZXJzIGJlbG93IHNob3VsZCBiZSB1bnJlc3Ry
aWN0ZWQgZG91Ymxlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Rl
eHREcmF3aW5nU3R5bGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNUZXh0RHJhd2luZ1N0eWxlcy5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1RleHREcmF3aW5nU3R5bGVzLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPVdpbmRvdwog
XSBpbnRlcmZhY2UgQ2FudmFzVGV4dERyYXdpbmdTdHlsZXMgewogICAgIC8vIHRleHQKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1RyYW5zZm9ybS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVHJhbnNmb3JtLmlkbAkocmV2
aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVHJhbnNm
b3JtLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBO
b0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBv
c2VkPShXaW5kb3csV29ya2VyKQogXSBpbnRlcmZhY2UgQ2FudmFzVHJhbnNmb3JtIHsKICAgICAv
LyBGSVhNRTogQWxsIHRoZSB1bnJlc3RyaWN0ZWQgZmxvYXQgcGFyYW1ldGVycyBiZWxvdyBzaG91
bGQgYmUgdW5yZXN0cmljdGVkIGRvdWJsZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNVc2VySW50ZXJmYWNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNVc2VySW50ZXJmYWNlLmlkbAkocmV2aXNpb24gMjY2NjU5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVXNlckludGVyZmFjZS5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VP
YmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD1XaW5kb3cK
IF0gaW50ZXJmYWNlIENhbnZhc1VzZXJJbnRlcmZhY2UgewogICAgIHVuZGVmaW5lZCBkcmF3Rm9j
dXNJZk5lZWRlZChFbGVtZW50IGVsZW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvRVhUQmxlbmRNaW5NYXguaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0VYVEJsZW5kTWluTWF4LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQmxlbmRNaW5NYXguaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw3ICsyNiw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJ
c1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2Jq
ZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgRVhUQmxlbmRN
aW5NYXggewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgTUlOX0VYVCA9IDB4ODAwNzsKICAgICBj
b25zdCB1bnNpZ25lZCBsb25nIE1BWF9FWFQgPSAweDgwMDg7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmlkbAkocmV2aXNpb24g
MjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9h
dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICovCiAKIFsKLSAgICBOb0lu
dGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRp
b25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0Nv
bnRleHQKIF0gaW50ZXJmYWNlIEVYVENvbG9yQnVmZmVyRmxvYXQgewpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0Lmlk
bAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29s
b3JCdWZmZXJIYWxmRmxvYXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAq
LwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3QsCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBs
V2ViR0xSZW5kZXJpbmdDb250ZXh0CiBdIGludGVyZmFjZSBFWFRDb2xvckJ1ZmZlckhhbGZGbG9h
dCB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZyYWdEZXB0aC5pZGwJ
KHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZyYWdE
ZXB0aC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICovCiAKIFsKLSAgICBO
b0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25k
aXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmlu
Z0NvbnRleHQKIF0gaW50ZXJmYWNlIEVYVEZyYWdEZXB0aCB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9FWFRTaGFkZXJUZXh0dXJlTE9ELmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRTaGFkZXJUZXh0dXJlTE9ELmlkbAkocmV2aXNpb24g
MjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxP
RC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9J
bnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0
aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdD
b250ZXh0CiBdIGludGVyZmFjZSBFWFRTaGFkZXJUZXh0dXJlTE9EIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNv
dHJvcGljLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsNyBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIEdlbmVyYXRlSXNSZWFj
aGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwK
KyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIEVYVFRleHR1cmVGaWx0
ZXJBbmlzb3Ryb3BpYyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBURVhUVVJFX01BWF9BTklT
T1RST1BZX0VYVCA9IDB4ODRGRTsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIE1BWF9URVhUVVJF
X01BWF9BTklTT1RST1BZX0VYVCA9IDB4ODRGRjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0VYVHNSR0IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0VYVHNSR0IuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9FWFRzUkdCLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogWwog
ICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdM
UmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIEVYVHNSR0IgewogICAgIGNvbnN0IHVuc2lnbmVk
IGxvbmcgU1JHQl9FWFQgPSAweDhDNDA7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBTUkdCX0FM
UEhBX0VYVCA9IDB4OEM0MjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0Vs
ZW1lbnRJbmRleFVpbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL09FU0VsZW1lbnRJbmRleFVpbnQuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAg
ICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBH
ZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCiBdIGludGVyZmFj
ZSBPRVNFbGVtZW50SW5kZXhVaW50IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaWRsCShyZXZpc2lvbiAyNjY2NTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQkdM
LAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBs
V2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgT0VTU3RhbmRhcmREZXJpdmF0aXZlcyB7
CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5U
X09FUyA9IDB4OEI4QjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNU
ZXh0dXJlRmxvYXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L09FU1RleHR1cmVGbG9hdC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcg
KzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1Jl
YWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAogXSBpbnRlcmZhY2UgT0VTVGV4dHVy
ZUZsb2F0IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9h
dExpbmVhci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VT
VGV4dHVyZUZsb2F0TGluZWFyLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0TGluZWFyLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5l
cmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCiBdIGludGVyZmFjZSBP
RVNUZXh0dXJlRmxvYXRMaW5lYXIgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T0VTVGV4dHVyZUhhbGZGbG9hdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0
LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAog
ICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKIF0gaW50
ZXJmYWNlIE9FU1RleHR1cmVIYWxmRmxvYXQgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5pZGwJKHJldmlz
aW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxm
RmxvYXRMaW5lYXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAog
WwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAog
ICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdM
UmVuZGVyaW5nQ29udGV4dCwKIF0gaW50ZXJmYWNlIE9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3Qu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFy
cmF5T2JqZWN0LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsy
Nyw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsIAogICAgIERvTm90Q2hlY2tDb25zdGFudHMs
CiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAg
IE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRl
cmZhY2UgT0VTVmVydGV4QXJyYXlPYmplY3QgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgVkVS
VEVYX0FSUkFZX0JJTkRJTkdfT0VTID0gMHg4NUI1OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5pZGwJKHJldmlzaW9u
IDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJG
bG9hdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICovCiAKIFsKLSAgICBO
b0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25k
aXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmlu
Z0NvbnRleHQKIF0gaW50ZXJmYWNlIFdlYkdMQ29sb3JCdWZmZXJGbG9hdCB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEMuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDcgKzI3LDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBEb05vdENoZWNrQ29uc3Rh
bnRzLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwK
LSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0g
aW50ZXJmYWNlIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDIHsKICAgICAvKiBDb21wcmVzc2Vk
IFRleHR1cmUgRm9ybWF0ICovCiAgICAgY29uc3QgR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RD
XzR4NF9LSFIgPSAweDkzQjA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlQVRDLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmlkbAkocmV2aXNpb24gMjY2NjU5
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFU
Qy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICBDb25kaXRpb25hbD1X
RUJHTCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9
SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVBVEMgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9SR0JfQVRDX1dFQkdM
ID0gMHg4QzkyOwogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9SR0JBX0FUQ19F
WFBMSUNJVF9BTFBIQV9XRUJHTCA9IDB4OEM5MzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5pZGwJKHJl
dmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogICAg
IENvbmRpdGlvbmFsPVdFQkdMLAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgR2VuZXJh
dGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAgIE5vSW50ZXJmYWNl
T2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUVUQzEgewogICAgIC8qIENvbXByZXNzZWQgVGV4dHVyZSBGb3JtYXRz
ICovCiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1JHQl9FVEMxX1dFQkdMID0g
MHg4RDY0OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUVUQy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAg
RG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJl
bmRlcmluZ0NvbnRleHQsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDIHsKICAg
ICAvKiBDb21wcmVzc2VkIFRleHR1cmUgRm9ybWF0ICovCiAgICAgY29uc3QgdW5zaWduZWQgbG9u
ZyBDT01QUkVTU0VEX1IxMV9FQUMgICAgICAgICAgICAgICAgICAgICAgICA9IDB4OTI3MDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJU
Qy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIERvTm90
Q2hlY2tDb25zdGFudHMsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJp
bmdDb250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNl
T2JqZWN0LAogXSBpbnRlcmZhY2UgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDIHsKICAgICBj
b25zdCB1bnNpZ25lZCBsb25nIENPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcgPSAweDhD
MDA7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFf
SU1HID0gMHg4QzAxOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlkbAkocmV2aXNpb24gMjY2NjU5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VC
R0wsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUlt
cGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFf
RVhUID0gMHg4M0YwOwogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUMV9FWFQgPSAweDgzRjE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5pZGwJKHJl
dmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDc1JHQi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAK
ICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIEdl
bmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0ludGVy
ZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBD
T01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVCA9IDB4OEM0QzsKICAgICBjb25zdCB1bnNpZ25l
ZCBsb25nIENPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUID0gMHg4QzREOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRl
cmVySW5mby5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsy
Nyw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywK
ICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCi0gICAg
Tm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVy
ZmFjZSBXZWJHTERlYnVnUmVuZGVyZXJJbmZvIHsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIFVO
TUFTS0VEX1ZFTkRPUl9XRUJHTCA9IDB4OTI0NTsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIFVO
TUFTS0VEX1JFTkRFUkVSX1dFQkdMID0gMHg5MjQ2OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmlkbAkocmV2aXNpb24gMjY2NjU5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAg
ICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZh
Y2UgV2ViR0xEZWJ1Z1NoYWRlcnMgewogICAgIERPTVN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlKFdlYkdMU2hhZGVyIHNoYWRlcik7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmlkbAkocmV2aXNpb24gMjY2NjU5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAg
RG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJl
bmRlcmluZ0NvbnRleHQsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBXZWJHTERlcHRoVGV4dHVyZSB7CiAgICAgY29uc3Qg
dW5zaWduZWQgbG9uZyBVTlNJR05FRF9JTlRfMjRfOF9XRUJHTCA9IDB4ODRGQTsKIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmlkbAko
cmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3
QnVmZmVycy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIHR5cGVkZWYgdW5z
aWduZWQgbG9uZyBHTGVudW07CiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0
ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCiAgICAgRG9Ob3RDaGVja0Nv
bnN0YW50cywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRl
eHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9z
ZUNvbnRleHQuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTExvc2VDb250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxl
PUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCiBdIGludGVyZmFjZSBXZWJHTExvc2VDb250ZXh0
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtNTMsNyArNTMsNyBAQCB0eXBlZGVmIChIVE1MQ2FudmFzRWxlbWVudCkgV2ViR0xD
YW52YXM7CiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAog
ICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAog
XSBpbnRlcmZhY2UgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSB7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQs
NyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVy
ZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hh
YmxlPUltcGwKIF0gaW50ZXJmYWNlIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMgewpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaWRs
CShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZUdlbmVyaWMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29u
ZGl0aW9uYWw9VklERU8sCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCiAgICAgSlNHZW5lcmF0
ZVRvTmF0aXZlT2JqZWN0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAogXSBpbnRlcmZh
Y2UgVGV4dFRyYWNrQ3VlR2VuZXJpYyA6IFZUVEN1ZSB7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WVFRSZWdpb25MaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbkxpc3QuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbkxpc3QuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw3ICsyNyw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9VklERU8sCiAgICAgSW1wbGVt
ZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lO
b0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFZUVFJlZ2lvbkxpc3QgewogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBnZXR0ZXIgVlRUUmVnaW9u
PyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAor
ICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUKIF0gaW50ZXJmYWNlIENvbW1hbmRMaW5lQVBJSG9zdCB7CiAgICAgdW5kZWZpbmVkIGNsZWFy
Q29uc29sZU1lc3NhZ2VzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmlkbAkocmV2
aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eU9iamVjdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAK
IFsKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEpTR2VuZXJhdGVUb0pTT2Jq
ZWN0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
LAogXSBpbnRlcmZhY2UgSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0IHsKICAgICBb
Q2FsbFdpdGg9RG9jdW1lbnQsIE1heVRocm93RXhjZXB0aW9uXSBzZXF1ZW5jZTxOb2RlPiBnZXRF
bGVtZW50c0J5Q29tcHV0ZWRSb2xlKERPTVN0cmluZyByb2xlLCBvcHRpb25hbCBOb2RlPyBjb250
YWluZXIpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRE
T01PYmplY3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBdWRpdERPTU9iamVjdC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdERPTU9iamVjdC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKIFsKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAg
IEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgSW5zcGVjdG9yQXVkaXRET01PYmplY3Qg
ewogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBoYXNFdmVudExpc3RlbmVycyhOb2Rl
IG5vZGUsIG9wdGlvbmFsIERPTVN0cmluZyB0eXBlKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRSZXNvdXJjZXNPYmplY3QuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdFJlc291cmNlc09iamVj
dC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBdWRpdFJlc291cmNlc09iamVjdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDcgQEAKIFsKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEpTR2VuZXJhdGVU
b0pTT2JqZWN0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNl
T2JqZWN0LAogXSBpbnRlcmZhY2UgSW5zcGVjdG9yQXVkaXRSZXNvdXJjZXNPYmplY3QgewogICAg
IFtDYWxsV2l0aD1Eb2N1bWVudCwgTWF5VGhyb3dFeGNlcHRpb25dIHNlcXVlbmNlPFJlc291cmNl
PiBnZXRSZXNvdXJjZXMoKTsKICAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIE1heVRocm93RXhjZXB0
aW9uXSBSZXNvdXJjZUNvbnRlbnQgZ2V0UmVzb3VyY2VDb250ZW50KERPTVN0cmluZyBpZCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAK
IAogWwogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBJbnNwZWN0b3JG
cm9udGVuZEhvc3QgewogICAgIHVuZGVmaW5lZCBsb2FkZWQoKTsKICAgICB1bmRlZmluZWQgY2xv
c2VXaW5kb3coKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDI2
NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtNTEsMTEgKzUxLDExIEBAIHR5cGVkZWYgVVNWU3RyaW5nIENTU09NU3RyaW5nOwogICAg
IEV4cG9zZWQ9V2luZG93LAogXSBpbnRlcmZhY2UgRE9NV2luZG93IDogRXZlbnRUYXJnZXQgewog
ICAgIC8vIFRoZSBjdXJyZW50IGJyb3dzaW5nIGNvbnRleHQuCi0gICAgW0RvTm90Q2hlY2tTZWN1
cml0eSwgVW5mb3JnZWFibGUsIEN1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRv
d1Byb3h5IHdpbmRvdzsKKyAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBMZWdhY3lVbmZvcmdlYWJs
ZSwgQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgd2luZG93Owog
ICAgIFtSZXBsYWNlYWJsZSwgRG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXIsIEN1c3RvbUdldHRl
cl0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHNlbGY7Ci0gICAgW1VuZm9yZ2VhYmxl
XSByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQgZG9jdW1lbnQ7CisgICAgW0xlZ2FjeVVuZm9y
Z2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQgZG9jdW1lbnQ7CiAgICAgYXR0cmli
dXRlIERPTVN0cmluZyBuYW1lOwotICAgIFtEb05vdENoZWNrU2VjdXJpdHksIFB1dEZvcndhcmRz
PWhyZWYsIFVuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgTG9jYXRpb24gbG9jYXRpb247
CisgICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgUHV0Rm9yd2FyZHM9aHJlZiwgTGVnYWN5VW5mb3Jn
ZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBMb2NhdGlvbiBsb2NhdGlvbjsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgSGlzdG9yeSBoaXN0b3J5OwogICAgIFtFbmFibGVkQnlTZXR0aW5nPUN1c3Rv
bUVsZW1lbnRzLCBJbXBsZW1lbnRlZEFzPWVuc3VyZUN1c3RvbUVsZW1lbnRSZWdpc3RyeV0gcmVh
ZG9ubHkgYXR0cmlidXRlIEN1c3RvbUVsZW1lbnRSZWdpc3RyeSBjdXN0b21FbGVtZW50czsKICAg
ICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBCYXJQcm9wIGxvY2F0aW9uYmFyOwpA
QCAtNzQsMTEgKzc0LDExIEBAIHR5cGVkZWYgVVNWU3RyaW5nIENTU09NU3RyaW5nOwogICAgIC8v
IE90aGVyIGJyb3dzaW5nIGNvbnRleHRzLgogICAgIFtSZXBsYWNlYWJsZSwgRG9Ob3RDaGVja1Nl
Y3VyaXR5T25HZXR0ZXIsIEN1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1By
b3h5IGZyYW1lczsKICAgICBbUmVwbGFjZWFibGUsIERvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVy
XSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7Ci0gICAgW0RvTm90Q2hl
Y2tTZWN1cml0eU9uR2V0dGVyLCBVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRv
d1Byb3h5PyB0b3A7CisgICAgW0RvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyLCBMZWdhY3lVbmZv
cmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5PyB0b3A7CiAgICAgW0RvTm90
Q2hlY2tTZWN1cml0eU9uR2V0dGVyLCBDdXN0b21TZXR0ZXJdIGF0dHJpYnV0ZSBXaW5kb3dQcm94
eT8gb3BlbmVyOwogICAgIFtSZXBsYWNlYWJsZSwgRG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXJd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gcGFyZW50OwogICAgIFtDaGVja1NlY3Vy
aXR5Rm9yTm9kZV0gcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IGZyYW1lRWxlbWVudDsKLSAg
ICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBNYXlUaHJvd0V4Y2VwdGlvbl0g
V2luZG93UHJveHk/IG9wZW4ob3B0aW9uYWwgVVNWU3RyaW5nIHVybCA9ICIiLCBvcHRpb25hbCBE
T01TdHJpbmcgdGFyZ2V0ID0gIl9ibGFuayIsIG9wdGlvbmFsIFtUcmVhdE51bGxBcz1FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIGZlYXR1cmVzID0gIiIpOworICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5k
b3cmRmlyc3RXaW5kb3csIE1heVRocm93RXhjZXB0aW9uXSBXaW5kb3dQcm94eT8gb3BlbihvcHRp
b25hbCBVU1ZTdHJpbmcgdXJsID0gIiIsIG9wdGlvbmFsIERPTVN0cmluZyB0YXJnZXQgPSAiX2Js
YW5rIiwgb3B0aW9uYWwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgZmVhdHVy
ZXMgPSAiIik7CiAKICAgICAvLyBUaGUgdXNlciBhZ2VudC4KICAgICByZWFkb25seSBhdHRyaWJ1
dGUgTmF2aWdhdG9yIG5hdmlnYXRvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFs
Q3J5cHRvLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbENyeXB0
by5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsQ3J5
cHRvLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogKi8KIAogWwotICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZh
Y2UgR2xvYmFsQ3J5cHRvIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ3J5cHRvIGNyeXB0bzsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbFBlcmZvcm1hbmNlLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbFBlcmZvcm1hbmNlLmlkbAkocmV2
aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxQZXJmb3JtYW5jZS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9oci10aW1lLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNl
IEdsb2JhbFBlcmZvcm1hbmNlIHsKICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBQZXJmb3JtYW5jZSBwZXJmb3JtYW5jZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9j
YXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRs
CShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9
UmVhY2hhYmxlRnJvbURPTVdpbmRvdywKICAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09i
amVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIFVuZm9yZ2VhYmxlCisg
ICAgTGVnYWN5VW5mb3JnZWFibGUKIF0gaW50ZXJmYWNlIExvY2F0aW9uIHsKICAgICBbU2V0dGVy
Q2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHlPblNl
dHRlcl0gc3RyaW5naWZpZXIgYXR0cmlidXRlIFVTVlN0cmluZyBocmVmOwogCkBAIC02Miw1ICs2
Miw1IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBvcmlnaW47CiAKICAgICAv
LyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIFNhbWVPYmplY3QuCi0gICAgW1VuZm9yZ2VhYmxlLCBD
YWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IGFuY2VzdG9y
T3JpZ2luczsKKyAgICBbTGVnYWN5VW5mb3JnZWFibGUsIENhY2hlZEF0dHJpYnV0ZV0gcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZ0xpc3QgYW5jZXN0b3JPcmlnaW5zOwogfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9ySUQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9ySUQuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL05hdmlnYXRvcklELmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0CiBdIGludGVyZmFjZSBOYXZpZ2F0b3JJRCB7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBhcHBDb2RlTmFtZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGFwcE5hbWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckxhbmd1YWdl
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckxhbmd1YWdl
LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JM
YW5ndWFnZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAqLwogCiBbCi0g
ICAgTm9JbnRlcmZhY2VPYmplY3QKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdAogXSBpbnRl
cmZhY2UgTmF2aWdhdG9yTGFuZ3VhZ2UgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgbGFuZ3VhZ2U7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEZyb3plbkFycmF5PERPTVN0cmlu
Zz4gbGFuZ3VhZ2VzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JPbkxpbmUu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yT25MaW5lLmlk
bAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JPbkxp
bmUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgKi8KIAogWwotICAgIE5v
SW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJmYWNl
IE5hdmlnYXRvck9uTGluZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gb25MaW5l
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yUGx1Z2lucy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JQbHVnaW5zLmlkbAkocmV2
aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JQbHVnaW5zLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVy
ZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0CiBdIGludGVyZmFjZSBOYXZp
Z2F0b3JQbHVnaW5zIHsKICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVBs
dWdpbkFycmF5IHBsdWdpbnM7CiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01NaW1lVHlwZUFycmF5IG1pbWVUeXBlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2
aWdhdG9yU2VydmljZVdvcmtlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9OYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1TRVJWSUNFX1dPUktFUiwK
ICAgICBFbmFibGVkQXRSdW50aW1lPVNlcnZpY2VXb3JrZXIKIF0gaW50ZXJmYWNlIE5hdmlnYXRv
clNlcnZpY2VXb3JrZXIgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JTaGFy
ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JTaGFyZS5p
ZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yU2hh
cmUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIAogWwotICAgIE5vSW50
ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEVuYWJsZWRC
eVNldHRpbmc9V2ViU2hhcmUKIF0gaW50ZXJmYWNlIE5hdmlnYXRvclNoYXJlIHsKICAgICBbQ2Fs
bFdpdGg9RG9jdW1lbnQsIFNlY3VyZUNvbnRleHRdIGJvb2xlYW4gY2FuU2hhcmUob3B0aW9uYWwg
U2hhcmVEYXRhIHNoYXJlRGF0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURP
TVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01X
aW5kb3cuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90
ZURPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQwLDIwICs0MCwyMCBAQAogICAgIEpT
Q3VzdG9tVG9OYXRpdmVPYmplY3QsCiAgICAgSlNMZWdhY3lQYXJlbnQ9SlNSZW1vdGVET01XaW5k
b3dCYXNlLAogICAgIExlZ2FjeVVuZW51bWVyYWJsZU5hbWVkUHJvcGVydGllcywKLSAgICBOb0lu
dGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBHbG9iYWw9
V2luZG93LAogICAgIEV4cG9zZWQ9V2luZG93LAogXSBpbnRlcmZhY2UgUmVtb3RlRE9NV2luZG93
IHsKLSAgICBbVW5mb3JnZWFibGUsIEltcGxlbWVudGVkQXM9c2VsZl0gcmVhZG9ubHkgYXR0cmli
dXRlIFdpbmRvd1Byb3h5IHdpbmRvdzsKKyAgICBbTGVnYWN5VW5mb3JnZWFibGUsIEltcGxlbWVu
dGVkQXM9c2VsZl0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHdpbmRvdzsKICAgICBb
UmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSBzZWxmOwotICAgIFtQ
dXRGb3J3YXJkcz1ocmVmLCBVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIExvY2F0aW9u
PyBsb2NhdGlvbjsgLy8gRklYTUU6IFNob3VsZCBub3QgYmUgbnVsbGFibGUuCisgICAgW1B1dEZv
cndhcmRzPWhyZWYsIExlZ2FjeVVuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgTG9jYXRp
b24/IGxvY2F0aW9uOyAvLyBGSVhNRTogU2hvdWxkIG5vdCBiZSBudWxsYWJsZS4KICAgICBbQ2Fs
bFdpdGg9SW5jdW1iZW50RG9jdW1lbnQsIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5l
ZCBjbG9zZSgpOwogICAgIFtGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSByZWFkb25seSBhdHRyaWJ1
dGUgYm9vbGVhbiBjbG9zZWQ7CiAgICAgW0NhbGxXaXRoPUluY3VtYmVudFdpbmRvdywgRm9yd2Fy
ZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGZvY3VzKCk7CiAgICAgW0ZvcndhcmREZWNsYXJl
SW5IZWFkZXJdIHVuZGVmaW5lZCBibHVyKCk7CiAgICAgW1JlcGxhY2VhYmxlLCBJbXBsZW1lbnRl
ZEFzPXNlbGZdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSBmcmFtZXM7CiAgICAgW1Jl
cGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7Ci0gICAg
W1VuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHk/IHRvcDsKKyAgICBb
TGVnYWN5VW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gdG9wOwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gb3BlbmVyOwogICAgIFtSZXBsYWNl
YWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5PyBwYXJlbnQ7CiAgICAgW0NhbGxX
aXRoPUdsb2JhbE9iamVjdCZJbmN1bWJlbnRXaW5kb3csIEZvcndhcmREZWNsYXJlSW5IZWFkZXJd
IHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgVVNWU3RyaW5nIHRhcmdldE9yaWdp
biwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2luZG93RXZlbnRIYW5kbGVycy5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dFdmVudEhhbmRsZXJzLmlkbAkocmV2aXNpb24gMjY2NjU5
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dFdmVudEhhbmRsZXJzLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjd2luZG93ZXZlbnRoYW5kbGVycwogWwotICAg
IE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRl
cmZhY2UgV2luZG93RXZlbnRIYW5kbGVycyB7CiAgICAgLy8gQ29tbWVudGVkIG91dCBldmVudCBo
YW5kbGVycyBhcmUgZGVmaW5lZCBieSB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiBidXQKICAgICAv
LyBhcmUgbm90IHlldCBpbXBsZW1lbnRlZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2lu
ZG93T3JXb3JrZXJHbG9iYWxTY29wZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9XaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCB0eXBlZGVmIChIVE1MSW1hZ2VFbGVtZW50CiB0eXBl
ZGVmIChDYW52YXNJbWFnZVNvdXJjZSBvciBCbG9iIG9yIEltYWdlRGF0YSkgSW1hZ2VCaXRtYXBT
b3VyY2U7CiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKIF0gaW50ZXJmYWNlIFdpbmRvd09yV29ya2VyR2xvYmFsU2NvcGUgewogICAgIFtS
ZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBvcmlnaW47CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjUsNyArMjUsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwK
KyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1h
dGVkTGVuZ3RoIHg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmlkbAkocmV2aXNpb24gMjY2
NjU5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3Qs
CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBTVkdGaXRUb1ZpZXdC
b3ggewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFJlY3Qgdmlld0JveDsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHByZXNl
cnZlQXNwZWN0UmF0aW87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5pZGwJKHJldmlzaW9uIDI2
NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDcgKzI1LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAg
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgU3VwcHJlc3NUb0pTT2JqZWN0LAogXSBpbnRl
cmZhY2UgU1ZHVGVzdHMgewogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgU1ZH
U3RyaW5nTGlzdCByZXF1aXJlZEZlYXR1cmVzOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1VSSVJlZmVyZW5jZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VS
SVJlZmVyZW5jZS5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVUklSZWZlcmVuY2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAgKi8K
IAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
LAogICAgIFN1cHByZXNzVG9KU09iamVjdCwKIF0gaW50ZXJmYWNlIFNWR1VSSVJlZmVyZW5jZSB7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGhyZWY7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcg
KzI1LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBTVkdab29tQW5kUGFuIHsKICAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCBTVkdfWk9PTUFORFBBTl9VTktOT1dOID0gMDsKICAgICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBTVkdfWk9PTUFORFBBTl9ESVNBQkxFID0gMTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdab29tRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdab29tRXZlbnQuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHWm9vbUV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCiAgKi8KIAotaW50ZXJmYWNlIFNWR1pvb21FdmVudCA6IFVJRXZlbnQgeyAK
K2ludGVyZmFjZSBTVkdab29tRXZlbnQgOiBVSUV2ZW50IHsKICAgICBbTmV3T2JqZWN0XSByZWFk
b25seSBhdHRyaWJ1dGUgU1ZHUmVjdCB6b29tUmVjdFNjcmVlbjsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IHByZXZpb3VzU2NhbGU7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIFNWR1BvaW50IHByZXZpb3VzVHJhbnNsYXRlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
dGVzdGluZy9HQ09ic2VydmF0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICsz
MCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiAgICAgRXhwb3J0
TWFjcm89V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQsCiBdIGludGVyZmFjZSBHQ09ic2VydmF0
aW9uIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlk
bAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCBlbnVtIEZyYW1lRmxh
dHRlbmluZ1ZhbHVlIHsgIkRpc2FibGVkIiwgCiBlbnVtIEZvbnRMb2FkVGltaW5nT3ZlcnJpZGUg
eyAiQmxvY2siLCAiU3dhcCIsICJGYWlsdXJlIiB9OwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmpl
Y3QsCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQsCiBdIGludGVy
ZmFjZSBJbnRlcm5hbFNldHRpbmdzIDogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZCB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0
Niw3ICsyNDYsNyBAQCBlbnVtIENvbnRlbnRTaXplQ2F0ZWdvcnkgewogCiBbCiAgICAgRXhwb3J0
TWFjcm89V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQsCi0gICAgTm9JbnRlcmZhY2VPYmplY3Qs
CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBJbnRlcm5hbHMgewog
ICAgIERPTVN0cmluZyBhZGRyZXNzKE5vZGUgbm9kZSk7CiAgICAgYm9vbGVhbiBub2RlTmVlZHNT
dHlsZVJlY2FsYyhOb2RlIG5vZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHNNYXBMaWtlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFsc01hcExpa2UuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFsc01hcExpa2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3
IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAog
ICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAogXSBpbnRlcmZhY2UgSW50ZXJuYWxzTWFwTGlrZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHNTZXRMaWtlLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsc1NldExpa2UuaWRsCShyZXZp
c2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsc1NldExpa2Uu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50
ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9ydE1h
Y3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9u
LAogXSBpbnRlcmZhY2UgSW50ZXJuYWxzU2V0TGlrZQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVz
dGluZy9NYWxsb2NTdGF0aXN0aWNzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01hbGxvY1N0YXRpc3RpY3MuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01hbGxvY1N0YXRpc3RpY3MuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiAgICAg
RXhwb3J0TWFjcm89V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQsCiBdIGludGVyZmFjZSBNYWxs
b2NTdGF0aXN0aWNzIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTWVtb3J5SW5mby5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9NZW1vcnlJbmZvLmlkbAko
cmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9NZW1vcnlJbmZvLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVy
ZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBJbXBsZW1lbnRh
dGlvbkxhY2tzVlRhYmxlLAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQ
T1JULAogXSBpbnRlcmZhY2UgTWVtb3J5SW5mbyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1
LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQSwKLSAgICBOb0ludGVy
ZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvcnRNYWNy
bz1XRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCwKIF0gaW50ZXJmYWNlIE1vY2tDRE1GYWN0b3J5
IHsKICAgICBhdHRyaWJ1dGUgc2VxdWVuY2U8RE9NU3RyaW5nPiBzdXBwb3J0ZWREYXRhVHlwZXM7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcg
KzM5LDcgQEAgZW51bSBEZWNpc2lvbiB7CiAKIFsKICAgICBDb25kaXRpb25hbD1DT05URU5UX0ZJ
TFRFUklORywKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9i
amVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCiBdIGludGVyZmFjZSBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzIHsKICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBlbmFibGVkOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXkuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmlkbAkocmV2aXNpb24g
MjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXkuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNl
T2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEltcGxlbWVudGF0aW9u
TGFja3NWVGFibGUKIF0gaW50ZXJmYWNlIE1vY2tQYWdlT3ZlcmxheSB7CiAgICAgdW5kZWZpbmVk
IHNldEZyYW1lKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHdpZHRoLCBkb3VibGUgaGVpZ2h0
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3Jk
aW5hdG9yLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrUGF5bWVudENvb3JkaW5hdG9yLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBA
QAogCiBbCiAgICAgQ29uZGl0aW9uYWw9QVBQTEVfUEFZLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0
LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgTW9ja1BheW1lbnRD
b29yZGluYXRvciB7CiAgICAgdW5kZWZpbmVkIHNldENhbk1ha2VQYXltZW50cyhib29sZWFuIGNh
bk1ha2VQYXltZW50cyk7CiAgICAgdW5kZWZpbmVkIHNldENhbk1ha2VQYXltZW50c1dpdGhBY3Rp
dmVDYXJkKGJvb2xlYW4gY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCShy
ZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJ
bnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29uZGl0
aW9uYWw9U0VSVklDRV9XT1JLRVIsCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9URVNUU1VQUE9S
VF9FWFBPUlQsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBOb0ludGVyZmFj
ZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFNlcnZp
Y2VXb3JrZXJJbnRlcm5hbHMgewogICAgIHVuZGVmaW5lZCBzZXRPbmxpbmUoYm9vbGVhbiBpc09u
bGluZSk7CiAgICAgUHJvbWlzZTxSZXNwb25zZT4gd2FpdEZvckZldGNoRXZlbnRUb0ZpbmlzaChG
ZXRjaEV2ZW50IGV2ZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvVHlwZUNvbnZl
cnNpb25zLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1R5cGVDb252
ZXJzaW9ucy5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
VHlwZUNvbnZlcnNpb25zLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICov
CiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVj
dCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEV4cG9ydE1hY3JvPVdFQkNP
UkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRlcmZhY2UgVHlwZUNvbnZlcnNpb25zIHsKQEAg
LTY0LDcgKzY0LDcgQEAKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRlc3RTdHJpbmc7CiAgICAg
YXR0cmlidXRlIEJ5dGVTdHJpbmcgdGVzdEJ5dGVTdHJpbmc7CiAgICAgYXR0cmlidXRlIFVTVlN0
cmluZyB0ZXN0VVNWU3RyaW5nOwotICAgIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJp
bmddIERPTVN0cmluZyB0ZXN0VHJlYXROdWxsQXNFbXB0eVN0cmluZzsKKyAgICBhdHRyaWJ1dGUg
W0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgdGVzdFRyZWF0TnVsbEFzRW1wdHlT
dHJpbmc7CiAKICAgICB1bmRlZmluZWQgc2V0VGVzdExvbmdSZWNvcmQocmVjb3JkPERPTVN0cmlu
ZywgbG9uZz4gcmVjb3JkKTsKICAgICByZWNvcmQ8RE9NU3RyaW5nLCBsb25nPiB0ZXN0TG9uZ1Jl
Y29yZCgpOwpAQCAtODEsNyArODEsNyBAQAogCiAgICAgYXR0cmlidXRlIChET01TdHJpbmcgb3Ig
W0NsYW1wXSBsb25nIG9yIHNlcXVlbmNlPFtDbGFtcF0gbG9uZz4pIHRlc3RDbGFtcFVuaW9uOwog
ICAgIGF0dHJpYnV0ZSAoRE9NU3RyaW5nIG9yIFtFbmZvcmNlUmFuZ2VdIGxvbmcgb3Igc2VxdWVu
Y2U8W0VuZm9yY2VSYW5nZV0gbG9uZz4pIHRlc3RFbmZvcmNlUmFuZ2VVbmlvbjsKLSAgICBhdHRy
aWJ1dGUgKFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG9yIGxvbmcgb3Igc2Vx
dWVuY2U8W1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmc+KSB0ZXN0VHJlYXROdWxs
QXNFbXB0eVN0cmluZ1VuaW9uOworICAgIGF0dHJpYnV0ZSAoW0xlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nXSBET01TdHJpbmcgb3IgbG9uZyBvciBzZXF1ZW5jZTxbTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmddIERPTVN0cmluZz4pIHRlc3RUcmVhdE51bGxBc0VtcHR5U3RyaW5nVW5pb247CiB9OwogCiBb
CkBAIC05Niw3ICs5Niw3IEBACiBdIGRpY3Rpb25hcnkgVHlwZUNvbnZlcnNpb25zRGljdGlvbmFy
eSB7CiAgICAgbG9uZyBsb25nVmFsdWUgPSAwOwogICAgIERPTVN0cmluZyBzdHJpbmdWYWx1ZSA9
ICIiOwotICAgIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHRyZWF0TnVsbEFz
RW1wdHlTdHJpbmdWYWx1ZSA9ICIiOworICAgIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9N
U3RyaW5nIHRyZWF0TnVsbEFzRW1wdHlTdHJpbmdWYWx1ZSA9ICIiOwogICAgIHNlcXVlbmNlPERP
TVN0cmluZz4gc2VxdWVuY2VWYWx1ZSA9IFtdOwogICAgIChOb2RlIG9yIHNlcXVlbmNlPERPTVN0
cmluZz4gb3IgVHlwZUNvbnZlcnNpb25zT3RoZXJEaWN0aW9uYXJ5KSB1bmlvblZhbHVlID0gbnVs
bDsKICAgICBbQ2xhbXBdIGxvbmcgY2xhbXBMb25nVmFsdWUgPSAwOwpJbmRleDogU291cmNlL1dl
YkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysg
U291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw3ICsyOCw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCWFIsCiAgICAgSW50ZXJmYWNl
TmFtZT1GYWtlWFJEZXZpY2UsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBO
b0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJm
YWNlIFdlYkZha2VYUkRldmljZSB7CiAgIC8vIFNldHMgdGhlIHZhbHVlcyB0byBiZSB1c2VkIGZv
ciBzdWJzZXF1ZW50CiAgIC8vIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGNhbGxiYWNrcy4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJv
bGxlci5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2Vi
RmFrZVhSSW5wdXRDb250cm9sbGVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBA
QAogICAgIENvbmRpdGlvbmFsPVdFQlhSLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUs
CiAgICAgSW50ZXJmYWNlTmFtZT1GYWtlWFJJbnB1dENvbnRyb2xsZXIsCi0gICAgTm9JbnRlcmZh
Y2VPYmplY3QKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdAogXSBpbnRlcmZhY2UgV2ViRmFr
ZVhSSW5wdXRDb250cm9sbGVyIHsKICAgICAvLyBJbmRpY2F0ZXMgdGhhdCB0aGUgaGFuZGVkbmVz
cyBvZiB0aGUgZGV2aWNlIGhhcyBjaGFuZ2VkLgogICAgIHVuZGVmaW5lZCBzZXRIYW5kZWRuZXNz
KFhSSGFuZGVkbmVzcyBoYW5kZWRuZXNzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
V2ViWFJUZXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhS
VGVzdC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2Vi
WFJUZXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogICAgIENvbmRpdGlv
bmFsPVdFQlhSLAogICAgIEV4cG9zZWQ9V2luZG93LAogICAgIEludGVyZmFjZU5hbWU9WFJUZXN0
LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0g
aW50ZXJmYWNlIFdlYlhSVGVzdCB7CiAgICAgLy8gU2ltdWxhdGVzIGNvbm5lY3RpbmcgYSBkZXZp
Y2UgdG8gdGhlIHN5c3RlbS4KICAgICAvLyBVc2VkIHRvIGluc3RhbnRpYXRlIGEgZmFrZSBkZXZp
Y2UgZm9yIHVzZSBpbiB0ZXN0cy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJh
Y3RXb3JrZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJh
Y3RXb3JrZXIuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L0Fic3RyYWN0V29ya2VyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogICov
CiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVj
dCwKIF0gaW50ZXJmYWNlIEFic3RyYWN0V29ya2VyIHsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5k
bGVyIG9uZXJyb3I7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTlNSZXNvbHZl
ci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTlNSZXNvbHZlci5p
ZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5TUmVzb2x2
ZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw3IEBACiAgKi8KIAogWwotICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIFNraXBW
VGFibGVWYWxpZGF0aW9uLAogXSBpbnRlcmZhY2UgWFBhdGhOU1Jlc29sdmVyIHsKICAgICBET01T
dHJpbmc/IGxvb2t1cE5hbWVzcGFjZVVSSShET01TdHJpbmc/IHByZWZpeCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wOS0wNCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW1dlYklETF0gUmVhbGlnbiBvdXIgSURMIGV4dGVuZGVkIGF0
dHJpYnV0ZSBuYW1lcyB3aXRoIHRob3NlIHNwZWNpZmllZCBpbiBXZWJJREwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjE5NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6ZGlzYWJsZU92ZXJyaWRlQnVpbHRpbnNCZWhhdmlv
cik6CisgICAgICAgIFVwZGF0ZSBmb3IgbmV3IG5hbWUgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxk
LgorCiAyMDIwLTA5LTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgTW92ZSBQREYgaGVhZHMtdXAgZGlzcGxheSB0byBVSSBwcm9jZXNzIG9u
IG1hY09TCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuY3BwCShy
ZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3
ICsxMjIsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om1ha2VBbGxTCiAKIHZv
aWQgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6ZGlzYWJsZU92ZXJyaWRlQnVpbHRpbnNCZWhh
dmlvcigpCiB7Ci0gICAgbV93b3JsZC0+ZGlzYWJsZU92ZXJyaWRlQnVpbHRpbnNCZWhhdmlvcigp
OworICAgIG1fd29ybGQtPmRpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZpb3IoKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408087</attachid>
            <date>2020-09-05 08:53:44 -0700</date>
            <delta_ts>2020-09-05 10:14:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216194-20200905085343.patch</filename>
            <type>text/plain</type>
            <size>476047</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2MiBAQAorMjAyMC0wOS0wNCAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYklETF0gUmVhbGlnbiBvdXIg
SURMIGV4dGVuZGVkIGF0dHJpYnV0ZSBuYW1lcyB3aXRoIHRob3NlIHNwZWNpZmllZCBpbiBXZWJJ
REwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjE5
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE92ZXIg
dGltZSwgdGhlIFdlYklETCBhbmQgSFRNTCBzcGVjaWZpY2F0aW9ucyBoYXZlIGFkZGVkIC8gcmVu
YW1lZCBleHRlbmRlZCBhdHRyaWJ1dGVzIGFuZCB3ZSBoYXZlCisgICAgICAgIG5vdCBzdGF5ZWQg
dXAgdG8gZGF0ZS4gVGhpcyB1cGRhdGVzIHRoZSBuYW1lcyBldmVyeXdoZXJlIGFuZCBVUkxzIGlu
IElETEF0dHJpYnV0ZXMuanNvbi4KKyAgICAKKyAgICAgICAgICAgICBbQWxsb3dTaGFyZWRdIC0+
IG5ldywgbWFya2VkIGFzIHVuc3VwcG9ydGVkCisgICAgICAgICAgICAgW0hUTUxDb25zdHJ1Y3Rv
cl0gLSA+IG5ldywgbWFya2VkIGFzIHVuc3VwcG9ydGVkCisgICAgICAgICAgICAgW0xlZ2FjeUxl
bmllbnRTZXR0ZXJdIC0+IHJlbmFtZWQgZnJvbSBbTGVuaWVudFNldHRlcl0sIHN0aWxsIHVuc3Vw
cG9ydGVkCisgICAgICAgICAgICAgW0xlZ2FjeUxlbmllbnRUaGlzXSAtPiByZW5hbWVkIGZyb20g
W0xlbmllbnRUaGlzXQorICAgICAgICAgICAgIFtMZWdhY3lOYW1lc3BhY2VdIC0+IG5ldywgbWFy
a2VkIGFzIHVuc3VwcG9ydGVkCisgICAgICAgICAgICAgW0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
XSAtPiByZW5hbWVkIGZyb20gW05vSW50ZXJmYWNlT2JqZWN0XQorICAgICAgICAgICAgIFtMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ10gLT4gcmVuYW1lZCBmcm9tIFtUcmVhdE51bGxBcz1FbXB0eVN0
cmluZ10KKyAgICAgICAgICAgICBbTGVnYWN5T3ZlcnJpZGVCdWlsdEluc10gLT4gcmVuYW1lZCBm
cm9tIE92ZXJyaWRlQnVpbHRpbnMKKyAgICAgICAgICAgICBbTGVnYWN5VHJlYXROb25PYmplY3RB
c051bGxdIC0+IHJlbmFtZWQgZnJvbSBbVHJlYXROb25PYmplY3RBc051bGxdLCBzdGlsbCB1bnN1
cHBvcnRlZAorICAgICAgICAgICAgIFtMZWdhY3lVbmZvcmdlYWJsZV0gLT4gcmVuYW1lZCBmcm9t
IFtVbmZvcmdlYWJsZV0KKyAgICAgICAgICAgICBbU2VyaWFsaXphYmxlXSAtPiBuZXcsIG1hcmtl
ZCBhcyB1bnN1cHBvcnRlZAorICAgICAgICAgICAgIFtUcmFuc2ZlcmFibGVdIC0+IG5ldywgbWFy
a2VkIGFzIHVuc3VwcG9ydGVkCisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
Q2FuY2VsRXZlbnQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXlt
ZW50QXV0aG9yaXplZEV2ZW50LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50Lmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2
ZW50LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5pZGw6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvUGxheWJhY2tRdWFsaXR5LmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaWRsOgorICAgICAgICAq
IE1vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm8uaWRsOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEv
U3RvcmFnZVF1b3RhLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVz
aXMuaWRsOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvTGlzdGVuZXIuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGw6CisgICAg
ICAgICogU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVk
LmlkbC5lcmI6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Um9sZS5pZGw6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BcmlhQXR0cmlidXRlcy5pZGw6CisgICAgICAgICog
YW5pbWF0aW9uL0FuaW1hdGFibGUuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL0lETFR5cGVzLmg6
CisgICAgICAgICogYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmg6CisgICAgICAgIChXZWJD
b3JlOjpET01XcmFwcGVyV29ybGQ6OmRpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZp
b3IpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpzaG91bGREaXNhYmxlTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0JlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVdyYXBwZXJXb3JsZDo6ZGlzYWJsZU92ZXJyaWRlQnVpbHRpbnNCZWhhdmlvcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OnNob3VsZERpc2FibGVPdmVycmlk
ZUJ1aWx0aW5zQmVoYXZpb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjppc1Zpc2libGVO
YW1lZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnROdWxsYWJsZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnZlcnRlcjxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxUPj46OmNvbnZlcnQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDb252ZXJ0ZXI8SURMVHJlYXROdWxsQXNFbXB0
eUFkYXB0b3I8VD4+Ojpjb252ZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAg
ICAgIChHZW5lcmF0ZVB1dCk6CisgICAgICAgIChHZW5lcmF0ZVB1dEJ5SW5kZXgpOgorICAgICAg
ICAoR2VuZXJhdGVJc0xlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKToKKyAgICAgICAgKEdl
bmVyYXRlRGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoR2VuZXJhdGVEZWxldGVQcm9wZXJ0
eUNvbW1vbik6CisgICAgICAgIChBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UpOgorICAgICAg
ICAoT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKToKKyAgICAgICAgKElzQWNjZWxlcmF0ZWRE
T01BdHRyaWJ1dGUpOgorICAgICAgICAoR2V0SlNDQXR0cmlidXRlc0ZvckF0dHJpYnV0ZSk6Cisg
ICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9u
KToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyVHJhbXBvbGluZURlZmluaXRpb24p
OgorICAgICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJUcmFtcG9saW5lRGVmaW5pdGlvbik6
CisgICAgICAgIChJc0Fubm90YXRlZFR5cGUpOgorICAgICAgICAoR2V0QW5ub3RhdGVkSURMVHlw
ZSk6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcyk6CisgICAgICAg
IChOZWVkc0NvbnN0cnVjdG9yUHJvcGVydHkpOgorICAgICAgICAoSXNMZWdhY3lVbmZvcmdlYWJs
ZSk6CisgICAgICAgIChDb21wdXRlRnVuY3Rpb25TcGVjaWFsKToKKyAgICAgICAgKEdlbmVyYXRl
SXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChJc1VuZm9yZ2Vh
YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
anNvbjoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3Rv
cnMuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRh
cmdldC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zLmNwcDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmg6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVu
Y2llcy5kZXA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbmNsdWRlcy5p
ZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmlkbDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmlkbDogQWRkZWQuCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPcGVyYXRpb25C
YXNlLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE92ZXJyaWRlQnVp
bHRpbnMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGNzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlk
bDoKKyAgICAgICAgKiBjc3MvQ1NTVW5rbm93blJ1bGUuaWRsOgorICAgICAgICAqIGNzcy9FbGVt
ZW50Q1NTSW5saW5lU3R5bGUuaWRsOgorICAgICAgICAqIGNzcy9NZWRpYUxpc3QuaWRsOgorICAg
ICAgICAqIGNzcy9TdHlsZU1lZGlhLmlkbDoKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5p
ZGw6CisgICAgICAgICogZG9tL0NoaWxkTm9kZS5pZGw6CisgICAgICAgICogZG9tL0RPTUltcGxl
bWVudGF0aW9uLmlkbDoKKyAgICAgICAgKiBkb20vRE9NU3RyaW5nTWFwLmlkbDoKKyAgICAgICAg
KiBkb20vRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEFuZEVsZW1lbnRFdmVudEhhbmRs
ZXJzLmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsOgorICAgICAg
ICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRXZlbnQuaWRsOgorICAgICAgICAq
IGRvbS9FdmVudExpc3RlbmVyLmlkbDoKKyAgICAgICAgKiBkb20vR2xvYmFsRXZlbnRIYW5kbGVy
cy5pZGw6CisgICAgICAgICogZG9tL05hdmlnYXRvck1heFRvdWNoUG9pbnRzLmlkbDoKKyAgICAg
ICAgKiBkb20vTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlLmlkbDoKKyAgICAgICAgKiBkb20vTm9u
RWxlbWVudFBhcmVudE5vZGUuaWRsOgorICAgICAgICAqIGRvbS9QYXJlbnROb2RlLmlkbDoKKyAg
ICAgICAgKiBkb20vU2hhZG93Um9vdC5pZGw6CisgICAgICAgICogZG9tL1Nsb3RhYmxlLmlkbDoK
KyAgICAgICAgKiBodG1sL0hUTUxCb2R5RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1M
RG9jdW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaWRsOgorICAgICAgICAq
IGh0bWwvSFRNTEZvbnRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVu
dC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbDoKKyAgICAgICAgKiBo
dG1sL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTElG
cmFtZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5pZGw6Cisg
ICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxP
YmplY3RFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxPckZvcmVpZ25FbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1s
L0hUTUxUYWJsZUNlbGxFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1l
bnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5pZGw6CisgICAgICAg
ICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9B
TkdMRUluc3RhbmNlZEFycmF5cy5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzQ29t
cG9zaXRpbmcuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0RyYXdJbWFnZS5pZGw6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzRHJhd1BhdGguaWRsOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc0ZpbGxTdHJva2VTdHlsZXMuaWRsOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc0ZpbHRlcnMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0ltYWdl
RGF0YS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VTbW9vdGhpbmcuaWRs
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdGguaWRsOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1BhdGhEcmF3aW5nU3R5bGVzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZWN0LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNTaGFkb3dTdHls
ZXMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1N0YXRlLmlkbDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNUZXh0LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNUZXh0RHJhd2luZ1N0eWxlcy5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzVHJh
bnNmb3JtLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNVc2VySW50ZXJmYWNlLmlk
bDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5pZGw6CisgICAgICAgICog
aHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5pZGw6CisgICAgICAgICogaHRtbC9jYW52
YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VY
VEZyYWdEZXB0aC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxP
RC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRzUkdCLmlkbDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9P
RVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVh
ci5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5pZGw6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5pZGw6CisgICAg
ICAgICogaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaWRsOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5pZGw6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMxLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlUFZSVEMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQ3NSR0IuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVi
dWdSZW5kZXJlckluZm8uaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFk
ZXJzLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5pZGw6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5pZGw6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tD
dWVHZW5lcmljLmlkbDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVFJlZ2lvbkxpc3QuaWRsOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaWRsOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsOgorICAgICAgICAqIHBhZ2UvRE9NV2lu
ZG93LmlkbDoKKyAgICAgICAgKiBwYWdlL0dsb2JhbENyeXB0by5pZGw6CisgICAgICAgICogcGFn
ZS9HbG9iYWxQZXJmb3JtYW5jZS5pZGw6CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5pZGw6Cisg
ICAgICAgICogcGFnZS9OYXZpZ2F0b3JJRC5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JM
YW5ndWFnZS5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JPbkxpbmUuaWRsOgorICAgICAg
ICAqIHBhZ2UvTmF2aWdhdG9yUGx1Z2lucy5pZGw6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JT
ZXJ2aWNlV29ya2VyLmlkbDoKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvclNoYXJlLmlkbDoKKyAg
ICAgICAgKiBwYWdlL1JlbW90ZURPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGFnZS9XaW5kb3dF
dmVudEhhbmRsZXJzLmlkbDoKKyAgICAgICAgKiBwYWdlL1dpbmRvd09yV29ya2VyR2xvYmFsU2Nv
cGUuaWRsOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaWRsOgorICAgICAgICAqIHN2Zy9TVkdGaXRUb1ZpZXdCb3guaWRsOgorICAgICAgICAqIHN2
Zy9TVkdUZXN0cy5pZGw6CisgICAgICAgICogc3ZnL1NWR1VSSVJlZmVyZW5jZS5pZGw6CisgICAg
ICAgICogc3ZnL1NWR1pvb21BbmRQYW4uaWRsOgorICAgICAgICAqIHRlc3RpbmcvR0NPYnNlcnZh
dGlvbi5pZGw6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHNN
YXBMaWtlLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsc1NldExpa2UuaWRsOgorICAg
ICAgICAqIHRlc3RpbmcvTWFsbG9jU3RhdGlzdGljcy5pZGw6CisgICAgICAgICogdGVzdGluZy9N
ZW1vcnlJbmZvLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmlkbDoKKyAg
ICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaWRsOgorICAgICAgICAq
IHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tQYXlt
ZW50Q29vcmRpbmF0b3IuaWRsOgorICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVy
bmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaWRsOgorICAgICAg
ICAqIHRlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZh
a2VYUklucHV0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogdGVzdGluZy9XZWJYUlRlc3QuaWRs
OgorICAgICAgICAqIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsOgorICAgICAgICAqIHhtbC9Y
UGF0aE5TUmVzb2x2ZXIuaWRsOgorCiAyMDIwLTA5LTA1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgc2VyaWFsaXphdGlvbiBvZiBDU1NQcm9wZXJ0
eUdhcApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUNhbmNl
bEV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5Q2FuY2VsRXZlbnQuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5Q2FuY2VsRXZlbnQuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1BUFBMRV9QQVksCi0g
ICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGlu
dGVyZmFjZSBBcHBsZVBheUNhbmNlbEV2ZW50IDogRXZlbnQgewogICAgIFtDYWNoZWRBdHRyaWJ1
dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBBcHBsZVBheVNlc3Npb25FcnJvciBzZXNzaW9uRXJyb3I7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRBdXRob3JpemVkRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50LmlkbAkocmV2aXNpb24g
MjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRBdXRob3JpemVkRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAK
IFsKICAgICBDb25kaXRpb25hbD1BUFBMRV9QQVksCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisg
ICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBBcHBsZVBheVBheW1lbnRB
dXRob3JpemVkRXZlbnQgOiBFdmVudCB7CiAgICAgW0NhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkg
YXR0cmlidXRlIEFwcGxlUGF5UGF5bWVudCBwYXltZW50OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3Rl
ZEV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBbCiAgICAgQ29u
ZGl0aW9uYWw9QVBQTEVfUEFZLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0
ZWRFdmVudCA6IEV2ZW50IHsKICAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1
dGUgQXBwbGVQYXlQYXltZW50TWV0aG9kIHBheW1lbnRNZXRob2Q7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVk
RXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmlkbAkocmV2aXNpb24gMjY2NjU5
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29u
dGFjdFNlbGVjdGVkRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAK
IFsKICAgICBDb25kaXRpb25hbD1BUFBMRV9QQVksCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisg
ICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBBcHBsZVBheVNoaXBwaW5n
Q29udGFjdFNlbGVjdGVkRXZlbnQgOiBFdmVudCB7CiAgICAgW0NhY2hlZEF0dHJpYnV0ZV0gcmVh
ZG9ubHkgYXR0cmlidXRlIEFwcGxlUGF5UGF5bWVudENvbnRhY3Qgc2hpcHBpbmdDb250YWN0Owog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGlu
Z01ldGhvZFNlbGVjdGVkRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuaWRsCShy
ZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUs
NyArMjUsNyBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9QVBQTEVfUEFZLAotICAgIE5vSW50ZXJm
YWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgQXBw
bGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQgOiBFdmVudCB7CiAgICAgW0NhY2hlZEF0
dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIEFwcGxlUGF5U2hpcHBpbmdNZXRob2Qgc2hpcHBp
bmdNZXRob2Q7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5pZGwJKHJl
dmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3
IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1BUFBMRV9QQVksCi0gICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBBcHBsZVBheVZh
bGlkYXRlTWVyY2hhbnRFdmVudCA6IEV2ZW50IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHZhbGlkYXRpb25VUkw7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3
IEBACiAgICAgRW5hYmxlZEF0UnVudGltZT1GZXRjaEFQSSwKICAgICBFeHBvc2VkPShXaW5kb3cs
V29ya2VyKSwKICAgICBJbnRlcmZhY2VOYW1lPUJvZHksCi0gICAgTm9JbnRlcmZhY2VPYmplY3QK
KyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdAogXSBpbnRlcmZhY2UgRmV0Y2hCb2R5IHsKICAg
ICBbSW1wbGVtZW50ZWRBcz1yZWFkYWJsZVN0cmVhbSwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBy
ZWFkb25seSBhdHRyaWJ1dGUgUmVhZGFibGVTdHJlYW0/IGJvZHk7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGJvb2xlYW4gYm9keVVzZWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5pZGwJKHJldmlz
aW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRp
YUNvbnRyb2xzSG9zdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgZW51bSBE
ZXZpY2VUeXBlIHsKIFsKICAgICBDb25kaXRpb25hbD1NRURJQV9DT05UUk9MU19TQ1JJUFQsCiAg
ICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAg
ICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIE1lZGlhQ29udHJvbHNIb3N0
IHsKICAgICBzZXF1ZW5jZTxUZXh0VHJhY2s+IHNvcnRlZFRyYWNrTGlzdEZvck1lbnUoVGV4dFRy
YWNrTGlzdCB0cmFja0xpc3QpOwogICAgIHNlcXVlbmNlPEF1ZGlvVHJhY2s+IHNvcnRlZFRyYWNr
TGlzdEZvck1lbnUoQXVkaW9UcmFja0xpc3QgdHJhY2tMaXN0KTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvVmlkZW9QbGF5YmFja1F1YWxpdHkuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvVmlkZW9QbGF5YmFja1F1
YWxpdHkuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1ZpZGVvUGxheWJhY2tRdWFsaXR5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUs
NyArMjUsNyBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9VklERU8sCi0gICAgTm9JbnRlcmZhY2VP
YmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgSW1wbGVtZW50YXRpb25M
YWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIFZpZGVvUGxheWJhY2tRdWFsaXR5IHsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjcmVhdGlvblRpbWU7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEz
Myw3ICsxMzMsNyBAQCB0eXBlZGVmIChvYmplY3Qgb3IgRE9NU3RyaW5nKSBBbGdvcml0aG1JCiAg
ICAgLy8gNi4xIFBlZXItdG8tcGVlciBkYXRhIEFQSQogICAgIC8vIEZJWE1FIDE2OTY0NDogbWlz
c2luZyBzY3RwCiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJUQ0RhdGFDaGFubmVsIGNyZWF0
ZURhdGFDaGFubmVsKFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gVVNWU3RyaW5nIGxhYmVsLCBv
cHRpb25hbCBSVENEYXRhQ2hhbm5lbEluaXQgb3B0aW9ucyk7CisgICAgW01heVRocm93RXhjZXB0
aW9uXSBSVENEYXRhQ2hhbm5lbCBjcmVhdGVEYXRhQ2hhbm5lbChbTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmddIFVTVlN0cmluZyBsYWJlbCwgb3B0aW9uYWwgUlRDRGF0YUNoYW5uZWxJbml0IG9wdGlv
bnMpOwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25kYXRhY2hhbm5lbDsKIAogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VP
YmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgSlNHZW5lcmF0ZVRvSlNP
YmplY3QsCiBdIGludGVyZmFjZSBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudCB7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyBtb3ZpZVNpemU7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmlkbAkocmV2aXNpb24gMjY2
NjU5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9TdG9yYWdlSW5mby5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VP
YmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9UVVP
VEEsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIFN0b3JhZ2VJ
bmZvIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvU3RvcmFnZVF1b3RhLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VRdW90
YS5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
U3RvcmFnZVF1b3RhLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAK
IFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
ICAgICBDb25kaXRpb25hbD1RVU9UQSwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAog
XSBpbnRlcmZhY2UgU3RvcmFnZVF1b3RhIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogIAogWwogICAgIENvbmRpdGlvbmFsPVNQRUVDSF9T
WU5USEVTSVMsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QsCiBdIGludGVyZmFjZSBTcGVlY2hTeW50aGVzaXMgIHsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgYm9vbGVhbiBwZW5kaW5nOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHNw
ZWFraW5nOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhl
c2lzVm9pY2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KICAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwK
KyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1TUEVFQ0hfU1lO
VEhFU0lTCiBdIGludGVyZmFjZSBTcGVlY2hTeW50aGVzaXNWb2ljZSB7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyB2b2ljZVVSSTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaWRsCShyZXZpc2lvbiAy
NjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1T
aW5rLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAKIFsKLSAgICBOb0lu
dGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBTa2lwVlRh
YmxlVmFsaWRhdGlvbgogXSBpbnRlcmZhY2UgUmVhZGFibGVTdHJlYW1TaW5rIHsKICAgICB1bmRl
ZmluZWQgZW5xdWV1ZShCdWZmZXJTb3VyY2UgY2h1bmspOwpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaWRsCShy
ZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW1Tb3VyY2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgKi8K
IAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
LAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uCiBdIGludGVyZmFjZSBSZWFkYWJsZVN0cmVhbVNv
dXJjZSB7CiAgICAgW0N1c3RvbV0gUHJvbWlzZTx1bmRlZmluZWQ+IHN0YXJ0KFJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXIgY29udHJvbGxlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0J1ZmZlclNv
dXJjZU5vZGUuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDcgKzI4LDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgRW5hYmxl
ZEJ5U2V0dGluZz1QcmVmaXhlZFdlYkF1ZGlvLAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAot
ICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50
ZXJmYWNlIFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZSA6IEF1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZSB7CiAgICAgYXR0cmlidXRlIEF1ZGlvQnVmZmVyPyBidWZmZXI7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9MaXN0ZW5lci5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xpc3Rl
bmVyLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0xpc3RlbmVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjks
NyBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKICAgICBFbmFibGVkQnlTZXR0aW5n
PVByZWZpeGVkV2ViQXVkaW8sCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBXZWJLaXRBdWRpb0xpc3RlbmVyIHsKICAgICBh
dHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IGRvcHBsZXJGYWN0b3I7ICAvLyBzYW1lIGFzIE9w
ZW5BTCAoZGVmYXVsdCAxLjApCiAgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBzcGVl
ZE9mU291bmQ7ICAgLy8gaW4gbWV0ZXJzIC8gc2Vjb25kIChkZWZhdWx0IDM0My4zKQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXREeW5hbWljc0NvbXByZXNzb3JO
b2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VC
X0FVRElPLAogICAgIEVuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpbywKICAgICBKU0dl
bmVyYXRlVG9KU09iamVjdCwKLSAgICBOb0ludGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0CiBdIGludGVyZmFjZSBXZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlIDog
QXVkaW9Ob2RlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSB0aHJlc2hvbGQ7
IC8vIGluIERlY2liZWxzCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvUGFyYW0ga25lZTsg
Ly8gaW4gRGVjaWJlbHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2Vi
S2l0T3NjaWxsYXRvck5vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2ViS2l0T3NjaWxsYXRvck5vZGUuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9zY2lsbGF0b3JOb2RlLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQl9B
VURJTywKICAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkF1ZGlvJlByZWZpeGVkV2ViQXVkaW8sCiAg
ICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBXZWJLaXRPc2NpbGxhdG9yTm9kZSA6
IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSB7CiAgICAgYXR0cmlidXRlIE9zY2lsbGF0b3JUeXBl
IHR5cGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMv
SW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5pZGwuZXJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRl
ZC5pZGwuZXJiCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1Nl
dHRpbmdzVGVtcGxhdGVzL0ludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsLmVyYgkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVj
dCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JF
X1RFU1RTVVBQT1JUX0VYUE9SVCwKIF0gaW50ZXJmYWNlIEludGVybmFsU2V0dGluZ3NHZW5lcmF0
ZWQgewogPCUtIGZvciBAc2V0dGluZyBpbiBAc2V0dGluZ3MgZG8gLSU+CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSb2xlLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSb2xlLmlkbAkocmV2
aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Um9sZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAgIEVu
YWJsZWRBdFJ1bnRpbWU9QXJpYVJlZmxlY3Rpb24sCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisg
ICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBBY2Nlc3NpYmlsaXR5Um9s
ZSB7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmc/IHJvbGU7CiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BcmlhQXR0cmlidXRlcy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BcmlhQXR0cmlidXRlcy5pZGwJKHJl
dmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQXJpYUF0dHJp
YnV0ZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBFbmFi
bGVkQXRSdW50aW1lPUFyaWFSZWZsZWN0aW9uLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAg
IExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgQXJpYUF0dHJpYnV0ZXMgewog
ICAgIFtSZWZsZWN0PWFyaWFfYXRvbWljXSAgICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZz8g
YXJpYUF0b21pYzsKICAgICBbUmVmbGVjdD1hcmlhX2F1dG9jb21wbGV0ZV0gICAgIGF0dHJpYnV0
ZSBET01TdHJpbmc/IGFyaWFBdXRvQ29tcGxldGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQW5pbWF0YWJsZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0FuaW1hdGFibGUuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vQW5pbWF0YWJsZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAK
IAogWwogICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViQW5pbWF0aW9ucywKLSAgICBOb0ludGVyZmFj
ZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0CiBdIGludGVyZmFjZSBBbmltYXRh
YmxlIHsKICAgICBbTWF5VGhyb3dFeGNlcHRpb24sIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gV2Vi
QW5pbWF0aW9uIGFuaW1hdGUob2JqZWN0PyBrZXlmcmFtZXMsIG9wdGlvbmFsICh1bnJlc3RyaWN0
ZWQgZG91YmxlIG9yIEtleWZyYW1lQW5pbWF0aW9uT3B0aW9ucykgb3B0aW9ucyk7CiAgICAgc2Vx
dWVuY2U8V2ViQW5pbWF0aW9uPiBnZXRBbmltYXRpb25zKG9wdGlvbmFsIEdldEFuaW1hdGlvbnNP
cHRpb25zIG9wdGlvbnMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCShyZXZp
c2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgc3RydWN0IElETERPTVN0cmluZyA6IElETFN0
cmluZzxTdHJpbmc+IAogc3RydWN0IElETEJ5dGVTdHJpbmcgOiBJRExTdHJpbmc8U3RyaW5nPiB7
IH07CiBzdHJ1Y3QgSURMVVNWU3RyaW5nIDogSURMU3RyaW5nPFN0cmluZz4geyB9OwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3IgOiBJRExT
dHJpbmc8U3RyaW5nPiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yIDogSURMU3RyaW5nPFN0cmluZz4gewogICAgIHVzaW5nIElu
bmVyVHlwZSA9IFQ7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01X
cmFwcGVyV29ybGQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9E
T01XcmFwcGVyV29ybGQuaAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDggKzUzLDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hhZG93Um9vdElzQWx3YXlzT3BlbigpIHsgbV9zaGFk
b3dSb290SXNBbHdheXNPcGVuID0gdHJ1ZTsgfQogICAgIGJvb2wgc2hhZG93Um9vdElzQWx3YXlz
T3BlbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93Um9vdElzQWx3YXlzT3BlbjsgfQogCi0gICAg
dm9pZCBkaXNhYmxlT3ZlcnJpZGVCdWlsdGluc0JlaGF2aW9yKCkgeyBtX3Nob3VsZERpc2FibGVP
dmVycmlkZUJ1aWx0aW5zQmVoYXZpb3IgPSB0cnVlOyB9Ci0gICAgYm9vbCBzaG91bGREaXNhYmxl
T3ZlcnJpZGVCdWlsdGluc0JlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGREaXNhYmxl
T3ZlcnJpZGVCdWlsdGluc0JlaGF2aW9yOyB9CisgICAgdm9pZCBkaXNhYmxlTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc0JlaGF2aW9yKCkgeyBtX3Nob3VsZERpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zQmVoYXZpb3IgPSB0cnVlOyB9CisgICAgYm9vbCBzaG91bGREaXNhYmxlTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc0JlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGREaXNhYmxlTGVnYWN5
T3ZlcnJpZGVCdWlsdEluc0JlaGF2aW9yOyB9CiAKICAgICBET01PYmplY3RXcmFwcGVyTWFwJiB3
cmFwcGVycygpIHsgcmV0dXJuIG1fd3JhcHBlcnM7IH0KIApAQCAtNzcsNyArNzcsNyBAQCBwcml2
YXRlOgogICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6SW50ZXJuYWwgfTsKIAogICAgIGJvb2wgbV9z
aGFkb3dSb290SXNBbHdheXNPcGVuIHsgZmFsc2UgfTsKLSAgICBib29sIG1fc2hvdWxkRGlzYWJs
ZU92ZXJyaWRlQnVpbHRpbnNCZWhhdmlvciB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZERp
c2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQmVoYXZpb3IgeyBmYWxzZSB9OwogfTsKIAogRE9N
V3JhcHBlcldvcmxkJiBub3JtYWxXb3JsZChKU0M6OlZNJik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgJKHJldmlz
aW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RP
cGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE0ICszMiwxNCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAvLyBJbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGFic3RyYWN0IG9wZXJhdGlvbnMg
ZGVmaW5lZCBhdAogLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jbGVnYWN5LXBs
YXRmb3JtLW9iamVjdC1hYnN0cmFjdC1vcHMKIAotZW51bSBjbGFzcyBPdmVycmlkZUJ1aWx0aW5z
IHsKK2VudW0gY2xhc3MgTGVnYWN5T3ZlcnJpZGVCdWlsdElucyB7CiAgICAgTm8sCiAgICAgWWVz
CiB9OwogCiAvLyBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgJ25hbWVkIHByb3BlcnR5IHZpc2li
aWxpdHkgYWxnb3JpdGhtJwogLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZu
LW5hbWVkLXByb3BlcnR5LXZpc2liaWxpdHkKLXRlbXBsYXRlPE92ZXJyaWRlQnVpbHRpbnMgb3Zl
cnJpZGVCdWlsdGlucywgY2xhc3MgSlNDbGFzcz4KK3RlbXBsYXRlPExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMgb3ZlcnJpZGVCdWlsdGlucywgY2xhc3MgSlNDbGFzcz4KIHN0YXRpYyBib29sIGlzVmlz
aWJsZU5hbWVkUHJvcGVydHkoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDbGFzcyYgdGhpc09iamVjdCwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
ewogICAgIC8vIEZJWE1FOiBJdCBzZWVtcyB1bmZvcnR1bmF0ZSB0aGF0IGhhdmUgdG8gZG8gdHdv
IGxvb2t1cHMgZm9yIHRoZSBwcm9wZXJ0eSBuYW1lLApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMg
Ym9vbCBpc1Zpc2libGVOYW1lZFByb3BlcnR5KEpTQzo6CiAgICAgaWYgKEpTQzo6SlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICAvLyAz
LiBJZiBPIGltcGxlbWVudHMgYW4gaW50ZXJmYWNlIHRoYXQgaGFzIHRoZSBbT3ZlcnJpZGVCdWls
dGluc10gZXh0ZW5kZWQgYXR0cmlidXRlLCB0aGVuIHJldHVybiB0cnVlLgotICAgIGlmIChvdmVy
cmlkZUJ1aWx0aW5zID09IE92ZXJyaWRlQnVpbHRpbnM6OlllcykKKyAgICAvLyAzLiBJZiBPIGlt
cGxlbWVudHMgYW4gaW50ZXJmYWNlIHRoYXQgaGFzIHRoZSBbTGVnYWN5T3ZlcnJpZGVCdWlsdElu
c10gZXh0ZW5kZWQgYXR0cmlidXRlLCB0aGVuIHJldHVybiB0cnVlLgorICAgIGlmIChvdmVycmlk
ZUJ1aWx0aW5zID09IExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OlllcykKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICAvLyA0LiBJbml0aWFsaXplIHByb3RvdHlwZSB0byBiZSB0aGUgdmFsdWUg
b2YgdGhlIGludGVybmFsIFtbUHJvdG90eXBlXV0gcHJvcGVydHkgb2YgTy4KQEAgLTg1LDcgKzg1
LDcgQEAgc3RhdGljIGJvb2wgaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eShKU0M6OgogLy8gZm9yIHRo
ZSBwcm9wZXJ0eSBuYW1lLCB2aWEgcGFzc2VkIGluIGZ1bmN0b3IuIFRoaXMgYWxsb3dzIHVzIHRv
IGF2b2lkIHR3byBsb29raW5nIHVwIHRoZQogLy8gdGhlIHByb3BlcnR5IG5hbWUgdHdpY2U7IG9u
Y2UgZm9yICduYW1lZCBwcm9wZXJ0eSB2aXNpYmlsaXR5IGFsZ29yaXRobScgY2hlY2ssIGFuZCB0
aGVuCiAvLyBhZ2FpbiB3aGVuIHRoZSB2YWx1ZSBpcyBuZWVkZWQuCi10ZW1wbGF0ZTxPdmVycmlk
ZUJ1aWx0aW5zIG92ZXJyaWRlQnVpbHRpbnMsIGNsYXNzIEpTQ2xhc3MsIGNsYXNzIEZ1bmN0b3I+
Cit0ZW1wbGF0ZTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIG92ZXJyaWRlQnVpbHRpbnMsIGNsYXNz
IEpTQ2xhc3MsIGNsYXNzIEZ1bmN0b3I+CiBzdGF0aWMgYXV0byBhY2Nlc3NWaXNpYmxlTmFtZWRQ
cm9wZXJ0eShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NsYXNz
JiB0aGlzT2JqZWN0LCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEZ1bmN0b3ImJiBp
dGVtQWNjZXNzb3IpIC0+IGRlY2x0eXBlKGl0ZW1BY2Nlc3Nvcih0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpKQogewogICAgIC8vIE5PVEU6IFdoaWxlIGl0IGlzIG5vdCBzcGVjaWZpZWQsIGEgU3lt
Ym9sIGNhbiBuZXZlciBiZSBhICdzdXBwb3J0ZWQgcHJvcGVydHkKQEAgLTEwMyw4ICsxMDMsOCBA
QCBzdGF0aWMgYXV0byBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eShKCiAgICAgaWYgKEpTQzo6
SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgJmxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKLSAgICAvLyAzLiBJZiBPIGltcGxlbWVudHMgYW4gaW50ZXJmYWNlIHRoYXQgaGFzIHRoZSBb
T3ZlcnJpZGVCdWlsdGluc10gZXh0ZW5kZWQgYXR0cmlidXRlLCB0aGVuIHJldHVybiB0cnVlLgot
ICAgIGlmIChvdmVycmlkZUJ1aWx0aW5zID09IE92ZXJyaWRlQnVpbHRpbnM6OlllcyAmJiAhd29y
bGRGb3JET01PYmplY3QodGhpc09iamVjdCkuc2hvdWxkRGlzYWJsZU92ZXJyaWRlQnVpbHRpbnNC
ZWhhdmlvcigpKQorICAgIC8vIDMuIElmIE8gaW1wbGVtZW50cyBhbiBpbnRlcmZhY2UgdGhhdCBo
YXMgdGhlIFtMZWdhY3lPdmVycmlkZUJ1aWx0SW5zXSBleHRlbmRlZCBhdHRyaWJ1dGUsIHRoZW4g
cmV0dXJuIHRydWUuCisgICAgaWYgKG92ZXJyaWRlQnVpbHRpbnMgPT0gTGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6WWVzICYmICF3b3JsZEZvckRPTU9iamVjdCh0aGlzT2JqZWN0KS5zaG91bGREaXNh
YmxlTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0JlaGF2aW9yKCkpCiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAKICAgICAvLyA0LiBJbml0aWFsaXplIHByb3RvdHlwZSB0byBiZSB0aGUgdmFsdWUgb2Yg
dGhlIGludGVybmFsIFtbUHJvdG90eXBlXV0gcHJvcGVydHkgb2YgTy4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydE51bGxhYmxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0TnVsbGFibGUuaAkocmV2aXNp
b24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0TnVs
bGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsOCArNjAsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgQ29udmVydGVyPElECiAgICAgCiAgICAgLy8gMS4gSWYgVHlwZShWKSBpcyBu
b3QgT2JqZWN0LCBhbmQgdGhlIGNvbnZlcnNpb24gdG8gYW4gSURMIHZhbHVlIGlzIGJlaW5nIHBl
cmZvcm1lZAogICAgIC8vIGR1ZSB0byBWIGJlaW5nIGFzc2lnbmVkIHRvIGFuIGF0dHJpYnV0ZSB3
aG9zZSB0eXBlIGlzIGEgbnVsbGFibGUgY2FsbGJhY2sgZnVuY3Rpb24KLSAgICAvLyB0aGF0IGlz
IGFubm90YXRlZCB3aXRoIFtUcmVhdE5vbk9iamVjdEFzTnVsbF0sIHRoZW4gcmV0dXJuIHRoZSBJ
REwgbnVsbGFibGUgdHlwZSBUPwotICAgIC8vIHZhbHVlIG51bGwuCisgICAgLy8gdGhhdCBpcyBh
bm5vdGF0ZWQgd2l0aCBbTGVnYWN5VHJlYXROb25PYmplY3RBc051bGxdLCB0aGVuIHJldHVybiB0
aGUgSURMIG51bGxhYmxlCisgICAgLy8gdHlwZSBUPyB2YWx1ZSBudWxsLgogICAgIC8vCiAgICAg
Ly8gTk9URTogSGFuZGxlZCBlbHNld2hlcmUuCiAgICAgLy8KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmgJKHJldmlzaW9uIDI2NjY1
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEpTQ29u
dmVydGVyPElETFVTVlN0cmkKIC8vIE1BUks6IC0KIC8vIE1BUks6IFN0cmluZyB0eXBlIGFkYXB0
b3JzCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8SURMVHJlYXROdWxs
QXNFbXB0eUFkYXB0b3I8VD4+IDogRGVmYXVsdENvbnZlcnRlcjxJRExUcmVhdE51bGxBc0VtcHR5
QWRhcHRvcjxUPj4gewordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8VD4+IDogRGVmYXVsdENvbnZlcnRlcjxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8VD4+IHsKICAgICBzdGF0aWMgU3RyaW5nIGNv
bnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQpAQCAtMTU3LDcg
KzE1Nyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8SUQKICAgICB9
CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiAgc3RydWN0IEpTQ29udmVydGVyPElETFRyZWF0
TnVsbEFzRW1wdHlBZGFwdG9yPFQ+PiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiAgc3RydWN0IEpT
Q29udmVydGVyPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxUPj4gewogICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc1N0YXRlID0gdHJ1ZTsKICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgbmVlZHNHbG9iYWxPYmplY3QgPSBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9u
IDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC02ODYsNyArNjg2LDcgQEAgc3ViIEdlbmVyYXRlR2V0
T3duUHJvcGVydHlTbG90CiAgICAgICAgIAogICAgICAgICBHZW5lcmF0ZU5hbWVkR2V0dGVyTGFt
YmRhKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJG5hbWVkR2V0dGVyT3BlcmF0aW9uLCAkbmFt
ZWRHZXR0ZXJGdW5jdGlvbk5hbWUsICJHZXR0ZXJJRExUeXBlIik7CiAgICAgICAgIAotICAgICAg
ICBteSAkb3ZlcnJpZGVCdWlsdGluID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRB
dHRyaWJ1dGUoJGludGVyZmFjZSwgIk92ZXJyaWRlQnVpbHRpbnMiKSA/ICJPdmVycmlkZUJ1aWx0
aW5zOjpZZXMiIDogIk92ZXJyaWRlQnVpbHRpbnM6Ok5vIjsKKyAgICAgICAgbXkgJG92ZXJyaWRl
QnVpbHRpbiA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRl
cmZhY2UsICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIikgPyAiTGVnYWN5T3ZlcnJpZGVCdWlsdElu
czo6WWVzIiA6ICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObyI7CiAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5h
bWVkUHJvcGVydHk8JHtvdmVycmlkZUJ1aWx0aW59PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHtcbiIpOwogICAgICAgICAK
ICAgICAgICAgIyBOT1RFOiBHZW5lcmF0ZU5hbWVkR2V0dGVyIGltcGxlbWVudHMgc3RlcHMgMi4x
IC0gMi4xMC4KQEAgLTgwMCw3ICs4MDAsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4CiAgICAgICAgIAogICAgICAgICBHZW5lcmF0ZU5hbWVkR2V0dGVyTGFtYmRhKCRv
dXRwdXRBcnJheSwgJGludGVyZmFjZSwgJG5hbWVkR2V0dGVyT3BlcmF0aW9uLCAkbmFtZWRHZXR0
ZXJGdW5jdGlvbk5hbWUsICJHZXR0ZXJJRExUeXBlIik7CiAgICAgICAgIAotICAgICAgICBteSAk
b3ZlcnJpZGVCdWlsdGluID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1
dGUoJGludGVyZmFjZSwgIk92ZXJyaWRlQnVpbHRpbnMiKSA/ICJPdmVycmlkZUJ1aWx0aW5zOjpZ
ZXMiIDogIk92ZXJyaWRlQnVpbHRpbnM6Ok5vIjsKKyAgICAgICAgbXkgJG92ZXJyaWRlQnVpbHRp
biA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2Us
ICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIikgPyAiTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6WWVz
IiA6ICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObyI7CiAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJv
cGVydHk8JHtvdmVycmlkZUJ1aWx0aW59PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHtcbiIpOwogICAgICAgICAKICAgICAg
ICAgIyBOT1RFOiBHZW5lcmF0ZU5hbWVkR2V0dGVyIGltcGxlbWVudHMgc3RlcHMgMi4xIC0gMi4x
MC4KQEAgLTk2OCw4ICs5NjgsOCBAQCBzdWIgR2VuZXJhdGVQdXQKICAgICAgICAgCiAgICAgICAg
IG15ICRhZGRpdGlvbmFsSW5kZW50ID0gIiI7CiAgICAgICAgIAotICAgICAgICBteSAkb3ZlcnJp
ZGVCdWlsdGlucyA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRp
bnRlcmZhY2UsICJPdmVycmlkZUJ1aWx0aW5zIik7Ci0gICAgICAgIGlmICghJG92ZXJyaWRlQnVp
bHRpbnMpIHsKKyAgICAgICAgbXkgJGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMgPSAkY29kZUdlbmVy
YXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyIpOworICAgICAgICBpZiAoISRsZWdhY3lPdmVycmlkZUJ1aWx0aW5zKSB7CiAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWly
eSwgJmxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkgfTtcbiIpOwogICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdl
dFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTtcbiIpOwog
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBib29sIGZvdW5kID0gcHJv
dG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90
KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKQEAgLTk4NSw3
ICs5ODUsNyBAQCBzdWIgR2VuZXJhdGVQdXQKICAgICAgICAgfQogICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICRhZGRpdGlvbmFsSW5kZW50IC4gIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsK
IAotICAgICAgICBpZiAoISRvdmVycmlkZUJ1aWx0aW5zKSB7CisgICAgICAgIGlmICghJGxlZ2Fj
eU92ZXJyaWRlQnVpbHRpbnMpIHsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgfVxuIik7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xMDE0LDggKzEwMTQsOCBAQCBz
dWIgR2VuZXJhdGVQdXRCeUluZGV4CiAgICAgbXkgJG5hbWVkU2V0dGVyT3BlcmF0aW9uID0gR2V0
TmFtZWRTZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSk7CiAgICAgbXkgJGluZGV4ZWRTZXR0ZXJP
cGVyYXRpb24gPSBHZXRJbmRleGVkU2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpOwogICAgIAot
ICAgIG15ICRvdmVycmlkZUJ1aWx0aW5zID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5k
ZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIk92ZXJyaWRlQnVpbHRpbnMiKTsKLSAgICBteSAkZWxs
aWRlc0NhbGxzVG9CYXNlID0gKCRuYW1lZFNldHRlck9wZXJhdGlvbiAmJiAkb3ZlcnJpZGVCdWls
dGlucykgJiYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1BsdWdpbn0gJiYgISRu
YW1lZFNldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbE5hbWVkU2V0dGVy
T25seUZvclN1cHBvcnRlZFByb3BlcnRpZXN9OworICAgIG15ICRsZWdhY3lPdmVycmlkZUJ1aWx0
aW5zID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFj
ZSwgIkxlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKTsKKyAgICBteSAkZWxsaWRlc0NhbGxzVG9CYXNl
ID0gKCRuYW1lZFNldHRlck9wZXJhdGlvbiAmJiAkbGVnYWN5T3ZlcnJpZGVCdWlsdGlucykgJiYg
ISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1BsdWdpbn0gJiYgISRuYW1lZFNldHRl
ck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbE5hbWVkU2V0dGVyT25seUZvclN1
cHBvcnRlZFByb3BlcnRpZXN9OwogICAgIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wg
JHtjbGFzc05hbWV9OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIiAu
ICghJGVsbGlkZXNDYWxsc1RvQmFzZSA/ICIgc2hvdWxkVGhyb3ciIDogIiIpIC4gIilcbiIpOwog
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwpAQCAtMTA0Nyw3ICsxMDQ3LDcgQEAgc3Vi
IEdlbmVyYXRlUHV0QnlJbmRleAogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7XG4iKTsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgbXkgJGFkZGl0aW9uYWxJbmRlbnQgPSAiIjsKLSAgICAgICAg
aWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgeworICAgICAgICBpZiAoISRsZWdhY3lPdmVycmlkZUJ1
aWx0aW5zKSB7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUHJvcGVydHlT
bG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5LCAmdm0gfTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZt
KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGJvb2wgZm91bmQg
PSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0
eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwpAQCAt
MTA2Myw3ICsxMDYzLDcgQEAgc3ViIEdlbmVyYXRlUHV0QnlJbmRleAogICAgICAgICB9CiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQgLiAiICAgIHJldHVybiB0
cnVlO1xuIik7CiAgICAgICAgIAotICAgICAgICBpZiAoISRvdmVycmlkZUJ1aWx0aW5zKSB7Cisg
ICAgICAgIGlmICghJGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMpIHsKICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICB9XG5cbiIpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTA4NSw3
ICsxMDg1LDcgQEAgc3ViIEdlbmVyYXRlUHV0QnlJbmRleAogICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIn1cblxuIik7CiB9CiAKLXN1YiBHZW5lcmF0ZUlzVW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUK
K3N1YiBHZW5lcmF0ZUlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUKIHsKICAgICBteSAo
JG91dHB1dEFycmF5LCAkaW50ZXJmYWNlKSA9IEBfOwogICAgIApAQCAtMTA5Myw3ICsxMDkzLDcg
QEAgc3ViIEdlbmVyYXRlSXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZQogICAgIGZvcmVhY2ggbXkg
JHByb3BlcnR5IChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9LCBAeyRpbnRlcmZhY2UtPm9wZXJh
dGlvbnN9KSB7CiAgICAgICAgIG5leHQgaWYgJHByb3BlcnR5LT5pc1N0YXRpYzsKICAgICAgICAg
Ci0gICAgICAgIGlmIChJc1VuZm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRwcm9wZXJ0eSkpIHsKKyAg
ICAgICAgaWYgKElzTGVnYWN5VW5mb3JnZWFibGUoJGludGVyZmFjZSwgJHByb3BlcnR5KSkgewog
ICAgICAgICAgICAgcHVzaChAdW5mb3JnZWFibGVQcm9wZXJ0eU5hbWVzLCAkcHJvcGVydHktPm5h
bWUpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTEwMiw3ICsxMTAyLDcgQEAgc3ViIEdlbmVyYXRl
SXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZQogICAgIAogICAgIG15ICRjb25kaXRpb24gPSBqb2lu
KCIgfHwgIiwgbWFwIHsgInByb3BlcnR5TmFtZSA9PSBcIiIgLiAkXyAuICJcIiIgfSBAdW5mb3Jn
ZWFibGVQcm9wZXJ0eU5hbWVzKTsKICAgICAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJzdGF0
aWMgYm9vbCBpc1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJzdGF0aWMgYm9vbCBpc0xlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydHlOYW1lKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpXG4iKTsKICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgcmV0dXJuICR7Y29uZGl0aW9ufTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1c
blxuIik7CkBAIC0xMTY5LDE5ICsxMTY5LDE5IEBAIHN1YiBHZW5lcmF0ZURlZmluZU93blByb3Bl
cnR5CiAgICAgICAgIAogICAgICAgICBteSAkYWRkaXRpb25hbEluZGVudCA9ICIiOwogICAgICAg
ICAKLSAgICAgICAgbXkgJGhhc1VuZm9yZ2FibGVQcm9wZXJ0aWVzID0gR2VuZXJhdGVJc1VuZm9y
Z2VhYmxlUHJvcGVydHlOYW1lKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSk7CisgICAgICAgIG15
ICRoYXNVbmZvcmdhYmxlUHJvcGVydGllcyA9IEdlbmVyYXRlSXNMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnR5TmFtZSgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UpOwogICAgICAgICBpZiAoJGhhc1Vu
Zm9yZ2FibGVQcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgIGlmICghaXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKSB7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFpc0xlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpIHtcbiIpOwogICAgICAgICAg
ICAgJGFkZGl0aW9uYWxJbmRlbnQgLj0gIiAgICAiOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICAjIDEuIExldCBjcmVhdGluZyBiZSB0cnVlIGlmIFAgaXMgbm90IGEgc3VwcG9ydGVkIHBy
b3BlcnR5IG5hbWUsIGFuZCBmYWxzZSBvdGhlcndpc2UuCiAgICAgICAgICMgTk9URTogVGhpcyBz
dGVwIGlzIHN0cmVuZ3RoIHJlZHVjZWQgaW50byB0aGUgb25seSB1c2Ugb2YgJ2NyZWF0aW5nJyBp
biBzdGVwIDIuMi4xCiAgICAgICAgIAotICAgICAgICAjIDIuIElmIE8gaW1wbGVtZW50cyBhbiBp
bnRlcmZhY2Ugd2l0aCB0aGUgW092ZXJyaWRlQnVpbHRpbnNdIGV4dGVuZGVkIGF0dHJpYnV0ZSBv
ciBPCisgICAgICAgICMgMi4gSWYgTyBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSB3aXRoIHRoZSBb
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc10gZXh0ZW5kZWQgYXR0cmlidXRlIG9yIE8KICAgICAgICAg
IyAgICBkb2VzIG5vdCBoYXZlIGFuIG93biBwcm9wZXJ0eSBuYW1lZCBQLCB0aGVuOgotICAgICAg
ICBteSAkb3ZlcnJpZGVCdWlsdGlucyA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVk
QXR0cmlidXRlKCRpbnRlcmZhY2UsICJPdmVycmlkZUJ1aWx0aW5zIik7Ci0gICAgICAgIGlmICgh
JG92ZXJyaWRlQnVpbHRpbnMpIHsKKyAgICAgICAgbXkgJGxlZ2FjeU92ZXJyaWRlQnVpbHRpbnMg
PSAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAi
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpOworICAgICAgICBpZiAoISRsZWdhY3lPdmVycmlkZUJ1
aWx0aW5zKSB7CiAgICAgICAgICAgICAjIEZJWE1FOiBJcyBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90IHRoZSByaWdodCBmdW5jdGlvbiB0byBjYWxsPyBJcyB0aGVyZSBhIGZ1bmN0aW9uIHRo
YXQgd2lsbAogICAgICAgICAgICAgIyAgICAgICAgb25seSBsb29rIGF0IHRoZSBhY3R1YWwgcHJv
cGVydGllcywgYW5kIG5vdCBjYWxsIGludG8gb3VyIGltcGxlbWVudGF0aW9uIG9mIHRoZQogICAg
ICAgICAgICAgIyAgICAgICAgW1tHZXRPd25Qcm9wZXJ0eV1dIGhvb2s/CkBAIC0xMjEyLDcgKzEy
MTIsNyBAQCBzdWIgR2VuZXJhdGVEZWZpbmVPd25Qcm9wZXJ0eQogICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAkYWRkaXRpb25hbEluZGVudCAuICIgICAgICAgIHJldHVybiB0cnVlO1xu
Iik7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICghJG92ZXJyaWRlQnVpbHRpbnMp
IHsKKyAgICAgICAgaWYgKCEkbGVnYWN5T3ZlcnJpZGVCdWlsdGlucykgewogICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAkYWRkaXRpb25hbEluZGVudCAuICIgICAgfVxuIik7CiAgICAg
ICAgIH0KICAgICAgICAgCkBAIC0xMjUyLDcgKzEyNTIsNyBAQCBzdWIgR2VuZXJhdGVEZWxldGVQ
cm9wZXJ0eUNvbW1vbgogICAgIGFzc2VydCgiTmFtZWQgcHJvcGVydHkgZGVsZXRlcnMgYXJlIG5v
dCBhbGxvd2VkIG9uIGdsb2JhbCBvYmplY3QgaW50ZXJmYWNlcy4iKSBpZiBJc0dsb2JhbEludGVy
ZmFjZSgkaW50ZXJmYWNlKTsKIAogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTUFic3RyYWN0
T3BlcmF0aW9ucy5oIiwgJGNvbmRpdGlvbmFsKTsKLSAgICBteSAkb3ZlcnJpZGVCdWlsdGluID0g
JGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIk92
ZXJyaWRlQnVpbHRpbnMiKSA/ICJPdmVycmlkZUJ1aWx0aW5zOjpZZXMiIDogIk92ZXJyaWRlQnVp
bHRpbnM6Ok5vIjsKKyAgICBteSAkb3ZlcnJpZGVCdWlsdGluID0gJGNvZGVHZW5lcmF0b3ItPklu
aGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkxlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMiKSA/ICJMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXMiIDogIkxlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6Ok5vIjsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKGlzVmlzaWJsZU5h
bWVkUHJvcGVydHk8JHtvdmVycmlkZUJ1aWx0aW59PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c09iamVjdCwgcHJvcGVydHlOYW1lKSkge1xuIik7CiAKICAgICBHZW5lcmF0ZUN1c3RvbUVsZW1l
bnRSZWFjdGlvbnNTdGFja0lmTmVlZGVkKCRvdXRwdXRBcnJheSwgJG9wZXJhdGlvbiwgIipsZXhp
Y2FsR2xvYmFsT2JqZWN0Iik7CkBAIC0xNjg2LDkgKzE2ODYsOSBAQCBzdWIgQXR0cmlidXRlU2hv
dWxkQmVPbkluc3RhbmNlCiAgICAgcmV0dXJuIDEgaWYgSXNHbG9iYWxJbnRlcmZhY2UoJGludGVy
ZmFjZSk7CiAgICAgcmV0dXJuIDEgaWYgJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUeXBl
KCRhdHRyaWJ1dGUtPnR5cGUpOwogCi0gICAgIyBbVW5mb3JnZWFibGVdIGF0dHJpYnV0ZXMgc2hv
dWxkIGJlIG9uIHRoZSBpbnN0YW5jZS4KLSAgICAjIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93
ZWJpZGwvI1VuZm9yZ2VhYmxlCi0gICAgcmV0dXJuIDEgaWYgSXNVbmZvcmdlYWJsZSgkaW50ZXJm
YWNlLCAkYXR0cmlidXRlKTsKKyAgICAjIFtMZWdhY3lVbmZvcmdlYWJsZV0gYXR0cmlidXRlcyBz
aG91bGQgYmUgb24gdGhlIGluc3RhbmNlLgorICAgICMgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlv
L3dlYmlkbC8jTGVnYWN5VW5mb3JnZWFibGUKKyAgICByZXR1cm4gMSBpZiBJc0xlZ2FjeVVuZm9y
Z2VhYmxlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogCiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0NoZWNrU2VjdXJpdHl9KSB7CiAgICAgICAgIHJldHVybiAwIGlm
ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RvTm90Q2hlY2tTZWN1cml0eX07CkBA
IC0xNzQ5LDggKzE3NDksOCBAQCBzdWIgT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlCiAKICAg
ICByZXR1cm4gMSBpZiBJc0dsb2JhbEludGVyZmFjZSgkaW50ZXJmYWNlKTsKIAotICAgICMgW1Vu
Zm9yZ2VhYmxlXSBvcGVyYXRpb25zIHNob3VsZCBiZSBvbiB0aGUgaW5zdGFuY2UuIGh0dHBzOi8v
aGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI1VuZm9yZ2VhYmxlCi0gICAgaWYgKElzVW5mb3JnZWFi
bGUoJGludGVyZmFjZSwgJG9wZXJhdGlvbikpIHsKKyAgICAjIFtMZWdhY3lVbmZvcmdlYWJsZV0g
b3BlcmF0aW9ucyBzaG91bGQgYmUgb24gdGhlIGluc3RhbmNlLiBodHRwczovL2hleWNhbS5naXRo
dWIuaW8vd2ViaWRsLyNMZWdhY3lVbmZvcmdlYWJsZQorICAgIGlmIChJc0xlZ2FjeVVuZm9yZ2Vh
YmxlKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pKSB7CiAgICAgICAgIGFzc2VydCgiVGhlIGJpbmRp
bmdzIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0IHB1dHRpbmcgcnVudGltZS1lbmFibGVkIG9w
ZXJhdGlvbnMgb24gdGhlIGluc3RhbmNlIHlldCAoZXhjZXB0IGZvciBnbG9iYWwgb2JqZWN0cyk6
WyIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gIjo6IiAuICRvcGVyYXRpb24tPm5hbWUgLiAi
XSIpIGlmIE5lZWRzUnVudGltZUNoZWNrKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pOwogICAgICAg
ICByZXR1cm4gMTsKICAgICB9CkBAIC0xNzg4LDcgKzE3ODgsNyBAQCBzdWIgSXNBY2NlbGVyYXRl
ZERPTUF0dHJpYnV0ZQogICAgIHJldHVybiAwIGlmICRhdHRyaWJ1dGUtPmlzU2V0TGlrZTsKICAg
ICByZXR1cm4gMCBpZiAkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0
ZS0+dHlwZSk7CiAgICAgcmV0dXJuIDAgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJp
YnV0ZSk7Ci0gICAgcmV0dXJuIDAgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
TGVuaWVudFRoaXN9OworICAgIHJldHVybiAwIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0xlZ2FjeUxlbmllbnRUaGlzfTsKICAgICByZXR1cm4gMCBpZiAkY29kZUdlbmVyYXRv
ci0+SXNQcm9taXNlVHlwZSgkYXR0cmlidXRlLT50eXBlKTsKICAgICByZXR1cm4gMCBpZiAkYXR0
cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9OwogICAgIHJldHVybiAxOwpAQCAt
MTgwMCw3ICsxODAwLDcgQEAgc3ViIEdldEpTQ0F0dHJpYnV0ZXNGb3JBdHRyaWJ1dGUKICAgICBt
eSAkYXR0cmlidXRlID0gc2hpZnQ7CiAKICAgICBteSBAc3BlY2lhbHMgPSAoKTsKLSAgICBwdXNo
KEBzcGVjaWFscywgIkpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUiKSBpZiBJc1Vu
Zm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgIHB1c2goQHNwZWNpYWxzLCAi
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSIpIGlmIElzTGVnYWN5VW5mb3JnZWFi
bGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAKICAgICAjIEFzIHBlciBXZWIgSURMIHNwZWNp
ZmljYXRpb24sIGNvbnN0cnVjdG9yIHByb3BlcnRpZXMgb24gdGhlIEVDTUFTY3JpcHQgZ2xvYmFs
IG9iamVjdCBzaG91bGQgbm90IGJlIGVudW1lcmFibGUuCiAgICAgbXkgJGlzR2xvYmFsQ29uc3Ry
dWN0b3IgPSAkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlw
ZSk7CkBAIC0yNjcwLDcgKzI2NzAsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICMgRklY
TUU6IFdoeSBkb2Vzbid0IHRoaXMgYWxzbyBpbmNsdWRlIEluZGV4ZWQgR2V0dGVycyBhbmQgW0N1
c3RvbUdldE93blByb3BlcnR5U2xvdF0KICAgICBpZiAoJG5hbWVkR2V0dGVyT3BlcmF0aW9uKSB7
Ci0gICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgk
aW50ZXJmYWNlLCAiT3ZlcnJpZGVCdWlsdGlucyIpKSB7CisgICAgICAgIGlmICgkY29kZUdlbmVy
YXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyIpKSB7CiAgICAgICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6R2V0T3du
UHJvcGVydHlTbG90SXNJbXB1cmUifSA9IDE7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9w
ZXJ0eUFic2VuY2UifSA9IDE7CkBAIC0yNzc1LDcgKzI3NzUsNyBAQCBzdWIgR2VuZXJhdGVIZWFk
ZXIKICAgICB9CiAgICAgCiAgICAgIyBDb25zdHJ1Y3RvciBvYmplY3QgZ2V0dGVyCi0gICAgdW5s
ZXNzICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOb0ludGVyZmFjZU9iamVjdH0p
IHsKKyAgICB1bmxlc3MgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0fSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0
YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNH
bG9iYWxPYmplY3QqKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0
YXRpYyBKU0M6OkpTVmFsdWUgZ2V0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKEpTQzo6Vk0mLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntMZWdhY3lGYWN0b3J5RnVuY3Rpb259OwogICAgIH0KQEAgLTQxOTUsNyArNDE5NSw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBoYXNoS2V5cywgJG5h
bWUpOwogCiAgICAgICAgICAgICBteSBAc3BlY2lhbHMgPSAoKTsKLSAgICAgICAgICAgIHB1c2go
QHNwZWNpYWxzLCAiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSIpIGlmIElzVW5m
b3JnZWFibGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBwdXNoKEBzcGVj
aWFscywgIkpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUiKSBpZiBJc0xlZ2FjeVVu
Zm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVzaChAc3Bl
Y2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSIpIGlmIElzUmVhZG9ubHko
JGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBzcGVjaWFscywgIkpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSIpIGlmIElzQWNjZWxlcmF0ZWRET01BdHRyaWJ1dGUoJGlu
dGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBzcGVjaWFscywgIkpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSIpIGlmICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0RPTUpJVH07CkBAIC00NTQzLDcgKzQ1NDMsNyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAg
ICAgfQogCi0gICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOb0ludGVy
ZmFjZU9iamVjdH0pIHsKKyAgICBpZiAoISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0fSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IkpTVmFsdWUgJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTUNv
bnN0cnVjdG9yPCR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpO1xuIik7CkBAIC00NjM2LDcgKzQ2MzYsNyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUpO1xuIik7CiAKLSAgICAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntOb0ludGVyZmFjZU9iamVjdH0pIHsKKyAgICAgICAgaWYgKCEkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lOb0ludGVyZmFjZU9iamVjdH0pIHsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
JHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgY29uc3RydWN0b3Ig
PSAke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6Y3JlYXRlKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCksICR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgKnByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIHBy
b3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKSwgKmpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTtcbiIpOwpAQCAtNTA4
OSw3ICs1MDg5LDcgQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyVHJhbXBvbGluZURlZgog
ICAgIAogICAgIG15IEB0ZW1wbGF0ZVBhcmFtZXRlcnMgPSAoKTsKICAgICBwdXNoKEB0ZW1wbGF0
ZVBhcmFtZXRlcnMsICRhdHRyaWJ1dGVHZXR0ZXJCb2R5TmFtZSk7Ci0gICAgaWYgKCRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlbmllbnRUaGlzfSkgeworICAgIGlmICgkYXR0cmli
dXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lMZW5pZW50VGhpc30pIHsKICAgICAgICAg
cHVzaChAdGVtcGxhdGVQYXJhbWV0ZXJzLCAiQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJldHVy
bkVhcmx5IikKICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkYXR0
cmlidXRlLT50eXBlKSkgewogICAgICAgICBwdXNoKEB0ZW1wbGF0ZVBhcmFtZXRlcnMsICJDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6UmVqZWN0UHJvbWlzZSIpCkBAIC01Mjg0LDcgKzUyODQsNyBA
QCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJUcmFtcG9saW5lRGVmCiAgICAgCiAgICAgbXkg
QHRlbXBsYXRlUGFyYW1ldGVycyA9ICgpOwogICAgIHB1c2goQHRlbXBsYXRlUGFyYW1ldGVycywg
JGF0dHJpYnV0ZVNldHRlckJvZHlOYW1lKTsKLSAgICBwdXNoKEB0ZW1wbGF0ZVBhcmFtZXRlcnMs
ICJDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6UmV0dXJuRWFybHkiKSBpZiAkYXR0cmlidXRlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntMZW5pZW50VGhpc307CisgICAgcHVzaChAdGVtcGxhdGVQYXJh
bWV0ZXJzLCAiQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJldHVybkVhcmx5IikgaWYgJGF0dHJp
YnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5TGVuaWVudFRoaXN9OwogICAgIAogICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHthdHRyaWJ1dGVTZXR0ZXJOYW1lfShKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICJ7XG4iKTsKQEAgLTY3MjUsNyArNjcyNSw3IEBAIHN1YiBJc0Fubm90YXRlZFR5cGUKIAogICAg
IHJldHVybiAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDbGFtcH07CiAgICAgcmV0
dXJuIDEgaWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuZm9yY2VSYW5nZX07Ci0gICAg
cmV0dXJuIDEgaWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1RyZWF0TnVsbEFzfSAmJiAk
dHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VHJlYXROdWxsQXN9IGVxICJFbXB0eVN0cmluZyI7
CisgICAgcmV0dXJuIDEgaWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nfTsKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57QXRvbVN0cmluZ307CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nfTsKIH0KQEAgLTY3MzYsNyArNjczNiw3IEBA
IHN1YiBHZXRBbm5vdGF0ZWRJRExUeXBlCiAKICAgICByZXR1cm4gIklETENsYW1wQWRhcHRvciIg
aWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NsYW1wfTsKICAgICByZXR1cm4gIklETEVu
Zm9yY2VSYW5nZUFkYXB0b3IiIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmZvcmNl
UmFuZ2V9OwotICAgIHJldHVybiAiSURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3IiIGlmICR0eXBl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntUcmVhdE51bGxBc30gJiYgJHR5cGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e1RyZWF0TnVsbEFzfSBlcSAiRW1wdHlTdHJpbmciOworICAgIHJldHVybiAiSURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmd9OwogICAgIHJldHVybiAiSURMQXRvbVN0cmlu
Z0FkYXB0b3IiIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBdG9tU3RyaW5nfTsKICAg
ICByZXR1cm4gIklETFJlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nQWRhcHRvciIgaWYgJHR5cGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nfTsKIH0KQEAg
LTc2MjAsMTIgKzc2MjAsMTIgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2Rz
CiAgICAgICAgICRsZWFzdENvbnN0cnVjdG9yTGVuZ3RoID0gMDsKICAgICB9CiAKLSAgICAjIElm
IHRoZSBpbnRlcmZhY2UgaGFzIGEgcGFyZW50IGludGVyZmFjZSB3aGljaCBkb2VzIG5vdCBoYXZl
IFtOb0ludGVyZmFjZU9iamVjdF0sIHRoZW4gdXNlIGl0cyBpbnRlcmZhY2Ugb2JqZWN0IGFzIHBy
b3RvdHlwZSwKKyAgICAjIElmIHRoZSBpbnRlcmZhY2UgaGFzIGEgcGFyZW50IGludGVyZmFjZSB3
aGljaCBkb2VzIG5vdCBoYXZlIFtMZWdhY3lOb0ludGVyZmFjZU9iamVjdF0sIHRoZW4gdXNlIGl0
cyBpbnRlcmZhY2Ugb2JqZWN0IGFzIHByb3RvdHlwZSwKICAgICAjIG90aGVyd2lzZSB1c2UgRnVu
Y3Rpb25Qcm90b3R5cGU6IGh0dHA6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaW50ZXJmYWNl
LW9iamVjdAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInRlbXBsYXRlPD4gSlNWYWx1ZSAke2Nv
bnN0cnVjdG9yQ2xhc3NOYW1lfTo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAie1xuIik7CiAKLSAgICBhc3NlcnQoIkFuIGludGVyZmFjZSBjYW5ub3QgaW5o
ZXJpdCBmcm9tIGFub3RoZXIgaW50ZXJmYWNlIHRoYXQgaXMgbWFya2VkIGFzIFtOb0ludGVyZmFj
ZU9iamVjdF0iKSBpZiAkaW50ZXJmYWNlLT5wYXJlbnRUeXBlICYmICRjb2RlR2VuZXJhdG9yLT5H
ZXRJbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXNGcm9tTmFtZSgkaW50ZXJmYWNlLT5wYXJlbnRU
eXBlLT5uYW1lKS0+e05vSW50ZXJmYWNlT2JqZWN0fTsKKyAgICBhc3NlcnQoIkFuIGludGVyZmFj
ZSBjYW5ub3QgaW5oZXJpdCBmcm9tIGFub3RoZXIgaW50ZXJmYWNlIHRoYXQgaXMgbWFya2VkIGFz
IFtMZWdhY3lOb0ludGVyZmFjZU9iamVjdF0iKSBpZiAkaW50ZXJmYWNlLT5wYXJlbnRUeXBlICYm
ICRjb2RlR2VuZXJhdG9yLT5HZXRJbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXNGcm9tTmFtZSgk
aW50ZXJmYWNlLT5wYXJlbnRUeXBlLT5uYW1lKS0+e0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0fTsK
IAogICAgIGlmICghJGdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5RnVuY3Rpb24gYW5kICRpbnRlcmZh
Y2UtPnBhcmVudFR5cGUpIHsKICAgICAgICAgbXkgJHBhcmVudENsYXNzTmFtZSA9ICJKUyIgLiAk
aW50ZXJmYWNlLT5wYXJlbnRUeXBlLT5uYW1lOwpAQCAtNzY0Miw3ICs3NjQyLDcgQEAgc3ViIEdl
bmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
e1xuIik7CiAKICAgICAjIFRoZXJlIG11c3QgZXhpc3QgYW4gaW50ZXJmYWNlIHByb3RvdHlwZSBv
YmplY3QgZm9yIGV2ZXJ5IG5vbi1jYWxsYmFjayBpbnRlcmZhY2UgZGVmaW5lZCwgcmVnYXJkbGVz
cwotICAgICMgb2Ygd2hldGhlciB0aGUgaW50ZXJmYWNlIHdhcyBkZWNsYXJlZCB3aXRoIHRoZSBb
Tm9JbnRlcmZhY2VPYmplY3RdIGV4dGVuZGVkIGF0dHJpYnV0ZS4KKyAgICAjIG9mIHdoZXRoZXIg
dGhlIGludGVyZmFjZSB3YXMgZGVjbGFyZWQgd2l0aCB0aGUgW0xlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0XSBleHRlbmRlZCBhdHRyaWJ1dGUuCiAgICAgIyBodHRwczovL2hleWNhbS5naXRodWIuaW8v
d2ViaWRsLyNpbnRlcmZhY2UtcHJvdG90eXBlLW9iamVjdAogICAgIGlmIChTaG91bGRVc2VHbG9i
YWxPYmplY3RQcm90b3R5cGUoJGludGVyZmFjZSkpIHsKICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnbG9i
YWxPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KHZtKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pO1xuIik7CkBAIC03NzQxLDcgKzc3NDEsNyBAQCBzdWIg
TmVlZHNDb25zdHJ1Y3RvclByb3BlcnR5CiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0Owog
ICAgIAotICAgIHJldHVybiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm9JbnRl
cmZhY2VPYmplY3R9OworICAgIHJldHVybiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3R9OwogfQogCiBzdWIgSXNDb25zdHJ1Y3RhYmxlCkBA
IC03NzY0LDExICs3NzY0LDExIEBAIHN1YiBIZWFkZXJOZWVkc1Byb3RvdHlwZURlY2xhcmF0aW9u
CiAgICAgICAgIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbURlZmlu
ZU93blByb3BlcnR5T25Qcm90b3R5cGV9OwogfQogCi1zdWIgSXNVbmZvcmdlYWJsZQorc3ViIElz
TGVnYWN5VW5mb3JnZWFibGUKIHsKICAgICBteSAoJGludGVyZmFjZSwgJHByb3BlcnR5KSA9IEBf
OwogCi0gICAgcmV0dXJuICRwcm9wZXJ0eS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VW5mb3JnZWFi
bGV9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1VuZm9yZ2VhYmxlfTsKKyAg
ICByZXR1cm4gJHByb3BlcnR5LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lVbmZvcmdlYWJs
ZX0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5VW5mb3JnZWFibGV9
OwogfQogCiBzdWIgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbApAQCAtNzc3Niw3ICs3Nzc2LDcgQEAg
c3ViIENvbXB1dGVGdW5jdGlvblNwZWNpYWwKICAgICBteSAoJGludGVyZmFjZSwgJG9wZXJhdGlv
bikgPSBAXzsKIAogICAgIG15IEBzcGVjaWFscyA9ICgpOwotICAgIHB1c2goQHNwZWNpYWxzLCAo
IkpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUiLCAiSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkiKSkgaWYgSXNVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkb3BlcmF0aW9u
KTsKKyAgICBwdXNoKEBzcGVjaWFscywgKCJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIiwgIkpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IikpIGlmIElzTGVnYWN5VW5m
b3JnZWFibGUoJGludGVyZmFjZSwgJG9wZXJhdGlvbik7CiAgICAgcHVzaChAc3BlY2lhbHMsICJK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSIpIGlmICRvcGVyYXRpb24tPmV4dGVuZGVk
QXR0cmlidXRlcy0+e05vdEVudW1lcmFibGV9OwogICAgIGlmIChJc0pTQnVpbHRpbigkaW50ZXJm
YWNlLCAkb3BlcmF0aW9uKSkgewogICAgICAgICBwdXNoKEBzcGVjaWFscywgIkpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkJ1aWx0aW4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvSURMQXR0cmlidXRlcy5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCShyZXZpc2lvbiAyNjY2NTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkod29ya2lu
ZyBjb3B5KQpAQCAtMTksNiArMTksMTMgQEAKICAgICAgICAgIkFjdGl2ZURPTU9iamVjdCI6IHsK
ICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0s
CisgICAgICAgICJBbGxvd1NoYXJlZCI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQi
OiBbInR5cGUiXSwKKyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAi
dXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0FsbG93U2hhcmVkIgorICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICJ1bnN1cHBvcnRlZCI6IHRydWUKKyAgICAgICAgfSwK
ICAgICAgICAgIkFwcGxlQ29weXJpZ2h0IjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dl
ZCI6IFsiaW50ZXJmYWNlIiwgImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQogICAgICAgICB9LApA
QCAtMjYsNyArMzMsMTAgQEAKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbInR5cGUi
XQogICAgICAgICB9LAogICAgICAgICAiQ0VSZWFjdGlvbnMiOiB7Ci0gICAgICAgICAgICAiY29u
dGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiLCAib3BlcmF0aW9uIl0KKyAgICAgICAgICAgICJj
b250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXSwKKyAgICAgICAgICAg
ICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvbXVsdGlwYWdlL2N1c3RvbS1lbGVtZW50cy5odG1sI2NlcmVhY3Rpb25zIgor
ICAgICAgICAgICAgfQogICAgICAgICB9LAogICAgICAgICAiQ2FjaGVkQXR0cmlidXRlIjogewog
ICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIl0KQEAgLTIyMyw2ICsy
MzMsMTMgQEAKICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5p
by93ZWJpZGwvI0dsb2JhbCIKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKKyAgICAgICAgIkhU
TUxDb25zdHJ1Y3RvciI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbIm9wZXJh
dGlvbiJdLAorICAgICAgICAgICAgInN0YW5kYXJkIjogeworICAgICAgICAgICAgICAgICJ1cmwi
OiAiaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG9tLmh0bWwjaHRtbGNv
bnN0cnVjdG9yIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJ1bnN1cHBvcnRlZCI6IHRy
dWUKKyAgICAgICAgfSwKICAgICAgICAgIkltcGxlbWVudGVkQXMiOiB7CiAgICAgICAgICAgICAi
Y29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiLCAiZGljdGlvbmFyeSIsICJkaWN0aW9uYXJ5
LW1lbWJlciIsICJlbnVtIiwgImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXSwKICAgICAgICAgICAg
ICJ2YWx1ZXMiOiBbIioiXQpAQCAtMjk3LDMwICszMTQsNjggQEAKICAgICAgICAgIkxlZ2FjeUZh
Y3RvcnlGdW5jdGlvbk1heVRocm93RXhjZXB0aW9uIjogewogICAgICAgICAgICAgImNvbnRleHRz
QWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0KICAgICAgICAgfSwKLSAgICAgICAgIkxlZ2FjeVVuZW51
bWVyYWJsZU5hbWVkUHJvcGVydGllcyI6IHsKKyAgICAgICAgIkxlZ2FjeUxlbmllbnRTZXR0ZXIi
OiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwKKyAgICAg
ICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5
Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeUxlbmllbnRTZXR0ZXIiCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgInVuc3VwcG9ydGVkIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAi
TGVnYWN5TGVuaWVudFRoaXMiOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJh
dHRyaWJ1dGUiXSwKKyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAi
dXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeUxlbmllbnRUaGlz
IgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5TmFtZXNwYWNlIjog
ewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCiAgICAgICAg
ICAgICAic3RhbmRhcmQiOiB7Ci0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNh
bS5naXRodWIuaW8vd2ViaWRsLyNMZWdhY3lVbmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMiCisg
ICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNM
ZWdhY3lOYW1lc3BhY2UiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInVuc3VwcG9ydGVk
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QiOiB7
CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAgICAg
ICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2Ft
LmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0IgogICAgICAgICAgICAg
fQogICAgICAgICB9LAotICAgICAgICAiTGVnYWN5V2luZG93QWxpYXMiOiB7CisgICAgICAgICJM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZyI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQi
OiBbInR5cGUiXSwKKyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAi
dXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nIgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFj
ZSJdLAotICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdLAogICAgICAgICAgICAgInN0YW5kYXJk
IjogewotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dl
YmlkbC8jTGVnYWN5V2luZG93QWxpYXMiCisgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczov
L2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIgogICAgICAg
ICAgICAgfQogICAgICAgICB9LAotICAgICAgICAiTGVuaWVudFNldHRlciI6IHsKLSAgICAgICAg
ICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdLAorICAgICAgICAiTGVnYWN5VHJl
YXROb25PYmplY3RBc051bGwiOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJj
YWxsYmFjay1mdW5jdGlvbiJdLAogICAgICAgICAgICAgInN0YW5kYXJkIjogewotICAgICAgICAg
ICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jTGVuaWVudFNl
dHRlciIKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93
ZWJpZGwvI0xlZ2FjeVRyZWF0Tm9uT2JqZWN0QXNOdWxsIgogICAgICAgICAgICAgfSwKICAgICAg
ICAgICAgICJ1bnN1cHBvcnRlZCI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgIkxlbmllbnRU
aGlzIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIl0sCisg
ICAgICAgICJMZWdhY3lVbmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMiOiB7CisgICAgICAgICAg
ICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAgICAgICAgICJzdGFuZGFy
ZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93
ZWJpZGwvI0xlZ2FjeVVuZW51bWVyYWJsZU5hbWVkUHJvcGVydGllcyIKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgIkxlZ2FjeVVuZm9yZ2VhYmxlIjogeworICAgICAgICAgICAg
ImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiIsICJpbnRlcmZhY2Ui
XSwKKyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0
dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeVVuZm9yZ2VhYmxlIgorICAgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5V2luZG93QWxpYXMiOiB7CisgICAg
ICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAgICAgICAgICJ2
YWx1ZXMiOiBbIioiXSwKICAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAgICAgICAgICAg
ICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlbmllbnRUaGlzIgor
ICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8j
TGVnYWN5V2luZG93QWxpYXMiCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgICJN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkIjogewpAQCAtMzMzLDI2ICszODgsMTQgQEAKICAgICAgICAg
ICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCiAgICAgICAg
ICJOZXdPYmplY3QiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1
dGUiLCAib3BlcmF0aW9uIl0sCisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJvcGVy
YXRpb24iLCAiYXR0cmlidXRlIl0sCiAgICAgICAgICAgICAic3RhbmRhcmQiOiB7CiAgICAgICAg
ICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNOZXdPYmpl
Y3QiCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJOb0ludGVyZmFjZU9iamVj
dCI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAotICAg
ICAgICAgICAgInN0YW5kYXJkIjogewotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9o
ZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jTm9JbnRlcmZhY2VPYmplY3QiCi0gICAgICAgICAgICB9
Ci0gICAgICAgIH0sCiAgICAgICAgICJOb3RFbnVtZXJhYmxlIjogewogICAgICAgICAgICAgImNv
bnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJdCiAgICAgICAgIH0sCi0g
ICAgICAgICJPdmVycmlkZUJ1aWx0aW5zIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dl
ZCI6IFsiaW50ZXJmYWNlIl0sCi0gICAgICAgICAgICAic3RhbmRhcmQiOiB7Ci0gICAgICAgICAg
ICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNPdmVycmlkZUJ1
aWx0aW5zIgotICAgICAgICAgICAgfQotICAgICAgICB9LAogICAgICAgICAiT3ZlcnJpZGVJRExU
eXBlIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsidHlwZSJdLAogICAgICAg
ICAgICAgInZhbHVlcyI6IFsiKiJdCkBAIC00MTcsNyArNDYwLDcgQEAKICAgICAgICAgIlNhbWVP
YmplY3QiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwK
ICAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAgICAgICAgICAgICAidXJsIjogImh0dHBz
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI1JlcGxhY2VhYmxlIgorICAgICAgICAgICAgICAg
ICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jU2FtZU9iamVjdCIKICAg
ICAgICAgICAgIH0sCiAgICAgICAgICAgICAidW5zdXBwb3J0ZWQiOiB0cnVlCiAgICAgICAgIH0s
CkBAIC00MjcsNiArNDcwLDEzIEBACiAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hl
eWNhbS5naXRodWIuaW8vd2ViaWRsLyNTZWN1cmVDb250ZXh0IgogICAgICAgICAgICAgfQogICAg
ICAgICB9LAorICAgICAgICAiU2VyaWFsaXphYmxlIjogeworICAgICAgICAgICAgImNvbnRleHRz
QWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCisgICAgICAgICAgICAic3RhbmRhcmQiOiB7CisgICAg
ICAgICAgICAgICAgInVybCI6ICJodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9zdHJ1Y3R1cmVkLWRhdGEuaHRtbCNzZXJpYWxpemFibGUiCisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgInVuc3VwcG9ydGVkIjogdHJ1ZQorICAgICAgICB9LAogICAgICAgICAiU2V0dGVy
Q2FsbFdpdGgiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUi
XSwKICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIkV4ZWNTdGF0ZSIsICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0IiwgIkdsb2JhbE9iamVjdCIsICJBY3RpdmVXaW5kb3ciLCAiRmlyc3RXaW5kb3ciXSwK
QEAgLTQ0MSwyOSArNDkxLDE2IEBACiAgICAgICAgICJTdXBwcmVzc1RvSlNPYmplY3QiOiB7CiAg
ICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LAot
ICAgICAgICAiVHJlYXROb25PYmplY3RBc051bGwiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNB
bGxvd2VkIjogWyJjYWxsYmFjay1mdW5jdGlvbiJdLAorICAgICAgICAiVHJhbnNmZXJhYmxlIjog
eworICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCiAgICAgICAg
ICAgICAic3RhbmRhcmQiOiB7Ci0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNh
bS5naXRodWIuaW8vd2ViaWRsLyNUcmVhdE5vbk9iamVjdEFzTnVsbCIKKyAgICAgICAgICAgICAg
ICAidXJsIjogImh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N0cnVjdHVy
ZWQtZGF0YS5odG1sI3RyYW5zZmVyYWJsZSIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAi
dW5zdXBwb3J0ZWQiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJUcmVhdE51bGxBcyI6IHsK
LSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbInR5cGUiXSwKLSAgICAgICAgICAgICJ2
YWx1ZXMiOiBbIkVtcHR5U3RyaW5nIl0sCi0gICAgICAgICAgICAic3RhbmRhcmQiOiB7Ci0gICAg
ICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNUcmVh
dE51bGxBcyIKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKICAgICAgICAgIlVSTCI6IHsKICAg
ICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdCiAgICAgICAgIH0sCi0g
ICAgICAgICJVbmZvcmdlYWJsZSI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBb
ImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iLCAiaW50ZXJmYWNlIl0sCi0gICAgICAgICAgICAic3Rh
bmRhcmQiOiB7Ci0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIu
aW8vd2ViaWRsLyNVbmZvcmdlYWJsZSIKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKICAgICAg
ICAgIlVuc2NvcGFibGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRy
aWJ1dGUiLCAib3BlcmF0aW9uIl0sCiAgICAgICAgICAgICAic3RhbmRhcmQiOiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5w
bAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9w
cmVwcm9jZXNzLWlkbHMucGwJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw3ICsxNjQsNyBAQCBmb3Jl
YWNoIG15ICRpZGxGaWxlIChzb3J0IGtleXMgJWlkbEZpbGVICiAKICAgICAjIEZvciBldmVyeSBp
bnRlcmZhY2UgdGhhdCBpcyBleHBvc2VkIGluIGEgZ2l2ZW4gRUNNQVNjcmlwdCBnbG9iYWwgZW52
aXJvbm1lbnQgYW5kOgogICAgICMgLSBpcyBhIGNhbGxiYWNrIGludGVyZmFjZSB0aGF0IGhhcyBj
b25zdGFudHMgZGVjbGFyZWQgb24gaXQsIG9yCi0gICAgIyAtIGlzIGEgbm9uLWNhbGxiYWNrIGlu
dGVyZmFjZSB0aGF0IGlzIG5vdCBkZWNsYXJlZCB3aXRoIHRoZSBbTm9JbnRlcmZhY2VPYmplY3Rd
IGV4dGVuZGVkIGF0dHJpYnV0ZSwgYSBjb3JyZXNwb25kaW5nCisgICAgIyAtIGlzIGEgbm9uLWNh
bGxiYWNrIGludGVyZmFjZSB0aGF0IGlzIG5vdCBkZWNsYXJlZCB3aXRoIHRoZSBbTGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3RdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgYSBjb3JyZXNwb25kaW5nCiAgICAg
IyAgIHByb3BlcnR5IG11c3QgZXhpc3Qgb24gdGhlIEVDTUFTY3JpcHQgZW52aXJvbm1lbnQncyBn
bG9iYWwgb2JqZWN0LgogICAgICMgU2VlIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwv
I2VzLWludGVyZmFjZXMKICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVzID0gZ2V0SW50ZXJmYWNl
RXh0ZW5kZWRBdHRyaWJ1dGVzRnJvbUlETCgkaWRsRmlsZUNvbnRlbnRzKTsKQEAgLTQ1OSw3ICs0
NTksNyBAQCBzdWIgc2hvdWxkRXhwb3NlSW50ZXJmYWNlCiB7CiAgICAgbXkgJGV4dGVuZGVkQXR0
cmlidXRlcyA9IHNoaWZ0OwogCi0gICAgcmV0dXJuICEkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5v
SW50ZXJmYWNlT2JqZWN0In07CisgICAgcmV0dXJuICEkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikxl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0In07CiB9CiAKIHN1YiB1cGRhdGVEaWN0aW9uYXJ5RGVwZW5k
ZW5jaWVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGlu
Z1Rlc3RHbG9iYWxDb25zdHJ1Y3RvcnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9ycy5pZGwJ
KHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9CaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9ycy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDcgQEAgcGFydGlhbCBpbnRlcmZhY2UgVGVzdEdsb2JhbE9iamVjdCB7CiAgICAgYXR0
cmlidXRlIFRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yIFRlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvcjsKICAgICBhdHRyaWJ1dGUgVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0
cnVjdG9yIFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb247CiAgICAgYXR0cmlidXRlIFRlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvciBBdWRpbzsK
KyAgICBhdHRyaWJ1dGUgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciBUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdEluczsKICAgICBhdHRyaWJ1dGUgVGVzdE1hcExpa2VDb25zdHJ1
Y3RvciBUZXN0TWFwTGlrZTsKICAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllckNvbnN0cnVjdG9yIFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXI7CiAgICAgYXR0cmlidXRlIFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbkNvbnN0cnVjdG9yIFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbjsKQEAgLTQyLDEyICs0MywxMSBAQCBwYXJ0aWFsIGludGVyZmFjZSBUZXN0R2xvYmFsT2Jq
ZWN0IHsKICAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1
Y3RvciBUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjsKICAgICBhdHRyaWJ1dGUgVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3RvciBUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlcjsKICAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvciBUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckFuZFNldHRlcjsKLSAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVp
bHRpbnNDb25zdHJ1Y3RvciBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczsKLSAg
ICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3Ry
dWN0b3IgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOwotICAgIGF0dHJp
YnV0ZSBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zQ29uc3RydWN0b3IgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGluczsKKyAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
T3ZlcnJpZGVCdWlsdEluczsKKyAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yIFRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXM7CisgICAgYXR0cmlidXRlIFRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29u
c3RydWN0b3IgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM7CiAgICAgW0NvbmRpdGlvbmFsPUNvbmRpdGlvbkRlcml2
ZWRdIGF0dHJpYnV0ZSBUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxDb25zdHJ1Y3RvciBUZXN0T3Bl
cmF0aW9uQ29uZGl0aW9uYWw7CiAgICAgYXR0cmlidXRlIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2U7Ci0gICAgYXR0cmlidXRlIFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3Ig
VGVzdE92ZXJyaWRlQnVpbHRpbnM7CiAgICAgYXR0cmlidXRlIFRlc3RQbHVnaW5JbnRlcmZhY2VD
b25zdHJ1Y3RvciBUZXN0UGx1Z2luSW50ZXJmYWNlOwogICAgIGF0dHJpYnV0ZSBUZXN0UmVhZE9u
bHlNYXBMaWtlQ29uc3RydWN0b3IgVGVzdFJlYWRPbmx5TWFwTGlrZTsKICAgICBhdHRyaWJ1dGUg
VGVzdFJlYWRPbmx5U2V0TGlrZUNvbnN0cnVjdG9yIFRlc3RSZWFkT25seVNldExpa2U7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5k
ZW5jaWVzLmRlcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAkocmV2aXNpb24gMjY2NjU5KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVu
Y2llcy5kZXAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsOSBAQCBXZWJET01UZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IuaDogCiBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaDogCiBE
T01UZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmg6IAogV2ViRE9NVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbi5oOiAKK0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaDogCitET01UZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdElucy5oOiAKK1dlYkRPTVRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Lmg6IAogSlNUZXN0TWFwTGlrZS5oOiAKIERPTVRlc3RNYXBMaWtlLmg6IAogV2ViRE9NVGVzdE1h
cExpa2UuaDogCkBAIC0xNjEsMTUgKzE2NCwxNSBAQCBXZWJET01UZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlci5oCiBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyLmg6IAogRE9NVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuaDog
CiBXZWJET01UZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5oOiAKLUpT
VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaDogCi1ET01UZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5oOiAKLVdlYkRPTVRlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zLmg6IAotSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXMuaDogCi1ET01UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaDogCi1X
ZWJET01UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaDogCi1KU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaDog
Ci1ET01UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zLmg6IAotV2ViRE9NVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGlucy5oOiAKK0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMuaDogCitET01UZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWls
dElucy5oOiAKK1dlYkRPTVRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Lmg6IAorSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmg6
IAorRE9NVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5oOiAK
K1dlYkRPTVRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaDog
CitKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zLmg6IAorRE9NVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaDogCitXZWJET01UZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucy5oOiAKIEpTVGVzdE5vZGUuaDogCiBET01UZXN0Tm9kZS5oOiAKIFdlYkRPTVRl
c3ROb2RlLmg6IApAQCAtMTgzLDkgKzE4Niw2IEBAIFRlc3RPcGVyYXRpb25CYXNlLmlkbDoKIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuaDogCiBET01UZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5oOiAKIFdlYkRPTVRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlLmg6IAotSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oOiAKLURP
TVRlc3RPdmVycmlkZUJ1aWx0aW5zLmg6IAotV2ViRE9NVGVzdE92ZXJyaWRlQnVpbHRpbnMuaDog
CiBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaDogCiBET01UZXN0UGx1Z2luSW50ZXJmYWNlLmg6IAog
V2ViRE9NVGVzdFBsdWdpbkludGVyZmFjZS5oOiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0SW5jbHVkZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW5jbHVkZXMuaWRsCShyZXZpc2lvbiAy
NjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEluY2x1
ZGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogLy8gY2hhbmdlcyBpbiBp
dHMgb3V0cHV0LgogWwogICAgIENvbmRpdGlvbmFsPUNvbmRpdGlvbjIyfENvbmRpdGlvbjIzLAot
ICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50
ZXJmYWNlIFRlc3RJbmNsdWRlcyB7CiAgICAgc3RhdGljIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25n
IGluY2x1ZGVzU3RhdGljUmVhZE9ubHlBdHRyOwogICAgIHN0YXRpYyBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGluY2x1ZGVzU3RhdGljQXR0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cworXSBpbnRlcmZhY2UgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgeworICAgIGdldHRlciBO
b2RlIG5hbWVkSXRlbShET01TdHJpbmcgbmFtZSk7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaWRsCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
CitdIGludGVyZmFjZSBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyB7
CisgICAgc2V0dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyB2YWx1ZSk7
CisKKyAgICAvLyBOT1RFOiBOYW1lZCBzZXR0ZXJzIHJlcXVpcmUgdGhlIHByZXNlbmNlIG9mIGEg
bmFtZWQgZ2V0dGVyIGFzIHdlbGwuCisgICAgZ2V0dGVyIERPTVN0cmluZyAoRE9NU3RyaW5nIG5h
bWUpOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitpbnRlcmZhY2UgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcyB7CisgICAgc2V0dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5nIG5hbWUs
IERPTVN0cmluZyB2YWx1ZSk7CisKKyAgICAvLyBOT1RFOiBOYW1lZCBzZXR0ZXJzIHJlcXVpcmUg
dGhlIHByZXNlbmNlIG9mIGEgbmFtZWQgZ2V0dGVyIGFzIHdlbGwuCisgICAgZ2V0dGVyIERPTVN0
cmluZyAoRE9NU3RyaW5nIG5hbWUpOworCisgICAgW0xlZ2FjeVVuZm9yZ2VhYmxlXSByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVuZm9yZ2VhYmxlQXR0cmlidXRlOworICAgIFtMZWdhY3lV
bmZvcmdlYWJsZV0gdW5kZWZpbmVkIHVuZm9yZ2VhYmxlT3BlcmF0aW9uKCk7Cit9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1sKKyAgICBMZWdhY3lPdmVycmlkZUJ1aWx0SW5zCitdIGludGVy
ZmFjZSBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucyB7CisgICAgc2V0dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5nIG5h
bWUsIERPTVN0cmluZyB2YWx1ZSk7CisKKyAgICAvLyBOT1RFOiBOYW1lZCBzZXR0ZXJzIHJlcXVp
cmUgdGhlIHByZXNlbmNlIG9mIGEgbmFtZWQgZ2V0dGVyIGFzIHdlbGwuCisgICAgZ2V0dGVyIERP
TVN0cmluZyAoRE9NU3RyaW5nIG5hbWUpOworCisgICAgW0xlZ2FjeVVuZm9yZ2VhYmxlXSByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVuZm9yZ2VhYmxlQXR0cmlidXRlOworICAgIFtMZWdh
Y3lVbmZvcmdlYWJsZV0gdW5kZWZpbmVkIHVuZm9yZ2VhYmxlT3BlcmF0aW9uKCk7Cit9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaWRs
CShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaWRsCShub25leGlzdGVudCkK
QEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBPdmVycmlkZUJ1aWx0aW5zCi1d
IGludGVyZmFjZSBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyB7Ci0gICAgc2V0
dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyB2YWx1ZSk7Ci0KLSAgICAv
LyBOT1RFOiBOYW1lZCBzZXR0ZXJzIHJlcXVpcmUgdGhlIHByZXNlbmNlIG9mIGEgbmFtZWQgZ2V0
dGVyIGFzIHdlbGwuCi0gICAgZ2V0dGVyIERPTVN0cmluZyAoRE9NU3RyaW5nIG5hbWUpOwotfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXMuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmlk
bAkobm9uZXhpc3RlbnQpCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1pbnRlcmZhY2Ug
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIHsKLSAgICBzZXR0ZXIgdW5k
ZWZpbmVkIChET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKLQotICAgIC8vIE5PVEU6
IE5hbWVkIHNldHRlcnMgcmVxdWlyZSB0aGUgcHJlc2VuY2Ugb2YgYSBuYW1lZCBnZXR0ZXIgYXMg
d2VsbC4KLSAgICBnZXR0ZXIgRE9NU3RyaW5nIChET01TdHJpbmcgbmFtZSk7Ci0KLSAgICBbVW5m
b3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdW5mb3JnZWFibGVBdHRyaWJ1
dGU7Ci0gICAgW1VuZm9yZ2VhYmxlXSB1bmRlZmluZWQgdW5mb3JnZWFibGVPcGVyYXRpb24oKTsK
LX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaWRsCShy
ZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
cy5pZGwJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAg
IE92ZXJyaWRlQnVpbHRpbnMKLV0gaW50ZXJmYWNlIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMgewotICAgIHNldHRlciB1bmRlZmluZWQg
KERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgdmFsdWUpOwotCi0gICAgLy8gTk9URTogTmFtZWQg
c2V0dGVycyByZXF1aXJlIHRoZSBwcmVzZW5jZSBvZiBhIG5hbWVkIGdldHRlciBhcyB3ZWxsLgot
ICAgIGdldHRlciBET01TdHJpbmcgKERPTVN0cmluZyBuYW1lKTsKLQotICAgIFtVbmZvcmdlYWJs
ZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1bmZvcmdlYWJsZUF0dHJpYnV0ZTsKLSAg
ICBbVW5mb3JnZWFibGVdIHVuZGVmaW5lZCB1bmZvcmdlYWJsZU9wZXJhdGlvbigpOwotfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNzMsMTEgKzczLDExIEBAIGVudW0g
VGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBhdHRyaWJ1dGUgVVNWU3Ry
aW5nIHVzdnN0cmluZ0F0dHI7CiAgICAgYXR0cmlidXRlIFRlc3RPYmogdGVzdE9iakF0dHI7CiAg
ICAgYXR0cmlidXRlIFRlc3RPYmo/IHRlc3ROdWxsYWJsZU9iakF0dHI7Ci0gICAgW0xlbmllbnRU
aGlzXSBhdHRyaWJ1dGUgVGVzdE9iaiBsZW5pZW50VGVzdE9iakF0dHI7Ci0gICAgW1VuZm9yZ2Vh
YmxlXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVuZm9yZ2VhYmxlQXR0cjsKLSAgICBh
dHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgc3RyaW5nQXR0clRy
ZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmc7Ci0gICAgYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0
eVN0cmluZ10gVVNWU3RyaW5nIHVzdnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5n
OwotICAgIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIEJ5dGVTdHJpbmcgYnl0
ZVN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nOworICAgIFtMZWdhY3lMZW5pZW50
VGhpc10gYXR0cmlidXRlIFRlc3RPYmogbGVuaWVudFRlc3RPYmpBdHRyOworICAgIFtMZWdhY3lV
bmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1bmZvcmdlYWJsZUF0dHI7
CisgICAgYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHN0cmlu
Z0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nOworICAgIGF0dHJpYnV0ZSBbTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmddIFVTVlN0cmluZyB1c3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZzsKKyAgICBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBCeXRlU3Ry
aW5nIGJ5dGVTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZzsKICAgICBhdHRyaWJ1
dGUgcmVjb3JkPERPTVN0cmluZywgbG9uZz4gc3RyaW5nTG9uZ1JlY29yZEF0dHI7CiAgICAgYXR0
cmlidXRlIHJlY29yZDxVU1ZTdHJpbmcsIGxvbmc+IHVzdnN0cmluZ0xvbmdSZWNvcmRBdHRyOwog
ICAgIGF0dHJpYnV0ZSByZWNvcmQ8Qnl0ZVN0cmluZywgbG9uZz4gdXN2c3RyaW5nTG9uZ1JlY29y
ZEF0dHI7CkBAIC0xNDIsOCArMTQyLDggQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwg
ImtpbmRhLWxvdwogICAgIGxvbmcgbG9uZ01ldGhvZFdpdGhBcmdzKGxvbmcgbG9uZ0FyZywgRE9N
U3RyaW5nIHN0ckFyZywgVGVzdE9iaiBvYmpBcmcpOwogICAgIFRlc3RPYmogb2JqTWV0aG9kKCk7
CiAgICAgVGVzdE9iaiBvYmpNZXRob2RXaXRoQXJncyhsb25nIGxvbmdBcmcsIERPTVN0cmluZyBz
dHJBcmcsIFRlc3RPYmogb2JqQXJnKTsKLSAgICBbVW5mb3JnZWFibGVdIGxvbmcgdW5mb3JnZWFi
bGVNZXRob2QoKTsKLSAgICB1bmRlZmluZWQgbWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1w
dHlTdHJpbmcoW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgYXJnKTsKKyAgICBb
TGVnYWN5VW5mb3JnZWFibGVdIGxvbmcgdW5mb3JnZWFibGVNZXRob2QoKTsKKyAgICB1bmRlZmlu
ZWQgbWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoW0xlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nXSBET01TdHJpbmcgYXJnKTsKICAgICB1bmRlZmluZWQgbWV0aG9kV2l0aFhQYXRo
TlNSZXNvbHZlclBhcmFtZXRlcihYUGF0aE5TUmVzb2x2ZXIgcmVzb2x2ZXIpOwogCiAgICAgLy8g
TnVsbGFibGUgU3RyaW5nIHJldHVybiB2YWx1ZXMuCkBAIC0xNTksMTEgKzE1OSwxMSBAQCBlbnVt
IFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAKICAgICB1bmRlZmluZWQgbWV0
aG9kV2l0aFVTVlN0cmluZ0FyZyhVU1ZTdHJpbmcgc3RyKTsKICAgICB1bmRlZmluZWQgbWV0aG9k
V2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnKFVTVlN0cmluZz8gc3RyKTsKLSAgICB1bmRlZmluZWQg
bWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoW1RyZWF0TnVs
bEFzPUVtcHR5U3RyaW5nXSBVU1ZTdHJpbmcgc3RyKTsKKyAgICB1bmRlZmluZWQgbWV0aG9kV2l0
aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoW0xlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nXSBVU1ZTdHJpbmcgc3RyKTsKIAogICAgIHVuZGVmaW5lZCBtZXRob2RXaXRoQnl0ZVN0
cmluZ0FyZyhCeXRlU3RyaW5nIHN0cik7CiAgICAgdW5kZWZpbmVkIG1ldGhvZFdpdGhOdWxsYWJs
ZUJ5dGVTdHJpbmdBcmcoQnl0ZVN0cmluZz8gc3RyKTsKLSAgICB1bmRlZmluZWQgbWV0aG9kV2l0
aEJ5dGVTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFtUcmVhdE51bGxBcz1FbXB0
eVN0cmluZ10gQnl0ZVN0cmluZyBzdHIpOworICAgIHVuZGVmaW5lZCBtZXRob2RXaXRoQnl0ZVN0
cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
XSBCeXRlU3RyaW5nIHN0cik7CiAKICAgICB1bmRlZmluZWQgc2VyaWFsaXplZFZhbHVlKFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSBzZXJpYWxpemVkQXJnKTsKIApAQCAtNDUwLDggKzQ1MCw4IEBAIGVu
dW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBbQ29uZGl0aW9uYWw9
Q09ORElUSU9OMiwgQ29uZGl0aW9uYWxseVJlYWRXcml0ZT1DT05ESVRJT05dIGF0dHJpYnV0ZSBO
b2RlIGNvbmRpdGlvbmFsQW5kQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZTsKIAogICAg
IFtSdW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZT1UZXN0RmVhdHVyZV0gYXR0cmlidXRlIE5v
ZGUgcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGU7Ci0gICAgW1J1bnRpbWVD
b25kaXRpb25hbGx5UmVhZFdyaXRlPVRlc3RGZWF0dXJlLCBVbmZvcmdlYWJsZV0gYXR0cmlidXRl
IE5vZGUgcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZTsK
LSAgICBbUnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGU9VGVzdEZlYXR1cmUsIFByaXZhdGVJ
ZGVudGlmaWVyLCBVbmZvcmdlYWJsZV0gYXR0cmlidXRlIE5vZGUgcnVudGltZUNvbmRpdGlvbmFs
bHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZVByaXZhdGU7CisgICAgW1J1bnRpbWVDb25k
aXRpb25hbGx5UmVhZFdyaXRlPVRlc3RGZWF0dXJlLCBMZWdhY3lVbmZvcmdlYWJsZV0gYXR0cmli
dXRlIE5vZGUgcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJs
ZTsKKyAgICBbUnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGU9VGVzdEZlYXR1cmUsIFByaXZh
dGVJZGVudGlmaWVyLCBMZWdhY3lVbmZvcmdlYWJsZV0gYXR0cmlidXRlIE5vZGUgcnVudGltZUNv
bmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZVByaXZhdGU7CiAgICAgW1J1
bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlPVRlc3RGZWF0dXJlXSBhdHRyaWJ1dGUgUHJvbWlz
ZTxkb3VibGU+IHJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlUHJvbWlzZTsK
IAogICAgIFtFeHBvc2VkPVdpbmRvd10gYXR0cmlidXRlIGxvbmcgY29uZGl0aW9uYWxseUV4cG9z
ZWRUb1dpbmRvd0F0dHJpYnV0ZTsKQEAgLTQ3Niw3ICs0NzYsNyBAQCB0eXBlZGVmIGFueSBBbnlU
eXBlZGVmOwogICAgIERPTVN0cmluZyBzdHJpbmdXaXRoRGVmYXVsdCA9ICJkZWZhdWx0U3RyaW5n
IjsKICAgICBET01TdHJpbmcgc3RyaW5nV2l0aG91dERlZmF1bHQ7CiAgICAgRE9NU3RyaW5nPyBu
dWxsYWJsZVN0cmluZ1dpdGhEZWZhdWx0ID0gbnVsbDsKLSAgICBbVHJlYXROdWxsQXM9RW1wdHlT
dHJpbmddIERPTVN0cmluZyBzdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nOworICAgIFtMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJp
bmc7CiAgICAgYm9vbGVhbiBib29sZWFuV2l0aERlZmF1bHQgPSBmYWxzZTsKICAgICBib29sZWFu
IGJvb2xlYW5XaXRob3V0RGVmYXVsdDsKICAgICBzZXF1ZW5jZTxET01TdHJpbmc+IHNlcXVlbmNl
T2ZTdHJpbmdzOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RPcGVyYXRpb25CYXNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE9wZXJhdGlvbkJhc2UuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9wZXJhdGlvbkJhc2Uu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAKIFsKICAgICBDb25kaXRpb25h
bD1Db25kaXRpb25CYXNlLAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgVGVzdE9wZXJhdGlvbkJhc2UgewogICAgIHVuZGVm
aW5lZCBub25Db25kaXRpb25hbE9wZXJhdGlvbigpOwogICAgIFtDb25kaXRpb25hbD1Db25kaXRp
b25PcGVyYXRpb25dIHVuZGVmaW5lZCBjb25kaXRpb25hbE9wZXJhdGlvbigpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE92ZXJyaWRlQnVpbHRpbnMuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE92ZXJyaWRlQnVpbHRpbnMuaWRsCShub25leGlz
dGVudCkKQEAgLTEsNiArMCwwIEBACi1bCi0gICAgT3ZlcnJpZGVCdWlsdGlucwotXSBpbnRlcmZh
Y2UgVGVzdE92ZXJyaWRlQnVpbHRpbnMKLXsKLSAgICBnZXR0ZXIgTm9kZSBuYW1lZEl0ZW0oRE9N
U3RyaW5nIG5hbWUpOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAkocmV2aXNp
b24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw3IEBAIGJv
b2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5U2wKICAgICAgICAgICAgIHJldHVy
biB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExU
eXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAg
ICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVn
YWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0g
dG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dC0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTIwMSw3ICsyMDEsNyBAQCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9w
ZXJ0eVNsCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJl
c3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChh
dXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1
aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG5hbWVk
UHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZh
bHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0
LmNwcAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYg
KzU5LDcgQEAKICNpbmNsdWRlICJKU1Rlc3RJdGVyYWJsZS5oIgogI2luY2x1ZGUgIkpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uLmgiCisjaW5jbHVkZSAiSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oIgogI2luY2x1
ZGUgIkpTVGVzdE1hcExpa2UuaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5oIgpAQCAtNzUsMTEgKzc2LDEwIEBACiAjaW5jbHVkZSAiSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXIuaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQW5kU2V0dGVyLmgiCi0jaW5jbHVkZSAiSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGlucy5oIgotI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzLmgiCi0jaW5jbHVkZSAiSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmgiCisjaW5jbHVkZSAiSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oIgorI2luY2x1ZGUgIkpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5oIgorI2luY2x1ZGUgIkpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMuaCIKICNpbmNsdWRlICJKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlLmgiCi0jaW5jbHVkZSAiSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oIgogI2luY2x1
ZGUgIkpTVGVzdFBsdWdpbkludGVyZmFjZS5oIgogI2luY2x1ZGUgIkpTVGVzdFJlYWRPbmx5TWFw
TGlrZS5oIgogI2luY2x1ZGUgIkpTVGVzdFJlYWRPbmx5U2V0TGlrZS5oIgpAQCAtMjI3LDYgKzIy
Nyw4IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGUKIGJvb2wgc2V0
SlNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1
Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE1hcExpa2VDb25zdHJ1Y3RvcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OwogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TWFwTGlrZUNvbnN0cnVjdG9yKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CkBAIC0yNTksMjAgKzI2MSwx
OCBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlCiBib29sIHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29s
IHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9i
YWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Ci1ib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1
Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0Nv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFs
T2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0
cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNpZiBFTkFCTEUoQ29uZGl0aW9uRGVy
aXZlZCkKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE9wZXJhdGlv
bkNvbmRpdGlvbmFsQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0
VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3RvcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVycmlkZUJ1
aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE92
ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEdsb2JhbE9iamVjdFRlc3RQbHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9v
bCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0UmVhZE9ubHlN
YXBMaWtlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTMyMCwxMyArMzIwLDEzIEBAIHVzaW5nIEpTVGVz
dEdsb2JhbE9iamVjdENvbnN0cnVjdG9yID0gSlMKIAogLyogSGFzaCB0YWJsZSAqLwogCi1zdGF0
aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJ
bmRleFsyNjldID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVz
dEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjcwXSA9IHsKICAgICB7IC0xLCAtMSB9LAotICAgIHsg
NDAsIC0xIH0sCisgICAgeyA0MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMCwgLTEg
fSwKLSAgICB7IDgsIDI2NCB9LAotICAgIHsgNDQsIC0xIH0sCisgICAgeyA4LCAyNjUgfSwKKyAg
ICB7IDQ1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LApAQCAtMzU2LDcgKzM1Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKLSAgICB7IDM0LCAtMSB9LAorICAgIHsgMzUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0zNzEsMTAgKzM3MSwxMSBAQCBz
dGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzOCwgLTEgfSwKKyAgICB7
IDM5LCAtMSB9LAogICAgIHsgMjAsIDI1NiB9LAogICAgIHsgMTAsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKKyAgICB7IDQ2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LApAQCAtMzgzLDE1ICszODQsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVj
dCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzNiwgLTEgfSwKKyAgICB7
IDM3LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAot
ICAgIHsgMjIsIDI2NiB9LAorICAgIHsgMjIsIDI2NyB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNDE5LDI0ICs0MTksMjQgQEAgc3RhdGlj
IGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgMTksIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDYsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKICAgICB7IDE4LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzNSwgLTEgfSwKKyAgICB7
IDM2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDQsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0g
ICAgeyA1MCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAogICAgIHsgMjUsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKLSAgICB7IDIsIDI2OCB9LAotICAgIHsgMzcsIC0xIH0sCisgICAgeyAyLCAyNjkg
fSwKKyAgICB7IDM4LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LApAQCAtNDUzLDkgKzQ1Myw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29t
cGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKKyAgICB7IDI5LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAtMSwg
LTEgfSwKLSAgICB7IDQyLCAtMSB9LAorICAgIHsgNDMsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00NjksNyArNDY5LDcgQEAgc3Rh
dGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCisgICAgeyA0
OCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKQEAgLTQ4NCw3ICs0ODQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5k
ZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMjgsIC0xIH0s
Ci0gICAgeyAzMSwgMjYzIH0sCisgICAgeyAzMiwgMjYzIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IDUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMg
Y29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzMywgMjY3IH0sCisgICAgeyAzNCwg
MjY4IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDE3LCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4
IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAot
ICAgIHsgNTYsIC0xIH0sCisgICAgeyA0NywgMjY0IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgMywgLTEgfSwKQEAgLTU1MCwxMiArNTUwLDEyIEBAIHN0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ4LCAyNjIgfSwKKyAgICB7IDQ5LCAy
NjIgfSwKICAgICB7IDExLCAyNjEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgNjMsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ3LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC01NjUsMTAg
KzU2NSwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAg
eyAyNiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzMCwg
LTEgfSwKKyAgICB7IDMxLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDUsIC0xIH0sCiAgICAgeyA3LCAtMSB9LAogICAgIHsg
NTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTU3NywxNCArNTc3LDE1IEBAIHN0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDI3LCAyNjUgfSwKLSAgICB7IDI5LCAy
NjAgfSwKLSAgICB7IDMyLCAtMSB9LAotICAgIHsgMzksIC0xIH0sCi0gICAgeyA0MSwgLTEgfSwK
LSAgICB7IDQzLCAtMSB9LAotICAgIHsgNDksIC0xIH0sCisgICAgeyAyNywgMjY2IH0sCisgICAg
eyAzMCwgMjYwIH0sCisgICAgeyAzMywgLTEgfSwKKyAgICB7IDQwLCAtMSB9LAorICAgIHsgNDIs
IC0xIH0sCisgICAgeyA0NCwgLTEgfSwKKyAgICB7IDUwLCAtMSB9LAogICAgIHsgNTUsIC0xIH0s
CisgICAgeyA1NiwgLTEgfSwKICAgICB7IDU3LCAtMSB9LAogICAgIHsgNTksIC0xIH0sCiAgICAg
eyA2NCwgLTEgfSwKQEAgLTYzNiw2ICs2MzcsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFs
dWUgSlNUZXN0R2xvYmFsCiAgICAgeyAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9
IH0sCiAgICAgeyAiVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xv
YmFsT2JqZWN0VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xv
YmFsT2JqZWN0VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yKSB9IH0sCiAgICAg
eyAiQXVkaW8iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE1hcExpa2UiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RNYXBMaWtlQ29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RH
bG9iYWxPYmplY3RUZXN0TWFwTGlrZUNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVj
dG9yKSB9IH0sCiAgICAgeyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSB9IH0sCkBAIC02
NTIsMTYgKzY1NCwxNSBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFs
CiAgICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEds
b2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9
IH0sCiAgICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckNv
bnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJB
bmRTZXR0ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyQW5kU2V0dGVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVjdG9yKSB9IH0sCi0g
ICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlu
c0NvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKSB9IH0sCi0gICAg
eyAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGlucyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xv
YmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGluc0NvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVj
dG9yKSB9IH0sCisgICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9y
KSB9IH0sCisgICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVj
dFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluc0NvbnN0cnVjdG9yKSB9IH0sCiAjaWYgRU5BQkxFKENvbmRpdGlvbkRlcml2ZWQpCiAgICAg
eyAiVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RU
ZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRl
c3RPcGVyYXRpb25Db25kaXRpb25hbENvbnN0cnVjdG9yKSB9IH0sCiAjZWxzZQogICAgIHsgMCwg
MCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICAgICB7ICJUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEds
b2JhbE9iamVjdFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0
b3IpIH0gfSwKLSAgICB7ICJUZXN0T3ZlcnJpZGVCdWlsdGlucyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xv
YmFsT2JqZWN0VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0UGx1
Z2luSW50ZXJmYWNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0UGx1Z2luSW50ZXJm
YWNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0UGx1Z2luSW50ZXJmYWNlQ29u
c3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0UmVhZE9ubHlNYXBMaWtlIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RHbG9iYWxPYmplY3RUZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0
UmVhZE9ubHlTZXRMaWtlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0UmVhZE9ubHlT
ZXRMaWtlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0UmVhZE9ubHlTZXRMaWtl
Q29uc3RydWN0b3IpIH0gfSwKQEAgLTE2MDgsNiArMTYwOSwyOSBAQCBib29sIHNldEpTVGVzdEds
b2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0CiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RH
bG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1Y3RvclNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiQXVk
aW8iKTsKIH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAg
ICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKK30KKworRW5jb2RlZEpT
VmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnNDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgIlRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVj
dG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9i
YWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWls
dC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKSwgc3RybGVuKCJUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdElucyIpKSwgdmFsdWUpOworfQorCitib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0
Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29u
c3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIlRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIik7Cit9CisKIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TWFwTGlrZUNvbnN0cnVjdG9yR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRo
aXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpAQCAt
MTk3Niw3MyArMjAwMCw3MyBAQCBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNl
dHRlCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0
SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXJDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIiKTsK
IH0KIAotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3N0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBKU1Rlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7CisgICAg
cmV0dXJuIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldENv
bnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmds
b2JhbE9iamVjdCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rl
c3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVj
dG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdE5hbWVkU2V0
dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVz
dEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMiKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmpl
Y3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBj
b25zdHJ1Y3Rvci4KLSAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMiKSwgc3RybGVuKCJUZXN0TmFtZWRTZXR0ZXJX
aXRoT3ZlcnJpZGVCdWlsdGlucyIpKSwgdmFsdWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIp
LCBzdHJsZW4oIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIikpLCB2
YWx1ZSk7CiB9CiAKLWJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCitib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6
c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIik7CisgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xv
YmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1
Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKTsKIH0KIAotc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCitzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOwor
ICAgIHJldHVybiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlz
T2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFs
T2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2Jh
bE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyIpOworICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2Jh
bE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25z
dHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMiKTsKIH0KIAotc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0NvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4K
LSAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIiksIHN0cmxlbigiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzIikpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMi
KSwgc3RybGVuKCJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
IikpLCB2YWx1ZSk7CiB9CiAKLWJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXMiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9i
amVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXMiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQorc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3JHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVj
dCYgdGhpc09iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7
Ci0gICAgcmV0dXJuIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGluczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworICAgIHJldHVybiBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVj
dD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25z
dHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5z
Q29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
VGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3N0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmpl
Y3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBj
b25zdHJ1Y3Rvci4KLSAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyIpLCBz
dHJsZW4oIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnMiKSksIHZhbHVlKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMiKSwgc3RybGVuKCJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIpKSwgdmFsdWUpOwog
fQogCi1ib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewot
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Q29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIik7CiB9CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uRGVy
aXZlZCkKQEAgLTIwOTcsMjkgKzIxMjEsNiBAQCBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRl
c3RPdmVybG9hZGVkCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+
OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2VDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2Ui
KTsKIH0KIAotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVy
cmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKLXsKLSAgICBVTlVTRURf
UEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0
aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUganNUZXN0R2xv
YmFsT2JqZWN0VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8
anNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvckdldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RPdmVycmlkZUJ1aWx0aW5zIik7
Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0T3ZlcnJp
ZGVCdWlsdGluc0NvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCi17
Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICAv
LyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAgICByZXR1cm4gdGhpc09iamVj
dC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigiVGVzdE92ZXJyaWRlQnVpbHRpbnMiKSwgc3RybGVuKCJUZXN0T3Zl
cnJpZGVCdWlsdGlucyIpKSwgdmFsdWUpOwotfQotCi1ib29sIHNldEpTVGVzdEdsb2JhbE9iamVj
dFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQotewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0
Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0
b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
IlRlc3RPdmVycmlkZUJ1aWx0aW5zIik7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RHbG9iYWxPYmplY3RUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09i
amVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdElucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1MSBAQAor
LyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2pl
Y3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5n
cy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oIgorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCisjaW5jbHVkZSAiSlNET01BYnN0
cmFjdE9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVy
dEludGVyZmFjZS5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKKyNpbmNsdWRl
ICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3Qu
aCIKKyNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCisjaW5jbHVkZSAiSlNOb2RlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgorI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1l
c3BhY2UgSlNDOworCisvLyBGdW5jdGlvbnMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVk
SXRlbShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKKworLy8gQXR0cmli
dXRlcworCitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnND
b25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29u
c3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOworCitjbGFzcyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJv
dG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6Cisg
ICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgSlNUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgIHsKKyAgICAgICAgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1By
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBwdHItPmZpbmlz
aENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBERUNMQVJF
X0lORk87CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VBY2Nl
c3M+CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAg
eworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKK1NUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNQcm90b3R5cGUsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU6OkJhc2Up
OworCit1c2luZyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IgPSBKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
PjsKKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25z
dHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAg
cmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQorCit0ZW1wbGF0ZTw+
IHZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworfQor
Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9y
IHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0
cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJu
YW1lZEl0ZW0iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVGdW5jdGlvbk5h
bWVkSXRlbSksIChpbnRwdHJfdCkgKDEpIH0gfSwKK307CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdElucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSkgfTsK
Kwordm9pZCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5
U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6aW5mbygp
LCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlz
KTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnNfaW5mbyA9IHsgIlRl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKSB9Owor
CitKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
LCBSZWY8VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+JiYgaW1wbCkKKyAgICA6IEpTRE9NV3Jh
cHBlcjxUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qs
IFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
czo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAgc3RhdGljX2Fzc2Vy
dCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwgVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM+Ojp2YWx1ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmpl
Y3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9N
T2JqZWN0LiIpOworCit9CisKK0pTT2JqZWN0KiBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
OjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQoreworICAgIHJldHVybiBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpj
cmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9i
amVjdFByb3RvdHlwZSgpKSk7Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQoreworICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dElucz4odm0sIGdsb2JhbE9iamVjdCk7Cit9CisKK0pTVmFsdWUgSlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluczo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK3ZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluczo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdElucyo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnM6On5KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKCk7Cit9CisKK2Jv
b2wgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgYXV0byogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4ob2JqZWN0KTsK
KyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAg
dXNpbmcgR2V0dGVySURMVHlwZSA9IElETEludGVyZmFjZTxOb2RlPjsKKyAgICBhdXRvIGdldHRl
ckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9w
dGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4geworICAg
ICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0
eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgICAgIGlmICghR2V0dGVySURM
VHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBH
ZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0
VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIH07CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1l
ZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Olllcz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgICAg
IGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZh
bHVlKCkpKTsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3Bl
cnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
Cit9CisKK2Jvb2wgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBWTSYg
dm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7CisgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOworICAgIHVzaW5nIEdl
dHRlcklETFR5cGUgPSBJRExJbnRlcmZhY2U8Tm9kZT47CisgICAgYXV0byBnZXR0ZXJGdW5jdG9y
ID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKKyAgICAgICAgYXV0
byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9B
dG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6Omlz
TnVsbFZhbHVlKHJlc3VsdCkpCisgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURM
VHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJv
bU51bGxhYmxlKHJlc3VsdCkgfTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9
OworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0
eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXM+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhp
c09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgICAgICBhdXRvIHZh
bHVlID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhp
c09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7
CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHNsb3QpOworfQorCit2
b2lkIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3sKKyAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhvYmplY3QsIGluZm8oKSk7CisgICAgZm9y
IChhdXRvJiBwcm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVkUHJv
cGVydHlOYW1lcygpKQorICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwor
fQorCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBJRExP
cGVyYXRpb248SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz46OmNhc3QoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQoreworICAgIHJl
dHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKK30KKwor
RW5jb2RlZEpTVmFsdWUganNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cisg
ICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldENvbnN0cnVjdG9yKEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkp
KTsKK30KKworYm9vbCBzZXRKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIFZNJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKKyAgICAgICAg
dGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25z
dHJ1Y3RvcgorICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKK30KKwor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbUJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFt
ZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpZiAoVU5M
SUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Cisg
ICAgYXV0byBuYW1lID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLm5hbWVkSXRlbShXVEZNb3Zl
KG5hbWUpKSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0ZW0oSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz46OmNhbGw8anNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtQm9keT4o
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJuYW1lZEl0ZW0iKTsKK30KKworSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6c3Vic3BhY2VGb3JJ
bXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGll
bnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuZ2V0KCkpCisgICAgICAgIHJldHVybiBz
cGFjZTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHx8ICFKU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zOjpuZWVkc0Rlc3RydWN0aW9uKTsKKyAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnM+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuZ2V0KCk7CitJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rlc3RMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRP
dXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3Bh
Y2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5H
U19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKK3ZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVy
KQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdElucyo+KGNlbGwpOworICAgIGFuYWx5emVyLnNldFdyYXBwZWRPYmplY3RGb3JDZWxsKGNl
bGwsICZ0aGlzT2JqZWN0LT53cmFwcGVkKCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIGFuYWx5emVyLnNldExhYmVsRm9yQ2VsbChjZWxs
LCAidXJsICIgKyB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVybCgpLnN0
cmluZygpKTsKKyAgICBCYXNlOjphbmFseXplSGVhcChjZWxsLCBhbmFseXplcik7Cit9CisKK2Jv
b2wgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNp
dG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQoreworICAgIFVOVVNFRF9QQVJBTSho
YW5kbGUpOworICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKKyAgICBVTlVTRURfUEFSQU0ocmVh
c29uKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdEluc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwg
dm9pZCogY29udGV4dCkKK3sKKyAgICBhdXRvKiBqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
ID0gc3RhdGljX2Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KGhhbmRsZS5zbG90
KCktPmFzQ2VsbCgpKTsKKyAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVy
V29ybGQqPihjb250ZXh0KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMtPndyYXBwZWQoKSwganNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyk7Cit9CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisjaWYgUExBVEZPUk0oV0lO
KQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZv
aWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0BX
ZWJDb3JlQEA2QkAiKVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBf
WlRWTjdXZWJDb3JlMjZUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0VbXTsgfQorI2VuZGlmCisj
ZW5kaWYKKworSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdElucz4mJiBpbXBsKQoreworCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQor
ICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGlt
cGwucHRyKCkpOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBv
aW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0BXZWJD
b3JlQEA2QkAiKTsKKyNlbHNlCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9a
VFZON1dlYkNvcmUyNlRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRVsyXTsKKyNlbmRpZgorCisg
ICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyBkb2VzIG5vdCBo
YXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50YXRp
b25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHltb3JwaGljPFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zPjo6dmFsdWUsICJUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyBpcyBub3QgcG9seW1vcnBo
aWMiKTsKKworICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZl
IGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgorICAgIC8vIFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zIGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyBoYXMgc3Vi
Y2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJl
cXVpcmUgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgeW91IHRvIG9wdCBvdXQgb2YgYmluZGlu
ZyBoYXJkZW5pbmcKKyAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0
dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCisgICAgUkVMRUFTRV9BU1NF
UlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOworI2VuZGlm
CisgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KGds
b2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zJiBpbXBsKQoreworICAgIHJl
dHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisK
K1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Ojp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAo
YXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyo+KHZtLCB2YWx1ZSkpCisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDk4IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
IDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4geworcHVi
bGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM+OworICAgIHN0YXRpYyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBjcmVhdGUo
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpCisgICAgeworICAgICAg
ICBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KGdsb2JhbE9iamVjdC0+
dm0oKS5oZWFwKSkgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyhzdHJ1Y3R1cmUsICpnbG9i
YWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGds
b2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3Rh
dGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxP
YmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBK
U0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9
IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpK
U0NlbGwqKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4g
SlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6
VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpN
YXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAg
IGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9y
SW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
ckltcGwoSlNDOjpWTSYgdm0pOworICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCos
IEpTQzo6SGVhcEFuYWx5emVyJik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Q
cm9wZXJ0eVNsb3RJc0ltcHVyZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5
SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0
UHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworcHJvdGVj
dGVkOgorICAgIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMoSlNDOjpTdHJ1Y3R1cmUqLCBK
U0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4mJik7CisK
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CisKK2NsYXNzIEpTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7
CitwdWJsaWM6CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3Im
LCBjb25zdCBjaGFyKiopOworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKK307CisKK2lubGluZSBKU0M6OldlYWtIYW5k
bGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zKikKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsdEluc093bmVyPiBvd25lcjsKKyAgICByZXR1cm4gJm93bmVyLmdldCgpOworfQor
CitpbmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyogd3Jh
cHBhYmxlT2JqZWN0KQoreworICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7Cit9CisKK0pTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIGltcGwpIHsgcmV0dXJu
IGltcGwgPyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDog
SlNDOjpqc051bGwoKTsgfQorSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zPiYmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBSZWZQdHI8VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+JiYgaW1wbCkgeyBy
ZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQorCit0ZW1w
bGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnM+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1Rlc3RMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zOworICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdElucyo7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQCBib29sIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlck5vSWRlbnRpCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVy
SURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVl
RnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAg
ICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9w
ZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQ
cm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
Z2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsK
ICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
MCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDAsNyArMjAwLDcgQEAgYm9v
bCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aQogICAgICAgICAgICAgcmV0dXJu
IHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5
cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNz
VmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAg
IGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9w
ZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNyArMTcxLDcgQEAgYm9v
bCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogICAgICAgICAgICAgcmV0dXJu
IHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5
cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNz
VmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAg
IGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9w
ZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjAw
LDcgKzIwMCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmcKICAg
ICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5
cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9Owog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQ
cm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5v
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVy
RnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5h
bWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAg
ICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY2NjU5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDcgKzE4MCw3
IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW4KICAgICAgICAgICAg
IHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0
ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9
IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVy
dHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhp
c09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZh
bHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5h
bWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3Qs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTIwOSw3ICsyMDksNyBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVuCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50
YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3Vs
dCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRv
IG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0
aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zp
c2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsK
ICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRW
YWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllcjo6Z2V0CiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURM
VHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJv
bU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9
OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0
eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9w
ZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6
Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0
dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAg
ICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMTgzLDcgKzE4Myw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyOjpnZXQKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBs
ZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUo
cmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYg
KGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRl
QnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNj
ZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9y
KSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0y
MDUsNyArMjA1LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmRlbAog
ewogICAgIGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlck5vSWRl
bnRpZmllcio+KGNlbGwpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
LSAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAo
aXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgcmV0
dXJuIGltcGwuZGVsZXRlTmFtZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0
eU5hbWUpKTsKICAgICB9CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxs
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjE3LDcgKzIx
Nyw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpkZWwKICAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb20odm0sIGluZGV4KTsKLSAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlk
ZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSkpIHsKKyAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFt
ZSkpIHsKICAgICAgICAgcmV0dXJuIGltcGwuZGVsZXRlTmFtZWRQcm9wZXJ0eShwcm9wZXJ0eU5h
bWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICB9CiAgICAgcmV0dXJuIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjIsNyArMTYyLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbgogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5
cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsK
LSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8
T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpO
bz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRl
ckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTE4Myw3ICsxODMsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJl
c3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChh
dXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1
aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjA1
LDcgKzIwNSw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24KIHsK
ICAgICBhdXRvJiB0aGlzT2JqZWN0ID0gKmpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbio+KGNlbGwpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKLSAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKKyAgICBp
ZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAg
YXV0byByZXN1bHQgPSBpbXBsLmRlbGV0ZU5hbWVkUHJvcGVydHkocHJvcGVydHlOYW1lVG9TdHJp
bmcocHJvcGVydHlOYW1lKSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkBAIC0yMjQsNyArMjI0LDcgQEAgYm9vbCBKU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbgogICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgp
OwotICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkgeworICAgIGlm
IChpc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICBh
dXRvIHJlc3VsdCA9IGltcGwuZGVsZXRlTmFtZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmlu
Zyhwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewog
ICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY2NjU5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIGJvb2wg
SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmcKICAgICAgICAgICAgIHJldHVybiB0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBl
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zp
c2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBp
ZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVy
dHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODksNyArMTg5LDcgQEAgYm9vbCBKU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZwogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdl
dHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RW
YWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVk
UHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhp
c09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5h
bWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgp
KSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyOjpkCiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIqPihjZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7Ci0gICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJp
ZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpKSB7CisgICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpKSB7CiAgICAgICAgIGltcGwubmFtZWREZWxldGVyKHByb3BlcnR5TmFtZVRvU3RyaW5nKHBy
b3BlcnR5TmFtZSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yMjQsNyArMjI0
LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZAogICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbSh2bSwgaW5kZXgpOwotICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRl
QnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lKSkgeworICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
KSkgewogICAgICAgICBpbXBsLm5hbWVkRGVsZXRlcihwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZp
c2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzEsNyArMTcxLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRl
cgogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQp
IH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBu
YW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGlu
czo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBn
ZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9i
YWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAg
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIwMCw3ICsy
MDAsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyCiAgICAgICAg
ICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsg
R2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0
b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0
byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92
ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjI2LDcgKzIyNiw3IEBAIGJv
b2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIKICAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4KHBy
b3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiAhaW1wbC5pc1N1cHBvcnRlZFByb3BlcnR5SW5k
ZXgoaW5kZXgudmFsdWUoKSk7Ci0gICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJp
ZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpKSB7CisgICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpKSB7CiAgICAgICAgIHJldHVybiBpbXBsLmRlbGV0ZU5hbWVkUHJvcGVydHkocHJvcGVydHlO
YW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgfQogICAgIHJldHVybiBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHJl
dmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDcg
KzE2Miw3IEBAIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6Z2V0T3duUHIKICAgICAg
ICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUg
eyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9w
ZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVu
Y3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVk
UHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBh
dXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNP
YmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODMsNyArMTgzLDcgQEAg
Ym9vbCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoOjpnZXRPd25QcgogICAgICAgICAgICAgcmV0
dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklE
TFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNj
ZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewor
ICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUg
PSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQ
cm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFs
dWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlm
aWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIGJvb2wgSlNUZXN0TmFt
ZWRHZXR0ZXJOb0lkZW50aWZpZXI6OmdldE8KICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBH
ZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0
VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1l
ZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBu
YW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUo
KSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllcjo6Z2V0TwogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5
cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsK
LSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8
T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVy
dHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpO
bz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRl
ckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
ci5jcHAJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
Zmllcjo6Z2UKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBs
ZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUo
cmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYg
KGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRl
QnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNj
ZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9y
KSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
ODksNyArMTg5LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjpnZQog
ICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9u
VHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1l
ZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6
Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0
ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxl
TmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxP
YmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAg
ICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRp
Zmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY2NjU5
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBA
IGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmdldE8KICAgICAgICAgICAgIHJl
dHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJ
RExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFj
Y2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsK
KyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8
TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVl
ID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVk
UHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTE4Myw3ICsxODMsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZXRP
CiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRp
b25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkg
fTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRvIG5h
bWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5z
OjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdl
dHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2li
bGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAg
ICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCBib29sIEpTVGVzdE5h
bWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246CiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUg
R2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFj
dFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFt
ZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0
aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8g
bmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVl
KCkpKTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oMCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODMsNyArMTgzLDcg
QEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogICAgICAgICAgICAg
cmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRl
cklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0g
YWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkg
eworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0
eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFs
dWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFt
ZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjgsNyArMTY4LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
OjpnZQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVu
dGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1
bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKLSAgICBpZiAoYXV0
byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWls
dGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
LCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NW
aXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxH
bG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7
CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAgICAgICAgIHNsb3Quc2V0
VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMTg5LDcgKzE4OSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllcjo6Z2UKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVG
cm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFBy
b3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdElu
czo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBn
ZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwog
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigw
KSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9uIDI2NjY1
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDcgKzE4
MCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjoKICAgICAgICAg
ICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBH
ZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0
eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rv
cikpIHsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJv
cGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
dGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewogICAgICAgICBhdXRv
IHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmpl
Y3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTIwOSw3ICsyMDksNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXI6CiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJl
c3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChh
dXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1
aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vz
c1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3Rvcikp
IHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCShyZXZpc2lvbiAy
NjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4MCw3ICsxODAsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50
YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3Vs
dCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9OwotICAgIGlmIChhdXRv
IG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0
aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGdldHRlckZ1bmN0b3IpKSB7CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zp
c2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Ok5vPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsK
ICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgc2xvdC5zZXRW
YWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0yMDksNyArMjA5LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklE
TFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZy
b21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAg
fTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVy
dHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgIGlmIChhdXRvIG5hbWVkUHJv
cGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
OjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdl
dHRlckZ1bmN0b3IpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CiAg
ICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDAp
LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzNjcgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMuaCIKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1
ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgorI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25z
LmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rv
ck5vdENvbnN0cnVjdGFibGUuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCisj
aW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlv
blByb3RvdHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCisvLyBB
dHRyaWJ1dGVzCisKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CisKK2Ns
YXNzIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUg
ZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgeworICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU+KHZt
LmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5G
TzsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4K
KyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisg
ICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlLCBCYXNlKTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKyAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxP
YmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihKU0M6OlZNJik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSwgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6QmFzZSk7
CisKK3VzaW5nIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25z
dHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OworCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yOjpwcm90
b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICByZXR1cm4gZ2xvYmFs
T2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3I6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sK
KyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6cHJvdG90eXBlKHZtLCBnbG9iYWxP
YmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxT
dHJpbmcodm0sICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyJfcyks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
LCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Cit9CisKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcikgfTsK
KworLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90
eXBlVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcikgfSB9LAor
fTsKKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
UHJvdG90eXBlKSB9OworCit2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjppbmZvKCksIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRo
aXMpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCitj
b25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElu
czo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpIH07CisKK0pTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OkpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucz4mJiBpbXBsKQorICAgIDogSlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92
ZShpbXBsKSkKK3sKK30KKwordm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisKKyAgICBzdGF0
aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucz46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBt
YXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xh
c3Mgc3ViY2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7CisKK30KKworSlNPYmplY3QqIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmNyZWF0ZVByb3RvdHlwZShW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU6OmNyZWF0
ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdEluc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpKTsKK30KKworSlNPYmplY3QqIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTVByb3RvdHlw
ZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPih2bSwgZ2xvYmFs
T2JqZWN0KTsKK30KKworSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8
Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKK30KKwordm9pZCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpkZXN0cm95KEpTQzo6SlND
ZWxsKiBjZWxsKQoreworICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zKj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6fkpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMoKTsKK30KKworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihvYmpl
Y3QpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
KyAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOworICAgIGF1dG8gZ2V0dGVy
RnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0
aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7CisgICAg
ICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5
TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgaWYgKCFHZXR0ZXJJRExU
eXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdl
dHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RW
YWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgfTsKKyAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVk
UHJvcGVydHk8TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6WWVzPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICAgICAg
YXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RG
TW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9i
amVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworYm9v
bCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zKj4ob2JqZWN0KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBp
bmRleCk7CisgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKKyAgICBhdXRv
IGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUp
IC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4g
eworICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShw
cm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgICAgIGlmICghR2V0
dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiB0eXBl
bmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpl
eHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OworICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIH07CisgICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2li
bGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Olllcz4oKmxleGljYWxHbG9i
YWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Cisg
ICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgc2xvdCk7Cit9
CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZSBtb2RlKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4ob2JqZWN0KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKG9iamVjdCwgaW5mbygpKTsKKyAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6
IHRoaXNPYmplY3QtPndyYXBwZWQoKS5zdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkpCisgICAgICAg
IHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHByb3BlcnR5TmFt
ZSkpOworICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7Cit9CisKK2Jvb2wgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0UHJvcGVydHlTbG90KQoreworICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3Zl
cnJpZGVCdWlsdElucyo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKKworICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsK
KyAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOworICAgICAgICB0aGlzT2JqZWN0
LT53cmFwcGVkKCkuc2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFt
ZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKK30KKworYm9vbCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpwdXRCeUluZGV4KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGlu
ZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4oY2VsbCk7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
KTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB0cnVlKTsKKyAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc2V0TmFtZWRJdGVtKHByb3BlcnR5
TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29u
c3QgUHJvcGVydHlEZXNjcmlwdG9yJiBwcm9wZXJ0eURlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhy
b3cpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4ob2JqZWN0KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBpZiAoIXByb3BlcnR5TmFtZS5p
c1N5bWJvbCgpKSB7CisgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlzRGF0YURlc2Ny
aXB0b3IoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
KTsKKyAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlEZXNjcmlwdG9yLnZhbHVlKCkpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOworICAgICAgICB0aGlzT2JqZWN0
LT53cmFwcGVkKCkuc2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFt
ZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgUHJvcGVydHlEZXNjcmlwdG9yIG5ld1Byb3BlcnR5RGVzY3JpcHRvciA9IHByb3BlcnR5
RGVzY3JpcHRvcjsKKyAgICBuZXdQcm9wZXJ0eURlc2NyaXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRy
dWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG5ld1Byb3BlcnR5RGVzY3JpcHRvciwgc2hv
dWxkVGhyb3cpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byogcHJvdG90eXBlID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5M
SUtFTFkoIXByb3RvdHlwZSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0Q29uc3RydWN0
b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmpl
Y3QoKSkpOworfQorCitib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7
CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90b3R5
cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlm
IChVTkxJS0VMWSghcHJvdG90eXBlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgcmV0dXJuIHBy
b3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOworfQorCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpzdWJzcGFjZUZvckltcGwo
SlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERh
dGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5nZXQoKSkKKyAgICAg
ICAgcmV0dXJuIHNwYWNlOworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucz4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
T3ZlcnJpZGVCdWlsdElucz4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMp
OworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWls
dElucy5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnZpc2l0T3V0cHV0Q29u
c3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAg
ICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdO
T1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsK
K30KKwordm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjph
bmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCit7CisgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zKj4oY2VsbCk7CisgICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNl
bGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQoKSk7CisgICAgaWYgKHRoaXNPYmplY3QtPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxs
KGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJs
KCkuc3RyaW5nKCkpOworICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKK30K
KworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zT3duZXI6
OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFu
ZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFzb24pCit7
CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CisgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwor
ICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zT3duZXI6OmZpbmFsaXpl
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQoreworICAg
IGF1dG8qIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBzdGF0
aWNfY2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4oaGFu
ZGxlLnNsb3QoKS0+YXNDZWxsKCkpOworICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERP
TVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy0+d3JhcHBlZCgpLCBqc1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKK30KKworI2lmIEVOQUJM
RShCSU5ESU5HX0lOVEVHUklUWSkKKyNpZiBQTEFURk9STShXSU4pCisjcHJhZ21hIHdhcm5pbmco
ZGlzYWJsZTogNDQ4MykKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRp
ZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQFdlYkNv
cmVAQDZCQCIpW10pKCk7IH0KKyNlbHNlCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZO
N1dlYkNvcmU0MVRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRVtdOyB9
CisjZW5kaWYKKyNlbmRpZgorCitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpCit7CisKKyNpZiBF
TkFCTEUoQklORElOR19JTlRFR1JJVFkpCisgICAgY29uc3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9p
bnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7CisjaWYgUExBVEZPUk0oV0lOKQor
ICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRpZmllcigiPz9fN1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQFdlYkNvcmVAQDZCQCIpOworI2Vs
c2UKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTQxVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNFWzJdOworI2VuZGlmCisKKyAg
ICAvLyBJZiB0aGlzIGZhaWxzIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKKyAgICAv
LyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRl
ZmluaXRpb24KKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+Ojp2YWx1ZSwgIlRlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIGlzIG5vdCBwb2x5bW9ycGhpYyIpOworCisgICAg
Ly8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIg
ZnJlZSBidWcsIG9yCisgICAgLy8gVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zIGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAorICAgIC8vIHRvIHRvSlMo
KSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdElucyB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZworICAgIC8vIGJ5IGFk
ZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2Ug
SURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09
IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBl
cjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4oZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMmIGltcGwpCit7Cisg
ICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsK
K30KKworVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnRvV3JhcHBlZChKU0M6OlZNJiB2
bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4odm0s
IHZhbHVlKSkKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTAxIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3Vy
Y2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRl
LWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiSlNET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5T3ZlcnJpZGVCdWlsdElucz4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdy
YXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OworICAgIHN0
YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBjcmVhdGUo
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwp
CisgICAgeworICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyhzdHJ1Y3R1cmUsICpn
bG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAg
c3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9i
YWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0m
LCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5T3ZlcnJpZGVCdWlsdElucyogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwor
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwor
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCos
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlTbG90Jik7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6
OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOworICAgIHN0YXRpYyBi
b29sIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5
TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBi
b29sIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0
YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIGNvbnN0IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9y
JiwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2Vs
bCopOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok1heUhh
dmVJbmRleGVkQWNjZXNzb3JzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdl
dENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYg
Y29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBs
KHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1w
bChKU0M6OlZNJiB2bSk7CisgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlND
OjpIZWFwQW5hbHl6ZXImKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3Bl
cnR5U2xvdElzSW1wdXJlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9w
ZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OlByb2hp
Yml0c1Byb3BlcnR5Q2FjaGluZzsKK3Byb3RlY3RlZDoKKyAgICBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmpl
Y3QmLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+JiYpOwor
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCitjbGFzcyBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zT3duZXIgOiBwdWJsaWMgSlNDOjpX
ZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBK
U0M6OlNsb3RWaXNpdG9yJiwgY29uc3QgY2hhcioqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxp
emUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Cit9OworCitpbmxp
bmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyopCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNPd25lcj4gb3duZXI7CisgICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30KKworaW5saW5lIHZv
aWQqIHdyYXBwZXJLZXkoVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMq
IHdyYXBwYWJsZU9iamVjdCkKK3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OworfQorCitK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3Qq
LCBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyYpOworaW5saW5lIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zKiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6
SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2Jh
bE9iamVjdCosIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4m
Jik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmUHRyPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGlt
cGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0K
KwordGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiB7CisgICAgdXNpbmcgV3JhcHBlckNs
YXNzID0gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluczsKKyAgICB1
c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMqOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NTcgQEAKKy8q
CisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0
LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5oIgorCisjaW5j
bHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCisj
aW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0RPTUF0dHJp
YnV0ZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5o
IgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTU9w
ZXJhdGlvbi5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5s
aW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRlclBy
ZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2ViQ29y
ZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCisvLyBGdW5jdGlvbnMKKworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKKworLy8gQXR0cmlidXRlcworCitKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
VW5mb3JnZWFibGVBdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKKworY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6
SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25G
aW5hbE9iamVjdDsKKyAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgewor
ICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQ
cm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlPih2bS5oZWFw
KSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5G
TzsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4K
KyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisg
ICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUsIEJhc2Up
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgewor
ICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogSlNDOjpK
U05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c1Byb3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzUHJvdG90eXBlOjpCYXNlKTsKKwordXNpbmcgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXM+OworCisvKiBIYXNoIHRhYmxlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNU
YWJsZUluZGV4WzRdID0geworICAgIHsgLTEsIC0xIH0sCisgICAgeyAxLCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAwLCAtMSB9LAorfTsKKworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVGFi
bGVWYWx1ZXNbXSA9Cit7CisgICAgeyAidW5mb3JnZWFibGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1VuZm9yZ2Vh
YmxlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgInVuZm9yZ2VhYmxlT3BlcmF0aW9uIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1
bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNJ
bnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0s
Cit9OworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc1RhYmxlID0geyAyLCAzLCB0cnVlLCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmluZm8oKSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVGFibGVWYWx1ZXMsIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1RhYmxlSW5kZXggfTsKK3Rl
bXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJB
TSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQor
Cit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMiX3MpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IpIH07CisK
Ky8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJv
dG90eXBlVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3Ry
dWN0b3IpIH0gfSwKK307CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZSkgfTsKKwordm9pZCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAg
cmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXM6OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKKyAgICBKU0Nf
VE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6c19pbmZv
ID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyIsICZC
YXNlOjpzX2luZm8sICZKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpIH07CisKK0pTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcz4mJiBpbXBsKQorICAgIDogSlNET01XcmFwcGVyPFRlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+KHN0cnVjdHVyZSwgZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGltcGwpKQoreworfQorCit2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8o
KSkpOworCisgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVj
dCwgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz46OnZhbHVl
LCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91
Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3ViY2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7CisK
K30KKworSlNPYmplY3QqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllczo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90
eXBlKCkpKTsKK30KKworSlNPYmplY3QqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllczo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4odm0sIGdsb2JhbE9iamVjdCk7Cit9
CisKK0pTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworfQorCit2b2lkIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6ZGVzdHJveShKU0M6
OkpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0
LT5KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6On5KU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMoKTsKK30KKworYm9v
bCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKj4ob2JqZWN0KTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgdXNpbmcgR2V0dGVySURMVHlw
ZSA9IElETERPTVN0cmluZzsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhp
c09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklE
TFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4geworICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVy
dHlOYW1lKSk7CisgICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0
KSkKKyAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRh
dGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0
KSB9OworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH07CisgICAgaWYgKGF1dG8g
bmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVl
KCkpKTsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oMCksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy
biBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNP
YmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2ln
bmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+KG9iamVjdCk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOworICAgIHVz
aW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7CisgICAgYXV0byBnZXR0ZXJGdW5jdG9y
ID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKKyAgICAgICAgYXV0
byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9B
dG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6Omlz
TnVsbFZhbHVlKHJlc3VsdCkpCisgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURM
VHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJv
bU51bGxhYmxlKHJlc3VsdCkgfTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9
OworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0
eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgICAgIGF1dG8gdmFs
dWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFt
ZWRQcm9wZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgc2xvdCk7Cit9CisKK3ZvaWQgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1v
ZGUpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhvYmplY3QsIGluZm8oKSk7CisgICAgZm9yIChhdXRvJiBwcm9wZXJ0eU5hbWUgOiB0aGlz
T2JqZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpKQorICAgICAgICBwcm9w
ZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBwcm9wZXJ0eU5hbWUpKTsK
KyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworfQorCitib29sIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0UHJvcGVydHlTbG90KQoreworICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2wo
KSkgeworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0LT52
bSgpIH07CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90
eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICBib29s
IGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0
UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgICAgIGlmICghZm91bmQp
IHsKKyAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOworICAg
ICAgICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVU
b1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBKU09iamVjdDo6
cHV0KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHB1dFByb3BlcnR5U2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVl
LCBib29sIHNob3VsZFRocm93KQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqPihjZWxsKTsKKyAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKKyAgICBQcm9wZXJ0eVNsb3Qg
c2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnksICZ2bSB9OworICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJv
dG90eXBlRGlyZWN0KHZtKTsKKyAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkg
JiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQo
KTsKKyAgICBpZiAoIWZvdW5kKSB7CisgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVl
KTsKKyAgICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5h
bWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBKU09iamVjdDo6cHV0QnlJbmRleChj
ZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKK30K
KworYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0
eURlc2NyaXB0b3ImIHByb3BlcnR5RGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKK3sKKyAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1i
b2woKSkgeworc3RhdGljIGJvb2wgaXNMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnR5TmFtZShQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBwcm9wZXJ0eU5hbWUgPT0gInVu
Zm9yZ2VhYmxlQXR0cmlidXRlIiB8fCBwcm9wZXJ0eU5hbWUgPT0gInVuZm9yZ2VhYmxlT3BlcmF0
aW9uIjsKK30KKworICAgICAgICBpZiAoIWlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUo
cHJvcGVydHlOYW1lKSkgeworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNh
bEdsb2JhbE9iamVjdC0+dm0oKSB9OworICAgICAgICAgICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0
KCk7CisgICAgICAgICAgICBpZiAoIWZvdW5kKSB7CisgICAgICAgICAgICAgICAgaWYgKCFwcm9w
ZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAg
ICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eURlc2NyaXB0b3IudmFsdWUoKSk7CisgICAgICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB0
aGlzT2JqZWN0LT53cmFwcGVkKCkuc2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHBy
b3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIFByb3BlcnR5
RGVzY3JpcHRvciBuZXdQcm9wZXJ0eURlc2NyaXB0b3IgPSBwcm9wZXJ0eURlc2NyaXB0b3I7Cisg
ICAgbmV3UHJvcGVydHlEZXNjcmlwdG9yLnNldENvbmZpZ3VyYWJsZSh0cnVlKTsKKyAgICByZXR1
cm4gSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBuZXdQcm9wZXJ0eURlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKK30K
KwordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzKiBJRExBdHRyaWJ1dGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+KEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcyogSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQoreworICAgIHJldHVybiBqc0R5bmFt
aWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+
KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkp
OworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgVk0m
IHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVO
TElLRUxZKCFwcm90b3R5cGUpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6Z2V0Q29u
c3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9i
YWxPYmplY3QoKSkpOworfQorCitib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1
dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKKyAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rv
cgorICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKK30KKworc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc1VuZm9yZ2VhYmxlQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMmIHRoaXNPYmplY3QpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC51bmZvcmdlYWJsZUF0dHJpYnV0ZSgpKSkpOworfQor
CitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNVbmZvcmdlYWJsZUF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXM+OjpnZXQ8anNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzVW5mb3JnZWFibGVBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ1bmZvcmdlYWJs
ZUF0dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5j
dGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVy
YXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9Q
QVJBTShjYWxsRnJhbWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CisgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CisgICAgaW1wbC51bmZvcmdlYWJsZU9wZXJhdGlv
bigpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcz46OmNhbGw8anNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uQm9k
eT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ1bmZvcmdlYWJsZU9wZXJhdGlv
biIpOworfQorCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXM6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAg
ICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAg
ICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFj
ZTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
cz4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6
bmVlZHNEZXN0cnVjdGlvbik7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXM+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllcyk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMp
OworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dp
Y2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6
dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJh
aW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9X
QVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjphbmFseXplSGVhcChKU0NlbGwqIGNl
bGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMqPihj
ZWxsKTsKKyAgICBhbmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxsLCAmdGhpc09i
amVjdC0+d3JhcHBlZCgpKTsKKyAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKQorICAgICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwgInVybCAiICsg
dGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJpbmcoKSk7Cisg
ICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOworfQorCitib29sIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc093bmVyOjppc1JlYWNoYWJs
ZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCos
IFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQoreworICAgIFVOVVNF
RF9QQVJBTShoYW5kbGUpOworICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKKyAgICBVTlVTRURf
UEFSQU0ocmVhc29uKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzT3duZXI6OmZpbmFsaXplKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQoreworICAgIGF1dG8q
IGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyA9IHN0YXRp
Y19jYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+
KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKKyAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2Fz
dDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwg
JmpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy0+d3JhcHBl
ZCgpLCBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOwor
fQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikKKyNw
cmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgq
Y29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0BXZWJDb3JlQEA2QkAiKVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7
IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlNDZUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzRVtdOyB9CisjZW5kaWYKKyNlbmRpZgorCitKU0M6OkpTVmFsdWUg
dG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXM+JiYgaW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAg
ICBjb25zdCB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBs
LnB0cigpKTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2lu
dGVyID0gX19pZGVudGlmaWVyKCI/P183VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0BXZWJDb3JlQEA2QkAiKTsKKyNlbHNlCisgICAgdm9pZCogZXhwZWN0ZWRW
VGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmU0NlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNFWzJdOworI2VuZGlmCisKKyAgICAvLyBJZiB0aGlzIGZhaWxz
IFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgZG9lcyBub3Qg
aGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0
aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPjo6dmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzIGlzIG5vdCBwb2x5bW9ycGhpYyIpOworCisgICAgLy8g
SWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJl
ZSBidWcsIG9yCisgICAgLy8gVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcyBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcyBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKKyAgICAvLyB0
byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcyB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZwor
ICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRo
ZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFi
bGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1cm4g
Y3JlYXRlV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXMqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllczo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7
CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+KHZtLCB2YWx1ZSkpCisgICAgICAgIHJl
dHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMSBA
QAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHBy
b2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5k
aW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpT
RE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXMgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNl
ID0gSlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXM+OworICAgIHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXMqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcz4mJiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcz4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZt
KCkpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTT2Jq
ZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAg
c3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmpl
Y3QmKTsKKyAgICBzdGF0aWMgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcyogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Cisg
ICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9u
TW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOworICAgIHN0YXRpYyBib29sIHB1dChKU0M6
OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpK
U1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5k
ZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRpYyBib29sIGRl
ZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpQcm9wZXJ0eU5hbWUsIGNvbnN0IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91
bGRUaHJvdyk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAg
REVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNj
ZXNzb3JzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9y
KEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICht
b2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9
CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2
bSk7CisgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6
ZXImKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1w
dXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHwgSlND
OjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3Ra
ZXJvIHwgSlNDOjpPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsK
K3Byb3RlY3RlZDoKKyAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPiYmKTsKKworICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKKworY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFu
ZGxlT3duZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNs
b3RWaXNpdG9yJiwgY29uc3QgY2hhcioqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlND
OjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Cit9OworCitpbmxpbmUgSlND
OjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKikKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzT3duZXI+IG93bmVyOworICAgIHJldHVybiAmb3duZXIuZ2V0KCk7Cit9CisKK2lubGlu
ZSB2b2lkKiB3cmFwcGVyS2V5KFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXMqIHdyYXBwYWJsZU9iamVjdCkKK3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0
OworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9i
YWxPYmplY3QqLCBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
Jik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyogaW1wbCkgeyByZXR1cm4gaW1w
bCA/IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6
OmpzTnVsbCgpOyB9CitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcz4mJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXds
eUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPFRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXds
eUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VO
b25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdy
YXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllcz4geworICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1
cm5UeXBlID0gVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMu
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzOCBA
QAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHBy
b2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5k
aW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucy5oIgorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisj
aW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCisjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJh
dGlvbnMuaCIKKyNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCisj
aW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9u
SGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9G
dW5jdGlvblByb3RvdHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXpl
ci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CisvLyBGdW5jdGlvbnMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb24oSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CisKKy8vIEF0dHJpYnV0ZXMKKworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdEluc1VuZm9yZ2VhYmxlQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CisKK2NsYXNzIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnNQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0
IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OworICAg
IHN0YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgeworICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU+KHZtLmhl
YXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHRy
OworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlLCBCYXNlKTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKyAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7
CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6QmFzZSk7CisKK3VzaW5nIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM+OworCisvKiBIYXNoIHRhYmxlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29t
cGFjdEhhc2hJbmRleCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zVGFibGVJbmRleFs0XSA9IHsKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMCwgLTEgfSwK
K307CisKKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNUYWJs
ZVZhbHVlc1tdID0KK3sKKyAgICB7ICJ1bmZvcmdlYWJsZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdEluc1VuZm9yZ2VhYmxlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgInVuZm9y
Z2VhYmxlT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zSW5zdGFuY2VG
dW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAorfTsKKwor
c3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zVGFibGUgPSB7IDIsIDMsIHRy
dWUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnM6OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1RhYmxlVmFsdWVz
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zVGFibGVJbmRleCB9OwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9Q
QVJBTSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwor
fQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7
CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMi
X3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+IGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9y
IHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluc1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3Ry
dWN0b3IpIH0gfSwKK307CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90
eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSkg
fTsKKwordm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJv
cGVydGllcyh2bSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6aW5mbygpLCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJv
dG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VU
X1RSQU5TSVRJT04oKTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnNf
aW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKSB9
OworCitKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+
JiYgaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4oc3RydWN0dXJlLCBn
bG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
czo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAgc3RhdGljX2Fzc2Vy
dCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+Ojp2YWx1
ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3RdIGV2ZW4gdGhv
dWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIpOwor
Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQor
eworICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4odm0sIGdsb2Jh
bE9iamVjdCk7Cit9CisKK0pTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0Q29uc3RydWN0b3Io
Vk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVy
biBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3I+KHZtLCAqanND
YXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK3ZvaWQg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+
KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6On5KU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zKCk7Cit9CisKK2Jvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgYXV0byog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4ob2JqZWN0KTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgdXNpbmcgR2V0
dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKKyAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAo
YXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1l
IEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4geworICAgICAgICBhdXRvIHJlc3Vs
dCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJp
bmcocHJvcGVydHlOYW1lKSk7CisgICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFs
dWUocmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJ
bXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFi
bGUocmVzdWx0KSB9OworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH07CisgICAg
aWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnM6Olllcz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0
b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9w
ZXJ0eS52YWx1ZSgpKSk7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluczo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xv
dCYgc2xvdCkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVj
dCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwor
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOworICAg
IHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7CisgICAgYXV0byBnZXR0ZXJGdW5j
dG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25h
bDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKKyAgICAgICAg
YXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1l
VG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6
OmlzTnVsbFZhbHVlKHJlc3VsdCkpCisgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVy
SURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVl
RnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICB9OworICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9w
ZXJ0eTxMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXM+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
dGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgeworICAgICAgICBhdXRv
IHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmpl
Y3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHNsb3QpOworfQorCit2b2lkIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9w
ZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhvYmplY3QsIGluZm8oKSk7CisgICAgZm9yIChhdXRvJiBwcm9wZXJ0eU5hbWUgOiB0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkuc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpKQorICAgICAgICBwcm9wZXJ0
eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBwcm9wZXJ0eU5hbWUpKTsKKyAg
ICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworfQorCitib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnB1
dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1
dFByb3BlcnR5U2xvdCkKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CisKKyAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CisgICAg
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKKyAgICAgICAgdGhpc09iamVjdC0+d3Jh
cHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCkKK3sKKyAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KGNlbGwpOworICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKworICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7
CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
dHJ1ZSk7CisgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5h
bWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgcHJvcGVy
dHlEZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQoreworICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgaWYgKCFwcm9wZXJ0eU5hbWUu
aXNTeW1ib2woKSkgeworc3RhdGljIGJvb2wgaXNMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnR5TmFt
ZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBwcm9wZXJ0eU5hbWUg
PT0gInVuZm9yZ2VhYmxlQXR0cmlidXRlIiB8fCBwcm9wZXJ0eU5hbWUgPT0gInVuZm9yZ2VhYmxl
T3BlcmF0aW9uIjsKK30KKworICAgICAgICBpZiAoIWlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
eU5hbWUocHJvcGVydHlOYW1lKSkgeworICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0
b3IuaXNEYXRhRGVzY3JpcHRvcigpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eURlc2Ny
aXB0b3IudmFsdWUoKSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHRydWUpOworICAgICAgICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRl
bShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFBy
b3BlcnR5RGVzY3JpcHRvciBuZXdQcm9wZXJ0eURlc2NyaXB0b3IgPSBwcm9wZXJ0eURlc2NyaXB0
b3I7CisgICAgbmV3UHJvcGVydHlEZXNjcmlwdG9yLnNldENvbmZpZ3VyYWJsZSh0cnVlKTsKKyAg
ICByZXR1cm4gSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBuZXdQcm9wZXJ0eURlc2NyaXB0b3IsIHNob3VsZFRocm93
KTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyogSURMQXR0cmlidXRl
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdElucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMqIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6Y2FzdChKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCit7Cisg
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyo+KEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOworfQorCitFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQor
eworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byogcHJvdG90
eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0
Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5n
bG9iYWxPYmplY3QoKSkpOworfQorCitib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgVk0mIHZtID0gSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOworICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgeworICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisg
ICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25z
dHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOworfQorCitzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1VuZm9yZ2VhYmxlQXR0cmlidXRlR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zJiB0aGlz
T2JqZWN0KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwudW5mb3JnZWFibGVBdHRyaWJ1dGUoKSkpKTsKK30KKworRW5jb2RlZEpT
VmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1VuZm9yZ2VhYmxlQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OjpnZXQ8
anNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdEluc1VuZm9yZ2VhYmxlQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidW5m
b3JnZWFibGVBdHRyaWJ1dGUiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb25C
b2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZy
YW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9Q
QVJBTShjYWxsRnJhbWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CisgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CisgICAgaW1wbC51bmZvcmdlYWJsZU9wZXJhdGlv
bigpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0luc3RhbmNlRnVuY3Rp
b25VbmZvcmdlYWJsZU9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zSW5zdGFuY2VGdW5jdGlvblVuZm9y
Z2VhYmxlT3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ1
bmZvcmdlYWJsZU9wZXJhdGlvbiIpOworfQorCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50
RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAg
IGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5nZXQoKSkKKyAgICAgICAg
cmV0dXJuIHNwYWNlOworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4gfHwgIUpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4pCisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgIGVsc2UKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAg
ICBpZiAoJkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6
SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1
dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAor
SUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwordm9pZCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6
ZXIpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4o
Y2VsbCk7CisgICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNP
YmplY3QtPndyYXBwZWQoKSk7CisgICAgaWYgKHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkKKyAgICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiAr
IHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOwor
ICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKK30KKworYm9vbCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNo
YXIqKiByZWFzb24pCit7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CisgICAgVU5VU0VEX1BB
UkFNKHZpc2l0b3IpOworICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOworICAgIHJldHVybiBmYWxz
ZTsKK30KKwordm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQoreworICAgIGF1dG8qIGpzVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMgPSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKj4oaGFuZGxlLnNsb3Qo
KS0+YXNDZWxsKCkpOworICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJX
b3JsZCo+KGNvbnRleHQpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dElucy0+d3JhcHBlZCgpLCBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKK30KKworI2lmIEVOQUJMRShCSU5E
SU5HX0lOVEVHUklUWSkKKyNpZiBQTEFURk9STShXSU4pCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTogNDQ4MykKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigi
Pz9fN1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KKyNlbHNlCitleHRlcm4g
IkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmU3MVRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRVtdOyB9Cisj
ZW5kaWYKKyNlbmRpZgorCitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zPiYmIGltcGwpCit7CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisgICAg
Y29uc3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5w
dHIoKSk7CisjaWYgUExBVEZPUk0oV0lOKQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRl
ciA9IF9faWRlbnRpZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQFdlYkNvcmVAQDZCQCIpOworI2Vs
c2UKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTcxVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnNFWzJdOworI2VuZGlmCisKKyAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKKyAg
ICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNl
IGRlZmluaXRpb24KKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM+Ojp2YWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIGlzIG5vdCBwb2x5bW9ycGhpYyIpOwor
CisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2Ug
YWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8gVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgaGFzIHN1YmNsYXNzZXMu
IElmIFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zIGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAorICAgIC8v
IHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyB5b3UgdG8gb3B0
IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZworICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJs
ZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KKyAg
ICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9p
bnRlcik7CisjZW5kaWYKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4o
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMmIGltcGwpCit7CisgICAgcmV0dXJuIHdyYXAo
bGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKK30KKworVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQoreworICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zKj4odm0sIHZhbHVlKSkKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFw
cGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAxIEBA
CisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJv
amVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRp
bmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNE
T01XcmFwcGVyLmgiCisjaW5jbHVkZSAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaCIKKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4geworcHVibGlj
OgorICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OworICAgIHN0
YXRpYyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGlt
cGwpCisgICAgeworICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KGdsb2JhbE9iamVjdC0+dm0oKS5o
ZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUo
aW1wbCkpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7
CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0
aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYp
OworICAgIHN0YXRpYyBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpT
VmFsdWUpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpK
U09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJy
YXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOworICAg
IHN0YXRpYyBib29sIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOworICAg
IHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cp
OworICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIGNvbnN0IEpTQzo6UHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0M6OkpTQ2VsbCopOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBK
U0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpK
U1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAg
ICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJl
bnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3Bh
Y2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CisgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlND
ZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okdl
dE93blByb3BlcnR5U2xvdElzSW1wdXJlIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHwg
SlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNO
b3RaZXJvIHwgSlNDOjpPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGlu
ZzsKK3Byb3RlY3RlZDoKKyAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKEpTQzo6U3RydWN0dXJlKiwgSlNE
T01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+JiYpOworCisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCitjbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zT3duZXIg
OiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9v
bCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2
b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJiwgY29uc3QgY2hhcioqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4
dCk7Cit9OworCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01X
cmFwcGVyV29ybGQmLCBUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyopCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNPd25lcj4gb3duZXI7CisgICAgcmV0dXJuICZvd25lci5nZXQo
KTsKK30KKworaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqIHdyYXBwYWJs
ZU9iamVjdCkKK3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OworfQorCitKU0M6OkpTVmFs
dWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdElucyYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zKiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1
ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVj
dCosIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4mJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXds
eUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPFRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwp
IHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczsKKyAgICB1
c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcAkocmV2aXNpb24gMjY2NjU5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnMuY3BwCShub25leGlzdGVudCkKQEAgLTEsMzY3ICswLDAgQEAKLS8q
Ci0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0
LgotICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpT
VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaCIKLQotI2luY2x1ZGUgIkFjdGl2
ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgotI2luY2x1ZGUgIkpT
RE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5j
bHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKLSNpbmNsdWRlICJKU0RP
TUNvbnZlcnRTdHJpbmdzLmgiCi0jaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgot
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgotI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLSNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0hlYXBBbmFseXplci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgotI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5o
PgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci11c2luZyBu
YW1lc3BhY2UgSlNDOwotCi0vLyBBdHRyaWJ1dGVzCi0KLUpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29s
IHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7Ci0KLWNsYXNzIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5
cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKLXB1YmxpYzoKLSAgICB1
c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCi0gICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICBy
ZXR1cm4gcHRyOwotICAgIH0KLQotICAgIERFQ0xBUkVfSU5GTzsKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KLSAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCi0gICAgewotICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOwotICAgIH0KLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAg
ICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAg
fQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Ci19OwotU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWls
dGluc1Byb3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc1Byb3Rv
dHlwZTo6QmFzZSk7Ci0KLXVzaW5nIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnNDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+OwotCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0
LmZ1bmN0aW9uUHJvdG90eXBlKCk7Ci19Ci0KLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGluczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFt
ZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7Ci19Ci0KLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVy
V2l0aE92ZXJyaWRlQnVpbHRpbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnND
b25zdHJ1Y3RvcikgfTsKLQotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCi0KLXN0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcikgfSB9LAotfTsK
LQotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKSB9OwotCi12b2lk
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmVp
ZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zOjppbmZvKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5
cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJB
TlNJVElPTigpOwotfQotCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGluczo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVp
bHRpbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMpIH07Ci0KLUpTVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJy
aWRlQnVpbHRpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4mJiBpbXBs
KQotICAgIDogSlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
PihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKLXsKLX0KLQotdm9pZCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIEFTU0VSVChpbmhlcml0
cyh2bSwgaW5mbygpKSk7Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0
aXZlRE9NT2JqZWN0LCBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz46OnZhbHVl
LCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91
Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3ViY2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7Ci0K
LX0KLQotSlNPYmplY3QqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OmNy
ZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17
Ci0gICAgcmV0dXJuIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5
cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJp
ZGVCdWlsdGluc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpKTsKLX0KLQotSlNPYmplY3QqIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxK
U1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPih2bSwgZ2xvYmFsT2JqZWN0KTsK
LX0KLQotSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpnZXRD
b25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17
Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJy
aWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QpKTsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQotewotICAgIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxK
U1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKj4oY2VsbCk7Ci0gICAgdGhpc09i
amVjdC0+SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6fkpTVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMoKTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMqPihvYmplY3QpOwot
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICB1
c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3Rv
ciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8
dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1
dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRv
QXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjpp
c051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklE
TFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZy
b21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
fTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVy
dHk8T3ZlcnJpZGVCdWlsdGluczo6WWVzPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9
IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFBy
b3BlcnR5LnZhbHVlKCkpKTsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpT
T2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNp
Z25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0gICAgdXNpbmcgR2V0dGVy
SURMVHlwZSA9IElETERPTVN0cmluZzsKLSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0
byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdl
dHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmco
cHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUo
cmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBs
ZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUo
cmVzdWx0KSB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH07Ci0gICAgaWYg
KGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRl
QnVpbHRpbnM6Olllcz4oKmxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERP
TVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUobmFtZWRQcm9wZXJ0eS52YWx1
ZSgpKSk7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KDApLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1
cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBpbmRleCwgc2xvdCk7Ci19Ci0KLXZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHBy
b3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAgIFZNJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKG9iamVjdCwgaW5mbygpKTsKLSAgICBmb3IgKGF1dG8m
IHByb3BlcnR5TmFtZSA6IHRoaXNPYmplY3QtPndyYXBwZWQoKS5zdXBwb3J0ZWRQcm9wZXJ0eU5h
bWVzKCkpCi0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHByb3BlcnR5TmFtZSkpOwotICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7Ci19Ci0KLWJv
b2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6cHV0KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0UHJvcGVydHlTbG90
KQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGlucyo+KGNlbGwpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKLQotICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkp
IHsKLSAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwotICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwotICAgICAgICB0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkuc2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5
TmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotCi0gICAgcmV0dXJuIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKLX0KLQotYm9vbCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpwdXRCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4
LCBKU1ZhbHVlIHZhbHVlLCBib29sKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKj4oY2VsbCk7Ci0gICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotCi0gICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsK
LSAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3Ry
aW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNj
cmlwdG9yJiBwcm9wZXJ0eURlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCi17Ci0gICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7Ci0KLSAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAg
IGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICAgICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlEZXNjcmlwdG9yLnZhbHVlKCkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHRydWUpOwotICAgICAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc2V0TmFtZWRJ
dGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgUHJvcGVydHlEZXNjcmlw
dG9yIG5ld1Byb3BlcnR5RGVzY3JpcHRvciA9IHByb3BlcnR5RGVzY3JpcHRvcjsKLSAgICBuZXdQ
cm9wZXJ0eURlc2NyaXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOwotICAgIHJldHVybiBKU09i
amVjdDo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIG5ld1Byb3BlcnR5RGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwotfQotCi1FbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWls
dGluczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJv
dG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwotfQotCi1ib29sIHNldEpTVGVzdE5hbWVkU2V0dGVy
V2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBh
dXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJy
aWRlQnVpbHRpbnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0
dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rv
ciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCi1KU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpzdWJzcGFjZUZvckltcGwo
SlNDOjpWTSYgdm0pCi17Ci0gICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwotICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERh
dGEuc3Vic3BhY2VzKCk7Ci0gICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5nZXQoKSkKLSAgICAgICAgcmV0
dXJuIHNwYWNlOwotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4g
fHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwotICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aE92ZXJyaWRlQnVpbHRpbnMpOwotICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMpOwotICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVC
dWlsdGlucy5nZXQoKTsKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
Ci1JR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKLSAgICBpZiAo
JkpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OnZpc2l0T3V0cHV0Q29uc3Ry
YWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQotICAgICAgICBj
bGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOwotSUdOT1JF
X1dBUk5JTkdTX0VORAotSUdOT1JFX1dBUk5JTkdTX0VORAotICAgIHJldHVybiBzcGFjZTsKLX0K
LQotdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjphbmFseXplSGVh
cChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCi17Ci0gICAgYXV0byogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKj4o
Y2VsbCk7Ci0gICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNP
YmplY3QtPndyYXBwZWQoKSk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkKLSAgICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiAr
IHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOwot
ICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKLX0KLQotYm9vbCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFzb24pCi17Ci0gICAgVU5VU0VEX1BBUkFNKGhh
bmRsZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwotICAgIFVOVVNFRF9QQVJBTShyZWFz
b24pOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4g
aGFuZGxlLCB2b2lkKiBjb250ZXh0KQotewotICAgIGF1dG8qIGpzVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnMgPSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIGF1dG8mIHdvcmxk
ID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVX
cmFwcGVyKHdvcmxkLCAmanNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy0+d3Jh
cHBlZCgpLCBqc1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKTsKLX0KLQotI2lm
IEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSNpZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdh
cm5pbmcoZGlzYWJsZTogNDQ4MykKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9f
aWRlbnRpZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQFdlYkNv
cmVAQDZCQCIpW10pKCk7IH0KLSNlbHNlCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZO
N1dlYkNvcmUzNVRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zRVtdOyB9Ci0jZW5k
aWYKLSNlbmRpZgotCi1KU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwpCi17Ci0KLSNpZiBFTkFCTEUoQklORElO
R19JTlRFR1JJVFkpCi0gICAgY29uc3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZU
YWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIHZvaWQqIGV4
cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRpZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zQFdlYkNvcmVAQDZCQCIpOwotI2Vsc2UKLSAgICB2b2lkKiBleHBl
Y3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTM1VGVzdE5hbWVkU2V0dGVyV2l0aE92
ZXJyaWRlQnVpbHRpbnNFWzJdOwotI2VuZGlmCi0KLSAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNv
IHlvdSBuZWVkIHRvIGFkZCB0aGUKLSAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0
dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KLSAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfcG9seW1vcnBoaWM8VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+Ojp2
YWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIGlzIG5vdCBwb2x5bW9y
cGhpYyIpOwotCi0gICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhh
dmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCi0gICAgLy8gVGVzdE5hbWVkU2V0dGVyV2l0aE92
ZXJyaWRlQnVpbHRpbnMgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zIGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAotICAgIC8vIHRvIHRv
SlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWls
dGlucyB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZwotICAgIC8vIGJ5IGFkZGlu
ZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURM
IGRlZmluaXRpb24KLSAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4
cGVjdGVkVlRhYmxlUG9pbnRlcik7Ci0jZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxU
ZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMmIGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXAo
bGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKLX0KLQotVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnM6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQotewot
ICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldp
dGhPdmVycmlkZUJ1aWx0aW5zKj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVy
LT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaAkocmV2
aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaAkobm9uZXhpc3RlbnQpCkBA
IC0xLDEwMSArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQg
b3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCi0jaW5jbHVkZSAiVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnMuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJp
ZGVCdWlsdGlucz4gewotcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVz
dE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+OwotICAgIHN0YXRpYyBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwpCi0gICAgewotICAgICAgICBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+KGdsb2JhbE9i
amVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyhz
dHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwotICAgICAgICBwdHItPmZp
bmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0g
ICAgfQotCi0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZN
JiwgSlNET01HbG9iYWxPYmplY3QmKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90
eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBUZXN0TmFtZWRT
ZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFs
dWUpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xv
dCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09i
amVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6
UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6
OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkm
LCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0
YXRpYyBib29sIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0
YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwot
ICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIGNvbnN0IEpTQzo6UHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6
OkpTQ2VsbCopOwotCi0gICAgREVDTEFSRV9JTkZPOwotCi0gICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlND
OjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6
Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgSlNDOjpKU1Zh
bHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQotICAgIHsKLSAgICAg
ICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRs
eSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gc3Vic3BhY2VG
b3JJbXBsKHZtKTsKLSAgICB9Ci0gICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9ySW1wbChKU0M6OlZNJiB2bSk7Ci0gICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxs
KiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93
blByb3BlcnR5U2xvdElzSW1wdXJlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90
QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNBbnlGb3JtT2ZH
ZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6
OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKLXByb3RlY3RlZDoKLSAgICBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmpl
Y3QmLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM+JiYpOwotCi0gICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Ci19OwotCi1jbGFzcyBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3du
ZXIgewotcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNp
dG9yJiwgY29uc3QgY2hhcioqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Ci19OwotCi1pbmxpbmUgSlNDOjpXZWFr
SGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyopCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpT
VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNPd25lcj4gb3duZXI7Ci0gICAgcmV0
dXJuICZvd25lci5nZXQoKTsKLX0KLQotaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMqIHdyYXBwYWJsZU9iamVjdCkKLXsKLSAgICByZXR1
cm4gd3JhcHBhYmxlT2JqZWN0OwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVC
dWlsdGlucyYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRl
c3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKiBpbXBsKSB7IHJldHVybiBpbXBsID8g
dG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNO
dWxsKCk7IH0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVC
dWlsdGlucz4mJik7Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmUHRyPFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPiYm
IGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7
IH0KLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPiB7Ci0gICAgdXNpbmcgV3JhcHBlckNsYXNz
ID0gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczsKLSAgICB1c2luZyBUb1dy
YXBwZWRSZXR1cm5UeXBlID0gVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMqOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCShyZXZp
c2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCShub25leGlzdGVu
dCkKQEAgLTEsNDU3ICswLDAgQEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0KLSAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzLmgiCi0KLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJET01J
c29TdWJzcGFjZXMuaCIKLSNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgotI2lu
Y2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5j
bHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKLSNpbmNsdWRlICJKU0RP
TUNvbnZlcnRTdHJpbmdzLmgiCi0jaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgot
I2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUu
aCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+Ci0jaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1VSTC5oPgotCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLS8vIEZ1bmN0aW9u
cwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRp
b24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7Ci0KLS8vIEF0dHJpYnV0
ZXMKLQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1VuZm9yZ2VhYmxl
QXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Ci0KLWNsYXNzIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7
Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKLSAgICBz
dGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNQcm90b3R5cGUq
IGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
UHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKLSAgICAgICAgcHRy
LT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAg
REVDTEFSRV9JTkZPOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNw
YWNlQWNjZXNzPgotICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKLSAgICB7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwotICAgIH0KLSAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBKU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllc1Byb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogSlNDOjpKU05v
bkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotfTsKLVNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBl
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1Byb3RvdHlwZTo6QmFz
ZSk7Ci0KLXVzaW5nIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29u
c3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcz47Ci0KLS8qIEhhc2ggdGFibGUgKi8KLQotc3Rh
dGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzVGFibGVJbmRleFs0XSA9IHsKLSAgICB7IC0xLCAtMSB9LAotICAg
IHsgMSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAotICAgIHsgMCwgLTEgfSwKLX07Ci0KLQotc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAidW5mb3JnZWFibGVBdHRyaWJ1dGUi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzVW5m
b3JnZWFibGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAidW5mb3JnZWFibGVPcGVyYXRpb24iLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5z
dGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAot
fTsKLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc1RhYmxlID0geyAyLCAzLCB0cnVlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllczo6aW5mbygpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc1RhYmxlVmFsdWVzLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc1RhYmxlSW5kZXggfTsKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Ci17Ci0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0
aW9uUHJvdG90eXBlKCk7Ci19Ci0KLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyJfcyksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7Ci19Ci0KLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcikgfTsKLQotLyogSGFzaCB0YWJsZSBmb3IgcHJv
dG90eXBlICovCi0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQotewotICAg
IHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNDb25zdHJ1Y3RvcikgfSB9LAotfTsKLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlOjpzX2luZm8gPSB7ICJU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlKSB9OwotCi12b2lkIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJlaWZ5U3RhdGljUHJv
cGVydGllcyh2bSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6Omlu
Zm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNQcm90b3R5cGVU
YWJsZVZhbHVlcywgKnRoaXMpOwotICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJ
VElPTigpOwotfQotCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXM6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllcyIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc1RhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKSB9OwotCi1KU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+JiYg
aW1wbCkKLSAgICA6IEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXM+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQotewotfQot
Ci12b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIEFT
U0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6Omlz
X2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXM+Ojp2YWx1ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01P
YmplY3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZl
RE9NT2JqZWN0LiIpOwotCi19Ci0KLUpTT2JqZWN0KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllczo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1cm4gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgp
KSk7Ci19Ci0KLUpTT2JqZWN0KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllczo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
LXsKLSAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzPih2bSwgZ2xvYmFsT2JqZWN0KTsKLX0KLQotSlNWYWx1ZSBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6Z2V0Q29uc3RydWN0b3IoVk0mIHZt
LCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBnZXRE
T01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Nv
bnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCkpOwotfQotCi12b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQotewotICAgIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihjZWxsKTsKLSAgICB0aGlzT2Jq
ZWN0LT5KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6fkpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKCk7Ci19Ci0KLWJvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OmdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXMqPihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKLSAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwotICAgIGF1
dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFt
ZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBl
PiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVt
KHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFH
ZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5
cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6
OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0gICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlz
aWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAg
ICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwotICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
b2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotfQotCi1i
b29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
cyo+KG9iamVjdCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBp
bmZvKCkpOwotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5k
ZXgpOwotICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBn
ZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAt
PiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsK
LSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJv
cGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRl
cklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5h
bWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0
cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxl
TmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
ICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7Ci0gICAgICAgIGF1
dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIFdURk1v
dmUobmFtZWRQcm9wZXJ0eS52YWx1ZSgpKSk7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09i
amVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXgob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgc2xvdCk7Ci19Ci0KLXZvaWQg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OmdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9k
ZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXMqPihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMob2Jq
ZWN0LCBpbmZvKCkpOwotICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1lIDogdGhpc09iamVjdC0+
d3JhcHBlZCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSkKLSAgICAgICAgcHJvcGVydHlOYW1l
cy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcHJvcGVydHlOYW1lKSk7Ci0gICAgSlNP
YmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWVzLCBtb2RlKTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllczo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYgcHV0UHJvcGVydHlTbG90KQotewotICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihj
ZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7
Ci0KLSAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5
U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkgfTsKLSAgICAgICAgSlNWYWx1
ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNP
YmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICAgICAgc2xvdC5kaXNhbGxvd1ZN
RW50cnkucmVzZXQoKTsKLSAgICAgICAgaWYgKCFmb3VuZCkgewotICAgICAgICAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpKTsKLSAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKLSAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7Ci0gICAgICAgICAgICB0aGlzT2JqZWN0LT53
cmFwcGVkKCkuc2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSks
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKLX0K
LQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6cHV0QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1
bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKLXsKLSAgICBW
TSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMq
PihjZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7Ci0KLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4
KTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBl
ID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKLSAgICBib29sIGZvdW5kID0g
cHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlT
bG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgc2xvdC5k
aXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKLSAgICBpZiAoIWZvdW5kKSB7Ci0gICAgICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KSk7Ci0gICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB0cnVlKTsKLSAgICAgICAgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNl
dE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBK
U09iamVjdDo6cHV0QnlJbmRleChjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgdmFs
dWUsIHNob3VsZFRocm93KTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllczo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgcHJvcGVydHlEZXNjcmlwdG9yLCBib29sIHNob3Vs
ZFRocm93KQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLQotICAgIGlmICghcHJvcGVydHlOYW1l
LmlzU3ltYm9sKCkpIHsKLXN0YXRpYyBib29sIGlzVW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKLXsKLSAgICByZXR1cm4gcHJvcGVydHlOYW1lID09ICJ1
bmZvcmdlYWJsZUF0dHJpYnV0ZSIgfHwgcHJvcGVydHlOYW1lID09ICJ1bmZvcmdlYWJsZU9wZXJh
dGlvbiI7Ci19Ci0KLSAgICAgICAgaWYgKCFpc1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKHByb3Bl
cnR5TmFtZSkpIHsKLSAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9i
YWxPYmplY3QtPnZtKCkgfTsKLSAgICAgICAgICAgIGJvb2wgZm91bmQgPSBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7Ci0gICAgICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOwot
ICAgICAgICAgICAgaWYgKCFmb3VuZCkgewotICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlE
ZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgICAgICAgICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlEZXNjcmlwdG9yLnZhbHVlKCkpOwotICAgICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgdGhpc09i
amVjdC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0
eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBQcm9wZXJ0eURlc2Ny
aXB0b3IgbmV3UHJvcGVydHlEZXNjcmlwdG9yID0gcHJvcGVydHlEZXNjcmlwdG9yOwotICAgIG5l
d1Byb3BlcnR5RGVzY3JpcHRvci5zZXRDb25maWd1cmFibGUodHJ1ZSk7Ci0gICAgcmV0dXJuIEpT
T2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgbmV3UHJvcGVydHlEZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7Ci19Ci0KLXRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
KiBJRExBdHRyaWJ1dGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+
OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0ZTw+IGlubGlu
ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyogSURMT3BlcmF0aW9u
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPjo6Y2FzdChKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0g
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRo
aXNWYWx1ZSgpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAg
Vk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzUHJv
dG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtF
TFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OmdldENvbnN0cnVjdG9yKEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkp
KTsKLX0KLQotYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAgICBW
TSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNQcm90
b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VM
WSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8v
IFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNVbmZvcmdlYWJsZUF0dHJpYnV0ZUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXMmIHRoaXNPYmplY3QpCi17Ci0gICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0
cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC51bmZvcmdlYWJsZUF0
dHJpYnV0ZSgpKSkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc1VuZm9yZ2VhYmxlQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKLXsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzPjo6Z2V0PGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzVW5mb3JnZWFibGVBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ1bmZvcmdlYWJsZUF0
dHJpYnV0ZSIpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNJbnN0YW5jZUZ1bmN0aW9uVW5mb3Jn
ZWFibGVPcGVyYXRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcz46OkNsYXNzUGFyYW1ldGVyIGNh
c3RlZFRoaXMpCi17Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRocm93U2NvcGUu
cmVsZWFzZSgpOwotICAgIGltcGwudW5mb3JnZWFibGVPcGVyYXRpb24oKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFu
Y2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPjo6Y2FsbDxqc1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0luc3RhbmNlRnVuY3Rpb25VbmZv
cmdlYWJsZU9wZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAi
dW5mb3JnZWFibGVPcGVyYXRpb24iKTsKLX0KLQotSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZN
JiB2bSkKLXsKLSAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnRE
YXRhKj4odm0uY2xpZW50RGF0YSk7Ci0gICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJz
cGFjZXMoKTsKLSAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5nZXQoKSkKLSAgICAgICAgcmV0dXJu
IHNwYWNlOwotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+
IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6bmVlZHNEZXN0
cnVjdGlvbik7Ci0gICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
cz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyk7Ci0gICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzKTsKLSAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmdldCgpOwotSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQotICAgIGlmICgmSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXM6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2
aXNpdE91dHB1dENvbnN0cmFpbnRzKQotICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFp
bnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOwotSUdOT1JFX1dBUk5JTkdTX0VORAotSUdOT1JFX1dB
Uk5JTkdTX0VORAotICAgIHJldHVybiBzcGFjZTsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFw
QW5hbHl6ZXImIGFuYWx5emVyKQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihjZWxsKTsKLSAgICBhbmFs
eXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxsLCAmdGhpc09iamVjdC0+d3JhcHBlZCgp
KTsKLSAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICAg
ICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwgInVybCAiICsgdGhpc09iamVjdC0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJpbmcoKSk7Ci0gICAgQmFzZTo6YW5hbHl6
ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOwotfQotCi1ib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3Is
IGNvbnN0IGNoYXIqKiByZWFzb24pCi17Ci0gICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHZpc2l0b3IpOwotICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOwotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwg
dm9pZCogY29udGV4dCkKLXsKLSAgICBhdXRvKiBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllcyA9IHN0YXRpY19jYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIGF1dG8mIHdvcmxk
ID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVX
cmFwcGVyKHdvcmxkLCAmanNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMt
PndyYXBwZWQoKSwganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMpOwot
fQotCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotI2lmIFBMQVRGT1JNKFdJTikKLSNw
cmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQotZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgq
Y29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KLSNlbHNlCi1leHRlcm4gIkMiIHsgZXh0ZXJu
IHZvaWQqIF9aVFZON1dlYkNvcmUzOVRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0VbXTsgfQotI2VuZGlmCi0jZW5kaWYKLQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0
ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+JiYgaW1wbCkKLXsK
LQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICBjb25zdCB2b2lkKiBhY3R1YWxW
VGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKLSNpZiBQTEFURk9S
TShXSU4pCi0gICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/
P183VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQFdlYkNvcmVAQDZCQCIp
OwotI2Vsc2UKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29y
ZTM5VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzRVsyXTsKLSNlbmRpZgot
Ci0gICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXMgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQotICAg
IC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2Ug
ZGVmaW5pdGlvbgotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+Ojp2YWx1ZSwgIlRlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyBpcyBub3QgcG9seW1vcnBoaWMiKTsKLQotICAgIC8v
IElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZy
ZWUgYnVnLCBvcgotICAgIC8vIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
cyBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzIGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAotICAgIC8vIHRvIHRvSlMoKSB3ZSBj
dXJyZW50bHkgcmVxdWlyZSBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMg
eW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKLSAgICAvLyBieSBhZGRpbmcgdGhl
IFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZp
bml0aW9uCi0gICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3Rl
ZFZUYWJsZVBvaW50ZXIpOwotI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzPihnbG9iYWxPYmplY3QsIFdURk1vdmUo
aW1wbCkpOwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMmIGltcGwpCi17Ci0gICAgcmV0dXJuIHdy
YXAobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKLX0KLQotVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllczo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUg
dmFsdWUpCi17Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKj4odm0sIHZhbHVlKSkKLSAgICAgICAg
cmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllcy5oCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwMSArMCwwIEBACi0vKgotICAgIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgICBUaGlz
IGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1Qg
TU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCi0j
aW5jbHVkZSAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmgiCi0jaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMgOiBwdWJsaWMgSlNE
T01XcmFwcGVyPFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcz4gewotcHVi
bGljOgotICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzPjsKLSAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXMqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzPiYmIGltcGwpCi0gICAgewotICAgICAgICBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcz4oZ2xvYmFs
T2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllcyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwotICAgICAgICBw
dHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7Ci0gICAgICAgIHJldHVybiBw
dHI7Ci0gICAgfQotCi0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShK
U0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCog
cHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqIHRvV3JhcHBlZChKU0M6OlZNJiwg
SlNDOjpKU1ZhbHVlKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpK
U09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQ
cm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5
TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5
TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgp
KTsKLSAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3Vs
ZFRocm93KTsKLSAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBjb25zdCBKU0M6OlBy
b3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDOjpKU0NlbGwqKTsKLQotICAgIERFQ0xBUkVfSU5GTzsKLQotICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAg
ICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7Ci0gICAgfQotCi0gICAgc3RhdGlj
IEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2Jh
bE9iamVjdCopOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1v
ZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAg
ICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpD
b25jdXJyZW50bHkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJu
IHN1YnNwYWNlRm9ySW1wbCh2bSk7Ci0gICAgfQotICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwotICAgIHN0YXRpYyB2b2lkIGFuYWx5emVI
ZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
SlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6
SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xv
dEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzQW55Rm9ybU9m
R2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlND
OjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7Ci1wcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2Jh
bE9iamVjdCYsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+JiYp
OwotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Ci19OwotCi1jbGFzcyBKU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc093bmVyIDogcHVibGljIEpTQzo6
V2Vha0hhbmRsZU93bmVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwg
SlNDOjpTbG90VmlzaXRvciYsIGNvbnN0IGNoYXIqKik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwotfTsKLQotaW5s
aW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwg
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKikKLXsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNP
d25lcj4gb3duZXI7Ci0gICAgcmV0dXJuICZvd25lci5nZXQoKTsKLX0KLQotaW5saW5lIHZvaWQq
IHdyYXBwZXJLZXkoVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKiB3cmFw
cGFibGVPYmplY3QpCi17Ci0gICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKLX0KLQotSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzJik7Ci1pbmxpbmUgSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzKiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KLUpTQzo6SlNWYWx1ZSB0
b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCos
IFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+JiYpOwotaW5saW5l
IEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+JiYgaW1wbCkgeyByZXR1cm4g
aW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQotCi10ZW1wbGF0ZTw+
IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzPiB7Ci0gICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM7Ci0gICAgdXNpbmcgVG9XcmFwcGVkUmV0
dXJuVHlwZSA9IFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyo7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5jcHAJKG5vbmV4aXN0ZW50KQpA
QCAtMSw0MzggKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0
IG9wZW4gc291cmNlIHByb2plY3QuCi0gICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBi
eSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLQotICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmgiCi0KLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIK
LSNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKLSNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3Bl
cmF0aW9ucy5oIgotI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiSlNET01C
aW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIK
LSNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCi0jaW5jbHVkZSAiSlNET01FeGNlcHRp
b25IYW5kbGluZy5oIgotI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0Z1bmN0aW9uUHJvdG90eXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5
emVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgotI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+Ci0jaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Ci0jaW5jbHVkZSA8
d3RmL1VSTC5oPgotCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7
Ci0KLS8vIEZ1bmN0aW9ucwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5z
SW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOwotCi0vLyBBdHRyaWJ1dGVzCi0KLUpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnNVbmZvcmdlYWJsZUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotCi1jbGFz
cyBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnNQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKLXB1
YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwotICAgIHN0YXRp
YyBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnNQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
c1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90
b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgICAgIHJldHVybiBwdHI7
Ci0gICAgfQotCi0gICAgREVDTEFSRV9JTkZPOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgotICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAgICB7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKLSAgICB9Ci0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgOiBKU0M6OkpTTm9uRmlu
YWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihKU0M6OlZNJik7Ci19OwotU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zUHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OkJhc2UpOwotCi11c2luZyBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1
Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz47Ci0KLS8qIEhhc2gg
dGFibGUgKi8KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1RhYmxl
SW5kZXhbNF0gPSB7Ci0gICAgeyAtMSwgLTEgfSwKLSAgICB7IDEsIC0xIH0sCi0gICAgeyAtMSwg
LTEgfSwKLSAgICB7IDAsIC0xIH0sCi19OwotCi0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnNUYWJsZVZhbHVlc1tdID0KLXsKLSAgICB7ICJ1bmZvcmdlYWJsZUF0dHJpYnV0ZSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zVW5mb3JnZWFibGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAidW5mb3JnZWFi
bGVPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJs
ZU9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBIYXNo
VGFibGUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zVGFibGUgPSB7IDIsIDMsIHRydWUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6aW5mbygpLCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNUYWJsZVZhbHVl
cywgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zVGFibGVJbmRleCB9OwotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yOjpw
cm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSAgICByZXR1cm4gZ2xv
YmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Ci19Ci0KLXRlbXBsYXRlPD4gdm9pZCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnND
b25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyJfcyksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci19Ci0KLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGluc0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcikgfTsKLQotLyogSGFz
aCB0YWJsZSBmb3IgcHJvdG90eXBlICovCi0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBK
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRp
bnNQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KLXsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcikgfSB9LAotfTsKLQotY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGluc1Byb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKSB9OwotCi12b2lk
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGluc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKLSAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6aW5mbygp
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnNQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIEpTQ19UT19TVFJJTkdfVEFH
X1dJVEhPVVRfVFJBTlNJVElPTigpOwotfQotCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpzX2luZm8g
PSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1RhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucykgfTsKLQotSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBw
ZXI8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGlucz4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCi17Ci19Ci0KLXZv
aWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOwotICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0KLSAgICBzdGF0aWNf
YXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPjo6dmFsdWUsICJJbnRl
cmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBs
ZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKLQotfQotCi1K
U09iamVjdCogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmds
b2JhbE9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSkpOwotfQotCi1KU09iamVjdCogSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5z
Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewot
ICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPih2bSwgZ2xvYmFsT2JqZWN0KTsKLX0KLQot
SlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJy
aWRlQnVpbHRpbnM6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3Ry
dWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7Ci19Ci0KLXZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQotewotICAgIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
cyogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyo+KGNlbGwpOwotICAgIHRoaXNPYmplY3Qt
PkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGluczo6fkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucygpOwotfQotCi1ib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnMqPihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9N
U3RyaW5nOwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBh
dXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1w
bGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFw
cGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
LSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQotICAgICAg
ICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7
IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKLSAgICBpZiAoYXV0byBuYW1lZFByb3Bl
cnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6WWVzPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyRnVu
Y3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgV1RGTW92ZShuYW1lZFByb3BlcnR5LnZhbHVlKCkpKTsKLSAgICAgICAg
c2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIHZhbHVl
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmpl
Y3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVk
IGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyo+
KG9iamVjdCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpOwotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgp
OwotICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7Ci0gICAgYXV0byBnZXR0
ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBP
cHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAg
ICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVy
dHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIUdldHRlcklE
TFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUg
R2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFj
dFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSAgICB9OwotICAgIGlmIChhdXRvIG5hbWVkUHJvcGVydHkgPSBhY2Nlc3NWaXNpYmxlTmFt
ZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpZZXM+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
dGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJGdW5jdG9yKSkgewotICAgICAgICBhdXRv
IHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwotICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmpl
Y3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgdmFsdWUpOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHNsb3QpOwotfQotCi12b2lkIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
czo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVu
dW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqPihvYmplY3Qp
OwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMob2JqZWN0LCBpbmZvKCkpOwotICAgIGZv
ciAoYXV0byYgcHJvcGVydHlOYW1lIDogdGhpc09iamVjdC0+d3JhcHBlZCgpLnN1cHBvcnRlZFBy
b3BlcnR5TmFtZXMoKSkKLSAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcHJvcGVydHlOYW1lKSk7Ci0gICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsK
LX0KLQotYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnM6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHB1dFByb3BlcnR5U2xvdCkKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3Zl
cnJpZGVCdWlsdGlucyo+KGNlbGwpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKLQotICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsK
LSAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwotICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwotICAgICAgICB0aGlzT2JqZWN0
LT53cmFwcGVkKCkuc2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFt
ZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKLX0KLQotYm9vbCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6
OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wpCi17Ci0gICAgVk0mIHZt
ID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3Zl
cnJpZGVCdWlsdGlucyo+KGNlbGwpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKLQotICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbSh2bSwgaW5kZXgpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7Ci0gICAgdGhpc09iamVj
dC0+d3JhcHBlZCgpLnNldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5h
bWUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJv
cGVydHlEZXNjcmlwdG9yJiBwcm9wZXJ0eURlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCi17
Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqPihvYmplY3QpOwotICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLQotICAgIGlmICghcHJv
cGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLXN0YXRpYyBib29sIGlzVW5mb3JnZWFibGVQcm9wZXJ0
eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKLXsKLSAgICByZXR1cm4gcHJvcGVydHlO
YW1lID09ICJ1bmZvcmdlYWJsZUF0dHJpYnV0ZSIgfHwgcHJvcGVydHlOYW1lID09ICJ1bmZvcmdl
YWJsZU9wZXJhdGlvbiI7Ci19Ci0KLSAgICAgICAgaWYgKCFpc1VuZm9yZ2VhYmxlUHJvcGVydHlO
YW1lKHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9y
LmlzRGF0YURlc2NyaXB0b3IoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlEZXNjcmlw
dG9yLnZhbHVlKCkpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB0cnVlKTsKLSAgICAgICAgICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS5zZXROYW1lZEl0ZW0o
cHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBQcm9w
ZXJ0eURlc2NyaXB0b3IgbmV3UHJvcGVydHlEZXNjcmlwdG9yID0gcHJvcGVydHlEZXNjcmlwdG9y
OwotICAgIG5ld1Byb3BlcnR5RGVzY3JpcHRvci5zZXRDb25maWd1cmFibGUodHJ1ZSk7Ci0gICAg
cmV0dXJuIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgbmV3UHJvcGVydHlEZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7
Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyogSURMQXR0cmlidXRlPEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz46OmNhc3QoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqPihKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotfQotCi10ZW1wbGF0
ZTw+IGlubGluZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnMqIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKLXsKLSAgICByZXR1cm4g
anNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2Fs
bEZyYW1lLnRoaXNWYWx1ZSgpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90
eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OmdldENvbnN0
cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSo+KHZt
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5
cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5n
IGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNVbmZvcmdlYWJsZUF0dHJp
YnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zJiB0aGlz
T2JqZWN0KQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwudW5mb3JnZWFibGVBdHRyaWJ1dGUoKSkpKTsKLX0KLQotRW5jb2RlZEpT
VmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zVW5mb3JnZWFibGVBdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPjo6Z2V0PGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc1VuZm9yZ2VhYmxlQXR0cmlidXRlR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAidW5mb3JnZWFibGVBdHRyaWJ1dGUiKTsKLX0KLQotc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJh
dGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz46OkNsYXNzUGFy
YW1ldGVyIGNhc3RlZFRoaXMpCi17Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBVTlVTRURfUEFSQU0oY2Fs
bEZyYW1lKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIHRo
cm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwudW5mb3JnZWFibGVPcGVyYXRpb24oKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotfQotCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlv
bihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCi17Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+OjpjYWxsPGpzVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0luc3RhbmNlRnVu
Y3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2Fs
bEZyYW1lLCAidW5mb3JnZWFibGVPcGVyYXRpb24iKTsKLX0KLQotSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCi17Ci0gICAgYXV0byYgY2xpZW50RGF0
YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwotICAgIGF1
dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Ci0gICAgaWYgKGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmdldCgpKQotICAgICAgICByZXR1cm4gc3BhY2U7Ci0g
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnM+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwotICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnMpOwotICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zKTsKLSAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGlucy5nZXQoKTsKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
Ci1JR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKLSAgICBpZiAo
JkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGluczo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0
Q29uc3RyYWludHMpCi0gICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygp
LmFwcGVuZChzcGFjZSk7Ci1JR05PUkVfV0FSTklOR1NfRU5ECi1JR05PUkVfV0FSTklOR1NfRU5E
Ci0gICAgcmV0dXJuIHNwYWNlOwotfQotCi12b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBj
ZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zKj4oY2VsbCk7Ci0gICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNlbGwo
Y2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQoKSk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxsKGNl
bGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCku
c3RyaW5nKCkpOwotICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKLX0KLQot
Ym9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnNPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvciwgY29uc3QgY2hh
cioqIHJlYXNvbikKLXsKLSAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKLSAgICBVTlVTRURfUEFS
QU0odmlzaXRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKHJlYXNvbik7Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi12b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGluc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsZSwgdm9pZCogY29udGV4dCkKLXsKLSAgICBhdXRvKiBqc1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMgPSBzdGF0aWNfY2FzdDxK
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRp
bnMqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Ci0gICAgYXV0byYgd29ybGQgPSAqc3RhdGlj
X2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29y
bGQsICZqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnMtPndyYXBwZWQoKSwganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKTsKLX0KLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVH
UklUWSkKLSNpZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykK
LWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNAV2Vi
Q29yZUBANkJAIilbXSkoKTsgfQotI2Vsc2UKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pU
Vk43V2ViQ29yZTU4VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3Zl
cnJpZGVCdWlsdGluc0VbXTsgfQotI2VuZGlmCi0jZW5kaWYKLQotSlNDOjpKU1ZhbHVlIHRvSlNO
ZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zPiYmIGltcGwpCi17Ci0KLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJ
VFkpCi0gICAgY29uc3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50
ZXIoaW1wbC5wdHIoKSk7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIHZvaWQqIGV4cGVjdGVkVlRh
YmxlUG9pbnRlciA9IF9faWRlbnRpZmllcigiPz9fN1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNAV2ViQ29yZUBANkJAIik7Ci0jZWxzZQot
ICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlNThUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zRVsyXTsK
LSNlbmRpZgotCi0gICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zIGRvZXMgbm90IGhhdmUgYSB2dGFibGUs
IHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKLSAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
IGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KLSAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz46OnZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyBpcyBub3QgcG9seW1vcnBoaWMiKTsK
LQotICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNl
IGFmdGVyIGZyZWUgYnVnLCBvcgotICAgIC8vIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMgaGFzIHN1
YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCi0gICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSBy
ZXF1aXJlIFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnMgeW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKLSAgICAvLyBieSBh
ZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNl
IElETCBkZWZpbml0aW9uCi0gICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9
PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwotI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZVdyYXBw
ZXI8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWls
dGlucz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyYgaW1wbCkKLXsKLSAgICByZXR1cm4gd3JhcChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwpOwotfQotCi1UZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKiBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OnRvV3JhcHBl
ZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIGlmIChhdXRvKiB3cmFw
cGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqPih2bSwgdmFsdWUpKQotICAgICAgICByZXR1cm4gJndy
YXBwZXItPndyYXBwZWQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaAkocmV2aXNpb24g
MjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5o
CShub25leGlzdGVudCkKQEAgLTEsMTAxICswLDAgQEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICAgIFRoaXMgZmlsZSBoYXMg
YmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0K
LSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKLSNpbmNsdWRlICJU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5z
LmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPiB7Ci1wdWJsaWM6Ci0gICAg
dXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPjsKLSAgICBzdGF0aWMgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKiBjcmVhdGUoSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmPFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnM+JiYgaW1wbCkKLSAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKHN0cnVj
dHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci0gICAgICAgIHB0ci0+ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKLSAgICAgICAgcmV0dXJuIHB0cjsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBK
U0RPTUdsb2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUo
SlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7Ci0gICAgc3RhdGljIFRlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqIHRvV3JhcHBlZChK
U0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFt
ZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIGdldE93
blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0
aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9w
ZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBi
b29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6
OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBjb25z
dCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKLQotICAgIERFQ0xBUkVfSU5GTzsKLQotICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCi0g
ICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7Ci0gICAgfQotCi0g
ICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlND
OjpKU0dsb2JhbE9iamVjdCopOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNl
QWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKLSAgICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNl
QWNjZXNzOjpDb25jdXJyZW50bHkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7Ci0gICAgfQotICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwotICAgIHN0YXRpYyB2b2lk
IGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSB8IEpTQzo6SGFzU3RhdGlj
UHJvcGVydHlUYWJsZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhF
dmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVy
dHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJp
dHNQcm9wZXJ0eUNhY2hpbmc7Ci1wcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKEpTQzo6U3RydWN0dXJlKiwg
SlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucz4mJik7Ci0KLSAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTQzo6Vk0mKTsKLX07Ci0KLWNsYXNzIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc093bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRs
ZU93bmVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90
VmlzaXRvciYsIGNvbnN0IGNoYXIqKik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwotfTsKLQotaW5saW5lIEpTQzo6
V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyopCi17Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc093bmVyPiBvd25lcjsKLSAgICByZXR1cm4gJm93
bmVyLmdldCgpOwotfQotCi1pbmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKiB3cmFwcGFibGVPYmpl
Y3QpCi17Ci0gICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKLX0KLQotSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyYpOwotaW5saW5l
IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqIGltcGwpIHsgcmV0dXJuIGlt
cGwgPyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlND
Ojpqc051bGwoKTsgfQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+JiYpOwotaW5saW5lIEpTQzo6SlNW
YWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwp
IHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KLQot
dGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+IHsKLSAgICB1
c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnM7Ci0gICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9
IFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRp
bnMqOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlz
aW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjcsNyArODI3LDcgQEAgdGVtcGxhdGU8
PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaQogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghc3RyaW5nVHJlYXROdWxsQXNF
bXB0eVN0cmluZ1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVzdWx0LnN0cmluZ1Ry
ZWF0TnVsbEFzRW1wdHlTdHJpbmcgPSBjb252ZXJ0PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9y
PElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHN0cmluZ1RyZWF0TnVsbEFzRW1w
dHlTdHJpbmdWYWx1ZSk7CisgICAgICAgIHJlc3VsdC5zdHJpbmdUcmVhdE51bGxBc0VtcHR5U3Ry
aW5nID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMRE9NU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZ1Zh
bHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAg
IH0KICAgICBKU1ZhbHVlIHN0cmluZ1dpdGhEZWZhdWx0VmFsdWU7CkBAIC0xMDU5LDggKzEwNTks
OCBAQCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRvSlMoSlNDCiAgICAgfQogICAg
IGF1dG8gc21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExPY3Rl
dD4oZGljdGlvbmFyeS5zbWFsbFVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0KTsKICAgICByZXN1
bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic21hbGxV
bnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdCIpLCBzbWFsbFVuc2lnbmVkSW50ZWdlcldpdGhEZWZh
dWx0VmFsdWUpOwotICAgIGlmICghSURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8SURMRE9NU3Ry
aW5nPjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5zdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5n
KSkgewotICAgICAgICBhdXRvIHN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmdWYWx1ZSA9IHRv
SlM8SURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8SURMRE9NU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgSURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8SURMRE9NU3RyaW5nPjo6ZXh0cmFj
dFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmlu
ZykpOworICAgIGlmICghSURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETERPTVN0
cmluZz46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkuc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmlu
ZykpIHsKKyAgICAgICAgYXV0byBzdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nVmFsdWUgPSB0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMRE9N
U3RyaW5nPjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuc3RyaW5nVHJlYXRO
dWxsQXNFbXB0eVN0cmluZykpOwogICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZyIp
LCBzdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nVmFsdWUpOwogICAgIH0KICAgICBhdXRvIHN0
cmluZ1dpdGhEZWZhdWx0VmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9i
amVjdCwgZGljdGlvbmFyeS5zdHJpbmdXaXRoRGVmYXVsdCk7CkBAIC0zMjU2LDcgKzMyNTYsNyBA
QCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0CiAgICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETFRy
ZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuc3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoKSkp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuc3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoKSkp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFz
RW1wdHlTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQpAQCAtMzI2OSw3ICszMjY5LDcgQEAgc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dAogICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFRyZWF0TnVsbEFzRW1wdHlB
ZGFwdG9yPElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMRE9NU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgICByZXR1
cm4gaW1wbC5zZXRTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CkBAIC0zMjg3LDcgKzMyODcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0T2JqVXN2c3RyaW5nCiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudXN2c3Ry
aW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudXN2
c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoKSkpKTsKIH0KIAogRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqVXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQpAQCAtMzMwMCw3ICszMzAwLDcgQEAgc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdE9ialVzdnN0cmluZwogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgICByZXR1cm4gaW1wbC5zZXRVc3Zz
dHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CkBAIC0zMzE4LDcgKzMzMTgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQnl0
ZVN0cmluCiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETEJ5dGVTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmJ5dGVTdHJpbmdBdHRyVHJl
YXRpbmdOdWxsQXNFbXB0eVN0cmluZygpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMQnl0ZVN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuYnl0ZVN0cmluZ0F0
dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKCkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakJ5dGVTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCkBAIC0zMzMxLDcgKzMzMzEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNU
ZXN0T2JqQnl0ZVN0cmluCiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8SURMQnl0ZVN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMQnl0ZVN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICAgcmV0dXJuIGltcGwuc2V0Qnl0ZVN0cmlu
Z0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKQEAg
LTU5ODksNyArNTk4OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAg
ICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCk7Ci0gICAgYXV0byBhcmcgPSBjb252ZXJ0PElETFRyZWF0TnVsbEFzRW1wdHlB
ZGFwdG9yPElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFs
dWUoKSk7CisgICAgYXV0byBhcmcgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZh
bHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgaW1wbC5tZXRob2RXaXRoQXJn
VHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhXVEZNb3ZlKGFyZykpOwpAQCAtNjIzMyw3ICs2MjMz
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGlmIChV
TkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBFbnN1cmVTdGls
bEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsK
LSAgICBhdXRvIHN0ciA9IGNvbnZlcnQ8SURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8SURMVVNW
U3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKKyAgICBh
dXRvIHN0ciA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB0
aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICBpbXBsLm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVh
dGluZ051bGxBc0VtcHR5U3RyaW5nKFdURk1vdmUoc3RyKSk7CkBAIC02Mjk5LDcgKzYyOTksNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgaWYgKFVOTElL
RUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIEVuc3VyZVN0aWxsQWxp
dmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAg
IGF1dG8gc3RyID0gY29udmVydDxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExCeXRlU3Ry
aW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKKyAgICBhdXRv
IHN0ciA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETEJ5dGVT
dHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgdGhy
b3dTY29wZS5yZWxlYXNlKCk7CiAgICAgaW1wbC5tZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0
aW5nTnVsbEFzRW1wdHlTdHJpbmcoV1RGTW92ZShzdHIpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcnJpZGVCdWlsdGlucy5jcHAJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDM1MSArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4g
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgiCi0K
LSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMu
aCIKLSNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgi
Ci0jaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiSlNET01Db252
ZXJ0U3RyaW5ncy5oIgotI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKLSNpbmNs
dWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCi0j
aW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKLSNpbmNsdWRlICJKU05vZGUuaCIKLSNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50
RGF0YS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+Ci0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vi
c3BhY2VJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Q
b2ludGVyUHJlcGFyYXRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1VSTC5oPgotCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLS8vIEZ1bmN0aW9ucwotCi1KU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3Rv
dHlwZUZ1bmN0aW9uTmFtZWRJdGVtKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOwotCi0vLyBBdHRyaWJ1dGVzCi0KLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcnJp
ZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdE92ZXJyaWRlQnVpbHRp
bnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7Ci0KLWNsYXNzIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90
b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKLXB1YmxpYzoKLSAg
ICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewot
ICAgICAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU+KHZt
LmhlYXApKSBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICBy
ZXR1cm4gcHRyOwotICAgIH0KLQotICAgIERFQ0xBUkVfSU5GTzsKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KLSAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCi0gICAgewotICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwotICAgIH0K
LSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qo
dm0sIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0M6OlZNJik7Ci19OwotU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSwgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlw
ZTo6QmFzZSk7Ci0KLXVzaW5nIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciA9IEpT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+Owot
Ci10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yOjpw
cm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSAgICByZXR1cm4gZ2xv
YmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Ci19Ci0KLXRlbXBsYXRlPD4gdm9pZCBKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6cHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5u
YW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0T3ZlcnJpZGVCdWlsdGlucyJfcyksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci19Ci0KLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE92ZXJy
aWRlQnVpbHRpbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcikgfTsKLQotLyogSGFz
aCB0YWJsZSBmb3IgcHJvdG90eXBlICovCi0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAi
Y29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcikgfSB9LAotICAgIHsgIm5hbWVkSXRl
bSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlv
biksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oanNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKSwgKGlu
dHB0cl90KSAoMSkgfSB9LAotfTsKLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RPdmVycmlkZUJ1aWx0aW5zIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zUHJvdG90eXBlKSB9OwotCi12b2lkIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7Ci0gICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zOjppbmZvKCksIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVUYWJsZVZhbHVl
cywgKnRoaXMpOwotICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwot
fQotCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6c19pbmZvID0geyAi
VGVzdE92ZXJyaWRlQnVpbHRpbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMpIH07Ci0KLUpTVGVzdE92
ZXJyaWRlQnVpbHRpbnM6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0T3ZlcnJpZGVCdWls
dGlucz4mJiBpbXBsKQotICAgIDogSlNET01XcmFwcGVyPFRlc3RPdmVycmlkZUJ1aWx0aW5zPihz
dHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKLXsKLX0KLQotdm9pZCBKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0K
LSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0
T3ZlcnJpZGVCdWlsdGlucz46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQgYXMgW0Fj
dGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3ViY2xhc3Nl
cyBBY3RpdmVET01PYmplY3QuIik7Ci0KLX0KLQotSlNPYmplY3QqIEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnM6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCi17Ci0gICAgcmV0dXJuIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU6OmNy
ZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJv
dG90eXBlKCkpKTsKLX0KLQotSlNPYmplY3QqIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnByb3Rv
dHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0
dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zPih2bSwgZ2xvYmFsT2Jq
ZWN0KTsKLX0KLQotSlNWYWx1ZSBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3Rv
cihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0
dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcj4o
dm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKLX0K
LQotdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxs
KQotewotICAgIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+SlNUZXN0
T3ZlcnJpZGVCdWlsdGluczo6fkpTVGVzdE92ZXJyaWRlQnVpbHRpbnMoKTsKLX0KLQotYm9vbCBK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICB1c2luZyBHZXR0ZXJJRExU
eXBlID0gSURMSW50ZXJmYWNlPE5vZGU+OwotICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChh
dXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUg
R2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0
ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmlu
Zyhwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1
ZShyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6Oklt
cGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJs
ZShyZXN1bHQpIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfTsKLSAgICBp
ZiAoYXV0byBuYW1lZFByb3BlcnR5ID0gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJp
ZGVCdWlsdGluczo6WWVzPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIHByb3Bl
cnR5TmFtZSwgZ2V0dGVyRnVuY3RvcikpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURM
SW50ZXJmYWNlPE5vZGU+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QtPmdsb2Jh
bE9iamVjdCgpLCBXVEZNb3ZlKG5hbWVkUHJvcGVydHkudmFsdWUoKSkpOwotICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKLX0KLQotYm9vbCBKU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3Qs
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgUHJv
cGVydHlTbG90JiBzbG90KQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zKj4ob2JqZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7Ci0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZt
LCBpbmRleCk7Ci0gICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETEludGVyZmFjZTxOb2RlPjsK
LSAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9w
ZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgICAg
IGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKLSAgICAgICAgICAgIHJl
dHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJ
RExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotICAgIH07Ci0gICAgaWYgKGF1dG8gbmFtZWRQcm9wZXJ0eSA9IGFj
Y2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Olllcz4oKmxleGljYWxH
bG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlckZ1bmN0b3IpKSB7
Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4oKmxleGljYWxH
bG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShuYW1lZFBy
b3BlcnR5LnZhbHVlKCkpKTsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1
ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRl
eCwgc2xvdCk7Ci19Ci0KLXZvaWQgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVy
dHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBt
b2RlKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0g
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4ob2Jq
ZWN0KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKG9iamVjdCwgaW5mbygpKTsKLSAg
ICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6IHRoaXNPYmplY3QtPndyYXBwZWQoKS5zdXBwb3J0
ZWRQcm9wZXJ0eU5hbWVzKCkpCi0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHByb3BlcnR5TmFtZSkpOwotICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9k
ZSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqIElETE9w
ZXJhdGlvbjxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJuIGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotfQotCi1FbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQot
ewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90
eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKj4odm0s
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlw
ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T3ZlcnJpZGVC
dWlsdGluczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwg
cHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwotfQotCi1ib29sIHNldEpTVGVzdE92ZXJyaWRl
QnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17
Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5
cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBl
KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSkpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T3Zl
cnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtQm9keShKU0M6OkpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T3ZlcnJpZGVCdWlsdGlucz46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMpCi17Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbEZy
YW1lKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGlmIChV
TkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICBFbnN1cmVTdGls
bEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsK
LSAgICBhdXRvIG5hbWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwubmFtZWRJdGVtKFdURk1v
dmUobmFtZSkpKSkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE92
ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbShKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCi17Ci0gICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zPjo6Y2FsbDxqc1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0ZW1Cb2R5PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKmNhbGxGcmFtZSwgIm5hbWVkSXRlbSIpOwotfQotCi1KU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCi17Ci0g
ICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNs
aWVudERhdGEpOwotICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Ci0g
ICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcnJpZGVCdWls
dGlucy5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcnJpZGVC
dWlsdGlucz4gfHwgIUpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwot
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE92ZXJyaWRlQnVpbHRpbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMpOwotICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0T3ZlcnJpZGVCdWlsdGlucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdE92ZXJyaWRlQnVpbHRpbnMpOwotICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0T3ZlcnJpZGVCdWlsdGlucy5nZXQoKTsKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCi1JR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKLSAgICBpZiAoJkpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnZpc2l0T3V0cHV0Q29u
c3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQotICAgICAg
ICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOwotSUdO
T1JFX1dBUk5JTkdTX0VORAotSUdOT1JFX1dBUk5JTkdTX0VORAotICAgIHJldHVybiBzcGFjZTsK
LX0KLQotdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjphbmFseXplSGVhcChKU0NlbGwqIGNl
bGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4oY2VsbCk7Ci0gICAgYW5hbHl6ZXIuc2V0V3Jh
cHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQoKSk7Ci0gICAgaWYg
KHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgYW5hbHl6ZXIu
c2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOwotICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGws
IGFuYWx5emVyKTsKLX0KLQotYm9vbCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zT3duZXI6OmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2
b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFzb24pCi17Ci0gICAg
VU5VU0VEX1BBUkFNKGhhbmRsZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwotICAgIFVO
VVNFRF9QQVJBTShyZWFzb24pOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4g
aGFuZGxlLCB2b2lkKiBjb250ZXh0KQotewotICAgIGF1dG8qIGpzVGVzdE92ZXJyaWRlQnVpbHRp
bnMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4oaGFuZGxlLnNsb3QoKS0+
YXNDZWxsKCkpOwotICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3Js
ZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0T3ZlcnJpZGVC
dWlsdGlucy0+d3JhcHBlZCgpLCBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zKTsKLX0KLQotI2lmIEVO
QUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSNpZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdhcm5p
bmcoZGlzYWJsZTogNDQ4MykKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRl
bnRpZmllcigiPz9fN1Rlc3RPdmVycmlkZUJ1aWx0aW5zQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0K
LSNlbHNlCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUyMFRlc3RPdmVy
cmlkZUJ1aWx0aW5zRVtdOyB9Ci0jZW5kaWYKLSNlbmRpZgotCi1KU0M6OkpTVmFsdWUgdG9KU05l
d2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVmPFRlc3RPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwpCi17Ci0KLSNpZiBFTkFC
TEUoQklORElOR19JTlRFR1JJVFkpCi0gICAgY29uc3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRl
ciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAg
IHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRpZmllcigiPz9fN1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zQFdlYkNvcmVAQDZCQCIpOwotI2Vsc2UKLSAgICB2b2lkKiBleHBlY3RlZFZU
YWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTIwVGVzdE92ZXJyaWRlQnVpbHRpbnNFWzJdOwot
I2VuZGlmCi0KLSAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3RPdmVycmlkZUJ1aWx0aW5zIGRvZXMg
bm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKLSAgICAvLyBJbXBsZW1l
bnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24K
LSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdE92ZXJyaWRlQnVpbHRp
bnM+Ojp2YWx1ZSwgIlRlc3RPdmVycmlkZUJ1aWx0aW5zIGlzIG5vdCBwb2x5bW9ycGhpYyIpOwot
Ci0gICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2Ug
YWZ0ZXIgZnJlZSBidWcsIG9yCi0gICAgLy8gVGVzdE92ZXJyaWRlQnVpbHRpbnMgaGFzIHN1YmNs
YXNzZXMuIElmIFRlc3RPdmVycmlkZUJ1aWx0aW5zIGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBh
c3NlZAotICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBUZXN0T3ZlcnJpZGVC
dWlsdGlucyB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZwotICAgIC8vIGJ5IGFk
ZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2Ug
SURMIGRlZmluaXRpb24KLSAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09
IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7Ci0jZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlV3JhcHBl
cjxUZXN0T3ZlcnJpZGVCdWlsdGlucz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0K
LQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE92ZXJyaWRlQnVpbHRp
bnMmIGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LCBpbXBsKTsKLX0KLQotVGVzdE92ZXJyaWRlQnVpbHRpbnMqIEpTVGVzdE92ZXJyaWRl
QnVpbHRpbnM6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQotewot
ICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zKj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7Ci0g
ICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVp
bHRpbnMuaAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaAkobm9uZXhpc3RlbnQpCkBAIC0x
LDk4ICswLDAgQEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVu
IHNvdXJjZSBwcm9qZWN0LgotICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2Vu
ZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0K
LSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
bmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKLSNpbmNsdWRlICJUZXN0T3ZlcnJpZGVCdWlsdGlucy5o
IgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRl
c3RPdmVycmlkZUJ1aWx0aW5zPiB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTRE9NV3Jh
cHBlcjxUZXN0T3ZlcnJpZGVCdWlsdGlucz47Ci0gICAgc3RhdGljIEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnMqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE92ZXJyaWRlQnVpbHRpbnM+JiYgaW1wbCkKLSAgICB7
Ci0gICAgICAgIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucz4oZ2xvYmFsT2JqZWN0LT52bSgp
LmhlYXApKSBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0
LT52bSgpKTsKLSAgICAgICAgcmV0dXJuIHB0cjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgSlNDOjpK
U09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwot
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFs
T2JqZWN0Jik7Ci0gICAgc3RhdGljIFRlc3RPdmVycmlkZUJ1aWx0aW5zKiB0b1dyYXBwZWQoSlND
OjpWTSYsIEpTQzo6SlNWYWx1ZSk7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUs
IEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRPd25Q
cm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQ
cm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlv
bk1vZGUoKSk7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwotCi0gICAg
REVDTEFSRV9JTkZPOwotCi0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNj
ZXNzb3JzKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9y
KEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQotICAgIHsKLSAgICAgICAgaWYgY29uc3RleHByICht
b2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKLSAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKLSAgICB9
Ci0gICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2
bSk7Ci0gICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6
ZXImKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1w
dXJlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVu
Z3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIHwg
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7Ci1wcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0
T3ZlcnJpZGVCdWlsdGlucyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVm
PFRlc3RPdmVycmlkZUJ1aWx0aW5zPiYmKTsKLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlND
OjpWTSYpOwotfTsKLQotY2xhc3MgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc093bmVyIDogcHVibGlj
IEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFj
aGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29u
dGV4dCwgSlNDOjpTbG90VmlzaXRvciYsIGNvbnN0IGNoYXIqKik7Ci0gICAgdmlydHVhbCB2b2lk
IGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwotfTsK
LQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldv
cmxkJiwgVGVzdE92ZXJyaWRlQnVpbHRpbnMqKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zT3duZXI+IG93bmVyOwotICAgIHJldHVybiAmb3duZXIu
Z2V0KCk7Ci19Ci0KLWlubGluZSB2b2lkKiB3cmFwcGVyS2V5KFRlc3RPdmVycmlkZUJ1aWx0aW5z
KiB3cmFwcGFibGVPYmplY3QpCi17Ci0gICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKLX0KLQot
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0
KiwgVGVzdE92ZXJyaWRlQnVpbHRpbnMmKTsKLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBUZXN0T3ZlcnJpZGVCdWlsdGlucyogaW1wbCkgeyByZXR1cm4gaW1wbCA/
IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6Ompz
TnVsbCgpOyB9Ci1KU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdE92ZXJyaWRlQnVpbHRpbnM+JiYpOwot
aW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
ZlB0cjxUZXN0T3ZlcnJpZGVCdWlsdGlucz4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05l
d2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFz
ZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTRE9N
V3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0T3ZlcnJpZGVCdWlsdGlucz4gewotICAgIHVzaW5n
IFdyYXBwZXJDbGFzcyA9IEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM7Ci0gICAgdXNpbmcgVG9XcmFw
cGVkUmV0dXJuVHlwZSA9IFRlc3RPdmVycmlkZUJ1aWx0aW5zKjsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxl
dGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLUxGClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9u
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlv
bi5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURl
Y2xhcmF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTMgKzMzLDEzIEBACiAgICAgW0NF
UmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHJlbW92ZVByb3BlcnR5KERP
TVN0cmluZyBwcm9wZXJ0eU5hbWUpOwogICAgIERPTVN0cmluZz8gZ2V0UHJvcGVydHlQcmlvcml0
eShET01TdHJpbmcgcHJvcGVydHlOYW1lKTsKIAotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dF
eGNlcHRpb25dIHVuZGVmaW5lZCBzZXRQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVydHlOYW1lLCBb
VHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZSwgb3B0aW9uYWwgW1RyZWF0
TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgcHJpb3JpdHkgPSAiIik7CisgICAgW0NFUmVh
Y3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFByb3BlcnR5KERPTVN0cmlu
ZyBwcm9wZXJ0eU5hbWUsIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVl
LCBvcHRpb25hbCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBwcmlvcml0eSA9
ICIiKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAg
ICBnZXR0ZXIgRE9NU3RyaW5nIGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIENTU1J1bGU/IHBhcmVudFJ1bGU7CiAKLSAgICBbQ0VSZWFjdGlvbnNdIGF0
dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBjc3NGbG9hdDsKKyAg
ICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0
cmluZyBjc3NGbG9hdDsKIAogICAgIERPTVN0cmluZz8gZ2V0UHJvcGVydHlTaG9ydGhhbmQob3B0
aW9uYWwgRE9NU3RyaW5nIHByb3BlcnR5TmFtZSk7CiAgICAgYm9vbGVhbiBpc1Byb3BlcnR5SW1w
bGljaXQob3B0aW9uYWwgRE9NU3RyaW5nIHByb3BlcnR5TmFtZSk7CkBAIC00OSw3ICs0OSw3IEBA
CiAgICAgLy8gcHJlZml4ZXMgZm9yIHRoaXMgdG8gYmUgcHJhY3RpY2FsLiBJZiB3ZSByZW1vdmUg
bGVnYWN5IGFsaWFzZXMsIHdlIHNob3VsZAogICAgIC8vIHJlY29uc2lkZXIgdGhpcyBkZWNpc2lv
bi4KICAgICBnZXR0ZXIgKERPTVN0cmluZyBvciBkb3VibGUpIChET01TdHJpbmcgbmFtZSk7Ci0g
ICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbiwgQ2FsbE5hbWVkU2V0dGVyT25seUZv
clN1cHBvcnRlZFByb3BlcnRpZXNdIHNldHRlciB1bmRlZmluZWQgKERPTVN0cmluZyBuYW1lLCBb
VHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZSk7CisgICAgW0NFUmVhY3Rp
b25zLCBNYXlUaHJvd0V4Y2VwdGlvbiwgQ2FsbE5hbWVkU2V0dGVyT25seUZvclN1cHBvcnRlZFBy
b3BlcnRpZXNdIHNldHRlciB1bmRlZmluZWQgKERPTVN0cmluZyBuYW1lLCBbTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZSk7CiAKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBk
ZXByZWNhdGVkLCBhbmQgd2Ugd291bGQgbGlrZSB0byBkcm9wIHN1cHBvcnQgZm9yIGl0IHNvbWVk
YXkKICAgICBEZXByZWNhdGVkQ1NTT01WYWx1ZT8gZ2V0UHJvcGVydHlDU1NWYWx1ZShET01TdHJp
bmcgcHJvcGVydHlOYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmtub3duUnVs
ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Vua25vd25SdWxlLmlk
bAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Vua25vd25SdWxl
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogCiAvLyBJbnRyb2R1Y2VkIGlu
IERPTSBMZXZlbCAyOgogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgQ1NTVW5rbm93blJ1bGUgOiBDU1NSdWxlIHsKIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRs
CShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudENTU0lubGlu
ZVN0eWxlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogLy8gQ1NTT00gZXh0
ZW5zaW9ucyB0byBIVE1MRWxlbWVudCAvIFNWR0VsZW1lbnQ6CiAvLyBodHRwczovL2RyYWZ0cy5j
c3N3Zy5vcmcvY3Nzb20vI3RoZS1lbGVtZW50Y3NzaW5saW5lc3R5bGUtaW50ZXJmYWNlCiBbCi0g
ICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGlu
dGVyZmFjZSBFbGVtZW50Q1NTSW5saW5lU3R5bGUgewogICAgIFtJbXBsZW1lbnRlZEFzPWNzc29t
U3R5bGUsIFB1dEZvcndhcmRzPWNzc1RleHRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NTdHlsZURl
Y2xhcmF0aW9uIHN0eWxlOyAvLyBGSVhNRTogU2hvdWxkIGJlIFtTYW1lT2JqZWN0XS4KICAgICBb
SW1wbGVtZW50ZWRBcz1lbnN1cmVBdHRyaWJ1dGVTdHlsZU1hcCwgQ2FjaGVkQXR0cmlidXRlLCBF
bmFibGVkQXRSdW50aW1lPUNTU1R5cGVkT00sIENvbmRpdGlvbmFsPUNTU19UWVBFRF9PTV0gcmVh
ZG9ubHkgYXR0cmlidXRlIFN0eWxlUHJvcGVydHlNYXAgYXR0cmlidXRlU3R5bGVNYXA7IC8vIEZJ
WE1FOiBTaG91bGQgYmUgW1NhbWVPYmplY3RdLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL01l
ZGlhTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5p
ZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAgICAgSW1wbGVtZW50YXRpb25MYWNr
c1ZUYWJsZSwKICAgICBKU0N1c3RvbUhlYWRlciwKIF0gaW50ZXJmYWNlIE1lZGlhTGlzdCB7Ci0g
ICAgYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1lZGlhVGV4
dDsKKyAgICBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgbWVk
aWFUZXh0OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKIAog
ICAgIGdldHRlciBET01TdHJpbmc/IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlTWVkaWEuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVNZWRpYS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAK
ICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1SZWFjaGFibGVGcm9tRE9NV2luZG93LAog
ICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBTdHlsZU1lZGlhIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5pZGwJKHJldmlzaW9uIDI2NjY1OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMTgsNyArMTgsNyBAQAogICovCiAKIGludGVyZmFjZSBDaGFyYWN0ZXJEYXRhIDogTm9kZSB7
Ci0gICAgYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGRhdGE7
CisgICAgYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGRhdGE7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHN1YnN0cmluZ0RhdGEodW5zaWduZWQgbG9uZyBvZmZz
ZXQsIHVuc2lnbmVkIGxvbmcgY291bnQpOwogICAgIHVuZGVmaW5lZCBhcHBlbmREYXRhKERPTVN0
cmluZyBkYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGUuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGUuaWRsCShyZXZpc2lvbiAyNjY2
NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjAsNyArMjAsNyBAQAogCiAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2NoaWxk
bm9kZQogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0LAogXSBpbnRlcmZhY2UgQ2hpbGROb2RlIHsKICAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFi
bGUsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgYmVmb3JlKChOb2RlIG9yIERPTVN0cmlu
ZykuLi4gbm9kZXMpOwogICAgIFtDRVJlYWN0aW9ucywgVW5zY29wYWJsZSwgTWF5VGhyb3dFeGNl
cHRpb25dIHVuZGVmaW5lZCBhZnRlcigoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbAkocmV2aXNpb24gMjY2
NjU5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUs
CiBdIGludGVyZmFjZSBET01JbXBsZW1lbnRhdGlvbiB7CiAgICAgW05ld09iamVjdCwgTWF5VGhy
b3dFeGNlcHRpb25dIERvY3VtZW50VHlwZSBjcmVhdGVEb2N1bWVudFR5cGUoRE9NU3RyaW5nIHF1
YWxpZmllZE5hbWUsIERPTVN0cmluZyBwdWJsaWNJZCwgRE9NU3RyaW5nIHN5c3RlbUlkKTsKLSAg
ICBbTmV3T2JqZWN0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gWE1MRG9jdW1lbnQgY3JlYXRlRG9jdW1l
bnQoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9N
U3RyaW5nIHF1YWxpZmllZE5hbWUsIG9wdGlvbmFsIERvY3VtZW50VHlwZT8gZG9jdHlwZSA9IG51
bGwpOworICAgIFtOZXdPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBYTUxEb2N1bWVudCBjcmVh
dGVEb2N1bWVudChET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgW0xlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nXSBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwgb3B0aW9uYWwgRG9jdW1lbnRUeXBlPyBkb2N0
eXBlID0gbnVsbCk7CiAgICAgW05ld09iamVjdF0gSFRNTERvY3VtZW50IGNyZWF0ZUhUTUxEb2N1
bWVudChvcHRpb25hbCBET01TdHJpbmcgdGl0bGUpOwogCiAgICAgYm9vbGVhbiBoYXNGZWF0dXJl
KCk7IC8vIFVzZWxlc3M7IGFsd2F5cyByZXR1cm5zIHRydWUuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRE9NU3RyaW5nTWFwLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RE9NU3RyaW5nTWFwLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0RPTVN0cmluZ01hcC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwog
ICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEVsZW1lbnRSb290LAotICAgIE92ZXJyaWRlQnVp
bHRpbnMsCisgICAgTGVnYWN5T3ZlcnJpZGVCdWlsdElucywKICAgICBTa2lwVlRhYmxlVmFsaWRh
dGlvbiwKIF0gaW50ZXJmYWNlIERPTVN0cmluZ01hcCB7CiAgICAgZ2V0dGVyIERPTVN0cmluZyAo
RE9NU3RyaW5nIG5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0
aW9uT3JNb3Rpb25FdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Rl
dmljZU9yaWVudGF0aW9uT3JNb3Rpb25FdmVudC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uRXZlbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1ERVZJQ0Vf
T1JJRU5UQVRJT04sCi0gICAgTm9JbnRlcmZhY2VPYmplY3QKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdAogXSBpbnRlcmZhY2UgRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50IHsKICAg
ICBbQ2FsbFdpdGg9RG9jdW1lbnQsIEVuYWJsZWRCeVNldHRpbmc9RGV2aWNlT3JpZW50YXRpb25Q
ZXJtaXNzaW9uQVBJXSBzdGF0aWMgUHJvbWlzZTxEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVy
bWlzc2lvblN0YXRlPiByZXF1ZXN0UGVybWlzc2lvbigpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQCB0eXBlZGVmIChIVE1MU2Ny
aXB0RWxlbWVudCBvciBTVkdTY3JpcHRFCiAgICAgW05ld09iamVjdF0gVHJlZVdhbGtlciBjcmVh
dGVUcmVlV2Fsa2VyKE5vZGUgcm9vdCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyB3aGF0VG9TaG93
ID0gMHhGRkZGRkZGRiwgb3B0aW9uYWwgTm9kZUZpbHRlcj8gZmlsdGVyID0gbnVsbCk7CiAKICAg
ICAvLyBFeHRlbnNpb25zIGZyb20gSFRNTCBzcGVjaWZpY2F0aW9uIChodHRwczovL2h0bWwuc3Bl
Yy53aGF0d2cub3JnLyN0aGUtZG9jdW1lbnQtb2JqZWN0KS4KLSAgICBbUHV0Rm9yd2FyZHM9aHJl
ZiwgVW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBMb2NhdGlvbj8gbG9jYXRpb247Cisg
ICAgW1B1dEZvcndhcmRzPWhyZWYsIExlZ2FjeVVuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1
dGUgTG9jYXRpb24/IGxvY2F0aW9uOwogICAgIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgZG9tYWluOwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcmVmZXJyZXI7CiAgICAgYXR0cmlidXRl
IFVTVlN0cmluZyBjb29raWU7CkBAIC0xMzAsNyArMTMwLDcgQEAgdHlwZWRlZiAoSFRNTFNjcmlw
dEVsZW1lbnQgb3IgU1ZHU2NyaXB0RQogICAgIFtFbmFibGVkQnlTZXR0aW5nPVVuZG9NYW5hZ2Vy
QVBJXSByZWFkb25seSBhdHRyaWJ1dGUgVW5kb01hbmFnZXIgdW5kb01hbmFnZXI7CiAKICAgICAv
LyBTcGVjaWFsIGV2ZW50IGhhbmRsZXIgSURMIGF0dHJpYnV0ZXMgdGhhdCBvbmx5IGFwcGx5IHRv
IERvY3VtZW50IG9iamVjdHMuCi0gICAgW0xlbmllbnRUaGlzXSBhdHRyaWJ1dGUgRXZlbnRIYW5k
bGVyIG9ucmVhZHlzdGF0ZWNoYW5nZTsKKyAgICBbTGVnYWN5TGVuaWVudFRoaXNdIGF0dHJpYnV0
ZSBFdmVudEhhbmRsZXIgb25yZWFkeXN0YXRlY2hhbmdlOwogCiAgICAgLy8gRXh0ZW5zaW9ucyBm
cm9tIHRoZSBDU1NPTS1WaWV3IHNwZWNpZmljYXRpb24gKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9y
Zy9jc3NvbS12aWV3LyNleHRlbnNpb25zLXRvLXRoZS1kb2N1bWVudC1pbnRlcmZhY2UpLgogICAg
IFtJbXBsZW1lbnRlZEFzPXNjcm9sbGluZ0VsZW1lbnRGb3JBUEldIHJlYWRvbmx5IGF0dHJpYnV0
ZSBFbGVtZW50PyBzY3JvbGxpbmdFbGVtZW50OwpAQCAtMTc5LDExICsxNzksMTEgQEAgdHlwZWRl
ZiAoSFRNTFNjcmlwdEVsZW1lbnQgb3IgU1ZHU2NyaXB0RQogCiAgICAgLy8gT2Jzb2xldGUgZmVh
dHVyZXMgZnJvbSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vYnNvbGV0
ZS5odG1sCiAKLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlT
dHJpbmddIERPTVN0cmluZyBmZ0NvbG9yOwotICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRB
cz1saW5rQ29sb3JGb3JCaW5kaW5nc10gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmlu
Z10gRE9NU3RyaW5nIGxpbmtDb2xvcjsKLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJl
YXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyB2bGlua0NvbG9yOwotICAgIFtDRVJlYWN0
aW9uc10gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGFsaW5r
Q29sb3I7Ci0gICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3Ry
aW5nXSBET01TdHJpbmcgYmdDb2xvcjsKKyAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBmZ0NvbG9yOworICAgIFtDRVJlYWN0aW9u
cywgSW1wbGVtZW50ZWRBcz1saW5rQ29sb3JGb3JCaW5kaW5nc10gYXR0cmlidXRlIFtMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGxpbmtDb2xvcjsKKyAgICBbQ0VSZWFjdGlvbnNd
IGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyB2bGlua0NvbG9y
OworICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10g
RE9NU3RyaW5nIGFsaW5rQ29sb3I7CisgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgYmdDb2xvcjsKIAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBIVE1MQ29sbGVjdGlvbiBhbmNob3JzOyAvKiBbU2FtZU9iamVjdF0gKi8KICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24gYXBwbGV0czsgLyogW1NhbWVPYmplY3Rd
ICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRBbmRFbGVtZW50RXZlbnRIYW5k
bGVycy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50QW5kRWxl
bWVudEV2ZW50SGFuZGxlcnMuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRBbmRFbGVtZW50RXZlbnRIYW5kbGVycy5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDcgKzI1LDcgQEAKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jZG9j
dW1lbnRhbmRlbGVtZW50ZXZlbnRoYW5kbGVycwogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAor
ICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgRG9jdW1lbnRBbmRFbGVt
ZW50RXZlbnRIYW5kbGVycyB7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmNvcHk7CiAg
ICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmN1dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE9yU2hhZG93Um9vdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50T3JTaGFkb3dSb290LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50T3JTaGFkb3dSb290LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNyArMjYsNyBAQAogCiAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvY3VtZW50
b3JzaGFkb3dyb290CiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBEb2N1bWVudE9yU2hhZG93Um9vdCB7CiAgICAgLy8g
RXh0ZW5zaW9ucyBmcm9tIFNoYWRvdyBET00gQVBJIChodHRwczovL3czYy5naXRodWIuaW8vd2Vi
Y29tcG9uZW50cy9zcGVjL3NoYWRvdy8jZXh0ZW5zaW9ucy10by10aGUtZG9jdW1lbnRvcnNoYWRv
d3Jvb3QtbWl4aW4pLgogICAgIC8vIERPTVNlbGVjdGlvbj8gZ2V0U2VsZWN0aW9uKCk7IC8vIEZJ
WE1FOiBXZSBjdXJyZW50bHkgaGF2ZSB0aGlzIG9uIERvY3VtZW50IG9ubHkuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTkwLDggKzkwLDggQEAKIAogICAgIC8vIEV4
dGVuc2lvbnMgdG8gRWxlbWVudCBmcm9tIERPTSBQYXJzaW5nIGFuZCBTZXJpYWxpemF0aW9uIHNw
ZWNpZmljYXRpb24uCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL0RPTS1QYXJzaW5nLyNl
eHRlbnNpb25zLXRvLXRoZS1lbGVtZW50LWludGVyZmFjZQotICAgIFtDRVJlYWN0aW9uc10gYXR0
cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGlubmVySFRNTDsKLSAg
ICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0
cmluZyBvdXRlckhUTUw7CisgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nXSBET01TdHJpbmcgaW5uZXJIVE1MOworICAgIFtDRVJlYWN0aW9uc10gYXR0
cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG91dGVySFRNTDsKICAg
ICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgaW5zZXJ0QWRqYWNl
bnRIVE1MKERPTVN0cmluZyBwb3NpdGlvbiwgRE9NU3RyaW5nIHRleHQpOwogCiAgICAgLy8gRXh0
ZW5zaW9ucyBmcm9tIEZ1bGwgU2NyZWVuIEFQSSAoaHR0cHM6Ly9mdWxsc2NyZWVuLnNwZWMud2hh
dHdnLm9yZy8jYXBpKS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmlkbAkocmV2aXNpb24gMjY2NjU5KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyAr
NTAsNyBAQCB0eXBlZGVmIGRvdWJsZSBET01IaWdoUmVzVGltZVN0YW1wOwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBib29sZWFuIGRlZmF1bHRQcmV2ZW50ZWQ7CiAgICAgW0VuYWJsZWRBdFJ1bnRp
bWU9U2hhZG93RE9NXSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBjb21wb3NlZDsKIAotICAg
IFtVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNUcnVzdGVkOworICAg
IFtMZWdhY3lVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNUcnVzdGVk
OwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBJbXBsZW1lbnRlZEFzPXRp
bWVTdGFtcEZvckJpbmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NSGlnaFJlc1RpbWVTdGFt
cCB0aW1lU3RhbXA7CiAKICAgICB1bmRlZmluZWQgaW5pdEV2ZW50KERPTVN0cmluZyB0eXBlLCBv
cHRpb25hbCBib29sZWFuIGJ1YmJsZXMgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxh
YmxlID0gZmFsc2UpOyAvLyBIaXN0b3JpY2FsLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TGlzdGVuZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExp
c3RlbmVyLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TGlzdGVuZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw3IEBACiAgKi8KIAogWwot
ICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50
ZXJmYWNlIEV2ZW50TGlzdGVuZXIgewogICAgIHVuZGVmaW5lZCBoYW5kbGVFdmVudChFdmVudCBl
dmVudCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0dsb2JhbEV2ZW50SGFuZGxlcnMu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9HbG9iYWxFdmVudEhhbmRsZXJz
LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0dsb2JhbEV2ZW50
SGFuZGxlcnMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKIC8vIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFwaXMuaHRtbCNnbG9iYWxl
dmVudGhhbmRsZXJzCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBHbG9iYWxFdmVudEhhbmRsZXJzIHsKICAgICAvLyBD
b21tZW50ZWQgb3V0IGV2ZW50IGhhbmRsZXJzIGFyZSBkZWZpbmVkIGJ5IHRoZSBIVE1MNSBzcGVj
aWZpY2F0aW9uIGJ1dAogICAgIC8vIGFyZSBub3QgeWV0IGltcGxlbWVudGVkLgpAQCAtNjUsOCAr
NjUsOCBAQAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25sb2FkZWRtZXRhZGF0YTsKICAg
ICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubG9hZHN0YXJ0OwogICAgIGF0dHJpYnV0ZSBFdmVu
dEhhbmRsZXIgb25tb3VzZWRvd247Ci0gICAgW0xlbmllbnRUaGlzXSBhdHRyaWJ1dGUgRXZlbnRI
YW5kbGVyIG9ubW91c2VlbnRlcjsKLSAgICBbTGVuaWVudFRoaXNdIGF0dHJpYnV0ZSBFdmVudEhh
bmRsZXIgb25tb3VzZWxlYXZlOworICAgIFtMZWdhY3lMZW5pZW50VGhpc10gYXR0cmlidXRlIEV2
ZW50SGFuZGxlciBvbm1vdXNlZW50ZXI7CisgICAgW0xlZ2FjeUxlbmllbnRUaGlzXSBhdHRyaWJ1
dGUgRXZlbnRIYW5kbGVyIG9ubW91c2VsZWF2ZTsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVy
IG9ubW91c2Vtb3ZlOwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tb3VzZW91dDsKICAg
ICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubW91c2VvdmVyOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL05hdmlnYXRvck1heFRvdWNoUG9pbnRzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vTmF2aWdhdG9yTWF4VG91Y2hQb2ludHMuaWRsCShyZXZpc2lvbiAyNjY2NTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTmF2aWdhdG9yTWF4VG91Y2hQb2ludHMuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBNYXhUb3VjaFBv
aW50cyB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbWF4VG91Y2hQb2ludHM7CiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vbkRvY3VtZW50VHlwZUNoaWxkTm9kZS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vbkRvY3VtZW50VHlwZUNoaWxkTm9kZS5p
ZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob25Eb2N1bWVudFR5
cGVDaGlsZE5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKIC8vIGh0
dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jaW50ZXJmYWNlLW5vbmRvY3VtZW50dHlwZWNoaWxk
bm9kZQogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0LAogXSBpbnRlcmZhY2UgTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlIHsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRWxlbWVudD8gcHJldmlvdXNFbGVtZW50U2libGluZzsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRWxlbWVudD8gbmV4dEVsZW1lbnRTaWJsaW5nOwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL05vbkVsZW1lbnRQYXJlbnROb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vTm9uRWxlbWVudFBhcmVudE5vZGUuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vTm9uRWxlbWVudFBhcmVudE5vZGUuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKIC8vIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8j
aW50ZXJmYWNlLW5vbmVsZW1lbnRwYXJlbnRub2RlCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3Qs
CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBOb25FbGVtZW50UGFy
ZW50Tm9kZSB7CiAgICAgW0RPTUpJVD1SZWFkRE9NXSBFbGVtZW50PyBnZXRFbGVtZW50QnlJZChb
UmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIERPTVN0cmluZyBlbGVtZW50SWQpOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9QYXJlbnROb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vUGFyZW50Tm9kZS5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9QYXJlbnROb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
NyBAQAogCiAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2ludGVyZmFjZS1wYXJlbnRu
b2RlCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3QsCiBdIGludGVyZmFjZSBQYXJlbnROb2RlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRN
TENvbGxlY3Rpb24gY2hpbGRyZW47IC8vIEZJWE1FOiBTaG91bGQgYmUgW1NhbWVPYmplY3RdLgog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50PyBmaXJzdEVsZW1lbnRDaGlsZDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBA
QAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IGhvc3Q7CiAKICAgICAvLyBGSVhNRTog
U2VlbXMgdG8gaGF2ZSBiZWVuIGRyb3BwZWQgZnJvbSB0aGUgU2hhZG93IERPTSBBUEkuCi0gICAg
W0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJp
bmcgaW5uZXJIVE1MOworICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ10gRE9NU3RyaW5nIGlubmVySFRNTDsKIH07CiAKIFNoYWRvd1Jvb3QgaW5jbHVk
ZXMgRG9jdW1lbnRPclNoYWRvd1Jvb3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdGFi
bGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TbG90YWJsZS5pZGwJKHJl
dmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TbG90YWJsZS5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRW5hYmxlZEF0UnVudGltZT1T
aGFkb3dET00sCiBdIGludGVyZmFjZSBTbG90YWJsZSB7CiAgICAgW0ltcGxlbWVudGVkQXM9YXNz
aWduZWRTbG90Rm9yQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MU2xvdEVsZW1lbnQ/
IGFzc2lnbmVkU2xvdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5p
ZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVt
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTksMTIgKzE5LDEyIEBACiAgKi8KIAogaW50ZXJm
YWNlIEhUTUxCb2R5RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90
TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01T
dHJpbmcgYUxpbms7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmli
dXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGFMaW5rOwogICAgIFtDRVJl
YWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYmFja2dyb3Vu
ZDsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0
TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgYmdDb2xvcjsKLSAgICBbQ0VSZWFjdGlvbnM9
Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBE
T01TdHJpbmcgbGluazsKLSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRy
aWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgdGV4dDsKLSAgICBbQ0VS
ZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5
U3RyaW5nXSBET01TdHJpbmcgdkxpbms7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVm
bGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29s
b3I7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGxpbms7CisgICAgW0NFUmVhY3Rpb25zPU5v
dE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9N
U3RyaW5nIHRleHQ7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmli
dXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZMaW5rOwogCiAgICAgW05v
dEVudW1lcmFibGUsIFdpbmRvd0V2ZW50SGFuZGxlcl0gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBv
bmJsdXI7CiAgICAgW05vdEVudW1lcmFibGUsIFdpbmRvd0V2ZW50SGFuZGxlcl0gYXR0cmlidXRl
IEV2ZW50SGFuZGxlciBvbmVycm9yOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9j
dW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1l
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiBbCiAgICAgQ3VzdG9tVG9K
U09iamVjdCwKICAgICBOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMsCi0gICAgT3Zl
cnJpZGVCdWlsdGlucywKKyAgICBMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLAogXSBpbnRlcmZhY2Ug
SFRNTERvY3VtZW50IDogRG9jdW1lbnQgeyAgICAKICAgICBnZXR0ZXIgKFdpbmRvd1Byb3h5IG9y
IEVsZW1lbnQgb3IgSFRNTENvbGxlY3Rpb24pIChET01TdHJpbmcgbmFtZSk7CiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0
MSw3IEBACiAgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgYm9vbGVhbiBzcGVsbGNoZWNrOwog
ICAgIC8vIHVuZGVmaW5lZCBmb3JjZVNwZWxsQ2hlY2soKTsgLy8gRklYTUU6IE5vdCBzdXBwb3J0
ZWQuCiAKLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJp
bmddIERPTVN0cmluZyBpbm5lclRleHQ7CisgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgaW5uZXJUZXh0OwogCiAgICAgLy8gRklY
TUU6IFNob3VsZCBiZSBpbiBhIHNlcGFyYXRlIEVsZW1lbnRDb250ZW50RWRpdGFibGUgaW50ZXJm
YWNlLgogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2VsZW1lbnRjb250ZW50
ZWRpdGFibGUKQEAgLTU2LDExICs1NiwxMSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3Vi
bGUgb2Zmc2V0SGVpZ2h0OyAvLyBGSVhNRTogU2hvdWxkIGJlIG9mIHR5cGUgbG9uZy4KIAogICAg
IC8vIE5vbiBTdGFuZGFyZCBidXQgbWF5IGdldCBhZGRlZCB0byB0aGUgc3BlY2lmaWNhdGlvbiAo
aHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9odG1sL2lzc3Vlcy82NjgpLgotICAgIFtDRVJlYWN0
aW9uc10gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG91dGVy
VGV4dDsKKyAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmddIERPTVN0cmluZyBvdXRlclRleHQ7CiAKICAgICAvLyBpT1MgYXV0b2NvcnJlY3QgLyBhdXRv
Y2FwaXRhbGl6YXRpb24gZXh0ZW5zaW9ucy4KICAgICBbQ29uZGl0aW9uYWw9QVVUT0NPUlJFQ1Qs
IENFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgYm9vbGVhbiBhdXRvY29ycmVjdDsKLSAgICBbQ29uZGl0
aW9uYWw9QVVUT0NBUElUQUxJWkUsIENFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFz
PUVtcHR5U3RyaW5nXSBET01TdHJpbmcgYXV0b2NhcGl0YWxpemU7CisgICAgW0NvbmRpdGlvbmFs
PUFVVE9DQVBJVEFMSVpFLCBDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ10gRE9NU3RyaW5nIGF1dG9jYXBpdGFsaXplOwogCiAgICAgLy8gRklYTUU6IFdlIGFy
ZSB0aGUgb25seSBicm93c2VyIHRvIHN1cHBvcnQgdGhpcyBub3cgdGhhdCBCbGluayBkcm9wcGVk
IGl0IChodHRwOi8vY3JidWcuY29tLzY4ODk0MykuCiAgICAgW0NFUmVhY3Rpb25zLCBSZWZsZWN0
XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdlYmtpdGRyb3B6b25lOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvbnRFbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsx
OCw3IEBACiAgKi8KIAogaW50ZXJmYWNlIEhUTUxGb250RWxlbWVudCA6IEhUTUxFbGVtZW50IHsK
LSAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVs
bEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgY29sb3I7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5l
ZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3Ry
aW5nIGNvbG9yOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0
ZSBET01TdHJpbmcgZmFjZTsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIHNpemU7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAK
IFsKICAgICBMZWdhY3lVbmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMsCi0gICAgT3ZlcnJpZGVC
dWlsdGlucywKKyAgICBMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLAogICAgIEpTR2VuZXJhdGVUb05h
dGl2ZU9iamVjdCwKIF0gaW50ZXJmYWNlIEhUTUxGb3JtRWxlbWVudCA6IEhUTUxFbGVtZW50IHsK
ICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0PWFjY2VwdF9jaGFyc2V0XSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGFjY2VwdENoYXJzZXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lRWxlbWVudC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDgg
QEAgaW50ZXJmYWNlIEhUTUxGcmFtZUVsZW1lbnQgOiBIVE1MRWxlbWVudAogICAgIFtDaGVja1Nl
Y3VyaXR5Rm9yTm9kZV0gcmVhZG9ubHkgYXR0cmlidXRlIERvY3VtZW50IGNvbnRlbnREb2N1bWVu
dDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgY29udGVudFdpbmRvdzsKIAot
ICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbVHJlYXROdWxs
QXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBtYXJnaW5IZWlnaHQ7Ci0gICAgW0NFUmVhY3Rpb25z
PU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10g
RE9NU3RyaW5nIG1hcmdpbldpZHRoOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxl
Y3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBtYXJnaW5I
ZWlnaHQ7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1hcmdpbldpZHRoOwogCiAgICAgW0No
ZWNrU2VjdXJpdHlGb3JOb2RlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRG9jdW1lbnQgZ2V0U1ZHRG9j
dW1lbnQoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSHlwZXJsaW5rRWxlbWVu
dFV0aWxzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIeXBlcmxp
bmtFbGVtZW50VXRpbHMuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3
ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3QKIF0gaW50ZXJmYWNlIEhUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMgewog
ICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3QsIFVSTF0gc3RyaW5naWZpZXIgYXR0
cmlidXRlIFVTVlN0cmluZyBocmVmOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmcg
b3JpZ2luOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJ
KHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1l
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw4IEBAIGludGVyZmFjZSBIVE1MSUZy
YW1lRWxlbWVudCA6IEhUTUxFbGVtZW4KICAgICBbUmVmbGVjdCwgQ0VSZWFjdGlvbnM9Tm90TmVl
ZGVkXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZyYW1lQm9yZGVyOwogICAgIFtSZWZsZWN0LCBDRVJl
YWN0aW9ucz1Ob3ROZWVkZWRdIGF0dHJpYnV0ZSBET01TdHJpbmcgaGVpZ2h0OwogICAgIFtSZWZs
ZWN0LCBVUkwsIENFUmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRlIFVTVlN0cmluZyBsb25n
RGVzYzsKLSAgICBbUmVmbGVjdCwgQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgW1Ry
ZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luSGVpZ2h0OwotICAgIFtSZWZs
ZWN0LCBDRVJlYWN0aW9ucz1Ob3ROZWVkZWRdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlT
dHJpbmddIERPTVN0cmluZyBtYXJnaW5XaWR0aDsKKyAgICBbUmVmbGVjdCwgQ0VSZWFjdGlvbnM9
Tm90TmVlZGVkXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcg
bWFyZ2luSGVpZ2h0OworICAgIFtSZWZsZWN0LCBDRVJlYWN0aW9ucz1Ob3ROZWVkZWRdIGF0dHJp
YnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBtYXJnaW5XaWR0aDsKICAg
ICBbUmVmbGVjdCwgQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5h
bWU7CiAKICAgICBbUHV0Rm9yd2FyZHM9dmFsdWVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01Ub2tl
bkxpc3Qgc2FuZGJveDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICAgIFtDRVJlYWN0
aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKICAgICBb
Q0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsaWdu
OwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJp
bmcgYWx0OwotICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBb
VHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBib3JkZXI7CisgICAgW0NFUmVhY3Rp
b25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z10gRE9NU3RyaW5nIGJvcmRlcjsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1
dGUgRE9NU3RyaW5nPyBjcm9zc09yaWdpbjsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBh
dHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBoZWlnaHQ7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRl
ZCwgUmVmbGVjdF0gYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgaHNwYWNlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC01OSw3ICs1OSw3IEBACiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRlIERP
TVN0cmluZyB0eXBlOyAvLyByZWFkb25seSBkcm9wcGVkIGFzIHBhcnQgb2YgRE9NIGxldmVsIDIK
ICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlZmF1bHRW
YWx1ZTsKICAgICAvLyBTZWUgdGhlIGRpc2N1c3Npb24gaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMDA4NQotICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWRdIGF0
dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZTsKKyAgICBb
Q0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
XSBET01TdHJpbmcgdmFsdWU7CiAgICAgYXR0cmlidXRlIERhdGU/IHZhbHVlQXNEYXRlOwogICAg
IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHZhbHVlQXNOdW1iZXI7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjY2NTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjUsNyArMjUsNyBAQAogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxl
Y3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgY29kZTsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVk
LCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsaWduOwogICAgIFtDRVJlYWN0aW9ucz1O
b3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYXJjaGl2ZTsKLSAgICBbQ0VS
ZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5
U3RyaW5nXSBET01TdHJpbmcgYm9yZGVyOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJl
ZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBib3Jk
ZXI7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdCwgVVJMXSBhdHRyaWJ1dGUg
VVNWU3RyaW5nIGNvZGVCYXNlOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3Rd
IGF0dHJpYnV0ZSBET01TdHJpbmcgY29kZVR5cGU7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRl
ZCwgUmVmbGVjdCwgVVJMXSBhdHRyaWJ1dGUgVVNWU3RyaW5nIGRhdGE7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPckZvcmVpZ25FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPckZvcmVpZ25FbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjU5
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3JGb3JlaWduRWxlbWVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKIC8vIEZJWE1FOiB1cGRhdGUgYWJvdmUgbGluayB3
aGVuIHRoaXMgY2hhbmdlIGhhcyBiZWVuIGltcGxlbWVudGVkOgogLy8gaHR0cHM6Ly9naXRodWIu
Y29tL3doYXR3Zy9odG1sL2lzc3Vlcy80NzAyCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisg
ICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBIVE1MT3JGb3JlaWduRWxl
bWVudCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZ01hcCBkYXRhc2V0OyAvLyBG
SVhNRTogU2hvdWxkIGJlIFtTYW1lT2JqZWN0XS4KICAgICBbQ0VSZWFjdGlvbnMsIEltcGxlbWVu
dGVkQXM9dGFiSW5kZXhGb3JCaW5kaW5nc10gYXR0cmlidXRlIGxvbmcgdGFiSW5kZXg7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmlkbAkocmV2aXNpb24gMjY2
NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAgaW50ZXJmYWNlIEhUTUxPdXRwdXRFbGVtZW50IDog
SFRNTEVsZW1lbgogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0
ZSBET01TdHJpbmcgbmFtZTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdHlw
ZTsKLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmdd
IERPTVN0cmluZyBkZWZhdWx0VmFsdWU7Ci0gICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1Ry
ZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWU7CisgICAgW0NFUmVhY3Rpb25z
XSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgZGVmYXVsdFZh
bHVlOworICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z10gRE9NU3RyaW5nIHZhbHVlOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2ls
bFZhbGlkYXRlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBWYWxpZGl0eVN0YXRlIHZhbGlkaXR5
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5pZGwJ
KHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVs
ZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBAIGludGVyZmFjZSBIVE1M
VGFibGVDZWxsRWxlbWVudCA6IEhUTUxFbGUKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBj
ZWxsSW5kZXg7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRl
IERPTVN0cmluZyBhbGlnbjsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGF4aXM7Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVm
bGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29s
b3I7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7CiAgICAgW0NFUmVhY3Rpb25z
PU5vdE5lZWRlZCwgUmVmbGVjdD1jaGFyXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNoOwogICAgIFtD
RVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3Q9Y2hhcm9mZl0gYXR0cmlidXRlIERPTVN0cmlu
ZyBjaE9mZjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRs
CShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1l
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsMTAgQEAgaW50ZXJmYWNlIEhUTUxU
YWJsZUVsZW1lbnQgOiBIVE1MRWxlbWVudAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MQ29s
bGVjdGlvbiByb3dzOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MQ29sbGVjdGlvbiB0Qm9k
aWVzOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01T
dHJpbmcgYWxpZ247Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmli
dXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7CisgICAgW0NF
UmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwg
UmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBib3JkZXI7Ci0gICAgW0NFUmVhY3Rpb25zPU5v
dE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9N
U3RyaW5nIGNlbGxQYWRkaW5nOwotICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3Rd
IGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBjZWxsU3BhY2lu
ZzsKKyAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgW0xlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgY2VsbFBhZGRpbmc7CisgICAgW0NFUmVhY3Rp
b25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z10gRE9NU3RyaW5nIGNlbGxTcGFjaW5nOwogCiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwg
UmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBmcmFtZTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw3ICsyMyw3IEBAIGludGVyZmFjZSBIVE1MVGFibGVSb3dFbGVtZW50IDogSFRNTEVs
ZW0KICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBzZWN0aW9uUm93SW5kZXg7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIEhUTUxDb2xsZWN0aW9uIGNlbGxzOwogICAgIFtDRVJlYWN0aW9ucz1O
b3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWxpZ247Ci0gICAgW0NFUmVh
Y3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0
cmluZ10gRE9NU3RyaW5nIGJnQ29sb3I7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVm
bGVjdF0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGJnQ29s
b3I7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdD1jaGFyXSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGNoOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3Q9Y2hhcm9m
Zl0gYXR0cmlidXRlIERPTVN0cmluZyBjaE9mZjsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVk
LCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZBbGlnbjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMzYsNyArMzYsNyBAQCBpbnRlcmZhY2UgSFRNTFRleHRBcmVhRWxlbWVudCA6IEhUTUxF
bGVtCiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHR5cGU7CiAgICAgW0NFUmVh
Y3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRlIERPTVN0cmluZyBkZWZhdWx0VmFsdWU7Ci0gICAg
YXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVlOworICAg
IGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZTsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB0ZXh0TGVuZ3RoOwogCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2lsbFZhbGlkYXRlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmlkbAkocmV2aXNp
b24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRB
cnJheXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAg
IE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIENv
bmRpdGlvbmFsPVdFQkdMLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVy
aW5nQ29udGV4dCwKIF0gaW50ZXJmYWNlIEFOR0xFSW5zdGFuY2VkQXJyYXlzIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0NvbXBvc2l0aW5nLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNDb21wb3NpdGluZy5pZGwJKHJl
dmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0NvbXBv
c2l0aW5nLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAg
ICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBF
eHBvc2VkPShXaW5kb3csV29ya2VyKQogXSBpbnRlcmZhY2UgQ2FudmFzQ29tcG9zaXRpbmcgewog
ICAgIC8vIEZJWE1FOiBBbGwgdGhlIHVucmVzdHJpY3RlZCBmbG9hdCBhdHRyaWJ1dGVzIGJlbG93
IHNob3VsZCBiZSB1bnJlc3RyaWN0ZWQgZG91Ymxlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc0RyYXdJbWFnZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzRHJhd0ltYWdlLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRHJhd0ltYWdlLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNyArMzcsNyBAQCB0eXBlZGVmIChIVE1MSW1hZ2VFbGVtZW50IG9yIEhUTUxD
YW52YXNFCiApIENhbnZhc0ltYWdlU291cmNlOwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3Qs
CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtl
cikKIF0gaW50ZXJmYWNlIENhbnZhc0RyYXdJbWFnZSB7CiAgICAgLy8gRklYTUU6IEFsbCB0aGUg
dW5yZXN0cmljdGVkIGZsb2F0IGFyZ3VtZW50cyBiZWxvdyBzaG91bGQgYmUgdW5yZXN0cmljdGVk
IGRvdWJsZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNEcmF3UGF0
aC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzRHJh
d1BhdGguaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNEcmF3UGF0aC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAq
LwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3QsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc0RyYXdQ
YXRoIHsKICAgICAvLyBwYXRoIEFQSSAoc2VlIGFsc28gQ2FudmFzUGF0aCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0ZpbGxTdHJva2VTdHlsZXMuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0ZpbGxTdHJva2VTdHlsZXMu
aWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNGaWxsU3Ryb2tlU3R5bGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCB0
eXBlZGVmIChIVE1MSW1hZ2VFbGVtZW50IG9yIEhUTUxDYW52YXNFCiApIENhbnZhc0ltYWdlU291
cmNlOwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIENhbnZhc0Zp
bGxTdHJva2VTdHlsZXMgewogICAgIC8vIGNvbG9ycyBhbmQgc3R5bGVzIChzZWUgYWxzbyB0aGUg
Q2FudmFzUGF0aERyYXdpbmdTdHlsZXMgYW5kIENhbnZhc1RleHREcmF3aW5nU3R5bGVzIGludGVy
ZmFjZXMpCkBAIC00Nyw1ICs0Nyw1IEBAIHR5cGVkZWYgKEhUTUxJbWFnZUVsZW1lbnQgb3IgSFRN
TENhbnZhc0UKICAgICAvLyBGSVhNRTogQWxsIHRoZSBmbG9hdCBwYXJhbWV0ZXJzIGJlbG93IHNo
b3VsZCBiZSBkb3VibGVzLgogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2FudmFzR3JhZGllbnQg
Y3JlYXRlTGluZWFyR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCB4MSwgZmxvYXQg
eTEpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2FudmFzR3JhZGllbnQgY3JlYXRlUmFkaWFs
R3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCByMCwgZmxvYXQgeDEsIGZsb2F0IHkx
LCBmbG9hdCByMSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBDYW52YXNQYXR0ZXJuPyBjcmVh
dGVQYXR0ZXJuKENhbnZhc0ltYWdlU291cmNlIGltYWdlLCBbVHJlYXROdWxsQXM9RW1wdHlTdHJp
bmddIERPTVN0cmluZyByZXBldGl0aW9uKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENhbnZh
c1BhdHRlcm4/IGNyZWF0ZVBhdHRlcm4oQ2FudmFzSW1hZ2VTb3VyY2UgaW1hZ2UsIFtMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHJlcGV0aXRpb24pOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0ZpbHRlcnMuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0ZpbHRlcnMuaWRsCShyZXZpc2lvbiAyNjY2
NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNGaWx0ZXJzLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5kb3cs
V29ya2VyKQogXSBpbnRlcmZhY2UgQ2FudmFzRmlsdGVycyB7CiAgICAgLy8gZmlsdGVycwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsCShy
ZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNJbWFn
ZURhdGEuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAg
IE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEV4
cG9zZWQ9KFdpbmRvdyxXb3JrZXIpCiBdIGludGVyZmFjZSBDYW52YXNJbWFnZURhdGEgewogICAg
IC8vIEZJWE1FOiBBbGwgdGhlIGZsb2F0IGFyZ3VtZW50cyBiZWxvdyBzaG91bGQgYmUgbG9uZ3Mu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNJbWFnZVNtb290aGluZy5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VT
bW9vdGhpbmcuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNJbWFnZVNtb290aGluZy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0
LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIENh
bnZhc0ltYWdlU21vb3RoaW5nIHsKICAgICAvLyBpbWFnZSBzbW9vdGhpbmcKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGguaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGguaWRsCShyZXZpc2lvbiAyNjY2NTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAg
ICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKQog
XSBpbnRlcmZhY2UgQ2FudmFzUGF0aCB7CiAgICAgLy8gc2hhcmVkIHBhdGggQVBJIG1ldGhvZHMK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGhEcmF3aW5nU3R5bGVz
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRo
RHJhd2luZ1N0eWxlcy5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1BhdGhEcmF3aW5nU3R5bGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKQogXSBpbnRl
cmZhY2UgQ2FudmFzUGF0aERyYXdpbmdTdHlsZXMgewogICAgIC8vIEZJWE1FOiBBbGwgdGhlIHVu
cmVzdHJpY3RlZCBmbG9hdCBhcmd1bWVudHMgLyBhdHRyaWJ1dGVzIGJlbG93IHNob3VsZCBiZSB1
bnJlc3RyaWN0ZWQgZG91Ymxlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlY3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlY3QuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZWN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICov
CiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVj
dCwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKQogXSBpbnRlcmZhY2UgQ2FudmFzUmVjdCB7
CiAgICAgLy8gRklYTUU6IEFsbCB0aGUgdW5yZXN0cmljdGVkIGZsb2F0IHBhcmFtZXRlcnMgYmVs
b3cgc2hvdWxkIGJlIHVucmVzdHJpY3RlZCBkb3VibGVzLgpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzU2hhZG93U3R5bGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTaGFkb3dTdHlsZXMuaWRsCShyZXZpc2lvbiAyNjY2
NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTaGFkb3dTdHlsZXMuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJm
YWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9zZWQ9KFdp
bmRvdyxXb3JrZXIpCiBdIGludGVyZmFjZSBDYW52YXNTaGFkb3dTdHlsZXMgewogICAgIC8vIEZJ
WE1FOiBBbGwgdGhlIHVucmVzdHJpY3RlZCBmbG9hdCBhdHRyaWJ1dGVzIGJlbG93IHNob3VsZCBi
ZSB1bnJlc3RyaWN0ZWQgZG91Ymxlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1N0YXRlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNTdGF0ZS5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1N0YXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKQogXSBpbnRlcmZhY2UgQ2FudmFz
U3RhdGUgewogICAgIC8vIHN0YXRlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNUZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNUZXh0LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzVGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAq
LwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3QsCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIENhbnZhc1RleHQgewogICAgIC8v
IEZJWE1FOiBBbGwgdGhlIHVucmVzdHJpY3RlZCBmbG9hdCBwYXJhbWV0ZXJzIGJlbG93IHNob3Vs
ZCBiZSB1bnJlc3RyaWN0ZWQgZG91Ymxlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1RleHREcmF3aW5nU3R5bGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNUZXh0RHJhd2luZ1N0eWxlcy5pZGwJKHJldmlzaW9uIDI2
NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1RleHREcmF3aW5nU3R5
bGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBO
b0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBFeHBv
c2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgQ2FudmFzVGV4dERyYXdpbmdTdHlsZXMgewogICAgIC8v
IHRleHQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1RyYW5zZm9ybS5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVHJhbnNm
b3JtLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzVHJhbnNmb3JtLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICov
CiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVj
dCwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKQogXSBpbnRlcmZhY2UgQ2FudmFzVHJhbnNm
b3JtIHsKICAgICAvLyBGSVhNRTogQWxsIHRoZSB1bnJlc3RyaWN0ZWQgZmxvYXQgcGFyYW1ldGVy
cyBiZWxvdyBzaG91bGQgYmUgdW5yZXN0cmljdGVkIGRvdWJsZXMuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNVc2VySW50ZXJmYWNlLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNVc2VySW50ZXJmYWNlLmlkbAkocmV2aXNp
b24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVXNlckludGVy
ZmFjZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAg
Tm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhw
b3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIENhbnZhc1VzZXJJbnRlcmZhY2UgewogICAgIHVuZGVm
aW5lZCBkcmF3Rm9jdXNJZk5lZWRlZChFbGVtZW50IGVsZW1lbnQpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvRVhUQmxlbmRNaW5NYXguaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEJsZW5kTWluTWF4LmlkbAkocmV2aXNpb24gMjY2NjU5
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQmxlbmRNaW5NYXguaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAg
ICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZh
Y2UgRVhUQmxlbmRNaW5NYXggewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgTUlOX0VYVCA9IDB4
ODAwNzsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIE1BWF9FWFQgPSAweDgwMDg7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0Lmlk
bAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29s
b3JCdWZmZXJGbG9hdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICovCiAK
IFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
ICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJH
TFJlbmRlcmluZ0NvbnRleHQKIF0gaW50ZXJmYWNlIEVYVENvbG9yQnVmZmVyRmxvYXQgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVy
SGFsZkZsb2F0LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3
ICsyNCw3IEBACiAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1Jl
YWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0CiBdIGludGVyZmFjZSBFWFRDb2xvckJ1
ZmZlckhhbGZGbG9hdCB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFn
RGVwdGguaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZy
YWdEZXB0aC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0VYVEZyYWdEZXB0aC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICov
CiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVj
dCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxX
ZWJHTFJlbmRlcmluZ0NvbnRleHQKIF0gaW50ZXJmYWNlIEVYVEZyYWdEZXB0aCB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRTaGFkZXJUZXh0dXJlTE9ELmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRTaGFkZXJUZXh0dXJlTE9ELmlk
bAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hh
ZGVyVGV4dHVyZUxPRC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwog
CiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Qs
CiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2Vi
R0xSZW5kZXJpbmdDb250ZXh0CiBdIGludGVyZmFjZSBFWFRTaGFkZXJUZXh0dXJlTE9EIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
Yy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVy
ZUZpbHRlckFuaXNvdHJvcGljLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIEdl
bmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0ludGVy
ZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIEVY
VFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBURVhU
VVJFX01BWF9BTklTT1RST1BZX0VYVCA9IDB4ODRGRTsKICAgICBjb25zdCB1bnNpZ25lZCBsb25n
IE1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCA9IDB4ODRGRjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVHNSR0IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0VYVHNSR0IuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9FWFRzUkdCLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIEdlbmVyYXRlSXNSZWFjaGFi
bGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAg
ICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIEVYVHNSR0IgewogICAgIGNv
bnN0IHVuc2lnbmVkIGxvbmcgU1JHQl9FWFQgPSAweDhDNDA7CiAgICAgY29uc3QgdW5zaWduZWQg
bG9uZyBTUkdCX0FMUEhBX0VYVCA9IDB4OEM0MjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL09FU0VsZW1lbnRJbmRleFVpbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU0VsZW1lbnRJbmRleFVpbnQuaWRsCShyZXZpc2lvbiAyNjY2NTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFj
ZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1X
RUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQs
CiBdIGludGVyZmFjZSBPRVNFbGVtZW50SW5kZXhVaW50IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaWRsCShyZXZp
c2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERl
cml2YXRpdmVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICAgIENvbmRp
dGlvbmFsPVdFQkdMLAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgR2VuZXJhdGVJc1Jl
YWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0
LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgT0VTU3RhbmRhcmRE
ZXJpdmF0aXZlcyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBGUkFHTUVOVF9TSEFERVJfREVS
SVZBVElWRV9ISU5UX09FUyA9IDB4OEI4QjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisg
ICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAg
R2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAogXSBpbnRlcmZh
Y2UgT0VTVGV4dHVyZUZsb2F0IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVGbG9hdExpbmVhci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0TGluZWFyLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0TGluZWFyLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJH
TCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCiBd
IGludGVyZmFjZSBPRVNUZXh0dXJlRmxvYXRMaW5lYXIgewpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5pZGwJKHJldmlzaW9uIDI2
NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50
ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIENvbmRpdGlv
bmFsPVdFQkdMLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCwKIF0gaW50ZXJmYWNlIE9FU1RleHR1cmVIYWxmRmxvYXQgewpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVh
ci5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3
IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIEdlbmVyYXRlSXNSZWFjaGFi
bGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKIF0gaW50ZXJmYWNlIE9FU1RleHR1cmVIYWxm
RmxvYXRMaW5lYXIgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4
QXJyYXlPYmplY3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L09FU1ZlcnRleEFycmF5T2JqZWN0LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsIAogICAgIERvTm90Q2hl
Y2tDb25zdGFudHMsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdD
b250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0LAogXSBpbnRlcmZhY2UgT0VTVmVydGV4QXJyYXlPYmplY3QgewogICAgIGNvbnN0IHVuc2ln
bmVkIGxvbmcgVkVSVEVYX0FSUkFZX0JJTkRJTkdfT0VTID0gMHg4NUI1OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5p
ZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29sb3JCdWZmZXJGbG9hdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICov
CiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVj
dCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxX
ZWJHTFJlbmRlcmluZ0NvbnRleHQKIF0gaW50ZXJmYWNlIFdlYkdMQ29sb3JCdWZmZXJGbG9hdCB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
QVNUQy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUFTVEMuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBEb05v
dENoZWNrQ29uc3RhbnRzLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVy
aW5nQ29udGV4dCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCwKIF0gaW50ZXJmYWNlIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDIHsKICAgICAv
KiBDb21wcmVzc2VkIFRleHR1cmUgRm9ybWF0ICovCiAgICAgY29uc3QgR0xlbnVtIENPTVBSRVNT
RURfUkdCQV9BU1RDXzR4NF9LSFIgPSAweDkzQjA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmlkbAkocmV2
aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICBD
b25kaXRpb25hbD1XRUJHTCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIEdlbmVyYXRl
SXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVBVEMgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9S
R0JfQVRDX1dFQkdMID0gMHg4QzkyOwogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NF
RF9SR0JBX0FUQ19FWFBMSUNJVF9BTFBIQV9XRUJHTCA9IDB4OEM5MzsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
RVRDMS5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNyAr
MjksNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQkdMLAogICAgIERvTm90Q2hlY2tDb25zdGFudHMs
CiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAg
IE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRl
cmZhY2UgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEgewogICAgIC8qIENvbXByZXNzZWQgVGV4
dHVyZSBGb3JtYXRzICovCiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1JHQl9F
VEMxX1dFQkdMID0gMHg4RDY0OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUVUQy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5pZGwJKHJldmlzaW9uIDI2NjY1
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVF
VEMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAgICAgQ29uZGl0aW9uYWw9
V0VCR0wsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxl
PUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAg
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBXZWJHTENvbXByZXNzZWRUZXh0
dXJlRVRDIHsKICAgICAvKiBDb21wcmVzc2VkIFRleHR1cmUgRm9ybWF0ICovCiAgICAgY29uc3Qg
dW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1IxMV9FQUMgICAgICAgICAgICAgICAgICAgICAgICA9
IDB4OTI3MDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVQVlJUQy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQkdM
LAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBs
V2ViR0xSZW5kZXJpbmdDb250ZXh0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBW
UlRDIHsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIENPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBW
MV9JTUcgPSAweDhDMDA7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1JHQl9Q
VlJUQ18yQlBQVjFfSU1HID0gMHg4QzAxOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlkbAkocmV2aXNp
b24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29u
ZGl0aW9uYWw9V0VCR0wsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBHZW5lcmF0ZUlz
UmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCi0gICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1JH
Ql9TM1RDX0RYVDFfRVhUID0gMHg4M0YwOwogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgPSAweDgzRjE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
c1JHQi5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDcgKzI3LDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBEb05vdENoZWNrQ29uc3Rh
bnRzLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwK
LSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0g
aW50ZXJmYWNlIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiB7CiAgICAgY29uc3QgdW5z
aWduZWQgbG9uZyBDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVCA9IDB4OEM0QzsKICAgICBj
b25zdCB1bnNpZ25lZCBsb25nIENPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUID0g
MHg4QzREOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRl
cmVySW5mby5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEZWJ1Z1JlbmRlcmVySW5mby5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCiAgICAgRG9Ob3RDaGVj
a0NvbnN0YW50cywKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0Nv
bnRleHQsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3QsCiBdIGludGVyZmFjZSBXZWJHTERlYnVnUmVuZGVyZXJJbmZvIHsKICAgICBjb25zdCB1bnNp
Z25lZCBsb25nIFVOTUFTS0VEX1ZFTkRPUl9XRUJHTCA9IDB4OTI0NTsKICAgICBjb25zdCB1bnNp
Z25lZCBsb25nIFVOTUFTS0VEX1JFTkRFUkVSX1dFQkdMID0gMHg5MjQ2OwpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmlkbAkocmV2aXNp
b24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRl
cnMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiBbCiAgICAgQ29uZGl0aW9u
YWw9V0VCR0wsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250
ZXh0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
LAogXSBpbnRlcmZhY2UgV2ViR0xEZWJ1Z1NoYWRlcnMgewogICAgIERPTVN0cmluZyBnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlKFdlYkdMU2hhZGVyIHNoYWRlcik7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmlkbAkocmV2aXNp
b24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1
cmUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29uZGl0aW9uYWw9
V0VCR0wsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxl
PUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAg
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBXZWJHTERlcHRoVGV4dHVyZSB7
CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBVTlNJR05FRF9JTlRfMjRfOF9XRUJHTCA9IDB4ODRG
QTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJz
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdC
dWZmZXJzLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xEcmF3QnVmZmVycy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAK
IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBHTGVudW07CiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVj
dCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwK
ICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCiAgICAg
RG9Ob3RDaGVja0NvbnN0YW50cywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMTG9zZUNvbnRleHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMTG9zZUNvbnRleHQuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTExvc2VDb250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5lcmF0
ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQsCiBdIGludGVyZmFjZSBXZWJH
TExvc2VDb250ZXh0IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCB0eXBlZGVmIChIVE1MQ2FudmFzRWxl
bWVudCkgV2ViR0xDYW52YXM7CiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBEb05vdENoZWNr
Q29uc3RhbnRzLAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAotICAgIE5vSW50ZXJmYWNlT2Jq
ZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9ydE1hY3JvPVdFQkNP
UkVfRVhQT1JULAogXSBpbnRlcmZhY2UgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSB7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVMuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJHTCwKICAgICBHZW5l
cmF0ZUlzUmVhY2hhYmxlPUltcGwKIF0gaW50ZXJmYWNlIFdlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmlj
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZUdlbmVyaWMuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3
IEBACiAgICAgQ29uZGl0aW9uYWw9VklERU8sCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCiAg
ICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAg
IExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JU
LAogXSBpbnRlcmZhY2UgVGV4dFRyYWNrQ3VlR2VuZXJpYyA6IFZUVEN1ZSB7CiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb25MaXN0LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbkxpc3QuaWRsCShyZXZpc2lvbiAy
NjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbkxpc3QuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9VklERU8s
CiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwK
KyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFZUVFJlZ2lvbkxpc3Qg
ewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBnZXR0
ZXIgVlRUUmVnaW9uPyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5pZGwJKHJldmlzaW9uIDI2
NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJm
YWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEltcGxlbWVudGF0
aW9uTGFja3NWVGFibGUKIF0gaW50ZXJmYWNlIENvbW1hbmRMaW5lQVBJSG9zdCB7CiAgICAgdW5k
ZWZpbmVkIGNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDcgQEAKIFsKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEpTR2Vu
ZXJhdGVUb0pTT2JqZWN0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0IHsKICAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIE1heVRocm93RXhjZXB0aW9uXSBzZXF1ZW5j
ZTxOb2RlPiBnZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKERPTVN0cmluZyByb2xlLCBvcHRpb25h
bCBOb2RlPyBjb250YWluZXIpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQXVkaXRET01PYmplY3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBdWRpdERPTU9iamVjdC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdERPTU9iamVjdC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIFsKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlLAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0
LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgSW5zcGVjdG9yQXVk
aXRET01PYmplY3QgewogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBoYXNFdmVudExp
c3RlbmVycyhOb2RlIG5vZGUsIG9wdGlvbmFsIERPTVN0cmluZyB0eXBlKTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRSZXNvdXJjZXNPYmplY3QuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdFJl
c291cmNlc09iamVjdC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBdWRpdFJlc291cmNlc09iamVjdC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKIFsKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAg
IEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgSW5zcGVjdG9yQXVkaXRSZXNvdXJjZXNP
YmplY3QgewogICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgTWF5VGhyb3dFeGNlcHRpb25dIHNlcXVl
bmNlPFJlc291cmNlPiBnZXRSZXNvdXJjZXMoKTsKICAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIE1h
eVRocm93RXhjZXB0aW9uXSBSZXNvdXJjZUNvbnRlbnQgZ2V0UmVzb3VyY2VDb250ZW50KERPTVN0
cmluZyBpZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDcgKzMyLDcgQEAKIAogWwogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgTm9J
bnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFj
ZSBJbnNwZWN0b3JGcm9udGVuZEhvc3QgewogICAgIHVuZGVmaW5lZCBsb2FkZWQoKTsKICAgICB1
bmRlZmluZWQgY2xvc2VXaW5kb3coKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJ
KHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtNTEsMTEgKzUxLDExIEBAIHR5cGVkZWYgVVNWU3RyaW5nIENTU09N
U3RyaW5nOwogICAgIEV4cG9zZWQ9V2luZG93LAogXSBpbnRlcmZhY2UgRE9NV2luZG93IDogRXZl
bnRUYXJnZXQgewogICAgIC8vIFRoZSBjdXJyZW50IGJyb3dzaW5nIGNvbnRleHQuCi0gICAgW0Rv
Tm90Q2hlY2tTZWN1cml0eSwgVW5mb3JnZWFibGUsIEN1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0
cmlidXRlIFdpbmRvd1Byb3h5IHdpbmRvdzsKKyAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBMZWdh
Y3lVbmZvcmdlYWJsZSwgQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJv
eHkgd2luZG93OwogICAgIFtSZXBsYWNlYWJsZSwgRG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXIs
IEN1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHNlbGY7Ci0gICAg
W1VuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQgZG9jdW1lbnQ7CisgICAg
W0xlZ2FjeVVuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQgZG9jdW1lbnQ7
CiAgICAgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwotICAgIFtEb05vdENoZWNrU2VjdXJpdHks
IFB1dEZvcndhcmRzPWhyZWYsIFVuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgTG9jYXRp
b24gbG9jYXRpb247CisgICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgUHV0Rm9yd2FyZHM9aHJlZiwg
TGVnYWN5VW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBMb2NhdGlvbiBsb2NhdGlvbjsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgSGlzdG9yeSBoaXN0b3J5OwogICAgIFtFbmFibGVkQnlT
ZXR0aW5nPUN1c3RvbUVsZW1lbnRzLCBJbXBsZW1lbnRlZEFzPWVuc3VyZUN1c3RvbUVsZW1lbnRS
ZWdpc3RyeV0gcmVhZG9ubHkgYXR0cmlidXRlIEN1c3RvbUVsZW1lbnRSZWdpc3RyeSBjdXN0b21F
bGVtZW50czsKICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBCYXJQcm9wIGxv
Y2F0aW9uYmFyOwpAQCAtNzQsMTEgKzc0LDExIEBAIHR5cGVkZWYgVVNWU3RyaW5nIENTU09NU3Ry
aW5nOwogICAgIC8vIE90aGVyIGJyb3dzaW5nIGNvbnRleHRzLgogICAgIFtSZXBsYWNlYWJsZSwg
RG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXIsIEN1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmli
dXRlIFdpbmRvd1Byb3h5IGZyYW1lczsKICAgICBbUmVwbGFjZWFibGUsIERvTm90Q2hlY2tTZWN1
cml0eU9uR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7Ci0g
ICAgW0RvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyLCBVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0
cmlidXRlIFdpbmRvd1Byb3h5PyB0b3A7CisgICAgW0RvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVy
LCBMZWdhY3lVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5PyB0b3A7
CiAgICAgW0RvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyLCBDdXN0b21TZXR0ZXJdIGF0dHJpYnV0
ZSBXaW5kb3dQcm94eT8gb3BlbmVyOwogICAgIFtSZXBsYWNlYWJsZSwgRG9Ob3RDaGVja1NlY3Vy
aXR5T25HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gcGFyZW50OwogICAg
IFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IGZyYW1l
RWxlbWVudDsKLSAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBNYXlUaHJv
d0V4Y2VwdGlvbl0gV2luZG93UHJveHk/IG9wZW4ob3B0aW9uYWwgVVNWU3RyaW5nIHVybCA9ICIi
LCBvcHRpb25hbCBET01TdHJpbmcgdGFyZ2V0ID0gIl9ibGFuayIsIG9wdGlvbmFsIFtUcmVhdE51
bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGZlYXR1cmVzID0gIiIpOworICAgIFtDYWxsV2l0
aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3csIE1heVRocm93RXhjZXB0aW9uXSBXaW5kb3dQcm94
eT8gb3BlbihvcHRpb25hbCBVU1ZTdHJpbmcgdXJsID0gIiIsIG9wdGlvbmFsIERPTVN0cmluZyB0
YXJnZXQgPSAiX2JsYW5rIiwgb3B0aW9uYWwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01T
dHJpbmcgZmVhdHVyZXMgPSAiIik7CiAKICAgICAvLyBUaGUgdXNlciBhZ2VudC4KICAgICByZWFk
b25seSBhdHRyaWJ1dGUgTmF2aWdhdG9yIG5hdmlnYXRvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvR2xvYmFsQ3J5cHRvLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0dsb2JhbENyeXB0by5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvR2xvYmFsQ3J5cHRvLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogKi8K
IAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
LAogXSBpbnRlcmZhY2UgR2xvYmFsQ3J5cHRvIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ3J5
cHRvIGNyeXB0bzsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbFBlcmZvcm1h
bmNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbFBlcmZvcm1h
bmNlLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxQ
ZXJmb3JtYW5jZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIC8vIGh0dHBz
Oi8vdzNjLmdpdGh1Yi5pby9oci10aW1lLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisg
ICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlcikK
IF0gaW50ZXJmYWNlIEdsb2JhbFBlcmZvcm1hbmNlIHsKICAgICBbUmVwbGFjZWFibGVdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBQZXJmb3JtYW5jZSBwZXJmb3JtYW5jZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvTG9jYXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
TG9jYXRpb24uaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0xv
Y2F0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQAogICAgIEdlbmVyYXRl
SXNSZWFjaGFibGU9UmVhY2hhYmxlRnJvbURPTVdpbmRvdywKICAgICBJc0ltbXV0YWJsZVByb3Rv
dHlwZUV4b3RpY09iamVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIFVu
Zm9yZ2VhYmxlCisgICAgTGVnYWN5VW5mb3JnZWFibGUKIF0gaW50ZXJmYWNlIExvY2F0aW9uIHsK
ICAgICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBEb05vdENoZWNr
U2VjdXJpdHlPblNldHRlcl0gc3RyaW5naWZpZXIgYXR0cmlidXRlIFVTVlN0cmluZyBocmVmOwog
CkBAIC02Miw1ICs2Miw1IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBvcmln
aW47CiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIFNhbWVPYmplY3QuCi0gICAgW1Vu
Zm9yZ2VhYmxlLCBDYWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdM
aXN0IGFuY2VzdG9yT3JpZ2luczsKKyAgICBbTGVnYWN5VW5mb3JnZWFibGUsIENhY2hlZEF0dHJp
YnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZ0xpc3QgYW5jZXN0b3JPcmlnaW5zOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9ySUQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9ySUQuaWRsCShyZXZpc2lvbiAyNjY2NTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvcklELmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdAorICAgIExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0CiBdIGludGVyZmFjZSBOYXZpZ2F0b3JJRCB7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBhcHBDb2RlTmFtZTsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGFwcE5hbWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmln
YXRvckxhbmd1YWdlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmln
YXRvckxhbmd1YWdlLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9OYXZpZ2F0b3JMYW5ndWFnZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAK
ICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9i
amVjdAogXSBpbnRlcmZhY2UgTmF2aWdhdG9yTGFuZ3VhZ2UgewogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcgbGFuZ3VhZ2U7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEZyb3plbkFy
cmF5PERPTVN0cmluZz4gbGFuZ3VhZ2VzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9OYXZp
Z2F0b3JPbkxpbmUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdh
dG9yT25MaW5lLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9O
YXZpZ2F0b3JPbkxpbmUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgKi8K
IAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QK
IF0gaW50ZXJmYWNlIE5hdmlnYXRvck9uTGluZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJv
b2xlYW4gb25MaW5lOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yUGx1
Z2lucy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JQbHVn
aW5zLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0
b3JQbHVnaW5zLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsK
LSAgICBOb0ludGVyZmFjZU9iamVjdAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0CiBdIGlu
dGVyZmFjZSBOYXZpZ2F0b3JQbHVnaW5zIHsKICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0
cmlidXRlIERPTVBsdWdpbkFycmF5IHBsdWdpbnM7CiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01NaW1lVHlwZUFycmF5IG1pbWVUeXBlczsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yU2VydmljZVdvcmtlci5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbAkocmV2aXNpb24gMjY2NjU5
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAgICBDb25kaXRpb25hbD1TRVJW
SUNFX1dPUktFUiwKICAgICBFbmFibGVkQXRSdW50aW1lPVNlcnZpY2VXb3JrZXIKIF0gaW50ZXJm
YWNlIE5hdmlnYXRvclNlcnZpY2VXb3JrZXIgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9O
YXZpZ2F0b3JTaGFyZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9OYXZp
Z2F0b3JTaGFyZS5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yU2hhcmUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIAog
WwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAog
ICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViU2hhcmUKIF0gaW50ZXJmYWNlIE5hdmlnYXRvclNoYXJl
IHsKICAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIFNlY3VyZUNvbnRleHRdIGJvb2xlYW4gY2FuU2hh
cmUob3B0aW9uYWwgU2hhcmVEYXRhIHNoYXJlRGF0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbW90ZURPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVET01XaW5kb3cuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQwLDIwICs0MCwy
MCBAQAogICAgIEpTQ3VzdG9tVG9OYXRpdmVPYmplY3QsCiAgICAgSlNMZWdhY3lQYXJlbnQ9SlNS
ZW1vdGVET01XaW5kb3dCYXNlLAogICAgIExlZ2FjeVVuZW51bWVyYWJsZU5hbWVkUHJvcGVydGll
cywKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
ICAgICBHbG9iYWw9V2luZG93LAogICAgIEV4cG9zZWQ9V2luZG93LAogXSBpbnRlcmZhY2UgUmVt
b3RlRE9NV2luZG93IHsKLSAgICBbVW5mb3JnZWFibGUsIEltcGxlbWVudGVkQXM9c2VsZl0gcmVh
ZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHdpbmRvdzsKKyAgICBbTGVnYWN5VW5mb3JnZWFi
bGUsIEltcGxlbWVudGVkQXM9c2VsZl0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHdp
bmRvdzsKICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSBz
ZWxmOwotICAgIFtQdXRGb3J3YXJkcz1ocmVmLCBVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmli
dXRlIExvY2F0aW9uPyBsb2NhdGlvbjsgLy8gRklYTUU6IFNob3VsZCBub3QgYmUgbnVsbGFibGUu
CisgICAgW1B1dEZvcndhcmRzPWhyZWYsIExlZ2FjeVVuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRy
aWJ1dGUgTG9jYXRpb24/IGxvY2F0aW9uOyAvLyBGSVhNRTogU2hvdWxkIG5vdCBiZSBudWxsYWJs
ZS4KICAgICBbQ2FsbFdpdGg9SW5jdW1iZW50RG9jdW1lbnQsIEZvcndhcmREZWNsYXJlSW5IZWFk
ZXJdIHVuZGVmaW5lZCBjbG9zZSgpOwogICAgIFtGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiBjbG9zZWQ7CiAgICAgW0NhbGxXaXRoPUluY3VtYmVudFdp
bmRvdywgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGZvY3VzKCk7CiAgICAgW0Zv
cndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBibHVyKCk7CiAgICAgW1JlcGxhY2VhYmxl
LCBJbXBsZW1lbnRlZEFzPXNlbGZdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSBmcmFt
ZXM7CiAgICAgW1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBs
ZW5ndGg7Ci0gICAgW1VuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHk/
IHRvcDsKKyAgICBbTGVnYWN5VW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQ
cm94eT8gdG9wOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gb3BlbmVyOwog
ICAgIFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5PyBwYXJlbnQ7
CiAgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCZJbmN1bWJlbnRXaW5kb3csIEZvcndhcmREZWNs
YXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgVVNWU3RyaW5n
IHRhcmdldE9yaWdpbiwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RXZlbnRIYW5kbGVycy5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dFdmVudEhhbmRsZXJzLmlkbAkocmV2
aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dFdmVudEhhbmRsZXJz
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjd2luZG93ZXZlbnRoYW5k
bGVycwogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0LAogXSBpbnRlcmZhY2UgV2luZG93RXZlbnRIYW5kbGVycyB7CiAgICAgLy8gQ29tbWVudGVk
IG91dCBldmVudCBoYW5kbGVycyBhcmUgZGVmaW5lZCBieSB0aGUgSFRNTDUgc3BlY2lmaWNhdGlv
biBidXQKICAgICAvLyBhcmUgbm90IHlldCBpbXBsZW1lbnRlZC4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZS5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlLmlkbAkocmV2aXNpb24g
MjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dPcldvcmtlckdsb2JhbFNjb3Bl
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCB0eXBlZGVmIChIVE1MSW1hZ2VF
bGVtZW50CiB0eXBlZGVmIChDYW52YXNJbWFnZVNvdXJjZSBvciBCbG9iIG9yIEltYWdlRGF0YSkg
SW1hZ2VCaXRtYXBTb3VyY2U7CiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFdpbmRvd09yV29ya2VyR2xvYmFsU2Nv
cGUgewogICAgIFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBvcmln
aW47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVy
ZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1h
dGVkTGVuZ3RoIHk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmlkbAko
cmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRl
cmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBT
VkdGaXRUb1ZpZXdCb3ggewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFJlY3Qg
dmlld0JveDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVj
dFJhdGlvIHByZXNlcnZlQXNwZWN0UmF0aW87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGVzdHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5pZGwJ
KHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VP
YmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgU3VwcHJlc3NUb0pTT2Jq
ZWN0LAogXSBpbnRlcmZhY2UgU1ZHVGVzdHMgewogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBh
dHRyaWJ1dGUgU1ZHU3RyaW5nTGlzdCByZXF1aXJlZEZlYXR1cmVzOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsy
NSw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0LAogICAgIFN1cHByZXNzVG9KU09iamVjdCwKIF0gaW50ZXJmYWNlIFNWR1VS
SVJlZmVyZW5jZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGhy
ZWY7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uaWRsCShyZXZpc2lvbiAyNjY2
NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCisg
ICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBTVkdab29tQW5kUGFuIHsK
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfWk9PTUFORFBBTl9VTktOT1dOID0gMDsKICAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfWk9PTUFORFBBTl9ESVNBQkxFID0gMTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdab29tRXZlbnQuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyAr
MjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotaW50ZXJmYWNlIFNWR1pvb21FdmVudCA6
IFVJRXZlbnQgeyAKK2ludGVyZmFjZSBTVkdab29tRXZlbnQgOiBVSUV2ZW50IHsKICAgICBbTmV3
T2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUmVjdCB6b29tUmVjdFNjcmVlbjsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IHByZXZpb3VzU2NhbGU7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFNWR1BvaW50IHByZXZpb3VzVHJhbnNsYXRlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaWRsCShyZXZpc2lvbiAyNjY2NTkpCisr
KyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw3ICszMCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAg
IExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUs
CiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQsCiBdIGludGVyZmFj
ZSBHQ09ic2VydmF0aW9uIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxT
ZXR0aW5ncy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCBl
bnVtIEZyYW1lRmxhdHRlbmluZ1ZhbHVlIHsgIkRpc2FibGVkIiwgCiBlbnVtIEZvbnRMb2FkVGlt
aW5nT3ZlcnJpZGUgeyAiQmxvY2siLCAiU3dhcCIsICJGYWlsdXJlIiB9OwogCiBbCi0gICAgTm9J
bnRlcmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiAgICAgSlNHZW5l
cmF0ZVRvSlNPYmplY3QsCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBP
UlQsCiBdIGludGVyZmFjZSBJbnRlcm5hbFNldHRpbmdzIDogSW50ZXJuYWxTZXR0aW5nc0dlbmVy
YXRlZCB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAy
NjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI0Niw3ICsyNDYsNyBAQCBlbnVtIENvbnRlbnRTaXplQ2F0ZWdvcnkgewogCiBb
CiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQsCi0gICAgTm9JbnRl
cmZhY2VPYmplY3QsCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBJ
bnRlcm5hbHMgewogICAgIERPTVN0cmluZyBhZGRyZXNzKE5vZGUgbm9kZSk7CiAgICAgYm9vbGVh
biBub2RlTmVlZHNTdHlsZVJlY2FsYyhOb2RlIG5vZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHNNYXBMaWtlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsc01hcExpa2UuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsc01hcExpa2UuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBP
UlRfRVhQT1JULAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAogXSBpbnRlcmZhY2UgSW50ZXJu
YWxzTWFwTGlrZQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHNTZXRMaWtl
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsc1NldExp
a2UuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFsc1NldExpa2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAog
WwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAog
ICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAogICAgIFNraXBWVGFi
bGVWYWxpZGF0aW9uLAogXSBpbnRlcmZhY2UgSW50ZXJuYWxzU2V0TGlrZQpJbmRleDogU291cmNl
L1dlYkNvcmUvdGVzdGluZy9NYWxsb2NTdGF0aXN0aWNzLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01hbGxvY1N0YXRpc3RpY3MuaWRsCShyZXZpc2lvbiAyNjY2NTkp
CisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01hbGxvY1N0YXRpc3RpY3MuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0
LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NW
VGFibGUsCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQsCiBdIGlu
dGVyZmFjZSBNYWxsb2NTdGF0aXN0aWNzIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TWVtb3J5SW5mby5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9NZW1v
cnlJbmZvLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
ZW1vcnlJbmZvLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogICovCiAKIFsK
LSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAg
ICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVT
VFNVUFBPUlRfRVhQT1JULAogXSBpbnRlcmZhY2UgTWVtb3J5SW5mbyB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysg
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQSwK
LSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKICAg
ICBFeHBvcnRNYWNybz1XRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCwKIF0gaW50ZXJmYWNlIE1v
Y2tDRE1GYWN0b3J5IHsKICAgICBhdHRyaWJ1dGUgc2VxdWVuY2U8RE9NU3RyaW5nPiBzdXBwb3J0
ZWREYXRhVHlwZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDcgKzM5LDcgQEAgZW51bSBEZWNpc2lvbiB7CiAKIFsKICAgICBDb25kaXRpb25h
bD1DT05URU5UX0ZJTFRFUklORywKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lO
b0ludGVyZmFjZU9iamVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCiBdIGludGVy
ZmFjZSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzIHsKICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBl
bmFibGVkOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXkuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Lmlk
bAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92
ZXJsYXkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAg
IE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogICAgIElt
cGxlbWVudGF0aW9uTGFja3NWVGFibGUKIF0gaW50ZXJmYWNlIE1vY2tQYWdlT3ZlcmxheSB7CiAg
ICAgdW5kZWZpbmVkIHNldEZyYW1lKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHdpZHRoLCBk
b3VibGUgaGVpZ2h0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRD
b29yZGluYXRvci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
UGF5bWVudENvb3JkaW5hdG9yLmlkbAkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNyArMjUsNyBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9QVBQTEVfUEFZLAotICAgIE5vSW50
ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2Ug
TW9ja1BheW1lbnRDb29yZGluYXRvciB7CiAgICAgdW5kZWZpbmVkIHNldENhbk1ha2VQYXltZW50
cyhib29sZWFuIGNhbk1ha2VQYXltZW50cyk7CiAgICAgdW5kZWZpbmVkIHNldENhbk1ha2VQYXlt
ZW50c1dpdGhBY3RpdmVDYXJkKGJvb2xlYW4gY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRl
cm5hbHMuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1Nl
cnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBA
CiAgICAgQ29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVIsCiAgICAgRXhwb3J0TWFjcm89V0VCQ09S
RV9URVNUU1VQUE9SVF9FWFBPUlQsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAg
ICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50
ZXJmYWNlIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMgewogICAgIHVuZGVmaW5lZCBzZXRPbmxpbmUo
Ym9vbGVhbiBpc09ubGluZSk7CiAgICAgUHJvbWlzZTxSZXNwb25zZT4gd2FpdEZvckZldGNoRXZl
bnRUb0ZpbmlzaChGZXRjaEV2ZW50IGV2ZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvVHlwZUNvbnZlcnNpb25zLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL1R5cGVDb252ZXJzaW9ucy5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyAr
MjQsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEV4cG9y
dE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAogXSBpbnRlcmZhY2UgVHlwZUNvbnZl
cnNpb25zIHsKQEAgLTY0LDcgKzY0LDcgQEAKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRlc3RT
dHJpbmc7CiAgICAgYXR0cmlidXRlIEJ5dGVTdHJpbmcgdGVzdEJ5dGVTdHJpbmc7CiAgICAgYXR0
cmlidXRlIFVTVlN0cmluZyB0ZXN0VVNWU3RyaW5nOwotICAgIGF0dHJpYnV0ZSBbVHJlYXROdWxs
QXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyB0ZXN0VHJlYXROdWxsQXNFbXB0eVN0cmluZzsKKyAg
ICBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgdGVzdFRyZWF0
TnVsbEFzRW1wdHlTdHJpbmc7CiAKICAgICB1bmRlZmluZWQgc2V0VGVzdExvbmdSZWNvcmQocmVj
b3JkPERPTVN0cmluZywgbG9uZz4gcmVjb3JkKTsKICAgICByZWNvcmQ8RE9NU3RyaW5nLCBsb25n
PiB0ZXN0TG9uZ1JlY29yZCgpOwpAQCAtODEsNyArODEsNyBAQAogCiAgICAgYXR0cmlidXRlIChE
T01TdHJpbmcgb3IgW0NsYW1wXSBsb25nIG9yIHNlcXVlbmNlPFtDbGFtcF0gbG9uZz4pIHRlc3RD
bGFtcFVuaW9uOwogICAgIGF0dHJpYnV0ZSAoRE9NU3RyaW5nIG9yIFtFbmZvcmNlUmFuZ2VdIGxv
bmcgb3Igc2VxdWVuY2U8W0VuZm9yY2VSYW5nZV0gbG9uZz4pIHRlc3RFbmZvcmNlUmFuZ2VVbmlv
bjsKLSAgICBhdHRyaWJ1dGUgKFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG9y
IGxvbmcgb3Igc2VxdWVuY2U8W1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmc+KSB0
ZXN0VHJlYXROdWxsQXNFbXB0eVN0cmluZ1VuaW9uOworICAgIGF0dHJpYnV0ZSAoW0xlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgb3IgbG9uZyBvciBzZXF1ZW5jZTxbTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmddIERPTVN0cmluZz4pIHRlc3RUcmVhdE51bGxBc0VtcHR5U3RyaW5nVW5p
b247CiB9OwogCiBbCkBAIC05Niw3ICs5Niw3IEBACiBdIGRpY3Rpb25hcnkgVHlwZUNvbnZlcnNp
b25zRGljdGlvbmFyeSB7CiAgICAgbG9uZyBsb25nVmFsdWUgPSAwOwogICAgIERPTVN0cmluZyBz
dHJpbmdWYWx1ZSA9ICIiOwotICAgIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5n
IHRyZWF0TnVsbEFzRW1wdHlTdHJpbmdWYWx1ZSA9ICIiOworICAgIFtMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ10gRE9NU3RyaW5nIHRyZWF0TnVsbEFzRW1wdHlTdHJpbmdWYWx1ZSA9ICIiOwogICAg
IHNlcXVlbmNlPERPTVN0cmluZz4gc2VxdWVuY2VWYWx1ZSA9IFtdOwogICAgIChOb2RlIG9yIHNl
cXVlbmNlPERPTVN0cmluZz4gb3IgVHlwZUNvbnZlcnNpb25zT3RoZXJEaWN0aW9uYXJ5KSB1bmlv
blZhbHVlID0gbnVsbDsKICAgICBbQ2xhbXBdIGxvbmcgY2xhbXBMb25nVmFsdWUgPSAwOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmlkbAkocmV2aXNpb24g
MjY2NjU5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCWFIsCiAg
ICAgSW50ZXJmYWNlTmFtZT1GYWtlWFJEZXZpY2UsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZU
YWJsZSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVj
dCwKIF0gaW50ZXJmYWNlIFdlYkZha2VYUkRldmljZSB7CiAgIC8vIFNldHMgdGhlIHZhbHVlcyB0
byBiZSB1c2VkIGZvciBzdWJzZXF1ZW50CiAgIC8vIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGNh
bGxiYWNrcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250
cm9sbGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VY
UklucHV0Q29udHJvbGxlci5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjgsNyArMjgsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQlhSLAogICAgIEltcGxlbWVudGF0aW9u
TGFja3NWVGFibGUsCiAgICAgSW50ZXJmYWNlTmFtZT1GYWtlWFJJbnB1dENvbnRyb2xsZXIsCi0g
ICAgTm9JbnRlcmZhY2VPYmplY3QKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdAogXSBpbnRl
cmZhY2UgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyIHsKICAgICAvLyBJbmRpY2F0ZXMgdGhhdCB0
aGUgaGFuZGVkbmVzcyBvZiB0aGUgZGV2aWNlIGhhcyBjaGFuZ2VkLgogICAgIHVuZGVmaW5lZCBz
ZXRIYW5kZWRuZXNzKFhSSGFuZGVkbmVzcyBoYW5kZWRuZXNzKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1dlYlhSVGVzdC5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvV2ViWFJUZXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAog
ICAgIENvbmRpdGlvbmFsPVdFQlhSLAogICAgIEV4cG9zZWQ9V2luZG93LAogICAgIEludGVyZmFj
ZU5hbWU9WFJUZXN0LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0CisgICAgTGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3QKIF0gaW50ZXJmYWNlIFdlYlhSVGVzdCB7CiAgICAgLy8gU2ltdWxhdGVzIGNvbm5l
Y3RpbmcgYSBkZXZpY2UgdG8gdGhlIHN5c3RlbS4KICAgICAvLyBVc2VkIHRvIGluc3RhbnRpYXRl
IGEgZmFrZSBkZXZpY2UgZm9yIHVzZSBpbiB0ZXN0cy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyAr
MzAsNyBAQAogICovCiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIEFic3RyYWN0V29ya2VyIHsKICAgICBhdHRyaWJ1
dGUgRXZlbnRIYW5kbGVyIG9uZXJyb3I7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoTlNSZXNvbHZlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
TlNSZXNvbHZlci5pZGwJKHJldmlzaW9uIDI2NjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aE5TUmVzb2x2ZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw3IEBACiAgKi8K
IAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
LAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAogXSBpbnRlcmZhY2UgWFBhdGhOU1Jlc29sdmVy
IHsKICAgICBET01TdHJpbmc/IGxvb2t1cE5hbWVzcGFjZVVSSShET01TdHJpbmc/IHByZWZpeCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjY2NjU5KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wOS0wNCAgU2FtIFdlaW5p
ZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYklETF0gUmVhbGlnbiBvdXIgSURM
IGV4dGVuZGVkIGF0dHJpYnV0ZSBuYW1lcyB3aXRoIHRob3NlIHNwZWNpZmllZCBpbiBXZWJJREwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjE5NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6ZGlzYWJsZU92ZXJyaWRlQnVp
bHRpbnNCZWhhdmlvcik6CisgICAgICAgIFVwZGF0ZSBmb3IgbmV3IG5hbWUgV2ViQ29yZTo6RE9N
V3JhcHBlcldvcmxkLgorCiAyMDIwLTA5LTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW92ZSBQREYgaGVhZHMtdXAgZGlzcGxheSB0byBV
SSBwcm9jZXNzIG9uIG1hY09TCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQuY3BwCShyZXZpc2lvbiAyNjY2NTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om1h
a2VBbGxTCiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6ZGlzYWJsZU92ZXJyaWRl
QnVpbHRpbnNCZWhhdmlvcigpCiB7Ci0gICAgbV93b3JsZC0+ZGlzYWJsZU92ZXJyaWRlQnVpbHRp
bnNCZWhhdmlvcigpOworICAgIG1fd29ybGQtPmRpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
QmVoYXZpb3IoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>