<?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>182017</bug_id>
          
          <creation_ts>2018-01-23 14:55:59 -0800</creation_ts>
          <short_desc>Update Poisoned pointers to take a Poison class instead of a uintptr_t&amp;.</short_desc>
          <delta_ts>2018-01-24 09:43:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1392272</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-23 14:55:59 -0800</bug_when>
    <thetext>This paves the way for custom poison values which we&apos;ll need for use in TypedArrays later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392273</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-23 14:56:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/36795513&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392314</commentid>
    <comment_count>2</comment_count>
      <attachid>332087</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-23 15:50:54 -0800</bug_when>
    <thetext>Created attachment 332087
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392315</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-01-23 15:52:58 -0800</bug_when>
    <thetext>Attachment 332087 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSCPoison.cpp:36:  POISON_KEY_NAME is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
WARNING: This machine could support 4 simulators, but is only configured for 3.
WARNING: Please see &lt;https://trac.webkit.org/wiki/IncreasingKernelLimits&gt;.
Total errors found: 1 in 53 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>1392319</commentid>
    <comment_count>4</comment_count>
      <attachid>332087</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-01-23 15:58:43 -0800</bug_when>
    <thetext>Comment on attachment 332087
proposed patch.

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

&gt; Source/WTF/wtf/Poisoned.h:203
&gt; +    ALWAYS_INLINE static PoisonedBits poison(const Poisoned* thisPoisoned, U ptr) { return ptr ? bitwise_cast&lt;PoisonedBits&gt;(ptr) ^ Poison::key(thisPoisoned) : 0; }

Note sure if passing Poisoned does what you&apos;ll eventually want.

The caller that poisons and unpoisons pointers may have any amount of context information available, and that information may not be in `this`.  But, I&apos;m OK with this change, because I can see how this would work for typed arrays.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392321</commentid>
    <comment_count>5</comment_count>
      <attachid>332087</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-01-23 16:02:03 -0800</bug_when>
    <thetext>Comment on attachment 332087
proposed patch.

r=me assuming breakage is gone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392604</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-24 09:42:26 -0800</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #4)
&gt; Comment on attachment 332087 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=332087&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/Poisoned.h:203
&gt; &gt; +    ALWAYS_INLINE static PoisonedBits poison(const Poisoned* thisPoisoned, U ptr) { return ptr ? bitwise_cast&lt;PoisonedBits&gt;(ptr) ^ Poison::key(thisPoisoned) : 0; }
&gt; 
&gt; Note sure if passing Poisoned does what you&apos;ll eventually want.

Yes, it does what I want.  I use the Poisoned this pointer to infer the this pointer of the object embedding it.  The need for this will become clear later in my implementation for TypeArray poisoning.  The poisoning there isn&apos;t based on a C++ compile time type, but rather needs to be runtime determined (for reasons I&apos;ll elaborate on later in that patch).

&gt; The caller that poisons and unpoisons pointers may have any amount of
&gt; context information available, and that information may not be in `this`. 
&gt; But, I&apos;m OK with this change, because I can see how this would work for
&gt; typed arrays.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392605</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-24 09:43:49 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r227527: &lt;http://trac.webkit.org/r227527&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332087</attachid>
            <date>2018-01-23 15:50:54 -0800</date>
            <delta_ts>2018-01-23 15:58:43 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-182017.patch</filename>
            <type>text/plain</type>
            <size>129561</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI3NDQ5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBA
