<?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>221927</bug_id>
          
          <creation_ts>2021-02-15 14:42:13 -0800</creation_ts>
          <short_desc>BytecodeGenerator::fuseCompareAndJump() fails for some language constructs</short_desc>
          <delta_ts>2021-03-02 18:08:16 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <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>1729389</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-02-15 14:42:13 -0800</bug_when>
    <thetext>BytecodeGenerator::fuseCompareAndJump() fails for some language constructs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729394</commentid>
    <comment_count>1</comment_count>
      <attachid>420376</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-02-15 14:45:45 -0800</bug_when>
    <thetext>Created attachment 420376
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729533</commentid>
    <comment_count>2</comment_count>
      <attachid>420376</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-15 19:54:19 -0800</bug_when>
    <thetext>Comment on attachment 420376
Patch

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

r=me, awesome!

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:5176
&gt; +                emitJumpIfTrue(emitEqualityOp&lt;OpBeloweq&gt;(newTemporary(), context.completionTypeRegister(), emitLoad(nullptr, CompletionType::Throw)), isThrowOrNormalLabel.get());

I think emitEqualityOp is not correct for OpBeloweq (emitBinaryOp?).
Could you also insert static_assert for them in emitEqualityOp? (static_assert for EqOp is StrictEq etc.).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732310</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-22 14:43:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/74614681&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734388</commentid>
    <comment_count>4</comment_count>
      <attachid>421814</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-01 06:00:12 -0800</bug_when>
    <thetext>Created attachment 421814
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734390</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-01 06:15:05 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #2)
&gt; r=me, awesome!

I always appreciate your thorough reviews. Thanks Yusuke!

&gt; I think emitEqualityOp is not correct for OpBeloweq (emitBinaryOp?).
&gt; Could you also insert static_assert for them in emitEqualityOp?
&gt; (static_assert for EqOp is StrictEq etc.).

Great catch!

I&apos;ve added a static_assert only for op_eq / op_stricteq because op_neq / op_nstricteq are handled in BinaryOpNode::emitBytecode() and never get passed to emitEqualityOp().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734400</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-01 07:00:26 -0800</bug_when>
    <thetext>Committed r273649: &lt;https://commits.webkit.org/r273649&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421814.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735152</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-03-02 18:08:16 -0800</bug_when>
    <thetext>This improved JetStream2/Air by 5%. Awesome!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420376</attachid>
            <date>2021-02-15 14:45:45 -0800</date>
            <delta_ts>2021-03-01 06:00:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221927-20210216004543.patch</filename>
            <type>text/plain</type>
            <size>19087</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjcyODgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDIxLTAyLTE1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBCeXRlY29kZUdlbmVyYXRvcjo6ZnVzZUNvbXBhcmVBbmRKdW1wKCkgZmFpbHMgZm9y
