<?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>233275</bug_id>
          
          <creation_ts>2021-11-17 12:36:08 -0800</creation_ts>
          <short_desc>[JSC] Add branchTest16 operation</short_desc>
          <delta_ts>2021-11-18 12:05:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>233274</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1816066</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-11-17 12:36:08 -0800</bug_when>
    <thetext>For https://bugs.webkit.org/show_bug.cgi?id=233274, we need a branchTest16 to compare a raw OptionSet&lt;uint16_t&gt; value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816077</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-11-17 13:02:02 -0800</bug_when>
    <thetext>Even if we had no plans to switch to OptionSet, we need branchTest16 to check a bit in a uint16_t, rather than relying on the accident that branchTest32 happens to work for this on little-endian platforms.

I’m not sure that one patch needs to block the other. OptionSet would be no better or worse in this respect. But I agree we should do both things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816089</commentid>
    <comment_count>2</comment_count>
      <attachid>444563</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-17 13:29:55 -0800</bug_when>
    <thetext>Created attachment 444563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816096</commentid>
    <comment_count>3</comment_count>
      <attachid>444566</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-17 13:49:30 -0800</bug_when>
    <thetext>Created attachment 444566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816102</commentid>
    <comment_count>4</comment_count>
      <attachid>444569</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-17 14:03:57 -0800</bug_when>
    <thetext>Created attachment 444569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816203</commentid>
    <comment_count>5</comment_count>
      <attachid>444602</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-17 16:38:39 -0800</bug_when>
    <thetext>Created attachment 444602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816217</commentid>
    <comment_count>6</comment_count>
      <attachid>444608</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-17 16:50:46 -0800</bug_when>
    <thetext>Created attachment 444608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816233</commentid>
    <comment_count>7</comment_count>
      <attachid>444614</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-17 17:17:14 -0800</bug_when>
    <thetext>Created attachment 444614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816545</commentid>
    <comment_count>8</comment_count>
      <attachid>444614</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-18 11:56:06 -0800</bug_when>
    <thetext>Comment on attachment 444614
Patch

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

r=me with comments.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1800
&gt; +        // use addressTempRegister incase the branchTest16 we call uses dataTempRegister. :-/

/incase/in case/ and /branchTest16/branchTest32/

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1808
&gt; +        // use addressTempRegister incase the branchTest16 we call uses dataTempRegister. :-/

Ditto

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1816
&gt; +        // use addressTempRegister incase the branchTest16 we call uses dataTempRegister. :-/

Ditto

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:2102
&gt; +        MacroAssemblerHelpers::load16OnCondition(*this, cond, address, dataTempRegister);
&gt; +        return branchTest32(cond, dataTempRegister, mask16);

Should these be using addrTempRegister also?  Ditto below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816547</commentid>
    <comment_count>9</comment_count>
      <attachid>444614</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-18 12:03:48 -0800</bug_when>
    <thetext>Comment on attachment 444614
Patch

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

Thank you

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1800
&gt;&gt; +        // use addressTempRegister incase the branchTest16 we call uses dataTempRegister. :-/
&gt; 
&gt; /incase/in case/ and /branchTest16/branchTest32/

Fixed.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1808
&gt;&gt; +        // use addressTempRegister incase the branchTest16 we call uses dataTempRegister. :-/
&gt; 
&gt; Ditto

Fixed.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1816
&gt;&gt; +        // use addressTempRegister incase the branchTest16 we call uses dataTempRegister. :-/
&gt; 
&gt; Ditto

Fixed.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:2102
&gt;&gt; +        return branchTest32(cond, dataTempRegister, mask16);
&gt; 
&gt; Should these be using addrTempRegister also?  Ditto below.

MIPS is not using dataTempRegister in branchTest32 implementation so we can use it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816548</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-18 12:04:59 -0800</bug_when>
    <thetext>Committed r286020 (244409@main): &lt;https://commits.webkit.org/244409@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816549</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-18 12:05:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/85562051&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444563</attachid>
            <date>2021-11-17 13:29:55 -0800</date>
            <delta_ts>2021-11-17 13:52:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233275-20211117132954.patch</filename>
            <type>text/plain</type>
            <size>15623</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1OTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MWU4ZjJhMTY2MGE0NDU5M2E2Njk0Y2JkNjk0MjU5YjY2MDk0ZjUzLi5mZjY5NmFmN2I5MmNiNjE2
MWI3ZGFlYzQxYzc2YWI2MjMwNmE3MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMS0xMS0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBicmFuY2hUZXN0MTYgb3BlcmF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMyNzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoVGVzdDE2KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hUZXN0MTYpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
djc6OmJyYW5jaFRlc3QxNik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVySGVs
cGVycy5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2sxNk9uQ29u
ZGl0aW9uKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkMTZPbkNv
bmRpdGlvbik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om1hc2sxNk9uVGVzdCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoVGVzdDE2KToKKyAgICAgICAgKiBhc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246OmJyYW5jaFRlc3QxNik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpicmFu
Y2hUZXN0MTYpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjp0ZXN0d19pbSk6CisKIDIwMjEtMTEtMTUgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBVc2Ugb3BlcmF0aW9uIHBh
dGggd2hlbiBQdXRCeVZhbCBjaGlsZDEgaXMgbm90IHNwZWN1bGF0ZWQgYXMgYSBDZWxsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXgg
NDEzMjMwMmY4YTg2MDE5NGEyZDg4ZDg3ZjhhZjA4ZjY2ZTEyZTgxMS4uYTVhNjUzYTFiMTk3NGZj
NDQzYWYxM2RmOGMzNDM2YmU5ZGUzZDU0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaApAQCAtODgwLDYgKzg4MCwxMiBAQCBjbGFzcyBN
YWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckJhc2UgewogICAgICAgICByZXR1
cm4gTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5vZmZzZXQpLCBtYXNrKTsKICAgICB9CiAKKyAgICB1c2luZyBNYWNyb0Fz
c2VtYmxlckJhc2U6OmJyYW5jaFRlc3QxNjsKKyAgICBKdW1wIGJyYW5jaFRlc3QxNihSZXN1bHRD
b25kaXRpb24gY29uZCwgRXh0ZW5kZWRBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNr
ID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxl
ckJhc2U6OmJyYW5jaFRlc3QxNihjb25kLCBBZGRyZXNzKGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5v
ZmZzZXQpLCBtYXNrKTsKKyAgICB9CisKICNlbHNlIC8vICFDUFUoQUREUkVTUzY0KQogCiAgICAg
dm9pZCBhZGRQdHIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5k
ZXggODU3NDA1NWM5YjFlZmJiYmVlZDAwMWUwZWUwOWNhZTVhYTEwODdkYS4uOThkMzFkZmY3NWE1
MzkxYTJmMTVhODg2OTAyYzc5MzQ1ZDljYTkwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTM1NDUsNiArMzU0
NSw0MCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwg
ZGF0YVRlbXBSZWdpc3RlciwgbWFzazgpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoVGVzdDE2
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNr
ID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrMTYg
PSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2sxNk9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBt
YXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkMTZPbkNvbmRpdGlvbigq
dGhpcywgY29uZCwgYWRkcmVzcywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lz
dGVyLCBtYXNrMTYpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJlc3VsdENvbmRp
dGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBU
cnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2sxNiA9IE1h
Y3JvQXNzZW1ibGVySGVscGVyczo6bWFzazE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2sp
OworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQxNk9uQ29uZGl0aW9uKCp0aGlz
LCBjb25kLCBhZGRyZXNzLm1fcHRyLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZh
bGlkYXRlKCkpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVn
aXN0ZXIsIG1hc2sxNik7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hUZXN0MTYoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIEV4dGVuZGVkQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9
IFRydXN0ZWRJbW0zMigtMSkpCisgICAgeworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2ID0g
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFz
ayk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihh
ZGRyZXNzLm9mZnNldCkpLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRl
KCkpOworCisgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmlzVW5zaWduZWQ8TWFj
cm9Bc3NlbWJsZXJBUk02ND4oY29uZCkpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHJoKGRh
dGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcnNoPDMyPihkYXRhVGVtcFJlZ2lzdGVy
LCBhZGRyZXNzLmJhc2UsIGRhdGFUZW1wUmVnaXN0ZXIpOworCisgICAgICAgIHJldHVybiBicmFu
Y2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazE2KTsKKyAgICB9CisKKyAgICBK
dW1wIGJyYW5jaFRlc3QxNihSZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3Ms
IFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIFRy
dXN0ZWRJbW0zMiBtYXNrMTYgPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2sxNk9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjps
b2FkMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZ2V0Q2FjaGVkRGF0YVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihj
b25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrMTYpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNo
MzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUlu
ZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIHJldHVybiBicmFu
Y2gzMihjb25kLCBsZWZ0LCByaWdodCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IGY2MTVhNTBjZWU5NWYwZThm
YzQwNzE0OWMyNDEwNDlmN2IxNmI2YWEuLjM0OWU3Y2VlNjZhMzc0NTlkYTQ5Y2U0YWU4MWQ5NDBh
ZmU4ZWMwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xNzk1LDYgKzE3OTUsMzEgQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4g
ewogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIs
IG1hc2s4KTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaFRlc3QxNihSZXN1bHRDb25kaXRpb24g
Y29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMy
KC0xKSkKKyAgICB7CisgICAgICAgIC8vIHVzZSBhZGRyZXNzVGVtcFJlZ2lzdGVyIGluY2FzZSB0
aGUgYnJhbmNoVGVzdDE2IHdlIGNhbGwgdXNlcyBkYXRhVGVtcFJlZ2lzdGVyLiA6LS8KKyAgICAg
ICAgVHJ1c3RlZEltbTMyIG1hc2sxNiA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazE2T25D
b25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBl
cnM6OmxvYWQxNk9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyLCBtYXNrMTYpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJlc3VsdENv
bmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3Rl
ZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIC8vIHVzZSBhZGRyZXNzVGVtcFJlZ2lzdGVyIGlu
Y2FzZSB0aGUgYnJhbmNoVGVzdDE2IHdlIGNhbGwgdXNlcyBkYXRhVGVtcFJlZ2lzdGVyLiA6LS8K
KyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2sxNiA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFz
azE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxl
ckhlbHBlcnM6OmxvYWQxNk9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyLCBtYXNrMTYpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJl
c3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMy
IG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgLy8gdXNlIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIgaW5jYXNlIHRoZSBicmFuY2hUZXN0MTYgd2UgY2FsbCB1c2VzIGRhdGFUZW1w
UmVnaXN0ZXIuIDotLworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2ID0gTWFjcm9Bc3NlbWJs
ZXJIZWxwZXJzOjptYXNrMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7
CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDE2T25Db25kaXRpb24oKnRoaXMs
IGNvbmQsIEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIp
OworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIs
IG1hc2sxNik7CisgICAgfQorCiAgICAgdm9pZCBmYXJKdW1wKFJlZ2lzdGVySUQgdGFyZ2V0LCBQ
dHJUYWcpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5ieCh0YXJnZXQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckhlbHBlcnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
LmgKaW5kZXggNTQ0ZjE5ODg0MjMxNWI5Y2RjMDNiZjQxY2Y5YzMzMTAzM2RhZDgwMC4uOWYwNjYx
OGRmNzIzZTAxNTg0NjhiODdlZmU3ODcyMmE2OTk1NjE3YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckhlbHBlcnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVySGVscGVycy5oCkBAIC0x
MjYsNiArMTI2LDMwIEBAIGlubGluZSB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0
ZWRJbW0zMiBtYXNrOE9uQ29uZGl0aW9uKE1hY3JvQXNzZW1ibGVyCiAgICAgcmV0dXJuIHR5cGVu
YW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDhfdD4o
dmFsdWUubV92YWx1ZSkpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5
cGU+CitpbmxpbmUgdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIgbWFz
azE2T25Db25kaXRpb24oTWFjcm9Bc3NlbWJsZXJUeXBlJiwgdHlwZW5hbWUgTWFjcm9Bc3NlbWJs
ZXJUeXBlOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVy
VHlwZTo6VHJ1c3RlZEltbTMyIHZhbHVlKQoreworICAgIGlmIChpc1Vuc2lnbmVkPE1hY3JvQXNz
ZW1ibGVyVHlwZT4oY29uZCkpCisgICAgICAgIHJldHVybiB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxl
clR5cGU6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50MTZfdD4odmFsdWUubV92YWx1ZSkp
OworICAgIHJldHVybiB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMihz
dGF0aWNfY2FzdDxpbnQxNl90Pih2YWx1ZS5tX3ZhbHVlKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIE1hY3JvQXNzZW1ibGVyVHlwZT4KK2lubGluZSB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5
cGU6OlRydXN0ZWRJbW0zMiBtYXNrMTZPbkNvbmRpdGlvbihNYWNyb0Fzc2VtYmxlclR5cGUmLCB0
eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlJlc3VsdENvbmRpdGlvbiBjb25kLCB0eXBlbmFt
ZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMiB2YWx1ZSkKK3sKKyAgICAvLyBJZiBj
b25kaXRpb24gaXMgWmVybyBvciBOb25aZXJvLCB1cHBlciBiaXRzIGFyZSB1bnJlbGF0ZWQuCisg
ICAgLy8gU2luY2UgYnJhbmNoVGVzdDMyIGhhbmRsZXMgLTEgaW4gYW4gb3B0aW1pemVkIG1hbm5l
ciwgd2Uga2VlcCAtMSBhcyBpcyBpbnN0ZWFkIG9mIGNvbnZlcnRpbmcgaXQgdG8gMHhmZmZmLgor
ICAgIGlmIChjb25kID09IE1hY3JvQXNzZW1ibGVyVHlwZTo6WmVybyB8fCBjb25kID09IE1hY3Jv
QXNzZW1ibGVyVHlwZTo6Tm9uWmVybykgeworICAgICAgICBpZiAodmFsdWUubV92YWx1ZSA9PSAt
MSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisgICAgaWYgKGlzVW5zaWduZWQ8
TWFjcm9Bc3NlbWJsZXJUeXBlPihjb25kKSkKKyAgICAgICAgcmV0dXJuIHR5cGVuYW1lIE1hY3Jv
QXNzZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQxNl90Pih2YWx1ZS5t
X3ZhbHVlKSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShjb25kICE9IE1hY3JvQXNzZW1ibGVy
VHlwZTo6T3ZlcmZsb3csICJPdmVyZmxvdyBpcyBub3QgdXNlZCBmb3IgMTZiaXQgdGVzdCBvcGVy
YXRpb25zLiIpOworICAgIEFTU0VSVChpc1NpZ25lZDxNYWNyb0Fzc2VtYmxlclR5cGU+KGNvbmQp
KTsKKyAgICByZXR1cm4gdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIo
c3RhdGljX2Nhc3Q8aW50MTZfdD4odmFsdWUubV92YWx1ZSkpOworfQorCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBNYWNyb0Fzc2VtYmxlclR5cGUsIHR5cGVuYW1lIENvbmRpdGlvbiwgdHlwZW5hbWUgLi4u
QXJncz4KIHZvaWQgbG9hZDhPbkNvbmRpdGlvbihNYWNyb0Fzc2VtYmxlclR5cGUmIGppdCwgQ29u
ZGl0aW9uIGNvbmQsIEFyZ3MuLi4gYXJncykKIHsKQEAgLTEzNCw0ICsxNTgsMTIgQEAgdm9pZCBs
b2FkOE9uQ29uZGl0aW9uKE1hY3JvQXNzZW1ibGVyVHlwZSYgaml0LCBDb25kaXRpb24gY29uZCwg
QXJncy4uLiBhcmdzKQogICAgIHJldHVybiBqaXQubG9hZDhTaWduZWRFeHRlbmRUbzMyKHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNz
ZW1ibGVyVHlwZSwgdHlwZW5hbWUgQ29uZGl0aW9uLCB0eXBlbmFtZSAuLi5BcmdzPgordm9pZCBs
b2FkMTZPbkNvbmRpdGlvbihNYWNyb0Fzc2VtYmxlclR5cGUmIGppdCwgQ29uZGl0aW9uIGNvbmQs
IEFyZ3MuLi4gYXJncykKK3sKKyAgICBpZiAoaXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxlclR5cGU+
KGNvbmQpKQorICAgICAgICByZXR1cm4gaml0LmxvYWQxNihzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pOworICAgIHJldHVybiBqaXQubG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5k
ZXggYjgxYjcyZjkyZGU1NGYyYTIwYTY4NmEzMTRmODE4NTY0YWZjOWE2NS4uYTE1OTU1Y2E5NDlm
MGM0MDdkYTU2MjlhNGU0MmFmNzgwY2JhMmU3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0yMDQzLDYgKzIwNDMs
MzQgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJNSVBTIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0
YVRlbXBSZWdpc3RlciwgbWFzazgpOwogICAgIH0KIAorICAgIFRydXN0ZWRJbW0zMiBtYXNrMTZP
blRlc3QoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBtYXNrKQorICAgIHsKKyAg
ICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAg
ICAgcmV0dXJuIFRydXN0ZWRJbW0zMigtMSk7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxl
ckhlbHBlcnM6Om1hc2sxNk9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICB9CisK
KyAgICBKdW1wIGJyYW5jaFRlc3QxNihSZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFk
ZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAg
ICAgIFRydXN0ZWRJbW0zMiBtYXNrMTYgPSBtYXNrMTZPblRlc3QoY29uZCwgbWFzayk7CisgICAg
ICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQs
IGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMy
KGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2sxNik7CisgICAgfQorCisgICAgSnVtcCBicmFu
Y2hUZXN0MTYoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZElt
bTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgVHJ1c3RlZEltbTMy
IG1hc2sxNiA9IG1hc2sxNk9uVGVzdChjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJIZWxwZXJzOjpsb2FkMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0YVRl
bXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBS
ZWdpc3RlciwgbWFzazE2KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFRlc3QxNihSZXN1bHRD
b25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNr
ID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrMTYg
PSBtYXNrMTZPblRlc3QoY29uZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVy
czo6bG9hZDE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0
ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIs
IG1hc2sxNik7CisgICAgfQorCiAgICAgSnVtcCBqdW1wKCkKICAgICB7CiAgICAgICAgIHJldHVy
biBicmFuY2hFcXVhbChNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uaAppbmRleCAzZmFiYzRkODkxNDA0NzRmNDBmMWZhN2E5YjFiYWY5Yjcw
NzZkNjgwLi5hM2UwMzFiNzA5YzFmNTg3OGI0N2I0N2JiY2RmYzBhNWYxOTk0NTM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oCkBAIC0yNzU5LDYgKzI3NTksMjYgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAg
ICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOwog
ICAgIH0KIAorICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRy
ZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7
CisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrMTYoc3RhdGljX2Nhc3Q8aW50MTZfdD4obWFzay5t
X3ZhbHVlKSk7CisgICAgICAgIGlmIChtYXNrMTYubV92YWx1ZSA9PSAtMSkKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmNtcHdfaW0oMCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3R3X2ltKG1hc2sxNi5tX3Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICAgICAgcmV0dXJuIEp1bXAo
bV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0KKworICAgIEp1bXAg
YnJhbmNoVGVzdDE2KFJlc3VsdENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1
c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgVHJ1c3Rl
ZEltbTMyIG1hc2sxNihzdGF0aWNfY2FzdDxpbnQxNl90PihtYXNrLm1fdmFsdWUpKTsKKyAgICAg
ICAgaWYgKG1hc2sxNi5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21w
d19pbSgwLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdHdf
aW0obWFzazE2Lm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5q
Q0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkK
ICAgICB7CiAgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90Pihy
aWdodC5tX3ZhbHVlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggNWU4MzlmMzc0ZWJiYjRkNjYzMWE3ZTYz
MzQxYmExNGY2MTk5MWQ4OC4uYWE3ZWMwMWUzODQ4YWRhOWZjYWI5NTA0MjMyZjY4N2MwMzQ4YzMx
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaApAQCAtMTU2Myw3ICsxNTYzLDIzIEBAIGNsYXNzIE1hY3JvQXNzZW1i
bGVyWDg2XzY0IDogcHVibGljIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIHsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwg
c2NyYXRjaFJlZ2lzdGVyKCkpOwogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJYODZDb21t
b246OmJyYW5jaFRlc3Q4KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpLCBtYXNrOCk7
CiAgICAgfQotICAgIAorCisgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5j
aFRlc3QxNjsKKyAgICBKdW1wIGJyYW5jaFRlc3QxNihSZXN1bHRDb25kaXRpb24gY29uZCwgRXh0
ZW5kZWRBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0x
KSkKKyAgICB7CisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrMTYoc3RhdGljX2Nhc3Q8aW50MTZf
dD4obWFzay5tX3ZhbHVlKSk7CisgICAgICAgIFRydXN0ZWRJbW1QdHIgYWRkcihyZWludGVycHJl
dF9jYXN0PHZvaWQqPihhZGRyZXNzLm9mZnNldCkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6bW92ZShhZGRyLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIHJldHVybiBN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDE2KGNvbmQsIEJhc2VJbmRleChzY3Jh
dGNoUmVnaXN0ZXIoKSwgYWRkcmVzcy5iYXNlLCBUaW1lc09uZSksIG1hc2sxNik7CisgICAgfQor
CisgICAgSnVtcCBicmFuY2hUZXN0MTYoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRk
cmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisgICAg
eworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2KHN0YXRpY19jYXN0PGludDE2X3Q+KG1hc2su
bV92YWx1ZSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bW92ZShUcnVzdGVk
SW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIHJldHVy
biBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDE2KGNvbmQsIEFkZHJlc3Moc2Ny
YXRjaFJlZ2lzdGVyKCkpLCBtYXNrMTYpOworICAgIH0KKwogICAgIHZvaWQgeGNoZzY0KFJlZ2lz
dGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci54
Y2hncV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggOGVhZjg0NTFiMmVi
NDk5OGVhOTY3NWU0YTdmY2I0MTA3OGIxMzY1ZC4uMWU0ZTJjNThiMzU0MjJmOGZjOTEwMzUyZDIz
Yjc2YTUwNGY1YzFhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4
NkFzc2VtYmxlci5oCkBAIC0yMTUxLDcgKzIxNTEsMTkgQEAgY2xhc3MgWDg2QXNzZW1ibGVyIHsK
ICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOwogICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfVEVTVF9Fdkd2LCBzcmMsIGRzdCk7CiAgICAgfQotICAg
IAorCisgICAgdm9pZCB0ZXN0d19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2SXos
IEdST1VQM19PUF9URVNULCBiYXNlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGUxNihpbW0pOworICAgIH0KKworICAgIHZvaWQgdGVzdHdfaW0oaW50IGltbSwgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2SXosIEdST1VQM19P
UF9URVNULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTE2KGltbSk7CisgICAgfQorCiAgICAgdm9pZCB0ZXN0Yl9pOHIoaW50IGltbSwg
UmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoZHN0ID09IFg4NlJlZ2lzdGVyczo6
ZWF4KQo=
</data>
<flag name="commit-queue"
          id="469614"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444566</attachid>
            <date>2021-11-17 13:49:30 -0800</date>
            <delta_ts>2021-11-17 14:07:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233275-20211117134929.patch</filename>
            <type>text/plain</type>
            <size>16513</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1OTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MWU4ZjJhMTY2MGE0NDU5M2E2Njk0Y2JkNjk0MjU5YjY2MDk0ZjUzLi4yM2I4OTNmYjM1MDhlZTU4
