<?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>195234</bug_id>
          
          <creation_ts>2019-03-01 16:53:38 -0800</creation_ts>
          <short_desc>[JSC] Store bits for JSRopeString in 3 stores</short_desc>
          <delta_ts>2019-03-04 15:30:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1511691</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-01 16:53:38 -0800</bug_when>
    <thetext>Calculate bits before storing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511758</commentid>
    <comment_count>1</comment_count>
      <attachid>363406</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-01 21:01:47 -0800</bug_when>
    <thetext>Created attachment 363406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511760</commentid>
    <comment_count>2</comment_count>
      <attachid>363407</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-01 21:04:53 -0800</bug_when>
    <thetext>Created attachment 363407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511786</commentid>
    <comment_count>3</comment_count>
      <attachid>363414</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-02 00:16:38 -0800</bug_when>
    <thetext>Created attachment 363414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511789</commentid>
    <comment_count>4</comment_count>
      <attachid>363416</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-02 00:32:54 -0800</bug_when>
    <thetext>Created attachment 363416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511791</commentid>
    <comment_count>5</comment_count>
      <attachid>363418</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-02 00:36:20 -0800</bug_when>
    <thetext>Created attachment 363418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512270</commentid>
    <comment_count>6</comment_count>
      <attachid>363418</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-04 11:57:50 -0800</bug_when>
    <thetext>Comment on attachment 363418
Patch

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

r=me

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6537
&gt; +        // This puts nullptr for the first fiber. It makes visitChildren safe even if this JSRopeString is discarded due to the speculation failure in the following path.
&gt; +        m_out.storePtr(m_out.constIntPtr(JSString::isRopeInPointer), result, m_heaps.JSRopeString_fiber0);

This is somewhat scary, please make sure we have tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512364</commentid>
    <comment_count>7</comment_count>
      <attachid>363418</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-04 14:37:26 -0800</bug_when>
    <thetext>Comment on attachment 363418
Patch

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

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6537
&gt;&gt; +        m_out.storePtr(m_out.constIntPtr(JSString::isRopeInPointer), result, m_heaps.JSRopeString_fiber0);
&gt; 
&gt; This is somewhat scary, please make sure we have tests.

I&apos;m not sure this is reliably testable. The |result| won&apos;t be in the stack. So, the only way this happens is,

1. We create JSRopeString 0x0010
2. We do not use 0x0010 because the overflow happens
3. But conservative stack scan accidentally finds 0x0010, (but it is not the pointer to the above JSRopeString)
4. Scan it

We can test JSRopeString(nullptr) case if we add a special function to JSRopeString just for testing (of course, for that JSRopeString, all the operations are broken. This is used just for GC scan test).
I&apos;ll add this instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512366</commentid>
    <comment_count>8</comment_count>
      <attachid>363418</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-04 14:42:39 -0800</bug_when>
    <thetext>Comment on attachment 363418
Patch

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6597
&gt; +        m_out.storePtr(
&gt; +            m_out.bitOr(m_out.zeroExtPtr(flagsAndLength.length), m_out.shl(kids[1], m_out.constInt32(32))),
&gt; +            result, m_heaps.JSRopeString_fiber1);
&gt; +        if (numKids == 2)
&gt; +            m_out.storePtr(m_out.lShr(kids[1], m_out.constInt32(32)), result, m_heaps.JSRopeString_fiber2);
&gt; +        else
&gt; +            m_out.storePtr(m_out.bitOr(m_out.lShr(kids[1], m_out.constInt32(32)), m_out.shl(kids[2], m_out.constInt32(16))), result, m_heaps.JSRopeString_fiber2);

I&apos;ll move this part to the prologue of this MakeRope since we would like to ensure that all the 3 fibers are filled before speculative add happens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512368</commentid>
    <comment_count>9</comment_count>
      <attachid>363418</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-04 14:47:32 -0800</bug_when>
    <thetext>Comment on attachment 363418
Patch

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

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6597
&gt;&gt; +            m_out.storePtr(m_out.bitOr(m_out.lShr(kids[1], m_out.constInt32(32)), m_out.shl(kids[2], m_out.constInt32(16))), result, m_heaps.JSRopeString_fiber2);
&gt; 
&gt; I&apos;ll move this part to the prologue of this MakeRope since we would like to ensure that all the 3 fibers are filled before speculative add happens.

No. This is not necessary. When we fill fibers, we already have all the bits and speculation-add already pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512380</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-04 15:27:58 -0800</bug_when>
    <thetext>Committed r242397: &lt;https://trac.webkit.org/changeset/242397&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512382</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-04 15:30:09 -0800</bug_when>
    <thetext>&lt;rdar://problem/48579999&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363406</attachid>
            <date>2019-03-01 21:01:47 -0800</date>
            <delta_ts>2019-03-01 21:04:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195234-20190301210146.patch</filename>
            <type>text/plain</type>
            <size>25047</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OTlhZjkyMzg2ODA5Y2UzMTgzNWNjYzY1ZDY2MDRkY2MwMGE2YTJmLi5iODllYTllZTk2ZDVkNzBh
YzBlNjZjNTFkYWVkNTI0OGVhY2Q0Yzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxOS0wMy0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIGJpdHMgZm9yIEpTUm9wZVN0cmluZyBpbiAzIHN0b3Jl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MjM0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBjbGVhbnMgdXAgdGhlIGluaXRpYWxpemF0aW9uIG9mIEpTUm9wZVN0cmluZyBmaWVsZHMg
aW4gREZHIGFuZCBGVEwuCisgICAgICAgIFByZXZpb3VzbHksIHdlIHN0b3JlIHNvbWUgcGFydCBv
ZiBkYXRhIHNlcGFyYXRlbHkuIEluc3RlYWQsIHRoaXMgcGF0Y2ggY2FsY3VsYXRlcworICAgICAg
ICB0aGUgZGF0YSBmaXJzdCBieSBiaXQgb3BlcmF0aW9ucyBhbmQgc3RvcmUgY2FsY3VsYXRlZCBk
YXRhIHdpdGggZmV3ZXIgc3RvcmVzLgorCisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5j
cHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6IEEgYml0IGNsZWFu
IHVwIG9mIFN0cmluZ0xlbmd0aCBJQyB0byBnaXZlIGEgY2hhbmNlIG9mIHVubmVjZXNzYXJ5IG1v
diByZW1vdmFsLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYWtlUm9wZSk6CisgICAgICAgICog
ZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkFi
c3RyYWN0SGVhcFJlcG9zaXRvcnk6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnkpOgorICAgICAgICAq
IGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVNYWtlUm9wZSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAgIChK
U0M6OkpTU3RyaW5nOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5n
Lmg6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjppczhCaXQgY29uc3QpOgorICAgICAgICAoSlND
OjpKU1N0cmluZzo6aXNTdWJzdHJpbmcgY29uc3QpOgorCiAyMDE5LTAzLTAxICBDaHJpc3RvcGhl
ciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KIAogICAgICAgICBbUGxheVN0YXRpb25dIFVw
c3RyZWFtIHBsYXlzdGF0aW9uJ3MgcmVtb3RlIGluc3BlY3RvciBzZXJ2ZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCBlZmM5MzliNTVkMjMz
ZGFmYWY2ZDYyMjQxZjIyYWQwNDk5N2M4MTVmLi4xODc3MjMxZDczYWJmYzVjN2U2ZDQ4ZmI4MmRk
NjkyYWM3ZDllM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCkBAIC0xMjE1LDE0ICsxMjE1LDE0IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJh
dGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgY2FzZSBTdHJpbmdMZW5n
dGg6IHsKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIs
IEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgYXV0byBp
c1JvcGUgPSBqaXQuYnJhbmNoSWZSb3BlU3RyaW5nSW1wbChzY3JhdGNoR1BSKTsKLSAgICAgICAg
aml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RyaW5nSW1wbDo6
bGVuZ3RoTWVtb3J5T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgaml0LmxvYWQzMihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RyaW5nSW1wbDo6bGVuZ3RoTWVtb3J5
T2Zmc2V0KCkpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKICAgICAgICAgYXV0byBkb25lID0g
aml0Lmp1bXAoKTsKIAogICAgICAgICBpc1JvcGUubGluaygmaml0KTsKLSAgICAgICAgaml0Lmxv
YWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRP
Zkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKGJhc2VHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVl
UmVncy5wYXlsb2FkR1BSKCkpOwogCiAgICAgICAgIGRvbmUubGluaygmaml0KTsKLSAgICAgICAg
aml0LmJveEludDMyKHNjcmF0Y2hHUFIsIHZhbHVlUmVncyk7CisgICAgICAgIGppdC5ib3hJbnQz
Mih2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCB2YWx1ZVJlZ3MpOwogICAgICAgICBzdGF0ZS5zdWNj
ZWVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDNiYmU0YjU4NzdkYWI2YzA2OWVkNmI4
MGE0ODA5ZGU1YTU3ZGU5NGMuLmZjNzEwZmFkZjU4MGU1NDMyNjEyN2M0ZGRlZDY5YTk1ZjQwZDIx
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCkBAIC0xMzQyNSwyMyArMTM0MjUsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
TWFrZVJvcGUoTm9kZSogbm9kZSkKICAgICBBbGxvY2F0b3IgYWxsb2NhdG9yVmFsdWUgPSBhbGxv
Y2F0b3JGb3JOb25WaXJ0dWFsQ29uY3VycmVudGx5PEpTUm9wZVN0cmluZz4oKm1faml0LnZtKCks
IHNpemVvZihKU1JvcGVTdHJpbmcpLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0
cyk7CiAgICAgZW1pdEFsbG9jYXRlSlNDZWxsKHJlc3VsdEdQUiwgSklUQWxsb2NhdG9yOjpjb25z
dGFudChhbGxvY2F0b3JWYWx1ZSksIGFsbG9jYXRvckdQUiwgVHJ1c3RlZEltbVB0cihtX2ppdC5n
cmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpLCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7CiAKLSAgICBtX2ppdC5vclB0cihUcnVzdGVkSW1t
MzIoSlNTdHJpbmc6OmlzUm9wZUluUG9pbnRlciksIG9wR1BSc1swXSwgYWxsb2NhdG9yR1BSKTsK
LSAgICBtX2ppdC5zdG9yZVB0cihhbGxvY2F0b3JHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhy
ZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjAoKSkpOwotCi0gICAgbV9qaXQu
bW92ZShvcEdQUnNbMV0sIHNjcmF0Y2hHUFIpOwotICAgIG1faml0LnN0b3JlMzIoc2NyYXRjaEdQ
UiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRP
ZkZpYmVyMUxvd2VyKCkpKTsKLSAgICBtX2ppdC5yc2hpZnRQdHIoVHJ1c3RlZEltbTMyKDMyKSwg
c2NyYXRjaEdQUik7Ci0gICAgbV9qaXQuc3RvcmUxNihzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MocmVzdWx0R1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXIxVXBwZXIoKSkp
OwotCi0gICAgaWYgKG51bU9wR1BScyA9PSAzKSB7Ci0gICAgICAgIG1faml0Lm1vdmUob3BHUFJz
WzJdLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNoR1BSLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXIy
TG93ZXIoKSkpOwotICAgICAgICBtX2ppdC5yc2hpZnRQdHIoVHJ1c3RlZEltbTMyKDMyKSwgc2Ny
YXRjaEdQUik7Ci0gICAgICAgIG1faml0LnN0b3JlMTYoc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZpYmVyMlVwcGVyKCkp
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5zdG9yZVplcm8zMihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MocmVzdWx0R1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXIyTG93ZXIoKSkp
OwotICAgICAgICBtX2ppdC5zdG9yZVplcm8xNihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0
R1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXIyVXBwZXIoKSkpOwotICAgIH0KKyAgICAv
LyBUaGlzIHB1dHMgbnVsbHB0ciBmb3IgdGhlIGZpcnN0IGZpYmVyLiBJdCBtYWtlcyB2aXNpdENo
aWxkcmVuIHNhZmUgZXZlbiBpZiB0aGlzIEpTUm9wZVN0cmluZyBpcyBkaXNjYXJkZWQgZHVlIHRv
IHRoZSBzcGVjdWxhdGlvbiBmYWlsdXJlIGluIHRoZSBmb2xsb3dpbmcgcGF0aC4KKyAgICBtX2pp
dC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKEpTU3RyaW5nOjppc1JvcGVJblBvaW50ZXIpLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXIw
KCkpKTsKIAogICAgIHsKICAgICAgICAgaWYgKEpTU3RyaW5nKiBzdHJpbmcgPSBlZGdlc1swXS0+
ZHluYW1pY0Nhc3RDb25zdGFudDxKU1N0cmluZyo+KCptX2ppdC52bSgpKSkgewpAQCAtMTM1MTAs
MTQgKzEzNDk1LDM4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYWtlUm9wZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIG1faml0LnN0b3Jl
MTYoc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNSb3BlU3Ry
aW5nOjpvZmZzZXRPZkZsYWdzKCkpKTsKKwogICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CiAg
ICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBvayA9IG1faml0LmJyYW5jaDMyKAogICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpHcmVhdGVyVGhhbk9yRXF1YWwsIGFsbG9jYXRvckdQUiwgVHJ1c3Rl
ZEltbTMyKDApKTsKICAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVhc29uKERGR05lZ2F0aXZlU3Ry
aW5nTGVuZ3RoKTsKICAgICAgICAgb2subGluaygmbV9qaXQpOwogICAgIH0KLSAgICBtX2ppdC5z
dG9yZTMyKGFsbG9jYXRvckdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNS
b3BlU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSk7CisKKyAgICBzdGF0aWNfYXNzZXJ0KFN0cmlu
Z0ltcGw6OmZsYWdJczhCaXQoKSA9PSBKU1JvcGVTdHJpbmc6OmlzOEJpdEluUG9pbnRlciwgIiIp
OworICAgIG1faml0LmFuZDMyKFRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkp
LCBzY3JhdGNoR1BSKTsKKyAgICBtX2ppdC5vclB0cihvcEdQUnNbMF0sIHNjcmF0Y2hHUFIpOwor
ICAgIG1faml0Lm9yUHRyKFRydXN0ZWRJbW1QdHIoSlNTdHJpbmc6OmlzUm9wZUluUG9pbnRlciks
IHNjcmF0Y2hHUFIpOworICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIENDYWxsSGVscGVy
czo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjAoKSkpOwor
CisgICAgbV9qaXQubW92ZShvcEdQUnNbMV0sIHNjcmF0Y2hHUFIpOworICAgIG1faml0LmxzaGlm
dFB0cihUcnVzdGVkSW1tMzIoMzIpLCBzY3JhdGNoR1BSKTsKKyAgICBtX2ppdC5vclB0cihhbGxv
Y2F0b3JHUFIsIHNjcmF0Y2hHUFIpOworICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJl
cjEoKSkpOworCisgICAgaWYgKG51bU9wR1BScyA9PSAyKSB7CisgICAgICAgIG1faml0Lm1vdmUo
b3BHUFJzWzFdLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgbV9qaXQucnNoaWZ0UHRyKFRydXN0ZWRJ
bW0zMigzMiksIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BS
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9m
RmliZXIyKCkpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2ppdC5tb3ZlKG9wR1BSc1sxXSwg
c2NyYXRjaEdQUik7CisgICAgICAgIG1faml0LnJzaGlmdFB0cihUcnVzdGVkSW1tMzIoMzIpLCBz
Y3JhdGNoR1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShvcEdQUnNbMl0sIHNjcmF0Y2gyR1BSKTsK
KyAgICAgICAgbV9qaXQubHNoaWZ0UHRyKFRydXN0ZWRJbW0zMigxNiksIHNjcmF0Y2gyR1BSKTsK
KyAgICAgICAgbV9qaXQub3JQdHIoc2NyYXRjaDJHUFIsIHNjcmF0Y2hHUFIpOworICAgICAgICBt
X2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BS
LCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXIyKCkpKTsKKyAgICB9CisKICAgICBhdXRvIGlz
Tm9uRW1wdHlTdHJpbmcgPSBtX2ppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpOb25aZXJv
LCBhbGxvY2F0b3JHUFIpOwogCiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2ppdC5ncmFwaCgpLCBqc0VtcHR5U3RyaW5nKCZtX2ppdC5ncmFwaCgpLm1fdm0pKSwg
cmVzdWx0R1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCmluZGV4IGEwNmFjNGU1MzU5NzVhYzg0OTMxYmQyY2Rh
MmUxOWYyMDBiYmZhNGMuLjljM2MxYzdhYzZmYThhZjI4MjYzYmFiMmE3MjY5ZGI1NTBlMzU2ZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmNwcApAQCAtODYsNiArODYsNyBAQCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCkKICAgICBKU0NlbGxfdHlwZUluZm9GbGFncy5jaGFu
Z2VQYXJlbnQoJkpTQ2VsbF91c2VmdWxCeXRlcyk7CiAgICAgSlNDZWxsX2NlbGxTdGF0ZS5jaGFu
Z2VQYXJlbnQoJkpTQ2VsbF91c2VmdWxCeXRlcyk7CiAgICAgSlNSb3BlU3RyaW5nX2ZsYWdzLmNo
YW5nZVBhcmVudCgmSlNSb3BlU3RyaW5nX2ZpYmVyMCk7CisgICAgSlNSb3BlU3RyaW5nX2xlbmd0
aC5jaGFuZ2VQYXJlbnQoJkpTUm9wZVN0cmluZ19maWJlcjEpOwogCiAgICAgUkVMRUFTRV9BU1NF
UlQoIUpTQ2VsbF9mcmVlTGlzdE5leHQub2Zmc2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAppbmRleCAxYmRj
ZjdlZjE3ZTk2NTBiMzcxNjdiZWQwOTZlZTkwMTIxZTBhNjA2Li40YmY4OGI1NDEzNzMwMWY4NTMz
M2M0OGQyY2Q3YmIxNGM0NWQ3MDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtODksMTIgKzg5LDEwIEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3JfZW5kU3RydWN0dXJlUHJvcGVydHlJbmRleCwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yOjplbmRTdHJ1Y3R1cmVQcm9wZXJ0eUluZGV4T2Zmc2V0KCkpIFwKICAgICBtYWNybyhKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3JfaW5kZXhMZW5ndGgsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRv
cjo6aW5kZXhlZExlbmd0aE9mZnNldCgpKSBcCiAgICAgbWFjcm8oSlNSb3BlU3RyaW5nX2ZsYWdz
LCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmxhZ3MoKSkgXAotICAgIG1hY3JvKEpTUm9wZVN0cmlu
Z19maWJlcjAsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjAoKSkgXAogICAgIG1hY3JvKEpT
Um9wZVN0cmluZ19sZW5ndGgsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXAotICAg
IG1hY3JvKEpTUm9wZVN0cmluZ19maWJlcjFMb3dlciwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZp
YmVyMUxvd2VyKCkpIFwKLSAgICBtYWNybyhKU1JvcGVTdHJpbmdfZmliZXIxVXBwZXIsIEpTUm9w
ZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjFVcHBlcigpKSBcCi0gICAgbWFjcm8oSlNSb3BlU3RyaW5n
X2ZpYmVyMkxvd2VyLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXIyTG93ZXIoKSkgXAotICAg
IG1hY3JvKEpTUm9wZVN0cmluZ19maWJlcjJVcHBlciwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZp
YmVyMlVwcGVyKCkpIFwKKyAgICBtYWNybyhKU1JvcGVTdHJpbmdfZmliZXIwLCBKU1JvcGVTdHJp
bmc6Om9mZnNldE9mRmliZXIwKCkpIFwKKyAgICBtYWNybyhKU1JvcGVTdHJpbmdfZmliZXIxLCBK
U1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXIxKCkpIFwKKyAgICBtYWNybyhKU1JvcGVTdHJpbmdf
ZmliZXIyLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXIyKCkpIFwKICAgICBtYWNybyhKU1Nj
b3BlX25leHQsIEpTU2NvcGU6Om9mZnNldE9mTmV4dCgpKSBcCiAgICAgbWFjcm8oSlNTeW1ib2xU
YWJsZU9iamVjdF9zeW1ib2xUYWJsZSwgSlNTeW1ib2xUYWJsZU9iamVjdDo6b2Zmc2V0T2ZTeW1i
b2xUYWJsZSgpKSBcCiAgICAgbWFjcm8oSlNXcmFwcGVyT2JqZWN0X2ludGVybmFsVmFsdWUsIEpT
V3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZU9mZnNldCgpKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggOWIzOGYzYTE3MmRiZjViY2Yz
NDA4NTRiMmZmMDc3YmRiNjM3YjRmYy4uMjdkMDc0MzRjOWNlZGFmYjMzMDEyNTZjZWQ1N2Q5YTNm
MTg5OWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcApAQCAtNjUzMiwxOCArNjUzMiw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IExWYWx1ZSByZXN1bHQgPSBhbGxvY2F0ZUNlbGwoCiAgICAgICAgICAgICBtX291dC5jb25zdElu
dFB0cihhbGxvY2F0b3IubG9jYWxBbGxvY2F0b3IoKSksIHZtKCkuc3RyaW5nU3RydWN0dXJlLmdl
dCgpLCBzbG93UGF0aCk7CiAgICAgICAgIAotICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5i
aXRPcihraWRzWzBdLCBtX291dC5jb25zdEludFB0cihKU1N0cmluZzo6aXNSb3BlSW5Qb2ludGVy
KSksIHJlc3VsdCwgbV9oZWFwcy5KU1JvcGVTdHJpbmdfZmliZXIwKTsKLQotICAgICAgICBtX291
dC5zdG9yZTMyKG1fb3V0LmNhc3RUb0ludDMyKGtpZHNbMV0pLCByZXN1bHQsIG1faGVhcHMuSlNS
b3BlU3RyaW5nX2ZpYmVyMUxvd2VyKTsKLSAgICAgICAgbV9vdXQuc3RvcmUzMkFzMTYobV9vdXQu
Y2FzdFRvSW50MzIobV9vdXQubFNocihraWRzWzFdLCBtX291dC5jb25zdEludDMyKDMyKSkpLCBy
ZXN1bHQsIG1faGVhcHMuSlNSb3BlU3RyaW5nX2ZpYmVyMVVwcGVyKTsKLQotICAgICAgICBpZiAo
bnVtS2lkcyA9PSAzKSB7Ci0gICAgICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNhc3RUb0lu
dDMyKGtpZHNbMl0pLCByZXN1bHQsIG1faGVhcHMuSlNSb3BlU3RyaW5nX2ZpYmVyMkxvd2VyKTsK
LSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzJBczE2KG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LmxT
aHIoa2lkc1syXSwgbV9vdXQuY29uc3RJbnQzMigzMikpKSwgcmVzdWx0LCBtX2hlYXBzLkpTUm9w
ZVN0cmluZ19maWJlcjJVcHBlcik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX291
dC5zdG9yZTMyKG1fb3V0LmludDMyWmVybywgcmVzdWx0LCBtX2hlYXBzLkpTUm9wZVN0cmluZ19m
aWJlcjJMb3dlcik7Ci0gICAgICAgICAgICBtX291dC5zdG9yZTMyQXMxNihtX291dC5pbnQzMlpl
cm8sIHJlc3VsdCwgbV9oZWFwcy5KU1JvcGVTdHJpbmdfZmliZXIyVXBwZXIpOwotICAgICAgICB9
CisgICAgICAgIC8vIFRoaXMgcHV0cyBudWxscHRyIGZvciB0aGUgZmlyc3QgZmliZXIuIEl0IG1h
a2VzIHZpc2l0Q2hpbGRyZW4gc2FmZSBldmVuIGlmIHRoaXMgSlNSb3BlU3RyaW5nIGlzIGRpc2Nh
cmRlZCBkdWUgdG8gdGhlIHNwZWN1bGF0aW9uIGZhaWx1cmUgaW4gdGhlIGZvbGxvd2luZyBwYXRo
LgorICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihKU1N0cmluZzo6aXNS
b3BlSW5Qb2ludGVyKSwgcmVzdWx0LCBtX2hlYXBzLkpTUm9wZVN0cmluZ19maWJlcjApOwogCiAg
ICAgICAgIGF1dG8gZ2V0RmxhZ3NBbmRMZW5ndGggPSBbJl0gKEVkZ2UmIGVkZ2UsIExWYWx1ZSBj
aGlsZCkgewogICAgICAgICAgICAgaWYgKEpTU3RyaW5nKiBzdHJpbmcgPSBlZGdlLT5keW5hbWlj
Q2FzdENvbnN0YW50PEpTU3RyaW5nKj4odm0oKSkpIHsKQEAgLTY1NjAsNyArNjU1MCw3IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBtX291dC5icmFuY2goaXNSb3BlU3RyaW5n
KGNoaWxkLCBlZGdlKSwgdW5zdXJlKHJvcGVDYXNlKSwgdW5zdXJlKG5vdFJvcGVDYXNlKSk7CiAK
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8ocm9wZUNh
c2UsIG5vdFJvcGVDYXNlKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZsYWdzRm9yUm9w
ZSA9IG1fb3V0LmFuY2hvcihtX291dC5sb2FkMTZaZXJvRXh0MzIoY2hpbGQsIG1faGVhcHMuSlNS
b3BlU3RyaW5nX2ZsYWdzKSk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBmbGFnc0ZvclJv
cGUgPSBtX291dC5hbmNob3IobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoY2hpbGQsIG1faGVhcHMu
SlNSb3BlU3RyaW5nX2ZsYWdzKSk7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBsZW5ndGhG
b3JSb3BlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGNoaWxkLCBtX2hl
YXBzLkpTUm9wZVN0cmluZ19sZW5ndGgpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKIApAQCAtNjU5MSw4ICs2NTgxLDE5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgICAgICB9OwogICAgICAgICAgICAgZmxhZ3NBbmRMZW5ndGggPSBtZXJnZUZsYWdzQW5k
TGVuZ3RoKGVkZ2VzW2ldLCBraWRzW2ldLCBmbGFnc0FuZExlbmd0aCk7CiAgICAgICAgIH0KLSAg
ICAgICAgbV9vdXQuc3RvcmUzMkFzMTYoZmxhZ3NBbmRMZW5ndGguZmxhZ3MsIHJlc3VsdCwgbV9o
ZWFwcy5KU1JvcGVTdHJpbmdfZmxhZ3MpOwotICAgICAgICBtX291dC5zdG9yZTMyKGZsYWdzQW5k
TGVuZ3RoLmxlbmd0aCwgcmVzdWx0LCBtX2hlYXBzLkpTUm9wZVN0cmluZ19sZW5ndGgpOworCisg
ICAgICAgIG1fb3V0LnN0b3JlUHRyKAorICAgICAgICAgICAgbV9vdXQuYml0T3IoCisgICAgICAg
ICAgICAgICAgbV9vdXQuYml0T3Ioa2lkc1swXSwgbV9vdXQuY29uc3RJbnRQdHIoSlNTdHJpbmc6
OmlzUm9wZUluUG9pbnRlcikpLAorICAgICAgICAgICAgICAgIG1fb3V0LmJpdEFuZChtX291dC5j
b25zdEludFB0cihKU1JvcGVTdHJpbmc6OmlzOEJpdEluUG9pbnRlciksIG1fb3V0Lnplcm9FeHRQ
dHIoZmxhZ3NBbmRMZW5ndGguZmxhZ3MpKSksCisgICAgICAgICAgICByZXN1bHQsIG1faGVhcHMu
SlNSb3BlU3RyaW5nX2ZpYmVyMCk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKAorICAgICAgICAg
ICAgbV9vdXQuYml0T3IobV9vdXQuemVyb0V4dFB0cihmbGFnc0FuZExlbmd0aC5sZW5ndGgpLCBt
X291dC5zaGwoa2lkc1sxXSwgbV9vdXQuY29uc3RJbnQzMigzMikpKSwKKyAgICAgICAgICAgIHJl
c3VsdCwgbV9oZWFwcy5KU1JvcGVTdHJpbmdfZmliZXIxKTsKKyAgICAgICAgaWYgKG51bUtpZHMg
PT0gMikKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmxTaHIoa2lkc1sxXSwgbV9v
dXQuY29uc3RJbnQzMigzMikpLCByZXN1bHQsIG1faGVhcHMuSlNSb3BlU3RyaW5nX2ZpYmVyMik7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmJpdE9yKG1f
b3V0LmxTaHIoa2lkc1sxXSwgbV9vdXQuY29uc3RJbnQzMigzMikpLCBtX291dC5zaGwoa2lkc1sy
XSwgbV9vdXQuY29uc3RJbnQzMigxNikpKSwgcmVzdWx0LCBtX2hlYXBzLkpTUm9wZVN0cmluZ19m
aWJlcjIpOwogICAgICAgICAKICAgICAgICAgbXV0YXRvckZlbmNlKCk7CiAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuc2VsZWN0KG1fb3V0Lmlz
WmVybzMyKGZsYWdzQW5kTGVuZ3RoLmxlbmd0aCksIHdlYWtQb2ludGVyKGpzRW1wdHlTdHJpbmco
Jm1fZ3JhcGgubV92bSkpLCByZXN1bHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmNwcAppbmRleCA0YzQ0ZjRiMDU1YzE5MjRiM2Y1NzQxZTQwNDlkZGQ4MTBkNDQz
OTkyLi5jODM2ZmEyZTJkZmE5OWM2NDY3OGIzOTY4NjRlN2NlYzQyZmRiZjNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAg
dm9pZCBKU1N0cmluZzo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogICAgIAogICAgIHVpbnRwdHJfdCBwb2ludGVyID0gdGhpc09iamVjdC0+bV9maWJl
cjsKICAgICBpZiAocG9pbnRlciAmIGlzUm9wZUluUG9pbnRlcikgewotICAgICAgICBpZiAoKHBv
aW50ZXIgJiBKU1JvcGVTdHJpbmc6OnN0cmluZ01hc2spID09IEpTUm9wZVN0cmluZzo6c3Vic3Ry
aW5nU2VudGluZWwoKSkgeworICAgICAgICBpZiAocG9pbnRlciAmIEpTUm9wZVN0cmluZzo6aXNT
dWJzdHJpbmdJblBvaW50ZXIpIHsKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVy
ZWQoc3RhdGljX2Nhc3Q8SlNSb3BlU3RyaW5nKj4odGhpc09iamVjdCktPmZpYmVyMSgpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgKaW5kZXggNmZjNTQ2NzllMjdlNjNkNGQzMWJmODZlOThhNDBkODllY2Y5YmM5
ZS4uNzk5MGIzMGEyOThlZDY1NjE0YjJmMGZmNTIxOGQ0MWQwMGI4NzhlZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC04Niw5ICs4Niw5IEBAIHN0cnVjdCBT
dHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJpbmcgewogLy8KIC8vICAgICAgICAgICAgICAwICAg
ICAgICAgICAgICAgICAgICAgICAgOCAgICAgICAgMTAgICAgICAgICAgICAgICAxNiAgICAgICAg
ICAgICAgICAgICAgICAgMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDgK
IC8vIEpTU3RyaW5nICAgICBbICAgSUQgICAgICBdWyAgaGVhZGVyICBdWyAgIFN0cmluZyBwb2lu
dGVyICAgICAgMF0KLS8vIEpTUm9wZVN0cmluZyBbICAgSUQgICAgICBdWyAgaGVhZGVyICBdWyBm
bGFncyBdWyAxc3QgZmliZXIgICAgMV1bICBsZW5ndGggIF1bMm5kIGxvd2VyMzJdWzJuZCB1cHBl
cjE2XVszcmQgbG93ZXIxNl1bM3JkIHVwcGVyMzJdCisvLyBKU1JvcGVTdHJpbmcgWyAgIElEICAg
ICAgXVsgIGhlYWRlciAgXVsgICAxc3QgZmliZXIgICAgICAgICB4eXpdWyAgbGVuZ3RoICBdWzJu
ZCBsb3dlcjMyXVsybmQgdXBwZXIxNl1bM3JkIGxvd2VyMTZdWzNyZCB1cHBlcjMyXQogLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBeCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlzUm9wZSBiaXQKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4OihpczhCaXQpLHk6KGlzU3Vic3RyaW5nKSx6Oihpc1JvcGUpIGJpdCBmbGFn
cwogY2xhc3MgSlNTdHJpbmcgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICBmcmllbmQg
Y2xhc3MgSklUOwpAQCAtMjY2LDEzICsyNjYsMTUgQEAgY2xhc3MgSlNTdHJpbmcgOiBwdWJsaWMg
SlNDZWxsIHsKIGNsYXNzIEpTUm9wZVN0cmluZyBmaW5hbCA6IHB1YmxpYyBKU1N0cmluZyB7CiAg
ICAgZnJpZW5kIGNsYXNzIEpTU3RyaW5nOwogcHVibGljOgorICAgIC8vIFdlIHVzZSBsb3dlciAz
Yml0cyBvZiBmaWJlcjAgZm9yIGZsYWdzLiBUaGVzZSBiaXRzIGFyZSB1c2FibGUgZHVlIHRvIGFs
aWdubWVudCwgYW5kIGl0IGlzIE9LIGV2ZW4gaW4gMzJiaXQgYXJjaGl0ZWN0dXJlLgorICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludHB0cl90IGlzOEJpdEluUG9pbnRlciA9IHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oU3RyaW5nSW1wbDo6ZmxhZ0lzOEJpdCgpKTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHVpbnRwdHJfdCBpc1N1YnN0cmluZ0luUG9pbnRlciA9IDB4MjsKKyAgICBzdGF0aWNfYXNzZXJ0
KGlzOEJpdEluUG9pbnRlciA9PSAwYjEwMCwgIiIpOworICAgIHN0YXRpY19hc3NlcnQoaXNTdWJz
dHJpbmdJblBvaW50ZXIgPT0gMGIwMTAsICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGlzUm9wZUlu
UG9pbnRlciA9PSAwYjAwMSwgIiIpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IHN0
cmluZ01hc2sgPSB+KGlzUm9wZUluUG9pbnRlciB8IGlzOEJpdEluUG9pbnRlciB8IGlzU3Vic3Ry
aW5nSW5Qb2ludGVyKTsKICNpZiBDUFUoQUREUkVTUzY0KQogICAgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKHVpbnRwdHJfdCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIiIpOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludHB0cl90IGZsYWdNYXNrID0gMHhmZmZmMDAwMDAwMDAwMDAwVUxMOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludHB0cl90IHN0cmluZ01hc2sgPSB+KGZsYWdNYXNrIHwgaXNSb3Bl
SW5Qb2ludGVyKTsKLSAgICBzdGF0aWNfYXNzZXJ0KFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSA9
PSAwYjEwMCwgIiIpOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IGlzOEJpdEluUG9p
bnRlciA9IHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oU3RyaW5nSW1wbDo6ZmxhZ0lzOEJpdCgpKSA8
PCA0ODsKLQogICAgIGNsYXNzIENvbXBhY3RGaWJlcnMgewogICAgIHB1YmxpYzoKICAgICAgICAg
SlNTdHJpbmcqIGZpYmVyMSgpIGNvbnN0CkBAIC0yODksMTMgKzI5MSwxMyBAQCBjbGFzcyBKU1Jv
cGVTdHJpbmcgZmluYWwgOiBwdWJsaWMgSlNTdHJpbmcgewogCiAgICAgICAgIEpTU3RyaW5nKiBm
aWJlcjIoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0
PEpTU3RyaW5nKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihtX2ZpYmVyMkxvd2VyKSB8IChzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KG1fZmliZXIyVXBwZXIpIDw8IDMyKSk7CisgICAgICAgICAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PEpTU3RyaW5nKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihtX2Zp
YmVyMkxvd2VyKSB8IChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KG1fZmliZXIyVXBwZXIpIDw8IDE2
KSk7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCBpbml0aWFsaXplRmliZXIyKEpTU3RyaW5nKiBm
aWJlcikKICAgICAgICAgewogICAgICAgICAgICAgdWludHB0cl90IHBvaW50ZXIgPSBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihmaWJlcik7Ci0gICAgICAgICAgICBtX2ZpYmVyMkxvd2VyID0gc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHBvaW50ZXIpOwotICAgICAgICAgICAgbV9maWJlcjJVcHBlciA9
IHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb2ludGVyID4+IDMyKTsKKyAgICAgICAgICAgIG1fZmli
ZXIyTG93ZXIgPSBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9pbnRlcik7CisgICAgICAgICAgICBt
X2ZpYmVyMlVwcGVyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBvaW50ZXIgPj4gMTYpOwogICAg
ICAgICB9CiAKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5n
dGg7IH0KQEAgLTMwNSwyMiArMzA3LDE4IEBAIGNsYXNzIEpTUm9wZVN0cmluZyBmaW5hbCA6IHB1
YmxpYyBKU1N0cmluZyB7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG9m
ZnNldE9mTGVuZ3RoKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvbXBhY3RGaWJlcnMsIG1f
bGVuZ3RoKTsgfQotICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIxTG93ZXIo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29tcGFjdEZpYmVycywgbV9maWJlcjFMb3dlcik7
IH0KLSAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpYmVyMVVwcGVyKCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKENvbXBhY3RGaWJlcnMsIG1fZmliZXIxVXBwZXIpOyB9Ci0gICAg
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGaWJlcjJMb3dlcigpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihDb21wYWN0RmliZXJzLCBtX2ZpYmVyMkxvd2VyKTsgfQotICAgICAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIyVXBwZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoQ29tcGFjdEZpYmVycywgbV9maWJlcjJVcHBlcik7IH0KKyAgICAgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZkZpYmVyMSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb21wYWN0Rmli
ZXJzLCBtX2xlbmd0aCk7IH0KKyAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpYmVy
MigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb21wYWN0RmliZXJzLCBtX2ZpYmVyMVVwcGVy
KTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdWludDMyX3QgbV9sZW5ndGggeyAwIH07CiAg
ICAgICAgIHVpbnQzMl90IG1fZmliZXIxTG93ZXIgeyAwIH07CiAgICAgICAgIHVpbnQxNl90IG1f
ZmliZXIxVXBwZXIgeyAwIH07Ci0gICAgICAgIHVpbnQxNl90IG1fZmliZXIyVXBwZXIgeyAwIH07
Ci0gICAgICAgIHVpbnQzMl90IG1fZmliZXIyTG93ZXIgeyAwIH07CisgICAgICAgIHVpbnQxNl90
IG1fZmliZXIyTG93ZXIgeyAwIH07CisgICAgICAgIHVpbnQzMl90IG1fZmliZXIyVXBwZXIgeyAw
IH07CiAgICAgfTsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDb21wYWN0RmliZXJzKSA9PSBz
aXplb2Yodm9pZCopICogMiwgIiIpOwogI2Vsc2UKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnRw
dHJfdCBzdHJpbmdNYXNrID0gfihpc1JvcGVJblBvaW50ZXIpOwotCiAgICAgY2xhc3MgQ29tcGFj
dEZpYmVycyB7CiAgICAgcHVibGljOgogICAgICAgICBKU1N0cmluZyogZmliZXIxKCkgY29uc3QK
QEAgLTM0NywyNCArMzQ1LDEyIEBAIGNsYXNzIEpTUm9wZVN0cmluZyBmaW5hbCA6IHB1YmxpYyBK
U1N0cmluZyB7CiAgICAgICAgICAgICBtX2xlbmd0aCA9IGxlbmd0aDsKICAgICAgICAgfQogCi0g
ICAgICAgIHZvaWQgaW5pdGlhbGl6ZUlzOEJpdChib29sIGZsYWcpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmIChmbGFnKQotICAgICAgICAgICAgICAgIG1fZmxhZ3MgfD0gc3RhdGljX2Nhc3Q8
dWludHB0cl90PihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIG1fZmxhZ3MgJj0gfnN0YXRpY19jYXN0PHVpbnRwdHJfdD4oU3RyaW5n
SW1wbDo6ZmxhZ0lzOEJpdCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaXM4Qml0KCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fZmxhZ3MgJiBzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSk7Ci0gICAgICAgIH0KLQogICAgICAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTGVuZ3RoKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KENvbXBhY3RGaWJlcnMsIG1fbGVuZ3RoKTsgfQorICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG9m
ZnNldE9mRmliZXIxKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvbXBhY3RGaWJlcnMsIG1f
ZmliZXIxKTsgfQorICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIyKCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvbXBhY3RGaWJlcnMsIG1fZmliZXIyKTsgfQogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdWludDMyX3QgbV9sZW5ndGggeyAwIH07Ci0gICAgICAgIHVpbnQz
Ml90IG1fZmxhZ3MgeyAwIH07CiAgICAgICAgIEpTU3RyaW5nKiBtX2ZpYmVyMSB7IG51bGxwdHIg
fTsKICAgICAgICAgSlNTdHJpbmcqIG1fZmliZXIyIHsgbnVsbHB0ciB9OwogICAgIH07CkBAIC00
NTYsMTQgKzQ0MiwxOCBAQCBjbGFzcyBKU1JvcGVTdHJpbmcgZmluYWwgOiBwdWJsaWMgSlNTdHJp
bmcgewogCiAgICAgdm9pZCBpbml0aWFsaXplSXM4Qml0KGJvb2wgZmxhZykgY29uc3QKICAgICB7
Ci0jaWYgQ1BVKEFERFJFU1M2NCkKICAgICAgICAgaWYgKGZsYWcpCiAgICAgICAgICAgICBtX2Zp
YmVyIHw9IGlzOEJpdEluUG9pbnRlcjsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9maWJl
ciAmPSB+aXM4Qml0SW5Qb2ludGVyOwotI2Vsc2UKLSAgICAgICAgbV9jb21wYWN0RmliZXJzLmlu
aXRpYWxpemVJczhCaXQoZmxhZyk7Ci0jZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIGluaXRpYWxp
emVJc1N1YnN0cmluZyhib29sIGZsYWcpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoZmxhZykK
KyAgICAgICAgICAgIG1fZmliZXIgfD0gaXNTdWJzdHJpbmdJblBvaW50ZXI7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1fZmliZXIgJj0gfmlzU3Vic3RyaW5nSW5Qb2ludGVyOwogICAgIH0K
IAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBpbml0aWFsaXplTGVuZ3RoKHVuc2lnbmVkIGxlbmd0
aCkKQEAgLTU0OSwyMyArNTM5LDEwIEBAIGNsYXNzIEpTUm9wZVN0cmluZyBmaW5hbCA6IHB1Ymxp
YyBKU1N0cmluZyB7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTGVu
Z3RoKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTUm9wZVN0cmluZywgbV9jb21wYWN0Rmli
ZXJzKSArIENvbXBhY3RGaWJlcnM6Om9mZnNldE9mTGVuZ3RoKCk7IH0gLy8gMzJieXRlIHdpZHRo
LgorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGbGFncygpIHsgcmV0dXJuIG9mZnNldE9m
VmFsdWUoKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGaWJlcjAoKSB7IHJldHVy
biBvZmZzZXRPZlZhbHVlKCk7IH0KLSNpZiBDUFUoQUREUkVTUzY0KQotICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZGbGFncygpIHsgcmV0dXJuIG9mZnNldE9mVmFsdWUoKSArIHNpemVvZih1
aW50MTZfdCkgKiAzOyB9IC8vIDE2Ynl0ZSB3aWR0aC4KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9m
ZnNldE9mRmliZXIxTG93ZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNSb3BlU3RyaW5n
LCBtX2NvbXBhY3RGaWJlcnMpICsgQ29tcGFjdEZpYmVyczo6b2Zmc2V0T2ZGaWJlcjFMb3dlcigp
OyB9IC8vIDMyYnl0ZSB3aWR0aC4KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIx
VXBwZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNSb3BlU3RyaW5nLCBtX2NvbXBhY3RG
aWJlcnMpICsgQ29tcGFjdEZpYmVyczo6b2Zmc2V0T2ZGaWJlcjFVcHBlcigpOyB9IC8vIDE2Ynl0
ZSB3aWR0aC4KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIyTG93ZXIoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNSb3BlU3RyaW5nLCBtX2NvbXBhY3RGaWJlcnMpICsgQ29t
cGFjdEZpYmVyczo6b2Zmc2V0T2ZGaWJlcjJMb3dlcigpOyB9IC8vIDMyYnl0ZSB3aWR0aC4KLSAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIyVXBwZXIoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoSlNSb3BlU3RyaW5nLCBtX2NvbXBhY3RGaWJlcnMpICsgQ29tcGFjdEZpYmVyczo6
b2Zmc2V0T2ZGaWJlcjJVcHBlcigpOyB9IC8vIDE2Ynl0ZSB3aWR0aC4KLSNlbGlmIFVTRShKU1ZB
TFVFNjQpCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgYW4gdGVtcG9yYXJ5IHdvcmthcm91bmQgdG8g
bWFrZSBKU0MgYnVpbHQgb24gQVJNNjRfMzIuIE9uY2Ugd2Ugc3RhcnQgY2FsY3VsYXRpbmcgYml0
cyBiZWZvcmUgc3RvcmluZyB0aGVtIHRvIEpTUm9wZVN0cmluZywKLSAgICAvLyB3ZSBkbyBub3Qg
bmVlZCB0byBoYXZlIHN1Y2ggYSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhcyBhbiBvZmZzZXQuIEFm
dGVyIHRoYXQsIHdoYXQgd2Ugb25seSBuZWVkIGlzIG9mZnNldE9mRmliZXIwLCBvZmZzZXRPZkZp
YmVyMSwgYW5kIG9mZnNldE9mRmliZXIyLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTUyMzQKLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmxh
Z3MoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQotICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZGaWJlcjFMb3dlcigpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVy
biAwOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpYmVyMVVwcGVyKCkgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mRmliZXIyTG93ZXIoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQotICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGaWJlcjJVcHBlcigpIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IHJldHVybiAwOyB9Ci0jZW5kaWYKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
RmliZXIxKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTUm9wZVN0cmluZywgbV9jb21wYWN0
RmliZXJzKSArIENvbXBhY3RGaWJlcnM6Om9mZnNldE9mRmliZXIxKCk7IH0KKyAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mRmliZXIyKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTUm9w
ZVN0cmluZywgbV9jb21wYWN0RmliZXJzKSArIENvbXBhY3RGaWJlcnM6Om9mZnNldE9mRmliZXIy
KCk7IH0KIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc19tYXhJbnRlcm5hbFJvcGVM
ZW5ndGggPSAzOwogCkBAIC01NzUsNiArNTUyLDcgQEAgY2xhc3MgSlNSb3BlU3RyaW5nIGZpbmFs
IDogcHVibGljIEpTU3RyaW5nIHsKICAgICAgICAgSlNSb3BlU3RyaW5nKiBuZXdTdHJpbmcgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1JvcGVTdHJpbmc+KHZtLmhlYXApKSBKU1JvcGVT
dHJpbmcodm0sIHMxLCBzMik7CiAgICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5sZW5ndGgoKSk7CisgICAgICAgIEFTU0VSVChu
ZXdTdHJpbmctPmlzUm9wZSgpKTsKICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICB9CiAg
ICAgc3RhdGljIEpTUm9wZVN0cmluZyogY3JlYXRlKFZNJiB2bSwgSlNTdHJpbmcqIHMxLCBKU1N0
cmluZyogczIsIEpTU3RyaW5nKiBzMykKQEAgLTU4Miw2ICs1NjAsNyBAQCBjbGFzcyBKU1JvcGVT
dHJpbmcgZmluYWwgOiBwdWJsaWMgSlNTdHJpbmcgewogICAgICAgICBKU1JvcGVTdHJpbmcqIG5l
d1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUm9wZVN0cmluZz4odm0uaGVh
cCkpIEpTUm9wZVN0cmluZyh2bSwgczEsIHMyLCBzMyk7CiAgICAgICAgIG5ld1N0cmluZy0+Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5sZW5ndGgoKSk7Cisg
ICAgICAgIEFTU0VSVChuZXdTdHJpbmctPmlzUm9wZSgpKTsKICAgICAgICAgcmV0dXJuIG5ld1N0
cmluZzsKICAgICB9CiAKQEAgLTU5MCw2ICs1NjksNyBAQCBjbGFzcyBKU1JvcGVTdHJpbmcgZmlu
YWwgOiBwdWJsaWMgSlNTdHJpbmcgewogICAgICAgICBKU1JvcGVTdHJpbmcqIG5ld1N0cmluZyA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUm9wZVN0cmluZz4odm0uaGVhcCkpIEpTUm9w
ZVN0cmluZyh2bSwgYmFzZSwgb2Zmc2V0LCBsZW5ndGgpOwogICAgICAgICBuZXdTdHJpbmctPmZp
bmlzaENyZWF0aW9uU3Vic3RyaW5nKHZtLCBleGVjKTsKICAgICAgICAgQVNTRVJUKG5ld1N0cmlu
Zy0+bGVuZ3RoKCkpOworICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5pc1JvcGUoKSk7CiAgICAg
ICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgfQogCkBAIC01OTgsNiArNTc4LDcgQEAgY2xhc3Mg
SlNSb3BlU3RyaW5nIGZpbmFsIDogcHVibGljIEpTU3RyaW5nIHsKICAgICAgICAgSlNSb3BlU3Ry
aW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1JvcGVTdHJpbmc+
KHZtLmhlYXAsIGRlZmVycmFsQ29udGV4dCkpIEpTUm9wZVN0cmluZyhTdWJzdHJpbmdPZlJlc29s
dmVkLCB2bSwgYmFzZSwgb2Zmc2V0LCBsZW5ndGgpOwogICAgICAgICBuZXdTdHJpbmctPmZpbmlz
aENyZWF0aW9uU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSk7CiAgICAgICAgIEFTU0VSVChuZXdTdHJp
bmctPmxlbmd0aCgpKTsKKyAgICAgICAgQVNTRVJUKG5ld1N0cmluZy0+aXNSb3BlKCkpOwogICAg
ICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAgIH0KIApAQCAtNjg1LDI2ICs2NjYsNiBAQCBjbGFz
cyBKU1JvcGVTdHJpbmcgZmluYWwgOiBwdWJsaWMgSlNTdHJpbmcgewogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGZpYmVyMigpKSk7
CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3Qgbm90U3Vic3RyaW5nU2Vu
dGluZWwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50cHRyX3Qgc3Vic3RyaW5nU2VudGluZWwoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIDI7Ci0gICAgfQotCi0gICAgYm9vbCBpc1N1YnN0cmluZygpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gKG1fZmliZXIgJiBzdHJpbmdNYXNrKSA9PSBzdWJzdHJpbmdTZW50aW5lbCgp
OwotICAgIH0KLQotICAgIHZvaWQgaW5pdGlhbGl6ZUlzU3Vic3RyaW5nKGJvb2wgaXNTdWJzdHJp
bmcpCi0gICAgewotICAgICAgICBtX2ZpYmVyIHw9IChpc1N1YnN0cmluZyA/IHN1YnN0cmluZ1Nl
bnRpbmVsKCkgOiBub3RTdWJzdHJpbmdTZW50aW5lbCgpKTsKLSAgICB9Ci0KICAgICBzdGF0aWNf
YXNzZXJ0KHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoID49IDIsICIiKTsKICAgICBtdXRhYmxlIENv
bXBhY3RGaWJlcnMgbV9jb21wYWN0RmliZXJzOwogCkBAIC03MjYsMTQgKzY4Nyw5IEBAIEFMV0FZ
U19JTkxJTkUgYm9vbCBKU1N0cmluZzo6aXM4Qml0KCkgY29uc3QKIHsKICAgICB1aW50cHRyX3Qg
cG9pbnRlciA9IG1fZmliZXI7CiAgICAgaWYgKHBvaW50ZXIgJiBpc1JvcGVJblBvaW50ZXIpIHsK
LSNpZiBDUFUoQUREUkVTUzY0KQogICAgICAgICAvLyBEbyBub3QgbG9hZCBtX2ZpYmVyIHR3aWNl
LiBXZSBzaG91bGQgdXNlIHRoZSBpbmZvcm1hdGlvbiBpbiBwb2ludGVyLgogICAgICAgICAvLyBP
dGhlcndpc2UsIEpTUm9wZVN0cmluZyBtYXkgYmUgY29udmVydGVkIHRvIEpTU3RyaW5nIGJldHdl
ZW4gdGhlIGZpcnN0IGFuZCBzZWNvbmQgYWNjZXNzZXMuCiAgICAgICAgIHJldHVybiBwb2ludGVy
ICYgSlNSb3BlU3RyaW5nOjppczhCaXRJblBvaW50ZXI7Ci0jZWxzZQotICAgICAgICAvLyBJdCBp
cyBPSyB0byBsb2FkIGZsYWcgc2luY2UgZXZlbiBpZiBKU1JvcGVTdHJpbmcgaXMgY29udmVydGVk
IHRvIEpTU3RyaW5nLCB0aGlzIGZsYWcgc3RpbGwgZXhpc3RzLgotICAgICAgICByZXR1cm4ganND
YXN0PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRoaXMpLT5tX2NvbXBhY3RGaWJlcnMuaXM4Qml0KCk7
Ci0jZW5kaWYKICAgICB9CiAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxTdHJpbmdJbXBsKj4ocG9p
bnRlciktPmlzOEJpdCgpOwogfQpAQCAtMTA0Niw3ICsxMDAyLDcgQEAgQUxXQVlTX0lOTElORSBT
dHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJpbmcgSlNTdHJpbmc6OnZpZXdXaXRoVW5kZXJseWlu
Z1N0cmluZygKIAogaW5saW5lIGJvb2wgSlNTdHJpbmc6OmlzU3Vic3RyaW5nKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gaXNSb3BlKCkgJiYgc3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4o
dGhpcyktPmlzU3Vic3RyaW5nKCk7CisgICAgcmV0dXJuIG1fZmliZXIgJiBKU1JvcGVTdHJpbmc6
OmlzU3Vic3RyaW5nSW5Qb2ludGVyOwogfQogCiAvLyAtLS0gSlNWYWx1ZSBpbmxpbmVzIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363407</attachid>
            <date>2019-03-01 21:04:53 -0800</date>
            <delta_ts>2019-03-02 00:16:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195234-20190301210452.patch</filename>
            <type>text/plain</type>
            <size>25349</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OTlhZjkyMzg2ODA5Y2UzMTgzNWNjYzY1ZDY2MDRkY2MwMGE2YTJmLi41NGFlY2I1NzgwNjYwNGNi
