<?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>230801</bug_id>
          
          <creation_ts>2021-09-26 01:08:22 -0700</creation_ts>
          <short_desc>[JSC] Optimize PutByVal with for-in</short_desc>
          <delta_ts>2021-09-26 22:02:52 -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>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>
          <dependson>230815</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1797278</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-26 01:08:22 -0700</bug_when>
    <thetext>[JSC] Optimize PutByVal with for-in</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797286</commentid>
    <comment_count>1</comment_count>
      <attachid>439293</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-26 02:36:17 -0700</bug_when>
    <thetext>Created attachment 439293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797289</commentid>
    <comment_count>2</comment_count>
      <attachid>439293</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-26 09:29:59 -0700</bug_when>
    <thetext>Comment on attachment 439293
Patch

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

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1503
&gt; +    OpJeqPtr::emit(this, cond, moveLinkTimeConstant(nullptr, LinkTimeConstant::sentinelString), target.bind(this));

No need for this to be a link time constant. It can live on UnlinkedCodeBlock. It’s not related to global object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797345</commentid>
    <comment_count>3</comment_count>
      <attachid>439293</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-26 21:13:29 -0700</bug_when>
    <thetext>Comment on attachment 439293
Patch

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

Thanks

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1503
&gt;&gt; +    OpJeqPtr::emit(this, cond, moveLinkTimeConstant(nullptr, LinkTimeConstant::sentinelString), target.bind(this));
&gt; 
&gt; No need for this to be a link time constant. It can live on UnlinkedCodeBlock. It’s not related to global object.

Changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797346</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-26 21:14:32 -0700</bug_when>
    <thetext>Committed r283095 (242153@main): &lt;https://commits.webkit.org/242153@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797347</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-26 21:15:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/83557863&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797350</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-09-26 21:23:03 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 230815</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797352</commentid>
    <comment_count>7</comment_count>
      <attachid>439293</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-26 21:23:36 -0700</bug_when>
    <thetext>Comment on attachment 439293
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1503
&gt;&gt;&gt; +    OpJeqPtr::emit(this, cond, moveLinkTimeConstant(nullptr, LinkTimeConstant::sentinelString), target.bind(this));
&gt;&gt; 
&gt;&gt; No need for this to be a link time constant. It can live on UnlinkedCodeBlock. It’s not related to global object.
&gt; 
&gt; Changed.

Ah, no. This should be link-time-constant. Otherwise, it does not work with bytecode cache. I&apos;ll revert the patch and reland the original one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797353</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-26 21:25:19 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #7)
&gt; Comment on attachment 439293 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=439293&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1503
&gt; &gt;&gt;&gt; +    OpJeqPtr::emit(this, cond, moveLinkTimeConstant(nullptr, LinkTimeConstant::sentinelString), target.bind(this));
&gt; &gt;&gt; 
&gt; &gt;&gt; No need for this to be a link time constant. It can live on UnlinkedCodeBlock. It’s not related to global object.
&gt; &gt; 
&gt; &gt; Changed.
&gt; 
&gt; Ah, no. This should be link-time-constant. Otherwise, it does not work with
&gt; bytecode cache. I&apos;ll revert the patch and reland the original one.

I see... That&apos;s unfortunate. I guess you could also make it so that we test equivalence to the &quot;sentinel string&quot; when serializing bytecode, and then store it as some kind of marker. But, just making it a link time constant sounds simple enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797360</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-26 22:02:52 -0700</bug_when>
    <thetext>Committed r283098 (242156@main): &lt;https://commits.webkit.org/242156@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439293</attachid>
            <date>2021-09-26 02:36:17 -0700</date>
            <delta_ts>2021-09-26 14:36:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230801-20210926023616.patch</filename>
            <type>text/plain</type>
            <size>38857</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