CisyMDE4LTAxLTIzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBV
cGRhdGUgUG9pc29uZWQgcG9pbnRlcnMgdG8gdGFrZSBhIFBvaXNvbiBjbGFzcyBpbnN0ZWFkIG9m
IGEgdWludHB0cl90Ji4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MjAxNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzY3OTU1MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCB0aGUgUE9J
U09OKCkgbWFjcm8uICBOb3cgdGhhdCB3ZSBoYXZlIFBvaXNvbiB0eXBlcywgd2UgY2FuIGp1c3Qg
dXNlIHRoZQorICAgICAgICB0aGUgUG9pc29uIHR5cGUgaW5zdGVhZCBhbmQgbWFrZSB0aGUgY29k
ZSBhIGJpdCBuaWNlciB0byByZWFkLgorCisgICAgICAgICogQVBJL0pTQVBJV3JhcHBlck9iamVj
dC5oOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaDoKKyAgICAgICAgKiBBUEkv
SlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAqIGIzL0IzTG93ZXJNYWNyb3MuY3BwOgorICAg
ICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0SW50ZXJwcmV0ZXIp
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6Omluc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aW5zdHJ1Y3Rpb25z
IGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6YWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGVyVGh1bmsp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1N1YkNsYXNzKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEludEp1bXApOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQ2hlY2tTdWJDbGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAq
IGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp2aXJ0dWFsVGh1bmtGb3Ip
OgorICAgICAgICAoSlNDOjpuYXRpdmVGb3JHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpib3Vu
ZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAgICAqIHBhcnNlci9Vbmxp
bmtlZFNvdXJjZUNvZGUuaDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmg6Cisg
ICAgICAgICogcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKiBydW50aW1l
L0RhdGVJbnN0YW5jZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlND
UG9pc29uLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZVBvaXNvbik6CisgICAgICAgICog
cnVudGltZS9KU0NQb2lzb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTY3JpcHRGZXRjaGVyLmg6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFeGVj
dXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaDoK
KyAgICAgICAgKiBydW50aW1lL1dyaXRlQmFycmllci5oOgorICAgICAgICAoSlNDOjpXcml0ZUJh
cnJpZXI6OnBvaXNvbik6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6
CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICog
d2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseUNvZGVCbG9jazo6SlNXZWJBc3NlbWJseUNvZGVCbG9jayk6CisgICAgICAgICogd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmg6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFz
c2VtYmx5SW5zdGFuY2UuaDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpw
b2lzb24pOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5oOgorICAgICAg
ICAqIHdhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oOgorICAgICAgICAqIHdhc20vanMvSlNX
ZWJBc3NlbWJseVRhYmxlLmg6CisgICAgICAgICogd2FzbS9qcy9XYXNtVG9KUy5jcHA6CisgICAg
ICAgIChKU0M6Oldhc206OmhhbmRsZUJhZEk2NFVzZSk6CisgICAgICAgIChKU0M6Oldhc206Ondh
c21Ub0pTKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb25CYXNlLmg6Cisg
ICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oOgorICAgICAgICAqIHdh
c20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3Nl
bWJseVdyYXBwZXJGdW5jdGlvbi5oOgorCiAyMDE4LTAxLTIzICBSb2JpbiBNb3Jpc3NldCAgPHJt
b3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgUm9sbG91dCByMjE5NjM2CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgJKHJldmlzaW9u
IDIyNzQ0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHJvdGVjdGVkOgogICAgIEpTQVBJ
V3JhcHBlck9iamVjdChWTSYsIFN0cnVjdHVyZSopOwogCiBwcml2YXRlOgotICAgIFBvaXNvbmVk
PFBPSVNPTihKU0FQSVdyYXBwZXJPYmplY3QpLCB2b2lkKj4gbV93cmFwcGVkT2JqZWN0OworICAg
IFBvaXNvbmVkPEpTQVBJV3JhcHBlck9iamVjdFBvaXNvbiwgdm9pZCo+IG1fd3JhcHBlZE9iamVj
dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCShyZXZpc2lvbiAyMjc0NDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9u
Q2FsbGJhY2sgZnVuY3Rpb25DYWxsYmFjaygpIHsgcmV0dXJuIG1fY2FsbGJhY2sudW5wb2lzb25l
ZCgpOyB9CiAKLSAgICBQb2lzb25lZDxQT0lTT04oTmF0aXZlQ29kZSksIEpTT2JqZWN0Q2FsbEFz
RnVuY3Rpb25DYWxsYmFjaz4gbV9jYWxsYmFjazsKKyAgICBQb2lzb25lZDxOYXRpdmVDb2RlUG9p
c29uLCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2s+IG1fY2FsbGJhY2s7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdC5oCShyZXZpc2lvbiAyMjc0NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjM0LDcgKzIzNCw3
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHN0YXRpY0Z1bmN0aW9uR2V0
dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSwgUHJvcGVydHlOYW1lKTsKIAotICAgIFdURjo6UG9pc29uZWRVbmlxdWVQdHI8UE9JU09OKEpT
Q2FsbGJhY2tPYmplY3QpLCBKU0NhbGxiYWNrT2JqZWN0RGF0YT4gbV9jYWxsYmFja09iamVjdERh
dGE7CisgICAgV1RGOjpQb2lzb25lZFVuaXF1ZVB0cjxKU0NhbGxiYWNrT2JqZWN0UG9pc29uLCBK
U0NhbGxiYWNrT2JqZWN0RGF0YT4gbV9jYWxsYmFja09iamVjdERhdGE7CiAgICAgUG9pc29uZWRD
bGFzc0luZm9QdHIgbV9jbGFzc0luZm87CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCShyZXZpc2lvbiAyMjc0NDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwNyw3
ICs1MDcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0
Y2ggPSBwYXJhbXMuZ3BTY3JhdGNoKDApOwogICAgICAgICAgICAgICAgICAgICAgICAgR1BSUmVn
IHBvaXNvblNjcmF0Y2ggPSBwYXJhbXMuZ3BTY3JhdGNoKDEpOwogCi0gICAgICAgICAgICAgICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChQT0lTT04oSklUQ29k
ZSkpLCBwb2lzb25TY3JhdGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpJVENvZGVQb2lzb246OmtleSgpKSwgcG9pc29uU2Ny
YXRjaCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoanVtcFRhYmxlKSwgc2NyYXRjaCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2gsIGluZGV4LCBDQ2Fs
bEhlbHBlcnM6OnRpbWVzUHRyKCkpLCBzY3JhdGNoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC54b3I2NChwb2lzb25TY3JhdGNoLCBzY3JhdGNoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjMuY3BwCShyZXZpc2lvbiAyMjc0NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwMzMsNyArMTMwMzMsNyBAQCB2
b2lkIHRlc3RJbnRlcnByZXRlcigpCiAgICAgICAgICAgICBHUFJSZWcgcG9pc29uU2NyYXRjaCA9
IHBhcmFtcy5ncFNjcmF0Y2goMSk7CiAKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihqdW1wVGFibGUpLCBzY3JhdGNoKTsKLSAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KFBPSVNPTihKSVRDb2RlKSksIHBvaXNvblNj
cmF0Y2gpOworICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQo
SklUQ29kZVBvaXNvbjo6a2V5KCkpLCBwb2lzb25TY3JhdGNoKTsKICAgICAgICAgICAgIGppdC5s
b2FkNjQoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRjaCwgcGFyYW1zWzBdLmdwcigpLCBD
Q2FsbEhlbHBlcnM6OnRpbWVzUHRyKCkpLCBzY3JhdGNoKTsKICAgICAgICAgICAgIGppdC54b3I2
NChwb2lzb25TY3JhdGNoLCBzY3JhdGNoKTsKICAgICAgICAgICAgIGppdC5qdW1wKHNjcmF0Y2gp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2
aXNpb24gMjI3NDQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksMTEgKzMxOSwxMSBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgdHlwZWRlZiBKU0M6Okluc3RydWN0aW9uIEluc3RydWN0aW9uOwotICAgIHR5cGVkZWYg
UG9pc29uZWRSZWZDb3VudGVkQXJyYXk8UE9JU09OKENvZGVCbG9jayksIEluc3RydWN0aW9uPiYg
VW5wYWNrZWRJbnN0cnVjdGlvbnM7CisgICAgdHlwZWRlZiBQb2lzb25lZFJlZkNvdW50ZWRBcnJh
eTxDb2RlQmxvY2tQb2lzb24sIEluc3RydWN0aW9uPiYgVW5wYWNrZWRJbnN0cnVjdGlvbnM7CiAK
ICAgICB1bnNpZ25lZCBudW1iZXJPZkluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5z
dHJ1Y3Rpb25zLnNpemUoKTsgfQotICAgIFBvaXNvbmVkUmVmQ291bnRlZEFycmF5PFBPSVNPTihD
b2RlQmxvY2spLCBJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1
Y3Rpb25zOyB9Ci0gICAgY29uc3QgUG9pc29uZWRSZWZDb3VudGVkQXJyYXk8UE9JU09OKENvZGVC
bG9jayksIEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0
cnVjdGlvbnM7IH0KKyAgICBQb2lzb25lZFJlZkNvdW50ZWRBcnJheTxDb2RlQmxvY2tQb2lzb24s
IEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0K
KyAgICBjb25zdCBQb2lzb25lZFJlZkNvdW50ZWRBcnJheTxDb2RlQmxvY2tQb2lzb24sIEluc3Ry
dWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0K
IAogICAgIHNpemVfdCBwcmVkaWN0ZWRNYWNoaW5lQ29kZVNpemUoKTsKIApAQCAtOTU5LDMwICs5
NTksMzAgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlQmFz
ZT4gbV9vd25lckV4ZWN1dGFibGU7CiAgICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2U+IG1fb3duZXJFZGdlOwotICAgIFBvaXNvbmVkPFBPSVNPTihDb2RlQmxvY2spLCBW
TSo+IG1fcG9pc29uZWRWTTsKKyAgICBQb2lzb25lZDxDb2RlQmxvY2tQb2lzb24sIFZNKj4gbV9w
b2lzb25lZFZNOwogCi0gICAgUG9pc29uZWRSZWZDb3VudGVkQXJyYXk8UE9JU09OKENvZGVCbG9j
ayksIEluc3RydWN0aW9uPiBtX2luc3RydWN0aW9uczsKKyAgICBQb2lzb25lZFJlZkNvdW50ZWRB
cnJheTxDb2RlQmxvY2tQb2lzb24sIEluc3RydWN0aW9uPiBtX2luc3RydWN0aW9uczsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgbV90aGlzUmVnaXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2Nv
cGVSZWdpc3RlcjsKICAgICBtdXRhYmxlIENvZGVCbG9ja0hhc2ggbV9oYXNoOwogCi0gICAgUG9p
c29uZWRSZWZQdHI8UE9JU09OKENvZGVCbG9jayksIFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZTsK
KyAgICBQb2lzb25lZFJlZlB0cjxDb2RlQmxvY2tQb2lzb24sIFNvdXJjZVByb3ZpZGVyPiBtX3Nv
dXJjZTsKICAgICB1bnNpZ25lZCBtX3NvdXJjZU9mZnNldDsKICAgICB1bnNpZ25lZCBtX2ZpcnN0
TGluZUNvbHVtbk9mZnNldDsKIAogICAgIFJlZkNvdW50ZWRBcnJheTxMTEludENhbGxMaW5rSW5m
bz4gbV9sbGludENhbGxMaW5rSW5mb3M7CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PExMSW50Q2Fs
bExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4+IG1faW5j
b21pbmdMTEludENhbGxzOwogICAgIFN0cnVjdHVyZVdhdGNocG9pbnRNYXAgbV9sbGludEdldEJ5
SWRXYXRjaHBvaW50TWFwOwotICAgIFBvaXNvbmVkUmVmUHRyPFBPSVNPTihDb2RlQmxvY2spLCBK
SVRDb2RlPiBtX2ppdENvZGU7CisgICAgUG9pc29uZWRSZWZQdHI8Q29kZUJsb2NrUG9pc29uLCBK
SVRDb2RlPiBtX2ppdENvZGU7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVnaXN0ZXJBdE9mZnNldExpc3Q+IG1fY2FsbGVlU2F2ZVJlZ2lzdGVyczsKLSAgICBQb2lzb25l
ZEJhZzxQT0lTT04oQ29kZUJsb2NrKSwgU3RydWN0dXJlU3R1YkluZm8+IG1fc3R1YkluZm9zOwot
ICAgIFBvaXNvbmVkQmFnPFBPSVNPTihDb2RlQmxvY2spLCBKSVRBZGRJQz4gbV9hZGRJQ3M7Ci0g
ICAgUG9pc29uZWRCYWc8UE9JU09OKENvZGVCbG9jayksIEpJVE11bElDPiBtX211bElDczsKLSAg
ICBQb2lzb25lZEJhZzxQT0lTT04oQ29kZUJsb2NrKSwgSklUTmVnSUM+IG1fbmVnSUNzOwotICAg
IFBvaXNvbmVkQmFnPFBPSVNPTihDb2RlQmxvY2spLCBKSVRTdWJJQz4gbV9zdWJJQ3M7Ci0gICAg
UG9pc29uZWRCYWc8UE9JU09OKENvZGVCbG9jayksIEJ5VmFsSW5mbz4gbV9ieVZhbEluZm9zOwot
ICAgIFBvaXNvbmVkQmFnPFBPSVNPTihDb2RlQmxvY2spLCBDYWxsTGlua0luZm8+IG1fY2FsbExp
bmtJbmZvczsKKyAgICBQb2lzb25lZEJhZzxDb2RlQmxvY2tQb2lzb24sIFN0cnVjdHVyZVN0dWJJ
bmZvPiBtX3N0dWJJbmZvczsKKyAgICBQb2lzb25lZEJhZzxDb2RlQmxvY2tQb2lzb24sIEpJVEFk
ZElDPiBtX2FkZElDczsKKyAgICBQb2lzb25lZEJhZzxDb2RlQmxvY2tQb2lzb24sIEpJVE11bElD
PiBtX211bElDczsKKyAgICBQb2lzb25lZEJhZzxDb2RlQmxvY2tQb2lzb24sIEpJVE5lZ0lDPiBt
X25lZ0lDczsKKyAgICBQb2lzb25lZEJhZzxDb2RlQmxvY2tQb2lzb24sIEpJVFN1YklDPiBtX3N1
YklDczsKKyAgICBQb2lzb25lZEJhZzxDb2RlQmxvY2tQb2lzb24sIEJ5VmFsSW5mbz4gbV9ieVZh
bEluZm9zOworICAgIFBvaXNvbmVkQmFnPENvZGVCbG9ja1BvaXNvbiwgQ2FsbExpbmtJbmZvPiBt
X2NhbGxMaW5rSW5mb3M7CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PENhbGxMaW5rSW5mbywgQmFz
aWNSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPj4gbV9pbmNvbWluZ0NhbGxzOwogICAgIFNl
bnRpbmVsTGlua2VkTGlzdDxQb2x5bW9ycGhpY0NhbGxOb2RlLCBCYXNpY1Jhd1NlbnRpbmVsTm9k
ZTxQb2x5bW9ycGhpY0NhbGxOb2RlPj4gbV9pbmNvbWluZ1BvbHltb3JwaGljQ2FsbHM7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFBDVG9Db2RlT3JpZ2luTWFwPiBtX3BjVG9Db2RlT3JpZ2luTWFwOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlckNvbW1vbi5oCShyZXZpc2lvbiAyMjc0NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4
Nyw3IEBAIHZvaWQgYWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGUKICAgICAvLyBX
ZSBuZWVkIHRvIG1ha2Ugc3VyZSBTUCBpcyBjb3JyZWN0IGluIGNhc2Ugb2YgYW4gZXhjZXB0aW9u
LgogICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihSZWdpc3RlcikpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6OmppdENvZGVP
ZmZzZXQoKSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICBqaXQueG9yUHRyKE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKFBPSVNPTihDb2RlQmxvY2spKSwgR1BSSW5mbzo6cmVnVDApOworICAg
IGppdC54b3JQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoQ29kZUJsb2NrUG9pc29u
OjprZXkoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoSklUQ29kZVR5cGU6OmNvbW1vbkRhdGFPZmZzZXQoKSksIEdQUkluZm86
OnJlZ1QwKTsKICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86
OnJlZ1QwLCBDb21tb25EYXRhOjpmcmFtZVJlZ2lzdGVyQ291bnRPZmZzZXQoKSksIEdQUkluZm86
OnJlZ1QwKTsKICAgICAvLyBUaGlzIGRvZXMgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVS
ZWdpc3RlckNvdW50IC0gMSkqc2l6ZW9mKFJlZ2lzdGVyKSB3aGVyZToKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAy
Mjc0NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODY2Myw3ICs4NjYzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUNoZWNrU3ViQ2xhcwogICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSgq
bV9qaXQudm0oKSwgYmFzZUdQUiwgb3RoZXJHUFIsIHNwZWNpZmllZEdQUik7CiAgICAgICAgIG1f
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG90aGVyR1BSLCBTdHJ1Y3R1cmU6OmNs
YXNzSW5mb09mZnNldCgpKSwgb3RoZXJHUFIpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAg
IG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoUE9JU09OKEdsb2JhbERhdGEp
KSwgc3BlY2lmaWVkR1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW02NChHbG9iYWxEYXRhUG9pc29uOjprZXkoKSksIHNwZWNpZmllZEdQUik7CiAgICAgICAg
IG1faml0LnhvcjY0KHNwZWNpZmllZEdQUiwgb3RoZXJHUFIpOwogI2VuZGlmCiAgICAgICAgIG1f
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG5vZGUtPmNsYXNzSW5mbygpKSwg
c3BlY2lmaWVkR1BSKTsKQEAgLTk3ODEsNyArOTc4MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRTd2l0Y2hJbnRKdW1wKAogICAgICAgICBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CiAg
ICAgVU5VU0VEX1BBUkFNKHBvaXNvblNjcmF0Y2gpOyAvLyBQbGFjYXRlIHRoZSAzMi1iaXQgYnVp
bGQuCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChQT0lT
T04oSklUQ29kZSkpLCBwb2lzb25TY3JhdGNoKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02
NChKSVRDb2RlUG9pc29uOjprZXkoKSksIHBvaXNvblNjcmF0Y2gpOwogI2VuZGlmCiAgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tUHRyKHRhYmxlLmN0aU9mZnNldHMuYmVnaW4oKSksIHNjcmF0Y2gp
OwogICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChzY3JhdGNoLCB2YWx1
ZSwgSklUQ29tcGlsZXI6OnRpbWVzUHRyKCkpLCBzY3JhdGNoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIyNzQ0OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE0MjcsNyArMTE0MjcsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBM
VmFsdWUgc3RydWN0dXJlID0gbG9hZFN0cnVjdHVyZShjZWxsKTsKICAgICAgICAgICAgIExWYWx1
ZSBwb2lzb25lZENsYXNzSW5mbyA9IG1fb3V0LmxvYWRQdHIoc3RydWN0dXJlLCBtX2hlYXBzLlN0
cnVjdHVyZV9jbGFzc0luZm8pOwotICAgICAgICAgICAgTFZhbHVlIGNsYXNzSW5mbyA9IG1fb3V0
LmJpdFhvcihwb2lzb25lZENsYXNzSW5mbywgbV9vdXQuY29uc3RJbnQ2NChQT0lTT04oR2xvYmFs
RGF0YSkpKTsKKyAgICAgICAgICAgIExWYWx1ZSBjbGFzc0luZm8gPSBtX291dC5iaXRYb3IocG9p
c29uZWRDbGFzc0luZm8sIG1fb3V0LmNvbnN0SW50NjQoR2xvYmFsRGF0YVBvaXNvbjo6a2V5KCkp
KTsKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG90aGVyQXRTdGFydCA9IG1fb3V0LmFuY2hv
cihjbGFzc0luZm8pOwogICAgICAgICAgICAgbV9vdXQuanVtcChsb29wKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMjc0NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC05MDQsNyArOTA0LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgSW50ZXJwcmV0ZXIqIG1faW50ZXJwcmV0ZXI7CiAKLSAgICAg
ICAgUG9pc29uZWRSZWZDb3VudGVkQXJyYXk8UE9JU09OKENvZGVCbG9jayksIEluc3RydWN0aW9u
PiBtX2luc3RydWN0aW9uczsKKyAgICAgICAgUG9pc29uZWRSZWZDb3VudGVkQXJyYXk8Q29kZUJs
b2NrUG9pc29uLCBJbnN0cnVjdGlvbj4gbV9pbnN0cnVjdGlvbnM7CiAKICAgICAgICAgVmVjdG9y
PENhbGxSZWNvcmQ+IG1fY2FsbHM7CiAgICAgICAgIFZlY3RvcjxMYWJlbD4gbV9sYWJlbHM7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShy
ZXZpc2lvbiAyMjc0NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgdmlydHVhbFRodW5rRm9yKFZNCiAgICAgLy8gTm93IHdlIGtub3cgdGhhdCB3ZSBo
YXZlIGEgQ29kZUJsb2NrLCBhbmQgd2UncmUgY29tbWl0dGVkIHRvIG1ha2luZyBhIGZhc3QKICAg
ICAvLyBjYWxsLgogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tNjQoUE9JU09OKEpJVENvZGUpKSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpJVENvZGVQb2lzb246OmtleSgpKSwg
R1BSSW5mbzo6cmVnVDEpOwogICAgIGppdC54b3I2NChHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6
cmVnVDQpOwogI2VuZGlmCiAKQEAgLTMxMCw3ICszMTAsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIG5hdGl2ZUZvckdlCiAgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklU
OjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6cjksIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKSwg
WDg2UmVnaXN0ZXJzOjpyOSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGppdC5sb2FkUHRyKEpTSW50
ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZXNpLCBJbnRlcm5hbEZ1bmN0aW9uOjpv
ZmZzZXRPZk5hdGl2ZUZ1bmN0aW9uRm9yKGtpbmQpKSwgWDg2UmVnaXN0ZXJzOjpyOSk7Ci0gICAg
aml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW02NChQT0lTT04oTmF0aXZlQ29kZSkp
LCBYODZSZWdpc3RlcnM6OmVzaSk7CisgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0
ZWRJbW02NChOYXRpdmVDb2RlUG9pc29uOjprZXkoKSksIFg4NlJlZ2lzdGVyczo6ZXNpKTsKICAg
ICBqaXQueG9yNjQoWDg2UmVnaXN0ZXJzOjplc2ksIFg4NlJlZ2lzdGVyczo6cjkpOwogICAgIGpp
dC5jYWxsKFg4NlJlZ2lzdGVyczo6cjkpOwogCkBAIC0zNDcsNyArMzQ3LDcgQEAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZQogICAgICAgICBqaXQubG9hZFB0cihKU0lu
dGVyZmFjZUpJVDo6QWRkcmVzcyhBUk02NFJlZ2lzdGVyczo6eDIsIGV4ZWN1dGFibGVPZmZzZXRU
b0Z1bmN0aW9uKSwgQVJNNjRSZWdpc3RlcnM6OngyKTsKICAgICB9IGVsc2UKICAgICAgICAgaml0
LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoQVJNNjRSZWdpc3RlcnM6OngxLCBJbnRl
cm5hbEZ1bmN0aW9uOjpvZmZzZXRPZk5hdGl2ZUZ1bmN0aW9uRm9yKGtpbmQpKSwgQVJNNjRSZWdp
c3RlcnM6OngyKTsKLSAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTY0KFBP
SVNPTihOYXRpdmVDb2RlKSksIEFSTTY0UmVnaXN0ZXJzOjp4MSk7CisgICAgaml0Lm1vdmUoSlNJ
bnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW02NChOYXRpdmVDb2RlUG9pc29uOjprZXkoKSksIEFSTTY0
UmVnaXN0ZXJzOjp4MSk7CiAgICAgaml0LnhvcjY0KEFSTTY0UmVnaXN0ZXJzOjp4MSwgQVJNNjRS
ZWdpc3RlcnM6OngyKTsKICAgICBqaXQuY2FsbChBUk02NFJlZ2lzdGVyczo6eDIpOwogCkBAIC0x
MTcxLDcgKzExNzEsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVu
CiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vQ29kZSA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxs
SGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDApOwogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoUE9JU09OKEpJVENvZGUp
KSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTY0KEpJVENvZGVQb2lzb246OmtleSgpKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgIGppdC54b3I2
NChHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDApOwogI2VuZGlmCiAgICAgZW1pdFBvaW50
ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6cmVnVDApOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9VbmxpbmtlZFNvdXJjZUNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1VubGlua2VkU291cmNlQ29kZS5oCShyZXZpc2lvbiAyMjc0
NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1VubGlua2VkU291cmNlQ29kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHJvdGVjdGVkOgogICAgICAgICAvLyBGSVhNRTogTWFrZSBpdCBQb2lzb25lZFJlZjxTb3VyY2VQ
cm92aWRpZXI+LgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY4MzI1Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBPSVNPTihVbmxpbmtlZFNvdXJj
ZUNvZGUpLCBTb3VyY2VQcm92aWRlcj4gbV9wcm92aWRlcjsKKyAgICAgICAgUG9pc29uZWRSZWZQ
dHI8VW5saW5rZWRTb3VyY2VDb2RlUG9pc29uLCBTb3VyY2VQcm92aWRlcj4gbV9wcm92aWRlcjsK
ICAgICAgICAgaW50IG1fc3RhcnRPZmZzZXQ7CiAgICAgICAgIGludCBtX2VuZE9mZnNldDsKICAg
ICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5oCShyZXZpc2lvbiAyMjc0NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw4ICs2Miw4IEBAIHByb3Rl
Y3RlZDoKIHByaXZhdGU6CiAgICAgLy8gVGhpcyBiaXQgaXMgc2V0IGlmIGFueSB1c2VyIG1vZGlm
aWVzIHRoZSBjb25zdHJ1Y3RvciBwcm9wZXJ0eSBBcnJheS5wcm90b3R5cGUuIFRoaXMgaXMgdXNl
ZCB0byBvcHRpbWl6ZSBzcGVjaWVzIGNyZWF0aW9uIGZvciBKU0FycmF5cy4KICAgICBmcmllbmQg
QXJyYXlQcm90b3R5cGVBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlXYXRjaHBvaW50OwotICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBPSVNPTihBcnJheVByb3RvdHlwZSksIEFycmF5UHJvdG90eXBlQWRh
cHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hwb2ludD4gbV9jb25zdHJ1Y3RvcldhdGNocG9pbnQ7
Ci0gICAgUG9pc29uZWRVbmlxdWVQdHI8UE9JU09OKEFycmF5UHJvdG90eXBlKSwgQXJyYXlQcm90
b3R5cGVBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlXYXRjaHBvaW50PiBtX2NvbnN0cnVjdG9yU3Bl
Y2llc1dhdGNocG9pbnQ7CisgICAgUG9pc29uZWRVbmlxdWVQdHI8QXJyYXlQcm90b3R5cGVQb2lz
b24sIEFycmF5UHJvdG90eXBlQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hwb2ludD4gbV9j
b25zdHJ1Y3RvcldhdGNocG9pbnQ7CisgICAgUG9pc29uZWRVbmlxdWVQdHI8QXJyYXlQcm90b3R5
cGVQb2lzb24sIEFycmF5UHJvdG90eXBlQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hwb2lu
dD4gbV9jb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50OwogfTsKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVy
LmgJKHJldmlzaW9uIDIyNzQ0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1
c3RvbUdldHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHByb3Rl
Y3RlZDoKIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHVzaW5nIFBv
aXNvbmVkQWNjZXNzb3IgPSBQb2lzb25lZDxQT0lTT04oTmF0aXZlQ29kZSksIFQ+OworICAgIHVz
aW5nIFBvaXNvbmVkQWNjZXNzb3IgPSBQb2lzb25lZDxOYXRpdmVDb2RlUG9pc29uLCBUPjsKIAog
ICAgIFBvaXNvbmVkQWNjZXNzb3I8Q3VzdG9tR2V0dGVyPiBtX2dldHRlcjsKICAgICBQb2lzb25l
ZEFjY2Vzc29yPEN1c3RvbVNldHRlcj4gbV9zZXR0ZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAkocmV2aXNpb24gMjI3NDQ5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBH
cmVnb3JpYW5EYXRlVGltZSogY2FsY3VsYXRlR3JlZ29yaWFuRGF0ZVRpbWUoRXhlY1N0YXRlKikg
Y29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGNh
bGN1bGF0ZUdyZWdvcmlhbkRhdGVUaW1lVVRDKEV4ZWNTdGF0ZSopIGNvbnN0OwogCi0gICAgbXV0
YWJsZSBQb2lzb25lZFJlZlB0cjxQT0lTT04oRGF0ZUluc3RhbmNlKSwgRGF0ZUluc3RhbmNlRGF0
YT4gbV9kYXRhOworICAgIG11dGFibGUgUG9pc29uZWRSZWZQdHI8RGF0ZUluc3RhbmNlUG9pc29u
LCBEYXRlSW5zdGFuY2VEYXRhPiBtX2RhdGE7CiB9OwogCiBEYXRlSW5zdGFuY2UqIGFzRGF0ZUlu
c3RhbmNlKEpTVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGVybmFsRnVuY3Rpb24uaAkocmV2aXNpb24gMjI3NDQ5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03
MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICB1c2luZyBQb2lz
b25lZE5hdGl2ZUZ1bmN0aW9uID0gUG9pc29uZWQ8UE9JU09OKE5hdGl2ZUNvZGUpLCBOYXRpdmVG
dW5jdGlvbj47CisgICAgdXNpbmcgUG9pc29uZWROYXRpdmVGdW5jdGlvbiA9IFBvaXNvbmVkPE5h
dGl2ZUNvZGVQb2lzb24sIE5hdGl2ZUZ1bmN0aW9uPjsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRF
IEludGVybmFsRnVuY3Rpb24oVk0mLCBTdHJ1Y3R1cmUqLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlv
bkZvckNhbGwsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uRm9yQ29uc3RydWN0KTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAkocmV2aXNp
b24gMjI3NDQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0
aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKik7CiAKIHByaXZhdGU6Ci0gICAgUG9pc29u
ZWQ8UE9JU09OKEpTQXJyYXlCdWZmZXIpLCBBcnJheUJ1ZmZlcio+IG1faW1wbDsKKyAgICBQb2lz
b25lZDxKU0FycmF5QnVmZmVyUG9pc29uLCBBcnJheUJ1ZmZlcio+IG1faW1wbDsKIH07CiAKIGlu
bGluZSBBcnJheUJ1ZmZlciogdG9Qb3NzaWJseVNoYXJlZEFycmF5QnVmZmVyKFZNJiB2bSwgSlNW
YWx1ZSB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9p
c29uLmNwcAkocmV2aXNpb24gMjI3NDQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDUG9pc29uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogbmFtZXNw
YWNlIEpTQyB7CiAKICNkZWZpbmUgREVGSU5FX1BPSVNPTihwb2lzb25JRCkgXAotICAgIHVpbnRw
dHJfdCBQT0lTT04ocG9pc29uSUQpOworICAgIHVpbnRwdHJfdCBQT0lTT05fS0VZX05BTUUocG9p
c29uSUQpOwogRk9SX0VBQ0hfSlNDX1BPSVNPTihERUZJTkVfUE9JU09OKQogCiB2b2lkIGluaXRp
YWxpemVQb2lzb24oKQpAQCAtNDQsNyArNDQsNyBAQCB2b2lkIGluaXRpYWxpemVQb2lzb24oKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAjZGVmaW5lIElOSVRJQUxJWkVfUE9JU09OKHBvaXNvbklE
KSBcCi0gICAgUE9JU09OKHBvaXNvbklEKSA9IG1ha2VQb2lzb24oKTsKKyAgICBQT0lTT05fS0VZ
X05BTUUocG9pc29uSUQpID0gbWFrZVBvaXNvbigpOwogCiAgICAgICAgIEZPUl9FQUNIX0pTQ19Q
T0lTT04oSU5JVElBTElaRV9QT0lTT04pCiAgICAgfSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NQb2lzb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NQb2lzb24uaAkocmV2aXNpb24gMjI3NDQ5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDE4
ICs1NSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB2KFdlYkFzc2VtYmx5VG9KU0NhbGxlZSkg
XAogICAgIHYoV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24pIFwKIAotI2RlZmluZSBQT0lTT04o
X3BvaXNvbklEXykgZ18jI19wb2lzb25JRF8jI1BvaXNvbgorI2RlZmluZSBQT0lTT05fS0VZX05B
TUUoX3BvaXNvbklEXykgZ18jI19wb2lzb25JRF8jI1BvaXNvbgogCiAjZGVmaW5lIERFQ0xBUkVf
UE9JU09OKF9wb2lzb25JRF8pIFwKLSAgICBleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0
cl90IFBPSVNPTihfcG9pc29uSURfKTsKKyAgICBleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWlu
dHB0cl90IFBPSVNPTl9LRVlfTkFNRShfcG9pc29uSURfKTsgXAorICAgIHVzaW5nIF9wb2lzb25J
RF8gIyMgUG9pc29uID0gUG9pc29uPFBPSVNPTl9LRVlfTkFNRShfcG9pc29uSURfKT47CiAKIEZP
Ul9FQUNIX0pTQ19QT0lTT04oREVDTEFSRV9QT0lTT04pCiAjdW5kZWYgREVDTEFSRV9QT0lTT04K
IAogc3RydWN0IENsYXNzSW5mbzsKIAotdXNpbmcgUG9pc29uZWRDbGFzc0luZm9QdHIgPSBQb2lz
b25lZDxQT0lTT04oR2xvYmFsRGF0YSksIGNvbnN0IENsYXNzSW5mbyo+OwotdXNpbmcgUG9pc29u
ZWRNYXNtUHRyID0gUG9pc29uZWQ8UE9JU09OKEpJVENvZGUpLCB2b2lkKj47Cit1c2luZyBQb2lz
b25lZENsYXNzSW5mb1B0ciA9IFBvaXNvbmVkPEdsb2JhbERhdGFQb2lzb24sIGNvbnN0IENsYXNz
SW5mbyo+OwordXNpbmcgUG9pc29uZWRNYXNtUHRyID0gUG9pc29uZWQ8SklUQ29kZVBvaXNvbiwg
dm9pZCo+OwogCiB2b2lkIGluaXRpYWxpemVQb2lzb24oKTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAyMjc0NDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MDEsNyArNDAxLDcgQEAgcHVibGljOgogCiAgICAgVk0mIG1fdm07CiAK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB1c2luZyBQb2lzb25lZFVuaXF1ZVB0ciA9IFdURjo6
UG9pc29uZWRVbmlxdWVQdHI8UE9JU09OKEpTR2xvYmFsT2JqZWN0KSwgVD47CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gdXNpbmcgUG9pc29uZWRVbmlxdWVQdHIgPSBXVEY6OlBvaXNvbmVkVW5p
cXVlUHRyPEpTR2xvYmFsT2JqZWN0UG9pc29uLCBUPjsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQogICAgIFBvaXNvbmVkVW5pcXVlUHRyPEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyPiBtX2luc3BlY3RvckNvbnRyb2xsZXI7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzLmgJKHJldmlzaW9uIDIyNzQ0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcg
QEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgUG9pc29uZWRSZWY8UE9JU09OKEpTU2Ny
aXB0RmV0Y2hQYXJhbWV0ZXJzKSwgU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzPiBtX3BhcmFtZXRlcnM7
CisgICAgUG9pc29uZWRSZWY8SlNTY3JpcHRGZXRjaFBhcmFtZXRlcnNQb2lzb24sIFNjcmlwdEZl
dGNoUGFyYW1ldGVycz4gbV9wYXJhbWV0ZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NjcmlwdEZldGNoZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NjcmlwdEZldGNoZXIu
aAkocmV2aXNpb24gMjI3NDQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
Y3JpcHRGZXRjaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgfQogCi0gICAgUG9pc29uZWRSZWZQdHI8UE9JU09OKEpTU2NyaXB0RmV0Y2hl
ciksIFNjcmlwdEZldGNoZXI+IG1fZmV0Y2hlcjsKKyAgICBQb2lzb25lZFJlZlB0cjxKU1Njcmlw
dEZldGNoZXJQb2lzb24sIFNjcmlwdEZldGNoZXI+IG1fZmV0Y2hlcjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhl
Y3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjI3NDQ5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5
MCw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJs
ZUJhc2U7Ci0gICAgdXNpbmcgUG9pc29uZWROYXRpdmVGdW5jdGlvbiA9IFBvaXNvbmVkPFBPSVNP
TihOYXRpdmVDb2RlKSwgTmF0aXZlRnVuY3Rpb24+OworICAgIHVzaW5nIFBvaXNvbmVkTmF0aXZl
RnVuY3Rpb24gPSBQb2lzb25lZDxOYXRpdmVDb2RlUG9pc29uLCBOYXRpdmVGdW5jdGlvbj47CiAK
ICAgICBOYXRpdmVFeGVjdXRhYmxlKFZNJiwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2
ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJl
Kik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5z
aXRpb25UYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oCShyZXZpc2lvbiAyMjc0NDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTg3LDggKzE4Nyw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgU2luZ2xlU2xvdFRyYW5zaXRpb25XZWFrT3duZXI7Ci0gICAgdXNpbmcgUG9pc29u
ZWRUcmFuc2l0aW9uTWFwUHRyID0gUG9pc29uZWQ8UE9JU09OKFN0cnVjdHVyZVRyYW5zaXRpb25U
YWJsZSksIFRyYW5zaXRpb25NYXAqPjsKLSAgICB1c2luZyBQb2lzb25lZFdlYWtJbXBsUHRyID0g
UG9pc29uZWQ8UE9JU09OKFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZSksIFdlYWtJbXBsKj47Cisg
ICAgdXNpbmcgUG9pc29uZWRUcmFuc2l0aW9uTWFwUHRyID0gUG9pc29uZWQ8U3RydWN0dXJlVHJh
bnNpdGlvblRhYmxlUG9pc29uLCBUcmFuc2l0aW9uTWFwKj47CisgICAgdXNpbmcgUG9pc29uZWRX
ZWFrSW1wbFB0ciA9IFBvaXNvbmVkPFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZVBvaXNvbiwgV2Vh
a0ltcGwqPjsKIAogICAgIGJvb2wgaXNVc2luZ1NpbmdsZVNsb3QoKSBjb25zdAogICAgIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oCShyZXZp
c2lvbiAyMjc0NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJp
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDggKzE5NSw2IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBUcmFpdHMgPSAKIGNsYXNzIFdyaXRlQmFycmllciA6IHB1YmxpYyBXcml0
ZUJhcnJpZXJCYXNlPFQsIFRyYWl0cz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIHN0YXRpYyBhdXRvIHBvaXNvbigpIHsgcmV0dXJuIFRyYWl0czo6cG9pc29u
KCk7IH0KLQogICAgIFdyaXRlQmFycmllcigpCiAgICAgewogICAgICAgICB0aGlzLT5zZXRXaXRo
b3V0V3JpdGVCYXJyaWVyKDApOwpAQCAtMjI1LDggKzIyMyw2IEBAIHRlbXBsYXRlIDw+CiBjbGFz
cyBXcml0ZUJhcnJpZXI8VW5rbm93biwgRHVtYlZhbHVlVHJhaXRzPFVua25vd24+PiA6IHB1Ymxp
YyBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24sIER1bWJWYWx1ZVRyYWl0czxVbmtub3duPj4gewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBhdXRvIHBv
aXNvbigpIHsgcmV0dXJuIER1bWJWYWx1ZVRyYWl0czxVbmtub3duPjo6cG9pc29uKCk7IH0KLQog
ICAgIFdyaXRlQmFycmllcigpCiAgICAgewogICAgICAgICB0aGlzLT5zZXRXaXRob3V0V3JpdGVC
YXJyaWVyKEpTVmFsdWUoKSk7CkBAIC0yNTQsMTIgKzI1MCwxMiBAQCBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFdyaXRlQmFycmllCiAgICAgcmV0dXJuIGxocy5nZXQoKSA9PSByaHMuZ2V0
KCk7CiB9CiAKLXRlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCBjbGFzcyBUPgordGVtcGxhdGU8dHlw
ZW5hbWUgUG9pc29uLCBjbGFzcyBUPgogdXNpbmcgUG9pc29uZWRXcml0ZUJhcnJpZXJUcmFpdHNT
ZWxlY3QgPSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfc2FtZTxULCBVbmtub3du
Pjo6dmFsdWUsCi0gICAgV1RGOjpQb2lzb25lZFZhbHVlVHJhaXRzPGtleSwgVD4sIFdURjo6UG9p
c29uZWRQdHJUcmFpdHM8a2V5LCBUPgorICAgIFdURjo6UG9pc29uZWRWYWx1ZVRyYWl0czxQb2lz
b24sIFQ+LCBXVEY6OlBvaXNvbmVkUHRyVHJhaXRzPFBvaXNvbiwgVD4KID46OnR5cGU7CiAKLXRl
bXBsYXRlIDx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkV3JpdGVC
YXJyaWVyID0gV3JpdGVCYXJyaWVyPFQsIFBvaXNvbmVkV3JpdGVCYXJyaWVyVHJhaXRzU2VsZWN0
PGtleSwgVD4+OwordGVtcGxhdGUgPHR5cGVuYW1lIFBvaXNvbiwgdHlwZW5hbWUgVD4KK3VzaW5n
IFBvaXNvbmVkV3JpdGVCYXJyaWVyID0gV3JpdGVCYXJyaWVyPFQsIFBvaXNvbmVkV3JpdGVCYXJy
aWVyVHJhaXRzU2VsZWN0PFBvaXNvbiwgVD4+OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAJKHJldmlzaW9uIDIy
NzQ0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1
bmN0aW9uPiBjcmVhdGUKICAgICAgICAgaWYgKCFDb250ZXh0Ojp1c2VGYXN0VExTKCkpIHsKICAg
ICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwganNPZmZzZXQpLCB3YXNtQ29udGV4dEluc3RhbmNlR1BSKTsKICAgICAg
ICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh3YXNtQ29udGV4dEluc3Rh
bmNlR1BSLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mUG9pc29uZWRJbnN0YW5jZSgp
KSwgd2FzbUNvbnRleHRJbnN0YW5jZUdQUik7Ci0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW02NChQT0lTT04oSlNXZWJBc3NlbWJseUluc3RhbmNlKSksIHNjcmF0
Y2hSZWcpOworICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQo
SlNXZWJBc3NlbWJseUluc3RhbmNlUG9pc29uOjprZXkoKSksIHNjcmF0Y2hSZWcpOwogICAgICAg
ICAgICAgaml0LnhvcjY0KHNjcmF0Y2hSZWcsIHdhc21Db250ZXh0SW5zdGFuY2VHUFIpOwogICAg
ICAgICAgICAganNPZmZzZXQgKz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKICAgICAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUNvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIyNzQ0OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw3ICs1MSw3IEBAIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OkpTV2ViQXNzZW1ibHlD
b2QKICAgICA6IEJhc2Uodm0sIHZtLndlYkFzc2VtYmx5Q29kZUJsb2NrU3RydWN0dXJlLmdldCgp
KQogICAgICwgbV9jb2RlQmxvY2soV1RGTW92ZShjb2RlQmxvY2spKQogewotICAgIG1fdW5jb25k
aXRpb25hbEZpbmFsaXplciA9IFBvaXNvbmVkVW5pcXVlUHRyPFBPSVNPTihKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrKSwgVW5jb25kaXRpb25hbEZpbmFsaXplcj46OmNyZWF0ZSgqdGhpcyk7CisgICAg
bV91bmNvbmRpdGlvbmFsRmluYWxpemVyID0gUG9pc29uZWRVbmlxdWVQdHI8SlNXZWJBc3NlbWJs
eUNvZGVCbG9ja1BvaXNvbiwgVW5jb25kaXRpb25hbEZpbmFsaXplcj46OmNyZWF0ZSgqdGhpcyk7
CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBuZWVkIHRvIGRvIHRoaXMgc3luY2hyb25v
dXNseS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcw
NTY3CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUNvZGVCbG9jay5oCShyZXZpc2lvbiAyMjc0NDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTk3LDkgKzk3LDkgQEAgcHJpdmF0ZToKICAgICAgICAgSlNXZWJBc3NlbWJseUNvZGVCbG9j
ayYgY29kZUJsb2NrOwogICAgIH07CiAKLSAgICBQb2lzb25lZFJlZjxQT0lTT04oSlNXZWJBc3Nl
bWJseUNvZGVCbG9jayksIFdhc206OkNvZGVCbG9jaz4gbV9jb2RlQmxvY2s7CisgICAgUG9pc29u
ZWRSZWY8SlNXZWJBc3NlbWJseUNvZGVCbG9ja1BvaXNvbiwgV2FzbTo6Q29kZUJsb2NrPiBtX2Nv
ZGVCbG9jazsKICAgICBWZWN0b3I8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPiBtX3dhc21Ub0pTRXhp
dFN0dWJzOwotICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBPSVNPTihKU1dlYkFzc2VtYmx5Q29kZUJs
b2NrKSwgVW5jb25kaXRpb25hbEZpbmFsaXplcj4gbV91bmNvbmRpdGlvbmFsRmluYWxpemVyOwor
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tQb2lzb24sIFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXI+IG1fdW5jb25kaXRpb25hbEZpbmFsaXplcjsKICAgICBCYWc8Q2Fs
bExpbmtJbmZvPiBtX2NhbGxMaW5rSW5mb3M7CiAgICAgU3RyaW5nIG1fZXJyb3JNZXNzYWdlOwog
fTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0
YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5oCShyZXZpc2lvbiAyMjc0NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAt
ODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZlBvaXNvbmVk
Q2FsbGVlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwg
bV9jYWxsZWUpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHVzaW5nIFBvaXNv
bmVkQmFycmllciA9IFBvaXNvbmVkV3JpdGVCYXJyaWVyPFBPSVNPTihKU1dlYkFzc2VtYmx5SW5z
dGFuY2UpLCBUPjsKKyAgICB1c2luZyBQb2lzb25lZEJhcnJpZXIgPSBQb2lzb25lZFdyaXRlQmFy
cmllcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb24sIFQ+OwogCiBwcm90ZWN0ZWQ6CiAgICAg
SlNXZWJBc3NlbWJseUluc3RhbmNlKFZNJiwgU3RydWN0dXJlKiwgUmVmPFdhc206Okluc3RhbmNl
PiYmKTsKQEAgLTkxLDcgKzkxLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBKU1dlYkFz
c2VtYmx5TW9kdWxlKiBtb2R1bGUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZS5nZXQoKTsgfQog
Ci0gICAgUG9pc29uZWRSZWY8UE9JU09OKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSksIFdhc206Oklu
c3RhbmNlPiBtX2luc3RhbmNlOworICAgIFBvaXNvbmVkUmVmPEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZVBvaXNvbiwgV2FzbTo6SW5zdGFuY2U+IG1faW5zdGFuY2U7CiAKICAgICBQb2lzb25lZEJhcnJp
ZXI8SlNXZWJBc3NlbWJseU1vZHVsZT4gbV9tb2R1bGU7CiAgICAgUG9pc29uZWRCYXJyaWVyPEpT
V2ViQXNzZW1ibHlDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuaAkocmV2aXNpb24g
MjI3NDQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1l
bW9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw5ICs2Nyw5IEBAIHByaXZhdGU6CiAgICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAgICBQb2lzb25lZFJlZjxQT0lTT04oSlNXZWJB
c3NlbWJseU1lbW9yeSksIFdhc206Ok1lbW9yeT4gbV9tZW1vcnk7Ci0gICAgUG9pc29uZWRXcml0
ZUJhcnJpZXI8UE9JU09OKEpTV2ViQXNzZW1ibHlNZW1vcnkpLCBKU0FycmF5QnVmZmVyPiBtX2J1
ZmZlcldyYXBwZXI7Ci0gICAgUG9pc29uZWRSZWZQdHI8UE9JU09OKEpTV2ViQXNzZW1ibHlNZW1v
cnkpLCBBcnJheUJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUG9pc29uZWRSZWY8SlNXZWJBc3NlbWJs
eU1lbW9yeVBvaXNvbiwgV2FzbTo6TWVtb3J5PiBtX21lbW9yeTsKKyAgICBQb2lzb25lZFdyaXRl
QmFycmllcjxKU1dlYkFzc2VtYmx5TWVtb3J5UG9pc29uLCBKU0FycmF5QnVmZmVyPiBtX2J1ZmZl
cldyYXBwZXI7CisgICAgUG9pc29uZWRSZWZQdHI8SlNXZWJBc3NlbWJseU1lbW9yeVBvaXNvbiwg
QXJyYXlCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVs
ZS5oCShyZXZpc2lvbiAyMjc0NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5TW9kdWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDEwICs4MSwxMCBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgUG9pc29uZWRS
ZWY8UE9JU09OKEpTV2ViQXNzZW1ibHlNb2R1bGUpLCBXYXNtOjpNb2R1bGU+IG1fbW9kdWxlOwor
ICAgIFBvaXNvbmVkUmVmPEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb24sIFdhc206Ok1vZHVsZT4g
bV9tb2R1bGU7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHVzaW5nIFBvaXNvbmVk
QmFycmllciA9IFBvaXNvbmVkV3JpdGVCYXJyaWVyPFBPSVNPTihKU1dlYkFzc2VtYmx5TW9kdWxl
KSwgVD47CisgICAgdXNpbmcgUG9pc29uZWRCYXJyaWVyID0gUG9pc29uZWRXcml0ZUJhcnJpZXI8
SlNXZWJBc3NlbWJseU1vZHVsZVBvaXNvbiwgVD47CiAKICAgICBQb2lzb25lZEJhcnJpZXI8U3lt
Ym9sVGFibGU+IG1fZXhwb3J0U3ltYm9sVGFibGU7CiAgICAgUG9pc29uZWRCYXJyaWVyPEpTV2Vi
QXNzZW1ibHlDb2RlQmxvY2s+IG1fY29kZUJsb2Nrc1tXYXNtOjpOdW1iZXJPZk1lbW9yeU1vZGVz
XTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlUYWJsZS5oCShyZXZpc2lvbiAyMjc0NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsMTAgKzY2
LDEwIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAgICBQ
b2lzb25lZFJlZjxQT0lTT04oSlNXZWJBc3NlbWJseVRhYmxlKSwgV2FzbTo6VGFibGU+IG1fdGFi
bGU7CisgICAgUG9pc29uZWRSZWY8SlNXZWJBc3NlbWJseVRhYmxlUG9pc29uLCBXYXNtOjpUYWJs
ZT4gbV90YWJsZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdXNpbmcgUG9pc29u
ZWRCYXJyaWVyID0gUG9pc29uZWRXcml0ZUJhcnJpZXI8UE9JU09OKEpTV2ViQXNzZW1ibHlUYWJs
ZSksIFQ+OworICAgIHVzaW5nIFBvaXNvbmVkQmFycmllciA9IFBvaXNvbmVkV3JpdGVCYXJyaWVy
PEpTV2ViQXNzZW1ibHlUYWJsZVBvaXNvbiwgVD47CiAKICAgICBNYWxsb2NQdHI8UG9pc29uZWRC
YXJyaWVyPEpTT2JqZWN0Pj4gbV9qc0Z1bmN0aW9uczsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCShyZXZpc2lvbiAyMjc0NDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg2LDcgKzg2LDcgQEAgc3RhdGljIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZiwgQgog
ICAgICAgICAvLyBTdG9yZSBDYWxsZWUuCiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjEsIEluc3RhbmNlOjpvZmZzZXRPZk93bmVy
KCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U6Om9mZnNldE9mUG9pc29uZWRDYWxsZWUoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0g
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6UG9pc29uZWRCYXJyaWVyPFdlYkFzc2VtYmx5VG9KU0NhbGxlZT46OnBvaXNvbigp
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tNjQoSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pc29uOjprZXkoKSksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMyk7CiAgICAgICAgIGppdC54b3I2NChHUFJJbmZvOjphcmd1bWVudEdQ
UjMsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZv
Ojphcmd1bWVudEdQUjIsIEpJVDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSkpOwogCkBAIC0yOTEsNyArMjkxLDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVm
LCBCaW5kaW5nRgogICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0SW5zdGFuY2UoR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgSW5zdGFuY2U6Om9mZnNldE9mT3duZXIoKSksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjAsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0
T2ZQb2lzb25lZENhbGxlZSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNXZWJBc3NlbWJseUluc3RhbmNlOjpQ
b2lzb25lZEJhcnJpZXI8V2ViQXNzZW1ibHlUb0pTQ2FsbGVlPjo6cG9pc29uKCkpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjMpOworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW02NChKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb246OmtleSgpKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIzKTsKICAgICAgICAgaml0LnhvcjY0KEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmFyZ3VtZW50
R1BSMCwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVT
bG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CiAgICAg
ICAgIApAQCAtNDgzLDcgKzQ4Myw3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZiwg
QmluZGluZ0YKICAgICBqaXQubG9hZFdhc21Db250ZXh0SW5zdGFuY2UoR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6
YXJndW1lbnRHUFIwLCBJbnN0YW5jZTo6b2Zmc2V0T2ZPd25lcigpKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6
YXJndW1lbnRHUFIwLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mUG9pc29uZWRDYWxs
ZWUoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tNjQoSlNXZWJBc3NlbWJseUluc3RhbmNlOjpQb2lzb25lZEJhcnJpZXI8V2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlPjo6cG9pc29uKCkpLCBwb2lzb24pOworICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaXNvbjo6a2V5
KCkpLCBwb2lzb24pOwogICAgIGppdC54b3I2NChwb2lzb24sIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CiAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgSklUOjpBZGRyZXNz
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0
aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb25CYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2UuaAko
cmV2aXNpb24gMjI3NDQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlGdW5jdGlvbkJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFibGUqLCB1
bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgSlNXZWJBc3NlbWJseUluc3RhbmNl
Kik7CiAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2UoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSopOwogCi0gICAgUG9pc29uZWRXcml0ZUJhcnJpZXI8UE9JU09OKFdlYkFzc2VtYmx5
RnVuY3Rpb25CYXNlKSwgSlNXZWJBc3NlbWJseUluc3RhbmNlPiBtX2luc3RhbmNlOworICAgIFBv
aXNvbmVkV3JpdGVCYXJyaWVyPFdlYkFzc2VtYmx5RnVuY3Rpb25CYXNlUG9pc29uLCBKU1dlYkFz
c2VtYmx5SW5zdGFuY2U+IG1faW5zdGFuY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQuaAkocmV2aXNpb24gMjI3NDQ5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaAkod29ya2luZyBjb3B5KQpAQCAt
NjAsNyArNjAsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdXNp
bmcgUG9pc29uZWRCYXJyaWVyID0gUG9pc29uZWRXcml0ZUJhcnJpZXI8UE9JU09OKFdlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkKSwgVD47CisgICAgdXNpbmcgUG9pc29uZWRCYXJyaWVyID0gUG9pc29u
ZWRXcml0ZUJhcnJpZXI8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRQb2lzb24sIFQ+OwogCiAgICAg
UG9pc29uZWRCYXJyaWVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4gbV9pbnN0YW5jZTsKICAgICBQ
b2lzb25lZEJhcnJpZXI8SlNPYmplY3Q+IG1fc3RhcnRGdW5jdGlvbjsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5o
CShyZXZpc2lvbiAyMjc0NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVRvSlNDYWxsZWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1dlYkFzc2VtYmx5TW9kdWxlKik7
CiAgICAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiwgU3RydWN0dXJlKik7CiAKLSAgICBQb2lz
b25lZFdyaXRlQmFycmllcjxQT0lTT04oV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKSwgSlNXZWJBc3Nl
bWJseU1vZHVsZT4gbV9tb2R1bGU7CisgICAgUG9pc29uZWRXcml0ZUJhcnJpZXI8V2ViQXNzZW1i
bHlUb0pTQ2FsbGVlUG9pc29uLCBKU1dlYkFzc2VtYmx5TW9kdWxlPiBtX21vZHVsZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oCShyZXZpc2lvbiAy
Mjc0NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHByb3RlY3RlZDoK
IHByaXZhdGU6CiAgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIFdhc206OkNhbGxhYmxlRnVuY3Rpb24pOwogCi0gICAgUG9pc29u
ZWRXcml0ZUJhcnJpZXI8UE9JU09OKFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKSwgSlNPYmpl
Y3Q+IG1fZnVuY3Rpb247CisgICAgUG9pc29uZWRXcml0ZUJhcnJpZXI8V2ViQXNzZW1ibHlXcmFw
cGVyRnVuY3Rpb25Qb2lzb24sIEpTT2JqZWN0PiBtX2Z1bmN0aW9uOwogICAgIC8vIEl0J3Mgc2Fm
ZSB0byBqdXN0IGhvbGQgdGhlIHJhdyBDYWxsYWJsZUZ1bmN0aW9uIGJlY2F1c2Ugd2UgaGF2ZSBh
IHJlZmVyZW5jZQogICAgIC8vIHRvIG91ciBJbnN0YW5jZSwgd2hpY2ggcG9pbnRzIHRvIHRoZSBD
b2RlQmxvY2ssIHdoaWNoIHBvaW50cyB0byB0aGUgTW9kdWxlCiAgICAgLy8gdGhhdCBleHBvcnRl
ZCB1cywgd2hpY2ggZW5zdXJlcyB0aGF0IHRoZSBhY3R1YWwgU2lnbmF0dXJlL2NvZGUgZG9lc24n
dCBnZXQgZGVhbGxvY2F0ZWQuCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjI3NDQ5KQorKysgU291cmNlL1dU
Ri9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNiBAQAorMjAxOC0wMS0yMyAg
TWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIFBvaXNvbmVk
IHBvaW50ZXJzIHRvIHRha2UgYSBQb2lzb24gY2xhc3MgaW5zdGVhZCBvZiBhIHVpbnRwdHJfdCYu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIwMTcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2Nzk1NTEzPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF2ZXMgdGhlIHdheSBmb3IgY3VzdG9t
IHBvaXNvbiB2YWx1ZXMgd2hpY2ggd2UnbGwgbmVlZCBmb3IgdXNlIGluCisgICAgICAgIFR5cGVk
QXJyYXlzIGxhdGVyLgorCisgICAgICAgICogd3RmL0JhZy5oOgorICAgICAgICAqIHd0Zi9EdW1i
UHRyVHJhaXRzLmg6CisgICAgICAgIChXVEY6OkR1bWJQdHJUcmFpdHM6OnBvaXNvbik6IERlbGV0
ZWQuCisgICAgICAgICogd3RmL0R1bWJWYWx1ZVRyYWl0cy5oOgorICAgICAgICAoV1RGOjpEdW1i
VmFsdWVUcmFpdHM6OnBvaXNvbik6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1BvaXNvbmVkLmg6
CisgICAgICAgIChXVEY6OlBvaXNvbjo6a2V5KToKKyAgICAgICAgKFdURjo6UG9pc29uZWQ6OnN3
YXApOgorICAgICAgICAoV1RGOjpQb2lzb25lZDo6cG9pc29uIGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6UG9pc29uZWQ6OnVucG9pc29uIGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWQ6OnBv
aXNvbik6CisgICAgICAgIChXVEY6OlBvaXNvbmVkOjp1bnBvaXNvbik6CisgICAgICAgIChXVEY6
OlBvaXNvbmVkUHRyVHJhaXRzOjpzd2FwKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRWYWx1ZVRy
YWl0czo6c3dhcCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkUHRyVHJhaXRzOjpwb2lzb24pOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpQb2lzb25lZFZhbHVlVHJhaXRzOjpwb2lzb24pOiBEZWxl
dGVkLgorICAgICAgICAqIHd0Zi9Qb2lzb25lZFVuaXF1ZVB0ci5oOgorICAgICAgICAqIHd0Zi9S
ZWYuaDoKKyAgICAgICAgKiB3dGYvUmVmQ291bnRlZEFycmF5Lmg6CisgICAgICAgICogd3RmL1Jl
ZlB0ci5oOgorICAgICAgICAqIHd0Zi9XVEZBc3NlcnRpb25zLmNwcDoKKwogMjAxOC0wMS0yMyAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEpTQyBzaG91bGQgdXNl
IGEgc3BlY3VsYXRpb24gZmVuY2Ugb24gVk0gZW50cnkvZXhpdApJbmRleDogU291cmNlL1dURi93
dGYvQmFnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQmFnLmgJKHJldmlzaW9uIDIy
NzQ0OSkKKysrIFNvdXJjZS9XVEYvd3RmL0JhZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksMTAg
KzE0OSwxMCBAQCBwcml2YXRlOgogICAgIHR5cGVuYW1lIFB0clRyYWl0czo6U3RvcmFnZVR5cGUg
bV9oZWFkIHsgbnVsbHB0ciB9OwogfTsKIAotdGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVu
YW1lIFQ+IHN0cnVjdCBQb2lzb25lZFB0clRyYWl0czsKK3RlbXBsYXRlPHR5cGVuYW1lIFBvaXNv
biwgdHlwZW5hbWUgVD4gc3RydWN0IFBvaXNvbmVkUHRyVHJhaXRzOwogCi10ZW1wbGF0ZTx1aW50
cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkQmFnID0gQmFnPFQsIFBvaXNv
bmVkUHRyVHJhaXRzPGtleSwgUHJpdmF0ZTo6QmFnTm9kZTxUPj4+OwordGVtcGxhdGU8dHlwZW5h
bWUgUG9pc29uLCB0eXBlbmFtZSBUPgordXNpbmcgUG9pc29uZWRCYWcgPSBCYWc8VCwgUG9pc29u
ZWRQdHJUcmFpdHM8UG9pc29uLCBQcml2YXRlOjpCYWdOb2RlPFQ+Pj47CiAKIH0gLy8gbmFtZXNw
YWNlIFdURgogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9EdW1iUHRyVHJhaXRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvRHVtYlB0clRyYWl0cy5oCShyZXZpc2lvbiAyMjc0NDkpCisr
KyBTb3VyY2UvV1RGL3d0Zi9EdW1iUHRyVHJhaXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDgg
KzMyLDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3Ry
dWN0IER1bWJQdHJUcmFpdHMgewotICAgIHN0YXRpYyB1aW50cHRyX3QgcG9pc29uKCkgeyByZXR1
cm4gMDsgfQotCiAgICAgdXNpbmcgU3RvcmFnZVR5cGUgPSBUKjsKIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFU+CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9EdW1iVmFsdWVUcmFpdHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9EdW1iVmFsdWVUcmFpdHMuaAkocmV2aXNpb24gMjI3NDQ5
KQorKysgU291cmNlL1dURi93dGYvRHVtYlZhbHVlVHJhaXRzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDggKzMyLDYgQEAgbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBz
dHJ1Y3QgRHVtYlZhbHVlVHJhaXRzIHsKLSAgICBzdGF0aWMgdWludHB0cl90IHBvaXNvbigpIHsg
cmV0dXJuIDA7IH0KLQogICAgIHVzaW5nIFN0b3JhZ2VUeXBlID0gVDsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgJKHJldmlzaW9uIDIyNzQ0OSkKKysrIFNvdXJj
ZS9XVEYvd3RmL1BvaXNvbmVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDE0IEBAIGFz
UmVmZXJlbmNlKFQgcHRyKSB7IHJldHVybiAqcHRyOyB9CiAKIGVudW0gQWxyZWFkeVBvaXNvbmVk
VGFnIHsgQWxyZWFkeVBvaXNvbmVkIH07CiAKLXRlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBl
bmFtZSBULCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFQ+Ojp2
YWx1ZT4+Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIHBvaXNvbktleT4KK2NsYXNzIFBvaXNvbiB7Citw
dWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUG9pc29uZWRUeXBlID0gdm9pZD4KKyAgICBz
dGF0aWMgdWludHB0cl90IGtleShjb25zdCBQb2lzb25lZFR5cGUqID0gbnVsbHB0cikgeyByZXR1
cm4gcG9pc29uS2V5OyB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQb2lzb24sIHR5cGVuYW1l
IFQsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVl
Pj4KIGNsYXNzIFBvaXNvbmVkIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNQb2lzb25lZCA9IHRydWU7CkBAIC0xNjYsNyArMTczLDcgQEAgcHVibGljOgogICAgICAgICBU
IHQyID0gb3RoZXIudW5wb2lzb25lZCgpOwogICAgICAgICBzdGQ6OnN3YXAodDEsIHQyKTsKICAg
ICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb24odDEpOwotICAgICAgICBvdGhlci5tX3BvaXNv
bmVkQml0cyA9IE90aGVyOjpwb2lzb24odDIpOworICAgICAgICBvdGhlci5tX3BvaXNvbmVkQml0
cyA9IG90aGVyLnBvaXNvbih0Mik7CiAgICAgfQogCiAgICAgdm9pZCBzd2FwKFQmIHQyKQpAQCAt
MTg1LDIyICsxOTIsMjcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBjb25zdGV4
cHIgc3RhdGljIFBvaXNvbmVkQml0cyBwb2lzb24oc3RkOjpudWxscHRyX3QpIHsgcmV0dXJuIDA7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIEFMV0FZU19JTkxJTkUgUG9pc29uZWRC
aXRzIHBvaXNvbihVIHB0cikgY29uc3QgeyByZXR1cm4gcG9pc29uPFBvaXNvbmVkQml0cz4odGhp
cywgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ocHRyKSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVID0gVD4KKyAgICBBTFdBWVNfSU5MSU5FIFUgdW5wb2lzb24oUG9pc29uZWRCaXRzIHBvaXNv
bmVkQml0cykgY29uc3QgeyByZXR1cm4gdW5wb2lzb248VT4odGhpcywgcG9pc29uZWRCaXRzKTsg
fQorCisgICAgY29uc3RleHByIHN0YXRpYyBQb2lzb25lZEJpdHMgcG9pc29uKGNvbnN0IFBvaXNv
bmVkKiwgc3RkOjpudWxscHRyX3QpIHsgcmV0dXJuIDA7IH0KICNpZiBFTkFCTEUoUE9JU09OKQog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUG9pc29u
ZWRCaXRzIHBvaXNvbihVIHB0cikgeyByZXR1cm4gcHRyID8gYml0d2lzZV9jYXN0PFBvaXNvbmVk
Qml0cz4ocHRyKSBeIGtleSA6IDA7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQb2lzb25l
ZEJpdHMgcG9pc29uKGNvbnN0IFBvaXNvbmVkKiB0aGlzUG9pc29uZWQsIFUgcHRyKSB7IHJldHVy
biBwdHIgPyBiaXR3aXNlX2Nhc3Q8UG9pc29uZWRCaXRzPihwdHIpIF4gUG9pc29uOjprZXkodGhp
c1BvaXNvbmVkKSA6IDA7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4KLSAgICBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBVIHVucG9pc29uKFBvaXNvbmVkQml0cyBwb2lzb25lZEJpdHMpIHsg
cmV0dXJuIHBvaXNvbmVkQml0cyA/IGJpdHdpc2VfY2FzdDxVPihwb2lzb25lZEJpdHMgXiBrZXkp
IDogYml0d2lzZV9jYXN0PFU+KDBsbCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBVIHVu
cG9pc29uKGNvbnN0IFBvaXNvbmVkKiB0aGlzUG9pc29uZWQsIFBvaXNvbmVkQml0cyBwb2lzb25l
ZEJpdHMpIHsgcmV0dXJuIHBvaXNvbmVkQml0cyA/IGJpdHdpc2VfY2FzdDxVPihwb2lzb25lZEJp
dHMgXiBQb2lzb246OmtleSh0aGlzUG9pc29uZWQpKSA6IGJpdHdpc2VfY2FzdDxVPigwbGwpOyB9
CiAjZWxzZQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0
aWMgUG9pc29uZWRCaXRzIHBvaXNvbihVIHB0cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFBvaXNv
bmVkQml0cz4ocHRyKTsgfQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFBvaXNvbmVkQml0cyBw
b2lzb24oY29uc3QgUG9pc29uZWQqLCBVIHB0cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFBvaXNv
bmVkQml0cz4ocHRyKTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPgotICAgIEFMV0FZ
U19JTkxJTkUgc3RhdGljIFUgdW5wb2lzb24oUG9pc29uZWRCaXRzIHBvaXNvbmVkQml0cykgeyBy
ZXR1cm4gYml0d2lzZV9jYXN0PFU+KHBvaXNvbmVkQml0cyk7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBVIHVucG9pc29uKGNvbnN0IFBvaXNvbmVkKiwgUG9pc29uZWRCaXRzIHBvaXNvbmVk
Qml0cykgeyByZXR1cm4gYml0d2lzZV9jYXN0PFU+KHBvaXNvbmVkQml0cyk7IH0KICNlbmRpZgog
CiAgICAgUG9pc29uZWRCaXRzIG1fcG9pc29uZWRCaXRzIHsgMCB9OwogCi0gICAgdGVtcGxhdGU8
dWludHB0cl90JiwgdHlwZW5hbWUsIHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgUG9pc29uZWQ7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lLCB0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIFBv
aXNvbmVkOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
PSBzdGQ6OmVuYWJsZV9pZl90PFQ6OmlzUG9pc29uZWQgJiYgVTo6aXNQb2lzb25lZCAmJiAhc3Rk
Ojppc19zYW1lPFQsIFU+Ojp2YWx1ZT4+CkBAIC0yMjksMzAgKzI0MSwyNiBAQCBpbmxpbmUgdm9p
ZCBzd2FwKFQmIGEsIFUmIGIpCiAKIFdURl9FWFBPUlRfUFJJVkFURSB1aW50cHRyX3QgbWFrZVBv
aXNvbigpOwogCi10ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KK3RlbXBsYXRl
PHR5cGVuYW1lIFBvaXNvbiwgdHlwZW5hbWUgVD4KIHN0cnVjdCBQb2lzb25lZFB0clRyYWl0cyB7
Ci0gICAgc3RhdGljIGF1dG8gcG9pc29uKCkgeyByZXR1cm4ga2V5OyB9Ci0KLSAgICB1c2luZyBT
dG9yYWdlVHlwZSA9IFBvaXNvbmVkPGtleSwgVCo+OworICAgIHVzaW5nIFN0b3JhZ2VUeXBlID0g
UG9pc29uZWQ8UG9pc29uLCBUKj47CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBzdGF0aWMgQUxX
QVlTX0lOTElORSBUKiBleGNoYW5nZShTdG9yYWdlVHlwZSYgcHRyLCBVJiYgbmV3VmFsdWUpIHsg
cmV0dXJuIHB0ci5leGNoYW5nZShuZXdWYWx1ZSk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE90aGVyPgotICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgc3dhcChQb2lzb25lZDxrZXks
IFQqPiYgYSwgT3RoZXImIGIpIHsgYS5zd2FwKGIpOyB9CisgICAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgdm9pZCBzd2FwKFBvaXNvbmVkPFBvaXNvbiwgVCo+JiBhLCBPdGhlciYgYikgeyBhLnN3YXAo
Yik7IH0KIAogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFQqIHVud3JhcChjb25zdCBTdG9yYWdl
VHlwZSYgcHRyKSB7IHJldHVybiBwdHIudW5wb2lzb25lZCgpOyB9CiB9OwogCi10ZW1wbGF0ZTx1
aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KK3RlbXBsYXRlPHR5cGVuYW1lIFBvaXNvbiwgdHlw
ZW5hbWUgVD4KIHN0cnVjdCBQb2lzb25lZFZhbHVlVHJhaXRzIHsKLSAgICBzdGF0aWMgYXV0byBw
b2lzb24oKSB7IHJldHVybiBrZXk7IH0KLQotICAgIHVzaW5nIFN0b3JhZ2VUeXBlID0gUG9pc29u
ZWQ8a2V5LCBUPjsKKyAgICB1c2luZyBTdG9yYWdlVHlwZSA9IFBvaXNvbmVkPFBvaXNvbiwgVD47
CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBzdGF0aWMgQUxXQVlTX0lOTElORSBUIGV4Y2hhbmdl
KFN0b3JhZ2VUeXBlJiB2YWwsIFUmJiBuZXdWYWx1ZSkgeyByZXR1cm4gdmFsLmV4Y2hhbmdlKG5l
d1ZhbHVlKTsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXI+Ci0gICAgc3RhdGljIEFM
V0FZU19JTkxJTkUgdm9pZCBzd2FwKFBvaXNvbmVkPGtleSwgVD4mIGEsIE90aGVyJiBiKSB7IGEu
c3dhcChiKTsgfQorICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgc3dhcChQb2lzb25lZDxQ
b2lzb24sIFQ+JiBhLCBPdGhlciYgYikgeyBhLnN3YXAoYik7IH0KIAogICAgIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIFQgdW53cmFwKGNvbnN0IFN0b3JhZ2VUeXBlJiB2YWwpIHsgcmV0dXJuIHZhbC51
bnBvaXNvbmVkKCk7IH0KIH07CkBAIC0yNjAsNiArMjY4LDkgQEAgc3RydWN0IFBvaXNvbmVkVmFs
dWVUcmFpdHMgewogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6QWxyZWFkeVBvaXNv
bmVkOwordXNpbmcgV1RGOjpQb2lzb247CiB1c2luZyBXVEY6OlBvaXNvbmVkOwogdXNpbmcgV1RG
OjpQb2lzb25lZEJpdHM7Cit1c2luZyBXVEY6OlBvaXNvbmVkUHRyVHJhaXRzOwordXNpbmcgV1RG
OjpQb2lzb25lZFZhbHVlVHJhaXRzOwogdXNpbmcgV1RGOjptYWtlUG9pc29uOwpJbmRleDogU291
cmNlL1dURi93dGYvUG9pc29uZWRVbmlxdWVQdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9Qb2lzb25lZFVuaXF1ZVB0ci5oCShyZXZpc2lvbiAyMjc0NDkpCisrKyBTb3VyY2UvV1RG
L3d0Zi9Qb2lzb25lZFVuaXF1ZVB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMCArMzIsMTAg
QEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFt
ZSBULCB0eXBlbmFtZSBFbmFibGUgPSB2b2lkPgotY2xhc3MgUG9pc29uZWRVbmlxdWVQdHIgOiBw
dWJsaWMgUG9pc29uZWQ8a2V5LCBUKj4gewordGVtcGxhdGU8dHlwZW5hbWUgUG9pc29uLCB0eXBl
bmFtZSBULCB0eXBlbmFtZSBFbmFibGUgPSB2b2lkPgorY2xhc3MgUG9pc29uZWRVbmlxdWVQdHIg
OiBwdWJsaWMgUG9pc29uZWQ8UG9pc29uLCBUKj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotICAgIHVzaW5nIEJhc2UgPSBQb2lzb25lZDxrZXksIFQqPjsKKyAgICB1c2luZyBCYXNl
ID0gUG9pc29uZWQ8UG9pc29uLCBUKj47CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzUG9pc29uZWRVbmlxdWVQdHIgPSB0cnVlOwogICAgIHVzaW5nIFZhbHVlVHlwZSA9IFQ7
CkBAIC0xMjUsMTMgKzEyNSwxMyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbGVhcldpdGhvdXRE
ZXN0cm95KCkgeyBCYXNlOjpjbGVhcigpOyB9CiAKLSAgICB0ZW1wbGF0ZTx1aW50cHRyX3QmLCB0
eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBQb2lzb25lZFVuaXF1ZVB0cjsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUsIHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgUG9pc29u
ZWRVbmlxdWVQdHI7CiB9OwogCi10ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4K
LWNsYXNzIFBvaXNvbmVkVW5pcXVlUHRyPGtleSwgVFtdPiA6IHB1YmxpYyBQb2lzb25lZDxrZXks
IFQqPiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBQb2lzb24sIHR5cGVuYW1lIFQ+CitjbGFzcyBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb24sIFRbXT4gOiBwdWJsaWMgUG9pc29uZWQ8UG9pc29uLCBUKj4g
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHVzaW5nIEJhc2UgPSBQb2lzb25l
ZDxrZXksIFQqPjsKKyAgICB1c2luZyBCYXNlID0gUG9pc29uZWQ8UG9pc29uLCBUKj47CiBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUG9pc29uZWRVbmlxdWVQdHIgPSB0cnVl
OwogICAgIHVzaW5nIFZhbHVlVHlwZSA9IFRbXTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBjbGVhcldpdGhvdXREZXN0cm95KCkgeyBCYXNlOjpjbGVhcigpOyB9CiAK
LSAgICB0ZW1wbGF0ZTx1aW50cHRyX3QmLCB0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFz
cyBQb2lzb25lZFVuaXF1ZVB0cjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUsIHR5
cGVuYW1lPiBmcmllbmQgY2xhc3MgUG9pc29uZWRVbmlxdWVQdHI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1JlZi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL1JlZi5oCShyZXZpc2lvbiAyMjc0NDkpCisrKyBTb3VyY2UvV1RGL3d0Zi9SZWYu
aAkod29ya2luZyBjb3B5KQpAQCAtMjU2LDEwICsyNTYsMTAgQEAgaW5saW5lIGJvb2wgaXMoY29u
c3QgUmVmPEFyZ1R5cGUsIFB0clRyYQogICAgIHJldHVybiBpczxFeHBlY3RlZFR5cGU+KHNvdXJj
ZS5nZXQoKSk7CiB9CiAKLXRlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPiBzdHJ1
Y3QgUG9pc29uZWRQdHJUcmFpdHM7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBQb2lzb24sIHR5cGVuYW1l
IFQ+IHN0cnVjdCBQb2lzb25lZFB0clRyYWl0czsKIAotdGVtcGxhdGU8dWludHB0cl90JiBrZXks
IHR5cGVuYW1lIFQ+Ci11c2luZyBQb2lzb25lZFJlZiA9IFJlZjxULCBQb2lzb25lZFB0clRyYWl0
czxrZXksIFQ+PjsKK3RlbXBsYXRlPHR5cGVuYW1lIFBvaXNvbiwgdHlwZW5hbWUgVD4KK3VzaW5n
IFBvaXNvbmVkUmVmID0gUmVmPFQsIFBvaXNvbmVkUHRyVHJhaXRzPFBvaXNvbiwgVD4+OwogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgJKHJldmlz
aW9uIDIyNzQ0OSkKKysrIFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzgsMTAgKzIzOCwxMCBAQCBwcml2YXRlOgogICAgIHR5cGVuYW1lIFB0clRy
YWl0czo6U3RvcmFnZVR5cGUgbV9kYXRhIHsgbnVsbHB0ciB9OwogfTsKIAotdGVtcGxhdGU8dWlu
dHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+IHN0cnVjdCBQb2lzb25lZFB0clRyYWl0czsKK3RlbXBs
YXRlPHR5cGVuYW1lIFBvaXNvbiwgdHlwZW5hbWUgVD4gc3RydWN0IFBvaXNvbmVkUHRyVHJhaXRz
OwogCi10ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVk
UmVmQ291bnRlZEFycmF5ID0gUmVmQ291bnRlZEFycmF5PFQsIFBvaXNvbmVkUHRyVHJhaXRzPGtl
eSwgVD4+OwordGVtcGxhdGU8dHlwZW5hbWUgUG9pc29uLCB0eXBlbmFtZSBUPgordXNpbmcgUG9p
c29uZWRSZWZDb3VudGVkQXJyYXkgPSBSZWZDb3VudGVkQXJyYXk8VCwgUG9pc29uZWRQdHJUcmFp
dHM8UG9pc29uLCBUPj47CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9SZWZQdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAkocmV2
aXNpb24gMjI3NDQ5KQorKysgU291cmNlL1dURi93dGYvUmVmUHRyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3NiwxMCArMjc2LDEwIEBAIGlubGluZSBib29sIGlzKGNvbnN0IFJlZlB0cjxBcmdUeXBl
LCBQdHIKICAgICByZXR1cm4gaXM8RXhwZWN0ZWRUeXBlPihzb3VyY2UuZ2V0KCkpOwogfQogCi10
ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4gc3RydWN0IFBvaXNvbmVkUHRyVHJh
aXRzOwordGVtcGxhdGU8dHlwZW5hbWUgUG9pc29uLCB0eXBlbmFtZSBUPiBzdHJ1Y3QgUG9pc29u
ZWRQdHJUcmFpdHM7CiAKLXRlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPgotdXNp
bmcgUG9pc29uZWRSZWZQdHIgPSBSZWZQdHI8VCwgUG9pc29uZWRQdHJUcmFpdHM8a2V5LCBUPj47
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBQb2lzb24sIHR5cGVuYW1lIFQ+Cit1c2luZyBQb2lzb25lZFJl
ZlB0ciA9IFJlZlB0cjxULCBQb2lzb25lZFB0clRyYWl0czxQb2lzb24sIFQ+PjsKIAogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dURkFzc2VydGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dURkFzc2VydGlvbnMuY3BwCShyZXZpc2lvbiAy
Mjc0NDkpCisrKyBTb3VyY2UvV1RGL3d0Zi9XVEZBc3NlcnRpb25zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzksMjAgKzM5LDIwIEBAIHVpbnRwdHJfdCBkdW1teVBvaXNvbiA9IDA7CiB9CiAKIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKEJhZzxEdW1teVN0cnVjdD4pID09IHNpemVvZih2b2lkKiksICIi
KTsKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKFBvaXNvbmVkQmFnPGR1bW15UG9pc29uLCBEdW1teVN0
cnVjdD4pID09IHNpemVvZih2b2lkKiksICIiKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFBvaXNv
bmVkQmFnPFBvaXNvbjxkdW1teVBvaXNvbj4sIER1bW15U3RydWN0PikgPT0gc2l6ZW9mKHZvaWQq
KSwgIiIpOwogCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihSZWY8RHVtbXlTdHJ1Y3Q+KSA9PSBzaXpl
b2YoRHVtbXlTdHJ1Y3QqKSwgIiIpOwotc3RhdGljX2Fzc2VydChzaXplb2YoUG9pc29uZWRSZWY8
ZHVtbXlQb2lzb24sIER1bW15U3RydWN0PikgPT0gc2l6ZW9mKER1bW15U3RydWN0KiksICIiKTsK
K3N0YXRpY19hc3NlcnQoc2l6ZW9mKFBvaXNvbmVkUmVmPFBvaXNvbjxkdW1teVBvaXNvbj4sIER1
bW15U3RydWN0PikgPT0gc2l6ZW9mKER1bW15U3RydWN0KiksICIiKTsKIAogc3RhdGljX2Fzc2Vy
dChzaXplb2YoUmVmUHRyPER1bW15U3RydWN0PikgPT0gc2l6ZW9mKER1bW15U3RydWN0KiksICIi
KTsKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKFBvaXNvbmVkUmVmUHRyPGR1bW15UG9pc29uLCBEdW1t
eVN0cnVjdD4pID09IHNpemVvZihEdW1teVN0cnVjdCopLCAiIik7CitzdGF0aWNfYXNzZXJ0KHNp
emVvZihQb2lzb25lZFJlZlB0cjxQb2lzb248ZHVtbXlQb2lzb24+LCBEdW1teVN0cnVjdD4pID09
IHNpemVvZihEdW1teVN0cnVjdCopLCAiIik7CiAKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKFBvaXNv
bmVkVW5pcXVlUHRyPGR1bW15UG9pc29uLCBEdW1teVN0cnVjdD4pID09IHNpemVvZihEdW1teVN0
cnVjdCopLCAiIik7Ci1zdGF0aWNfYXNzZXJ0KHNpemVvZihQb2lzb25lZFVuaXF1ZVB0cjxkdW1t
eVBvaXNvbiwgaW50W10+KSA9PSBzaXplb2YoaW50KiksICIiKTsKLXN0YXRpY19hc3NlcnQoc2l6
ZW9mKFBvaXNvbmVkVW5pcXVlUHRyPGR1bW15UG9pc29uLCBEdW1teVN0cnVjdFtdPikgPT0gc2l6
ZW9mKER1bW15U3RydWN0KiksICIiKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbjxkdW1teVBvaXNvbj4sIER1bW15U3RydWN0PikgPT0gc2l6ZW9mKER1bW15
U3RydWN0KiksICIiKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbjxkdW1teVBvaXNvbj4sIGludFtdPikgPT0gc2l6ZW9mKGludCopLCAiIik7CitzdGF0aWNf
YXNzZXJ0KHNpemVvZihQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb248ZHVtbXlQb2lzb24+LCBEdW1t
eVN0cnVjdFtdPikgPT0gc2l6ZW9mKER1bW15U3RydWN0KiksICIiKTsKIAogc3RhdGljX2Fzc2Vy
dChzaXplb2YoUmVmQ291bnRlZEFycmF5PER1bW15U3RydWN0PikgPT0gc2l6ZW9mKHZvaWQqKSwg
IiIpOwotc3RhdGljX2Fzc2VydChzaXplb2YoUG9pc29uZWRSZWZDb3VudGVkQXJyYXk8ZHVtbXlQ
b2lzb24sIER1bW15U3RydWN0PikgPT0gc2l6ZW9mKHZvaWQqKSwgIiIpOworc3RhdGljX2Fzc2Vy
dChzaXplb2YoUG9pc29uZWRSZWZDb3VudGVkQXJyYXk8UG9pc29uPGR1bW15UG9pc29uPiwgRHVt
bXlTdHJ1Y3Q+KSA9PSBzaXplb2Yodm9pZCopLCAiIik7CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBX
VEYKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjI3NDQ5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTgtMDEtMjMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgorCisgICAgICAgIFVwZGF0ZSBQb2lzb25lZCBwb2ludGVycyB0byB0YWtlIGEgUG9pc29uIGNs
YXNzIGluc3RlYWQgb2YgYSB1aW50cHRyX3QmLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyMDE3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjc5
NTUxMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVk
UmVmLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6cGFzc1dpdGhSZWYpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1BvaXNvbmVkUmVmUHRyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6ZjEpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1BvaXNvbmVkVW5pcXVlUHRyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cG9pc29uZWRQdHJGb28pOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVz
dHJ1Y3RpYmxlQXJyYXlzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlh
bGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorCiAyMDE4LTAxLTIzICBZb3NoaWFraSBKaXRzdWthd2EgIDxZb3NoaWFraS5KaXRzdWthd2FA
c29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBVc2UgNjQtYml0IHRvb2xzZXQKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAJKHJldmlzaW9uIDIy
NzQ0OSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOSBAQCBuYW1lc3BhY2UgewogdWludHB0cl90IGdfdGVz
dFBvaXNvbkE7CiB1aW50cHRyX3QgZ190ZXN0UG9pc29uQjsKIAordXNpbmcgVGVzdFBvaXNvbkEg
PSBQb2lzb248Z190ZXN0UG9pc29uQT47Cit1c2luZyBUZXN0UG9pc29uQiA9IFBvaXNvbjxnX3Rl
c3RQb2lzb25CPjsKKwogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRlc3RQb2lzb24oKQogewogICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWc7CkBAIC01OCwxNyArNjEs
MTcgQEAgVEVTVChXVEZfUG9pc29uZWQsIEJhc2ljKQogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgi
YSIpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIq
PiBlbXB0eTsKKyAgICAgICAgUG9pc29uZWQ8VGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IGVtcHR5
OwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25lZCgpKTsKICAgICB9
CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IGVt
cHR5KG51bGxwdHIpOworICAgICAgICBQb2lzb25lZDxUZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4g
ZW1wdHkobnVsbHB0cik7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBlbXB0eS51bnBvaXNv
bmVkKCkpOwogICAgIH0KIAogICAgIHsKLSAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8VGVzdFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHB0cigmYSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7
CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOwogICAgICAgICBBU1NFUlRfRVEoJmEubmFt
ZSwgJnB0ci0+bmFtZSk7CkBAIC03OCw1NSArODEsNTUgQEAgVEVTVChXVEZfUG9pc29uZWQsIEJh
c2ljKQogICAgICAgICBzdGQ6Om1lbWNweSgmcHRyQml0cywgJnB0ciwgc2l6ZW9mKHB0ckJpdHMp
KTsKICAgICAgICAgQVNTRVJUX1RSVUUocHRyQml0cyAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PigmYSkpOwogI2lmIEVOQUJMRShQT0lTT05fQVNTRVJUUykKLSAgICAgICAgQVNTRVJUX1RSVUUo
KFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+Ojppc1BvaXNvbmVkKHB0ckJpdHMp
KSk7CisgICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZDxUZXN0UG9pc29uQSwgUmVmTG9nZ2Vy
Kj46OmlzUG9pc29uZWQocHRyQml0cykpKTsKICNlbmRpZgogI2VuZGlmIC8vIEVOQUJMRShQT0lT
T04pCiAgICAgfQogCiAgICAgewotICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZM
b2dnZXIqPiBwdHIgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8VGVzdFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHB0ciA9ICZhOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwog
ICAgIH0KIAogICAgIHsKLSAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDIocDEpOworICAgICAgICBQb2lzb25lZDxUZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAm
YTsKKyAgICAgICAgUG9pc29uZWQ8VGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKHAxKTsKIAog
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9F
USgmYSwgcDIudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEgPT0gcDIpOwog
ICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKIAotICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyhwMSk7CisgICAgICAgIFBvaXNv
bmVkPFRlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyhwMSk7CiAgICAgICAgIEFTU0VSVF9FUSgm
YSwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEgPT0gcDMpOwogICAg
ICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKICAgICB9CiAKICAgICB7
Ci0gICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7Ci0g
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gcDE7CisgICAg
ICAgIFBvaXNvbmVkPFRlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBQ
b2lzb25lZDxUZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKICAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9p
c29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxID09IHAyKTsKICAgICAgICAgQVNTRVJU
X1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CiAKLSAgICAgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsKKyAgICAgICAgUG9pc29uZWQ8VGVzdFBvaXNv
bkIsIFJlZkxvZ2dlcio+IHAzID0gcDE7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lz
b25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEgPT0gcDMpOwogICAgICAgICBBU1NFUlRf
VFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKICAgICB9CiAKICAgICB7Ci0gICAgICAgIFBv
aXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7Ci0gICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAg
IFBvaXNvbmVkPFRlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBQb2lz
b25lZDxUZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAy
LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxID09IHAyKTsKICAgICAgICAg
QVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CiAKLSAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKLSAgICAgICAgUG9pc29uZWQ8Z190
ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgUG9pc29u
ZWQ8VGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7CisgICAgICAgIFBvaXNvbmVkPFRl
c3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCA9IFdURk1vdmUocDMpOwogICAgICAgICBBU1NFUlRf
RVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lz
b25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDMgPT0gcDQpOwpAQCAtMTM0LDE1ICsxMzcs
MTUgQEAgVEVTVChXVEZfUG9pc29uZWQsIEJhc2ljKQogICAgIH0KIAogICAgIHsKLSAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKLSAgICAgICAgUG9p
c29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoV1RGTW92ZShwMSkpOworICAgICAg
ICBQb2lzb25lZDxUZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9p
c29uZWQ8VGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKFdURk1vdmUocDEpKTsKICAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAy
LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxID09IHAyKTsKICAgICAgICAg
QVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CiAKLSAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKLSAgICAgICAgUG9pc29uZWQ8Z190
ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoV1RGTW92ZShwMykpOworICAgICAgICBQb2lzb25l
ZDxUZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8VGVz
dFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KFdURk1vdmUocDMpKTsKICAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29u
ZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAzID09IHA0KTsKQEAgLTE1MCwxNSArMTUzLDE1
IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBCYXNpYykKICAgICB9CiAKICAgICB7Ci0gICAgICAgIFBv
aXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOwotICAgICAg
ICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOworICAgICAgICBQ
b2lzb25lZDxUZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAg
IFBvaXNvbmVkPFRlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOwogICAgICAgICBBU1NF
UlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5w
b2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEgPT0gcDIpOwogICAgICAgICBBU1NF
UlRfVFJVRShwMiA9PSBwMSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5i
aXRzKCkpOwogCi0gICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAz
ID0gcDE7CisgICAgICAgIFBvaXNvbmVkPFRlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyA9IHAx
OwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VS
VF9UUlVFKHAxID09IHAzKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDMgPT0gcDEpOwpAQCAtMTY2
LDE2ICsxNjksMTYgQEAgVEVTVChXVEZfUG9pc29uZWQsIEJhc2ljKQogICAgIH0KIAogICAgIHsK
LSAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAxID0g
JmE7Ci0gICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gV1RG
TW92ZShwMSk7CisgICAgICAgIFBvaXNvbmVkPFRlc3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2Vy
Kj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8VGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAy
ID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRf
VFJVRShwMSA9PSBwMik7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAyID09IHAxKTsKICAgICAgICAg
QVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CiAKLSAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAzID0gJmE7Ci0gICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAg
IFBvaXNvbmVkPFRlc3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAg
ICAgUG9pc29uZWQ8VGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0ID0gV1RGTW92ZShwMyk7CiAg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VR
KCZhLCBwNC51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMyA9PSBwNCk7CkBA
IC0xODQsMjEgKzE4NywyMSBAQCBURVNUKFdURl9Qb2lzb25lZCwgQmFzaWMpCiAgICAgfQogCiAg
ICAgewotICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEp
OworICAgICAgICBQb2lzb25lZDxUZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKICAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcHRyLmNsZWFy
KCk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICB9
CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHBB
MTAwMGEgPSByZWludGVycHJldF9jYXN0PFJlZkxvZ2dlcio+KDB4MTAwMCk7Ci0gICAgICAgIFBv
aXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHBCMjAwMGEgPSByZWludGVycHJldF9j
YXN0PFJlZkxvZ2dlcio+KDB4MjAwMCk7CisgICAgICAgIFBvaXNvbmVkPFRlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwQTEwMDBhID0gcmVpbnRlcnByZXRfY2FzdDxSZWZMb2dnZXIqPigweDEwMDAp
OworICAgICAgICBQb2lzb25lZDxUZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcEIyMDAwYSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UmVmTG9nZ2VyKj4oMHgyMDAwKTsKIAotICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwQTEwMDBiID0gcmVpbnRlcnByZXRfY2FzdDxSZWZM
b2dnZXIqPigweDEwMDApOwotICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dn
ZXIqPiBwQTIwMDBiID0gcmVpbnRlcnByZXRfY2FzdDxSZWZMb2dnZXIqPigweDIwMDApOworICAg
ICAgICBQb2lzb25lZDxUZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcEExMDAwYiA9IHJlaW50ZXJw
cmV0X2Nhc3Q8UmVmTG9nZ2VyKj4oMHgxMDAwKTsKKyAgICAgICAgUG9pc29uZWQ8VGVzdFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHBBMjAwMGIgPSByZWludGVycHJldF9jYXN0PFJlZkxvZ2dlcio+KDB4
MjAwMCk7CiAKLSAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcEIx
MDAwYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UmVmTG9nZ2VyKj4oMHgxMDAwKTsKLSAgICAgICAgUG9p
c29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcEIyMDAwYyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8UmVmTG9nZ2VyKj4oMHgyMDAwKTsKKyAgICAgICAgUG9pc29uZWQ8VGVzdFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHBCMTAwMGMgPSByZWludGVycHJldF9jYXN0PFJlZkxvZ2dlcio+KDB4MTAwMCk7
CisgICAgICAgIFBvaXNvbmVkPFRlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwQjIwMDBjID0gcmVp
bnRlcnByZXRfY2FzdDxSZWZMb2dnZXIqPigweDIwMDApOwogCiAKICAgICAgICAgQVNTRVJUX0VR
KHBBMTAwMGEgPT0gcEExMDAwYSwgdHJ1ZSk7CkBAIC0yNjMsMTUgKzI2NiwxNSBAQCBURVNUKFdU
Rl9Qb2lzb25lZCwgQmFzaWMpCiAgICAgfQogCiAgICAgewotICAgICAgICBQb2lzb25lZDxnX3Rl
c3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwckExMDAwID0gcmVpbnRlcnByZXRfY2FzdDxEZXJpdmVk
UmVmTG9nZ2VyKj4oMHgxMDAwKTsKLSAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVy
aXZlZFJlZkxvZ2dlcio+IHBkQTEwMDAgPSByZWludGVycHJldF9jYXN0PERlcml2ZWRSZWZMb2dn
ZXIqPigweDEwMDApOwotICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIq
PiBwckIxMDAwID0gcmVpbnRlcnByZXRfY2FzdDxEZXJpdmVkUmVmTG9nZ2VyKj4oMHgxMDAwKTsK
LSAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHBkQjEw
MDAgPSByZWludGVycHJldF9jYXN0PERlcml2ZWRSZWZMb2dnZXIqPigweDEwMDApOwotCi0gICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHByQTIwMDAgPSByZWludGVy
cHJldF9jYXN0PERlcml2ZWRSZWZMb2dnZXIqPigweDIwMDApOwotICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcGRBMjAwMCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8RGVyaXZlZFJlZkxvZ2dlcio+KDB4MjAwMCk7Ci0gICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkIsIFJlZkxvZ2dlcio+IHByQjIwMDAgPSByZWludGVycHJldF9jYXN0PERlcml2ZWRSZWZM
b2dnZXIqPigweDIwMDApOwotICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBEZXJpdmVk
UmVmTG9nZ2VyKj4gcGRCMjAwMCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGVyaXZlZFJlZkxvZ2dlcio+
KDB4MjAwMCk7CisgICAgICAgIFBvaXNvbmVkPFRlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwckEx
MDAwID0gcmVpbnRlcnByZXRfY2FzdDxEZXJpdmVkUmVmTG9nZ2VyKj4oMHgxMDAwKTsKKyAgICAg
ICAgUG9pc29uZWQ8VGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwZEExMDAwID0gcmVp
bnRlcnByZXRfY2FzdDxEZXJpdmVkUmVmTG9nZ2VyKj4oMHgxMDAwKTsKKyAgICAgICAgUG9pc29u
ZWQ8VGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHByQjEwMDAgPSByZWludGVycHJldF9jYXN0PERl
cml2ZWRSZWZMb2dnZXIqPigweDEwMDApOworICAgICAgICBQb2lzb25lZDxUZXN0UG9pc29uQiwg
RGVyaXZlZFJlZkxvZ2dlcio+IHBkQjEwMDAgPSByZWludGVycHJldF9jYXN0PERlcml2ZWRSZWZM
b2dnZXIqPigweDEwMDApOworCisgICAgICAgIFBvaXNvbmVkPFRlc3RQb2lzb25BLCBSZWZMb2dn
ZXIqPiBwckEyMDAwID0gcmVpbnRlcnByZXRfY2FzdDxEZXJpdmVkUmVmTG9nZ2VyKj4oMHgyMDAw
KTsKKyAgICAgICAgUG9pc29uZWQ8VGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwZEEy
MDAwID0gcmVpbnRlcnByZXRfY2FzdDxEZXJpdmVkUmVmTG9nZ2VyKj4oMHgyMDAwKTsKKyAgICAg
ICAgUG9pc29uZWQ8VGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHByQjIwMDAgPSByZWludGVycHJl
dF9jYXN0PERlcml2ZWRSZWZMb2dnZXIqPigweDIwMDApOworICAgICAgICBQb2lzb25lZDxUZXN0
UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHBkQjIwMDAgPSByZWludGVycHJldF9jYXN0PERl
cml2ZWRSZWZMb2dnZXIqPigweDIwMDApOwogCiAgICAgICAgIEFTU0VSVF9FUShwckExMDAwID09
IHBkQTEwMDAsIHRydWUpOwogICAgICAgICBBU1NFUlRfRVEocHJBMTAwMCA9PSBwZEIxMDAwLCB0
cnVlKTsKQEAgLTM3Myw4ICszNzYsOCBAQCBURVNUKFdURl9Qb2lzb25lZCwgQXNzaWdubWVudCkK
ICAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAgICBQb2lzb25lZDxnX3Rl
c3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIFBvaXNvbmVkPFRlc3RQb2lz
b25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkPFRlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMigmYik7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgp
KTsKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwogICAgICAgICBwMSA9
IHAyOwpAQCAtMzgyLDggKzM4NSw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBBc3NpZ25tZW50KQog
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwogCi0gICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKLSAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QiwgUmVmTG9nZ2VyKj4gcDQoJmIpOworICAgICAgICBQb2lzb25lZDxUZXN0UG9pc29uQSwgUmVm
TG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQb2lzb25lZDxUZXN0UG9pc29uQiwgUmVmTG9nZ2Vy
Kj4gcDQoJmIpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CiAgICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKICAgICAgICAgcDMgPSBwNDsKQEAg
LTM5MywyMiArMzk2LDIyIEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBBc3NpZ25tZW50KQogICAgIH0K
IAogICAgIHsKLSAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRy
KCZhKTsKKyAgICAgICAgUG9pc29uZWQ8VGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7
CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIHB0ciA9
ICZiOwogICAgICAgICBBU1NFUlRfRVEoJmIsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgIH0KIAog
ICAgIHsKLSAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZh
KTsKKyAgICAgICAgUG9pc29uZWQ8VGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CiAg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIHB0ciA9IG51
bGxwdHI7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKICAg
ICB9CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAxKCZhKTsKLSAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIo
JmIpOworICAgICAgICBQb2lzb25lZDxUZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwor
ICAgICAgICBQb2lzb25lZDxUZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOwogICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYiwg
cDIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKQEAgLTQxNiw4ICs0
MTksOCBAQCBURVNUKFdURl9Qb2lzb25lZCwgQXNzaWdubWVudCkKICAgICAgICAgQVNTRVJUX0VR
KCZiLCBwMi51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0g
cDIuYml0cygpKTsKIAotICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIq
PiBwMygmYSk7Ci0gICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0
KCZiKTsKKyAgICAgICAgUG9pc29uZWQ8VGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsK
KyAgICAgICAgUG9pc29uZWQ8VGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKICAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoJmIs
IHA0LnVucG9pc29uZWQoKSk7CiAgICAgICAgIHAzID0gV1RGTW92ZShwNCk7CkBAIC00MjcsOCAr
NDMwLDggQEAgVEVTVChXVEZfUG9pc29uZWQsIEFzc2lnbm1lbnQpCiAgICAgfQogCiAgICAgewot
ICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7Cisg
ICAgICAgIFBvaXNvbmVkPFRlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAg
IFBvaXNvbmVkPFRlc3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDIoJmMpOwogICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYywg
cDIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcDEgPSBwMjsKQEAgLTQzNiw4ICs0MzksOCBAQCBU
RVNUKFdURl9Qb2lzb25lZCwgQXNzaWdubWVudCkKICAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51
bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygp
KTsKIAotICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7
Ci0gICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXIqPiBwNCgm
Yyk7CisgICAgICAgIFBvaXNvbmVkPFRlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7Cisg
ICAgICAgIFBvaXNvbmVkPFRlc3RQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMpOwog
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9F
USgmYywgcDQudW5wb2lzb25lZCgpKTsKICAgICAgICAgcDMgPSBwNDsKQEAgLTQ0NywxNSArNDUw
LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBBc3NpZ25tZW50KQogICAgIH0KIAogICAgIHsKLSAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAg
ICAgUG9pc29uZWQ8VGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CiAgICAgICAgIEFT
U0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIHB0ciA9ICZjOwogICAgICAg
ICBBU1NFUlRfRVEoJmMsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgIH0KIAogICAgIHsKLSAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDIoJmMpOworICAgICAg
ICBQb2lzb25lZDxUZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lz
b25lZDxUZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKICAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVu
cG9pc29uZWQoKSk7CiAgICAgICAgIHAxID0gV1RGTW92ZShwMik7CkBAIC00NjMsOCArNDY2LDgg
QEAgVEVTVChXVEZfUG9pc29uZWQsIEFzc2lnbm1lbnQpCiAgICAgICAgIEFTU0VSVF9FUSgmYywg
cDIudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJp
dHMoKSk7CiAKLSAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMo
JmEpOwotICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyKj4g
cDQoJmMpOworICAgICAgICBQb2lzb25lZDxUZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEp
OworICAgICAgICBQb2lzb25lZDxUZXN0UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZj
KTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NF
UlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CiAgICAgICAgIHAzID0gV1RGTW92ZShwNCk7CkBA
IC00NzQsMTQgKzQ3NywxNCBAQCBURVNUKFdURl9Qb2lzb25lZCwgQXNzaWdubWVudCkKICAgICB9
CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0
cigmYSk7CisgICAgICAgIFBvaXNvbmVkPFRlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEp
OwogICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICBwdHIg
PSBwdHI7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgfQog
CiAgICAgewotICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIo
JmEpOworICAgICAgICBQb2lzb25lZDxUZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsK
ICAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKICNpZiBDT01QSUxFUihD
TEFORykKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCkBAIC01MDMsOCArNTA2LDggQEAg
VEVTVChXVEZfUG9pc29uZWQsIFN3YXApCiAgICAgUmVmTG9nZ2VyIGIoImIiKTsKIAogICAgIHsK
LSAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAg
ICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAg
IFBvaXNvbmVkPFRlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIFBvaXNv
bmVkPFRlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CiAgICAgICAgIEFTU0VSVF9FUSgm
YSwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVk
KCkpOwogICAgICAgICBwMS5zd2FwKHAyKTsKQEAgLTUxMyw4ICs1MTYsOCBAQCBURVNUKFdURl9Q
b2lzb25lZCwgU3dhcCkKIAogICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDIuYml0
cygpKTsKIAotICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygm
YSk7Ci0gICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsK
KyAgICAgICAgUG9pc29uZWQ8VGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAg
ICAgUG9pc29uZWQ8VGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKICAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVu
cG9pc29uZWQoKSk7CiAgICAgICAgIHAzLnN3YXAocDQpOwpAQCAtNTI3LDggKzUzMCw4IEBAIFRF
U1QoV1RGX1BvaXNvbmVkLCBTd2FwKQogICAgIH0KIAogICAgIHsKLSAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAgICBQb2lzb25lZDxnX3Rl
c3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIFBvaXNvbmVkPFRlc3RQb2lz
b25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkPFRlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMigmYik7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgp
KTsKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwogICAgICAgICBzd2Fw
KHAxLCBwMik7CkBAIC01MzcsOCArNTQwLDggQEAgVEVTVChXVEZfUG9pc29uZWQsIFN3YXApCiAK
ICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7CiAKLSAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwotICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIFBvaXNvbmVk
PFRlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIFBvaXNvbmVkPFRlc3RQ
b2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5w
b2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOwogICAg
ICAgICBzd2FwKHAzLCBwNCk7CkBAIC01NTEsNyArNTU0LDcgQEAgVEVTVChXVEZfUG9pc29uZWQs
IFN3YXApCiAgICAgfQogCiAgICAgewotICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkPFRlc3RQb2lzb25BLCBSZWZMb2dn
ZXIqPiBwMSgmYSk7CiAgICAgICAgIFJlZkxvZ2dlciogcDIoJmIpOwogICAgICAgICBBU1NFUlRf
RVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIpOwpAQCAt
NTYzLDcgKzU2Niw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBTd2FwKQogICAgIH0KIAogICAgIHsK
LSAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAg
ICAgICBQb2lzb25lZDxUZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwogICAgICAgICBS
ZWZMb2dnZXIqIHAyKCZiKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkp
OwogICAgICAgICBBU1NFUlRfRVEoJmIsIHAyKTsKQEAgLTU3NSw5ICs1NzgsOSBAQCBURVNUKFdU
Rl9Qb2lzb25lZCwgU3dhcCkKICAgICB9CiB9CiAKLXN0YXRpYyBQb2lzb25lZDxnX3Rlc3RQb2lz
b25BLCBSZWZMb2dnZXIqPiBwb2lzb25lZFB0ckZvbyhSZWZMb2dnZXImIGxvZ2dlcikKK3N0YXRp
YyBQb2lzb25lZDxUZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcG9pc29uZWRQdHJGb28oUmVmTG9n
Z2VyJiBsb2dnZXIpCiB7Ci0gICAgcmV0dXJuIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxv
Z2dlcio+KCZsb2dnZXIpOworICAgIHJldHVybiBQb2lzb25lZDxUZXN0UG9pc29uQSwgUmVmTG9n
Z2VyKj4oJmxvZ2dlcik7CiB9CiAKIFRFU1QoV1RGX1BvaXNvbmVkLCBSZXR1cm5WYWx1ZSkKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkUmVmLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFJlZi5jcHAJKHJl
dmlzaW9uIDIyNzQ0OSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVk
UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsMTMgQEAgdWludHB0cl90IGdfcG9p
c29uRDsKIHVpbnRwdHJfdCBnX3BvaXNvbkU7CiB1aW50cHRyX3QgZ19wb2lzb25GOwogCit1c2lu
ZyBQb2lzb25BID0gUG9pc29uPGdfcG9pc29uQT47Cit1c2luZyBQb2lzb25CID0gUG9pc29uPGdf
cG9pc29uQj47Cit1c2luZyBQb2lzb25DID0gUG9pc29uPGdfcG9pc29uQz47Cit1c2luZyBQb2lz
b25EID0gUG9pc29uPGdfcG9pc29uRD47Cit1c2luZyBQb2lzb25FID0gUG9pc29uPGdfcG9pc29u
RT47Cit1c2luZyBQb2lzb25GID0gUG9pc29uPGdfcG9pc29uRj47CisKIHN0YXRpYyB2b2lkIGlu
aXRpYWxpemVQb2lzb25zKCkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6
ZU9uY2VGbGFnOwpAQCAtNjMsNyArNzAsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgQmFzaWMp
CiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVk
UmVmPGdfcG9pc29uQSwgUmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPFBv
aXNvbkEsIFJlZkxvZ2dlcj4gcmVmKGEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIo
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYS5uYW1lLCAmcmVmLT5uYW1lKTsKIApAQCAtNzEsMTYg
Kzc4LDE2IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBCYXNpYykKICAgICAgICAgdWludHB0cl90
IHB0ckJpdHM7CiAgICAgICAgIHN0ZDo6bWVtY3B5KCZwdHJCaXRzLCAmcmVmLCBzaXplb2YocHRy
Qml0cykpOwogICAgICAgICBBU1NFUlRfVFJVRShwdHJCaXRzICE9IGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KCZhKSk7Ci0gICAgICAgIEFTU0VSVF9FUShwdHJCaXRzLCAoUG9pc29uZWQ8Z19wb2lz
b25BLCBSZWZMb2dnZXIqPigmYSkuYml0cygpKSk7CisgICAgICAgIEFTU0VSVF9FUShwdHJCaXRz
LCAoUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4oJmEpLmJpdHMoKSkpOwogI2lmIEVOQUJM
RShQT0lTT05fQVNTRVJUUykKLSAgICAgICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkPGdfcG9pc29u
QSwgUmVmTG9nZ2VyKj46OmlzUG9pc29uZWQocHRyQml0cykpKTsKKyAgICAgICAgQVNTRVJUX1RS
VUUoKFBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7
CiAjZW5kaWYKICNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQogICAgIH0KICAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0g
ICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uQiwgUmVmTG9nZ2VyPiByZWYoYWRvcHRSZWYoYSkp
OworICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25CLCBSZWZMb2dnZXI+IHJlZihhZG9wdFJlZihh
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKICAgICAgICAgRVhQRUNUX0VR
KCZhLm5hbWUsICZyZWYtPm5hbWUpOwogICAgIH0KQEAgLTk2LDcgKzEwMyw3IEBAIFRFU1QoV1RG
X1BvaXNvbmVkUmVmLCBBc3NpZ25tZW50KQogICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOwog
CiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4gcmVmKGEp
OworICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25DLCBSZWZMb2dnZXI+IHJlZihhKTsKICAgICAg
ICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAg
ICAgICByZWYgPSBiOwpAQCAtMTA2LDcgKzExMyw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBB
c3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVmKGIpIGRlcmVmKGEpIHwg
ZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lz
b25lZFJlZjxnX3BvaXNvbkQsIFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBQb2lzb25lZFJl
ZjxQb2lzb25ELCBSZWZMb2dnZXI+IHJlZihhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYu
cHRyKCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICByZWYgPSBjOwpAQCAtMTE2
LDcgKzEyMyw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBBc3NpZ25tZW50KQogICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpIHwgcmVmKGMpIGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkUsIFJl
ZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25FLCBSZWZMb2dnZXI+
IHJlZihhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOwogICAgICAgICBsb2co
KSA8PCAifCAiOwogICAgICAgICByZWYgPSBhZG9wdFJlZihiKTsKQEAgLTEyNiw3ICsxMzMsNyBA
QCBURVNUKFdURl9Qb2lzb25lZFJlZiwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAg
ICAgewotICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkYsIFJlZkxvZ2dlcj4gcmVmKGEpOwor
ICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25GLCBSZWZMb2dnZXI+IHJlZihhKTsKICAgICAgICAg
RVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAg
ICByZWYgPSBhZG9wdFJlZihjKTsKQEAgLTEzNiw3ICsxNDMsNyBAQCBURVNUKFdURl9Qb2lzb25l
ZFJlZiwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IGRlcmVmKGEpIHwg
ZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogfQogCi1zdGF0aWMgUG9pc29uZWRS
ZWY8Z19wb2lzb25CLCBSZWZMb2dnZXI+IHBhc3NXaXRoUmVmKFBvaXNvbmVkUmVmPGdfcG9pc29u
QywgUmVmTG9nZ2VyPiYmIHJlZmVyZW5jZSkKK3N0YXRpYyBQb2lzb25lZFJlZjxQb2lzb25CLCBS
ZWZMb2dnZXI+IHBhc3NXaXRoUmVmKFBvaXNvbmVkUmVmPFBvaXNvbkMsIFJlZkxvZ2dlcj4mJiBy
ZWZlcmVuY2UpCiB7CiAgICAgcmV0dXJuIFdURk1vdmUocmVmZXJlbmNlKTsKIH0KQEAgLTE1MCwx
MyArMTU3LDEzIEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBSZXR1cm5WYWx1ZSkKICAgICBEZXJp
dmVkUmVmTG9nZ2VyIGMoImMiKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8Z19wb2lz
b25CLCBSZWZMb2dnZXI+IHJlZihwYXNzV2l0aFJlZihQb2lzb25lZFJlZjxnX3BvaXNvbkMsIFJl
ZkxvZ2dlcj4oYSkpKTsKKyAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uQiwgUmVmTG9nZ2VyPiBy
ZWYocGFzc1dpdGhSZWYoUG9pc29uZWRSZWY8UG9pc29uQywgUmVmTG9nZ2VyPihhKSkpOwogICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgi
cmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAg
ICAgUG9pc29uZWRSZWY8Z19wb2lzb25ELCBSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgUG9p
c29uZWRSZWY8UG9pc29uRCwgUmVmTG9nZ2VyPiByZWYoYSk7CiAgICAgICAgIEVYUEVDVF9FUSgm
YSwgcmVmLnB0cigpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcmVmID0gcGFz
c1dpdGhSZWYoYik7CkBAIC0xNjYsMjIgKzE3MywyMiBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwg
UmV0dXJuVmFsdWUpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYikgZGVyZWYoYSkg
fCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBv
aXNvbmVkUmVmUHRyPGdfcG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIocGFzc1dpdGhSZWYoYSkpOwor
ICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHB0cihwYXNzV2l0aFJl
ZihhKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgRVhQ
RUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAg
ICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkYsIERlcml2ZWRSZWZMb2dnZXI+
IHB0cigmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQSwgUmVmTG9nZ2VyPiBw
dHIyKFdURk1vdmUocHRyKSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIERlcml2
ZWRSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkEsIFJl
ZkxvZ2dlcj4gcHRyMihXVEZNb3ZlKHB0cikpOwogICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwg
cHRyLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIyLmdldCgpKTsKICAgICB9CiAg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkIsIERlcml2ZWRSZWZMb2dn
ZXI+IGRlcml2ZWRSZWZlcmVuY2UoYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uQywg
UmVmTG9nZ2VyPiBiYXNlUmVmZXJlbmNlKHBhc3NXaXRoUmVmKGRlcml2ZWRSZWZlcmVuY2UuY29w
eVJlZigpKSk7CisgICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+
IGRlcml2ZWRSZWZlcmVuY2UoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkMsIFJlZkxv
Z2dlcj4gYmFzZVJlZmVyZW5jZShwYXNzV2l0aFJlZihkZXJpdmVkUmVmZXJlbmNlLmNvcHlSZWYo
KSkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIGRlcml2ZWRSZWZlcmVuY2UucHRyKCkpOwogICAg
ICAgICBFWFBFQ1RfRVEoJmEsIGJhc2VSZWZlcmVuY2UucHRyKCkpOwogICAgIH0KQEAgLTE5Niw4
ICsyMDMsOCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgU3dhcCkKICAgICBSZWZMb2dnZXIgYigi
YiIpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkQsIFJlZkxvZ2dlcj4g
cDEoYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uRSwgUmVmTG9nZ2VyPiBwMihiKTsK
KyAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRCwgUmVmTG9nZ2VyPiBwMShhKTsKKyAgICAgICAg
UG9pc29uZWRSZWY8UG9pc29uRSwgUmVmTG9nZ2VyPiBwMihiKTsKICAgICAgICAgbG9nKCkgPDwg
InwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5wdHIoKSk7CiAgICAgICAgIEVYUEVDVF9F
USgmYiwgcDIucHRyKCkpOwpAQCAtMjA5LDggKzIxNiw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVm
LCBTd2FwKQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHwgZGVyZWYoYSkgZGVy
ZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25l
ZFJlZjxnX3BvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmPGdf
cG9pc29uQSwgUmVmTG9nZ2VyPiBwMihiKTsKKyAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRiwg
UmVmTG9nZ2VyPiBwMShhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uQSwgUmVmTG9nZ2Vy
PiBwMihiKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBw
MS5wdHIoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIucHRyKCkpOwpAQCAtMjIyLDcgKzIy
OSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBTd2FwKQogICAgIEVYUEVDVF9TVFJFUSgicmVm
KGEpIHJlZihiKSB8IHwgZGVyZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkYsIFJlZkxvZ2dlcj4gcDEo
YSk7CisgICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoYSk7CiAgICAg
ICAgIFJlZjxSZWZMb2dnZXI+IHAyKGIpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHAxLnB0cigpKTsKQEAgLTIzNSw3ICsyNDIsNyBAQCBURVNUKFdURl9Q
b2lzb25lZFJlZiwgU3dhcCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCB8IGRl
cmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAg
ICAgUG9pc29uZWRSZWY8Z19wb2lzb25GLCBSZWZMb2dnZXI+IHAxKGEpOworICAgICAgICBQb2lz
b25lZFJlZjxQb2lzb25GLCBSZWZMb2dnZXI+IHAxKGEpOwogICAgICAgICBSZWY8UmVmTG9nZ2Vy
PiBwMihiKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBw
MS5wdHIoKSk7CkBAIC0yNDksNyArMjU2LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIFN3YXAp
CiB9CiAKIHN0cnVjdCBQb2lzb25lZFJlZkNoZWNraW5nUmVmTG9nZ2VyIDogUmVmTG9nZ2VyIHsK
LSAgICB1c2luZyBSZWYgPSBQb2lzb25lZFJlZjxnX3BvaXNvbkIsIFBvaXNvbmVkUmVmQ2hlY2tp
bmdSZWZMb2dnZXI+OworICAgIHVzaW5nIFJlZiA9IFBvaXNvbmVkUmVmPFBvaXNvbkIsIFBvaXNv
bmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXI+OwogCiAgICAgUG9pc29uZWRSZWZDaGVja2luZ1JlZkxv
Z2dlcihjb25zdCBjaGFyKiBuYW1lKTsKICAgICB2b2lkIHJlZigpOwpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRSZWZQdHIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkUmVmUHRyLmNwcAkocmV2aXNpb24g
MjI3NDQ5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRSZWZQdHIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDYgKzQzLDEzIEBAIHVpbnRwdHJfdCBnX3BvaXNvbkQ7CiB1
aW50cHRyX3QgZ19wb2lzb25FOwogdWludHB0cl90IGdfcG9pc29uRjsKIAordXNpbmcgUG9pc29u
QSA9IFBvaXNvbjxnX3BvaXNvbkE+OwordXNpbmcgUG9pc29uQiA9IFBvaXNvbjxnX3BvaXNvbkI+
OwordXNpbmcgUG9pc29uQyA9IFBvaXNvbjxnX3BvaXNvbkM+OwordXNpbmcgUG9pc29uRCA9IFBv
aXNvbjxnX3BvaXNvbkQ+OwordXNpbmcgUG9pc29uRSA9IFBvaXNvbjxnX3BvaXNvbkU+OwordXNp
bmcgUG9pc29uRiA9IFBvaXNvbjxnX3BvaXNvbkY+OworCiBzdGF0aWMgdm9pZCBpbml0aWFsaXpl
UG9pc29ucygpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxh
ZzsKQEAgLTY0LDExICs3MSwxMSBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQmFzaWMpCiAK
ICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKIAotICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9p
c29uQSwgUmVmTG9nZ2VyPiBlbXB0eTsKKyAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25BLCBSZWZM
b2dnZXI+IGVtcHR5OwogICAgIEVYUEVDVF9FUShudWxscHRyLCBlbXB0eS5nZXQoKSk7CiAKICAg
ICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQiwgUmVmTG9nZ2VyPiBwdHIoJmEp
OworICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCAm
KnB0cik7CiAgICAgICAgIEVYUEVDVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTc3LDcw
ICs4NCw3MCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQmFzaWMpCiAgICAgICAgIHVpbnRw
dHJfdCBwdHJCaXRzOwogICAgICAgICBzdGQ6Om1lbWNweSgmcHRyQml0cywgJnB0ciwgc2l6ZW9m
KHB0ckJpdHMpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocHRyQml0cyAhPSBiaXR3aXNlX2Nhc3Q8
dWludHB0cl90PigmYSkpOwotICAgICAgICBBU1NFUlRfRVEocHRyQml0cywgKFBvaXNvbmVkPGdf
cG9pc29uQiwgUmVmTG9nZ2VyKj4oJmEpLmJpdHMoKSkpOworICAgICAgICBBU1NFUlRfRVEocHRy
Qml0cywgKFBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+KCZhKS5iaXRzKCkpKTsKICNpZiBF
TkFCTEUoUE9JU09OX0FTU0VSVFMpCi0gICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZDxnX3Bv
aXNvbkIsIFJlZkxvZ2dlcio+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CisgICAgICAgIEFTU0VS
VF9UUlVFKChQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPjo6aXNQb2lzb25lZChwdHJCaXRz
KSkpOwogI2VuZGlmCiAjZW5kaWYgLy8gRU5BQkxFKFBPSVNPTikKICAgICB9CiAgICAgRVhQRUNU
X1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAg
ewotICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4gcHRyID0gJmE7
CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcHRyID0gJmE7CiAg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAg
ICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkQsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAg
ICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25FLCBSZWZMb2dnZXI+IHAyKHAxKTsKKyAgICAgICAg
UG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lz
b25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHAyKHAxKTsKICAgICAgICAgRVhQRUNUX0VR
KCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0K
ICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYSkgZGVyZWYoYSkgZGVyZWYoYSkgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3Bv
aXNvbkYsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lz
b25CLCBSZWZMb2dnZXI+IHAyID0gcDE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYs
IFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgUmVm
TG9nZ2VyPiBwMiA9IHAxOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKICAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVm
KGEpIHJlZihhKSBkZXJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAK
ICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywgUmVmTG9nZ2VyPiBwMSA9
ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkQsIFJlZkxvZ2dlcj4gcDIgPSBX
VEZNb3ZlKHAxKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBw
MSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHAyID0g
V1RGTW92ZShwMSk7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAg
IFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRSwgUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQ
b2lzb25lZFJlZlB0cjxnX3BvaXNvbkYsIFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOworICAg
ICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAg
IFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOwogICAg
ICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEs
IHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwg
dGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxn
X3BvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVm
UHRyPGdfcG9pc29uQywgUmVmTG9nZ2VyPiBwMiA9IHAxOworICAgICAgICBQb2lzb25lZFJlZlB0
cjxQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJl
ZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IHAyID0gcDE7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwg
cDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGEpIGRlcmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dT
dHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25E
LCBEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3Bv
aXNvbkUsIFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgUG9pc29uZWRSZWZQ
dHI8UG9pc29uRCwgRGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWRS
ZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAgICBFWFBF
Q1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgp
KTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkYs
IFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVm
TG9nZ2VyPiBwdHIoJmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAg
ICAgIHB0ciA9IG51bGxwdHI7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkp
OwpAQCAtMTU1LDcgKzE2Miw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25QYXNz
UmVmVG8KICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKICAgICB7CiAgICAgICAgIFJlZjxS
ZWZMb2dnZXI+IHBhc3NSZWYoYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQiwg
UmVmTG9nZ2VyPiBwdHIgPSBXVEZNb3ZlKHBhc3NSZWYpOworICAgICAgICBQb2lzb25lZFJlZlB0
cjxQb2lzb25CLCBSZWZMb2dnZXI+IHB0ciA9IFdURk1vdmUocGFzc1JlZik7CiAgICAgICAgIEVY
UEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkg
ZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwpAQCAtMTY3LDExICsxNzQsMTEgQEAg
VEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFkb3B0KQogCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBh
KCJhIik7CiAKLSAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4gZW1wdHk7
CisgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBlbXB0eTsKICAgICBFWFBF
Q1RfRVEobnVsbHB0ciwgZW1wdHkuZ2V0KCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJl
ZlB0cjxnX3BvaXNvbkQsIFJlZkxvZ2dlcj4gcHRyKGFkb3B0UmVmKCZhKSk7CisgICAgICAgIFBv
aXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcHRyKGFkb3B0UmVmKCZhKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCAmKnB0
cik7CiAgICAgICAgIEVYUEVDVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTE3OSw3ICsx
ODYsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQWRvcHQpCiAgICAgRVhQRUNUX1NUUkVR
KCJkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBv
aXNvbmVkUmVmUHRyPGdfcG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIgPSBhZG9wdFJlZigmYSk7Cisg
ICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcHRyID0gYWRvcHRSZWYo
JmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVD
VF9TVFJFUSgiZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwpAQCAtMTk0LDggKzIw
MSw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIERlcml2ZWRS
ZWZMb2dnZXIgYygiYyIpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNv
bkYsIFJlZkxvZ2dlcj4gcDEoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkIs
IFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25GLCBSZWZM
b2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9nZ2Vy
PiBwMigmYik7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBF
Q1RfRVEoJmIsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTIwNyw3ICsy
MTQsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSByZWYoYikgfCByZWYoYikgZGVyZWYoYSkgfCBkZXJlZihiKSBkZXJlZihi
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVm
UHRyPGdfcG9pc29uQywgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0
cjxQb2lzb25DLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRy
LmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcHRyID0gJmI7CkBAIC0y
MTcsNyArMjI0LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYikgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9p
c29uRCwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25E
LCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsK
ICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcHRyID0gYWRvcHRSZWYoJmIpOwpAQCAt
MjI3LDcgKzIzNCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRSwg
UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZM
b2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAg
ICAgcHRyID0gbnVsbHB0cjsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7
CkBAIC0yMzUsOCArMjQyLDggQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQp
CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkIsIFJlZkxvZ2dl
cj4gcDEoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4g
cDIoJmIpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBSZWZMb2dnZXI+IHAxKCZh
KTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwMigmYik7CiAg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmIsIHAy
LmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTI0OCw4ICsyNTUsOCBAQCBURVNU
KFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihh
KSByZWYoYikgfCBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
IAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25ELCBSZWZMb2dnZXI+IHAx
KCZhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25FLCBEZXJpdmVkUmVmTG9nZ2Vy
PiBwMigmYyk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcDEo
JmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBEZXJpdmVkUmVmTG9nZ2VyPiBw
MigmYyk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1Rf
RVEoJmMsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTI2MSw3ICsyNjgs
NyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSByZWYoYykgfCByZWYoYykgZGVyZWYoYSkgfCBkZXJlZihjKSBkZXJlZihjKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRy
PGdfcG9pc29uRiwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxQ
b2lzb25GLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdl
dCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcHRyID0gJmM7CkBAIC0yNzEs
NyArMjc4LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQ
RUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYykgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29u
QiwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBS
ZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAg
ICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcHRyID0gYWRvcHRSZWYoJmMpOwpAQCAtMjgx
LDggKzI4OCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywgUmVm
TG9nZ2VyPiBwMSgmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRCwgRGVyaXZl
ZFJlZkxvZ2dlcj4gcDIoJmMpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZM
b2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgRGVyaXZlZFJl
ZkxvZ2dlcj4gcDIoJmMpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKICAgICAg
ICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CkBAIC0y
OTQsNyArMzAxLDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGMpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9p
c29uRSwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25F
LCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsK
ICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcHRyID0gcHRyOwpAQCAtMzA0LDcgKzMx
MSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9T
VFJFUSgicmVmKGEpIHwgcmVmKGEpIGRlcmVmKGEpIHwgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkYsIFJl
ZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9n
Z2VyPiBwdHIoJmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAjaWYgQ09N
UElMRVIoQ0xBTkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaApAQCAtMzI4LDggKzMz
NSw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBTd2FwKQogICAgIFJlZkxvZ2dlciBiKCJi
Iik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQiwgUmVmTG9nZ2Vy
PiBwMSgmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywgUmVmTG9nZ2VyPiBw
MigmYik7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcDEoJmEp
OworICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IHAyKCZiKTsKICAg
ICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOwpAQCAtMzQxLDggKzM0OCw4IEBAIFRFU1Qo
V1RGX1BvaXNvbmVkUmVmUHRyLCBTd2FwKQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihi
KSB8IHwgZGVyZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAg
ewotICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkQsIFJlZkxvZ2dlcj4gcDEoJmEpOwot
ICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkUsIFJlZkxvZ2dlcj4gcDIoJmIpOworICAg
ICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAg
UG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwMigmYik7CiAgICAgICAgIGxvZygp
IDw8ICJ8ICI7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBF
Q1RfRVEoJmIsIHAyLmdldCgpKTsKQEAgLTM2MSw4ICszNjgsOCBAQCBURVNUKFdURl9Qb2lzb25l
ZFJlZlB0ciwgUmVsZWFzZU5vbk51bGwpCiAgICAgUmVmTG9nZ2VyIGEoImEiKTsKIAogICAgIHsK
LSAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25GLCBSZWZMb2dnZXI+IHJlZlB0ciA9ICZh
OwotICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkIsIFJlZkxvZ2dlcj4gcmVmID0gcmVm
UHRyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJl
ZkxvZ2dlcj4gcmVmUHRyID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJl
ZkxvZ2dlcj4gcmVmID0gcmVmUHRyLnJlbGVhc2VOb25OdWxsKCk7CiAgICAgfQogCiAgICAgRVhQ
RUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwpAQCAt
Mzc3LDMyICszODQsMzIgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFJlbGVhc2UpCiAgICAg
RGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRy
PGdfcG9pc29uQywgUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxn
X3BvaXNvbkQsIFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgUG9pc29uZWRS
ZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0
cjxQb2lzb25ELCBSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEVYUEVDVF9F
UShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwog
ICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRSwgUmVm
TG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkYsIFJlZkxv
Z2dlcj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBS
ZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxv
Z2dlcj4gcDIoV1RGTW92ZShwMSkpOwogICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0
KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNU
X1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAg
ewotICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IHAx
ID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywgUmVmTG9nZ2VyPiBwMiA9
IFdURk1vdmUocDEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBEZXJpdmVkUmVm
TG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dn
ZXI+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQo
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7
Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRCwgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0g
ICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRSwgUmVmTG9nZ2VyPiBwMigmYik7CisgICAg
ICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQ
b2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHAyKCZiKTsKICAgICAgICAgRVhQRUNU
X0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOwogICAg
ICAgICBsb2coKSA8PCAifCAiOwpAQCAtNDE0LDggKzQyMSw4IEBAIFRFU1QoV1RGX1BvaXNvbmVk
UmVmUHRyLCBSZWxlYXNlKQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IGRlcmVm
KGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAg
ICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoJmEpOwotICAgICAgICBQ
b2lzb25lZFJlZlB0cjxnX3BvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKKyAgICAg
ICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBv
aXNvbmVkUmVmUHRyPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKICAgICAgICAg
RVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0KCkp
OwogICAgICAgICBsb2coKSA8PCAifCAiOwpAQCAtNDI3LDkgKzQzNCw5IEBAIFRFU1QoV1RGX1Bv
aXNvbmVkUmVmUHRyLCBSZWxlYXNlKQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihjKSB8
IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogfQogCi1zdGF0
aWMgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25DLCBSZWZMb2dnZXI+IGYxKFJlZkxvZ2dlciYgbG9n
Z2VyKQorc3RhdGljIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gZjEoUmVmTG9n
Z2VyJiBsb2dnZXIpCiB7Ci0gICAgcmV0dXJuIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywgUmVm
TG9nZ2VyPigmbG9nZ2VyKTsKKyAgICByZXR1cm4gUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVm
TG9nZ2VyPigmbG9nZ2VyKTsKIH0KIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFJldHVyblZh
bHVlKQpAQCAtNDcxLDE3ICs0NzgsMTcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIENvbnN0
KQogICAgIC8vIFRoaXMgdGVzdCBwYXNzZXMgaWYgaXQgY29tcGlsZXMgd2l0aG91dCBhbiBlcnJv
ci4KICAgICBhdXRvIGEgPSBDb25zdFJlZkNvdW50ZWQ6OmNyZWF0ZSgpOwogICAgIFJlZjxjb25z
dCBDb25zdFJlZkNvdW50ZWQ+IGIgPSBXVEZNb3ZlKGEpOwotICAgIFBvaXNvbmVkUmVmUHRyPGdf
cG9pc29uRCwgY29uc3QgQ29uc3RSZWZDb3VudGVkPiBjID0gYi5wdHIoKTsKKyAgICBQb2lzb25l
ZFJlZlB0cjxQb2lzb25ELCBjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGMgPSBiLnB0cigpOwogICAg
IFJlZjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGQgPSByZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYo
KTsKLSAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkUsIGNvbnN0IENvbnN0UmVmQ291bnRlZD4g
ZSA9ICZyZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYoKTsKLSAgICBQb2lzb25lZFJlZlB0cjxnX3Bv
aXNvbkYsIENvbnN0UmVmQ291bnRlZD4gZiA9IENvbnN0UmVmQ291bnRlZDo6Y3JlYXRlKCk7Ci0g
ICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25CLCBjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGcgPSBm
OwotICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywgY29uc3QgQ29uc3RSZWZDb3VudGVkPiBo
KGYpOworICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIGNvbnN0IENvbnN0UmVmQ291bnRlZD4g
ZSA9ICZyZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYoKTsKKyAgICBQb2lzb25lZFJlZlB0cjxQb2lz
b25GLCBDb25zdFJlZkNvdW50ZWQ+IGYgPSBDb25zdFJlZkNvdW50ZWQ6OmNyZWF0ZSgpOworICAg
IFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIGNvbnN0IENvbnN0UmVmQ291bnRlZD4gZyA9IGY7Cisg
ICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgY29uc3QgQ29uc3RSZWZDb3VudGVkPiBoKGYpOwog
ICAgIFJlZjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGkocmV0dXJuUmVmQ291bnRlZFJlZigpKTsK
IH0KIAogc3RydWN0IFBvaXNvbmVkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIgOiBSZWZMb2dnZXIg
ewotICAgIHVzaW5nIFJlZiA9IFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRCwgUG9pc29uZWRSZWZQ
dHJDaGVja2luZ1JlZkxvZ2dlcj47CisgICAgdXNpbmcgUmVmID0gUG9pc29uZWRSZWZQdHI8UG9p
c29uRCwgUG9pc29uZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj47CiAKICAgICBQb2lzb25lZFJl
ZlB0ckNoZWNraW5nUmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUpOwogICAgIHZvaWQgcmVmKCk7
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRV
bmlxdWVQdHIuY3BwCShyZXZpc2lvbiAyMjc0NDkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1
LDkgQEAgbmFtZXNwYWNlIHsKIHVpbnRwdHJfdCBnX3BvaXNvbkE7CiB1aW50cHRyX3QgZ19wb2lz
b25COwogCit1c2luZyBQb2lzb25BID0gUG9pc29uPGdfcG9pc29uQT47Cit1c2luZyBQb2lzb25C
ID0gUG9pc29uPGdfcG9pc29uQj47CisKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVQb2lzb25zKCkK
IHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2VGbGFnOwpAQCAtNzYs
MTIgKzc5LDEyIEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICBpbml0
aWFsaXplUG9pc29ucygpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3Bv
aXNvbkEsIExvZ2dlcj4gZW1wdHk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcj4gZW1wdHk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBlbXB0eS51bnBvaXNv
bmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoMHUsIGVtcHR5LmJpdHMoKSk7CiAgICAgfQogICAg
IHsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IGVtcHR5KG51
bGxwdHIpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IGVtcHR5
KG51bGxwdHIpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25lZCgp
KTsKICAgICAgICAgQVNTRVJUX0VRKDB1LCBlbXB0eS5iaXRzKCkpOwogICAgIH0KQEAgLTkwLDcg
KzkzLDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQg
YURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwg
YURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxnX3BvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURl
c3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsICYqcHRyKTsKQEAgLTEwMSw3ICsxMDQsNyBAQCBU
RVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgICAgICBzdGQ6Om1lbWNw
eSgmcHRyQml0cywgJnB0ciwgc2l6ZW9mKHB0ckJpdHMpKTsKICAgICAgICAgICAgIEFTU0VSVF9U
UlVFKHB0ckJpdHMgIT0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oYSkpOwogI2lmIEVOQUJMRShQ
T0lTT05fQVNTRVJUUykKLSAgICAgICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZFVuaXF1ZVB0
cjxnX3BvaXNvbkEsIExvZ2dlcj46OmlzUG9pc29uZWQocHRyQml0cykpKTsKKyAgICAgICAgICAg
IEFTU0VSVF9UUlVFKChQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+Ojppc1BvaXNv
bmVkKHB0ckJpdHMpKSk7CiAjZW5kaWYKICNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQogICAgICAg
ICB9CkBAIC0xMTAsNyArMTEzLDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2lj
KQogICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBEZXJpdmVkTG9nZ2Vy
KiBiID0gbmV3IERlcml2ZWRMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsK
LSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIoYik7
CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihiKTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoYiwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYiwg
JipwdHIpOwpAQCAtMTIzLDcgKzEyNiw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBC
YXNpYykKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBh
ID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHB0ciA9IGE7CisgICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9IGE7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICB9CkBAIC0xMzIsNyArMTM1LDcgQEAgVEVT
VChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgYkRlc3RydWN0Q291
bnQgPSAwOwogICAgICAgICBEZXJpdmVkTG9nZ2VyKiBiID0gbmV3IERlcml2ZWRMb2dnZXIoImIi
LCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBiOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAs
IGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwdHIudW5wb2lzb25l
ZCgpKTsKICAgICAgICAgfQpAQCAtMTQzLDcgKzE0Niw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5p
cXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAg
Y29uc3QgY2hhciogYU5hbWUgPSAiYSI7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBQb2lzb25lZFVuaXF1ZVB0cjxnX3Bv
aXNvbkEsIExvZ2dlcj46OmNyZWF0ZShhTmFtZSwgYURlc3RydWN0Q291bnQpOworICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXI+OjpjcmVhdGUoYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NF
UlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKGFOYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTE1Myw3ICsxNTYsNyBAQCBURVNUKFdURl9Qb2lz
b25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAg
ICAgICAgIGNvbnN0IGNoYXIqIGJOYW1lID0gImIiOwogICAgICAgICB7Ci0gICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcHRyID0gUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBEZXJpdmVkTG9nZ2VyPjo6Y3JlYXRlKGJOYW1lLCBiRGVzdHJ1Y3RDb3Vu
dCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIERlcml2ZWRMb2dnZXI+OjpjcmVhdGUoYk5hbWUs
IGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKGJOYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTE2NSw3ICsx
NjgsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCBh
RGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFOYW1lID0gImEiOwogICAg
ICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4g
cHRyID0gc3RkOjptYWtlX3VuaXF1ZTxMb2dnZXI+KGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7Cisg
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9IHN0ZDo6
bWFrZV91bmlxdWU8TG9nZ2VyPihhTmFtZSwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKG51
bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYU5hbWUs
ICZwdHItPm5hbWUpOwpAQCAtMTc1LDcgKzE3OCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVl
UHRyLCBCYXNpYykKICAgICAgICAgaW50IGJEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgY29u
c3QgY2hhciogYk5hbWUgPSAiYiI7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcml2ZWRM
b2dnZXI+KGJOYW1lLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyaXZlZExvZ2dl
cj4oYk5hbWUsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBv
aXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGJOYW1lLCAmcHRyLT5uYW1lKTsKQEAg
LTE4NSw3ICsxODgsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAg
ICAgIGludCB1bmlxdWVEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgY29uc3QgY2hhciogdW5p
cXVlTmFtZSA9ICJ1bmlxdWUiOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxnX3BvaXNvbkEsIERlcml2ZWRMb2dnZXI+IHB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVy
aXZlZExvZ2dlcj4odW5pcXVlTmFtZSwgdW5pcXVlRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBEZXJpdmVkTG9nZ2VyPiBwdHIgPSBzdGQ6Om1h
a2VfdW5pcXVlPERlcml2ZWRMb2dnZXI+KHVuaXF1ZU5hbWUsIHVuaXF1ZURlc3RydWN0Q291bnQp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIHVuaXF1ZURlc3RydWN0Q291bnQpOwogICAgICAg
ICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUSh1bmlxdWVOYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTE5NSw3ICsxOTgsNyBA
QCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCB1bmlxdWVE
ZXJpdmVkRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIHVuaXF1ZURlcml2
ZWROYW1lID0gInVuaXF1ZSBkZXJpdmVkIjsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVy
aXZlZExvZ2dlcj4odW5pcXVlRGVyaXZlZE5hbWUsIHVuaXF1ZURlcml2ZWREZXN0cnVjdENvdW50
KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxEZXJpdmVkTG9nZ2VyPih1bmlxdWVEZXJpdmVkTmFtZSwgdW5pcXVl
RGVyaXZlZERlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIHVuaXF1ZURl
cml2ZWREZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKG51bGxwdHIgIT0g
cHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEodW5pcXVlRGVyaXZlZE5h
bWUsICZwdHItPm5hbWUpOwpAQCAtMjA5LDE1ICsyMTIsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRV
bmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURl
c3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBuZXcgTG9nZ2VyKCJiIiwgYkRlc3Ry
dWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3Bv
aXNvbkEsIExvZ2dlcj4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19w
b2lzb25BLCBMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgICAgIEFT
U0VSVF9FUShhRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0
ciwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDEuYml0cygp
KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOwotICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBMb2dnZXI+IHA0ID0gV1RGTW92ZShw
Myk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAzID0g
YjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcj4gcDQgPSBX
VEZNb3ZlKHAzKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUSgwdSwgcDMuYml0cygpKTsKQEAgLTIzMywxNSArMjM2LDE1IEBAIFRFU1Qo
V1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExv
Z2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbmV3IExvZ2dl
cigiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VS
VF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDB1
LCBwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7
CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMyA9
IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIExvZ2dlcj4gcDQo
V1RGTW92ZShwMykpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9n
Z2VyPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dn
ZXI+IHA0KFdURk1vdmUocDMpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDMuYml0cygpKTsKQEAgLTI1NywxNSArMjYwLDE1
IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgRGVyaXZlZExv
Z2dlciogYSA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAg
ICBEZXJpdmVkTG9nZ2VyKiBiID0gbmV3IERlcml2ZWRMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwg
TG9nZ2VyPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEs
IExvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQSwgTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KGFEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNv
bmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLmJpdHMoKSk7CiAgICAgICAgICAg
ICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPGdfcG9pc29uQiwgTG9nZ2VyPiBwNCA9IFdURk1vdmUocDMpOworICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXI+IHA0ID0gV1RGTW92ZShwMyk7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoYkRlc3RydWN0Q291bnQsIDApOwogICAgICAgICAgICAgQVNT
RVJUX1RSVUUoIXAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMu
Yml0cygpKTsKQEAgLTI4MSwxNSArMjg0LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRy
LCBCYXNpYykKICAgICAgICAgRGVyaXZlZExvZ2dlciogYSA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJh
IiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBEZXJpdmVkTG9nZ2VyKiBiID0gbmV3IERlcml2
ZWRMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7Ci0gICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7CisgICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAyKFdURk1vdmUocDEp
KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAg
ICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVF
KCFwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7
CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMyA9
IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIExvZ2dlcj4gcDQo
V1RGTW92ZShwMykpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9n
Z2VyPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dn
ZXI+IHA0KFdURk1vdmUocDMpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShiRGVzdHJ1Y3RDb3Vu
dCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMudW5wb2lzb25lZCgpKTsKICAgICAg
ICAgICAgIEFTU0VSVF9UUlVFKCFwMy5iaXRzKCkpOwpAQCAtMzAzLDcgKzMwNiw3IEBAIFRFU1Qo
V1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50
ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50
KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBM
b2dnZXI+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExv
Z2dlcj4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkp
OwogICAgICAgICAgICAgcHRyLmNsZWFyKCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcHRy
LnVucG9pc29uZWQoKSk7CkBAIC0zMjQsNyArMzI3LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlx
dWVQdHIsIEFzc2lnbm1lbnQpCiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBh
RGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG5ldyBMb2dnZXIoImIiLCBiRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBMb2dnZXI+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMzQxLDcgKzM0NCw3
IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAgICBpbnQg
YURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwg
YURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxnX3BvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURl
c3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkp
OwogICAgICAgICAgICAgcHRyID0gbnVsbHB0cjsKQEAgLTM2MSw4ICszNjQsOCBAQCBURVNUKFdU
Rl9Qb2lzb25lZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkKICAgICAgICAgTG9nZ2VyKiBjID0gbmV3
IExvZ2dlcigiYyIsIGNEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBkID0gbmV3IExv
Z2dlcigiZCIsIGREZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAxKGEpOwotICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAyKGIpOworICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMShhKTsKKyAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDIoYik7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
MCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENv
dW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOwpAQCAtMzcz
LDggKzM3Niw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAg
ICAgICAgICAgQVNTRVJUX0VRKGIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NF
UlRfRVEobnVsbHB0ciwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAzKGMpOwotICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8Z19wb2lzb25CLCBMb2dnZXI+IHA0KGQpOworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyhjKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkIsIExvZ2dlcj4gcDQoZCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwg
Y0Rlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGREZXN0cnVjdENvdW50
KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShjLCBwMy51bnBvaXNvbmVkKCkpOwpAQCAtMzk3LDcg
KzQwMCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAg
ICBEZXJpdmVkTG9nZ2VyKiBhID0gbmV3IERlcml2ZWRMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgIERlcml2ZWRMb2dnZXIqIGIgPSBuZXcgRGVyaXZlZExvZ2dlcigiYiIsIGJE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
Z19wb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0
cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CkBAIC00MjAsOCArNDIz
LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiAgICAgICAgIERl
cml2ZWRMb2dnZXIqIGMgPSBuZXcgRGVyaXZlZExvZ2dlcigiYyIsIGNEZXN0cnVjdENvdW50KTsK
ICAgICAgICAgRGVyaXZlZExvZ2dlciogZCA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJkIiwgZERlc3Ry
dWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3Bv
aXNvbkEsIExvZ2dlcj4gcDEoYSk7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3Bv
aXNvbkEsIERlcml2ZWRMb2dnZXI+IHAyKGIpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgTG9nZ2VyPiBwMShhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIERlcml2ZWRMb2dnZXI+IHAyKGIpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAs
IGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsKQEAgLTQzMiw4
ICs0MzUsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkKICAgICAg
ICAgICAgIEFTU0VSVF9FUShiLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKG51bGxwdHIsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMyhjKTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPGdfcG9pc29uQiwgRGVyaXZlZExvZ2dlcj4gcDQoZCk7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAzKGMpOworICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQiwgRGVyaXZlZExvZ2dlcj4gcDQoZCk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoMCwgY0Rlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGRE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShjLCBwMy51bnBvaXNvbmVkKCkp
OwpAQCAtNDU0LDcgKzQ1Nyw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25t
ZW50KQogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEg
PSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOworICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CiAgICAgICAgICAg
ICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEs
IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgcHRyID0gYTsKQEAgLTQ2OCw3ICs0NzEs
NyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkKICAgICAgICAgaW50
IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIs
IGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgp
KTsKICNpZiBDT01QSUxFUihDTEFORykKQEAgLTQ5Nyw4ICs1MDAsOCBAQCBURVNUKFdURl9Qb2lz
b25lZFVuaXF1ZVB0ciwgU3dhcCkKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIs
IGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbmV3IExvZ2dlcigiYiIsIGJE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
Z19wb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PGdfcG9pc29uQSwgTG9nZ2VyPiBwMjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIExvZ2dlcj4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyPiBwMjsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVk
KCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLmJpdHMoKSk7CiAgICAgICAgICAgICBB
U1NFUlRfVFJVRSghcDIudW5wb2lzb25lZCgpKTsKQEAgLTUwOCw4ICs1MTEsOCBAQCBURVNUKFdU
Rl9Qb2lzb25lZFVuaXF1ZVB0ciwgU3dhcCkKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51
bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7
CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMyA9
IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIExvZ2dlcj4gcDQ7
CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAzID0gYjsK
KyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcj4gcDQ7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoYiwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VS
VF9UUlVFKCFwNC5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29u
ZWQoKSk7CkBAIC01MjksOCArNTMyLDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIFN3
YXApCiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgIExvZ2dlciogYiA9IG5ldyBMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2Vy
PiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dl
cj4gcDI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAx
ID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDI7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAg
IEFTU0VSVF9UUlVFKCFwMi5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLnVu
cG9pc29uZWQoKSk7CkBAIC01NDAsOCArNTQzLDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQ
dHIsIFN3YXApCiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOwotICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBMb2dnZXI+IHA0OworICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXI+IHA0OwogICAgICAgICAgICAgQVNTRVJUX0VR
KGIsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDQuYml0cygp
KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC51bnBvaXNvbmVkKCkpOwpAQCAtNTU2LDkg
KzU1OSw5IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBTd2FwKQogICAgIH0KIH0KIAot
c3RhdGljIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwb2lzb25lZFB0ckZv
byhMb2dnZXIqIGxvZ2dlcikKK3N0YXRpYyBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dn
ZXI+IHBvaXNvbmVkUHRyRm9vKExvZ2dlciogbG9nZ2VyKQogewotICAgIHJldHVybiBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4obG9nZ2VyKTsKKyAgICByZXR1cm4gUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPihsb2dnZXIpOwogfQogCiBURVNUKFdURl9Qb2lz
b25lZFVuaXF1ZVB0ciwgUmV0dXJuVmFsdWUpCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29u
ZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwCShyZXZpc2lv
biAyMjc0NDkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1
ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDYgKzM1LDkgQEAgbmFtZXNwYWNlIHsKIHVpbnRwdHJfdCBnX3BvaXNvbkE7CiB1aW50
cHRyX3QgZ19wb2lzb25COwogCit1c2luZyBQb2lzb25BID0gUG9pc29uPGdfcG9pc29uQT47Cit1
c2luZyBQb2lzb25CID0gUG9pc29uPGdfcG9pc29uQj47CisKIHN0YXRpYyB2b2lkIGluaXRpYWxp
emVQb2lzb25zKCkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2VG
bGFnOwpAQCAtNzcsNyArODAsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRy
aXZpYWxsCiAgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gZW1wdHk7CisgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBlbXB0eTsKICAgICAgICAgQVNTRVJUX0VRKG51
bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgZW1wdHku
Yml0cygpKTsKICAgICB9CkBAIC04Niw3ICs4OSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVl
UHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAg
ICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVj
dENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lz
b25BLCBMb2dnZXJbXT4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyW10+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoYSwgJipwdHIpOwpAQCAtOTgsNyArMTAxLDcgQEAgVEVTVChX
VEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICAgICAgc3RkOjptZW1j
cHkoJnB0ckJpdHMsICZwdHIsIHNpemVvZihwdHJCaXRzKSk7CiAgICAgICAgICAgICBBU1NFUlRf
VFJVRShwdHJCaXRzICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGEpKTsKICNpZiBFTkFCTEUo
UE9JU09OX0FTU0VSVFMpCi0gICAgICAgICAgICBBU1NFUlRfVFJVRSgoUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBMb2dnZXJbXT46OmlzUG9pc29uZWQocHRyQml0cykpKTsKKyAgICAgICAg
ICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT46Omlz
UG9pc29uZWQocHRyQml0cykpKTsKICNlbmRpZgogI2VuZGlmIC8vIEVOQUJMRShQT0lTT04pCiAg
ICAgICAgIH0KQEAgLTEwOSw3ICsxMTIsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZv
ck5vblRyaXZpYWxsCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExv
Z2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwg
TG9nZ2VyW10+IHB0ciA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBMb2dnZXJbXT4gcHRyID0gYTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAg
ICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkKQEAgLTEyMiw3ICsx
MjUsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAg
IGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFOYW1lID0gImEi
OwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExv
Z2dlcltdPiBwdHIgPSBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPjo6Y3Jl
YXRlKGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBMb2dnZXJbXT46OmNyZWF0ZShhcnJheVNpemUsIGFOYW1lLCBhRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAg
ICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAg
IGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQpAQCAtMTM3LDE1ICsxNDAsMTUg
QEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBMb2dn
ZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQp
OwogICAgICAgICBMb2dnZXIqIGIgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJiIiwg
YkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMiA9IFdURk1vdmUocDEpOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFT
U0VSVF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KDB1LCBwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQo
KSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+
IHAzID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwgTG9nZ2Vy
W10+IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lz
b25BLCBMb2dnZXJbXT4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQiwgTG9nZ2VyW10+IHA0ID0gV1RGTW92ZShwMyk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
MCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAzLnVu
cG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMoKSk7CkBAIC0x
NjEsMTUgKzE2NCwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxs
CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBh
RGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFy
cmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKLSAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAyKFdURk1vdmUocDEpKTsK
KyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7
CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDIoV1RG
TW92ZShwMSkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAg
ICAgQVNTRVJUX0VRKDB1LCBwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAy
LnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29u
QSwgTG9nZ2VyW10+IHAzID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9p
c29uQiwgTG9nZ2VyW10+IHA0KFdURk1vdmUocDMpKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQoV1RGTW92ZShwMykpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxs
cHRyLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMy5iaXRz
KCkpOwpAQCAtMTg1LDE1ICsxODgsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JO
b25Ucml2aWFsbAogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNp
emUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBtYWtlQXJyYXk8
TG9nZ2VyPihhcnJheVNpemUsICJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7Ci0g
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMiA9IFdU
Rk1vdmUocDEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2Vy
W10+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cltdPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENv
dW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAg
ICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
YSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19w
b2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
Z19wb2lzb25CLCBMb2dnZXJbXT4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQgPSBXVEZNb3ZlKHAzKTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUShiRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRf
VFJVRSghcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy5iaXRz
KCkpOwpAQCAtMjA5LDE1ICsyMTIsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JO
b25Ucml2aWFsbAogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNp
emUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBtYWtlQXJyYXk8
TG9nZ2VyPihhcnJheVNpemUsICJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7Ci0g
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMihXVEZN
b3ZlKHAxKSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJb
XT4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2Vy
W10+IHAyKFdURk1vdmUocDEpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhRGVzdHJ1Y3RDb3Vu
dCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAg
ICAgICAgIEFTU0VSVF9UUlVFKCFwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEs
IHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9p
c29uQSwgTG9nZ2VyW10+IHAzID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQiwgTG9nZ2VyW10+IHA0KFdURk1vdmUocDMpKTsKKyAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQoV1RGTW92ZShwMykpOwogICAgICAgICAg
ICAgQVNTRVJUX0VRKGJEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVF
KCFwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLmJpdHMoKSk7
CkBAIC0yMzEsNyArMjM0LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2
aWFsbAogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEg
PSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAg
ICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltd
PiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJb
XT4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwog
ICAgICAgICAgICAgcHRyLmNsZWFyKCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcHRyLnVu
cG9pc29uZWQoKSk7CkBAIC0yNTIsNyArMjU1LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQ
dHJGb3JOb25Ucml2aWFsbAogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihh
cnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBtYWtl
QXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7
Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwdHIo
YSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRy
KGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
YSwgcHRyLnVucG9pc29uZWQoKSk7CkBAIC0yNjksNyArMjcyLDcgQEAgVEVTVChXVEZfUG9pc29u
ZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAw
OwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwg
YURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAs
IGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25l
ZCgpKTsKICAgICAgICAgICAgIHB0ciA9IG51bGxwdHI7CkBAIC0yODksOCArMjkyLDggQEAgVEVT
VChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBMb2dnZXIqIGMg
PSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJjIiwgY0Rlc3RydWN0Q291bnQpOwogICAg
ICAgICBMb2dnZXIqIGQgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJkIiwgZERlc3Ry
dWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3Bv
aXNvbkEsIExvZ2dlcltdPiBwMShhKTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQSwgTG9nZ2VyW10+IHAyKGIpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQSwgTG9nZ2VyW10+IHAxKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQSwgTG9nZ2VyW10+IHAyKGIpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0
cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsKQEAgLTMwMSw4ICszMDQs
OCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgICAg
ICBBU1NFUlRfRVEoYiwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShu
dWxscHRyLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMyhjKTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPGdfcG9pc29uQiwgTG9nZ2VyW10+IHA0KGQpOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzKGMpOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+IHA0KGQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAs
IGNEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBkRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYywgcDMudW5wb2lzb25lZCgpKTsKQEAgLTMyMyw3
ICszMjYsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAg
ICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJh
eTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsK
KyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgcHRyID0gYTsKQEAg
LTMzNyw3ICszNDAsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxs
CiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1h
a2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAg
IHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHB0
cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBw
dHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogI2lmIENPTVBJTEVSKENMQU5H
KQpAQCAtMzY2LDggKzM2OSw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJp
dmlhbGwKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAi
YSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbWFrZUFycmF5PExvZ2dl
cj4oYXJyYXlTaXplLCAiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOwotICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDI7CisgICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAyOwogICAgICAgICAg
ICAgQVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJV
RSghcDIuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMi51bnBvaXNvbmVkKCkp
OwpAQCAtMzc3LDggKzM4MCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJp
dmlhbGwKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwgTG9nZ2VyW10+IHA0OworICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKKyAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBwNDsKICAgICAgICAgICAgIEFTU0VS
VF9FUShiLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LmJp
dHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDQudW5wb2lzb25lZCgpKTsKQEAgLTM5
OCw4ICs0MDEsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAg
ICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5
U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAyOworICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMjsKICAgICAgICAgICAgIEFTU0VS
VF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLmJp
dHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDIudW5wb2lzb25lZCgpKTsKQEAgLTQw
OSw4ICs0MTIsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAg
ICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFT
U0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxnX3BvaXNvbkIsIExvZ2dlcltdPiBwNDsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQ7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYiwg
cDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC5iaXRzKCkpOwog
ICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29uZWQoKSk7CkBAIC00MjUsOSArNDI4
LDkgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgIH0KIH0K
IAotc3RhdGljIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHBvaXNvbmVk
UHRyRm9vKExvZ2dlciogYXJyYXkpCitzdGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyW10+IHBvaXNvbmVkUHRyRm9vKExvZ2dlciogYXJyYXkpCiB7Ci0gICAgcmV0dXJuIFBv
aXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+KGFycmF5KTsKKyAgICByZXR1cm4g
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+KGFycmF5KTsKIH0KIAogVEVTVChX
VEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMsIFJl
dHVyblZhbHVlKQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRV
bmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlh
bGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcAkocmV2aXNpb24gMjI3NDQ5KQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVj
dGlibGVBcnJheXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw5IEBAIG5hbWVzcGFj
ZSB7CiB1aW50cHRyX3QgZ19wb2lzb25BOwogdWludHB0cl90IGdfcG9pc29uQjsKIAordXNpbmcg
UG9pc29uQSA9IFBvaXNvbjxnX3BvaXNvbkE+OwordXNpbmcgUG9pc29uQiA9IFBvaXNvbjxnX3Bv
aXNvbkI+OworCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplUG9pc29ucygpCiB7CiAgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxhZzsKQEAgLTYzLDEyICs2NiwxMiBAQCBU
RVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgaW5pdGlhbGl6ZVBv
aXNvbnMoKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBp
bnRbXT4gZW1wdHk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBl
bXB0eTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CiAg
ICAgICAgIEFTU0VSVF9FUSgwdSwgZW1wdHkuYml0cygpKTsKICAgICB9CiAgICAgewotICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBlbXB0eShudWxscHRyKTsKKyAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IGVtcHR5KG51bGxwdHIpOwog
ICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25lZCgpKTsKICAgICAgICAg
QVNTRVJUX0VRKDB1LCBlbXB0eS5iaXRzKCkpOwogICAgIH0KQEAgLTc3LDcgKzgwLDcgQEAgVEVT
VChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBhdXRvKiBhID0g
bmV3IGludFthcnJheVNpemVdOwogICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKICAg
ICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4g
cHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0
cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUShhLCAmKnB0cik7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaSA9IDA7
IGkgPCBhcnJheVNpemU7ICsraSkKQEAgLTg4LDcgKzkxLDcgQEAgVEVTVChXVEZfUG9pc29uZWRV
bmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICAgICAgc3RkOjptZW1jcHkoJnB0ckJpdHMs
ICZwdHIsIHNpemVvZihwdHJCaXRzKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShwdHJCaXRz
ICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGEpKTsKICNpZiBFTkFCTEUoUE9JU09OX0FTU0VS
VFMpCi0gICAgICAgICAgICBBU1NFUlRfVFJVRSgoUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25B
LCBpbnRbXT46OmlzUG9pc29uZWQocHRyQml0cykpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVF
KChQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT46OmlzUG9pc29uZWQocHRyQml0cykp
KTsKICNlbmRpZgogI2VuZGlmIC8vIEVOQUJMRShQT0lTT04pCiAgICAgICAgIH0KQEAgLTk4LDcg
KzEwMSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAg
ICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFy
cmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4g
cHRyID0gYTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0ciA9
IGE7CiAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNT
RVJUX0VRKGEsICYqcHRyKTsKICAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXpl
OyArK2kpCkBAIC0xMDYsNyArMTA5LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JU
cml2aWFsbHlEZQogICAgIH0KIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19w
b2lzb25BLCBpbnRbXT4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT46
OmNyZWF0ZShhcnJheVNpemUpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBp
bnRbXT4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+OjpjcmVhdGUoYXJy
YXlTaXplKTsKICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgp
KTsKICAgICAgICAgZmlsbEFycmF5KHB0ciwgYXJyYXlTaXplKTsKICAgICAgICAgZm9yIChhdXRv
IGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCkBAIC0xMTksMTYgKzEyMiwxNiBAQCBURVNUKFdU
Rl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1dG8qIGIgPSBuZXcg
aW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShiLCBhcnJheVNpemUpOwogCi0gICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHAxID0gYTsKLSAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAxID0gYTsKKyAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAyID0gV1RGTW92ZShwMSk7CiAgICAg
ICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRf
RVEoMHUsIHAxLmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkp
OwogICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkKICAgICAgICAg
ICAgIEFTU0VSVF9FUShhW2ldLCBwMltpXSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
Z19wb2lzb25BLCBpbnRbXT4gcDMgPSBiOwotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3Bv
aXNvbkIsIGludFtdPiBwNCA9IFdURk1vdmUocDMpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBpbnRbXT4gcDMgPSBiOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lz
b25CLCBpbnRbXT4gcDQgPSBXVEZNb3ZlKHAzKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIs
IHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDMuYml0cygpKTsKICAg
ICAgICAgQVNTRVJUX0VRKGIsIHA0LnVucG9pc29uZWQoKSk7CkBAIC0xNDIsMTYgKzE0NSwxNiBA
QCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1dG8q
IGIgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShiLCBhcnJheVNpemUp
OwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHAxID0gYTsK
LSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDIoV1RGTW92ZShw
MSkpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDEgPSBhOwor
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDIoV1RGTW92ZShwMSkp
OwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAg
QVNTRVJUX0VRKDB1LCBwMS5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lz
b25lZCgpKTsKICAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCiAg
ICAgICAgICAgICBBU1NFUlRfRVEoYVtpXSwgcDJbaV0pOwogCi0gICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHAzID0gYjsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25CLCBpbnRbXT4gcDQoV1RGTW92ZShwMykpOworICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDMgPSBiOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25CLCBpbnRbXT4gcDQoV1RGTW92ZShwMykpOwogICAgICAgICBBU1NFUlRfRVEobnVs
bHB0ciwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMy5iaXRzKCkp
OwogICAgICAgICBBU1NFUlRfRVEoYiwgcDQudW5wb2lzb25lZCgpKTsKQEAgLTE2Myw3ICsxNjYs
NyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1
dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNp
emUpOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHB0cihh
KTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0cihhKTsKICAg
ICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICBwdHIuY2xlYXIo
KTsKICAgICAgICAgQVNTRVJUX1RSVUUoIXB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMTgxLDcgKzE4
NCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAg
ZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAgICAgICAgIGZpbGxBcnJheShiLCBhcnJheVNpemUp
OwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHB0cihhKTsK
KyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0cihhKTsKICAgICAg
ICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICBwdHIgPSBiOwogICAg
ICAgICBBU1NFUlRfRVEoYiwgcHRyLnVucG9pc29uZWQoKSk7CkBAIC0xOTEsNyArMTk0LDcgQEAg
VEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBhdXRvKiBh
ID0gbmV3IGludFthcnJheVNpemVdOwogICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsK
IAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwdHIoYSk7Cisg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIoYSk7CiAgICAgICAg
IEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcHRyID0gbnVsbHB0cjsK
ICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMjA3LDE2
ICsyMTAsMTYgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAg
ICAgICBmaWxsQXJyYXkoYywgYXJyYXlTaXplKTsKICAgICAgICAgZmlsbEFycmF5KGQsIGFycmF5
U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDEo
YSk7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHAyKGIpOwor
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDEoYSk7CisgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMihiKTsKICAgICAgICAgQVNTRVJU
X0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUShiLCBwMi51bnBvaXNv
bmVkKCkpOwogICAgICAgICBwMSA9IFdURk1vdmUocDIpOwogICAgICAgICBBU1NFUlRfRVEoYiwg
cDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAyLnVucG9pc29u
ZWQoKSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDMo
Yyk7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwgaW50W10+IHA0KGQpOwor
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDMoYyk7CisgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIGludFtdPiBwNChkKTsKICAgICAgICAgQVNTRVJU
X0VRKGMsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUShkLCBwNC51bnBvaXNv
bmVkKCkpOwogICAgICAgICBwMyA9IFdURk1vdmUocDQpOwpAQCAtMjI4LDcgKzIzMSw3IEBAIFRF
U1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0byogYSA9
IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAK
LSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcHRyKGEpOworICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyKGEpOwogICAgICAgICBB
U1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIHB0ciA9IGE7CiAgICAgICAg
IEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKQEAgLTIzOCw3ICsyNDEsNyBAQCBURVNU
KFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1dG8qIGEgPSBu
ZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOwogCi0g
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHB0cihhKTsKKyAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0cihhKTsKICAgICAgICAgQVNT
RVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogI2lmIENPTVBJTEVSKENMQU5HKQogI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKQEAgLTI2Myw4ICsyNjYsOCBAQCBURVNUKFdURl9Qb2lz
b25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNp
emUpOwogICAgICAgICBmaWxsQXJyYXkoYiwgYXJyYXlTaXplKTsKIAotICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwMSA9IGE7Ci0gICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHAyOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBpbnRbXT4gcDEgPSBhOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBpbnRbXT4gcDI7CiAgICAgICAgIEFTU0VSVF9FUShwMS51bnBvaXNvbmVkKCksIGEpOwogICAg
ICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLnVu
cG9pc29uZWQoKSk7CkBAIC0yNzMsOCArMjc2LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQ
dHJGb3JUcml2aWFsbHlEZQogICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgQVNTRVJUX0VRKHAyLnVucG9pc29uZWQoKSwgYSk7CiAKLSAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDMgPSBiOwotICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxnX3BvaXNvbkIsIGludFtdPiBwNDsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQSwgaW50W10+IHAzID0gYjsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QiwgaW50W10+IHA0OwogICAgICAgICBBU1NFUlRfRVEocDMudW5wb2lzb25lZCgpLCBiKTsKICAg
ICAgICAgQVNTRVJUX1RSVUUoIXA0LmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC51
bnBvaXNvbmVkKCkpOwpAQCAtMjkwLDggKzI5Myw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVl
UHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAgICAg
ICAgIGZpbGxBcnJheShiLCBhcnJheVNpemUpOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PGdfcG9pc29uQSwgaW50W10+IHAxID0gYTsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19w
b2lzb25BLCBpbnRbXT4gcDI7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGlu
dFtdPiBwMSA9IGE7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBw
MjsKICAgICAgICAgQVNTRVJUX0VRKHAxLnVucG9pc29uZWQoKSwgYSk7CiAgICAgICAgIEFTU0VS
VF9UUlVFKCFwMi5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfVFJVRSghcDIudW5wb2lzb25lZCgp
KTsKQEAgLTMwMCw4ICszMDMsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZp
YWxseURlCiAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBB
U1NFUlRfRVEocDIudW5wb2lzb25lZCgpLCBhKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxnX3BvaXNvbkEsIGludFtdPiBwMyA9IGI7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQiwgaW50W10+IHA0OworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBp
bnRbXT4gcDMgPSBiOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBpbnRbXT4g
cDQ7CiAgICAgICAgIEFTU0VSVF9FUShwMy51bnBvaXNvbmVkKCksIGIpOwogICAgICAgICBBU1NF
UlRfVFJVRSghcDQuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29uZWQo
KSk7CkBAIC0zMTIsOSArMzE1LDkgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2
aWFsbHlEZQogICAgIH0KIH0KIAotc3RhdGljIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwg
aW50W10+IHBvaXNvbmVkUHRyRm9vKGludCogcHRyKQorc3RhdGljIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIGludFtdPiBwb2lzb25lZFB0ckZvbyhpbnQqIHB0cikKIHsKLSAgICByZXR1cm4g
UG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4ocHRyKTsKKyAgICByZXR1cm4gUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+KHB0cik7CiB9CiAKIFRFU1QoV1RGX1BvaXNv
bmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBSZXR1cm5WYWx1ZSkK
</data>
<flag name="review"
          id="351064"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>