<?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>154615</bug_id>
          
          <creation_ts>2016-02-23 16:37:32 -0800</creation_ts>
          <short_desc>Web Inspector: teach the Objective-C protocol generators about --frontend and --backend directives</short_desc>
          <delta_ts>2016-02-23 22:43:13 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mattbaker</cc>
    
    <cc>msaboff</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>saam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1167591</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-23 16:37:32 -0800</bug_when>
    <thetext>patch^soon</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167592</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-02-23 16:38:07 -0800</bug_when>
    <thetext>&lt;rdar://problem/24804330&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167596</commentid>
    <comment_count>2</comment_count>
      <attachid>272064</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-23 16:48:16 -0800</bug_when>
    <thetext>Created attachment 272064
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167599</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-23 16:49:12 -0800</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167606</commentid>
    <comment_count>4</comment_count>
      <attachid>272067</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-23 17:10:50 -0800</bug_when>
    <thetext>Created attachment 272067
Proposed Fix

This needs to land at the same time as an internal change, so do not cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167607</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-23 17:11:41 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created attachment 272067 [details]
&gt; Proposed Fix
&gt; 
&gt; This needs to land at the same time as an internal change, so do not cq+.

I think there is one other bug that we don&apos;t include the Private header from the AutomationProtocolTypes.mm file, but my build might have been stale. Will investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167608</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-23 17:13:12 -0800</bug_when>
    <thetext>Attachment 272067 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_conversion_helpers.py:58:  whitespace before &apos;]&apos;  [pep8/E202] [5]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167694</commentid>
    <comment_count>7</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-23 22:43:13 -0800</bug_when>
    <thetext>Committed r197013: &lt;http://trac.webkit.org/changeset/197013&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272064</attachid>
            <date>2016-02-23 16:48:16 -0800</date>
            <delta_ts>2016-02-23 17:10:46 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-154615-20160223164758.patch</filename>
            <type>text/plain</type>
            <size>55364</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2OTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NzEyNmRkOTc2MGVkNmZlZTZjNmJhYjI5ZWUwNzYzY2Y1YmFmOWRkLi4yYzcxN2E1NDE3ODQ0OGRi