YzlhNjhkYmJmMjU4NDk2ZDM1NGVhMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAyMS0xMS0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBicmFuY2hUZXN0MTYgb3BlcmF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMyNzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoVGVzdDE2KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hUZXN0MTYpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
djc6OmJyYW5jaFRlc3QxNik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVySGVs
cGVycy5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2sxNk9uQ29u
ZGl0aW9uKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkMTZPbkNv
bmRpdGlvbik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om1hc2sxNk9uVGVzdCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoVGVzdDE2KToKKyAgICAgICAgKiBhc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246OmJyYW5jaFRlc3QxNik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpicmFu
Y2hUZXN0MTYpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjpjbXB3X2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
Ojp0ZXN0d19pbSk6CisKIDIwMjEtMTEtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxl
LmNvbT4KIAogICAgICAgICBbSlNDXSBVc2Ugb3BlcmF0aW9uIHBhdGggd2hlbiBQdXRCeVZhbCBj
aGlsZDEgaXMgbm90IHNwZWN1bGF0ZWQgYXMgYSBDZWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggNDEzMjMwMmY4YTg2MDE5NGEy
ZDg4ZDg3ZjhhZjA4ZjY2ZTEyZTgxMS4uYTVhNjUzYTFiMTk3NGZjNDQzYWYxM2RmOGMzNDM2YmU5
ZGUzZDU0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXIuaApAQCAtODgwLDYgKzg4MCwxMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1
YmxpYyBNYWNyb0Fzc2VtYmxlckJhc2UgewogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJC
YXNlOjpicmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZz
ZXQpLCBtYXNrKTsKICAgICB9CiAKKyAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5j
aFRlc3QxNjsKKyAgICBKdW1wIGJyYW5jaFRlc3QxNihSZXN1bHRDb25kaXRpb24gY29uZCwgRXh0
ZW5kZWRBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0x
KSkKKyAgICB7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaFRlc3Qx
Nihjb25kLCBBZGRyZXNzKGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpLCBtYXNrKTsKKyAg
ICB9CisKICNlbHNlIC8vICFDUFUoQUREUkVTUzY0KQogCiAgICAgdm9pZCBhZGRQdHIoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggODU3NDA1NWM5YjFlZmJi
YmVlZDAwMWUwZWUwOWNhZTVhYTEwODdkYS4uOThkMzFkZmY3NWE1MzkxYTJmMTVhODg2OTAyYzc5
MzQ1ZDljYTkwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTM1NDUsNiArMzU0NSw0MCBAQCBjbGFzcyBNYWNy
b0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVy
PiB7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3Rlciwg
bWFzazgpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJlc3VsdENvbmRpdGlvbiBj
b25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0x
KSkKKyAgICB7CisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrMTYgPSBNYWNyb0Fzc2VtYmxlckhl
bHBlcnM6Om1hc2sxNk9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVz
cywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAg
cmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrMTYpOworICAg
IH0KKworICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0
ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQor
ICAgIHsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2sxNiA9IE1hY3JvQXNzZW1ibGVySGVscGVy
czo6bWFzazE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6OmxvYWQxNk9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLm1f
cHRyLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAg
ICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2sxNik7Cisg
ICAgfQorCisgICAgSnVtcCBicmFuY2hUZXN0MTYoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEV4dGVu
ZGVkQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkp
CisgICAgeworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2ID0gTWFjcm9Bc3NlbWJsZXJIZWxw
ZXJzOjptYXNrMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihhZGRyZXNzLm9mZnNldCkpLCBn
ZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworCisgICAgICAgIGlm
IChNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmlzVW5zaWduZWQ8TWFjcm9Bc3NlbWJsZXJBUk02ND4o
Y29uZCkpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHJoKGRhdGFUZW1wUmVnaXN0ZXIsIGFk
ZHJlc3MuYmFzZSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmxkcnNoPDMyPihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2UsIGRh
dGFUZW1wUmVnaXN0ZXIpOworCisgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0
YVRlbXBSZWdpc3RlciwgbWFzazE2KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFRlc3QxNihS
ZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNr
ID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrMTYg
PSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2sxNk9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBt
YXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkMTZPbkNvbmRpdGlvbigq
dGhpcywgY29uZCwgYWRkcmVzcywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lz
dGVyLCBtYXNrMTYpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoMzJXaXRoVW5hbGlnbmVkSGFs
ZldvcmRzKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJ
bW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBy
aWdodCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oCmluZGV4IGY2MTVhNTBjZWU5NWYwZThmYzQwNzE0OWMyNDEwNDlmN2Ix
NmI2YWEuLjM0OWU3Y2VlNjZhMzc0NTlkYTQ5Y2U0YWU4MWQ5NDBhZmU4ZWMwYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12
Ny5oCkBAIC0xNzk1LDYgKzE3OTUsMzEgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk12NyA6IHB1
YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICByZXR1cm4g
YnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIG1hc2s4KTsKICAgICB9CiAK
KyAgICBKdW1wIGJyYW5jaFRlc3QxNihSZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFk
ZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAg
ICAgIC8vIHVzZSBhZGRyZXNzVGVtcFJlZ2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoVGVzdDE2IHdl
IGNhbGwgdXNlcyBkYXRhVGVtcFJlZ2lzdGVyLiA6LS8KKyAgICAgICAgVHJ1c3RlZEltbTMyIG1h
c2sxNiA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazE2T25Db25kaXRpb24oKnRoaXMsIGNv
bmQsIG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQxNk9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
cmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrMTYpOwor
ICAgIH0KKworICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRy
ZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7
CisgICAgICAgIC8vIHVzZSBhZGRyZXNzVGVtcFJlZ2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoVGVz
dDE2IHdlIGNhbGwgdXNlcyBkYXRhVGVtcFJlZ2lzdGVyLiA6LS8KKyAgICAgICAgVHJ1c3RlZElt
bTMyIG1hc2sxNiA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazE2T25Db25kaXRpb24oKnRo
aXMsIGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQxNk9u
Q29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNr
MTYpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJlc3VsdENvbmRpdGlvbiBjb25k
LCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1t
MzIoLTEpKQorICAgIHsKKyAgICAgICAgLy8gdXNlIGFkZHJlc3NUZW1wUmVnaXN0ZXIgaW5jYXNl
IHRoZSBicmFuY2hUZXN0MTYgd2UgY2FsbCB1c2VzIGRhdGFUZW1wUmVnaXN0ZXIuIDotLworICAg
ICAgICBUcnVzdGVkSW1tMzIgbWFzazE2ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrMTZP
bkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVySGVscGVyczo6bG9hZDE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIEFkZHJlc3MoYWRk
cmVzc1RlbXBSZWdpc3RlciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4g
YnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIG1hc2sxNik7CisgICAgfQor
CiAgICAgdm9pZCBmYXJKdW1wKFJlZ2lzdGVySUQgdGFyZ2V0LCBQdHJUYWcpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5ieCh0YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmgKaW5kZXggNTQ0ZjE5ODg0
MjMxNWI5Y2RjMDNiZjQxY2Y5YzMzMTAzM2RhZDgwMC4uOWYwNjYxOGRmNzIzZTAxNTg0NjhiODdl
ZmU3ODcyMmE2OTk1NjE3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVySGVscGVycy5oCkBAIC0xMjYsNiArMTI2LDMwIEBAIGlu
bGluZSB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMiBtYXNrOE9uQ29u
ZGl0aW9uKE1hY3JvQXNzZW1ibGVyCiAgICAgcmV0dXJuIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVy
VHlwZTo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUubV92YWx1ZSkpOwog
fQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU+CitpbmxpbmUgdHlwZW5h
bWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIgbWFzazE2T25Db25kaXRpb24oTWFj
cm9Bc3NlbWJsZXJUeXBlJiwgdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMy
IHZhbHVlKQoreworICAgIGlmIChpc1Vuc2lnbmVkPE1hY3JvQXNzZW1ibGVyVHlwZT4oY29uZCkp
CisgICAgICAgIHJldHVybiB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0z
MihzdGF0aWNfY2FzdDx1aW50MTZfdD4odmFsdWUubV92YWx1ZSkpOworICAgIHJldHVybiB0eXBl
bmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQxNl90
Pih2YWx1ZS5tX3ZhbHVlKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVy
VHlwZT4KK2lubGluZSB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMiBt
YXNrMTZPbkNvbmRpdGlvbihNYWNyb0Fzc2VtYmxlclR5cGUmLCB0eXBlbmFtZSBNYWNyb0Fzc2Vt
YmxlclR5cGU6OlJlc3VsdENvbmRpdGlvbiBjb25kLCB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5
cGU6OlRydXN0ZWRJbW0zMiB2YWx1ZSkKK3sKKyAgICAvLyBJZiBjb25kaXRpb24gaXMgWmVybyBv
ciBOb25aZXJvLCB1cHBlciBiaXRzIGFyZSB1bnJlbGF0ZWQuCisgICAgLy8gU2luY2UgYnJhbmNo
VGVzdDMyIGhhbmRsZXMgLTEgaW4gYW4gb3B0aW1pemVkIG1hbm5lciwgd2Uga2VlcCAtMSBhcyBp
cyBpbnN0ZWFkIG9mIGNvbnZlcnRpbmcgaXQgdG8gMHhmZmZmLgorICAgIGlmIChjb25kID09IE1h
Y3JvQXNzZW1ibGVyVHlwZTo6WmVybyB8fCBjb25kID09IE1hY3JvQXNzZW1ibGVyVHlwZTo6Tm9u
WmVybykgeworICAgICAgICBpZiAodmFsdWUubV92YWx1ZSA9PSAtMSkKKyAgICAgICAgICAgIHJl
dHVybiB2YWx1ZTsKKyAgICB9CisgICAgaWYgKGlzVW5zaWduZWQ8TWFjcm9Bc3NlbWJsZXJUeXBl
Pihjb25kKSkKKyAgICAgICAgcmV0dXJuIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1
c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQxNl90Pih2YWx1ZS5tX3ZhbHVlKSk7CisgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShjb25kICE9IE1hY3JvQXNzZW1ibGVyVHlwZTo6T3ZlcmZsb3csICJP
dmVyZmxvdyBpcyBub3QgdXNlZCBmb3IgMTZiaXQgdGVzdCBvcGVyYXRpb25zLiIpOworICAgIEFT
U0VSVChpc1NpZ25lZDxNYWNyb0Fzc2VtYmxlclR5cGU+KGNvbmQpKTsKKyAgICByZXR1cm4gdHlw
ZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MTZf
dD4odmFsdWUubV92YWx1ZSkpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNYWNyb0Fzc2VtYmxl
clR5cGUsIHR5cGVuYW1lIENvbmRpdGlvbiwgdHlwZW5hbWUgLi4uQXJncz4KIHZvaWQgbG9hZDhP
bkNvbmRpdGlvbihNYWNyb0Fzc2VtYmxlclR5cGUmIGppdCwgQ29uZGl0aW9uIGNvbmQsIEFyZ3Mu
Li4gYXJncykKIHsKQEAgLTEzNCw0ICsxNTgsMTIgQEAgdm9pZCBsb2FkOE9uQ29uZGl0aW9uKE1h
Y3JvQXNzZW1ibGVyVHlwZSYgaml0LCBDb25kaXRpb24gY29uZCwgQXJncy4uLiBhcmdzKQogICAg
IHJldHVybiBqaXQubG9hZDhTaWduZWRFeHRlbmRUbzMyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZSwgdHlwZW5h
bWUgQ29uZGl0aW9uLCB0eXBlbmFtZSAuLi5BcmdzPgordm9pZCBsb2FkMTZPbkNvbmRpdGlvbihN
YWNyb0Fzc2VtYmxlclR5cGUmIGppdCwgQ29uZGl0aW9uIGNvbmQsIEFyZ3MuLi4gYXJncykKK3sK
KyAgICBpZiAoaXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxlclR5cGU+KGNvbmQpKQorICAgICAgICBy
ZXR1cm4gaml0LmxvYWQxNihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIHJldHVy
biBqaXQubG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggYjgxYjcyZjkyZGU1NGYy
YTIwYTY4NmEzMTRmODE4NTY0YWZjOWE2NS4uYTE1OTU1Y2E5NDlmMGM0MDdkYTU2MjlhNGU0MmFm
NzgwY2JhMmU3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0yMDQzLDYgKzIwNDMsMzQgQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXJNSVBTIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7
CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFz
azgpOwogICAgIH0KIAorICAgIFRydXN0ZWRJbW0zMiBtYXNrMTZPblRlc3QoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBtYXNrKQorICAgIHsKKyAgICAgICAgaWYgKG1hc2subV92
YWx1ZSA9PSAtMSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAgICAgcmV0dXJuIFRydXN0ZWRJ
bW0zMigtMSk7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2sxNk9u
Q29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFRl
c3QxNihSZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0z
MiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIFRydXN0ZWRJbW0zMiBt
YXNrMTYgPSBtYXNrMTZPblRlc3QoY29uZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
SGVscGVyczo6bG9hZDE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1w
UmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVn
aXN0ZXIsIG1hc2sxNik7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hUZXN0MTYoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVk
SW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2sxNiA9IG1hc2sxNk9u
VGVzdChjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkMTZP
bkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAg
ICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazE2KTsK
KyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFRlc3QxNihSZXN1bHRDb25kaXRpb24gY29uZCwgQWJz
b2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0x
KSkKKyAgICB7CisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrMTYgPSBtYXNrMTZPblRlc3QoY29u
ZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDE2T25Db25kaXRp
b24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1
cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2sxNik7CisgICAgfQor
CiAgICAgSnVtcCBqdW1wKCkKICAgICB7CiAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChNSVBT
UmVnaXN0ZXJzOjp6ZXJvLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApp
bmRleCAzZmFiYzRkODkxNDA0NzRmNDBmMWZhN2E5YjFiYWY5YjcwNzZkNjgwLi5hM2UwMzFiNzA5
YzFmNTg3OGI0N2I0N2JiY2RmYzBhNWYxOTk0NTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0y
NzU5LDYgKzI3NTksMjYgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gOiBwdWJsaWMg
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgcmV0dXJuIEp1bXAo
bV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOwogICAgIH0KIAorICAgIEp1bXAg
YnJhbmNoVGVzdDE2KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0
ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIFRydXN0ZWRJ
bW0zMiBtYXNrMTYoc3RhdGljX2Nhc3Q8aW50MTZfdD4obWFzay5tX3ZhbHVlKSk7CisgICAgICAg
IGlmIChtYXNrMTYubV92YWx1ZSA9PSAtMSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcHdf
aW0oMCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnRlc3R3X2ltKG1hc2sxNi5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlKTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4
NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBU
cnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2sxNihzdGF0
aWNfY2FzdDxpbnQxNl90PihtYXNrLm1fdmFsdWUpKTsKKyAgICAgICAgaWYgKG1hc2sxNi5tX3Zh
bHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wd19pbSgwLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdHdfaW0obWFzazE2Lm1fdmFsdWUs
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2Nh
bGUpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNv
bmQpKSk7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIFRy
dXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90PihyaWdodC5tX3ZhbHVlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2XzY0LmgKaW5kZXggNWU4MzlmMzc0ZWJiYjRkNjYzMWE3ZTYzMzQxYmExNGY2MTk5MWQ4OC4u
YWE3ZWMwMWUzODQ4YWRhOWZjYWI5NTA0MjMyZjY4N2MwMzQ4YzMxMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApA
QCAtMTU2Myw3ICsxNTYzLDIzIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2XzY0IDogcHVibGlj
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJYODZDb21t
b246Om1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkp
OwogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4KGNv
bmQsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpLCBtYXNrOCk7CiAgICAgfQotICAgIAorCisg
ICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3QxNjsKKyAgICBKdW1w
IGJyYW5jaFRlc3QxNihSZXN1bHRDb25kaXRpb24gY29uZCwgRXh0ZW5kZWRBZGRyZXNzIGFkZHJl
c3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAg
IFRydXN0ZWRJbW0zMiBtYXNrMTYoc3RhdGljX2Nhc3Q8aW50MTZfdD4obWFzay5tX3ZhbHVlKSk7
CisgICAgICAgIFRydXN0ZWRJbW1QdHIgYWRkcihyZWludGVycHJldF9jYXN0PHZvaWQqPihhZGRy
ZXNzLm9mZnNldCkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bW92ZShhZGRy
LCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6YnJhbmNoVGVzdDE2KGNvbmQsIEJhc2VJbmRleChzY3JhdGNoUmVnaXN0ZXIoKSwgYWRk
cmVzcy5iYXNlLCBUaW1lc09uZSksIG1hc2sxNik7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hU
ZXN0MTYoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVz
dGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisgICAgeworICAgICAgICBUcnVzdGVk
SW1tMzIgbWFzazE2KHN0YXRpY19jYXN0PGludDE2X3Q+KG1hc2subV92YWx1ZSkpOworICAgICAg
ICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9w
dHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6YnJhbmNoVGVzdDE2KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpLCBt
YXNrMTYpOworICAgIH0KKwogICAgIHZvaWQgeGNoZzY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNz
IGFkZHJlc3MpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci54Y2hncV9ybShyZWcsIGFkZHJl
c3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggOGVhZjg0NTFiMmViNDk5OGVhOTY3NWU0YTdmY2I0
MTA3OGIxMzY1ZC4uNzE0MTM2MzUzNWQ0NTA2OTMyNDU1OWJhYWY0MDI1YTY2YWI3YTkxZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC0y
MDQ5LDYgKzIwNDksMTkgQEAgY2xhc3MgWDg2QXNzZW1ibGVyIHsKICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0NNUF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKICAgICB9CiAKKyAgICB2b2lkIGNtcHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkp
IHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09Q
X0NNUCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgo
aW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQ
UkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDFfRXZJeiwgR1JPVVAxX09QX0NNUCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lk
IGNtcHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhf
MzIoaW1tKSkgewpAQCAtMjE1MSw3ICsyMTY0LDIxIEBAIGNsYXNzIFg4NkFzc2VtYmxlciB7CiAg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX1RFU1RfRXZHdiwgc3JjLCBkc3QpOwogICAgIH0KLSAgICAK
KworICAgIHZvaWQgdGVzdHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOwor
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2SXosIEdST1VQM19PUF9U
RVNULCBiYXNlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0p
OworICAgIH0KKworICAgIHZvaWQgdGVzdHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDNfRXZJeiwgR1JPVVAzX09QX1RFU1QsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAg
ICB9CisKICAgICB2b2lkIHRlc3RiX2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7
CiAgICAgICAgIGlmIChkc3QgPT0gWDg2UmVnaXN0ZXJzOjplYXgpCg==
</data>
<flag name="commit-queue"
          id="469620"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444569</attachid>
            <date>2021-11-17 14:03:57 -0800</date>
            <delta_ts>2021-11-17 16:37:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233275-20211117140356.patch</filename>
            <type>text/plain</type>
            <size>17196</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1OTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MWU4ZjJhMTY2MGE0NDU5M2E2Njk0Y2JkNjk0MjU5YjY2MDk0ZjUzLi5kZTA3YmIzN2FmZjkyNmEy