NTcxNTg0ZTA3M2U1N2MxMzc2ZmVlYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxOS0wMy0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIGJpdHMgZm9yIEpTUm9wZVN0cmluZyBpbiAzIHN0b3Jl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MjM0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBjbGVhbnMgdXAgdGhlIGluaXRpYWxpemF0aW9uIG9mIEpTUm9wZVN0cmluZyBmaWVsZHMg
aW4gREZHIGFuZCBGVEwuCisgICAgICAgIFByZXZpb3VzbHksIHdlIHN0b3JlIHNvbWUgcGFydCBv
ZiBkYXRhIHNlcGFyYXRlbHkuIEluc3RlYWQsIHRoaXMgcGF0Y2ggY2FsY3VsYXRlcworICAgICAg
ICB0aGUgZGF0YSBmaXJzdCBieSBiaXQgb3BlcmF0aW9ucyBhbmQgc3RvcmUgY2FsY3VsYXRlZCBk
YXRhIHdpdGggZmV3ZXIgc3RvcmVzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBjbGVhbnMg
dXAgaXM4Qml0IGFuZCBpc1N1YnN0cmluZyBmbGFncy4gV2UgcHV0IHRoZW0gaW4gbG93ZXIgYml0
cworICAgICAgICBvZiB0aGUgZmlyc3QgZmliZXIgaW5zdGVhZCBvZiB0aGUgdXBwZXIgMTYgYml0
cy4gU2luY2Ugd2Ugb25seSBoYXZlIDMgYml0IGZsYWdzLCAoaXNSb3BlLCBpczhCaXQsIGlzU3Vi
c3RyaW5nKSwKKyAgICAgICAgd2UgY2FuIHB1dCB0aGVtIGludG8gdGhlIGxvd2VyIDMgYml0cywg
dGhleSBhcmUgYWx3YXlzIGVtcHR5IGR1ZSB0byBhbGlnbm1lbnQuCisKKyAgICAgICAgKiBieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKTogQSBiaXQgY2xlYW4gdXAgb2YgU3RyaW5nTGVuZ3RoIElDIHRvIGdpdmUgYSBjaGFuY2Ug
b2YgdW5uZWNlc3NhcnkgbW92IHJlbW92YWwuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1ha2VS
b3BlKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6QWJzdHJhY3RIZWFwUmVwb3Np
dG9yeSk6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAg
ICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZU1ha2VSb3BlKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5n
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OmlzOEJpdCBjb25z
dCk6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjppc1N1YnN0cmluZyBjb25zdCk6CisKIDIwMTkt
MDMtMDEgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgogCiAgICAgICAg
IFtQbGF5U3RhdGlvbl0gVXBzdHJlYW0gcGxheXN0YXRpb24ncyByZW1vdGUgaW5zcGVjdG9yIHNl
cnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmlu
ZGV4IGVmYzkzOWI1NWQyMzNkYWZhZjZkNjIyNDFmMjJhZDA0OTk3YzgxNWYuLjE4NzcyMzFkNzNh
YmZjNWM3ZTZkNDhmYjgyZGQ2OTJhYzdkOWUzYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTEyMTUsMTQgKzEyMTUsMTQgQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAg
ICBjYXNlIFN0cmluZ0xlbmd0aDogewogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoYmFzZUdQUiwgSlNTdHJpbmc6Om9mZnNldE9mVmFsdWUoKSksIHNjcmF0Y2hHUFIp
OwogICAgICAgICBhdXRvIGlzUm9wZSA9IGppdC5icmFuY2hJZlJvcGVTdHJpbmdJbXBsKHNjcmF0
Y2hHUFIpOwotICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNo
R1BSLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAg
ICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJpbmdJ
bXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSksIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpOwogICAg
ICAgICBhdXRvIGRvbmUgPSBqaXQuanVtcCgpOwogCiAgICAgICAgIGlzUm9wZS5saW5rKCZqaXQp
OwotICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU1Jv
cGVTdHJpbmc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgaml0Lmxv
YWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRP
Zkxlbmd0aCgpKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7CiAKICAgICAgICAgZG9uZS5saW5r
KCZqaXQpOwotICAgICAgICBqaXQuYm94SW50MzIoc2NyYXRjaEdQUiwgdmFsdWVSZWdzKTsKKyAg
ICAgICAgaml0LmJveEludDMyKHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIHZhbHVlUmVncyk7CiAg
ICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggM2JiZTRi
NTg3N2RhYjZjMDY5ZWQ2YjgwYTQ4MDlkZTVhNTdkZTk0Yy4uZmM3MTBmYWRmNTgwZTU0MzI2MTI3
YzRkZGVkNjlhOTVmNDBkMjExZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEzNDI1LDIzICsxMzQyNSw4IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVNYWtlUm9wZShOb2RlKiBub2RlKQogICAgIEFsbG9jYXRvciBhbGxv
Y2F0b3JWYWx1ZSA9IGFsbG9jYXRvckZvck5vblZpcnR1YWxDb25jdXJyZW50bHk8SlNSb3BlU3Ry
aW5nPigqbV9qaXQudm0oKSwgc2l6ZW9mKEpTUm9wZVN0cmluZyksIEFsbG9jYXRvckZvck1vZGU6
OkFsbG9jYXRvcklmRXhpc3RzKTsKICAgICBlbWl0QWxsb2NhdGVKU0NlbGwocmVzdWx0R1BSLCBK
SVRBbGxvY2F0b3I6OmNvbnN0YW50KGFsbG9jYXRvclZhbHVlKSwgYWxsb2NhdG9yR1BSLCBUcnVz
dGVkSW1tUHRyKG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUobV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSksIHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKIAotICAgIG1faml0
Lm9yUHRyKFRydXN0ZWRJbW0zMihKU1N0cmluZzo6aXNSb3BlSW5Qb2ludGVyKSwgb3BHUFJzWzBd
LCBhbGxvY2F0b3JHUFIpOwotICAgIG1faml0LnN0b3JlUHRyKGFsbG9jYXRvckdQUiwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZpYmVyMCgp
KSk7Ci0KLSAgICBtX2ppdC5tb3ZlKG9wR1BSc1sxXSwgc2NyYXRjaEdQUik7Ci0gICAgbV9qaXQu
c3RvcmUzMihzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1Jv
cGVTdHJpbmc6Om9mZnNldE9mRmliZXIxTG93ZXIoKSkpOwotICAgIG1faml0LnJzaGlmdFB0cihU
cnVzdGVkSW1tMzIoMzIpLCBzY3JhdGNoR1BSKTsKLSAgICBtX2ppdC5zdG9yZTE2KHNjcmF0Y2hH
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0
T2ZGaWJlcjFVcHBlcigpKSk7Ci0KLSAgICBpZiAobnVtT3BHUFJzID09IDMpIHsKLSAgICAgICAg
bV9qaXQubW92ZShvcEdQUnNbMl0sIHNjcmF0Y2hHUFIpOwotICAgICAgICBtX2ppdC5zdG9yZTMy
KHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmlu
Zzo6b2Zmc2V0T2ZGaWJlcjJMb3dlcigpKSk7Ci0gICAgICAgIG1faml0LnJzaGlmdFB0cihUcnVz
dGVkSW1tMzIoMzIpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgbV9qaXQuc3RvcmUxNihzY3JhdGNo
R1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNl
dE9mRmliZXIyVXBwZXIoKSkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LnN0b3JlWmVy
bzMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0
T2ZGaWJlcjJMb3dlcigpKSk7Ci0gICAgICAgIG1faml0LnN0b3JlWmVybzE2KENDYWxsSGVscGVy
czo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjJVcHBlcigp
KSk7Ci0gICAgfQorICAgIC8vIFRoaXMgcHV0cyBudWxscHRyIGZvciB0aGUgZmlyc3QgZmliZXIu
IEl0IG1ha2VzIHZpc2l0Q2hpbGRyZW4gc2FmZSBldmVuIGlmIHRoaXMgSlNSb3BlU3RyaW5nIGlz
IGRpc2NhcmRlZCBkdWUgdG8gdGhlIHNwZWN1bGF0aW9uIGZhaWx1cmUgaW4gdGhlIGZvbGxvd2lu
ZyBwYXRoLgorICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoSlNTdHJpbmc6OmlzUm9w
ZUluUG9pbnRlciksIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmlu
Zzo6b2Zmc2V0T2ZGaWJlcjAoKSkpOwogCiAgICAgewogICAgICAgICBpZiAoSlNTdHJpbmcqIHN0
cmluZyA9IGVkZ2VzWzBdLT5keW5hbWljQ2FzdENvbnN0YW50PEpTU3RyaW5nKj4oKm1faml0LnZt
KCkpKSB7CkBAIC0xMzUxMCwxNCArMTM0OTUsMzggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU1ha2VSb3BlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
Ci0gICAgbV9qaXQuc3RvcmUxNihzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVz
dWx0R1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmxhZ3MoKSkpOworCiAgICAgaWYgKCFBU1NF
UlRfRElTQUJMRUQpIHsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG9rID0gbV9qaXQuYnJh
bmNoMzIoCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgYWxs
b2NhdG9yR1BSLCBUcnVzdGVkSW1tMzIoMCkpOwogICAgICAgICBtX2ppdC5hYm9ydFdpdGhSZWFz
b24oREZHTmVnYXRpdmVTdHJpbmdMZW5ndGgpOwogICAgICAgICBvay5saW5rKCZtX2ppdCk7CiAg
ICAgfQotICAgIG1faml0LnN0b3JlMzIoYWxsb2NhdG9yR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MocmVzdWx0R1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKworICAgIHN0
YXRpY19hc3NlcnQoU3RyaW5nSW1wbDo6ZmxhZ0lzOEJpdCgpID09IEpTUm9wZVN0cmluZzo6aXM4
Qml0SW5Qb2ludGVyLCAiIik7CisgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMyKFN0cmluZ0lt
cGw6OmZsYWdJczhCaXQoKSksIHNjcmF0Y2hHUFIpOworICAgIG1faml0Lm9yUHRyKG9wR1BSc1sw
XSwgc2NyYXRjaEdQUik7CisgICAgbV9qaXQub3JQdHIoVHJ1c3RlZEltbVB0cihKU1N0cmluZzo6
aXNSb3BlSW5Qb2ludGVyKSwgc2NyYXRjaEdQUik7CisgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRj
aEdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNSb3BlU3RyaW5nOjpvZmZz
ZXRPZkZpYmVyMCgpKSk7CisKKyAgICBtX2ppdC5tb3ZlKG9wR1BSc1sxXSwgc2NyYXRjaEdQUik7
CisgICAgbV9qaXQubHNoaWZ0UHRyKFRydXN0ZWRJbW0zMigzMiksIHNjcmF0Y2hHUFIpOworICAg
IG1faml0Lm9yUHRyKGFsbG9jYXRvckdQUiwgc2NyYXRjaEdQUik7CisgICAgbV9qaXQuc3RvcmVQ
dHIoc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNSb3BlU3Ry
aW5nOjpvZmZzZXRPZkZpYmVyMSgpKSk7CisKKyAgICBpZiAobnVtT3BHUFJzID09IDIpIHsKKyAg
ICAgICAgbV9qaXQubW92ZShvcEdQUnNbMV0sIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5y
c2hpZnRQdHIoVHJ1c3RlZEltbTMyKDMyKSwgc2NyYXRjaEdQUik7CisgICAgICAgIG1faml0LnN0
b3JlUHRyKHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9w
ZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjIoKSkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1faml0
Lm1vdmUob3BHUFJzWzFdLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgbV9qaXQucnNoaWZ0UHRyKFRy
dXN0ZWRJbW0zMigzMiksIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKG9wR1BSc1sy
XSwgc2NyYXRjaDJHUFIpOworICAgICAgICBtX2ppdC5sc2hpZnRQdHIoVHJ1c3RlZEltbTMyKDE2
KSwgc2NyYXRjaDJHUFIpOworICAgICAgICBtX2ppdC5vclB0cihzY3JhdGNoMkdQUiwgc2NyYXRj
aEdQUik7CisgICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6
QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjIoKSkpOworICAg
IH0KKwogICAgIGF1dG8gaXNOb25FbXB0eVN0cmluZyA9IG1faml0LmJyYW5jaFRlc3QzMihDQ2Fs
bEhlbHBlcnM6Ok5vblplcm8sIGFsbG9jYXRvckdQUik7CiAKICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGpzRW1wdHlTdHJpbmcoJm1faml0
LmdyYXBoKCkubV92bSkpLCByZXN1bHRHUFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKaW5kZXggYTA2YWM0ZTUz
NTk3NWFjODQ5MzFiZDJjZGEyZTE5ZjIwMGJiZmE0Yy4uOWMzYzFjN2FjNmZhOGFmMjgyNjNiYWIy
YTcyNjlkYjU1MGUzNTZkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCkBAIC04Niw2ICs4Niw3IEBAIEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnkoKQogICAgIEpTQ2VsbF90
eXBlSW5mb0ZsYWdzLmNoYW5nZVBhcmVudCgmSlNDZWxsX3VzZWZ1bEJ5dGVzKTsKICAgICBKU0Nl
bGxfY2VsbFN0YXRlLmNoYW5nZVBhcmVudCgmSlNDZWxsX3VzZWZ1bEJ5dGVzKTsKICAgICBKU1Jv
cGVTdHJpbmdfZmxhZ3MuY2hhbmdlUGFyZW50KCZKU1JvcGVTdHJpbmdfZmliZXIwKTsKKyAgICBK
U1JvcGVTdHJpbmdfbGVuZ3RoLmNoYW5nZVBhcmVudCgmSlNSb3BlU3RyaW5nX2ZpYmVyMSk7CiAK
ICAgICBSRUxFQVNFX0FTU0VSVCghSlNDZWxsX2ZyZWVMaXN0TmV4dC5vZmZzZXQoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCmluZGV4IDFiZGNmN2VmMTdlOTY1MGIzNzE2N2JlZDA5NmVlOTAxMjFlMGE2MDYuLjRi
Zjg4YjU0MTM3MzAxZjg1MzMzYzQ4ZDJjZDdiYjE0YzQ1ZDcwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC04
OSwxMiArODksMTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3Jv
KEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcl9lbmRTdHJ1Y3R1cmVQcm9wZXJ0eUluZGV4LCBKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3I6OmVuZFN0cnVjdHVyZVByb3BlcnR5SW5kZXhPZmZzZXQoKSkg
XAogICAgIG1hY3JvKEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcl9pbmRleExlbmd0aCwgSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yOjppbmRleGVkTGVuZ3RoT2Zmc2V0KCkpIFwKICAgICBtYWNybyhK
U1JvcGVTdHJpbmdfZmxhZ3MsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGbGFncygpKSBcCi0gICAg
bWFjcm8oSlNSb3BlU3RyaW5nX2ZpYmVyMCwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZpYmVyMCgp
KSBcCiAgICAgbWFjcm8oSlNSb3BlU3RyaW5nX2xlbmd0aCwgSlNSb3BlU3RyaW5nOjpvZmZzZXRP
Zkxlbmd0aCgpKSBcCi0gICAgbWFjcm8oSlNSb3BlU3RyaW5nX2ZpYmVyMUxvd2VyLCBKU1JvcGVT
dHJpbmc6Om9mZnNldE9mRmliZXIxTG93ZXIoKSkgXAotICAgIG1hY3JvKEpTUm9wZVN0cmluZ19m
aWJlcjFVcHBlciwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZpYmVyMVVwcGVyKCkpIFwKLSAgICBt
YWNybyhKU1JvcGVTdHJpbmdfZmliZXIyTG93ZXIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJl
cjJMb3dlcigpKSBcCi0gICAgbWFjcm8oSlNSb3BlU3RyaW5nX2ZpYmVyMlVwcGVyLCBKU1JvcGVT
dHJpbmc6Om9mZnNldE9mRmliZXIyVXBwZXIoKSkgXAorICAgIG1hY3JvKEpTUm9wZVN0cmluZ19m
aWJlcjAsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjAoKSkgXAorICAgIG1hY3JvKEpTUm9w
ZVN0cmluZ19maWJlcjEsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjEoKSkgXAorICAgIG1h
Y3JvKEpTUm9wZVN0cmluZ19maWJlcjIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjIoKSkg
XAogICAgIG1hY3JvKEpTU2NvcGVfbmV4dCwgSlNTY29wZTo6b2Zmc2V0T2ZOZXh0KCkpIFwKICAg
ICBtYWNybyhKU1N5bWJvbFRhYmxlT2JqZWN0X3N5bWJvbFRhYmxlLCBKU1N5bWJvbFRhYmxlT2Jq
ZWN0OjpvZmZzZXRPZlN5bWJvbFRhYmxlKCkpIFwKICAgICBtYWNybyhKU1dyYXBwZXJPYmplY3Rf
aW50ZXJuYWxWYWx1ZSwgSlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlT2Zmc2V0KCkpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA5
YjM4ZjNhMTcyZGJmNWJjZjM0MDg1NGIyZmYwNzdiZGI2MzdiNGZjLi4yN2QwNzQzNGM5Y2VkYWZi
MzMwMTI1NmNlZDU3ZDlhM2YxODk5YWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC02NTMyLDE4ICs2NTMyLDggQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGFsbG9jYXRlQ2VsbCgKICAgICAgICAg
ICAgIG1fb3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvci5sb2NhbEFsbG9jYXRvcigpKSwgdm0oKS5z
dHJpbmdTdHJ1Y3R1cmUuZ2V0KCksIHNsb3dQYXRoKTsKICAgICAgICAgCi0gICAgICAgIG1fb3V0
LnN0b3JlUHRyKG1fb3V0LmJpdE9yKGtpZHNbMF0sIG1fb3V0LmNvbnN0SW50UHRyKEpTU3RyaW5n
Ojppc1JvcGVJblBvaW50ZXIpKSwgcmVzdWx0LCBtX2hlYXBzLkpTUm9wZVN0cmluZ19maWJlcjAp
OwotCi0gICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY2FzdFRvSW50MzIoa2lkc1sxXSksIHJl
c3VsdCwgbV9oZWFwcy5KU1JvcGVTdHJpbmdfZmliZXIxTG93ZXIpOwotICAgICAgICBtX291dC5z
dG9yZTMyQXMxNihtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGtpZHNbMV0sIG1fb3V0LmNv
bnN0SW50MzIoMzIpKSksIHJlc3VsdCwgbV9oZWFwcy5KU1JvcGVTdHJpbmdfZmliZXIxVXBwZXIp
OwotCi0gICAgICAgIGlmIChudW1LaWRzID09IDMpIHsKLSAgICAgICAgICAgIG1fb3V0LnN0b3Jl
MzIobV9vdXQuY2FzdFRvSW50MzIoa2lkc1syXSksIHJlc3VsdCwgbV9oZWFwcy5KU1JvcGVTdHJp
bmdfZmliZXIyTG93ZXIpOwotICAgICAgICAgICAgbV9vdXQuc3RvcmUzMkFzMTYobV9vdXQuY2Fz
dFRvSW50MzIobV9vdXQubFNocihraWRzWzJdLCBtX291dC5jb25zdEludDMyKDMyKSkpLCByZXN1
bHQsIG1faGVhcHMuSlNSb3BlU3RyaW5nX2ZpYmVyMlVwcGVyKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuaW50MzJaZXJvLCByZXN1bHQsIG1faGVh
cHMuSlNSb3BlU3RyaW5nX2ZpYmVyMkxvd2VyKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzJB
czE2KG1fb3V0LmludDMyWmVybywgcmVzdWx0LCBtX2hlYXBzLkpTUm9wZVN0cmluZ19maWJlcjJV
cHBlcik7Ci0gICAgICAgIH0KKyAgICAgICAgLy8gVGhpcyBwdXRzIG51bGxwdHIgZm9yIHRoZSBm
aXJzdCBmaWJlci4gSXQgbWFrZXMgdmlzaXRDaGlsZHJlbiBzYWZlIGV2ZW4gaWYgdGhpcyBKU1Jv
cGVTdHJpbmcgaXMgZGlzY2FyZGVkIGR1ZSB0byB0aGUgc3BlY3VsYXRpb24gZmFpbHVyZSBpbiB0
aGUgZm9sbG93aW5nIHBhdGguCisgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50
UHRyKEpTU3RyaW5nOjppc1JvcGVJblBvaW50ZXIpLCByZXN1bHQsIG1faGVhcHMuSlNSb3BlU3Ry
aW5nX2ZpYmVyMCk7CiAKICAgICAgICAgYXV0byBnZXRGbGFnc0FuZExlbmd0aCA9IFsmXSAoRWRn
ZSYgZWRnZSwgTFZhbHVlIGNoaWxkKSB7CiAgICAgICAgICAgICBpZiAoSlNTdHJpbmcqIHN0cmlu
ZyA9IGVkZ2UtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNTdHJpbmcqPih2bSgpKSkgewpAQCAtNjU2
MCw3ICs2NTUwLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIG1fb3V0LmJy
YW5jaChpc1JvcGVTdHJpbmcoY2hpbGQsIGVkZ2UpLCB1bnN1cmUocm9wZUNhc2UpLCB1bnN1cmUo
bm90Um9wZUNhc2UpKTsKIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291
dC5hcHBlbmRUbyhyb3BlQ2FzZSwgbm90Um9wZUNhc2UpOwotICAgICAgICAgICAgVmFsdWVGcm9t
QmxvY2sgZmxhZ3NGb3JSb3BlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmxvYWQxNlplcm9FeHQzMihj
aGlsZCwgbV9oZWFwcy5KU1JvcGVTdHJpbmdfZmxhZ3MpKTsKKyAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIGZsYWdzRm9yUm9wZSA9IG1fb3V0LmFuY2hvcihtX291dC5sb2FkMzJOb25OZWdhdGl2
ZShjaGlsZCwgbV9oZWFwcy5KU1JvcGVTdHJpbmdfZmxhZ3MpKTsKICAgICAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIGxlbmd0aEZvclJvcGUgPSBtX291dC5hbmNob3IobV9vdXQubG9hZDMyTm9uTmVn
YXRpdmUoY2hpbGQsIG1faGVhcHMuSlNSb3BlU3RyaW5nX2xlbmd0aCkpOwogICAgICAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOwogCkBAIC02NTkxLDggKzY1ODEsMTkgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIH07CiAgICAgICAgICAgICBmbGFnc0FuZExlbmd0
aCA9IG1lcmdlRmxhZ3NBbmRMZW5ndGgoZWRnZXNbaV0sIGtpZHNbaV0sIGZsYWdzQW5kTGVuZ3Ro
KTsKICAgICAgICAgfQotICAgICAgICBtX291dC5zdG9yZTMyQXMxNihmbGFnc0FuZExlbmd0aC5m
bGFncywgcmVzdWx0LCBtX2hlYXBzLkpTUm9wZVN0cmluZ19mbGFncyk7Ci0gICAgICAgIG1fb3V0
LnN0b3JlMzIoZmxhZ3NBbmRMZW5ndGgubGVuZ3RoLCByZXN1bHQsIG1faGVhcHMuSlNSb3BlU3Ry
aW5nX2xlbmd0aCk7CisKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIoCisgICAgICAgICAgICBtX291
dC5iaXRPcigKKyAgICAgICAgICAgICAgICBtX291dC5iaXRPcihraWRzWzBdLCBtX291dC5jb25z
dEludFB0cihKU1N0cmluZzo6aXNSb3BlSW5Qb2ludGVyKSksCisgICAgICAgICAgICAgICAgbV9v
dXQuYml0QW5kKG1fb3V0LmNvbnN0SW50UHRyKEpTUm9wZVN0cmluZzo6aXM4Qml0SW5Qb2ludGVy
KSwgbV9vdXQuemVyb0V4dFB0cihmbGFnc0FuZExlbmd0aC5mbGFncykpKSwKKyAgICAgICAgICAg
IHJlc3VsdCwgbV9oZWFwcy5KU1JvcGVTdHJpbmdfZmliZXIwKTsKKyAgICAgICAgbV9vdXQuc3Rv
cmVQdHIoCisgICAgICAgICAgICBtX291dC5iaXRPcihtX291dC56ZXJvRXh0UHRyKGZsYWdzQW5k
TGVuZ3RoLmxlbmd0aCksIG1fb3V0LnNobChraWRzWzFdLCBtX291dC5jb25zdEludDMyKDMyKSkp
LAorICAgICAgICAgICAgcmVzdWx0LCBtX2hlYXBzLkpTUm9wZVN0cmluZ19maWJlcjEpOworICAg
ICAgICBpZiAobnVtS2lkcyA9PSAyKQorICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQu
bFNocihraWRzWzFdLCBtX291dC5jb25zdEludDMyKDMyKSksIHJlc3VsdCwgbV9oZWFwcy5KU1Jv
cGVTdHJpbmdfZmliZXIyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9vdXQuc3RvcmVQ
dHIobV9vdXQuYml0T3IobV9vdXQubFNocihraWRzWzFdLCBtX291dC5jb25zdEludDMyKDMyKSks
IG1fb3V0LnNobChraWRzWzJdLCBtX291dC5jb25zdEludDMyKDE2KSkpLCByZXN1bHQsIG1faGVh
cHMuSlNSb3BlU3RyaW5nX2ZpYmVyMik7CiAgICAgICAgIAogICAgICAgICBtdXRhdG9yRmVuY2Uo
KTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291
dC5zZWxlY3QobV9vdXQuaXNaZXJvMzIoZmxhZ3NBbmRMZW5ndGgubGVuZ3RoKSwgd2Vha1BvaW50
ZXIoanNFbXB0eVN0cmluZygmbV9ncmFwaC5tX3ZtKSksIHJlc3VsdCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCmluZGV4IDRjNDRmNGIwNTVjMTkyNGIzZjU3
NDFlNDA0OWRkZDgxMGQ0NDM5OTIuLmM4MzZmYTJlMmRmYTk5YzY0Njc4YjM5Njg2NGU3Y2VjNDJm
ZGJmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKQEAg
LTExNCw3ICsxMTQsNyBAQCB2b2lkIEpTU3RyaW5nOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgCiAgICAgdWludHB0cl90IHBvaW50ZXIgPSB0
aGlzT2JqZWN0LT5tX2ZpYmVyOwogICAgIGlmIChwb2ludGVyICYgaXNSb3BlSW5Qb2ludGVyKSB7
Ci0gICAgICAgIGlmICgocG9pbnRlciAmIEpTUm9wZVN0cmluZzo6c3RyaW5nTWFzaykgPT0gSlNS
b3BlU3RyaW5nOjpzdWJzdHJpbmdTZW50aW5lbCgpKSB7CisgICAgICAgIGlmIChwb2ludGVyICYg
SlNSb3BlU3RyaW5nOjppc1N1YnN0cmluZ0luUG9pbnRlcikgewogICAgICAgICAgICAgdmlzaXRv
ci5hcHBlbmRVbmJhcnJpZXJlZChzdGF0aWNfY2FzdDxKU1JvcGVTdHJpbmcqPih0aGlzT2JqZWN0
KS0+ZmliZXIxKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCA2ZmM1NDY3OWUyN2U2M2Q0ZDMxYmY4
NmU5OGE0MGQ4OWVjZjliYzllLi43OTkwYjMwYTI5OGVkNjU2MTRiMmYwZmY1MjE4ZDQxZDAwYjg3
OGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTg2LDkg
Kzg2LDkgQEAgc3RydWN0IFN0cmluZ1ZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyB7CiAvLwogLy8g
ICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICA4ICAgICAgICAxMCAgICAgICAg
ICAgICAgIDE2ICAgICAgICAgICAgICAgICAgICAgICAzMiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA0OAogLy8gSlNTdHJpbmcgICAgIFsgICBJRCAgICAgIF1bICBoZWFkZXIg
IF1bICAgU3RyaW5nIHBvaW50ZXIgICAgICAwXQotLy8gSlNSb3BlU3RyaW5nIFsgICBJRCAgICAg
IF1bICBoZWFkZXIgIF1bIGZsYWdzIF1bIDFzdCBmaWJlciAgICAxXVsgIGxlbmd0aCAgXVsybmQg
bG93ZXIzMl1bMm5kIHVwcGVyMTZdWzNyZCBsb3dlcjE2XVszcmQgdXBwZXIzMl0KKy8vIEpTUm9w
ZVN0cmluZyBbICAgSUQgICAgICBdWyAgaGVhZGVyICBdWyAgIDFzdCBmaWJlciAgICAgICAgIHh5
el1bICBsZW5ndGggIF1bMm5kIGxvd2VyMzJdWzJuZCB1cHBlcjE2XVszcmQgbG93ZXIxNl1bM3Jk
IHVwcGVyMzJdCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF4KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSb3BlIGJpdAorLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6KGlzOEJpdCkseTooaXNTdWJzdHJpbmcpLHo6
KGlzUm9wZSkgYml0IGZsYWdzCiBjbGFzcyBKU1N0cmluZyA6IHB1YmxpYyBKU0NlbGwgewogcHVi
bGljOgogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC0yNjYsMTMgKzI2NiwxNSBAQCBjbGFzcyBK
U1N0cmluZyA6IHB1YmxpYyBKU0NlbGwgewogY2xhc3MgSlNSb3BlU3RyaW5nIGZpbmFsIDogcHVi
bGljIEpTU3RyaW5nIHsKICAgICBmcmllbmQgY2xhc3MgSlNTdHJpbmc7CiBwdWJsaWM6CisgICAg
Ly8gV2UgdXNlIGxvd2VyIDNiaXRzIG9mIGZpYmVyMCBmb3IgZmxhZ3MuIFRoZXNlIGJpdHMgYXJl
IHVzYWJsZSBkdWUgdG8gYWxpZ25tZW50LCBhbmQgaXQgaXMgT0sgZXZlbiBpbiAzMmJpdCBhcmNo
aXRlY3R1cmUuCisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3QgaXM4Qml0SW5Qb2ludGVy
ID0gc3RhdGljX2Nhc3Q8dWludHB0cl90PihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpOworICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IGlzU3Vic3RyaW5nSW5Qb2ludGVyID0gMHgyOwor
ICAgIHN0YXRpY19hc3NlcnQoaXM4Qml0SW5Qb2ludGVyID09IDBiMTAwLCAiIik7CisgICAgc3Rh
dGljX2Fzc2VydChpc1N1YnN0cmluZ0luUG9pbnRlciA9PSAwYjAxMCwgIiIpOworICAgIHN0YXRp
Y19hc3NlcnQoaXNSb3BlSW5Qb2ludGVyID09IDBiMDAxLCAiIik7CisgICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50cHRyX3Qgc3RyaW5nTWFzayA9IH4oaXNSb3BlSW5Qb2ludGVyIHwgaXM4Qml0SW5Q
b2ludGVyIHwgaXNTdWJzdHJpbmdJblBvaW50ZXIpOwogI2lmIENQVShBRERSRVNTNjQpCiAgICAg
c3RhdGljX2Fzc2VydChzaXplb2YodWludHB0cl90KSA9PSBzaXplb2YodWludDY0X3QpLCAiIik7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3QgZmxhZ01hc2sgPSAweGZmZmYwMDAwMDAw
MDAwMDBVTEw7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3Qgc3RyaW5nTWFzayA9IH4o
ZmxhZ01hc2sgfCBpc1JvcGVJblBvaW50ZXIpOwotICAgIHN0YXRpY19hc3NlcnQoU3RyaW5nSW1w
bDo6ZmxhZ0lzOEJpdCgpID09IDBiMTAwLCAiIik7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
cHRyX3QgaXM4Qml0SW5Qb2ludGVyID0gc3RhdGljX2Nhc3Q8dWludHB0cl90PihTdHJpbmdJbXBs
OjpmbGFnSXM4Qml0KCkpIDw8IDQ4OwotCiAgICAgY2xhc3MgQ29tcGFjdEZpYmVycyB7CiAgICAg
cHVibGljOgogICAgICAgICBKU1N0cmluZyogZmliZXIxKCkgY29uc3QKQEAgLTI4OSwxMyArMjkx
LDEzIEBAIGNsYXNzIEpTUm9wZVN0cmluZyBmaW5hbCA6IHB1YmxpYyBKU1N0cmluZyB7CiAKICAg
ICAgICAgSlNTdHJpbmcqIGZpYmVyMigpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBiaXR3aXNlX2Nhc3Q8SlNTdHJpbmcqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KG1fZmli
ZXIyTG93ZXIpIHwgKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4obV9maWJlcjJVcHBlcikgPDwgMzIp
KTsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNTdHJpbmcqPihzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KG1fZmliZXIyTG93ZXIpIHwgKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4obV9m
aWJlcjJVcHBlcikgPDwgMTYpKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIGluaXRpYWxpemVG
aWJlcjIoSlNTdHJpbmcqIGZpYmVyKQogICAgICAgICB7CiAgICAgICAgICAgICB1aW50cHRyX3Qg
cG9pbnRlciA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGZpYmVyKTsKLSAgICAgICAgICAgIG1f
ZmliZXIyTG93ZXIgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocG9pbnRlcik7Ci0gICAgICAgICAg
ICBtX2ZpYmVyMlVwcGVyID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBvaW50ZXIgPj4gMzIpOwor
ICAgICAgICAgICAgbV9maWJlcjJMb3dlciA9IHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb2ludGVy
KTsKKyAgICAgICAgICAgIG1fZmliZXIyVXBwZXIgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocG9p
bnRlciA+PiAxNik7CiAgICAgICAgIH0KIAogICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX2xlbmd0aDsgfQpAQCAtMzA1LDIyICszMDcsMTggQEAgY2xhc3MgSlNSb3Bl
U3RyaW5nIGZpbmFsIDogcHVibGljIEpTU3RyaW5nIHsKICAgICAgICAgfQogCiAgICAgICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZMZW5ndGgoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
Q29tcGFjdEZpYmVycywgbV9sZW5ndGgpOyB9Ci0gICAgICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZGaWJlcjFMb3dlcigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb21wYWN0RmliZXJz
LCBtX2ZpYmVyMUxvd2VyKTsgfQotICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmli
ZXIxVXBwZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29tcGFjdEZpYmVycywgbV9maWJl
cjFVcHBlcik7IH0KLSAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpYmVyMkxvd2Vy
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvbXBhY3RGaWJlcnMsIG1fZmliZXIyTG93ZXIp
OyB9Ci0gICAgICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGaWJlcjJVcHBlcigpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihDb21wYWN0RmliZXJzLCBtX2ZpYmVyMlVwcGVyKTsgfQorICAg
ICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIxKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKENvbXBhY3RGaWJlcnMsIG1fbGVuZ3RoKTsgfQorICAgICAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mRmliZXIyKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvbXBhY3RGaWJl
cnMsIG1fZmliZXIxVXBwZXIpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB1aW50MzJfdCBt
X2xlbmd0aCB7IDAgfTsKICAgICAgICAgdWludDMyX3QgbV9maWJlcjFMb3dlciB7IDAgfTsKICAg
ICAgICAgdWludDE2X3QgbV9maWJlcjFVcHBlciB7IDAgfTsKLSAgICAgICAgdWludDE2X3QgbV9m
aWJlcjJVcHBlciB7IDAgfTsKLSAgICAgICAgdWludDMyX3QgbV9maWJlcjJMb3dlciB7IDAgfTsK
KyAgICAgICAgdWludDE2X3QgbV9maWJlcjJMb3dlciB7IDAgfTsKKyAgICAgICAgdWludDMyX3Qg
bV9maWJlcjJVcHBlciB7IDAgfTsKICAgICB9OwogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENv
bXBhY3RGaWJlcnMpID09IHNpemVvZih2b2lkKikgKiAyLCAiIik7CiAjZWxzZQotICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludHB0cl90IHN0cmluZ01hc2sgPSB+KGlzUm9wZUluUG9pbnRlcik7Ci0K
ICAgICBjbGFzcyBDb21wYWN0RmliZXJzIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEpTU3RyaW5n
KiBmaWJlcjEoKSBjb25zdApAQCAtMzQ3LDI0ICszNDUsMTIgQEAgY2xhc3MgSlNSb3BlU3RyaW5n
IGZpbmFsIDogcHVibGljIEpTU3RyaW5nIHsKICAgICAgICAgICAgIG1fbGVuZ3RoID0gbGVuZ3Ro
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBpbml0aWFsaXplSXM4Qml0KGJvb2wgZmxhZykK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKGZsYWcpCi0gICAgICAgICAgICAgICAgbV9mbGFn
cyB8PSBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9mbGFncyAmPSB+c3RhdGljX2Nhc3Q8
dWludHB0cl90PihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgYm9vbCBpczhCaXQoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9mbGFncyAm
IHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oU3RyaW5nSW1wbDo6ZmxhZ0lzOEJpdCgpKTsKLSAgICAg
ICAgfQotCiAgICAgICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZMZW5ndGgoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoQ29tcGFjdEZpYmVycywgbV9sZW5ndGgpOyB9CisgICAgICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGaWJlcjEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
Q29tcGFjdEZpYmVycywgbV9maWJlcjEpOyB9CisgICAgICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZGaWJlcjIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29tcGFjdEZpYmVycywgbV9m
aWJlcjIpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB1aW50MzJfdCBtX2xlbmd0aCB7IDAg
fTsKLSAgICAgICAgdWludDMyX3QgbV9mbGFncyB7IDAgfTsKICAgICAgICAgSlNTdHJpbmcqIG1f
ZmliZXIxIHsgbnVsbHB0ciB9OwogICAgICAgICBKU1N0cmluZyogbV9maWJlcjIgeyBudWxscHRy
IH07CiAgICAgfTsKQEAgLTQ1NiwxNCArNDQyLDE4IEBAIGNsYXNzIEpTUm9wZVN0cmluZyBmaW5h
bCA6IHB1YmxpYyBKU1N0cmluZyB7CiAKICAgICB2b2lkIGluaXRpYWxpemVJczhCaXQoYm9vbCBm
bGFnKSBjb25zdAogICAgIHsKLSNpZiBDUFUoQUREUkVTUzY0KQogICAgICAgICBpZiAoZmxhZykK
ICAgICAgICAgICAgIG1fZmliZXIgfD0gaXM4Qml0SW5Qb2ludGVyOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBtX2ZpYmVyICY9IH5pczhCaXRJblBvaW50ZXI7Ci0jZWxzZQotICAgICAgICBt
X2NvbXBhY3RGaWJlcnMuaW5pdGlhbGl6ZUlzOEJpdChmbGFnKTsKLSNlbmRpZgorICAgIH0KKwor
ICAgIHZvaWQgaW5pdGlhbGl6ZUlzU3Vic3RyaW5nKGJvb2wgZmxhZykgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmIChmbGFnKQorICAgICAgICAgICAgbV9maWJlciB8PSBpc1N1YnN0cmluZ0luUG9p
bnRlcjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9maWJlciAmPSB+aXNTdWJzdHJpbmdJ
blBvaW50ZXI7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGluaXRpYWxpemVMZW5n
dGgodW5zaWduZWQgbGVuZ3RoKQpAQCAtNTQ5LDIzICs1MzksMTAgQEAgY2xhc3MgSlNSb3BlU3Ry
aW5nIGZpbmFsIDogcHVibGljIEpTU3RyaW5nIHsKIAogcHVibGljOgogICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZMZW5ndGgoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNSb3BlU3Ry
aW5nLCBtX2NvbXBhY3RGaWJlcnMpICsgQ29tcGFjdEZpYmVyczo6b2Zmc2V0T2ZMZW5ndGgoKTsg
fSAvLyAzMmJ5dGUgd2lkdGguCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZsYWdzKCkg
eyByZXR1cm4gb2Zmc2V0T2ZWYWx1ZSgpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
ZkZpYmVyMCgpIHsgcmV0dXJuIG9mZnNldE9mVmFsdWUoKTsgfQotI2lmIENQVShBRERSRVNTNjQp
Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZsYWdzKCkgeyByZXR1cm4gb2Zmc2V0T2ZW
YWx1ZSgpICsgc2l6ZW9mKHVpbnQxNl90KSAqIDM7IH0gLy8gMTZieXRlIHdpZHRoLgotICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGaWJlcjFMb3dlcigpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihKU1JvcGVTdHJpbmcsIG1fY29tcGFjdEZpYmVycykgKyBDb21wYWN0RmliZXJzOjpvZmZz
ZXRPZkZpYmVyMUxvd2VyKCk7IH0gLy8gMzJieXRlIHdpZHRoLgotICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZGaWJlcjFVcHBlcigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1JvcGVT
dHJpbmcsIG1fY29tcGFjdEZpYmVycykgKyBDb21wYWN0RmliZXJzOjpvZmZzZXRPZkZpYmVyMVVw
cGVyKCk7IH0gLy8gMTZieXRlIHdpZHRoLgotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZG
aWJlcjJMb3dlcigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1JvcGVTdHJpbmcsIG1fY29t
cGFjdEZpYmVycykgKyBDb21wYWN0RmliZXJzOjpvZmZzZXRPZkZpYmVyMkxvd2VyKCk7IH0gLy8g
MzJieXRlIHdpZHRoLgotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGaWJlcjJVcHBlcigp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1JvcGVTdHJpbmcsIG1fY29tcGFjdEZpYmVycykg
KyBDb21wYWN0RmliZXJzOjpvZmZzZXRPZkZpYmVyMlVwcGVyKCk7IH0gLy8gMTZieXRlIHdpZHRo
LgotI2VsaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBhbiB0ZW1wb3Jh
cnkgd29ya2Fyb3VuZCB0byBtYWtlIEpTQyBidWlsdCBvbiBBUk02NF8zMi4gT25jZSB3ZSBzdGFy
dCBjYWxjdWxhdGluZyBiaXRzIGJlZm9yZSBzdG9yaW5nIHRoZW0gdG8gSlNSb3BlU3RyaW5nLAot
ICAgIC8vIHdlIGRvIG5vdCBuZWVkIHRvIGhhdmUgc3VjaCBhIGRldGFpbGVkIGluZm9ybWF0aW9u
IGFzIGFuIG9mZnNldC4gQWZ0ZXIgdGhhdCwgd2hhdCB3ZSBvbmx5IG5lZWQgaXMgb2Zmc2V0T2ZG
aWJlcjAsIG9mZnNldE9mRmliZXIxLCBhbmQgb2Zmc2V0T2ZGaWJlcjIuCi0gICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTIzNAotICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZGbGFncygpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9
Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpYmVyMUxvd2VyKCkgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmli
ZXIxVXBwZXIoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQotICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGaWJlcjJMb3dlcigpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IHJldHVybiAwOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpYmVyMlVwcGVyKCkg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KLSNlbmRpZgorICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZGaWJlcjEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNSb3Bl
U3RyaW5nLCBtX2NvbXBhY3RGaWJlcnMpICsgQ29tcGFjdEZpYmVyczo6b2Zmc2V0T2ZGaWJlcjEo
KTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGaWJlcjIoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoSlNSb3BlU3RyaW5nLCBtX2NvbXBhY3RGaWJlcnMpICsgQ29tcGFjdEZpYmVy
czo6b2Zmc2V0T2ZGaWJlcjIoKTsgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBz
X21heEludGVybmFsUm9wZUxlbmd0aCA9IDM7CiAKQEAgLTU3NSw2ICs1NTIsNyBAQCBjbGFzcyBK
U1JvcGVTdHJpbmcgZmluYWwgOiBwdWJsaWMgSlNTdHJpbmcgewogICAgICAgICBKU1JvcGVTdHJp
bmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUm9wZVN0cmluZz4o
dm0uaGVhcCkpIEpTUm9wZVN0cmluZyh2bSwgczEsIHMyKTsKICAgICAgICAgbmV3U3RyaW5nLT5m
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIEFTU0VSVChuZXdTdHJpbmctPmxlbmd0aCgpKTsK
KyAgICAgICAgQVNTRVJUKG5ld1N0cmluZy0+aXNSb3BlKCkpOwogICAgICAgICByZXR1cm4gbmV3
U3RyaW5nOwogICAgIH0KICAgICBzdGF0aWMgSlNSb3BlU3RyaW5nKiBjcmVhdGUoVk0mIHZtLCBK
U1N0cmluZyogczEsIEpTU3RyaW5nKiBzMiwgSlNTdHJpbmcqIHMzKQpAQCAtNTgyLDYgKzU2MCw3
IEBAIGNsYXNzIEpTUm9wZVN0cmluZyBmaW5hbCA6IHB1YmxpYyBKU1N0cmluZyB7CiAgICAgICAg
IEpTUm9wZVN0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNS
b3BlU3RyaW5nPih2bS5oZWFwKSkgSlNSb3BlU3RyaW5nKHZtLCBzMSwgczIsIHMzKTsKICAgICAg
ICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIEFTU0VSVChuZXdTdHJp
bmctPmxlbmd0aCgpKTsKKyAgICAgICAgQVNTRVJUKG5ld1N0cmluZy0+aXNSb3BlKCkpOwogICAg
ICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAgIH0KIApAQCAtNTkwLDYgKzU2OSw3IEBAIGNsYXNz
IEpTUm9wZVN0cmluZyBmaW5hbCA6IHB1YmxpYyBKU1N0cmluZyB7CiAgICAgICAgIEpTUm9wZVN0
cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSb3BlU3RyaW5n
Pih2bS5oZWFwKSkgSlNSb3BlU3RyaW5nKHZtLCBiYXNlLCBvZmZzZXQsIGxlbmd0aCk7CiAgICAg
ICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb25TdWJzdHJpbmcodm0sIGV4ZWMpOwogICAgICAg
ICBBU1NFUlQobmV3U3RyaW5nLT5sZW5ndGgoKSk7CisgICAgICAgIEFTU0VSVChuZXdTdHJpbmct
PmlzUm9wZSgpKTsKICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICB9CiAKQEAgLTU5OCw2
ICs1NzgsNyBAQCBjbGFzcyBKU1JvcGVTdHJpbmcgZmluYWwgOiBwdWJsaWMgSlNTdHJpbmcgewog
ICAgICAgICBKU1JvcGVTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTUm9wZVN0cmluZz4odm0uaGVhcCwgZGVmZXJyYWxDb250ZXh0KSkgSlNSb3BlU3RyaW5n
KFN1YnN0cmluZ09mUmVzb2x2ZWQsIHZtLCBiYXNlLCBvZmZzZXQsIGxlbmd0aCk7CiAgICAgICAg
IG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb25TdWJzdHJpbmdPZlJlc29sdmVkKHZtKTsKICAgICAg
ICAgQVNTRVJUKG5ld1N0cmluZy0+bGVuZ3RoKCkpOworICAgICAgICBBU1NFUlQobmV3U3RyaW5n
LT5pc1JvcGUoKSk7CiAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgfQogCkBAIC02ODUs
MjYgKzY2Niw2IEBAIGNsYXNzIEpTUm9wZVN0cmluZyBmaW5hbCA6IHB1YmxpYyBKU1N0cmluZyB7
CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4oZmliZXIyKCkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJf
dCBub3RTdWJzdHJpbmdTZW50aW5lbCgpCi0gICAgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBzdWJzdHJpbmdTZW50aW5lbCgpCi0g
ICAgewotICAgICAgICByZXR1cm4gMjsKLSAgICB9Ci0KLSAgICBib29sIGlzU3Vic3RyaW5nKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAobV9maWJlciAmIHN0cmluZ01hc2spID09IHN1
YnN0cmluZ1NlbnRpbmVsKCk7Ci0gICAgfQotCi0gICAgdm9pZCBpbml0aWFsaXplSXNTdWJzdHJp
bmcoYm9vbCBpc1N1YnN0cmluZykKLSAgICB7Ci0gICAgICAgIG1fZmliZXIgfD0gKGlzU3Vic3Ry
aW5nID8gc3Vic3RyaW5nU2VudGluZWwoKSA6IG5vdFN1YnN0cmluZ1NlbnRpbmVsKCkpOwotICAg
IH0KLQogICAgIHN0YXRpY19hc3NlcnQoc19tYXhJbnRlcm5hbFJvcGVMZW5ndGggPj0gMiwgIiIp
OwogICAgIG11dGFibGUgQ29tcGFjdEZpYmVycyBtX2NvbXBhY3RGaWJlcnM7CiAKQEAgLTcyNiwx
NCArNjg3LDkgQEAgQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjppczhCaXQoKSBjb25zdAog
ewogICAgIHVpbnRwdHJfdCBwb2ludGVyID0gbV9maWJlcjsKICAgICBpZiAocG9pbnRlciAmIGlz
Um9wZUluUG9pbnRlcikgewotI2lmIENQVShBRERSRVNTNjQpCiAgICAgICAgIC8vIERvIG5vdCBs
b2FkIG1fZmliZXIgdHdpY2UuIFdlIHNob3VsZCB1c2UgdGhlIGluZm9ybWF0aW9uIGluIHBvaW50
ZXIuCiAgICAgICAgIC8vIE90aGVyd2lzZSwgSlNSb3BlU3RyaW5nIG1heSBiZSBjb252ZXJ0ZWQg
dG8gSlNTdHJpbmcgYmV0d2VlbiB0aGUgZmlyc3QgYW5kIHNlY29uZCBhY2Nlc3Nlcy4KICAgICAg
ICAgcmV0dXJuIHBvaW50ZXIgJiBKU1JvcGVTdHJpbmc6OmlzOEJpdEluUG9pbnRlcjsKLSNlbHNl
Ci0gICAgICAgIC8vIEl0IGlzIE9LIHRvIGxvYWQgZmxhZyBzaW5jZSBldmVuIGlmIEpTUm9wZVN0
cmluZyBpcyBjb252ZXJ0ZWQgdG8gSlNTdHJpbmcsIHRoaXMgZmxhZyBzdGlsbCBleGlzdHMuCi0g
ICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4odGhpcyktPm1fY29tcGFj
dEZpYmVycy5pczhCaXQoKTsKLSNlbmRpZgogICAgIH0KICAgICByZXR1cm4gYml0d2lzZV9jYXN0
PFN0cmluZ0ltcGwqPihwb2ludGVyKS0+aXM4Qml0KCk7CiB9CkBAIC0xMDQ2LDcgKzEwMDIsNyBA
QCBBTFdBWVNfSU5MSU5FIFN0cmluZ1ZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyBKU1N0cmluZzo6
dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKAogCiBpbmxpbmUgYm9vbCBKU1N0cmluZzo6aXNTdWJz
dHJpbmcoKSBjb25zdAogewotICAgIHJldHVybiBpc1JvcGUoKSAmJiBzdGF0aWNfY2FzdDxjb25z
dCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+aXNTdWJzdHJpbmcoKTsKKyAgICByZXR1cm4gbV9maWJl
ciAmIEpTUm9wZVN0cmluZzo6aXNTdWJzdHJpbmdJblBvaW50ZXI7CiB9CiAKIC8vIC0tLSBKU1Zh
bHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363414</attachid>
            <date>2019-03-02 00:16:38 -0800</date>
            <delta_ts>2019-03-02 00:32:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195234-20190302001638.patch</filename>
            <type>text/plain</type>
            <size>27888</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OTlhZjkyMzg2ODA5Y2UzMTgzNWNjYzY1ZDY2MDRkY2MwMGE2YTJmLi5mNjE4OTVmZTY4NTY2MDk5
