<?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>152110</bug_id>
          
          <creation_ts>2015-12-10 01:19:05 -0800</creation_ts>
          <short_desc>[JSC] Add a Modulo operator to B3, and a chill variant</short_desc>
          <delta_ts>2015-12-10 16:32:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1148101</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-10 01:19:05 -0800</bug_when>
    <thetext>[JSC] Add a Modulo operator to B3, and a chill variant</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148102</commentid>
    <comment_count>1</comment_count>
      <attachid>267079</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-10 01:20:42 -0800</bug_when>
    <thetext>Created attachment 267079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148310</commentid>
    <comment_count>2</comment_count>
      <attachid>267079</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-12-10 15:33:07 -0800</bug_when>
    <thetext>Comment on attachment 267079
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148313</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-12-10 15:42:38 -0800</bug_when>
    <thetext>Might conflict with https://bugs.webkit.org/show_bug.cgi?id=152105.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148316</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-10 15:46:16 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Might conflict with https://bugs.webkit.org/show_bug.cgi?id=152105.

Yep, but just the Mod part. Should be easy to update.

This patch has way more testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148330</commentid>
    <comment_count>5</comment_count>
      <attachid>267079</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-10 16:32:13 -0800</bug_when>
    <thetext>Comment on attachment 267079
Patch

Clearing flags on attachment: 267079

Committed r193933: &lt;http://trac.webkit.org/changeset/193933&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148331</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-10 16:32:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267079</attachid>
            <date>2015-12-10 01:20:42 -0800</date>
            <delta_ts>2015-12-10 16:32:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152110-20151210012011.patch</filename>
            <type>text/plain</type>
            <size>58332</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzODc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MjA2MWIwYTQyNzZkOGNiYWIwYTJkZGVmYWQ3MDJlMjgwMTA2NmY0Li45NzI5YTAwNGQxMDM4OTRh