MGU2YTQ3ZDFlZDgxYjA3NjY2MzY1NDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAyMS0xMS0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBicmFuY2hUZXN0MTYgb3BlcmF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMyNzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoVGVzdDE2KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkMTZTaWduZWRFeHRlbmRUbzMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoVGVzdDE2KToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTXY3OjpicmFuY2hUZXN0MTYpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrMTZP
bkNvbmRpdGlvbik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDE2
T25Db25kaXRpb24pOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjptYXNrMTZPblRlc3QpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRlc3QxNik6CisgICAgICAgICogYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0MTYpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6
YnJhbmNoVGVzdDE2KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAg
ICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6Y21wd19pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6dGVzdHdfaW0pOgorCiAyMDIxLTExLTE1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXNlIG9wZXJhdGlvbiBwYXRoIHdoZW4gUHV0QnlW
YWwgY2hpbGQxIGlzIG5vdCBzcGVjdWxhdGVkIGFzIGEgQ2VsbApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IDQxMzIzMDJmOGE4NjAx
OTRhMmQ4OGQ4N2Y4YWYwOGY2NmUxMmU4MTEuLmE1YTY1M2ExYjE5NzRmYzQ0M2FmMTNkZjhjMzQz
NmJlOWRlM2Q1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyLmgKQEAgLTg4MCw2ICs4ODAsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIg
OiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJCYXNlIHsKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1i
bGVyQmFzZTo6YnJhbmNoVGVzdDgoY29uZCwgQWRkcmVzcyhhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
b2Zmc2V0KSwgbWFzayk7CiAgICAgfQogCisgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpi
cmFuY2hUZXN0MTY7CisgICAgSnVtcCBicmFuY2hUZXN0MTYoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IEV4dGVuZGVkQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0z
MigtMSkpCisgICAgeworICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hU
ZXN0MTYoY29uZCwgQWRkcmVzcyhhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KSwgbWFzayk7
CisgICAgfQorCiAjZWxzZSAvLyAhQ1BVKEFERFJFU1M2NCkKIAogICAgIHZvaWQgYWRkUHRyKFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDg1NzQwNTVjOWIx
ZWZiYmJlZWQwMDFlMGVlMDljYWU1YWExMDg3ZGEuLjEyMjE4YzZmYWE4ZjBkZmVmYjc2OGZlYTNk
NDE2ZjhmNWM3MWQxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0xODA1LDYgKzE4MDUsMTQgQEAgY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2Vt
Ymxlcj4gewogICAgICAgICBtX2Fzc2VtYmxlci5sZHJzaDwzMj4oZGVzdCwgYWRkcmVzcy5iYXNl
LCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHZvaWQgbG9hZDE2U2lnbmVkRXh0
ZW5kVG8zMihjb25zdCB2b2lkKiBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtb3ZlVG9DYWNoZWRSZWcoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgY2FjaGVkTWVtb3J5
VGVtcFJlZ2lzdGVyKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5sZHJzaDwzMj4oZGVzdCwgbWVt
b3J5VGVtcFJlZ2lzdGVyLCBBUk02NFJlZ2lzdGVyczo6enIpOworICAgICAgICBpZiAoZGVzdCA9
PSBtZW1vcnlUZW1wUmVnaXN0ZXIpCisgICAgICAgICAgICBjYWNoZWRNZW1vcnlUZW1wUmVnaXN0
ZXIoKS5pbnZhbGlkYXRlKCk7CisgICAgfQorCiAgICAgdm9pZCB6ZXJvRXh0ZW5kMTZUbzMyKFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxl
ci51eHRoPDMyPihkZXN0LCBzcmMpOwpAQCAtMzU0NSw2ICszNTUzLDQwIEBAIGNsYXNzIE1hY3Jv
QXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+
IHsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBt
YXNrOCk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hUZXN0MTYoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEp
KQorICAgIHsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2sxNiA9IE1hY3JvQXNzZW1ibGVySGVs
cGVyczo6bWFzazE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBNYWNy
b0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQxNk9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNz
LCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBy
ZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2sxNik7CisgICAg
fQorCisgICAgSnVtcCBicmFuY2hUZXN0MTYoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29sdXRl
QWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisg
ICAgeworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
OjptYXNrMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVySGVscGVyczo6bG9hZDE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MubV9w
dHIsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAg
IHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazE2KTsKKyAg
ICB9CisKKyAgICBKdW1wIGJyYW5jaFRlc3QxNihSZXN1bHRDb25kaXRpb24gY29uZCwgRXh0ZW5k
ZWRBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkK
KyAgICB7CisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrMTYgPSBNYWNyb0Fzc2VtYmxlckhlbHBl
cnM6Om1hc2sxNk9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGFkZHJlc3Mub2Zmc2V0KSksIGdl
dENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisKKyAgICAgICAgaWYg
KE1hY3JvQXNzZW1ibGVySGVscGVyczo6aXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxlckFSTTY0Pihj
b25kKSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcmgoZGF0YVRlbXBSZWdpc3RlciwgYWRk
cmVzcy5iYXNlLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
bV9hc3NlbWJsZXIubGRyc2g8MzI+KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSwgZGF0
YVRlbXBSZWdpc3Rlcik7CisKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRh
VGVtcFJlZ2lzdGVyLCBtYXNrMTYpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJl
c3VsdENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sg
PSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2sxNiA9
IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1h
c2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQxNk9uQ29uZGl0aW9uKCp0
aGlzLCBjb25kLCBhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCkpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0
ZXIsIG1hc2sxNik7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2gzMldpdGhVbmFsaWduZWRIYWxm
V29yZHMoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgVHJ1c3RlZElt
bTMyIHJpZ2h0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJp
Z2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTXY3LmgKaW5kZXggZjYxNWE1MGNlZTk1ZjBlOGZjNDA3MTQ5YzI0MTA0OWY3YjE2
YjZhYS4uMzQ5ZTdjZWU2NmEzNzQ1OWRhNDljZTRhZTgxZDk0MGFmZThlYzBiNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
LmgKQEAgLTE3OTUsNiArMTc5NSwzMSBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVi
bGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIHJldHVybiBi
cmFuY2hUZXN0MzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgbWFzazgpOwogICAgIH0KIAor
ICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJlc3VsdENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggYWRk
cmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAg
ICAgLy8gdXNlIGFkZHJlc3NUZW1wUmVnaXN0ZXIgaW5jYXNlIHRoZSBicmFuY2hUZXN0MTYgd2Ug
Y2FsbCB1c2VzIGRhdGFUZW1wUmVnaXN0ZXIuIDotLworICAgICAgICBUcnVzdGVkSW1tMzIgbWFz
azE2ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrMTZPbkNvbmRpdGlvbigqdGhpcywgY29u
ZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDE2T25Db25kaXRp
b24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBy
ZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIG1hc2sxNik7Cisg
ICAgfQorCisgICAgSnVtcCBicmFuY2hUZXN0MTYoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJl
c3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsK
KyAgICAgICAgLy8gdXNlIGFkZHJlc3NUZW1wUmVnaXN0ZXIgaW5jYXNlIHRoZSBicmFuY2hUZXN0
MTYgd2UgY2FsbCB1c2VzIGRhdGFUZW1wUmVnaXN0ZXIuIDotLworICAgICAgICBUcnVzdGVkSW1t
MzIgbWFzazE2ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrMTZPbkNvbmRpdGlvbigqdGhp
cywgY29uZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDE2T25D
b25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAg
ICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIG1hc2sx
Nik7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hUZXN0MTYoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0z
MigtMSkpCisgICAgeworICAgICAgICAvLyB1c2UgYWRkcmVzc1RlbXBSZWdpc3RlciBpbmNhc2Ug
dGhlIGJyYW5jaFRlc3QxNiB3ZSBjYWxsIHVzZXMgZGF0YVRlbXBSZWdpc3Rlci4gOi0vCisgICAg
ICAgIFRydXN0ZWRJbW0zMiBtYXNrMTYgPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2sxNk9u
Q29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRy
KGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJIZWxwZXJzOjpsb2FkMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgQWRkcmVzcyhhZGRy
ZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBi
cmFuY2hUZXN0MzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgbWFzazE2KTsKKyAgICB9CisK
ICAgICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQsIFB0clRhZykKICAgICB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLmJ4KHRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVySGVscGVycy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckhlbHBlcnMuaAppbmRleCA1NDRmMTk4ODQy
MzE1YjljZGMwM2JmNDFjZjljMzMxMDMzZGFkODAwLi45ZjA2NjE4ZGY3MjNlMDE1ODQ2OGI4N2Vm
ZTc4NzIyYTY5OTU2MTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVySGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmgKQEAgLTEyNiw2ICsxMjYsMzAgQEAgaW5s
aW5lIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMyIG1hc2s4T25Db25k
aXRpb24oTWFjcm9Bc3NlbWJsZXIKICAgICByZXR1cm4gdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJU
eXBlOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZS5tX3ZhbHVlKSk7CiB9
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZT4KK2lubGluZSB0eXBlbmFt
ZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMiBtYXNrMTZPbkNvbmRpdGlvbihNYWNy
b0Fzc2VtYmxlclR5cGUmLCB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlJlbGF0aW9uYWxD
b25kaXRpb24gY29uZCwgdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIg
dmFsdWUpCit7CisgICAgaWYgKGlzVW5zaWduZWQ8TWFjcm9Bc3NlbWJsZXJUeXBlPihjb25kKSkK
KyAgICAgICAgcmV0dXJuIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMy
KHN0YXRpY19jYXN0PHVpbnQxNl90Pih2YWx1ZS5tX3ZhbHVlKSk7CisgICAgcmV0dXJuIHR5cGVu
YW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDE2X3Q+
KHZhbHVlLm1fdmFsdWUpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJU
eXBlPgoraW5saW5lIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMyIG1h
c2sxNk9uQ29uZGl0aW9uKE1hY3JvQXNzZW1ibGVyVHlwZSYsIHR5cGVuYW1lIE1hY3JvQXNzZW1i
bGVyVHlwZTo6UmVzdWx0Q29uZGl0aW9uIGNvbmQsIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlw
ZTo6VHJ1c3RlZEltbTMyIHZhbHVlKQoreworICAgIC8vIElmIGNvbmRpdGlvbiBpcyBaZXJvIG9y
IE5vblplcm8sIHVwcGVyIGJpdHMgYXJlIHVucmVsYXRlZC4KKyAgICAvLyBTaW5jZSBicmFuY2hU
ZXN0MzIgaGFuZGxlcyAtMSBpbiBhbiBvcHRpbWl6ZWQgbWFubmVyLCB3ZSBrZWVwIC0xIGFzIGlz
IGluc3RlYWQgb2YgY29udmVydGluZyBpdCB0byAweGZmZmYuCisgICAgaWYgKGNvbmQgPT0gTWFj
cm9Bc3NlbWJsZXJUeXBlOjpaZXJvIHx8IGNvbmQgPT0gTWFjcm9Bc3NlbWJsZXJUeXBlOjpOb25a
ZXJvKSB7CisgICAgICAgIGlmICh2YWx1ZS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgcmV0
dXJuIHZhbHVlOworICAgIH0KKyAgICBpZiAoaXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxlclR5cGU+
KGNvbmQpKQorICAgICAgICByZXR1cm4gdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpUcnVz
dGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHZhbHVlLm1fdmFsdWUpKTsKKyAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKGNvbmQgIT0gTWFjcm9Bc3NlbWJsZXJUeXBlOjpPdmVyZmxvdywgIk92
ZXJmbG93IGlzIG5vdCB1c2VkIGZvciAxNmJpdCB0ZXN0IG9wZXJhdGlvbnMuIik7CisgICAgQVNT
RVJUKGlzU2lnbmVkPE1hY3JvQXNzZW1ibGVyVHlwZT4oY29uZCkpOworICAgIHJldHVybiB0eXBl
bmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQxNl90
Pih2YWx1ZS5tX3ZhbHVlKSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVy
VHlwZSwgdHlwZW5hbWUgQ29uZGl0aW9uLCB0eXBlbmFtZSAuLi5BcmdzPgogdm9pZCBsb2FkOE9u
Q29uZGl0aW9uKE1hY3JvQXNzZW1ibGVyVHlwZSYgaml0LCBDb25kaXRpb24gY29uZCwgQXJncy4u
LiBhcmdzKQogewpAQCAtMTM0LDQgKzE1OCwxMiBAQCB2b2lkIGxvYWQ4T25Db25kaXRpb24oTWFj
cm9Bc3NlbWJsZXJUeXBlJiBqaXQsIENvbmRpdGlvbiBjb25kLCBBcmdzLi4uIGFyZ3MpCiAgICAg
cmV0dXJuIGppdC5sb2FkOFNpZ25lZEV4dGVuZFRvMzIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlLCB0eXBlbmFt
ZSBDb25kaXRpb24sIHR5cGVuYW1lIC4uLkFyZ3M+Cit2b2lkIGxvYWQxNk9uQ29uZGl0aW9uKE1h
Y3JvQXNzZW1ibGVyVHlwZSYgaml0LCBDb25kaXRpb24gY29uZCwgQXJncy4uLiBhcmdzKQorewor
ICAgIGlmIChpc1Vuc2lnbmVkPE1hY3JvQXNzZW1ibGVyVHlwZT4oY29uZCkpCisgICAgICAgIHJl
dHVybiBqaXQubG9hZDE2KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgcmV0dXJu
IGppdC5sb2FkMTZTaWduZWRFeHRlbmRUbzMyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7
Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCBiODFiNzJmOTJkZTU0ZjJh
MjBhNjg2YTMxNGY4MTg1NjRhZmM5YTY1Li5hMTU5NTVjYTk0OWYwYzQwN2RhNTYyOWE0ZTQyYWY3
ODBjYmEyZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTIwNDMsNiArMjA0MywzNCBAQCBjbGFzcyBNYWNyb0Fz
c2VtYmxlck1JUFMgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsK
ICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNr
OCk7CiAgICAgfQogCisgICAgVHJ1c3RlZEltbTMyIG1hc2sxNk9uVGVzdChSZXN1bHRDb25kaXRp
b24gY29uZCwgVHJ1c3RlZEltbTMyIG1hc2spCisgICAgeworICAgICAgICBpZiAobWFzay5tX3Zh
bHVlID09IC0xICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICByZXR1cm4gVHJ1c3RlZElt
bTMyKC0xKTsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazE2T25D
b25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoVGVz
dDE2KFJlc3VsdENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMy
IG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1h
c2sxNiA9IG1hc2sxNk9uVGVzdChjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJI
ZWxwZXJzOjpsb2FkMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0YVRlbXBS
ZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdp
c3RlciwgbWFzazE2KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFRlc3QxNihSZXN1bHRDb25k
aXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJ
bW0zMigtMSkpCisgICAgeworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2ID0gbWFzazE2T25U
ZXN0KGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQxNk9u
Q29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrMTYpOwor
ICAgIH0KKworICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNv
bHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEp
KQorICAgIHsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2sxNiA9IG1hc2sxNk9uVGVzdChjb25k
LCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkMTZPbkNvbmRpdGlv
bigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVy
biBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazE2KTsKKyAgICB9CisK
ICAgICBKdW1wIGp1bXAoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKE1JUFNS
ZWdpc3RlcnM6Onplcm8sIE1JUFNSZWdpc3RlcnM6Onplcm8pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCmlu
ZGV4IDNmYWJjNGQ4OTE0MDQ3NGY0MGYxZmE3YTliMWJhZjliNzA3NmQ2ODAuLmEzZTAzMWI3MDlj
MWY1ODc4YjQ3YjQ3YmJjZGZjMGE1ZjE5OTQ1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTI3
NTksNiArMjc1OSwyNiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbiA6IHB1YmxpYyBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICByZXR1cm4gSnVtcCht
X2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCisgICAgSnVtcCBi
cmFuY2hUZXN0MTYoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3Rl
ZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgVHJ1c3RlZElt
bTMyIG1hc2sxNihzdGF0aWNfY2FzdDxpbnQxNl90PihtYXNrLm1fdmFsdWUpKTsKKyAgICAgICAg
aWYgKG1hc2sxNi5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wd19p
bSgwLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbV9hc3NlbWJsZXIudGVzdHdfaW0obWFzazE2Lm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2
Q29uZGl0aW9uKGNvbmQpKSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hUZXN0MTYoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRy
dXN0ZWRJbW0zMigtMSkpCisgICAgeworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2KHN0YXRp
Y19jYXN0PGludDE2X3Q+KG1hc2subV92YWx1ZSkpOworICAgICAgICBpZiAobWFzazE2Lm1fdmFs
dWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXB3X2ltKDAsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0d19pbShtYXNrMTYubV92YWx1ZSwg
YWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2Fs
ZSk7CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29u
ZCkpKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBCYXNlSW5kZXggbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKICAgICAgICAgVHJ1
c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJpZ2h0Lm1fdmFsdWUpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZfNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZfNjQuaAppbmRleCA1ZTgzOWYzNzRlYmJiNGQ2NjMxYTdlNjMzNDFiYTE0ZjYxOTkxZDg4Li5h
YTdlYzAxZTM4NDhhZGE5ZmNhYjk1MDQyMzJmNjg3YzAzNDhjMzEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCkBA
IC0xNTYzLDcgKzE1NjMsMjMgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZfNjQgOiBwdWJsaWMg
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24gewogICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7
CiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDgoY29u
ZCwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSksIG1hc2s4KTsKICAgICB9Ci0gICAgCisKKyAg
ICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDE2OworICAgIEp1bXAg
YnJhbmNoVGVzdDE2KFJlc3VsdENvbmRpdGlvbiBjb25kLCBFeHRlbmRlZEFkZHJlc3MgYWRkcmVz
cywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAg
VHJ1c3RlZEltbTMyIG1hc2sxNihzdGF0aWNfY2FzdDxpbnQxNl90PihtYXNrLm1fdmFsdWUpKTsK
KyAgICAgICAgVHJ1c3RlZEltbVB0ciBhZGRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGFkZHJl
c3Mub2Zmc2V0KSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3ZlKGFkZHIs
IHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjpicmFuY2hUZXN0MTYoY29uZCwgQmFzZUluZGV4KHNjcmF0Y2hSZWdpc3RlcigpLCBhZGRy
ZXNzLmJhc2UsIFRpbWVzT25lKSwgbWFzazE2KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFRl
c3QxNihSZXN1bHRDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0
ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIFRydXN0ZWRJ
bW0zMiBtYXNrMTYoc3RhdGljX2Nhc3Q8aW50MTZfdD4obWFzay5tX3ZhbHVlKSk7CisgICAgICAg
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0
ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjpicmFuY2hUZXN0MTYoY29uZCwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSksIG1h
c2sxNik7CisgICAgfQorCiAgICAgdm9pZCB4Y2hnNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3Mg
YWRkcmVzcykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdxX3JtKHJlZywgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9YODZBc3NlbWJsZXIuaAppbmRleCA4ZWFmODQ1MWIyZWI0OTk4ZWE5Njc1ZTRhN2ZjYjQx
MDc4YjEzNjVkLi43MTQxMzYzNTM1ZDQ1MDY5MzI0NTU5YmFhZjQwMjVhNjZhYjdhOTFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTIw
NDksNiArMjA0OSwxOSBAQCBjbGFzcyBYODZBc3NlbWJsZXIgewogICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfQ01QX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OwogICAgIH0KIAorICAgIHZvaWQgY21wd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkg
eworICAgICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1Bf
Q01QLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChp
bW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBS
RV9PUEVSQU5EX1NJWkUpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMV9Fdkl6LCBHUk9VUDFfT1BfQ01QLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQg
Y21wd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8z
MihpbW0pKSB7CkBAIC0yMTUxLDcgKzIxNjQsMjEgQEAgY2xhc3MgWDg2QXNzZW1ibGVyIHsKICAg
ICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOwogICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfVEVTVF9Fdkd2LCBzcmMsIGRzdCk7CiAgICAgfQotICAgIAor
CisgICAgdm9pZCB0ZXN0d19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXZJeiwgR1JPVVAzX09QX1RF
U1QsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7
CisgICAgfQorCisgICAgdm9pZCB0ZXN0d19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQM19Fdkl6LCBHUk9VUDNfT1BfVEVTVCwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAg
IH0KKwogICAgIHZvaWQgdGVzdGJfaThyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsK
ICAgICAgICAgaWYgKGRzdCA9PSBYODZSZWdpc3RlcnM6OmVheCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444602</attachid>
            <date>2021-11-17 16:38:39 -0800</date>
            <delta_ts>2021-11-17 16:50:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233275-20211117163838.patch</filename>
            <type>text/plain</type>
            <size>26829</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1OTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MWU4ZjJhMTY2MGE0NDU5M2E2Njk0Y2JkNjk0MjU5YjY2MDk0ZjUzLi42ZmU5MjM3YjRhY2MwYjVl