MjNiN2JiZjU0OTExODFkZmE4NTQzMWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxOS0wMy0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIGJpdHMgZm9yIEpTUm9wZVN0cmluZyBpbiAzIHN0b3Jl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MjM0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBjbGVhbnMgdXAgdGhlIGluaXRpYWxpemF0aW9uIG9mIEpTUm9wZVN0cmluZyBmaWVsZHMg
aW4gREZHIGFuZCBGVEwuCisgICAgICAgIFByZXZpb3VzbHksIHdlIHN0b3JlIHNvbWUgcGFydCBv
ZiBkYXRhIHNlcGFyYXRlbHkuIEluc3RlYWQsIHRoaXMgcGF0Y2ggY2FsY3VsYXRlcworICAgICAg
ICB0aGUgZGF0YSBmaXJzdCBieSBiaXQgb3BlcmF0aW9ucyBhbmQgc3RvcmUgY2FsY3VsYXRlZCBk
YXRhIHdpdGggZmV3ZXIgc3RvcmVzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBjbGVhbnMg
dXAgaXM4Qml0IGFuZCBpc1N1YnN0cmluZyBmbGFncy4gV2UgcHV0IHRoZW0gaW4gbG93ZXIgYml0
cworICAgICAgICBvZiB0aGUgZmlyc3QgZmliZXIgaW5zdGVhZCBvZiB0aGUgdXBwZXIgMTYgYml0
cy4gU2luY2Ugd2Ugb25seSBoYXZlIDMgYml0IGZsYWdzLCAoaXNSb3BlLCBpczhCaXQsIGlzU3Vi
c3RyaW5nKSwKKyAgICAgICAgd2UgY2FuIHB1dCB0aGVtIGludG8gdGhlIGxvd2VyIDMgYml0cywg
dGhleSBhcmUgYWx3YXlzIGVtcHR5IGR1ZSB0byBhbGlnbm1lbnQuCisKKyAgICAgICAgKiBieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKTogQSBiaXQgY2xlYW4gdXAgb2YgU3RyaW5nTGVuZ3RoIElDIHRvIGdpdmUgYSBjaGFuY2Ug
b2YgdW5uZWNlc3NhcnkgbW92IHJlbW92YWwuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1ha2VS
b3BlKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6QWJzdHJhY3RIZWFwUmVwb3Np
dG9yeSk6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAg
ICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZU1ha2VSb3BlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6aXNSb3BlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6aXNOb3RSb3BlU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1
bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OmlzOEJpdCBjb25zdCk6
CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjppc1N1YnN0cmluZyBjb25zdCk6CisKIDIwMTktMDMt
MDEgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgogCiAgICAgICAgIFtQ
bGF5U3RhdGlvbl0gVXBzdHJlYW0gcGxheXN0YXRpb24ncyByZW1vdGUgaW5zcGVjdG9yIHNlcnZl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4
IGVmYzkzOWI1NWQyMzNkYWZhZjZkNjIyNDFmMjJhZDA0OTk3YzgxNWYuLjE4NzcyMzFkNzNhYmZj
NWM3ZTZkNDhmYjgyZGQ2OTJhYzdkOWUzYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTEyMTUsMTQgKzEyMTUsMTQgQEAgdm9pZCBBY2Nl
c3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICBj
YXNlIFN0cmluZ0xlbmd0aDogewogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNTdHJpbmc6Om9mZnNldE9mVmFsdWUoKSksIHNjcmF0Y2hHUFIpOwog
ICAgICAgICBhdXRvIGlzUm9wZSA9IGppdC5icmFuY2hJZlJvcGVTdHJpbmdJbXBsKHNjcmF0Y2hH
UFIpOwotICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BS
LCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAg
ICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJpbmdJbXBs
OjpsZW5ndGhNZW1vcnlPZmZzZXQoKSksIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpOwogICAgICAg
ICBhdXRvIGRvbmUgPSBqaXQuanVtcCgpOwogCiAgICAgICAgIGlzUm9wZS5saW5rKCZqaXQpOwot
ICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU1JvcGVT
dHJpbmc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgaml0LmxvYWQz
MihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkxl
bmd0aCgpKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7CiAKICAgICAgICAgZG9uZS5saW5rKCZq
aXQpOwotICAgICAgICBqaXQuYm94SW50MzIoc2NyYXRjaEdQUiwgdmFsdWVSZWdzKTsKKyAgICAg
ICAgaml0LmJveEludDMyKHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIHZhbHVlUmVncyk7CiAgICAg
ICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggM2JiZTRiNTg3
N2RhYjZjMDY5ZWQ2YjgwYTQ4MDlkZTVhNTdkZTk0Yy4uZmM3MTBmYWRmNTgwZTU0MzI2MTI3YzRk
ZGVkNjlhOTVmNDBkMjExZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEzNDI1LDIzICsxMzQyNSw4IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVNYWtlUm9wZShOb2RlKiBub2RlKQogICAgIEFsbG9jYXRvciBhbGxvY2F0
b3JWYWx1ZSA9IGFsbG9jYXRvckZvck5vblZpcnR1YWxDb25jdXJyZW50bHk8SlNSb3BlU3RyaW5n
PigqbV9qaXQudm0oKSwgc2l6ZW9mKEpTUm9wZVN0cmluZyksIEFsbG9jYXRvckZvck1vZGU6OkFs
bG9jYXRvcklmRXhpc3RzKTsKICAgICBlbWl0QWxsb2NhdGVKU0NlbGwocmVzdWx0R1BSLCBKSVRB
bGxvY2F0b3I6OmNvbnN0YW50KGFsbG9jYXRvclZhbHVlKSwgYWxsb2NhdG9yR1BSLCBUcnVzdGVk
SW1tUHRyKG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUobV9qaXQudm0oKS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKSksIHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKIAotICAgIG1faml0Lm9y
UHRyKFRydXN0ZWRJbW0zMihKU1N0cmluZzo6aXNSb3BlSW5Qb2ludGVyKSwgb3BHUFJzWzBdLCBh
bGxvY2F0b3JHUFIpOwotICAgIG1faml0LnN0b3JlUHRyKGFsbG9jYXRvckdQUiwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZpYmVyMCgpKSk7
Ci0KLSAgICBtX2ppdC5tb3ZlKG9wR1BSc1sxXSwgc2NyYXRjaEdQUik7Ci0gICAgbV9qaXQuc3Rv
cmUzMihzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1JvcGVT
dHJpbmc6Om9mZnNldE9mRmliZXIxTG93ZXIoKSkpOwotICAgIG1faml0LnJzaGlmdFB0cihUcnVz
dGVkSW1tMzIoMzIpLCBzY3JhdGNoR1BSKTsKLSAgICBtX2ppdC5zdG9yZTE2KHNjcmF0Y2hHUFIs
IENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZG
aWJlcjFVcHBlcigpKSk7Ci0KLSAgICBpZiAobnVtT3BHUFJzID09IDMpIHsKLSAgICAgICAgbV9q
aXQubW92ZShvcEdQUnNbMl0sIHNjcmF0Y2hHUFIpOwotICAgICAgICBtX2ppdC5zdG9yZTMyKHNj
cmF0Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6
b2Zmc2V0T2ZGaWJlcjJMb3dlcigpKSk7Ci0gICAgICAgIG1faml0LnJzaGlmdFB0cihUcnVzdGVk
SW1tMzIoMzIpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgbV9qaXQuc3RvcmUxNihzY3JhdGNoR1BS
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9m
RmliZXIyVXBwZXIoKSkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LnN0b3JlWmVybzMy
KENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZG
aWJlcjJMb3dlcigpKSk7Ci0gICAgICAgIG1faml0LnN0b3JlWmVybzE2KENDYWxsSGVscGVyczo6
QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjJVcHBlcigpKSk7
Ci0gICAgfQorICAgIC8vIFRoaXMgcHV0cyBudWxscHRyIGZvciB0aGUgZmlyc3QgZmliZXIuIEl0
IG1ha2VzIHZpc2l0Q2hpbGRyZW4gc2FmZSBldmVuIGlmIHRoaXMgSlNSb3BlU3RyaW5nIGlzIGRp
c2NhcmRlZCBkdWUgdG8gdGhlIHNwZWN1bGF0aW9uIGZhaWx1cmUgaW4gdGhlIGZvbGxvd2luZyBw
YXRoLgorICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoSlNTdHJpbmc6OmlzUm9wZUlu
UG9pbnRlciksIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6
b2Zmc2V0T2ZGaWJlcjAoKSkpOwogCiAgICAgewogICAgICAgICBpZiAoSlNTdHJpbmcqIHN0cmlu
ZyA9IGVkZ2VzWzBdLT5keW5hbWljQ2FzdENvbnN0YW50PEpTU3RyaW5nKj4oKm1faml0LnZtKCkp
KSB7CkBAIC0xMzUxMCwxNCArMTM0OTUsMzggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU1ha2VSb3BlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgbV9qaXQuc3RvcmUxNihzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0
R1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmxhZ3MoKSkpOworCiAgICAgaWYgKCFBU1NFUlRf
RElTQUJMRUQpIHsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG9rID0gbV9qaXQuYnJhbmNo
MzIoCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgYWxsb2Nh
dG9yR1BSLCBUcnVzdGVkSW1tMzIoMCkpOwogICAgICAgICBtX2ppdC5hYm9ydFdpdGhSZWFzb24o
REZHTmVnYXRpdmVTdHJpbmdMZW5ndGgpOwogICAgICAgICBvay5saW5rKCZtX2ppdCk7CiAgICAg
fQotICAgIG1faml0LnN0b3JlMzIoYWxsb2NhdG9yR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
cmVzdWx0R1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKworICAgIHN0YXRp
Y19hc3NlcnQoU3RyaW5nSW1wbDo6ZmxhZ0lzOEJpdCgpID09IEpTUm9wZVN0cmluZzo6aXM4Qml0
SW5Qb2ludGVyLCAiIik7CisgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6
OmZsYWdJczhCaXQoKSksIHNjcmF0Y2hHUFIpOworICAgIG1faml0Lm9yUHRyKG9wR1BSc1swXSwg
c2NyYXRjaEdQUik7CisgICAgbV9qaXQub3JQdHIoVHJ1c3RlZEltbVB0cihKU1N0cmluZzo6aXNS
b3BlSW5Qb2ludGVyKSwgc2NyYXRjaEdQUik7CisgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQ
UiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRP
ZkZpYmVyMCgpKSk7CisKKyAgICBtX2ppdC5tb3ZlKG9wR1BSc1sxXSwgc2NyYXRjaEdQUik7Cisg
ICAgbV9qaXQubHNoaWZ0UHRyKFRydXN0ZWRJbW0zMigzMiksIHNjcmF0Y2hHUFIpOworICAgIG1f
aml0Lm9yUHRyKGFsbG9jYXRvckdQUiwgc2NyYXRjaEdQUik7CisgICAgbV9qaXQuc3RvcmVQdHIo
c2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNSb3BlU3RyaW5n
OjpvZmZzZXRPZkZpYmVyMSgpKSk7CisKKyAgICBpZiAobnVtT3BHUFJzID09IDIpIHsKKyAgICAg
ICAgbV9qaXQubW92ZShvcEdQUnNbMV0sIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5yc2hp
ZnRQdHIoVHJ1c3RlZEltbTMyKDMyKSwgc2NyYXRjaEdQUik7CisgICAgICAgIG1faml0LnN0b3Jl
UHRyKHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0
cmluZzo6b2Zmc2V0T2ZGaWJlcjIoKSkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1faml0Lm1v
dmUob3BHUFJzWzFdLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgbV9qaXQucnNoaWZ0UHRyKFRydXN0
ZWRJbW0zMigzMiksIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKG9wR1BSc1syXSwg
c2NyYXRjaDJHUFIpOworICAgICAgICBtX2ppdC5sc2hpZnRQdHIoVHJ1c3RlZEltbTMyKDE2KSwg
c2NyYXRjaDJHUFIpOworICAgICAgICBtX2ppdC5vclB0cihzY3JhdGNoMkdQUiwgc2NyYXRjaEdQ
Uik7CisgICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6QWRk
cmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjIoKSkpOworICAgIH0K
KwogICAgIGF1dG8gaXNOb25FbXB0eVN0cmluZyA9IG1faml0LmJyYW5jaFRlc3QzMihDQ2FsbEhl
bHBlcnM6Ok5vblplcm8sIGFsbG9jYXRvckdQUik7CiAKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGpzRW1wdHlTdHJpbmcoJm1faml0Lmdy
YXBoKCkubV92bSkpLCByZXN1bHRHUFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKaW5kZXggYTA2YWM0ZTUzNTk3
NWFjODQ5MzFiZDJjZGEyZTE5ZjIwMGJiZmE0Yy4uOWMzYzFjN2FjNmZhOGFmMjgyNjNiYWIyYTcy
NjlkYjU1MGUzNTZkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCkBAIC04Niw2ICs4Niw3IEBAIEFic3RyYWN0
SGVhcFJlcG9zaXRvcnk6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnkoKQogICAgIEpTQ2VsbF90eXBl
SW5mb0ZsYWdzLmNoYW5nZVBhcmVudCgmSlNDZWxsX3VzZWZ1bEJ5dGVzKTsKICAgICBKU0NlbGxf
Y2VsbFN0YXRlLmNoYW5nZVBhcmVudCgmSlNDZWxsX3VzZWZ1bEJ5dGVzKTsKICAgICBKU1JvcGVT
dHJpbmdfZmxhZ3MuY2hhbmdlUGFyZW50KCZKU1JvcGVTdHJpbmdfZmliZXIwKTsKKyAgICBKU1Jv
cGVTdHJpbmdfbGVuZ3RoLmNoYW5nZVBhcmVudCgmSlNSb3BlU3RyaW5nX2ZpYmVyMSk7CiAKICAg
ICBSRUxFQVNFX0FTU0VSVCghSlNDZWxsX2ZyZWVMaXN0TmV4dC5vZmZzZXQoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oCmluZGV4IDFiZGNmN2VmMTdlOTY1MGIzNzE2N2JlZDA5NmVlOTAxMjFlMGE2MDYuLjRiZjg4
YjU0MTM3MzAxZjg1MzMzYzQ4ZDJjZDdiYjE0YzQ1ZDcwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC04OSwx
MiArODksMTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcl9lbmRTdHJ1Y3R1cmVQcm9wZXJ0eUluZGV4LCBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3I6OmVuZFN0cnVjdHVyZVByb3BlcnR5SW5kZXhPZmZzZXQoKSkgXAog
ICAgIG1hY3JvKEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcl9pbmRleExlbmd0aCwgSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yOjppbmRleGVkTGVuZ3RoT2Zmc2V0KCkpIFwKICAgICBtYWNybyhKU1Jv
cGVTdHJpbmdfZmxhZ3MsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGbGFncygpKSBcCi0gICAgbWFj
cm8oSlNSb3BlU3RyaW5nX2ZpYmVyMCwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZpYmVyMCgpKSBc
CiAgICAgbWFjcm8oSlNSb3BlU3RyaW5nX2xlbmd0aCwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkxl
bmd0aCgpKSBcCi0gICAgbWFjcm8oSlNSb3BlU3RyaW5nX2ZpYmVyMUxvd2VyLCBKU1JvcGVTdHJp
bmc6Om9mZnNldE9mRmliZXIxTG93ZXIoKSkgXAotICAgIG1hY3JvKEpTUm9wZVN0cmluZ19maWJl
cjFVcHBlciwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZpYmVyMVVwcGVyKCkpIFwKLSAgICBtYWNy
byhKU1JvcGVTdHJpbmdfZmliZXIyTG93ZXIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjJM
b3dlcigpKSBcCi0gICAgbWFjcm8oSlNSb3BlU3RyaW5nX2ZpYmVyMlVwcGVyLCBKU1JvcGVTdHJp
bmc6Om9mZnNldE9mRmliZXIyVXBwZXIoKSkgXAorICAgIG1hY3JvKEpTUm9wZVN0cmluZ19maWJl
cjAsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjAoKSkgXAorICAgIG1hY3JvKEpTUm9wZVN0
cmluZ19maWJlcjEsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjEoKSkgXAorICAgIG1hY3Jv
KEpTUm9wZVN0cmluZ19maWJlcjIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjIoKSkgXAog
ICAgIG1hY3JvKEpTU2NvcGVfbmV4dCwgSlNTY29wZTo6b2Zmc2V0T2ZOZXh0KCkpIFwKICAgICBt
YWNybyhKU1N5bWJvbFRhYmxlT2JqZWN0X3N5bWJvbFRhYmxlLCBKU1N5bWJvbFRhYmxlT2JqZWN0
OjpvZmZzZXRPZlN5bWJvbFRhYmxlKCkpIFwKICAgICBtYWNybyhKU1dyYXBwZXJPYmplY3RfaW50
ZXJuYWxWYWx1ZSwgSlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlT2Zmc2V0KCkpIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA5YjM4
ZjNhMTcyZGJmNWJjZjM0MDg1NGIyZmYwNzdiZGI2MzdiNGZjLi45NTg3ZGY4MDdkMThlMDhjMzQ2
OTExY2RjM2MzNDU5YmM5YjkwYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC02NTI0LDYgKzY1MjQsNyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICAgICAgbnVtS2lkcyA9IDI7CiAgICAgICAgIH0KICAgICAgICAgCisgICAg
ICAgIExCYXNpY0Jsb2NrIGVtcHR5Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExC
YXNpY0Jsb2NrIHNsb3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxv
Y2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgCkBAIC02NTMyLDE4
ICs2NTMzLDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IGFsbG9jYXRlQ2VsbCgKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvci5s
b2NhbEFsbG9jYXRvcigpKSwgdm0oKS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCksIHNsb3dQYXRoKTsK
ICAgICAgICAgCi0gICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmJpdE9yKGtpZHNbMF0sIG1f
b3V0LmNvbnN0SW50UHRyKEpTU3RyaW5nOjppc1JvcGVJblBvaW50ZXIpKSwgcmVzdWx0LCBtX2hl
YXBzLkpTUm9wZVN0cmluZ19maWJlcjApOwotCi0gICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQu
Y2FzdFRvSW50MzIoa2lkc1sxXSksIHJlc3VsdCwgbV9oZWFwcy5KU1JvcGVTdHJpbmdfZmliZXIx
TG93ZXIpOwotICAgICAgICBtX291dC5zdG9yZTMyQXMxNihtX291dC5jYXN0VG9JbnQzMihtX291
dC5sU2hyKGtpZHNbMV0sIG1fb3V0LmNvbnN0SW50MzIoMzIpKSksIHJlc3VsdCwgbV9oZWFwcy5K
U1JvcGVTdHJpbmdfZmliZXIxVXBwZXIpOwotCi0gICAgICAgIGlmIChudW1LaWRzID09IDMpIHsK
LSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY2FzdFRvSW50MzIoa2lkc1syXSksIHJl
c3VsdCwgbV9oZWFwcy5KU1JvcGVTdHJpbmdfZmliZXIyTG93ZXIpOwotICAgICAgICAgICAgbV9v
dXQuc3RvcmUzMkFzMTYobV9vdXQuY2FzdFRvSW50MzIobV9vdXQubFNocihraWRzWzJdLCBtX291
dC5jb25zdEludDMyKDMyKSkpLCByZXN1bHQsIG1faGVhcHMuSlNSb3BlU3RyaW5nX2ZpYmVyMlVw
cGVyKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQu
aW50MzJaZXJvLCByZXN1bHQsIG1faGVhcHMuSlNSb3BlU3RyaW5nX2ZpYmVyMkxvd2VyKTsKLSAg
ICAgICAgICAgIG1fb3V0LnN0b3JlMzJBczE2KG1fb3V0LmludDMyWmVybywgcmVzdWx0LCBtX2hl
YXBzLkpTUm9wZVN0cmluZ19maWJlcjJVcHBlcik7Ci0gICAgICAgIH0KKyAgICAgICAgLy8gVGhp
cyBwdXRzIG51bGxwdHIgZm9yIHRoZSBmaXJzdCBmaWJlci4gSXQgbWFrZXMgdmlzaXRDaGlsZHJl
biBzYWZlIGV2ZW4gaWYgdGhpcyBKU1JvcGVTdHJpbmcgaXMgZGlzY2FyZGVkIGR1ZSB0byB0aGUg
c3BlY3VsYXRpb24gZmFpbHVyZSBpbiB0aGUgZm9sbG93aW5nIHBhdGguCisgICAgICAgIG1fb3V0
LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50UHRyKEpTU3RyaW5nOjppc1JvcGVJblBvaW50ZXIpLCBy
ZXN1bHQsIG1faGVhcHMuSlNSb3BlU3RyaW5nX2ZpYmVyMCk7CiAKICAgICAgICAgYXV0byBnZXRG
bGFnc0FuZExlbmd0aCA9IFsmXSAoRWRnZSYgZWRnZSwgTFZhbHVlIGNoaWxkKSB7CiAgICAgICAg
ICAgICBpZiAoSlNTdHJpbmcqIHN0cmluZyA9IGVkZ2UtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNT
dHJpbmcqPih2bSgpKSkgewpAQCAtNjU2MCw3ICs2NTUxLDcgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc1JvcGVTdHJpbmcoY2hpbGQsIGVkZ2UpLCB1
bnN1cmUocm9wZUNhc2UpLCB1bnN1cmUobm90Um9wZUNhc2UpKTsKIAogICAgICAgICAgICAgTEJh
c2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhyb3BlQ2FzZSwgbm90Um9wZUNhc2Up
OwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmxhZ3NGb3JSb3BlID0gbV9vdXQuYW5jaG9y
KG1fb3V0LmxvYWQxNlplcm9FeHQzMihjaGlsZCwgbV9oZWFwcy5KU1JvcGVTdHJpbmdfZmxhZ3Mp
KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZsYWdzRm9yUm9wZSA9IG1fb3V0LmFuY2hv
cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShjaGlsZCwgbV9oZWFwcy5KU1JvcGVTdHJpbmdfZmxh
Z3MpKTsKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGxlbmd0aEZvclJvcGUgPSBtX291dC5h
bmNob3IobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoY2hpbGQsIG1faGVhcHMuSlNSb3BlU3RyaW5n
X2xlbmd0aCkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCkBAIC02
NTkxLDE0ICs2NTgyLDI5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICB9Owog
ICAgICAgICAgICAgZmxhZ3NBbmRMZW5ndGggPSBtZXJnZUZsYWdzQW5kTGVuZ3RoKGVkZ2VzW2ld
LCBraWRzW2ldLCBmbGFnc0FuZExlbmd0aCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9vdXQuc3Rv
cmUzMkFzMTYoZmxhZ3NBbmRMZW5ndGguZmxhZ3MsIHJlc3VsdCwgbV9oZWFwcy5KU1JvcGVTdHJp
bmdfZmxhZ3MpOwotICAgICAgICBtX291dC5zdG9yZTMyKGZsYWdzQW5kTGVuZ3RoLmxlbmd0aCwg
cmVzdWx0LCBtX2hlYXBzLkpTUm9wZVN0cmluZ19sZW5ndGgpOworCisgICAgICAgIG1fb3V0LnN0
b3JlUHRyKAorICAgICAgICAgICAgbV9vdXQuYml0T3IoCisgICAgICAgICAgICAgICAgbV9vdXQu
Yml0T3Ioa2lkc1swXSwgbV9vdXQuY29uc3RJbnRQdHIoSlNTdHJpbmc6OmlzUm9wZUluUG9pbnRl
cikpLAorICAgICAgICAgICAgICAgIG1fb3V0LmJpdEFuZChtX291dC5jb25zdEludFB0cihKU1Jv
cGVTdHJpbmc6OmlzOEJpdEluUG9pbnRlciksIG1fb3V0Lnplcm9FeHRQdHIoZmxhZ3NBbmRMZW5n
dGguZmxhZ3MpKSksCisgICAgICAgICAgICByZXN1bHQsIG1faGVhcHMuSlNSb3BlU3RyaW5nX2Zp
YmVyMCk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKAorICAgICAgICAgICAgbV9vdXQuYml0T3Io
bV9vdXQuemVyb0V4dFB0cihmbGFnc0FuZExlbmd0aC5sZW5ndGgpLCBtX291dC5zaGwoa2lkc1sx
XSwgbV9vdXQuY29uc3RJbnQzMigzMikpKSwKKyAgICAgICAgICAgIHJlc3VsdCwgbV9oZWFwcy5K
U1JvcGVTdHJpbmdfZmliZXIxKTsKKyAgICAgICAgaWYgKG51bUtpZHMgPT0gMikKKyAgICAgICAg
ICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmxTaHIoa2lkc1sxXSwgbV9vdXQuY29uc3RJbnQzMigz
MikpLCByZXN1bHQsIG1faGVhcHMuSlNSb3BlU3RyaW5nX2ZpYmVyMik7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmJpdE9yKG1fb3V0LmxTaHIoa2lkc1sx
XSwgbV9vdXQuY29uc3RJbnQzMigzMikpLCBtX291dC5zaGwoa2lkc1syXSwgbV9vdXQuY29uc3RJ
bnQzMigxNikpKSwgcmVzdWx0LCBtX2hlYXBzLkpTUm9wZVN0cmluZ19maWJlcjIpOwogICAgICAg
ICAKICAgICAgICAgbXV0YXRvckZlbmNlKCk7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RS
ZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuc2VsZWN0KG1fb3V0LmlzWmVybzMyKGZsYWdzQW5k
TGVuZ3RoLmxlbmd0aCksIHdlYWtQb2ludGVyKGpzRW1wdHlTdHJpbmcoJm1fZ3JhcGgubV92bSkp
LCByZXN1bHQpKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFu
Y2hvcihyZXN1bHQpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvMzIoZmxhZ3NB
bmRMZW5ndGgubGVuZ3RoKSwgcmFyZWx5KGVtcHR5Q2FzZSksIHVzdWFsbHkoY29udGludWF0aW9u
KSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhlbXB0
eUNhc2UsIHNsb3dQYXRoKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZW1wdHlSZXN1bHQgPSBt
X291dC5hbmNob3Iod2Vha1BvaW50ZXIoanNFbXB0eVN0cmluZygmbV9ncmFwaC5tX3ZtKSkpOwog
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAotICAgICAgICBMQmFz
aWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24p
OworICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsKICAgICAg
ICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZTsKICAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsK
ICAgICAgICAgc3dpdGNoIChudW1LaWRzKSB7CkBAIC02NjI2LDcgKzY2MzIsNyBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAg
IAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAg
ICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsK
KyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGZhc3RSZXN1bHQsIGVtcHR5UmVz
dWx0LCBzbG93UmVzdWx0KSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZVN0cmluZ0No
YXJBdCgpCkBAIC0xNTY4MCw2ICsxNTY4NiwxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICAgICAgICAgIGlmICh2YWx1ZS5pc0NlbGwoKSAmJiB2YWx1ZS5hc0NlbGwoKS0+dHlwZSgp
ID09IFN0cmluZ1R5cGUgJiYgIWFzU3RyaW5nKHZhbHVlKS0+aXNSb3BlKCkpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBtX291dC5ib29sZWFuRmFsc2U7CiAgICAgICAgICAgICB9CisgICAg
ICAgICAgICBTdHJpbmcgdmFsdWUgPSBlZGdlLT50cnlHZXRTdHJpbmcobV9ncmFwaCk7CisgICAg
ICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhp
cyB2YWx1ZSBpcyBMYXp5VmFsdWUsIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIEpTU3RyaW5nLCBh
bmQgdGhlIHJlc3VsdCBtdXN0IGJlIG5vbi1yb3BlIHN0cmluZy4KKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9vdXQuYm9vbGVhbkZhbHNlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAg
ICAgICAgcmV0dXJuIG1fb3V0LnRlc3ROb25aZXJvUHRyKG1fb3V0LmxvYWRQdHIoc3RyaW5nLCBt
X2hlYXBzLkpTU3RyaW5nX3ZhbHVlKSwgbV9vdXQuY29uc3RJbnRQdHIoSlNTdHJpbmc6OmlzUm9w
ZUluUG9pbnRlcikpOwpAQCAtMTU2OTQsNiArMTU3MDUsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaXNDZWxsKCkgJiYgdmFsdWUuYXNDZWxsKCkt
PnR5cGUoKSA9PSBTdHJpbmdUeXBlICYmICFhc1N0cmluZyh2YWx1ZSktPmlzUm9wZSgpKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuYm9vbGVhblRydWU7CiAgICAgICAgICAgICB9
CisgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBlZGdlLT50cnlHZXRTdHJpbmcobV9ncmFwaCk7
CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgLy8g
SWYgdGhpcyB2YWx1ZSBpcyBMYXp5VmFsdWUsIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIEpTU3Ry
aW5nLCBhbmQgdGhlIHJlc3VsdCBtdXN0IGJlIG5vbi1yb3BlIHN0cmluZy4KKyAgICAgICAgICAg
ICAgICByZXR1cm4gbV9vdXQuYm9vbGVhblRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
IAogICAgICAgICByZXR1cm4gbV9vdXQudGVzdElzWmVyb1B0cihtX291dC5sb2FkUHRyKHN0cmlu
ZywgbV9oZWFwcy5KU1N0cmluZ192YWx1ZSksIG1fb3V0LmNvbnN0SW50UHRyKEpTU3RyaW5nOjpp
c1JvcGVJblBvaW50ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmNwcAppbmRleCA0YzQ0ZjRiMDU1YzE5MjRiM2Y1NzQxZTQwNDlkZGQ4MTBkNDQzOTkyLi5jODM2
ZmEyZTJkZmE5OWM2NDY3OGIzOTY4NjRlN2NlYzQyZmRiZjNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBKU1N0
cmluZzo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ICAgIAogICAgIHVpbnRwdHJfdCBwb2ludGVyID0gdGhpc09iamVjdC0+bV9maWJlcjsKICAgICBp
ZiAocG9pbnRlciAmIGlzUm9wZUluUG9pbnRlcikgewotICAgICAgICBpZiAoKHBvaW50ZXIgJiBK
U1JvcGVTdHJpbmc6OnN0cmluZ01hc2spID09IEpTUm9wZVN0cmluZzo6c3Vic3RyaW5nU2VudGlu
ZWwoKSkgeworICAgICAgICBpZiAocG9pbnRlciAmIEpTUm9wZVN0cmluZzo6aXNTdWJzdHJpbmdJ
blBvaW50ZXIpIHsKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoc3RhdGlj
X2Nhc3Q8SlNSb3BlU3RyaW5nKj4odGhpc09iamVjdCktPmZpYmVyMSgpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmgKaW5kZXggNmZjNTQ2NzllMjdlNjNkNGQzMWJmODZlOThhNDBkODllY2Y5YmM5ZS4uNzk5MGIz
MGEyOThlZDY1NjE0YjJmMGZmNTIxOGQ0MWQwMGI4NzhlZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC04Niw5ICs4Niw5IEBAIHN0cnVjdCBTdHJpbmdWaWV3
V2l0aFVuZGVybHlpbmdTdHJpbmcgewogLy8KIC8vICAgICAgICAgICAgICAwICAgICAgICAgICAg
ICAgICAgICAgICAgOCAgICAgICAgMTAgICAgICAgICAgICAgICAxNiAgICAgICAgICAgICAgICAg
ICAgICAgMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDgKIC8vIEpTU3Ry
aW5nICAgICBbICAgSUQgICAgICBdWyAgaGVhZGVyICBdWyAgIFN0cmluZyBwb2ludGVyICAgICAg
MF0KLS8vIEpTUm9wZVN0cmluZyBbICAgSUQgICAgICBdWyAgaGVhZGVyICBdWyBmbGFncyBdWyAx
c3QgZmliZXIgICAgMV1bICBsZW5ndGggIF1bMm5kIGxvd2VyMzJdWzJuZCB1cHBlcjE2XVszcmQg
bG93ZXIxNl1bM3JkIHVwcGVyMzJdCisvLyBKU1JvcGVTdHJpbmcgWyAgIElEICAgICAgXVsgIGhl
YWRlciAgXVsgICAxc3QgZmliZXIgICAgICAgICB4eXpdWyAgbGVuZ3RoICBdWzJuZCBsb3dlcjMy
XVsybmQgdXBwZXIxNl1bM3JkIGxvd2VyMTZdWzNyZCB1cHBlcjMyXQogLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi0vLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlzUm9wZSBiaXQKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB4OihpczhCaXQpLHk6KGlzU3Vic3RyaW5nKSx6Oihpc1JvcGUpIGJpdCBmbGFncwogY2xhc3Mg
SlNTdHJpbmcgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgSklU
OwpAQCAtMjY2LDEzICsyNjYsMTUgQEAgY2xhc3MgSlNTdHJpbmcgOiBwdWJsaWMgSlNDZWxsIHsK
IGNsYXNzIEpTUm9wZVN0cmluZyBmaW5hbCA6IHB1YmxpYyBKU1N0cmluZyB7CiAgICAgZnJpZW5k
IGNsYXNzIEpTU3RyaW5nOwogcHVibGljOgorICAgIC8vIFdlIHVzZSBsb3dlciAzYml0cyBvZiBm
aWJlcjAgZm9yIGZsYWdzLiBUaGVzZSBiaXRzIGFyZSB1c2FibGUgZHVlIHRvIGFsaWdubWVudCwg
YW5kIGl0IGlzIE9LIGV2ZW4gaW4gMzJiaXQgYXJjaGl0ZWN0dXJlLgorICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludHB0cl90IGlzOEJpdEluUG9pbnRlciA9IHN0YXRpY19jYXN0PHVpbnRwdHJfdD4o
U3RyaW5nSW1wbDo6ZmxhZ0lzOEJpdCgpKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJf
dCBpc1N1YnN0cmluZ0luUG9pbnRlciA9IDB4MjsKKyAgICBzdGF0aWNfYXNzZXJ0KGlzOEJpdElu
UG9pbnRlciA9PSAwYjEwMCwgIiIpOworICAgIHN0YXRpY19hc3NlcnQoaXNTdWJzdHJpbmdJblBv
aW50ZXIgPT0gMGIwMTAsICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGlzUm9wZUluUG9pbnRlciA9
PSAwYjAwMSwgIiIpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IHN0cmluZ01hc2sg
PSB+KGlzUm9wZUluUG9pbnRlciB8IGlzOEJpdEluUG9pbnRlciB8IGlzU3Vic3RyaW5nSW5Qb2lu
dGVyKTsKICNpZiBDUFUoQUREUkVTUzY0KQogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHVpbnRw
dHJfdCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIiIpOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dHB0cl90IGZsYWdNYXNrID0gMHhmZmZmMDAwMDAwMDAwMDAwVUxMOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludHB0cl90IHN0cmluZ01hc2sgPSB+KGZsYWdNYXNrIHwgaXNSb3BlSW5Qb2ludGVy
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSA9PSAwYjEwMCwg
IiIpOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IGlzOEJpdEluUG9pbnRlciA9IHN0
YXRpY19jYXN0PHVpbnRwdHJfdD4oU3RyaW5nSW1wbDo6ZmxhZ0lzOEJpdCgpKSA8PCA0ODsKLQog
ICAgIGNsYXNzIENvbXBhY3RGaWJlcnMgewogICAgIHB1YmxpYzoKICAgICAgICAgSlNTdHJpbmcq
IGZpYmVyMSgpIGNvbnN0CkBAIC0yODksMTMgKzI5MSwxMyBAQCBjbGFzcyBKU1JvcGVTdHJpbmcg
ZmluYWwgOiBwdWJsaWMgSlNTdHJpbmcgewogCiAgICAgICAgIEpTU3RyaW5nKiBmaWJlcjIoKSBj
b25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTU3RyaW5n
Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihtX2ZpYmVyMkxvd2VyKSB8IChzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KG1fZmliZXIyVXBwZXIpIDw8IDMyKSk7CisgICAgICAgICAgICByZXR1cm4gYml0
d2lzZV9jYXN0PEpTU3RyaW5nKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihtX2ZpYmVyMkxvd2Vy
KSB8IChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KG1fZmliZXIyVXBwZXIpIDw8IDE2KSk7CiAgICAg
ICAgIH0KICAgICAgICAgdm9pZCBpbml0aWFsaXplRmliZXIyKEpTU3RyaW5nKiBmaWJlcikKICAg
ICAgICAgewogICAgICAgICAgICAgdWludHB0cl90IHBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihmaWJlcik7Ci0gICAgICAgICAgICBtX2ZpYmVyMkxvd2VyID0gc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KHBvaW50ZXIpOwotICAgICAgICAgICAgbV9maWJlcjJVcHBlciA9IHN0YXRpY19j
YXN0PHVpbnQxNl90Pihwb2ludGVyID4+IDMyKTsKKyAgICAgICAgICAgIG1fZmliZXIyTG93ZXIg
PSBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9pbnRlcik7CisgICAgICAgICAgICBtX2ZpYmVyMlVw
cGVyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBvaW50ZXIgPj4gMTYpOwogICAgICAgICB9CiAK
ICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KQEAg
LTMwNSwyMiArMzA3LDE4IEBAIGNsYXNzIEpTUm9wZVN0cmluZyBmaW5hbCA6IHB1YmxpYyBKU1N0
cmluZyB7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTGVu
Z3RoKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvbXBhY3RGaWJlcnMsIG1fbGVuZ3RoKTsg
fQotICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIxTG93ZXIoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoQ29tcGFjdEZpYmVycywgbV9maWJlcjFMb3dlcik7IH0KLSAgICAg
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpYmVyMVVwcGVyKCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKENvbXBhY3RGaWJlcnMsIG1fZmliZXIxVXBwZXIpOyB9Ci0gICAgICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGaWJlcjJMb3dlcigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihDb21wYWN0RmliZXJzLCBtX2ZpYmVyMkxvd2VyKTsgfQotICAgICAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mRmliZXIyVXBwZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29tcGFj
dEZpYmVycywgbV9maWJlcjJVcHBlcik7IH0KKyAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZkZpYmVyMSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb21wYWN0RmliZXJzLCBtX2xl
bmd0aCk7IH0KKyAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpYmVyMigpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihDb21wYWN0RmliZXJzLCBtX2ZpYmVyMVVwcGVyKTsgfQogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdWludDMyX3QgbV9sZW5ndGggeyAwIH07CiAgICAgICAgIHVp
bnQzMl90IG1fZmliZXIxTG93ZXIgeyAwIH07CiAgICAgICAgIHVpbnQxNl90IG1fZmliZXIxVXBw
ZXIgeyAwIH07Ci0gICAgICAgIHVpbnQxNl90IG1fZmliZXIyVXBwZXIgeyAwIH07Ci0gICAgICAg
IHVpbnQzMl90IG1fZmliZXIyTG93ZXIgeyAwIH07CisgICAgICAgIHVpbnQxNl90IG1fZmliZXIy
TG93ZXIgeyAwIH07CisgICAgICAgIHVpbnQzMl90IG1fZmliZXIyVXBwZXIgeyAwIH07CiAgICAg
fTsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDb21wYWN0RmliZXJzKSA9PSBzaXplb2Yodm9p
ZCopICogMiwgIiIpOwogI2Vsc2UKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBzdHJp
bmdNYXNrID0gfihpc1JvcGVJblBvaW50ZXIpOwotCiAgICAgY2xhc3MgQ29tcGFjdEZpYmVycyB7
CiAgICAgcHVibGljOgogICAgICAgICBKU1N0cmluZyogZmliZXIxKCkgY29uc3QKQEAgLTM0Nywy
NCArMzQ1LDEyIEBAIGNsYXNzIEpTUm9wZVN0cmluZyBmaW5hbCA6IHB1YmxpYyBKU1N0cmluZyB7
CiAgICAgICAgICAgICBtX2xlbmd0aCA9IGxlbmd0aDsKICAgICAgICAgfQogCi0gICAgICAgIHZv
aWQgaW5pdGlhbGl6ZUlzOEJpdChib29sIGZsYWcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChmbGFnKQotICAgICAgICAgICAgICAgIG1fZmxhZ3MgfD0gc3RhdGljX2Nhc3Q8dWludHB0cl90
PihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIG1fZmxhZ3MgJj0gfnN0YXRpY19jYXN0PHVpbnRwdHJfdD4oU3RyaW5nSW1wbDo6Zmxh
Z0lzOEJpdCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaXM4Qml0KCkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIG1fZmxhZ3MgJiBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KFN0
cmluZ0ltcGw6OmZsYWdJczhCaXQoKSk7Ci0gICAgICAgIH0KLQogICAgICAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mTGVuZ3RoKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvbXBhY3RG
aWJlcnMsIG1fbGVuZ3RoKTsgfQorICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmli
ZXIxKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvbXBhY3RGaWJlcnMsIG1fZmliZXIxKTsg
fQorICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIyKCkgeyByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKENvbXBhY3RGaWJlcnMsIG1fZmliZXIyKTsgfQogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdWludDMyX3QgbV9sZW5ndGggeyAwIH07Ci0gICAgICAgIHVpbnQzMl90IG1fZmxh
Z3MgeyAwIH07CiAgICAgICAgIEpTU3RyaW5nKiBtX2ZpYmVyMSB7IG51bGxwdHIgfTsKICAgICAg
ICAgSlNTdHJpbmcqIG1fZmliZXIyIHsgbnVsbHB0ciB9OwogICAgIH07CkBAIC00NTYsMTQgKzQ0
MiwxOCBAQCBjbGFzcyBKU1JvcGVTdHJpbmcgZmluYWwgOiBwdWJsaWMgSlNTdHJpbmcgewogCiAg
ICAgdm9pZCBpbml0aWFsaXplSXM4Qml0KGJvb2wgZmxhZykgY29uc3QKICAgICB7Ci0jaWYgQ1BV
KEFERFJFU1M2NCkKICAgICAgICAgaWYgKGZsYWcpCiAgICAgICAgICAgICBtX2ZpYmVyIHw9IGlz
OEJpdEluUG9pbnRlcjsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9maWJlciAmPSB+aXM4
Qml0SW5Qb2ludGVyOwotI2Vsc2UKLSAgICAgICAgbV9jb21wYWN0RmliZXJzLmluaXRpYWxpemVJ
czhCaXQoZmxhZyk7Ci0jZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIGluaXRpYWxpemVJc1N1YnN0
cmluZyhib29sIGZsYWcpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoZmxhZykKKyAgICAgICAg
ICAgIG1fZmliZXIgfD0gaXNTdWJzdHJpbmdJblBvaW50ZXI7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG1fZmliZXIgJj0gfmlzU3Vic3RyaW5nSW5Qb2ludGVyOwogICAgIH0KIAogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBpbml0aWFsaXplTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCkKQEAgLTU0
OSwyMyArNTM5LDEwIEBAIGNsYXNzIEpTUm9wZVN0cmluZyBmaW5hbCA6IHB1YmxpYyBKU1N0cmlu
ZyB7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTGVuZ3RoKCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTUm9wZVN0cmluZywgbV9jb21wYWN0RmliZXJzKSArIENv
bXBhY3RGaWJlcnM6Om9mZnNldE9mTGVuZ3RoKCk7IH0gLy8gMzJieXRlIHdpZHRoLgorICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGbGFncygpIHsgcmV0dXJuIG9mZnNldE9mVmFsdWUoKTsg
fQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGaWJlcjAoKSB7IHJldHVybiBvZmZzZXRP
ZlZhbHVlKCk7IH0KLSNpZiBDUFUoQUREUkVTUzY0KQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZGbGFncygpIHsgcmV0dXJuIG9mZnNldE9mVmFsdWUoKSArIHNpemVvZih1aW50MTZfdCkg
KiAzOyB9IC8vIDE2Ynl0ZSB3aWR0aC4KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmli
ZXIxTG93ZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNSb3BlU3RyaW5nLCBtX2NvbXBh
Y3RGaWJlcnMpICsgQ29tcGFjdEZpYmVyczo6b2Zmc2V0T2ZGaWJlcjFMb3dlcigpOyB9IC8vIDMy
Ynl0ZSB3aWR0aC4KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIxVXBwZXIoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNSb3BlU3RyaW5nLCBtX2NvbXBhY3RGaWJlcnMpICsg
Q29tcGFjdEZpYmVyczo6b2Zmc2V0T2ZGaWJlcjFVcHBlcigpOyB9IC8vIDE2Ynl0ZSB3aWR0aC4K
LSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIyTG93ZXIoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoSlNSb3BlU3RyaW5nLCBtX2NvbXBhY3RGaWJlcnMpICsgQ29tcGFjdEZpYmVy
czo6b2Zmc2V0T2ZGaWJlcjJMb3dlcigpOyB9IC8vIDMyYnl0ZSB3aWR0aC4KLSAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mRmliZXIyVXBwZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
SlNSb3BlU3RyaW5nLCBtX2NvbXBhY3RGaWJlcnMpICsgQ29tcGFjdEZpYmVyczo6b2Zmc2V0T2ZG
aWJlcjJVcHBlcigpOyB9IC8vIDE2Ynl0ZSB3aWR0aC4KLSNlbGlmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgLy8gRklYTUU6IFRoaXMgaXMgYW4gdGVtcG9yYXJ5IHdvcmthcm91bmQgdG8gbWFrZSBKU0Mg
YnVpbHQgb24gQVJNNjRfMzIuIE9uY2Ugd2Ugc3RhcnQgY2FsY3VsYXRpbmcgYml0cyBiZWZvcmUg
c3RvcmluZyB0aGVtIHRvIEpTUm9wZVN0cmluZywKLSAgICAvLyB3ZSBkbyBub3QgbmVlZCB0byBo
YXZlIHN1Y2ggYSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhcyBhbiBvZmZzZXQuIEFmdGVyIHRoYXQs
IHdoYXQgd2Ugb25seSBuZWVkIGlzIG9mZnNldE9mRmliZXIwLCBvZmZzZXRPZkZpYmVyMSwgYW5k
IG9mZnNldE9mRmliZXIyLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTUyMzQKLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmxhZ3MoKSB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZGaWJlcjFMb3dlcigpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9Ci0g
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpYmVyMVVwcGVyKCkgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIy
TG93ZXIoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQotICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZGaWJlcjJVcHBlcigpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJl
dHVybiAwOyB9Ci0jZW5kaWYKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIxKCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTUm9wZVN0cmluZywgbV9jb21wYWN0RmliZXJzKSAr
IENvbXBhY3RGaWJlcnM6Om9mZnNldE9mRmliZXIxKCk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90
IG9mZnNldE9mRmliZXIyKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTUm9wZVN0cmluZywg
bV9jb21wYWN0RmliZXJzKSArIENvbXBhY3RGaWJlcnM6Om9mZnNldE9mRmliZXIyKCk7IH0KIAog
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc19tYXhJbnRlcm5hbFJvcGVMZW5ndGggPSAz
OwogCkBAIC01NzUsNiArNTUyLDcgQEAgY2xhc3MgSlNSb3BlU3RyaW5nIGZpbmFsIDogcHVibGlj
IEpTU3RyaW5nIHsKICAgICAgICAgSlNSb3BlU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU1JvcGVTdHJpbmc+KHZtLmhlYXApKSBKU1JvcGVTdHJpbmcodm0s
IHMxLCBzMik7CiAgICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAg
ICBBU1NFUlQobmV3U3RyaW5nLT5sZW5ndGgoKSk7CisgICAgICAgIEFTU0VSVChuZXdTdHJpbmct
PmlzUm9wZSgpKTsKICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICB9CiAgICAgc3RhdGlj
IEpTUm9wZVN0cmluZyogY3JlYXRlKFZNJiB2bSwgSlNTdHJpbmcqIHMxLCBKU1N0cmluZyogczIs
IEpTU3RyaW5nKiBzMykKQEAgLTU4Miw2ICs1NjAsNyBAQCBjbGFzcyBKU1JvcGVTdHJpbmcgZmlu
YWwgOiBwdWJsaWMgSlNTdHJpbmcgewogICAgICAgICBKU1JvcGVTdHJpbmcqIG5ld1N0cmluZyA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUm9wZVN0cmluZz4odm0uaGVhcCkpIEpTUm9w
ZVN0cmluZyh2bSwgczEsIHMyLCBzMyk7CiAgICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5sZW5ndGgoKSk7CisgICAgICAgIEFT
U0VSVChuZXdTdHJpbmctPmlzUm9wZSgpKTsKICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAg
ICB9CiAKQEAgLTU5MCw2ICs1NjksNyBAQCBjbGFzcyBKU1JvcGVTdHJpbmcgZmluYWwgOiBwdWJs
aWMgSlNTdHJpbmcgewogICAgICAgICBKU1JvcGVTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTUm9wZVN0cmluZz4odm0uaGVhcCkpIEpTUm9wZVN0cmluZyh2
bSwgYmFzZSwgb2Zmc2V0LCBsZW5ndGgpOwogICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0
aW9uU3Vic3RyaW5nKHZtLCBleGVjKTsKICAgICAgICAgQVNTRVJUKG5ld1N0cmluZy0+bGVuZ3Ro
KCkpOworICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5pc1JvcGUoKSk7CiAgICAgICAgIHJldHVy
biBuZXdTdHJpbmc7CiAgICAgfQogCkBAIC01OTgsNiArNTc4LDcgQEAgY2xhc3MgSlNSb3BlU3Ry
aW5nIGZpbmFsIDogcHVibGljIEpTU3RyaW5nIHsKICAgICAgICAgSlNSb3BlU3RyaW5nKiBuZXdT
dHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1JvcGVTdHJpbmc+KHZtLmhlYXAs
IGRlZmVycmFsQ29udGV4dCkpIEpTUm9wZVN0cmluZyhTdWJzdHJpbmdPZlJlc29sdmVkLCB2bSwg
YmFzZSwgb2Zmc2V0LCBsZW5ndGgpOwogICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9u
U3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSk7CiAgICAgICAgIEFTU0VSVChuZXdTdHJpbmctPmxlbmd0
aCgpKTsKKyAgICAgICAgQVNTRVJUKG5ld1N0cmluZy0+aXNSb3BlKCkpOwogICAgICAgICByZXR1
cm4gbmV3U3RyaW5nOwogICAgIH0KIApAQCAtNjg1LDI2ICs2NjYsNiBAQCBjbGFzcyBKU1JvcGVT
dHJpbmcgZmluYWwgOiBwdWJsaWMgSlNTdHJpbmcgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGZpYmVyMigpKSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3Qgbm90U3Vic3RyaW5nU2VudGluZWwoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50cHRyX3Qgc3Vic3RyaW5nU2VudGluZWwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIDI7Ci0g
ICAgfQotCi0gICAgYm9vbCBpc1N1YnN0cmluZygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gKG1fZmliZXIgJiBzdHJpbmdNYXNrKSA9PSBzdWJzdHJpbmdTZW50aW5lbCgpOwotICAgIH0K
LQotICAgIHZvaWQgaW5pdGlhbGl6ZUlzU3Vic3RyaW5nKGJvb2wgaXNTdWJzdHJpbmcpCi0gICAg
ewotICAgICAgICBtX2ZpYmVyIHw9IChpc1N1YnN0cmluZyA/IHN1YnN0cmluZ1NlbnRpbmVsKCkg
OiBub3RTdWJzdHJpbmdTZW50aW5lbCgpKTsKLSAgICB9Ci0KICAgICBzdGF0aWNfYXNzZXJ0KHNf
bWF4SW50ZXJuYWxSb3BlTGVuZ3RoID49IDIsICIiKTsKICAgICBtdXRhYmxlIENvbXBhY3RGaWJl
cnMgbV9jb21wYWN0RmliZXJzOwogCkBAIC03MjYsMTQgKzY4Nyw5IEBAIEFMV0FZU19JTkxJTkUg
Ym9vbCBKU1N0cmluZzo6aXM4Qml0KCkgY29uc3QKIHsKICAgICB1aW50cHRyX3QgcG9pbnRlciA9
IG1fZmliZXI7CiAgICAgaWYgKHBvaW50ZXIgJiBpc1JvcGVJblBvaW50ZXIpIHsKLSNpZiBDUFUo
QUREUkVTUzY0KQogICAgICAgICAvLyBEbyBub3QgbG9hZCBtX2ZpYmVyIHR3aWNlLiBXZSBzaG91
bGQgdXNlIHRoZSBpbmZvcm1hdGlvbiBpbiBwb2ludGVyLgogICAgICAgICAvLyBPdGhlcndpc2Us
IEpTUm9wZVN0cmluZyBtYXkgYmUgY29udmVydGVkIHRvIEpTU3RyaW5nIGJldHdlZW4gdGhlIGZp
cnN0IGFuZCBzZWNvbmQgYWNjZXNzZXMuCiAgICAgICAgIHJldHVybiBwb2ludGVyICYgSlNSb3Bl
U3RyaW5nOjppczhCaXRJblBvaW50ZXI7Ci0jZWxzZQotICAgICAgICAvLyBJdCBpcyBPSyB0byBs
b2FkIGZsYWcgc2luY2UgZXZlbiBpZiBKU1JvcGVTdHJpbmcgaXMgY29udmVydGVkIHRvIEpTU3Ry
aW5nLCB0aGlzIGZsYWcgc3RpbGwgZXhpc3RzLgotICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0
IEpTUm9wZVN0cmluZyo+KHRoaXMpLT5tX2NvbXBhY3RGaWJlcnMuaXM4Qml0KCk7Ci0jZW5kaWYK
ICAgICB9CiAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxTdHJpbmdJbXBsKj4ocG9pbnRlciktPmlz
OEJpdCgpOwogfQpAQCAtMTA0Niw3ICsxMDAyLDcgQEAgQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3
V2l0aFVuZGVybHlpbmdTdHJpbmcgSlNTdHJpbmc6OnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZygK
IAogaW5saW5lIGJvb2wgSlNTdHJpbmc6OmlzU3Vic3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gaXNSb3BlKCkgJiYgc3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4odGhpcyktPmlz
U3Vic3RyaW5nKCk7CisgICAgcmV0dXJuIG1fZmliZXIgJiBKU1JvcGVTdHJpbmc6OmlzU3Vic3Ry
aW5nSW5Qb2ludGVyOwogfQogCiAvLyAtLS0gSlNWYWx1ZSBpbmxpbmVzIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363416</attachid>
            <date>2019-03-02 00:32:54 -0800</date>
            <delta_ts>2019-03-02 00:36:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195234-20190302003254.patch</filename>
            <type>text/plain</type>
            <size>33441</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OTlhZjkyMzg2ODA5Y2UzMTgzNWNjYzY1ZDY2MDRkY2MwMGE2YTJmLi5hMTUzNDE3MzJjZTEzNzMx