NWI2NTdmMmNiYjgzYWM5NWRmYzQxZjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw2NiBAQAogMjAxNi0wMi0yMyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiB0ZWFjaCB0aGUgT2JqZWN0aXZlLUMgcHJvdG9jb2wgZ2Vu
ZXJhdG9ycyBhYm91dCAtLWZyb250ZW5kIGFuZCAtLWJhY2tlbmQgZGlyZWN0aXZlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0NjE1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yNDgwNDMzMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTb21lIG9mIHRoZSBnZW5lcmF0ZWQgT2JqZWN0aXZlLUMgYmlu
ZGluZ3MgYXJlIG9ubHkgcmVsZXZhbnQgdG8gY29kZSBhY3RpbmcgYXMgdGhlCisgICAgICAgIHBy
b3RvY29sIGJhY2tlbmQuIEFkZCBhIHBlci1nZW5lcmF0b3Igc2V0dGluZyBtZWNoYW5pc20gYW5k
IHByb3BhZ2F0ZSAtLWZyb250ZW5kIGFuZAorICAgICAgICAtLWJhY2tlbmQgdG8gYWxsIGdlbmVy
YXRvcnMuIFVzZSB0aGUgc2V0dGluZyBpbiBhIGZldyBnZW5lcmF0b3JzIHRvIG9taXQgY29kZSB0
aGF0J3MKKyAgICAgICAgbm90IG5lZWRlZC4KKworICAgICAgICBBbHNvIGZpeCBhIGZldyBwbGFj
ZXMgd2hlcmUgdGhlIGNvZGUgZW1pdHMgdGhlIHdyb25nIE9iamVjdGl2ZS1DIGNsYXNzIHByZWZp
eC4KKyAgICAgICAgVGhlcmUgaXMgc29tZSBjb21tb24gbm9uLWdlbmVyYXRlZCBjb2RlIHRoYXQg
bXVzdCBhbHdheXMgaGF2ZSB0aGUgUldJUHJvdG9jb2wgcHJlZml4LgorCisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2hlYWRlci5weToKKyAgICAgICAg
KE9iakNIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgRm9yIG5vdywg
b21pdCBnZW5lcmF0aW5nIGNvbW1hbmQgcHJvdG9jb2wgYW5kIGV2ZW50IGRpc3BhdGNoZXJzIHdo
ZW4gZ2VuZXJhdGluZyBmb3IgLS1mcm9udGVuZC4KKworICAgICAgICAoT2JqQ0hlYWRlckdlbmVy
YXRvci5fZ2VuZXJhdGVfdHlwZV9pbnRlcmZhY2UpOgorICAgICAgICBVc2UgT0JKQ19TVEFUSUNf
UFJFRklYIGFsb25nIHdpdGggdGhlIHVucHJlZml4ZWQgZmlsZSBuYW1lLgorCisgICAgICAgICog
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2lt
cGxlbWVudGF0aW9uLnB5OgorICAgICAgICAoT2JqQ1Byb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICBJbmNsdWRlIHRoZSBJbnRlcm5h
bCBoZWFkZXIgaWYgaXQncyBiZWluZyBnZW5lcmF0ZWQgKG9ubHkgZm9yIC0tYmFja2VuZCkuCisK
KyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvci5weToKKyAgICAg
ICAgKEdlbmVyYXRvci5fX2luaXRfXyk6CisgICAgICAgIChHZW5lcmF0b3Iuc2V0X2dlbmVyYXRv
cl9zZXR0aW5nKToKKyAgICAgICAgKEdlbmVyYXRvcik6CisgICAgICAgIChHZW5lcmF0b3IuZ2V0
X2dlbmVyYXRvcl9zZXR0aW5nKToKKyAgICAgICAgQ3JpYiBhIHNpbXBsZSBzZXR0aW5nIHN5c3Rl
bSBmcm9tIHRoZSBGcmFtZXdvcmsgY2xhc3MuIE1ha2UgdGhlIG5hbWVzIG1vcmUgb2Jub3hpb3Vz
LgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5w
eToKKyAgICAgICAgKE9iakNHZW5lcmF0b3IuYW5kKToKKyAgICAgICAgKE9iakNHZW5lcmF0b3Iu
YW5kLm9iamNfcHJlZml4KToKKyAgICAgICAgKE9iakNHZW5lcmF0b3IpOgorICAgICAgICAoT2Jq
Q0dlbmVyYXRvci5vYmpjX3R5cGVfZm9yX3Jhd19uYW1lKToKKyAgICAgICAgKE9iakNHZW5lcmF0
b3Iub2JqY19jbGFzc19mb3JfcmF3X25hbWUpOgorICAgICAgICBXaGl0ZWxpc3QgdGhlICdBdXRv
bWF0aW9uJyBkb21haW4gZm9yIHRoZSBPYmpDIGdlbmVyYXRvcnMuIFJldmlzZSB1c2Ugb2YgT0JK
Q19TVEFUSUNfUFJFRklYLgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUt
aW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5OgorICAgICAgICAoZ2VuZXJhdGVfZnJvbV9z
cGVjaWZpY2F0aW9uKToKKyAgICAgICAgQ2hhbmdlIHRoZSBnZW5lcmF0b3JzIHRvIHVzZSBmb3Ig
dGhlIGZyb250ZW5kLiBQcm9wYWdhdGUgLS1mcm9udGVuZCBhbmQgLS1iYWNrZW5kLgorCisgICAg
ICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3lu
Yy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJz
Lmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6CisgICAgICAg
ICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1
bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdp
dGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFy
ZHMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQ6CisgICAgICAgICog
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1z
ZXR0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3Vs
dDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xh
cmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQ6
CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJh
dGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0
OgorICAgICAgICBSZWJhc2VsaW5lIHRlc3RzLiBUaGV5IG5vdyBjb3JyZWN0bHkgaW5jbHVkZSBS
V0lQcm90b2NvbEpTT05PYmplY3QuaCBhbmQgdGhlIGxpa2UuCisKKzIwMTYtMDItMjMgIEJyaWFu
IEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogdGhlIHBy
b3RvY29sIGdlbmVyYXRvcidzIE9iamVjdGl2ZS1DIG5hbWUgcHJlZml4IHNob3VsZCBiZSBjb25m
aWd1cmFibGUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NDU5NgogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3OTQ5NjI+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9v
YmpjX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX29iamNfaGVhZGVyLnB5CmluZGV4IDI5OGY1YWJhYjY4NDA2NDQ1M2U5
MjgzZDM2ZWFlMjdlNjM2ODhmOWIuLjJjNTQwZGM3N2Q3NjQxMjU4ZDkyYzIyMDI4Yjk3ZjFhN2Qx
ODMxYjAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfaGVhZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfaGVhZGVyLnB5CkBA
IC01Miw3ICs1Miw3IEBAIGNsYXNzIE9iakNIZWFkZXJHZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6
CiAKICAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgogICAgICAgICBoZWFkZXJzID0gc2V0
KFsKLSAgICAgICAgICAgICc8V2ViSW5zcGVjdG9yLyVzSlNPTk9iamVjdC5oPicgJSBzZWxmLm9i
amNfcHJlZml4KCksCisgICAgICAgICAgICAnPFdlYkluc3BlY3Rvci8lc0pTT05PYmplY3QuaD4n
ICUgT2JqQ0dlbmVyYXRvci5PQkpDX1NUQVRJQ19QUkVGSVgsCiAgICAgICAgIF0pCiAKICAgICAg
ICAgaGVhZGVyX2FyZ3MgPSB7CkBAIC03NSw4ICs3NSwxMSBAQCBjbGFzcyBPYmpDSGVhZGVyR2Vu
ZXJhdG9yKE9iakNHZW5lcmF0b3IpOgogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoJ1xuJy5qb2lu
KGZpbHRlcihOb25lLCBtYXAoc2VsZi5fZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMsIHR5
cGVfZG9tYWlucykpKSkKICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKCdcbicuam9pbihmaWx0ZXIo
Tm9uZSwgbWFwKHNlbGYuX2dlbmVyYXRlX2VudW1zLCB0eXBlX2RvbWFpbnMpKSkpCiAgICAgICAg
IHNlY3Rpb25zLmFwcGVuZCgnXG4nLmpvaW4oZmlsdGVyKE5vbmUsIG1hcChzZWxmLl9nZW5lcmF0
ZV90eXBlcywgdHlwZV9kb21haW5zKSkpKQotICAgICAgICBzZWN0aW9ucy5hcHBlbmQoJ1xuXG4n
LmpvaW4oZmlsdGVyKE5vbmUsIG1hcChzZWxmLl9nZW5lcmF0ZV9jb21tYW5kX3Byb3RvY29scywg
Y29tbWFuZF9kb21haW5zKSkpKQotICAgICAgICBzZWN0aW9ucy5hcHBlbmQoJ1xuXG4nLmpvaW4o
ZmlsdGVyKE5vbmUsIG1hcChzZWxmLl9nZW5lcmF0ZV9ldmVudF9pbnRlcmZhY2VzLCBldmVudF9k
b21haW5zKSkpKQorCisgICAgICAgIGlmIHNlbGYuZ2V0X2dlbmVyYXRvcl9zZXR0aW5nKCdnZW5l
cmF0ZV9iYWNrZW5kJywgRmFsc2UpOgorICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKCdcblxu
Jy5qb2luKGZpbHRlcihOb25lLCBtYXAoc2VsZi5fZ2VuZXJhdGVfY29tbWFuZF9wcm90b2NvbHMs
IGNvbW1hbmRfZG9tYWlucykpKSkKKyAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZCgnXG5cbicu
am9pbihmaWx0ZXIoTm9uZSwgbWFwKHNlbGYuX2dlbmVyYXRlX2V2ZW50X2ludGVyZmFjZXMsIGV2
ZW50X2RvbWFpbnMpKSkpCisKICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKE9iakNU
ZW1wbGF0ZXMuSGVhZGVyUG9zdGx1ZGUpLnN1YnN0aXR1dGUoTm9uZSkpCiAgICAgICAgIHJldHVy
biAnXG5cbicuam9pbihzZWN0aW9ucykKIApAQCAtMTU1LDcgKzE1OCw3IEBAIGNsYXNzIE9iakNI
ZWFkZXJHZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAgICAgICAgIGxpbmVzID0gW10KICAgICAg
ICAgb2JqY19uYW1lID0gc2VsZi5vYmpjX25hbWVfZm9yX3R5cGUoZGVjbGFyYXRpb24udHlwZSkK
ICAgICAgICAgbGluZXMuYXBwZW5kKCdfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVs
dCIpKSknKQotICAgICAgICBsaW5lcy5hcHBlbmQoJ0BpbnRlcmZhY2UgJXMgOiAlcycgJSAob2Jq
Y19uYW1lLCBPYmpDR2VuZXJhdG9yLk9CSkNfSlNPTl9PQkpFQ1RfQkFTRSkpCisgICAgICAgIGxp
bmVzLmFwcGVuZCgnQGludGVyZmFjZSAlcyA6ICVzSlNPTk9iamVjdCcgJSAob2JqY19uYW1lLCBP
YmpDR2VuZXJhdG9yLk9CSkNfU1RBVElDX1BSRUZJWCkpCiAgICAgICAgIHJlcXVpcmVkX21lbWJl
cnMgPSBmaWx0ZXIobGFtYmRhIG1lbWJlcjogbm90IG1lbWJlci5pc19vcHRpb25hbCwgZGVjbGFy
YXRpb24udHlwZV9tZW1iZXJzKQogICAgICAgICBvcHRpb25hbF9tZW1iZXJzID0gZmlsdGVyKGxh
bWJkYSBtZW1iZXI6IG1lbWJlci5pc19vcHRpb25hbCwgZGVjbGFyYXRpb24udHlwZV9tZW1iZXJz
KQogICAgICAgICBpZiByZXF1aXJlZF9tZW1iZXJzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2Nv
bF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50
YXRpb24ucHkKaW5kZXggODY2NzIwZDc1NTYyNWRjYWIwM2VjM2QzZjE2MGI5NWMxOWMzNjVhMS4u
MjRlZjY4NzY2NGRlZmJjZGY5MWY2YjZhNTNlMDViYTZlOGQ4Yjg2NCAxMDA3NTUKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2Jq
Y19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5
cGVzX2ltcGxlbWVudGF0aW9uLnB5CkBAIC02MCw4ICs2MCwxMyBAQCBjbGFzcyBPYmpDUHJvdG9j
b2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKE9iakNHZW5lcmF0b3IpOgogICAgICAgICAg
ICAgJzx3dGYvQXNzZXJ0aW9ucy5oPicsCiAgICAgICAgIF0KIAorICAgICAgICAjIFRoZSBGb29Q
cm90b2NvbEludGVybmFsLmggaGVhZGVyIGlzIG9ubHkgbmVlZGVkIHRvIGRlY2xhcmUgdGhlIGJh
Y2tlbmQtc2lkZSBldmVudCBkaXNwYXRjaGVyIGJpbmRpbmdzLgorICAgICAgICBwcmltYXJ5SW5j
bHVkZU5hbWUgPSBzZWxmLm9iamNfcHJlZml4KCkKKyAgICAgICAgaWYgc2VsZi5nZXRfZ2VuZXJh
dG9yX3NldHRpbmcoJ2dlbmVyYXRlX2JhY2tlbmQnLCBGYWxzZSk6CisgICAgICAgICAgICBwcmlt
YXJ5SW5jbHVkZU5hbWUgKz0gJ0ludGVybmFsJworCiAgICAgICAgIGhlYWRlcl9hcmdzID0gewot
ICAgICAgICAgICAgJ3ByaW1hcnlJbmNsdWRlJzogJyIlc0ludGVybmFsLmgiJyAlIHNlbGYub2Jq
Y19wcmVmaXgoKSwKKyAgICAgICAgICAgICdwcmltYXJ5SW5jbHVkZSc6ICciJXMuaCInICUgcHJp
bWFyeUluY2x1ZGVOYW1lLAogICAgICAgICAgICAgJ3NlY29uZGFyeUluY2x1ZGVzJzogJ1xuJy5q
b2luKFsnI2ltcG9ydCAlcycgJSBoZWFkZXIgZm9yIGhlYWRlciBpbiBzZWNvbmRhcnlfaGVhZGVy
c10pLAogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvci5weQppbmRleCA0YzhmMTk5OGUx
NWJmNWM0YmI3OWJhOWI2ZmFmNTYyOGU0NDUxZjVjLi4zYTk3NThhOWJhNGM1ZjhmNDdhZDY0NTIx
MTFkMDUxZTIyM2ViNGU1IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yLnB5CkBAIC03OCwxMCArNzgs
MTggQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5w
dXRfZmlsZXBhdGgpOgogICAgICAgICBzZWxmLl9tb2RlbCA9IG1vZGVsCiAgICAgICAgIHNlbGYu
X2lucHV0X2ZpbGVwYXRoID0gaW5wdXRfZmlsZXBhdGgKKyAgICAgICAgc2VsZi5fc2V0dGluZ3Mg
PSB7fQogCiAgICAgZGVmIG1vZGVsKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fbW9kZWwK
IAorICAgIGRlZiBzZXRfZ2VuZXJhdG9yX3NldHRpbmcoc2VsZiwga2V5LCB2YWx1ZSk6CisgICAg
ICAgIHNlbGYuX3NldHRpbmdzW2tleV0gPSB2YWx1ZQorCisgICAgIyBUaGUgZ29vZnkgbmFtZSBp
cyB0byBkaXNhbWJpZ3VhdGUgZ2VuZXJhdG9yIHNldHRpbmdzIGZyb20gZnJhbWV3b3JrIHNldHRp
bmdzLgorICAgIGRlZiBnZXRfZ2VuZXJhdG9yX3NldHRpbmcoc2VsZiwga2V5LCBkZWZhdWx0PU5v
bmUpOgorICAgICAgICByZXR1cm4gc2VsZi5fc2V0dGluZ3MuZ2V0KGtleSwgZGVmYXVsdCkKKwog
ICAgIGRlZiBnZW5lcmF0ZV9saWNlbnNlKHNlbGYpOgogICAgICAgICByZXR1cm4gVGVtcGxhdGUo
VGVtcGxhdGVzLkNvcHlyaWdodEJsb2NrKS5zdWJzdGl0dXRlKE5vbmUsIGlucHV0RmlsZW5hbWU9
b3MucGF0aC5iYXNlbmFtZShzZWxmLl9pbnB1dF9maWxlcGF0aCkpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJh
dG9yLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3IucHkKaW5kZXggYTNhY2YyMGQzZjNlMTViYmE0OTRkMzlkZTMxZDJmMTU5
NDdjNDI0NS4uMDVjY2MyMmQwZWRkZGE2ODE3MmI4OGY4NWM3ZjVmN2EzZGFhZjRlZiAxMDA3NTUK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2Jq
Y19nZW5lcmF0b3IucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3IucHkKQEAgLTg2LDE1ICs4NiwxNSBAQCBjbGFzcyBP
YmpDR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgIyBEbyBub3QgdXNlIGEgZHluYW1pYyBwcmVm
aXggZm9yIFJXSVByb3RvY29sSlNPTk9iamVjdCBzaW5jZSBpdCdzIHVzZWQgYXMgYSBjb21tb24K
ICAgICAjIGJhc2UgY2xhc3MgYW5kIG5lZWRzIGEgY29uc2lzdGVudCBPYmplY3RpdmUtQyBwcmVm
aXggdG8gYmUgaW4gYSByZXVzYWJsZSBmcmFtZXdvcmsuCiAgICAgT0JKQ19IRUxQRVJfUFJFRklY
ID0gJ1JXSScKLSAgICBPQkpDX0NPTU1PTl9QUkVGSVggPSAnUHJvdG9jb2wnCi0gICAgT0JKQ19K
U09OX09CSkVDVF9CQVNFID0gJyVzJXNKU09OT2JqZWN0JyAlIChPQkpDX0hFTFBFUl9QUkVGSVgs
IE9CSkNfQ09NTU9OX1BSRUZJWCkKKyAgICBPQkpDX1NIQVJFRF9QUkVGSVggPSAnUHJvdG9jb2wn
CisgICAgT0JKQ19TVEFUSUNfUFJFRklYID0gJyVzJXMnICUgKE9CSkNfSEVMUEVSX1BSRUZJWCwg
T0JKQ19TSEFSRURfUFJFRklYKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVsLCBpbnB1
dF9maWxlcGF0aCk6CiAgICAgICAgIEdlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5w
dXRfZmlsZXBhdGgpCiAKICAgICBkZWYgb2JqY19wcmVmaXgoc2VsZik6CiAgICAgICAgIGZyYW1l
d29ya19wcmVmaXggPSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ29iamNfcHJlZml4
JywgJycpCi0gICAgICAgIHJldHVybiAnJXMlcycgJSAoZnJhbWV3b3JrX3ByZWZpeCwgT2JqQ0dl
bmVyYXRvci5PQkpDX0NPTU1PTl9QUkVGSVgpCisgICAgICAgIHJldHVybiAnJXMlcycgJSAoZnJh
bWV3b3JrX3ByZWZpeCwgT2JqQ0dlbmVyYXRvci5PQkpDX1NIQVJFRF9QUkVGSVgpCiAKICAgICAj
IEFkanVzdCBpZGVudGlmaWVyIG5hbWVzIHRoYXQgY29sbGlkZSB3aXRoIE9iakMga2V5d29yZHMu
CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCBjbGFzcyBPYmpDR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAK
ICAgICAjIEdlbmVyYXRlIE9iakMgdHlwZXMsIGNvbW1hbmQgaGFuZGxlcnMsIGFuZCBldmVudCBk
aXNwYXRjaGVycyBmb3IgYSBzdWJzZXQgb2YgZG9tYWlucy4KIAotICAgIERPTUFJTlNfVE9fR0VO
RVJBVEUgPSBbJ0NTUycsICdET00nLCAnRE9NU3RvcmFnZScsICdOZXR3b3JrJywgJ1BhZ2UnLCAn
R2VuZXJpY1R5cGVzJ10KKyAgICBET01BSU5TX1RPX0dFTkVSQVRFID0gWydDU1MnLCAnRE9NJywg
J0RPTVN0b3JhZ2UnLCAnTmV0d29yaycsICdQYWdlJywgJ0F1dG9tYXRpb24nLCAnR2VuZXJpY1R5
cGVzJ10KIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgc2hvdWxkX2dlbmVyYXRlX2RvbWFp
bl90eXBlc19maWx0ZXIobW9kZWwpOgpAQCAtMjA2LDcgKzIwNiw3IEBAIGNsYXNzIE9iakNHZW5l
cmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgaWYgcmF3X25hbWUgaXMgJ2Jvb2xlYW4nOgogICAg
ICAgICAgICAgcmV0dXJuICdCT09MJwogICAgICAgICBpZiByYXdfbmFtZSBpbiBbJ2FueScsICdv
YmplY3QnXToKLSAgICAgICAgICAgIHJldHVybiAnJXMgKicgJSBPYmpDR2VuZXJhdG9yLk9CSkNf
SlNPTl9PQkpFQ1RfQkFTRQorICAgICAgICAgICAgcmV0dXJuICclc0pTT05PYmplY3QgKicgJSBP
YmpDR2VuZXJhdG9yLk9CSkNfU1RBVElDX1BSRUZJWAogICAgICAgICByZXR1cm4gTm9uZQogCiAg
ICAgQHN0YXRpY21ldGhvZApAQCAtMjE4LDcgKzIxOCw3IEBAIGNsYXNzIE9iakNHZW5lcmF0b3Io
R2VuZXJhdG9yKToKICAgICAgICAgaWYgcmF3X25hbWUgaW4gWydpbnRlZ2VyJywgJ251bWJlcics
ICdib29sZWFuJ106CiAgICAgICAgICAgICByZXR1cm4gJ05TTnVtYmVyJwogICAgICAgICBpZiBy
YXdfbmFtZSBpbiBbJ2FueScsICdvYmplY3QnXToKLSAgICAgICAgICAgIHJldHVybiBPYmpDR2Vu
ZXJhdG9yLk9CSkNfSlNPTl9PQkpFQ1RfQkFTRQorICAgICAgICAgICAgcmV0dXJuICclc0pTT05P
YmplY3QnICUgT2JqQ0dlbmVyYXRvci5PQkpDX1NUQVRJQ19QUkVGSVgKICAgICAgICAgcmV0dXJu
IE5vbmUKIAogICAgICMgRklYTUU6IENhbiB0aGVzZSBwcm90b2NvbF90eXBlIGZ1bmN0aW9ucyBi
ZSByZW1vdmVkIGluIGZhdm9yIG9mIEMrKyBnZW5lcmF0b3JzIGZ1bmN0aW9ucz8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNw
ZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CmluZGV4
IGE1MjhhOWRiMjVjNmNlMDhhNWU0MDFjYjgzOTRjOGZmYjk3ODg1YTEuLmU4ZDQyNGQxMmRiMjAx
YzAwMjhlNDUyZDExYzI2ZmQ5OTE1Zjk0N2EgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGlu
Z3MucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVy
YXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQpAQCAtMTcwLDcgKzE3MCw3IEBAIGRl
ZiBnZW5lcmF0ZV9mcm9tX3NwZWNpZmljYXRpb24ocHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVw
YXRoPU5vbmUsCiAgICAgZWxpZiBwcm90b2NvbC5mcmFtZXdvcmsgaXMgRnJhbWV3b3Jrcy5XZWJL
aXQgYW5kIGdlbmVyYXRlX2Zyb250ZW5kOgogICAgICAgICAjIEZJWE1FIDxyZGFyOi8vcHJvYmxl
bS8yMzQ2NjkyNT46IFRoaXMgbGlzdCBvZiBnZW5lcmF0b3JzIGZvciB0aGUgZnJvbnRlbmQgaXMg
YSBwbGFjZWhvbGRlci4KICAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoT2JqQ0NvbnZlcnNpb25I
ZWxwZXJzR2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgp
KQotICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChPYmpDRnJvbnRlbmREaXNwYXRjaGVySW1wbGVt
ZW50YXRpb25HZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0
aCkpCisgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKE9iakNIZWFkZXJHZW5lcmF0b3IocHJvdG9j
b2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCiAgICAgICAgIGdlbmVyYXRvcnMu
YXBwZW5kKE9iakNQcm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IocHJvdG9jb2ws
IHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCiAKICAgICBlbGlmIHByb3RvY29sLmZy
YW1ld29yayBpcyBGcmFtZXdvcmtzLldlYkluc3BlY3RvcjoKQEAgLTE4Nyw2ICsxODcsMTMgQEAg
ZGVmIGdlbmVyYXRlX2Zyb21fc3BlY2lmaWNhdGlvbihwcmltYXJ5X3NwZWNpZmljYXRpb25fZmls
ZXBhdGg9Tm9uZSwKICAgICBzaW5nbGVfb3V0cHV0X2ZpbGVfY29udGVudHMgPSBbXQogCiAgICAg
Zm9yIGdlbmVyYXRvciBpbiBnZW5lcmF0b3JzOgorICAgICAgICAjIE9ubHkgc29tZSBnZW5lcmF0
b3JzIGNhcmUgd2hldGhlciBmcm9udGVuZCBvciBiYWNrZW5kIHdhcyBzcGVjaWZpZWQsIGJ1dCBp
dCBpcworICAgICAgICAjIHNldCBvbiBhbGwgb2YgdGhlbSB0byBhdm9pZCBhZGRpbmcgbW9yZSBj
b25zdHJ1Y3RvciBhcmd1bWVudHMgb3IgdGhpbmtpbmcgdG9vIGhhcmQuCisgICAgICAgIGlmIGdl
bmVyYXRlX2JhY2tlbmQ6CisgICAgICAgICAgICBnZW5lcmF0b3Iuc2V0X2dlbmVyYXRvcl9zZXR0
aW5nKCdnZW5lcmF0ZV9iYWNrZW5kJywgVHJ1ZSkKKyAgICAgICAgaWYgZ2VuZXJhdGVfZnJvbnRl
bmQ6CisgICAgICAgICAgICBnZW5lcmF0b3Iuc2V0X2dlbmVyYXRvcl9zZXR0aW5nKCdnZW5lcmF0
ZV9mcm9udGVuZCcsIFRydWUpCisKICAgICAgICAgb3V0cHV0ID0gZ2VuZXJhdG9yLmdlbmVyYXRl
X291dHB1dCgpCiAgICAgICAgIGlmIGNvbmNhdGVuYXRlX291dHB1dDoKICAgICAgICAgICAgIHNp
bmdsZV9vdXRwdXRfZmlsZV9jb250ZW50cy5hcHBlbmQoJyMjIyBCZWdpbiBGaWxlOiAlcycgJSBn
ZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3lu
Yy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNv
bi1yZXN1bHQKaW5kZXggMDdhMWM2OTExM2E4NWNiN2ExMzY2N2IwNzliYTYwZmRiYTkxNDdjYS4u
YzE5MjhmZTM5ZjgyNWNjOTA5MmFhMWVmZmM2MTRmZjlmZTRhOWE5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1h
bmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFz
eW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdApAQCAtMTAzMSw3ICsxMDMxLDcgQEAgdm9pZCBPYmpD
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmNPcHRpb25h
bFJldHVyblZhbHVlcygKICAgICAgICAgYmFja2VuZERpc3BhdGNoZXIoKS0+c2VuZFBlbmRpbmdF
cnJvcnMoKTsKICAgICB9OwogCi0gICAgaWQgc3VjY2Vzc0NhbGxiYWNrID0gXihOU0FycmF5Lyo8
TlNTdHJpbmc+Ki8gKipjb2x1bW5OYW1lcywgTlNTdHJpbmcgKipub3RlcywgZG91YmxlICp0aW1l
c3RhbXAsIFByb3RvY29sSlNPTk9iamVjdCAqKnZhbHVlcywgUHJvdG9jb2xKU09OT2JqZWN0ICoq
cGF5bG9hZCwgaW50ICpkYXRhYmFzZUlkLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICoqc3Fs
RXJyb3IsIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyAqc2NyZWVuQ29sb3IsIE5T
QXJyYXkvKjxOU1N0cmluZz4qLyAqKmFsdGVybmF0ZUNvbG9ycywgVGVzdFByb3RvY29sRGF0YWJh
c2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvciAqcHJpbnRDb2xv
cikgeworICAgIGlkIHN1Y2Nlc3NDYWxsYmFjayA9IF4oTlNBcnJheS8qPE5TU3RyaW5nPiovICoq
Y29sdW1uTmFtZXMsIE5TU3RyaW5nICoqbm90ZXMsIGRvdWJsZSAqdGltZXN0YW1wLCBSV0lQcm90
b2NvbEpTT05PYmplY3QgKip2YWx1ZXMsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqKnBheWxvYWQs
IGludCAqZGF0YWJhc2VJZCwgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKnNxbEVycm9yLCBU
ZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgKnNjcmVlbkNvbG9yLCBOU0FycmF5Lyo8
TlNTdHJpbmc+Ki8gKiphbHRlcm5hdGVDb2xvcnMsIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0
ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3IgKnByaW50Q29sb3IpIHsKICAg
ICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0T2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0
OjpjcmVhdGUoKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfT1BUSU9OQUxfUEFS
QU1FVEVSKGNvbHVtbk5hbWVzLCBAImNvbHVtbk5hbWVzIik7CiAgICAgICAgIFRIUk9XX0VYQ0VQ
VElPTl9GT1JfQkFEX09QVElPTkFMX1BBUkFNRVRFUihub3RlcywgQCJub3RlcyIpOwpAQCAtMTA3
NSw3ICsxMDc1LDcgQEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
cjo6ZXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMKICAgICAgICAgYmFja2VuZERp
c3BhdGNoZXIoKS0+c2VuZFBlbmRpbmdFcnJvcnMoKTsKICAgICB9OwogCi0gICAgaWQgc3VjY2Vz
c0NhbGxiYWNrID0gXihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKipjb2x1bW5OYW1lcywgTlNTdHJp
bmcgKipub3RlcywgZG91YmxlICp0aW1lc3RhbXAsIFByb3RvY29sSlNPTk9iamVjdCAqKnZhbHVl
cywgUHJvdG9jb2xKU09OT2JqZWN0ICoqcGF5bG9hZCwgaW50ICpkYXRhYmFzZUlkLCBUZXN0UHJv
dG9jb2xEYXRhYmFzZUVycm9yICoqc3FsRXJyb3IsIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFy
eUNvbG9ycyAqc2NyZWVuQ29sb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmFsdGVybmF0ZUNv
bG9ycywgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZh
bHVlc1ByaW50Q29sb3IgKnByaW50Q29sb3IpIHsKKyAgICBpZCBzdWNjZXNzQ2FsbGJhY2sgPSBe
KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqKm5vdGVzLCBk
b3VibGUgKnRpbWVzdGFtcCwgUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqdmFsdWVzLCBSV0lQcm90
b2NvbEpTT05PYmplY3QgKipwYXlsb2FkLCBpbnQgKmRhdGFiYXNlSWQsIFRlc3RQcm90b2NvbERh
dGFiYXNlRXJyb3IgKipzcWxFcnJvciwgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3Jz
ICpzY3JlZW5Db2xvciwgTlNBcnJheS8qPE5TU3RyaW5nPiovICoqYWx0ZXJuYXRlQ29sb3JzLCBU
ZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJp
bnRDb2xvciAqcHJpbnRDb2xvcikgewogICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1
bHRPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBUSFJPV19FWENF
UFRJT05fRk9SX0JBRF9PUFRJT05BTF9QQVJBTUVURVIoY29sdW1uTmFtZXMsIEAiY29sdW1uTmFt
ZXMiKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfT1BUSU9OQUxfUEFSQU1FVEVS
KG5vdGVzLCBAIm5vdGVzIik7CkBAIC0xMTE5LDcgKzExMTksNyBAQCB2b2lkIE9iakNJbnNwZWN0
b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3luYyhsb25nIHJlcXVlc3RJ
ZCwgaW50CiAgICAgICAgIGJhY2tlbmREaXNwYXRjaGVyKCktPnNlbmRQZW5kaW5nRXJyb3JzKCk7
CiAgICAgfTsKIAotICAgIGlkIHN1Y2Nlc3NDYWxsYmFjayA9IF4oTlNBcnJheS8qPE5TU3RyaW5n
PiovICpjb2x1bW5OYW1lcywgTlNTdHJpbmcgKm5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBQcm90
b2NvbEpTT05PYmplY3QgKnZhbHVlcywgUHJvdG9jb2xKU09OT2JqZWN0ICpwYXlsb2FkLCBpbnQg
ZGF0YWJhc2VJZCwgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqc3FsRXJyb3IsIE5TQXJyYXkv
KjxOU1N0cmluZz4qLyAqYWx0ZXJuYXRlQ29sb3JzLCBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1h
cnlDb2xvcnMgc2NyZWVuQ29sb3IsIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQ
cmludENvbG9yIHByaW50Q29sb3IpIHsKKyAgICBpZCBzdWNjZXNzQ2FsbGJhY2sgPSBeKE5TQXJy
YXkvKjxOU1N0cmluZz4qLyAqY29sdW1uTmFtZXMsIE5TU3RyaW5nICpub3RlcywgZG91YmxlIHRp
bWVzdGFtcCwgUldJUHJvdG9jb2xKU09OT2JqZWN0ICp2YWx1ZXMsIFJXSVByb3RvY29sSlNPTk9i
amVjdCAqcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3Ig
KnNxbEVycm9yLCBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmFsdGVybmF0ZUNvbG9ycywgVGVzdFBy
b3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIHNjcmVlbkNvbG9yLCBUZXN0UHJvdG9jb2xEYXRh
YmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvciBwcmludENvbG9yKSB7CiAgICAgICAgIFJlZjxJ
bnNwZWN0b3JPYmplY3Q+IHJlc3VsdE9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUEFSQU1FVEVSKGNvbHVtbk5h
bWVzLCBAImNvbHVtbk5hbWVzIik7CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlS
RURfUEFSQU1FVEVSKG5vdGVzLCBAIm5vdGVzIik7CkBAIC0xMTUzLDcgKzExNTMsNyBAQCB2b2lk
IE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMQXN5bmMo
bG9uZyByZXF1ZXN0SWQsIGludAogICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5zZW5kUGVu
ZGluZ0Vycm9ycygpOwogICAgIH07CiAKLSAgICBpZCBzdWNjZXNzQ2FsbGJhY2sgPSBeKE5TQXJy
YXkvKjxOU1N0cmluZz4qLyAqY29sdW1uTmFtZXMsIE5TU3RyaW5nICpub3RlcywgZG91YmxlIHRp
bWVzdGFtcCwgUHJvdG9jb2xKU09OT2JqZWN0ICp2YWx1ZXMsIFByb3RvY29sSlNPTk9iamVjdCAq
cGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKnNxbEVy
cm9yLCBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgc2NyZWVuQ29sb3IsIE5TQXJy
YXkvKjxOU1N0cmluZz4qLyAqYWx0ZXJuYXRlQ29sb3JzLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4
ZWN1dGVTUUxBc3luY1ByaW50Q29sb3IgcHJpbnRDb2xvcikgeworICAgIGlkIHN1Y2Nlc3NDYWxs
YmFjayA9IF4oTlNBcnJheS8qPE5TU3RyaW5nPiovICpjb2x1bW5OYW1lcywgTlNTdHJpbmcgKm5v
dGVzLCBkb3VibGUgdGltZXN0YW1wLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKnZhbHVlcywgUldJ
UHJvdG9jb2xKU09OT2JqZWN0ICpwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgVGVzdFByb3RvY29s
RGF0YWJhc2VFcnJvciAqc3FsRXJyb3IsIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9y
cyBzY3JlZW5Db2xvciwgTlNBcnJheS8qPE5TU3RyaW5nPiovICphbHRlcm5hdGVDb2xvcnMsIFRl
c3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvciBwcmludENvbG9yKSB7
CiAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdE9iamVjdCA9IEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUEFS
QU1FVEVSKGNvbHVtbk5hbWVzLCBAImNvbHVtbk5hbWVzIik7CiAgICAgICAgIFRIUk9XX0VYQ0VQ
VElPTl9GT1JfUkVRVUlSRURfUEFSQU1FVEVSKG5vdGVzLCBAIm5vdGVzIik7CkBAIC0xNDQ2LDcg
KzE0NDYsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KIAotI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1Rlc3RQcm90b2NvbEpT
T05PYmplY3QuaD4KKyNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3Qu
aD4KIAogCiBAY2xhc3MgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvcjsKQEAgLTE0ODgsNyArMTQ4
OCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZVNRTEFzeW5jUHJpbnRDb2xvcikgewogCiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkg
KCJkZWZhdWx0IikpKQotQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIDogUHJv
dG9jb2xKU09OT2JqZWN0CitAaW50ZXJmYWNlIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgOiBS
V0lQcm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE1lc3NhZ2U6KE5T
U3RyaW5nICopbWVzc2FnZSBjb2RlOihpbnQpY29kZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqbWVzc2FnZTsKIC8qIHJlcXVpcmVkICovIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGludCBjb2RlOwpAQCAtMTQ5NiwxMCArMTQ5Niwx
MCBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIAogQHByb3RvY29s
IFRlc3RQcm90b2NvbERhdGFiYXNlRG9tYWluSGFuZGxlciA8TlNPYmplY3Q+CiBAcmVxdWlyZWQK
LS0gKHZvaWQpZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1dpdGhFcnJvckNhbGxi
YWNrOih2b2lkKF4pKE5TU3RyaW5nICplcnJvcikpZXJyb3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJh
Y2s6KHZvaWQoXikoTlNBcnJheS8qPE5TU3RyaW5nPiovICoqY29sdW1uTmFtZXMsIE5TU3RyaW5n
ICoqbm90ZXMsIGRvdWJsZSAqdGltZXN0YW1wLCBQcm90b2NvbEpTT05PYmplY3QgKip2YWx1ZXMs
IFByb3RvY29sSlNPTk9iamVjdCAqKnBheWxvYWQsIGludCAqZGF0YWJhc2VJZCwgVGVzdFByb3Rv
Y29sRGF0YWJhc2VFcnJvciAqKnNxbEVycm9yLCBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlD
b2xvcnMgKnNjcmVlbkNvbG9yLCBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiphbHRlcm5hdGVDb2xv
cnMsIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVl
c1ByaW50Q29sb3IgKnByaW50Q29sb3IpKXN1Y2Nlc3NDYWxsYmFjayBkYXRhYmFzZUlkOihpbnQp
ZGF0YWJhc2VJZCBxdWVyeTooTlNTdHJpbmcgKilxdWVyeTsKLS0gKHZvaWQpZXhlY3V0ZVNRTEFz
eW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNXaXRoRXJyb3JDYWxsYmFjazoodm9pZCheKShOU1N0cmlu
ZyAqZXJyb3IpKWVycm9yQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrOih2b2lkKF4pKE5TQXJyYXkv
KjxOU1N0cmluZz4qLyAqKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqKm5vdGVzLCBkb3VibGUgKnRp
bWVzdGFtcCwgUHJvdG9jb2xKU09OT2JqZWN0ICoqdmFsdWVzLCBQcm90b2NvbEpTT05PYmplY3Qg
KipwYXlsb2FkLCBpbnQgKmRhdGFiYXNlSWQsIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKipz
cWxFcnJvciwgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzICpzY3JlZW5Db2xvciwg
TlNBcnJheS8qPE5TU3RyaW5nPiovICoqYWx0ZXJuYXRlQ29sb3JzLCBUZXN0UHJvdG9jb2xEYXRh
YmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvciAqcHJpbnRD
b2xvcikpc3VjY2Vzc0NhbGxiYWNrIGRhdGFiYXNlSWQ6KGludClkYXRhYmFzZUlkIHF1ZXJ5OihO
U1N0cmluZyAqKXF1ZXJ5OwotLSAodm9pZClleGVjdXRlU1FMU3luY1dpdGhFcnJvckNhbGxiYWNr
Oih2b2lkKF4pKE5TU3RyaW5nICplcnJvcikpZXJyb3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6
KHZvaWQoXikoTlNBcnJheS8qPE5TU3RyaW5nPiovICpjb2x1bW5OYW1lcywgTlNTdHJpbmcgKm5v
dGVzLCBkb3VibGUgdGltZXN0YW1wLCBQcm90b2NvbEpTT05PYmplY3QgKnZhbHVlcywgUHJvdG9j
b2xKU09OT2JqZWN0ICpwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgVGVzdFByb3RvY29sRGF0YWJh
c2VFcnJvciAqc3FsRXJyb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqYWx0ZXJuYXRlQ29sb3Jz
LCBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgc2NyZWVuQ29sb3IsIFRlc3RQcm90
b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQcmludENvbG9yIHByaW50Q29sb3IpKXN1Y2Nlc3ND
YWxsYmFjayBkYXRhYmFzZUlkOihpbnQpZGF0YWJhc2VJZCBxdWVyeTooTlNTdHJpbmcgKilxdWVy
eTsKLS0gKHZvaWQpZXhlY3V0ZVNRTEFzeW5jV2l0aEVycm9yQ2FsbGJhY2s6KHZvaWQoXikoTlNT
dHJpbmcgKmVycm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazoodm9pZCheKShOU0Fy
cmF5Lyo8TlNTdHJpbmc+Ki8gKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqbm90ZXMsIGRvdWJsZSB0
aW1lc3RhbXAsIFByb3RvY29sSlNPTk9iamVjdCAqdmFsdWVzLCBQcm90b2NvbEpTT05PYmplY3Qg
KnBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICpzcWxF
cnJvciwgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIHNjcmVlbkNvbG9yLCBOU0Fy
cmF5Lyo8TlNTdHJpbmc+Ki8gKmFsdGVybmF0ZUNvbG9ycywgVGVzdFByb3RvY29sRGF0YWJhc2VF
eGVjdXRlU1FMQXN5bmNQcmludENvbG9yIHByaW50Q29sb3IpKXN1Y2Nlc3NDYWxsYmFjayBkYXRh
YmFzZUlkOihpbnQpZGF0YWJhc2VJZCBxdWVyeTooTlNTdHJpbmcgKilxdWVyeTsKKy0gKHZvaWQp
ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1dpdGhFcnJvckNhbGxiYWNrOih2b2lk
KF4pKE5TU3RyaW5nICplcnJvcikpZXJyb3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6KHZvaWQo
XikoTlNBcnJheS8qPE5TU3RyaW5nPiovICoqY29sdW1uTmFtZXMsIE5TU3RyaW5nICoqbm90ZXMs
IGRvdWJsZSAqdGltZXN0YW1wLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKip2YWx1ZXMsIFJXSVBy
b3RvY29sSlNPTk9iamVjdCAqKnBheWxvYWQsIGludCAqZGF0YWJhc2VJZCwgVGVzdFByb3RvY29s
RGF0YWJhc2VFcnJvciAqKnNxbEVycm9yLCBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xv
cnMgKnNjcmVlbkNvbG9yLCBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiphbHRlcm5hdGVDb2xvcnMs
IFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1By
aW50Q29sb3IgKnByaW50Q29sb3IpKXN1Y2Nlc3NDYWxsYmFjayBkYXRhYmFzZUlkOihpbnQpZGF0
YWJhc2VJZCBxdWVyeTooTlNTdHJpbmcgKilxdWVyeTsKKy0gKHZvaWQpZXhlY3V0ZVNRTEFzeW5j
T3B0aW9uYWxSZXR1cm5WYWx1ZXNXaXRoRXJyb3JDYWxsYmFjazoodm9pZCheKShOU1N0cmluZyAq
ZXJyb3IpKWVycm9yQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrOih2b2lkKF4pKE5TQXJyYXkvKjxO
U1N0cmluZz4qLyAqKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqKm5vdGVzLCBkb3VibGUgKnRpbWVz
dGFtcCwgUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqdmFsdWVzLCBSV0lQcm90b2NvbEpTT05PYmpl
Y3QgKipwYXlsb2FkLCBpbnQgKmRhdGFiYXNlSWQsIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3Ig
KipzcWxFcnJvciwgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzICpzY3JlZW5Db2xv
ciwgTlNBcnJheS8qPE5TU3RyaW5nPiovICoqYWx0ZXJuYXRlQ29sb3JzLCBUZXN0UHJvdG9jb2xE
YXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvciAqcHJp
bnRDb2xvcikpc3VjY2Vzc0NhbGxiYWNrIGRhdGFiYXNlSWQ6KGludClkYXRhYmFzZUlkIHF1ZXJ5
OihOU1N0cmluZyAqKXF1ZXJ5OworLSAodm9pZClleGVjdXRlU1FMU3luY1dpdGhFcnJvckNhbGxi
YWNrOih2b2lkKF4pKE5TU3RyaW5nICplcnJvcikpZXJyb3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJh
Y2s6KHZvaWQoXikoTlNBcnJheS8qPE5TU3RyaW5nPiovICpjb2x1bW5OYW1lcywgTlNTdHJpbmcg
Km5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKnZhbHVlcywg
UldJUHJvdG9jb2xKU09OT2JqZWN0ICpwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgVGVzdFByb3Rv
Y29sRGF0YWJhc2VFcnJvciAqc3FsRXJyb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqYWx0ZXJu
YXRlQ29sb3JzLCBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgc2NyZWVuQ29sb3Is
IFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQcmludENvbG9yIHByaW50Q29sb3Ip
KXN1Y2Nlc3NDYWxsYmFjayBkYXRhYmFzZUlkOihpbnQpZGF0YWJhc2VJZCBxdWVyeTooTlNTdHJp
bmcgKilxdWVyeTsKKy0gKHZvaWQpZXhlY3V0ZVNRTEFzeW5jV2l0aEVycm9yQ2FsbGJhY2s6KHZv
aWQoXikoTlNTdHJpbmcgKmVycm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazoodm9p
ZCheKShOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqbm90ZXMs
IGRvdWJsZSB0aW1lc3RhbXAsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqdmFsdWVzLCBSV0lQcm90
b2NvbEpTT05PYmplY3QgKnBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBUZXN0UHJvdG9jb2xEYXRh
YmFzZUVycm9yICpzcWxFcnJvciwgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIHNj
cmVlbkNvbG9yLCBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmFsdGVybmF0ZUNvbG9ycywgVGVzdFBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yIHByaW50Q29sb3IpKXN1Y2Nl
c3NDYWxsYmFjayBkYXRhYmFzZUlkOihpbnQpZGF0YWJhc2VJZCBxdWVyeTooTlNTdHJpbmcgKilx
dWVyeTsKIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJl
dHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1y
ZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCA2Y2M5NDAxOTc0N2E2NGI3ZGNlMmFi
ZGQxZGEyZTA5YWFkNzYwMmNjLi5mNDExMTU1MmMzNzg5YjBiNzkzODI4NmI5MzQ1MGM4ZTEzYjY4
MzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0
ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBh
cmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTkzMCw3ICs5MzAsNyBAQCB2b2lkIE9iakNJbnNwZWN0
b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJz
KGxvbmcgcgogICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5zZW5kUGVuZGluZ0Vycm9ycygp
OwogICAgIH07CiAKLSAgICBpZCBzdWNjZXNzQ2FsbGJhY2sgPSBeKE5TQXJyYXkvKjxOU1N0cmlu
Zz4qLyAqKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqKm5vdGVzLCBkb3VibGUgKnRpbWVzdGFtcCwg
UHJvdG9jb2xKU09OT2JqZWN0ICoqdmFsdWVzLCBQcm90b2NvbEpTT05PYmplY3QgKipwYXlsb2Fk
LCBpbnQgKmRhdGFiYXNlSWQsIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKipzcWxFcnJvciwg
VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzICpzY3JlZW5Db2xvciwgTlNBcnJheS8q
PE5TU3RyaW5nPiovICoqYWx0ZXJuYXRlQ29sb3JzLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1
dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yICpwcmludENvbG9yKSB7CisgICAgaWQg
c3VjY2Vzc0NhbGxiYWNrID0gXihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKipjb2x1bW5OYW1lcywg
TlNTdHJpbmcgKipub3RlcywgZG91YmxlICp0aW1lc3RhbXAsIFJXSVByb3RvY29sSlNPTk9iamVj
dCAqKnZhbHVlcywgUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqcGF5bG9hZCwgaW50ICpkYXRhYmFz
ZUlkLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICoqc3FsRXJyb3IsIFRlc3RQcm90b2NvbERh
dGFiYXNlUHJpbWFyeUNvbG9ycyAqc2NyZWVuQ29sb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAq
KmFsdGVybmF0ZUNvbG9ycywgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQ
YXJhbWV0ZXJzUHJpbnRDb2xvciAqcHJpbnRDb2xvcikgewogICAgICAgICBSZWY8SW5zcGVjdG9y
T2JqZWN0PiByZXN1bHRPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAg
ICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9PUFRJT05BTF9QQVJBTUVURVIoY29sdW1uTmFtZXMs
IEAiY29sdW1uTmFtZXMiKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfT1BUSU9O
QUxfUEFSQU1FVEVSKG5vdGVzLCBAIm5vdGVzIik7CkBAIC05NzAsMTIgKzk3MCwxMiBAQCB2b2lk
IE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9u
YWxQYXJhbWV0ZXJzKGxvbmcgcgogICAgIGRvdWJsZSBvX2luX3RpbWVzdGFtcDsKICAgICBpZiAo
aW5fdGltZXN0YW1wKQogICAgICAgICBvX2luX3RpbWVzdGFtcCA9ICppbl90aW1lc3RhbXA7Ci0g
ICAgUHJvdG9jb2xKU09OT2JqZWN0ICpvX2luX3ZhbHVlczsKKyAgICBSV0lQcm90b2NvbEpTT05P
YmplY3QgKm9faW5fdmFsdWVzOwogICAgIGlmIChpbl92YWx1ZXMpCi0gICAgICAgIG9faW5fdmFs
dWVzID0gW1tbUHJvdG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVj
dDppbl92YWx1ZXNdIGF1dG9yZWxlYXNlXTsKLSAgICBQcm90b2NvbEpTT05PYmplY3QgKm9faW5f
cGF5bG9hZDsKKyAgICAgICAgb19pbl92YWx1ZXMgPSBbW1tSV0lQcm90b2NvbEpTT05PYmplY3Qg
YWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0OmluX3ZhbHVlc10gYXV0b3JlbGVhc2VdOwor
ICAgIFJXSVByb3RvY29sSlNPTk9iamVjdCAqb19pbl9wYXlsb2FkOwogICAgIGlmIChpbl9wYXls
b2FkKQotICAgICAgICBvX2luX3BheWxvYWQgPSBbW1tQcm90b2NvbEpTT05PYmplY3QgYWxsb2Nd
IGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0OmluX3BheWxvYWRdIGF1dG9yZWxlYXNlXTsKKyAgICAg
ICAgb19pbl9wYXlsb2FkID0gW1tbUldJUHJvdG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0
aEluc3BlY3Rvck9iamVjdDppbl9wYXlsb2FkXSBhdXRvcmVsZWFzZV07CiAgICAgaW50IG9faW5f
ZGF0YWJhc2VJZDsKICAgICBpZiAoaW5fZGF0YWJhc2VJZCkKICAgICAgICAgb19pbl9kYXRhYmFz
ZUlkID0gKmluX2RhdGFiYXNlSWQ7CkBAIC0xMDAyLDcgKzEwMDIsNyBAQCB2b2lkIE9iakNJbnNw
ZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRl
cnMobG9uZyByZQogICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5zZW5kUGVuZGluZ0Vycm9y
cygpOwogICAgIH07CiAKLSAgICBpZCBzdWNjZXNzQ2FsbGJhY2sgPSBeKE5TQXJyYXkvKjxOU1N0
cmluZz4qLyAqY29sdW1uTmFtZXMsIE5TU3RyaW5nICpub3RlcywgZG91YmxlIHRpbWVzdGFtcCwg
UHJvdG9jb2xKU09OT2JqZWN0ICp2YWx1ZXMsIFByb3RvY29sSlNPTk9iamVjdCAqcGF5bG9hZCwg
aW50IGRhdGFiYXNlSWQsIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKnNxbEVycm9yLCBUZXN0
UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgc2NyZWVuQ29sb3IsIE5TQXJyYXkvKjxOU1N0
cmluZz4qLyAqYWx0ZXJuYXRlQ29sb3JzLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09w
dGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3IgcHJpbnRDb2xvcikgeworICAgIGlkIHN1Y2Nlc3ND
YWxsYmFjayA9IF4oTlNBcnJheS8qPE5TU3RyaW5nPiovICpjb2x1bW5OYW1lcywgTlNTdHJpbmcg
Km5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKnZhbHVlcywg
UldJUHJvdG9jb2xKU09OT2JqZWN0ICpwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgVGVzdFByb3Rv
Y29sRGF0YWJhc2VFcnJvciAqc3FsRXJyb3IsIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNv
bG9ycyBzY3JlZW5Db2xvciwgTlNBcnJheS8qPE5TU3RyaW5nPiovICphbHRlcm5hdGVDb2xvcnMs
IFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xv
ciBwcmludENvbG9yKSB7CiAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdE9iamVj
dCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9G
T1JfUkVRVUlSRURfUEFSQU1FVEVSKGNvbHVtbk5hbWVzLCBAImNvbHVtbk5hbWVzIik7CiAgICAg
ICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUEFSQU1FVEVSKG5vdGVzLCBAIm5vdGVz
Iik7CkBAIC0xMDI2LDggKzEwMjYsOCBAQCB2b2lkIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyOjpleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyByZQogICAgIE5T
QXJyYXkvKjxOU1N0cmluZz4qLyAqb19pbl9jb2x1bW5OYW1lcyA9IG9iamNTdHJpbmdBcnJheSgm
aW5fY29sdW1uTmFtZXMpOwogICAgIE5TU3RyaW5nICpvX2luX25vdGVzID0gaW5fbm90ZXM7CiAg
ICAgZG91YmxlIG9faW5fdGltZXN0YW1wID0gaW5fdGltZXN0YW1wOwotICAgIFByb3RvY29sSlNP
Tk9iamVjdCAqb19pbl92YWx1ZXMgPSBbW1tQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGluaXRX
aXRoSW5zcGVjdG9yT2JqZWN0OiZpbl92YWx1ZXNdIGF1dG9yZWxlYXNlXTsKLSAgICBQcm90b2Nv
bEpTT05PYmplY3QgKm9faW5fcGF5bG9hZCA9IFtbW1Byb3RvY29sSlNPTk9iamVjdCBhbGxvY10g
aW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6JmluX3BheWxvYWRdIGF1dG9yZWxlYXNlXTsKKyAgICBS
V0lQcm90b2NvbEpTT05PYmplY3QgKm9faW5fdmFsdWVzID0gW1tbUldJUHJvdG9jb2xKU09OT2Jq
ZWN0IGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDomaW5fdmFsdWVzXSBhdXRvcmVsZWFz
ZV07CisgICAgUldJUHJvdG9jb2xKU09OT2JqZWN0ICpvX2luX3BheWxvYWQgPSBbW1tSV0lQcm90
b2NvbEpTT05PYmplY3QgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0OiZpbl9wYXlsb2Fk
XSBhdXRvcmVsZWFzZV07CiAgICAgaW50IG9faW5fZGF0YWJhc2VJZCA9IGluX2RhdGFiYXNlSWQ7
CiAgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqb19pbl9zcWxFcnJvciA9IFtbW1Rlc3RQ
cm90b2NvbERhdGFiYXNlRXJyb3IgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0OiZpbl9z
cWxFcnJvcl0gYXV0b3JlbGVhc2VdOwogICAgIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNv
bG9ycyBvX2luX3NjcmVlbkNvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERh
dGFiYXNlUHJpbWFyeUNvbG9ycz4oaW5fc2NyZWVuQ29sb3IpOwpAQCAtMTMwMyw3ICsxMzAzLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+CiAKLSNpbXBvcnQgPFdlYkluc3BlY3Rvci9UZXN0UHJvdG9jb2xKU09OT2JqZWN0
Lmg+CisjaW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2xKU09OT2JqZWN0Lmg+CiAKIAog
QGNsYXNzIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I7CkBAIC0xMzQ1LDcgKzEzNDUsNyBAQCB0
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09w
dGlvbmFsUGFyYW1ldGVyc1ByaW50QwogCiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJk
ZWZhdWx0IikpKQotQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIDogUHJvdG9j
b2xKU09OT2JqZWN0CitAaW50ZXJmYWNlIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgOiBSV0lQ
cm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE1lc3NhZ2U6KE5TU3Ry
aW5nICopbWVzc2FnZSBjb2RlOihpbnQpY29kZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqbWVzc2FnZTsKIC8qIHJlcXVpcmVkICovIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGludCBjb2RlOwpAQCAtMTM1Myw4ICsxMzUzLDggQEAg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAKIEBwcm90b2NvbCBUZXN0
UHJvdG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXIgPE5TT2JqZWN0PgogQHJlcXVpcmVkCi0tICh2
b2lkKWV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNXaXRoRXJyb3JDYWxsYmFjazoodm9pZChe
KShOU1N0cmluZyAqZXJyb3IpKWVycm9yQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrOih2b2lkKF4p
KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqKm5vdGVzLCBk
b3VibGUgKnRpbWVzdGFtcCwgUHJvdG9jb2xKU09OT2JqZWN0ICoqdmFsdWVzLCBQcm90b2NvbEpT
T05PYmplY3QgKipwYXlsb2FkLCBpbnQgKmRhdGFiYXNlSWQsIFRlc3RQcm90b2NvbERhdGFiYXNl
RXJyb3IgKipzcWxFcnJvciwgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzICpzY3Jl
ZW5Db2xvciwgTlNBcnJheS8qPE5TU3RyaW5nPiovICoqYWx0ZXJuYXRlQ29sb3JzLCBUZXN0UHJv
dG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yICpwcmlu
dENvbG9yKSlzdWNjZXNzQ2FsbGJhY2sgY29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4q
LyAqKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKiopbm90ZXMgdGltZXN0YW1wOihkb3Vi
bGUgKil0aW1lc3RhbXAgdmFsdWVzOihQcm90b2NvbEpTT05PYmplY3QgKiopdmFsdWVzIHBheWxv
YWQ6KFByb3RvY29sSlNPTk9iamVjdCAqKilwYXlsb2FkIGRhdGFiYXNlSWQ6KGludCAqKWRhdGFi
YXNlSWQgc3FsRXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKiopc3FsRXJyb3Igc2Ny
ZWVuQ29sb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyAqKXNjcmVlbkNvbG9y
IGFsdGVybmF0ZUNvbG9yczooTlNBcnJheS8qPE5TU3RyaW5nPiovICoqKWFsdGVybmF0ZUNvbG9y
cyBwcmludENvbG9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFt
ZXRlcnNQcmludENvbG9yICopcHJpbnRDb2xvcjsKLS0gKHZvaWQpZXhlY3V0ZU5vT3B0aW9uYWxQ
YXJhbWV0ZXJzV2l0aEVycm9yQ2FsbGJhY2s6KHZvaWQoXikoTlNTdHJpbmcgKmVycm9yKSllcnJv
ckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazoodm9pZCheKShOU0FycmF5Lyo8TlNTdHJpbmc+Ki8g
KmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIFByb3RvY29s
SlNPTk9iamVjdCAqdmFsdWVzLCBQcm90b2NvbEpTT05PYmplY3QgKnBheWxvYWQsIGludCBkYXRh
YmFzZUlkLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICpzcWxFcnJvciwgVGVzdFByb3RvY29s
RGF0YWJhc2VQcmltYXJ5Q29sb3JzIHNjcmVlbkNvbG9yLCBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8g
KmFsdGVybmF0ZUNvbG9ycywgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBh
cmFtZXRlcnNQcmludENvbG9yIHByaW50Q29sb3IpKXN1Y2Nlc3NDYWxsYmFjayBjb2x1bW5OYW1l
czooTlNBcnJheS8qPE5TU3RyaW5nPiovICopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICop
bm90ZXMgdGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1wIHZhbHVlczooUHJvdG9jb2xKU09OT2Jq
ZWN0ICopdmFsdWVzIHBheWxvYWQ6KFByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQgZGF0YWJh
c2VJZDooaW50KWRhdGFiYXNlSWQgc3FsRXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3Ig
KilzcWxFcnJvciBzY3JlZW5Db2xvcjooVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3Jz
KXNjcmVlbkNvbG9yIGFsdGVybmF0ZUNvbG9yczooTlNBcnJheS8qPE5TU3RyaW5nPiovICopYWx0
ZXJuYXRlQ29sb3JzIHByaW50Q29sb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0
aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcilwcmludENvbG9yOworLSAodm9pZClleGVjdXRlQWxs
T3B0aW9uYWxQYXJhbWV0ZXJzV2l0aEVycm9yQ2FsbGJhY2s6KHZvaWQoXikoTlNTdHJpbmcgKmVy
cm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazoodm9pZCheKShOU0FycmF5Lyo8TlNT
dHJpbmc+Ki8gKipjb2x1bW5OYW1lcywgTlNTdHJpbmcgKipub3RlcywgZG91YmxlICp0aW1lc3Rh
bXAsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqKnZhbHVlcywgUldJUHJvdG9jb2xKU09OT2JqZWN0
ICoqcGF5bG9hZCwgaW50ICpkYXRhYmFzZUlkLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICoq
c3FsRXJyb3IsIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyAqc2NyZWVuQ29sb3Is
IE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmFsdGVybmF0ZUNvbG9ycywgVGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciAqcHJpbnRDb2xvcikp
c3VjY2Vzc0NhbGxiYWNrIGNvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiopY29s
dW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICoqKW5vdGVzIHRpbWVzdGFtcDooZG91YmxlICopdGlt
ZXN0YW1wIHZhbHVlczooUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqKXZhbHVlcyBwYXlsb2FkOihS
V0lQcm90b2NvbEpTT05PYmplY3QgKiopcGF5bG9hZCBkYXRhYmFzZUlkOihpbnQgKilkYXRhYmFz
ZUlkIHNxbEVycm9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICoqKXNxbEVycm9yIHNjcmVl
bkNvbG9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgKilzY3JlZW5Db2xvciBh
bHRlcm5hdGVDb2xvcnM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKilhbHRlcm5hdGVDb2xvcnMg
cHJpbnRDb2xvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0
ZXJzUHJpbnRDb2xvciAqKXByaW50Q29sb3I7CistICh2b2lkKWV4ZWN1dGVOb09wdGlvbmFsUGFy
YW1ldGVyc1dpdGhFcnJvckNhbGxiYWNrOih2b2lkKF4pKE5TU3RyaW5nICplcnJvcikpZXJyb3JD
YWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6KHZvaWQoXikoTlNBcnJheS8qPE5TU3RyaW5nPiovICpj
b2x1bW5OYW1lcywgTlNTdHJpbmcgKm5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBSV0lQcm90b2Nv
bEpTT05PYmplY3QgKnZhbHVlcywgUldJUHJvdG9jb2xKU09OT2JqZWN0ICpwYXlsb2FkLCBpbnQg
ZGF0YWJhc2VJZCwgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqc3FsRXJyb3IsIFRlc3RQcm90
b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyBzY3JlZW5Db2xvciwgTlNBcnJheS8qPE5TU3RyaW5n
PiovICphbHRlcm5hdGVDb2xvcnMsIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9u
YWxQYXJhbWV0ZXJzUHJpbnRDb2xvciBwcmludENvbG9yKSlzdWNjZXNzQ2FsbGJhY2sgY29sdW1u
TmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmlu
ZyAqKW5vdGVzIHRpbWVzdGFtcDooZG91YmxlKXRpbWVzdGFtcCB2YWx1ZXM6KFJXSVByb3RvY29s
SlNPTk9iamVjdCAqKXZhbHVlcyBwYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXls
b2FkIGRhdGFiYXNlSWQ6KGludClkYXRhYmFzZUlkIHNxbEVycm9yOihUZXN0UHJvdG9jb2xEYXRh
YmFzZUVycm9yICopc3FsRXJyb3Igc2NyZWVuQ29sb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlUHJp
bWFyeUNvbG9ycylzY3JlZW5Db2xvciBhbHRlcm5hdGVDb2xvcnM6KE5TQXJyYXkvKjxOU1N0cmlu
Zz4qLyAqKWFsdGVybmF0ZUNvbG9ycyBwcmludENvbG9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUV4
ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3IpcHJpbnRDb2xvcjsKIEBlbmQKIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3Vs
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CmluZGV4IDk5
MzJlOWU2NWE3YmJjNjllZThhZGM1NDJlZjQ1ZmEzM2E2NTJkZGYuLjkzMDg5NjczZmFiZTliZjUy
OWZhYmI4NGFhMzA4Yjk4ODlmYzcwNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1j
b21tYW5kLXNpemVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5k
LXNpemVzLmpzb24tcmVzdWx0CkBAIC0xMjI5LDcgKzEyMjksNyBAQCB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAotI2ltcG9y
dCA8V2ViSW5zcGVjdG9yL1Rlc3RQcm90b2NvbEpTT05PYmplY3QuaD4KKyNpbXBvcnQgPFdlYklu
c3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3QuaD4KIAogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdAppbmRleCA5YzgyMWQ4ODE1
MjE5ZjM3ZjljZGY1Y2ZhY2JiNGE1MjVkZTQzNTk0Li44N2JkNWZhMGY5YTI3NmJlOWFjOGNlODRm
MjYzYWZjYmE0OWY5NjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2Vu
dW0tdmFsdWVzLmpzb24tcmVzdWx0CkBAIC0xMDQwLDcgKzEwNDAsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAotI2lt
cG9ydCA8V2ViSW5zcGVjdG9yL1Rlc3RQcm90b2NvbEpTT05PYmplY3QuaD4KKyNpbXBvcnQgPFdl
Ykluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3QuaD4KIAogCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVu
dHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlv
bmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggYzAyMWRhZmI0YzM0ODNlYjljMzdjM2Rk
MDNlNmJjOWExMGM3ZGY5MS4uZmQ2MTAxOTJlNjAzOTcwMDA0ZWVkMWU0YzZhMDQ4YzMzMTEwZmI1
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTg0Nyw3
ICs4NDcsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIHJldHVybiBzZWxmOwog
fQogCi0tICh2b2lkKWRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnNXaXRoQ29sdW1uTmFtZXM6
KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKiop
bm90ZXMgdGltZXN0YW1wOihkb3VibGUgKil0aW1lc3RhbXAgdmFsdWVzOihQcm90b2NvbEpTT05P
YmplY3QgKiopdmFsdWVzIHBheWxvYWQ6KFByb3RvY29sSlNPTk9iamVjdCAqKilwYXlsb2FkIHNx
bEVycm9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICoqKXNxbEVycm9yIHNjcmVlbkNvbG9y
OihOU1N0cmluZyAqKilzY3JlZW5Db2xvciBhbHRlcm5hdGVDb2xvcnM6KE5TQXJyYXkvKjxOU1N0
cmluZz4qLyAqKilhbHRlcm5hdGVDb2xvcnMgcHJpbnRDb2xvcjooTlNTdHJpbmcgKiopcHJpbnRD
b2xvcgorLSAodm9pZClkaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzV2l0aENvbHVtbk5hbWVz
OihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICoq
KW5vdGVzIHRpbWVzdGFtcDooZG91YmxlICopdGltZXN0YW1wIHZhbHVlczooUldJUHJvdG9jb2xK
U09OT2JqZWN0ICoqKXZhbHVlcyBwYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKiopcGF5
bG9hZCBzcWxFcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKilzcWxFcnJvciBzY3Jl
ZW5Db2xvcjooTlNTdHJpbmcgKiopc2NyZWVuQ29sb3IgYWx0ZXJuYXRlQ29sb3JzOihOU0FycmF5
Lyo8TlNTdHJpbmc+Ki8gKiopYWx0ZXJuYXRlQ29sb3JzIHByaW50Q29sb3I6KE5TU3RyaW5nICoq
KXByaW50Q29sb3IKIHsKICAgICBjb25zdCBGcm9udGVuZFJvdXRlciYgcm91dGVyID0gX2NvbnRy
b2xsZXItPmZyb250ZW5kUm91dGVyKCk7CiAKQEAgLTg4NSw3ICs4ODUsNyBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogICAgIHJvdXRlci5zZW5kRXZlbnQoanNvbk1lc3NhZ2UtPnRvSlNP
TlN0cmluZygpKTsKIH0KIAotLSAodm9pZClkaWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNX
aXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzIG5vdGVz
OihOU1N0cmluZyAqKW5vdGVzIHRpbWVzdGFtcDooZG91YmxlKXRpbWVzdGFtcCB2YWx1ZXM6KFBy
b3RvY29sSlNPTk9iamVjdCAqKXZhbHVlcyBwYXlsb2FkOihQcm90b2NvbEpTT05PYmplY3QgKilw
YXlsb2FkIHNxbEVycm9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICopc3FsRXJyb3Igc2Ny
ZWVuQ29sb3I6KE5TU3RyaW5nICopc2NyZWVuQ29sb3IgYWx0ZXJuYXRlQ29sb3JzOihOU0FycmF5
Lyo8TlNTdHJpbmc+Ki8gKilhbHRlcm5hdGVDb2xvcnMgcHJpbnRDb2xvcjooTlNTdHJpbmcgKilw
cmludENvbG9yCistICh2b2lkKWRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1dpdGhDb2x1
bW5OYW1lczooTlNBcnJheS8qPE5TU3RyaW5nPiovICopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3Ry
aW5nICopbm90ZXMgdGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1wIHZhbHVlczooUldJUHJvdG9j
b2xKU09OT2JqZWN0ICopdmFsdWVzIHBheWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXBh
eWxvYWQgc3FsRXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKilzcWxFcnJvciBzY3Jl
ZW5Db2xvcjooTlNTdHJpbmcgKilzY3JlZW5Db2xvciBhbHRlcm5hdGVDb2xvcnM6KE5TQXJyYXkv
KjxOU1N0cmluZz4qLyAqKWFsdGVybmF0ZUNvbG9ycyBwcmludENvbG9yOihOU1N0cmluZyAqKXBy
aW50Q29sb3IKIHsKICAgICBjb25zdCBGcm9udGVuZFJvdXRlciYgcm91dGVyID0gX2NvbnRyb2xs
ZXItPmZyb250ZW5kUm91dGVyKCk7CiAKQEAgLTk1Miw3ICs5NTIsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAotI2lt
cG9ydCA8V2ViSW5zcGVjdG9yL1Rlc3RQcm90b2NvbEpTT05PYmplY3QuaD4KKyNpbXBvcnQgPFdl
Ykluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3QuaD4KIAogCiBAY2xhc3MgVGVzdFByb3Rv
Y29sRGF0YWJhc2VFcnJvcjsKQEAgLTk2MSw3ICs5NjEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogCiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQotQGlu
dGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIDogUHJvdG9jb2xKU09OT2JqZWN0CitA
aW50ZXJmYWNlIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgOiBSV0lQcm90b2NvbEpTT05PYmpl
Y3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBj
b2RlOihpbnQpY29kZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSBOU1N0cmluZyAqbWVzc2FnZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBhc3NpZ24pIGludCBjb2RlOwpAQCAtOTcxLDggKzk3MSw4IEBAIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkgKCJkZWZhdWx0IikpKQogCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVm
YXVsdCIpKSkKIEBpbnRlcmZhY2UgVGVzdFByb3RvY29sRGF0YWJhc2VEb21haW5FdmVudERpc3Bh
dGNoZXIgOiBOU09iamVjdAotLSAodm9pZClkaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzV2l0
aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiopY29sdW1uTmFtZXMgbm90ZXM6
KE5TU3RyaW5nICoqKW5vdGVzIHRpbWVzdGFtcDooZG91YmxlICopdGltZXN0YW1wIHZhbHVlczoo
UHJvdG9jb2xKU09OT2JqZWN0ICoqKXZhbHVlcyBwYXlsb2FkOihQcm90b2NvbEpTT05PYmplY3Qg
KiopcGF5bG9hZCBzcWxFcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKilzcWxFcnJv
ciBzY3JlZW5Db2xvcjooTlNTdHJpbmcgKiopc2NyZWVuQ29sb3IgYWx0ZXJuYXRlQ29sb3JzOihO
U0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiopYWx0ZXJuYXRlQ29sb3JzIHByaW50Q29sb3I6KE5TU3Ry
aW5nICoqKXByaW50Q29sb3I7Ci0tICh2b2lkKWRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVy
c1dpdGhDb2x1bW5OYW1lczooTlNBcnJheS8qPE5TU3RyaW5nPiovICopY29sdW1uTmFtZXMgbm90
ZXM6KE5TU3RyaW5nICopbm90ZXMgdGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1wIHZhbHVlczoo
UHJvdG9jb2xKU09OT2JqZWN0ICopdmFsdWVzIHBheWxvYWQ6KFByb3RvY29sSlNPTk9iamVjdCAq
KXBheWxvYWQgc3FsRXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKilzcWxFcnJvciBz
Y3JlZW5Db2xvcjooTlNTdHJpbmcgKilzY3JlZW5Db2xvciBhbHRlcm5hdGVDb2xvcnM6KE5TQXJy
YXkvKjxOU1N0cmluZz4qLyAqKWFsdGVybmF0ZUNvbG9ycyBwcmludENvbG9yOihOU1N0cmluZyAq
KXByaW50Q29sb3I7CistICh2b2lkKWRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnNXaXRoQ29s
dW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKiljb2x1bW5OYW1lcyBub3RlczooTlNT
dHJpbmcgKiopbm90ZXMgdGltZXN0YW1wOihkb3VibGUgKil0aW1lc3RhbXAgdmFsdWVzOihSV0lQ
cm90b2NvbEpTT05PYmplY3QgKiopdmFsdWVzIHBheWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVj
dCAqKilwYXlsb2FkIHNxbEVycm9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICoqKXNxbEVy
cm9yIHNjcmVlbkNvbG9yOihOU1N0cmluZyAqKilzY3JlZW5Db2xvciBhbHRlcm5hdGVDb2xvcnM6
KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKilhbHRlcm5hdGVDb2xvcnMgcHJpbnRDb2xvcjooTlNT
dHJpbmcgKiopcHJpbnRDb2xvcjsKKy0gKHZvaWQpZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0
ZXJzV2l0aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1lcyBu
b3RlczooTlNTdHJpbmcgKilub3RlcyB0aW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAgdmFsdWVz
OihSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMgcGF5bG9hZDooUldJUHJvdG9jb2xKU09O
T2JqZWN0ICopcGF5bG9hZCBzcWxFcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKXNx
bEVycm9yIHNjcmVlbkNvbG9yOihOU1N0cmluZyAqKXNjcmVlbkNvbG9yIGFsdGVybmF0ZUNvbG9y
czooTlNBcnJheS8qPE5TU3RyaW5nPiovICopYWx0ZXJuYXRlQ29sb3JzIHByaW50Q29sb3I6KE5T
U3RyaW5nICopcHJpbnRDb2xvcjsKIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlu
cy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1m
ZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdAppbmRleCBhOTY3M2ZiY2JkNmRlNzFiMGE5ZDdjNTY4
OGVmNjQ4Y2JjZTFlNjJiLi45OGM0YzY3MTI2OTcwYzkyZGY2MTk3OWZhYzBkZTlhYmYzMDM5NGQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVz
dWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQK
QEAgLTEwMDMsNyArMTAwMyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi0jaW1wb3J0IDxXZWJJbnNwZWN0b3IvVGVz
dFByb3RvY29sSlNPTk9iamVjdC5oPgorI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29s
SlNPTk9iamVjdC5oPgogCiAKIEBjbGFzcyBUZXN0UHJvdG9jb2xOZXR3b3JrMk5ldHdvcmtFcnJv
cjsKQEAgLTEwMTIsNyArMTAxMiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIAog
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCi1AaW50ZXJmYWNlIFRlc3RQ
cm90b2NvbE5ldHdvcmsyTmV0d29ya0Vycm9yIDogUHJvdG9jb2xKU09OT2JqZWN0CitAaW50ZXJm
YWNlIFRlc3RQcm90b2NvbE5ldHdvcmsyTmV0d29ya0Vycm9yIDogUldJUHJvdG9jb2xKU09OT2Jq
ZWN0CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2Ug
Y29kZTooaW50KWNvZGU7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSkgTlNTdHJpbmcgKm1lc3NhZ2U7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21p
YywgYXNzaWduKSBpbnQgY29kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRv
bWFpbi5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJlc3Vs
dAppbmRleCBkMzcyNjE4ZTdhMTQyMjZkODgxOGJhNzEyMzI3ZWNiNGJiOGQxMTFkLi4xMjlhOWEy
MThhODkzZTQ3ZDk2YWQ0Y2QyM2Y5YTEwNTdhODBhNDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlk
LWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQt
ZG9tYWluLmpzb24tcmVzdWx0CkBAIC03MzYsNyArNzM2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKLSNpbXBvcnQg
PFdlYkluc3BlY3Rvci9UZXN0UHJvdG9jb2xKU09OT2JqZWN0Lmg+CisjaW1wb3J0IDxXZWJJbnNw
ZWN0b3IvUldJUHJvdG9jb2xKU09OT2JqZWN0Lmg+CiAKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQt
b3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUt
c2V0dGVycy5qc29uLXJlc3VsdAppbmRleCBkZGMxZjQxYThlNzg0YThjYzg5ZDQxMmY0MWQ2YjA1
MzFlZGY3ODg3Li5mZGQ0ZGQzZWFhMGVjMGM5NTA1ZGRhYzIyODkxOTY2NjFkMzQwMTlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFk
b3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKQEAgLTgyNSw3ICs4MjUsNyBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5k
YXRpb24uaD4KIAotI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1Rlc3RQcm90b2NvbEpTT05PYmplY3Qu
aD4KKyNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3QuaD4KIAogCiBA
Y2xhc3MgVGVzdFByb3RvY29sUnVudGltZUtleVBhdGg7CkBAIC04MzksNyArODM5LDcgQEAgdHlw
ZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlKSB7
CiAKIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCi1AaW50ZXJmYWNl
IFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoIDogUHJvdG9jb2xKU09OT2JqZWN0CitAaW50ZXJm
YWNlIFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoIDogUldJUHJvdG9jb2xKU09OT2JqZWN0CiAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhUeXBlOihUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5
cGUpdHlwZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIFRl
c3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZSB0eXBlOwogLyogb3B0aW9uYWwgKi8gQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpzdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1k
ZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFy
YXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdAppbmRleCA0MzA0YWUxYTY1
MmRiZmYzZTg1OGVlYTRmNTcyYzlmMGNhMGJiYzU0Li5kZTJhMWMxNmRhYmFhYWMwYzYxYjZkN2Iw
NDYyYTVjZDZlY2M1MjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1p
dGl2ZS10eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0
aXZlLXR5cGUuanNvbi1yZXN1bHQKQEAgLTcyMyw3ICs3MjMsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAotI2ltcG9y
dCA8V2ViSW5zcGVjdG9yL1Rlc3RQcm90b2NvbEpTT05PYmplY3QuaD4KKyNpbXBvcnQgPFdlYklu
c3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3QuaD4KIAogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRl
Y2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10
eXBlLmpzb24tcmVzdWx0CmluZGV4IGJiYTk1NDk3ZDA0OGQ0NjMzNWMyYTZiOGRlNjhhNmE2NjVh
NDdkMDkuLjg4NzBhZWQxMTYxMjdkZmIxMjQzMWI3NjAxNGQ2YzVjZWNjOTliNTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFy
YXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdApAQCAtNzgzLDcgKzc4Myw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgog
Ci0jaW1wb3J0IDxXZWJJbnNwZWN0b3IvVGVzdFByb3RvY29sSlNPTk9iamVjdC5oPgorI2ltcG9y
dCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sSlNPTk9iamVjdC5oPgogCiAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24t
ZW51bS10eXBlLmpzb24tcmVzdWx0CmluZGV4IDM0MDMzMGZjNzE5NTZlZDViMzc5ZDU3YTU0MDE4
Y2RhM2YyNDZjYzcuLjM3OGFlY2I1N2ZkYjYxMjkwMTFhOGIyNWQ0ODU4MTU2OWFhMzg3MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1k
ZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQKQEAgLTgwOSw3ICs4MDksNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aD4KIAotI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1Rlc3RQcm90b2NvbEpTT05PYmplY3QuaD4KKyNp
bXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3QuaD4KIAogCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFy
YXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKaW5kZXggZjBmOGQ3ZGFiZTIxNWVkYWZmYWJj
MjdjMTljOGYzZjQ4MWE3ZDRhZC4uMDU1NWM3OTcwODQxZjg0YzA2NjI2NzdjMjM0ZjQ3NTRkNDkw
ZmVlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKQEAgLTExOTYsNyAr
MTE5Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICNpbXBvcnQgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5oPgogCi0jaW1wb3J0IDxXZWJJbnNwZWN0b3IvVGVzdFByb3RvY29sSlNP
Tk9iamVjdC5oPgorI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sSlNPTk9iamVjdC5o
PgogCiAKIEBjbGFzcyBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yOwpAQCAtMTIxMCwzNyArMTIx
MCwzNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAKIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkgKCJkZWZhdWx0IikpKQotQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUVy
cm9yIDogUHJvdG9jb2xKU09OT2JqZWN0CitAaW50ZXJmYWNlIFRlc3RQcm90b2NvbERhdGFiYXNl
RXJyb3IgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE1l
c3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBjb2RlOihpbnQpY29kZTsKIC8qIHJlcXVpcmVkICov
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqbWVzc2FnZTsKIC8qIHJlcXVp
cmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGludCBjb2RlOwogQGVuZAogCiBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKLUBpbnRlcmZhY2UgVGVzdFBy
b3RvY29sRGF0YWJhc2VPcHRpb25hbFBhcmFtZXRlckJ1bmRsZSA6IFByb3RvY29sSlNPTk9iamVj
dAorQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZU9wdGlvbmFsUGFyYW1ldGVyQnVuZGxl
IDogUldJUHJvdG9jb2xKU09OT2JqZWN0CiAvKiBvcHRpb25hbCAqLyBAcHJvcGVydHkgKG5vbmF0
b21pYywgY29weSkgTlNBcnJheS8qPE5TU3RyaW5nPiovICpjb2x1bW5OYW1lczsKIC8qIG9wdGlv
bmFsICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqbm90ZXM7CiAvKiBv
cHRpb25hbCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBkb3VibGUgdGltZXN0YW1w
OwotLyogb3B0aW9uYWwgKi8gQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgUHJvdG9jb2xK
U09OT2JqZWN0ICp2YWx1ZXM7Ci0vKiBvcHRpb25hbCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmV0YWluKSBQcm90b2NvbEpTT05PYmplY3QgKnBheWxvYWQ7CisvKiBvcHRpb25hbCAqLyBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBSV0lQcm90b2NvbEpTT05PYmplY3QgKnZhbHVlczsK
Ky8qIG9wdGlvbmFsICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFJXSVByb3RvY29s
SlNPTk9iamVjdCAqcGF5bG9hZDsKIC8qIG9wdGlvbmFsICovIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZXRhaW4pIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKmVycm9yOwogLyogb3B0aW9uYWwg
Ki8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXkvKjxUZXN0UHJvdG9jb2xEYXRh
YmFzZUVycm9yPiovICplcnJvckxpc3Q7CiBAZW5kCiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkgKCJkZWZhdWx0IikpKQotQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZVBhcmFtZXRl
ckJ1bmRsZSA6IFByb3RvY29sSlNPTk9iamVjdAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29s
dW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0
cmluZyAqKW5vdGVzIHRpbWVzdGFtcDooZG91YmxlKXRpbWVzdGFtcCB2YWx1ZXM6KFByb3RvY29s
SlNPTk9iamVjdCAqKXZhbHVlcyBwYXlsb2FkOihQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2Fk
IGVycm9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICopZXJyb3IgZXJyb3JMaXN0OihOU0Fy
cmF5Lyo8VGVzdFByb3RvY29sRGF0YWJhc2VFcnJvcj4qLyAqKWVycm9yTGlzdDsKK0BpbnRlcmZh
Y2UgVGVzdFByb3RvY29sRGF0YWJhc2VQYXJhbWV0ZXJCdW5kbGUgOiBSV0lQcm90b2NvbEpTT05P
YmplY3QKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNT
dHJpbmc+Ki8gKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKilub3RlcyB0aW1lc3RhbXA6
KGRvdWJsZSl0aW1lc3RhbXAgdmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMg
cGF5bG9hZDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZCBlcnJvcjooVGVzdFByb3Rv
Y29sRGF0YWJhc2VFcnJvciAqKWVycm9yIGVycm9yTGlzdDooTlNBcnJheS8qPFRlc3RQcm90b2Nv
bERhdGFiYXNlRXJyb3I+Ki8gKillcnJvckxpc3Q7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgTlNBcnJheS8qPE5TU3RyaW5nPiovICpjb2x1bW5OYW1lczsKIC8q
IHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqbm90ZXM7
CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBkb3VibGUgdGlt
ZXN0YW1wOwotLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgUHJv
dG9jb2xKU09OT2JqZWN0ICp2YWx1ZXM7Ci0vKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmV0YWluKSBQcm90b2NvbEpTT05PYmplY3QgKnBheWxvYWQ7CisvKiByZXF1aXJlZCAq
LyBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBSV0lQcm90b2NvbEpTT05PYmplY3QgKnZh
bHVlczsKKy8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFJXSVBy
b3RvY29sSlNPTk9iamVjdCAqcGF5bG9hZDsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZXRhaW4pIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKmVycm9yOwogLyogcmVx
dWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXkvKjxUZXN0UHJvdG9j
b2xEYXRhYmFzZUVycm9yPiovICplcnJvckxpc3Q7CiBAZW5kCiAKIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkgKCJkZWZhdWx0IikpKQotQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZU9i
amVjdFdpdGhQcm9wZXJ0eU5hbWVDb25mbGljdHMgOiBQcm90b2NvbEpTT05PYmplY3QKK0BpbnRl
cmZhY2UgVGVzdFByb3RvY29sRGF0YWJhc2VPYmplY3RXaXRoUHJvcGVydHlOYW1lQ29uZmxpY3Rz
IDogUldJUHJvdG9jb2xKU09OT2JqZWN0CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJbnRlZ2Vy
OihOU1N0cmluZyAqKWludGVnZXIgYXJyYXk6KE5TU3RyaW5nICopYXJyYXkgc3RyaW5nOihOU1N0
cmluZyAqKXN0cmluZyB2YWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBvYmplY3Q6KE5TU3RyaW5nICop
b2JqZWN0OwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3Ry
aW5nICppbnRlZ2VyOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkp
IE5TU3RyaW5nICphcnJheTsKQEAgLTEyNTAsMTcgKzEyNTAsMTcgQEAgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBAZW5kCiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkgKCJkZWZhdWx0IikpKQotQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUR1bW15T2Jq
ZWN0IDogUHJvdG9jb2xKU09OT2JqZWN0CitAaW50ZXJmYWNlIFRlc3RQcm90b2NvbERhdGFiYXNl
RHVtbXlPYmplY3QgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKIEBlbmQKIAogX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCi1AaW50ZXJmYWNlIFRlc3RQcm90b2NvbFRlc3RQ
YXJhbWV0ZXJCdW5kbGUgOiBQcm90b2NvbEpTT05PYmplY3QKLS0gKGluc3RhbmNldHlwZSlpbml0
V2l0aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1lcyBub3Rl
czooTlNTdHJpbmcgKilub3RlcyB0aW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAgdmFsdWVzOihQ
cm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMgcGF5bG9hZDooUHJvdG9jb2xKU09OT2JqZWN0ICop
cGF5bG9hZCBlcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKWVycm9yOworQGludGVy
ZmFjZSBUZXN0UHJvdG9jb2xUZXN0UGFyYW1ldGVyQnVuZGxlIDogUldJUHJvdG9jb2xKU09OT2Jq
ZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2x1bW5OYW1lczooTlNBcnJheS8qPE5TU3Ry
aW5nPiovICopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICopbm90ZXMgdGltZXN0YW1wOihk
b3VibGUpdGltZXN0YW1wIHZhbHVlczooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopdmFsdWVzIHBh
eWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQgZXJyb3I6KFRlc3RQcm90b2Nv
bERhdGFiYXNlRXJyb3IgKillcnJvcjsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5KSBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmNvbHVtbk5hbWVzOwogLyogcmVxdWly
ZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpub3RlczsKIC8qIHJl
cXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGRvdWJsZSB0aW1lc3RhbXA7
Ci0vKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBQcm90b2NvbEpT
T05PYmplY3QgKnZhbHVlczsKLS8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZXRhaW4pIFByb3RvY29sSlNPTk9iamVjdCAqcGF5bG9hZDsKKy8qIHJlcXVpcmVkICovIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFJXSVByb3RvY29sSlNPTk9iamVjdCAqdmFsdWVzOwor
LyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgUldJUHJvdG9jb2xK
U09OT2JqZWN0ICpwYXlsb2FkOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMs
IHJldGFpbikgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqZXJyb3I7CiBAZW5kCiAKQEAgLTE0
MjMsMjQgKzE0MjMsMjQgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICByZXR1cm4g
W3N1cGVyIGRvdWJsZUZvcktleTpAInRpbWVzdGFtcCJdOwogfQogCi0tICh2b2lkKXNldFZhbHVl
czooUHJvdG9jb2xKU09OT2JqZWN0ICopdmFsdWVzCistICh2b2lkKXNldFZhbHVlczooUldJUHJv
dG9jb2xKU09OT2JqZWN0ICopdmFsdWVzCiB7CiAgICAgW3N1cGVyIHNldE9iamVjdDp2YWx1ZXMg
Zm9yS2V5OkAidmFsdWVzIl07CiB9CiAKLS0gKFByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVlcwor
LSAoUldJUHJvdG9jb2xKU09OT2JqZWN0ICopdmFsdWVzCiB7Ci0gICAgcmV0dXJuIChQcm90b2Nv
bEpTT05PYmplY3QgKilbc3VwZXIgb2JqZWN0Rm9yS2V5OkAidmFsdWVzIl07CisgICAgcmV0dXJu
IChSV0lQcm90b2NvbEpTT05PYmplY3QgKilbc3VwZXIgb2JqZWN0Rm9yS2V5OkAidmFsdWVzIl07
CiB9CiAKLS0gKHZvaWQpc2V0UGF5bG9hZDooUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZAor
LSAodm9pZClzZXRQYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkCiB7CiAg
ICAgW3N1cGVyIHNldE9iamVjdDpwYXlsb2FkIGZvcktleTpAInBheWxvYWQiXTsKIH0KIAotLSAo
UHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZAorLSAoUldJUHJvdG9jb2xKU09OT2JqZWN0ICop
cGF5bG9hZAogewotICAgIHJldHVybiAoUHJvdG9jb2xKU09OT2JqZWN0ICopW3N1cGVyIG9iamVj
dEZvcktleTpAInBheWxvYWQiXTsKKyAgICByZXR1cm4gKFJXSVByb3RvY29sSlNPTk9iamVjdCAq
KVtzdXBlciBvYmplY3RGb3JLZXk6QCJwYXlsb2FkIl07CiB9CiAKIC0gKHZvaWQpc2V0RXJyb3I6
KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKillcnJvcgpAQCAtMTQ2OCw3ICsxNDY4LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogQGltcGxlbWVudGF0aW9uIFRlc3RQcm90b2Nv
bERhdGFiYXNlUGFyYW1ldGVyQnVuZGxlCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbHVt
bk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJp
bmcgKilub3RlcyB0aW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAgdmFsdWVzOihQcm90b2NvbEpT
T05PYmplY3QgKil2YWx1ZXMgcGF5bG9hZDooUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZCBl
cnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKWVycm9yIGVycm9yTGlzdDooTlNBcnJh
eS8qPFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I+Ki8gKillcnJvckxpc3Q7CistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhDb2x1bW5OYW1lczooTlNBcnJheS8qPE5TU3RyaW5nPiovICopY29sdW1u
TmFtZXMgbm90ZXM6KE5TU3RyaW5nICopbm90ZXMgdGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1w
IHZhbHVlczooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopdmFsdWVzIHBheWxvYWQ6KFJXSVByb3Rv
Y29sSlNPTk9iamVjdCAqKXBheWxvYWQgZXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3Ig
KillcnJvciBlcnJvckxpc3Q6KE5TQXJyYXkvKjxUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yPiov
ICopZXJyb3JMaXN0OwogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxm
KQpAQCAtMTUyMywyNCArMTUyMywyNCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAg
IHJldHVybiBbc3VwZXIgZG91YmxlRm9yS2V5OkAidGltZXN0YW1wIl07CiB9CiAKLS0gKHZvaWQp
c2V0VmFsdWVzOihQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMKKy0gKHZvaWQpc2V0VmFsdWVz
OihSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMKIHsKICAgICBbc3VwZXIgc2V0T2JqZWN0
OnZhbHVlcyBmb3JLZXk6QCJ2YWx1ZXMiXTsKIH0KIAotLSAoUHJvdG9jb2xKU09OT2JqZWN0ICop
dmFsdWVzCistIChSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMKIHsKLSAgICByZXR1cm4g
KFByb3RvY29sSlNPTk9iamVjdCAqKVtzdXBlciBvYmplY3RGb3JLZXk6QCJ2YWx1ZXMiXTsKKyAg
ICByZXR1cm4gKFJXSVByb3RvY29sSlNPTk9iamVjdCAqKVtzdXBlciBvYmplY3RGb3JLZXk6QCJ2
YWx1ZXMiXTsKIH0KIAotLSAodm9pZClzZXRQYXlsb2FkOihQcm90b2NvbEpTT05PYmplY3QgKilw
YXlsb2FkCistICh2b2lkKXNldFBheWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXBheWxv
YWQKIHsKICAgICBbc3VwZXIgc2V0T2JqZWN0OnBheWxvYWQgZm9yS2V5OkAicGF5bG9hZCJdOwog
fQogCi0tIChQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkCistIChSV0lQcm90b2NvbEpTT05P
YmplY3QgKilwYXlsb2FkCiB7Ci0gICAgcmV0dXJuIChQcm90b2NvbEpTT05PYmplY3QgKilbc3Vw
ZXIgb2JqZWN0Rm9yS2V5OkAicGF5bG9hZCJdOworICAgIHJldHVybiAoUldJUHJvdG9jb2xKU09O
T2JqZWN0ICopW3N1cGVyIG9iamVjdEZvcktleTpAInBheWxvYWQiXTsKIH0KIAogLSAodm9pZClz
ZXRFcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKWVycm9yCkBAIC0xNjQ4LDcgKzE2
NDgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBAaW1wbGVtZW50YXRpb24gVGVz
dFByb3RvY29sVGVzdFBhcmFtZXRlckJ1bmRsZQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhD
b2x1bW5OYW1lczooTlNBcnJheS8qPE5TU3RyaW5nPiovICopY29sdW1uTmFtZXMgbm90ZXM6KE5T
U3RyaW5nICopbm90ZXMgdGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1wIHZhbHVlczooUHJvdG9j
b2xKU09OT2JqZWN0ICopdmFsdWVzIHBheWxvYWQ6KFByb3RvY29sSlNPTk9iamVjdCAqKXBheWxv
YWQgZXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKillcnJvcjsKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5O
YW1lcyBub3RlczooTlNTdHJpbmcgKilub3RlcyB0aW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAg
dmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMgcGF5bG9hZDooUldJUHJvdG9j
b2xKU09OT2JqZWN0ICopcGF5bG9hZCBlcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAq
KWVycm9yOwogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQpAQCAt
MTcwMCwyNCArMTcwMCwyNCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIHJldHVy
biBbc3VwZXIgZG91YmxlRm9yS2V5OkAidGltZXN0YW1wIl07CiB9CiAKLS0gKHZvaWQpc2V0VmFs
dWVzOihQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMKKy0gKHZvaWQpc2V0VmFsdWVzOihSV0lQ
cm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMKIHsKICAgICBbc3VwZXIgc2V0T2JqZWN0OnZhbHVl
cyBmb3JLZXk6QCJ2YWx1ZXMiXTsKIH0KIAotLSAoUHJvdG9jb2xKU09OT2JqZWN0ICopdmFsdWVz
CistIChSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMKIHsKLSAgICByZXR1cm4gKFByb3Rv
Y29sSlNPTk9iamVjdCAqKVtzdXBlciBvYmplY3RGb3JLZXk6QCJ2YWx1ZXMiXTsKKyAgICByZXR1
cm4gKFJXSVByb3RvY29sSlNPTk9iamVjdCAqKVtzdXBlciBvYmplY3RGb3JLZXk6QCJ2YWx1ZXMi
XTsKIH0KIAotLSAodm9pZClzZXRQYXlsb2FkOihQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2Fk
CistICh2b2lkKXNldFBheWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQKIHsK
ICAgICBbc3VwZXIgc2V0T2JqZWN0OnBheWxvYWQgZm9yS2V5OkAicGF5bG9hZCJdOwogfQogCi0t
IChQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkCistIChSV0lQcm90b2NvbEpTT05PYmplY3Qg
KilwYXlsb2FkCiB7Ci0gICAgcmV0dXJuIChQcm90b2NvbEpTT05PYmplY3QgKilbc3VwZXIgb2Jq
ZWN0Rm9yS2V5OkAicGF5bG9hZCJdOworICAgIHJldHVybiAoUldJUHJvdG9jb2xKU09OT2JqZWN0
ICopW3N1cGVyIG9iamVjdEZvcktleTpAInBheWxvYWQiXTsKIH0KIAogLSAodm9pZClzZXRFcnJv
cjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKWVycm9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1
aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNh
c3RzLmpzb24tcmVzdWx0CmluZGV4IGUzYTcyMDdlN2Q0NGVjM2NjMWUwOTQzZDE5OTg5OWNiZTBi
NWRlNmYuLjVhYjEwZGMzY2VmMmE3NTVjYjhlOTliMTQwN2JhMmY2MTFhMzRmOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVp
cmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CkBAIC0xMTM2LDcgKzExMzYsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aD4KIAotI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1Rlc3RQcm90b2NvbEpTT05PYmplY3QuaD4KKyNp
bXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3QuaD4KIAogCiBAY2xhc3Mg
VGVzdFByb3RvY29sVGVzdFR5cGVOZWVkaW5nQ2FzdDsKQEAgLTExNjAsNyArMTE2MCw3IEBAIHR5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzKSB7
CiAKIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCi1AaW50ZXJmYWNl
IFRlc3RQcm90b2NvbFRlc3RUeXBlTmVlZGluZ0Nhc3QgOiBQcm90b2NvbEpTT05PYmplY3QKK0Bp
bnRlcmZhY2UgVGVzdFByb3RvY29sVGVzdFR5cGVOZWVkaW5nQ2FzdCA6IFJXSVByb3RvY29sSlNP
Tk9iamVjdAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU3RyaW5nOihOU1N0cmluZyAqKXN0cmlu
ZyBudW1iZXI6KGludCludW1iZXIgYW5pbWFsczooVGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1h
bHMpYW5pbWFscyBpZGVudGlmaWVyOihpbnQpaWRlbnRpZmllciB0cmVlOihUZXN0UHJvdG9jb2xU
ZXN0UmVjdXJzaXZlT2JqZWN0MSAqKXRyZWU7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSkgTlNTdHJpbmcgKnN0cmluZzsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBhc3NpZ24pIGludCBudW1iZXI7CkBAIC0xMTcwLDEyICsxMTcwLDEyIEBA
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGVuZAogCiBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKLUBpbnRlcmZhY2UgVGVzdFByb3RvY29s
VGVzdFJlY3Vyc2l2ZU9iamVjdDEgOiBQcm90b2NvbEpTT05PYmplY3QKK0BpbnRlcmZhY2UgVGVz
dFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVjdDEgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKIC8q
IG9wdGlvbmFsICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFRlc3RQcm90b2NvbFRl
c3RSZWN1cnNpdmVPYmplY3QyICpvYmo7CiBAZW5kCiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkgKCJkZWZhdWx0IikpKQotQGludGVyZmFjZSBUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2Jq
ZWN0MiA6IFByb3RvY29sSlNPTk9iamVjdAorQGludGVyZmFjZSBUZXN0UHJvdG9jb2xUZXN0UmVj
dXJzaXZlT2JqZWN0MiA6IFJXSVByb3RvY29sSlNPTk9iamVjdAogLyogb3B0aW9uYWwgKi8gQHBy
b3BlcnR5IChub25hdG9taWMsIHJldGFpbikgVGVzdFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVj
dDEgKm9iajsKIEBlbmQKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272067</attachid>
            <date>2016-02-23 17:10:50 -0800</date>
            <delta_ts>2016-02-23 17:53:17 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-154615-20160223171032.patch</filename>
            <type>text/plain</type>
            <size>67424</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2OTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NzEyNmRkOTc2MGVkNmZlZTZjNmJhYjI5ZWUwNzYzY2Y1YmFmOWRkLi4yYTllYWJkZWU5YjdkY2Jj