Y2FkMDRmNzQ4NWUzNDdhYWNhYjllZDEyZThmNDNlM2JlZTkzMzQyLi4xOTFiYTMyNDNkODllODc2
NzExNzYxMzE1Y2Y2MDQxMWY2YmM0MjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDggQEAKKzIwMjEtMDktMjYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBQdXRCeVZhbCB3aXRoIGZvci1pbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwODAxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgZm91bmQgdGhhdCBz
b21lIG9mIFNwZWVkb21ldGVyMiBzdWJ0ZXN0cyBhcmUgaGVhdmlseSB1c2luZyBmb3ItaW4gd2l0
aCBQdXRCeVZhbCBvciB0aGUgb3RoZXIgREZHIG5vZGVzLgorICAgICAgICBBbmQgd2UgYWxzbyBm
b3VuZCB0aGF0IHdlIGFyZSB1c2luZyBwb2xsdXRlZCBub24tZ29vZCB0eXBlIGZvciB0aGUgcHJv
cGVydHkgbmFtZXMgZnJvbSBmb3ItaW46IFN0cmluZyB8IE90aGVyLgorICAgICAgICBUaGUgcmVh
c29uIGlzIHRoYXQgd2UgYXJlIHJldHVybmluZyBudWxsIHdoZW4gb3BfZW51bWVyYXRvcl9uZXh0
IGZpbmlzaGVzIGluc3RlYWQgb2Ygc3RyaW5nLiBBbmQgdGhpcyBkZXNpZ24KKyAgICAgICAgZm9y
Y2VzIERGRyBhbmQgRlRMIHRvIHJldHVybiBudWxsIGZyb20gRW51bWVyYXRvck5leHRVcGRhdGVQ
cm9wZXJ0eU5hbWUgYXQgdGhlIGVuZCBvZiBpdGVyYXRpb24uIFRoaXMgcG9sbHV0ZXMKKyAgICAg
ICAgdGhlIHR5cGUgb2YgcHJvcGVydHkgbmFtZXMgYXMgU3RyaW5nIHwgT3RoZXIgaW5zdGVhZCBv
ZiBTdHJpbmcsIGFuZCBsZWFkaW5nIHRvIHN1Ym9wdGltYWwgREZHIG5vZGVzLgorCisgICAgICAg
IEluIHRoaXMgcGF0Y2gsIHdlIGFkZCBzcGVjaWFsIHNlbnRpbmVsIHN0cmluZyBpbiB2bS5zbWFs
bFN0cmluZy5zZW50aW5lbFN0cmluZygpLiBXZSBrbm93IHRoYXQgdGhpcyBzdHJpbmcgY2VsbAor
ICAgICAgICBwb2ludGVyIHdpbGwgYmUgbmV2ZXIgcmV0dXJuZWQgZnJvbSBFbnVtZXJhdG9yTmV4
dFVwZGF0ZVByb3BlcnR5TmFtZSBpbiB0aGUgbm9ybWFsIGZvci1pbiBpdGVyYXRpb24uIFRoaXMg
aXMgZWFzeQorICAgICAgICBzaW5jZSB3ZSBhcmUgYWx3YXlzIGFsbG9jYXRpbmcgYSBKU1N0cmlu
ZyB3aGVuIGNyZWF0aW5nIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvci4gU28gdGhpcyBzdHJpbmcg
Y2VsbCAobm90IHRoZSBjb250ZW50KQorICAgICAgICBpcyBhbHdheXMgZGlmZmVyZW50IGZyb20g
cHJlLWFsbG9jYXRlZCB2bS5zbWFsbFN0cmluZy5zZW50aW5lbFN0cmluZygpLiBTbywgd2UgdXNl
IHRoaXMgc3BlY2lhbCBzdHJpbmcgcG9pbnRlcgorICAgICAgICBhcyBhIHNlbnRpbmVsIGluc3Rl
YWQgb2YgbnVsbCBzbyB0aGF0IHdlIGNhbiBhdm9pZCBwb2xsdXRpbmcgcmV0dXJuIHR5cGUgb2Yg
RW51bWVyYXRvck5leHRVcGRhdGVQcm9wZXJ0eU5hbWUuCisKKyAgICAgICAgVG8gY2hlY2sgdGhl
IHNlbnRpbmVsIGluIExMSW50IC8gQmFzZWxpbmUsIHRoaXMgcGF0Y2ggYWRkcyBqZXFfcHRyLCB3
aGljaCBwZXJmb3JtcyBjZWxsIHBvaW50ZXIgY29tcGFyaXNvbiBhbmQgZG8KKyAgICAgICAgbm90
IGNoZWNrIHN0cmluZyBjb250ZW50IGVxdWFsaXR5LiBXZSBkbyBub3QgbmVlZCB0byBoYXZlIGFu
IGltcGxlbWVudGF0aW9uIGluIERGRyBzaW5jZSB3ZSBhbHJlYWR5IGhhdmUgQ29tcGFyZUVxUHRy
CisgICAgICAgIGZvciBleGlzdGluZyBqbmVxX3B0ciBieXRlY29kZS4KKworICAgICAgICBXZSBh
bHNvIGNsZWFuIHVwIERGRyBvcGVyYXRpb24gcmVsYXRlZCB0byBQdXRCeVZhbC4KKworICAgICAg
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIHwgICAgICAgICAgICAgICBzdWJ0ZXN0ICAgICAg
ICAgICAgICAgIHwgICAgIG1zICAgICAgfCAgICAgbXMgICAgICB8ICBiIC8gYSAgIHwgcFZhbHVl
IChzaWduaWZpY2FuY2UgdXNpbmcgRmFsc2UgRGlzY292ZXJ5IFJhdGUpIHwKKyAgICAgICAgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorICAgICAgICB8IEVsbS1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAg
ICAgICB8MTE2LjAxMDAwMCAgIHwxMTIuNzAxNjY3ICAgfDAuOTcxNDgyICB8IDAuMDAwMDAwIChz
aWduaWZpY2FudCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgVnVlSlMt
VG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgIHwyMi45OTUwMDAgICAgfDIzLjAyMzMzMyAg
ICB8MS4wMDEyMzIgIHwgMC45MDcwODYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgfCBFbWJlckpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAg
fDEyNS40OTgzMzMgICB8MTI1LjUyNTAwMCAgIHwxLjAwMDIxMiAgfCAwLjkzMjU0NiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEJhY2tib25lSlMt
VG9kb01WQyAgICAgICAgICAgICAgICAgICB8NDUuNzAwMDAwICAgIHw0NS45NzUwMDAgICAgfDEu
MDA2MDE4ICB8IDAuMDg0Nzk5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgIHwgUHJlYWN0LVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgIHwxNi42
ODE2NjcgICAgfDE2LjYxMDAwMCAgICB8MC45OTU3MDQgIHwgMC43MjI3NTggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBBbmd1bGFySlMtVG9kb01W
QyAgICAgICAgICAgICAgICAgICAgfDEyMy43NTMzMzMgICB8MTIzLjc0MDAwMCAgIHwwLjk5OTg5
MiAgfCAwLjk3MTQzMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICB8IFZhbmlsbGEtRVMyMDE1LVRvZG9NVkMgICAgICAgICAgICAgICB8NjEuMjU1MDAw
ICAgIHw2MS4zODAwMDAgICAgfDEuMDAyMDQxICB8IDAuMzAwNjU0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgSW5mZXJuby1Ub2RvTVZDICAgICAg
ICAgICAgICAgICAgICAgIHw1OC42NDY2NjcgICAgfDU4Ljk0ODMzMyAgICB8MS4wMDUxNDQgIHwg
MC4yNjc2MTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgfCBGbGlnaHQtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDczLjI4MzMzMyAgICB8
NzIuODAxNjY3ICAgIHwwLjk5MzQyNyAgfCAwLjIwNzM4OSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEFuZ3VsYXIyLVR5cGVTY3JpcHQtVG9kb01W
QyAgICAgICAgICB8MzkuNzQ2NjY3ICAgIHw0MC4wMTUwMDAgICAgfDEuMDA2NzUxICB8IDAuNDQ5
ODIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
VmFuaWxsYUpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgIHw1MC4wOTY2NjcgICAgfDQ5Ljgy
MzMzMyAgICB8MC45OTQ1NDQgIHwgMC4xNjIwMjAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKKyAgICAgICAgfCBqUXVlcnktVG9kb01WQyAgICAgICAgICAgICAgICAg
ICAgICAgfDIxMi44NzAwMDAgICB8MjEzLjE5NjY2NyAgIHwxLjAwMTUzNSAgfCAwLjM3MTk0NCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEVtYmVy
SlMtRGVidWctVG9kb01WQyAgICAgICAgICAgICAgICB8MzMxLjg3ODMzMyAgIHwzMzIuNzEwMDAw
ICAgfDEuMDAyNTA2ICB8IDAuMDk0NDk5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgIHwgUmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAg
IHw4My4wNzgzMzMgICAgfDgyLjcyNjY2NyAgICB8MC45OTU3NjcgIHwgMC4wNzYxNDMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBSZWFjdC1SZWR1
eC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgfDEzNi4wMTgzMzMgICB8MTMzLjkzNTAwMCAgIHww
Ljk4NDY4MyAgfCAwLjAwMDAwMCAoc2lnbmlmaWNhbnQpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgICAgICB8IFZhbmlsbGEtRVMyMDE1LUJhYmVsLVdlYnBhY2stVG9kb01WQyB8NTku
NzQzMzMzICAgIHw1OS42NDMzMzMgICAgfDAuOTk4MzI2ICB8IDAuMzkzNjcxICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyAgICAgICAgYSBtZWFuID0gMjcxLjc1ODczCisgICAgICAgIGIgbWVhbiA9IDI3Mi40NTgwNAor
ICAgICAgICBwVmFsdWUgPSAwLjAyNjMwMzA4MDMKKyAgICAgICAgKEJpZ2dlciBtZWFucyBhcmUg
YmV0dGVyLikKKyAgICAgICAgMS4wMDMgdGltZXMgYmV0dGVyCisgICAgICAgIFJlc3VsdHMgQVJF
IHNpZ25pZmljYW50CisKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJ
bXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L09wY29kZS5oOgorICAgICAgICAoSlNDOjppc0JyYW5jaCk6CisgICAgICAgICogYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkdlbmVyaWNMYWJlbDxKU0dlbmVyYXRv
clRyYWl0cz46OnNldExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRKdW1wSWZTZW50aW5lbFN0cmluZyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6
CisgICAgICAgIChKU0M6OkZvckluTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZn
L0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnB1dEJ5VmFsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpwdXRCeVZhbEludGVybmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpwdXRC
eVZhbENlbGxJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUVudW1lcmF0b3JOZXh0VXBkYXRlUHJvcGVydHlOYW1lKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZUNvbXBhcmVTdHJpY3RFcSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2plcV9wdHIpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfamVxX3B0cik6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dCk6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DT01NT05fU0xPV19QQVRI
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmNw
cDoKKyAgICAgICAgKEpTQzo6U21hbGxTdHJpbmdzOjppbml0aWFsaXplQ29tbW9uU3RyaW5ncyk6
CisgICAgICAgIChKU0M6OlNtYWxsU3RyaW5nczo6dmlzaXRTdHJvbmdSZWZlcmVuY2VzKToKKyAg
ICAgICAgKiBydW50aW1lL1NtYWxsU3RyaW5ncy5oOgorICAgICAgICAoSlNDOjpTbWFsbFN0cmlu
Z3M6OnNlbnRpbmVsU3RyaW5nIGNvbnN0KToKKwogMjAyMS0wOS0yNSAgU2FhbSBCYXJhdGkgIDxz
YmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBhbiB1bmxpbmtlZCBiYXNlbGluZSBK
SVQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFt
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRl
eCBkY2FmMGJhNmNhMzE4ZjE4MDI5MmNiYThkN2RjMDBmYTU3NzkxZWEwLi4yOWJjM2FlMDEwNDEz
MGU1MWVhMmUwOWFlMzdkNDBiZjAyMTEzMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0xODIsNyArMTgyLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgbWFjcm8oY3JlYXRlUHJpdmF0ZVN5bWJvbCkgXAogICAgIG1hY3JvKGVudHJpZXMp
IFwKICAgICBtYWNybyhvdXRPZkxpbmVSZWFjdGlvbkNvdW50cykgXAotICAgIG1hY3JvKGVtcHR5
UHJvcGVydHlOYW1lRW51bWVyYXRvcikKKyAgICBtYWNybyhlbXB0eVByb3BlcnR5TmFtZUVudW1l
cmF0b3IpIFwKKyAgICBtYWNybyhzZW50aW5lbFN0cmluZykgXAogCiAKIG5hbWVzcGFjZSBTeW1i
b2xzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
CmluZGV4IDg3YzkwYTA4NTY3NDg0YjM3ZTk2MWM3YWE4MDkzMzY3YjZjMzU5OTguLjFiODhkMGVj
NDc1MGNhYzMwZTc3ZDQ4NzljZTk1NDQ5NWJlNzJiMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtNzYyLDYgKzc2MiwxMyBAQAogICAg
ICAgICB0YXJnZXRMYWJlbDogQm91bmRMYWJlbCwKICAgICB9CiAKK29wIDpqZXFfcHRyLAorICAg
IGFyZ3M6IHsKKyAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgc3BlY2lh
bFBvaW50ZXI6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgdGFyZ2V0TGFiZWw6IEJvdW5kTGFi
ZWwsCisgICAgfQorCiBvcCA6am5lcV9wdHIsCiAgICAgYXJnczogewogICAgICAgICB2YWx1ZTog
VmlydHVhbFJlZ2lzdGVyLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5jcHAKaW5kZXggMzI0N2UyZTcxNTFiMWVkNTg5YTk2ZDk0ODU3NTMyYWMz
YmFmMTc2Ny4uZmI1NmQ0Y2JiNWM5ZTg3MmE5NzRmNTI1NGU2MWFiMGYwZTk3ZmRmYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBA
IC04MCw3ICs4MCw2IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0
dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAgLy8gTm8gdXNlcy4K
ICAgICBjYXNlIG9wX25ld19yZWdleHA6CiAgICAgY2FzZSBvcF9kZWJ1ZzoKLSAgICBjYXNlIG9w
X2puZXFfcHRyOgogICAgIGNhc2Ugb3BfbG9vcF9oaW50OgogICAgIGNhc2Ugb3Bfam1wOgogICAg
IGNhc2Ugb3BfbmV3X29iamVjdDoKQEAgLTEzNSw2ICsxMzQsOSBAQCB2b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0
IEluc3RydQogICAgIFVTRVMoT3BKbnN0cmljdGVxLCBsaHMsIHJocykKICAgICBVU0VTKE9wSmJl
bG93LCBsaHMsIHJocykKICAgICBVU0VTKE9wSmJlbG93ZXEsIGxocywgcmhzKQorICAgIFVTRVMo
T3BKZXFQdHIsIHZhbHVlLCBzcGVjaWFsUG9pbnRlcikKKyAgICBVU0VTKE9wSm5lcVB0ciwgdmFs
dWUsIHNwZWNpYWxQb2ludGVyKQorCiAgICAgVVNFUyhPcFNldEZ1bmN0aW9uTmFtZSwgZnVuY3Rp
b24sIG5hbWUpCiAgICAgVVNFUyhPcExvZ1NoYWRvd0NoaWNrZW5UYWlsLCB0aGlzVmFsdWUsIHNj
b3BlKQogCkBAIC0zNjUsNiArMzY3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5k
ZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnUKICAgICBj
YXNlIG9wX2puZXFfbnVsbDoKICAgICBjYXNlIG9wX2p1bmRlZmluZWRfb3JfbnVsbDoKICAgICBj
YXNlIG9wX2pudW5kZWZpbmVkX29yX251bGw6CisgICAgY2FzZSBvcF9qZXFfcHRyOgogICAgIGNh
c2Ugb3Bfam5lcV9wdHI6CiAgICAgY2FzZSBvcF9qbGVzczoKICAgICBjYXNlIG9wX2psZXNzZXE6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25z
dGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQu
aAppbmRleCA1ZjMyYWY4MjBlNDVmYTQ5ZGM5MmZjNDU2N2FhZjQwMTUzY2JlYWJkLi5iZmJhZDJh
NTJmMTY0YTRjNWY1ZTk3N2E0MmNiY2M4YjllYTdhMjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKQEAgLTExMiw2ICsxMTIsNyBA
QCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2KGhhc093blByb3BlcnR5RnVuY3Rpb24sIG51
bGxwdHIpIFwKICAgICB2KGNyZWF0ZVByaXZhdGVTeW1ib2wsIG51bGxwdHIpIFwKICAgICB2KGVt
cHR5UHJvcGVydHlOYW1lRW51bWVyYXRvciwgbnVsbHB0cikgXAorICAgIHYoc2VudGluZWxTdHJp
bmcsIG51bGxwdHIpIFwKIAogCiAjZGVmaW5lIERFQ0xBUkVfTElOS19USU1FX0NPTlNUQU5UKG5h
bWUsIGNvZGUpIG5hbWUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKaW5k
ZXggYTNhZGYyZDIyNDYyOWNjMTZkZDFkOTY3ZmQ1OGU3M2M2MzM5Zjk4Yi4uY2E4YmVmMzI4YjRi
ZmIyYjBkZmRjOGIyODUyNDkyMWFjODM5YmQzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PcGNvZGUuaApAQCAtMjEwLDYgKzIxMCw3IEBAIGlubGluZSBib29sIGlzQnJhbmNoKE9w
Y29kZUlEIG9wY29kZUlEKQogICAgIGNhc2Ugb3Bfam5lcV9udWxsOgogICAgIGNhc2Ugb3BfanVu
ZGVmaW5lZF9vcl9udWxsOgogICAgIGNhc2Ugb3Bfam51bmRlZmluZWRfb3JfbnVsbDoKKyAgICBj
YXNlIG9wX2plcV9wdHI6CiAgICAgY2FzZSBvcF9qbmVxX3B0cjoKICAgICBjYXNlIG9wX2psZXNz
OgogICAgIGNhc2Ugb3Bfamxlc3NlcToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oCmluZGV4IDMwNmM5YjRj
NWQ4OTA5YTVjODM3ZGFhNmEzZTNhMGU0NzY2ZWQzZWMuLjBiZDQwMzk4NDUyZDljZWY2NTBjODQ5
ZWE3ZTJlM2RjNzM2NjRkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaApAQCAtNDMsNiArNDMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBDQVNFX09QKE9wSm5lcU51bGwpIFwKICAgICBDQVNFX09Q
KE9wSnVuZGVmaW5lZE9yTnVsbCkgXAogICAgIENBU0VfT1AoT3BKbnVuZGVmaW5lZE9yTnVsbCkg
XAorICAgIENBU0VfT1AoT3BKZXFQdHIpIFwKICAgICBDQVNFX09QKE9wSm5lcVB0cikgXAogICAg
IFwKICAgICBDQVNFX09QKE9wSmxlc3MpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNWQ4ZThkMTU4
YWE0Mjc1ZWM4YjcyOWRjNjIyMWFhNGY0ODhkNWYyMS4uODYwMTc3ZWJjYzQwYzQ4OTBjNzBmZGIy
ZGJkODA1Mjg0ZDdhZjYxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTEwNSw2ICsxMDUsNyBAQCB2
b2lkIEdlbmVyaWNMYWJlbDxKU0dlbmVyYXRvclRyYWl0cz46OnNldExvY2F0aW9uKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgICAgIENBU0UoT3BKZXEpCiAgICAgICAgIENBU0Uo
T3BKc3RyaWN0ZXEpCiAgICAgICAgIENBU0UoT3BKbmVxKQorICAgICAgICBDQVNFKE9wSmVxUHRy
KQogICAgICAgICBDQVNFKE9wSm5lcVB0cikKICAgICAgICAgQ0FTRShPcEpuc3RyaWN0ZXEpCiAg
ICAgICAgIENBU0UoT3BKbGVzcykKQEAgLTE0OTcsNiArMTQ5OCwxMSBAQCB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShSZWdpc3RlcklEKiBjb25kLCBM
YWJlbCYgdGFyZwogICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBtb3ZlTGlua1RpbWVD
b25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjphcHBseUZ1bmN0aW9uKSwgdGFyZ2V0
LmJpbmQodGhpcykpOwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmU2Vu
dGluZWxTdHJpbmcoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCkKK3sKKyAgICBPcEpl
cVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5r
VGltZUNvbnN0YW50OjpzZW50aW5lbFN0cmluZyksIHRhcmdldC5iaW5kKHRoaXMpKTsKK30KKwog
dW5zaWduZWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRXaWRlSnVtcElmTm90RnVuY3Rpb25IYXNP
d25Qcm9wZXJ0eShSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KQogewogICAgIE9wSm5l
cVB0cjo6ZW1pdDxPcGNvZGVTaXplOjpXaWRlMzI+KHRoaXMsIGNvbmQsIG1vdmVMaW5rVGltZUNv
bnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6Omhhc093blByb3BlcnR5RnVuY3Rpb24p
LCB0YXJnZXQuYmluZCh0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggOGZhMDQ3ODg3YTA0ZmI2YjMx
MzE0MDNhMmIxNzY2YTM1ZWFhY2RkYy4uNTExYzQwZjEwNTA0ZDIyNDk4NTVlYWM3OWFkMTA5ZTMz
NjgwNDRjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtODU4LDYgKzg1OCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGVtaXRKdW1wSWZGYWxzZShSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYg
dGFyZ2V0KTsKICAgICAgICAgdm9pZCBlbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKFJlZ2lzdGVy
SUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpOwogICAgICAgICB2b2lkIGVtaXRKdW1wSWZOb3RGdW5j
dGlvbkFwcGx5KFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpOworICAgICAgICB2b2lk
IGVtaXRKdW1wSWZTZW50aW5lbFN0cmluZyhSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0
KTsKICAgICAgICAgdW5zaWduZWQgZW1pdFdpZGVKdW1wSWZOb3RGdW5jdGlvbkhhc093blByb3Bl
cnR5KFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpOwogICAgICAgICB2b2lkIHJlY29y
ZEhhc093blByb3BlcnR5SW5Gb3JJbkxvb3AoRm9ySW5Db250ZXh0JiwgdW5zaWduZWQgYnJhbmNo
T2Zmc2V0LCBMYWJlbCYgZ2VuZXJpY1BhdGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggM2I4YTY2ZmViZDJkMjg0
MjFmMjdiNDlhZTliNjc3MDI5OGEyNjA3MS4uNTM4NDUzOWEyZTk2NzJhZDc1MmIzMmUxMDE1NmQ4
Yzc1NjI4MTZhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNDIyNyw5ICs0MjI3LDcgQEAgdm9pZCBGb3JJbk5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCiAKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgd2F5IHRvIHNlZSBpZiBh
bnlvbmUgaXMgYWN0dWFsbHkgdXNpbmcgdGhlIHByb3BlcnR5TmFtZSBmb3Igc29tZXRoaW5nIG90
aGVyIHRoYW4gYSBnZXRfYnlfdmFsLiBJZiBub3QsIHdlIGNvdWxkIGVsaW1pbmF0ZSB0aGUgdG9T
dHJpbmcgaW4gdGhpcyBvcGNvZGUuCiAgICAgICAgIGdlbmVyYXRvci5lbWl0RW51bWVyYXRvck5l
eHQocHJvcGVydHlOYW1lLmdldCgpLCBtb2RlLmdldCgpLCBpbmRleC5nZXQoKSwgYmFzZS5nZXQo
KSwgZW51bWVyYXRvci5nZXQoKSk7Ci0KLSAgICAgICAgLy8gTm90ZSwgY2hvb3NpbmcgdW5kZWZp
bmVkIG9yIG51bGwgaGVscHMgcGxlYXNlIERGRydzIEFic3RyYWN0IEludGVycHJldGVyIGFzIGl0
IGRvZXNuJ3QgZGlzdGluZ3Vpc2ggbnVsbCBhbmQgdW5kZWZpbmVkIGFzIHR5cGVzICh2aWEgU3Bl
Y090aGVyKS4KLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGdlbmVyYXRvci5lbWl0
SXNVbmRlZmluZWRPck51bGwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9wZXJ0eU5hbWUu
Z2V0KCkpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVt
cElmU2VudGluZWxTdHJpbmcocHJvcGVydHlOYW1lLmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQo
KSk7CiAKICAgICAgICAgdGhpcy0+ZW1pdExvb3BIZWFkZXIoZ2VuZXJhdG9yLCBwcm9wZXJ0eU5h
bWUuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggMDRjMTNiOTliMDFmMzhmOTg5Njdl
ODNhYzgzOTM0MTg4NTI0NWI0Ni4uZjZlMmU4N2YzNGVjNDMzMGU0NzBkZmYyYmI0YjY1ZTk3ZjFl
N2M4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDMyMyw3ICs0MzIzLDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWdu
ZWQgY2xvYmJlckxpbWkKICAgICB9CiAKICAgICBjYXNlIEVudW1lcmF0b3JOZXh0VXBkYXRlUHJv
cGVydHlOYW1lOiB7Ci0gICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNTdHJpbmcgfCBT
cGVjT3RoZXIpOworICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjU3RyaW5nSWRlbnQp
OwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMDM5ZTc2OWRjZTc3NzM5NjA4ZjgzZDYxMzgz
OWNhNjA2MmNhN2Y4MC4uZjUwNTYwZjM0YjIxMjZhZGM0NjYxM2U4MzBlOWI0NTBkYzg0YjU4OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
QEAgLTc2MzIsNiArNzYzMiwxNiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXRlcmF0b3JfbmV4dCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2plcV9wdHI6IHsKKyAgICAgICAgICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmVxUHRyPigpOworICAgICAg
ICAgICAgRnJvemVuVmFsdWUqIGZyb3plblBvaW50ZXIgPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyht
X2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2V0Q29uc3RhbnQoYnl0ZWNvZGUubV9zcGVj
aWFsUG9pbnRlcikpOworICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1w
VGFyZ2V0KGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgTm9kZSogY2hpbGQg
PSBnZXQoYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgICAgICAgICBOb2RlKiBjb25kaXRpb24gPSBh
ZGRUb0dyYXBoKENvbXBhcmVFcVB0ciwgT3BJbmZvKGZyb3plblBvaW50ZXIpLCBjaGlsZCk7Cisg
ICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEobV9jdXJyZW50
SW5kZXgub2Zmc2V0KCkgKyByZWxhdGl2ZU9mZnNldCwgbV9jdXJyZW50SW5kZXgub2Zmc2V0KCkg
KyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSkpLCBjb25kaXRpb24pOworICAgICAgICAgICAg
TEFTVF9PUENPREUob3BfamVxX3B0cik7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2pu
ZXFfcHRyOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEpuZXFQdHI+KCk7CiAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuUG9pbnRl
ciA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5n
ZXRDb25zdGFudChieXRlY29kZS5tX3NwZWNpYWxQb2ludGVyKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggYWM3ODJkOTliNDUzYzUwODI2
MWE3ZjNhODc5NTU4ODAwZDAwNWY3NS4uNWM3MjA1OGRjZjIxOTYwZGNmODUzZTBhOTJjMjdlODlh
MmQ1NmJlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcApAQCAtMjQwLDYgKzI0MCw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwo
T3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2Fz
ZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9wdXRfdG9fYXJndW1lbnRzOgog
ICAgIGNhc2Ugb3BfZ2V0X2FyZ3VtZW50OgorICAgIGNhc2Ugb3BfamVxX3B0cjoKICAgICBjYXNl
IG9wX2puZXFfcHRyOgogICAgIGNhc2Ugb3BfdHlwZW9mOgogICAgIGNhc2Ugb3BfdG9fbnVtYmVy
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMThk
ZTM5ZGUyMzI2OTA4NDQ5NmQyNWUzOTUzMjBiNjA2Y2I1NzdjNC4uNjlhY2Y1MTljMGJhMWU1OTEz
YWIyNjI4MGRhZjBiYzE4YWM2N2I2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCkBAIC04NywxMCArODcsMTAgQEAgSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJmcmFtZS1hZGRyZXNzIikKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogdGVt
cGxhdGU8Ym9vbCBzdHJpY3QsIGJvb2wgZGlyZWN0Pgotc3RhdGljIGlubGluZSB2b2lkIHB1dEJ5
VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgSlNWYWx1ZSBiYXNlVmFs
dWUsIHVpbnQzMl90IGluZGV4LCBKU1ZhbHVlIHZhbHVlKQorc3RhdGljIEFMV0FZU19JTkxJTkUg
dm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTVmFs
dWUgYmFzZVZhbHVlLCB1aW50MzJfdCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBBU1NF
UlQoaXNJbmRleChpbmRleCkpOwotICAgIGlmIChkaXJlY3QpIHsKKyAgICBpZiBjb25zdGV4cHIg
KGRpcmVjdCkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7
CiAgICAgICAgIGFzT2JqZWN0KGJhc2VWYWx1ZSktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVj
dCwgaW5kZXgsIHZhbHVlLCAwLCBzdHJpY3QgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDog
UHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyOSw3
ICsxMjksNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHB1dEJ5VmFsSW50ZXJuYWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLAogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CiAKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUs
IHN0cmljdCk7Ci0gICAgaWYgKGRpcmVjdCkgeworICAgIGlmIGNvbnN0ZXhwciAoZGlyZWN0KSB7
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAg
SlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwogICAgICAgICBpZiAo
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkp
IHsKQEAgLTE0OSw3ICsxNDksNyBAQCB0ZW1wbGF0ZTxib29sIHN0cmljdCwgYm9vbCBkaXJlY3Q+
CiBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHB1dEJ5VmFsQ2VsbEludGVybmFsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgSlNDZWxsKiBiYXNlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
KGJhc2UsIHN0cmljdCk7Ci0gICAgaWYgKGRpcmVjdCkgeworICAgIGlmIGNvbnN0ZXhwciAoZGly
ZWN0KSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhc2UtPmlzT2JqZWN0KCkpOwogICAgICAg
ICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2UpOwogICAgICAgICBpZiAoc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsK
QEAgLTI0ODcsNyArMjQ4Nyw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25F
bnVtZXJhdG9yTmV4dFVwZGF0ZUluZGV4QW5kTW9kZSwgRW5jb2RlZEpTVmFsCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uRW51bWVyYXRvck5leHRVcGRhdGVQcm9wZXJ0eU5hbWUsIEVuY29kZWRKU1ZhbHVl
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDMyX3QgaW5kZXgsIGludDMyX3Qg
bW9kZU51bWJlciwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9yKSkKK0pTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9yTmV4dFVwZGF0ZVByb3BlcnR5
TmFtZSwgSlNTdHJpbmcqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDMyX3Qg
aW5kZXgsIGludDMyX3QgbW9kZU51bWJlciwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVt
ZXJhdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjQ5NSwxNSArMjQ5
NSwxNSBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvck5leHRV
cGRhdGVQcm9wZXJ0eU5hbWUsIEVuY29kZWRKU1ZhbAogCiAgICAgaWYgKG1vZGVOdW1iZXIgPT0g
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpJbmRleGVkTW9kZSkgewogICAgICAgICBpZiAoaW5k
ZXggPCBlbnVtZXJhdG9yLT5pbmRleGVkTGVuZ3RoKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCkuc3Ry
aW5nKCkpKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CisgICAg
ICAgICAgICByZXR1cm4ganNTdHJpbmcodm0sIElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KS5z
dHJpbmcoKSk7CisgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2VudGluZWxTdHJpbmco
KTsKICAgICB9CiAKICAgICBKU1N0cmluZyogcmVzdWx0ID0gZW51bWVyYXRvci0+cHJvcGVydHlO
YW1lQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdWxsKCkpOworICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNl
bnRpbmVsU3RyaW5nKCk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkVudW1lcmF0b3JSZWNvdmVyTmFtZUFuZEdldEJ5VmFsLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgdWludDMyX3QgaW5kZXgsIEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRvcikpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDg1ZDQxNjk4MTkwYWM2YzdjMmJiNGI5OTljMzcy
YzYxMDAwOGY3YWUuLjg0NGMxOWIzMTE0MTE5MTYxOTNlM2I1ZWU3NjNhMWYxZTM1NTQ3ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC0xMDgsNyArMTA4
LDcgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNFbnVtZXJhYmxlSW5k
ZXhlZFByb3BlcnR5LCBzaXplX3QsIChKU0dsb2IKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25H
ZXRQcm9wZXJ0eUVudW1lcmF0b3JDZWxsLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0b3JOZXh0
VXBkYXRlSW5kZXhBbmRNb2RlLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUsIHVpbnQzMl90LCBpbnQzMl90LCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iq
KSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0b3JOZXh0VXBk
YXRlUHJvcGVydHlOYW1lLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgdWludDMy
X3QsIGludDMyX3QsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciopKTsKK0pTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvck5leHRVcGRhdGVQcm9wZXJ0eU5hbWUsIEpT
U3RyaW5nKiwgKEpTR2xvYmFsT2JqZWN0KiwgdWludDMyX3QsIGludDMyX3QsIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51
bWVyYXRvckluQnlWYWwsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIHVpbnQzMl90LCBpbnQzMl90KSk7CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eSwgRW5jb2Rl
ZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgdWludDMyX3QsIGludDMyX3QpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uRW51bWVyYXRvclJlY292ZXJOYW1lQW5kR2V0QnlWYWwsIEVuY29kZWRKU1ZhbHVlLCAoSlNH
bG9iYWxPYmplY3QqLCBKU0NlbGwqLCB1aW50MzJfdCwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
KikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA4OWU1ZWY0ZDg1MWVjOTBkNmQ5ODU1Y2E0
N2NhNWJjNzgyNTcyZmZiLi4yMGQwNDRmNWY1YzAxZDExM2U5ODI5YjNmMjI2MmVjMDk3ZTE4ZDhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTIzMyw3ICsxMjMzLDcgQEAgY2xhc3MgUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICB9CiAKICAg
ICAgICAgY2FzZSBFbnVtZXJhdG9yTmV4dFVwZGF0ZVByb3BlcnR5TmFtZTogewotICAgICAgICAg
ICAgc2V0UHJlZGljdGlvbihTcGVjU3RyaW5nIHwgU3BlY090aGVyKTsKKyAgICAgICAgICAgIHNl
dFByZWRpY3Rpb24oU3BlY1N0cmluZ0lkZW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKaW5kZXggYmI0NmQ3MjU5OTViYWE4NTg3YTYxOWJmN2IxMjUxNDM3Mzc0MjZiZC4uOWIxZmRj
ZGIxMGY4YjFiNDE4NTI4ZjJiZDI5MmFiZTBiODZiNjg0NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEzNjQ2LDEyICsxMzY0Niwx
MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVyYXRvck5leHRVcGRhdGVQcm9w
ZXJ0eU5hbWUoTm9kZSogbm9kZSkKICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgaW5k
ZXhPcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVTdHJpY3RJbnQz
Mk9wZXJhbmQgbW9kZU9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGVudW1lcmF0b3JPcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKLSAg
ICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHRUZW1wKHRoaXMpOworICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CiAKICAgICBHUFJSZWcgaW5kZXggPSBpbmRleE9wZXJhbmQuZ3ByKCk7
CiAgICAgR1BSUmVnIG1vZGUgPSBtb2RlT3BlcmFuZC5ncHIoKTsKICAgICBHUFJSZWcgZW51bWVy
YXRvciA9IGVudW1lcmF0b3JPcGVyYW5kLmdwcigpOwotICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHRUZW1wLnJlZ3MoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwogCiAgICAgT3B0aW9uU2V0IHNlZW5Nb2RlcyA9IG5vZGUtPmVudW1lcmF0b3JNZXRhZGF0
YSgpOwogCkBAIC0xMzY2NywyNCArMTM2NjcsMjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUVudW1lcmF0b3JOZXh0VXBkYXRlUHJvcGVydHlOYW1lKE5vZGUqIG5vZGUpCiAKICAgICAg
ICAgYXV0byBvdXRPZkJvdW5kcyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92
ZU9yRXF1YWwsIGluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhlbnVtZXJhdG9yLCBKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3I6OmVuZEdlbmVyaWNQcm9wZXJ0eUluZGV4T2Zmc2V0KCkpKTsK
IAotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGVudW1lcmF0
b3IsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkUHJvcGVydHlOYW1lc1ZlY3Rvck9m
ZnNldCgpKSwgcmVzdWx0UmVncy5wYXlsb2FkR1BSKCkpOwotICAgICAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgocmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIGluZGV4
LCBNYWNyb0Fzc2VtYmxlcjo6U2NhbGVQdHIpLCByZXN1bHRSZWdzLnBheWxvYWRHUFIoKSk7Ci0j
aWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZyksIHJlc3VsdFJlZ3MudGFnR1BSKCkpOwotI2VuZGlmCisgICAgICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZW51bWVyYXRvciwgSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yOjpjYWNoZWRQcm9wZXJ0eU5hbWVzVmVjdG9yT2Zmc2V0KCkpLCByZXN1
bHRHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgo
cmVzdWx0R1BSLCBpbmRleCwgTWFjcm9Bc3NlbWJsZXI6OlNjYWxlUHRyKSwgcmVzdWx0R1BSKTsK
ICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCiAgICAgICAgIG91dE9m
Qm91bmRzLmxpbmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQubW92ZVRydXN0ZWRWYWx1ZShqc051
bGwoKSwgcmVzdWx0UmVncyk7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgdm0oKS5zbWFsbFN0cmluZ3Muc2VudGluZWxTdHJpbmcoKSksIHJl
c3VsdEdQUik7CiAgICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAgICAg
ICAgb3BlcmF0aW9uQ2FsbC5saW5rKCZtX2ppdCk7CiAgICAgfQogCi0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25FbnVtZXJhdG9yTmV4dFVwZGF0ZVByb3BlcnR5TmFtZSwgcmVzdWx0UmVncywg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGluZGV4LCBtb2RlLCBlbnVtZXJhdG9yKTsKKyAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVudW1lcmF0b3JOZXh0VXBkYXRlUHJvcGVydHlOYW1l
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBpbmRleCwgbW9kZSwgZW51
bWVyYXRvcik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGRvbmVDYXNlcy5s
aW5rKCZtX2ppdCk7Ci0gICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKKyAgICBj
ZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFNsb3dQ
YXRoRnVuY3Rpb25UeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCmluZGV4IGFmNDM2NzJmNWRiOWE5NDVjMzdjMmVhNDgwMmMzNGIzM2I5YWJmMWQu
LmZkY2UyNjgxZTc0MzRmOWFlY2VkY2Q1YTg3ZWM5MWQzODg5YzgyMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEzNTQxLDE0ICsxMzU0
MSwxNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8ob3V0T2ZCb3VuZHNCbG9jayk7Ci0gICAgICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVsbCgpKSkpKTsKKyAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5h
bmNob3Iod2Vha1BvaW50ZXIodm0oKS5zbWFsbFN0cmluZ3Muc2VudGluZWxTdHJpbmcoKSkpKTsK
ICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhsb2FkUHJv
cGVydHlOYW1lQmxvY2spOwogICAgICAgICAgICAgICAgIExWYWx1ZSBuYW1lc1ZlY3RvciA9IG1f
b3V0LmxvYWRQdHIoZW51bWVyYXRvciwgbV9oZWFwcy5KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Jf
Y2FjaGVkUHJvcGVydHlOYW1lc1ZlY3Rvcik7Ci0gICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBl
bmQobV9vdXQuYW5jaG9yKG1fb3V0Lnplcm9FeHRQdHIobV9vdXQubG9hZFB0cihtX291dC5iYXNl
SW5kZXgobV9oZWFwcy5Xcml0ZUJhcnJpZXJCdWZmZXJfYnVmZmVyQ29udGVudHMuYXRBbnlJbmRl
eCgpLCBuYW1lc1ZlY3RvciwgbV9vdXQuemVyb0V4dChpbmRleCwgSW50NjQpLCBTY2FsZVB0cikp
KSkpOworICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihtX291dC5s
b2FkUHRyKG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLldyaXRlQmFycmllckJ1ZmZlcl9idWZmZXJD
b250ZW50cy5hdEFueUluZGV4KCksIG5hbWVzVmVjdG9yLCBtX291dC56ZXJvRXh0KGluZGV4LCBJ
bnQ2NCksIFNjYWxlUHRyKSkpKTsKICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTEzNTU2LDE0ICsxMzU1NiwxNCBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBpZiAob3BlcmF0aW9uQmxvY2spCiAgICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhvcGVyYXRpb25CbG9jayk7CiAgICAgICAgIC8vIE5vdGU6
IFdlIGNhbid0IG9taXQgdGhlIG9wZXJhdGlvbiBiZWNhdXNlIHdlIGhhdmUgbm8gZ3VhcmFudGVl
IHRoYXQgdGhlIG1vZGUgd2lsbCBtYXRjaCB3aGF0IHdlIHByb2ZpbGVkLgotICAgICAgICByZXN1
bHRzLmFwcGVuZChtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBvcGVyYXRpb25FbnVtZXJhdG9y
TmV4dFVwZGF0ZVByb3BlcnR5TmFtZSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgaW5kZXgs
IG1vZGUsIGVudW1lcmF0b3IpKSk7CisgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hv
cih2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uRW51bWVyYXRvck5leHRVcGRhdGVQcm9w
ZXJ0eU5hbWUsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGluZGV4LCBtb2RlLCBlbnVtZXJh
dG9yKSkpOwogICAgICAgICBpZiAoY29udGludWF0aW9uKSB7CiAgICAgICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRp
b24pOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKHJlc3VsdHMuc2l6ZSgpKTsKLSAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LnBoaShJbnQ2NCwgcmVzdWx0cyk7CisgICAgICAgIExW
YWx1ZSByZXN1bHQgPSBtX291dC5waGkocG9pbnRlclR5cGUoKSwgcmVzdWx0cyk7CiAgICAgICAg
IHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApp
bmRleCA0NTFhOTk0OTgwZmNiOGRjOTYyZDAwMDlkODc3YmM4MTAzMjNjYTQwLi45ZjAyYzU5OTZk
NjU3ODZkYmNlZjdjNmFhYTFiZDNkODQyNTdhYzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCkBAIC0zODcsNiArMzg3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogICAgICAgICBERUZJTkVfT1Aob3Bfam5lcV9udWxsKQogICAgICAgICBERUZJTkVfT1Aob3Bf
anVuZGVmaW5lZF9vcl9udWxsKQogICAgICAgICBERUZJTkVfT1Aob3Bfam51bmRlZmluZWRfb3Jf
bnVsbCkKKyAgICAgICAgREVGSU5FX09QKG9wX2plcV9wdHIpCiAgICAgICAgIERFRklORV9PUChv
cF9qbmVxX3B0cikKICAgICAgICAgREVGSU5FX09QKG9wX2psZXNzKQogICAgICAgICBERUZJTkVf
T1Aob3Bfamxlc3NlcSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGYzMmIxNDgwM2JhMWQ2
Njg4MWQ2YjYyNWRiMTI3NGE0NWQyMzM4YTEuLjA1M2IyZTg0NGI1MzFiMGY4M2I2NmI3NGY4YmY0
OGUxZjc2MWNhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTE2LDYgKzUxNiw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3Bfam5lcV9udWxsKGNvbnN0IElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9qdW5kZWZpbmVkX29yX251bGwoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2pudW5kZWZpbmVkX29yX251
bGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2plcV9wdHIoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2puZXFfcHRyKGNvbnN0IElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9qbGVzcyhjb25zdCBJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfamxlc3NlcShjb25zdCBJbnN0cnVjdGlvbiopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYjZjYmY5NDM4MjMx
NmNjNmM1ZTZkNzc0YzQzNzI4NzhkMjlkNTViZi4uMGMxNTg3Nzg1OGU1YWFjNzFiNDBkOWRiYWI3
M2Y0OWFkZDFjNzA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CkBAIC01OTAsNiArNTkwLDE3IEBAIHZvaWQgSklUOjplbWl0X29wX2pudW5kZWZpbmVkX29yX251
bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRKdW1wKGJy
YW5jaDY0KE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc051
bGwoKSkpKSwgdGFyZ2V0KTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfamVxX3B0cihjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmVxUHRyPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBz
cmMgPSBieXRlY29kZS5tX3ZhbHVlOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQo
Y3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKKworICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjLCByZWdUMCk7CisgICAgbG9hZENvZGVCbG9ja0NvbnN0YW50
KGJ5dGVjb2RlLm1fc3BlY2lhbFBvaW50ZXIsIHJlZ1QxKTsKKyAgICBhZGRKdW1wKGJyYW5jaFB0
cihFcXVhbCwgcmVnVDAsIHJlZ1QxKSwgdGFyZ2V0KTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3Bf
am5lcV9wdHIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXFQdHI+KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggMDlkNmZm
NzBhNjNjNWM4ZWUzZTQ5NThmOTQwNzMwZTllOWFlMjExNy4uZGVjOGI2NWE1MzE4M2FlYzgzMWQw
MTExMTcxNzZiZmRjZDFkOWFjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcApAQCAtNTAxLDYgKzUwMSwyMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9q
bnVuZGVmaW5lZF9vcl9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgYWRkSnVtcChicmFuY2hJZk5vdE51bGwocmVnVDApLCB0YXJnZXQpOwogfQogCit2b2lk
IEpJVDo6ZW1pdF9vcF9qZXFfcHRyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKZXFQ
dHI+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX3Byb2ZpbGVk
Q29kZUJsb2NrKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgc3JjID0gYnl0ZWNvZGUubV92YWx1ZTsK
KyAgICBKU1ZhbHVlIHNwZWNpYWxQb2ludGVyID0gZ2V0Q29uc3RhbnRPcGVyYW5kKGJ5dGVjb2Rl
Lm1fc3BlY2lhbFBvaW50ZXIpOworICAgIEFTU0VSVChzcGVjaWFsUG9pbnRlci5pc0NlbGwoKSk7
CisgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5
dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOworCisgICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDAp
OworICAgIEp1bXAgbm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMSk7CisgICAgYWRkSnVt
cChicmFuY2hQdHIoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKHNwZWNpYWxQb2ludGVyLmFz
Q2VsbCgpKSksIHRhcmdldCk7CisgICAgbm90Q2VsbC5saW5rKHRoaXMpOworfQorCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9qbmVxX3B0cihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcVB0
cj4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKaW5kZXggMGRiN2MwNDg1YTQyZDM5ZTNjNmMzMGRmNWM1ZDMyYmExNzJiNDQ4Ny4uMjc5YzJh
NjQ3YWNlNWQ0NmE0ZmU1YTJmNzlkODUzMzk3ZGIyODZmMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTI5NzcsNyArMjk3Nyw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwogCiAgICAgICAg
IG91dE9mQm91bmRzLmxpbmsodGhpcyk7Ci0gICAgICAgIHN0b3JlVHJ1c3RlZFZhbHVlKGpzTnVs
bCgpLCBhZGRyZXNzRm9yKHByb3BlcnR5TmFtZSkpOworICAgICAgICBzdG9yZVRydXN0ZWRWYWx1
ZSh2bSgpLnNtYWxsU3RyaW5ncy5zZW50aW5lbFN0cmluZygpLCBhZGRyZXNzRm9yKHByb3BlcnR5
TmFtZSkpOwogICAgICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQppbmRleCA5OTc5Y2ExOTlkZWQxMmQzZTEzN2U1MzYwYjViMzkzNmM2ZGU4Zjc0Li41ODA2
YTllYTZlNzE0OTdmZWY1MTBjY2MwMWUzZDhkNGI3MjAyYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpA
QCAtMTkzMiw2ICsxOTMyLDIwIEBAIHVuZGVmaW5lZE9yTnVsbEp1bXBPcChqdW5kZWZpbmVkX29y
X251bGwsIE9wSnVuZGVmaW5lZE9yTnVsbCwKIHVuZGVmaW5lZE9yTnVsbEp1bXBPcChqbnVuZGVm
aW5lZF9vcl9udWxsLCBPcEpudW5kZWZpbmVkT3JOdWxsLAogICAgIG1hY3JvICh2YWx1ZSwgdGFy
Z2V0KSBiaW5lcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKIAorbGxpbnRPcFdpdGhSZXR1
cm4ob3BfamVxX3B0ciwgT3BKZXFQdHIsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1
cm4pCisgICAgZ2V0KG1fdmFsdWUsIHQwKQorICAgIGdldChtX3NwZWNpYWxQb2ludGVyLCB0MSkK
KyAgICBsb2FkQ29uc3RhbnQoc2l6ZSwgdDEsIHQzLCB0MikKKyAgICBiaW5lcSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcEplcVB0ckZhbGxUaHJvdWdoCisgICAgYnBuZXEgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIsIC5vcEplcVB0ckZhbGxUaHJvdWdoCisub3BKZXFQ
dHJCcmFuY2g6CisgICAgZ2V0KG1fdGFyZ2V0TGFiZWwsIHQwKQorICAgIGp1bXBJbXBsKGRpc3Bh
dGNoSW5kaXJlY3QsIHQwKQorLm9wSmVxUHRyRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2goKQor
ZW5kKQorCisKIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bfam5lcV9wdHIsIE9wSm5lcVB0ciwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgZ2V0KG1fdmFs
dWUsIHQwKQogICAgIGdldChtX3NwZWNpYWxQb2ludGVyLCB0MSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggNjdl
NDVlYjQ0OTkxODYyMWFiN2Q4MDQ3NDhiMDgyODg1MGVmZmJmMC4uODEzYzA4NjQ3YmMxOTUyM2M3
OGM4MjdkNjZmZDU3NDY5MWEwZGZhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTIwNjQsNiArMjA2NCwxOSBA
QCB1bmRlZmluZWRPck51bGxKdW1wT3AoanVuZGVmaW5lZF9vcl9udWxsLCBPcEp1bmRlZmluZWRP
ck51bGwsCiB1bmRlZmluZWRPck51bGxKdW1wT3Aoam51bmRlZmluZWRfb3JfbnVsbCwgT3BKbnVu
ZGVmaW5lZE9yTnVsbCwKICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnFuZXEgdmFsdWUsIFZh
bHVlTnVsbCwgdGFyZ2V0IGVuZCkKIAorbGxpbnRPcFdpdGhSZXR1cm4ob3BfamVxX3B0ciwgT3BK
ZXFQdHIsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCisgICAgZ2V0KG1fdmFs
dWUsIHQwKQorICAgIGdldChtX3NwZWNpYWxQb2ludGVyLCB0MSkKKyAgICBsb2FkQ29uc3RhbnQo
c2l6ZSwgdDEsIHQyKQorICAgIGJwZXEgdDIsIFtjZnIsIHQwLCA4XSwgLm9wSmVxUHRyVGFyZ2V0
CisgICAgZGlzcGF0Y2goKQorCisub3BKZXFQdHJUYXJnZXQ6CisgICAgZ2V0KG1fdGFyZ2V0TGFi
ZWwsIHQwKQorICAgIGp1bXBJbXBsKGRpc3BhdGNoSW5kaXJlY3QsIHQwKQorZW5kKQorCisKIGxs
aW50T3BXaXRoTWV0YWRhdGEob3Bfam5lcV9wdHIsIE9wSm5lcVB0ciwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgZ2V0KG1fdmFsdWUsIHQwKQogICAg
IGdldChtX3NwZWNpYWxQb2ludGVyLCB0MSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGU5ZDQ4MTUzNTYwYzZkNWI4MzU4YTI5
M2IxMzkzMTcxZDYzODE4NjkuLmIwYTY2NmRjMjdjMTQ5MTRjMDViYzAwMThlMGEwNzRmYzY5ZWQ3
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcApAQCAtMTAwMSw3ICsxMDAxLDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRI
KHNsb3dfcGF0aF9lbnVtZXJhdG9yX25leHQpCiAgICAgbWV0YWRhdGEubV9lbnVtZXJhdG9yTWV0
YWRhdGEgfD0gc3RhdGljX2Nhc3Q8dWludDhfdD4obW9kZSk7CiAgICAgbW9kZVJlZ2lzdGVyID0g
anNOdW1iZXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obW9kZSkpOwogICAgIGluZGV4UmVnaXN0ZXIg
PSBqc051bWJlcihpbmRleCk7Ci0gICAgbmFtZVJlZ2lzdGVyID0gbmFtZSA/IG5hbWUgOiBqc051
bGwoKTsKKyAgICBuYW1lUmVnaXN0ZXIgPSBuYW1lID8gbmFtZSA6IHZtLnNtYWxsU3RyaW5ncy5z
ZW50aW5lbFN0cmluZygpOwogICAgIEVORCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMDZmNjUzZWNiZjg0YjM3OGE3
YjNjYWVhZDI0MzQ2OTg4OTUyN2YyMC4uOWRhZTQ2ZDAzM2JmYmI0OWNjMTkyOGE2NjUxNzg3NGE0
ODg2OTk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcApAQCAtOTgxLDYgKzk4MSw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQo
Vk0mIHZtKQogICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBzZXRJdGVy
YXRvclByb3RvdHlwZSk7CiAgICAgbV9zZXRJdGVyYXRvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IEpTU2V0SXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgc2V0SXRlcmF0b3JQcm90
b3R5cGUpKTsKIAorICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KExpbmtUaW1lQ29uc3RhbnQ6OnNlbnRpbmVsU3RyaW5nKV0uc2V0KHZtLCB0aGlzLCB2bS5zbWFs
bFN0cmluZ3Muc2VudGluZWxTdHJpbmcoKSk7CisKICAgICBKU0Z1bmN0aW9uKiBkZWZhdWx0UHJv
bWlzZVRoZW4gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHByb21pc2VQcm90b3R5cGVUaGVuQ29k
ZUdlbmVyYXRvcih2bSksIHRoaXMpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmRlZmF1bHRQcm9taXNlVGhlbildLnNldCh2
bSwgdGhpcywgZGVmYXVsdFByb21pc2VUaGVuKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAKaW5kZXggMzQzNTI3Zjg0MGY2NDRlYzkyNGYxNzMz
ZDJkYjVlZDVlM2ZmNzQ2Zi4uZTljZTAzNTgxZTE3MDRmODdlOTMwOThiZDU1OWM1NTIzYzhmNjMw
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3Bw
CkBAIC02Miw2ICs2Miw3IEBAIHZvaWQgU21hbGxTdHJpbmdzOjppbml0aWFsaXplQ29tbW9uU3Ry
aW5ncyhWTSYgdm0pCiAgICAgaW5pdGlhbGl6ZSgmdm0sIG1fbm90RXF1YWxTdHJpbmcsICJub3Qt
ZXF1YWwiKTsKICAgICBpbml0aWFsaXplKCZ2bSwgbV90aW1lZE91dFN0cmluZywgInRpbWVkLW91
dCIpOwogICAgIGluaXRpYWxpemUoJnZtLCBtX29rU3RyaW5nLCAib2siKTsKKyAgICBpbml0aWFs
aXplKCZ2bSwgbV9zZW50aW5lbFN0cmluZywgIiQiKTsKIAogICAgIHNldElzSW5pdGlhbGl6ZWQo
dHJ1ZSk7CiB9CkBAIC04Myw2ICs4NCw3IEBAIHZvaWQgU21hbGxTdHJpbmdzOjp2aXNpdFN0cm9u
Z1JlZmVyZW5jZXMoVmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmll
cmVkKG1fbm90RXF1YWxTdHJpbmcpOwogICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobV90
aW1lZE91dFN0cmluZyk7CiAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChtX29rU3RyaW5n
KTsKKyAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG1fc2VudGluZWxTdHJpbmcpOwogfQog
CiB0ZW1wbGF0ZSB2b2lkIFNtYWxsU3RyaW5nczo6dmlzaXRTdHJvbmdSZWZlcmVuY2VzKEFic3Ry
YWN0U2xvdFZpc2l0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NtYWxsU3RyaW5ncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxT
dHJpbmdzLmgKaW5kZXggMWNhZDkwOGU3NjBmZTBjOGQ5YTQ2NmMxYTExMTUwMDA2MjgzY2FkMS4u
MThhMDZkYzM3MGU4YzRlZmU0ZmZiMmUwMTY4MmZiMTVmZWY5ZDcxNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKQEAgLTExOSw2ICsxMTksNyBAQCBj
bGFzcyBTbWFsbFN0cmluZ3MgewogICAgIEpTU3RyaW5nKiBub3RFcXVhbFN0cmluZygpIGNvbnN0
IHsgcmV0dXJuIG1fbm90RXF1YWxTdHJpbmc7IH0KICAgICBKU1N0cmluZyogdGltZWRPdXRTdHJp
bmcoKSBjb25zdCB7IHJldHVybiBtX3RpbWVkT3V0U3RyaW5nOyB9CiAgICAgSlNTdHJpbmcqIG9r
U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9va1N0cmluZzsgfQorICAgIEpTU3RyaW5nKiBzZW50
aW5lbFN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2VudGluZWxTdHJpbmc7IH0KIAogICAgIGJv
b2wgbmVlZHNUb0JlVmlzaXRlZChDb2xsZWN0aW9uU2NvcGUgc2NvcGUpIGNvbnN0CiAgICAgewpA
QCAtMTQzLDYgKzE0NCw3IEBAIGNsYXNzIFNtYWxsU3RyaW5ncyB7CiAgICAgSlNTdHJpbmcqIG1f
bm90RXF1YWxTdHJpbmcgeyBudWxscHRyIH07CiAgICAgSlNTdHJpbmcqIG1fdGltZWRPdXRTdHJp
bmcgeyBudWxscHRyIH07CiAgICAgSlNTdHJpbmcqIG1fb2tTdHJpbmcgeyBudWxscHRyIH07Cisg
ICAgSlNTdHJpbmcqIG1fc2VudGluZWxTdHJpbmcgeyBudWxscHRyIH07CiAgICAgSlNTdHJpbmcq
IG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1tzaW5nbGVDaGFyYWN0ZXJTdHJpbmdDb3VudF0geyBu
dWxscHRyIH07CiAgICAgYm9vbCBtX25lZWRzVG9CZVZpc2l0ZWQgeyB0cnVlIH07CiAgICAgYm9v
bCBtX2lzSW5pdGlhbGl6ZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VM
b2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA0OTljMzI5NGU4YmIzMTYxYTU3MzQ5NjE4Yzc3
YmViOTMzZjU5NjA3Li4xYTg5NWZmZmQ1Nzc5OWYxZmVmMjBkNmMzMzc2YTZkYzZmNGNlM2FlIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDIxLTA5LTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CisKKyAgICAgICAgW0pTQ10gT3B0aW1pemUgUHV0QnlWYWwgd2l0aCBmb3ItaW4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDgwMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2Zvci1p
bi1zZW50aW5lbC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0
KToKKwogMjAyMS0wOS0yNCBSaWNrIFdhbGRyb24gPHdhbGRyb24ucmlja0BnbWFpbC5jb20+CiAK
ICAgICAgICAgW0pTQ10gQWRkIGNoZWNrU2NyaXB0U3ludGF4IGZ1bmN0aW9uIHRvIGpzYyBob3N0
IGVudmlyb25tZW50CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mb3ItaW4tc2VudGluZWwu
anMgYi9KU1Rlc3RzL3N0cmVzcy9mb3ItaW4tc2VudGluZWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM2NzA1
ZWNmODdiYWNhZTAzNGMyNzI2NzM4YWU2YzM0NDdlYThiZgotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2Zvci1pbi1zZW50aW5lbC5qcwpAQCAtMCwwICsxLDIyIEBACitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30K
KwordmFyIG9iamVjdCA9IHsKKyAgICAkOiAzMiwKKyAgICB0ZXN0OiAzMywKKyAgICBoZXk6IDM0
LAorfTsKKworZnVuY3Rpb24gdGVzdChvYmplY3QpIHsKKyAgICB2YXIgY291bnQgPSAwOworICAg
IGZvciAodmFyIGkgaW4gb2JqZWN0KSB7CisgICAgICAgICsrY291bnQ7CisgICAgfQorICAgIHJl
dHVybiBjb3VudDsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFl
NjsgKytpKQorICAgIHNob3VsZEJlKHRlc3Qob2JqZWN0KSwgMyk7Cg==
</data>
<flag name="review"
          id="462917"
          type_id="1"
          status="+"
          setter="saam"
    />
    <flag name="commit-queue"
          id="462923"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>