MWY1YThmMjNkZGVkZGEyZWJlOTU0ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxOS0wMy0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIGJpdHMgZm9yIEpTUm9wZVN0cmluZyBpbiAzIHN0b3Jl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MjM0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBjbGVhbnMgdXAgdGhlIGluaXRpYWxpemF0aW9uIG9mIEpTUm9wZVN0cmluZyBmaWVsZHMg
aW4gREZHIGFuZCBGVEwuCisgICAgICAgIFByZXZpb3VzbHksIHdlIHN0b3JlIHNvbWUgcGFydCBv
ZiBkYXRhIHNlcGFyYXRlbHkuIEluc3RlYWQsIHRoaXMgcGF0Y2ggY2FsY3VsYXRlcworICAgICAg
ICB0aGUgZGF0YSBmaXJzdCBieSBiaXQgb3BlcmF0aW9ucyBhbmQgc3RvcmUgY2FsY3VsYXRlZCBk
YXRhIHdpdGggZmV3ZXIgc3RvcmVzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBjbGVhbnMg
dXAgaXM4Qml0IGFuZCBpc1N1YnN0cmluZyBmbGFncy4gV2UgcHV0IHRoZW0gaW4gbG93ZXIgYml0
cworICAgICAgICBvZiB0aGUgZmlyc3QgZmliZXIgaW5zdGVhZCBvZiB0aGUgdXBwZXIgMTYgYml0
cy4gU2luY2Ugd2Ugb25seSBoYXZlIDMgYml0IGZsYWdzLCAoaXNSb3BlLCBpczhCaXQsIGlzU3Vi
c3RyaW5nKSwKKyAgICAgICAgd2UgY2FuIHB1dCB0aGVtIGludG8gdGhlIGxvd2VyIDMgYml0cywg
dGhleSBhcmUgYWx3YXlzIGVtcHR5IGR1ZSB0byBhbGlnbm1lbnQuCisKKyAgICAgICAgKiBieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKTogQSBiaXQgY2xlYW4gdXAgb2YgU3RyaW5nTGVuZ3RoIElDIHRvIGdpdmUgYSBjaGFuY2Ug
b2YgdW5uZWNlc3NhcnkgbW92IHJlbW92YWwuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FuQmVSb3BlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEFycmF5TGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1ha2VSb3BlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBmdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFw
UmVwb3NpdG9yeTo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeSk6CisgICAgICAgICogZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU1ha2VSb3Bl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNSb3BlU3RyaW5nKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RSb3BlU3RyaW5nKToK
KyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAg
KEpTQzo6SlNTdHJpbmc6OmlzOEJpdCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpp
c1N1YnN0cmluZyBjb25zdCk6CisKIDIwMTktMDMtMDEgIENocmlzdG9waGVyIFJlaWQgIDxjaHJp
cy5yZWlkQHNvbnkuY29tPgogCiAgICAgICAgIFtQbGF5U3RhdGlvbl0gVXBzdHJlYW0gcGxheXN0
YXRpb24ncyByZW1vdGUgaW5zcGVjdG9yIHNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGVmYzkzOWI1NWQyMzNkYWZhZjZkNjIyNDFm
MjJhZDA0OTk3YzgxNWYuLjE4NzcyMzFkNzNhYmZjNWM3ZTZkNDhmYjgyZGQ2OTJhYzdkOWUzYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAg
LTEyMTUsMTQgKzEyMTUsMTQgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNz
R2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICBjYXNlIFN0cmluZ0xlbmd0aDogewogICAgICAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNTdHJpbmc6Om9m
ZnNldE9mVmFsdWUoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBhdXRvIGlzUm9wZSA9IGppdC5i
cmFuY2hJZlJvcGVTdHJpbmdJbXBsKHNjcmF0Y2hHUFIpOwotICAgICAgICBqaXQubG9hZDMyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlP
ZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6
QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSksIHZh
bHVlUmVncy5wYXlsb2FkR1BSKCkpOwogICAgICAgICBhdXRvIGRvbmUgPSBqaXQuanVtcCgpOwog
CiAgICAgICAgIGlzUm9wZS5saW5rKCZqaXQpOwotICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mTGVuZ3RoKCkpLCBz
Y3JhdGNoR1BSKTsKKyAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVSZWdzLnBheWxvYWRH
UFIoKSk7CiAKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwotICAgICAgICBqaXQuYm94SW50MzIo
c2NyYXRjaEdQUiwgdmFsdWVSZWdzKTsKKyAgICAgICAgaml0LmJveEludDMyKHZhbHVlUmVncy5w
YXlsb2FkR1BSKCksIHZhbHVlUmVncyk7CiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKaW5kZXggM2JiZTRiNTg3N2RhYjZjMDY5ZWQ2YjgwYTQ4MDlkZTVhNTdk
ZTk0Yy4uMTJjMDUwNjU3OTBhMGJjYzI3ODc5YzU4NWMxN2IzODNmMGIyNjk3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTY4OTcs
NiArNjg5NywxNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0R2xvYmFsVGhpcyhO
b2RlKiBub2RlKQogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAorYm9vbCBT
cGVjdWxhdGl2ZUpJVDo6Y2FuQmVSb3BlKEVkZ2UmIGVkZ2UpCit7CisgICAgaWYgKG1fc3RhdGUu
Zm9yTm9kZShlZGdlKS5pc1R5cGUoU3BlY1N0cmluZ0lkZW50KSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIC8vIElmIHRoaXMgdmFsdWUgaXMgTGF6eVZhbHVlLCBpdCB3aWxsIGJlIGNvbnZl
cnRlZCB0byBKU1N0cmluZywgYW5kIHRoZSByZXN1bHQgbXVzdCBiZSBub24tcm9wZSBzdHJpbmcu
CisgICAgU3RyaW5nIHN0cmluZyA9IGVkZ2UtPnRyeUdldFN0cmluZygpOworICAgIGlmICghc3Ry
aW5nLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKiBub2Rl
KQogewogICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CkBAIC02OTM0LDE1
ICs2OTQ1LDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aChO
b2RlKiBub2RlKQogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAg
ICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CiAKKyAgICAgICAgYm9vbCBuZWVkc1Jv
cGVDYXNlID0gY2FuQmVSb3BlKG5vZGUtPmNoaWxkMSgpKTsKKwogICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTU3RyaW5nOjpvZmZzZXRPZlZh
bHVlKCkpLCB0ZW1wR1BSKTsKLSAgICAgICAgYXV0byBpc1JvcGUgPSBtX2ppdC5icmFuY2hJZlJv
cGVTdHJpbmdJbXBsKHRlbXBHUFIpOworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaXNSb3Bl
OworICAgICAgICBpZiAobmVlZHNSb3BlQ2FzZSkKKyAgICAgICAgICAgIGlzUm9wZSA9IG1faml0
LmJyYW5jaElmUm9wZVN0cmluZ0ltcGwodGVtcEdQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlP
ZmZzZXQoKSksIHJlc3VsdEdQUik7Ci0gICAgICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1bXAoKTsK
KyAgICAgICAgaWYgKG5lZWRzUm9wZUNhc2UpIHsKKyAgICAgICAgICAgIGF1dG8gZG9uZSA9IG1f
aml0Lmp1bXAoKTsKIAotICAgICAgICBpc1JvcGUubGluaygmbV9qaXQpOwotICAgICAgICBtX2pp
dC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTUm9wZVN0cmluZzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBpc1JvcGUubGluaygmbV9q
aXQpOworICAgICAgICAgICAgbV9qaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNl
R1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOwogCi0gICAg
ICAgIGRvbmUubGluaygmbV9qaXQpOworICAgICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7Cisg
ICAgICAgIH0KICAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtMTM0MjUsNDMgKzEzNDQyLDI4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVNYWtlUm9wZShOb2RlKiBub2RlKQogICAgIEFsbG9jYXRvciBhbGxvY2F0b3JW
YWx1ZSA9IGFsbG9jYXRvckZvck5vblZpcnR1YWxDb25jdXJyZW50bHk8SlNSb3BlU3RyaW5nPigq
bV9qaXQudm0oKSwgc2l6ZW9mKEpTUm9wZVN0cmluZyksIEFsbG9jYXRvckZvck1vZGU6OkFsbG9j
YXRvcklmRXhpc3RzKTsKICAgICBlbWl0QWxsb2NhdGVKU0NlbGwocmVzdWx0R1BSLCBKSVRBbGxv
Y2F0b3I6OmNvbnN0YW50KGFsbG9jYXRvclZhbHVlKSwgYWxsb2NhdG9yR1BSLCBUcnVzdGVkSW1t
UHRyKG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUobV9qaXQudm0oKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSksIHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKIAotICAgIG1faml0Lm9yUHRy
KFRydXN0ZWRJbW0zMihKU1N0cmluZzo6aXNSb3BlSW5Qb2ludGVyKSwgb3BHUFJzWzBdLCBhbGxv
Y2F0b3JHUFIpOwotICAgIG1faml0LnN0b3JlUHRyKGFsbG9jYXRvckdQUiwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZpYmVyMCgpKSk7Ci0K
LSAgICBtX2ppdC5tb3ZlKG9wR1BSc1sxXSwgc2NyYXRjaEdQUik7Ci0gICAgbV9qaXQuc3RvcmUz
MihzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1JvcGVTdHJp
bmc6Om9mZnNldE9mRmliZXIxTG93ZXIoKSkpOwotICAgIG1faml0LnJzaGlmdFB0cihUcnVzdGVk
SW1tMzIoMzIpLCBzY3JhdGNoR1BSKTsKLSAgICBtX2ppdC5zdG9yZTE2KHNjcmF0Y2hHUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJl
cjFVcHBlcigpKSk7Ci0KLSAgICBpZiAobnVtT3BHUFJzID09IDMpIHsKLSAgICAgICAgbV9qaXQu
bW92ZShvcEdQUnNbMl0sIHNjcmF0Y2hHUFIpOwotICAgICAgICBtX2ppdC5zdG9yZTMyKHNjcmF0
Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zm
c2V0T2ZGaWJlcjJMb3dlcigpKSk7Ci0gICAgICAgIG1faml0LnJzaGlmdFB0cihUcnVzdGVkSW1t
MzIoMzIpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgbV9qaXQuc3RvcmUxNihzY3JhdGNoR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmli
ZXIyVXBwZXIoKSkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LnN0b3JlWmVybzMyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJl
cjJMb3dlcigpKSk7Ci0gICAgICAgIG1faml0LnN0b3JlWmVybzE2KENDYWxsSGVscGVyczo6QWRk
cmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjJVcHBlcigpKSk7Ci0g
ICAgfQorICAgIC8vIFRoaXMgcHV0cyBudWxscHRyIGZvciB0aGUgZmlyc3QgZmliZXIuIEl0IG1h
a2VzIHZpc2l0Q2hpbGRyZW4gc2FmZSBldmVuIGlmIHRoaXMgSlNSb3BlU3RyaW5nIGlzIGRpc2Nh
cmRlZCBkdWUgdG8gdGhlIHNwZWN1bGF0aW9uIGZhaWx1cmUgaW4gdGhlIGZvbGxvd2luZyBwYXRo
LgorICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoSlNTdHJpbmc6OmlzUm9wZUluUG9p
bnRlciksIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zm
c2V0T2ZGaWJlcjAoKSkpOwogCiAgICAgewogICAgICAgICBpZiAoSlNTdHJpbmcqIHN0cmluZyA9
IGVkZ2VzWzBdLT5keW5hbWljQ2FzdENvbnN0YW50PEpTU3RyaW5nKj4oKm1faml0LnZtKCkpKSB7
CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihzdHJpbmctPmlzOEJpdCgpID8g
U3RyaW5nSW1wbDo6ZmxhZ0lzOEJpdCgpIDogMCksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tMzIoc3RyaW5nLT5sZW5ndGgoKSksIGFsbG9jYXRvckdQUik7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBib29sIGNhbkJlUm9wZSA9ICFtX3N0YXRl
LmZvck5vZGUoZWRnZXNbMF0pLmlzVHlwZShTcGVjU3RyaW5nSWRlbnQpOworICAgICAgICAgICAg
Ym9vbCBuZWVkc1JvcGVDYXNlID0gY2FuQmVSb3BlKGVkZ2VzWzBdKTsKICAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG9wR1BSc1swXSwgSlNTdHJpbmc6Om9m
ZnNldE9mVmFsdWUoKSksIHNjcmF0Y2gyR1BSKTsKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
SnVtcCBpc1JvcGU7Ci0gICAgICAgICAgICBpZiAoY2FuQmVSb3BlKQorICAgICAgICAgICAgaWYg
KG5lZWRzUm9wZUNhc2UpCiAgICAgICAgICAgICAgICAgaXNSb3BlID0gbV9qaXQuYnJhbmNoSWZS
b3BlU3RyaW5nSW1wbChzY3JhdGNoMkdQUik7CiAKICAgICAgICAgICAgIG1faml0LmxvYWQzMihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaDJHUFIsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0
KCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc2NyYXRjaDJHUFIsIFN0cmluZ0ltcGw6Omxlbmd0aE1lbW9yeU9mZnNldCgpKSwg
YWxsb2NhdG9yR1BSKTsKIAotICAgICAgICAgICAgaWYgKGNhbkJlUm9wZSkgeworICAgICAgICAg
ICAgaWYgKG5lZWRzUm9wZUNhc2UpIHsKICAgICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBtX2pp
dC5qdW1wKCk7CiAKICAgICAgICAgICAgICAgICBpc1JvcGUubGluaygmbV9qaXQpOwotICAgICAg
ICAgICAgICAgIG1faml0LmxvYWQxNihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mob3BHUFJzWzBdLCBK
U1JvcGVTdHJpbmc6Om9mZnNldE9mRmxhZ3MoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAg
ICAgIG1faml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mob3BHUFJzWzBdLCBKU1JvcGVT
dHJpbmc6Om9mZnNldE9mRmxhZ3MoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgIG1f
aml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mob3BHUFJzWzBdLCBKU1JvcGVTdHJpbmc6
Om9mZnNldE9mTGVuZ3RoKCkpLCBhbGxvY2F0b3JHUFIpOwogICAgICAgICAgICAgICAgIGRvbmUu
bGluaygmbV9qaXQpOwogICAgICAgICAgICAgfQpAQCAtMTM0ODQsMjMgKzEzNDg2LDIzIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYWtlUm9wZShOb2RlKiBub2RlKQogICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok92ZXJmbG93LAogICAgICAgICAgICAgICAgICAgICBU
cnVzdGVkSW1tMzIoc3RyaW5nLT5sZW5ndGgoKSksIGFsbG9jYXRvckdQUikpOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgYm9vbCBjYW5CZVJvcGUgPSAhbV9zdGF0ZS5mb3JOb2RlKGVk
Z2VzW2ldKS5pc1R5cGUoU3BlY1N0cmluZ0lkZW50KTsKKyAgICAgICAgICAgIGJvb2wgbmVlZHNS
b3BlQ2FzZSA9IGNhbkJlUm9wZShlZGdlc1tpXSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRy
KENDYWxsSGVscGVyczo6QWRkcmVzcyhvcEdQUnNbaV0sIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVl
KCkpLCBzY3JhdGNoMkdQUik7CiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaXNSb3Bl
OwotICAgICAgICAgICAgaWYgKGNhbkJlUm9wZSkKKyAgICAgICAgICAgIGlmIChuZWVkc1JvcGVD
YXNlKQogICAgICAgICAgICAgICAgIGlzUm9wZSA9IG1faml0LmJyYW5jaElmUm9wZVN0cmluZ0lt
cGwoc2NyYXRjaDJHUFIpOwogCi0gICAgICAgICAgICBtX2ppdC5hbmQxNihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc2NyYXRjaDJHUFIsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCBzY3JhdGNo
R1BSKTsKKyAgICAgICAgICAgIG1faml0LmFuZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3Jh
dGNoMkdQUiwgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBVbmNvdW50YWJsZSwgSlNW
YWx1ZVNvdXJjZSgpLCBudWxscHRyLAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaEFkZDMy
KAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok92ZXJmbG93LAogICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaDJHUFIsIFN0cmluZ0ltcGw6
Omxlbmd0aE1lbW9yeU9mZnNldCgpKSwgYWxsb2NhdG9yR1BSKSk7Ci0gICAgICAgICAgICBpZiAo
Y2FuQmVSb3BlKSB7CisgICAgICAgICAgICBpZiAobmVlZHNSb3BlQ2FzZSkgewogICAgICAgICAg
ICAgICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1bXAoKTsKIAogICAgICAgICAgICAgICAgIGlzUm9w
ZS5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICAgICAgbV9qaXQuYW5kMTYoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKG9wR1BSc1tpXSwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZsYWdzKCkpLCBzY3Jh
dGNoR1BSKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Mob3BHUFJzW2ldLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmxhZ3MoKSksIHNjcmF0Y2hHUFIp
OwogICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mob3BH
UFJzW2ldLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoMkdQUik7CiAg
ICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICAgICAgVW5j
b3VudGFibGUsIEpTVmFsdWVTb3VyY2UoKSwgbnVsbHB0ciwKQEAgLTEzNTEwLDE0ICsxMzUxMiwz
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBtX2ppdC5zdG9yZTE2KHNjcmF0Y2hH
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0
T2ZGbGFncygpKSk7CisKICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewogICAgICAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXAgb2sgPSBtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6R3JlYXRlclRoYW5PckVxdWFsLCBhbGxvY2F0b3JHUFIsIFRydXN0ZWRJbW0zMigwKSk7
CiAgICAgICAgIG1faml0LmFib3J0V2l0aFJlYXNvbihERkdOZWdhdGl2ZVN0cmluZ0xlbmd0aCk7
CiAgICAgICAgIG9rLmxpbmsoJm1faml0KTsKICAgICB9Ci0gICAgbV9qaXQuc3RvcmUzMihhbGxv
Y2F0b3JHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6
b2Zmc2V0T2ZMZW5ndGgoKSkpOworCisgICAgc3RhdGljX2Fzc2VydChTdHJpbmdJbXBsOjpmbGFn
SXM4Qml0KCkgPT0gSlNSb3BlU3RyaW5nOjppczhCaXRJblBvaW50ZXIsICIiKTsKKyAgICBtX2pp
dC5hbmQzMihUcnVzdGVkSW1tMzIoU3RyaW5nSW1wbDo6ZmxhZ0lzOEJpdCgpKSwgc2NyYXRjaEdQ
Uik7CisgICAgbV9qaXQub3JQdHIob3BHUFJzWzBdLCBzY3JhdGNoR1BSKTsKKyAgICBtX2ppdC5v
clB0cihUcnVzdGVkSW1tUHRyKEpTU3RyaW5nOjppc1JvcGVJblBvaW50ZXIpLCBzY3JhdGNoR1BS
KTsKKyAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
cmVzdWx0R1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXIwKCkpKTsKKworICAgIG1faml0
Lm1vdmUob3BHUFJzWzFdLCBzY3JhdGNoR1BSKTsKKyAgICBtX2ppdC5sc2hpZnRQdHIoVHJ1c3Rl
ZEltbTMyKDMyKSwgc2NyYXRjaEdQUik7CisgICAgbV9qaXQub3JQdHIoYWxsb2NhdG9yR1BSLCBz
Y3JhdGNoR1BSKTsKKyAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MocmVzdWx0R1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXIxKCkpKTsKKwor
ICAgIGlmIChudW1PcEdQUnMgPT0gMikgeworICAgICAgICBtX2ppdC5tb3ZlKG9wR1BSc1sxXSwg
c2NyYXRjaEdQUik7CisgICAgICAgIG1faml0LnJzaGlmdFB0cihUcnVzdGVkSW1tMzIoMzIpLCBz
Y3JhdGNoR1BSKTsKKyAgICAgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZpYmVyMigpKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9qaXQubW92ZShvcEdQUnNbMV0sIHNjcmF0Y2hHUFIp
OworICAgICAgICBtX2ppdC5yc2hpZnRQdHIoVHJ1c3RlZEltbTMyKDMyKSwgc2NyYXRjaEdQUik7
CisgICAgICAgIG1faml0Lm1vdmUob3BHUFJzWzJdLCBzY3JhdGNoMkdQUik7CisgICAgICAgIG1f
aml0LmxzaGlmdFB0cihUcnVzdGVkSW1tMzIoMTYpLCBzY3JhdGNoMkdQUik7CisgICAgICAgIG1f
aml0Lm9yUHRyKHNjcmF0Y2gyR1BSLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgbV9qaXQuc3RvcmVQ
dHIoc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNSb3BlU3Ry
aW5nOjpvZmZzZXRPZkZpYmVyMigpKSk7CisgICAgfQorCiAgICAgYXV0byBpc05vbkVtcHR5U3Ry
aW5nID0gbV9qaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgYWxsb2NhdG9y
R1BSKTsKIAogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQu
Z3JhcGgoKSwganNFbXB0eVN0cmluZygmbV9qaXQuZ3JhcGgoKS5tX3ZtKSksIHJlc3VsdEdQUik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXgg
ZjJiNDMwM2RlNjM0MWQzNTQ3ODg5YWEzZmRmZGNjNWMxMTdhNjA5ZC4uN2UwNzg1NDk1YTk0NjA0
NTdhNWU1NjlmNmQ1M2MwMDU4OTFhM2Q1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtNTc3LDYgKzU3Nyw4IEBAIGNsYXNzIFNwZWN1bGF0
aXZlSklUIHsKICAgICBib29sIGlzS25vd25Ob3ROdW1iZXIoTm9kZSogbm9kZSkgeyByZXR1cm4g
IShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYgU3BlY0Z1bGxOdW1iZXIpOyB9CiAgICAg
Ym9vbCBpc0tub3duTm90Q2VsbChOb2RlKiBub2RlKSB7IHJldHVybiAhKG1fc3RhdGUuZm9yTm9k
ZShub2RlKS5tX3R5cGUgJiBTcGVjQ2VsbCk7IH0KICAgICBib29sIGlzS25vd25Ob3RPdGhlcihO
b2RlKiBub2RlKSB7IHJldHVybiAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiBTcGVj
T3RoZXIpOyB9CisKKyAgICBib29sIGNhbkJlUm9wZShFZGdlJik7CiAgICAgCiAgICAgVW5pcXVl
ZFN0cmluZ0ltcGwqIGlkZW50aWZpZXJVSUQodW5zaWduZWQgaW5kZXgpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5jcHAKaW5kZXggYTA2YWM0ZTUzNTk3NWFjODQ5MzFiZDJjZGEyZTE5ZjIwMGJiZmE0Yy4uOWMz
YzFjN2FjNmZhOGFmMjgyNjNiYWIyYTcyNjlkYjU1MGUzNTZkYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCkBA
IC04Niw2ICs4Niw3IEBAIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkFic3RyYWN0SGVhcFJlcG9z
aXRvcnkoKQogICAgIEpTQ2VsbF90eXBlSW5mb0ZsYWdzLmNoYW5nZVBhcmVudCgmSlNDZWxsX3Vz
ZWZ1bEJ5dGVzKTsKICAgICBKU0NlbGxfY2VsbFN0YXRlLmNoYW5nZVBhcmVudCgmSlNDZWxsX3Vz
ZWZ1bEJ5dGVzKTsKICAgICBKU1JvcGVTdHJpbmdfZmxhZ3MuY2hhbmdlUGFyZW50KCZKU1JvcGVT
dHJpbmdfZmliZXIwKTsKKyAgICBKU1JvcGVTdHJpbmdfbGVuZ3RoLmNoYW5nZVBhcmVudCgmSlNS
b3BlU3RyaW5nX2ZpYmVyMSk7CiAKICAgICBSRUxFQVNFX0FTU0VSVCghSlNDZWxsX2ZyZWVMaXN0
TmV4dC5vZmZzZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IDFiZGNmN2VmMTdlOTY1MGIzNzE2N2Jl
ZDA5NmVlOTAxMjFlMGE2MDYuLjRiZjg4YjU0MTM3MzAxZjg1MzMzYzQ4ZDJjZDdiYjE0YzQ1ZDcw
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oCkBAIC04OSwxMiArODksMTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBGVEwgewogICAgIG1hY3JvKEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcl9lbmRTdHJ1Y3R1
cmVQcm9wZXJ0eUluZGV4LCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmVuZFN0cnVjdHVyZVBy
b3BlcnR5SW5kZXhPZmZzZXQoKSkgXAogICAgIG1hY3JvKEpTUHJvcGVydHlOYW1lRW51bWVyYXRv
cl9pbmRleExlbmd0aCwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjppbmRleGVkTGVuZ3RoT2Zm
c2V0KCkpIFwKICAgICBtYWNybyhKU1JvcGVTdHJpbmdfZmxhZ3MsIEpTUm9wZVN0cmluZzo6b2Zm
c2V0T2ZGbGFncygpKSBcCi0gICAgbWFjcm8oSlNSb3BlU3RyaW5nX2ZpYmVyMCwgSlNSb3BlU3Ry
aW5nOjpvZmZzZXRPZkZpYmVyMCgpKSBcCiAgICAgbWFjcm8oSlNSb3BlU3RyaW5nX2xlbmd0aCwg
SlNSb3BlU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSBcCi0gICAgbWFjcm8oSlNSb3BlU3RyaW5n
X2ZpYmVyMUxvd2VyLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXIxTG93ZXIoKSkgXAotICAg
IG1hY3JvKEpTUm9wZVN0cmluZ19maWJlcjFVcHBlciwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZp
YmVyMVVwcGVyKCkpIFwKLSAgICBtYWNybyhKU1JvcGVTdHJpbmdfZmliZXIyTG93ZXIsIEpTUm9w
ZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjJMb3dlcigpKSBcCi0gICAgbWFjcm8oSlNSb3BlU3RyaW5n
X2ZpYmVyMlVwcGVyLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXIyVXBwZXIoKSkgXAorICAg
IG1hY3JvKEpTUm9wZVN0cmluZ19maWJlcjAsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjAo
KSkgXAorICAgIG1hY3JvKEpTUm9wZVN0cmluZ19maWJlcjEsIEpTUm9wZVN0cmluZzo6b2Zmc2V0
T2ZGaWJlcjEoKSkgXAorICAgIG1hY3JvKEpTUm9wZVN0cmluZ19maWJlcjIsIEpTUm9wZVN0cmlu
Zzo6b2Zmc2V0T2ZGaWJlcjIoKSkgXAogICAgIG1hY3JvKEpTU2NvcGVfbmV4dCwgSlNTY29wZTo6
b2Zmc2V0T2ZOZXh0KCkpIFwKICAgICBtYWNybyhKU1N5bWJvbFRhYmxlT2JqZWN0X3N5bWJvbFRh
YmxlLCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpvZmZzZXRPZlN5bWJvbFRhYmxlKCkpIFwKICAgICBt
YWNybyhKU1dyYXBwZXJPYmplY3RfaW50ZXJuYWxWYWx1ZSwgSlNXcmFwcGVyT2JqZWN0OjppbnRl
cm5hbFZhbHVlT2Zmc2V0KCkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAppbmRleCA5YjM4ZjNhMTcyZGJmNWJjZjM0MDg1NGIyZmYwNzdiZGI2Mzdi
NGZjLi45NTg3ZGY4MDdkMThlMDhjMzQ2OTExY2RjM2MzNDU5YmM5YjkwYjA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC02NTI0LDYgKzY1
MjQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgbnVtS2lkcyA9IDI7CiAg
ICAgICAgIH0KICAgICAgICAgCisgICAgICAgIExCYXNpY0Jsb2NrIGVtcHR5Q2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gbV9vdXQubmV3Qmxv
Y2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2so
KTsKICAgICAgICAgCkBAIC02NTMyLDE4ICs2NTMzLDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGFsbG9jYXRlQ2VsbCgKICAgICAgICAgICAgIG1fb3V0
LmNvbnN0SW50UHRyKGFsbG9jYXRvci5sb2NhbEFsbG9jYXRvcigpKSwgdm0oKS5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCksIHNsb3dQYXRoKTsKICAgICAgICAgCi0gICAgICAgIG1fb3V0LnN0b3JlUHRy
KG1fb3V0LmJpdE9yKGtpZHNbMF0sIG1fb3V0LmNvbnN0SW50UHRyKEpTU3RyaW5nOjppc1JvcGVJ
blBvaW50ZXIpKSwgcmVzdWx0LCBtX2hlYXBzLkpTUm9wZVN0cmluZ19maWJlcjApOwotCi0gICAg
ICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY2FzdFRvSW50MzIoa2lkc1sxXSksIHJlc3VsdCwgbV9o
ZWFwcy5KU1JvcGVTdHJpbmdfZmliZXIxTG93ZXIpOwotICAgICAgICBtX291dC5zdG9yZTMyQXMx
NihtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGtpZHNbMV0sIG1fb3V0LmNvbnN0SW50MzIo
MzIpKSksIHJlc3VsdCwgbV9oZWFwcy5KU1JvcGVTdHJpbmdfZmliZXIxVXBwZXIpOwotCi0gICAg
ICAgIGlmIChudW1LaWRzID09IDMpIHsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQu
Y2FzdFRvSW50MzIoa2lkc1syXSksIHJlc3VsdCwgbV9oZWFwcy5KU1JvcGVTdHJpbmdfZmliZXIy
TG93ZXIpOwotICAgICAgICAgICAgbV9vdXQuc3RvcmUzMkFzMTYobV9vdXQuY2FzdFRvSW50MzIo
bV9vdXQubFNocihraWRzWzJdLCBtX291dC5jb25zdEludDMyKDMyKSkpLCByZXN1bHQsIG1faGVh
cHMuSlNSb3BlU3RyaW5nX2ZpYmVyMlVwcGVyKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuaW50MzJaZXJvLCByZXN1bHQsIG1faGVhcHMuSlNSb3Bl
U3RyaW5nX2ZpYmVyMkxvd2VyKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzJBczE2KG1fb3V0
LmludDMyWmVybywgcmVzdWx0LCBtX2hlYXBzLkpTUm9wZVN0cmluZ19maWJlcjJVcHBlcik7Ci0g
ICAgICAgIH0KKyAgICAgICAgLy8gVGhpcyBwdXRzIG51bGxwdHIgZm9yIHRoZSBmaXJzdCBmaWJl
ci4gSXQgbWFrZXMgdmlzaXRDaGlsZHJlbiBzYWZlIGV2ZW4gaWYgdGhpcyBKU1JvcGVTdHJpbmcg
aXMgZGlzY2FyZGVkIGR1ZSB0byB0aGUgc3BlY3VsYXRpb24gZmFpbHVyZSBpbiB0aGUgZm9sbG93
aW5nIHBhdGguCisgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50UHRyKEpTU3Ry
aW5nOjppc1JvcGVJblBvaW50ZXIpLCByZXN1bHQsIG1faGVhcHMuSlNSb3BlU3RyaW5nX2ZpYmVy
MCk7CiAKICAgICAgICAgYXV0byBnZXRGbGFnc0FuZExlbmd0aCA9IFsmXSAoRWRnZSYgZWRnZSwg
TFZhbHVlIGNoaWxkKSB7CiAgICAgICAgICAgICBpZiAoSlNTdHJpbmcqIHN0cmluZyA9IGVkZ2Ut
PmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNTdHJpbmcqPih2bSgpKSkgewpAQCAtNjU2MCw3ICs2NTUx
LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc1Jv
cGVTdHJpbmcoY2hpbGQsIGVkZ2UpLCB1bnN1cmUocm9wZUNhc2UpLCB1bnN1cmUobm90Um9wZUNh
c2UpKTsKIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRU
byhyb3BlQ2FzZSwgbm90Um9wZUNhc2UpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmxh
Z3NGb3JSb3BlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmxvYWQxNlplcm9FeHQzMihjaGlsZCwgbV9o
ZWFwcy5KU1JvcGVTdHJpbmdfZmxhZ3MpKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZs
YWdzRm9yUm9wZSA9IG1fb3V0LmFuY2hvcihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShjaGlsZCwg
bV9oZWFwcy5KU1JvcGVTdHJpbmdfZmxhZ3MpKTsKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IGxlbmd0aEZvclJvcGUgPSBtX291dC5hbmNob3IobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoY2hp
bGQsIG1faGVhcHMuSlNSb3BlU3RyaW5nX2xlbmd0aCkpOwogICAgICAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOwogCkBAIC02NTkxLDE0ICs2NTgyLDI5IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgICAgICB9OwogICAgICAgICAgICAgZmxhZ3NBbmRMZW5ndGggPSBtZXJn
ZUZsYWdzQW5kTGVuZ3RoKGVkZ2VzW2ldLCBraWRzW2ldLCBmbGFnc0FuZExlbmd0aCk7CiAgICAg
ICAgIH0KLSAgICAgICAgbV9vdXQuc3RvcmUzMkFzMTYoZmxhZ3NBbmRMZW5ndGguZmxhZ3MsIHJl
c3VsdCwgbV9oZWFwcy5KU1JvcGVTdHJpbmdfZmxhZ3MpOwotICAgICAgICBtX291dC5zdG9yZTMy
KGZsYWdzQW5kTGVuZ3RoLmxlbmd0aCwgcmVzdWx0LCBtX2hlYXBzLkpTUm9wZVN0cmluZ19sZW5n
dGgpOworCisgICAgICAgIG1fb3V0LnN0b3JlUHRyKAorICAgICAgICAgICAgbV9vdXQuYml0T3Io
CisgICAgICAgICAgICAgICAgbV9vdXQuYml0T3Ioa2lkc1swXSwgbV9vdXQuY29uc3RJbnRQdHIo
SlNTdHJpbmc6OmlzUm9wZUluUG9pbnRlcikpLAorICAgICAgICAgICAgICAgIG1fb3V0LmJpdEFu
ZChtX291dC5jb25zdEludFB0cihKU1JvcGVTdHJpbmc6OmlzOEJpdEluUG9pbnRlciksIG1fb3V0
Lnplcm9FeHRQdHIoZmxhZ3NBbmRMZW5ndGguZmxhZ3MpKSksCisgICAgICAgICAgICByZXN1bHQs
IG1faGVhcHMuSlNSb3BlU3RyaW5nX2ZpYmVyMCk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKAor
ICAgICAgICAgICAgbV9vdXQuYml0T3IobV9vdXQuemVyb0V4dFB0cihmbGFnc0FuZExlbmd0aC5s
ZW5ndGgpLCBtX291dC5zaGwoa2lkc1sxXSwgbV9vdXQuY29uc3RJbnQzMigzMikpKSwKKyAgICAg
ICAgICAgIHJlc3VsdCwgbV9oZWFwcy5KU1JvcGVTdHJpbmdfZmliZXIxKTsKKyAgICAgICAgaWYg
KG51bUtpZHMgPT0gMikKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmxTaHIoa2lk
c1sxXSwgbV9vdXQuY29uc3RJbnQzMigzMikpLCByZXN1bHQsIG1faGVhcHMuSlNSb3BlU3RyaW5n
X2ZpYmVyMik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0
LmJpdE9yKG1fb3V0LmxTaHIoa2lkc1sxXSwgbV9vdXQuY29uc3RJbnQzMigzMikpLCBtX291dC5z
aGwoa2lkc1syXSwgbV9vdXQuY29uc3RJbnQzMigxNikpKSwgcmVzdWx0LCBtX2hlYXBzLkpTUm9w
ZVN0cmluZ19maWJlcjIpOwogICAgICAgICAKICAgICAgICAgbXV0YXRvckZlbmNlKCk7Ci0gICAg
ICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuc2VsZWN0
KG1fb3V0LmlzWmVybzMyKGZsYWdzQW5kTGVuZ3RoLmxlbmd0aCksIHdlYWtQb2ludGVyKGpzRW1w
dHlTdHJpbmcoJm1fZ3JhcGgubV92bSkpLCByZXN1bHQpKTsKKyAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihyZXN1bHQpOworICAgICAgICBtX291dC5icmFu
Y2gobV9vdXQuaXNaZXJvMzIoZmxhZ3NBbmRMZW5ndGgubGVuZ3RoKSwgcmFyZWx5KGVtcHR5Q2Fz
ZSksIHVzdWFsbHkoY29udGludWF0aW9uKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5l
eHQgPSBtX291dC5hcHBlbmRUbyhlbXB0eUNhc2UsIHNsb3dQYXRoKTsKKyAgICAgICAgVmFsdWVG
cm9tQmxvY2sgZW1wdHlSZXN1bHQgPSBtX291dC5hbmNob3Iod2Vha1BvaW50ZXIoanNFbXB0eVN0
cmluZygmbV9ncmFwaC5tX3ZtKSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CiAgICAgICAgIAotICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRv
KHNsb3dQYXRoLCBjb250aW51YXRpb24pOworICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0
aCwgY29udGludWF0aW9uKTsKICAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZTsKICAgICAg
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICAgICAgc3dpdGNoIChudW1LaWRzKSB7CkBAIC02
NjI2LDcgKzY2MzIsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51
YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGZh
c3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50
NjQsIGZhc3RSZXN1bHQsIGVtcHR5UmVzdWx0LCBzbG93UmVzdWx0KSk7CiAgICAgfQogICAgIAog
ICAgIHZvaWQgY29tcGlsZVN0cmluZ0NoYXJBdCgpCkBAIC0xNTY4MCw2ICsxNTY4NiwxMSBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pc0NlbGwoKSAm
JiB2YWx1ZS5hc0NlbGwoKS0+dHlwZSgpID09IFN0cmluZ1R5cGUgJiYgIWFzU3RyaW5nKHZhbHVl
KS0+aXNSb3BlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX291dC5ib29sZWFuRmFs
c2U7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBlZGdlLT50cnlH
ZXRTdHJpbmcobV9ncmFwaCk7CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gSWYgdGhpcyB2YWx1ZSBpcyBMYXp5VmFsdWUsIGl0IHdpbGwgYmUg
Y29udmVydGVkIHRvIEpTU3RyaW5nLCBhbmQgdGhlIHJlc3VsdCBtdXN0IGJlIG5vbi1yb3BlIHN0
cmluZy4KKyAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuYm9vbGVhbkZhbHNlOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG1fb3V0LnRlc3ROb25aZXJvUHRy
KG1fb3V0LmxvYWRQdHIoc3RyaW5nLCBtX2hlYXBzLkpTU3RyaW5nX3ZhbHVlKSwgbV9vdXQuY29u
c3RJbnRQdHIoSlNTdHJpbmc6OmlzUm9wZUluUG9pbnRlcikpOwpAQCAtMTU2OTQsNiArMTU3MDUs
MTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaXND
ZWxsKCkgJiYgdmFsdWUuYXNDZWxsKCktPnR5cGUoKSA9PSBTdHJpbmdUeXBlICYmICFhc1N0cmlu
Zyh2YWx1ZSktPmlzUm9wZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuYm9v
bGVhblRydWU7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBlZGdl
LT50cnlHZXRTdHJpbmcobV9ncmFwaCk7CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgp
KSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyB2YWx1ZSBpcyBMYXp5VmFsdWUsIGl0IHdp
bGwgYmUgY29udmVydGVkIHRvIEpTU3RyaW5nLCBhbmQgdGhlIHJlc3VsdCBtdXN0IGJlIG5vbi1y
b3BlIHN0cmluZy4KKyAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuYm9vbGVhblRydWU7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbV9vdXQudGVzdElzWmVy
b1B0cihtX291dC5sb2FkUHRyKHN0cmluZywgbV9oZWFwcy5KU1N0cmluZ192YWx1ZSksIG1fb3V0
LmNvbnN0SW50UHRyKEpTU3RyaW5nOjppc1JvcGVJblBvaW50ZXIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCA0YzQ0ZjRiMDU1YzE5MjRiM2Y1NzQx
ZTQwNDlkZGQ4MTBkNDQzOTkyLi5jODM2ZmEyZTJkZmE5OWM2NDY3OGIzOTY4NjRlN2NlYzQyZmRi
ZjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC0x
MTQsNyArMTE0LDcgQEAgdm9pZCBKU1N0cmluZzo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIAogICAgIHVpbnRwdHJfdCBwb2ludGVyID0gdGhp
c09iamVjdC0+bV9maWJlcjsKICAgICBpZiAocG9pbnRlciAmIGlzUm9wZUluUG9pbnRlcikgewot
ICAgICAgICBpZiAoKHBvaW50ZXIgJiBKU1JvcGVTdHJpbmc6OnN0cmluZ01hc2spID09IEpTUm9w
ZVN0cmluZzo6c3Vic3RyaW5nU2VudGluZWwoKSkgeworICAgICAgICBpZiAocG9pbnRlciAmIEpT
Um9wZVN0cmluZzo6aXNTdWJzdHJpbmdJblBvaW50ZXIpIHsKICAgICAgICAgICAgIHZpc2l0b3Iu
YXBwZW5kVW5iYXJyaWVyZWQoc3RhdGljX2Nhc3Q8SlNSb3BlU3RyaW5nKj4odGhpc09iamVjdCkt
PmZpYmVyMSgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggNmZjNTQ2NzllMjdlNjNkNGQzMWJmODZl
OThhNDBkODllY2Y5YmM5ZS4uNzk5MGIzMGEyOThlZDY1NjE0YjJmMGZmNTIxOGQ0MWQwMGI4Nzhl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC04Niw5ICs4
Niw5IEBAIHN0cnVjdCBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJpbmcgewogLy8KIC8vICAg
ICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgOCAgICAgICAgMTAgICAgICAgICAg
ICAgICAxNiAgICAgICAgICAgICAgICAgICAgICAgMzIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNDgKIC8vIEpTU3RyaW5nICAgICBbICAgSUQgICAgICBdWyAgaGVhZGVyICBd
WyAgIFN0cmluZyBwb2ludGVyICAgICAgMF0KLS8vIEpTUm9wZVN0cmluZyBbICAgSUQgICAgICBd
WyAgaGVhZGVyICBdWyBmbGFncyBdWyAxc3QgZmliZXIgICAgMV1bICBsZW5ndGggIF1bMm5kIGxv
d2VyMzJdWzJuZCB1cHBlcjE2XVszcmQgbG93ZXIxNl1bM3JkIHVwcGVyMzJdCisvLyBKU1JvcGVT
dHJpbmcgWyAgIElEICAgICAgXVsgIGhlYWRlciAgXVsgICAxc3QgZmliZXIgICAgICAgICB4eXpd
WyAgbGVuZ3RoICBdWzJuZCBsb3dlcjMyXVsybmQgdXBwZXIxNl1bM3JkIGxvd2VyMTZdWzNyZCB1
cHBlcjMyXQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBeCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlzUm9wZSBiaXQKKy8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB4OihpczhCaXQpLHk6KGlzU3Vic3RyaW5nKSx6Oihp
c1JvcGUpIGJpdCBmbGFncwogY2xhc3MgSlNTdHJpbmcgOiBwdWJsaWMgSlNDZWxsIHsKIHB1Ymxp
YzoKICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtMjY2LDEzICsyNjYsMTUgQEAgY2xhc3MgSlNT
dHJpbmcgOiBwdWJsaWMgSlNDZWxsIHsKIGNsYXNzIEpTUm9wZVN0cmluZyBmaW5hbCA6IHB1Ymxp
YyBKU1N0cmluZyB7CiAgICAgZnJpZW5kIGNsYXNzIEpTU3RyaW5nOwogcHVibGljOgorICAgIC8v
IFdlIHVzZSBsb3dlciAzYml0cyBvZiBmaWJlcjAgZm9yIGZsYWdzLiBUaGVzZSBiaXRzIGFyZSB1
c2FibGUgZHVlIHRvIGFsaWdubWVudCwgYW5kIGl0IGlzIE9LIGV2ZW4gaW4gMzJiaXQgYXJjaGl0
ZWN0dXJlLgorICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IGlzOEJpdEluUG9pbnRlciA9
IHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oU3RyaW5nSW1wbDo6ZmxhZ0lzOEJpdCgpKTsKKyAgICBz
dGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBpc1N1YnN0cmluZ0luUG9pbnRlciA9IDB4MjsKKyAg
ICBzdGF0aWNfYXNzZXJ0KGlzOEJpdEluUG9pbnRlciA9PSAwYjEwMCwgIiIpOworICAgIHN0YXRp
Y19hc3NlcnQoaXNTdWJzdHJpbmdJblBvaW50ZXIgPT0gMGIwMTAsICIiKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KGlzUm9wZUluUG9pbnRlciA9PSAwYjAwMSwgIiIpOworICAgIHN0YXRpYyBjb25zdGV4
cHIgdWludHB0cl90IHN0cmluZ01hc2sgPSB+KGlzUm9wZUluUG9pbnRlciB8IGlzOEJpdEluUG9p
bnRlciB8IGlzU3Vic3RyaW5nSW5Qb2ludGVyKTsKICNpZiBDUFUoQUREUkVTUzY0KQogICAgIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKHVpbnRwdHJfdCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIiIpOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IGZsYWdNYXNrID0gMHhmZmZmMDAwMDAwMDAw
MDAwVUxMOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IHN0cmluZ01hc2sgPSB+KGZs
YWdNYXNrIHwgaXNSb3BlSW5Qb2ludGVyKTsKLSAgICBzdGF0aWNfYXNzZXJ0KFN0cmluZ0ltcGw6
OmZsYWdJczhCaXQoKSA9PSAwYjEwMCwgIiIpOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0
cl90IGlzOEJpdEluUG9pbnRlciA9IHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oU3RyaW5nSW1wbDo6
ZmxhZ0lzOEJpdCgpKSA8PCA0ODsKLQogICAgIGNsYXNzIENvbXBhY3RGaWJlcnMgewogICAgIHB1
YmxpYzoKICAgICAgICAgSlNTdHJpbmcqIGZpYmVyMSgpIGNvbnN0CkBAIC0yODksMTMgKzI5MSwx
MyBAQCBjbGFzcyBKU1JvcGVTdHJpbmcgZmluYWwgOiBwdWJsaWMgSlNTdHJpbmcgewogCiAgICAg
ICAgIEpTU3RyaW5nKiBmaWJlcjIoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PEpTU3RyaW5nKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihtX2ZpYmVy
Mkxvd2VyKSB8IChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KG1fZmliZXIyVXBwZXIpIDw8IDMyKSk7
CisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTU3RyaW5nKj4oc3RhdGljX2Nhc3Q8
dWludHB0cl90PihtX2ZpYmVyMkxvd2VyKSB8IChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KG1fZmli
ZXIyVXBwZXIpIDw8IDE2KSk7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCBpbml0aWFsaXplRmli
ZXIyKEpTU3RyaW5nKiBmaWJlcikKICAgICAgICAgewogICAgICAgICAgICAgdWludHB0cl90IHBv
aW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihmaWJlcik7Ci0gICAgICAgICAgICBtX2Zp
YmVyMkxvd2VyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBvaW50ZXIpOwotICAgICAgICAgICAg
bV9maWJlcjJVcHBlciA9IHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb2ludGVyID4+IDMyKTsKKyAg
ICAgICAgICAgIG1fZmliZXIyTG93ZXIgPSBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9pbnRlcik7
CisgICAgICAgICAgICBtX2ZpYmVyMlVwcGVyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBvaW50
ZXIgPj4gMTYpOwogICAgICAgICB9CiAKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9sZW5ndGg7IH0KQEAgLTMwNSwyMiArMzA3LDE4IEBAIGNsYXNzIEpTUm9wZVN0
cmluZyBmaW5hbCA6IHB1YmxpYyBKU1N0cmluZyB7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mTGVuZ3RoKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENv
bXBhY3RGaWJlcnMsIG1fbGVuZ3RoKTsgfQotICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mRmliZXIxTG93ZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29tcGFjdEZpYmVycywg
bV9maWJlcjFMb3dlcik7IH0KLSAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpYmVy
MVVwcGVyKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvbXBhY3RGaWJlcnMsIG1fZmliZXIx
VXBwZXIpOyB9Ci0gICAgICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGaWJlcjJMb3dlcigp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb21wYWN0RmliZXJzLCBtX2ZpYmVyMkxvd2VyKTsg
fQotICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIyVXBwZXIoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoQ29tcGFjdEZpYmVycywgbV9maWJlcjJVcHBlcik7IH0KKyAgICAg
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpYmVyMSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihDb21wYWN0RmliZXJzLCBtX2xlbmd0aCk7IH0KKyAgICAgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZkZpYmVyMigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb21wYWN0RmliZXJz
LCBtX2ZpYmVyMVVwcGVyKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdWludDMyX3QgbV9s
ZW5ndGggeyAwIH07CiAgICAgICAgIHVpbnQzMl90IG1fZmliZXIxTG93ZXIgeyAwIH07CiAgICAg
ICAgIHVpbnQxNl90IG1fZmliZXIxVXBwZXIgeyAwIH07Ci0gICAgICAgIHVpbnQxNl90IG1fZmli
ZXIyVXBwZXIgeyAwIH07Ci0gICAgICAgIHVpbnQzMl90IG1fZmliZXIyTG93ZXIgeyAwIH07Cisg
ICAgICAgIHVpbnQxNl90IG1fZmliZXIyTG93ZXIgeyAwIH07CisgICAgICAgIHVpbnQzMl90IG1f
ZmliZXIyVXBwZXIgeyAwIH07CiAgICAgfTsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDb21w
YWN0RmliZXJzKSA9PSBzaXplb2Yodm9pZCopICogMiwgIiIpOwogI2Vsc2UKLSAgICBzdGF0aWMg
Y29uc3RleHByIHVpbnRwdHJfdCBzdHJpbmdNYXNrID0gfihpc1JvcGVJblBvaW50ZXIpOwotCiAg
ICAgY2xhc3MgQ29tcGFjdEZpYmVycyB7CiAgICAgcHVibGljOgogICAgICAgICBKU1N0cmluZyog
ZmliZXIxKCkgY29uc3QKQEAgLTM0NywyNCArMzQ1LDEyIEBAIGNsYXNzIEpTUm9wZVN0cmluZyBm
aW5hbCA6IHB1YmxpYyBKU1N0cmluZyB7CiAgICAgICAgICAgICBtX2xlbmd0aCA9IGxlbmd0aDsK
ICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgaW5pdGlhbGl6ZUlzOEJpdChib29sIGZsYWcpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChmbGFnKQotICAgICAgICAgICAgICAgIG1fZmxhZ3Mg
fD0gc3RhdGljX2Nhc3Q8dWludHB0cl90PihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fZmxhZ3MgJj0gfnN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oU3RyaW5nSW1wbDo6ZmxhZ0lzOEJpdCgpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGJvb2wgaXM4Qml0KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fZmxhZ3MgJiBz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSk7Ci0gICAgICAg
IH0KLQogICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTGVuZ3RoKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKENvbXBhY3RGaWJlcnMsIG1fbGVuZ3RoKTsgfQorICAgICAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIxKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENv
bXBhY3RGaWJlcnMsIG1fZmliZXIxKTsgfQorICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mRmliZXIyKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvbXBhY3RGaWJlcnMsIG1fZmli
ZXIyKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdWludDMyX3QgbV9sZW5ndGggeyAwIH07
Ci0gICAgICAgIHVpbnQzMl90IG1fZmxhZ3MgeyAwIH07CiAgICAgICAgIEpTU3RyaW5nKiBtX2Zp
YmVyMSB7IG51bGxwdHIgfTsKICAgICAgICAgSlNTdHJpbmcqIG1fZmliZXIyIHsgbnVsbHB0ciB9
OwogICAgIH07CkBAIC00NTYsMTQgKzQ0MiwxOCBAQCBjbGFzcyBKU1JvcGVTdHJpbmcgZmluYWwg
OiBwdWJsaWMgSlNTdHJpbmcgewogCiAgICAgdm9pZCBpbml0aWFsaXplSXM4Qml0KGJvb2wgZmxh
ZykgY29uc3QKICAgICB7Ci0jaWYgQ1BVKEFERFJFU1M2NCkKICAgICAgICAgaWYgKGZsYWcpCiAg
ICAgICAgICAgICBtX2ZpYmVyIHw9IGlzOEJpdEluUG9pbnRlcjsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgbV9maWJlciAmPSB+aXM4Qml0SW5Qb2ludGVyOwotI2Vsc2UKLSAgICAgICAgbV9j
b21wYWN0RmliZXJzLmluaXRpYWxpemVJczhCaXQoZmxhZyk7Ci0jZW5kaWYKKyAgICB9CisKKyAg
ICB2b2lkIGluaXRpYWxpemVJc1N1YnN0cmluZyhib29sIGZsYWcpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoZmxhZykKKyAgICAgICAgICAgIG1fZmliZXIgfD0gaXNTdWJzdHJpbmdJblBvaW50
ZXI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZmliZXIgJj0gfmlzU3Vic3RyaW5nSW5Q
b2ludGVyOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBpbml0aWFsaXplTGVuZ3Ro
KHVuc2lnbmVkIGxlbmd0aCkKQEAgLTU0OSwyMyArNTM5LDEwIEBAIGNsYXNzIEpTUm9wZVN0cmlu
ZyBmaW5hbCA6IHB1YmxpYyBKU1N0cmluZyB7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mTGVuZ3RoKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTUm9wZVN0cmlu
ZywgbV9jb21wYWN0RmliZXJzKSArIENvbXBhY3RGaWJlcnM6Om9mZnNldE9mTGVuZ3RoKCk7IH0g
Ly8gMzJieXRlIHdpZHRoLgorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGbGFncygpIHsg
cmV0dXJuIG9mZnNldE9mVmFsdWUoKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZG
aWJlcjAoKSB7IHJldHVybiBvZmZzZXRPZlZhbHVlKCk7IH0KLSNpZiBDUFUoQUREUkVTUzY0KQot
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGbGFncygpIHsgcmV0dXJuIG9mZnNldE9mVmFs
dWUoKSArIHNpemVvZih1aW50MTZfdCkgKiAzOyB9IC8vIDE2Ynl0ZSB3aWR0aC4KLSAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIxTG93ZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoSlNSb3BlU3RyaW5nLCBtX2NvbXBhY3RGaWJlcnMpICsgQ29tcGFjdEZpYmVyczo6b2Zmc2V0
T2ZGaWJlcjFMb3dlcigpOyB9IC8vIDMyYnl0ZSB3aWR0aC4KLSAgICBzdGF0aWMgcHRyZGlmZl90
IG9mZnNldE9mRmliZXIxVXBwZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNSb3BlU3Ry
aW5nLCBtX2NvbXBhY3RGaWJlcnMpICsgQ29tcGFjdEZpYmVyczo6b2Zmc2V0T2ZGaWJlcjFVcHBl
cigpOyB9IC8vIDE2Ynl0ZSB3aWR0aC4KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmli
ZXIyTG93ZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNSb3BlU3RyaW5nLCBtX2NvbXBh
Y3RGaWJlcnMpICsgQ29tcGFjdEZpYmVyczo6b2Zmc2V0T2ZGaWJlcjJMb3dlcigpOyB9IC8vIDMy
Ynl0ZSB3aWR0aC4KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIyVXBwZXIoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNSb3BlU3RyaW5nLCBtX2NvbXBhY3RGaWJlcnMpICsg
Q29tcGFjdEZpYmVyczo6b2Zmc2V0T2ZGaWJlcjJVcHBlcigpOyB9IC8vIDE2Ynl0ZSB3aWR0aC4K
LSNlbGlmIFVTRShKU1ZBTFVFNjQpCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgYW4gdGVtcG9yYXJ5
IHdvcmthcm91bmQgdG8gbWFrZSBKU0MgYnVpbHQgb24gQVJNNjRfMzIuIE9uY2Ugd2Ugc3RhcnQg
Y2FsY3VsYXRpbmcgYml0cyBiZWZvcmUgc3RvcmluZyB0aGVtIHRvIEpTUm9wZVN0cmluZywKLSAg
ICAvLyB3ZSBkbyBub3QgbmVlZCB0byBoYXZlIHN1Y2ggYSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBh
cyBhbiBvZmZzZXQuIEFmdGVyIHRoYXQsIHdoYXQgd2Ugb25seSBuZWVkIGlzIG9mZnNldE9mRmli
ZXIwLCBvZmZzZXRPZkZpYmVyMSwgYW5kIG9mZnNldE9mRmliZXIyLgotICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUyMzQKLSAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mRmxhZ3MoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQot
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGaWJlcjFMb3dlcigpIHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IHJldHVybiAwOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpYmVy
MVVwcGVyKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mRmliZXIyTG93ZXIoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gMDsgfQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGaWJlcjJVcHBlcigpIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9Ci0jZW5kaWYKKyAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mRmliZXIxKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTUm9wZVN0
cmluZywgbV9jb21wYWN0RmliZXJzKSArIENvbXBhY3RGaWJlcnM6Om9mZnNldE9mRmliZXIxKCk7
IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIyKCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEpTUm9wZVN0cmluZywgbV9jb21wYWN0RmliZXJzKSArIENvbXBhY3RGaWJlcnM6
Om9mZnNldE9mRmliZXIyKCk7IH0KIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc19t
YXhJbnRlcm5hbFJvcGVMZW5ndGggPSAzOwogCkBAIC01NzUsNiArNTUyLDcgQEAgY2xhc3MgSlNS
b3BlU3RyaW5nIGZpbmFsIDogcHVibGljIEpTU3RyaW5nIHsKICAgICAgICAgSlNSb3BlU3RyaW5n
KiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1JvcGVTdHJpbmc+KHZt
LmhlYXApKSBKU1JvcGVTdHJpbmcodm0sIHMxLCBzMik7CiAgICAgICAgIG5ld1N0cmluZy0+Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5sZW5ndGgoKSk7Cisg
ICAgICAgIEFTU0VSVChuZXdTdHJpbmctPmlzUm9wZSgpKTsKICAgICAgICAgcmV0dXJuIG5ld1N0
cmluZzsKICAgICB9CiAgICAgc3RhdGljIEpTUm9wZVN0cmluZyogY3JlYXRlKFZNJiB2bSwgSlNT
dHJpbmcqIHMxLCBKU1N0cmluZyogczIsIEpTU3RyaW5nKiBzMykKQEAgLTU4Miw2ICs1NjAsNyBA
QCBjbGFzcyBKU1JvcGVTdHJpbmcgZmluYWwgOiBwdWJsaWMgSlNTdHJpbmcgewogICAgICAgICBK
U1JvcGVTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUm9w
ZVN0cmluZz4odm0uaGVhcCkpIEpTUm9wZVN0cmluZyh2bSwgczEsIHMyLCBzMyk7CiAgICAgICAg
IG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICBBU1NFUlQobmV3U3RyaW5n
LT5sZW5ndGgoKSk7CisgICAgICAgIEFTU0VSVChuZXdTdHJpbmctPmlzUm9wZSgpKTsKICAgICAg
ICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICB9CiAKQEAgLTU5MCw2ICs1NjksNyBAQCBjbGFzcyBK
U1JvcGVTdHJpbmcgZmluYWwgOiBwdWJsaWMgSlNTdHJpbmcgewogICAgICAgICBKU1JvcGVTdHJp
bmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUm9wZVN0cmluZz4o
dm0uaGVhcCkpIEpTUm9wZVN0cmluZyh2bSwgYmFzZSwgb2Zmc2V0LCBsZW5ndGgpOwogICAgICAg
ICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uU3Vic3RyaW5nKHZtLCBleGVjKTsKICAgICAgICAg
QVNTRVJUKG5ld1N0cmluZy0+bGVuZ3RoKCkpOworICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5p
c1JvcGUoKSk7CiAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgfQogCkBAIC01OTgsNiAr
NTc4LDcgQEAgY2xhc3MgSlNSb3BlU3RyaW5nIGZpbmFsIDogcHVibGljIEpTU3RyaW5nIHsKICAg
ICAgICAgSlNSb3BlU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1JvcGVTdHJpbmc+KHZtLmhlYXAsIGRlZmVycmFsQ29udGV4dCkpIEpTUm9wZVN0cmluZyhT
dWJzdHJpbmdPZlJlc29sdmVkLCB2bSwgYmFzZSwgb2Zmc2V0LCBsZW5ndGgpOwogICAgICAgICBu
ZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSk7CiAgICAgICAg
IEFTU0VSVChuZXdTdHJpbmctPmxlbmd0aCgpKTsKKyAgICAgICAgQVNTRVJUKG5ld1N0cmluZy0+
aXNSb3BlKCkpOwogICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAgIH0KIApAQCAtNjg1LDI2
ICs2NjYsNiBAQCBjbGFzcyBKU1JvcGVTdHJpbmcgZmluYWwgOiBwdWJsaWMgSlNTdHJpbmcgewog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KGZpYmVyMigpKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3Qg
bm90U3Vic3RyaW5nU2VudGluZWwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQot
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3Qgc3Vic3RyaW5nU2VudGluZWwoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIDI7Ci0gICAgfQotCi0gICAgYm9vbCBpc1N1YnN0cmluZygpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKG1fZmliZXIgJiBzdHJpbmdNYXNrKSA9PSBzdWJz
dHJpbmdTZW50aW5lbCgpOwotICAgIH0KLQotICAgIHZvaWQgaW5pdGlhbGl6ZUlzU3Vic3RyaW5n
KGJvb2wgaXNTdWJzdHJpbmcpCi0gICAgewotICAgICAgICBtX2ZpYmVyIHw9IChpc1N1YnN0cmlu
ZyA/IHN1YnN0cmluZ1NlbnRpbmVsKCkgOiBub3RTdWJzdHJpbmdTZW50aW5lbCgpKTsKLSAgICB9
Ci0KICAgICBzdGF0aWNfYXNzZXJ0KHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoID49IDIsICIiKTsK
ICAgICBtdXRhYmxlIENvbXBhY3RGaWJlcnMgbV9jb21wYWN0RmliZXJzOwogCkBAIC03MjYsMTQg
KzY4Nyw5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6aXM4Qml0KCkgY29uc3QKIHsK
ICAgICB1aW50cHRyX3QgcG9pbnRlciA9IG1fZmliZXI7CiAgICAgaWYgKHBvaW50ZXIgJiBpc1Jv
cGVJblBvaW50ZXIpIHsKLSNpZiBDUFUoQUREUkVTUzY0KQogICAgICAgICAvLyBEbyBub3QgbG9h
ZCBtX2ZpYmVyIHR3aWNlLiBXZSBzaG91bGQgdXNlIHRoZSBpbmZvcm1hdGlvbiBpbiBwb2ludGVy
LgogICAgICAgICAvLyBPdGhlcndpc2UsIEpTUm9wZVN0cmluZyBtYXkgYmUgY29udmVydGVkIHRv
IEpTU3RyaW5nIGJldHdlZW4gdGhlIGZpcnN0IGFuZCBzZWNvbmQgYWNjZXNzZXMuCiAgICAgICAg
IHJldHVybiBwb2ludGVyICYgSlNSb3BlU3RyaW5nOjppczhCaXRJblBvaW50ZXI7Ci0jZWxzZQot
ICAgICAgICAvLyBJdCBpcyBPSyB0byBsb2FkIGZsYWcgc2luY2UgZXZlbiBpZiBKU1JvcGVTdHJp
bmcgaXMgY29udmVydGVkIHRvIEpTU3RyaW5nLCB0aGlzIGZsYWcgc3RpbGwgZXhpc3RzLgotICAg
ICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRoaXMpLT5tX2NvbXBhY3RG
aWJlcnMuaXM4Qml0KCk7Ci0jZW5kaWYKICAgICB9CiAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxT
dHJpbmdJbXBsKj4ocG9pbnRlciktPmlzOEJpdCgpOwogfQpAQCAtMTA0Niw3ICsxMDAyLDcgQEAg
QUxXQVlTX0lOTElORSBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJpbmcgSlNTdHJpbmc6OnZp
ZXdXaXRoVW5kZXJseWluZ1N0cmluZygKIAogaW5saW5lIGJvb2wgSlNTdHJpbmc6OmlzU3Vic3Ry
aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNSb3BlKCkgJiYgc3RhdGljX2Nhc3Q8Y29uc3Qg
SlNSb3BlU3RyaW5nKj4odGhpcyktPmlzU3Vic3RyaW5nKCk7CisgICAgcmV0dXJuIG1fZmliZXIg
JiBKU1JvcGVTdHJpbmc6OmlzU3Vic3RyaW5nSW5Qb2ludGVyOwogfQogCiAvLyAtLS0gSlNWYWx1
ZSBpbmxpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363418</attachid>
            <date>2019-03-02 00:36:20 -0800</date>
            <delta_ts>2019-03-04 11:57:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195234-20190302003619.patch</filename>
            <type>text/plain</type>
            <size>33448</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OTlhZjkyMzg2ODA5Y2UzMTgzNWNjYzY1ZDY2MDRkY2MwMGE2YTJmLi5hMTUzNDE3MzJjZTEzNzMx
