<?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>98332</bug_id>
          
          <creation_ts>2012-10-03 17:24:30 -0700</creation_ts>
          <short_desc>Removed the assumption that &quot;final&quot; objects have a fixed number of inline slots</short_desc>
          <delta_ts>2012-10-03 21:51:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>mhahnenberg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>734245</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-03 17:24:30 -0700</bug_when>
    <thetext>Removed the assumption that &quot;final&quot; objects have a fixed number of inline slots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734271</commentid>
    <comment_count>1</comment_count>
      <attachid>167010</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-03 17:53:57 -0700</bug_when>
    <thetext>Created attachment 167010
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734275</commentid>
    <comment_count>2</comment_count>
      <attachid>167010</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-03 17:57:17 -0700</bug_when>
    <thetext>Comment on attachment 167010
Patch

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

r=me

&gt; Source/JavaScriptCore/runtime/Structure.h:429
&gt; +        uint32_t m_inlineCapacity;

Any chance we could make this uint8_t and squeeze it in somewhere?

Your call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734339</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-03 20:54:53 -0700</bug_when>
    <thetext>&gt; Any chance we could make this uint8_t and squeeze it in somewhere?

It appears that we can do some squishing by making this a uint8_t and shrinking the number of bits we use for attributes. I&apos;ll do the uint8_t thing in this patch, and shrinking the attributes in another, since there might be gotchas there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734343</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-03 21:09:04 -0700</bug_when>
    <thetext>&lt;http://trac.webkit.org/changeset/130359&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734344</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-03 21:12:38 -0700</bug_when>
    <thetext>&lt;http://trac.webkit.org/changeset/130360&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734354</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-03 21:51:38 -0700</bug_when>
    <thetext>&lt;http://trac.webkit.org/changeset/130361&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167010</attachid>
            <date>2012-10-03 17:53:57 -0700</date>
            <delta_ts>2012-10-03 17:57:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98332-20121003175308.patch</filename>
            <type>text/plain</type>
            <size>41169</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMwMzQ5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMCBA
QAorMjAxMi0xMC0wMyAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFJlbW92ZWQgdGhlIGFzc3VtcHRpb24gdGhhdCAiZmluYWwiIG9iamVjdHMgaGF2ZSBhIGZp
eGVkIG51bWJlciBvZiBpbmxpbmUgc2xvdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk4MzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHN0ZXAgdG93YXJkIG9iamVjdCBzaXplIGluZmVy
ZW5jZS4KKworICAgICAgICBJIHJlcGxhY2VkIHRoZSBpbmxpbmUgc3RvcmFnZSBjYXBhY2l0eSBj
b25zdGFudCB3aXRoIGEgZGF0YSBtZW1iZXIgcGVyCisgICAgICAgIHN0cnVjdHVyZSwgc2V0IHRo
ZSB0aGUgbWF4aW11bSBzdXBwb3J0ZWQgdmFsdWUgZm9yIHRoZSBjb25zdGFudCB0byAxMDAsCisg
ICAgICAgIHRoZW4gZml4ZWQgd2hhdCBicm9rZS4gKE5vdGUgdGhhdCBldmVuIHRob3VnaCB0aGlz
IHBhdGNoIGluY3JlYXNlcyB0aGUKKyAgICAgICAgdGhlb3JldGljYWwgbWF4aW11bSBpbmxpbmUg
Y2FwYWNpdHksIGl0IGRvZXNuJ3QgY2hhbmdlIGFueSBhY3R1YWwgaW5saW5lCisgICAgICAgIGNh
cGFjaXR5LikKKworICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQpOiBUaGVzZSBmdW5jdGlvbnMg
anVzdCBnZXQgYSByZW5hbWU6CisgICAgICAgIHRoZSBjb25zdGFudCB0aGV5IG5lZWQgaXMgdGhl
IGZpcnN0IG91dCBvZiBsaW5lIG9mZnNldCBhbG9uZyB0aGUgb2Zmc2V0CisgICAgICAgIG51bWJl
ciBsaW5lLCB3aGljaCBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgdGhpbmcgKGFuZCBpcywg
aW4gdGhpcworICAgICAgICBwYXRjaCwgbmV2ZXIgdGhlIHNhbWUgdGhpbmcpIGFzIHRoZSBpbmxp
bmUgY2FwYWNpdHkgb2YgYW55IGdpdmVuIG9iamVjdC4KKworICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHA6IFRoaXMgZnVuY3Rpb24gY2hhbmdlcyBmdW5jdGlvbmFsaXR5LAorICAgICAgICBzaW5j
ZSBpdCBuZWVkcyB0byBjb252ZXJ0IGZyb20gdGhlIGFic3RyYWN0IG9mZnNldCBudW1iZXIgbGlu
ZSB0byBhbgorICAgICAgICBhY3R1YWwgb2Zmc2V0IGluIG1lbW9yeSwgYW5kIGl0IGNhbid0IGFz
c3VtZSB0aGF0IGlubGluZSBhbmQgb3V0LW9mLWxpbmUKKyAgICAgICAgb2Zmc2V0cyBhcmUgY29u
dGlndW91cyBvbiB0aGUgbnVtYmVyIGxpbmUuCisKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxl
R2V0RGlyZWN0T2Zmc2V0KTogVXBkYXRlZCBmb3IgcmVuYW1lLgorCisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUpOiBTYW1lIGFzIGVtaXRfb3BfZ2V0X2J5X3BuYW1lIGFi
b3ZlLgorCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206IFVwZGF0ZWQg
dG8gbWlycm9yIGNoYW5nZXMgaW4gUHJvcGVydHlPZmZzZXQuaCwKKyAgICAgICAgc2luY2Ugd2Ug
ZHVwbGljYXRlIHZhbHVlcyBmcm9tIHRoZXJlLgorCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtOiBKdXN0IGxpa2UgdGhlIEpJVCwgbW9zdCB0aGluZ3MgYXJlIGp1c3QKKyAgICAgICAg
cmVuYW1lcywgYW5kIGdldF9ieV9wbmFtZSBjaGFuZ2VzIHRvIGRvIG1vcmUgbWF0aC4gSSBhbHNv
IHN0YW5kYXJkaXplZAorICAgICAgICBvZmZzZXQgY2FsY3VsYXRpb25zIHRvIHVzZSBhIGhhcmQt
Y29kZWQgIi0yIiwgdG8gbWF0Y2ggdGhlIEpJVC4gVGhpcworICAgICAgICBpc24ndCByZWFsbHkg
YmV0dGVyLCBidXQgaXQgbWFrZXMgZ2xvYmFsIHNlYXJjaCBhbmQgcmVwbGFjZSBlYXNpZXIsCisg
ICAgICAgIHNob3VsZCB3ZSBjaG9vc2UgdG8gcmVmYWN0b3IgdGhpcyBjb2RlIG5vdCB0byBoYXJk
LWNvZGUgY29uc3RhbnRzLgorCisgICAgICAgIEkgYWxzbyByZW5hbWVkIGxvYWRQcm9wZXJ0eUF0
VmFyaWFibGVPZmZzZXRLbm93bk5vdEZpbmFsIHRvCisgICAgICAgIGxvYWRQcm9wZXJ0eUF0VmFy
aWFibGVPZmZzZXRLbm93bk5vdElubGluZSBpbiBvcmRlciB0byBzZXZlciB0aGUgYXNzdW1wdGlv
bgorICAgICAgICB0aGF0IGlubGluZSBjYXBhY2l0eSBpcyB0aWVkIHRvIG9iamVjdCB0eXBlLCBh
bmQgSSBjaGFuZ2VkIHRoZSA2NGJpdCBMTEludAorICAgICAgICB0byB1c2UgdGhpcyAtLSBub3Qg
dXNpbmcgdGhpcyBwcmV2aW91c2x5IHNlZW1zIHRvIGhhdmUgYmVlbiBhbiBvdmVyc2lnaHQuCisK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpvZmZzZXRGb3JMb2NhdGlvbik6CisgICAgICAgIChKU05vbkZpbmFsT2JqZWN0KToKKyAg
ICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpT
RmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlv
bik6IFVwZGF0ZWQgZm9yIGFib3ZlIGNoYW5nZXMuCisKKyAgICAgICAgKiBydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6IFN0
b3JlIHRoZSBpbmxpbmUgY2FwYWNpdHkKKyAgICAgICAgb2Ygb3VyIG9iamVjdCwgc2luY2UgaXQn
cyBub3QgYSBjb25zdGFudC4KKworICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
OjpnZXRPZmZzZXQpOiBSZW1vdmVkLiBUaGlzIGZ1bmN0aW9uIHdhcworICAgICAgICB3cm9uZy4g
THVja2lseSwgaXQgd2FzIGFsc28gdW51c2VkLCBzaW5jZSB0aGUgQysrIGludGVycHJldGVyIGlz
IGdvbmUuCisKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6CisgICAg
ICAgIChQcm9wZXJ0eVRhYmxlKTogVXNlIGEgaGVscGVyIGZ1bmN0aW9uIGluc3RlYWQgb2YgaGFy
ZC1jb2RpbmcgYXNzdW1wdGlvbnMKKyAgICAgICAgYWJvdXQgb2JqZWN0IHR5cGVzLgorCisgICAg
ICAgIChKU0M6OlByb3BlcnR5VGFibGU6Om5leHRPZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUv
UHJvcGVydHlPZmZzZXQuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OmNoZWNrT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6dmFsaWRhdGVPZmZzZXQpOgorICAgICAgICAoSlNDOjppc0lu
bGluZU9mZnNldCk6CisgICAgICAgIChKU0M6Om51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6cHJvcGVydHlPZmZzZXRGb3IpOiBSZWZhY3RvcmVkIHRoZXNlIGZ1bmN0
aW9ucyB0byB0YWtlIGlubGluZSBjYXBhY2l0eQorICAgICAgICBhcyBhbiBhcmd1bWVudCwgc2lu
Y2UgaXQncyBub3QgZml4ZWQgYXQgY29tcGlsZSB0aW1lIGFueW1vcmUuCisKKyAgICAgICAgKiBy
dW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6U3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHV0U3BlY2lmaWNWYWx1ZSk6CisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZTo6b3V0T2ZMaW5lQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
Omhhc0lubGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlubGluZUNhcGFj
aXR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppbmxpbmVTaXplKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjpmaXJzdFZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjpsYXN0VmFsaWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSk6IFJl
bW92ZWQgc29tZSBoYXJkLWNvZGVkIGFzc3VtcHRpb25zIGFib3V0IGlubGluZQorICAgICAgICBj
YXBhY2l0eSBhbmQgb2JqZWN0IHR5cGUsIGFuZCByZXBsYWNlZCB3aXRoIG1vcmUgbGliZXJhbCB1
c2Ugb2YgaGVscGVyIGZ1bmN0aW9ucy4KKwogMjAxMi0xMC0wMyAgTWljaGFlbCBTYWJvZmYgIDxt
c2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBPcGFxdWVKU1N0cmluZyBkb2Vzbid0IG9wdGlt
YWxseSBoYW5kbGUgOCBiaXQgc3RyaW5ncwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMzAzMzYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MDA0LDE0ICs0MDA0LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSks
IHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzb2x2ZUluZm9HUFIsIE9CSkVDVF9PRkZTRVRPRihHbG9iYWxSZXNvbHZlSW5mbywg
b2Zmc2V0KSksIHJlc29sdmVJbmZvR1BSKTsKICNpZiBERkdfRU5BQkxFKEpJVF9BU1NFUlQpCi0g
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT3V0T2ZMaW5lID0gbV9qaXQuYnJhbmNoMzIoSklU
Q29tcGlsZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgcmVzb2x2ZUluZm9HUFIsIFRydXN0ZWRJbW0z
MihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNP
dXRPZkxpbmUgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6R3JlYXRlclRoYW5PckVxdWFs
LCByZXNvbHZlSW5mb0dQUiwgVHJ1c3RlZEltbTMyKGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSk7CiAg
ICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKICAgICAgICAgaXNPdXRPZkxpbmUubGluaygmbV9q
aXQpOwogI2VuZGlmCiAgICAgICAgIG1faml0Lm5lZzMyKHJlc29sdmVJbmZvR1BSKTsKICAgICAg
ICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocmVzb2x2ZUluZm9HUFIsIHJlc29sdmVJbmZvR1BS
KTsKLSAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgocmVzdWx0UGF5
bG9hZEdQUiwgcmVzb2x2ZUluZm9HUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykgKyAoaW5saW5lU3Rv
cmFnZUNhcGFjaXR5IC0gMikgKiBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihKU1ZhbHVl
KSkpLCByZXN1bHRUYWdHUFIpOwotICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkJh
c2VJbmRleChyZXN1bHRQYXlsb2FkR1BSLCByZXNvbHZlSW5mb0dQUiwgSklUQ29tcGlsZXI6OlRp
bWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
cGF5bG9hZCkgKyAoaW5saW5lU3RvcmFnZUNhcGFjaXR5IC0gMikgKiBzdGF0aWNfY2FzdDxwdHJk
aWZmX3Q+KHNpemVvZihKU1ZhbHVlKSkpLCByZXN1bHRQYXlsb2FkR1BSKTsKKyAgICAgICAgbV9q
aXQubG9hZDMyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgocmVzdWx0UGF5bG9hZEdQUiwgcmVzb2x2
ZUluZm9HUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykgKyAoZmlyc3RPdXRPZkxpbmVPZmZzZXQgLSAy
KSAqIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKEpTVmFsdWUpKSksIHJlc3VsdFRhZ0dQ
Uik7CisgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QmFzZUluZGV4KHJlc3VsdFBh
eWxvYWRHUFIsIHJlc29sdmVJbmZvR1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwgT0JKRUNU
X09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSArIChmaXJz
dE91dE9mTGluZU9mZnNldCAtIDIpICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoSlNW
YWx1ZSkpKSwgcmVzdWx0UGF5bG9hZEdQUik7CiAKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDEzMDMzNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5NzMsMTQgKzM5NzMsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAvLyBGYXN0IGNhc2UKICAgICAgICAgbV9qaXQu
bG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc29sdmVJbmZvR1BSLCBPQkpFQ1RfT0ZGU0VU
T0YoR2xvYmFsUmVzb2x2ZUluZm8sIG9mZnNldCkpLCByZXNvbHZlSW5mb0dQUik7CiAjaWYgREZH
X0VOQUJMRShKSVRfQVNTRVJUKQotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc091dE9mTGlu
ZSA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpHcmVhdGVyVGhhbk9yRXF1YWwsIHJlc29s
dmVJbmZvR1BSLCBUcnVzdGVkSW1tMzIoaW5saW5lU3RvcmFnZUNhcGFjaXR5KSk7CisgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIGlzT3V0T2ZMaW5lID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGls
ZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgcmVzb2x2ZUluZm9HUFIsIFRydXN0ZWRJbW0zMihmaXJz
dE91dE9mTGluZU9mZnNldCkpOwogICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CiAgICAgICAg
IGlzT3V0T2ZMaW5lLmxpbmsoJm1faml0KTsKICNlbmRpZgogICAgICAgICBtX2ppdC5uZWczMihy
ZXNvbHZlSW5mb0dQUik7CiAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHJlc29sdmVJ
bmZvR1BSLCByZXNvbHZlSW5mb0dQUik7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGls
ZXI6OkFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkp
LCByZXN1bHRHUFIpOwotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpCYXNlSW5k
ZXgocmVzdWx0R1BSLCByZXNvbHZlSW5mb0dQUiwgSklUQ29tcGlsZXI6OlNjYWxlUHRyLCAoaW5s
aW5lU3RvcmFnZUNhcGFjaXR5IC0gMikgKiBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihK
U1ZhbHVlKSkpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjpCYXNlSW5kZXgocmVzdWx0R1BSLCByZXNvbHZlSW5mb0dQUiwgSklUQ29tcGlsZXI6OlNjYWxl
UHRyLCAoZmlyc3RPdXRPZkxpbmVPZmZzZXQgLSAyKSAqIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4o
c2l6ZW9mKEpTVmFsdWUpKSksIHJlc3VsdEdQUik7CiAgICAgICAgIAogICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAko
cmV2aXNpb24gMTMwMzM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyNSwyNCArMTAyNSwyNCBAQCB2
b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlCiAgICAgQVNTRVJUKHNpemVv
ZihKU1ZhbHVlKSA9PSA4KTsKICAgICAKICAgICBpZiAoZmluYWxPYmplY3RNb2RlID09IE1heUJl
RmluYWwpIHsKLSAgICAgICAgSnVtcCBpc0lubGluZSA9IGJyYW5jaDMyKExlc3NUaGFuLCBvZmZz
ZXQsIFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICAgICAgSnVtcCBp
c0lubGluZSA9IGJyYW5jaDMyKExlc3NUaGFuLCBvZmZzZXQsIFRydXN0ZWRJbW0zMihmaXJzdE91
dE9mTGluZU9mZnNldCkpOwogICAgICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6
OmJ1dHRlcmZseU9mZnNldCgpKSwgYmFzZSk7CiAgICAgICAgIG5lZzMyKG9mZnNldCk7CiAgICAg
ICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKICAgICAgICAgaXNJbmxpbmUubGluayh0aGlzKTsKLSAg
ICAgICAgYWRkUHRyKFRydXN0ZWRJbW1QdHIoSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFn
ZSgpIC0gKGlubGluZVN0b3JhZ2VDYXBhY2l0eSAtIDIpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KSksIGJhc2UpOworICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbVB0cihKU09iamVjdDo6b2Zmc2V0
T2ZJbmxpbmVTdG9yYWdlKCkgLSAoZmlyc3RPdXRPZkxpbmVPZmZzZXQgLSAyKSAqIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkpLCBiYXNlKTsKICAgICAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgIH0g
ZWxzZSB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICBKdW1wIGlzT3V0T2ZMaW5lID0g
YnJhbmNoMzIoR3JlYXRlclRoYW5PckVxdWFsLCBvZmZzZXQsIFRydXN0ZWRJbW0zMihpbmxpbmVT
dG9yYWdlQ2FwYWNpdHkpKTsKKyAgICAgICAgSnVtcCBpc091dE9mTGluZSA9IGJyYW5jaDMyKEdy
ZWF0ZXJUaGFuT3JFcXVhbCwgb2Zmc2V0LCBUcnVzdGVkSW1tMzIoZmlyc3RPdXRPZkxpbmVPZmZz
ZXQpKTsKICAgICAgICAgYnJlYWtwb2ludCgpOwogICAgICAgICBpc091dE9mTGluZS5saW5rKHRo
aXMpOwogI2VuZGlmCiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6YnV0
dGVyZmx5T2Zmc2V0KCkpLCBiYXNlKTsKICAgICAgICAgbmVnMzIob2Zmc2V0KTsKICAgICB9Ci0g
ICAgbG9hZDMyKEJhc2VJbmRleChiYXNlLCBvZmZzZXQsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZT
RVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSArIChpbmxpbmVTdG9yYWdlQ2FwYWNpdHkg
LSAyKSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCByZXN1bHRQYXlsb2FkKTsKLSAgICBsb2Fk
MzIoQmFzZUluZGV4KGJhc2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpT
VmFsdWUsIHUuYXNCaXRzLnRhZykgKyAoaW5saW5lU3RvcmFnZUNhcGFjaXR5IC0gMikgKiBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpKSwgcmVzdWx0VGFnKTsKKyAgICBsb2FkMzIoQmFzZUluZGV4KGJh
c2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRz
LnBheWxvYWQpICsgKGZpcnN0T3V0T2ZMaW5lT2Zmc2V0IC0gMikgKiBzaXplb2YoRW5jb2RlZEpT
VmFsdWUpKSwgcmVzdWx0UGF5bG9hZCk7CisgICAgbG9hZDMyKEJhc2VJbmRleChiYXNlLCBvZmZz
ZXQsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpICsg
KGZpcnN0T3V0T2ZMaW5lT2Zmc2V0IC0gMikgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgcmVz
dWx0VGFnKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMDY3LDcgKzEwNjcsMTAgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aQogICAgIGxvYWQzMihhZGRyZXNzRm9yKGkpLCBy
ZWdUMyk7CiAgICAgc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdUMyk7CiAgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMywgQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09G
RlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1fbnVtQ2FjaGVhYmxlU2xvdHMpKSkpOwot
ICAgIGFkZDMyKEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLCBtX29mZnNldEJhc2UpKSwgcmVnVDMpOworICAgIEp1bXAgaW5saW5lUHJvcGVydHkg
PSBicmFuY2gzMihCZWxvdywgcmVnVDMsIEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBtX2NhY2hlZFN0cnVjdHVyZUlubGluZUNhcGFjaXR5KSkp
OworICAgIGFkZDMyKFRydXN0ZWRJbW0zMihmaXJzdE91dE9mTGluZU9mZnNldCksIHJlZ1QzKTsK
KyAgICBzdWIzMihBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvciwgbV9jYWNoZWRTdHJ1Y3R1cmVJbmxpbmVDYXBhY2l0eSkpLCByZWdUMyk7CisgICAg
aW5saW5lUHJvcGVydHkubGluayh0aGlzKTsKICAgICBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KHJl
Z1QyLCByZWdUMSwgcmVnVDAsIHJlZ1QzKTsgICAgCiAgICAgCiAgICAgZW1pdFN0b3JlKGRzdCwg
cmVnVDEsIHJlZ1QwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxMzAzMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDE2
ICsxNTksMTYgQEAgdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZQogICAg
IEFTU0VSVChzaXplb2YoSlNWYWx1ZSkgPT0gOCk7CiAgICAgCiAgICAgaWYgKGZpbmFsT2JqZWN0
TW9kZSA9PSBNYXlCZUZpbmFsKSB7Ci0gICAgICAgIEp1bXAgaXNJbmxpbmUgPSBicmFuY2gzMihM
ZXNzVGhhbiwgb2Zmc2V0LCBUcnVzdGVkSW1tMzIoaW5saW5lU3RvcmFnZUNhcGFjaXR5KSk7Cisg
ICAgICAgIEp1bXAgaXNJbmxpbmUgPSBicmFuY2gzMihMZXNzVGhhbiwgb2Zmc2V0LCBUcnVzdGVk
SW1tMzIoZmlyc3RPdXRPZkxpbmVPZmZzZXQpKTsKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJh
c2UsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgICAgICBuZWcz
MihvZmZzZXQpOwogICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAgICAgICAgIGlzSW5saW5l
LmxpbmsodGhpcyk7Ci0gICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoSlNPYmplY3Q6Om9mZnNl
dE9mSW5saW5lU3RvcmFnZSgpIC0gKGlubGluZVN0b3JhZ2VDYXBhY2l0eSAtIDIpICogc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSksIGJhc2UsIHNjcmF0Y2gpOworICAgICAgICBhZGRQdHIoVHJ1c3Rl
ZEltbTMyKEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAtIChmaXJzdE91dE9mTGlu
ZU9mZnNldCAtIDIpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIGJhc2UsIHNjcmF0Y2gpOwog
ICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAgICAgfSBlbHNlIHsKICNpZiAhQVNTRVJUX0RJU0FC
TEVECi0gICAgICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBicmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1
YWwsIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAg
ICBKdW1wIGlzT3V0T2ZMaW5lID0gYnJhbmNoMzIoR3JlYXRlclRoYW5PckVxdWFsLCBvZmZzZXQs
IFRydXN0ZWRJbW0zMihmaXJzdE91dE9mTGluZU9mZnNldCkpOwogICAgICAgICBicmVha3BvaW50
KCk7CiAgICAgICAgIGlzT3V0T2ZMaW5lLmxpbmsodGhpcyk7CiAjZW5kaWYKQEAgLTE3Niw3ICsx
NzYsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlCiAgICAgICAg
IG5lZzMyKG9mZnNldCk7CiAgICAgfQogICAgIHNpZ25FeHRlbmQzMlRvUHRyKG9mZnNldCwgb2Zm
c2V0KTsKLSAgICBsb2FkUHRyKEJhc2VJbmRleChzY3JhdGNoLCBvZmZzZXQsIFNjYWxlUHRyLCAo
aW5saW5lU3RvcmFnZUNhcGFjaXR5IC0gMikgKiBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVv
ZihKU1ZhbHVlKSkpLCByZXN1bHQpOworICAgIGxvYWRQdHIoQmFzZUluZGV4KHNjcmF0Y2gsIG9m
ZnNldCwgU2NhbGVQdHIsIChmaXJzdE91dE9mTGluZU9mZnNldCAtIDIpICogc2l6ZW9mKEVuY29k
ZWRKU1ZhbHVlKSksIHJlc3VsdCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9wbmFt
ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTk5LDcgKzE5OSwxMCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5zdHJ1Y3RpCiAgICAgbG9hZDMyKGFkZHJl
c3NGb3IoaSksIHJlZ1QzKTsKICAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QzKTsKICAg
ICBhZGRTbG93Q2FzZShicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QzLCBBZGRyZXNzKHJlZ1Qx
LCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciwgbV9udW1DYWNoZWFibGVT
bG90cykpKSk7Ci0gICAgYWRkMzIoQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IsIG1fb2Zmc2V0QmFzZSkpLCByZWdUMyk7CisgICAgSnVtcCBpbmxp
bmVQcm9wZXJ0eSA9IGJyYW5jaDMyKEJlbG93LCByZWdUMywgQWRkcmVzcyhyZWdUMSwgT0JKRUNU
X09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1fY2FjaGVkU3RydWN0dXJlSW5saW5l
Q2FwYWNpdHkpKSk7CisgICAgYWRkMzIoVHJ1c3RlZEltbTMyKGZpcnN0T3V0T2ZMaW5lT2Zmc2V0
KSwgcmVnVDMpOworICAgIHN1YjMyKEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLCBtX2NhY2hlZFN0cnVjdHVyZUlubGluZUNhcGFjaXR5KSksIHJl
Z1QzKTsKKyAgICBpbmxpbmVQcm9wZXJ0eS5saW5rKHRoaXMpOwogICAgIGNvbXBpbGVHZXREaXJl
Y3RPZmZzZXQocmVnVDAsIHJlZ1QwLCByZWdUMywgcmVnVDEpOwogCiAgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3Rlcihkc3QsIHJlZ1QwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAx
MzAzMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtOTM3LDI0ICs5MzcsMjQgQEAgX2xsaW50X29w
X2lzX3N0cmluZzoKICAgICBkaXNwYXRjaCgzKQogCiAKLW1hY3JvIGxvYWRQcm9wZXJ0eUF0VmFy
aWFibGVPZmZzZXRLbm93bk5vdEZpbmFsKHByb3BlcnR5T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdl
LCB0YWcsIHBheWxvYWQpCi0gICAgYXNzZXJ0KG1hY3JvIChvaykgYmlndGVxIHByb3BlcnR5T2Zm
c2V0LCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHksIG9rIGVuZCkKK21hY3JvIGxvYWRQcm9wZXJ0eUF0
VmFyaWFibGVPZmZzZXRLbm93bk5vdElubGluZShwcm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3Rv
cmFnZSwgdGFnLCBwYXlsb2FkKQorICAgIGFzc2VydChtYWNybyAob2spIGJpZ3RlcSBwcm9wZXJ0
eU9mZnNldCwgZmlyc3RPdXRPZkxpbmVPZmZzZXQsIG9rIGVuZCkKICAgICBuZWdpIHByb3BlcnR5
T2Zmc2V0CiAgICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W29iamVjdEFuZFN0b3JhZ2Vd
LCBvYmplY3RBbmRTdG9yYWdlCi0gICAgbG9hZGkgVGFnT2Zmc2V0ICsgKElubGluZVN0b3JhZ2VD
YXBhY2l0eSAtIDEpICogOCAtIHNpemVvZiBJbmRleGluZ0hlYWRlcltvYmplY3RBbmRTdG9yYWdl
LCBwcm9wZXJ0eU9mZnNldCwgOF0sIHRhZwotICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyAoSW5s
aW5lU3RvcmFnZUNhcGFjaXR5IC0gMSkgKiA4IC0gc2l6ZW9mIEluZGV4aW5nSGVhZGVyW29iamVj
dEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4XSwgcGF5bG9hZAorICAgIGxvYWRpIFRhZ09m
ZnNldCArIChmaXJzdE91dE9mTGluZU9mZnNldCAtIDIpICogOFtvYmplY3RBbmRTdG9yYWdlLCBw
cm9wZXJ0eU9mZnNldCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyAoZmlyc3RP
dXRPZkxpbmVPZmZzZXQgLSAyKSAqIDhbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQs
IDhdLCBwYXlsb2FkCiBlbmQKIAogbWFjcm8gbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldChw
cm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdGFnLCBwYXlsb2FkKQotICAgIGJpbHQg
cHJvcGVydHlPZmZzZXQsIElubGluZVN0b3JhZ2VDYXBhY2l0eSwgLmlzSW5saW5lCisgICAgYmls
dCBwcm9wZXJ0eU9mZnNldCwgZmlyc3RPdXRPZkxpbmVPZmZzZXQsIC5pc0lubGluZQogICAgIGxv
YWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3Rv
cmFnZQogICAgIG5lZ2kgcHJvcGVydHlPZmZzZXQKICAgICBqbXAgLnJlYWR5CiAuaXNJbmxpbmU6
Ci0gICAgYWRkcCBKU0ZpbmFsT2JqZWN0OjptX2lubGluZVN0b3JhZ2UgLSAoSW5saW5lU3RvcmFn
ZUNhcGFjaXR5IC0gMSkgKiA4ICsgc2l6ZW9mIEluZGV4aW5nSGVhZGVyLCBvYmplY3RBbmRTdG9y
YWdlCisgICAgYWRkcCBKU0ZpbmFsT2JqZWN0OjptX2lubGluZVN0b3JhZ2UgLSAoZmlyc3RPdXRP
ZkxpbmVPZmZzZXQgLSAyKSAqIDgsIG9iamVjdEFuZFN0b3JhZ2UKIC5yZWFkeToKLSAgICBsb2Fk
aSBUYWdPZmZzZXQgKyAoSW5saW5lU3RvcmFnZUNhcGFjaXR5IC0gMSkgKiA4IC0gc2l6ZW9mIElu
ZGV4aW5nSGVhZGVyW29iamVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4XSwgdGFnCi0g
ICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIChJbmxpbmVTdG9yYWdlQ2FwYWNpdHkgLSAxKSAqIDgg
LSBzaXplb2YgSW5kZXhpbmdIZWFkZXJbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQs
IDhdLCBwYXlsb2FkCisgICAgbG9hZGkgVGFnT2Zmc2V0ICsgKGZpcnN0T3V0T2ZMaW5lT2Zmc2V0
IC0gMikgKiA4W29iamVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4XSwgdGFnCisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldCArIChmaXJzdE91dE9mTGluZU9mZnNldCAtIDIpICogOFtvYmpl
Y3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHBheWxvYWQKIGVuZAogCiBtYWNybyBy
ZXNvbHZlR2xvYmFsKHNpemUsIHNsb3cpCkBAIC05NjgsNyArOTY4LDcgQEAgbWFjcm8gcmVzb2x2
ZUdsb2JhbChzaXplLCBzbG93KQogICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MQogICAgIGJwbmVxIHQxLCAxMltQQ10sIHNsb3cKICAgICBsb2FkaSAxNltQQ10sIHQxCi0gICAg
bG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldEtub3duTm90RmluYWwodDEsIHQwLCB0MiwgdDMp
CisgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldEtub3duTm90SW5saW5lKHQxLCB0MCwg
dDIsIHQzKQogICAgIGxvYWRpIDRbUENdLCB0MAogICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdCiAgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCkBAIC0x
MzY0LDcgKzEzNjQsMTAgQEAgX2xsaW50X29wX2dldF9ieV9wbmFtZToKICAgICBsb2FkaSBbY2Zy
LCB0MCwgOF0sIHQwCiAgICAgc3ViaSAxLCB0MAogICAgIGJpYWVxIHQwLCBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKLSAg
ICBhZGRpIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fb2Zmc2V0QmFzZVt0M10sIHQwCisgICAg
YmlsdCB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVJbmxpbmVD
YXBhY2l0eVt0M10sIC5vcEdldEJ5UG5hbWVJbmxpbmVQcm9wZXJ0eQorICAgIGFkZGkgZmlyc3RP
dXRPZkxpbmVPZmZzZXQsIHQwCisgICAgc3ViaSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2Nh
Y2hlZFN0cnVjdHVyZUlubGluZUNhcGFjaXR5W3QzXSwgdDAKKy5vcEdldEJ5UG5hbWVJbmxpbmVQ
cm9wZXJ0eToKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQwLCB0MiwgdDEsIHQz
KQogICAgIGxvYWRpIDRbUENdLCB0MAogICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTMwMzM2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAg
LTc5NiwyMyArNzk2LDIzIEBAIF9sbGludF9vcF9pc19zdHJpbmc6CiAgICAgZGlzcGF0Y2goMykK
IAogCi1tYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RGaW5hbChwcm9w
ZXJ0eU9mZnNldEFzUG9pbnRlciwgb2JqZWN0QW5kU3RvcmFnZSwgdmFsdWUpCi0gICAgYXNzZXJ0
KG1hY3JvIChvaykgYmlndGVxIHByb3BlcnR5T2Zmc2V0QXNQb2ludGVyLCBJbmxpbmVTdG9yYWdl
Q2FwYWNpdHksIG9rIGVuZCkKK21hY3JvIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRLbm93
bk5vdElubGluZShwcm9wZXJ0eU9mZnNldEFzUG9pbnRlciwgb2JqZWN0QW5kU3RvcmFnZSwgdmFs
dWUpCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlndGVxIHByb3BlcnR5T2Zmc2V0QXNQb2ludGVy
LCBmaXJzdE91dE9mTGluZU9mZnNldCwgb2sgZW5kKQogICAgIG5lZ3AgcHJvcGVydHlPZmZzZXRB
c1BvaW50ZXIKICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbb2JqZWN0QW5kU3RvcmFn
ZV0sIG9iamVjdEFuZFN0b3JhZ2UKLSAgICBsb2FkcCAoSW5saW5lU3RvcmFnZUNhcGFjaXR5IC0g
MSkgKiA4IC0gc2l6ZW9mIEluZGV4aW5nSGVhZGVyW29iamVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5
T2Zmc2V0QXNQb2ludGVyLCA4XSwgdmFsdWUKKyAgICBsb2FkcCAoZmlyc3RPdXRPZkxpbmVPZmZz
ZXQgLSAyKSAqIDhbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXRBc1BvaW50ZXIsIDhd
LCB2YWx1ZQogZW5kCiAKIG1hY3JvIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQocHJvcGVy
dHlPZmZzZXRBc0ludCwgb2JqZWN0QW5kU3RvcmFnZSwgdmFsdWUpCi0gICAgYmlsdCBwcm9wZXJ0
eU9mZnNldEFzSW50LCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHksIC5pc0lubGluZQorICAgIGJpbHQg
cHJvcGVydHlPZmZzZXRBc0ludCwgZmlyc3RPdXRPZkxpbmVPZmZzZXQsIC5pc0lubGluZQogICAg
IGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5k
U3RvcmFnZQogICAgIG5lZ2kgcHJvcGVydHlPZmZzZXRBc0ludAogICAgIHN4aTJwIHByb3BlcnR5
T2Zmc2V0QXNJbnQsIHByb3BlcnR5T2Zmc2V0QXNJbnQKICAgICBqbXAgLnJlYWR5CiAuaXNJbmxp
bmU6Ci0gICAgYWRkcCBKU0ZpbmFsT2JqZWN0OjptX2lubGluZVN0b3JhZ2UgLSAoSW5saW5lU3Rv
cmFnZUNhcGFjaXR5IC0gMSkgKiA4ICsgc2l6ZW9mIEluZGV4aW5nSGVhZGVyLCBvYmplY3RBbmRT
dG9yYWdlCisgICAgYWRkcCBKU0ZpbmFsT2JqZWN0OjptX2lubGluZVN0b3JhZ2UgLSAoZmlyc3RP
dXRPZkxpbmVPZmZzZXQgLSAyKSAqIDgsIG9iamVjdEFuZFN0b3JhZ2UKIC5yZWFkeToKLSAgICBs
b2FkcCAoSW5saW5lU3RvcmFnZUNhcGFjaXR5IC0gMSkgKiA4IC0gc2l6ZW9mIEluZGV4aW5nSGVh
ZGVyW29iamVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0QXNJbnQsIDhdLCB2YWx1ZQorICAg
IGxvYWRwIChmaXJzdE91dE9mTGluZU9mZnNldCAtIDIpICogOFtvYmplY3RBbmRTdG9yYWdlLCBw
cm9wZXJ0eU9mZnNldEFzSW50LCA4XSwgdmFsdWUKIGVuZAogCiBtYWNybyByZXNvbHZlR2xvYmFs
KHNpemUsIHNsb3cpCkBAIC04MjYsNyArODI2LDcgQEAgbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXpl
LCBzbG93KQogICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQogICAgIGJwbmVx
IHQxLCAyNFtQQiwgUEMsIDhdLCBzbG93CiAgICAgbG9hZGlzIDMyW1BCLCBQQywgOF0sIHQxCi0g
ICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAsIHQyKQorICAgIGxvYWRQcm9w
ZXJ0eUF0VmFyaWFibGVPZmZzZXRLbm93bk5vdElubGluZSh0MSwgdDAsIHQyKQogICAgIGxvYWRp
cyA4W1BCLCBQQywgOF0sIHQwCiAgICAgc3RvcmVwIHQyLCBbY2ZyLCB0MCwgOF0KICAgICBsb2Fk
cCAoc2l6ZSAtIDEpICogOFtQQiwgUEMsIDhdLCB0MApAQCAtMTIwOCw3ICsxMjA4LDEwIEBAIF9s
bGludF9vcF9nZXRfYnlfcG5hbWU6CiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4
XSwgdDMKICAgICBzdWJpIDEsIHQzCiAgICAgYmlhZXEgdDMsIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3I6Om1fbnVtQ2FjaGVhYmxlU2xvdHNbdDFdLCAub3BHZXRCeVBuYW1lU2xvdwotICAgIGFkZGkg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9vZmZzZXRCYXNlW3QxXSwgdDMKKyAgICBiaWx0IHQz
LCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZUlubGluZUNhcGFjaXR5
W3QxXSwgLm9wR2V0QnlQbmFtZUlubGluZVByb3BlcnR5CisgICAgYWRkaSBmaXJzdE91dE9mTGlu
ZU9mZnNldCwgdDMKKyAgICBzdWJpIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3Ry
dWN0dXJlSW5saW5lQ2FwYWNpdHlbdDFdLCB0MworLm9wR2V0QnlQbmFtZUlubGluZVByb3BlcnR5
OgogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDMsIHQwLCB0MCkKICAgICBsb2Fk
aXMgOFtQQiwgUEMsIDhdLCB0MQogICAgIHN0b3JlcCB0MCwgW2NmciwgdDEsIDhdCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCShyZXZpc2lvbiAxMzAzMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTg5LDEyICs4OSw4IEBAIGNv
bnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50ICsgVGEKICMgU3RyaW5nIGZsYWdzLgog
Y29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDY0CiAKLSMgUHJvcGVydHkgc3RvcmFnZSBjb25z
dGFudHMKLWlmIEpTVkFMVUU2NAotICAgIGNvbnN0IElubGluZVN0b3JhZ2VDYXBhY2l0eSA9IDYK
LWVsc2UKLSAgICBjb25zdCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPSA3Ci1lbmQKKyMgQ29waWVk
IGZyb20gUHJvcGVydHlPZmZzZXQuaAorY29uc3QgZmlyc3RPdXRPZkxpbmVPZmZzZXQgPSAxMDAK
IAogIyBBbGxvY2F0aW9uIGNvbnN0YW50cwogaWYgSlNWQUxVRTY0CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAxMzAzMzYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsCiAKICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXNPYmplY3QtPmJ1dHRlcmZseSgp
OwogICAgIGlmIChidXR0ZXJmbHkpCi0gICAgICAgIHRoaXNPYmplY3QtPnZpc2l0QnV0dGVyZmx5
KHZpc2l0b3IsIGJ1dHRlcmZseSwgdGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZVNp
emVGb3JLbm93bk5vbkZpbmFsT2JqZWN0KCkpOworICAgICAgICB0aGlzT2JqZWN0LT52aXNpdEJ1
dHRlcmZseSh2aXNpdG9yLCBidXR0ZXJmbHksIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRP
ZkxpbmVTaXplKCkpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHZpc2l0b3IubV9pc0No
ZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJr
VmlvbGF0aW9uOwpAQCAtMjAyLDkgKzIwMiw5IEBAIHZvaWQgSlNGaW5hbE9iamVjdDo6dmlzaXRD
aGlsZHJlbihKU0NlbGwKIAogICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpc09iamVjdC0+
YnV0dGVyZmx5KCk7CiAgICAgaWYgKGJ1dHRlcmZseSkKLSAgICAgICAgdGhpc09iamVjdC0+dmlz
aXRCdXR0ZXJmbHkodmlzaXRvciwgYnV0dGVyZmx5LCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
b3V0T2ZMaW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKSk7CisgICAgICAgIHRoaXNPYmplY3Qt
PnZpc2l0QnV0dGVyZmx5KHZpc2l0b3IsIGJ1dHRlcmZseSwgdGhpc09iamVjdC0+c3RydWN0dXJl
KCktPm91dE9mTGluZVNpemUoKSk7CiAKLSAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSB0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+aW5saW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKTsKKyAgICBz
aXplX3Qgc3RvcmFnZVNpemUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aW5saW5lU2l6ZSgp
OwogICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmlubGluZVN0b3JhZ2UoKSwg
c3RvcmFnZVNpemUpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMzAzMzYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjEs
MTAgKzQ2MSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgUHJv
cGVydHlPZmZzZXQgcmVzdWx0OwogICAgICAgICAgICAgc2l6ZV90IG9mZnNldEluSW5saW5lU3Rv
cmFnZSA9IGxvY2F0aW9uIC0gaW5saW5lU3RvcmFnZVVuc2FmZSgpOwotICAgICAgICAgICAgaWYg
KG9mZnNldEluSW5saW5lU3RvcmFnZSA8IHN0YXRpY19jYXN0PHNpemVfdD4oaW5saW5lU3RvcmFn
ZUNhcGFjaXR5KSkKKyAgICAgICAgICAgIGlmIChvZmZzZXRJbklubGluZVN0b3JhZ2UgPCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSkKICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2U7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgcmVzdWx0ID0gb3V0T2ZMaW5lU3RvcmFnZSgpIC0gbG9jYXRpb24gKyAoaW5saW5l
U3RvcmFnZUNhcGFjaXR5IC0gMSk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gb3V0T2ZMaW5l
U3RvcmFnZSgpIC0gbG9jYXRpb24gKyAoZmlyc3RPdXRPZkxpbmVPZmZzZXQgLSAxKTsKICAgICAg
ICAgICAgIHZhbGlkYXRlT2Zmc2V0KHJlc3VsdCwgc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlw
ZSgpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTY4NSwxMSAr
Njg1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICBz
dGF0aWMgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0KICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGV4cGxpY2l0
IEpTTm9uRmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSAwKQogICAgICAgICAgICAgOiBKU09iamVj
dChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSkKQEAgLTcxNywxNyArNzEyLDEzIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNGaW5hbE9iamVjdCogY3JlYXRlKEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhGaW5hbE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CisgICAg
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKEZpbmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAm
c19pbmZvLCBOb25BcnJheSwgSU5MSU5FX1NUT1JBR0VfQ0FQQUNJVFkpOwogICAgICAgICB9CiAK
ICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICAgICAgc3RhdGljIGJvb2wgaGFzSW5saW5lU3RvcmFn
ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CiAgICAg
cHJvdGVjdGVkOgogICAgICAgICB2b2lkIHZpc2l0Q2hpbGRyZW5Db21tb24oU2xvdFZpc2l0b3Im
KTsKICAgICAgICAgCkBAIC03MzUsOCArNzI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAgICAg
ICAgICAgQVNTRVJUKCEoT0JKRUNUX09GRlNFVE9GKEpTRmluYWxPYmplY3QsIG1faW5saW5lU3Rv
cmFnZSkgJSBzaXplb2YoZG91YmxlKSkpOwotICAgICAgICAgICAgQVNTRVJUKHRoaXMtPnN0cnVj
dHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgpID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmxpbmVT
dG9yYWdlQ2FwYWNpdHkpKTsKLSAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+
dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5saW5lU3Rv
cmFnZUNhcGFjaXR5KSk7CisgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPnRvdGFsU3Rv
cmFnZUNhcGFjaXR5KCkgPT0gc3RydWN0dXJlKCktPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAg
ICAgICAgQVNTRVJUKGNsYXNzSW5mbygpKTsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5o
CShyZXZpc2lvbiAxMzAzMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDE0ICs1OSw2IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBib29sIGdldE9mZnNldChzaXplX3QgaSwgUHJv
cGVydHlPZmZzZXQmIG9mZnNldCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGkgPj0gbV9u
dW1DYWNoZWFibGVTbG90cykKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBvZmZzZXQgPSBpICsgbV9vZmZzZXRCYXNlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLQogICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBKU09iamVjdCos
IHNpemVfdCBpKTsKICAgICAgICAgc2l6ZV90IHNpemUoKSB7IHJldHVybiBtX2pzU3RyaW5nc1Np
emU7IH0KIApAQCAtOTAsNyArODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFBy
b3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0
b3IgPSBwcm9wZXJ0eU5hbWVBcnJheURhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpOwogICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2pzU3RyaW5nc1NpemU7ICsraSkKICAgICAg
ICAgICAgICAgICBtX2pzU3RyaW5nc1tpXS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBq
c093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5TmFtZVZlY3RvcltpXS5zdHJpbmcoKSkpOwotICAg
ICAgICAgICAgbV9vZmZzZXRCYXNlID0gb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Zmlyc3RWYWxpZE9m
ZnNldCgpOworICAgICAgICAgICAgbV9jYWNoZWRTdHJ1Y3R1cmVJbmxpbmVDYXBhY2l0eSA9IG9i
amVjdC0+c3RydWN0dXJlKCktPmlubGluZUNhcGFjaXR5KCk7CiAgICAgICAgIH0KIAogICAgIHBy
aXZhdGU6CkBAIC0xMDIsNyArOTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZUNoYWluPiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOwogICAgICAgICB1
aW50MzJfdCBtX251bUNhY2hlYWJsZVNsb3RzOwogICAgICAgICB1aW50MzJfdCBtX2pzU3RyaW5n
c1NpemU7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0QmFzZTsKKyAgICAgICAgdW5z
aWduZWQgbV9jYWNoZWRTdHJ1Y3R1cmVJbmxpbmVDYXBhY2l0eTsKICAgICAgICAgT3duQXJyYXlQ
dHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gbV9qc1N0cmluZ3M7CiAgICAgfTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hU
YWJsZS5oCShyZXZpc2lvbiAxMzAzMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcg
QEAgcHVibGljOgogICAgIFByb3BlcnR5T2Zmc2V0IGdldERlbGV0ZWRPZmZzZXQoKTsKICAgICB2
b2lkIGFkZERlbGV0ZWRPZmZzZXQoUHJvcGVydHlPZmZzZXQpOwogICAgIAotICAgIFByb3BlcnR5
T2Zmc2V0IG5leHRPZmZzZXQoSlNUeXBlKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBuZXh0T2Zmc2V0
KFByb3BlcnR5T2Zmc2V0IGlubGluZUNhcGFjaXR5KTsKIAogICAgIC8vIENvcHkgdGhpcyBQcm9w
ZXJ0eVRhYmxlLCBlbnN1cmluZyB0aGUgY29weSBoYXMgYXQgbGVhc3QgdGhlIGNhcGFjaXR5IHBy
b3ZpZGVkLgogICAgIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gY29weShKU0dsb2JhbERhdGEm
LCBKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCBuZXdDYXBhY2l0eSk7CkBAIC00ODYsMTUgKzQ4Niwx
MiBAQCBpbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2ZmCiAgICAgbV9kZWxl
dGVkT2Zmc2V0cy0+YXBwZW5kKG9mZnNldCk7CiB9CiAKLWlubGluZSBQcm9wZXJ0eU9mZnNldCBQ
cm9wZXJ0eVRhYmxlOjpuZXh0T2Zmc2V0KEpTVHlwZSB0eXBlKQoraW5saW5lIFByb3BlcnR5T2Zm
c2V0IFByb3BlcnR5VGFibGU6Om5leHRPZmZzZXQoUHJvcGVydHlPZmZzZXQgaW5saW5lQ2FwYWNp
dHkpCiB7CiAgICAgaWYgKGhhc0RlbGV0ZWRPZmZzZXQoKSkKICAgICAgICAgcmV0dXJuIGdldERl
bGV0ZWRPZmZzZXQoKTsKLSAgICAKLSAgICBpZiAodHlwZSA9PSBGaW5hbE9iamVjdFR5cGUpCi0g
ICAgICAgIHJldHVybiBzaXplKCk7Ci0gICAgCi0gICAgcmV0dXJuIHNpemUoKSArIGZpcnN0T3V0
T2ZMaW5lT2Zmc2V0OworCisgICAgcmV0dXJuIHByb3BlcnR5T2Zmc2V0Rm9yKHNpemUoKSwgaW5s
aW5lQ2FwYWNpdHkpOwogfQogCiBpbmxpbmUgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBQcm9w
ZXJ0eVRhYmxlOjpjb3B5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwg
dW5zaWduZWQgbmV3Q2FwYWNpdHkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eU9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5T2Zmc2V0LmgJKHJldmlzaW9uIDEzMDMzNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDYgQEAKICNpZm5kZWYgUHJvcGVydHlPZmZzZXRfaAogI2RlZmluZSBQcm9wZXJ0eU9m
ZnNldF9oCiAKLSNpbmNsdWRlICJKU1R5cGUuaCIKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFt
Lmg+CkBAIC00MiwxNCArNDEsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiB0eXBlZGVmIGludCBQcm9w
ZXJ0eU9mZnNldDsKIAogc3RhdGljIGNvbnN0IFByb3BlcnR5T2Zmc2V0IGludmFsaWRPZmZzZXQg
PSAtMTsKLXN0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkg
PSBJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWTsKLXN0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBm
aXJzdE91dE9mTGluZU9mZnNldCA9IGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKK3N0YXRpYyBjb25z
dCBQcm9wZXJ0eU9mZnNldCBmaXJzdE91dE9mTGluZU9mZnNldCA9IDEwMDsKIAogLy8gRGVjbGFy
ZSBhbGwgb2YgdGhlIGZ1bmN0aW9ucyBiZWNhdXNlIHRoZXkgdGVuZCB0byBkbyBmb3J3YXJkIGNh
bGxzLgogaW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlPZmZzZXQpOwotaW5saW5lIHZv
aWQgY2hlY2tPZmZzZXQoUHJvcGVydHlPZmZzZXQsIEpTVHlwZSk7CitpbmxpbmUgdm9pZCBjaGVj
a09mZnNldChQcm9wZXJ0eU9mZnNldCwgUHJvcGVydHlPZmZzZXQgaW5saW5lQ2FwYWNpdHkpOwog
aW5saW5lIHZvaWQgdmFsaWRhdGVPZmZzZXQoUHJvcGVydHlPZmZzZXQpOwotaW5saW5lIHZvaWQg
dmFsaWRhdGVPZmZzZXQoUHJvcGVydHlPZmZzZXQsIEpTVHlwZSk7CitpbmxpbmUgdm9pZCB2YWxp
ZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCwgUHJvcGVydHlPZmZzZXQgaW5saW5lQ2FwYWNpdHkp
OwogaW5saW5lIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0eU9mZnNldCk7CiBpbmxpbmUgYm9v
bCBpc0lubGluZU9mZnNldChQcm9wZXJ0eU9mZnNldCk7CiBpbmxpbmUgYm9vbCBpc091dE9mTGlu
ZU9mZnNldChQcm9wZXJ0eU9mZnNldCk7CkBAIC01Nyw5ICs1NSw3IEBAIGlubGluZSBzaXplX3Qg
b2Zmc2V0SW5JbmxpbmVTdG9yYWdlKFByb3AKIGlubGluZSBzaXplX3Qgb2Zmc2V0SW5PdXRPZkxp
bmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0KTsKIGlubGluZSBzaXplX3Qgb2Zmc2V0SW5SZXNwZWN0
aXZlU3RvcmFnZShQcm9wZXJ0eU9mZnNldCk7CiBpbmxpbmUgc2l6ZV90IG51bWJlck9mT3V0T2ZM
aW5lU2xvdHNGb3JMYXN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0KTsKLWlubGluZSBzaXplX3QgbnVt
YmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQoUHJvcGVydHlPZmZzZXQsIEpTVHlwZSk7Ci1pbmxpbmUg
UHJvcGVydHlPZmZzZXQgbmV4dFByb3BlcnR5T2Zmc2V0Rm9yKFByb3BlcnR5T2Zmc2V0LCBKU1R5
cGUpOwotaW5saW5lIFByb3BlcnR5T2Zmc2V0IGZpcnN0UHJvcGVydHlPZmZzZXRGb3IoSlNUeXBl
KTsKK2lubGluZSBzaXplX3QgbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQoUHJvcGVydHlPZmZz
ZXQsIFByb3BlcnR5T2Zmc2V0IGlubGluZUNhcGFjaXR5KTsKIAogaW5saW5lIHZvaWQgY2hlY2tP
ZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewpAQCAtNjcsMTQgKzYzLDE0IEBAIGlubGlu
ZSB2b2lkIGNoZWNrT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG8KICAgICBBU1NFUlQob2Zmc2V0ID49
IGludmFsaWRPZmZzZXQpOwogfQogCi1pbmxpbmUgdm9pZCBjaGVja09mZnNldChQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoraW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0LCBQcm9wZXJ0eU9mZnNldCBpbmxpbmVDYXBhY2l0eSkKIHsKICAgICBV
TlVTRURfUEFSQU0ob2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgVU5VU0VE
X1BBUkFNKGlubGluZUNhcGFjaXR5KTsKICAgICBBU1NFUlQob2Zmc2V0ID49IGludmFsaWRPZmZz
ZXQpOwogICAgIEFTU0VSVChvZmZzZXQgPT0gaW52YWxpZE9mZnNldAotICAgICAgICAgICB8fCB0
eXBlID09IEZpbmFsT2JqZWN0VHlwZQotICAgICAgICAgICB8fCBpc091dE9mTGluZU9mZnNldChv
ZmZzZXQpKTsKKyAgICAgICAgfHwgb2Zmc2V0IDwgaW5saW5lQ2FwYWNpdHkKKyAgICAgICAgfHwg
aXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CiB9CiAKIGlubGluZSB2b2lkIHZhbGlkYXRlT2Zm
c2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKQEAgLTgzLDkgKzc5LDkgQEAgaW5saW5lIHZvaWQg
dmFsaWRhdGVPZmZzZXQoUHJvcGVydHlPZmZzZQogICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9m
ZnNldCkpOwogfQogCi1pbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIEpTVHlwZSB0eXBlKQoraW5saW5lIHZvaWQgdmFsaWRhdGVPZmZzZXQoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LCBQcm9wZXJ0eU9mZnNldCBpbmxpbmVDYXBhY2l0eSkKIHsKLSAgICBjaGVj
a09mZnNldChvZmZzZXQsIHR5cGUpOworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgaW5saW5lQ2Fw
YWNpdHkpOwogICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwogfQogCkBAIC05OCw3
ICs5NCw3IEBAIGlubGluZSBib29sIGlzVmFsaWRPZmZzZXQoUHJvcGVydHlPZmZzZXQKIGlubGlu
ZSBib29sIGlzSW5saW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsKICAgICBjaGVj
a09mZnNldChvZmZzZXQpOwotICAgIHJldHVybiBvZmZzZXQgPCBpbmxpbmVTdG9yYWdlQ2FwYWNp
dHk7CisgICAgcmV0dXJuIG9mZnNldCA8IGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OwogfQogCiBpbmxp
bmUgYm9vbCBpc091dE9mTGluZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCkBAIC0xMzYs
MjggKzEzMiwyNCBAQCBpbmxpbmUgc2l6ZV90IG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMCiAg
ICAgcmV0dXJuIG9mZnNldCAtIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0ICsgMTsKIH0KIAotaW5saW5l
IHNpemVfdCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQs
IEpTVHlwZSB0eXBlKQoraW5saW5lIHNpemVfdCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQsIFByb3BlcnR5T2Zmc2V0IGlubGluZUNhcGFjaXR5KQogewot
ICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7Ci0gICAgaWYgKHR5cGUgPT0gRmluYWxPYmpl
Y3RUeXBlKQorICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgaW5saW5lQ2FwYWNpdHkpOworICAgIGlm
IChvZmZzZXQgPCBpbmxpbmVDYXBhY2l0eSkKICAgICAgICAgcmV0dXJuIG9mZnNldCArIDE7Ci0g
ICAgcmV0dXJuIG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG9mZnNldCk7Cisg
ICAgcmV0dXJuIGlubGluZUNhcGFjaXR5ICsgbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RP
ZmZzZXQob2Zmc2V0KTsKIH0KIAotaW5saW5lIFByb3BlcnR5T2Zmc2V0IG5leHRQcm9wZXJ0eU9m
ZnNldEZvcihQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoraW5saW5lIFByb3Bl
cnR5T2Zmc2V0IHByb3BlcnR5T2Zmc2V0Rm9yKFByb3BlcnR5T2Zmc2V0IHByb3BlcnR5TnVtYmVy
LCBQcm9wZXJ0eU9mZnNldCBpbmxpbmVDYXBhY2l0eSkKIHsKLSAgICBjaGVja09mZnNldChvZmZz
ZXQsIHR5cGUpOwotICAgIGlmICh0eXBlICE9IEZpbmFsT2JqZWN0VHlwZSAmJiBvZmZzZXQgPT0g
aW52YWxpZE9mZnNldCkKLSAgICAgICAgcmV0dXJuIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OwotICAg
IHJldHVybiBvZmZzZXQgKyAxOwotfQotCi1pbmxpbmUgUHJvcGVydHlPZmZzZXQgZmlyc3RQcm9w
ZXJ0eU9mZnNldEZvcihKU1R5cGUgdHlwZSkKLXsKLSAgICByZXR1cm4gbmV4dFByb3BlcnR5T2Zm
c2V0Rm9yKGludmFsaWRPZmZzZXQsIHR5cGUpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9
IHByb3BlcnR5TnVtYmVyOworICAgIGlmIChvZmZzZXQgPj0gaW5saW5lQ2FwYWNpdHkpIHsKKyAg
ICAgICAgb2Zmc2V0ICs9IGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworICAgICAgICBvZmZzZXQgLT0g
aW5saW5lQ2FwYWNpdHk7CisgICAgfQorICAgIHJldHVybiBvZmZzZXQ7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gUHJvcGVydHlPZmZzZXRfaAotCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDEzMDMzNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFN0cnVjdHVyZTo6ZHVtcFN0YXRpc3RpY3Mo
KQogI2VuZGlmCiB9CiAKLVN0cnVjdHVyZTo6U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUsIGNv
bnN0IFR5cGVJbmZvJiB0eXBlSW5mbywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIEluZGV4
aW5nVHlwZSBpbmRleGluZ1R5cGUpCitTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
LCBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlLCBQcm9wZXJ0eU9mZnNldCBpbmxpbmVDYXBhY2l0
eSkKICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVy
ZS5nZXQoKSkKICAgICAsIG1fdHlwZUluZm8odHlwZUluZm8pCiAgICAgLCBtX2luZGV4aW5nVHlw
ZShpbmRleGluZ1R5cGUpCkBAIC0xNTgsNiArMTU4LDcgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9jbGFzc0luZm8oY2xhc3NJbmZvKQogICAgICwg
bV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5nKQogICAgICwgbV9v
dXRPZkxpbmVDYXBhY2l0eSgwKQorICAgICwgbV9pbmxpbmVDYXBhY2l0eShpbmxpbmVDYXBhY2l0
eSkKICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5k
KE5vbmVEaWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNl
KQpAQCAtMTgyLDYgKzE4Myw3IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYg
Z2xvYmEKICAgICAsIG1fY2xhc3NJbmZvKCZzX2luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRj
aHBvaW50U2V0KEluaXRpYWxpemVkV2F0Y2hpbmcpCiAgICAgLCBtX291dE9mTGluZUNhcGFjaXR5
KDApCisgICAgLCBtX2lubGluZUNhcGFjaXR5KDApCiAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zm
c2V0KQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChOb25lRGljdGlvbmFyeUtpbmQpCiAgICAgLCBt
X2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkKQEAgLTIwNCw2ICsyMDYsNyBAQCBTdHJ1Y3R1
cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhCiAgICAgLCBtX2NsYXNzSW5mbyhwcmV2
aW91cy0+bV9jbGFzc0luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KEluaXRp
YWxpemVkV2F0Y2hpbmcpCiAgICAgLCBtX291dE9mTGluZUNhcGFjaXR5KHByZXZpb3VzLT5tX291
dE9mTGluZUNhcGFjaXR5KQorICAgICwgbV9pbmxpbmVDYXBhY2l0eShwcmV2aW91cy0+bV9pbmxp
bmVDYXBhY2l0eSkKICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rp
b25hcnlLaW5kKHByZXZpb3VzLT5tX2RpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFBy
b3BlcnR5VGFibGUoZmFsc2UpCkBAIC02MDksMjAgKzYxMiwyMSBAQCBTdHJ1Y3R1cmUqIFN0cnVj
dHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTCiAgICAgICAgIEFTU0VSVChtX3Byb3BlcnR5VGFibGUp
OwogCiAgICAgICAgIHNpemVfdCBwcm9wZXJ0eUNvdW50ID0gbV9wcm9wZXJ0eVRhYmxlLT5zaXpl
KCk7CisKKyAgICAgICAgLy8gSG9sZHMgb3VyIHZhbHVlcyBjb21wYWN0ZWQgYnkgaW5zZXJ0aW9u
IG9yZGVyLgogICAgICAgICBWZWN0b3I8SlNWYWx1ZT4gdmFsdWVzKHByb3BlcnR5Q291bnQpOwot
ICAgICAgICAKKworICAgICAgICAvLyBDb3BpZXMgb3V0IG91ciB2YWx1ZXMgZnJvbSB0aGVpciBo
YXNoZWQgbG9jYXRpb25zLCBjb21wYWN0aW5nIHByb3BlcnR5IHRhYmxlIG9mZnNldHMgYXMgd2Ug
Z28uCiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwotICAgICAgICBQcm9wZXJ0eU9mZnNldCBmaXJz
dE9mZnNldCA9IGZpcnN0UHJvcGVydHlPZmZzZXRGb3IobV90eXBlSW5mby50eXBlKCkpOwogICAg
ICAgICBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBlbmQgPSBtX3Byb3BlcnR5VGFibGUtPmVuZCgp
OwogICAgICAgICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBtX3Byb3BlcnR5
VGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIsICsraSkgewogICAgICAgICAgICAg
dmFsdWVzW2ldID0gb2JqZWN0LT5nZXREaXJlY3RPZmZzZXQoaXRlci0+b2Zmc2V0KTsKLSAgICAg
ICAgICAgIC8vIFVwZGF0ZSBwcm9wZXJ0eSB0YWJsZSB0byBoYXZlIHRoZSBuZXcgcHJvcGVydHkg
b2Zmc2V0cwotICAgICAgICAgICAgaXRlci0+b2Zmc2V0ID0gaSArIGZpcnN0T2Zmc2V0OworICAg
ICAgICAgICAgaXRlci0+b2Zmc2V0ID0gcHJvcGVydHlPZmZzZXRGb3IoaSwgbV9pbmxpbmVDYXBh
Y2l0eSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIC8vIENvcHkgdGhlIG9yaWdpbmFs
IHByb3BlcnR5IHZhbHVlcyBpbnRvIHRoZWlyIGZpbmFsIGxvY2F0aW9ucworICAgICAgICAvLyBD
b3BpZXMgaW4gb3VyIHZhbHVlcyB0byB0aGVpciBjb21wYWN0ZWQgbG9jYXRpb25zLgogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVydHlDb3VudDsgaSsrKQotICAgICAgICAg
ICAgb2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgZmlyc3RPZmZzZXQgKyBpLCB2
YWx1ZXNbaV0pOworICAgICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0
YSwgcHJvcGVydHlPZmZzZXRGb3IoaSwgbV9pbmxpbmVDYXBhY2l0eSksIHZhbHVlc1tpXSk7CiAK
ICAgICAgICAgbV9wcm9wZXJ0eVRhYmxlLT5jbGVhckRlbGV0ZWRPZmZzZXRzKCk7CiAgICAgfQpA
QCAtNzYwLDcgKzc2NCw3IEBAIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cHV0U3BlY2lmaWNW
YWwKICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAo
KTsKIAotICAgIFByb3BlcnR5T2Zmc2V0IG5ld09mZnNldCA9IG1fcHJvcGVydHlUYWJsZS0+bmV4
dE9mZnNldChtX3R5cGVJbmZvLnR5cGUoKSk7CisgICAgUHJvcGVydHlPZmZzZXQgbmV3T2Zmc2V0
ID0gbV9wcm9wZXJ0eVRhYmxlLT5uZXh0T2Zmc2V0KG1faW5saW5lQ2FwYWNpdHkpOwogCiAgICAg
bV9wcm9wZXJ0eVRhYmxlLT5hZGQoUHJvcGVydHlNYXBFbnRyeShnbG9iYWxEYXRhLCB0aGlzLCBy
ZXAsIG5ld09mZnNldCwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTMwMzM2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY5LDcgKzY5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdHlwZWRlZiBK
U0NlbGwgQmFzZTsKIAotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoSlNHbG9iYWxE
YXRhJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8m
LCBjb25zdCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUgPSAwKTsKKyAgICAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBw
cm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKiwgSW5kZXhpbmdUeXBl
ID0gTm9uQXJyYXksIFByb3BlcnR5T2Zmc2V0IGlubGluZUNhcGFjaXR5ID0gMCk7CiAKICAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhKQpAQCAtMTc5LDI0ICsxNzksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CiAgICAgICAgICAg
ICByZXR1cm4gbV9vdXRPZkxpbmVDYXBhY2l0eTsKICAgICAgICAgfQotICAgICAgICB1bnNpZ25l
ZCBvdXRPZkxpbmVTaXplRm9yS25vd25GaW5hbE9iamVjdCgpIGNvbnN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIEFTU0VSVChtX3R5cGVJbmZvLnR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGUpOwot
ICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkgewotICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHRvdGFsU2l6ZSA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwot
ICAgICAgICAgICAgICAgIGlmICh0b3RhbFNpemUgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5s
aW5lU3RvcmFnZUNhcGFjaXR5KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZSAtIGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9y
TGFzdE9mZnNldChtX29mZnNldCk7Ci0gICAgICAgIH0KLSAgICAgICAgdW5zaWduZWQgb3V0T2ZM
aW5lU2l6ZUZvcktub3duTm9uRmluYWxPYmplY3QoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICBBU1NFUlQobV90eXBlSW5mby50eXBlKCkgIT0gRmluYWxPYmplY3RUeXBlKTsKLSAgICAg
ICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fcHJv
cGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwotICAgICAgICAgICAgcmV0dXJuIG51
bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KTsKLSAgICAgICAgfQog
ICAgICAgICB1bnNpZ25lZCBvdXRPZkxpbmVTaXplKCkgY29uc3QKICAgICAgICAgewogICAgICAg
ICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKQEAgLTIx
MSwzMSArMTkzLDIwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIGJvb2wg
aGFzSW5saW5lU3RvcmFnZSgpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBt
X3R5cGVJbmZvLnR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGU7CisgICAgICAgICAgICByZXR1cm4g
ISFtX2lubGluZUNhcGFjaXR5OwogICAgICAgICB9CiAgICAgICAgIHVuc2lnbmVkIGlubGluZUNh
cGFjaXR5KCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGhhc0lubGluZVN0b3Jh
Z2UoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZUNhcGFjaXR5OwotICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbV9pbmxpbmVDYXBhY2l0eTsK
ICAgICAgICAgfQotICAgICAgICB1bnNpZ25lZCBpbmxpbmVTaXplRm9yS25vd25GaW5hbE9iamVj
dCgpIGNvbnN0CisgICAgICAgIHVuc2lnbmVkIGlubGluZVNpemUoKSBjb25zdAogICAgICAgICB7
Ci0gICAgICAgICAgICBBU1NFUlQobV90eXBlSW5mby50eXBlKCkgPT0gRmluYWxPYmplY3RUeXBl
KTsKICAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdDsKICAgICAgICAgICAgIGlmIChtX3Byb3Bl
cnR5VGFibGUpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9w
ZXJ0eVN0b3JhZ2VTaXplKCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmVz
dWx0ID0gbV9vZmZzZXQgKyAxOwotICAgICAgICAgICAgaWYgKHJlc3VsdCA+IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKQotICAgICAgICAgICAgICAgIHJldHVy
biBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
ICAgICB9Ci0gICAgICAgIHVuc2lnbmVkIGlubGluZVNpemUoKSBjb25zdAotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoIWhhc0lubGluZVN0b3JhZ2UoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgICAgIHJldHVybiBpbmxpbmVTaXplRm9yS25vd25GaW5hbE9iamVjdCgp
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHJlc3VsdCwgbV9pbmxpbmVDYXBhY2l0eSk7
CiAgICAgICAgIH0KICAgICAgICAgdW5zaWduZWQgdG90YWxTdG9yYWdlU2l6ZSgpIGNvbnN0CiAg
ICAgICAgIHsKQEAgLTI1MywxNiArMjI0LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoaGFzSW5saW5lU3RvcmFnZSgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICAgICAgcmV0dXJuIGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAg
ICAgICAgIHJldHVybiBmaXJzdE91dE9mTGluZU9mZnNldDsKICAgICAgICAgfQogICAgICAgICBQ
cm9wZXJ0eU9mZnNldCBsYXN0VmFsaWRPZmZzZXQoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7Ci0gICAgICAgICAgICAgICAgUHJvcGVydHlPZmZz
ZXQgc2l6ZSA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwotICAgICAg
ICAgICAgICAgIGlmICghaGFzSW5saW5lU3RvcmFnZSgpKQotICAgICAgICAgICAgICAgICAgICBz
aXplICs9IGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKLSAgICAgICAgICAgICAgICByZXR1cm4gc2l6
ZSAtIDE7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQor
ICAgICAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eU9mZnNldEZvcihtX3Byb3BlcnR5VGFibGUt
PnByb3BlcnR5U3RvcmFnZVNpemUoKSAtIDEsIG1faW5saW5lQ2FwYWNpdHkpOwogICAgICAgICAg
ICAgcmV0dXJuIG1fb2Zmc2V0OwogICAgICAgICB9CiAgICAgICAgIGJvb2wgaXNWYWxpZE9mZnNl
dChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIGNvbnN0CkBAIC0zODMsNyArMzUwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUlu
Zm8mLCBjb25zdCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUgPSAwKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKiwgSW5kZXhp
bmdUeXBlLCBQcm9wZXJ0eU9mZnNldCBpbmxpbmVDYXBhY2l0eSk7CiAgICAgICAgIFN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIGNvbnN0
IFN0cnVjdHVyZSopOwogCkBAIC00NTksNiArNDI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIG11dGFibGUgSW5saW5lV2F0Y2hwb2ludFNldCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0
OwogCiAgICAgICAgIHVpbnQzMl90IG1fb3V0T2ZMaW5lQ2FwYWNpdHk7CisgICAgICAgIHVpbnQz
Ml90IG1faW5saW5lQ2FwYWNpdHk7CiAKICAgICAgICAgLy8gbV9vZmZzZXQgZG9lcyBub3QgYWNj
b3VudCBmb3IgYW5vbnltb3VzIHNsb3RzCiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0
OwpAQCAtNDc1LDExICs0NDMsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVk
IG1fc3RhdGljRnVuY3Rpb25SZWlmaWVkOwogICAgIH07CiAKLSAgICBpbmxpbmUgU3RydWN0dXJl
KiBTdHJ1Y3R1cmU6OmNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlw
ZUluZm8sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdU
eXBlKQorICAgIGlubGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Y3JlYXRlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm8sIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUsIFByb3BlcnR5T2Zmc2V0IGlubGluZUNhcGFj
aXR5KQogICAgIHsKICAgICAgICAgQVNTRVJUKGdsb2JhbERhdGEuc3RydWN0dXJlU3RydWN0dXJl
KTsKICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbyk7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlPihnbG9iYWxEYXRhLmhl
YXApKSBTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIHR5cGVJ
bmZvLCBjbGFzc0luZm8sIGluZGV4aW5nVHlwZSk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlPihnbG9iYWxEYXRhLmhl
YXApKSBTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIHR5cGVJ
bmZvLCBjbGFzc0luZm8sIGluZGV4aW5nVHlwZSwgaW5saW5lQ2FwYWNpdHkpOwogICAgICAgICBz
dHJ1Y3R1cmUtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAgICAgICByZXR1cm4gc3Ry
dWN0dXJlOwogICAgIH0K
</data>
<flag name="review"
          id="179550"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>