NzRhM2FhZmE1ZTVhZGUxNWNhOGEzZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAyMS0xMS0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBicmFuY2hUZXN0MTYgb3BlcmF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMyNzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoVGVzdDE2KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkMTZTaWduZWRFeHRlbmRUbzMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoVGVzdDgpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hUZXN0MTYpOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6
OmJyYW5jaFRlc3QxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnRlc3Qz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnRlc3Q4KToKKyAgICAgICAg
KiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmg6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVySGVscGVyczo6bWFzazE2T25Db25kaXRpb24pOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQxNk9uQ29uZGl0aW9uKToKKyAgICAgICAgKiBhc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQ
Uzo6bG9hZDE2U2lnbmVkRXh0ZW5kVG8zMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
TUlQUzo6bWFzazE2T25UZXN0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpi
cmFuY2hUZXN0MTYpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDE2
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaFRlc3QxNik6CisgICAgICAgICogYXNz
ZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmNtcHdf
aW0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnRlc3R3X2ltKToKKyAgICAgICAgKiBh
c3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0QnJhbmNoVGVzdDgpOgor
ICAgICAgICAoSlNDOjp0ZXN0QnJhbmNoVGVzdDE2KToKKwogMjAyMS0xMS0xNSAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVzZSBvcGVyYXRpb24g
cGF0aCB3aGVuIFB1dEJ5VmFsIGNoaWxkMSBpcyBub3Qgc3BlY3VsYXRlZCBhcyBhIENlbGwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAppbmRl
eCA0MTMyMzAyZjhhODYwMTk0YTJkODhkODdmOGFmMDhmNjZlMTJlODExLi5hNWE2NTNhMWIxOTc0
ZmM0NDNhZjEzZGY4YzM0MzZiZTlkZTNkNTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC04ODAsNiArODgwLDEyIEBAIGNsYXNz
IE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQmFzZSB7CiAgICAgICAgIHJl
dHVybiBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaFRlc3Q4KGNvbmQsIEFkZHJlc3MoYWRkcmVz
cy5iYXNlLCBhZGRyZXNzLm9mZnNldCksIG1hc2spOwogICAgIH0KIAorICAgIHVzaW5nIE1hY3Jv
QXNzZW1ibGVyQmFzZTo6YnJhbmNoVGVzdDE2OworICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBFeHRlbmRlZEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1h
c2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1i
bGVyQmFzZTo6YnJhbmNoVGVzdDE2KGNvbmQsIEFkZHJlc3MoYWRkcmVzcy5iYXNlLCBhZGRyZXNz
Lm9mZnNldCksIG1hc2spOworICAgIH0KKwogI2Vsc2UgLy8gIUNQVShBRERSRVNTNjQpCiAKICAg
ICB2b2lkIGFkZFB0cihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApp
bmRleCA4NTc0MDU1YzliMWVmYmJiZWVkMDAxZTBlZTA5Y2FlNWFhMTA4N2RhLi42ZDU5YjE0YjE1
NjMzYTRmNDU3NzQzNTg3NWM2Yjk2MmVmMDVmODNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTgwNSw2ICsx
ODA1LDE0IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3NlbWJsZXIubGRyc2g8MzI+KGRl
c3QsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKKyAgICB2b2lk
IGxvYWQxNlNpZ25lZEV4dGVuZFRvMzIoY29uc3Qgdm9pZCogYWRkcmVzcywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbW92ZVRvQ2FjaGVkUmVnKFRydXN0ZWRJbW1QdHIoYWRkcmVz
cyksIGNhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcigpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRy
c2g8MzI+KGRlc3QsIG1lbW9yeVRlbXBSZWdpc3RlciwgQVJNNjRSZWdpc3RlcnM6OnpyKTsKKyAg
ICAgICAgaWYgKGRlc3QgPT0gbWVtb3J5VGVtcFJlZ2lzdGVyKQorICAgICAgICAgICAgY2FjaGVk
TWVtb3J5VGVtcFJlZ2lzdGVyKCkuaW52YWxpZGF0ZSgpOworICAgIH0KKwogICAgIHZvaWQgemVy
b0V4dGVuZDE2VG8zMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgbV9hc3NlbWJsZXIudXh0aDwzMj4oZGVzdCwgc3JjKTsKQEAgLTM1MTQsMzUgKzM1MjIs
NjkgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyPEFzc2VtYmxlcj4gewogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIo
LTEpKQogICAgIHsKICAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJI
ZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKLSAgICAgICAgTWFj
cm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNz
LCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBy
ZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2s4KTsKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBh
ZGRyZXNzLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Cisg
ICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBtYXNr
OCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwg
QWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMy
KC0xKSkKICAgICB7CiAgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVy
SGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7Ci0gICAgICAgIE1h
Y3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVz
cy5tX3B0ciwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAg
ICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCk7
CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywg
Y29uZCwgYWRkcmVzcy5tX3B0ciwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZh
bGlkYXRlKCkpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIG1lbW9yeVRlbXBS
ZWdpc3RlciwgbWFzazgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIEV4dGVuZGVkQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9
IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewogICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBN
YWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2sp
OwotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oYWRk
cmVzcy5vZmZzZXQpKSwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgp
KTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGFk
ZHJlc3Mub2Zmc2V0KSksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0
ZSgpKTsKIAogICAgICAgICBpZiAoTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjppc1Vuc2lnbmVkPE1h
Y3JvQXNzZW1ibGVyQVJNNjQ+KGNvbmQpKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyYihk
YXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2UsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubGRyYihtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSwg
bWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJs
ZXIubGRyc2I8MzI+KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSwgZGF0YVRlbXBSZWdp
c3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHJzYjwzMj4obWVtb3J5VGVtcFJlZ2lz
dGVyLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAKLSAgICAgICAgcmV0dXJu
IGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCk7CisgICAgICAgIHJl
dHVybiBicmFuY2hUZXN0MzIoY29uZCwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBtYXNrOCk7CiAgICAg
fQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUluZGV4
IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAg
ICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhP
bkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVySGVs
cGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZ2V0Q2FjaGVkRGF0
YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFRl
c3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCk7CisgICAgICAgIE1hY3JvQXNzZW1i
bGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZ2V0Q2Fj
aGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICByZXR1cm4g
YnJhbmNoVGVzdDMyKGNvbmQsIG1lbW9yeVRlbXBSZWdpc3RlciwgbWFzazgpOworICAgIH0KKwor
ICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJl
c3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAg
IFRydXN0ZWRJbW0zMiBtYXNrMTYgPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2sxNk9uQ29u
ZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
Ojpsb2FkMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZ2V0Q2FjaGVkTWVtb3J5
VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVz
dDMyKGNvbmQsIG1lbW9yeVRlbXBSZWdpc3RlciwgbWFzazE2KTsKKyAgICB9CisKKyAgICBKdW1w
IGJyYW5jaFRlc3QxNihSZXN1bHRDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJl
c3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAg
IFRydXN0ZWRJbW0zMiBtYXNrMTYgPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2sxNk9uQ29u
ZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
Ojpsb2FkMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcy5tX3B0ciwgZ2V0Q2FjaGVk
TWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICByZXR1cm4gYnJh
bmNoVGVzdDMyKGNvbmQsIG1lbW9yeVRlbXBSZWdpc3RlciwgbWFzazE2KTsKKyAgICB9CisKKyAg
ICBKdW1wIGJyYW5jaFRlc3QxNihSZXN1bHRDb25kaXRpb24gY29uZCwgRXh0ZW5kZWRBZGRyZXNz
IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7Cisg
ICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrMTYgPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2sx
Nk9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGFkZHJlc3Mub2Zmc2V0KSksIGdldENhY2hlZE1l
bW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKworICAgICAgICBpZiAoTWFjcm9B
c3NlbWJsZXJIZWxwZXJzOjppc1Vuc2lnbmVkPE1hY3JvQXNzZW1ibGVyQVJNNjQ+KGNvbmQpKQor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyaChtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mu
YmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9h
c3NlbWJsZXIubGRyc2g8MzI+KG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5iYXNlLCBtZW1v
cnlUZW1wUmVnaXN0ZXIpOworCisgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgbWVt
b3J5VGVtcFJlZ2lzdGVyLCBtYXNrMTYpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoVGVzdDE2
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1h
c2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2sx
NiA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQs
IG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQxNk9uQ29uZGl0aW9u
KCp0aGlzLCBjb25kLCBhZGRyZXNzLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKSk7CisgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgbWVtb3J5VGVt
cFJlZ2lzdGVyLCBtYXNrMTYpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoMzJXaXRoVW5hbGln
bmVkSGFsZldvcmRzKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRy
dXN0ZWRJbW0zMiByaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggZjYxNWE1MGNlZTk1ZjBlOGZjNDA3MTQ5
YzI0MTA0OWY3YjE2YjZhYS4uYjUzOTY5NGIwOTA5MzA3MGU3Yjc4OTMxYjhlNjJkYzJkMWMyNDM2
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTXY3LmgKQEAgLTE3OTUsNiArMTc5NSwzMSBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxl
ckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAg
ICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgbWFzazgp
OwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJlc3VsdENvbmRpdGlvbiBjb25kLCBC
YXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQor
ICAgIHsKKyAgICAgICAgLy8gdXNlIGFkZHJlc3NUZW1wUmVnaXN0ZXIgaW5jYXNlIHRoZSBicmFu
Y2hUZXN0MTYgd2UgY2FsbCB1c2VzIGRhdGFUZW1wUmVnaXN0ZXIuIDotLworICAgICAgICBUcnVz
dGVkSW1tMzIgbWFzazE2ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrMTZPbkNvbmRpdGlv
bigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9h
ZDE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIp
OworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIs
IG1hc2sxNik7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hUZXN0MTYoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIo
LTEpKQorICAgIHsKKyAgICAgICAgLy8gdXNlIGFkZHJlc3NUZW1wUmVnaXN0ZXIgaW5jYXNlIHRo
ZSBicmFuY2hUZXN0MTYgd2UgY2FsbCB1c2VzIGRhdGFUZW1wUmVnaXN0ZXIuIDotLworICAgICAg
ICBUcnVzdGVkSW1tMzIgbWFzazE2ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrMTZPbkNv
bmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVy
czo6bG9hZDE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGFkZHJlc3NUZW1wUmVn
aXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVn
aXN0ZXIsIG1hc2sxNik7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hUZXN0MTYoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9
IFRydXN0ZWRJbW0zMigtMSkpCisgICAgeworICAgICAgICAvLyB1c2UgYWRkcmVzc1RlbXBSZWdp
c3RlciBpbmNhc2UgdGhlIGJyYW5jaFRlc3QxNiB3ZSBjYWxsIHVzZXMgZGF0YVRlbXBSZWdpc3Rl
ci4gOi0vCisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrMTYgPSBNYWNyb0Fzc2VtYmxlckhlbHBl
cnM6Om1hc2sxNk9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwg
QWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAg
ICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgbWFzazE2
KTsKKyAgICB9CisKICAgICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQsIFB0clRhZykK
ICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJ4KHRhcmdldCk7CkBAIC0yMDQxLDggKzIwNjYs
OCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgLy8gYXNtIG9wcyBsaWtlIHRlc3QsIG9yIHBzZXVkbyBv
cHMgbGlrZSBwb3AoKS4KICAgICB2b2lkIHRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQWRk
cmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
LSAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICB0ZXN0
MzIoZGF0YVRlbXBSZWdpc3RlciwgbWFzayk7CisgICAgICAgIGxvYWQzMihhZGRyZXNzLCBhZGRy
ZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgdGVzdDMyKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIG1h
c2spOwogICAgICAgICBtX2Fzc2VtYmxlci5pdChhcm1WN0NvbmRpdGlvbihjb25kKSwgZmFsc2Up
OwogICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVzdCwgQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VV
SW50MTYoMSkpOwogICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVzdCwgQVJNVGh1bWJJbW1lZGlh
dGU6Om1ha2VVSW50MTYoMCkpOwpAQCAtMjA1MSw4ICsyMDc2LDggQEAgY2xhc3MgTWFjcm9Bc3Nl
bWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewog
ICAgIHZvaWQgdGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1
c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIFRydXN0ZWRJ
bW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhp
cywgY29uZCwgbWFzayk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNv
bmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAg
IHRlc3QzMihkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
SGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgYWRkcmVzc1Rl
bXBSZWdpc3Rlcik7CisgICAgICAgIHRlc3QzMihhZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrOCk7
CiAgICAgICAgIG1fYXNzZW1ibGVyLml0KGFybVY3Q29uZGl0aW9uKGNvbmQpLCBmYWxzZSk7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0LCBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQx
NigxKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0LCBBUk1UaHVtYkltbWVkaWF0ZTo6
bWFrZVVJbnQxNigwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVySGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckhlbHBlcnMuaAppbmRleCA1NDRmMTk4ODQyMzE1YjljZGMwM2Jm
NDFjZjljMzMxMDMzZGFkODAwLi45ZjA2NjE4ZGY3MjNlMDE1ODQ2OGI4N2VmZTc4NzIyYTY5OTU2
MTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVySGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJIZWxwZXJzLmgKQEAgLTEyNiw2ICsxMjYsMzAgQEAgaW5saW5lIHR5cGVuYW1l
IE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMyIG1hc2s4T25Db25kaXRpb24oTWFjcm9B
c3NlbWJsZXIKICAgICByZXR1cm4gdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVk
SW1tMzIoc3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZS5tX3ZhbHVlKSk7CiB9CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZT4KK2lubGluZSB0eXBlbmFtZSBNYWNyb0Fzc2Vt
YmxlclR5cGU6OlRydXN0ZWRJbW0zMiBtYXNrMTZPbkNvbmRpdGlvbihNYWNyb0Fzc2VtYmxlclR5
cGUmLCB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIgdmFsdWUpCit7Cisg
ICAgaWYgKGlzVW5zaWduZWQ8TWFjcm9Bc3NlbWJsZXJUeXBlPihjb25kKSkKKyAgICAgICAgcmV0
dXJuIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0
PHVpbnQxNl90Pih2YWx1ZS5tX3ZhbHVlKSk7CisgICAgcmV0dXJuIHR5cGVuYW1lIE1hY3JvQXNz
ZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDE2X3Q+KHZhbHVlLm1fdmFs
dWUpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlPgoraW5saW5l
IHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMyIG1hc2sxNk9uQ29uZGl0
aW9uKE1hY3JvQXNzZW1ibGVyVHlwZSYsIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6UmVz
dWx0Q29uZGl0aW9uIGNvbmQsIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1c3RlZElt
bTMyIHZhbHVlKQoreworICAgIC8vIElmIGNvbmRpdGlvbiBpcyBaZXJvIG9yIE5vblplcm8sIHVw
cGVyIGJpdHMgYXJlIHVucmVsYXRlZC4KKyAgICAvLyBTaW5jZSBicmFuY2hUZXN0MzIgaGFuZGxl
cyAtMSBpbiBhbiBvcHRpbWl6ZWQgbWFubmVyLCB3ZSBrZWVwIC0xIGFzIGlzIGluc3RlYWQgb2Yg
Y29udmVydGluZyBpdCB0byAweGZmZmYuCisgICAgaWYgKGNvbmQgPT0gTWFjcm9Bc3NlbWJsZXJU
eXBlOjpaZXJvIHx8IGNvbmQgPT0gTWFjcm9Bc3NlbWJsZXJUeXBlOjpOb25aZXJvKSB7CisgICAg
ICAgIGlmICh2YWx1ZS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwor
ICAgIH0KKyAgICBpZiAoaXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxlclR5cGU+KGNvbmQpKQorICAg
ICAgICByZXR1cm4gdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIoc3Rh
dGljX2Nhc3Q8dWludDE2X3Q+KHZhbHVlLm1fdmFsdWUpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKGNvbmQgIT0gTWFjcm9Bc3NlbWJsZXJUeXBlOjpPdmVyZmxvdywgIk92ZXJmbG93IGlzIG5v
dCB1c2VkIGZvciAxNmJpdCB0ZXN0IG9wZXJhdGlvbnMuIik7CisgICAgQVNTRVJUKGlzU2lnbmVk
PE1hY3JvQXNzZW1ibGVyVHlwZT4oY29uZCkpOworICAgIHJldHVybiB0eXBlbmFtZSBNYWNyb0Fz
c2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQxNl90Pih2YWx1ZS5tX3Zh
bHVlKSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZSwgdHlwZW5h
bWUgQ29uZGl0aW9uLCB0eXBlbmFtZSAuLi5BcmdzPgogdm9pZCBsb2FkOE9uQ29uZGl0aW9uKE1h
Y3JvQXNzZW1ibGVyVHlwZSYgaml0LCBDb25kaXRpb24gY29uZCwgQXJncy4uLiBhcmdzKQogewpA
QCAtMTM0LDQgKzE1OCwxMiBAQCB2b2lkIGxvYWQ4T25Db25kaXRpb24oTWFjcm9Bc3NlbWJsZXJU
eXBlJiBqaXQsIENvbmRpdGlvbiBjb25kLCBBcmdzLi4uIGFyZ3MpCiAgICAgcmV0dXJuIGppdC5s
b2FkOFNpZ25lZEV4dGVuZFRvMzIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKIH0KIAor
dGVtcGxhdGU8dHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlLCB0eXBlbmFtZSBDb25kaXRpb24s
IHR5cGVuYW1lIC4uLkFyZ3M+Cit2b2lkIGxvYWQxNk9uQ29uZGl0aW9uKE1hY3JvQXNzZW1ibGVy
VHlwZSYgaml0LCBDb25kaXRpb24gY29uZCwgQXJncy4uLiBhcmdzKQoreworICAgIGlmIChpc1Vu
c2lnbmVkPE1hY3JvQXNzZW1ibGVyVHlwZT4oY29uZCkpCisgICAgICAgIHJldHVybiBqaXQubG9h
ZDE2KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgcmV0dXJuIGppdC5sb2FkMTZT
aWduZWRFeHRlbmRUbzMyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cit9CisKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCBiODFiNzJmOTJkZTU0ZjJhMjBhNjg2YTMxNGY4
MTg1NjRhZmM5YTY1Li5kNDA4NDQ5MWMyNzdiYTA2MmQzZTZiNDYzMzU3OTJlZDlmNDU5NThmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
TUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJNSVBTLmgKQEAgLTEyNzIsNiArMTI3MiwyNCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlck1JUFMg
OiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgfQog
ICAgIH0KIAorICAgIC8qIE5lZWQgdG8gdXNlIHplcm8tZXh0ZW5lZCBsb2FkIGhhbGYtd29yZCBm
b3IgbG9hZDE2LiAgKi8KKyAgICB2b2lkIGxvYWQxNlNpZ25lZEV4dGVuZFRvMzIoQWRkcmVzcyBh
ZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoYWRkcmVzcy5vZmZz
ZXQgPj0gLTMyNzY4ICYmIGFkZHJlc3Mub2Zmc2V0IDw9IDMyNzY3CisgICAgICAgICAgICAmJiAh
bV9maXhlZFdpZHRoKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubGgoZGVzdCwgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyoKKyAg
ICAgICAgICAgICAgICBsdWkgICAgIGFkZHJUZW1wLCAob2Zmc2V0ICsgMHg4MDAwKSA+PiAxNgor
ICAgICAgICAgICAgICAgIGFkZHUgICAgYWRkclRlbXAsIGFkZHJUZW1wLCBiYXNlCisgICAgICAg
ICAgICAgICAgbGggICAgICBkZXN0LCAob2Zmc2V0ICYgMHhmZmZmKShhZGRyVGVtcCkKKyAgICAg
ICAgICAgICAgKi8KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmx1aShhZGRyVGVtcFJlZ2lzdGVy
LCAoYWRkcmVzcy5vZmZzZXQgKyAweDgwMDApID4+IDE2KTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5iYXNl
KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxoKGRlc3QsIGFkZHJUZW1wUmVnaXN0ZXIsIGFk
ZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgbG9hZDE2U2lnbmVk
RXh0ZW5kVG8zMihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgaWYgKCFtX2ZpeGVkV2lkdGgpIHsKQEAgLTIwNDMsNiArMjA2MSwzNCBAQCBjbGFzcyBN
YWNyb0Fzc2VtYmxlck1JUFMgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJs
ZXI+IHsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVy
LCBtYXNrOCk7CiAgICAgfQogCisgICAgVHJ1c3RlZEltbTMyIG1hc2sxNk9uVGVzdChSZXN1bHRD
b25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIG1hc2spCisgICAgeworICAgICAgICBpZiAobWFz
ay5tX3ZhbHVlID09IC0xICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICByZXR1cm4gVHJ1
c3RlZEltbTMyKC0xKTsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFz
azE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoVGVzdDE2KFJlc3VsdENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3Rl
ZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgVHJ1c3RlZElt
bTMyIG1hc2sxNiA9IG1hc2sxNk9uVGVzdChjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJIZWxwZXJzOjpsb2FkMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0
YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRl
bXBSZWdpc3RlciwgbWFzazE2KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFRlc3QxNihSZXN1
bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRy
dXN0ZWRJbW0zMigtMSkpCisgICAgeworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2ID0gbWFz
azE2T25UZXN0KGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Omxv
YWQxNk9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNr
MTYpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJlc3VsdENvbmRpdGlvbiBjb25k
LCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1t
MzIoLTEpKQorICAgIHsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2sxNiA9IG1hc2sxNk9uVGVz
dChjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkMTZPbkNv
bmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAg
IHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazE2KTsKKyAg
ICB9CisKICAgICBKdW1wIGp1bXAoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFs
KE1JUFNSZWdpc3RlcnM6Onplcm8sIE1JUFNSZWdpc3RlcnM6Onplcm8pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bi5oCmluZGV4IDNmYWJjNGQ4OTE0MDQ3NGY0MGYxZmE3YTliMWJhZjliNzA3NmQ2ODAuLmEzZTAz
MWI3MDljMWY1ODc4YjQ3YjQ3YmJjZGZjMGE1ZjE5OTQ1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgK
QEAgLTI3NTksNiArMjc1OSwyNiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbiA6IHB1
YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICByZXR1cm4g
SnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCisgICAg
SnVtcCBicmFuY2hUZXN0MTYoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywg
VHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgVHJ1
c3RlZEltbTMyIG1hc2sxNihzdGF0aWNfY2FzdDxpbnQxNl90PihtYXNrLm1fdmFsdWUpKTsKKyAg
ICAgICAgaWYgKG1hc2sxNi5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIu
Y21wd19pbSgwLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdHdfaW0obWFzazE2Lm1fdmFsdWUsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5q
Q0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hUZXN0MTYo
UmVzdWx0Q29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFz
ayA9IFRydXN0ZWRJbW0zMigtMSkpCisgICAgeworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2
KHN0YXRpY19jYXN0PGludDE2X3Q+KG1hc2subV92YWx1ZSkpOworICAgICAgICBpZiAobWFzazE2
Lm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXB3X2ltKDAsIGFkZHJl
c3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0d19pbShtYXNrMTYubV92
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRp
b24oY29uZCkpKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBCYXNlSW5kZXggbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKICAgICAg
ICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJpZ2h0Lm1fdmFsdWUp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaAppbmRleCA1ZTgzOWYzNzRlYmJiNGQ2NjMxYTdlNjMzNDFiYTE0ZjYxOTkx
ZDg4Li5hYTdlYzAxZTM4NDhhZGE5ZmNhYjk1MDQyMzJmNjg3YzAzNDhjMzEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oCkBAIC0xNTYzLDcgKzE1NjMsMjMgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZfNjQgOiBw
dWJsaWMgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gewogICAgICAgICBNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0
ZXIoKSk7CiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVz
dDgoY29uZCwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSksIG1hc2s4KTsKICAgICB9Ci0gICAg
CisKKyAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDE2OworICAg
IEp1bXAgYnJhbmNoVGVzdDE2KFJlc3VsdENvbmRpdGlvbiBjb25kLCBFeHRlbmRlZEFkZHJlc3Mg
YWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAg
ICAgICAgVHJ1c3RlZEltbTMyIG1hc2sxNihzdGF0aWNfY2FzdDxpbnQxNl90PihtYXNrLm1fdmFs
dWUpKTsKKyAgICAgICAgVHJ1c3RlZEltbVB0ciBhZGRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KGFkZHJlc3Mub2Zmc2V0KSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3Zl
KGFkZHIsIHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpicmFuY2hUZXN0MTYoY29uZCwgQmFzZUluZGV4KHNjcmF0Y2hSZWdpc3Rlcigp
LCBhZGRyZXNzLmJhc2UsIFRpbWVzT25lKSwgbWFzazE2KTsKKyAgICB9CisKKyAgICBKdW1wIGJy
YW5jaFRlc3QxNihSZXN1bHRDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3Ms
IFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIFRy
dXN0ZWRJbW0zMiBtYXNrMTYoc3RhdGljX2Nhc3Q8aW50MTZfdD4obWFzay5tX3ZhbHVlKSk7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVz
cy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0MTYoY29uZCwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIo
KSksIG1hc2sxNik7CisgICAgfQorCiAgICAgdm9pZCB4Y2hnNjQoUmVnaXN0ZXJJRCByZWcsIEFk
ZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdxX3JtKHJlZywg
YWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRleCA4ZWFmODQ1MWIyZWI0OTk4ZWE5Njc1ZTRh
N2ZjYjQxMDc4YjEzNjVkLi43MTQxMzYzNTM1ZDQ1MDY5MzI0NTU5YmFhZjQwMjVhNjZhYjdhOTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgK
QEAgLTIwNDksNiArMjA0OSwxOSBAQCBjbGFzcyBYODZBc3NlbWJsZXIgewogICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfQ01QX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgY21wd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIo
aW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUp
OworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9V
UDFfT1BfQ01QLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIucHJl
Zml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQ01QLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKwogICAg
IHZvaWQgY21wd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRF
TkRfOF8zMihpbW0pKSB7CkBAIC0yMTUxLDcgKzIxNjQsMjEgQEAgY2xhc3MgWDg2QXNzZW1ibGVy
IHsKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOwogICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfVEVTVF9Fdkd2LCBzcmMsIGRzdCk7CiAgICAgfQot
ICAgIAorCisgICAgdm9pZCB0ZXN0d19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0la
RSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXZJeiwgR1JPVVAz
X09QX1RFU1QsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2
KGltbSk7CisgICAgfQorCisgICAgdm9pZCB0ZXN0d19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19Fdkl6LCBHUk9VUDNfT1BfVEVTVCwgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0p
OworICAgIH0KKwogICAgIHZvaWQgdGVzdGJfaThyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQog
ICAgIHsKICAgICAgICAgaWYgKGRzdCA9PSBYODZSZWdpc3RlcnM6OmVheCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggZTMzODU0ZTE4ZDJiYzYy
ZDFlZWI5MjRjNGIzZjQ1MjM1M2RhYzQwNS4uODIwOTBlOWIyMzBjNmE0NTZlYTBhYWJhM2RhODA1
MTliMmQ3YjQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90
ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFz
bS5jcHAKQEAgLTMyNiw2ICszMjYsOTYgQEAgdm9pZCB0ZXN0QnJhbmNoVHJ1bmNhdGVEb3VibGVU
b0ludDMyKGRvdWJsZSB2YWwsIGludDMyX3QgZXhwZWN0ZWQpCiAgICAgfSksIGV4cGVjdGVkKTsK
IH0KIAordm9pZCB0ZXN0QnJhbmNoVGVzdDgoKQoreworICAgIGZvciAoYXV0byB2YWx1ZSA6IGlu
dDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gdmFsdWUyIDogaW50MzJPcGVyYW5k
cygpKSB7CisgICAgICAgICAgICBhdXRvIHRlc3QxID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVy
cyYgaml0KSB7CisgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKwor
ICAgICAgICAgICAgICAgIGF1dG8gYnJhbmNoID0gaml0LmJyYW5jaFRlc3Q4KE1hY3JvQXNzZW1i
bGVyOjpOb25aZXJvLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodmFsdWUyKSk7CisgICAgICAgICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIEdQUkluZm86OnJldHVyblZh
bHVlR1BSKTsKKyAgICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBqaXQuanVtcCgpOworICAgICAg
ICAgICAgICAgIGJyYW5jaC5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7Cisg
ICAgICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOworCisgICAgICAgICAgICAgICAgZW1pdEZ1
bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAg
ICAgICB9KTsKKworICAgICAgICAgICAgYXV0byB0ZXN0MiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7
CisKKyAgICAgICAgICAgICAgICBhdXRvIGJyYW5jaCA9IGppdC5icmFuY2hUZXN0OChNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywgQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoR1BSSW5mbzo6YXJndW1l
bnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIENDYWxsSGVscGVyczo6VGltZXNPbmUpLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih2YWx1ZTIpKTsKKyAgICAgICAgICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOworICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9IGppdC5qdW1wKCk7CisgICAgICAgICAg
ICAgICAgYnJhbmNoLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAg
ICAgICAgICAgICBkb25lLmxpbmsoJmppdCk7CisKKyAgICAgICAgICAgICAgICBlbWl0RnVuY3Rp
b25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICAgICAgICAgIGlmIChzdGF0
aWNfY2FzdDx1aW50OF90Pih2YWx1ZSkgJiBzdGF0aWNfY2FzdDx1aW50OF90Pih2YWx1ZTIpKQor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IDE7CisKKyAgICAgICAgICAgIHVpbnQ4X3QgYXJyYXlb
XSA9IHsKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90Pih2YWx1ZSkKKyAgICAg
ICAgICAgIH07CisgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pih0ZXN0MSwgYXJyYXkp
LCByZXN1bHQpOworICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4odGVzdDIsIGFycmF5
LCAwKSwgcmVzdWx0KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0QnJhbmNoVGVz
dDE2KCkKK3sKKyAgICBmb3IgKGF1dG8gdmFsdWUgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgZm9yIChhdXRvIHZhbHVlMiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgYXV0
byB0ZXN0MSA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAg
ICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGJy
YW5jaCA9IGppdC5icmFuY2hUZXN0MTYoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjApLCBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMih2YWx1ZTIpKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigwKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICAgICAg
ICAgIGF1dG8gZG9uZSA9IGppdC5qdW1wKCk7CisgICAgICAgICAgICAgICAgYnJhbmNoLmxpbmso
JmppdCk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoMSksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgICAgICBkb25lLmxp
bmsoJmppdCk7CisKKyAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwor
ICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICBhdXRvIHRlc3QyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAg
ICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgIGF1
dG8gYnJhbmNoID0gaml0LmJyYW5jaFRlc3QxNihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgQ0Nh
bGxIZWxwZXJzOjpCYXNlSW5kZXgoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEsIENDYWxsSGVscGVyczo6VGltZXNUd28pLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMih2YWx1ZTIpKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMigwKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICAgICAgICAg
IGF1dG8gZG9uZSA9IGppdC5qdW1wKCk7CisgICAgICAgICAgICAgICAgYnJhbmNoLmxpbmsoJmpp
dCk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
MSksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgICAgICBkb25lLmxpbmso
JmppdCk7CisKKyAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAg
ICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBp
bnQgcmVzdWx0ID0gMDsKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1aW50MTZfdD4odmFs
dWUpICYgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHZhbHVlMikpCisgICAgICAgICAgICAgICAgcmVz
dWx0ID0gMTsKKworICAgICAgICAgICAgdWludDE2X3QgYXJyYXlbXSA9IHsKKyAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4odmFsdWUpCisgICAgICAgICAgICB9OworICAgICAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4odGVzdDEsIGFycmF5KSwgcmVzdWx0KTsKKyAgICAg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KHRlc3QyLCBhcnJheSwgMCksIHJlc3VsdCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKICNpZiBDUFUoWDg2XzY0KQogdm9pZCB0ZXN0QnJhbmNoVGVz
dEJpdDMyUmVnUmVnKCkKIHsKQEAgLTU2NDksNiArNTczOSw5IEBAIHZvaWQgcnVuKGNvbnN0IGNo
YXIqIGZpbHRlcikgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwogICAgIFJVTih0
ZXN0TG9hZFN0b3JlUGFpcjMyKCkpOwogICAgIFJVTih0ZXN0U3ViMzJBcmdJbW0oKSk7CiAKKyAg
ICBSVU4odGVzdEJyYW5jaFRlc3Q4KCkpOworICAgIFJVTih0ZXN0QnJhbmNoVGVzdDE2KCkpOwor
CiAjaWYgQ1BVKFg4Nl82NCkKICAgICBSVU4odGVzdEJyYW5jaFRlc3RCaXQzMlJlZ1JlZygpKTsK
ICAgICBSVU4odGVzdEJyYW5jaFRlc3RCaXQzMlJlZ0ltbSgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444608</attachid>
            <date>2021-11-17 16:50:46 -0800</date>
            <delta_ts>2021-11-17 17:17:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233275-20211117165045.patch</filename>
            <type>text/plain</type>
            <size>27870</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1OTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MWU4ZjJhMTY2MGE0NDU5M2E2Njk0Y2JkNjk0MjU5YjY2MDk0ZjUzLi5hYjljZDFhYzVkYWEzNjZh