MWY1YThmMjNkZGVkZGEyZWJlOTU0ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxOS0wMy0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0b3JlIGJpdHMgZm9yIEpTUm9wZVN0cmluZyBpbiAzIHN0b3Jl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MjM0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBjbGVhbnMgdXAgdGhlIGluaXRpYWxpemF0aW9uIG9mIEpTUm9wZVN0cmluZyBmaWVsZHMg
aW4gREZHIGFuZCBGVEwuCisgICAgICAgIFByZXZpb3VzbHksIHdlIHN0b3JlIHNvbWUgcGFydCBv
ZiBkYXRhIHNlcGFyYXRlbHkuIEluc3RlYWQsIHRoaXMgcGF0Y2ggY2FsY3VsYXRlcworICAgICAg
ICB0aGUgZGF0YSBmaXJzdCBieSBiaXQgb3BlcmF0aW9ucyBhbmQgc3RvcmUgY2FsY3VsYXRlZCBk
YXRhIHdpdGggZmV3ZXIgc3RvcmVzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBjbGVhbnMg
dXAgaXM4Qml0IGFuZCBpc1N1YnN0cmluZyBmbGFncy4gV2UgcHV0IHRoZW0gaW4gbG93ZXIgYml0
cworICAgICAgICBvZiB0aGUgZmlyc3QgZmliZXIgaW5zdGVhZCBvZiB0aGUgdXBwZXIgMTYgYml0
cy4gU2luY2Ugd2Ugb25seSBoYXZlIDMgYml0IGZsYWdzLCAoaXNSb3BlLCBpczhCaXQsIGlzU3Vi
c3RyaW5nKSwKKyAgICAgICAgd2UgY2FuIHB1dCB0aGVtIGludG8gdGhlIGxvd2VyIDMgYml0cywg
dGhleSBhcmUgYWx3YXlzIGVtcHR5IGR1ZSB0byBhbGlnbm1lbnQuCisKKyAgICAgICAgKiBieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKTogQSBiaXQgY2xlYW4gdXAgb2YgU3RyaW5nTGVuZ3RoIElDIHRvIGdpdmUgYSBjaGFuY2Ug
b2YgdW5uZWNlc3NhcnkgbW92IHJlbW92YWwuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FuQmVSb3BlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEFycmF5TGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1ha2VSb3BlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBmdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFw
UmVwb3NpdG9yeTo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeSk6CisgICAgICAgICogZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU1ha2VSb3Bl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNSb3BlU3RyaW5nKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RSb3BlU3RyaW5nKToK
KyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAg
KEpTQzo6SlNTdHJpbmc6OmlzOEJpdCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpp
c1N1YnN0cmluZyBjb25zdCk6CisKIDIwMTktMDMtMDEgIENocmlzdG9waGVyIFJlaWQgIDxjaHJp
cy5yZWlkQHNvbnkuY29tPgogCiAgICAgICAgIFtQbGF5U3RhdGlvbl0gVXBzdHJlYW0gcGxheXN0
YXRpb24ncyByZW1vdGUgaW5zcGVjdG9yIHNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGVmYzkzOWI1NWQyMzNkYWZhZjZkNjIyNDFm
MjJhZDA0OTk3YzgxNWYuLjE4NzcyMzFkNzNhYmZjNWM3ZTZkNDhmYjgyZGQ2OTJhYzdkOWUzYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAg
LTEyMTUsMTQgKzEyMTUsMTQgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNz
R2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICBjYXNlIFN0cmluZ0xlbmd0aDogewogICAgICAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNTdHJpbmc6Om9m
ZnNldE9mVmFsdWUoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBhdXRvIGlzUm9wZSA9IGppdC5i
cmFuY2hJZlJvcGVTdHJpbmdJbXBsKHNjcmF0Y2hHUFIpOwotICAgICAgICBqaXQubG9hZDMyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlP
ZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6
QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSksIHZh
bHVlUmVncy5wYXlsb2FkR1BSKCkpOwogICAgICAgICBhdXRvIGRvbmUgPSBqaXQuanVtcCgpOwog
CiAgICAgICAgIGlzUm9wZS5saW5rKCZqaXQpOwotICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mTGVuZ3RoKCkpLCBz
Y3JhdGNoR1BSKTsKKyAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVSZWdzLnBheWxvYWRH
UFIoKSk7CiAKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwotICAgICAgICBqaXQuYm94SW50MzIo
c2NyYXRjaEdQUiwgdmFsdWVSZWdzKTsKKyAgICAgICAgaml0LmJveEludDMyKHZhbHVlUmVncy5w
YXlsb2FkR1BSKCksIHZhbHVlUmVncyk7CiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKaW5kZXggM2JiZTRiNTg3N2RhYjZjMDY5ZWQ2YjgwYTQ4MDlkZTVhNTdk
ZTk0Yy4uOTUwNDFiNDI4YTE0MmNmMjAyMzEwMmY5MTMwMzNkODQ1YTdlZGE3YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTY4OTcs
NiArNjg5NywxNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0R2xvYmFsVGhpcyhO
b2RlKiBub2RlKQogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAorYm9vbCBT
cGVjdWxhdGl2ZUpJVDo6Y2FuQmVSb3BlKEVkZ2UmIGVkZ2UpCit7CisgICAgaWYgKG1fc3RhdGUu
Zm9yTm9kZShlZGdlKS5pc1R5cGUoU3BlY1N0cmluZ0lkZW50KSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIC8vIElmIHRoaXMgdmFsdWUgaXMgTGF6eVZhbHVlLCBpdCB3aWxsIGJlIGNvbnZl
cnRlZCB0byBKU1N0cmluZywgYW5kIHRoZSByZXN1bHQgbXVzdCBiZSBub24tcm9wZSBzdHJpbmcu
CisgICAgU3RyaW5nIHN0cmluZyA9IGVkZ2UtPnRyeUdldFN0cmluZyhtX2dyYXBoKTsKKyAgICBp
ZiAoIXN0cmluZy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0
cnVlOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9k
ZSogbm9kZSkKIHsKICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewpAQCAt
NjkzNCwxNSArNjk0NSwyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlM
ZW5ndGgoTm9kZSogbm9kZSkKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKICAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOwogCisgICAgICAgIGJvb2wg
bmVlZHNSb3BlQ2FzZSA9IGNhbkJlUm9wZShub2RlLT5jaGlsZDEoKSk7CisKICAgICAgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU1N0cmluZzo6b2Zm
c2V0T2ZWYWx1ZSgpKSwgdGVtcEdQUik7Ci0gICAgICAgIGF1dG8gaXNSb3BlID0gbV9qaXQuYnJh
bmNoSWZSb3BlU3RyaW5nSW1wbCh0ZW1wR1BSKTsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1w
IGlzUm9wZTsKKyAgICAgICAgaWYgKG5lZWRzUm9wZUNhc2UpCisgICAgICAgICAgICBpc1JvcGUg
PSBtX2ppdC5icmFuY2hJZlJvcGVTdHJpbmdJbXBsKHRlbXBHUFIpOwogICAgICAgICBtX2ppdC5s
b2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RyaW5nSW1wbDo6bGVuZ3Ro
TWVtb3J5T2Zmc2V0KCkpLCByZXN1bHRHUFIpOwotICAgICAgICBhdXRvIGRvbmUgPSBtX2ppdC5q
dW1wKCk7CisgICAgICAgIGlmIChuZWVkc1JvcGVDYXNlKSB7CisgICAgICAgICAgICBhdXRvIGRv
bmUgPSBtX2ppdC5qdW1wKCk7CiAKLSAgICAgICAgaXNSb3BlLmxpbmsoJm1faml0KTsKLSAgICAg
ICAgbV9qaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU1JvcGVTdHJp
bmc6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgaXNSb3BlLmxp
bmsoJm1faml0KTsKKyAgICAgICAgICAgIG1faml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoYmFzZUdQUiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsK
IAotICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgIGRvbmUubGluaygmbV9q
aXQpOworICAgICAgICB9CiAgICAgICAgIGludDMyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzNDI1LDQzICsxMzQ0MiwyOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUoTm9kZSogbm9kZSkKICAgICBBbGxvY2F0b3IgYWxs
b2NhdG9yVmFsdWUgPSBhbGxvY2F0b3JGb3JOb25WaXJ0dWFsQ29uY3VycmVudGx5PEpTUm9wZVN0
cmluZz4oKm1faml0LnZtKCksIHNpemVvZihKU1JvcGVTdHJpbmcpLCBBbGxvY2F0b3JGb3JNb2Rl
OjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAgICAgZW1pdEFsbG9jYXRlSlNDZWxsKHJlc3VsdEdQUiwg
SklUQWxsb2NhdG9yOjpjb25zdGFudChhbGxvY2F0b3JWYWx1ZSksIGFsbG9jYXRvckdQUiwgVHJ1
c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKG1faml0LnZtKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpLCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7CiAKLSAgICBtX2pp
dC5vclB0cihUcnVzdGVkSW1tMzIoSlNTdHJpbmc6OmlzUm9wZUluUG9pbnRlciksIG9wR1BSc1sw
XSwgYWxsb2NhdG9yR1BSKTsKLSAgICBtX2ppdC5zdG9yZVB0cihhbGxvY2F0b3JHUFIsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjAo
KSkpOwotCi0gICAgbV9qaXQubW92ZShvcEdQUnNbMV0sIHNjcmF0Y2hHUFIpOwotICAgIG1faml0
LnN0b3JlMzIoc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNS
b3BlU3RyaW5nOjpvZmZzZXRPZkZpYmVyMUxvd2VyKCkpKTsKLSAgICBtX2ppdC5yc2hpZnRQdHIo
VHJ1c3RlZEltbTMyKDMyKSwgc2NyYXRjaEdQUik7Ci0gICAgbV9qaXQuc3RvcmUxNihzY3JhdGNo
R1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNl
dE9mRmliZXIxVXBwZXIoKSkpOwotCi0gICAgaWYgKG51bU9wR1BScyA9PSAzKSB7Ci0gICAgICAg
IG1faml0Lm1vdmUob3BHUFJzWzJdLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgbV9qaXQuc3RvcmUz
MihzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1JvcGVTdHJp
bmc6Om9mZnNldE9mRmliZXIyTG93ZXIoKSkpOwotICAgICAgICBtX2ppdC5yc2hpZnRQdHIoVHJ1
c3RlZEltbTMyKDMyKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIG1faml0LnN0b3JlMTYoc2NyYXRj
aEdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNSb3BlU3RyaW5nOjpvZmZz
ZXRPZkZpYmVyMlVwcGVyKCkpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5zdG9yZVpl
cm8zMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNl
dE9mRmliZXIyTG93ZXIoKSkpOwotICAgICAgICBtX2ppdC5zdG9yZVplcm8xNihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXIyVXBwZXIo
KSkpOwotICAgIH0KKyAgICAvLyBUaGlzIHB1dHMgbnVsbHB0ciBmb3IgdGhlIGZpcnN0IGZpYmVy
LiBJdCBtYWtlcyB2aXNpdENoaWxkcmVuIHNhZmUgZXZlbiBpZiB0aGlzIEpTUm9wZVN0cmluZyBp
cyBkaXNjYXJkZWQgZHVlIHRvIHRoZSBzcGVjdWxhdGlvbiBmYWlsdXJlIGluIHRoZSBmb2xsb3dp
bmcgcGF0aC4KKyAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKEpTU3RyaW5nOjppc1Jv
cGVJblBvaW50ZXIpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1JvcGVTdHJp
bmc6Om9mZnNldE9mRmliZXIwKCkpKTsKIAogICAgIHsKICAgICAgICAgaWYgKEpTU3RyaW5nKiBz
dHJpbmcgPSBlZGdlc1swXS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU1N0cmluZyo+KCptX2ppdC52
bSgpKSkgewogICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoc3RyaW5nLT5pczhC
aXQoKSA/IFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSA6IDApLCBzY3JhdGNoR1BSKTsKICAgICAg
ICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKHN0cmluZy0+bGVuZ3RoKCkpLCBhbGxvY2F0
b3JHUFIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYm9vbCBjYW5CZVJvcGUgPSAh
bV9zdGF0ZS5mb3JOb2RlKGVkZ2VzWzBdKS5pc1R5cGUoU3BlY1N0cmluZ0lkZW50KTsKKyAgICAg
ICAgICAgIGJvb2wgbmVlZHNSb3BlQ2FzZSA9IGNhbkJlUm9wZShlZGdlc1swXSk7CiAgICAgICAg
ICAgICBtX2ppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhvcEdQUnNbMF0sIEpTU3Ry
aW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBzY3JhdGNoMkdQUik7CiAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXAgaXNSb3BlOwotICAgICAgICAgICAgaWYgKGNhbkJlUm9wZSkKKyAgICAgICAg
ICAgIGlmIChuZWVkc1JvcGVDYXNlKQogICAgICAgICAgICAgICAgIGlzUm9wZSA9IG1faml0LmJy
YW5jaElmUm9wZVN0cmluZ0ltcGwoc2NyYXRjaDJHUFIpOwogCiAgICAgICAgICAgICBtX2ppdC5s
b2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gyR1BSLCBTdHJpbmdJbXBsOjpmbGFn
c09mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gyR1BSLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZz
ZXQoKSksIGFsbG9jYXRvckdQUik7CiAKLSAgICAgICAgICAgIGlmIChjYW5CZVJvcGUpIHsKKyAg
ICAgICAgICAgIGlmIChuZWVkc1JvcGVDYXNlKSB7CiAgICAgICAgICAgICAgICAgYXV0byBkb25l
ID0gbV9qaXQuanVtcCgpOwogCiAgICAgICAgICAgICAgICAgaXNSb3BlLmxpbmsoJm1faml0KTsK
LSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMTYoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG9wR1BS
c1swXSwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZsYWdzKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAg
ICAgICAgICAgICBtX2ppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG9wR1BSc1swXSwg
SlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZsYWdzKCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAg
ICAgICBtX2ppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG9wR1BSc1swXSwgSlNSb3Bl
U3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSwgYWxsb2NhdG9yR1BSKTsKICAgICAgICAgICAgICAg
ICBkb25lLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIH0KQEAgLTEzNDg0LDIzICsxMzQ4Niwy
MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpPdmVyZmxvdywKICAgICAgICAgICAgICAg
ICAgICAgVHJ1c3RlZEltbTMyKHN0cmluZy0+bGVuZ3RoKCkpLCBhbGxvY2F0b3JHUFIpKTsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGJvb2wgY2FuQmVSb3BlID0gIW1fc3RhdGUuZm9y
Tm9kZShlZGdlc1tpXSkuaXNUeXBlKFNwZWNTdHJpbmdJZGVudCk7CisgICAgICAgICAgICBib29s
IG5lZWRzUm9wZUNhc2UgPSBjYW5CZVJvcGUoZWRnZXNbaV0pOwogICAgICAgICAgICAgbV9qaXQu
bG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mob3BHUFJzW2ldLCBKU1N0cmluZzo6b2Zmc2V0
T2ZWYWx1ZSgpKSwgc2NyYXRjaDJHUFIpOwogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1w
IGlzUm9wZTsKLSAgICAgICAgICAgIGlmIChjYW5CZVJvcGUpCisgICAgICAgICAgICBpZiAobmVl
ZHNSb3BlQ2FzZSkKICAgICAgICAgICAgICAgICBpc1JvcGUgPSBtX2ppdC5icmFuY2hJZlJvcGVT
dHJpbmdJbXBsKHNjcmF0Y2gyR1BSKTsKIAotICAgICAgICAgICAgbV9qaXQuYW5kMTYoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gyR1BSLCBTdHJpbmdJbXBsOjpmbGFnc09mZnNldCgpKSwg
c2NyYXRjaEdQUik7CisgICAgICAgICAgICBtX2ppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc2NyYXRjaDJHUFIsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsK
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgVW5jb3VudGFi
bGUsIEpTVmFsdWVTb3VyY2UoKSwgbnVsbHB0ciwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFu
Y2hBZGQzMigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpPdmVyZmxvdywKICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gyR1BSLCBTdHJp
bmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSksIGFsbG9jYXRvckdQUikpOwotICAgICAgICAg
ICAgaWYgKGNhbkJlUm9wZSkgeworICAgICAgICAgICAgaWYgKG5lZWRzUm9wZUNhc2UpIHsKICAg
ICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAKICAgICAgICAgICAgICAg
ICBpc1JvcGUubGluaygmbV9qaXQpOwotICAgICAgICAgICAgICAgIG1faml0LmFuZDE2KENDYWxs
SGVscGVyczo6QWRkcmVzcyhvcEdQUnNbaV0sIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGbGFncygp
KSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgbV9qaXQuYW5kMzIoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKG9wR1BSc1tpXSwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZsYWdzKCkpLCBzY3Jh
dGNoR1BSKTsKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKG9wR1BSc1tpXSwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaDJH
UFIpOwogICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAg
ICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlU291cmNlKCksIG51bGxwdHIsCkBAIC0xMzUxMCwxNCAr
MTM1MTIsMzggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1ha2VSb3BlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9qaXQuc3RvcmUxNihz
Y3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1JvcGVTdHJpbmc6
Om9mZnNldE9mRmxhZ3MoKSkpOworCiAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG9rID0gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgYWxsb2NhdG9yR1BSLCBUcnVzdGVkSW1t
MzIoMCkpOwogICAgICAgICBtX2ppdC5hYm9ydFdpdGhSZWFzb24oREZHTmVnYXRpdmVTdHJpbmdM
ZW5ndGgpOwogICAgICAgICBvay5saW5rKCZtX2ppdCk7CiAgICAgfQotICAgIG1faml0LnN0b3Jl
MzIoYWxsb2NhdG9yR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1JvcGVT
dHJpbmc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKworICAgIHN0YXRpY19hc3NlcnQoU3RyaW5nSW1w
bDo6ZmxhZ0lzOEJpdCgpID09IEpTUm9wZVN0cmluZzo6aXM4Qml0SW5Qb2ludGVyLCAiIik7Cisg
ICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSksIHNj
cmF0Y2hHUFIpOworICAgIG1faml0Lm9yUHRyKG9wR1BSc1swXSwgc2NyYXRjaEdQUik7CisgICAg
bV9qaXQub3JQdHIoVHJ1c3RlZEltbVB0cihKU1N0cmluZzo6aXNSb3BlSW5Qb2ludGVyKSwgc2Ny
YXRjaEdQUik7CisgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZpYmVyMCgpKSk7CisKKyAg
ICBtX2ppdC5tb3ZlKG9wR1BSc1sxXSwgc2NyYXRjaEdQUik7CisgICAgbV9qaXQubHNoaWZ0UHRy
KFRydXN0ZWRJbW0zMigzMiksIHNjcmF0Y2hHUFIpOworICAgIG1faml0Lm9yUHRyKGFsbG9jYXRv
ckdQUiwgc2NyYXRjaEdQUik7CisgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZpYmVyMSgp
KSk7CisKKyAgICBpZiAobnVtT3BHUFJzID09IDIpIHsKKyAgICAgICAgbV9qaXQubW92ZShvcEdQ
UnNbMV0sIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5yc2hpZnRQdHIoVHJ1c3RlZEltbTMy
KDMyKSwgc2NyYXRjaEdQUik7CisgICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJl
cjIoKSkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1faml0Lm1vdmUob3BHUFJzWzFdLCBzY3Jh
dGNoR1BSKTsKKyAgICAgICAgbV9qaXQucnNoaWZ0UHRyKFRydXN0ZWRJbW0zMigzMiksIHNjcmF0
Y2hHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKG9wR1BSc1syXSwgc2NyYXRjaDJHUFIpOworICAg
ICAgICBtX2ppdC5sc2hpZnRQdHIoVHJ1c3RlZEltbTMyKDE2KSwgc2NyYXRjaDJHUFIpOworICAg
ICAgICBtX2ppdC5vclB0cihzY3JhdGNoMkdQUiwgc2NyYXRjaEdQUik7CisgICAgICAgIG1faml0
LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpT
Um9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjIoKSkpOworICAgIH0KKwogICAgIGF1dG8gaXNOb25F
bXB0eVN0cmluZyA9IG1faml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIGFs
bG9jYXRvckdQUik7CiAKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1faml0LmdyYXBoKCksIGpzRW1wdHlTdHJpbmcoJm1faml0LmdyYXBoKCkubV92bSkpLCByZXN1
bHRHUFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CmluZGV4IGYyYjQzMDNkZTYzNDFkMzU0Nzg4OWFhM2ZkZmRjYzVjMTE3YTYwOWQuLjdlMDc4NTQ5
NWE5NDYwNDU3YTVlNTY5ZjZkNTNjMDA1ODkxYTNkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTU3Nyw2ICs1NzcsOCBAQCBjbGFzcyBT
cGVjdWxhdGl2ZUpJVCB7CiAgICAgYm9vbCBpc0tub3duTm90TnVtYmVyKE5vZGUqIG5vZGUpIHsg
cmV0dXJuICEobV9zdGF0ZS5mb3JOb2RlKG5vZGUpLm1fdHlwZSAmIFNwZWNGdWxsTnVtYmVyKTsg
fQogICAgIGJvb2wgaXNLbm93bk5vdENlbGwoTm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRl
LmZvck5vZGUobm9kZSkubV90eXBlICYgU3BlY0NlbGwpOyB9CiAgICAgYm9vbCBpc0tub3duTm90
T3RoZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBl
ICYgU3BlY090aGVyKTsgfQorCisgICAgYm9vbCBjYW5CZVJvcGUoRWRnZSYpOwogICAgIAogICAg
IFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudGlmaWVyVUlEKHVuc2lnbmVkIGluZGV4KQogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuY3BwCmluZGV4IGEwNmFjNGU1MzU5NzVhYzg0OTMxYmQyY2RhMmUxOWYyMDBiYmZh
NGMuLjljM2MxYzdhYzZmYThhZjI4MjYzYmFiMmE3MjY5ZGI1NTBlMzU2ZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmNwcApAQCAtODYsNiArODYsNyBAQCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5KCkKICAgICBKU0NlbGxfdHlwZUluZm9GbGFncy5jaGFuZ2VQYXJlbnQoJkpT
Q2VsbF91c2VmdWxCeXRlcyk7CiAgICAgSlNDZWxsX2NlbGxTdGF0ZS5jaGFuZ2VQYXJlbnQoJkpT
Q2VsbF91c2VmdWxCeXRlcyk7CiAgICAgSlNSb3BlU3RyaW5nX2ZsYWdzLmNoYW5nZVBhcmVudCgm
SlNSb3BlU3RyaW5nX2ZpYmVyMCk7CisgICAgSlNSb3BlU3RyaW5nX2xlbmd0aC5jaGFuZ2VQYXJl
bnQoJkpTUm9wZVN0cmluZ19maWJlcjEpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQoIUpTQ2VsbF9m
cmVlTGlzdE5leHQub2Zmc2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAppbmRleCAxYmRjZjdlZjE3ZTk2NTBi
MzcxNjdiZWQwOTZlZTkwMTIxZTBhNjA2Li40YmY4OGI1NDEzNzMwMWY4NTMzM2M0OGQyY2Q3YmIx
NGM0NWQ3MDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtODksMTIgKzg5LDEwIEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3JfZW5k
U3RydWN0dXJlUHJvcGVydHlJbmRleCwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjplbmRTdHJ1
Y3R1cmVQcm9wZXJ0eUluZGV4T2Zmc2V0KCkpIFwKICAgICBtYWNybyhKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3JfaW5kZXhMZW5ndGgsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6aW5kZXhlZExl
bmd0aE9mZnNldCgpKSBcCiAgICAgbWFjcm8oSlNSb3BlU3RyaW5nX2ZsYWdzLCBKU1JvcGVTdHJp
bmc6Om9mZnNldE9mRmxhZ3MoKSkgXAotICAgIG1hY3JvKEpTUm9wZVN0cmluZ19maWJlcjAsIEpT
Um9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjAoKSkgXAogICAgIG1hY3JvKEpTUm9wZVN0cmluZ19s
ZW5ndGgsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXAotICAgIG1hY3JvKEpTUm9w
ZVN0cmluZ19maWJlcjFMb3dlciwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZpYmVyMUxvd2VyKCkp
IFwKLSAgICBtYWNybyhKU1JvcGVTdHJpbmdfZmliZXIxVXBwZXIsIEpTUm9wZVN0cmluZzo6b2Zm
c2V0T2ZGaWJlcjFVcHBlcigpKSBcCi0gICAgbWFjcm8oSlNSb3BlU3RyaW5nX2ZpYmVyMkxvd2Vy
LCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXIyTG93ZXIoKSkgXAotICAgIG1hY3JvKEpTUm9w
ZVN0cmluZ19maWJlcjJVcHBlciwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZpYmVyMlVwcGVyKCkp
IFwKKyAgICBtYWNybyhKU1JvcGVTdHJpbmdfZmliZXIwLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9m
RmliZXIwKCkpIFwKKyAgICBtYWNybyhKU1JvcGVTdHJpbmdfZmliZXIxLCBKU1JvcGVTdHJpbmc6
Om9mZnNldE9mRmliZXIxKCkpIFwKKyAgICBtYWNybyhKU1JvcGVTdHJpbmdfZmliZXIyLCBKU1Jv
cGVTdHJpbmc6Om9mZnNldE9mRmliZXIyKCkpIFwKICAgICBtYWNybyhKU1Njb3BlX25leHQsIEpT
U2NvcGU6Om9mZnNldE9mTmV4dCgpKSBcCiAgICAgbWFjcm8oSlNTeW1ib2xUYWJsZU9iamVjdF9z
eW1ib2xUYWJsZSwgSlNTeW1ib2xUYWJsZU9iamVjdDo6b2Zmc2V0T2ZTeW1ib2xUYWJsZSgpKSBc
CiAgICAgbWFjcm8oSlNXcmFwcGVyT2JqZWN0X2ludGVybmFsVmFsdWUsIEpTV3JhcHBlck9iamVj
dDo6aW50ZXJuYWxWYWx1ZU9mZnNldCgpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggOWIzOGYzYTE3MmRiZjViY2YzNDA4NTRiMmZmMDc3
YmRiNjM3YjRmYy4uOTU4N2RmODA3ZDE4ZTA4YzM0NjkxMWNkYzNjMzQ1OWJjOWI5MGIwNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNjUy
NCw2ICs2NTI0LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIG51bUtpZHMg
PSAyOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBMQmFzaWNCbG9jayBlbXB0eUNhc2Ug
PSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CiAgICAgICAgIApAQCAtNjUzMiwxOCArNjUzMyw4IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBhbGxvY2F0ZUNlbGwoCiAgICAgICAgICAg
ICBtX291dC5jb25zdEludFB0cihhbGxvY2F0b3IubG9jYWxBbGxvY2F0b3IoKSksIHZtKCkuc3Ry
aW5nU3RydWN0dXJlLmdldCgpLCBzbG93UGF0aCk7CiAgICAgICAgIAotICAgICAgICBtX291dC5z
dG9yZVB0cihtX291dC5iaXRPcihraWRzWzBdLCBtX291dC5jb25zdEludFB0cihKU1N0cmluZzo6
aXNSb3BlSW5Qb2ludGVyKSksIHJlc3VsdCwgbV9oZWFwcy5KU1JvcGVTdHJpbmdfZmliZXIwKTsK
LQotICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNhc3RUb0ludDMyKGtpZHNbMV0pLCByZXN1
bHQsIG1faGVhcHMuSlNSb3BlU3RyaW5nX2ZpYmVyMUxvd2VyKTsKLSAgICAgICAgbV9vdXQuc3Rv
cmUzMkFzMTYobV9vdXQuY2FzdFRvSW50MzIobV9vdXQubFNocihraWRzWzFdLCBtX291dC5jb25z
dEludDMyKDMyKSkpLCByZXN1bHQsIG1faGVhcHMuSlNSb3BlU3RyaW5nX2ZpYmVyMVVwcGVyKTsK
LQotICAgICAgICBpZiAobnVtS2lkcyA9PSAzKSB7Ci0gICAgICAgICAgICBtX291dC5zdG9yZTMy
KG1fb3V0LmNhc3RUb0ludDMyKGtpZHNbMl0pLCByZXN1bHQsIG1faGVhcHMuSlNSb3BlU3RyaW5n
X2ZpYmVyMkxvd2VyKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzJBczE2KG1fb3V0LmNhc3RU
b0ludDMyKG1fb3V0LmxTaHIoa2lkc1syXSwgbV9vdXQuY29uc3RJbnQzMigzMikpKSwgcmVzdWx0
LCBtX2hlYXBzLkpTUm9wZVN0cmluZ19maWJlcjJVcHBlcik7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmludDMyWmVybywgcmVzdWx0LCBtX2hlYXBz
LkpTUm9wZVN0cmluZ19maWJlcjJMb3dlcik7Ci0gICAgICAgICAgICBtX291dC5zdG9yZTMyQXMx
NihtX291dC5pbnQzMlplcm8sIHJlc3VsdCwgbV9oZWFwcy5KU1JvcGVTdHJpbmdfZmliZXIyVXBw
ZXIpOwotICAgICAgICB9CisgICAgICAgIC8vIFRoaXMgcHV0cyBudWxscHRyIGZvciB0aGUgZmly
c3QgZmliZXIuIEl0IG1ha2VzIHZpc2l0Q2hpbGRyZW4gc2FmZSBldmVuIGlmIHRoaXMgSlNSb3Bl
U3RyaW5nIGlzIGRpc2NhcmRlZCBkdWUgdG8gdGhlIHNwZWN1bGF0aW9uIGZhaWx1cmUgaW4gdGhl
IGZvbGxvd2luZyBwYXRoLgorICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0
cihKU1N0cmluZzo6aXNSb3BlSW5Qb2ludGVyKSwgcmVzdWx0LCBtX2hlYXBzLkpTUm9wZVN0cmlu
Z19maWJlcjApOwogCiAgICAgICAgIGF1dG8gZ2V0RmxhZ3NBbmRMZW5ndGggPSBbJl0gKEVkZ2Um
IGVkZ2UsIExWYWx1ZSBjaGlsZCkgewogICAgICAgICAgICAgaWYgKEpTU3RyaW5nKiBzdHJpbmcg
PSBlZGdlLT5keW5hbWljQ2FzdENvbnN0YW50PEpTU3RyaW5nKj4odm0oKSkpIHsKQEAgLTY1NjAs
NyArNjU1MSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBtX291dC5icmFu
Y2goaXNSb3BlU3RyaW5nKGNoaWxkLCBlZGdlKSwgdW5zdXJlKHJvcGVDYXNlKSwgdW5zdXJlKG5v
dFJvcGVDYXNlKSk7CiAKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQu
YXBwZW5kVG8ocm9wZUNhc2UsIG5vdFJvcGVDYXNlKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJs
b2NrIGZsYWdzRm9yUm9wZSA9IG1fb3V0LmFuY2hvcihtX291dC5sb2FkMTZaZXJvRXh0MzIoY2hp
bGQsIG1faGVhcHMuSlNSb3BlU3RyaW5nX2ZsYWdzKSk7CisgICAgICAgICAgICBWYWx1ZUZyb21C
bG9jayBmbGFnc0ZvclJvcGUgPSBtX291dC5hbmNob3IobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUo
Y2hpbGQsIG1faGVhcHMuSlNSb3BlU3RyaW5nX2ZsYWdzKSk7CiAgICAgICAgICAgICBWYWx1ZUZy
b21CbG9jayBsZW5ndGhGb3JSb3BlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmxvYWQzMk5vbk5lZ2F0
aXZlKGNoaWxkLCBtX2hlYXBzLkpTUm9wZVN0cmluZ19sZW5ndGgpKTsKICAgICAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKIApAQCAtNjU5MSwxNCArNjU4MiwyOSBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgICAgICAgICAgfTsKICAgICAgICAgICAgIGZsYWdzQW5kTGVuZ3Ro
ID0gbWVyZ2VGbGFnc0FuZExlbmd0aChlZGdlc1tpXSwga2lkc1tpXSwgZmxhZ3NBbmRMZW5ndGgp
OwogICAgICAgICB9Ci0gICAgICAgIG1fb3V0LnN0b3JlMzJBczE2KGZsYWdzQW5kTGVuZ3RoLmZs
YWdzLCByZXN1bHQsIG1faGVhcHMuSlNSb3BlU3RyaW5nX2ZsYWdzKTsKLSAgICAgICAgbV9vdXQu
c3RvcmUzMihmbGFnc0FuZExlbmd0aC5sZW5ndGgsIHJlc3VsdCwgbV9oZWFwcy5KU1JvcGVTdHJp
bmdfbGVuZ3RoKTsKKworICAgICAgICBtX291dC5zdG9yZVB0cigKKyAgICAgICAgICAgIG1fb3V0
LmJpdE9yKAorICAgICAgICAgICAgICAgIG1fb3V0LmJpdE9yKGtpZHNbMF0sIG1fb3V0LmNvbnN0
SW50UHRyKEpTU3RyaW5nOjppc1JvcGVJblBvaW50ZXIpKSwKKyAgICAgICAgICAgICAgICBtX291
dC5iaXRBbmQobV9vdXQuY29uc3RJbnRQdHIoSlNSb3BlU3RyaW5nOjppczhCaXRJblBvaW50ZXIp
LCBtX291dC56ZXJvRXh0UHRyKGZsYWdzQW5kTGVuZ3RoLmZsYWdzKSkpLAorICAgICAgICAgICAg
cmVzdWx0LCBtX2hlYXBzLkpTUm9wZVN0cmluZ19maWJlcjApOworICAgICAgICBtX291dC5zdG9y
ZVB0cigKKyAgICAgICAgICAgIG1fb3V0LmJpdE9yKG1fb3V0Lnplcm9FeHRQdHIoZmxhZ3NBbmRM
ZW5ndGgubGVuZ3RoKSwgbV9vdXQuc2hsKGtpZHNbMV0sIG1fb3V0LmNvbnN0SW50MzIoMzIpKSks
CisgICAgICAgICAgICByZXN1bHQsIG1faGVhcHMuSlNSb3BlU3RyaW5nX2ZpYmVyMSk7CisgICAg
ICAgIGlmIChudW1LaWRzID09IDIpCisgICAgICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5s
U2hyKGtpZHNbMV0sIG1fb3V0LmNvbnN0SW50MzIoMzIpKSwgcmVzdWx0LCBtX2hlYXBzLkpTUm9w
ZVN0cmluZ19maWJlcjIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX291dC5zdG9yZVB0
cihtX291dC5iaXRPcihtX291dC5sU2hyKGtpZHNbMV0sIG1fb3V0LmNvbnN0SW50MzIoMzIpKSwg
bV9vdXQuc2hsKGtpZHNbMl0sIG1fb3V0LmNvbnN0SW50MzIoMTYpKSksIHJlc3VsdCwgbV9oZWFw
cy5KU1JvcGVTdHJpbmdfZmliZXIyKTsKICAgICAgICAgCiAgICAgICAgIG11dGF0b3JGZW5jZSgp
OwotICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0
LnNlbGVjdChtX291dC5pc1plcm8zMihmbGFnc0FuZExlbmd0aC5sZW5ndGgpLCB3ZWFrUG9pbnRl
cihqc0VtcHR5U3RyaW5nKCZtX2dyYXBoLm1fdm0pKSwgcmVzdWx0KSk7CisgICAgICAgIFZhbHVl
RnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IocmVzdWx0KTsKKyAgICAgICAgbV9v
dXQuYnJhbmNoKG1fb3V0LmlzWmVybzMyKGZsYWdzQW5kTGVuZ3RoLmxlbmd0aCksIHJhcmVseShl
bXB0eUNhc2UpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbikpOworCisgICAgICAgIExCYXNpY0Jsb2Nr
IGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oZW1wdHlDYXNlLCBzbG93UGF0aCk7CisgICAgICAg
IFZhbHVlRnJvbUJsb2NrIGVtcHR5UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHdlYWtQb2ludGVyKGpz
RW1wdHlTdHJpbmcoJm1fZ3JhcGgubV92bSkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwogICAgICAgICAKLSAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5h
cHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
c2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWU7
CiAgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgICAgIHN3aXRjaCAobnVtS2lkcykg
ewpAQCAtNjYyNiw3ICs2NjMyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
Y29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKElu
dDY0LCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQu
cGhpKEludDY0LCBmYXN0UmVzdWx0LCBlbXB0eVJlc3VsdCwgc2xvd1Jlc3VsdCkpOwogICAgIH0K
ICAgICAKICAgICB2b2lkIGNvbXBpbGVTdHJpbmdDaGFyQXQoKQpAQCAtMTU2ODAsNiArMTU2ODYs
MTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaXND
ZWxsKCkgJiYgdmFsdWUuYXNDZWxsKCktPnR5cGUoKSA9PSBTdHJpbmdUeXBlICYmICFhc1N0cmlu
Zyh2YWx1ZSktPmlzUm9wZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuYm9v
bGVhbkZhbHNlOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gZWRn
ZS0+dHJ5R2V0U3RyaW5nKG1fZ3JhcGgpOworICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc051bGwo
KSkgeworICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgdmFsdWUgaXMgTGF6eVZhbHVlLCBpdCB3
aWxsIGJlIGNvbnZlcnRlZCB0byBKU1N0cmluZywgYW5kIHRoZSByZXN1bHQgbXVzdCBiZSBub24t
cm9wZSBzdHJpbmcuCisgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmJvb2xlYW5GYWxzZTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBtX291dC50ZXN0Tm9u
WmVyb1B0cihtX291dC5sb2FkUHRyKHN0cmluZywgbV9oZWFwcy5KU1N0cmluZ192YWx1ZSksIG1f
b3V0LmNvbnN0SW50UHRyKEpTU3RyaW5nOjppc1JvcGVJblBvaW50ZXIpKTsKQEAgLTE1Njk0LDYg
KzE1NzA1LDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgaWYgKHZh
bHVlLmlzQ2VsbCgpICYmIHZhbHVlLmFzQ2VsbCgpLT50eXBlKCkgPT0gU3RyaW5nVHlwZSAmJiAh
YXNTdHJpbmcodmFsdWUpLT5pc1JvcGUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1f
b3V0LmJvb2xlYW5UcnVlOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgU3RyaW5nIHZhbHVl
ID0gZWRnZS0+dHJ5R2V0U3RyaW5nKG1fZ3JhcGgpOworICAgICAgICAgICAgaWYgKCF2YWx1ZS5p
c051bGwoKSkgeworICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgdmFsdWUgaXMgTGF6eVZhbHVl
LCBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBKU1N0cmluZywgYW5kIHRoZSByZXN1bHQgbXVzdCBi
ZSBub24tcm9wZSBzdHJpbmcuCisgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmJvb2xlYW5U
cnVlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG1fb3V0LnRl
c3RJc1plcm9QdHIobV9vdXQubG9hZFB0cihzdHJpbmcsIG1faGVhcHMuSlNTdHJpbmdfdmFsdWUp
LCBtX291dC5jb25zdEludFB0cihKU1N0cmluZzo6aXNSb3BlSW5Qb2ludGVyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKaW5kZXggNGM0NGY0YjA1NWMxOTI0
YjNmNTc0MWU0MDQ5ZGRkODEwZDQ0Mzk5Mi4uYzgzNmZhMmUyZGZhOTljNjQ2NzhiMzk2ODY0ZTdj
ZWM0MmZkYmYzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNw
cApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgSlNTdHJpbmc6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICAKICAgICB1aW50cHRyX3QgcG9pbnRl
ciA9IHRoaXNPYmplY3QtPm1fZmliZXI7CiAgICAgaWYgKHBvaW50ZXIgJiBpc1JvcGVJblBvaW50
ZXIpIHsKLSAgICAgICAgaWYgKChwb2ludGVyICYgSlNSb3BlU3RyaW5nOjpzdHJpbmdNYXNrKSA9
PSBKU1JvcGVTdHJpbmc6OnN1YnN0cmluZ1NlbnRpbmVsKCkpIHsKKyAgICAgICAgaWYgKHBvaW50
ZXIgJiBKU1JvcGVTdHJpbmc6OmlzU3Vic3RyaW5nSW5Qb2ludGVyKSB7CiAgICAgICAgICAgICB2
aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKHN0YXRpY19jYXN0PEpTUm9wZVN0cmluZyo+KHRoaXNP
YmplY3QpLT5maWJlcjEoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IDZmYzU0Njc5ZTI3ZTYzZDRk
MzFiZjg2ZTk4YTQwZDg5ZWNmOWJjOWUuLjc5OTBiMzBhMjk4ZWQ2NTYxNGIyZjBmZjUyMThkNDFk
MDBiODc4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAt
ODYsOSArODYsOSBAQCBzdHJ1Y3QgU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nIHsKIC8v
CiAvLyAgICAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgIDggICAgICAgIDEwICAg
ICAgICAgICAgICAgMTYgICAgICAgICAgICAgICAgICAgICAgIDMyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQ4CiAvLyBKU1N0cmluZyAgICAgWyAgIElEICAgICAgXVsgIGhl
YWRlciAgXVsgICBTdHJpbmcgcG9pbnRlciAgICAgIDBdCi0vLyBKU1JvcGVTdHJpbmcgWyAgIElE
ICAgICAgXVsgIGhlYWRlciAgXVsgZmxhZ3MgXVsgMXN0IGZpYmVyICAgIDFdWyAgbGVuZ3RoICBd
WzJuZCBsb3dlcjMyXVsybmQgdXBwZXIxNl1bM3JkIGxvd2VyMTZdWzNyZCB1cHBlcjMyXQorLy8g
SlNSb3BlU3RyaW5nIFsgICBJRCAgICAgIF1bICBoZWFkZXIgIF1bICAgMXN0IGZpYmVyICAgICAg
ICAgeHl6XVsgIGxlbmd0aCAgXVsybmQgbG93ZXIzMl1bMm5kIHVwcGVyMTZdWzNyZCBsb3dlcjE2
XVszcmQgdXBwZXIzMl0KIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXgotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JvcGUgYml0CisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDooaXM4Qml0KSx5Oihpc1N1YnN0cmlu
ZyksejooaXNSb3BlKSBiaXQgZmxhZ3MKIGNsYXNzIEpTU3RyaW5nIDogcHVibGljIEpTQ2VsbCB7
CiBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTI2NiwxMyArMjY2LDE1IEBAIGNs
YXNzIEpTU3RyaW5nIDogcHVibGljIEpTQ2VsbCB7CiBjbGFzcyBKU1JvcGVTdHJpbmcgZmluYWwg
OiBwdWJsaWMgSlNTdHJpbmcgewogICAgIGZyaWVuZCBjbGFzcyBKU1N0cmluZzsKIHB1YmxpYzoK
KyAgICAvLyBXZSB1c2UgbG93ZXIgM2JpdHMgb2YgZmliZXIwIGZvciBmbGFncy4gVGhlc2UgYml0
cyBhcmUgdXNhYmxlIGR1ZSB0byBhbGlnbm1lbnQsIGFuZCBpdCBpcyBPSyBldmVuIGluIDMyYml0
IGFyY2hpdGVjdHVyZS4KKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBpczhCaXRJblBv
aW50ZXIgPSBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSk7
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3QgaXNTdWJzdHJpbmdJblBvaW50ZXIgPSAw
eDI7CisgICAgc3RhdGljX2Fzc2VydChpczhCaXRJblBvaW50ZXIgPT0gMGIxMDAsICIiKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KGlzU3Vic3RyaW5nSW5Qb2ludGVyID09IDBiMDEwLCAiIik7CisgICAg
c3RhdGljX2Fzc2VydChpc1JvcGVJblBvaW50ZXIgPT0gMGIwMDEsICIiKTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVpbnRwdHJfdCBzdHJpbmdNYXNrID0gfihpc1JvcGVJblBvaW50ZXIgfCBpczhC
aXRJblBvaW50ZXIgfCBpc1N1YnN0cmluZ0luUG9pbnRlcik7CiAjaWYgQ1BVKEFERFJFU1M2NCkK
ICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZih1aW50cHRyX3QpID09IHNpemVvZih1aW50NjRfdCks
ICIiKTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBmbGFnTWFzayA9IDB4ZmZmZjAw
MDAwMDAwMDAwMFVMTDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBzdHJpbmdNYXNr
ID0gfihmbGFnTWFzayB8IGlzUm9wZUluUG9pbnRlcik7Ci0gICAgc3RhdGljX2Fzc2VydChTdHJp
bmdJbXBsOjpmbGFnSXM4Qml0KCkgPT0gMGIxMDAsICIiKTsKLSAgICBzdGF0aWMgY29uc3RleHBy
IHVpbnRwdHJfdCBpczhCaXRJblBvaW50ZXIgPSBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KFN0cmlu
Z0ltcGw6OmZsYWdJczhCaXQoKSkgPDwgNDg7Ci0KICAgICBjbGFzcyBDb21wYWN0RmliZXJzIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIEpTU3RyaW5nKiBmaWJlcjEoKSBjb25zdApAQCAtMjg5LDEz
ICsyOTEsMTMgQEAgY2xhc3MgSlNSb3BlU3RyaW5nIGZpbmFsIDogcHVibGljIEpTU3RyaW5nIHsK
IAogICAgICAgICBKU1N0cmluZyogZmliZXIyKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU1N0cmluZyo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4o
bV9maWJlcjJMb3dlcikgfCAoc3RhdGljX2Nhc3Q8dWludHB0cl90PihtX2ZpYmVyMlVwcGVyKSA8
PCAzMikpOworICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU1N0cmluZyo+KHN0YXRp
Y19jYXN0PHVpbnRwdHJfdD4obV9maWJlcjJMb3dlcikgfCAoc3RhdGljX2Nhc3Q8dWludHB0cl90
PihtX2ZpYmVyMlVwcGVyKSA8PCAxNikpOwogICAgICAgICB9CiAgICAgICAgIHZvaWQgaW5pdGlh
bGl6ZUZpYmVyMihKU1N0cmluZyogZmliZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHVpbnRw
dHJfdCBwb2ludGVyID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZmliZXIpOwotICAgICAgICAg
ICAgbV9maWJlcjJMb3dlciA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2ludGVyKTsKLSAgICAg
ICAgICAgIG1fZmliZXIyVXBwZXIgPSBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9pbnRlciA+PiAz
Mik7CisgICAgICAgICAgICBtX2ZpYmVyMkxvd2VyID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBv
aW50ZXIpOworICAgICAgICAgICAgbV9maWJlcjJVcHBlciA9IHN0YXRpY19jYXN0PHVpbnQzMl90
Pihwb2ludGVyID4+IDE2KTsKICAgICAgICAgfQogCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CkBAIC0zMDUsMjIgKzMwNywxOCBAQCBjbGFzcyBK
U1JvcGVTdHJpbmcgZmluYWwgOiBwdWJsaWMgSlNTdHJpbmcgewogICAgICAgICB9CiAKICAgICAg
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkxlbmd0aCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihDb21wYWN0RmliZXJzLCBtX2xlbmd0aCk7IH0KLSAgICAgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZkZpYmVyMUxvd2VyKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvbXBhY3RG
aWJlcnMsIG1fZmliZXIxTG93ZXIpOyB9Ci0gICAgICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0
T2ZGaWJlcjFVcHBlcigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb21wYWN0RmliZXJzLCBt
X2ZpYmVyMVVwcGVyKTsgfQotICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIy
TG93ZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29tcGFjdEZpYmVycywgbV9maWJlcjJM
b3dlcik7IH0KLSAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpYmVyMlVwcGVyKCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvbXBhY3RGaWJlcnMsIG1fZmliZXIyVXBwZXIpOyB9
CisgICAgICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGaWJlcjEoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoQ29tcGFjdEZpYmVycywgbV9sZW5ndGgpOyB9CisgICAgICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZGaWJlcjIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29tcGFj
dEZpYmVycywgbV9maWJlcjFVcHBlcik7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIHVpbnQz
Ml90IG1fbGVuZ3RoIHsgMCB9OwogICAgICAgICB1aW50MzJfdCBtX2ZpYmVyMUxvd2VyIHsgMCB9
OwogICAgICAgICB1aW50MTZfdCBtX2ZpYmVyMVVwcGVyIHsgMCB9OwotICAgICAgICB1aW50MTZf
dCBtX2ZpYmVyMlVwcGVyIHsgMCB9OwotICAgICAgICB1aW50MzJfdCBtX2ZpYmVyMkxvd2VyIHsg
MCB9OworICAgICAgICB1aW50MTZfdCBtX2ZpYmVyMkxvd2VyIHsgMCB9OworICAgICAgICB1aW50
MzJfdCBtX2ZpYmVyMlVwcGVyIHsgMCB9OwogICAgIH07CiAgICAgc3RhdGljX2Fzc2VydChzaXpl
b2YoQ29tcGFjdEZpYmVycykgPT0gc2l6ZW9mKHZvaWQqKSAqIDIsICIiKTsKICNlbHNlCi0gICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3Qgc3RyaW5nTWFzayA9IH4oaXNSb3BlSW5Qb2ludGVy
KTsKLQogICAgIGNsYXNzIENvbXBhY3RGaWJlcnMgewogICAgIHB1YmxpYzoKICAgICAgICAgSlNT
dHJpbmcqIGZpYmVyMSgpIGNvbnN0CkBAIC0zNDcsMjQgKzM0NSwxMiBAQCBjbGFzcyBKU1JvcGVT
dHJpbmcgZmluYWwgOiBwdWJsaWMgSlNTdHJpbmcgewogICAgICAgICAgICAgbV9sZW5ndGggPSBs
ZW5ndGg7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGluaXRpYWxpemVJczhCaXQoYm9vbCBm
bGFnKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZmxhZykKLSAgICAgICAgICAgICAgICBt
X2ZsYWdzIHw9IHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oU3RyaW5nSW1wbDo6ZmxhZ0lzOEJpdCgp
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX2ZsYWdzICY9IH5zdGF0aWNf
Y2FzdDx1aW50cHRyX3Q+KFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBib29sIGlzOEJpdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2Zs
YWdzICYgc3RhdGljX2Nhc3Q8dWludHB0cl90PihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpOwot
ICAgICAgICB9Ci0KICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkxlbmd0aCgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb21wYWN0RmliZXJzLCBtX2xlbmd0aCk7IH0KKyAgICAg
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpYmVyMSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihDb21wYWN0RmliZXJzLCBtX2ZpYmVyMSk7IH0KKyAgICAgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZkZpYmVyMigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb21wYWN0RmliZXJz
LCBtX2ZpYmVyMik7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIHVpbnQzMl90IG1fbGVuZ3Ro
IHsgMCB9OwotICAgICAgICB1aW50MzJfdCBtX2ZsYWdzIHsgMCB9OwogICAgICAgICBKU1N0cmlu
ZyogbV9maWJlcjEgeyBudWxscHRyIH07CiAgICAgICAgIEpTU3RyaW5nKiBtX2ZpYmVyMiB7IG51
bGxwdHIgfTsKICAgICB9OwpAQCAtNDU2LDE0ICs0NDIsMTggQEAgY2xhc3MgSlNSb3BlU3RyaW5n
IGZpbmFsIDogcHVibGljIEpTU3RyaW5nIHsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZUlzOEJpdChi
b29sIGZsYWcpIGNvbnN0CiAgICAgewotI2lmIENQVShBRERSRVNTNjQpCiAgICAgICAgIGlmIChm
bGFnKQogICAgICAgICAgICAgbV9maWJlciB8PSBpczhCaXRJblBvaW50ZXI7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIG1fZmliZXIgJj0gfmlzOEJpdEluUG9pbnRlcjsKLSNlbHNlCi0gICAg
ICAgIG1fY29tcGFjdEZpYmVycy5pbml0aWFsaXplSXM4Qml0KGZsYWcpOwotI2VuZGlmCisgICAg
fQorCisgICAgdm9pZCBpbml0aWFsaXplSXNTdWJzdHJpbmcoYm9vbCBmbGFnKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKGZsYWcpCisgICAgICAgICAgICBtX2ZpYmVyIHw9IGlzU3Vic3RyaW5n
SW5Qb2ludGVyOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2ZpYmVyICY9IH5pc1N1YnN0
cmluZ0luUG9pbnRlcjsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaW5pdGlhbGl6
ZUxlbmd0aCh1bnNpZ25lZCBsZW5ndGgpCkBAIC01NDksMjMgKzUzOSwxMCBAQCBjbGFzcyBKU1Jv
cGVTdHJpbmcgZmluYWwgOiBwdWJsaWMgSlNTdHJpbmcgewogCiBwdWJsaWM6CiAgICAgc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZkxlbmd0aCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1Jv
cGVTdHJpbmcsIG1fY29tcGFjdEZpYmVycykgKyBDb21wYWN0RmliZXJzOjpvZmZzZXRPZkxlbmd0
aCgpOyB9IC8vIDMyYnl0ZSB3aWR0aC4KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmxh
Z3MoKSB7IHJldHVybiBvZmZzZXRPZlZhbHVlKCk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9m
ZnNldE9mRmliZXIwKCkgeyByZXR1cm4gb2Zmc2V0T2ZWYWx1ZSgpOyB9Ci0jaWYgQ1BVKEFERFJF
U1M2NCkKLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmxhZ3MoKSB7IHJldHVybiBvZmZz
ZXRPZlZhbHVlKCkgKyBzaXplb2YodWludDE2X3QpICogMzsgfSAvLyAxNmJ5dGUgd2lkdGguCi0g
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpYmVyMUxvd2VyKCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEpTUm9wZVN0cmluZywgbV9jb21wYWN0RmliZXJzKSArIENvbXBhY3RGaWJlcnM6
Om9mZnNldE9mRmliZXIxTG93ZXIoKTsgfSAvLyAzMmJ5dGUgd2lkdGguCi0gICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZkZpYmVyMVVwcGVyKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpT
Um9wZVN0cmluZywgbV9jb21wYWN0RmliZXJzKSArIENvbXBhY3RGaWJlcnM6Om9mZnNldE9mRmli
ZXIxVXBwZXIoKTsgfSAvLyAxNmJ5dGUgd2lkdGguCi0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZkZpYmVyMkxvd2VyKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTUm9wZVN0cmluZywg
bV9jb21wYWN0RmliZXJzKSArIENvbXBhY3RGaWJlcnM6Om9mZnNldE9mRmliZXIyTG93ZXIoKTsg
fSAvLyAzMmJ5dGUgd2lkdGguCi0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpYmVyMlVw
cGVyKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTUm9wZVN0cmluZywgbV9jb21wYWN0Rmli
ZXJzKSArIENvbXBhY3RGaWJlcnM6Om9mZnNldE9mRmliZXIyVXBwZXIoKTsgfSAvLyAxNmJ5dGUg
d2lkdGguCi0jZWxpZiBVU0UoSlNWQUxVRTY0KQotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGFuIHRl
bXBvcmFyeSB3b3JrYXJvdW5kIHRvIG1ha2UgSlNDIGJ1aWx0IG9uIEFSTTY0XzMyLiBPbmNlIHdl
IHN0YXJ0IGNhbGN1bGF0aW5nIGJpdHMgYmVmb3JlIHN0b3JpbmcgdGhlbSB0byBKU1JvcGVTdHJp
bmcsCi0gICAgLy8gd2UgZG8gbm90IG5lZWQgdG8gaGF2ZSBzdWNoIGEgZGV0YWlsZWQgaW5mb3Jt
YXRpb24gYXMgYW4gb2Zmc2V0LiBBZnRlciB0aGF0LCB3aGF0IHdlIG9ubHkgbmVlZCBpcyBvZmZz
ZXRPZkZpYmVyMCwgb2Zmc2V0T2ZGaWJlcjEsIGFuZCBvZmZzZXRPZkZpYmVyMi4KLSAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MjM0Ci0gICAgc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZkZsYWdzKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJu
IDA7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIxTG93ZXIoKSB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0
T2ZGaWJlcjFVcHBlcigpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9Ci0gICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpYmVyMkxvd2VyKCkgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIyVXBw
ZXIoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQotI2VuZGlmCisgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpYmVyMSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihK
U1JvcGVTdHJpbmcsIG1fY29tcGFjdEZpYmVycykgKyBDb21wYWN0RmliZXJzOjpvZmZzZXRPZkZp
YmVyMSgpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpYmVyMigpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihKU1JvcGVTdHJpbmcsIG1fY29tcGFjdEZpYmVycykgKyBDb21wYWN0
RmliZXJzOjpvZmZzZXRPZkZpYmVyMigpOyB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoID0gMzsKIApAQCAtNTc1LDYgKzU1Miw3IEBAIGNs
YXNzIEpTUm9wZVN0cmluZyBmaW5hbCA6IHB1YmxpYyBKU1N0cmluZyB7CiAgICAgICAgIEpTUm9w
ZVN0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSb3BlU3Ry
aW5nPih2bS5oZWFwKSkgSlNSb3BlU3RyaW5nKHZtLCBzMSwgczIpOwogICAgICAgICBuZXdTdHJp
bmctPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgQVNTRVJUKG5ld1N0cmluZy0+bGVuZ3Ro
KCkpOworICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5pc1JvcGUoKSk7CiAgICAgICAgIHJldHVy
biBuZXdTdHJpbmc7CiAgICAgfQogICAgIHN0YXRpYyBKU1JvcGVTdHJpbmcqIGNyZWF0ZShWTSYg
dm0sIEpTU3RyaW5nKiBzMSwgSlNTdHJpbmcqIHMyLCBKU1N0cmluZyogczMpCkBAIC01ODIsNiAr
NTYwLDcgQEAgY2xhc3MgSlNSb3BlU3RyaW5nIGZpbmFsIDogcHVibGljIEpTU3RyaW5nIHsKICAg
ICAgICAgSlNSb3BlU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1JvcGVTdHJpbmc+KHZtLmhlYXApKSBKU1JvcGVTdHJpbmcodm0sIHMxLCBzMiwgczMpOwog
ICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgQVNTRVJUKG5l
d1N0cmluZy0+bGVuZ3RoKCkpOworICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5pc1JvcGUoKSk7
CiAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgfQogCkBAIC01OTAsNiArNTY5LDcgQEAg
Y2xhc3MgSlNSb3BlU3RyaW5nIGZpbmFsIDogcHVibGljIEpTU3RyaW5nIHsKICAgICAgICAgSlNS
b3BlU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1JvcGVT
dHJpbmc+KHZtLmhlYXApKSBKU1JvcGVTdHJpbmcodm0sIGJhc2UsIG9mZnNldCwgbGVuZ3RoKTsK
ICAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvblN1YnN0cmluZyh2bSwgZXhlYyk7CiAg
ICAgICAgIEFTU0VSVChuZXdTdHJpbmctPmxlbmd0aCgpKTsKKyAgICAgICAgQVNTRVJUKG5ld1N0
cmluZy0+aXNSb3BlKCkpOwogICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAgIH0KIApAQCAt
NTk4LDYgKzU3OCw3IEBAIGNsYXNzIEpTUm9wZVN0cmluZyBmaW5hbCA6IHB1YmxpYyBKU1N0cmlu
ZyB7CiAgICAgICAgIEpTUm9wZVN0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SlNSb3BlU3RyaW5nPih2bS5oZWFwLCBkZWZlcnJhbENvbnRleHQpKSBKU1JvcGVT
dHJpbmcoU3Vic3RyaW5nT2ZSZXNvbHZlZCwgdm0sIGJhc2UsIG9mZnNldCwgbGVuZ3RoKTsKICAg
ICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvblN1YnN0cmluZ09mUmVzb2x2ZWQodm0pOwog
ICAgICAgICBBU1NFUlQobmV3U3RyaW5nLT5sZW5ndGgoKSk7CisgICAgICAgIEFTU0VSVChuZXdT
dHJpbmctPmlzUm9wZSgpKTsKICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICB9CiAKQEAg
LTY4NSwyNiArNjY2LDYgQEAgY2xhc3MgSlNSb3BlU3RyaW5nIGZpbmFsIDogcHVibGljIEpTU3Ry
aW5nIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihiaXR3aXNlX2Nhc3Q8
dWludHB0cl90PihmaWJlcjIoKSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dHB0cl90IG5vdFN1YnN0cmluZ1NlbnRpbmVsKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIH0KLQotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IHN1YnN0cmluZ1NlbnRpbmVs
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAyOwotICAgIH0KLQotICAgIGJvb2wgaXNTdWJzdHJp
bmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIChtX2ZpYmVyICYgc3RyaW5nTWFzaykg
PT0gc3Vic3RyaW5nU2VudGluZWwoKTsKLSAgICB9Ci0KLSAgICB2b2lkIGluaXRpYWxpemVJc1N1
YnN0cmluZyhib29sIGlzU3Vic3RyaW5nKQotICAgIHsKLSAgICAgICAgbV9maWJlciB8PSAoaXNT
dWJzdHJpbmcgPyBzdWJzdHJpbmdTZW50aW5lbCgpIDogbm90U3Vic3RyaW5nU2VudGluZWwoKSk7
Ci0gICAgfQotCiAgICAgc3RhdGljX2Fzc2VydChzX21heEludGVybmFsUm9wZUxlbmd0aCA+PSAy
LCAiIik7CiAgICAgbXV0YWJsZSBDb21wYWN0RmliZXJzIG1fY29tcGFjdEZpYmVyczsKIApAQCAt
NzI2LDE0ICs2ODcsOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmlzOEJpdCgpIGNv
bnN0CiB7CiAgICAgdWludHB0cl90IHBvaW50ZXIgPSBtX2ZpYmVyOwogICAgIGlmIChwb2ludGVy
ICYgaXNSb3BlSW5Qb2ludGVyKSB7Ci0jaWYgQ1BVKEFERFJFU1M2NCkKICAgICAgICAgLy8gRG8g
bm90IGxvYWQgbV9maWJlciB0d2ljZS4gV2Ugc2hvdWxkIHVzZSB0aGUgaW5mb3JtYXRpb24gaW4g
cG9pbnRlci4KICAgICAgICAgLy8gT3RoZXJ3aXNlLCBKU1JvcGVTdHJpbmcgbWF5IGJlIGNvbnZl
cnRlZCB0byBKU1N0cmluZyBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgc2Vjb25kIGFjY2Vzc2VzLgog
ICAgICAgICByZXR1cm4gcG9pbnRlciAmIEpTUm9wZVN0cmluZzo6aXM4Qml0SW5Qb2ludGVyOwot
I2Vsc2UKLSAgICAgICAgLy8gSXQgaXMgT0sgdG8gbG9hZCBmbGFnIHNpbmNlIGV2ZW4gaWYgSlNS
b3BlU3RyaW5nIGlzIGNvbnZlcnRlZCB0byBKU1N0cmluZywgdGhpcyBmbGFnIHN0aWxsIGV4aXN0
cy4KLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+bV9j
b21wYWN0RmliZXJzLmlzOEJpdCgpOwotI2VuZGlmCiAgICAgfQogICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8U3RyaW5nSW1wbCo+KHBvaW50ZXIpLT5pczhCaXQoKTsKIH0KQEAgLTEwNDYsNyArMTAw
Miw3IEBAIEFMV0FZU19JTkxJTkUgU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nIEpTU3Ry
aW5nOjp2aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoCiAKIGlubGluZSBib29sIEpTU3RyaW5nOjpp
c1N1YnN0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzUm9wZSgpICYmIHN0YXRpY19jYXN0
PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRoaXMpLT5pc1N1YnN0cmluZygpOworICAgIHJldHVybiBt
X2ZpYmVyICYgSlNSb3BlU3RyaW5nOjppc1N1YnN0cmluZ0luUG9pbnRlcjsKIH0KIAogLy8gLS0t
IEpTVmFsdWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg==
</data>
<flag name="review"
          id="380021"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>