OTBlZjJiNWIwYzE1MjkwZGM5MDQyZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw3NSBAQAogMjAxNi0wMi0yMyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiB0ZWFjaCB0aGUgT2JqZWN0aXZlLUMgcHJvdG9jb2wgZ2Vu
ZXJhdG9ycyBhYm91dCAtLWZyb250ZW5kIGFuZCAtLWJhY2tlbmQgZGlyZWN0aXZlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0NjE1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yNDgwNDMzMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTb21lIG9mIHRoZSBnZW5lcmF0ZWQgT2JqZWN0aXZlLUMgYmlu
ZGluZ3MgYXJlIG9ubHkgcmVsZXZhbnQgdG8gY29kZSBhY3RpbmcgYXMgdGhlCisgICAgICAgIHBy
b3RvY29sIGJhY2tlbmQuIEFkZCBhIHBlci1nZW5lcmF0b3Igc2V0dGluZyBtZWNoYW5pc20gYW5k
IHByb3BhZ2F0ZSAtLWZyb250ZW5kIGFuZAorICAgICAgICAtLWJhY2tlbmQgdG8gYWxsIGdlbmVy
YXRvcnMuIFVzZSB0aGUgc2V0dGluZyBpbiBhIGZldyBnZW5lcmF0b3JzIHRvIG9taXQgY29kZSB0
aGF0J3MKKyAgICAgICAgbm90IG5lZWRlZC4KKworICAgICAgICBBbHNvIGZpeCBhIGZldyBwbGFj
ZXMgd2hlcmUgdGhlIGNvZGUgZW1pdHMgdGhlIHdyb25nIE9iamVjdGl2ZS1DIGNsYXNzIHByZWZp
eC4KKyAgICAgICAgVGhlcmUgaXMgc29tZSBjb21tb24gbm9uLWdlbmVyYXRlZCBjb2RlIHRoYXQg
bXVzdCBhbHdheXMgaGF2ZSB0aGUgUldJUHJvdG9jb2wgcHJlZml4LgorCisgICAgICAgIExhc3Rs
eSwgY2hhbmdlIGluY2x1ZGVzIHRvIHVzZSBSV0lQcm90b2NvbEpTT05PYmplY3RQcml2YXRlLmgg
aW5zdGVhZCBvZiAqSW50ZXJuYWwuaC4gVGhlCisgICAgICAgIG1hY3JvcyBkZWZpbmVkIGluIHRo
ZSBpbnRlcm5hbCBoZWFkZXIgbm93IG5lZWQgdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBmcmFt
ZXdvcmsuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29i
amNfY29udmVyc2lvbl9oZWxwZXJzLnB5OgorICAgICAgICBVc2UgT0JKQ19TVEFUSUNfUFJFRklY
IGFsb25nIHdpdGggdGhlIHVucHJlZml4ZWQgZmlsZSBuYW1lLgorCisgICAgICAgICogaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2hlYWRlci5weToKKyAgICAgICAgKE9i
akNIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgRm9yIG5vdywgb21p
dCBnZW5lcmF0aW5nIGNvbW1hbmQgcHJvdG9jb2wgYW5kIGV2ZW50IGRpc3BhdGNoZXJzIHdoZW4g
Z2VuZXJhdGluZyBmb3IgLS1mcm9udGVuZC4KKworICAgICAgICAoT2JqQ0hlYWRlckdlbmVyYXRv
ci5fZ2VuZXJhdGVfdHlwZV9pbnRlcmZhY2UpOgorICAgICAgICBVc2UgT0JKQ19TVEFUSUNfUFJF
RklYIGFsb25nIHdpdGggdGhlIHVucHJlZml4ZWQgZmlsZSBuYW1lLgorCisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2ludGVybmFsX2hlYWRlci5weToK
KyAgICAgICAgVXNlIFJXSVByb3RvY29sSlNPTk9iamVjdFByaXZhdGUuaCBpbnN0ZWFkLgorCisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29s
X3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5OgorICAgICAgICAoT2JqQ1Byb3RvY29sVHlwZXNJbXBs
ZW1lbnRhdGlvbkdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICBJbmNsdWRlIHRo
ZSBJbnRlcm5hbCBoZWFkZXIgaWYgaXQncyBiZWluZyBnZW5lcmF0ZWQgKG9ubHkgZm9yIC0tYmFj
a2VuZCkuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvci5w
eToKKyAgICAgICAgKEdlbmVyYXRvci5fX2luaXRfXyk6CisgICAgICAgIChHZW5lcmF0b3Iuc2V0
X2dlbmVyYXRvcl9zZXR0aW5nKToKKyAgICAgICAgKEdlbmVyYXRvcik6CisgICAgICAgIChHZW5l
cmF0b3IuZ2V0X2dlbmVyYXRvcl9zZXR0aW5nKToKKyAgICAgICAgQ3JpYiBhIHNpbXBsZSBzZXR0
aW5nIHN5c3RlbSBmcm9tIHRoZSBGcmFtZXdvcmsgY2xhc3MuIE1ha2UgdGhlIG5hbWVzIG1vcmUg
b2Jub3hpb3VzLgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dl
bmVyYXRvci5weToKKyAgICAgICAgKE9iakNHZW5lcmF0b3IuYW5kKToKKyAgICAgICAgKE9iakNH
ZW5lcmF0b3IuYW5kLm9iamNfcHJlZml4KToKKyAgICAgICAgKE9iakNHZW5lcmF0b3IpOgorICAg
ICAgICAoT2JqQ0dlbmVyYXRvci5vYmpjX3R5cGVfZm9yX3Jhd19uYW1lKToKKyAgICAgICAgKE9i
akNHZW5lcmF0b3Iub2JqY19jbGFzc19mb3JfcmF3X25hbWUpOgorICAgICAgICBXaGl0ZWxpc3Qg
dGhlICdBdXRvbWF0aW9uJyBkb21haW4gZm9yIHRoZSBPYmpDIGdlbmVyYXRvcnMuIFJldmlzZSB1
c2Ugb2YgT0JKQ19TVEFUSUNfUFJFRklYLgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMv
Z2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5OgorICAgICAgICAoZ2VuZXJh
dGVfZnJvbV9zcGVjaWZpY2F0aW9uKToKKyAgICAgICAgQ2hhbmdlIHRoZSBnZW5lcmF0b3JzIHRv
IHVzZSBmb3IgdGhlIGZyb250ZW5kLiBQcm9wYWdhdGUgLS1mcm9udGVuZCBhbmQgLS1iYWNrZW5k
LgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMt
d2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1w
YXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6
CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMu
anNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
ZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBp
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVh
dHVyZS1ndWFyZHMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9u
YWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90
eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNv
bi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlw
ZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpz
b24tcmVzdWx0OgorICAgICAgICBSZWJhc2VsaW5lIHRlc3RzLiBUaGV5IG5vdyBjb3JyZWN0bHkg
aW5jbHVkZSBSV0lQcm90b2NvbEpTT05PYmplY3QuaCBhbmQgdGhlIGxpa2UuCisKKzIwMTYtMDIt
MjMgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogdGhlIHByb3RvY29sIGdlbmVyYXRvcidzIE9iamVjdGl2ZS1DIG5hbWUgcHJlZml4IHNob3Vs
ZCBiZSBjb25maWd1cmFibGUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NDU5NgogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3OTQ5NjI+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9vYmpjX2NvbnZlcnNpb25faGVscGVycy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfY29udmVyc2lvbl9oZWxw
ZXJzLnB5CmluZGV4IGE0YzlmNzNlOGQyMTY2MWFlODA5N2Y2MzYwNzJiZjJmMDU2NWE1YWEuLjc5
ZjdiMWQ0ODRkOWQzNGNmZmIzODhiNWY4ZGRkOWM3MDJlNmViNWQgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNf
Y29udmVyc2lvbl9oZWxwZXJzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfY29udmVyc2lvbl9oZWxwZXJzLnB5CkBA
IC01NSw3ICs1NSw3IEBAIGNsYXNzIE9iakNDb252ZXJzaW9uSGVscGVyc0dlbmVyYXRvcihPYmpD
R2VuZXJhdG9yKToKIAogICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CiAgICAgICAgIGhl
YWRlcnMgPSBbCi0gICAgICAgICAgICAnIiVzQXJyYXlDb252ZXJzaW9uSGVscGVycy5oIicgJSBz
ZWxmLm9iamNfcHJlZml4KCksCisgICAgICAgICAgICAnIiVzQXJyYXlDb252ZXJzaW9uSGVscGVy
cy5oIicgJSBPYmpDR2VuZXJhdG9yLk9CSkNfU1RBVElDX1BSRUZJWAogICAgICAgICBdCiAKICAg
ICAgICAgaGVhZGVyX2FyZ3MgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2hlYWRlci5weSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNf
aGVhZGVyLnB5CmluZGV4IDI5OGY1YWJhYjY4NDA2NDQ1M2U5MjgzZDM2ZWFlMjdlNjM2ODhmOWIu
LjJjNTQwZGM3N2Q3NjQxMjU4ZDkyYzIyMDI4Yjk3ZjFhN2QxODMxYjAgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29i
amNfaGVhZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfaGVhZGVyLnB5CkBAIC01Miw3ICs1Miw3IEBAIGNsYXNz
IE9iakNIZWFkZXJHZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAKICAgICBkZWYgZ2VuZXJhdGVf
b3V0cHV0KHNlbGYpOgogICAgICAgICBoZWFkZXJzID0gc2V0KFsKLSAgICAgICAgICAgICc8V2Vi
SW5zcGVjdG9yLyVzSlNPTk9iamVjdC5oPicgJSBzZWxmLm9iamNfcHJlZml4KCksCisgICAgICAg
ICAgICAnPFdlYkluc3BlY3Rvci8lc0pTT05PYmplY3QuaD4nICUgT2JqQ0dlbmVyYXRvci5PQkpD
X1NUQVRJQ19QUkVGSVgsCiAgICAgICAgIF0pCiAKICAgICAgICAgaGVhZGVyX2FyZ3MgPSB7CkBA
IC03NSw4ICs3NSwxMSBAQCBjbGFzcyBPYmpDSGVhZGVyR2VuZXJhdG9yKE9iakNHZW5lcmF0b3Ip
OgogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoJ1xuJy5qb2luKGZpbHRlcihOb25lLCBtYXAoc2Vs
Zi5fZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMsIHR5cGVfZG9tYWlucykpKSkKICAgICAg
ICAgc2VjdGlvbnMuYXBwZW5kKCdcbicuam9pbihmaWx0ZXIoTm9uZSwgbWFwKHNlbGYuX2dlbmVy
YXRlX2VudW1zLCB0eXBlX2RvbWFpbnMpKSkpCiAgICAgICAgIHNlY3Rpb25zLmFwcGVuZCgnXG4n
LmpvaW4oZmlsdGVyKE5vbmUsIG1hcChzZWxmLl9nZW5lcmF0ZV90eXBlcywgdHlwZV9kb21haW5z
KSkpKQotICAgICAgICBzZWN0aW9ucy5hcHBlbmQoJ1xuXG4nLmpvaW4oZmlsdGVyKE5vbmUsIG1h
cChzZWxmLl9nZW5lcmF0ZV9jb21tYW5kX3Byb3RvY29scywgY29tbWFuZF9kb21haW5zKSkpKQot
ICAgICAgICBzZWN0aW9ucy5hcHBlbmQoJ1xuXG4nLmpvaW4oZmlsdGVyKE5vbmUsIG1hcChzZWxm
Ll9nZW5lcmF0ZV9ldmVudF9pbnRlcmZhY2VzLCBldmVudF9kb21haW5zKSkpKQorCisgICAgICAg
IGlmIHNlbGYuZ2V0X2dlbmVyYXRvcl9zZXR0aW5nKCdnZW5lcmF0ZV9iYWNrZW5kJywgRmFsc2Up
OgorICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKCdcblxuJy5qb2luKGZpbHRlcihOb25lLCBt
YXAoc2VsZi5fZ2VuZXJhdGVfY29tbWFuZF9wcm90b2NvbHMsIGNvbW1hbmRfZG9tYWlucykpKSkK
KyAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZCgnXG5cbicuam9pbihmaWx0ZXIoTm9uZSwgbWFw
KHNlbGYuX2dlbmVyYXRlX2V2ZW50X2ludGVyZmFjZXMsIGV2ZW50X2RvbWFpbnMpKSkpCisKICAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKE9iakNUZW1wbGF0ZXMuSGVhZGVyUG9zdGx1
ZGUpLnN1YnN0aXR1dGUoTm9uZSkpCiAgICAgICAgIHJldHVybiAnXG5cbicuam9pbihzZWN0aW9u
cykKIApAQCAtMTU1LDcgKzE1OCw3IEBAIGNsYXNzIE9iakNIZWFkZXJHZW5lcmF0b3IoT2JqQ0dl
bmVyYXRvcik6CiAgICAgICAgIGxpbmVzID0gW10KICAgICAgICAgb2JqY19uYW1lID0gc2VsZi5v
YmpjX25hbWVfZm9yX3R5cGUoZGVjbGFyYXRpb24udHlwZSkKICAgICAgICAgbGluZXMuYXBwZW5k
KCdfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSknKQotICAgICAgICBsaW5l
cy5hcHBlbmQoJ0BpbnRlcmZhY2UgJXMgOiAlcycgJSAob2JqY19uYW1lLCBPYmpDR2VuZXJhdG9y
Lk9CSkNfSlNPTl9PQkpFQ1RfQkFTRSkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnQGludGVyZmFj
ZSAlcyA6ICVzSlNPTk9iamVjdCcgJSAob2JqY19uYW1lLCBPYmpDR2VuZXJhdG9yLk9CSkNfU1RB
VElDX1BSRUZJWCkpCiAgICAgICAgIHJlcXVpcmVkX21lbWJlcnMgPSBmaWx0ZXIobGFtYmRhIG1l
bWJlcjogbm90IG1lbWJlci5pc19vcHRpb25hbCwgZGVjbGFyYXRpb24udHlwZV9tZW1iZXJzKQog
ICAgICAgICBvcHRpb25hbF9tZW1iZXJzID0gZmlsdGVyKGxhbWJkYSBtZW1iZXI6IG1lbWJlci5p
c19vcHRpb25hbCwgZGVjbGFyYXRpb24udHlwZV9tZW1iZXJzKQogICAgICAgICBpZiByZXF1aXJl
ZF9tZW1iZXJzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19pbnRlcm5hbF9oZWFkZXIucHkgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2lu
dGVybmFsX2hlYWRlci5weQppbmRleCBiNDU0OTYzNWE4MjY3NzVhZjdjOTJiMjg2YWFlNDI0MTU0
MzQwZTgxLi5mYmQ4ODIwYmZjMmI4YzhlNzkzMzQxMGNmZGJhYjA1MmU4NzdmZDhlIDEwMDc1NQot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9vYmpjX2ludGVybmFsX2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2ludGVybmFsX2hlYWRlci5w
eQpAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBPYmpDSW50ZXJuYWxIZWFkZXJHZW5lcmF0b3IoT2Jq
Q0dlbmVyYXRvcik6CiAgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKICAgICAgICAgaGVh
ZGVycyA9IHNldChbCiAgICAgICAgICAgICAnIiVzLmgiJyAlIHNlbGYub2JqY19wcmVmaXgoKSwK
LSAgICAgICAgICAgICciJXNKU09OT2JqZWN0SW50ZXJuYWwuaCInICUgc2VsZi5vYmpjX3ByZWZp
eCgpLAorICAgICAgICAgICAgJyIlc0pTT05PYmplY3RQcml2YXRlLmgiJyAlIHNlbGYub2JqY19w
cmVmaXgoKSwKICAgICAgICAgICAgICc8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+
JywKICAgICAgICAgICAgICc8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250
cm9sbGVyLmg+JywKICAgICAgICAgXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNf
aW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5
CmluZGV4IDg2NjcyMGQ3NTU2MjVkY2FiMDNlYzNkM2YxNjBiOTVjMTljMzY1YTEuLjI0ZWY2ODc2
NjRkZWZiY2RmOTFmNmI2YTUzZTA1YmE2ZThkOGI4NjQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9j
b2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBs
ZW1lbnRhdGlvbi5weQpAQCAtNjAsOCArNjAsMTMgQEAgY2xhc3MgT2JqQ1Byb3RvY29sVHlwZXNJ
bXBsZW1lbnRhdGlvbkdlbmVyYXRvcihPYmpDR2VuZXJhdG9yKToKICAgICAgICAgICAgICc8d3Rm
L0Fzc2VydGlvbnMuaD4nLAogICAgICAgICBdCiAKKyAgICAgICAgIyBUaGUgRm9vUHJvdG9jb2xJ
bnRlcm5hbC5oIGhlYWRlciBpcyBvbmx5IG5lZWRlZCB0byBkZWNsYXJlIHRoZSBiYWNrZW5kLXNp
ZGUgZXZlbnQgZGlzcGF0Y2hlciBiaW5kaW5ncy4KKyAgICAgICAgcHJpbWFyeUluY2x1ZGVOYW1l
ID0gc2VsZi5vYmpjX3ByZWZpeCgpCisgICAgICAgIGlmIHNlbGYuZ2V0X2dlbmVyYXRvcl9zZXR0
aW5nKCdnZW5lcmF0ZV9iYWNrZW5kJywgRmFsc2UpOgorICAgICAgICAgICAgcHJpbWFyeUluY2x1
ZGVOYW1lICs9ICdJbnRlcm5hbCcKKwogICAgICAgICBoZWFkZXJfYXJncyA9IHsKLSAgICAgICAg
ICAgICdwcmltYXJ5SW5jbHVkZSc6ICciJXNJbnRlcm5hbC5oIicgJSBzZWxmLm9iamNfcHJlZml4
KCksCisgICAgICAgICAgICAncHJpbWFyeUluY2x1ZGUnOiAnIiVzLmgiJyAlIHByaW1hcnlJbmNs
dWRlTmFtZSwKICAgICAgICAgICAgICdzZWNvbmRhcnlJbmNsdWRlcyc6ICdcbicuam9pbihbJyNp
bXBvcnQgJXMnICUgaGVhZGVyIGZvciBoZWFkZXIgaW4gc2Vjb25kYXJ5X2hlYWRlcnNdKSwKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHkKaW5kZXggNGM4ZjE5OThlMTViZjVjNGJi
NzliYTliNmZhZjU2MjhlNDQ1MWY1Yy4uM2E5NzU4YTliYTRjNWY4ZjQ3YWQ2NDUyMTExZDA1MWUy
MjNlYjRlNSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdG9yLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvci5weQpAQCAtNzgsMTAgKzc4LDE4IEBAIGNs
YXNzIEdlbmVyYXRvcjoKICAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwsIGlucHV0X2ZpbGVw
YXRoKToKICAgICAgICAgc2VsZi5fbW9kZWwgPSBtb2RlbAogICAgICAgICBzZWxmLl9pbnB1dF9m
aWxlcGF0aCA9IGlucHV0X2ZpbGVwYXRoCisgICAgICAgIHNlbGYuX3NldHRpbmdzID0ge30KIAog
ICAgIGRlZiBtb2RlbChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX21vZGVsCiAKKyAgICBk
ZWYgc2V0X2dlbmVyYXRvcl9zZXR0aW5nKHNlbGYsIGtleSwgdmFsdWUpOgorICAgICAgICBzZWxm
Ll9zZXR0aW5nc1trZXldID0gdmFsdWUKKworICAgICMgVGhlIGdvb2Z5IG5hbWUgaXMgdG8gZGlz
YW1iaWd1YXRlIGdlbmVyYXRvciBzZXR0aW5ncyBmcm9tIGZyYW1ld29yayBzZXR0aW5ncy4KKyAg
ICBkZWYgZ2V0X2dlbmVyYXRvcl9zZXR0aW5nKHNlbGYsIGtleSwgZGVmYXVsdD1Ob25lKToKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX3NldHRpbmdzLmdldChrZXksIGRlZmF1bHQpCisKICAgICBkZWYg
Z2VuZXJhdGVfbGljZW5zZShzZWxmKToKICAgICAgICAgcmV0dXJuIFRlbXBsYXRlKFRlbXBsYXRl
cy5Db3B5cmlnaHRCbG9jaykuc3Vic3RpdHV0ZShOb25lLCBpbnB1dEZpbGVuYW1lPW9zLnBhdGgu
YmFzZW5hbWUoc2VsZi5faW5wdXRfZmlsZXBhdGgpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2Vu
ZXJhdG9yLnB5CmluZGV4IGEzYWNmMjBkM2YzZTE1YmJhNDk0ZDM5ZGUzMWQyZjE1OTQ3YzQyNDUu
LjA1Y2NjMjJkMGVkZGRhNjgxNzJiODhmODVjN2Y1ZjdhM2RhYWY0ZWYgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJh
dG9yLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL29iamNfZ2VuZXJhdG9yLnB5CkBAIC04NiwxNSArODYsMTUgQEAgY2xhc3MgT2JqQ0dlbmVy
YXRvcihHZW5lcmF0b3IpOgogICAgICMgRG8gbm90IHVzZSBhIGR5bmFtaWMgcHJlZml4IGZvciBS
V0lQcm90b2NvbEpTT05PYmplY3Qgc2luY2UgaXQncyB1c2VkIGFzIGEgY29tbW9uCiAgICAgIyBi
YXNlIGNsYXNzIGFuZCBuZWVkcyBhIGNvbnNpc3RlbnQgT2JqZWN0aXZlLUMgcHJlZml4IHRvIGJl
IGluIGEgcmV1c2FibGUgZnJhbWV3b3JrLgogICAgIE9CSkNfSEVMUEVSX1BSRUZJWCA9ICdSV0kn
Ci0gICAgT0JKQ19DT01NT05fUFJFRklYID0gJ1Byb3RvY29sJwotICAgIE9CSkNfSlNPTl9PQkpF
Q1RfQkFTRSA9ICclcyVzSlNPTk9iamVjdCcgJSAoT0JKQ19IRUxQRVJfUFJFRklYLCBPQkpDX0NP
TU1PTl9QUkVGSVgpCisgICAgT0JKQ19TSEFSRURfUFJFRklYID0gJ1Byb3RvY29sJworICAgIE9C
SkNfU1RBVElDX1BSRUZJWCA9ICclcyVzJyAlIChPQkpDX0hFTFBFUl9QUkVGSVgsIE9CSkNfU0hB
UkVEX1BSRUZJWCkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5wdXRfZmlsZXBh
dGgpOgogICAgICAgICBHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwsIGlucHV0X2ZpbGVw
YXRoKQogCiAgICAgZGVmIG9iamNfcHJlZml4KHNlbGYpOgogICAgICAgICBmcmFtZXdvcmtfcHJl
Zml4ID0gc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdvYmpjX3ByZWZpeCcsICcnKQot
ICAgICAgICByZXR1cm4gJyVzJXMnICUgKGZyYW1ld29ya19wcmVmaXgsIE9iakNHZW5lcmF0b3Iu
T0JKQ19DT01NT05fUFJFRklYKQorICAgICAgICByZXR1cm4gJyVzJXMnICUgKGZyYW1ld29ya19w
cmVmaXgsIE9iakNHZW5lcmF0b3IuT0JKQ19TSEFSRURfUFJFRklYKQogCiAgICAgIyBBZGp1c3Qg
aWRlbnRpZmllciBuYW1lcyB0aGF0IGNvbGxpZGUgd2l0aCBPYmpDIGtleXdvcmRzLgogCkBAIC0x
MDgsNyArMTA4LDcgQEAgY2xhc3MgT2JqQ0dlbmVyYXRvcihHZW5lcmF0b3IpOgogCiAgICAgIyBH
ZW5lcmF0ZSBPYmpDIHR5cGVzLCBjb21tYW5kIGhhbmRsZXJzLCBhbmQgZXZlbnQgZGlzcGF0Y2hl
cnMgZm9yIGEgc3Vic2V0IG9mIGRvbWFpbnMuCiAKLSAgICBET01BSU5TX1RPX0dFTkVSQVRFID0g
WydDU1MnLCAnRE9NJywgJ0RPTVN0b3JhZ2UnLCAnTmV0d29yaycsICdQYWdlJywgJ0dlbmVyaWNU
eXBlcyddCisgICAgRE9NQUlOU19UT19HRU5FUkFURSA9IFsnQ1NTJywgJ0RPTScsICdET01TdG9y
YWdlJywgJ05ldHdvcmsnLCAnUGFnZScsICdBdXRvbWF0aW9uJywgJ0dlbmVyaWNUeXBlcyddCiAK
ICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIHNob3VsZF9nZW5lcmF0ZV9kb21haW5fdHlwZXNf
ZmlsdGVyKG1vZGVsKToKQEAgLTIwNiw3ICsyMDYsNyBAQCBjbGFzcyBPYmpDR2VuZXJhdG9yKEdl
bmVyYXRvcik6CiAgICAgICAgIGlmIHJhd19uYW1lIGlzICdib29sZWFuJzoKICAgICAgICAgICAg
IHJldHVybiAnQk9PTCcKICAgICAgICAgaWYgcmF3X25hbWUgaW4gWydhbnknLCAnb2JqZWN0J106
Ci0gICAgICAgICAgICByZXR1cm4gJyVzIConICUgT2JqQ0dlbmVyYXRvci5PQkpDX0pTT05fT0JK
RUNUX0JBU0UKKyAgICAgICAgICAgIHJldHVybiAnJXNKU09OT2JqZWN0IConICUgT2JqQ0dlbmVy
YXRvci5PQkpDX1NUQVRJQ19QUkVGSVgKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIEBzdGF0
aWNtZXRob2QKQEAgLTIxOCw3ICsyMTgsNyBAQCBjbGFzcyBPYmpDR2VuZXJhdG9yKEdlbmVyYXRv
cik6CiAgICAgICAgIGlmIHJhd19uYW1lIGluIFsnaW50ZWdlcicsICdudW1iZXInLCAnYm9vbGVh
biddOgogICAgICAgICAgICAgcmV0dXJuICdOU051bWJlcicKICAgICAgICAgaWYgcmF3X25hbWUg
aW4gWydhbnknLCAnb2JqZWN0J106Ci0gICAgICAgICAgICByZXR1cm4gT2JqQ0dlbmVyYXRvci5P
QkpDX0pTT05fT0JKRUNUX0JBU0UKKyAgICAgICAgICAgIHJldHVybiAnJXNKU09OT2JqZWN0JyAl
IE9iakNHZW5lcmF0b3IuT0JKQ19TVEFUSUNfUFJFRklYCiAgICAgICAgIHJldHVybiBOb25lCiAK
ICAgICAjIEZJWE1FOiBDYW4gdGhlc2UgcHJvdG9jb2xfdHlwZSBmdW5jdGlvbnMgYmUgcmVtb3Zl
ZCBpbiBmYXZvciBvZiBDKysgZ2VuZXJhdG9ycyBmdW5jdGlvbnM/CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXBy
b3RvY29sLWJpbmRpbmdzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQppbmRleCBhNTI4YTlk
YjI1YzZjZTA4YTVlNDAxY2I4Mzk0YzhmZmI5Nzg4NWExLi5lOGQ0MjRkMTJkYjIwMWMwMDI4ZTQ1
MmQxMWMyNmZkOTkxNWY5NDdhIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNw
ZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKQEAgLTE3MCw3ICsxNzAsNyBAQCBkZWYgZ2VuZXJh
dGVfZnJvbV9zcGVjaWZpY2F0aW9uKHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aD1Ob25l
LAogICAgIGVsaWYgcHJvdG9jb2wuZnJhbWV3b3JrIGlzIEZyYW1ld29ya3MuV2ViS2l0IGFuZCBn
ZW5lcmF0ZV9mcm9udGVuZDoKICAgICAgICAgIyBGSVhNRSA8cmRhcjovL3Byb2JsZW0vMjM0NjY5
MjU+OiBUaGlzIGxpc3Qgb2YgZ2VuZXJhdG9ycyBmb3IgdGhlIGZyb250ZW5kIGlzIGEgcGxhY2Vo
b2xkZXIuCiAgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKE9iakNDb252ZXJzaW9uSGVscGVyc0dl
bmVyYXRvcihwcm90b2NvbCwgcHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKLSAgICAg
ICAgZ2VuZXJhdG9ycy5hcHBlbmQoT2JqQ0Zyb250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9u
R2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQorICAg
ICAgICBnZW5lcmF0b3JzLmFwcGVuZChPYmpDSGVhZGVyR2VuZXJhdG9yKHByb3RvY29sLCBwcmlt
YXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQogICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChP
YmpDUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5
X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQogCiAgICAgZWxpZiBwcm90b2NvbC5mcmFtZXdvcmsg
aXMgRnJhbWV3b3Jrcy5XZWJJbnNwZWN0b3I6CkBAIC0xODcsNiArMTg3LDEzIEBAIGRlZiBnZW5l
cmF0ZV9mcm9tX3NwZWNpZmljYXRpb24ocHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoPU5v
bmUsCiAgICAgc2luZ2xlX291dHB1dF9maWxlX2NvbnRlbnRzID0gW10KIAogICAgIGZvciBnZW5l
cmF0b3IgaW4gZ2VuZXJhdG9yczoKKyAgICAgICAgIyBPbmx5IHNvbWUgZ2VuZXJhdG9ycyBjYXJl
IHdoZXRoZXIgZnJvbnRlbmQgb3IgYmFja2VuZCB3YXMgc3BlY2lmaWVkLCBidXQgaXQgaXMKKyAg
ICAgICAgIyBzZXQgb24gYWxsIG9mIHRoZW0gdG8gYXZvaWQgYWRkaW5nIG1vcmUgY29uc3RydWN0
b3IgYXJndW1lbnRzIG9yIHRoaW5raW5nIHRvbyBoYXJkLgorICAgICAgICBpZiBnZW5lcmF0ZV9i
YWNrZW5kOgorICAgICAgICAgICAgZ2VuZXJhdG9yLnNldF9nZW5lcmF0b3Jfc2V0dGluZygnZ2Vu
ZXJhdGVfYmFja2VuZCcsIFRydWUpCisgICAgICAgIGlmIGdlbmVyYXRlX2Zyb250ZW5kOgorICAg
ICAgICAgICAgZ2VuZXJhdG9yLnNldF9nZW5lcmF0b3Jfc2V0dGluZygnZ2VuZXJhdGVfZnJvbnRl
bmQnLCBUcnVlKQorCiAgICAgICAgIG91dHB1dCA9IGdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQo
KQogICAgICAgICBpZiBjb25jYXRlbmF0ZV9vdXRwdXQ6CiAgICAgICAgICAgICBzaW5nbGVfb3V0
cHV0X2ZpbGVfY29udGVudHMuYXBwZW5kKCcjIyMgQmVnaW4gRmlsZTogJXMnICUgZ2VuZXJhdG9y
Lm91dHB1dF9maWxlbmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmli
dXRlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0
CmluZGV4IDA3YTFjNjkxMTNhODVjYjdhMTM2NjdiMDc5YmE2MGZkYmE5MTQ3Y2EuLmM1NGU3NjZh
ZjUyMjY3ZDVkZmZhODY5YWQ4ZTc4YmMwMzU2NzZlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRo
LWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRy
aWJ1dGUuanNvbi1yZXN1bHQKQEAgLTEwMzEsNyArMTAzMSw3IEBAIHZvaWQgT2JqQ0luc3BlY3Rv
ckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5W
YWx1ZXMoCiAgICAgICAgIGJhY2tlbmREaXNwYXRjaGVyKCktPnNlbmRQZW5kaW5nRXJyb3JzKCk7
CiAgICAgfTsKIAotICAgIGlkIHN1Y2Nlc3NDYWxsYmFjayA9IF4oTlNBcnJheS8qPE5TU3RyaW5n
PiovICoqY29sdW1uTmFtZXMsIE5TU3RyaW5nICoqbm90ZXMsIGRvdWJsZSAqdGltZXN0YW1wLCBQ
cm90b2NvbEpTT05PYmplY3QgKip2YWx1ZXMsIFByb3RvY29sSlNPTk9iamVjdCAqKnBheWxvYWQs
IGludCAqZGF0YWJhc2VJZCwgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKnNxbEVycm9yLCBU
ZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgKnNjcmVlbkNvbG9yLCBOU0FycmF5Lyo8
TlNTdHJpbmc+Ki8gKiphbHRlcm5hdGVDb2xvcnMsIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0
ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3IgKnByaW50Q29sb3IpIHsKKyAg
ICBpZCBzdWNjZXNzQ2FsbGJhY2sgPSBeKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmNvbHVtbk5h
bWVzLCBOU1N0cmluZyAqKm5vdGVzLCBkb3VibGUgKnRpbWVzdGFtcCwgUldJUHJvdG9jb2xKU09O
T2JqZWN0ICoqdmFsdWVzLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKipwYXlsb2FkLCBpbnQgKmRh
dGFiYXNlSWQsIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKipzcWxFcnJvciwgVGVzdFByb3Rv
Y29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzICpzY3JlZW5Db2xvciwgTlNBcnJheS8qPE5TU3RyaW5n
PiovICoqYWx0ZXJuYXRlQ29sb3JzLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5j
T3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yICpwcmludENvbG9yKSB7CiAgICAgICAgIFJl
ZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdE9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX09QVElPTkFMX1BBUkFNRVRFUihj
b2x1bW5OYW1lcywgQCJjb2x1bW5OYW1lcyIpOwogICAgICAgICBUSFJPV19FWENFUFRJT05fRk9S
X0JBRF9PUFRJT05BTF9QQVJBTUVURVIobm90ZXMsIEAibm90ZXMiKTsKQEAgLTEwNzUsNyArMTA3
NSw3IEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1
dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzCiAgICAgICAgIGJhY2tlbmREaXNwYXRjaGVy
KCktPnNlbmRQZW5kaW5nRXJyb3JzKCk7CiAgICAgfTsKIAotICAgIGlkIHN1Y2Nlc3NDYWxsYmFj
ayA9IF4oTlNBcnJheS8qPE5TU3RyaW5nPiovICoqY29sdW1uTmFtZXMsIE5TU3RyaW5nICoqbm90
ZXMsIGRvdWJsZSAqdGltZXN0YW1wLCBQcm90b2NvbEpTT05PYmplY3QgKip2YWx1ZXMsIFByb3Rv
Y29sSlNPTk9iamVjdCAqKnBheWxvYWQsIGludCAqZGF0YWJhc2VJZCwgVGVzdFByb3RvY29sRGF0
YWJhc2VFcnJvciAqKnNxbEVycm9yLCBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMg
KnNjcmVlbkNvbG9yLCBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiphbHRlcm5hdGVDb2xvcnMsIFRl
c3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmlu
dENvbG9yICpwcmludENvbG9yKSB7CisgICAgaWQgc3VjY2Vzc0NhbGxiYWNrID0gXihOU0FycmF5
Lyo8TlNTdHJpbmc+Ki8gKipjb2x1bW5OYW1lcywgTlNTdHJpbmcgKipub3RlcywgZG91YmxlICp0
aW1lc3RhbXAsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqKnZhbHVlcywgUldJUHJvdG9jb2xKU09O
T2JqZWN0ICoqcGF5bG9hZCwgaW50ICpkYXRhYmFzZUlkLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUVy
cm9yICoqc3FsRXJyb3IsIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyAqc2NyZWVu
Q29sb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmFsdGVybmF0ZUNvbG9ycywgVGVzdFByb3Rv
Y29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3Ig
KnByaW50Q29sb3IpIHsKICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0T2JqZWN0
ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZP
Ul9CQURfT1BUSU9OQUxfUEFSQU1FVEVSKGNvbHVtbk5hbWVzLCBAImNvbHVtbk5hbWVzIik7CiAg
ICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX09QVElPTkFMX1BBUkFNRVRFUihub3Rlcywg
QCJub3RlcyIpOwpAQCAtMTExOSw3ICsxMTE5LDcgQEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmMobG9uZyByZXF1ZXN0SWQsIGludAog
ICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5zZW5kUGVuZGluZ0Vycm9ycygpOwogICAgIH07
CiAKLSAgICBpZCBzdWNjZXNzQ2FsbGJhY2sgPSBeKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqY29s
dW1uTmFtZXMsIE5TU3RyaW5nICpub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgUHJvdG9jb2xKU09O
T2JqZWN0ICp2YWx1ZXMsIFByb3RvY29sSlNPTk9iamVjdCAqcGF5bG9hZCwgaW50IGRhdGFiYXNl
SWQsIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKnNxbEVycm9yLCBOU0FycmF5Lyo8TlNTdHJp
bmc+Ki8gKmFsdGVybmF0ZUNvbG9ycywgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3Jz
IHNjcmVlbkNvbG9yLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xv
ciBwcmludENvbG9yKSB7CisgICAgaWQgc3VjY2Vzc0NhbGxiYWNrID0gXihOU0FycmF5Lyo8TlNT
dHJpbmc+Ki8gKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAs
IFJXSVByb3RvY29sSlNPTk9iamVjdCAqdmFsdWVzLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKnBh
eWxvYWQsIGludCBkYXRhYmFzZUlkLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICpzcWxFcnJv
ciwgTlNBcnJheS8qPE5TU3RyaW5nPiovICphbHRlcm5hdGVDb2xvcnMsIFRlc3RQcm90b2NvbERh
dGFiYXNlUHJpbWFyeUNvbG9ycyBzY3JlZW5Db2xvciwgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVj
dXRlU1FMU3luY1ByaW50Q29sb3IgcHJpbnRDb2xvcikgewogICAgICAgICBSZWY8SW5zcGVjdG9y
T2JqZWN0PiByZXN1bHRPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAg
ICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BBUkFNRVRFUihjb2x1bW5OYW1lcywgQCJj
b2x1bW5OYW1lcyIpOwogICAgICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BBUkFN
RVRFUihub3RlcywgQCJub3RlcyIpOwpAQCAtMTE1Myw3ICsxMTUzLDcgQEAgdm9pZCBPYmpDSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTEFzeW5jKGxvbmcgcmVx
dWVzdElkLCBpbnQKICAgICAgICAgYmFja2VuZERpc3BhdGNoZXIoKS0+c2VuZFBlbmRpbmdFcnJv
cnMoKTsKICAgICB9OwogCi0gICAgaWQgc3VjY2Vzc0NhbGxiYWNrID0gXihOU0FycmF5Lyo8TlNT
dHJpbmc+Ki8gKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAs
IFByb3RvY29sSlNPTk9iamVjdCAqdmFsdWVzLCBQcm90b2NvbEpTT05PYmplY3QgKnBheWxvYWQs
IGludCBkYXRhYmFzZUlkLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICpzcWxFcnJvciwgVGVz
dFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIHNjcmVlbkNvbG9yLCBOU0FycmF5Lyo8TlNT
dHJpbmc+Ki8gKmFsdGVybmF0ZUNvbG9ycywgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FM
QXN5bmNQcmludENvbG9yIHByaW50Q29sb3IpIHsKKyAgICBpZCBzdWNjZXNzQ2FsbGJhY2sgPSBe
KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqY29sdW1uTmFtZXMsIE5TU3RyaW5nICpub3RlcywgZG91
YmxlIHRpbWVzdGFtcCwgUldJUHJvdG9jb2xKU09OT2JqZWN0ICp2YWx1ZXMsIFJXSVByb3RvY29s
SlNPTk9iamVjdCAqcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFRlc3RQcm90b2NvbERhdGFiYXNl
RXJyb3IgKnNxbEVycm9yLCBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgc2NyZWVu
Q29sb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqYWx0ZXJuYXRlQ29sb3JzLCBUZXN0UHJvdG9j
b2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3IgcHJpbnRDb2xvcikgewogICAgICAg
ICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHRPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpOwogICAgICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BBUkFNRVRFUihj
b2x1bW5OYW1lcywgQCJjb2x1bW5OYW1lcyIpOwogICAgICAgICBUSFJPV19FWENFUFRJT05fRk9S
X1JFUVVJUkVEX1BBUkFNRVRFUihub3RlcywgQCJub3RlcyIpOwpAQCAtMTIxNiw3ICsxMjE2LDcg
QEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNR
TEFzeW5jKGxvbmcgcmVxdWVzdElkLCBpbnQKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQg
aXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBjb21tYW5kcy13aXRoLWFzeW5jLWF0dHJp
YnV0ZS5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNp
bXBvcnQgIlRlc3RQcm90b2NvbEFycmF5Q29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlJX
SVByb3RvY29sQXJyYXlDb252ZXJzaW9uSGVscGVycy5oIgogCiBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIApAQCAtMTQ0Niw3ICsxNDQ2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAog
I2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKLSNpbXBvcnQgPFdlYkluc3BlY3Rv
ci9UZXN0UHJvdG9jb2xKU09OT2JqZWN0Lmg+CisjaW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJv
dG9jb2xKU09OT2JqZWN0Lmg+CiAKIAogQGNsYXNzIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I7
CkBAIC0xNDg4LDcgKzE0ODgsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJv
dG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3IpIHsKIAogCiBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKLUBpbnRlcmZhY2UgVGVzdFByb3RvY29sRGF0
YWJhc2VFcnJvciA6IFByb3RvY29sSlNPTk9iamVjdAorQGludGVyZmFjZSBUZXN0UHJvdG9jb2xE
YXRhYmFzZUVycm9yIDogUldJUHJvdG9jb2xKU09OT2JqZWN0CiAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgY29kZTooaW50KWNvZGU7CiAvKiByZXF1
aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKm1lc3NhZ2U7CiAv
KiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpbnQgY29kZTsKQEAg
LTE0OTYsMTAgKzE0OTYsMTAgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQi
KSkpCiAKIEBwcm90b2NvbCBUZXN0UHJvdG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXIgPE5TT2Jq
ZWN0PgogQHJlcXVpcmVkCi0tICh2b2lkKWV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1
ZXNXaXRoRXJyb3JDYWxsYmFjazoodm9pZCheKShOU1N0cmluZyAqZXJyb3IpKWVycm9yQ2FsbGJh
Y2sgc3VjY2Vzc0NhbGxiYWNrOih2b2lkKF4pKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmNvbHVt
bk5hbWVzLCBOU1N0cmluZyAqKm5vdGVzLCBkb3VibGUgKnRpbWVzdGFtcCwgUHJvdG9jb2xKU09O
T2JqZWN0ICoqdmFsdWVzLCBQcm90b2NvbEpTT05PYmplY3QgKipwYXlsb2FkLCBpbnQgKmRhdGFi
YXNlSWQsIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKipzcWxFcnJvciwgVGVzdFByb3RvY29s
RGF0YWJhc2VQcmltYXJ5Q29sb3JzICpzY3JlZW5Db2xvciwgTlNBcnJheS8qPE5TU3RyaW5nPiov
ICoqYWx0ZXJuYXRlQ29sb3JzLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0
aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yICpwcmludENvbG9yKSlzdWNjZXNzQ2FsbGJhY2sg
ZGF0YWJhc2VJZDooaW50KWRhdGFiYXNlSWQgcXVlcnk6KE5TU3RyaW5nICopcXVlcnk7Ci0tICh2
b2lkKWV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzV2l0aEVycm9yQ2FsbGJhY2s6
KHZvaWQoXikoTlNTdHJpbmcgKmVycm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazoo
dm9pZCheKShOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKipjb2x1bW5OYW1lcywgTlNTdHJpbmcgKipu
b3RlcywgZG91YmxlICp0aW1lc3RhbXAsIFByb3RvY29sSlNPTk9iamVjdCAqKnZhbHVlcywgUHJv
dG9jb2xKU09OT2JqZWN0ICoqcGF5bG9hZCwgaW50ICpkYXRhYmFzZUlkLCBUZXN0UHJvdG9jb2xE
YXRhYmFzZUVycm9yICoqc3FsRXJyb3IsIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9y
cyAqc2NyZWVuQ29sb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmFsdGVybmF0ZUNvbG9ycywg
VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1By
aW50Q29sb3IgKnByaW50Q29sb3IpKXN1Y2Nlc3NDYWxsYmFjayBkYXRhYmFzZUlkOihpbnQpZGF0
YWJhc2VJZCBxdWVyeTooTlNTdHJpbmcgKilxdWVyeTsKLS0gKHZvaWQpZXhlY3V0ZVNRTFN5bmNX
aXRoRXJyb3JDYWxsYmFjazoodm9pZCheKShOU1N0cmluZyAqZXJyb3IpKWVycm9yQ2FsbGJhY2sg
c3VjY2Vzc0NhbGxiYWNrOih2b2lkKF4pKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqY29sdW1uTmFt
ZXMsIE5TU3RyaW5nICpub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgUHJvdG9jb2xKU09OT2JqZWN0
ICp2YWx1ZXMsIFByb3RvY29sSlNPTk9iamVjdCAqcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFRl
c3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKnNxbEVycm9yLCBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8g
KmFsdGVybmF0ZUNvbG9ycywgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIHNjcmVl
bkNvbG9yLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvciBwcmlu
dENvbG9yKSlzdWNjZXNzQ2FsbGJhY2sgZGF0YWJhc2VJZDooaW50KWRhdGFiYXNlSWQgcXVlcnk6
KE5TU3RyaW5nICopcXVlcnk7Ci0tICh2b2lkKWV4ZWN1dGVTUUxBc3luY1dpdGhFcnJvckNhbGxi
YWNrOih2b2lkKF4pKE5TU3RyaW5nICplcnJvcikpZXJyb3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJh
Y2s6KHZvaWQoXikoTlNBcnJheS8qPE5TU3RyaW5nPiovICpjb2x1bW5OYW1lcywgTlNTdHJpbmcg
Km5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBQcm90b2NvbEpTT05PYmplY3QgKnZhbHVlcywgUHJv
dG9jb2xKU09OT2JqZWN0ICpwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgVGVzdFByb3RvY29sRGF0
YWJhc2VFcnJvciAqc3FsRXJyb3IsIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyBz
Y3JlZW5Db2xvciwgTlNBcnJheS8qPE5TU3RyaW5nPiovICphbHRlcm5hdGVDb2xvcnMsIFRlc3RQ
cm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvciBwcmludENvbG9yKSlzdWNj
ZXNzQ2FsbGJhY2sgZGF0YWJhc2VJZDooaW50KWRhdGFiYXNlSWQgcXVlcnk6KE5TU3RyaW5nICop
cXVlcnk7CistICh2b2lkKWV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNXaXRoRXJy
b3JDYWxsYmFjazoodm9pZCheKShOU1N0cmluZyAqZXJyb3IpKWVycm9yQ2FsbGJhY2sgc3VjY2Vz
c0NhbGxiYWNrOih2b2lkKF4pKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmNvbHVtbk5hbWVzLCBO
U1N0cmluZyAqKm5vdGVzLCBkb3VibGUgKnRpbWVzdGFtcCwgUldJUHJvdG9jb2xKU09OT2JqZWN0
ICoqdmFsdWVzLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKipwYXlsb2FkLCBpbnQgKmRhdGFiYXNl
SWQsIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKipzcWxFcnJvciwgVGVzdFByb3RvY29sRGF0
YWJhc2VQcmltYXJ5Q29sb3JzICpzY3JlZW5Db2xvciwgTlNBcnJheS8qPE5TU3RyaW5nPiovICoq
YWx0ZXJuYXRlQ29sb3JzLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9u
YWxSZXR1cm5WYWx1ZXNQcmludENvbG9yICpwcmludENvbG9yKSlzdWNjZXNzQ2FsbGJhY2sgZGF0
YWJhc2VJZDooaW50KWRhdGFiYXNlSWQgcXVlcnk6KE5TU3RyaW5nICopcXVlcnk7CistICh2b2lk
KWV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzV2l0aEVycm9yQ2FsbGJhY2s6KHZv
aWQoXikoTlNTdHJpbmcgKmVycm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazoodm9p
ZCheKShOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKipjb2x1bW5OYW1lcywgTlNTdHJpbmcgKipub3Rl
cywgZG91YmxlICp0aW1lc3RhbXAsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqKnZhbHVlcywgUldJ
UHJvdG9jb2xKU09OT2JqZWN0ICoqcGF5bG9hZCwgaW50ICpkYXRhYmFzZUlkLCBUZXN0UHJvdG9j
b2xEYXRhYmFzZUVycm9yICoqc3FsRXJyb3IsIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNv
bG9ycyAqc2NyZWVuQ29sb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmFsdGVybmF0ZUNvbG9y
cywgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVl
c1ByaW50Q29sb3IgKnByaW50Q29sb3IpKXN1Y2Nlc3NDYWxsYmFjayBkYXRhYmFzZUlkOihpbnQp
ZGF0YWJhc2VJZCBxdWVyeTooTlNTdHJpbmcgKilxdWVyeTsKKy0gKHZvaWQpZXhlY3V0ZVNRTFN5
bmNXaXRoRXJyb3JDYWxsYmFjazoodm9pZCheKShOU1N0cmluZyAqZXJyb3IpKWVycm9yQ2FsbGJh
Y2sgc3VjY2Vzc0NhbGxiYWNrOih2b2lkKF4pKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqY29sdW1u
TmFtZXMsIE5TU3RyaW5nICpub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgUldJUHJvdG9jb2xKU09O
T2JqZWN0ICp2YWx1ZXMsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqcGF5bG9hZCwgaW50IGRhdGFi
YXNlSWQsIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKnNxbEVycm9yLCBOU0FycmF5Lyo8TlNT
dHJpbmc+Ki8gKmFsdGVybmF0ZUNvbG9ycywgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29s
b3JzIHNjcmVlbkNvbG9yLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRD
b2xvciBwcmludENvbG9yKSlzdWNjZXNzQ2FsbGJhY2sgZGF0YWJhc2VJZDooaW50KWRhdGFiYXNl
SWQgcXVlcnk6KE5TU3RyaW5nICopcXVlcnk7CistICh2b2lkKWV4ZWN1dGVTUUxBc3luY1dpdGhF
cnJvckNhbGxiYWNrOih2b2lkKF4pKE5TU3RyaW5nICplcnJvcikpZXJyb3JDYWxsYmFjayBzdWNj
ZXNzQ2FsbGJhY2s6KHZvaWQoXikoTlNBcnJheS8qPE5TU3RyaW5nPiovICpjb2x1bW5OYW1lcywg
TlNTdHJpbmcgKm5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBSV0lQcm90b2NvbEpTT05PYmplY3Qg
KnZhbHVlcywgUldJUHJvdG9jb2xKU09OT2JqZWN0ICpwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwg
VGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqc3FsRXJyb3IsIFRlc3RQcm90b2NvbERhdGFiYXNl
UHJpbWFyeUNvbG9ycyBzY3JlZW5Db2xvciwgTlNBcnJheS8qPE5TU3RyaW5nPiovICphbHRlcm5h
dGVDb2xvcnMsIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvciBw
cmludENvbG9yKSlzdWNjZXNzQ2FsbGJhY2sgZGF0YWJhc2VJZDooaW50KWRhdGFiYXNlSWQgcXVl
cnk6KE5TU3RyaW5nICopcXVlcnk7CiBAZW5kCiAKIApAQCAtMTUzOSw3ICsxNTM5LDcgQEAgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAvLyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9y
LXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgotI2ltcG9y
dCAiVGVzdFByb3RvY29sSlNPTk9iamVjdEludGVybmFsLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9j
b2xKU09OT2JqZWN0UHJpdmF0ZS5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFi
bGVJbnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3JWYWx1ZXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1
cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0
dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggNmNjOTQwMTk3NDdhNjRiN2RjZTJhYmRk
MWRhMmUwOWFhZDc2MDJjYy4uMjViYzUzYjNjNDdjZTY2YmUyZTZlODg3ODllOGE3ZjgzYTFkZDQx
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVy
cy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJh
bWV0ZXJzLmpzb24tcmVzdWx0CkBAIC05MzAsNyArOTMwLDcgQEAgdm9pZCBPYmpDSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhs
b25nIHIKICAgICAgICAgYmFja2VuZERpc3BhdGNoZXIoKS0+c2VuZFBlbmRpbmdFcnJvcnMoKTsK
ICAgICB9OwogCi0gICAgaWQgc3VjY2Vzc0NhbGxiYWNrID0gXihOU0FycmF5Lyo8TlNTdHJpbmc+
Ki8gKipjb2x1bW5OYW1lcywgTlNTdHJpbmcgKipub3RlcywgZG91YmxlICp0aW1lc3RhbXAsIFBy
b3RvY29sSlNPTk9iamVjdCAqKnZhbHVlcywgUHJvdG9jb2xKU09OT2JqZWN0ICoqcGF5bG9hZCwg
aW50ICpkYXRhYmFzZUlkLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICoqc3FsRXJyb3IsIFRl
c3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyAqc2NyZWVuQ29sb3IsIE5TQXJyYXkvKjxO
U1N0cmluZz4qLyAqKmFsdGVybmF0ZUNvbG9ycywgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRl
QWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciAqcHJpbnRDb2xvcikgeworICAgIGlkIHN1
Y2Nlc3NDYWxsYmFjayA9IF4oTlNBcnJheS8qPE5TU3RyaW5nPiovICoqY29sdW1uTmFtZXMsIE5T
U3RyaW5nICoqbm90ZXMsIGRvdWJsZSAqdGltZXN0YW1wLCBSV0lQcm90b2NvbEpTT05PYmplY3Qg
Kip2YWx1ZXMsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqKnBheWxvYWQsIGludCAqZGF0YWJhc2VJ
ZCwgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKnNxbEVycm9yLCBUZXN0UHJvdG9jb2xEYXRh
YmFzZVByaW1hcnlDb2xvcnMgKnNjcmVlbkNvbG9yLCBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiph
bHRlcm5hdGVDb2xvcnMsIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFy
YW1ldGVyc1ByaW50Q29sb3IgKnByaW50Q29sb3IpIHsKICAgICAgICAgUmVmPEluc3BlY3Rvck9i
amVjdD4gcmVzdWx0T2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAg
VEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfT1BUSU9OQUxfUEFSQU1FVEVSKGNvbHVtbk5hbWVzLCBA
ImNvbHVtbk5hbWVzIik7CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX09QVElPTkFM
X1BBUkFNRVRFUihub3RlcywgQCJub3RlcyIpOwpAQCAtOTcwLDEyICs5NzAsMTIgQEAgdm9pZCBP
YmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFs
UGFyYW1ldGVycyhsb25nIHIKICAgICBkb3VibGUgb19pbl90aW1lc3RhbXA7CiAgICAgaWYgKGlu
X3RpbWVzdGFtcCkKICAgICAgICAgb19pbl90aW1lc3RhbXAgPSAqaW5fdGltZXN0YW1wOwotICAg
IFByb3RvY29sSlNPTk9iamVjdCAqb19pbl92YWx1ZXM7CisgICAgUldJUHJvdG9jb2xKU09OT2Jq
ZWN0ICpvX2luX3ZhbHVlczsKICAgICBpZiAoaW5fdmFsdWVzKQotICAgICAgICBvX2luX3ZhbHVl
cyA9IFtbW1Byb3RvY29sSlNPTk9iamVjdCBhbGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6
aW5fdmFsdWVzXSBhdXRvcmVsZWFzZV07Ci0gICAgUHJvdG9jb2xKU09OT2JqZWN0ICpvX2luX3Bh
eWxvYWQ7CisgICAgICAgIG9faW5fdmFsdWVzID0gW1tbUldJUHJvdG9jb2xKU09OT2JqZWN0IGFs
bG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDppbl92YWx1ZXNdIGF1dG9yZWxlYXNlXTsKKyAg
ICBSV0lQcm90b2NvbEpTT05PYmplY3QgKm9faW5fcGF5bG9hZDsKICAgICBpZiAoaW5fcGF5bG9h
ZCkKLSAgICAgICAgb19pbl9wYXlsb2FkID0gW1tbUHJvdG9jb2xKU09OT2JqZWN0IGFsbG9jXSBp
bml0V2l0aEluc3BlY3Rvck9iamVjdDppbl9wYXlsb2FkXSBhdXRvcmVsZWFzZV07CisgICAgICAg
IG9faW5fcGF5bG9hZCA9IFtbW1JXSVByb3RvY29sSlNPTk9iamVjdCBhbGxvY10gaW5pdFdpdGhJ
bnNwZWN0b3JPYmplY3Q6aW5fcGF5bG9hZF0gYXV0b3JlbGVhc2VdOwogICAgIGludCBvX2luX2Rh
dGFiYXNlSWQ7CiAgICAgaWYgKGluX2RhdGFiYXNlSWQpCiAgICAgICAgIG9faW5fZGF0YWJhc2VJ
ZCA9ICppbl9kYXRhYmFzZUlkOwpAQCAtMTAwMiw3ICsxMDAyLDcgQEAgdm9pZCBPYmpDSW5zcGVj
dG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJz
KGxvbmcgcmUKICAgICAgICAgYmFja2VuZERpc3BhdGNoZXIoKS0+c2VuZFBlbmRpbmdFcnJvcnMo
KTsKICAgICB9OwogCi0gICAgaWQgc3VjY2Vzc0NhbGxiYWNrID0gXihOU0FycmF5Lyo8TlNTdHJp
bmc+Ki8gKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIFBy
b3RvY29sSlNPTk9iamVjdCAqdmFsdWVzLCBQcm90b2NvbEpTT05PYmplY3QgKnBheWxvYWQsIGlu
dCBkYXRhYmFzZUlkLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICpzcWxFcnJvciwgVGVzdFBy
b3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIHNjcmVlbkNvbG9yLCBOU0FycmF5Lyo8TlNTdHJp
bmc+Ki8gKmFsdGVybmF0ZUNvbG9ycywgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRp
b25hbFBhcmFtZXRlcnNQcmludENvbG9yIHByaW50Q29sb3IpIHsKKyAgICBpZCBzdWNjZXNzQ2Fs
bGJhY2sgPSBeKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqY29sdW1uTmFtZXMsIE5TU3RyaW5nICpu
b3RlcywgZG91YmxlIHRpbWVzdGFtcCwgUldJUHJvdG9jb2xKU09OT2JqZWN0ICp2YWx1ZXMsIFJX
SVByb3RvY29sSlNPTk9iamVjdCAqcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFRlc3RQcm90b2Nv
bERhdGFiYXNlRXJyb3IgKnNxbEVycm9yLCBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xv
cnMgc2NyZWVuQ29sb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqYWx0ZXJuYXRlQ29sb3JzLCBU
ZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3Ig
cHJpbnRDb2xvcikgewogICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHRPYmplY3Qg
PSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBUSFJPV19FWENFUFRJT05fRk9S
X1JFUVVJUkVEX1BBUkFNRVRFUihjb2x1bW5OYW1lcywgQCJjb2x1bW5OYW1lcyIpOwogICAgICAg
ICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BBUkFNRVRFUihub3RlcywgQCJub3RlcyIp
OwpAQCAtMTAyNiw4ICsxMDI2LDggQEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlcjo6ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmUKICAgICBOU0Fy
cmF5Lyo8TlNTdHJpbmc+Ki8gKm9faW5fY29sdW1uTmFtZXMgPSBvYmpjU3RyaW5nQXJyYXkoJmlu
X2NvbHVtbk5hbWVzKTsKICAgICBOU1N0cmluZyAqb19pbl9ub3RlcyA9IGluX25vdGVzOwogICAg
IGRvdWJsZSBvX2luX3RpbWVzdGFtcCA9IGluX3RpbWVzdGFtcDsKLSAgICBQcm90b2NvbEpTT05P
YmplY3QgKm9faW5fdmFsdWVzID0gW1tbUHJvdG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0
aEluc3BlY3Rvck9iamVjdDomaW5fdmFsdWVzXSBhdXRvcmVsZWFzZV07Ci0gICAgUHJvdG9jb2xK
U09OT2JqZWN0ICpvX2luX3BheWxvYWQgPSBbW1tQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGlu
aXRXaXRoSW5zcGVjdG9yT2JqZWN0OiZpbl9wYXlsb2FkXSBhdXRvcmVsZWFzZV07CisgICAgUldJ
UHJvdG9jb2xKU09OT2JqZWN0ICpvX2luX3ZhbHVlcyA9IFtbW1JXSVByb3RvY29sSlNPTk9iamVj
dCBhbGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6JmluX3ZhbHVlc10gYXV0b3JlbGVhc2Vd
OworICAgIFJXSVByb3RvY29sSlNPTk9iamVjdCAqb19pbl9wYXlsb2FkID0gW1tbUldJUHJvdG9j
b2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDomaW5fcGF5bG9hZF0g
YXV0b3JlbGVhc2VdOwogICAgIGludCBvX2luX2RhdGFiYXNlSWQgPSBpbl9kYXRhYmFzZUlkOwog
ICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKm9faW5fc3FsRXJyb3IgPSBbW1tUZXN0UHJv
dG9jb2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDomaW5fc3Fs
RXJyb3JdIGF1dG9yZWxlYXNlXTsKICAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xv
cnMgb19pbl9zY3JlZW5Db2xvciA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRh
YmFzZVByaW1hcnlDb2xvcnM+KGluX3NjcmVlbkNvbG9yKTsKQEAgLTEwNzMsNyArMTA3Myw3IEBA
IHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVOb09w
dGlvbmFsUGFyYW1ldGVycyhsb25nIHJlCiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlz
IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxs
LXJldHVybi1wYXJhbWV0ZXJzLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmlu
ZGluZ3MucHkKIAotI2ltcG9ydCAiVGVzdFByb3RvY29sQXJyYXlDb252ZXJzaW9uSGVscGVycy5o
IgorI2ltcG9ydCAiUldJUHJvdG9jb2xBcnJheUNvbnZlcnNpb25IZWxwZXJzLmgiCiAKIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewogCkBAIC0xMzAzLDcgKzEzMDMsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAotI2ltcG9y
dCA8V2ViSW5zcGVjdG9yL1Rlc3RQcm90b2NvbEpTT05PYmplY3QuaD4KKyNpbXBvcnQgPFdlYklu
c3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3QuaD4KIAogCiBAY2xhc3MgVGVzdFByb3RvY29s
RGF0YWJhc2VFcnJvcjsKQEAgLTEzNDUsNyArMTM0NSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0lu
dGVnZXIsIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJp
bnRDCiAKIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCi1AaW50ZXJm
YWNlIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgOiBQcm90b2NvbEpTT05PYmplY3QKK0BpbnRl
cmZhY2UgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciA6IFJXSVByb3RvY29sSlNPTk9iamVjdAog
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGNvZGU6
KGludCljb2RlOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5T
U3RyaW5nICptZXNzYWdlOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGFz
c2lnbikgaW50IGNvZGU7CkBAIC0xMzUzLDggKzEzNTMsOCBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5ICgiZGVmYXVsdCIpKSkKIAogQHByb3RvY29sIFRlc3RQcm90b2NvbERhdGFiYXNlRG9t
YWluSGFuZGxlciA8TlNPYmplY3Q+CiBAcmVxdWlyZWQKLS0gKHZvaWQpZXhlY3V0ZUFsbE9wdGlv
bmFsUGFyYW1ldGVyc1dpdGhFcnJvckNhbGxiYWNrOih2b2lkKF4pKE5TU3RyaW5nICplcnJvcikp
ZXJyb3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6KHZvaWQoXikoTlNBcnJheS8qPE5TU3RyaW5n
PiovICoqY29sdW1uTmFtZXMsIE5TU3RyaW5nICoqbm90ZXMsIGRvdWJsZSAqdGltZXN0YW1wLCBQ
cm90b2NvbEpTT05PYmplY3QgKip2YWx1ZXMsIFByb3RvY29sSlNPTk9iamVjdCAqKnBheWxvYWQs
IGludCAqZGF0YWJhc2VJZCwgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKnNxbEVycm9yLCBU
ZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgKnNjcmVlbkNvbG9yLCBOU0FycmF5Lyo8
TlNTdHJpbmc+Ki8gKiphbHRlcm5hdGVDb2xvcnMsIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0
ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3IgKnByaW50Q29sb3IpKXN1Y2Nlc3NDYWxs
YmFjayBjb2x1bW5OYW1lczooTlNBcnJheS8qPE5TU3RyaW5nPiovICoqKWNvbHVtbk5hbWVzIG5v
dGVzOihOU1N0cmluZyAqKilub3RlcyB0aW1lc3RhbXA6KGRvdWJsZSAqKXRpbWVzdGFtcCB2YWx1
ZXM6KFByb3RvY29sSlNPTk9iamVjdCAqKil2YWx1ZXMgcGF5bG9hZDooUHJvdG9jb2xKU09OT2Jq
ZWN0ICoqKXBheWxvYWQgZGF0YWJhc2VJZDooaW50ICopZGF0YWJhc2VJZCBzcWxFcnJvcjooVGVz
dFByb3RvY29sRGF0YWJhc2VFcnJvciAqKilzcWxFcnJvciBzY3JlZW5Db2xvcjooVGVzdFByb3Rv
Y29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzICopc2NyZWVuQ29sb3IgYWx0ZXJuYXRlQ29sb3JzOihO
U0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiopYWx0ZXJuYXRlQ29sb3JzIHByaW50Q29sb3I6KFRlc3RQ
cm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3IgKilw
cmludENvbG9yOwotLSAodm9pZClleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNXaXRoRXJyb3JD
YWxsYmFjazoodm9pZCheKShOU1N0cmluZyAqZXJyb3IpKWVycm9yQ2FsbGJhY2sgc3VjY2Vzc0Nh
bGxiYWNrOih2b2lkKF4pKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqY29sdW1uTmFtZXMsIE5TU3Ry
aW5nICpub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgUHJvdG9jb2xKU09OT2JqZWN0ICp2YWx1ZXMs
IFByb3RvY29sSlNPTk9iamVjdCAqcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFRlc3RQcm90b2Nv
bERhdGFiYXNlRXJyb3IgKnNxbEVycm9yLCBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xv
cnMgc2NyZWVuQ29sb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqYWx0ZXJuYXRlQ29sb3JzLCBU
ZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3Ig
cHJpbnRDb2xvcikpc3VjY2Vzc0NhbGxiYWNrIGNvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJp
bmc+Ki8gKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKilub3RlcyB0aW1lc3RhbXA6KGRv
dWJsZSl0aW1lc3RhbXAgdmFsdWVzOihQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMgcGF5bG9h
ZDooUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZCBkYXRhYmFzZUlkOihpbnQpZGF0YWJhc2VJ
ZCBzcWxFcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKXNxbEVycm9yIHNjcmVlbkNv
bG9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMpc2NyZWVuQ29sb3IgYWx0ZXJu
YXRlQ29sb3JzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKilhbHRlcm5hdGVDb2xvcnMgcHJpbnRD
b2xvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmlu
dENvbG9yKXByaW50Q29sb3I7CistICh2b2lkKWV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNX
aXRoRXJyb3JDYWxsYmFjazoodm9pZCheKShOU1N0cmluZyAqZXJyb3IpKWVycm9yQ2FsbGJhY2sg
c3VjY2Vzc0NhbGxiYWNrOih2b2lkKF4pKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmNvbHVtbk5h
bWVzLCBOU1N0cmluZyAqKm5vdGVzLCBkb3VibGUgKnRpbWVzdGFtcCwgUldJUHJvdG9jb2xKU09O
T2JqZWN0ICoqdmFsdWVzLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKipwYXlsb2FkLCBpbnQgKmRh
dGFiYXNlSWQsIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKipzcWxFcnJvciwgVGVzdFByb3Rv
Y29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzICpzY3JlZW5Db2xvciwgTlNBcnJheS8qPE5TU3RyaW5n
PiovICoqYWx0ZXJuYXRlQ29sb3JzLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRp
b25hbFBhcmFtZXRlcnNQcmludENvbG9yICpwcmludENvbG9yKSlzdWNjZXNzQ2FsbGJhY2sgY29s
dW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKiljb2x1bW5OYW1lcyBub3RlczooTlNT
dHJpbmcgKiopbm90ZXMgdGltZXN0YW1wOihkb3VibGUgKil0aW1lc3RhbXAgdmFsdWVzOihSV0lQ
cm90b2NvbEpTT05PYmplY3QgKiopdmFsdWVzIHBheWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVj
dCAqKilwYXlsb2FkIGRhdGFiYXNlSWQ6KGludCAqKWRhdGFiYXNlSWQgc3FsRXJyb3I6KFRlc3RQ
cm90b2NvbERhdGFiYXNlRXJyb3IgKiopc3FsRXJyb3Igc2NyZWVuQ29sb3I6KFRlc3RQcm90b2Nv
bERhdGFiYXNlUHJpbWFyeUNvbG9ycyAqKXNjcmVlbkNvbG9yIGFsdGVybmF0ZUNvbG9yczooTlNB
cnJheS8qPE5TU3RyaW5nPiovICoqKWFsdGVybmF0ZUNvbG9ycyBwcmludENvbG9yOihUZXN0UHJv
dG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yICopcHJp
bnRDb2xvcjsKKy0gKHZvaWQpZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzV2l0aEVycm9yQ2Fs
bGJhY2s6KHZvaWQoXikoTlNTdHJpbmcgKmVycm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxs
YmFjazoodm9pZCheKShOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmNvbHVtbk5hbWVzLCBOU1N0cmlu
ZyAqbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqdmFsdWVz
LCBSV0lQcm90b2NvbEpTT05PYmplY3QgKnBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBUZXN0UHJv
dG9jb2xEYXRhYmFzZUVycm9yICpzcWxFcnJvciwgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5
Q29sb3JzIHNjcmVlbkNvbG9yLCBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmFsdGVybmF0ZUNvbG9y
cywgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENv
bG9yIHByaW50Q29sb3IpKXN1Y2Nlc3NDYWxsYmFjayBjb2x1bW5OYW1lczooTlNBcnJheS8qPE5T
U3RyaW5nPiovICopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICopbm90ZXMgdGltZXN0YW1w
Oihkb3VibGUpdGltZXN0YW1wIHZhbHVlczooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopdmFsdWVz
IHBheWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQgZGF0YWJhc2VJZDooaW50
KWRhdGFiYXNlSWQgc3FsRXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKilzcWxFcnJv
ciBzY3JlZW5Db2xvcjooVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzKXNjcmVlbkNv
bG9yIGFsdGVybmF0ZUNvbG9yczooTlNBcnJheS8qPE5TU3RyaW5nPiovICopYWx0ZXJuYXRlQ29s
b3JzIHByaW50Q29sb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJh
bWV0ZXJzUHJpbnRDb2xvcilwcmludENvbG9yOwogQGVuZAogCiAKQEAgLTEzOTQsNyArMTM5NCw3
IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogLy8gYnkgdGhlIHNj
cmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWlu
c3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIK
LSNpbXBvcnQgIlRlc3RQcm90b2NvbEpTT05PYmplY3RJbnRlcm5hbC5oIgorI2ltcG9ydCAiVGVz
dFByb3RvY29sSlNPTk9iamVjdFByaXZhdGUuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1
Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUv
SW5zcGVjdG9yVmFsdWVzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21t
YW5kLXNpemVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMu
anNvbi1yZXN1bHQKaW5kZXggOTkzMmU5ZTY1YTdiYmM2OWVlOGFkYzU0MmVmNDVmYTMzYTY1MmRk
Zi4uMGZiYTU3ZjM5OWRhM2IxOWJmOTE0MWI0MjZmNTIyNWNmOTY0NzdiMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2Rv
bWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMt
d2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKQEAgLTExMzEsNyArMTEzMSw3
IEBAIHZvaWQgT2JqQ0luc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNv
dXJjZTcobG9uZyByZXF1ZXN0SWQpCiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1
dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1z
aXplcy5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNp
bXBvcnQgIlRlc3RQcm90b2NvbEFycmF5Q29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlJX
SVByb3RvY29sQXJyYXlDb252ZXJzaW9uSGVscGVycy5oIgogCiBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIApAQCAtMTIyOSw3ICsxMjI5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAog
I2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKLSNpbXBvcnQgPFdlYkluc3BlY3Rv
ci9UZXN0UHJvdG9jb2xKU09OT2JqZWN0Lmg+CisjaW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJv
dG9jb2xKU09OT2JqZWN0Lmg+CiAKIAogCkBAIC0xMjkxLDcgKzEyOTEsNyBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5w
eQogCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEpTT05P
YmplY3RJbnRlcm5hbC5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sSlNPTk9iamVjdFByaXZhdGUu
aCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxl
ci5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdAppbmRl
eCA5YzgyMWQ4ODE1MjE5ZjM3ZjljZGY1Y2ZhY2JiNGE1MjVkZTQzNTk0Li40NTQ0YzQyYjQzMTVj
OGM5MTNjNmI0OGQ4YTMxN2U4NmY3MzYyNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1y
ZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0CkBAIC04MzUsNyArODM1LDcgQEAgdm9p
ZCBPYmpDSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyOjpjb21tYW5kV2l0
aEVudW1SZXR1cm5WYWx1ZShsb24KIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0
b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBlbnVtLXZhbHVlcy5qc29uCiAvLyBieSB0aGUgc2Ny
aXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5z
cGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEFycmF5
Q29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlJXSVByb3RvY29sQXJyYXlDb252ZXJzaW9u
SGVscGVycy5oIgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIApAQCAtMTA0MCw3ICsxMDQwLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+CiAKLSNpbXBvcnQgPFdlYkluc3BlY3Rvci9UZXN0UHJvdG9jb2xKU09OT2JqZWN0
Lmg+CisjaW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2xKU09OT2JqZWN0Lmg+CiAKIAog
CkBAIC0xMTEzLDcgKzExMTMsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVs
dCIpKSkKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAogI2ltcG9y
dCAiVGVzdFByb3RvY29sLmgiCi0jaW1wb3J0ICJUZXN0UHJvdG9jb2xKU09OT2JqZWN0SW50ZXJu
YWwuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEpTT05PYmplY3RQcml2YXRlLmgiCiAjaW1wb3J0
IDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaD4KICNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRz
LXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25h
bC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IGMwMjFkYWZiNGMzNDgzZWI5YzM3YzNkZDAz
ZTZiYzlhMTBjN2RmOTEuLjFjODBiNDM0OTA1Y2RiNTk3OWIxYTg5YmUzMTI4ODA1NTBlMTM2OWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CkBAIC03ODAsNyAr
NzgwLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUu
IEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gZXZlbnRzLXdpdGgtb3B0aW9uYWwt
cGFyYW1ldGVycy5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5
CiAKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEFycmF5Q29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBv
cnQgIlJXSVByb3RvY29sQXJyYXlDb252ZXJzaW9uSGVscGVycy5oIgogCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIApAQCAtODQ3LDcgKzg0Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1l
dGVyc1dpdGhDb2x1bW5OYW1lczooTlNBcnJheS8qPE5TU3RyaW5nPiovICoqKWNvbHVtbk5hbWVz
IG5vdGVzOihOU1N0cmluZyAqKilub3RlcyB0aW1lc3RhbXA6KGRvdWJsZSAqKXRpbWVzdGFtcCB2
YWx1ZXM6KFByb3RvY29sSlNPTk9iamVjdCAqKil2YWx1ZXMgcGF5bG9hZDooUHJvdG9jb2xKU09O
T2JqZWN0ICoqKXBheWxvYWQgc3FsRXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKiop
c3FsRXJyb3Igc2NyZWVuQ29sb3I6KE5TU3RyaW5nICoqKXNjcmVlbkNvbG9yIGFsdGVybmF0ZUNv
bG9yczooTlNBcnJheS8qPE5TU3RyaW5nPiovICoqKWFsdGVybmF0ZUNvbG9ycyBwcmludENvbG9y
OihOU1N0cmluZyAqKilwcmludENvbG9yCistICh2b2lkKWRpZEV4ZWN1dGVPcHRpb25hbFBhcmFt
ZXRlcnNXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKiljb2x1bW5OYW1l
cyBub3RlczooTlNTdHJpbmcgKiopbm90ZXMgdGltZXN0YW1wOihkb3VibGUgKil0aW1lc3RhbXAg
dmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKiopdmFsdWVzIHBheWxvYWQ6KFJXSVByb3Rv
Y29sSlNPTk9iamVjdCAqKilwYXlsb2FkIHNxbEVycm9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUVy
cm9yICoqKXNxbEVycm9yIHNjcmVlbkNvbG9yOihOU1N0cmluZyAqKilzY3JlZW5Db2xvciBhbHRl
cm5hdGVDb2xvcnM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKilhbHRlcm5hdGVDb2xvcnMgcHJp
bnRDb2xvcjooTlNTdHJpbmcgKiopcHJpbnRDb2xvcgogewogICAgIGNvbnN0IEZyb250ZW5kUm91
dGVyJiByb3V0ZXIgPSBfY29udHJvbGxlci0+ZnJvbnRlbmRSb3V0ZXIoKTsKIApAQCAtODg1LDcg
Kzg4NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgcm91dGVyLnNlbmRFdmVu
dChqc29uTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOwogfQogCi0tICh2b2lkKWRpZEV4ZWN1dGVO
b09wdGlvbmFsUGFyYW1ldGVyc1dpdGhDb2x1bW5OYW1lczooTlNBcnJheS8qPE5TU3RyaW5nPiov
ICopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICopbm90ZXMgdGltZXN0YW1wOihkb3VibGUp
dGltZXN0YW1wIHZhbHVlczooUHJvdG9jb2xKU09OT2JqZWN0ICopdmFsdWVzIHBheWxvYWQ6KFBy
b3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQgc3FsRXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNl
RXJyb3IgKilzcWxFcnJvciBzY3JlZW5Db2xvcjooTlNTdHJpbmcgKilzY3JlZW5Db2xvciBhbHRl
cm5hdGVDb2xvcnM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWFsdGVybmF0ZUNvbG9ycyBwcmlu
dENvbG9yOihOU1N0cmluZyAqKXByaW50Q29sb3IKKy0gKHZvaWQpZGlkRXhlY3V0ZU5vT3B0aW9u
YWxQYXJhbWV0ZXJzV2l0aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1
bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKilub3RlcyB0aW1lc3RhbXA6KGRvdWJsZSl0aW1lc3Rh
bXAgdmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMgcGF5bG9hZDooUldJUHJv
dG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZCBzcWxFcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VF
cnJvciAqKXNxbEVycm9yIHNjcmVlbkNvbG9yOihOU1N0cmluZyAqKXNjcmVlbkNvbG9yIGFsdGVy
bmF0ZUNvbG9yczooTlNBcnJheS8qPE5TU3RyaW5nPiovICopYWx0ZXJuYXRlQ29sb3JzIHByaW50
Q29sb3I6KE5TU3RyaW5nICopcHJpbnRDb2xvcgogewogICAgIGNvbnN0IEZyb250ZW5kUm91dGVy
JiByb3V0ZXIgPSBfY29udHJvbGxlci0+ZnJvbnRlbmRSb3V0ZXIoKTsKIApAQCAtOTUyLDcgKzk1
Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgogCi0jaW1wb3J0IDxXZWJJbnNwZWN0b3IvVGVzdFByb3RvY29sSlNPTk9i
amVjdC5oPgorI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sSlNPTk9iamVjdC5oPgog
CiAKIEBjbGFzcyBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yOwpAQCAtOTYxLDcgKzk2MSw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSAoImRlZmF1bHQiKSkpCi1AaW50ZXJmYWNlIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgOiBQ
cm90b2NvbEpTT05PYmplY3QKK0BpbnRlcmZhY2UgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciA6
IFJXSVByb3RvY29sSlNPTk9iamVjdAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWVzc2FnZToo
TlNTdHJpbmcgKiltZXNzYWdlIGNvZGU6KGludCljb2RlOwogLyogcmVxdWlyZWQgKi8gQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICptZXNzYWdlOwogLyogcmVxdWlyZWQgKi8g
QHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaW50IGNvZGU7CkBAIC05NzEsOCArOTcxLDgg
QEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAKIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRh
YmFzZURvbWFpbkV2ZW50RGlzcGF0Y2hlciA6IE5TT2JqZWN0Ci0tICh2b2lkKWRpZEV4ZWN1dGVP
cHRpb25hbFBhcmFtZXRlcnNXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAq
Kiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKiopbm90ZXMgdGltZXN0YW1wOihkb3VibGUg
Kil0aW1lc3RhbXAgdmFsdWVzOihQcm90b2NvbEpTT05PYmplY3QgKiopdmFsdWVzIHBheWxvYWQ6
KFByb3RvY29sSlNPTk9iamVjdCAqKilwYXlsb2FkIHNxbEVycm9yOihUZXN0UHJvdG9jb2xEYXRh
YmFzZUVycm9yICoqKXNxbEVycm9yIHNjcmVlbkNvbG9yOihOU1N0cmluZyAqKilzY3JlZW5Db2xv
ciBhbHRlcm5hdGVDb2xvcnM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKilhbHRlcm5hdGVDb2xv
cnMgcHJpbnRDb2xvcjooTlNTdHJpbmcgKiopcHJpbnRDb2xvcjsKLS0gKHZvaWQpZGlkRXhlY3V0
ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzV2l0aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+
Ki8gKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKilub3RlcyB0aW1lc3RhbXA6KGRvdWJs
ZSl0aW1lc3RhbXAgdmFsdWVzOihQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMgcGF5bG9hZDoo
UHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZCBzcWxFcnJvcjooVGVzdFByb3RvY29sRGF0YWJh
c2VFcnJvciAqKXNxbEVycm9yIHNjcmVlbkNvbG9yOihOU1N0cmluZyAqKXNjcmVlbkNvbG9yIGFs
dGVybmF0ZUNvbG9yczooTlNBcnJheS8qPE5TU3RyaW5nPiovICopYWx0ZXJuYXRlQ29sb3JzIHBy
aW50Q29sb3I6KE5TU3RyaW5nICopcHJpbnRDb2xvcjsKKy0gKHZvaWQpZGlkRXhlY3V0ZU9wdGlv
bmFsUGFyYW1ldGVyc1dpdGhDb2x1bW5OYW1lczooTlNBcnJheS8qPE5TU3RyaW5nPiovICoqKWNv
bHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKilub3RlcyB0aW1lc3RhbXA6KGRvdWJsZSAqKXRp
bWVzdGFtcCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKil2YWx1ZXMgcGF5bG9hZDoo
UldJUHJvdG9jb2xKU09OT2JqZWN0ICoqKXBheWxvYWQgc3FsRXJyb3I6KFRlc3RQcm90b2NvbERh
dGFiYXNlRXJyb3IgKiopc3FsRXJyb3Igc2NyZWVuQ29sb3I6KE5TU3RyaW5nICoqKXNjcmVlbkNv
bG9yIGFsdGVybmF0ZUNvbG9yczooTlNBcnJheS8qPE5TU3RyaW5nPiovICoqKWFsdGVybmF0ZUNv
bG9ycyBwcmludENvbG9yOihOU1N0cmluZyAqKilwcmludENvbG9yOworLSAodm9pZClkaWRFeGVj
dXRlTm9PcHRpb25hbFBhcmFtZXRlcnNXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmlu
Zz4qLyAqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKW5vdGVzIHRpbWVzdGFtcDooZG91
YmxlKXRpbWVzdGFtcCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVlcyBwYXls
b2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkIHNxbEVycm9yOihUZXN0UHJvdG9j
b2xEYXRhYmFzZUVycm9yICopc3FsRXJyb3Igc2NyZWVuQ29sb3I6KE5TU3RyaW5nICopc2NyZWVu
Q29sb3IgYWx0ZXJuYXRlQ29sb3JzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKilhbHRlcm5hdGVD
b2xvcnMgcHJpbnRDb2xvcjooTlNTdHJpbmcgKilwcmludENvbG9yOwogQGVuZAogCiAKQEAgLTEw
MTAsNyArMTAxMCw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQog
Ly8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW1wb3J0ICJUZXN0
UHJvdG9jb2wuaCIKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEpTT05PYmplY3RJbnRlcm5hbC5oIgor
I2ltcG9ydCAiVGVzdFByb3RvY29sSlNPTk9iamVjdFByaXZhdGUuaCIKICNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21h
aW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRo
LWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CmluZGV4IGE5NjczZmJjYmQ2ZGU3MWIwYTlkN2M1
Njg4ZWY2NDhjYmNlMWU2MmIuLjBiMDBiN2M0OWVhZDQ1NTcyM2JkMjFmODM2ZjY1OTIzZThhNDg4
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1y
ZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3Vs
dApAQCAtODgxLDcgKzg4MSw3IEBAIHZvaWQgT2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXI6OmxvYWRSZXNvdXJjZShsb25nIHJlcXVlc3RJZCkKIC8vIERPIE5PVCBFRElUIFRI
SVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBnZW5lcmF0ZS1kb21h
aW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2Nv
bC1iaW5kaW5ncy5weQogCi0jaW1wb3J0ICJUZXN0UHJvdG9jb2xBcnJheUNvbnZlcnNpb25IZWxw
ZXJzLmgiCisjaW1wb3J0ICJSV0lQcm90b2NvbEFycmF5Q29udmVyc2lvbkhlbHBlcnMuaCIKIAog
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKQEAgLTEwMDMsNyArMTAwMyw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi0j
aW1wb3J0IDxXZWJJbnNwZWN0b3IvVGVzdFByb3RvY29sSlNPTk9iamVjdC5oPgorI2ltcG9ydCA8
V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sSlNPTk9iamVjdC5oPgogCiAKIEBjbGFzcyBUZXN0UHJv
dG9jb2xOZXR3b3JrMk5ldHdvcmtFcnJvcjsKQEAgLTEwMTIsNyArMTAxMiw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1
bHQiKSkpCi1AaW50ZXJmYWNlIFRlc3RQcm90b2NvbE5ldHdvcmsyTmV0d29ya0Vycm9yIDogUHJv
dG9jb2xKU09OT2JqZWN0CitAaW50ZXJmYWNlIFRlc3RQcm90b2NvbE5ldHdvcmsyTmV0d29ya0Vy
cm9yIDogUldJUHJvdG9jb2xKU09OT2JqZWN0CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhNZXNz
YWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgY29kZTooaW50KWNvZGU7CiAvKiByZXF1aXJlZCAqLyBA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKm1lc3NhZ2U7CiAvKiByZXF1aXJl
ZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpbnQgY29kZTsKQEAgLTEwNjMsNyAr
MTA2Myw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogLy8gYnkg
dGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVy
YXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW1wb3J0ICJUZXN0UHJvdG9j
b2wuaCIKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEpTT05PYmplY3RJbnRlcm5hbC5oIgorI2ltcG9y
dCAiVGVzdFByb3RvY29sSlNPTk9iamVjdFByaXZhdGUuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVy
ZW50LWRvbWFpbi5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29u
LXJlc3VsdAppbmRleCBkMzcyNjE4ZTdhMTQyMjZkODgxOGJhNzEyMzI3ZWNiNGJiOGQxMTFkLi40
NjQ4MDc2ZDJjYjBlNTIwOWI4OTQ0ZmVjMjk1NTYxNGQ4OGIwOTE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10
eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZm
ZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0CkBAIC02NDIsNyArNjQyLDcgQEAgbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkg
Z2VuZXJhdGVkIGZyb20gc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbgogLy8gYnkg
dGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVy
YXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaW1wb3J0ICJUZXN0UHJvdG9j
b2xBcnJheUNvbnZlcnNpb25IZWxwZXJzLmgiCisjaW1wb3J0ICJSV0lQcm90b2NvbEFycmF5Q29u
dmVyc2lvbkhlbHBlcnMuaCIKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKQEAgLTczNiw3ICs3
MzYsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KIAotI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1Rlc3RQcm90b2NvbEpTT05P
YmplY3QuaD4KKyNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3QuaD4K
IAogCiAKQEAgLTc4NCw3ICs3ODQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogLy8g
YnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dl
bmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW1wb3J0ICJUZXN0UHJv
dG9jb2wuaCIKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEpTT05PYmplY3RJbnRlcm5hbC5oIgorI2lt
cG9ydCAiVGVzdFByb3RvY29sSlNPTk9iamVjdFByaXZhdGUuaCIKICNpbXBvcnQgPEphdmFTY3Jp
cHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25h
bC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJz
Lmpzb24tcmVzdWx0CmluZGV4IGRkYzFmNDFhOGU3ODRhOGNjODlkNDEyZjQxZDZiMDUzMWVkZjc4
ODcuLjQ2ODIyODhjNTI0MTYxY2ZjZjMwMGYzZGM1MTU2Mzk4NzcwYzAzNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9z
aGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9w
dGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdApAQCAtNzExLDcgKzcxMSw3IEBAIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0
aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHNoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29u
CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgIlRl
c3RQcm90b2NvbEFycmF5Q29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlJXSVByb3RvY29s
QXJyYXlDb252ZXJzaW9uSGVscGVycy5oIgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIApAQCAt
ODI1LDcgKzgyNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi0jaW1wb3J0IDxXZWJJbnNwZWN0b3IvVGVzdFByb3Rv
Y29sSlNPTk9iamVjdC5oPgorI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sSlNPTk9i
amVjdC5oPgogCiAKIEBjbGFzcyBUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aDsKQEAgLTgzOSw3
ICs4MzksNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xSdW50aW1l
S2V5UGF0aFR5cGUpIHsKIAogCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIp
KSkKLUBpbnRlcmZhY2UgVGVzdFByb3RvY29sUnVudGltZUtleVBhdGggOiBQcm90b2NvbEpTT05P
YmplY3QKK0BpbnRlcmZhY2UgVGVzdFByb3RvY29sUnVudGltZUtleVBhdGggOiBSV0lQcm90b2Nv
bEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFR5cGU6KFRlc3RQcm90b2NvbFJ1
bnRpbWVLZXlQYXRoVHlwZSl0eXBlOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9t
aWMsIGFzc2lnbikgVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlIHR5cGU7CiAvKiBvcHRp
b25hbCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKnN0cmluZzsKQEAg
LTg4NSw3ICs4ODUsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkK
IC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAogI2ltcG9ydCAiVGVz
dFByb3RvY29sLmgiCi0jaW1wb3J0ICJUZXN0UHJvdG9jb2xKU09OT2JqZWN0SW50ZXJuYWwuaCIK
KyNpbXBvcnQgIlRlc3RQcm90b2NvbEpTT05PYmplY3RQcml2YXRlLmgiCiAjaW1wb3J0IDxKYXZh
U2NyaXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJh
dGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24t
YWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdAppbmRleCA0MzA0YWUxYTY1MmRiZmYz
ZTg1OGVlYTRmNTcyYzlmMGNhMGJiYzU0Li5iOWIxYmMzNjk0YTg4NDNkMDliMjE4NjgzYjQ2Yzk1
OWMwOTJmMjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10
eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5
cGUuanNvbi1yZXN1bHQKQEAgLTYzMyw3ICs2MzMsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQg
ZnJvbSB0eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbgogLy8gYnkg
dGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVy
YXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaW1wb3J0ICJUZXN0UHJvdG9j
b2xBcnJheUNvbnZlcnNpb25IZWxwZXJzLmgiCisjaW1wb3J0ICJSV0lQcm90b2NvbEFycmF5Q29u
dmVyc2lvbkhlbHBlcnMuaCIKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKQEAgLTcyMyw3ICs3
MjMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KIAotI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1Rlc3RQcm90b2NvbEpTT05P
YmplY3QuaD4KKyNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3QuaD4K
IAogCiAKQEAgLTc3MSw3ICs3NzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogLy8g
YnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dl
bmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW1wb3J0ICJUZXN0UHJv
dG9jb2wuaCIKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEpTT05PYmplY3RJbnRlcm5hbC5oIgorI2lt
cG9ydCAiVGVzdFByb3RvY29sSlNPTk9iamVjdFByaXZhdGUuaCIKICNpbXBvcnQgPEphdmFTY3Jp
cHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9u
LWFycmF5LXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24t
cmVzdWx0CmluZGV4IGJiYTk1NDk3ZDA0OGQ0NjMzNWMyYTZiOGRlNjhhNmE2NjVhNDdkMDkuLmRj
NzNkYTU5YjU2MmViMWU0NTFhZDAyMDUzNmRmN2IzOTAzZmI5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRl
Y2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJy
YXktdHlwZS5qc29uLXJlc3VsdApAQCAtNjY1LDcgKzY2NSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVy
YXRlZCBmcm9tIHR5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uCiAvLyBieSB0aGUgc2Ny
aXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5z
cGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEFycmF5
Q29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlJXSVByb3RvY29sQXJyYXlDb252ZXJzaW9u
SGVscGVycy5oIgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIApAQCAtNzgzLDcgKzc4Myw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5oPgogCi0jaW1wb3J0IDxXZWJJbnNwZWN0b3IvVGVzdFByb3RvY29sSlNPTk9iamVjdC5o
PgorI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sSlNPTk9iamVjdC5oPgogCiAKIApA
QCAtODM2LDcgKzgzNiw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2Nv
bERlYnVnZ2VyUmVhc29uKSB7CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdz
LnB5CiAKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgotI2ltcG9ydCAiVGVzdFByb3RvY29sSlNP
Tk9iamVjdEludGVybmFsLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xKU09OT2JqZWN0UHJpdmF0
ZS5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9s
bGVyLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFy
YXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0CmluZGV4IDM0MDMzMGZjNzE5NTZlZDViMzc5ZDU3
YTU0MDE4Y2RhM2YyNDZjYzcuLmZmODVlZTA0Mzk3NGY0YzM2NTg2ZTZjYmQ5OWI5ZTFjYjAwZTQ0
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
dHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQKQEAgLTY2Miw3ICs2NjIsNyBA
QCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMg
YXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5q
c29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQg
IlRlc3RQcm90b2NvbEFycmF5Q29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlJXSVByb3Rv
Y29sQXJyYXlDb252ZXJzaW9uSGVscGVycy5oIgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIApA
QCAtODA5LDcgKzgwOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICNpbXBvcnQg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi0jaW1wb3J0IDxXZWJJbnNwZWN0b3IvVGVzdFBy
b3RvY29sSlNPTk9iamVjdC5oPgorI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sSlNP
Tk9iamVjdC5oPgogCiAKIApAQCAtODcwLDcgKzg3MCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0lu
dGVnZXIsIFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzKSB7CiAvLyBieSB0aGUg
c2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUt
aW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5o
IgotI2ltcG9ydCAiVGVzdFByb3RvY29sSlNPTk9iamVjdEludGVybmFsLmgiCisjaW1wb3J0ICJU
ZXN0UHJvdG9jb2xKU09OT2JqZWN0UHJpdmF0ZS5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUv
QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9JbnNwZWN0b3JWYWx1ZXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0
LXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3Vs
dAppbmRleCBmMGY4ZDdkYWJlMjE1ZWRhZmZhYmMyN2MxOWM4ZjNmNDgxYTdkNGFkLi44NjBhMjYy
NWE3ZTNmYjI2NDVkMGEyZDA4ZDdkZjQwZWVkNzVmOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJh
dGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3Qt
dHlwZS5qc29uLXJlc3VsdApAQCAtMTEwMiw3ICsxMTAyLDcgQEAgbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJh
dGVkIGZyb20gdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uCiAvLyBieSB0aGUgc2Ny
aXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5z
cGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEFycmF5
Q29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlJXSVByb3RvY29sQXJyYXlDb252ZXJzaW9u
SGVscGVycy5oIgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIApAQCAtMTE5Niw3ICsxMTk2LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+CiAKLSNpbXBvcnQgPFdlYkluc3BlY3Rvci9UZXN0UHJvdG9jb2xKU09OT2JqZWN0
Lmg+CisjaW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2xKU09OT2JqZWN0Lmg+CiAKIAog
QGNsYXNzIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I7CkBAIC0xMjEwLDM3ICsxMjEwLDM3IEBA
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSAoImRlZmF1bHQiKSkpCi1AaW50ZXJmYWNlIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgOiBQ
cm90b2NvbEpTT05PYmplY3QKK0BpbnRlcmZhY2UgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciA6
IFJXSVByb3RvY29sSlNPTk9iamVjdAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWVzc2FnZToo
TlNTdHJpbmcgKiltZXNzYWdlIGNvZGU6KGludCljb2RlOwogLyogcmVxdWlyZWQgKi8gQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICptZXNzYWdlOwogLyogcmVxdWlyZWQgKi8g
QHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaW50IGNvZGU7CiBAZW5kCiAKIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQotQGludGVyZmFjZSBUZXN0UHJvdG9jb2xE
YXRhYmFzZU9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlIDogUHJvdG9jb2xKU09OT2JqZWN0CitAaW50
ZXJmYWNlIFRlc3RQcm90b2NvbERhdGFiYXNlT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGUgOiBSV0lQ
cm90b2NvbEpTT05PYmplY3QKIC8qIG9wdGlvbmFsICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5KSBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmNvbHVtbk5hbWVzOwogLyogb3B0aW9uYWwgKi8g
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpub3RlczsKIC8qIG9wdGlvbmFs
ICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGRvdWJsZSB0aW1lc3RhbXA7Ci0vKiBv
cHRpb25hbCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBQcm90b2NvbEpTT05PYmpl
Y3QgKnZhbHVlczsKLS8qIG9wdGlvbmFsICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4p
IFByb3RvY29sSlNPTk9iamVjdCAqcGF5bG9hZDsKKy8qIG9wdGlvbmFsICovIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZXRhaW4pIFJXSVByb3RvY29sSlNPTk9iamVjdCAqdmFsdWVzOworLyogb3B0
aW9uYWwgKi8gQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgUldJUHJvdG9jb2xKU09OT2Jq
ZWN0ICpwYXlsb2FkOwogLyogb3B0aW9uYWwgKi8gQHByb3BlcnR5IChub25hdG9taWMsIHJldGFp
bikgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqZXJyb3I7CiAvKiBvcHRpb25hbCAqLyBAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheS8qPFRlc3RQcm90b2NvbERhdGFiYXNlRXJy
b3I+Ki8gKmVycm9yTGlzdDsKIEBlbmQKIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRl
ZmF1bHQiKSkpCi1AaW50ZXJmYWNlIFRlc3RQcm90b2NvbERhdGFiYXNlUGFyYW1ldGVyQnVuZGxl
IDogUHJvdG9jb2xKU09OT2JqZWN0Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2x1bW5OYW1l
czooTlNBcnJheS8qPE5TU3RyaW5nPiovICopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICop
bm90ZXMgdGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1wIHZhbHVlczooUHJvdG9jb2xKU09OT2Jq
ZWN0ICopdmFsdWVzIHBheWxvYWQ6KFByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQgZXJyb3I6
KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKillcnJvciBlcnJvckxpc3Q6KE5TQXJyYXkvKjxU
ZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yPiovICopZXJyb3JMaXN0OworQGludGVyZmFjZSBUZXN0
UHJvdG9jb2xEYXRhYmFzZVBhcmFtZXRlckJ1bmRsZSA6IFJXSVByb3RvY29sSlNPTk9iamVjdAor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4q
LyAqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKW5vdGVzIHRpbWVzdGFtcDooZG91Ymxl
KXRpbWVzdGFtcCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVlcyBwYXlsb2Fk
OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkIGVycm9yOihUZXN0UHJvdG9jb2xEYXRh
YmFzZUVycm9yICopZXJyb3IgZXJyb3JMaXN0OihOU0FycmF5Lyo8VGVzdFByb3RvY29sRGF0YWJh
c2VFcnJvcj4qLyAqKWVycm9yTGlzdDsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5KSBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmNvbHVtbk5hbWVzOwogLyogcmVxdWly
ZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpub3RlczsKIC8qIHJl
cXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGRvdWJsZSB0aW1lc3RhbXA7
Ci0vKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBQcm90b2NvbEpT
T05PYmplY3QgKnZhbHVlczsKLS8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZXRhaW4pIFByb3RvY29sSlNPTk9iamVjdCAqcGF5bG9hZDsKKy8qIHJlcXVpcmVkICovIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFJXSVByb3RvY29sSlNPTk9iamVjdCAqdmFsdWVzOwor
LyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgUldJUHJvdG9jb2xK
U09OT2JqZWN0ICpwYXlsb2FkOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMs
IHJldGFpbikgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqZXJyb3I7CiAvKiByZXF1aXJlZCAq
LyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheS8qPFRlc3RQcm90b2NvbERhdGFi
YXNlRXJyb3I+Ki8gKmVycm9yTGlzdDsKIEBlbmQKIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSAoImRlZmF1bHQiKSkpCi1AaW50ZXJmYWNlIFRlc3RQcm90b2NvbERhdGFiYXNlT2JqZWN0V2l0
aFByb3BlcnR5TmFtZUNvbmZsaWN0cyA6IFByb3RvY29sSlNPTk9iamVjdAorQGludGVyZmFjZSBU
ZXN0UHJvdG9jb2xEYXRhYmFzZU9iamVjdFdpdGhQcm9wZXJ0eU5hbWVDb25mbGljdHMgOiBSV0lQ
cm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEludGVnZXI6KE5TU3Ry
aW5nICopaW50ZWdlciBhcnJheTooTlNTdHJpbmcgKilhcnJheSBzdHJpbmc6KE5TU3RyaW5nICop
c3RyaW5nIHZhbHVlOihOU1N0cmluZyAqKXZhbHVlIG9iamVjdDooTlNTdHJpbmcgKilvYmplY3Q7
CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKmlu
dGVnZXI7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJp
bmcgKmFycmF5OwpAQCAtMTI1MCwxNyArMTI1MCwxNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5ICgiZGVmYXVsdCIpKSkKIEBlbmQKIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRl
ZmF1bHQiKSkpCi1AaW50ZXJmYWNlIFRlc3RQcm90b2NvbERhdGFiYXNlRHVtbXlPYmplY3QgOiBQ
cm90b2NvbEpTT05PYmplY3QKK0BpbnRlcmZhY2UgVGVzdFByb3RvY29sRGF0YWJhc2VEdW1teU9i
amVjdCA6IFJXSVByb3RvY29sSlNPTk9iamVjdAogQGVuZAogCiBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5ICgiZGVmYXVsdCIpKSkKLUBpbnRlcmZhY2UgVGVzdFByb3RvY29sVGVzdFBhcmFtZXRl
ckJ1bmRsZSA6IFByb3RvY29sSlNPTk9iamVjdAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29s
dW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0
cmluZyAqKW5vdGVzIHRpbWVzdGFtcDooZG91YmxlKXRpbWVzdGFtcCB2YWx1ZXM6KFByb3RvY29s
SlNPTk9iamVjdCAqKXZhbHVlcyBwYXlsb2FkOihQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2Fk
IGVycm9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICopZXJyb3I7CitAaW50ZXJmYWNlIFRl
c3RQcm90b2NvbFRlc3RQYXJhbWV0ZXJCdW5kbGUgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8g
Kiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKilub3RlcyB0aW1lc3RhbXA6KGRvdWJsZSl0
aW1lc3RhbXAgdmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMgcGF5bG9hZDoo
UldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZCBlcnJvcjooVGVzdFByb3RvY29sRGF0YWJh
c2VFcnJvciAqKWVycm9yOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqY29sdW1uTmFtZXM7CiAvKiByZXF1aXJlZCAqLyBA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKm5vdGVzOwogLyogcmVxdWlyZWQg
Ki8gQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgZG91YmxlIHRpbWVzdGFtcDsKLS8qIHJl
cXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFByb3RvY29sSlNPTk9iamVj
dCAqdmFsdWVzOwotLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikg
UHJvdG9jb2xKU09OT2JqZWN0ICpwYXlsb2FkOworLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChu
b25hdG9taWMsIHJldGFpbikgUldJUHJvdG9jb2xKU09OT2JqZWN0ICp2YWx1ZXM7CisvKiByZXF1
aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBSV0lQcm90b2NvbEpTT05PYmpl
Y3QgKnBheWxvYWQ7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWlu
KSBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICplcnJvcjsKIEBlbmQKIApAQCAtMTMwMyw3ICsx
MzAzLDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAvLyBieSB0
aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJh
dGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbXBvcnQgIlRlc3RQcm90b2Nv
bC5oIgotI2ltcG9ydCAiVGVzdFByb3RvY29sSlNPTk9iamVjdEludGVybmFsLmgiCisjaW1wb3J0
ICJUZXN0UHJvdG9jb2xKU09OT2JqZWN0UHJpdmF0ZS5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KIApAQCAtMTQyMywyNCArMTQyMywyNCBAQCB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIHJldHVybiBbc3VwZXIgZG91YmxlRm9yS2V5OkAidGlt
ZXN0YW1wIl07CiB9CiAKLS0gKHZvaWQpc2V0VmFsdWVzOihQcm90b2NvbEpTT05PYmplY3QgKil2
YWx1ZXMKKy0gKHZvaWQpc2V0VmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMK
IHsKICAgICBbc3VwZXIgc2V0T2JqZWN0OnZhbHVlcyBmb3JLZXk6QCJ2YWx1ZXMiXTsKIH0KIAot
LSAoUHJvdG9jb2xKU09OT2JqZWN0ICopdmFsdWVzCistIChSV0lQcm90b2NvbEpTT05PYmplY3Qg
Kil2YWx1ZXMKIHsKLSAgICByZXR1cm4gKFByb3RvY29sSlNPTk9iamVjdCAqKVtzdXBlciBvYmpl
Y3RGb3JLZXk6QCJ2YWx1ZXMiXTsKKyAgICByZXR1cm4gKFJXSVByb3RvY29sSlNPTk9iamVjdCAq
KVtzdXBlciBvYmplY3RGb3JLZXk6QCJ2YWx1ZXMiXTsKIH0KIAotLSAodm9pZClzZXRQYXlsb2Fk
OihQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkCistICh2b2lkKXNldFBheWxvYWQ6KFJXSVBy
b3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQKIHsKICAgICBbc3VwZXIgc2V0T2JqZWN0OnBheWxv
YWQgZm9yS2V5OkAicGF5bG9hZCJdOwogfQogCi0tIChQcm90b2NvbEpTT05PYmplY3QgKilwYXls
b2FkCistIChSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkCiB7Ci0gICAgcmV0dXJuIChQ
cm90b2NvbEpTT05PYmplY3QgKilbc3VwZXIgb2JqZWN0Rm9yS2V5OkAicGF5bG9hZCJdOworICAg
IHJldHVybiAoUldJUHJvdG9jb2xKU09OT2JqZWN0ICopW3N1cGVyIG9iamVjdEZvcktleTpAInBh
eWxvYWQiXTsKIH0KIAogLSAodm9pZClzZXRFcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJv
ciAqKWVycm9yCkBAIC0xNDY4LDcgKzE0NjgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiBAaW1wbGVtZW50YXRpb24gVGVzdFByb3RvY29sRGF0YWJhc2VQYXJhbWV0ZXJCdW5kbGUK
IAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmlu
Zz4qLyAqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKW5vdGVzIHRpbWVzdGFtcDooZG91
YmxlKXRpbWVzdGFtcCB2YWx1ZXM6KFByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVlcyBwYXlsb2Fk
OihQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkIGVycm9yOihUZXN0UHJvdG9jb2xEYXRhYmFz
ZUVycm9yICopZXJyb3IgZXJyb3JMaXN0OihOU0FycmF5Lyo8VGVzdFByb3RvY29sRGF0YWJhc2VF
cnJvcj4qLyAqKWVycm9yTGlzdDsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbHVtbk5hbWVz
OihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKilu
b3RlcyB0aW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAgdmFsdWVzOihSV0lQcm90b2NvbEpTT05P
YmplY3QgKil2YWx1ZXMgcGF5bG9hZDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZCBl
cnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKWVycm9yIGVycm9yTGlzdDooTlNBcnJh
eS8qPFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I+Ki8gKillcnJvckxpc3Q7CiB7CiAgICAgc2Vs
ZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCkBAIC0xNTIzLDI0ICsxNTIzLDI0IEBA
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgcmV0dXJuIFtzdXBlciBkb3VibGVGb3JL
ZXk6QCJ0aW1lc3RhbXAiXTsKIH0KIAotLSAodm9pZClzZXRWYWx1ZXM6KFByb3RvY29sSlNPTk9i
amVjdCAqKXZhbHVlcworLSAodm9pZClzZXRWYWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVjdCAq
KXZhbHVlcwogewogICAgIFtzdXBlciBzZXRPYmplY3Q6dmFsdWVzIGZvcktleTpAInZhbHVlcyJd
OwogfQogCi0tIChQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMKKy0gKFJXSVByb3RvY29sSlNP
Tk9iamVjdCAqKXZhbHVlcwogewotICAgIHJldHVybiAoUHJvdG9jb2xKU09OT2JqZWN0ICopW3N1
cGVyIG9iamVjdEZvcktleTpAInZhbHVlcyJdOworICAgIHJldHVybiAoUldJUHJvdG9jb2xKU09O
T2JqZWN0ICopW3N1cGVyIG9iamVjdEZvcktleTpAInZhbHVlcyJdOwogfQogCi0tICh2b2lkKXNl
dFBheWxvYWQ6KFByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQKKy0gKHZvaWQpc2V0UGF5bG9h
ZDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZAogewogICAgIFtzdXBlciBzZXRPYmpl
Y3Q6cGF5bG9hZCBmb3JLZXk6QCJwYXlsb2FkIl07CiB9CiAKLS0gKFByb3RvY29sSlNPTk9iamVj
dCAqKXBheWxvYWQKKy0gKFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQKIHsKLSAgICBy
ZXR1cm4gKFByb3RvY29sSlNPTk9iamVjdCAqKVtzdXBlciBvYmplY3RGb3JLZXk6QCJwYXlsb2Fk
Il07CisgICAgcmV0dXJuIChSV0lQcm90b2NvbEpTT05PYmplY3QgKilbc3VwZXIgb2JqZWN0Rm9y
S2V5OkAicGF5bG9hZCJdOwogfQogCiAtICh2b2lkKXNldEVycm9yOihUZXN0UHJvdG9jb2xEYXRh
YmFzZUVycm9yICopZXJyb3IKQEAgLTE2NDgsNyArMTY0OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0UHJvdG9jb2xUZXN0UGFyYW1ldGVyQnVu
ZGxlCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNT
dHJpbmc+Ki8gKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKilub3RlcyB0aW1lc3RhbXA6
KGRvdWJsZSl0aW1lc3RhbXAgdmFsdWVzOihQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMgcGF5
bG9hZDooUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZCBlcnJvcjooVGVzdFByb3RvY29sRGF0
YWJhc2VFcnJvciAqKWVycm9yOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29sdW1uTmFtZXM6
KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKW5v
dGVzIHRpbWVzdGFtcDooZG91YmxlKXRpbWVzdGFtcCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9i
amVjdCAqKXZhbHVlcyBwYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkIGVy
cm9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICopZXJyb3I7CiB7CiAgICAgc2VsZiA9IFtz
dXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCkBAIC0xNzAwLDI0ICsxNzAwLDI0IEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgcmV0dXJuIFtzdXBlciBkb3VibGVGb3JLZXk6QCJ0
aW1lc3RhbXAiXTsKIH0KIAotLSAodm9pZClzZXRWYWx1ZXM6KFByb3RvY29sSlNPTk9iamVjdCAq
KXZhbHVlcworLSAodm9pZClzZXRWYWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVl
cwogewogICAgIFtzdXBlciBzZXRPYmplY3Q6dmFsdWVzIGZvcktleTpAInZhbHVlcyJdOwogfQog
Ci0tIChQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMKKy0gKFJXSVByb3RvY29sSlNPTk9iamVj
dCAqKXZhbHVlcwogewotICAgIHJldHVybiAoUHJvdG9jb2xKU09OT2JqZWN0ICopW3N1cGVyIG9i
amVjdEZvcktleTpAInZhbHVlcyJdOworICAgIHJldHVybiAoUldJUHJvdG9jb2xKU09OT2JqZWN0
ICopW3N1cGVyIG9iamVjdEZvcktleTpAInZhbHVlcyJdOwogfQogCi0tICh2b2lkKXNldFBheWxv
YWQ6KFByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQKKy0gKHZvaWQpc2V0UGF5bG9hZDooUldJ
UHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZAogewogICAgIFtzdXBlciBzZXRPYmplY3Q6cGF5
bG9hZCBmb3JLZXk6QCJwYXlsb2FkIl07CiB9CiAKLS0gKFByb3RvY29sSlNPTk9iamVjdCAqKXBh
eWxvYWQKKy0gKFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQKIHsKLSAgICByZXR1cm4g
KFByb3RvY29sSlNPTk9iamVjdCAqKVtzdXBlciBvYmplY3RGb3JLZXk6QCJwYXlsb2FkIl07Cisg
ICAgcmV0dXJuIChSV0lQcm90b2NvbEpTT05PYmplY3QgKilbc3VwZXIgb2JqZWN0Rm9yS2V5OkAi
cGF5bG9hZCJdOwogfQogCiAtICh2b2lkKXNldEVycm9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUVy
cm9yICopZXJyb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24t
cmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKaW5kZXggZTNh
NzIwN2U3ZDQ0ZWMzY2MxZTA5NDNkMTk5ODk5Y2JlMGI1ZGU2Zi4uMGI1NTYwMzdhNzRiM2EwNzQ4
YTM3YTU0YjQ4YmZlYWZlODcwMjk3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUt
Y2FzdHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1y
ZXN1bHQKQEAgLTk4OSw3ICs5ODksNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIC8vIERPIE5P
VCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBl
LXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9j
b2wtYmluZGluZ3MucHkKIAotI2ltcG9ydCAiVGVzdFByb3RvY29sQXJyYXlDb252ZXJzaW9uSGVs
cGVycy5oIgorI2ltcG9ydCAiUldJUHJvdG9jb2xBcnJheUNvbnZlcnNpb25IZWxwZXJzLmgiCiAK
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCkBAIC0xMTM2LDcgKzExMzYsNyBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAot
I2ltcG9ydCA8V2ViSW5zcGVjdG9yL1Rlc3RQcm90b2NvbEpTT05PYmplY3QuaD4KKyNpbXBvcnQg
PFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3QuaD4KIAogCiBAY2xhc3MgVGVzdFBy
b3RvY29sVGVzdFR5cGVOZWVkaW5nQ2FzdDsKQEAgLTExNjAsNyArMTE2MCw3IEBAIHR5cGVkZWYg
TlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzKSB7CiAKIAog
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCi1AaW50ZXJmYWNlIFRlc3RQ
cm90b2NvbFRlc3RUeXBlTmVlZGluZ0Nhc3QgOiBQcm90b2NvbEpTT05PYmplY3QKK0BpbnRlcmZh
Y2UgVGVzdFByb3RvY29sVGVzdFR5cGVOZWVkaW5nQ2FzdCA6IFJXSVByb3RvY29sSlNPTk9iamVj
dAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBudW1i
ZXI6KGludCludW1iZXIgYW5pbWFsczooVGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHMpYW5p
bWFscyBpZGVudGlmaWVyOihpbnQpaWRlbnRpZmllciB0cmVlOihUZXN0UHJvdG9jb2xUZXN0UmVj
dXJzaXZlT2JqZWN0MSAqKXRyZWU7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgTlNTdHJpbmcgKnN0cmluZzsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBhc3NpZ24pIGludCBudW1iZXI7CkBAIC0xMTcwLDEyICsxMTcwLDEyIEBAIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGVuZAogCiBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKLUBpbnRlcmZhY2UgVGVzdFByb3RvY29sVGVzdFJl
Y3Vyc2l2ZU9iamVjdDEgOiBQcm90b2NvbEpTT05PYmplY3QKK0BpbnRlcmZhY2UgVGVzdFByb3Rv
Y29sVGVzdFJlY3Vyc2l2ZU9iamVjdDEgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKIC8qIG9wdGlv
bmFsICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFRlc3RQcm90b2NvbFRlc3RSZWN1
cnNpdmVPYmplY3QyICpvYmo7CiBAZW5kCiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJk
ZWZhdWx0IikpKQotQGludGVyZmFjZSBUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MiA6
IFByb3RvY29sSlNPTk9iamVjdAorQGludGVyZmFjZSBUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZl
T2JqZWN0MiA6IFJXSVByb3RvY29sSlNPTk9iamVjdAogLyogb3B0aW9uYWwgKi8gQHByb3BlcnR5
IChub25hdG9taWMsIHJldGFpbikgVGVzdFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVjdDEgKm9i
ajsKIEBlbmQKIApAQCAtMTIxOCw3ICsxMjE4LDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSAoImRlZmF1bHQiKSkpCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5
CiAKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgotI2ltcG9ydCAiVGVzdFByb3RvY29sSlNPTk9i
amVjdEludGVybmFsLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xKU09OT2JqZWN0UHJpdmF0ZS5o
IgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVy
Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KIAo=
</data>
<flag name="review"
          id="296871"
          type_id="1"
          status="+"
          setter="timothy"
    />
    <flag name="commit-queue"
          id="296876"
          type_id="3"
          status="-"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>