ZWUyMzA3MWRkNTJiZmMyNDZhYzE0MGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAyMS0xMS0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBicmFuY2hUZXN0MTYgb3BlcmF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMyNzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYnJh
bmNoVGVzdDE2IHRvIGFsbCBtYWNybyBhc3NlbWJsZXJzLiBBbmQgaXQgYWxzbyBmaXhlcyB0aGUg
ZXhpc3RpbmcgYnVnIG9mCisgICAgICAgIGVkZ2UgY2FzZSBvZiBicmFuY2hUZXN0ODogd2hlbiB3
ZSBjYW5ub3QgcmVwcmVzZW50IHRoZSBpbW0gYXMgQVJNIGxvZ2ljYWwgdmFsdWUsIHRoZW4gd2Ug
YXJlCisgICAgICAgIGZhaWxpbmcgdG8gZW1pdCB0aGUgcmlnaHQgaW5zdHJ1Y3Rpb25zLiBQcm9i
YWJseSB0aGlzIGJ1ZyBkb2VzIG5vdCBhcHBlYXIgc2luY2Ugd2UgYXJlIG5vdCB1c2luZworICAg
ICAgICBzdWNoIGEgdmFsdWUgYXMgYW4gaW1tIGZvciBicmFuY2hUZXN0OC4gV2UgYWRkZWQgdGVz
dHMgdG8gdGVzdG1hc20gc28gdGhhdCB0aGVzZSBjb2RlIGlzIHN0cmVzc2VkCisgICAgICAgIG5v
dy4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoVGVzdDE2KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojps
b2FkMTZTaWduZWRFeHRlbmRUbzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YnJhbmNoVGVzdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJh
bmNoVGVzdDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hUZXN0
MTYpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmJyYW5jaFRlc3QxNik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnRlc3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNdjc6OnRlc3Q4KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJIZWxw
ZXJzLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazE2T25Db25k
aXRpb24pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQxNk9uQ29u
ZGl0aW9uKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bG9hZDE2KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJNSVBTOjpsb2FkMTZTaWduZWRFeHRlbmRUbzMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjptYXNrMTZPblRlc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OmJyYW5jaFRlc3QxNik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjpicmFuY2hUZXN0MTYpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoVGVzdDE2KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6Y21wd19pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6dGVzdHdfaW0p
OgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6OnRlc3RC
cmFuY2hUZXN0OCk6CisgICAgICAgIChKU0M6OnRlc3RCcmFuY2hUZXN0MTYpOgorCiAyMDIxLTEx
LTE1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
VXNlIG9wZXJhdGlvbiBwYXRoIHdoZW4gUHV0QnlWYWwgY2hpbGQxIGlzIG5vdCBzcGVjdWxhdGVk
IGFzIGEgQ2VsbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oCmluZGV4IDQxMzIzMDJmOGE4NjAxOTRhMmQ4OGQ4N2Y4YWYwOGY2NmUxMmU4MTEu
LmE1YTY1M2ExYjE5NzRmYzQ0M2FmMTNkZjhjMzQzNmJlOWRlM2Q1NDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTg4MCw2ICs4
ODAsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJCYXNl
IHsKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoVGVzdDgoY29uZCwg
QWRkcmVzcyhhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KSwgbWFzayk7CiAgICAgfQogCisg
ICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hUZXN0MTY7CisgICAgSnVtcCBicmFu
Y2hUZXN0MTYoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEV4dGVuZGVkQWRkcmVzcyBhZGRyZXNzLCBU
cnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisgICAgeworICAgICAgICByZXR1
cm4gTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hUZXN0MTYoY29uZCwgQWRkcmVzcyhhZGRyZXNz
LmJhc2UsIGFkZHJlc3Mub2Zmc2V0KSwgbWFzayk7CisgICAgfQorCiAjZWxzZSAvLyAhQ1BVKEFE
RFJFU1M2NCkKIAogICAgIHZvaWQgYWRkUHRyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCmluZGV4IDg1NzQwNTVjOWIxZWZiYmJlZWQwMDFlMGVlMDljYWU1YWExMDg3
ZGEuLmJiOTdiYWMzM2RmYjE3YmFiYzZiMWUzYzExMjE0NDBmNWZkOGQzMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5o
CkBAIC0xODA1LDYgKzE4MDUsMTQgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1Ymxp
YyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICBtX2Fzc2VtYmxl
ci5sZHJzaDwzMj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAg
IH0KIAorICAgIHZvaWQgbG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihjb25zdCB2b2lkKiBhZGRyZXNz
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlVG9DYWNoZWRSZWcoVHJ1c3Rl
ZEltbVB0cihhZGRyZXNzKSwgY2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVyKCkpOworICAgICAgICBt
X2Fzc2VtYmxlci5sZHJzaDwzMj4oZGVzdCwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBBUk02NFJlZ2lz
dGVyczo6enIpOworICAgICAgICBpZiAoZGVzdCA9PSBtZW1vcnlUZW1wUmVnaXN0ZXIpCisgICAg
ICAgICAgICBjYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXIoKS5pbnZhbGlkYXRlKCk7CisgICAgfQor
CiAgICAgdm9pZCB6ZXJvRXh0ZW5kMTZUbzMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci51eHRoPDMyPihkZXN0LCBzcmMpOwpAQCAt
MzQxMCw2ICszNDE4LDcgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICAgICAgICAgIHJldHVybiBK
dW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBBU1NF
UlQocmVnICE9IGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgbW92ZShtYXNrLCBnZXRD
YWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwogICAgICAgICAgICAgbV9h
c3NlbWJsZXIudHN0PDMyPihyZWcsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICB9CkBAIC0z
NTE0LDM1ICszNTIzLDY5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJl
c3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0g
VHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1h
Y3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7
Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywg
Y29uZCwgYWRkcmVzcywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgp
KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBt
YXNrOCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigq
dGhpcywgY29uZCwgYWRkcmVzcywgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZh
bGlkYXRlKCkpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIG1lbW9yeVRlbXBS
ZWdpc3RlciwgbWFzazgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9
IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewogICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBN
YWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2sp
OwotICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMs
IGNvbmQsIGFkZHJlc3MubV9wdHIsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFs
aWRhdGUoKSk7Ci0gICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdp
c3RlciwgbWFzazgpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25k
aXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MubV9wdHIsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdp
c3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25k
LCBtZW1vcnlUZW1wUmVnaXN0ZXIsIG1hc2s4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFRl
c3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBFeHRlbmRlZEFkZHJlc3MgYWRkcmVzcywgVHJ1c3Rl
ZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKICAgICAgICAgVHJ1c3RlZElt
bTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlz
LCBjb25kLCBtYXNrKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KGFkZHJlc3Mub2Zmc2V0KSksIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9j
YXN0PHZvaWQqPihhZGRyZXNzLm9mZnNldCkpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKSk7CiAKICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVySGVscGVyczo6
aXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxlckFSTTY0Pihjb25kKSkKLSAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmxkcmIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5iYXNlLCBkYXRhVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcmIobWVtb3J5VGVtcFJlZ2lzdGVyLCBh
ZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmxkcnNiPDMyPihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2Us
IGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyc2I8MzI+KG1l
bW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogCi0g
ICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazgp
OworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIG1lbW9yeVRlbXBSZWdpc3Rlciwg
bWFzazgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIEJhc2VJbmRleCBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigt
MSkpCiAgICAgewogICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhl
bHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOwotICAgICAgICBNYWNy
b0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3Ms
IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIHJl
dHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazgpOworICAgICAg
ICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFk
ZHJlc3MsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIG1hc2s4
KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFRlc3QxNihSZXN1bHRDb25kaXRpb24gY29uZCwg
QWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisg
ICAgeworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
OjptYXNrMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVySGVscGVyczo6bG9hZDE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGdl
dENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgcmV0
dXJuIGJyYW5jaFRlc3QzMihjb25kLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIG1hc2sxNik7CisgICAg
fQorCisgICAgSnVtcCBicmFuY2hUZXN0MTYoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29sdXRl
QWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisg
ICAgeworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
OjptYXNrMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVySGVscGVyczo6bG9hZDE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MubV9w
dHIsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIG1hc2sxNik7
CisgICAgfQorCisgICAgSnVtcCBicmFuY2hUZXN0MTYoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEV4
dGVuZGVkQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigt
MSkpCisgICAgeworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2ID0gTWFjcm9Bc3NlbWJsZXJI
ZWxwZXJzOjptYXNrMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihhZGRyZXNzLm9mZnNldCkp
LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisKKyAgICAg
ICAgaWYgKE1hY3JvQXNzZW1ibGVySGVscGVyczo6aXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxlckFS
TTY0Pihjb25kKSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcmgobWVtb3J5VGVtcFJlZ2lz
dGVyLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcnNoPDMyPihtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJl
c3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKKworICAgICAgICByZXR1cm4gYnJhbmNoVGVz
dDMyKGNvbmQsIG1lbW9yeVRlbXBSZWdpc3RlciwgbWFzazE2KTsKKyAgICB9CisKKyAgICBKdW1w
IGJyYW5jaFRlc3QxNihSZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRy
dXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIFRydXN0
ZWRJbW0zMiBtYXNrMTYgPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2sxNk9uQ29uZGl0aW9u
KCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2Fk
MTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJl
Z2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNv
bmQsIG1lbW9yeVRlbXBSZWdpc3RlciwgbWFzazE2KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5j
aDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcyhSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJ
bmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IGY2MTVhNTBjZWU5
NWYwZThmYzQwNzE0OWMyNDEwNDlmN2IxNmI2YWEuLmI1Mzk2OTRiMDkwOTMwNzBlN2I3ODkzMWI4
ZTYyZGMyZDFjMjQzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xNzk1LDYgKzE3OTUsMzEgQEAgY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2Vt
Ymxlcj4gewogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVn
aXN0ZXIsIG1hc2s4KTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaFRlc3QxNihSZXN1bHRDb25k
aXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3Rl
ZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIC8vIHVzZSBhZGRyZXNzVGVtcFJlZ2lzdGVyIGlu
Y2FzZSB0aGUgYnJhbmNoVGVzdDE2IHdlIGNhbGwgdXNlcyBkYXRhVGVtcFJlZ2lzdGVyLiA6LS8K
KyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2sxNiA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFz
azE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxl
ckhlbHBlcnM6OmxvYWQxNk9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyLCBtYXNrMTYpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJl
c3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0g
VHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIC8vIHVzZSBhZGRyZXNzVGVtcFJlZ2lz
dGVyIGluY2FzZSB0aGUgYnJhbmNoVGVzdDE2IHdlIGNhbGwgdXNlcyBkYXRhVGVtcFJlZ2lzdGVy
LiA6LS8KKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2sxNiA9IE1hY3JvQXNzZW1ibGVySGVscGVy
czo6bWFzazE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6OmxvYWQxNk9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrMTYpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoVGVz
dDE2KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3Rl
ZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgLy8gdXNlIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIgaW5jYXNlIHRoZSBicmFuY2hUZXN0MTYgd2UgY2FsbCB1c2VzIGRh
dGFUZW1wUmVnaXN0ZXIuIDotLworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2ID0gTWFjcm9B
c3NlbWJsZXJIZWxwZXJzOjptYXNrMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7Cisg
ICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDE2T25Db25kaXRpb24o
KnRoaXMsIGNvbmQsIEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciksIGFkZHJlc3NUZW1wUmVn
aXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVn
aXN0ZXIsIG1hc2sxNik7CisgICAgfQorCiAgICAgdm9pZCBmYXJKdW1wKFJlZ2lzdGVySUQgdGFy
Z2V0LCBQdHJUYWcpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5ieCh0YXJnZXQpOwpAQCAt
MjA0MSw4ICsyMDY2LDggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgIC8vIGFzbSBvcHMgbGlrZSB0ZXN0
LCBvciBwc2V1ZG8gb3BzIGxpa2UgcG9wKCkuCiAgICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgdGVzdDMyKGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2spOworICAgICAgICBsb2FkMzIo
YWRkcmVzcywgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIHRlc3QzMihhZGRyZXNzVGVt
cFJlZ2lzdGVyLCBtYXNrKTsKICAgICAgICAgbV9hc3NlbWJsZXIuaXQoYXJtVjdDb25kaXRpb24o
Y29uZCksIGZhbHNlKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFSTVRodW1iSW1t
ZWRpYXRlOjptYWtlVUludDE2KDEpKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFS
TVRodW1iSW1tZWRpYXRlOjptYWtlVUludDE2KDApKTsKQEAgLTIwNTEsOCArMjA3Niw4IEBAIGNs
YXNzIE1hY3JvQXNzZW1ibGVyQVJNdjcgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxB
c3NlbWJsZXI+IHsKICAgICB2b2lkIHRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNz
IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25D
b25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOwotICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBl
cnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0
ZXIpOwotICAgICAgICB0ZXN0MzIoZGF0YVRlbXBSZWdpc3RlciwgbWFzazgpOworICAgICAgICBN
YWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJl
c3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICB0ZXN0MzIoYWRkcmVzc1RlbXBSZWdp
c3RlciwgbWFzazgpOwogICAgICAgICBtX2Fzc2VtYmxlci5pdChhcm1WN0NvbmRpdGlvbihjb25k
KSwgZmFsc2UpOwogICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVzdCwgQVJNVGh1bWJJbW1lZGlh
dGU6Om1ha2VVSW50MTYoMSkpOwogICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVzdCwgQVJNVGh1
bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmgKaW5kZXggNTQ0ZjE5ODg0
MjMxNWI5Y2RjMDNiZjQxY2Y5YzMzMTAzM2RhZDgwMC4uOWYwNjYxOGRmNzIzZTAxNTg0NjhiODdl
ZmU3ODcyMmE2OTk1NjE3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVySGVscGVycy5oCkBAIC0xMjYsNiArMTI2LDMwIEBAIGlu
bGluZSB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMiBtYXNrOE9uQ29u
ZGl0aW9uKE1hY3JvQXNzZW1ibGVyCiAgICAgcmV0dXJuIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVy
VHlwZTo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUubV92YWx1ZSkpOwog
fQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU+CitpbmxpbmUgdHlwZW5h
bWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIgbWFzazE2T25Db25kaXRpb24oTWFj
cm9Bc3NlbWJsZXJUeXBlJiwgdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMy
IHZhbHVlKQoreworICAgIGlmIChpc1Vuc2lnbmVkPE1hY3JvQXNzZW1ibGVyVHlwZT4oY29uZCkp
CisgICAgICAgIHJldHVybiB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0z
MihzdGF0aWNfY2FzdDx1aW50MTZfdD4odmFsdWUubV92YWx1ZSkpOworICAgIHJldHVybiB0eXBl
bmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQxNl90
Pih2YWx1ZS5tX3ZhbHVlKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVy
VHlwZT4KK2lubGluZSB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMiBt
YXNrMTZPbkNvbmRpdGlvbihNYWNyb0Fzc2VtYmxlclR5cGUmLCB0eXBlbmFtZSBNYWNyb0Fzc2Vt
YmxlclR5cGU6OlJlc3VsdENvbmRpdGlvbiBjb25kLCB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5
cGU6OlRydXN0ZWRJbW0zMiB2YWx1ZSkKK3sKKyAgICAvLyBJZiBjb25kaXRpb24gaXMgWmVybyBv
ciBOb25aZXJvLCB1cHBlciBiaXRzIGFyZSB1bnJlbGF0ZWQuCisgICAgLy8gU2luY2UgYnJhbmNo
VGVzdDMyIGhhbmRsZXMgLTEgaW4gYW4gb3B0aW1pemVkIG1hbm5lciwgd2Uga2VlcCAtMSBhcyBp
cyBpbnN0ZWFkIG9mIGNvbnZlcnRpbmcgaXQgdG8gMHhmZmZmLgorICAgIGlmIChjb25kID09IE1h
Y3JvQXNzZW1ibGVyVHlwZTo6WmVybyB8fCBjb25kID09IE1hY3JvQXNzZW1ibGVyVHlwZTo6Tm9u
WmVybykgeworICAgICAgICBpZiAodmFsdWUubV92YWx1ZSA9PSAtMSkKKyAgICAgICAgICAgIHJl
dHVybiB2YWx1ZTsKKyAgICB9CisgICAgaWYgKGlzVW5zaWduZWQ8TWFjcm9Bc3NlbWJsZXJUeXBl
Pihjb25kKSkKKyAgICAgICAgcmV0dXJuIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1
c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQxNl90Pih2YWx1ZS5tX3ZhbHVlKSk7CisgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShjb25kICE9IE1hY3JvQXNzZW1ibGVyVHlwZTo6T3ZlcmZsb3csICJP
dmVyZmxvdyBpcyBub3QgdXNlZCBmb3IgMTZiaXQgdGVzdCBvcGVyYXRpb25zLiIpOworICAgIEFT
U0VSVChpc1NpZ25lZDxNYWNyb0Fzc2VtYmxlclR5cGU+KGNvbmQpKTsKKyAgICByZXR1cm4gdHlw
ZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MTZf
dD4odmFsdWUubV92YWx1ZSkpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNYWNyb0Fzc2VtYmxl
clR5cGUsIHR5cGVuYW1lIENvbmRpdGlvbiwgdHlwZW5hbWUgLi4uQXJncz4KIHZvaWQgbG9hZDhP
bkNvbmRpdGlvbihNYWNyb0Fzc2VtYmxlclR5cGUmIGppdCwgQ29uZGl0aW9uIGNvbmQsIEFyZ3Mu
Li4gYXJncykKIHsKQEAgLTEzNCw0ICsxNTgsMTIgQEAgdm9pZCBsb2FkOE9uQ29uZGl0aW9uKE1h
Y3JvQXNzZW1ibGVyVHlwZSYgaml0LCBDb25kaXRpb24gY29uZCwgQXJncy4uLiBhcmdzKQogICAg
IHJldHVybiBqaXQubG9hZDhTaWduZWRFeHRlbmRUbzMyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZSwgdHlwZW5h
bWUgQ29uZGl0aW9uLCB0eXBlbmFtZSAuLi5BcmdzPgordm9pZCBsb2FkMTZPbkNvbmRpdGlvbihN
YWNyb0Fzc2VtYmxlclR5cGUmIGppdCwgQ29uZGl0aW9uIGNvbmQsIEFyZ3MuLi4gYXJncykKK3sK
KyAgICBpZiAoaXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxlclR5cGU+KGNvbmQpKQorICAgICAgICBy
ZXR1cm4gaml0LmxvYWQxNihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIHJldHVy
biBqaXQubG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggYjgxYjcyZjkyZGU1NGYy
YTIwYTY4NmEzMTRmODE4NTY0YWZjOWE2NS4uMDMwMjQwYWE1MTJmYWU5YTQ4ZWZlNzk5YjZhNzIx
OWU0M2VhZDUyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0xMjcyLDYgKzEyNzIsMjkgQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXJNSVBTIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZDE2KEFic29s
dXRlQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2Fk
MTYoYWRkcmVzcy5tX3B0ciwgZGVzdCk7CisgICAgfQorCisgICAgLyogTmVlZCB0byB1c2UgemVy
by1leHRlbmVkIGxvYWQgaGFsZi13b3JkIGZvciBsb2FkMTYuICAqLworICAgIHZvaWQgbG9hZDE2
U2lnbmVkRXh0ZW5kVG8zMihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIGlmIChhZGRyZXNzLm9mZnNldCA+PSAtMzI3NjggJiYgYWRkcmVzcy5vZmZzZXQg
PD0gMzI3NjcKKyAgICAgICAgICAgICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5saChkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIGx1aSAgICAgYWRkclRlbXAs
IChvZmZzZXQgKyAweDgwMDApID4+IDE2CisgICAgICAgICAgICAgICAgYWRkdSAgICBhZGRyVGVt
cCwgYWRkclRlbXAsIGJhc2UKKyAgICAgICAgICAgICAgICBsaCAgICAgIGRlc3QsIChvZmZzZXQg
JiAweGZmZmYpKGFkZHJUZW1wKQorICAgICAgICAgICAgICAqLworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubHVpKGFkZHJUZW1wUmVnaXN0ZXIsIChhZGRyZXNzLm9mZnNldCArIDB4ODAwMCkgPj4g
MTYpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShhZGRyVGVtcFJlZ2lzdGVyLCBhZGRy
VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2UpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGgo
ZGVzdCwgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICB9CisgICAg
fQorCiAgICAgdm9pZCBsb2FkMTZTaWduZWRFeHRlbmRUbzMyKEJhc2VJbmRleCBhZGRyZXNzLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoIW1fZml4ZWRXaWR0aCkgewpAQCAt
MjA0Myw2ICsyMDY2LDM0IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyTUlQUyA6IHB1YmxpYyBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICByZXR1cm4gYnJhbmNoVGVz
dDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2s4KTsKICAgICB9CiAKKyAgICBUcnVzdGVk
SW1tMzIgbWFzazE2T25UZXN0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgbWFz
aykKKyAgICB7CisgICAgICAgIGlmIChtYXNrLm1fdmFsdWUgPT0gLTEgJiYgIW1fZml4ZWRXaWR0
aCkKKyAgICAgICAgICAgIHJldHVybiBUcnVzdGVkSW1tMzIoLTEpOworICAgICAgICByZXR1cm4g
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFz
ayk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hUZXN0MTYoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IEJhc2VJbmRleCBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkp
CisgICAgeworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2ID0gbWFzazE2T25UZXN0KGNvbmQs
IG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQxNk9uQ29uZGl0aW9u
KCp0aGlzLCBjb25kLCBhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrMTYpOworICAgIH0KKwor
ICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJl
c3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAg
IFRydXN0ZWRJbW0zMiBtYXNrMTYgPSBtYXNrMTZPblRlc3QoY29uZCwgbWFzayk7CisgICAgICAg
IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFk
ZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNv
bmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2sxNik7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hU
ZXN0MTYoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVz
dGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisgICAgeworICAgICAgICBUcnVzdGVk
SW1tMzIgbWFzazE2ID0gbWFzazE2T25UZXN0KGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6OmxvYWQxNk9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRh
VGVtcFJlZ2lzdGVyLCBtYXNrMTYpOworICAgIH0KKwogICAgIEp1bXAganVtcCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwoTUlQU1JlZ2lzdGVyczo6emVybywgTUlQU1JlZ2lz
dGVyczo6emVybyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggM2ZhYmM0ZDg5MTQwNDc0ZjQwZjFm
YTdhOWIxYmFmOWI3MDc2ZDY4MC4uYTNlMDMxYjcwOWMxZjU4NzhiNDdiNDdiYmNkZmMwYTVmMTk5
NDUzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMjc1OSw2ICsyNzU5LDI2IEBAIGNsYXNzIE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNz
ZW1ibGVyPiB7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRp
b24oY29uZCkpKTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaFRlc3QxNihSZXN1bHRDb25kaXRp
b24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0z
MigtMSkpCisgICAgeworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2KHN0YXRpY19jYXN0PGlu
dDE2X3Q+KG1hc2subV92YWx1ZSkpOworICAgICAgICBpZiAobWFzazE2Lm1fdmFsdWUgPT0gLTEp
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXB3X2ltKDAsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0d19p
bShtYXNrMTYubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgICAg
IHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKKyAgICB9
CisKKyAgICBKdW1wIGJyYW5jaFRlc3QxNihSZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUluZGV4
IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7Cisg
ICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrMTYoc3RhdGljX2Nhc3Q8aW50MTZfdD4obWFzay5tX3Zh
bHVlKSk7CisgICAgICAgIGlmIChtYXNrMTYubV92YWx1ZSA9PSAtMSkKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmNtcHdfaW0oMCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVz
cy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnRlc3R3X2ltKG1hc2sxNi5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgcmV0dXJuIEp1bXAo
bV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0KKwogICAgIEp1bXAg
YnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVk
SW1tMzIgcmlnaHQpCiAgICAgewogICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19j
YXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmluZGV4IDVlODM5ZjM3NGVi
YmI0ZDY2MzFhN2U2MzM0MWJhMTRmNjE5OTFkODguLmFhN2VjMDFlMzg0OGFkYTlmY2FiOTUwNDIz
MmY2ODdjMDM0OGMzMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTE1NjMsNyArMTU2MywyMyBAQCBjbGFz
cyBNYWNyb0Fzc2VtYmxlclg4Nl82NCA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbiB7
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3ZlKFRydXN0ZWRJbW1QdHIoYWRk
cmVzcy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKICAgICAgICAgcmV0dXJuIE1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3Rl
cigpKSwgbWFzazgpOwogICAgIH0KLSAgICAKKworICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjpicmFuY2hUZXN0MTY7CisgICAgSnVtcCBicmFuY2hUZXN0MTYoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIEV4dGVuZGVkQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRy
dXN0ZWRJbW0zMigtMSkpCisgICAgeworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2KHN0YXRp
Y19jYXN0PGludDE2X3Q+KG1hc2subV92YWx1ZSkpOworICAgICAgICBUcnVzdGVkSW1tUHRyIGFk
ZHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oYWRkcmVzcy5vZmZzZXQpKTsKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmUoYWRkciwgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAg
ICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3QxNihjb25kLCBC
YXNlSW5kZXgoc2NyYXRjaFJlZ2lzdGVyKCksIGFkZHJlc3MuYmFzZSwgVGltZXNPbmUpLCBtYXNr
MTYpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJlc3VsdENvbmRpdGlvbiBjb25k
LCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1t
MzIoLTEpKQorICAgIHsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2sxNihzdGF0aWNfY2FzdDxp
bnQxNl90PihtYXNrLm1fdmFsdWUpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246
Om1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwor
ICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3QxNihjb25k
LCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSwgbWFzazE2KTsKKyAgICB9CisKICAgICB2b2lk
IHhjaGc2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIueGNoZ3Ffcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCmluZGV4
IDhlYWY4NDUxYjJlYjQ5OThlYTk2NzVlNGE3ZmNiNDEwNzhiMTM2NWQuLjcxNDEzNjM1MzVkNDUw
NjkzMjQ1NTliYWFmNDAyNWE2NmFiN2E5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaApAQCAtMjA0OSw2ICsyMDQ5LDE5IEBAIGNsYXNzIFg4
NkFzc2VtYmxlciB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9DTVBfRXZHdiwg
c3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBjbXB3
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9DTVAsIGJhc2UsIG9mZnNldCk7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9DTVAs
IGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0p
OworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBjbXB3X2ltKGludCBpbW0sIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQogICAgIHsK
ICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTIxNTEsNyArMjE2
NCwyMSBAQCBjbGFzcyBYODZBc3NlbWJsZXIgewogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgo
UFJFX09QRVJBTkRfU0laRSk7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9URVNU
X0V2R3YsIHNyYywgZHN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHRlc3R3X2ltKGludCBp
bW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQM19Fdkl6LCBHUk9VUDNfT1BfVEVTVCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIHRlc3R3
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2SXos
IEdST1VQM19PUF9URVNULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgfQorCiAgICAgdm9pZCB0ZXN0Yl9pOHIo
aW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoZHN0ID09IFg4NlJl
Z2lzdGVyczo6ZWF4KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNt
LmNwcAppbmRleCBlMzM4NTRlMThkMmJjNjJkMWVlYjkyNGM0YjNmNDUyMzUzZGFjNDA1Li43ZWE5
MDVjNDViNTYxYjk4NDM1NjExYWE4ZjRkOGU5MDc4MGIyYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApAQCAtMzI2LDYgKzMyNiw5OCBAQCB2b2lk
IHRlc3RCcmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoZG91YmxlIHZhbCwgaW50MzJfdCBleHBl
Y3RlZCkKICAgICB9KSwgZXhwZWN0ZWQpOwogfQogCit2b2lkIHRlc3RCcmFuY2hUZXN0OCgpCit7
CisgICAgZm9yIChhdXRvIHZhbHVlIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAo
YXV0byB2YWx1ZTIgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGF1dG8gdGVzdDEg
PSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICBlbWl0
RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgYXV0byBicmFuY2ggPSBq
aXQuYnJhbmNoVGVzdDgoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIENDYWxsSGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjAsIDEpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
Mih2YWx1ZTIpKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMigwKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICAgICAgICAgIGF1
dG8gZG9uZSA9IGppdC5qdW1wKCk7CisgICAgICAgICAgICAgICAgYnJhbmNoLmxpbmsoJmppdCk7
CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSks
IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgICAgICBkb25lLmxpbmsoJmpp
dCk7CisKKyAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAg
ICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBhdXRv
IHRlc3QyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAg
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgIGF1dG8gYnJh
bmNoID0gaml0LmJyYW5jaFRlc3Q4KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBDQ2FsbEhlbHBl
cnM6OkJhc2VJbmRleChHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BS
MSwgQ0NhbGxIZWxwZXJzOjpUaW1lc09uZSksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHZh
bHVlMikpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKDApLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgICAgICAgICAgICAgYXV0byBk
b25lID0gaml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICBicmFuY2gubGluaygmaml0KTsKKyAg
ICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsK
KworICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAg
ICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGludCByZXN1
bHQgPSAwOworICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZhbHVlKSAmIHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KHZhbHVlMikpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gMTsK
KworICAgICAgICAgICAgdWludDhfdCBhcnJheVtdID0geworICAgICAgICAgICAgICAgIDAsCisg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4odmFsdWUpCisgICAgICAgICAgICB9
OworICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4odGVzdDEsIGFycmF5KSwgcmVzdWx0
KTsKKyAgICAgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KHRlc3QyLCBhcnJheSwgMSksIHJl
c3VsdCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEJyYW5jaFRlc3QxNigpCit7
CisgICAgZm9yIChhdXRvIHZhbHVlIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAo
YXV0byB2YWx1ZTIgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGF1dG8gdGVzdDEg
PSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICBlbWl0
RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgYXV0byBicmFuY2ggPSBq
aXQuYnJhbmNoVGVzdDE2KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAyKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIodmFsdWUyKSk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoMCksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgICAgICBh
dXRvIGRvbmUgPSBqaXQuanVtcCgpOworICAgICAgICAgICAgICAgIGJyYW5jaC5saW5rKCZqaXQp
OworICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEp
LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZq
aXQpOworCisgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAg
ICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYXV0
byB0ZXN0MiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAg
ICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGJy
YW5jaCA9IGppdC5icmFuY2hUZXN0MTYoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIENDYWxsSGVs
cGVyczo6QmFzZUluZGV4KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCBDQ2FsbEhlbHBlcnM6OlRpbWVzVHdvKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
dmFsdWUyKSk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoMCksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgICAgICBhdXRv
IGRvbmUgPSBqaXQuanVtcCgpOworICAgICAgICAgICAgICAgIGJyYW5jaC5saW5rKCZqaXQpOwor
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQp
OworCisgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAg
ICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaW50IHJl
c3VsdCA9IDA7CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHZhbHVlKSAm
IHN0YXRpY19jYXN0PHVpbnQxNl90Pih2YWx1ZTIpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9
IDE7CisKKyAgICAgICAgICAgIHVpbnQxNl90IGFycmF5W10gPSB7CisgICAgICAgICAgICAgICAg
MCwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4odmFsdWUpCisgICAgICAg
ICAgICB9OworICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4odGVzdDEsIGFycmF5KSwg
cmVzdWx0KTsKKyAgICAgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KHRlc3QyLCBhcnJheSwg
MSksIHJlc3VsdCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKICNpZiBDUFUoWDg2XzY0KQogdm9p
ZCB0ZXN0QnJhbmNoVGVzdEJpdDMyUmVnUmVnKCkKIHsKQEAgLTU2NDksNiArNTc0MSw5IEBAIHZv
aWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFM
WVNJUwogICAgIFJVTih0ZXN0TG9hZFN0b3JlUGFpcjMyKCkpOwogICAgIFJVTih0ZXN0U3ViMzJB
cmdJbW0oKSk7CiAKKyAgICBSVU4odGVzdEJyYW5jaFRlc3Q4KCkpOworICAgIFJVTih0ZXN0QnJh
bmNoVGVzdDE2KCkpOworCiAjaWYgQ1BVKFg4Nl82NCkKICAgICBSVU4odGVzdEJyYW5jaFRlc3RC
aXQzMlJlZ1JlZygpKTsKICAgICBSVU4odGVzdEJyYW5jaFRlc3RCaXQzMlJlZ0ltbSgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444614</attachid>
            <date>2021-11-17 17:17:14 -0800</date>
            <delta_ts>2021-11-18 11:56:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233275-20211117171713.patch</filename>
            <type>text/plain</type>
            <size>28856</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1OTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MWU4ZjJhMTY2MGE0NDU5M2E2Njk0Y2JkNjk0MjU5YjY2MDk0ZjUzLi5hYjljZDFhYzVkYWEzNjZh