IHNvbWUgbGFuZ3VhZ2UgY29uc3RydWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpmdXNlQ29tcGFyZUFuZEp1
bXAoKSB0byBtZXJnZSB0d28gb3BzIGludG8gb25lLCBjb25kaXRpb24ncyBgZHN0YAorICAgICAg
ICByZWdpc3RlciBzaG91bGQgbm90IGJlIHJlZmVyZW5jZWQgZWxzZXdoZXJlLiBUaGlzIGNoYW5n
ZSB0cmFja3MgZG93biBhbmQgZWxpbWluYXRlcyBhbGwKKyAgICAgICAgc3VjaCBjYXNlcywgd2hp
Y2ggcmVkdWNlcyBieXRlY29kZSBzaXplIGZvciBhIGZldyBsYW5ndWFnZSBjb25zdHJ1Y3RzOgor
ICAgICAgICAgIC0xIHBlciBldmVyeSBgY2FzZWAgb2YgYSBgc3dpdGNoYDsKKyAgICAgICAgICAt
MiBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uLCAtMiBwZXIgYHlpZWxkYCAvIGB5aWVsZCpgOworICAg
ICAgICAgIC0yIHBlciBgY2xhc3MgZXh0ZW5kc2A7CisgICAgICAgICAgLTIgcGVyIGBmaW5hbGx5
YCwgYWRkaXRpb25hbGx5IC0xIHBlciBldmVyeSBgYnJlYWtgIC8gYGNvbnRpbnVlYCAvIGByZXR1
cm5gOworICAgICAgICAgIC0yIHBlciBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkoKSB3aXRoIGAu
Li5zcHJlYWRgIGFzIHNpbmdsZSBhcmd1bWVudC4KKworICAgICAgICBJbnN0ZWFkIG9mIG1peGlu
ZyBSZWZQdHIgd2l0aCByYXcgQysrIHBvaW50ZXJzLCBzaW5nbGUtbGluZSBicmFuY2hlcyB3ZXJl
IHByZWZlcnJlZC4KKyAgICAgICAgVG8ga2VlcCB0aGVtIGNsZWFyZXIsIHRoaXMgcGF0Y2ggaW50
cm9kdWNlcyBlbWl0TG9hZCgpIG92ZXJyaWRlIGZvciBHZW5lcmF0b3JSZXN1bWVNb2RlCisgICAg
ICAgIGVudW0sIGFuZCB0d2Vha3MgZXhpc3Rpbmcgb3ZlcnJpZGUgZm9yIENvbXBsZXRpb25UeXBl
LgorCisgICAgICAgIEEgZmV3IGRyaXZlLWJ5IGltcHJvdmVtZW50czoKKyAgICAgICAgICAqIHJl
cGxhY2VzIGVtaXRCaW5hcnlPcCgpIHdpdGggZW1pdEVxdWFsaXR5T3AoKSBmb3IgY29tcGFyaXNv
biBvcHMKKyAgICAgICAgICAgIChjdXJyZW50bHkgZXF1aXZhbGVudCwgZW5hYmxlcyBmdXR1cmUg
b3B0aW1pemF0aW9ucyk7CisgICAgICAgICAgKiByZW1vdmVzIE9wZXJhbmRUeXBlcyBmb3IgY29t
cGFyaXNvbiBvcHMgYXMgdGhleSB3ZXJlIGlnbm9yZWQKKyAgICAgICAgICAgIChsZXQncyByZS1p
bnRyb2R1Y2UgdGhlbSBjb25zaXN0ZW50bHkgb25jZSB0aGV5IGFyZSBzdXBwb3J0ZWQpOworICAg
ICAgICAgICogaW5saW5lcyBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZigpOworICAgICAg
ICAgICogcmVwbGFjZXMgYGVxYCB3aXRoIGBzdHJpY3RlcWAgaW4gQXBwbHlGdW5jdGlvbkNhbGxE
b3ROb2RlLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZSwgbm8gY2FsbGVlIHJlZ2lzdGVy
cyBjb3VudCBncm93LgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RmluYWxseUNvbXBsZXRpb24pOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZik6IERlbGV0ZWQuCisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0TG9hZCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q2FzZUJsb2NrTm9kZTo6ZW1pdEJ5dGVjb2RlRm9yQmxv
Y2spOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkNsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisKIDIwMjEtMDItMTUgIENhaW8g
TGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgogCiAgICAgICAgIFtFU05leHRdIEltcGxlbWVu
dCBwcml2YXRlIGFjY2Vzc29ycwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI3Mjc0
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzQ1LDEzICs0NzQ1LDEwIEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQKICAgICBlbWl0WWllbGRQb2ludChhcmd1bWVu
dCwgcmVzdWx0KTsKIAogICAgIFJlZjxMYWJlbD4gbm9ybWFsTGFiZWwgPSBuZXdMYWJlbCgpOwot
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBuZXdUZW1wb3JhcnkoKTsKLSAgICBl
bWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3Vt
ZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7
Ci0gICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7
CisgICAgZW1pdEp1bXBJZlRydWUoZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4obmV3VGVtcG9y
YXJ5KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBK
U0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpLCBub3JtYWxMYWJl
bC5nZXQoKSk7CiAKICAgICBSZWY8TGFiZWw+IHRocm93TGFiZWwgPSBuZXdMYWJlbCgpOwotICAg
IGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVz
dW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0
PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkp
OwotICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7
CisgICAgZW1pdEp1bXBJZlRydWUoZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4obmV3VGVtcG9y
YXJ5KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBK
U0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSksIHRocm93TGFiZWwu
Z2V0KCkpOwogICAgIC8vIFJldHVybi4KICAgICB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKTsKQEAgLTQ5MzMsMTIg
KzQ5MzAsOCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnCiAgICAg
ICAgICAgICAgICAgUmVmPExhYmVsPiBub3JtYWxMYWJlbCA9IG5ld0xhYmVsKCk7CiAgICAgICAg
ICAgICAgICAgUmVmPExhYmVsPiByZXR1cm5MYWJlbCA9IG5ld0xhYmVsKCk7CiAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9u
ID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9wPE9w
U3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCks
IGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJh
dG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKLSAgICAgICAgICAgICAg
ICAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0
aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0
ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJl
c3VtZU1vZGU6OlJldHVybk1vZGUpKSkpOwotICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElm
VHJ1ZShjb25kaXRpb24uZ2V0KCksIHJldHVybkxhYmVsLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4obmV3VGVtcG9y
YXJ5KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBK
U0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpLCBub3JtYWxMYWJl
bC5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRFcXVhbGl0
eU9wPE9wU3RyaWN0ZXE+KG5ld1RlbXBvcmFyeSgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0
ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwgSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6
OlJldHVybk1vZGUpKSwgcmV0dXJuTGFiZWwuZ2V0KCkpOwogCiAgICAgICAgICAgICAgICAgICAg
IC8vIEZhbGx0aHJvdWdoIHRvIFRocm93TW9kZS4KICAgICAgICAgICAgICAgICB9CkBAIC01MTA4
LDcgKzUxMDEsNyBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmV0dXJuVmlhRmluCiB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RmluYWxseUNvbXBsZXRpb24oRmluYWxseUNvbnRl
eHQmIGNvbnRleHQsIExhYmVsJiBub3JtYWxDb21wbGV0aW9uTGFiZWwpCiB7CiAgICAgaWYgKGNv
bnRleHQubnVtYmVyT2ZCcmVha3NPckNvbnRpbnVlcygpIHx8IGNvbnRleHQuaGFuZGxlc1JldHVy
bnMoKSkgewotICAgICAgICBlbWl0SnVtcElmPE9wU3RyaWN0ZXE+KGNvbnRleHQuY29tcGxldGlv
blR5cGVSZWdpc3RlcigpLCBDb21wbGV0aW9uVHlwZTo6Tm9ybWFsLCBub3JtYWxDb21wbGV0aW9u
TGFiZWwpOworICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVx
PihuZXdUZW1wb3JhcnkoKSwgY29udGV4dC5jb21wbGV0aW9uVHlwZVJlZ2lzdGVyKCksIGVtaXRM
b2FkKG51bGxwdHIsIENvbXBsZXRpb25UeXBlOjpOb3JtYWwpKSwgbm9ybWFsQ29tcGxldGlvbkxh
YmVsKTsKIAogICAgICAgICBGaW5hbGx5Q29udGV4dCogb3V0ZXJDb250ZXh0ID0gY29udGV4dC5v
dXRlckNvbnRleHQoKTsKIApAQCAtNTExOSw3ICs1MTEyLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEZpbmFsbHlDb21wbAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bWJlck9mSnVtcHM7IGkrKykgewogICAgICAgICAgICAgUmVmPExhYmVsPiBuZXh0TGFiZWwgPSBu
ZXdMYWJlbCgpOwogICAgICAgICAgICAgYXV0byYganVtcCA9IGNvbnRleHQuanVtcHMoaSk7Ci0g
ICAgICAgICAgICBlbWl0SnVtcElmPE9wTnN0cmljdGVxPihjb250ZXh0LmNvbXBsZXRpb25UeXBl
UmVnaXN0ZXIoKSwganVtcC5qdW1wSUQsIG5leHRMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICBl
bWl0SnVtcElmRmFsc2UoZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4obmV3VGVtcG9yYXJ5KCks
IGNvbnRleHQuY29tcGxldGlvblR5cGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqdW1w
Lmp1bXBJRCkpLCBuZXh0TGFiZWwuZ2V0KCkpOwogCiAgICAgICAgICAgICAvLyBUaGlzIGNhc2Ug
aXMgZm9yIEJyZWFrIC8gQ29udGludWUgY29tcGxldGlvbnMgZnJvbSBhbiBpbm5lciBmaW5hbGx5
IGNvbnRleHQKICAgICAgICAgICAgIC8vIHdpdGggYSBqdW1wIHRhcmdldCB0aGF0IGlzIG5vdCBi
ZXlvbmQgdGhlIG5leHQgb3V0ZXIgZmluYWxseSBjb250ZXh0OgpAQCAtNTE1Miw3ICs1MTQ1LDcg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEZpbmFsbHlDb21wbAogICAgICAgICBpZiAo
b3V0ZXJDb250ZXh0KSB7CiAgICAgICAgICAgICBpZiAoY29udGV4dC5oYW5kbGVzUmV0dXJucygp
KSB7CiAgICAgICAgICAgICAgICAgUmVmPExhYmVsPiBpc05vdFJldHVybkxhYmVsID0gbmV3TGFi
ZWwoKTsKLSAgICAgICAgICAgICAgICBlbWl0SnVtcElmPE9wTnN0cmljdGVxPihjb250ZXh0LmNv
bXBsZXRpb25UeXBlUmVnaXN0ZXIoKSwgQ29tcGxldGlvblR5cGU6OlJldHVybiwgaXNOb3RSZXR1
cm5MYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXBJZkZhbHNlKGVtaXRFcXVh
bGl0eU9wPE9wU3RyaWN0ZXE+KG5ld1RlbXBvcmFyeSgpLCBjb250ZXh0LmNvbXBsZXRpb25UeXBl
UmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwgQ29tcGxldGlvblR5cGU6OlJldHVybikpLCBp
c05vdFJldHVybkxhYmVsLmdldCgpKTsKIAogICAgICAgICAgICAgICAgIC8vIFRoaXMgY2FzZSBp
cyBmb3IgUmV0dXJuIGNvbXBsZXRpb24gZnJvbSBhbiBpbm5lciBmaW5hbGx5IGNvbnRleHQ6CiAg
ICAgICAgICAgICAgICAgLy8KQEAgLTUxODAsNyArNTE3Myw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRGaW5hbGx5Q29tcGwKICAgICAgICAgICAgIGJvb2wgaGFzQnJlYWtzT3JDb250
aW51ZXNUaGF0RXNjYXBlQ3VycmVudEZpbmFsbHkgPSBjb250ZXh0Lm51bWJlck9mQnJlYWtzT3JD
b250aW51ZXMoKSA+IG51bWJlck9mSnVtcHM7CiAgICAgICAgICAgICBpZiAoaGFzQnJlYWtzT3JD
b250aW51ZXNUaGF0RXNjYXBlQ3VycmVudEZpbmFsbHkpIHsKICAgICAgICAgICAgICAgICBSZWY8
TGFiZWw+IGlzVGhyb3dPck5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKLSAgICAgICAgICAgICAg
ICBlbWl0SnVtcElmPE9wQmVsb3dlcT4oY29udGV4dC5jb21wbGV0aW9uVHlwZVJlZ2lzdGVyKCks
IENvbXBsZXRpb25UeXBlOjpUaHJvdywgaXNUaHJvd09yTm9ybWFsTGFiZWwuZ2V0KCkpOworICAg
ICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRFcXVhbGl0eU9wPE9wQmVsb3dlcT4obmV3
VGVtcG9yYXJ5KCksIGNvbnRleHQuY29tcGxldGlvblR5cGVSZWdpc3RlcigpLCBlbWl0TG9hZChu
dWxscHRyLCBDb21wbGV0aW9uVHlwZTo6VGhyb3cpKSwgaXNUaHJvd09yTm9ybWFsTGFiZWwuZ2V0
KCkpOwogCiAgICAgICAgICAgICAgICAgLy8gQSBjb21wbGV0aW9uVHlwZSBhYm92ZSBUaHJvdyBt
ZWFucyB3ZSBoYXZlIGEgQnJlYWsgb3IgQ29udGludWUgZW5jb2RlZCBhcyBhIGp1bXBJRC4KICAg
ICAgICAgICAgICAgICAvLyBXZSBhbHJlYWR5IHJ1bGVkIG91dCBSZXR1cm4gYWJvdmUuCkBAIC01
MjIzLDcgKzUyMTYsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RmluYWxseUNvbXBs
CiAgICAgICAgICAgICAvLyBXZSBhcmUgdGhlIG91dGVybW9zdCBmaW5hbGx5LgogICAgICAgICAg
ICAgaWYgKGNvbnRleHQuaGFuZGxlc1JldHVybnMoKSkgewogICAgICAgICAgICAgICAgIFJlZjxM
YWJlbD4gbm90UmV0dXJuTGFiZWwgPSBuZXdMYWJlbCgpOwotICAgICAgICAgICAgICAgIGVtaXRK
dW1wSWY8T3BOc3RyaWN0ZXE+KGNvbnRleHQuY29tcGxldGlvblR5cGVSZWdpc3RlcigpLCBDb21w
bGV0aW9uVHlwZTo6UmV0dXJuLCBub3RSZXR1cm5MYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgZW1pdEp1bXBJZkZhbHNlKGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KG5ld1RlbXBvcmFy
eSgpLCBjb250ZXh0LmNvbXBsZXRpb25UeXBlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwg
Q29tcGxldGlvblR5cGU6OlJldHVybikpLCBub3RSZXR1cm5MYWJlbC5nZXQoKSk7CiAKICAgICAg
ICAgICAgICAgICAvLyBUaGlzIGNhc2UgaXMgZm9yIFJldHVybiBjb21wbGV0aW9uIGZyb20gdGhl
IG91dGVybW9zdCBmaW5hbGx5IGNvbnRleHQ6CiAgICAgICAgICAgICAgICAgLy8KQEAgLTUyNDcs
NyArNTI0MCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRGaW5hbGx5Q29tcGwKICAg
ICAvLyBCeSBub3csIHdlJ3ZlIHJ1bGUgb3V0IGFsbCBCcmVhayAvIENvbnRpbnVlIC8gUmV0dXJu
IGNvbXBsZXRpb25zIGFib3ZlLiBUaGUgb25seSByZW1haW5pbmcKICAgICAvLyBwb3NzaWJpbGl0
aWVzIGFyZSBOb3JtYWwgb3IgVGhyb3cuCiAKLSAgICBlbWl0SnVtcElmPE9wTnN0cmljdGVxPihj
b250ZXh0LmNvbXBsZXRpb25UeXBlUmVnaXN0ZXIoKSwgQ29tcGxldGlvblR5cGU6OlRocm93LCBu
b3JtYWxDb21wbGV0aW9uTGFiZWwpOworICAgIGVtaXRKdW1wSWZGYWxzZShlbWl0RXF1YWxpdHlP
cDxPcFN0cmljdGVxPihuZXdUZW1wb3JhcnkoKSwgY29udGV4dC5jb21wbGV0aW9uVHlwZVJlZ2lz
dGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIENvbXBsZXRpb25UeXBlOjpUaHJvdykpLCBub3JtYWxD
b21wbGV0aW9uTGFiZWwpOwogCiAgICAgLy8gV2UgZ2V0IGhlcmUgYmVjYXVzZSB3ZSBlbnRlcmVk
IHRoaXMgZmluYWxseSBjb250ZXh0IHdpdGggVGhyb3cgY29tcGxldGlvblR5cGUgKGkuZS4gd2Ug
aGF2ZQogICAgIC8vIGFuIGV4Y2VwdGlvbiB0aGF0IHdlIG5lZWQgdG8gcmV0aHJvdyksIGFuZCB3
ZSBkaWRuJ3QgZW5jb3VudGVyIGEgZGlmZmVyZW50IGFicnVwdCBjb21wbGV0aW9uCkBAIC01MjYy
LDE3ICs1MjU1LDYgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEZpbmFsbHlDb21wbAog
ICAgIGVtaXRUaHJvdyhjb250ZXh0LmNvbXBsZXRpb25WYWx1ZVJlZ2lzdGVyKCkpOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBDb21wYXJlT3A+Ci12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
SnVtcElmKFJlZ2lzdGVySUQqIGNvbXBsZXRpb25UeXBlUmVnaXN0ZXIsIENvbXBsZXRpb25UeXBl
IHR5cGUsIExhYmVsJiBqdW1wVGFyZ2V0KQotewotICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1w
UmVnaXN0ZXIgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICBSZWdpc3RlcklEKiB2YWx1ZUNvbnN0YW50
ID0gYWRkQ29uc3RhbnRWYWx1ZShqc051bWJlcihzdGF0aWNfY2FzdDxpbnQ+KHR5cGUpKSk7Ci0g
ICAgT3BlcmFuZFR5cGVzIG9wZXJhbmRUeXBlcyA9IE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjpu
dW1iZXJUeXBlSXNJbnQzMigpLCBSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpKTsKLQotICAgIGF1
dG8gZXF1aXZhbGVuY2VSZXN1bHQgPSBlbWl0QmluYXJ5T3A8Q29tcGFyZU9wPih0ZW1wUmVnaXN0
ZXIuZ2V0KCksIGNvbXBsZXRpb25UeXBlUmVnaXN0ZXIsIHZhbHVlQ29uc3RhbnQsIG9wZXJhbmRU
eXBlcyk7Ci0gICAgZW1pdEp1bXBJZlRydWUoZXF1aXZhbGVuY2VSZXN1bHQsIGp1bXBUYXJnZXQp
OwotfQotCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoT3B0aW9uYWxDaGFpblRhcmdldCgp
CiB7CiAgICAgbV9vcHRpb25hbENoYWluVGFyZ2V0U3RhY2suYXBwZW5kKG5ld0xhYmVsKCkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMjcyNzQxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDE4LDEzICsxMDE4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdERlYnVn
SG9vayhFeHByZXNzaW9uTm9kZSopOwogICAgICAgICB2b2lkIGVtaXRXaWxsTGVhdmVDYWxsRnJh
bWVEZWJ1Z0hvb2soKTsKIAotICAgICAgICB2b2lkIGVtaXRMb2FkKFJlZ2lzdGVySUQqIGNvbXBs
ZXRpb25UeXBlUmVnaXN0ZXIsIENvbXBsZXRpb25UeXBlIHR5cGUpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGVtaXRMb2FkKGNvbXBsZXRpb25UeXBlUmVnaXN0ZXIsIEpTVmFsdWUoc3RhdGljX2Nh
c3Q8aW50Pih0eXBlKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q29tcGFyZU9wPgotICAgICAgICB2b2lkIGVtaXRKdW1wSWYoUmVnaXN0ZXJJRCogY29tcGxldGlv
blR5cGVSZWdpc3RlciwgQ29tcGxldGlvblR5cGUsIExhYmVsJiBqdW1wVGFyZ2V0KTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBDb21wbGV0aW9uVHlwZSB0
eXBlKSB7IHJldHVybiBlbWl0TG9hZChkc3QsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+
KHR5cGUpKSk7IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0
LCBKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZSBtb2RlKSB7IHJldHVybiBlbWl0TG9h
ZChkc3QsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KG1vZGUpKSk7IH0KIAogICAgICAg
ICBib29sIGVtaXRKdW1wVmlhRmluYWxseUlmTmVlZGVkKGludCB0YXJnZXRMYWJlbFNjb3BlRGVw
dGgsIExhYmVsJiBqdW1wVGFyZ2V0KTsKICAgICAgICAgYm9vbCBlbWl0UmV0dXJuVmlhRmluYWxs
eUlmTmVlZGVkKFJlZ2lzdGVySUQqIHJldHVyblJlZ2lzdGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlz
aW9uIDI3Mjc0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExNiwxNSArMjExNiwxMiBAQCBSZWdpc3Rl
cklEKiBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtCiAgICAgICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICAgICBSZWY8TGFiZWw+IGhhdmVUaGlzID0gZ2VuZXJhdG9yLm5ld0xhYmVs
KCk7CiAgICAgICAgICAgICAgICAgICAgIFJlZjxMYWJlbD4gZW5kID0gZ2VuZXJhdG9yLm5ld0xh
YmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb21wYXJlUmVz
dWx0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gaW5kZXhaZXJvQ29tcGFyZVJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Qmlu
YXJ5T3A8T3BFcT4oY29tcGFyZVJlc3VsdC5nZXQoKSwgaW5kZXguZ2V0KCksIGdlbmVyYXRvci5l
bWl0TG9hZChudWxscHRyLCBqc051bWJlcigwKSksIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjpu
dW1iZXJUeXBlSXNJbnQzMigpLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmRmFsc2UoaW5kZXhaZXJvQ29t
cGFyZVJlc3VsdC5nZXQoKSwgaGF2ZVRoaXMuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEp1bXBJZkZhbHNlKGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0cmlj
dGVxPihnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGluZGV4LmdldCgpLCBnZW5lcmF0b3IuZW1p
dExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpKSwgaGF2ZVRoaXMuZ2V0KCkpOwogICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IubW92ZSh0aGlzUmVnaXN0ZXIuZ2V0KCksIHZhbHVlKTsKICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGluZGV4LmdldCgpLCBqc051bWJl
cigxKSk7CiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkp
OwogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGhhdmVUaGlzLmdldCgp
KTsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGluZGV4T25lQ29tcGFy
ZVJlc3VsdCA9IGdlbmVyYXRvci5lbWl0QmluYXJ5T3A8T3BFcT4oY29tcGFyZVJlc3VsdC5nZXQo
KSwgaW5kZXguZ2V0KCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcigxKSks
IE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpLCBSZXN1bHRUeXBl
OjpudW1iZXJUeXBlSXNJbnQzMigpKSk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0SnVtcElmRmFsc2UoaW5kZXhPbmVDb21wYXJlUmVzdWx0LmdldCgpLCBlbmQuZ2V0KCkpOwor
ICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZkZhbHNlKGdlbmVyYXRvci5l
bWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGluZGV4
LmdldCgpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMSkpKSwgZW5kLmdl
dCgpKTsKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJndW1lbnRzUmVnaXN0
ZXIuZ2V0KCksIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2Fk
KGluZGV4LmdldCgpLCBqc051bWJlcigyKSk7CiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKQEAgLTQzOTAsMTcgKzQzODcsMTcgQEAgdm9pZCBDYXNl
QmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGVGb3JCbG9jawogICAgICAgICBmb3IgKENsYXVzZUxpc3RO
b2RlKiBsaXN0ID0gbV9saXN0MTsgbGlzdDsgbGlzdCA9IGxpc3QtPmdldE5leHQoKSkgewogICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNsYXVzZVZhbCA9IGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjbGF1c2VWYWwuZ2V0KCks
IGxpc3QtPmdldENsYXVzZSgpLT5leHByKCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRC
aW5hcnlPcDxPcFN0cmljdGVxPihjbGF1c2VWYWwuZ2V0KCksIGNsYXVzZVZhbC5nZXQoKSwgc3dp
dGNoRXhwcmVzc2lvbiwgT3BlcmFuZFR5cGVzKCkpOwotICAgICAgICAgICAgbGFiZWxWZWN0b3Iu
YXBwZW5kKGdlbmVyYXRvci5uZXdMYWJlbCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
SnVtcElmVHJ1ZShjbGF1c2VWYWwuZ2V0KCksIGxhYmVsVmVjdG9yW2xhYmVsVmVjdG9yLnNpemUo
KSAtIDFdLmdldCgpKTsKKyAgICAgICAgICAgIFJlZjxMYWJlbD4gY2xhdXNlTGFiZWwgPSBnZW5l
cmF0b3IubmV3TGFiZWwoKTsKKyAgICAgICAgICAgIGxhYmVsVmVjdG9yLmFwcGVuZChjbGF1c2VM
YWJlbCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZ2VuZXJhdG9yLmVt
aXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgY2xhdXNl
VmFsLmdldCgpLCBzd2l0Y2hFeHByZXNzaW9uKSwgY2xhdXNlTGFiZWwuZ2V0KCkpOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBmb3IgKENsYXVzZUxpc3ROb2RlKiBsaXN0ID0gbV9saXN0
MjsgbGlzdDsgbGlzdCA9IGxpc3QtPmdldE5leHQoKSkgewogICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGNsYXVzZVZhbCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjbGF1c2VWYWwuZ2V0KCksIGxpc3QtPmdldENsYXVzZSgp
LT5leHByKCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcDxPcFN0cmljdGVx
PihjbGF1c2VWYWwuZ2V0KCksIGNsYXVzZVZhbC5nZXQoKSwgc3dpdGNoRXhwcmVzc2lvbiwgT3Bl
cmFuZFR5cGVzKCkpOwotICAgICAgICAgICAgbGFiZWxWZWN0b3IuYXBwZW5kKGdlbmVyYXRvci5u
ZXdMYWJlbCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShjbGF1c2VW
YWwuZ2V0KCksIGxhYmVsVmVjdG9yW2xhYmVsVmVjdG9yLnNpemUoKSAtIDFdLmdldCgpKTsKKyAg
ICAgICAgICAgIFJlZjxMYWJlbD4gY2xhdXNlTGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsK
KyAgICAgICAgICAgIGxhYmVsVmVjdG9yLmFwcGVuZChjbGF1c2VMYWJlbCk7CisgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wPE9wU3Ry
aWN0ZXE+KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgY2xhdXNlVmFsLmdldCgpLCBzd2l0Y2hF
eHByZXNzaW9uKSwgY2xhdXNlTGFiZWwuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIGdlbmVy
YXRvci5lbWl0SnVtcChkZWZhdWx0TGFiZWwuZ2V0KCkpOwogICAgIH0KQEAgLTQ3MzUsNyArNDcz
Miw3IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGUKICAgICAgICAg
Z2VuZXJhdG9yLm1vdmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGdl
bmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpKTsKICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJn
cy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGdlbmVyYXRvci5wcm9taXNlUmVn
aXN0ZXIoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChhcmdzLmFyZ3VtZW50UmVnaXN0
ZXIoYXJndW1lbnRDb3VudCsrKSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5l
bWl0TG9hZChhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwganNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5v
cm1hbE1vZGUpKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChhcmdzLmFyZ3VtZW50UmVn
aXN0ZXIoYXJndW1lbnRDb3VudCsrKSwgSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6
Ok5vcm1hbE1vZGUpOwogICAgICAgICAvLyBKU1RleHRQb3NpdGlvbihpbnQgX2xpbmUsIGludCBf
b2Zmc2V0LCBpbnQgX2xpbmVTdGFydE9mZnNldCkKICAgICAgICAgSlNUZXh0UG9zaXRpb24gZGl2
b3QoZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIApAQCAt
NDc1MSwxMyArNDc0OCwxMCBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOiB7CiAgICAg
ICAgIFJlZjxMYWJlbD4gZ2VuZXJhdG9yQm9keUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7
CiAgICAgICAgIHsKLSAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFs
aXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVz
dW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9y
bWFsTW9kZSkpKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoY29uZGl0
aW9uLmdldCgpLCBnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRKdW1wSWZUcnVlKGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVn
aXN0ZXIoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIEpTR2VuZXJhdG9yOjpHZW5lcmF0
b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSksIGdlbmVyYXRvckJvZHlMYWJlbC5nZXQoKSk7CiAK
ICAgICAgICAgICAgIFJlZjxMYWJlbD4gdGhyb3dMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgp
OwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRp
dGlvbi5nZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5l
cmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7Ci0gICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdl
dCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShnZW5lcmF0b3IuZW1p
dEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBnZW5lcmF0
b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxs
cHRyLCBKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSksIHRocm93
TGFiZWwuZ2V0KCkpOwogCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0
b3IuZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKIApAQCAtNDk4MywyMCArNDk3NywxOCBAQCBS
ZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoCiAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBwcm90b1BhcmVudCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRMb2FkKHByb3RvUGFyZW50LmdldCgpLCBqc051bGwoKSk7CiAKLSAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXBSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKTsKLQogICAgICAgICBSZWY8TGFiZWw+IHN1cGVyY2xhc3NJc051bGxMYWJlbCA9IGdl
bmVyYXRvci5uZXdMYWJlbCgpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZ2Vu
ZXJhdG9yLmVtaXRJc051bGwodGVtcFJlZ2lzdGVyLmdldCgpLCBzdXBlcmNsYXNzLmdldCgpKSwg
c3VwZXJjbGFzc0lzTnVsbExhYmVsLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1w
SWZUcnVlKGdlbmVyYXRvci5lbWl0SXNOdWxsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc3Vw
ZXJjbGFzcy5nZXQoKSksIHN1cGVyY2xhc3NJc051bGxMYWJlbC5nZXQoKSk7CiAKICAgICAgICAg
UmVmPExhYmVsPiBzdXBlcmNsYXNzSXNDb25zdHJ1Y3RvckxhYmVsID0gZ2VuZXJhdG9yLm5ld0xh
YmVsKCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShnZW5lcmF0b3IuZW1pdElz
Q29uc3RydWN0b3IodGVtcFJlZ2lzdGVyLmdldCgpLCBzdXBlcmNsYXNzLmdldCgpKSwgc3VwZXJj
bGFzc0lzQ29uc3RydWN0b3JMYWJlbC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVt
cElmVHJ1ZShnZW5lcmF0b3IuZW1pdElzQ29uc3RydWN0b3IoZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpLCBzdXBlcmNsYXNzLmdldCgpKSwgc3VwZXJjbGFzc0lzQ29uc3RydWN0b3JMYWJlbC5nZXQo
KSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoIlRoZSBzdXBlcmNsYXNz
IGlzIG5vdCBhIGNvbnN0cnVjdG9yLiJfcyk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwo
c3VwZXJjbGFzc0lzQ29uc3RydWN0b3JMYWJlbC5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5l
bWl0R2V0QnlJZChwcm90b1BhcmVudC5nZXQoKSwgc3VwZXJjbGFzcy5nZXQoKSwgZ2VuZXJhdG9y
LnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpOwogCiAgICAgICAgIFJlZjxMYWJlbD4gcHJvdG9Q
YXJlbnRJc09iamVjdE9yTnVsbExhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7Ci0gICAgICAg
IGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShnZW5lcmF0b3IuZW1pdElzT2JqZWN0KHRlbXBSZWdp
c3Rlci5nZXQoKSwgcHJvdG9QYXJlbnQuZ2V0KCkpLCBwcm90b1BhcmVudElzT2JqZWN0T3JOdWxs
TGFiZWwuZ2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZ2VuZXJhdG9y
LmVtaXRJc051bGwodGVtcFJlZ2lzdGVyLmdldCgpLCBwcm90b1BhcmVudC5nZXQoKSksIHByb3Rv
UGFyZW50SXNPYmplY3RPck51bGxMYWJlbC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
SnVtcElmVHJ1ZShnZW5lcmF0b3IuZW1pdElzT2JqZWN0KGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgcHJvdG9QYXJlbnQuZ2V0KCkpLCBwcm90b1BhcmVudElzT2JqZWN0T3JOdWxsTGFiZWwuZ2V0
KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZ2VuZXJhdG9yLmVtaXRJc051
bGwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm90b1BhcmVudC5nZXQoKSksIHByb3RvUGFy
ZW50SXNPYmplY3RPck51bGxMYWJlbC5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhy
b3dUeXBlRXJyb3IoIlRoZSB2YWx1ZSBvZiB0aGUgc3VwZXJjbGFzcydzIHByb3RvdHlwZSBwcm9w
ZXJ0eSBpcyBub3QgYW4gb2JqZWN0IG9yIG51bGwuIl9zKTsKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRMYWJlbChwcm90b1BhcmVudElzT2JqZWN0T3JOdWxsTGFiZWwuZ2V0KCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421814</attachid>
            <date>2021-03-01 06:00:12 -0800</date>
            <delta_ts>2021-03-01 07:00:27 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-221927-20210301160010.patch</filename>
            <type>text/plain</type>
            <size>20733</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjczNjQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBA
CisyMDIxLTAzLTAxICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBCeXRlY29kZUdlbmVyYXRvcjo6ZnVzZUNvbXBhcmVBbmRKdW1wKCkgZmFpbHMgZm9y
IHNvbWUgbGFuZ3VhZ2UgY29uc3RydWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1
enVraS4KKworICAgICAgICBGb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmZ1c2VDb21wYXJlQW5kSnVt
cCgpIHRvIG1lcmdlIHR3byBvcHMgaW50byBvbmUsIGNvbmRpdGlvbidzIGBkc3RgCisgICAgICAg
IHJlZ2lzdGVyIHNob3VsZCBub3QgYmUgcmVmZXJlbmNlZCBmcm9tIGVsc2V3aGVyZS4gVGhpcyBj
aGFuZ2UgdHJhY2tzIGRvd24gYW5kIGVsaW1pbmF0ZXMKKyAgICAgICAgYWxsIHN1Y2ggY2FzZXMs
IHdoaWNoIHJlZHVjZXMgYnl0ZWNvZGUgc2l6ZSBmb3IgYSBmZXcgbGFuZ3VhZ2UgY29uc3RydWN0
czoKKyAgICAgICAgICAtMSBwZXIgZXZlcnkgYGNhc2VgIG9mIGEgYHN3aXRjaGA7CisgICAgICAg
ICAgLTIgcGVyIGdlbmVyYXRvciBmdW5jdGlvbiwgLTIgcGVyIGV2ZXJ5IGB5aWVsZGAgLyBgeWll
bGQqYDsKKyAgICAgICAgICAtMiBwZXIgYGNsYXNzIGV4dGVuZHNgOworICAgICAgICAgIC0yIHBl
ciBgZmluYWxseWAsIC0xIHBlciBldmVyeSBgYnJlYWtgIC8gYGNvbnRpbnVlYCAvIGByZXR1cm5g
IGluc2lkZTsKKyAgICAgICAgICAtMyBwZXIgRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5KCkgd2l0
aCBgLi4uc3ByZWFkYCBhcyBhIHNpbmdsZSBhcmd1bWVudC4KKworICAgICAgICBJbnN0ZWFkIG9m
IG1peGluZyBSZWZQdHIgd2l0aCByYXcgQysrIHBvaW50ZXJzLCBzaW5nbGUtbGluZSBicmFuY2hl
cyB3ZXJlIHByZWZlcnJlZC4KKyAgICAgICAgVG8ga2VlcCB0aGVtIGNsZWFuZXIsIHRoaXMgcGF0
Y2ggaW50cm9kdWNlcyBlbWl0TG9hZCgpIG92ZXJyaWRlIGZvciBKU0dlbmVyYXRvcjo6UmVzdW1l
TW9kZQorICAgICAgICBlbnVtLCBhbmQgdHdlYWtzIGV4aXN0aW5nIG92ZXJyaWRlIGZvciBDb21w
bGV0aW9uVHlwZS4KKworICAgICAgICBBIGZldyBkcml2ZS1ieSBpbXByb3ZlbWVudHM6CisgICAg
ICAgICAgKiB0byBlbmFibGUgZnV0dXJlIG9wdGltaXphdGlvbnMsIHJlcGxhY2VzIGVtaXRCaW5h
cnlPcCgpIHdpdGggZW1pdEVxdWFsaXR5T3AoKQorICAgICAgICAgICAgZm9yIE9wRXEgLyBPcFN0
cmljdGVxIChhZGRzIGFuIGFzc2VydCksIGFuZCB2aWNlLXZlcnNhIGZvciBvdGhlciBjb21wYXJp
c29uIG9wczsKKyAgICAgICAgICAqIHJlbW92ZXMgT3BlcmFuZFR5cGVzIGZvciBjb21wYXJpc29u
IG9wcyBhcyBpdCB3YXMgaWdub3JlZAorICAgICAgICAgICAgKGxldCdzIHJlLWludHJvZHVjZSB0
aGVtIGNvbnNpc3RlbnRseSBvbmNlIHN1cHBvcnRlZCk7CisgICAgICAgICAgKiBpbmxpbmVzIHRv
byBzcGVjaWZpYyBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZigpOworICAgICAgICAgICog
cmVwbGFjZXMgYGVxYCB3aXRoIGBzdHJpY3RlcWAgaW4gQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2Rl
LgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZSwgbm8gY2FsbGVlIHJlZ2lzdGVycyBjb3Vu
dCBncm93LgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RmluYWxseUNvbXBsZXRpb24pOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZik6IERlbGV0ZWQuCisgICAgICAgICogYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0RXF1YWxpdHlPcCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0TG9hZCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6Cisg
ICAgICAgIChKU0M6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDYXNl
QmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGVGb3JCbG9jayk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q2xhc3NFeHByTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKwogMjAyMS0wMi0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFtKU0NdIEFkZCBnYyBhbmQgY2xlYXJLZXB0T2JqZWN0cyB0byAkMjYyCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjczNjQ1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ3NjcsMTMgKzQ3NjcsMTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRZaWVsZAogICAgIGVtaXRZaWVsZFBvaW50KGFyZ3VtZW50LCByZXN1bHQpOwogCiAgICAgUmVm
PExhYmVsPiBub3JtYWxMYWJlbCA9IG5ld0xhYmVsKCk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGNvbmRpdGlvbiA9IG5ld1RlbXBvcmFyeSgpOwotICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0
ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRM
b2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpS
ZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKLSAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24u
Z2V0KCksIG5vcm1hbExhYmVsLmdldCgpKTsKKyAgICBlbWl0SnVtcElmVHJ1ZShlbWl0RXF1YWxp
dHlPcDxPcFN0cmljdGVxPihuZXdUZW1wb3JhcnkoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIEpTR2VuZXJhdG9yOjpSZXN1bWVNb2RlOjpOb3JtYWxN
b2RlKSksIG5vcm1hbExhYmVsLmdldCgpKTsKIAogICAgIFJlZjxMYWJlbD4gdGhyb3dMYWJlbCA9
IG5ld0xhYmVsKCk7Ci0gICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdl
dCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJlc3VtZU1vZGU6OlRocm93
TW9kZSkpKSk7Ci0gICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVs
LmdldCgpKTsKKyAgICBlbWl0SnVtcElmVHJ1ZShlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihu
ZXdUZW1wb3JhcnkoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51
bGxwdHIsIEpTR2VuZXJhdG9yOjpSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSwgdGhyb3dMYWJlbC5n
ZXQoKSk7CiAgICAgLy8gUmV0dXJuLgogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpOwpAQCAtNDk1MywxNyAr
NDk1MCwxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnCiAgICAg
ICAgICAgICAgICAgZW1pdFlpZWxkUG9pbnQodmFsdWUuZ2V0KCksIEpTQXN5bmNHZW5lcmF0b3I6
OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6WWllbGQpOwogCiAgICAgICAgICAgICAgICAg
UmVmPExhYmVsPiBub3JtYWxMYWJlbCA9IG5ld0xhYmVsKCk7Ci0gICAgICAgICAgICAgICAgUmVm
PExhYmVsPiByZXR1cm5MYWJlbCA9IG5ld0xhYmVsKCk7Ci0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9y
YXJ5KCk7Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNv
bmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51
bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpSZXN1bWVN
b2RlOjpOb3JtYWxNb2RlKSkpKTsKLSAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUo
Y29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JS
ZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJlc3VtZU1vZGU6OlJldHVybk1vZGUpKSkpOwotICAg
ICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHJldHVybkxh
YmVsLmdldCgpKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0RXF1YWxpdHlP
cDxPcFN0cmljdGVxPihuZXdUZW1wb3JhcnkoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVy
KCksIGVtaXRMb2FkKG51bGxwdHIsIEpTR2VuZXJhdG9yOjpSZXN1bWVNb2RlOjpOb3JtYWxNb2Rl
KSksIG5vcm1hbExhYmVsLmdldCgpKTsKIAotICAgICAgICAgICAgICAgICAgICAvLyBGYWxsdGhy
b3VnaCB0byBUaHJvd01vZGUuCi0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFJl
ZjxMYWJlbD4gcmV0dXJuTGFiZWwgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgIGVtaXRK
dW1wSWZUcnVlKGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KG5ld1RlbXBvcmFyeSgpLCBnZW5l
cmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwgSlNHZW5lcmF0b3I6
OlJlc3VtZU1vZGU6OlJldHVybk1vZGUpKSwgcmV0dXJuTGFiZWwuZ2V0KCkpOwogCiAgICAgICAg
ICAgICAgICAgLy8gVGhyb3cuCiAgICAgICAgICAgICAgICAgewpAQCAtNTEzMSw3ICs1MTIxLDcg
QEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJldHVyblZpYUZpbgogdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEZpbmFsbHlDb21wbGV0aW9uKEZpbmFsbHlDb250ZXh0JiBjb250ZXh0
LCBMYWJlbCYgbm9ybWFsQ29tcGxldGlvbkxhYmVsKQogewogICAgIGlmIChjb250ZXh0Lm51bWJl
ck9mQnJlYWtzT3JDb250aW51ZXMoKSB8fCBjb250ZXh0LmhhbmRsZXNSZXR1cm5zKCkpIHsKLSAg
ICAgICAgZW1pdEp1bXBJZjxPcFN0cmljdGVxPihjb250ZXh0LmNvbXBsZXRpb25UeXBlUmVnaXN0
ZXIoKSwgQ29tcGxldGlvblR5cGU6Ok5vcm1hbCwgbm9ybWFsQ29tcGxldGlvbkxhYmVsKTsKKyAg
ICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4obmV3VGVtcG9y
YXJ5KCksIGNvbnRleHQuY29tcGxldGlvblR5cGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRy
LCBDb21wbGV0aW9uVHlwZTo6Tm9ybWFsKSksIG5vcm1hbENvbXBsZXRpb25MYWJlbCk7CiAKICAg
ICAgICAgRmluYWxseUNvbnRleHQqIG91dGVyQ29udGV4dCA9IGNvbnRleHQub3V0ZXJDb250ZXh0
KCk7CiAKQEAgLTUxNDIsNyArNTEzMiw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRG
aW5hbGx5Q29tcGwKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkp1bXBz
OyBpKyspIHsKICAgICAgICAgICAgIFJlZjxMYWJlbD4gbmV4dExhYmVsID0gbmV3TGFiZWwoKTsK
ICAgICAgICAgICAgIGF1dG8mIGp1bXAgPSBjb250ZXh0Lmp1bXBzKGkpOwotICAgICAgICAgICAg
ZW1pdEp1bXBJZjxPcE5zdHJpY3RlcT4oY29udGV4dC5jb21wbGV0aW9uVHlwZVJlZ2lzdGVyKCks
IGp1bXAuanVtcElELCBuZXh0TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgZW1pdEp1bXBJZkZh
bHNlKGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KG5ld1RlbXBvcmFyeSgpLCBjb250ZXh0LmNv
bXBsZXRpb25UeXBlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganVtcC5qdW1wSUQpKSwg
bmV4dExhYmVsLmdldCgpKTsKIAogICAgICAgICAgICAgLy8gVGhpcyBjYXNlIGlzIGZvciBCcmVh
ayAvIENvbnRpbnVlIGNvbXBsZXRpb25zIGZyb20gYW4gaW5uZXIgZmluYWxseSBjb250ZXh0CiAg
ICAgICAgICAgICAvLyB3aXRoIGEganVtcCB0YXJnZXQgdGhhdCBpcyBub3QgYmV5b25kIHRoZSBu
ZXh0IG91dGVyIGZpbmFsbHkgY29udGV4dDoKQEAgLTUxNzUsNyArNTE2NSw3IEBAIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRGaW5hbGx5Q29tcGwKICAgICAgICAgaWYgKG91dGVyQ29udGV4
dCkgewogICAgICAgICAgICAgaWYgKGNvbnRleHQuaGFuZGxlc1JldHVybnMoKSkgewogICAgICAg
ICAgICAgICAgIFJlZjxMYWJlbD4gaXNOb3RSZXR1cm5MYWJlbCA9IG5ld0xhYmVsKCk7Ci0gICAg
ICAgICAgICAgICAgZW1pdEp1bXBJZjxPcE5zdHJpY3RlcT4oY29udGV4dC5jb21wbGV0aW9uVHlw
ZVJlZ2lzdGVyKCksIENvbXBsZXRpb25UeXBlOjpSZXR1cm4sIGlzTm90UmV0dXJuTGFiZWwuZ2V0
KCkpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZGYWxzZShlbWl0RXF1YWxpdHlPcDxPcFN0
cmljdGVxPihuZXdUZW1wb3JhcnkoKSwgY29udGV4dC5jb21wbGV0aW9uVHlwZVJlZ2lzdGVyKCks
IGVtaXRMb2FkKG51bGxwdHIsIENvbXBsZXRpb25UeXBlOjpSZXR1cm4pKSwgaXNOb3RSZXR1cm5M
YWJlbC5nZXQoKSk7CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGNhc2UgaXMgZm9yIFJldHVy
biBjb21wbGV0aW9uIGZyb20gYW4gaW5uZXIgZmluYWxseSBjb250ZXh0OgogICAgICAgICAgICAg
ICAgIC8vCkBAIC01MjAzLDcgKzUxOTMsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
RmluYWxseUNvbXBsCiAgICAgICAgICAgICBib29sIGhhc0JyZWFrc09yQ29udGludWVzVGhhdEVz
Y2FwZUN1cnJlbnRGaW5hbGx5ID0gY29udGV4dC5udW1iZXJPZkJyZWFrc09yQ29udGludWVzKCkg
PiBudW1iZXJPZkp1bXBzOwogICAgICAgICAgICAgaWYgKGhhc0JyZWFrc09yQ29udGludWVzVGhh
dEVzY2FwZUN1cnJlbnRGaW5hbGx5KSB7CiAgICAgICAgICAgICAgICAgUmVmPExhYmVsPiBpc1Ro
cm93T3JOb3JtYWxMYWJlbCA9IG5ld0xhYmVsKCk7Ci0gICAgICAgICAgICAgICAgZW1pdEp1bXBJ
ZjxPcEJlbG93ZXE+KGNvbnRleHQuY29tcGxldGlvblR5cGVSZWdpc3RlcigpLCBDb21wbGV0aW9u
VHlwZTo6VGhyb3csIGlzVGhyb3dPck5vcm1hbExhYmVsLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICBlbWl0SnVtcElmVHJ1ZShlbWl0QmluYXJ5T3A8T3BCZWxvd2VxPihuZXdUZW1wb3JhcnkoKSwg
Y29udGV4dC5jb21wbGV0aW9uVHlwZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIENvbXBs
ZXRpb25UeXBlOjpUaHJvdykpLCBpc1Rocm93T3JOb3JtYWxMYWJlbC5nZXQoKSk7CiAKICAgICAg
ICAgICAgICAgICAvLyBBIGNvbXBsZXRpb25UeXBlIGFib3ZlIFRocm93IG1lYW5zIHdlIGhhdmUg
YSBCcmVhayBvciBDb250aW51ZSBlbmNvZGVkIGFzIGEganVtcElELgogICAgICAgICAgICAgICAg
IC8vIFdlIGFscmVhZHkgcnVsZWQgb3V0IFJldHVybiBhYm92ZS4KQEAgLTUyNDYsNyArNTIzNiw3
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRGaW5hbGx5Q29tcGwKICAgICAgICAgICAg
IC8vIFdlIGFyZSB0aGUgb3V0ZXJtb3N0IGZpbmFsbHkuCiAgICAgICAgICAgICBpZiAoY29udGV4
dC5oYW5kbGVzUmV0dXJucygpKSB7CiAgICAgICAgICAgICAgICAgUmVmPExhYmVsPiBub3RSZXR1
cm5MYWJlbCA9IG5ld0xhYmVsKCk7Ci0gICAgICAgICAgICAgICAgZW1pdEp1bXBJZjxPcE5zdHJp
Y3RlcT4oY29udGV4dC5jb21wbGV0aW9uVHlwZVJlZ2lzdGVyKCksIENvbXBsZXRpb25UeXBlOjpS
ZXR1cm4sIG5vdFJldHVybkxhYmVsLmdldCgpKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElm
RmFsc2UoZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4obmV3VGVtcG9yYXJ5KCksIGNvbnRleHQu
Y29tcGxldGlvblR5cGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBDb21wbGV0aW9uVHlw
ZTo6UmV0dXJuKSksIG5vdFJldHVybkxhYmVsLmdldCgpKTsKIAogICAgICAgICAgICAgICAgIC8v
IFRoaXMgY2FzZSBpcyBmb3IgUmV0dXJuIGNvbXBsZXRpb24gZnJvbSB0aGUgb3V0ZXJtb3N0IGZp
bmFsbHkgY29udGV4dDoKICAgICAgICAgICAgICAgICAvLwpAQCAtNTI3MCw3ICs1MjYwLDcgQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEZpbmFsbHlDb21wbAogICAgIC8vIEJ5IG5vdywg
d2UndmUgcnVsZSBvdXQgYWxsIEJyZWFrIC8gQ29udGludWUgLyBSZXR1cm4gY29tcGxldGlvbnMg
YWJvdmUuIFRoZSBvbmx5IHJlbWFpbmluZwogICAgIC8vIHBvc3NpYmlsaXRpZXMgYXJlIE5vcm1h
bCBvciBUaHJvdy4KIAotICAgIGVtaXRKdW1wSWY8T3BOc3RyaWN0ZXE+KGNvbnRleHQuY29tcGxl
dGlvblR5cGVSZWdpc3RlcigpLCBDb21wbGV0aW9uVHlwZTo6VGhyb3csIG5vcm1hbENvbXBsZXRp
b25MYWJlbCk7CisgICAgZW1pdEp1bXBJZkZhbHNlKGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+
KG5ld1RlbXBvcmFyeSgpLCBjb250ZXh0LmNvbXBsZXRpb25UeXBlUmVnaXN0ZXIoKSwgZW1pdExv
YWQobnVsbHB0ciwgQ29tcGxldGlvblR5cGU6OlRocm93KSksIG5vcm1hbENvbXBsZXRpb25MYWJl
bCk7CiAKICAgICAvLyBXZSBnZXQgaGVyZSBiZWNhdXNlIHdlIGVudGVyZWQgdGhpcyBmaW5hbGx5
IGNvbnRleHQgd2l0aCBUaHJvdyBjb21wbGV0aW9uVHlwZSAoaS5lLiB3ZSBoYXZlCiAgICAgLy8g
YW4gZXhjZXB0aW9uIHRoYXQgd2UgbmVlZCB0byByZXRocm93KSwgYW5kIHdlIGRpZG4ndCBlbmNv
dW50ZXIgYSBkaWZmZXJlbnQgYWJydXB0IGNvbXBsZXRpb24KQEAgLTUyODUsMTcgKzUyNzUsNiBA
QCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RmluYWxseUNvbXBsCiAgICAgZW1pdFRocm93
KGNvbnRleHQuY29tcGxldGlvblZhbHVlUmVnaXN0ZXIoKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIENvbXBhcmVPcD4KLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWYoUmVnaXN0
ZXJJRCogY29tcGxldGlvblR5cGVSZWdpc3RlciwgQ29tcGxldGlvblR5cGUgdHlwZSwgTGFiZWwm
IGp1bXBUYXJnZXQpCi17Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXBSZWdpc3RlciA9IG5l
d1RlbXBvcmFyeSgpOwotICAgIFJlZ2lzdGVySUQqIHZhbHVlQ29uc3RhbnQgPSBhZGRDb25zdGFu
dFZhbHVlKGpzTnVtYmVyKHN0YXRpY19jYXN0PGludD4odHlwZSkpKTsKLSAgICBPcGVyYW5kVHlw
ZXMgb3BlcmFuZFR5cGVzID0gT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6Om51bWJlclR5cGVJc0lu
dDMyKCksIFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCkpOwotCi0gICAgYXV0byBlcXVpdmFsZW5j
ZVJlc3VsdCA9IGVtaXRCaW5hcnlPcDxDb21wYXJlT3A+KHRlbXBSZWdpc3Rlci5nZXQoKSwgY29t
cGxldGlvblR5cGVSZWdpc3RlciwgdmFsdWVDb25zdGFudCwgb3BlcmFuZFR5cGVzKTsKLSAgICBl
bWl0SnVtcElmVHJ1ZShlcXVpdmFsZW5jZVJlc3VsdCwganVtcFRhcmdldCk7Ci19Ci0KIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hPcHRpb25hbENoYWluVGFyZ2V0KCkKIHsKICAgICBtX29w
dGlvbmFsQ2hhaW5UYXJnZXRTdGFjay5hcHBlbmQobmV3TGFiZWwoKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCShyZXZpc2lvbiAyNzM2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyMyw3ICs3MjMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICYmIEJpbmFyeU9wOjpvcGNvZGVJRCAhPSBv
cF9zdWIKICAgICAgICAgICAgICYmIEJpbmFyeU9wOjpvcGNvZGVJRCAhPSBvcF9kaXYsCiAgICAg
ICAgICAgICBSZWdpc3RlcklEKj4KLSAgICAgICAgZW1pdEJpbmFyeU9wKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogc3JjMSwgUmVnaXN0ZXJJRCogc3JjMiwgT3BlcmFuZFR5cGVzKQorICAg
ICAgICBlbWl0QmluYXJ5T3AoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZWdp
c3RlcklEKiBzcmMyLCBPcGVyYW5kVHlwZXMgPSBPcGVyYW5kVHlwZXMoKSkKICAgICAgICAgewog
ICAgICAgICAgICAgQmluYXJ5T3A6OmVtaXQodGhpcywgZHN0LCBzcmMxLCBzcmMyKTsKICAgICAg
ICAgICAgIHJldHVybiBkc3Q7CkBAIC03NDcsNiArNzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVxT3A+CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRF
cXVhbGl0eU9wKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjMSwgUmVnaXN0ZXJJRCog
c3JjMikKICAgICAgICAgeworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChFcU9wOjpvcGNvZGVJ
RCA9PSBvcF9lcSB8fCBFcU9wOjpvcGNvZGVJRCA9PSBvcF9zdHJpY3RlcSk7CiAgICAgICAgICAg
ICBpZiAoIWVtaXRFcXVhbGl0eU9wSW1wbChkc3QsIHNyYzEsIHNyYzIpKQogICAgICAgICAgICAg
ICAgIEVxT3A6OmVtaXQodGhpcywgZHN0LCBzcmMxLCBzcmMyKTsKICAgICAgICAgICAgIHJldHVy
biBkc3Q7CkBAIC0xMDIwLDEzICsxMDIxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZW1pdERlYnVnSG9vayhFeHByZXNzaW9uTm9kZSopOwogICAgICAgICB2b2lkIGVtaXRXaWxs
TGVhdmVDYWxsRnJhbWVEZWJ1Z0hvb2soKTsKIAotICAgICAgICB2b2lkIGVtaXRMb2FkKFJlZ2lz
dGVySUQqIGNvbXBsZXRpb25UeXBlUmVnaXN0ZXIsIENvbXBsZXRpb25UeXBlIHR5cGUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGVtaXRMb2FkKGNvbXBsZXRpb25UeXBlUmVnaXN0ZXIsIEpTVmFs
dWUoc3RhdGljX2Nhc3Q8aW50Pih0eXBlKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ29tcGFyZU9wPgotICAgICAgICB2b2lkIGVtaXRKdW1wSWYoUmVnaXN0ZXJJ
RCogY29tcGxldGlvblR5cGVSZWdpc3RlciwgQ29tcGxldGlvblR5cGUsIExhYmVsJiBqdW1wVGFy
Z2V0KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBDb21w
bGV0aW9uVHlwZSB0eXBlKSB7IHJldHVybiBlbWl0TG9hZChkc3QsIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KHR5cGUpKSk7IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWQoUmVn
aXN0ZXJJRCogZHN0LCBKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZSBtb2RlKSB7IHJldHVybiBlbWl0
TG9hZChkc3QsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KG1vZGUpKSk7IH0KIAogICAg
ICAgICBib29sIGVtaXRKdW1wVmlhRmluYWxseUlmTmVlZGVkKGludCB0YXJnZXRMYWJlbFNjb3Bl
RGVwdGgsIExhYmVsJiBqdW1wVGFyZ2V0KTsKICAgICAgICAgYm9vbCBlbWl0UmV0dXJuVmlhRmlu
YWxseUlmTmVlZGVkKFJlZ2lzdGVySUQqIHJldHVyblJlZ2lzdGVyKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJl
dmlzaW9uIDI3MzY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0NCwxNSArMjI0NCwxMiBAQCBSZWdp
c3RlcklEKiBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtCiAgICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICBSZWY8TGFiZWw+IGhhdmVUaGlzID0gZ2VuZXJhdG9yLm5ld0xh
YmVsKCk7CiAgICAgICAgICAgICAgICAgICAgIFJlZjxMYWJlbD4gZW5kID0gZ2VuZXJhdG9yLm5l
d0xhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb21wYXJl
UmVzdWx0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gaW5kZXhaZXJvQ29tcGFyZVJlc3VsdCA9IGdlbmVyYXRvci5lbWl0
QmluYXJ5T3A8T3BFcT4oY29tcGFyZVJlc3VsdC5nZXQoKSwgaW5kZXguZ2V0KCksIGdlbmVyYXRv
ci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcigwKSksIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBl
OjpudW1iZXJUeXBlSXNJbnQzMigpLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmRmFsc2UoaW5kZXhaZXJv
Q29tcGFyZVJlc3VsdC5nZXQoKSwgaGF2ZVRoaXMuZ2V0KCkpOworICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEp1bXBJZkZhbHNlKGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0
cmljdGVxPihnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGluZGV4LmdldCgpLCBnZW5lcmF0b3Iu
ZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpKSwgaGF2ZVRoaXMuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IubW92ZSh0aGlzUmVnaXN0ZXIuZ2V0KCksIHZhbHVlKTsK
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGluZGV4LmdldCgpLCBqc051
bWJlcigxKSk7CiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0
KCkpOwogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGhhdmVUaGlzLmdl
dCgpKTsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGluZGV4T25lQ29t
cGFyZVJlc3VsdCA9IGdlbmVyYXRvci5lbWl0QmluYXJ5T3A8T3BFcT4oY29tcGFyZVJlc3VsdC5n
ZXQoKSwgaW5kZXguZ2V0KCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcigx
KSksIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpLCBSZXN1bHRU
eXBlOjpudW1iZXJUeXBlSXNJbnQzMigpKSk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0SnVtcElmRmFsc2UoaW5kZXhPbmVDb21wYXJlUmVzdWx0LmdldCgpLCBlbmQuZ2V0KCkp
OworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZkZhbHNlKGdlbmVyYXRv
ci5lbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGlu
ZGV4LmdldCgpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMSkpKSwgZW5k
LmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJndW1lbnRzUmVn
aXN0ZXIuZ2V0KCksIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRM
b2FkKGluZGV4LmdldCgpLCBqc051bWJlcigyKSk7CiAgICAgICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKQEAgLTQyMTIsNyArNDIwOSw3IEBAIHZvaWQgRm9y
SW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW4KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRM
YWJlbChsb29wU3RhcnQuZ2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdExvb3BIaW50KCk7
CiAKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0RXF1
YWxpdHlPcDxPcExlc3M+KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgaS5nZXQoKSwgbGVuZ3Ro
LmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5l
bWl0QmluYXJ5T3A8T3BMZXNzPihnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGkuZ2V0KCksIGxl
bmd0aC5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmRmFsc2UocmVzdWx0Lmdl
dCgpLCBsb29wRW5kLmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRIYXNFbnVtZXJhYmxl
SW5kZXhlZFByb3BlcnR5KHJlc3VsdC5nZXQoKSwgYmFzZS5nZXQoKSwgaS5nZXQoKSk7CiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0SnVtcElmRmFsc2UocmVzdWx0LmdldCgpLCAqc2NvcGUtPmNvbnRp
bnVlVGFyZ2V0KCkpOwpAQCAtNDYxOCwxNyArNDYxNSwxNyBAQCB2b2lkIENhc2VCbG9ja05vZGU6
OmVtaXRCeXRlY29kZUZvckJsb2NrCiAgICAgICAgIGZvciAoQ2xhdXNlTGlzdE5vZGUqIGxpc3Qg
PSBtX2xpc3QxOyBsaXN0OyBsaXN0ID0gbGlzdC0+Z2V0TmV4dCgpKSB7CiAgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gY2xhdXNlVmFsID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwog
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNsYXVzZVZhbC5nZXQoKSwgbGlzdC0+Z2V0
Q2xhdXNlKCktPmV4cHIoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEJpbmFyeU9wPE9w
U3RyaWN0ZXE+KGNsYXVzZVZhbC5nZXQoKSwgY2xhdXNlVmFsLmdldCgpLCBzd2l0Y2hFeHByZXNz
aW9uLCBPcGVyYW5kVHlwZXMoKSk7Ci0gICAgICAgICAgICBsYWJlbFZlY3Rvci5hcHBlbmQoZ2Vu
ZXJhdG9yLm5ld0xhYmVsKCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVl
KGNsYXVzZVZhbC5nZXQoKSwgbGFiZWxWZWN0b3JbbGFiZWxWZWN0b3Iuc2l6ZSgpIC0gMV0uZ2V0
KCkpOworICAgICAgICAgICAgUmVmPExhYmVsPiBjbGF1c2VMYWJlbCA9IGdlbmVyYXRvci5uZXdM
YWJlbCgpOworICAgICAgICAgICAgbGFiZWxWZWN0b3IuYXBwZW5kKGNsYXVzZUxhYmVsKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShnZW5lcmF0b3IuZW1pdEVxdWFsaXR5
T3A8T3BTdHJpY3RlcT4oZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBjbGF1c2VWYWwuZ2V0KCks
IHN3aXRjaEV4cHJlc3Npb24pLCBjbGF1c2VMYWJlbC5nZXQoKSk7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGZvciAoQ2xhdXNlTGlzdE5vZGUqIGxpc3QgPSBtX2xpc3QyOyBsaXN0OyBs
aXN0ID0gbGlzdC0+Z2V0TmV4dCgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
Y2xhdXNlVmFsID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGNsYXVzZVZhbC5nZXQoKSwgbGlzdC0+Z2V0Q2xhdXNlKCktPmV4cHIoKSk7
Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEJpbmFyeU9wPE9wU3RyaWN0ZXE+KGNsYXVzZVZh
bC5nZXQoKSwgY2xhdXNlVmFsLmdldCgpLCBzd2l0Y2hFeHByZXNzaW9uLCBPcGVyYW5kVHlwZXMo
KSk7Ci0gICAgICAgICAgICBsYWJlbFZlY3Rvci5hcHBlbmQoZ2VuZXJhdG9yLm5ld0xhYmVsKCkp
OwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNsYXVzZVZhbC5nZXQoKSwg
bGFiZWxWZWN0b3JbbGFiZWxWZWN0b3Iuc2l6ZSgpIC0gMV0uZ2V0KCkpOworICAgICAgICAgICAg
UmVmPExhYmVsPiBjbGF1c2VMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOworICAgICAgICAg
ICAgbGFiZWxWZWN0b3IuYXBwZW5kKGNsYXVzZUxhYmVsKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0SnVtcElmVHJ1ZShnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBjbGF1c2VWYWwuZ2V0KCksIHN3aXRjaEV4cHJlc3Npb24p
LCBjbGF1c2VMYWJlbC5nZXQoKSk7CiAgICAgICAgIH0KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRK
dW1wKGRlZmF1bHRMYWJlbC5nZXQoKSk7CiAgICAgfQpAQCAtNDk2Myw3ICs0OTYwLDcgQEAgdm9p
ZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZQogICAgICAgICBnZW5lcmF0b3Iu
bW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwgZ2VuZXJhdG9yLmdl
bmVyYXRvclJlZ2lzdGVyKCkpOwogICAgICAgICBnZW5lcmF0b3IubW92ZShhcmdzLmFyZ3VtZW50
UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwgZ2VuZXJhdG9yLnByb21pc2VSZWdpc3RlcigpKTsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVu
dENvdW50KyspLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFy
Z3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBqc051bWJlcihzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50
KyspLCBKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSk7CiAgICAgICAgIC8vIEpT
VGV4dFBvc2l0aW9uKGludCBfbGluZSwgaW50IF9vZmZzZXQsIGludCBfbGluZVN0YXJ0T2Zmc2V0
KQogICAgICAgICBKU1RleHRQb3NpdGlvbiBkaXZvdChmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQo
KSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCkBAIC00OTc5LDEzICs0OTc2LDEwIEBAIHZvaWQgRnVu
Y3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGUKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yQm9keU1vZGU6IHsKICAgICAgICAgUmVmPExhYmVsPiBnZW5lcmF0b3JCb2R5
TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICAgICAgewotICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24u
Z2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2VuZXJhdG9y
LmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJh
dG9yOjpSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvckJvZHlMYWJlbC5nZXQoKSk7
CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZ2VuZXJhdG9yLmVtaXRFcXVh
bGl0eU9wPE9wU3RyaWN0ZXE+KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZ2VuZXJhdG9yLmdl
bmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwg
SlNHZW5lcmF0b3I6OlJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSwgZ2VuZXJhdG9yQm9keUxhYmVs
LmdldCgpKTsKIAogICAgICAgICAgICAgUmVmPExhYmVsPiB0aHJvd0xhYmVsID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsKCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJp
Y3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKLSAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwu
Z2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGdlbmVyYXRvci5l
bWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGdlbmVy
YXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51
bGxwdHIsIEpTR2VuZXJhdG9yOjpSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSwgdGhyb3dMYWJlbC5n
ZXQoKSk7CiAKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5nZW5l
cmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOwogCkBAIC01MjEyLDIwICs1MjA2LDE4IEBAIFJlZ2lzdGVy
SUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSgKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHByb3RvUGFyZW50ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBnZW5l
cmF0b3IuZW1pdExvYWQocHJvdG9QYXJlbnQuZ2V0KCksIGpzTnVsbCgpKTsKIAotICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcFJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
OwotCiAgICAgICAgIFJlZjxMYWJlbD4gc3VwZXJjbGFzc0lzTnVsbExhYmVsID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsKCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShnZW5lcmF0b3Iu
ZW1pdElzTnVsbCh0ZW1wUmVnaXN0ZXIuZ2V0KCksIHN1cGVyY2xhc3MuZ2V0KCkpLCBzdXBlcmNs
YXNzSXNOdWxsTGFiZWwuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUo
Z2VuZXJhdG9yLmVtaXRJc051bGwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzdXBlcmNsYXNz
LmdldCgpKSwgc3VwZXJjbGFzc0lzTnVsbExhYmVsLmdldCgpKTsKIAogICAgICAgICBSZWY8TGFi
ZWw+IHN1cGVyY2xhc3NJc0NvbnN0cnVjdG9yTGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsK
LSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGdlbmVyYXRvci5lbWl0SXNDb25zdHJ1
Y3Rvcih0ZW1wUmVnaXN0ZXIuZ2V0KCksIHN1cGVyY2xhc3MuZ2V0KCkpLCBzdXBlcmNsYXNzSXND
b25zdHJ1Y3RvckxhYmVsLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVl
KGdlbmVyYXRvci5lbWl0SXNDb25zdHJ1Y3RvcihnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHN1
cGVyY2xhc3MuZ2V0KCkpLCBzdXBlcmNsYXNzSXNDb25zdHJ1Y3RvckxhYmVsLmdldCgpKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiVGhlIHN1cGVyY2xhc3MgaXMgbm90
IGEgY29uc3RydWN0b3IuIl9zKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzdXBlcmNs
YXNzSXNDb25zdHJ1Y3RvckxhYmVsLmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKHByb3RvUGFyZW50LmdldCgpLCBzdXBlcmNsYXNzLmdldCgpLCBnZW5lcmF0b3IucHJvcGVy
dHlOYW1lcygpLnByb3RvdHlwZSk7CiAKICAgICAgICAgUmVmPExhYmVsPiBwcm90b1BhcmVudElz
T2JqZWN0T3JOdWxsTGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRKdW1wSWZUcnVlKGdlbmVyYXRvci5lbWl0SXNPYmplY3QodGVtcFJlZ2lzdGVyLmdl
dCgpLCBwcm90b1BhcmVudC5nZXQoKSksIHByb3RvUGFyZW50SXNPYmplY3RPck51bGxMYWJlbC5n
ZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShnZW5lcmF0b3IuZW1pdElz
TnVsbCh0ZW1wUmVnaXN0ZXIuZ2V0KCksIHByb3RvUGFyZW50LmdldCgpKSwgcHJvdG9QYXJlbnRJ
c09iamVjdE9yTnVsbExhYmVsLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZU
cnVlKGdlbmVyYXRvci5lbWl0SXNPYmplY3QoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm90
b1BhcmVudC5nZXQoKSksIHByb3RvUGFyZW50SXNPYmplY3RPck51bGxMYWJlbC5nZXQoKSk7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShnZW5lcmF0b3IuZW1pdElzTnVsbChnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3RvUGFyZW50LmdldCgpKSwgcHJvdG9QYXJlbnRJc09i
amVjdE9yTnVsbExhYmVsLmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVF
cnJvcigiVGhlIHZhbHVlIG9mIHRoZSBzdXBlcmNsYXNzJ3MgcHJvdG90eXBlIHByb3BlcnR5IGlz
IG5vdCBhbiBvYmplY3Qgb3IgbnVsbC4iX3MpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVs
KHByb3RvUGFyZW50SXNPYmplY3RPck51bGxMYWJlbC5nZXQoKSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>