MzRlMmY1MmE0MTcwMWI3OTE3YjEzM2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MCBAQAorMjAxNS0xMi0xMCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgYSBNb2R1bG8gb3BlcmF0b3IgdG8gQjMsIGFuZCBh
IGNoaWxsIHZhcmlhbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MjExMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEl0IGlzIGJhc2ljYWxseSByZWZhY3RvcmluZyB0aGUgRGl2IGFuZCBDaGlsbERpdgor
ICAgICAgICBjb2RlIHRvIGJlIHVzZWQgYnkgYm90aCBvcGNvZGVzLgorCisgICAgICAgICogYjMv
QjNDb21tb24uaDoKKyAgICAgICAgKEpTQzo6QjM6OmNoaWxsRGl2KToKKyAgICAgICAgKEpTQzo6
QjM6OmNoaWxsTW9kKToKKyAgICAgICAgKiBiMy9CM0NvbnN0MzJWYWx1ZS5jcHA6CisgICAgICAg
IChKU0M6OkIzOjpDb25zdDMyVmFsdWU6Om1vZENvbnN0YW50KToKKyAgICAgICAgKiBiMy9CM0Nv
bnN0MzJWYWx1ZS5oOgorICAgICAgICAqIGIzL0IzQ29uc3Q2NFZhbHVlLmNwcDoKKyAgICAgICAg
KEpTQzo6QjM6OkNvbnN0NjRWYWx1ZTo6bW9kQ29uc3RhbnQpOgorICAgICAgICAqIGIzL0IzQ29u
c3Q2NFZhbHVlLmg6CisgICAgICAgICogYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6OkNvbnN0RG91YmxlVmFsdWU6Om1vZENvbnN0YW50KToKKyAgICAgICAgKiBi
My9CM0NvbnN0RG91YmxlVmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM0xvd2VyTWFjcm9zLmNwcDoK
KyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpsb3dlcik6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Omxv
d2VyWDg2RGl2KToKKyAgICAgICAgKiBiMy9CM09wY29kZS5jcHA6CisgICAgICAgIChXVEY6OnBy
aW50SW50ZXJuYWwpOgorICAgICAgICAqIGIzL0IzT3Bjb2RlLmg6CisgICAgICAgICogYjMvQjNS
ZWR1Y2VTdHJlbmd0aC5jcHA6CisgICAgICAgICogYjMvQjNWYWxpZGF0ZS5jcHA6CisgICAgICAg
ICogYjMvQjNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6bW9kQ29uc3RhbnQp
OgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmVmZmVjdHMpOgorICAgICAgICAoSlNDOjpCMzo6
VmFsdWU6OmtleSk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6dHlwZUZvcik6CisgICAgICAg
ICogYjMvQjNWYWx1ZS5oOgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6
OkIzOjp0ZXN0TW9kQXJnRG91YmxlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RNb2RBcmdzRG91
YmxlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RNb2RBcmdJbW1Eb3VibGUpOgorICAgICAgICAo
SlNDOjpCMzo6dGVzdE1vZEltbUFyZ0RvdWJsZSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TW9k
SW1tc0RvdWJsZSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TW9kQXJnRmxvYXQpOgorICAgICAg
ICAoSlNDOjpCMzo6dGVzdE1vZEFyZ3NGbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TW9k
QXJnSW1tRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdE1vZEltbUFyZ0Zsb2F0KToKKyAg
ICAgICAgKEpTQzo6QjM6OnRlc3RNb2RJbW1zRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVz
dE1vZEFyZyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TW9kQXJncyk6CisgICAgICAgIChKU0M6
OkIzOjp0ZXN0TW9kSW1tcyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TW9kQXJnMzIpOgorICAg
ICAgICAoSlNDOjpCMzo6dGVzdE1vZEFyZ3MzMik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TW9k
SW1tczMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDaGlsbE1vZEFyZyk6CisgICAgICAgIChK
U0M6OkIzOjp0ZXN0Q2hpbGxNb2RBcmdzKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDaGlsbE1v
ZEltbXMpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoaWxsTW9kQXJnMzIpOgorICAgICAgICAo
SlNDOjpCMzo6dGVzdENoaWxsTW9kQXJnczMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDaGls
bE1vZEltbXMzMik6CisgICAgICAgIChKU0M6OkIzOjpydW4pOgorICAgICAgICAqIGZ0bC9GVExC
M091dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bW9kKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpPdXRwdXQ6OmNoaWxsTW9kKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRv
dWJsZU1vZCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpyZW0pOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlUmVtKTogRGVsZXRlZC4KKyAgICAgICAgKiBm
dGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0xMVk06OmNvbXBpbGVBcml0aE1vZCk6CisgICAgICAgICogZnRsL0ZUTE91dHB1dC5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpjaGlsbE1vZCk6CisgICAgICAgICogZnRsL0ZU
TE91dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bW9kKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpPdXRwdXQ6OmRvdWJsZU1vZCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpy
ZW0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlUmVtKTogRGVs
ZXRlZC4KKwogMjAxNS0xMi0wOSAgU2FhbSBiYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVcGRhdGUgZ2VuZXJhdG9ycycgZmVhdHVyZXMuanNvbiB0byBpbmRpY2F0ZSB0aGF0
IHdlIGhhdmUgYSBzcGVjIGNvbXBsaWFudCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDb21tb24uaAppbmRleCA1MDY2ZDczNjY2NWU0OGNkYzIxYjc4ZmU2NzgxMTE5M2ZjN2Uw
ZjNlLi45ZTc0NDFmODI2MjUzOWE5YmJjMDNjN2VjMzU4MDFmNDEzMjU1Yjg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNDb21tb24uaApAQCAtOTQsMjIgKzk0LDI0IEBAIGlubGluZSBib29sIGlz
UmVwcmVzZW50YWJsZUFzKGRvdWJsZSB2YWx1ZSkKICAgICByZXR1cm4gaXNSZXByZXNlbnRhYmxl
QXNJbXBsPFJlc3VsdFR5cGUsIGRvdWJsZSwgaW50NjRfdD4odmFsdWUpOwogfQogCi1pbmxpbmUg
aW50MzJfdCBjaGlsbERpdihpbnQzMl90IG51bSwgaW50MzJfdCBkZW4pCit0ZW1wbGF0ZTx0eXBl
bmFtZSBJbnRUeXBlPgorc3RhdGljIEludFR5cGUgY2hpbGxEaXYoSW50VHlwZSBudW1lcmF0b3Is
IEludFR5cGUgZGVub21pbmF0b3IpCiB7Ci0gICAgaWYgKCFkZW4pCisgICAgaWYgKCFkZW5vbWlu
YXRvcikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKGRlbiA9PSAtMSAmJiBudW0gPT0gc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBudW07Ci0g
ICAgcmV0dXJuIG51bSAvIGRlbjsKKyAgICBpZiAoZGVub21pbmF0b3IgPT0gLTEgJiYgbnVtZXJh
dG9yID09IHN0ZDo6bnVtZXJpY19saW1pdHM8SW50VHlwZT46Om1pbigpKQorICAgICAgICByZXR1
cm4gc3RkOjpudW1lcmljX2xpbWl0czxJbnRUeXBlPjo6bWluKCk7CisgICAgcmV0dXJuIG51bWVy
YXRvciAvIGRlbm9taW5hdG9yOwogfQogCi1pbmxpbmUgaW50NjRfdCBjaGlsbERpdihpbnQ2NF90
IG51bSwgaW50NjRfdCBkZW4pCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRUeXBlPgorc3RhdGljIElu
dFR5cGUgY2hpbGxNb2QoSW50VHlwZSBudW1lcmF0b3IsIEludFR5cGUgZGVub21pbmF0b3IpCiB7
Ci0gICAgaWYgKCFkZW4pCisgICAgaWYgKCFkZW5vbWluYXRvcikKICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgaWYgKGRlbiA9PSAtMSAmJiBudW0gPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90
Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBudW07Ci0gICAgcmV0dXJuIG51bSAvIGRlbjsKKyAg
ICBpZiAoZGVub21pbmF0b3IgPT0gLTEgJiYgbnVtZXJhdG9yID09IHN0ZDo6bnVtZXJpY19saW1p
dHM8SW50VHlwZT46Om1pbigpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVtZXJh
dG9yICUgZGVub21pbmF0b3I7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5jcHAKaW5kZXggNDIwNGI0NzQwYTE3
MzIzN2RjYTU2Zjk4OTM5NjdmMTU5YmY5NTA4MC4uODI3YWU5MDI4NGU2NjBiZThhMmE5MThiNWIz
NTRhMDZmNGFlYTUzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29u
c3QzMlZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFs
dWUuY3BwCkBAIC0xMTIsNiArMTEyLDEzIEBAIFZhbHVlKiBDb25zdDMyVmFsdWU6OmRpdkNvbnN0
YW50KFByb2NlZHVyZSYgcHJvYywgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogICAgIHJldHVy
biBwcm9jLmFkZDxDb25zdDMyVmFsdWU+KG9yaWdpbigpLCBjaGlsbERpdihtX3ZhbHVlLCBvdGhl
ci0+YXNJbnQzMigpKSk7CiB9CiAKK1ZhbHVlKiBDb25zdDMyVmFsdWU6Om1vZENvbnN0YW50KFBy
b2NlZHVyZSYgcHJvYywgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAoreworICAgIGlmICghb3Ro
ZXItPmhhc0ludDMyKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBwcm9j
LmFkZDxDb25zdDMyVmFsdWU+KG9yaWdpbigpLCBjaGlsbE1vZChtX3ZhbHVlLCBvdGhlci0+YXNJ
bnQzMigpKSk7Cit9CisKIFZhbHVlKiBDb25zdDMyVmFsdWU6OmJpdEFuZENvbnN0YW50KFByb2Nl
ZHVyZSYgcHJvYywgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXIt
Pmhhc0ludDMyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25z
dDMyVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5oCmlu
ZGV4IDQzODAzOTE3MDEwMGI2ZTI1ZDBiODUyY2I3MjkxMTgwNDZkNTA2MWQuLjQ3ZDE2Zjc0ZjJh
OTkwYmRlOTk5NDA0NzE2N2NiMDhjN2JhMjA1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0NvbnN0MzJWYWx1ZS5oCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBWYWx1ZSog
Y2hlY2tNdWxDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92
ZXJyaWRlOwogICAgIFZhbHVlKiBjaGVja05lZ0NvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0IG92
ZXJyaWRlOwogICAgIFZhbHVlKiBkaXZDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSog
b3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBtb2RDb25zdGFudChQcm9jZWR1cmUm
LCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBiaXRBbmRD
b25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIFZhbHVlKiBiaXRPckNvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIGJpdFhvckNvbnN0YW50KFByb2NlZHVyZSYsIGNv
bnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQ29uc3Q2NFZhbHVlLmNwcAppbmRleCA5ZTA0M2VlYjBhZTA4MTdkOGM4ZjA3NTlmNjg4
ZjgxZjA2NzAyNzdjLi4wMWRjYzY5ZDA5YTIyZTE2MTgwNGZlNzA3ZmIzZmY1NmRiZTViODMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5jcHAKQEAgLTExMiw2
ICsxMTIsMTMgQEAgVmFsdWUqIENvbnN0NjRWYWx1ZTo6ZGl2Q29uc3RhbnQoUHJvY2VkdXJlJiBw
cm9jLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0
NjRWYWx1ZT4ob3JpZ2luKCksIGNoaWxsRGl2KG1fdmFsdWUsIG90aGVyLT5hc0ludDY0KCkpKTsK
IH0KIAorVmFsdWUqIENvbnN0NjRWYWx1ZTo6bW9kQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBj
b25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFvdGhlci0+aGFzSW50NjQoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0NjRWYWx1
ZT4ob3JpZ2luKCksIGNoaWxsTW9kKG1fdmFsdWUsIG90aGVyLT5hc0ludDY0KCkpKTsKK30KKwog
VmFsdWUqIENvbnN0NjRWYWx1ZTo6Yml0QW5kQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBjb25z
dCBWYWx1ZSogb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFvdGhlci0+aGFzSW50NjQoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmgKaW5kZXggODFmMDhmZDFiNzgx
MzgxMjBhNDRmNGU1MWRiZjIzNDEyY2Q5YWZlNy4uMGM2M2FhMDllMWVhMTViY2M4MDEzMmE0ZGI0
ZjVlZjVhOTFiZjkwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29u
c3Q2NFZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVl
LmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIFZhbHVlKiBjaGVja011bENvbnN0YW50
KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFs
dWUqIGNoZWNrTmVnQ29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFs
dWUqIGRpdkNvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgVmFsdWUqIG1vZENvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBv
dGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIGJpdEFuZENvbnN0YW50KFByb2NlZHVy
ZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIGJpdE9y
Q29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsK
ICAgICBWYWx1ZSogYml0WG9yQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVy
KSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0NvbnN0RG91YmxlVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RE
b3VibGVWYWx1ZS5jcHAKaW5kZXggODUwNDJjYzc5ZmU2MDZkOGIzOWJlZjA5ZGNlYjY4OWQ1NGJh
MmZlYS4uNzkwODhmNzljZjliMjVhMzViMWZiYzdmY2ZlNWY1YjgzMzEwNDA4MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAKQEAgLTkxLDYg
KzkxLDEzIEBAIFZhbHVlKiBDb25zdERvdWJsZVZhbHVlOjpkaXZDb25zdGFudChQcm9jZWR1cmUm
IHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gcHJvYy5hZGQ8Q29u
c3REb3VibGVWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgLyBvdGhlci0+YXNEb3VibGUoKSk7CiB9
CiAKK1ZhbHVlKiBDb25zdERvdWJsZVZhbHVlOjptb2RDb25zdGFudChQcm9jZWR1cmUmIHByb2Ms
IGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoIW90aGVyLT5oYXNEb3VibGUo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0RG91
YmxlVmFsdWU+KG9yaWdpbigpLCBmbW9kKG1fdmFsdWUsIG90aGVyLT5hc0RvdWJsZSgpKSk7Cit9
CisKIFRyaVN0YXRlIENvbnN0RG91YmxlVmFsdWU6OmVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUq
IG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0RvdWJsZSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5oCmluZGV4IDJiZmJlMzQ0OWJm
YmExOTE5ZTgwZGNiZDM5NDI1NDdlNWNkYTdlNmMuLmUzYjc5YzJhNDAyMWQ0ZGYxMDVhMTJmMzI5
ZjJkNmUwN2QyZWVjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nv
bnN0RG91YmxlVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERv
dWJsZVZhbHVlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIFZhbHVlKiBhZGRDb25z
dGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFZhbHVlKiBzdWJDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0
IG92ZXJyaWRlOwogICAgIFZhbHVlKiBkaXZDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1
ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBtb2RDb25zdGFudChQcm9jZWR1
cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBtdWxD
b25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIFZhbHVlKiBiaXR3aXNlQ2FzdENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRl
OwogICAgIFZhbHVlKiBkb3VibGVUb0Zsb2F0Q29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Qgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jv
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKaW5kZXgg
YjNkYzYxYjlhYzZhYzUyNDQ1OTA4ZDI4YjYyZTg1ZDI1MmI3ZjFlMS4uMGU3MmE0YWY0ODM0NDRl
ZmVlMDkwM2UzNDU0NmE3MDA2OTIxNDkyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyTWFjcm9zLmNwcApAQCAtMzAsNiArMzAsOCBAQAogCiAjaW5jbHVkZSAiQjNCYXNpY0Js
b2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRl
ICJCM0NDYWxsVmFsdWUuaCIKKyNpbmNsdWRlICJCM0NvbnN0UHRyVmFsdWUuaCIKICNpbmNsdWRl
ICJCM0NvbnRyb2xWYWx1ZS5oIgogI2luY2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgog
I2luY2x1ZGUgIkIzUGhhc2VTY29wZS5oIgpAQCAtMzcsNiArMzksNyBAQAogI2luY2x1ZGUgIkIz
U3dpdGNoVmFsdWUuaCIKICNpbmNsdWRlICJCM1Vwc2lsb25WYWx1ZS5oIgogI2luY2x1ZGUgIkIz
VmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSA8Y21hdGg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgewogCkBAIC03MiwxMDUgKzc1LDM2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBt
X3ZhbHVlID0gbV9ibG9jay0+YXQobV9pbmRleCk7CiAgICAgICAgICAgICBtX29yaWdpbiA9IG1f
dmFsdWUtPm9yaWdpbigpOwogICAgICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkg
ewotICAgICAgICAgICAgY2FzZSBDaGlsbERpdjogewotICAgICAgICAgICAgICAgIC8vIEFSTSBz
dXBwb3J0cyB0aGlzIGluc3RydWN0aW9uIG5hdGl2ZWx5LgotICAgICAgICAgICAgICAgIGlmIChp
c0FSTTY0KCkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAg
bV9jaGFuZ2VkID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgIC8vIFdlIGltcGxlbWVudCAicmVz
ID0gQ2hpbGxEaXYobnVtLCBkZW4pIiBhcyBmb2xsb3dzOgotICAgICAgICAgICAgICAgIC8vCi0g
ICAgICAgICAgICAgICAgLy8gICAgIGlmIChkZW4gKyAxIDw9X3Vuc2lnbmVkIDEpIHsKLSAgICAg
ICAgICAgICAgICAvLyAgICAgICAgIGlmICghZGVuKSB7Ci0gICAgICAgICAgICAgICAgLy8gICAg
ICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICBnb3RvIGRv
bmU7Ci0gICAgICAgICAgICAgICAgLy8gICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLy8gICAg
ICAgICBpZiAobnVtID09IC0yMTQ3NDgzNjQ4KSB7Ci0gICAgICAgICAgICAgICAgLy8gICAgICAg
ICAgICAgcmVzID0gbnVtOwotICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgIGdvdG8gZG9u
ZTsKLSAgICAgICAgICAgICAgICAvLyAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvLyAgICAg
fQotICAgICAgICAgICAgICAgIC8vICAgICByZXMgPSBudW0gLyBkZXY7Ci0gICAgICAgICAgICAg
ICAgLy8gZG9uZToKLQotICAgICAgICAgICAgICAgIFZhbHVlKiBudW0gPSBtX3ZhbHVlLT5jaGls
ZCgwKTsKLSAgICAgICAgICAgICAgICBWYWx1ZSogZGVuID0gbV92YWx1ZS0+Y2hpbGQoMSk7Ci0K
LSAgICAgICAgICAgICAgICBWYWx1ZSogb25lID0KLSAgICAgICAgICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0SW50Q29uc3RhbnQobV9pbmRleCwgbV92YWx1ZSwgMSk7Ci0gICAgICAg
ICAgICAgICAgVmFsdWUqIGlzRGVuT0sgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAot
ICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBBYm92ZSwgbV9vcmlnaW4sCi0gICAgICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgQWRkLCBtX29y
aWdpbiwgZGVuLCBvbmUpLAotICAgICAgICAgICAgICAgICAgICBvbmUpOwotCi0gICAgICAgICAg
ICAgICAgQmFzaWNCbG9jayogYmVmb3JlID0KLSAgICAgICAgICAgICAgICAgICAgbV9ibG9ja0lu
c2VydGlvblNldC5zcGxpdEZvcndhcmQobV9ibG9jaywgbV9pbmRleCwgJm1faW5zZXJ0aW9uU2V0
KTsKLQotICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5vcm1hbERpdkNhc2UgPSBtX2Jsb2Nr
SW5zZXJ0aW9uU2V0Lmluc2VydEJlZm9yZShtX2Jsb2NrKTsKLSAgICAgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBzaGFkeURlbkNhc2UgPSBtX2Jsb2NrSW5zZXJ0aW9uU2V0Lmluc2VydEJlZm9yZSht
X2Jsb2NrKTsKLSAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiB6ZXJvRGVuQ2FzZSA9IG1fYmxv
Y2tJbnNlcnRpb25TZXQuaW5zZXJ0QmVmb3JlKG1fYmxvY2spOwotICAgICAgICAgICAgICAgIEJh
c2ljQmxvY2sqIG5lZzFEZW5DYXNlID0gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRCZWZvcmUo
bV9ibG9jayk7Ci0gICAgICAgICAgICAgICAgQmFzaWNCbG9jayogaW50TWluQ2FzZSA9IG1fYmxv
Y2tJbnNlcnRpb25TZXQuaW5zZXJ0QmVmb3JlKG1fYmxvY2spOwotCi0gICAgICAgICAgICAgICAg
YmVmb3JlLT5yZXBsYWNlTGFzdFdpdGhOZXc8Q29udHJvbFZhbHVlPigKLSAgICAgICAgICAgICAg
ICAgICAgbV9wcm9jLCBCcmFuY2gsIG1fb3JpZ2luLCBpc0Rlbk9LLAotICAgICAgICAgICAgICAg
ICAgICBGcmVxdWVudGVkQmxvY2sobm9ybWFsRGl2Q2FzZSwgRnJlcXVlbmN5Q2xhc3M6Ok5vcm1h
bCksCi0gICAgICAgICAgICAgICAgICAgIEZyZXF1ZW50ZWRCbG9jayhzaGFkeURlbkNhc2UsIEZy
ZXF1ZW5jeUNsYXNzOjpSYXJlKSk7Ci0KLSAgICAgICAgICAgICAgICBVcHNpbG9uVmFsdWUqIG5v
cm1hbFJlc3VsdCA9IG5vcm1hbERpdkNhc2UtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KAotICAg
ICAgICAgICAgICAgICAgICBtX3Byb2MsIG1fb3JpZ2luLAotICAgICAgICAgICAgICAgICAgICBu
b3JtYWxEaXZDYXNlLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRGl2LCBtX29yaWdpbiwgbnVt
LCBkZW4pKTsKLSAgICAgICAgICAgICAgICBub3JtYWxEaXZDYXNlLT5hcHBlbmROZXc8Q29udHJv
bFZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgbV9wcm9jLCBKdW1wLCBtX29yaWdpbiwgRnJl
cXVlbnRlZEJsb2NrKG1fYmxvY2spKTsKLQotICAgICAgICAgICAgICAgIHNoYWR5RGVuQ2FzZS0+
YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIG1fcHJvYywgQnJh
bmNoLCBtX29yaWdpbiwgZGVuLAotICAgICAgICAgICAgICAgICAgICBGcmVxdWVudGVkQmxvY2so
bmVnMURlbkNhc2UsIEZyZXF1ZW5jeUNsYXNzOjpOb3JtYWwpLAotICAgICAgICAgICAgICAgICAg
ICBGcmVxdWVudGVkQmxvY2soemVyb0RlbkNhc2UsIEZyZXF1ZW5jeUNsYXNzOjpSYXJlKSk7Ci0K
LSAgICAgICAgICAgICAgICBVcHNpbG9uVmFsdWUqIHplcm9SZXN1bHQgPSB6ZXJvRGVuQ2FzZS0+
YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIG1fcHJvYywgbV9v
cmlnaW4sCi0gICAgICAgICAgICAgICAgICAgIHplcm9EZW5DYXNlLT5hcHBlbmRJbnRDb25zdGFu
dChtX3Byb2MsIG1fdmFsdWUsIDApKTsKLSAgICAgICAgICAgICAgICB6ZXJvRGVuQ2FzZS0+YXBw
ZW5kTmV3PENvbnRyb2xWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIG1fcHJvYywgSnVtcCwg
bV9vcmlnaW4sIEZyZXF1ZW50ZWRCbG9jayhtX2Jsb2NrKSk7Ci0KLSAgICAgICAgICAgICAgICBp
bnQ2NF90IGJhZE51bWVyYXRvckNvbnN0OwotICAgICAgICAgICAgICAgIHN3aXRjaCAobV92YWx1
ZS0+dHlwZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBJbnQzMjoKLSAgICAgICAgICAgICAg
ICAgICAgYmFkTnVtZXJhdG9yQ29uc3QgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
aW4oKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBJ
bnQ2NDoKLSAgICAgICAgICAgICAgICAgICAgYmFkTnVtZXJhdG9yQ29uc3QgPSBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDY0X3Q+OjptaW4oKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgICAgIGJhZE51bWVyYXRvckNvbnN0ID0gMDsKKyAg
ICAgICAgICAgIGNhc2UgTW9kOiB7CisgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWUtPnR5cGUo
KSA9PSBEb3VibGUpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIGZ1bmN0aW9uQWRkcmVz
cyA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxDb25zdFB0clZhbHVlPihtX2luZGV4LCBtX29yaWdp
biwgZm1vZCk7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiByZXN1bHQgPSBtX2luc2VydGlv
blNldC5pbnNlcnQ8Q0NhbGxWYWx1ZT4obV9pbmRleCwgRG91YmxlLCBtX29yaWdpbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEVmZmVjdHM6Om5vbmUoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uQWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNo
aWxkKDApLAorICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAg
ICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KHJlc3VsdCk7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX3ZhbHVlLT50eXBlKCkgPT0gRmxvYXQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgVmFsdWUqIG51bWVyYXRvckFzRG91YmxlID0gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBGbG9hdFRvRG91YmxlLCBtX29yaWdpbiwgbV92YWx1
ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSogZGVub21pbmF0b3JBc0Rv
dWJsZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgRmxvYXRUb0RvdWJs
ZSwgbV9vcmlnaW4sIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgVmFs
dWUqIGZ1bmN0aW9uQWRkcmVzcyA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxDb25zdFB0clZhbHVl
PihtX2luZGV4LCBtX29yaWdpbiwgZm1vZCk7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBk
b3VibGVNb2QgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q0NhbGxWYWx1ZT4obV9pbmRleCwgRG91
YmxlLCBtX29yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEVmZmVjdHM6Om5vbmUoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uQWRkcmVzcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG51bWVyYXRvckFzRG91YmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVu
b21pbmF0b3JBc0RvdWJsZSk7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiByZXN1bHQgPSBt
X2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIERvdWJsZVRvRmxvYXQsIG1fb3Jp
Z2luLCBkb3VibGVNb2QpOworICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0
aElkZW50aXR5KHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBDaGlsbERpdjogeworICAgICAg
ICAgICAgICAgIG1ha2VEaXZpc2lvbkNoaWxsKERpdik7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBWYWx1ZSogYmFkTnVtZXJhdG9yID0K
LSAgICAgICAgICAgICAgICAgICAgbmVnMURlbkNhc2UtPmFwcGVuZEludENvbnN0YW50KG1fcHJv
YywgbV92YWx1ZSwgYmFkTnVtZXJhdG9yQ29uc3QpOwotCi0gICAgICAgICAgICAgICAgbmVnMURl
bkNhc2UtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAotICAgICAgICAgICAgICAgICAgICBtX3By
b2MsIEJyYW5jaCwgbV9vcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgIG5lZzFEZW5DYXNlLT5h
cHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgICAgICAgICAgbV9wcm9jLCBFcXVhbCwg
bV9vcmlnaW4sIG51bSwgYmFkTnVtZXJhdG9yKSwKLSAgICAgICAgICAgICAgICAgICAgRnJlcXVl
bnRlZEJsb2NrKGludE1pbkNhc2UsIEZyZXF1ZW5jeUNsYXNzOjpSYXJlKSwKLSAgICAgICAgICAg
ICAgICAgICAgRnJlcXVlbnRlZEJsb2NrKG5vcm1hbERpdkNhc2UsIEZyZXF1ZW5jeUNsYXNzOjpO
b3JtYWwpKTsKLQotICAgICAgICAgICAgICAgIFVwc2lsb25WYWx1ZSogaW50TWluUmVzdWx0ID0g
aW50TWluQ2FzZS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAg
IG1fcHJvYywgbV9vcmlnaW4sIGJhZE51bWVyYXRvcik7Ci0gICAgICAgICAgICAgICAgaW50TWlu
Q2FzZS0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIG1fcHJv
YywgSnVtcCwgbV9vcmlnaW4sIEZyZXF1ZW50ZWRCbG9jayhtX2Jsb2NrKSk7Ci0KLSAgICAgICAg
ICAgICAgICBWYWx1ZSogcGhpID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKLSAgICAg
ICAgICAgICAgICAgICAgbV9pbmRleCwgUGhpLCBtX3ZhbHVlLT50eXBlKCksIG1fb3JpZ2luKTsK
LSAgICAgICAgICAgICAgICBub3JtYWxSZXN1bHQtPnNldFBoaShwaGkpOwotICAgICAgICAgICAg
ICAgIHplcm9SZXN1bHQtPnNldFBoaShwaGkpOwotICAgICAgICAgICAgICAgIGludE1pblJlc3Vs
dC0+c2V0UGhpKHBoaSk7Ci0KLSAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElk
ZW50aXR5KHBoaSk7Ci0gICAgICAgICAgICAgICAgYmVmb3JlLT51cGRhdGVQcmVkZWNlc3NvcnNB
ZnRlcigpOworICAgICAgICAgICAgY2FzZSBDaGlsbE1vZDogeworICAgICAgICAgICAgICAgIG1h
a2VEaXZpc2lvbkNoaWxsKE1vZCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAKQEAgLTE5OSw2ICsxMzMsMTA4IEBAIHByaXZhdGU6CiAgICAgICAgIG1faW5zZXJ0aW9u
U2V0LmV4ZWN1dGUobV9ibG9jayk7CiAgICAgfQogCisgICAgdm9pZCBtYWtlRGl2aXNpb25DaGls
bChPcGNvZGUgbm9uQ2hpbGxPcGNvZGUpCisgICAgeworICAgICAgICBBU1NFUlQobm9uQ2hpbGxP
cGNvZGUgPT0gRGl2IHx8IG5vbkNoaWxsT3Bjb2RlID09IE1vZCk7CisKKyAgICAgICAgLy8gQVJN
IHN1cHBvcnRzIHRoaXMgaW5zdHJ1Y3Rpb24gbmF0aXZlbHkuCisgICAgICAgIGlmIChpc0FSTTY0
KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gV2UgaW1wbGVtZW50ICJyZXMg
PSBDaGlsbERpdi9DaGlsbE1vZChudW0sIGRlbikiIGFzIGZvbGxvd3M6CisgICAgICAgIC8vCisg
ICAgICAgIC8vICAgICBpZiAoZGVuICsgMSA8PV91bnNpZ25lZCAxKSB7CisgICAgICAgIC8vICAg
ICAgICAgaWYgKCFkZW4pIHsKKyAgICAgICAgLy8gICAgICAgICAgICAgcmVzID0gMDsKKyAgICAg
ICAgLy8gICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAvLyAgICAgICAgIH0KKyAgICAg
ICAgLy8gICAgICAgICBpZiAobnVtID09IC0yMTQ3NDgzNjQ4KSB7CisgICAgICAgIC8vICAgICAg
ICAgICAgIHJlcyA9IGlzRGl2ID8gbnVtIDogMDsKKyAgICAgICAgLy8gICAgICAgICAgICAgZ290
byBkb25lOworICAgICAgICAvLyAgICAgICAgIH0KKyAgICAgICAgLy8gICAgIH0KKyAgICAgICAg
Ly8gICAgIHJlcyA9IG51bSAoLyBvciAlKSBkZXY7CisgICAgICAgIC8vIGRvbmU6CisgICAgICAg
IG1fY2hhbmdlZCA9IHRydWU7CisKKyAgICAgICAgVmFsdWUqIG51bSA9IG1fdmFsdWUtPmNoaWxk
KDApOworICAgICAgICBWYWx1ZSogZGVuID0gbV92YWx1ZS0+Y2hpbGQoMSk7CisKKyAgICAgICAg
VmFsdWUqIG9uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENvbnN0YW50KG1faW5kZXgsIG1f
dmFsdWUsIDEpOworICAgICAgICBWYWx1ZSogaXNEZW5PSyA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dDxWYWx1ZT4oCisgICAgICAgICAgICBtX2luZGV4LCBBYm92ZSwgbV9vcmlnaW4sCisgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIEFkZCwgbV9vcmlnaW4s
IGRlbiwgb25lKSwKKyAgICAgICAgICAgIG9uZSk7CisKKyAgICAgICAgQmFzaWNCbG9jayogYmVm
b3JlID0gbV9ibG9ja0luc2VydGlvblNldC5zcGxpdEZvcndhcmQobV9ibG9jaywgbV9pbmRleCwg
Jm1faW5zZXJ0aW9uU2V0KTsKKworICAgICAgICBCYXNpY0Jsb2NrKiBub3JtYWxEaXZDYXNlID0g
bV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRCZWZvcmUobV9ibG9jayk7CisgICAgICAgIEJhc2lj
QmxvY2sqIHNoYWR5RGVuQ2FzZSA9IG1fYmxvY2tJbnNlcnRpb25TZXQuaW5zZXJ0QmVmb3JlKG1f
YmxvY2spOworICAgICAgICBCYXNpY0Jsb2NrKiB6ZXJvRGVuQ2FzZSA9IG1fYmxvY2tJbnNlcnRp
b25TZXQuaW5zZXJ0QmVmb3JlKG1fYmxvY2spOworICAgICAgICBCYXNpY0Jsb2NrKiBuZWcxRGVu
Q2FzZSA9IG1fYmxvY2tJbnNlcnRpb25TZXQuaW5zZXJ0QmVmb3JlKG1fYmxvY2spOworICAgICAg
ICBCYXNpY0Jsb2NrKiBpbnRNaW5DYXNlID0gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRCZWZv
cmUobV9ibG9jayk7CisKKyAgICAgICAgYmVmb3JlLT5yZXBsYWNlTGFzdFdpdGhOZXc8Q29udHJv
bFZhbHVlPigKKyAgICAgICAgICAgIG1fcHJvYywgQnJhbmNoLCBtX29yaWdpbiwgaXNEZW5PSywK
KyAgICAgICAgICAgIEZyZXF1ZW50ZWRCbG9jayhub3JtYWxEaXZDYXNlLCBGcmVxdWVuY3lDbGFz
czo6Tm9ybWFsKSwKKyAgICAgICAgICAgIEZyZXF1ZW50ZWRCbG9jayhzaGFkeURlbkNhc2UsIEZy
ZXF1ZW5jeUNsYXNzOjpSYXJlKSk7CisKKyAgICAgICAgVXBzaWxvblZhbHVlKiBub3JtYWxSZXN1
bHQgPSBub3JtYWxEaXZDYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAgICAg
IG1fcHJvYywgbV9vcmlnaW4sCisgICAgICAgICAgICBub3JtYWxEaXZDYXNlLT5hcHBlbmROZXc8
VmFsdWU+KG1fcHJvYywgbm9uQ2hpbGxPcGNvZGUsIG1fb3JpZ2luLCBudW0sIGRlbikpOworICAg
ICAgICBub3JtYWxEaXZDYXNlLT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgICAg
IG1fcHJvYywgSnVtcCwgbV9vcmlnaW4sIEZyZXF1ZW50ZWRCbG9jayhtX2Jsb2NrKSk7CisKKyAg
ICAgICAgc2hhZHlEZW5DYXNlLT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgICAg
IG1fcHJvYywgQnJhbmNoLCBtX29yaWdpbiwgZGVuLAorICAgICAgICAgICAgRnJlcXVlbnRlZEJs
b2NrKG5lZzFEZW5DYXNlLCBGcmVxdWVuY3lDbGFzczo6Tm9ybWFsKSwKKyAgICAgICAgICAgIEZy
ZXF1ZW50ZWRCbG9jayh6ZXJvRGVuQ2FzZSwgRnJlcXVlbmN5Q2xhc3M6OlJhcmUpKTsKKworICAg
ICAgICBVcHNpbG9uVmFsdWUqIHplcm9SZXN1bHQgPSB6ZXJvRGVuQ2FzZS0+YXBwZW5kTmV3PFVw
c2lsb25WYWx1ZT4oCisgICAgICAgICAgICBtX3Byb2MsIG1fb3JpZ2luLAorICAgICAgICAgICAg
emVyb0RlbkNhc2UtPmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgbV92YWx1ZSwgMCkpOworICAg
ICAgICB6ZXJvRGVuQ2FzZS0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgICAgICBt
X3Byb2MsIEp1bXAsIG1fb3JpZ2luLCBGcmVxdWVudGVkQmxvY2sobV9ibG9jaykpOworCisgICAg
ICAgIGludDY0X3QgYmFkTnVtZXJhdG9yQ29uc3QgPSAwOworICAgICAgICBzd2l0Y2ggKG1fdmFs
dWUtPnR5cGUoKSkgeworICAgICAgICBjYXNlIEludDMyOgorICAgICAgICAgICAgYmFkTnVtZXJh
dG9yQ29uc3QgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEludDY0OgorICAgICAgICAgICAgYmFkTnVtZXJhdG9y
Q29uc3QgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICBiYWROdW1lcmF0b3JDb25zdCA9IDA7CisgICAgICAgIH0KKworICAg
ICAgICBWYWx1ZSogYmFkTnVtZXJhdG9yID0KKyAgICAgICAgICAgIG5lZzFEZW5DYXNlLT5hcHBl
bmRJbnRDb25zdGFudChtX3Byb2MsIG1fdmFsdWUsIGJhZE51bWVyYXRvckNvbnN0KTsKKworICAg
ICAgICBuZWcxRGVuQ2FzZS0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgICAgICBt
X3Byb2MsIEJyYW5jaCwgbV9vcmlnaW4sCisgICAgICAgICAgICBuZWcxRGVuQ2FzZS0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBtX3Byb2MsIEVxdWFsLCBtX29yaWdpbiwgbnVt
LCBiYWROdW1lcmF0b3IpLAorICAgICAgICAgICAgRnJlcXVlbnRlZEJsb2NrKGludE1pbkNhc2Us
IEZyZXF1ZW5jeUNsYXNzOjpSYXJlKSwKKyAgICAgICAgICAgIEZyZXF1ZW50ZWRCbG9jayhub3Jt
YWxEaXZDYXNlLCBGcmVxdWVuY3lDbGFzczo6Tm9ybWFsKSk7CisKKyAgICAgICAgVmFsdWUqIGlu
dE1pblJlc3VsdCA9IG5vbkNoaWxsT3Bjb2RlID09IERpdiA/IGJhZE51bWVyYXRvciA6IGludE1p
bkNhc2UtPmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgbV92YWx1ZSwgMCk7CisgICAgICAgIFVw
c2lsb25WYWx1ZSogaW50TWluUmVzdWx0VXBzaWxvbiA9IGludE1pbkNhc2UtPmFwcGVuZE5ldzxV
cHNpbG9uVmFsdWU+KAorICAgICAgICAgICAgbV9wcm9jLCBtX29yaWdpbiwgaW50TWluUmVzdWx0
KTsKKyAgICAgICAgaW50TWluQ2FzZS0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAg
ICAgICBtX3Byb2MsIEp1bXAsIG1fb3JpZ2luLCBGcmVxdWVudGVkQmxvY2sobV9ibG9jaykpOwor
CisgICAgICAgIFZhbHVlKiBwaGkgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAg
ICAgICAgICAgbV9pbmRleCwgUGhpLCBtX3ZhbHVlLT50eXBlKCksIG1fb3JpZ2luKTsKKyAgICAg
ICAgbm9ybWFsUmVzdWx0LT5zZXRQaGkocGhpKTsKKyAgICAgICAgemVyb1Jlc3VsdC0+c2V0UGhp
KHBoaSk7CisgICAgICAgIGludE1pblJlc3VsdFVwc2lsb24tPnNldFBoaShwaGkpOworCisgICAg
ICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkocGhpKTsKKyAgICAgICAgYmVmb3JlLT51
cGRhdGVQcmVkZWNlc3NvcnNBZnRlcigpOworICAgIH0KKwogICAgIHZvaWQgcmVjdXJzaXZlbHlC
dWlsZFN3aXRjaCgKICAgICAgICAgY29uc3QgVmVjdG9yPFN3aXRjaENhc2U+JiBjYXNlcywgdW5z
aWduZWQgc3RhcnQsIGJvb2wgaGFyZFN0YXJ0LCB1bnNpZ25lZCBlbmQsCiAgICAgICAgIEJhc2lj
QmxvY2sqIGJlZm9yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAK
aW5kZXggMjc0ZGM5ZGMzZTU5NGQzZWNiNzM5MjVlNzk1M2ZhMDdjNTEwMjhlNC4uMDljYzljYjcz
YTVhNjNkYWMxM2JmMGU0NWUzZGZmOWNlNzM2Yjk1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTE0NDEsMjkgKzE0NDEsOCBAQCBwcml2YXRlOgogCiAg
ICAgICAgIGNhc2UgRGl2OiB7CiAgICAgICAgICAgICBpZiAoaXNJbnQobV92YWx1ZS0+dHlwZSgp
KSkgewotICAgICAgICAgICAgICAgIFRtcCBlYXggPSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOwot
ICAgICAgICAgICAgICAgIFRtcCBlZHggPSBUbXAoWDg2UmVnaXN0ZXJzOjplZHgpOwotCi0gICAg
ICAgICAgICAgICAgQWlyOjpPcGNvZGUgY29udmVydFRvRG91YmxlV29yZDsKLSAgICAgICAgICAg
ICAgICBBaXI6Ok9wY29kZSBkaXY7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT50
eXBlKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIEludDMyOgotICAgICAgICAgICAgICAgICAg
ICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2Q29udmVydFRvRG91YmxlV29yZDMyOwotICAgICAg
ICAgICAgICAgICAgICBkaXYgPSBYODZEaXYzMjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSBJbnQ2NDoKLSAgICAgICAgICAgICAgICAgICAgY29udmVy
dFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQ7Ci0gICAgICAgICAgICAgICAg
ICAgIGRpdiA9IFg4NkRpdjY0OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAobV92
YWx1ZS0+Y2hpbGQoMCkpLCBlYXgpOwotICAgICAgICAgICAgICAgIGFwcGVuZChjb252ZXJ0VG9E
b3VibGVXb3JkLCBlYXgsIGVkeCk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kKGRpdiwgZWF4LCBl
ZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkpOwotICAgICAgICAgICAgICAgIGFwcGVuZChNb3Zl
LCBlYXgsIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgbG93ZXJYODZEaXYoKTsKKyAg
ICAgICAgICAgICAgICBhcHBlbmQoTW92ZSwgVG1wKFg4NlJlZ2lzdGVyczo6ZWF4KSwgdG1wKG1f
dmFsdWUpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBBU1NFUlQoaXNGbG9hdChtX3ZhbHVlLT50eXBlKCkpKTsKQEAgLTE0NzIsNiArMTQ1MSwx
MiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAg
Y2FzZSBNb2Q6IHsKKyAgICAgICAgICAgIGxvd2VyWDg2RGl2KCk7CisgICAgICAgICAgICBhcHBl
bmQoTW92ZSwgVG1wKFg4NlJlZ2lzdGVyczo6ZWR4KSwgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgQml0QW5kOiB7CiAgICAgICAg
ICAgICBhcHBlbmRCaW5PcDxBbmQzMiwgQW5kNjQsIENvbW11dGF0aXZlPigKICAgICAgICAgICAg
ICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwpAQCAtMTk3Nyw2ICsx
OTYyLDMyIEBAIHByaXZhdGU6CiAgICAgICAgIGRhdGFMb2coIkZBVEFMOiBjb3VsZCBub3QgbG93
ZXIgIiwgZGVlcER1bXAobV92YWx1ZSksICJcbiIpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIH0KKworICAgIHZvaWQgbG93ZXJYODZEaXYoKQorICAgIHsKKyAg
ICAgICAgVG1wIGVheCA9IFRtcChYODZSZWdpc3RlcnM6OmVheCk7CisgICAgICAgIFRtcCBlZHgg
PSBUbXAoWDg2UmVnaXN0ZXJzOjplZHgpOworCisgICAgICAgIEFpcjo6T3Bjb2RlIGNvbnZlcnRU
b0RvdWJsZVdvcmQ7CisgICAgICAgIEFpcjo6T3Bjb2RlIGRpdjsKKyAgICAgICAgc3dpdGNoICht
X3ZhbHVlLT50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBJbnQzMjoKKyAgICAgICAgICAgIGNvbnZl
cnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9Eb3VibGVXb3JkMzI7CisgICAgICAgICAgICBk
aXYgPSBYODZEaXYzMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEludDY0Ogor
ICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQ7
CisgICAgICAgICAgICBkaXYgPSBYODZEaXY2NDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYXBwZW5kKE1v
dmUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIGVheCk7CisgICAgICAgIGFwcGVuZChjb252ZXJ0
VG9Eb3VibGVXb3JkLCBlYXgsIGVkeCk7CisgICAgICAgIGFwcGVuZChkaXYsIGVheCwgZWR4LCB0
bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICB9CiAgICAgCiAgICAgSW5kZXhTZXQ8VmFsdWU+
IG1fbG9ja2VkOyAvLyBUaGVzZSBhcmUgdmFsdWVzIHRoYXQgd2lsbCBoYXZlIG5vIFRtcCBpbiBB
aXIuCiAgICAgSW5kZXhNYXA8VmFsdWUsIFRtcD4gbV92YWx1ZVRvVG1wOyAvLyBUaGVzZSBhcmUg
dmFsdWVzIHRoYXQgbXVzdCBoYXZlIGEgVG1wIGluIEFpci4gV2Ugc2F5IHRoYXQgYSBWYWx1ZSog
d2l0aCBhIG5vbi1udWxsIFRtcCBpcyAicGlubmVkIi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNP
cGNvZGUuY3BwCmluZGV4IGRhMDI0NzE2NTdjZjA1Mjc1Yzc5NDk5M2E0YWQ0MzU5M2ExYWFhYTIu
LmJjNjA5MzU3M2IzMDc3OGNlY2MwNWQwZjI4ZjcxYmE5MmI5MjNiYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzT3Bjb2RlLmNwcApAQCAtMTE2LDExICsxMTYsMTQgQEAgdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE9wY29kZSBvcGNvZGUpCiAgICAgY2FzZSBEaXY6CiAg
ICAgICAgIG91dC5wcmludCgiRGl2Iik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIE1vZDoK
KyAgICAgICAgb3V0LnByaW50KCJNb2QiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ2hp
bGxEaXY6CiAgICAgICAgIG91dC5wcmludCgiQ2hpbGxEaXYiKTsKICAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgTW9kOgotICAgICAgICBvdXQucHJpbnQoIk1vZCIpOworICAgIGNhc2UgQ2hpbGxN
b2Q6CisgICAgICAgIG91dC5wcmludCgiQ2hpbGxNb2QiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgQml0QW5kOgogICAgICAgICBvdXQucHJpbnQoIkJpdEFuZCIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNPcGNvZGUuaAppbmRleCAyYzhmMmU1MmEzODE0MWJlMzE4ZTczOTI4MDkwYzc1NmVl
NzAxNTQ3Li4xNGFlYzRhMmE0ODdlZDA0YWIzNzAwMWY1OTc1NDIyMDNjMTE3MTQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaApAQCAtNzEsMTAgKzcxLDExIEBAIGVudW0gT3Bjb2Rl
IDogaW50MTZfdCB7CiAgICAgU3ViLAogICAgIE11bCwKICAgICBEaXYsIC8vIEFsbCBiZXRzIGFy
ZSBvZmYgYXMgdG8gd2hhdCB3aWxsIGhhcHBlbiB3aGVuIHlvdSBleGVjdXRlIHRoaXMgZm9yIC0y
XjMxLy0xIGFuZCB4LzAuCisgICAgTW9kLCAvLyBBbGwgYmV0cyBhcmUgb2ZmIGFzIHRvIHdoYXQg
d2lsbCBoYXBwZW4gd2hlbiB5b3UgZXhlY3V0ZSB0aGlzIGZvciAtMl4zMSUtMSBhbmQgeCUwLgog
CiAgICAgLy8gSW50ZWdlciBtYXRoLgogICAgIENoaWxsRGl2LCAvLyBkb2Vzbid0IHRyYXAgZXZl
ciwgYmVoYXZlcyBsaWtlIEpTICh4L3kpfDAuCi0gICAgTW9kLAorICAgIENoaWxsTW9kLCAvLyBk
b2Vzbid0IHRyYXAgZXZlciwgYmVoYXZlcyBsaWtlIEpTICh4JXkpfDAuCiAgICAgQml0QW5kLAog
ICAgIEJpdE9yLAogICAgIEJpdFhvciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Jl
ZHVjZVN0cmVuZ3RoLmNwcAppbmRleCA1YzBiYjkyNWVlMjFmYTY1OWVkZmI2ZTEzNjI3YjE1NDc0
YjFhOTM3Li44MmJjNTY1ZWNiOGQ0MjU0ODdiOTNjMGNlZWI0Nzg0ZWY1NTFiNGNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCkBAIC0yOTEsNiAr
MjkxLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXBsYWNlV2l0aE5ld1ZhbHVlKG1fdmFs
dWUtPmNoaWxkKDApLT5kaXZDb25zdGFudChtX3Byb2MsIG1fdmFsdWUtPmNoaWxkKDEpKSk7CiAg
ICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNlIE1vZDoKKyAgICAgICAgY2FzZSBDaGls
bE1vZDoKKyAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3VmFsdWUobV92YWx1ZS0+Y2hpbGQoMCkt
Pm1vZENvbnN0YW50KG1fcHJvYywgbV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworCiAgICAgICAgIGNhc2UgQml0QW5kOgogICAgICAgICAgICAgaGFuZGxlQ29tbXV0YXRp
dml0eSgpOwogCkBAIC02NTgsNyArNjYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBMb2FkKGNvbnN0YW50MSwgb2Zmc2V0ID0gY29uc3Rh
bnQyKQotICAgICAgICAgICAgLy8gSW50byB0aGlzOiBMYW9kKGNvbnN0YW50MSArIGNvbnN0YW50
MikKKyAgICAgICAgICAgIC8vIEludG8gdGhpczogTG9hZChjb25zdGFudDEgKyBjb25zdGFudDIp
CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gVGhpcyBpcyBhIGZ1biBjYW5vbmljYWxp
emF0aW9uLiBJdCBwdXJlbHkgcmVncmVzc2VzIG5haXZlbHkgZ2VuZXJhdGVkIGNvZGUuIFdlIHJl
bHkKICAgICAgICAgICAgIC8vIG9uIGNvbnN0YW50IG1hdGVyaWFsaXphdGlvbiB0byBiZSBzbWFy
dCBlbm91Z2ggdG8gbWF0ZXJpYWxpemUgdGhpcyBjb25zdGFudCB0aGUgc21hcnQKQEAgLTY3Nyw2
ICs2ODIsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBDQ2FsbDoKKyAgICAgICAgICAgIC8vIFR1cm4gdGhpczogQ2FsbChmbW9kLCBj
b25zdGFudDEsIGNvbnN0YW50MikKKyAgICAgICAgICAgIC8vIEludG8gdGhpczogZmNhbGwtY29u
c3RhbnQoY29uc3RhbnQxLCBjb25zdGFudDIpCisgICAgICAgICAgICBpZiAobV92YWx1ZS0+dHlw
ZSgpID09IERvdWJsZQorICAgICAgICAgICAgICAgICYmIG1fdmFsdWUtPm51bUNoaWxkcmVuKCkg
PT0gMworICAgICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5pc0ludFB0cihyZWlu
dGVycHJldF9jYXN0PGludHB0cl90PihmbW9kKSkKKyAgICAgICAgICAgICAgICAmJiBtX3ZhbHVl
LT5jaGlsZCgxKS0+dHlwZSgpID09IERvdWJsZQorICAgICAgICAgICAgICAgICYmIG1fdmFsdWUt
PmNoaWxkKDIpLT50eXBlKCkgPT0gRG91YmxlKSB7CisgICAgICAgICAgICAgICAgcmVwbGFjZVdp
dGhOZXdWYWx1ZShtX3ZhbHVlLT5jaGlsZCgxKS0+bW9kQ29uc3RhbnQobV9wcm9jLCBtX3ZhbHVl
LT5jaGlsZCgyKSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKICAgICAg
ICAgY2FzZSBFcXVhbDoKICAgICAgICAgICAgIGhhbmRsZUNvbW11dGF0aXZpdHkoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCmluZGV4IDc1ODc0NDMxNWJiZjQ0NzM0
NzYxODk2YjNlMjgyNDRkYTJhMjM1MTEuLmUwMDk2M2MyYWUzZTA1NDk2YWZlMjU5YzQxMDU0NWU2
Nzk4ZDI3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKQEAgLTE1
MywxMyArMTUzLDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNhc2UgU3ViOgogICAgICAgICAg
ICAgY2FzZSBNdWw6CiAgICAgICAgICAgICBjYXNlIERpdjoKKyAgICAgICAgICAgIGNhc2UgTW9k
OgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgi
QXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9
PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpLCAo
IkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkg
IT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgQ2hpbGxEaXY6Ci0gICAgICAgICAgICBjYXNlIE1vZDoKKyAgICAgICAgICAg
IGNhc2UgQ2hpbGxNb2Q6CiAgICAgICAgICAgICBjYXNlIEJpdEFuZDoKICAgICAgICAgICAgIGNh
c2UgQml0T3I6CiAgICAgICAgICAgICBjYXNlIEJpdFhvcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlLmNwcAppbmRleCBjMDQyNzY3OTc3NDNiNmEyNjJmOTlkOTBiM2I3NWZhNGJjZDI3YmE2
Li42N2NiMjI2NDc5NDJhMmNjMTFiZjE1ZjYyODNkNGYzNjdiMjE0OWY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC0xNjQsNiArMTY0LDExIEBAIFZhbHVlKiBWYWx1ZTo6
ZGl2Q29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqKSBjb25zdAogICAgIHJldHVybiBu
dWxscHRyOwogfQogCitWYWx1ZSogVmFsdWU6Om1vZENvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0
IFZhbHVlKikgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogVmFsdWUqIFZhbHVl
OjpiaXRBbmRDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSopIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0zMzcsNyArMzQyLDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0
cygpIGNvbnN0CiAgICAgY2FzZSBTdWI6CiAgICAgY2FzZSBNdWw6CiAgICAgY2FzZSBDaGlsbERp
djoKLSAgICBjYXNlIE1vZDoKKyAgICBjYXNlIENoaWxsTW9kOgogICAgIGNhc2UgQml0QW5kOgog
ICAgIGNhc2UgQml0T3I6CiAgICAgY2FzZSBCaXRYb3I6CkBAIC0zNjksNiArMzc0LDcgQEAgRWZm
ZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBTZWxlY3Q6CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgRGl2OgorICAgIGNhc2UgTW9kOgogICAgICAgICByZXN1bHQuY29udHJv
bERlcGVuZGVudCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTG9hZDhaOgpAQCAt
NDM2LDggKzQ0MiwxMCBAQCBWYWx1ZUtleSBWYWx1ZTo6a2V5KCkgY29uc3QKICAgICBjYXNlIEFk
ZDoKICAgICBjYXNlIFN1YjoKICAgICBjYXNlIE11bDoKLSAgICBjYXNlIENoaWxsRGl2OgorICAg
IGNhc2UgRGl2OgogICAgIGNhc2UgTW9kOgorICAgIGNhc2UgQ2hpbGxEaXY6CisgICAgY2FzZSBD
aGlsbE1vZDoKICAgICBjYXNlIEJpdEFuZDoKICAgICBjYXNlIEJpdE9yOgogICAgIGNhc2UgQml0
WG9yOgpAQCAtNDUyLDcgKzQ2MCw2IEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAg
IGNhc2UgQmVsb3c6CiAgICAgY2FzZSBBYm92ZUVxdWFsOgogICAgIGNhc2UgQmVsb3dFcXVhbDoK
LSAgICBjYXNlIERpdjoKICAgICBjYXNlIENoZWNrQWRkOgogICAgIGNhc2UgQ2hlY2tTdWI6CiAg
ICAgY2FzZSBDaGVja011bDoKQEAgLTUxNCw4ICs1MjEsOSBAQCBUeXBlIFZhbHVlOjp0eXBlRm9y
KE9wY29kZSBvcGNvZGUsIFZhbHVlKiBmaXJzdENoaWxkLCBWYWx1ZSogc2Vjb25kQ2hpbGQpCiAg
ICAgY2FzZSBTdWI6CiAgICAgY2FzZSBNdWw6CiAgICAgY2FzZSBEaXY6Ci0gICAgY2FzZSBDaGls
bERpdjoKICAgICBjYXNlIE1vZDoKKyAgICBjYXNlIENoaWxsRGl2OgorICAgIGNhc2UgQ2hpbGxN
b2Q6CiAgICAgY2FzZSBCaXRBbmQ6CiAgICAgY2FzZSBCaXRPcjoKICAgICBjYXNlIEJpdFhvcjoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCmluZGV4IDkxZTQ5ZDFiZDk2MzllYzJkOGJjNmZl
MGJlNTRiZTNhZTg3YTVmMDguLmVkMmQxMGQwM2Y1YTE5ZDllNThmZDQ4NzQ0YzQzMmI5YWQ4MjVl
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaApAQCAtMTIxLDYgKzEyMSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFZhbHVlKiBjaGVja011bENvbnN0YW50KFByb2NlZHVyZSYsIGNv
bnN0IFZhbHVlKiBvdGhlcikgY29uc3Q7CiAgICAgdmlydHVhbCBWYWx1ZSogY2hlY2tOZWdDb25z
dGFudChQcm9jZWR1cmUmKSBjb25zdDsKICAgICB2aXJ0dWFsIFZhbHVlKiBkaXZDb25zdGFudChQ
cm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OyAvLyBUaGlzIGNob29zZXMgQ2hp
bGxEaXYgc2VtYW50aWNzIGZvciBpbnRlZ2Vycy4KKyAgICB2aXJ0dWFsIFZhbHVlKiBtb2RDb25z
dGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OyAvLyBUaGlzIGNob29z
ZXMgQ2hpbGxNb2Qgc2VtYW50aWNzIGZvciBpbnRlZ2Vycy4KICAgICB2aXJ0dWFsIFZhbHVlKiBi
aXRBbmRDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OwogICAg
IHZpcnR1YWwgVmFsdWUqIGJpdE9yQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90
aGVyKSBjb25zdDsKICAgICB2aXJ0dWFsIFZhbHVlKiBiaXRYb3JDb25zdGFudChQcm9jZWR1cmUm
LCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNw
cAppbmRleCAwMGQ0ZTI1MWQ0YTc0NjAzNDJmOWIxYmRiNGI2YzYyODJkM2IxZDkzLi41YzIyOGQ4
OTE5MmVhMGM2NWUzNjEwNmE2NWZjYjIyZWYxYzdhODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
dGVzdGIzLmNwcApAQCAtMTAyNyw2ICsxMDI3LDE0NSBAQCB2b2lkIHRlc3REaXZJbW1zRmxvYXQo
ZmxvYXQgYSwgZmxvYXQgYikKICAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGlu
dDMyX3Q+KHByb2MpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAvIGIpKSk7CiB9CiAKK3ZvaWQg
dGVzdE1vZEFyZ0RvdWJsZShkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiB2YWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6
YXJndW1lbnRGUFIwKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBNb2QsIE9yaWdpbigpLCB2YWx1ZSwgdmFsdWUpKTsKKworICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgZm1vZChhLCBhKSkpOworfQor
Cit2b2lkIHRlc3RNb2RBcmdzRG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiB2YWx1ZUEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgVmFsdWUqIHZhbHVlQiA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6
YXJndW1lbnRGUFIxKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBNb2QsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQikpOworCisgICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEsIGIpLCBmbW9kKGEsIGIpKSk7
Cit9CisKK3ZvaWQgdGVzdE1vZEFyZ0ltbURvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZhbHVlKiB2YWx1
ZUIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIp
OworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE1vZCwg
T3JpZ2luKCksIHZhbHVlQSwgdmFsdWVCKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSksIGZtb2QoYSwgYikpKTsKK30KKwordm9pZCB0ZXN0
TW9kSW1tQXJnRG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiB2
YWx1ZUEgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IGEpOworICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTW9kLCBPcmlnaW4oKSwgdmFsdWVB
LCB2YWx1ZUIpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91Ymxl
Pihwcm9jLCBiKSwgZm1vZChhLCBiKSkpOworfQorCit2b2lkIHRlc3RNb2RJbW1zRG91YmxlKGRv
dWJsZSBhLCBkb3VibGUgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiB2YWx1ZUEgPSByb290LT5hcHBl
bmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgIFZhbHVlKiB2
YWx1ZUIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IGIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE1v
ZCwgT3JpZ2luKCksIHZhbHVlQSwgdmFsdWVCKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYyksIGZtb2QoYSwgYikpKTsKK30KKwordm9pZCB0ZXN0
TW9kQXJnRmxvYXQoZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUq
IHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTW9kLCBPcmlnaW4oKSwgZmxv
YXRWYWx1ZSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0
MzIpOworCisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHBy
b2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihzdGF0
aWNfY2FzdDxmbG9hdD4oZm1vZChhLCBhKSkpKSk7Cit9CisKK3ZvaWQgdGVzdE1vZEFyZ3NGbG9h
dChmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxv
YXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmln
aW4oKSwgYXJndW1lbnQyaW50MzIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIE1vZCwgT3JpZ2luKCksIGZsb2F0VmFsdWUxLCBmbG9hdFZhbHVlMik7
CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xW
YWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJf
dD4oYSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90Pihz
dGF0aWNfY2FzdDxmbG9hdD4oZm1vZChhLCBiKSkpKSk7Cit9CisKK3ZvaWQgdGVzdE1vZEFyZ0lt
bUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZh
bHVlKiBjb25zdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIE1vZCwgT3JpZ2luKCksIGZsb2F0VmFsdWUsIGNvbnN0VmFsdWUpOworICAgIFZhbHVl
KiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihmbW9kKGEsIGIpKSkpKTsKK30K
Kwordm9pZCB0ZXN0TW9kSW1tQXJnRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFs
dWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwg
YXJndW1lbnQzMik7CisgICAgVmFsdWUqIGNvbnN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29u
c3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTW9kLCBPcmlnaW4oKSwgY29uc3RWYWx1ZSwgZmxv
YXRWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAg
Q0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGZtb2QoYSwgYikpKSkpOworfQorCit2b2lkIHRlc3RNb2RJbW1zRmxvYXQoZmxvYXQgYSwgZmxv
YXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBjb25zdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSogY29uc3RWYWx1
ZTIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7
CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTW9kLCBP
cmlnaW4oKSwgY29uc3RWYWx1ZTEsIGNvbnN0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVz
dWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVu
PGludDMyX3Q+KHByb2MpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGZtb2QoYSwgYikpKSkpOworfQorCiB2b2lkIHRlc3REaXZBcmdGbG9hdFdpdGhVc2VsZXNzRG91
YmxlQ29udmVyc2lvbihmbG9hdCBhKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNjMwMCw2
ICs2NDM5LDE5MCBAQCB2b2lkIHRlc3RDaGlsbERpdjY0KGludDY0X3QgbnVtLCBpbnQ2NF90IGRl
biwgaW50NjRfdCByZXMpCiAgICAgfQogfQogCit2b2lkIHRlc3RNb2RBcmcoaW50NjRfdCB2YWx1
ZSkKK3sKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFs
dWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiByZXN1bHQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE1vZCwgT3JpZ2luKCksIGFyZ3VtZW50LCBhcmd1bWVu
dCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2Ms
IHZhbHVlKSk7Cit9CisKK3ZvaWQgdGVzdE1vZEFyZ3MoaW50NjRfdCBudW1lcmF0b3IsIGludDY0
X3QgZGVub21pbmF0b3IpCit7CisgICAgaWYgKCFkZW5vbWluYXRvcikKKyAgICAgICAgcmV0dXJu
OworICAgIGlmIChudW1lcmF0b3IgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWlu
KCkgJiYgZGVub21pbmF0b3IgPT0gLTEpCisgICAgICAgIHJldHVybjsKKworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBW
YWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmd1bWVudDIg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgTW9kLCBPcmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVudDIpOworICAgIHJv
b3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3Vs
dCk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIG51bWVyYXRvciwg
ZGVub21pbmF0b3IpID09IG51bWVyYXRvciAlIGRlbm9taW5hdG9yKTsKK30KKwordm9pZCB0ZXN0
TW9kSW1tcyhpbnQ2NF90IG51bWVyYXRvciwgaW50NjRfdCBkZW5vbWluYXRvcikKK3sKKyAgICBp
ZiAoIWRlbm9taW5hdG9yKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG51bWVyYXRvciA9PSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSAmJiBkZW5vbWluYXRvciA9PSAtMSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmd1bWVudDEgPSByb290LT5h
cHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbnVtZXJhdG9yKTsKKyAgICBW
YWx1ZSogYXJndW1lbnQyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGRlbm9taW5hdG9yKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBNb2QsIE9yaWdpbigpLCBhcmd1bWVudDEsIGFyZ3VtZW50Mik7CisgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVz
dWx0KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgbnVtZXJhdG9y
LCBkZW5vbWluYXRvcikgPT0gbnVtZXJhdG9yICUgZGVub21pbmF0b3IpOworfQorCit2b2lkIHRl
c3RNb2RBcmczMihpbnQzMl90IHZhbHVlKQoreworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJl
dHVybjsKKworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAg
ICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNb2QsIE9yaWdp
bigpLCBhcmd1bWVudCwgYXJndW1lbnQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyghY29tcGls
ZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkpOworfQorCit2b2lkIHRlc3RNb2RBcmdzMzIo
aW50MzJfdCBudW1lcmF0b3IsIGludDMyX3QgZGVub21pbmF0b3IpCit7CisgICAgaWYgKCFkZW5v
bWluYXRvcikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChudW1lcmF0b3IgPT0gc3RkOjpudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkgJiYgZGVub21pbmF0b3IgPT0gLTEpCisgICAgICAg
IHJldHVybjsKKworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
CisgICAgVmFsdWUqIGFyZ3VtZW50MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiByZXN1
bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE1vZCwgT3JpZ2luKCksIGFyZ3VtZW50
MSwgYXJndW1lbnQyKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQz
Ml90Pihwcm9jLCBudW1lcmF0b3IsIGRlbm9taW5hdG9yKSA9PSBudW1lcmF0b3IgJSBkZW5vbWlu
YXRvcik7Cit9CisKK3ZvaWQgdGVzdE1vZEltbXMzMihpbnQzMl90IG51bWVyYXRvciwgaW50MzJf
dCBkZW5vbWluYXRvcikKK3sKKyAgICBpZiAoIWRlbm9taW5hdG9yKQorICAgICAgICByZXR1cm47
CisgICAgaWYgKG51bWVyYXRvciA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4o
KSAmJiBkZW5vbWluYXRvciA9PSAtMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZh
bHVlKiBhcmd1bWVudDEgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgbnVtZXJhdG9yKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGRlbm9taW5hdG9yKTsKKyAgICBWYWx1ZSog
cmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNb2QsIE9yaWdpbigpLCBhcmd1
bWVudDEsIGFyZ3VtZW50Mik7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgbnVtZXJhdG9yLCBkZW5vbWluYXRvcikgPT0gbnVtZXJhdG9yICUgZGVu
b21pbmF0b3IpOworfQorCit2b2lkIHRlc3RDaGlsbE1vZEFyZyhpbnQ2NF90IHZhbHVlKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUq
IHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2hpbGxNb2QsIE9yaWdpbigp
LCBhcmd1bWVudCwgYXJndW1lbnQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyghY29tcGlsZUFu
ZFJ1bjxpbnQ2NF90Pihwcm9jLCB2YWx1ZSkpOworfQorCit2b2lkIHRlc3RDaGlsbE1vZEFyZ3Mo
aW50NjRfdCBudW1lcmF0b3IsIGludDY0X3QgZGVub21pbmF0b3IpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZh
bHVlKiBhcmd1bWVudDEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MiA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBDaGlsbE1vZCwgT3JpZ2luKCksIGFyZ3VtZW50MSwgYXJndW1lbnQyKTsKKyAg
ICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBy
ZXN1bHQpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBudW1lcmF0
b3IsIGRlbm9taW5hdG9yKSA9PSBjaGlsbE1vZChudW1lcmF0b3IsIGRlbm9taW5hdG9yKSk7Cit9
CisKK3ZvaWQgdGVzdENoaWxsTW9kSW1tcyhpbnQ2NF90IG51bWVyYXRvciwgaW50NjRfdCBkZW5v
bWluYXRvcikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFyZ3VtZW50MSA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBudW1lcmF0b3IpOworICAgIFZhbHVlKiBh
cmd1bWVudDIgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
ZGVub21pbmF0b3IpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIENoaWxsTW9kLCBPcmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVudDIpOworICAgIHJv
b3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3Vs
dCk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIG51bWVyYXRvciwg
ZGVub21pbmF0b3IpID09IGNoaWxsTW9kKG51bWVyYXRvciwgZGVub21pbmF0b3IpKTsKK30KKwor
dm9pZCB0ZXN0Q2hpbGxNb2RBcmczMihpbnQzMl90IHZhbHVlKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1
ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDaGlsbE1vZCwgT3JpZ2luKCksIGFyZ3VtZW50LCBhcmd1
bWVudCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludDMyX3Q+KHBy
b2MsIHZhbHVlKSk7Cit9CisKK3ZvaWQgdGVzdENoaWxsTW9kQXJnczMyKGludDMyX3QgbnVtZXJh
dG9yLCBpbnQzMl90IGRlbm9taW5hdG9yKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJndW1lbnQx
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkp
OworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENoaWxs
TW9kLCBPcmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVudDIpOworICAgIHJvb3QtPmFwcGVuZE5l
dzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBD
SEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIG51bWVyYXRvciwgZGVub21pbmF0b3Ip
ID09IGNoaWxsTW9kKG51bWVyYXRvciwgZGVub21pbmF0b3IpKTsKK30KKwordm9pZCB0ZXN0Q2hp
bGxNb2RJbW1zMzIoaW50MzJfdCBudW1lcmF0b3IsIGludDMyX3QgZGVub21pbmF0b3IpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKworICAgIFZhbHVlKiBhcmd1bWVudDEgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgbnVtZXJhdG9yKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGRlbm9taW5hdG9yKTsK
KyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDaGlsbE1v
ZCwgT3JpZ2luKCksIGFyZ3VtZW50MSwgYXJndW1lbnQyKTsKKyAgICByb290LT5hcHBlbmROZXc8
Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgQ0hF
Q0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBudW1lcmF0b3IsIGRlbm9taW5hdG9yKSA9
PSBjaGlsbE1vZChudW1lcmF0b3IsIGRlbm9taW5hdG9yKSk7Cit9CisKIHZvaWQgdGVzdFN3aXRj
aCh1bnNpZ25lZCBkZWdyZWUsIHVuc2lnbmVkIGdhcCA9IDEpCiB7CiAgICAgUHJvY2VkdXJlIHBy
b2M7CkBAIC03MDU5LDYgKzczODIsMTcgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQog
ICAgIFJVTl9CSU5BUlkodGVzdERpdkFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lv
biwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZmxvYXQ+KCkpOwogICAgIFJVTl9CSU5BUlkodGVzdERpdkFyZ3NGbG9hdFdpdGhFZmZlY3RmdWxE
b3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CiAKKyAgICBSVU5fVU5BUlkodGVzdE1vZEFyZ0RvdWJs
ZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0
TW9kQXJnc0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TW9kQXJnSW1tRG91
YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RNb2RJbW1BcmdEb3VibGUsIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+
KCkpOworICAgIFJVTl9CSU5BUlkodGVzdE1vZEltbXNEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJV
Tl9VTkFSWSh0ZXN0TW9kQXJnRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7
CisgICAgUlVOX0JJTkFSWSh0ZXN0TW9kQXJnc0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFS
WSh0ZXN0TW9kQXJnSW1tRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RNb2RJbW1B
cmdGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdE1vZEltbXNGbG9hdCwgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkp
OworCiAgICAgUlVOKHRlc3RTdWJBcmcoMjQpKTsKICAgICBSVU4odGVzdFN1YkFyZ3MoMSwgMSkp
OwogICAgIFJVTih0ZXN0U3ViQXJncygxLCAyKSk7CkBAIC03NjMzLDYgKzc5NjcsMTkgQEAgdm9p
ZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0Q2hpbGxEaXZUd2ljZSg0LCAw
LCA2LCAyLCAzKSk7CiAgICAgUlVOKHRlc3RDaGlsbERpdlR3aWNlKDQsIDIsIDYsIDAsIDIpKTsK
IAorICAgIFJVTl9VTkFSWSh0ZXN0TW9kQXJnLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9C
SU5BUlkodGVzdE1vZEFyZ3MsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKyAg
ICBSVU5fQklOQVJZKHRlc3RNb2RJbW1zLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMo
KSk7CisgICAgUlVOX1VOQVJZKHRlc3RNb2RBcmczMiwgaW50MzJPcGVyYW5kcygpKTsKKyAgICBS
VU5fQklOQVJZKHRlc3RNb2RBcmdzMzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygp
KTsKKyAgICBSVU5fQklOQVJZKHRlc3RNb2RJbW1zMzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJP
cGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdENoaWxsTW9kQXJnLCBpbnQ2NE9wZXJhbmRz
KCkpOworICAgIFJVTl9CSU5BUlkodGVzdENoaWxsTW9kQXJncywgaW50NjRPcGVyYW5kcygpLCBp
bnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdENoaWxsTW9kSW1tcywgaW50NjRP
cGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q2hpbGxNb2RB
cmczMiwgaW50MzJPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RDaGlsbE1vZEFyZ3Mz
MiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVz
dENoaWxsTW9kSW1tczMyLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisKICAg
ICBSVU4odGVzdFN3aXRjaCgwLCAxKSk7CiAgICAgUlVOKHRlc3RTd2l0Y2goMSwgMSkpOwogICAg
IFJVTih0ZXN0U3dpdGNoKDIsIDEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQjNPdXRwdXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRw
dXQuaAppbmRleCBkYzI3ZGFjMTU5MTRiOTA1ODZjOWUzYjRhNjU3ZTAyYTQyODM1MDJmLi5mZmYz
NmQyYzg1N2Q5ZmUyMDZlNzg5NjRjODNmZjM4NTdkOGI5NWM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExCM091dHB1dC5oCkBAIC0xMjgsNyArMTI4LDggQEAgcHVibGljOgogICAgIExW
YWx1ZSBtdWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBw
ZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6TXVsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQp
OyB9CiAgICAgTFZhbHVlIGRpdihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBt
X2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpEaXYsIG9yaWdpbigpLCBs
ZWZ0LCByaWdodCk7IH0KICAgICBMVmFsdWUgY2hpbGxEaXYoTFZhbHVlIGxlZnQsIExWYWx1ZSBy
aWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6
Q2hpbGxEaXYsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUgcmVtKExWYWx1
ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQorICAgIExWYWx1ZSBtb2QoTFZhbHVl
IGxlZnQsIExWYWx1ZSByaWdodCkgeyBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3By
b2MsIEIzOjpNb2QsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KKyAgICBMVmFsdWUgY2hpbGxN
b2QoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZh
bHVlPihtX3Byb2MsIEIzOjpDaGlsbE1vZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQogICAg
IExWYWx1ZSBuZWcoTFZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgTFZhbHVlIHplcm8gPSBt
X2Jsb2NrLT5hcHBlbmRJbnRDb25zdGFudChtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZS0+dHlwZSgp
LCAwKTsKQEAgLTEzOSw3ICsxNDAsNyBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIGRvdWJsZVN1YihM
VmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6
OlZhbHVlPihtX3Byb2MsIEIzOjpTdWIsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KICAgICBM
VmFsdWUgZG91YmxlTXVsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxv
Y2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Ok11bCwgb3JpZ2luKCksIGxlZnQs
IHJpZ2h0KTsgfQogICAgIExWYWx1ZSBkb3VibGVEaXYoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdo
dCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RGl2
LCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIGRvdWJsZVJlbShMVmFsdWUg
bGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBjYWxsV2l0aG91dFNpZGVFZmZlY3RzKEIzOjpE
b3VibGUsIGZtb2QsIGxlZnQsIHJpZ2h0KTsgfQorICAgIExWYWx1ZSBkb3VibGVNb2QoTFZhbHVl
IGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1
ZT4obV9wcm9jLCBCMzo6TW9kLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9CiAgICAgTFZhbHVl
IGRvdWJsZU5lZyhMVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gc3ViKGRvdWJs
ZVplcm8sIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0xMVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvTExWTS5jcHAKaW5kZXggYWNlMTBiMTgxYmU2ZjYzN2VmZWZjZWQzN2ZjMzkzYTNjZTQ0YTNm
MS4uMDQ1OTYxMjg4ZmUyZGY0YTQ0ZmE2YjQ5NzViNDE3N2NlY2M3MmIwNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKQEAgLTIwMjMsODkg
KzIwMjMsNTMgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAgICAg
ICAgTFZhbHVlIG51bWVyYXRvciA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgTFZhbHVlIGRlbm9taW5hdG9yID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIHVuc2FmZURlbm9taW5hdG9yID0g
RlRMX05FV19CTE9DSyhtX291dCwgKCJBcml0aE1vZCB1bnNhZmUgZGVub21pbmF0b3IiKSk7Ci0g
ICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVXX0JMT0NLKG1fb3V0
LCAoIkFyaXRoTW9kIGNvbnRpbnVhdGlvbiIpKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGRv
bmUgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkFyaXRoTW9kIGRvbmUiKSk7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaywgMz4gcmVzdWx0czsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIGFkanVzdGVkRGVub21pbmF0b3IgPSBtX291dC5h
ZGQoZGVub21pbmF0b3IsIG1fb3V0LmludDMyT25lKTsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlKGFkanVzdGVkRGVu
b21pbmF0b3IsIG1fb3V0LmludDMyT25lKSwKLSAgICAgICAgICAgICAgICB1c3VhbGx5KGNvbnRp
bnVhdGlvbiksIHJhcmVseSh1bnNhZmVEZW5vbWluYXRvcikpOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHVuc2FmZURlbm9t
aW5hdG9yLCBjb250aW51YXRpb24pOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUg
bmVnMlRvVGhlMzEgPSBtX291dC5jb25zdEludDMyKC0yMTQ3NDgzNjQ3LTEpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICAvLyBGSVhNRTogLTJeMzEgLyAtMSB3aWxsIGFjdHVhbGx5IHlpZWxk
IG5lZ2F0aXZlIHplcm8sIHNvIHdlIGNvdWxkIGhhdmUgYQotICAgICAgICAgICAgLy8gc2VwYXJh
dGUgY2FzZSBmb3IgdGhhdC4gQnV0IGl0IHByb2JhYmx5IGRvZXNuJ3QgbWF0dGVyIHNvIG11Y2gu
CisKKyAgICAgICAgICAgIExWYWx1ZSByZW1haW5kZXI7CiAgICAgICAgICAgICBpZiAoc2hvdWxk
Q2hlY2tPdmVyZmxvdyhtX25vZGUtPmFyaXRoTW9kZSgpKSkgeworICAgICAgICAgICAgICAgIExC
YXNpY0Jsb2NrIHVuc2FmZURlbm9taW5hdG9yID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJBcml0
aE1vZCB1bnNhZmUgZGVub21pbmF0b3IiKSk7CisgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sg
Y29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJBcml0aE1vZCBjb250aW51YXRp
b24iKSk7CisKKyAgICAgICAgICAgICAgICBMVmFsdWUgYWRqdXN0ZWREZW5vbWluYXRvciA9IG1f
b3V0LmFkZChkZW5vbWluYXRvciwgbV9vdXQuaW50MzJPbmUpOworICAgICAgICAgICAgICAgIG1f
b3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWJvdmUoYWRqdXN0ZWREZW5v
bWluYXRvciwgbV9vdXQuaW50MzJPbmUpLAorICAgICAgICAgICAgICAgICAgICB1c3VhbGx5KGNv
bnRpbnVhdGlvbiksIHJhcmVseSh1bnNhZmVEZW5vbWluYXRvcikpOworCisgICAgICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyh1bnNhZmVEZW5vbWluYXRv
ciwgY29udGludWF0aW9uKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgbmVnMlRvVGhlMzEgPSBt
X291dC5jb25zdEludDMyKC0yMTQ3NDgzNjQ3LTEpOwogICAgICAgICAgICAgICAgIExWYWx1ZSBj
b25kID0gbV9vdXQuYml0T3IobV9vdXQuaXNaZXJvMzIoZGVub21pbmF0b3IpLCBtX291dC5lcXVh
bChudW1lcmF0b3IsIG5lZzJUb1RoZTMxKSk7CiAgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92
ZXJmbG93LCBub1ZhbHVlKCksIDAsIGNvbmQpOwogICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAo
Y29udGludWF0aW9uKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8g
VGhpcyBpcyB0aGUgY2FzZSB3aGVyZSB3ZSBjb252ZXJ0IHRoZSByZXN1bHQgdG8gYW4gaW50IGFm
dGVyIHdlJ3JlIGRvbmUuIFNvLAotICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBkZW5vbWluYXRv
ciBpcyB6ZXJvLCB0aGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHJlc3VsdCBzaG91bGQgYmUgemVy
by4KLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZGVub21pbmF0b3IgaXMgbm90IHplcm8gKGku
ZS4gaXQncyAtMSBiZWNhdXNlIHdlJ3JlIGd1YXJkZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAg
Ly8gY2hlY2sgYWJvdmUpIGFuZCB0aGUgbnVtZXJhdG9yIGlzIC0yXjMxIHRoZW4gdGhlIHJlc3Vs
dCBzaG91bGQgYmUgLTJeMzEuCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgTEJh
c2ljQmxvY2sgbW9kQnlaZXJvID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJBcml0aE1vZCBtb2R1
bG8gYnkgemVybyIpKTsKLSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RNb2RCeVplcm8g
PSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkFyaXRoTW9kIG5vdCBtb2R1bG8gYnkgemVybyIpKTsK
LSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBuZWcyVG9UaGUzMUJ5TmVnMSA9IEZUTF9ORVdf
QkxPQ0sobV9vdXQsICgiQXJpdGhNb2QgLTJeMzEvLTEiKSk7Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgICAgICBtX291dC5p
c1plcm8zMihkZW5vbWluYXRvciksIHJhcmVseShtb2RCeVplcm8pLCB1c3VhbGx5KG5vdE1vZEJ5
WmVybykpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KG1vZEJ5WmVybywgbm90TW9kQnlaZXJvKTsKLSAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVu
ZChtX291dC5hbmNob3IobV9vdXQuaW50MzJaZXJvKSk7Ci0gICAgICAgICAgICAgICAgbV9vdXQu
anVtcChkb25lKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhub3RNb2RCeVplcm8sIG5lZzJUb1RoZTMxQnlOZWcxKTsKLSAgICAgICAgICAgICAgICBt
X291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKG51bWVyYXRvciwg
bmVnMlRvVGhlMzEpLAotICAgICAgICAgICAgICAgICAgICByYXJlbHkobmVnMlRvVGhlMzFCeU5l
ZzEpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbikpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKG5lZzJUb1RoZTMxQnlOZWcxLCBjb250aW51YXRpb24pOwot
ICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihtX291dC5pbnQzMlpl
cm8pKTsKLSAgICAgICAgICAgICAgICBtX291dC5qdW1wKGRvbmUpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGRv
bmUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVtYWluZGVyID0gbV9vdXQu
cmVtKG51bWVyYXRvciwgZGVub21pbmF0b3IpOwotICAgICAgICAgICAgCisKKyAgICAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQubW9kKG51bWVyYXRvciwgZGVub21pbmF0b3IpOwor
ICAgICAgICAgICAgICAgIHJlbWFpbmRlciA9IHJlc3VsdDsKKyAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgIHJlbWFpbmRlciA9IG1fb3V0LmNoaWxsTW9kKG51bWVyYXRvciwgZGVu
b21pbmF0b3IpOworCiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obV9u
b2RlLT5hcml0aE1vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBuZWdhdGl2
ZU51bWVyYXRvciA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQXJpdGhNb2QgbmVnYXRpdmUgbnVt
ZXJhdG9yIikpOwogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG51bWVyYXRvckNvbnRpbnVh
dGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQXJpdGhNb2QgbnVtZXJhdG9yIGNvbnRpbnVh
dGlvbiIpKTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5j
aCgKICAgICAgICAgICAgICAgICAgICAgbV9vdXQubGVzc1RoYW4obnVtZXJhdG9yLCBtX291dC5p
bnQzMlplcm8pLAogICAgICAgICAgICAgICAgICAgICB1bnN1cmUobmVnYXRpdmVOdW1lcmF0b3Ip
LCB1bnN1cmUobnVtZXJhdG9yQ29udGludWF0aW9uKSk7Ci0gICAgICAgICAgICAgICAgCisKICAg
ICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbm5lckxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8o
bmVnYXRpdmVOdW1lcmF0b3IsIG51bWVyYXRvckNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAgICAg
ICAgCisKICAgICAgICAgICAgICAgICBzcGVjdWxhdGUoTmVnYXRpdmVaZXJvLCBub1ZhbHVlKCks
IDAsIG1fb3V0LmlzWmVybzMyKHJlbWFpbmRlcikpOwotICAgICAgICAgICAgICAgIAorCiAgICAg
ICAgICAgICAgICAgbV9vdXQuanVtcChudW1lcmF0b3JDb250aW51YXRpb24pOwotICAgICAgICAg
ICAgICAgIAorCiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obnVtZXJhdG9yQ29udGlu
dWF0aW9uLCBpbm5lckxhc3ROZXh0KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKHJlbWFpbmRlcikpOwotICAgICAg
ICAgICAgbV9vdXQuanVtcChkb25lKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oZG9uZSwgbGFzdE5leHQpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBzZXRJ
bnQzMihtX291dC5waGkobV9vdXQuaW50MzIsIHJlc3VsdHMpKTsKKworICAgICAgICAgICAgc2V0
SW50MzIocmVtYWluZGVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKICAgICAgICAgICAgIHNldERvdWJs
ZSgKLSAgICAgICAgICAgICAgICBtX291dC5kb3VibGVSZW0obG93RG91YmxlKG1fbm9kZS0+Y2hp
bGQxKCkpLCBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIoKSkpKTsKKyAgICAgICAgICAgICAgICBt
X291dC5kb3VibGVNb2QobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dEb3VibGUobV9u
b2RlLT5jaGlsZDIoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmNwcAppbmRleCBiOTIxMDI2
NWFhZDZiODBiMGU5NDIyOWJiOWEyMDI1NGI5ZGFiYTY5Li5hYTAyNWFlM2NmZmViNDdkN2IxZmI0
MjFjMzNhMTRkM2Q2OWM0N2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE91dHB1dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQu
Y3BwCkBAIC0xMTYsNiArMTE2LDQ3IEBAIExWYWx1ZSBPdXRwdXQ6OmNoaWxsRGl2KExWYWx1ZSBu
dW1lcmF0b3IsIExWYWx1ZSBkZW5vbWluYXRvcikKICAgICByZXR1cm4gcGhpKGludDMyLCByZXN1
bHRzKTsKIH0KIAorTFZhbHVlIE91dHB1dDo6Y2hpbGxNb2QoTFZhbHVlIG51bWVyYXRvciwgTFZh
bHVlIGRlbm9taW5hdG9yKQoreworICAgIExCYXNpY0Jsb2NrIHVuc2FmZURlbm9taW5hdG9yID0g
RlRMX05FV19CTE9DSygqdGhpcywgKCJDaGlsbE1vZCB1bnNhZmUgZGVub21pbmF0b3IiKSk7Cisg
ICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSygqdGhpcywgKCJDaGls
bE1vZCBjb250aW51YXRpb24iKSk7CisgICAgTEJhc2ljQmxvY2sgZG9uZSA9IEZUTF9ORVdfQkxP
Q0soKnRoaXMsICgiQ2hpbGxNb2QgZG9uZSIpKTsKKyAgICBMQmFzaWNCbG9jayBkaXZCeVplcm8g
PSBGVExfTkVXX0JMT0NLKCp0aGlzLCAoIkNoaWxsTW9kIGRpdmlkZSBieSB6ZXJvIikpOworICAg
IExCYXNpY0Jsb2NrIG5vdERpdkJ5WmVybyA9IEZUTF9ORVdfQkxPQ0soKnRoaXMsICgiQ2hpbGxN
b2Qgbm90IGRpdmlkZSBieSB6ZXJvIikpOworICAgIExCYXNpY0Jsb2NrIG5lZzJUb1RoZTMxQnlO
ZWcxID0gRlRMX05FV19CTE9DSygqdGhpcywgKCJDaGlsbE1vZCAtMl4zMS8tMSIpKTsKKworICAg
IExWYWx1ZSBhZGp1c3RlZERlbm9taW5hdG9yID0gYWRkKGRlbm9taW5hdG9yLCBpbnQzMk9uZSk7
CisgICAgYnJhbmNoKAorICAgICAgICBhYm92ZShhZGp1c3RlZERlbm9taW5hdG9yLCBpbnQzMk9u
ZSksCisgICAgICAgIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5KHVuc2FmZURlbm9taW5h
dG9yKSk7CisKKyAgICBWZWN0b3I8VmFsdWVGcm9tQmxvY2ssIDM+IHJlc3VsdHM7CisgICAgTEJh
c2ljQmxvY2sgbGFzdE5leHQgPSBhcHBlbmRUbyh1bnNhZmVEZW5vbWluYXRvciwgY29udGludWF0
aW9uKTsKKworICAgIExWYWx1ZSBuZWcyVG9UaGUzMSA9IGNvbnN0SW50MzIoLTIxNDc0ODM2NDct
MSk7CisgICAgYnJhbmNoKGlzWmVybzMyKGRlbm9taW5hdG9yKSwgcmFyZWx5KGRpdkJ5WmVybyks
IHVzdWFsbHkobm90RGl2QnlaZXJvKSk7CisKKyAgICBhcHBlbmRUbyhkaXZCeVplcm8sIG5vdERp
dkJ5WmVybyk7CisgICAgcmVzdWx0cy5hcHBlbmQoYW5jaG9yKGludDMyWmVybykpOworICAgIGp1
bXAoZG9uZSk7CisKKyAgICBhcHBlbmRUbyhub3REaXZCeVplcm8sIG5lZzJUb1RoZTMxQnlOZWcx
KTsKKyAgICBicmFuY2goZXF1YWwobnVtZXJhdG9yLCBuZWcyVG9UaGUzMSksCisgICAgICAgIHJh
cmVseShuZWcyVG9UaGUzMUJ5TmVnMSksIHVzdWFsbHkoY29udGludWF0aW9uKSk7CisKKyAgICBh
cHBlbmRUbyhuZWcyVG9UaGUzMUJ5TmVnMSwgY29udGludWF0aW9uKTsKKyAgICByZXN1bHRzLmFw
cGVuZChhbmNob3IoaW50MzJaZXJvKSk7CisgICAganVtcChkb25lKTsKKworICAgIGFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgZG9uZSk7CisgICAgTFZhbHVlIHJlc3VsdCA9IG1vZChudW1lcmF0b3Is
IGRlbm9taW5hdG9yKTsKKyAgICByZXN1bHRzLmFwcGVuZChhbmNob3IocmVzdWx0KSk7CisgICAg
anVtcChkb25lKTsKKworICAgIGFwcGVuZFRvKGRvbmUsIGxhc3ROZXh0KTsKKyAgICByZXR1cm4g
cGhpKGludDMyLCByZXN1bHRzKTsKK30KKwogTFZhbHVlIE91dHB1dDo6c2Vuc2libGVEb3VibGVU
b0ludChMVmFsdWUgdmFsdWUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNYODYoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAppbmRleCBiZDU5YWI2YzE3NTdiY2QxMTI1YzQz
YWE2N2YzM2ExZTczNWRiMmJmLi40NDgxODliNDEyODk1MmJmZWQ0Y2FhNmYyMTVkMTE3Nzk1ZWZh
YTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKQEAgLTEyNiwxNCArMTI2
LDE1IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgbXVsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQp
IHsgcmV0dXJuIGJ1aWxkTXVsKG1fYnVpbGRlciwgbGVmdCwgcmlnaHQpOyB9CiAgICAgTFZhbHVl
IGRpdihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWlsZERpdihtX2J1aWxk
ZXIsIGxlZnQsIHJpZ2h0KTsgfQogICAgIExWYWx1ZSBjaGlsbERpdihMVmFsdWUgbGVmdCwgTFZh
bHVlIHJpZ2h0KTsKLSAgICBMVmFsdWUgcmVtKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsg
cmV0dXJuIGJ1aWxkUmVtKG1fYnVpbGRlciwgbGVmdCwgcmlnaHQpOyB9CisgICAgTFZhbHVlIG1v
ZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWlsZFJlbShtX2J1aWxkZXIs
IGxlZnQsIHJpZ2h0KTsgfQorICAgIExWYWx1ZSBjaGlsbE1vZChMVmFsdWUgbGVmdCwgTFZhbHVl
IHJpZ2h0KTsKICAgICBMVmFsdWUgbmVnKExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gYnVpbGROZWco
bV9idWlsZGVyLCB2YWx1ZSk7IH0KIAogICAgIExWYWx1ZSBkb3VibGVBZGQoTFZhbHVlIGxlZnQs
IExWYWx1ZSByaWdodCkgeyByZXR1cm4gYnVpbGRGQWRkKG1fYnVpbGRlciwgbGVmdCwgcmlnaHQp
OyB9CiAgICAgTFZhbHVlIGRvdWJsZVN1YihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJl
dHVybiBidWlsZEZTdWIobV9idWlsZGVyLCBsZWZ0LCByaWdodCk7IH0KICAgICBMVmFsdWUgZG91
YmxlTXVsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGJ1aWxkRk11bChtX2J1
aWxkZXIsIGxlZnQsIHJpZ2h0KTsgfQogICAgIExWYWx1ZSBkb3VibGVEaXYoTFZhbHVlIGxlZnQs
IExWYWx1ZSByaWdodCkgeyByZXR1cm4gYnVpbGRGRGl2KG1fYnVpbGRlciwgbGVmdCwgcmlnaHQp
OyB9Ci0gICAgTFZhbHVlIGRvdWJsZVJlbShMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJl
dHVybiBidWlsZEZSZW0obV9idWlsZGVyLCBsZWZ0LCByaWdodCk7IH0KKyAgICBMVmFsdWUgZG91
YmxlTW9kKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGJ1aWxkRlJlbShtX2J1
aWxkZXIsIGxlZnQsIHJpZ2h0KTsgfQogICAgIExWYWx1ZSBkb3VibGVOZWcoTFZhbHVlIHZhbHVl
KSB7IHJldHVybiBidWlsZEZOZWcobV9idWlsZGVyLCB2YWx1ZSk7IH0KIAogICAgIExWYWx1ZSBi
aXRBbmQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gYnVpbGRBbmQobV9idWls
ZGVyLCBsZWZ0LCByaWdodCk7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>