ZWUyMzA3MWRkNTJiZmMyNDZhYzE0MGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAyMS0xMS0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBicmFuY2hUZXN0MTYgb3BlcmF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMyNzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYnJh
bmNoVGVzdDE2IHRvIGFsbCBtYWNybyBhc3NlbWJsZXJzLiBBbmQgaXQgYWxzbyBmaXhlcyB0aGUg
ZXhpc3RpbmcgYnVnIG9mCisgICAgICAgIGVkZ2UgY2FzZSBvZiBicmFuY2hUZXN0ODogd2hlbiB3
ZSBjYW5ub3QgcmVwcmVzZW50IHRoZSBpbW0gYXMgQVJNIGxvZ2ljYWwgdmFsdWUsIHRoZW4gd2Ug
YXJlCisgICAgICAgIGZhaWxpbmcgdG8gZW1pdCB0aGUgcmlnaHQgaW5zdHJ1Y3Rpb25zLiBQcm9i
YWJseSB0aGlzIGJ1ZyBkb2VzIG5vdCBhcHBlYXIgc2luY2Ugd2UgYXJlIG5vdCB1c2luZworICAg
ICAgICBzdWNoIGEgdmFsdWUgYXMgYW4gaW1tIGZvciBicmFuY2hUZXN0OC4gV2UgYWRkZWQgdGVz
dHMgdG8gdGVzdG1hc20gc28gdGhhdCB0aGVzZSBjb2RlIGlzIHN0cmVzc2VkCisgICAgICAgIG5v
dy4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoVGVzdDE2KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojps
b2FkMTZTaWduZWRFeHRlbmRUbzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YnJhbmNoVGVzdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJh
bmNoVGVzdDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hUZXN0
MTYpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmJyYW5jaFRlc3QxNik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnRlc3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNdjc6OnRlc3Q4KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJIZWxw
ZXJzLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazE2T25Db25k
aXRpb24pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQxNk9uQ29u
ZGl0aW9uKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bG9hZDE2KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJNSVBTOjpsb2FkMTZTaWduZWRFeHRlbmRUbzMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjptYXNrMTZPblRlc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OmJyYW5jaFRlc3QxNik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjpicmFuY2hUZXN0MTYpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoVGVzdDE2KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6Y21wd19pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6dGVzdHdfaW0p
OgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6OnRlc3RC
cmFuY2hUZXN0OCk6CisgICAgICAgIChKU0M6OnRlc3RCcmFuY2hUZXN0MTYpOgorCiAyMDIxLTEx
LTE1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
VXNlIG9wZXJhdGlvbiBwYXRoIHdoZW4gUHV0QnlWYWwgY2hpbGQxIGlzIG5vdCBzcGVjdWxhdGVk
IGFzIGEgQ2VsbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oCmluZGV4IDQxMzIzMDJmOGE4NjAxOTRhMmQ4OGQ4N2Y4YWYwOGY2NmUxMmU4MTEu
LmE1YTY1M2ExYjE5NzRmYzQ0M2FmMTNkZjhjMzQzNmJlOWRlM2Q1NDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTg4MCw2ICs4
ODAsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJCYXNl
IHsKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoVGVzdDgoY29uZCwg
QWRkcmVzcyhhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KSwgbWFzayk7CiAgICAgfQogCisg
ICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hUZXN0MTY7CisgICAgSnVtcCBicmFu
Y2hUZXN0MTYoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEV4dGVuZGVkQWRkcmVzcyBhZGRyZXNzLCBU
cnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisgICAgeworICAgICAgICByZXR1
cm4gTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hUZXN0MTYoY29uZCwgQWRkcmVzcyhhZGRyZXNz
LmJhc2UsIGFkZHJlc3Mub2Zmc2V0KSwgbWFzayk7CisgICAgfQorCiAjZWxzZSAvLyAhQ1BVKEFE
RFJFU1M2NCkKIAogICAgIHZvaWQgYWRkUHRyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCmluZGV4IDg1NzQwNTVjOWIxZWZiYmJlZWQwMDFlMGVlMDljYWU1YWExMDg3
ZGEuLmJiOTdiYWMzM2RmYjE3YmFiYzZiMWUzYzExMjE0NDBmNWZkOGQzMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5o
CkBAIC0xODA1LDYgKzE4MDUsMTQgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1Ymxp
YyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICBtX2Fzc2VtYmxl
ci5sZHJzaDwzMj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAg
IH0KIAorICAgIHZvaWQgbG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihjb25zdCB2b2lkKiBhZGRyZXNz
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlVG9DYWNoZWRSZWcoVHJ1c3Rl
ZEltbVB0cihhZGRyZXNzKSwgY2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVyKCkpOworICAgICAgICBt
X2Fzc2VtYmxlci5sZHJzaDwzMj4oZGVzdCwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBBUk02NFJlZ2lz
dGVyczo6enIpOworICAgICAgICBpZiAoZGVzdCA9PSBtZW1vcnlUZW1wUmVnaXN0ZXIpCisgICAg
ICAgICAgICBjYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXIoKS5pbnZhbGlkYXRlKCk7CisgICAgfQor
CiAgICAgdm9pZCB6ZXJvRXh0ZW5kMTZUbzMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci51eHRoPDMyPihkZXN0LCBzcmMpOwpAQCAt
MzQxMCw2ICszNDE4LDcgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICAgICAgICAgIHJldHVybiBK
dW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBBU1NF
UlQocmVnICE9IGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgbW92ZShtYXNrLCBnZXRD
YWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwogICAgICAgICAgICAgbV9h
c3NlbWJsZXIudHN0PDMyPihyZWcsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICB9CkBAIC0z
NTE0LDM1ICszNTIzLDY5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJl
c3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0g
VHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1h
Y3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7
Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywg
Y29uZCwgYWRkcmVzcywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgp
KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBt
YXNrOCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigq
dGhpcywgY29uZCwgYWRkcmVzcywgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZh
bGlkYXRlKCkpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIG1lbW9yeVRlbXBS
ZWdpc3RlciwgbWFzazgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9
IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewogICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBN
YWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2sp
OwotICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMs
IGNvbmQsIGFkZHJlc3MubV9wdHIsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFs
aWRhdGUoKSk7Ci0gICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdp
c3RlciwgbWFzazgpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25k
aXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MubV9wdHIsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdp
c3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25k
LCBtZW1vcnlUZW1wUmVnaXN0ZXIsIG1hc2s4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFRl
c3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBFeHRlbmRlZEFkZHJlc3MgYWRkcmVzcywgVHJ1c3Rl
ZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKICAgICAgICAgVHJ1c3RlZElt
bTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlz
LCBjb25kLCBtYXNrKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KGFkZHJlc3Mub2Zmc2V0KSksIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9j
YXN0PHZvaWQqPihhZGRyZXNzLm9mZnNldCkpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKSk7CiAKICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVySGVscGVyczo6
aXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxlckFSTTY0Pihjb25kKSkKLSAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmxkcmIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5iYXNlLCBkYXRhVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcmIobWVtb3J5VGVtcFJlZ2lzdGVyLCBh
ZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmxkcnNiPDMyPihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2Us
IGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyc2I8MzI+KG1l
bW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogCi0g
ICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazgp
OworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIG1lbW9yeVRlbXBSZWdpc3Rlciwg
bWFzazgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIEJhc2VJbmRleCBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigt
MSkpCiAgICAgewogICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhl
bHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOwotICAgICAgICBNYWNy
b0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3Ms
IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIHJl
dHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazgpOworICAgICAg
ICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFk
ZHJlc3MsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIG1hc2s4
KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFRlc3QxNihSZXN1bHRDb25kaXRpb24gY29uZCwg
QWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisg
ICAgeworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
OjptYXNrMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVySGVscGVyczo6bG9hZDE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGdl
dENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgcmV0
dXJuIGJyYW5jaFRlc3QzMihjb25kLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIG1hc2sxNik7CisgICAg
fQorCisgICAgSnVtcCBicmFuY2hUZXN0MTYoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29sdXRl
QWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisg
ICAgeworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
OjptYXNrMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVySGVscGVyczo6bG9hZDE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MubV9w
dHIsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIG1hc2sxNik7
CisgICAgfQorCisgICAgSnVtcCBicmFuY2hUZXN0MTYoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEV4
dGVuZGVkQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigt
MSkpCisgICAgeworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2ID0gTWFjcm9Bc3NlbWJsZXJI
ZWxwZXJzOjptYXNrMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihhZGRyZXNzLm9mZnNldCkp
LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisKKyAgICAg
ICAgaWYgKE1hY3JvQXNzZW1ibGVySGVscGVyczo6aXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxlckFS
TTY0Pihjb25kKSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcmgobWVtb3J5VGVtcFJlZ2lz
dGVyLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcnNoPDMyPihtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJl
c3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKKworICAgICAgICByZXR1cm4gYnJhbmNoVGVz
dDMyKGNvbmQsIG1lbW9yeVRlbXBSZWdpc3RlciwgbWFzazE2KTsKKyAgICB9CisKKyAgICBKdW1w
IGJyYW5jaFRlc3QxNihSZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRy
dXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIFRydXN0
ZWRJbW0zMiBtYXNrMTYgPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2sxNk9uQ29uZGl0aW9u
KCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2Fk
MTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJl
Z2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNv
bmQsIG1lbW9yeVRlbXBSZWdpc3RlciwgbWFzazE2KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5j
aDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcyhSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJ
bmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IGY2MTVhNTBjZWU5
NWYwZThmYzQwNzE0OWMyNDEwNDlmN2IxNmI2YWEuLmI1Mzk2OTRiMDkwOTMwNzBlN2I3ODkzMWI4
ZTYyZGMyZDFjMjQzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xNzk1LDYgKzE3OTUsMzEgQEAgY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2Vt
Ymxlcj4gewogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVn
aXN0ZXIsIG1hc2s4KTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaFRlc3QxNihSZXN1bHRDb25k
aXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3Rl
ZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIC8vIHVzZSBhZGRyZXNzVGVtcFJlZ2lzdGVyIGlu
Y2FzZSB0aGUgYnJhbmNoVGVzdDE2IHdlIGNhbGwgdXNlcyBkYXRhVGVtcFJlZ2lzdGVyLiA6LS8K
KyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2sxNiA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFz
azE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxl
ckhlbHBlcnM6OmxvYWQxNk9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyLCBtYXNrMTYpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJl
c3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0g
VHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIC8vIHVzZSBhZGRyZXNzVGVtcFJlZ2lz
dGVyIGluY2FzZSB0aGUgYnJhbmNoVGVzdDE2IHdlIGNhbGwgdXNlcyBkYXRhVGVtcFJlZ2lzdGVy
LiA6LS8KKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2sxNiA9IE1hY3JvQXNzZW1ibGVySGVscGVy
czo6bWFzazE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6OmxvYWQxNk9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrMTYpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoVGVz
dDE2KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3Rl
ZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgLy8gdXNlIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIgaW5jYXNlIHRoZSBicmFuY2hUZXN0MTYgd2UgY2FsbCB1c2VzIGRh
dGFUZW1wUmVnaXN0ZXIuIDotLworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2ID0gTWFjcm9B
c3NlbWJsZXJIZWxwZXJzOjptYXNrMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7Cisg
ICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDE2T25Db25kaXRpb24o
KnRoaXMsIGNvbmQsIEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciksIGFkZHJlc3NUZW1wUmVn
aXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVn
aXN0ZXIsIG1hc2sxNik7CisgICAgfQorCiAgICAgdm9pZCBmYXJKdW1wKFJlZ2lzdGVySUQgdGFy
Z2V0LCBQdHJUYWcpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5ieCh0YXJnZXQpOwpAQCAt
MjA0MSw4ICsyMDY2LDggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgIC8vIGFzbSBvcHMgbGlrZSB0ZXN0
LCBvciBwc2V1ZG8gb3BzIGxpa2UgcG9wKCkuCiAgICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgdGVzdDMyKGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2spOworICAgICAgICBsb2FkMzIo
YWRkcmVzcywgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIHRlc3QzMihhZGRyZXNzVGVt
cFJlZ2lzdGVyLCBtYXNrKTsKICAgICAgICAgbV9hc3NlbWJsZXIuaXQoYXJtVjdDb25kaXRpb24o
Y29uZCksIGZhbHNlKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFSTVRodW1iSW1t
ZWRpYXRlOjptYWtlVUludDE2KDEpKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFS
TVRodW1iSW1tZWRpYXRlOjptYWtlVUludDE2KDApKTsKQEAgLTIwNTEsOCArMjA3Niw4IEBAIGNs
YXNzIE1hY3JvQXNzZW1ibGVyQVJNdjcgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxB
c3NlbWJsZXI+IHsKICAgICB2b2lkIHRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNz
IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25D
b25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOwotICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBl
cnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0
ZXIpOwotICAgICAgICB0ZXN0MzIoZGF0YVRlbXBSZWdpc3RlciwgbWFzazgpOworICAgICAgICBN
YWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJl
c3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICB0ZXN0MzIoYWRkcmVzc1RlbXBSZWdp
c3RlciwgbWFzazgpOwogICAgICAgICBtX2Fzc2VtYmxlci5pdChhcm1WN0NvbmRpdGlvbihjb25k
KSwgZmFsc2UpOwogICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVzdCwgQVJNVGh1bWJJbW1lZGlh
dGU6Om1ha2VVSW50MTYoMSkpOwogICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVzdCwgQVJNVGh1
bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmgKaW5kZXggNTQ0ZjE5ODg0
MjMxNWI5Y2RjMDNiZjQxY2Y5YzMzMTAzM2RhZDgwMC4uOWYwNjYxOGRmNzIzZTAxNTg0NjhiODdl
ZmU3ODcyMmE2OTk1NjE3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVySGVscGVycy5oCkBAIC0xMjYsNiArMTI2LDMwIEBAIGlu
bGluZSB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMiBtYXNrOE9uQ29u
ZGl0aW9uKE1hY3JvQXNzZW1ibGVyCiAgICAgcmV0dXJuIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVy
VHlwZTo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUubV92YWx1ZSkpOwog
fQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU+CitpbmxpbmUgdHlwZW5h
bWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIgbWFzazE2T25Db25kaXRpb24oTWFj
cm9Bc3NlbWJsZXJUeXBlJiwgdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMy
IHZhbHVlKQoreworICAgIGlmIChpc1Vuc2lnbmVkPE1hY3JvQXNzZW1ibGVyVHlwZT4oY29uZCkp
CisgICAgICAgIHJldHVybiB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0z
MihzdGF0aWNfY2FzdDx1aW50MTZfdD4odmFsdWUubV92YWx1ZSkpOworICAgIHJldHVybiB0eXBl
bmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQxNl90
Pih2YWx1ZS5tX3ZhbHVlKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVy
VHlwZT4KK2lubGluZSB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMiBt
YXNrMTZPbkNvbmRpdGlvbihNYWNyb0Fzc2VtYmxlclR5cGUmLCB0eXBlbmFtZSBNYWNyb0Fzc2Vt
YmxlclR5cGU6OlJlc3VsdENvbmRpdGlvbiBjb25kLCB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5
cGU6OlRydXN0ZWRJbW0zMiB2YWx1ZSkKK3sKKyAgICAvLyBJZiBjb25kaXRpb24gaXMgWmVybyBv
ciBOb25aZXJvLCB1cHBlciBiaXRzIGFyZSB1bnJlbGF0ZWQuCisgICAgLy8gU2luY2UgYnJhbmNo
VGVzdDMyIGhhbmRsZXMgLTEgaW4gYW4gb3B0aW1pemVkIG1hbm5lciwgd2Uga2VlcCAtMSBhcyBp
cyBpbnN0ZWFkIG9mIGNvbnZlcnRpbmcgaXQgdG8gMHhmZmZmLgorICAgIGlmIChjb25kID09IE1h
Y3JvQXNzZW1ibGVyVHlwZTo6WmVybyB8fCBjb25kID09IE1hY3JvQXNzZW1ibGVyVHlwZTo6Tm9u
WmVybykgeworICAgICAgICBpZiAodmFsdWUubV92YWx1ZSA9PSAtMSkKKyAgICAgICAgICAgIHJl
dHVybiB2YWx1ZTsKKyAgICB9CisgICAgaWYgKGlzVW5zaWduZWQ8TWFjcm9Bc3NlbWJsZXJUeXBl
Pihjb25kKSkKKyAgICAgICAgcmV0dXJuIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1
c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQxNl90Pih2YWx1ZS5tX3ZhbHVlKSk7CisgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShjb25kICE9IE1hY3JvQXNzZW1ibGVyVHlwZTo6T3ZlcmZsb3csICJP
dmVyZmxvdyBpcyBub3QgdXNlZCBmb3IgMTZiaXQgdGVzdCBvcGVyYXRpb25zLiIpOworICAgIEFT
U0VSVChpc1NpZ25lZDxNYWNyb0Fzc2VtYmxlclR5cGU+KGNvbmQpKTsKKyAgICByZXR1cm4gdHlw
ZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MTZf
dD4odmFsdWUubV92YWx1ZSkpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNYWNyb0Fzc2VtYmxl
clR5cGUsIHR5cGVuYW1lIENvbmRpdGlvbiwgdHlwZW5hbWUgLi4uQXJncz4KIHZvaWQgbG9hZDhP
bkNvbmRpdGlvbihNYWNyb0Fzc2VtYmxlclR5cGUmIGppdCwgQ29uZGl0aW9uIGNvbmQsIEFyZ3Mu
Li4gYXJncykKIHsKQEAgLTEzNCw0ICsxNTgsMTIgQEAgdm9pZCBsb2FkOE9uQ29uZGl0aW9uKE1h
Y3JvQXNzZW1ibGVyVHlwZSYgaml0LCBDb25kaXRpb24gY29uZCwgQXJncy4uLiBhcmdzKQogICAg
IHJldHVybiBqaXQubG9hZDhTaWduZWRFeHRlbmRUbzMyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZSwgdHlwZW5h
bWUgQ29uZGl0aW9uLCB0eXBlbmFtZSAuLi5BcmdzPgordm9pZCBsb2FkMTZPbkNvbmRpdGlvbihN
YWNyb0Fzc2VtYmxlclR5cGUmIGppdCwgQ29uZGl0aW9uIGNvbmQsIEFyZ3MuLi4gYXJncykKK3sK
KyAgICBpZiAoaXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxlclR5cGU+KGNvbmQpKQorICAgICAgICBy
ZXR1cm4gaml0LmxvYWQxNihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIHJldHVy
biBqaXQubG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggYjgxYjcyZjkyZGU1NGYy
YTIwYTY4NmEzMTRmODE4NTY0YWZjOWE2NS4uOWEyODE5N2IxNWM3NTUxNjYyNTE5MGE0YTBhYjZl
MGNkZTg3NjkzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0xMjcyLDYgKzEyNzIsMjkgQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXJNSVBTIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZDE2KEFic29s
dXRlQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2Fk
MTYoYWRkcmVzcy5tX3B0ciwgZGVzdCk7CisgICAgfQorCisgICAgLyogTmVlZCB0byB1c2UgemVy
by1leHRlbmVkIGxvYWQgaGFsZi13b3JkIGZvciBsb2FkMTYuICAqLworICAgIHZvaWQgbG9hZDE2
U2lnbmVkRXh0ZW5kVG8zMihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIGlmIChhZGRyZXNzLm9mZnNldCA+PSAtMzI3NjggJiYgYWRkcmVzcy5vZmZzZXQg
PD0gMzI3NjcKKyAgICAgICAgICAgICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5saChkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIGx1aSAgICAgYWRkclRlbXAs
IChvZmZzZXQgKyAweDgwMDApID4+IDE2CisgICAgICAgICAgICAgICAgYWRkdSAgICBhZGRyVGVt
cCwgYWRkclRlbXAsIGJhc2UKKyAgICAgICAgICAgICAgICBsaCAgICAgIGRlc3QsIChvZmZzZXQg
JiAweGZmZmYpKGFkZHJUZW1wKQorICAgICAgICAgICAgICAqLworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubHVpKGFkZHJUZW1wUmVnaXN0ZXIsIChhZGRyZXNzLm9mZnNldCArIDB4ODAwMCkgPj4g
MTYpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShhZGRyVGVtcFJlZ2lzdGVyLCBhZGRy
VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2UpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGgo
ZGVzdCwgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICB9CisgICAg
fQorCiAgICAgdm9pZCBsb2FkMTZTaWduZWRFeHRlbmRUbzMyKEJhc2VJbmRleCBhZGRyZXNzLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoIW1fZml4ZWRXaWR0aCkgewpAQCAt
MTI5Myw2ICsxMzE2LDI4IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyTUlQUyA6IHB1YmxpYyBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICB9CiAgICAgfQogCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIGxvYWQxNlNpZ25lZEV4dGVuZFRvMzIoQWJzb2x1dGVBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQxNlNpZ25lZEV4
dGVuZFRvMzIoYWRkcmVzcy5tX3B0ciwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBsb2FkMTZT
aWduZWRFeHRlbmRUbzMyKGNvbnN0IHZvaWQqIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIGlmIChtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAg
ICAgICAgICAgbGkgIGFkZHJUZW1wLCBhZGRyZXNzCisgICAgICAgICAgICAgICAgbGggZGVzdCwg
MChhZGRyVGVtcCkKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoYWRkcmVzcyksIGFkZHJUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bGgoZGVzdCwgYWRkclRlbXBSZWdpc3RlciwgMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICB1aW50cHRyX3QgYWRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGFkZHJlc3Mp
OworICAgICAgICAgICAgbV9hc3NlbWJsZXIubHVpKGFkZHJUZW1wUmVnaXN0ZXIsIChhZHIgKyAw
eDgwMDApID4+IDE2KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxoKGRlc3QsIGFkZHJUZW1w
UmVnaXN0ZXIsIGFkciAmIDB4ZmZmZik7CisgICAgICAgIH0KKyAgICB9CisKKwogICAgIHZvaWQg
bG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBk
ZXN0MikKICAgICB7CiAgICAgICAgIGxvYWRQYWlyMzIoc3JjLCBUcnVzdGVkSW1tMzIoMCksIGRl
c3QxLCBkZXN0Mik7CkBAIC0yMDQzLDYgKzIwODgsMzQgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJN
SVBTIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAg
IHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazgpOwogICAg
IH0KIAorICAgIFRydXN0ZWRJbW0zMiBtYXNrMTZPblRlc3QoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IFRydXN0ZWRJbW0zMiBtYXNrKQorICAgIHsKKyAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAt
MSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAgICAgcmV0dXJuIFRydXN0ZWRJbW0zMigtMSk7
CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2sxNk9uQ29uZGl0aW9u
KCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFRlc3QxNihSZXN1
bHRDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0g
VHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrMTYgPSBt
YXNrMTZPblRlc3QoY29uZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6
bG9hZDE2T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIp
OworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1h
c2sxNik7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hUZXN0MTYoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEp
KQorICAgIHsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2sxNiA9IG1hc2sxNk9uVGVzdChjb25k
LCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkMTZPbkNvbmRpdGlv
bigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVy
biBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazE2KTsKKyAgICB9CisK
KyAgICBKdW1wIGJyYW5jaFRlc3QxNihSZXN1bHRDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRy
ZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7
CisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrMTYgPSBtYXNrMTZPblRlc3QoY29uZCwgbWFzayk7
CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDE2T25Db25kaXRpb24oKnRoaXMs
IGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNo
VGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2sxNik7CisgICAgfQorCiAgICAgSnVt
cCBqdW1wKCkKICAgICB7CiAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChNSVBTUmVnaXN0ZXJz
Ojp6ZXJvLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCAzZmFi
YzRkODkxNDA0NzRmNDBmMWZhN2E5YjFiYWY5YjcwNzZkNjgwLi5hM2UwMzFiNzA5YzFmNTg3OGI0
N2I0N2JiY2RmYzBhNWYxOTk0NTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0yNzU5LDYgKzI3
NTksMjYgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJs
ZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoVGVz
dDE2KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBt
YXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNr
MTYoc3RhdGljX2Nhc3Q8aW50MTZfdD4obWFzay5tX3ZhbHVlKSk7CisgICAgICAgIGlmIChtYXNr
MTYubV92YWx1ZSA9PSAtMSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcHdfaW0oMCwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLnRlc3R3X2ltKG1hc2sxNi5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlKTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlv
bihjb25kKSkpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoVGVzdDE2KFJlc3VsdENvbmRpdGlv
biBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1t
MzIoLTEpKQorICAgIHsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2sxNihzdGF0aWNfY2FzdDxp
bnQxNl90PihtYXNrLm1fdmFsdWUpKTsKKyAgICAgICAgaWYgKG1hc2sxNi5tX3ZhbHVlID09IC0x
KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wd19pbSgwLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdHdfaW0obWFzazE2Lm1fdmFsdWUsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAg
ICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7Cisg
ICAgfQorCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUlu
ZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIFRydXN0ZWRJbW0z
MiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90PihyaWdodC5tX3ZhbHVlKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgK
aW5kZXggNWU4MzlmMzc0ZWJiYjRkNjYzMWE3ZTYzMzQxYmExNGY2MTk5MWQ4OC4uYWE3ZWMwMWUz
ODQ4YWRhOWZjYWI5NTA0MjMyZjY4N2MwMzQ4YzMxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtMTU2Myw3
ICsxNTYzLDIzIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2XzY0IDogcHVibGljIE1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmUo
VHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwogICAgICAg
ICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4KGNvbmQsIEFkZHJl
c3Moc2NyYXRjaFJlZ2lzdGVyKCkpLCBtYXNrOCk7CiAgICAgfQotICAgIAorCisgICAgdXNpbmcg
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3QxNjsKKyAgICBKdW1wIGJyYW5jaFRl
c3QxNihSZXN1bHRDb25kaXRpb24gY29uZCwgRXh0ZW5kZWRBZGRyZXNzIGFkZHJlc3MsIFRydXN0
ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIFRydXN0ZWRJ
bW0zMiBtYXNrMTYoc3RhdGljX2Nhc3Q8aW50MTZfdD4obWFzay5tX3ZhbHVlKSk7CisgICAgICAg
IFRydXN0ZWRJbW1QdHIgYWRkcihyZWludGVycHJldF9jYXN0PHZvaWQqPihhZGRyZXNzLm9mZnNl
dCkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bW92ZShhZGRyLCBzY3JhdGNo
UmVnaXN0ZXIoKSk7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJh
bmNoVGVzdDE2KGNvbmQsIEJhc2VJbmRleChzY3JhdGNoUmVnaXN0ZXIoKSwgYWRkcmVzcy5iYXNl
LCBUaW1lc09uZSksIG1hc2sxNik7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hUZXN0MTYoUmVz
dWx0Q29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIg
bWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisgICAgeworICAgICAgICBUcnVzdGVkSW1tMzIgbWFz
azE2KHN0YXRpY19jYXN0PGludDE2X3Q+KG1hc2subV92YWx1ZSkpOworICAgICAgICBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3Jh
dGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
YnJhbmNoVGVzdDE2KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpLCBtYXNrMTYpOwor
ICAgIH0KKwogICAgIHZvaWQgeGNoZzY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3Mp
CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci54Y2hncV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmgKaW5kZXggOGVhZjg0NTFiMmViNDk5OGVhOTY3NWU0YTdmY2I0MTA3OGIxMzY1
ZC4uNzE0MTM2MzUzNWQ0NTA2OTMyNDU1OWJhYWY0MDI1YTY2YWI3YTkxZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC0yMDQ5LDYgKzIw
NDksMTkgQEAgY2xhc3MgWDg2QXNzZW1ibGVyIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0NNUF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9
CiAKKyAgICB2b2lkIGNtcHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
KQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0NNUCwgYmFz
ZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFO
RF9TSVpFKTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJ
eiwgR1JPVVAxX09QX0NNUCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIGNtcHdfaW0o
aW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkg
ewpAQCAtMjE1MSw3ICsyMTY0LDIxIEBAIGNsYXNzIFg4NkFzc2VtYmxlciB7CiAgICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX1RFU1RfRXZHdiwgc3JjLCBkc3QpOwogICAgIH0KLSAgICAKKworICAgIHZv
aWQgdGVzdHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2SXosIEdST1VQM19PUF9URVNULCBiYXNl
LCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgIH0K
KworICAgIHZvaWQgdGVzdHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9HUk9VUDNfRXZJeiwgR1JPVVAzX09QX1RFU1QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAgICB9CisKICAg
ICB2b2lkIHRlc3RiX2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAg
IGlmIChkc3QgPT0gWDg2UmVnaXN0ZXJzOjplYXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvdGVzdG1hc20uY3BwCmluZGV4IGUzMzg1NGUxOGQyYmM2MmQxZWViOTI0YzRiM2Y0
NTIzNTNkYWM0MDUuLjdlYTkwNWM0NWI1NjFiOTg0MzU2MTFhYThmNGQ4ZTkwNzgwYjJjMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCkBAIC0zMjYs
NiArMzI2LDk4IEBAIHZvaWQgdGVzdEJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihkb3VibGUg
dmFsLCBpbnQzMl90IGV4cGVjdGVkKQogICAgIH0pLCBleHBlY3RlZCk7CiB9CiAKK3ZvaWQgdGVz
dEJyYW5jaFRlc3Q4KCkKK3sKKyAgICBmb3IgKGF1dG8gdmFsdWUgOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvIHZhbHVlMiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAg
ICAgICAgYXV0byB0ZXN0MSA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAg
ICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAg
ICBhdXRvIGJyYW5jaCA9IGppdC5icmFuY2hUZXN0OChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgMSksIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKHZhbHVlMikpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7Cisg
ICAgICAgICAgICAgICAgYXV0byBkb25lID0gaml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICBi
cmFuY2gubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICAgICAg
ICAgIGRvbmUubGluaygmaml0KTsKKworICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxv
Z3VlKGppdCk7CisgICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgIGF1dG8gdGVzdDIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQp
IHsKKyAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAg
ICAgICAgICAgYXV0byBicmFuY2ggPSBqaXQuYnJhbmNoVGVzdDgoTWFjcm9Bc3NlbWJsZXI6Ok5v
blplcm8sIENDYWxsSGVscGVyczo6QmFzZUluZGV4KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxLCBDQ2FsbEhlbHBlcnM6OlRpbWVzT25lKSwgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIodmFsdWUyKSk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAg
ICAgICAgICAgICBhdXRvIGRvbmUgPSBqaXQuanVtcCgpOworICAgICAgICAgICAgICAgIGJyYW5j
aC5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgICAgICAgICAgICAg
ZG9uZS5saW5rKCZqaXQpOworCisgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUo
aml0KTsKKyAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgaW50IHJlc3VsdCA9IDA7CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dWlu
dDhfdD4odmFsdWUpICYgc3RhdGljX2Nhc3Q8dWludDhfdD4odmFsdWUyKSkKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSAxOworCisgICAgICAgICAgICB1aW50OF90IGFycmF5W10gPSB7CisgICAg
ICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90Pih2YWx1
ZSkKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50Pih0ZXN0
MSwgYXJyYXkpLCByZXN1bHQpOworICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4odGVz
dDIsIGFycmF5LCAxKSwgcmVzdWx0KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0
QnJhbmNoVGVzdDE2KCkKK3sKKyAgICBmb3IgKGF1dG8gdmFsdWUgOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvIHZhbHVlMiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAg
ICAgICAgYXV0byB0ZXN0MSA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAg
ICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAg
ICBhdXRvIGJyYW5jaCA9IGppdC5icmFuY2hUZXN0MTYoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjAsIDIpLCBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMih2YWx1ZTIpKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwor
ICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9IGppdC5qdW1wKCk7CisgICAgICAgICAgICAgICAg
YnJhbmNoLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAg
ICAgICBkb25lLmxpbmsoJmppdCk7CisKKyAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGls
b2d1ZShqaXQpOworICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICBhdXRvIHRlc3QyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0
KSB7CisgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAg
ICAgICAgICAgIGF1dG8gYnJhbmNoID0gaml0LmJyYW5jaFRlc3QxNihNYWNyb0Fzc2VtYmxlcjo6
Tm9uWmVybywgQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEsIENDYWxsSGVscGVyczo6VGltZXNUd28pLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMih2YWx1ZTIpKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAg
ICAgICAgICAgICAgIGF1dG8gZG9uZSA9IGppdC5qdW1wKCk7CisgICAgICAgICAgICAgICAgYnJh
bmNoLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgICAg
ICBkb25lLmxpbmsoJmppdCk7CisKKyAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1
ZShqaXQpOworICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1
aW50MTZfdD4odmFsdWUpICYgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHZhbHVlMikpCisgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gMTsKKworICAgICAgICAgICAgdWludDE2X3QgYXJyYXlbXSA9IHsK
KyAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQxNl90
Pih2YWx1ZSkKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
Pih0ZXN0MSwgYXJyYXkpLCByZXN1bHQpOworICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dD4odGVzdDIsIGFycmF5LCAxKSwgcmVzdWx0KTsKKyAgICAgICAgfQorICAgIH0KK30KKwogI2lm
IENQVShYODZfNjQpCiB2b2lkIHRlc3RCcmFuY2hUZXN0Qml0MzJSZWdSZWcoKQogewpAQCAtNTY0
OSw2ICs1NzQxLDkgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKSBXVEZfSUdOT1JFU19U
SFJFQURfU0FGRVRZX0FOQUxZU0lTCiAgICAgUlVOKHRlc3RMb2FkU3RvcmVQYWlyMzIoKSk7CiAg
ICAgUlVOKHRlc3RTdWIzMkFyZ0ltbSgpKTsKIAorICAgIFJVTih0ZXN0QnJhbmNoVGVzdDgoKSk7
CisgICAgUlVOKHRlc3RCcmFuY2hUZXN0MTYoKSk7CisKICNpZiBDUFUoWDg2XzY0KQogICAgIFJV
Tih0ZXN0QnJhbmNoVGVzdEJpdDMyUmVnUmVnKCkpOwogICAgIFJVTih0ZXN0QnJhbmNoVGVzdEJp
dDMyUmVnSW1tKCkpOwo=
</data>
<flag name="review"
          id="469679"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>