<?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>186740</bug_id>
          
          <creation_ts>2018-06-16 12:41:34 -0700</creation_ts>
          <short_desc>CodeBlockSet wastes 190KB of HashTable capacity on nytimes.com</short_desc>
          <delta_ts>2019-05-07 02:25:27 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>guijemont</cc>
    
    <cc>guijemont+jsc-armv7-ews</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1433803</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-16 12:41:34 -0700</bug_when>
    <thetext>Using tooling from bug 186698, loading can and running &quot;notifyutil -p com.apple.WebKit.dumpHashTableCapacity&quot; shows:

Wasted capacity: 189656 bytes (used 72488 of 262144 bytes, utilization: 27.65%) - 1 allocations
1   0x116005465 WTF::HashTable&lt;JSC::CodeBlock*, JSC::CodeBlock*, WTF::IdentityExtractor, WTF::PtrHash&lt;JSC::CodeBlock*&gt;, WTF::HashTraits&lt;JSC::CodeBlock*&gt;, WTF::HashTraits&lt;JSC::CodeBlock*&gt; &gt;::HashTable()
2   0x116005445 WTF::HashSet&lt;JSC::CodeBlock*, WTF::PtrHash&lt;JSC::CodeBlock*&gt;, WTF::HashTraits&lt;JSC::CodeBlock*&gt; &gt;::HashSet()
3   0x116001de5 WTF::HashSet&lt;JSC::CodeBlock*, WTF::PtrHash&lt;JSC::CodeBlock*&gt;, WTF::HashTraits&lt;JSC::CodeBlock*&gt; &gt;::HashSet()
4   0x116001da9 JSC::CodeBlockSet::CodeBlockSet()
5   0x116001e05 JSC::CodeBlockSet::CodeBlockSet()
6   0x11600ff64 JSC::Heap::Heap(JSC::VM*, JSC::HeapType)
7   0x1160126b3 JSC::Heap::Heap(JSC::VM*, JSC::HeapType)
8   0x1166b8e72 JSC::VM::VM(JSC::VM::VMType, JSC::HeapType)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433806</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-16 12:42:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/41189289&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531036</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-04-27 23:46:30 -0700</bug_when>
    <thetext>CodeBlockSet is basically duplicate to IsoSubspace&apos;s set feature. But it exists for Debuggers and Sampling Profilers. If they are not enabled, we should not use this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531040</commentid>
    <comment_count>3</comment_count>
      <attachid>368426</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-04-28 02:19:41 -0700</bug_when>
    <thetext>Created attachment 368426
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531042</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-04-28 04:25:44 -0700</bug_when>
    <thetext>I think we can implement CodeBlockSet with IsoCellSet with a bit interesting lock to support SamplingProfiler etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531043</commentid>
    <comment_count>5</comment_count>
      <attachid>368428</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-04-28 04:29:12 -0700</bug_when>
    <thetext>Created attachment 368428
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531048</commentid>
    <comment_count>6</comment_count>
      <attachid>368428</attachid>
    <who name="jsc-armv7 EWS">guijemont+jsc-armv7-ews</who>
    <bug_when>2019-04-28 06:50:42 -0700</bug_when>
    <thetext>Comment on attachment 368428
Patch

Attachment 368428 did not pass jsc-armv7-ews (jsc-only):
Output: https://webkit-queues.webkit.org/results/12022531

New failing tests:
stress/scope-operation-cache-global-property-bump-counter.js.default
apiTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531049</commentid>
    <comment_count>7</comment_count>
      <attachid>368428</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-04-28 06:57:15 -0700</bug_when>
    <thetext>Comment on attachment 368428
Patch

Attachment 368428 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/12022539

New failing tests:
stress/scope-operation-cache-global-property-bump-counter.js.default</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1533839</commentid>
    <comment_count>8</comment_count>
      <attachid>369261</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-07 02:25:27 -0700</bug_when>
    <thetext>Created attachment 369261
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368426</attachid>
            <date>2019-04-28 02:19:41 -0700</date>
            <delta_ts>2019-04-28 04:29:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186740-20190428021941.patch</filename>
            <type>text/plain</type>
            <size>11583</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
OGFlY2E0NjBjYTY1NTgwYTlhZTYwZTk4ZGU3ZTE1ZmFkYTZkNDFiLi4xNjQ3Y2FiNTNkZmZmY2Zk
YWY5ZDc3NGRkMTcwOTY1M2U4NDlkMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxOS0wNC0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIENvZGVCbG9ja1NldCB3YXN0ZXMgMTkwS0Igb2YgSGFzaFRhYmxlIGNhcGFj
aXR5IG9uIG55dGltZXMuY29tCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODY3NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVV
bmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAqIGhlYXAvQ29kZUJsb2NrU2V0LmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrU2V0OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrU2V0OjpjbGVhckN1cnJlbnRseUV4ZWN1dGluZyk6IERlbGV0ZWQuCisgICAgICAgICogaGVh
cC9Db2RlQmxvY2tTZXQuaDoKKyAgICAgICAgKiBoZWFwL0NvZGVCbG9ja1NldElubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrU2V0OjptYXJrKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrU2V0Ojp1bm1hcmspOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tTZXQ6Oml0ZXJhdGVWaWFT
dWJzcGFjZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tTZXQ6Oml0ZXJhdGVDdXJyZW50bHlF
eGVjdXRpbmcpOgorICAgICAgICAqIGhlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwOgorICAgICAg
ICAoSlNDOjpDb21wb3NpdGVNYXJrSG9vazo6Q29tcG9zaXRlTWFya0hvb2spOgorICAgICAgICAo
SlNDOjpDb21wb3NpdGVNYXJrSG9vazo6bWFya0tub3duSlNDZWxsKToKKyAgICAgICAgKEpTQzo6
Q29uc2VydmF0aXZlUm9vdHM6OmFkZCk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAg
ICAgKEpTQzo6SGVhcDo6ZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVycyk6CisgICAgICAg
IChKU0M6OkhlYXA6Oml0ZXJhdGVFeGVjdXRpbmdBbmRDb21waWxpbmdDb2RlQmxvY2tzKToKKyAg
ICAgICAgKEpTQzo6SGVhcDo6ZGVsZXRlVW5tYXJrZWRDb21waWxlZENvZGUpOgorICAgICAgICAo
SlNDOjpIZWFwOjpydW5FbmRQaGFzZSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAg
ICAoSlNDOjpWTTo6Zm9yRWFjaENvZGVCbG9ja1NwYWNlKTogRGVsZXRlZC4KKwogMjAxOS0wNC0y
NiAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIG5l
dyBidWlsZCBydWxlIGZvciBwb3N0LXByb2Nlc3NpbmcgaGVhZGVycyB3aGVuIHVzaW5nIFhDQnVp
bGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXgg
MGFiNzU2Y2JiOGZhOTE0MmM0MGY1ZTU3YWVlNDI1NWM2MzUzYzg4Yi4uMmQxZmJkOTE1Y2Q0Yzg5
NGFlYzU3YTcyNGQwMTkxZTE2OWM1MGI5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTk3NCw4ICs5NzQsNiBAQCB2b2lkIENvZGVCbG9jazo6
dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIAogICAgIHN0cm9uZ2x5VmlzaXRT
dHJvbmdSZWZlcmVuY2VzKGxvY2tlciwgdmlzaXRvcik7CiAgICAgc3Ryb25nbHlWaXNpdFdlYWtS
ZWZlcmVuY2VzKGxvY2tlciwgdmlzaXRvcik7Ci0gICAgCi0gICAgVk06OlNwYWNlQW5kU2V0Ojpz
ZXRGb3IoKnN1YnNwYWNlKCkpLmFkZCh0aGlzKTsKIH0KIAogYm9vbCBDb2RlQmxvY2s6OnNob3Vs
ZFZpc2l0U3Ryb25nbHkoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIpCkBAIC0xMzc0
LDggKzEzNzIsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0m
IHZtKQogICAgICAgICBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMuZmluYWxpemUodm0pOwog
ICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQotICAgIFZNOjpTcGFjZUFuZFNldDo6
c2V0Rm9yKCpzdWJzcGFjZSgpKS5yZW1vdmUodGhpcyk7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpk
ZXN0cm95KEpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvZGVCbG9ja1NldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxv
Y2tTZXQuY3BwCmluZGV4IDQ5ZmNkODRmNGFkOTdhYWUwYWFmM2YxOTNjODZlYTA2MTNmNmQ4Yjcu
LmVhYzM4MDQ4YjNlNGY4OWM5NmY5M2I4NTM0MmRlZjQ2OTg1OTQyZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNwcApAQCAtNTAsMjEgKzUwLDEyIEBAIGJv
b2wgQ29kZUJsb2NrU2V0Ojpjb250YWlucyhjb25zdCBBYnN0cmFjdExvY2tlciYsIHZvaWQqIGNh
bmRpZGF0ZUNvZGVCbG9jaykKICAgICByZXR1cm4gbV9jb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVC
bG9jayk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrU2V0OjpjbGVhckN1cnJlbnRseUV4ZWN1dGluZygp
Ci17Ci0gICAgbV9jdXJyZW50bHlFeGVjdXRpbmcuY2xlYXIoKTsKLX0KLQogdm9pZCBDb2RlQmxv
Y2tTZXQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBDb21tYVByaW50ZXIg
Y29tbWE7CiAgICAgb3V0LnByaW50KCJ7Y29kZUJsb2NrcyA9IFsiKTsKICAgICBmb3IgKENvZGVC
bG9jayogY29kZUJsb2NrIDogbV9jb2RlQmxvY2tzKQogICAgICAgICBvdXQucHJpbnQoY29tbWEs
IHBvaW50ZXJEdW1wKGNvZGVCbG9jaykpOwotICAgIG91dC5wcmludCgiXSwgY3VycmVudGx5RXhl
Y3V0aW5nID0gWyIpOwotICAgIGNvbW1hID0gQ29tbWFQcmludGVyKCk7Ci0gICAgZm9yIChDb2Rl
QmxvY2sqIGNvZGVCbG9jayA6IG1fY3VycmVudGx5RXhlY3V0aW5nKQotICAgICAgICBvdXQucHJp
bnQoY29tbWEsIHBvaW50ZXJEdW1wKGNvZGVCbG9jaykpOwogICAgIG91dC5wcmludCgiXX0iKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAppbmRleCBjNGM1
ODI3NGZjZDBlYjc1MmJiNjE0ZjYwZjY4MDkzMWVkYzc5Y2JiLi5hYjg0OTRlOWYwYzlkNmVlNzkx
MDU2NTdiYjI4ZTBlYzU4MWEyM2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db2RlQmxvY2tTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2Rl
QmxvY2tTZXQuaApAQCAtNDksMTAgKzQ5LDkgQEAgY2xhc3MgQ29kZUJsb2NrU2V0IHsKICAgICBD
b2RlQmxvY2tTZXQoKTsKICAgICB+Q29kZUJsb2NrU2V0KCk7CiAKLSAgICB2b2lkIG1hcmsoY29u
c3QgQWJzdHJhY3RMb2NrZXImLCBDb2RlQmxvY2sqIGNhbmRpZGF0ZUNvZGVCbG9jayk7CisgICAg
dm9pZCBtYXJrKENvZGVCbG9jayogY2FuZGlkYXRlQ29kZUJsb2NrKTsKKyAgICB2b2lkIHVubWFy
ayhDb2RlQmxvY2sqKTsKICAgICAKLSAgICB2b2lkIGNsZWFyQ3VycmVudGx5RXhlY3V0aW5nKCk7
Ci0KICAgICBib29sIGNvbnRhaW5zKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgdm9pZCogY2FuZGlk
YXRlQ29kZUJsb2NrKTsKICAgICBMb2NrJiBnZXRMb2NrKCkgeyByZXR1cm4gbV9sb2NrOyB9CiAK
QEAgLTY0LDcgKzYzLDcgQEAgY2xhc3MgQ29kZUJsb2NrU2V0IHsKIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZVZpYVN1YnNwYWNlcyhWTSYsIGNvbnN0IEZ1bmN0
b3ImKTsKICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGVD
dXJyZW50bHlFeGVjdXRpbmcoY29uc3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZyhWTSYsIGNvbnN0IEZ1bmN0
b3ImKTsKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKQEAg
LTczLDcgKzcyLDYgQEAgY2xhc3MgQ29kZUJsb2NrU2V0IHsKIAogcHJpdmF0ZToKICAgICBIYXNo
U2V0PENvZGVCbG9jayo+IG1fY29kZUJsb2NrczsKLSAgICBIYXNoU2V0PENvZGVCbG9jayo+IG1f
Y3VycmVudGx5RXhlY3V0aW5nOwogICAgIExvY2sgbV9sb2NrOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCmluZGV4IDVkZGJmNDk0
YWIyM2U4MDgwYjk5MzJhMGQyZjllM2NkZWNhZDUyNzYuLjRlMmQ4OTIzMTViMTc4YmVhZDEzNGUz
YTUwMzE0ZjIxYjhiYWVlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvZGVCbG9ja1NldElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
b2RlQmxvY2tTZXRJbmxpbmVzLmgKQEAgLTMwLDE1ICszMCwyMCBAQAogCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCisjaW5jbHVkZSAiSXNvQ2VsbFNl
dElubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWlubGluZSB2b2lkIENvZGVCbG9ja1Nl
dDo6bWFyayhjb25zdCBBYnN0cmFjdExvY2tlciYsIENvZGVCbG9jayogY29kZUJsb2NrKQoraW5s
aW5lIHZvaWQgQ29kZUJsb2NrU2V0OjptYXJrKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAg
IGlmICghY29kZUJsb2NrKQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKGNvZGVCbG9jayk7
CisgICAgY29kZUJsb2NrLT52bSgpLT5jb2RlQmxvY2tTcGFjZS5zZXQuYWRkKGNvZGVCbG9jayk7
Cit9CiAKLSAgICBtX2N1cnJlbnRseUV4ZWN1dGluZy5hZGQoY29kZUJsb2NrKTsKK2lubGluZSB2
b2lkIENvZGVCbG9ja1NldDo6dW5tYXJrKENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIEFT
U0VSVChjb2RlQmxvY2spOworICAgIGNvZGVCbG9jay0+dm0oKS0+Y29kZUJsb2NrU3BhY2Uuc2V0
LnJlbW92ZShjb2RlQmxvY2spOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgpAQCAt
NTgsMjEgKzYzLDE5IEBAIHZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlKGNvbnN0IEFic3RyYWN0
TG9ja2VyJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+CiB2b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0ZVZpYVN1YnNwYWNlcyhWTSYgdm0sIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgdm0uZm9yRWFjaENvZGVCbG9ja1NwYWNlKAotICAg
ICAgICBbJl0gKGF1dG8mIHNwYWNlQW5kU2V0KSB7Ci0gICAgICAgICAgICBzcGFjZUFuZFNldC5z
cGFjZS5mb3JFYWNoTGl2ZUNlbGwoCi0gICAgICAgICAgICAgICAgWyZdIChIZWFwQ2VsbCogY2Vs
bCwgSGVhcENlbGw6OktpbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rvcihqc0Nhc3Q8
Q29kZUJsb2NrKj4oc3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2VsbCkpKTsKLSAgICAgICAgICAgICAg
ICB9KTsKKyAgICB2bS5jb2RlQmxvY2tTcGFjZS5zcGFjZS5mb3JFYWNoTGl2ZUNlbGwoCisgICAg
ICAgIFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSB7CisgICAgICAgICAgICBm
dW5jdG9yKGpzQ2FzdDxDb2RlQmxvY2sqPihzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSkpOwog
ICAgICAgICB9KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgQ29kZUJs
b2NrU2V0OjppdGVyYXRlQ3VycmVudGx5RXhlY3V0aW5nKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
Cit2b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZyhWTSYgdm0sIGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoJm1fbG9jayk7
Ci0gICAgZm9yIChDb2RlQmxvY2sqIGNvZGVCbG9jayA6IG1fY3VycmVudGx5RXhlY3V0aW5nKQot
ICAgICAgICBmdW5jdG9yKGNvZGVCbG9jayk7CisgICAgdm0uY29kZUJsb2NrU3BhY2Uuc2V0LmZv
ckVhY2hNYXJrZWRDZWxsKAorICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6
S2luZCkgeworICAgICAgICAgICAgZnVuY3Rvcihqc0Nhc3Q8Q29kZUJsb2NrKj4oc3RhdGljX2Nh
c3Q8SlNDZWxsKj4oY2VsbCkpKTsKKyAgICAgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9v
dHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3Bw
CmluZGV4IGE0MjBmZThlNjI1Yzk5M2VkNTk0ZDBhY2Y1OGFlY2I3NmM4Yzk5NWUuLjM4YzkwZGJi
ZDNlM2U3ZDUzN2RmZjg0ZGI4MGFiZDExNmU1ZTEyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKQEAgLTExNywxMCArMTE3LDkgQEAg
dm9pZCBDb25zZXJ2YXRpdmVSb290czo6YWRkKHZvaWQqIGJlZ2luLCB2b2lkKiBlbmQpCiAKIGNs
YXNzIENvbXBvc2l0ZU1hcmtIb29rIHsKIHB1YmxpYzoKLSAgICBDb21wb3NpdGVNYXJrSG9vayhK
SVRTdHViUm91dGluZVNldCYgc3R1YlJvdXRpbmVzLCBDb2RlQmxvY2tTZXQmIGNvZGVCbG9ja3Ms
IGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpCisgICAgQ29tcG9zaXRlTWFya0hvb2soSklU
U3R1YlJvdXRpbmVTZXQmIHN0dWJSb3V0aW5lcywgQ29kZUJsb2NrU2V0JiBjb2RlQmxvY2tzKQog
ICAgICAgICA6IG1fc3R1YlJvdXRpbmVzKHN0dWJSb3V0aW5lcykKICAgICAgICAgLCBtX2NvZGVC
bG9ja3MoY29kZUJsb2NrcykKLSAgICAgICAgLCBtX2NvZGVCbG9ja3NMb2NrZXIobG9ja2VyKQog
ICAgIHsKICAgICB9CiAgICAgCkBAIC0xMzIsMjAgKzEzMSwxOCBAQCBjbGFzcyBDb21wb3NpdGVN
YXJrSG9vayB7CiAgICAgdm9pZCBtYXJrS25vd25KU0NlbGwoSlNDZWxsKiBjZWxsKQogICAgIHsK
ICAgICAgICAgaWYgKGNlbGwtPnR5cGUoKSA9PSBDb2RlQmxvY2tUeXBlKQotICAgICAgICAgICAg
bV9jb2RlQmxvY2tzLm1hcmsobV9jb2RlQmxvY2tzTG9ja2VyLCBqc0Nhc3Q8Q29kZUJsb2NrKj4o
Y2VsbCkpOworICAgICAgICAgICAgbV9jb2RlQmxvY2tzLm1hcmsoanNDYXN0PENvZGVCbG9jayo+
KGNlbGwpKTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgSklUU3R1YlJvdXRpbmVTZXQmIG1fc3R1
YlJvdXRpbmVzOwogICAgIENvZGVCbG9ja1NldCYgbV9jb2RlQmxvY2tzOwotICAgIGNvbnN0IEFi
c3RyYWN0TG9ja2VyJiBtX2NvZGVCbG9ja3NMb2NrZXI7CiB9OwogCiB2b2lkIENvbnNlcnZhdGl2
ZVJvb3RzOjphZGQoCiAgICAgdm9pZCogYmVnaW4sIHZvaWQqIGVuZCwgSklUU3R1YlJvdXRpbmVT
ZXQmIGppdFN0dWJSb3V0aW5lcywgQ29kZUJsb2NrU2V0JiBjb2RlQmxvY2tzKQogewotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKGNvZGVCbG9ja3MuZ2V0TG9jaygpKTsKLSAgICBDb21wb3NpdGVNYXJr
SG9vayBtYXJrSG9vayhqaXRTdHViUm91dGluZXMsIGNvZGVCbG9ja3MsIGxvY2tlcik7CisgICAg
Q29tcG9zaXRlTWFya0hvb2sgbWFya0hvb2soaml0U3R1YlJvdXRpbmVzLCBjb2RlQmxvY2tzKTsK
ICAgICBnZW5lcmljQWRkU3BhbihiZWdpbiwgZW5kLCBtYXJrSG9vayk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggNDk1M2FjMjU5MjIzZjMyYTFhMGFkNmU5NjE4MmZm
YmMxNmFhYTUyMi4uN2FiNTJkNWQxMjc2NTRjYWI2MTc5YTJjZTBjYjI3MDIzOGYyZDM1OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTU5MCwxMCArNTkwLDcgQEAgdm9pZCBI
ZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCkKICAgICB2bSgpLT5idWlsdGlu
RXhlY3V0YWJsZXMoKS0+ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsKICAgICBpZiAodm0oKS0+
bV9pbmZlcnJlZFZhbHVlU3BhY2UpCiAgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25h
bEZpbmFsaXplcnM8SW5mZXJyZWRWYWx1ZT4odm0oKS0+bV9pbmZlcnJlZFZhbHVlU3BhY2UtPnNw
YWNlKTsKLSAgICB2bSgpLT5mb3JFYWNoQ29kZUJsb2NrU3BhY2UoCi0gICAgICAgIFsmXSAoYXV0
byYgc3BhY2UpIHsKLSAgICAgICAgICAgIHRoaXMtPmZpbmFsaXplTWFya2VkVW5jb25kaXRpb25h
bEZpbmFsaXplcnM8Q29kZUJsb2NrPihzcGFjZS5zZXQpOwotICAgICAgICB9KTsKKyAgICBmaW5h
bGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPENvZGVCbG9jaz4odm0oKS0+Y29kZUJs
b2NrU3BhY2Uuc3BhY2UpOwogICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXpl
cnM8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4odm0oKS0+ZXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZXNXaXRoRmluYWxpemVycyk7CiAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmlu
YWxpemVyczxTdHJ1Y3R1cmVSYXJlRGF0YT4odm0oKS0+c3RydWN0dXJlUmFyZURhdGFTcGFjZSk7
CiAgICAgaWYgKHZtKCktPm1fd2Vha1NldFNwYWNlKQpAQCAtNjMyLDcgKzYyOSw3IEBAIHZvaWQg
SGVhcDo6Y29tcGxldGVBbGxKSVRQbGFucygpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogdm9p
ZCBIZWFwOjppdGVyYXRlRXhlY3V0aW5nQW5kQ29tcGlsaW5nQ29kZUJsb2Nrcyhjb25zdCBGdW5j
JiBmdW5jKQogewotICAgIG1fY29kZUJsb2Nrcy0+aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZyhm
dW5jKTsKKyAgICBtX2NvZGVCbG9ja3MtPml0ZXJhdGVDdXJyZW50bHlFeGVjdXRpbmcoKm1fdm0s
IGZ1bmMpOwogICAgIGlmIChWTTo6Y2FuVXNlSklUKCkpCiAgICAgICAgIERGRzo6aXRlcmF0ZUNv
ZGVCbG9ja3NGb3JHQygqbV92bSwgZnVuYyk7CiB9CkBAIC05NjIsNyArOTU5LDcgQEAgdm9pZCBI
ZWFwOjpkZWxldGVBbGxVbmxpbmtlZENvZGVCbG9ja3MoRGVsZXRlQWxsQ29kZUVmZm9ydCBlZmZv
cnQpCiB2b2lkIEhlYXA6OmRlbGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCkKIHsKICAgICB2bSgp
LT5mb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5z
cGFjZS5zd2VlcCgpOyB9KTsKLSAgICB2bSgpLT5mb3JFYWNoQ29kZUJsb2NrU3BhY2UoW10gKGF1
dG8mIHNwYWNlKSB7IHNwYWNlLnNwYWNlLnN3ZWVwKCk7IH0pOyAvLyBTd2VlcGluZyBtdXN0IG9j
Y3VyIGJlZm9yZSBkZWxldGluZyBzdHVicywgb3RoZXJ3aXNlIHRoZSBzdHVicyBtaWdodCBzdGls
bCB0aGluayB0aGV5J3JlIGFsaXZlIGFzIHRoZXkgZ2V0IGRlbGV0ZWQuCisgICAgdm0oKS0+Y29k
ZUJsb2NrU3BhY2Uuc3BhY2Uuc3dlZXAoKTsgLy8gU3dlZXBpbmcgbXVzdCBvY2N1ciBiZWZvcmUg
ZGVsZXRpbmcgc3R1YnMsIG90aGVyd2lzZSB0aGUgc3R1YnMgbWlnaHQgc3RpbGwgdGhpbmsgdGhl
eSdyZSBhbGl2ZSBhcyB0aGV5IGdldCBkZWxldGVkLgogICAgIG1faml0U3R1YlJvdXRpbmVzLT5k
ZWxldGVVbm1hcmtlZEpldHRpc29uZWRTdHViUm91dGluZXMoKTsKIH0KIApAQCAtMTUwNiwxMCAr
MTUwMywxMSBAQCBORVZFUl9JTkxJTkUgYm9vbCBIZWFwOjpydW5FbmRQaGFzZShHQ0NvbmR1Y3Rv
ciBjb25uKQogICAgIG5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpOwogICAgIAogICAgIG1fY29k
ZUJsb2Nrcy0+aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZygKKyAgICAgICAgKnZtKCksCiAgICAg
ICAgIFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2spIHsKICAgICAgICAgICAgIHdyaXRlQmFycmll
cihjb2RlQmxvY2spOworICAgICAgICAgICAgbV9jb2RlQmxvY2tzLT51bm1hcmsoY29kZUJsb2Nr
KTsKICAgICAgICAgfSk7Ci0gICAgbV9jb2RlQmxvY2tzLT5jbGVhckN1cnJlbnRseUV4ZWN1dGlu
ZygpOwogICAgICAgICAKICAgICBtX29iamVjdFNwYWNlLnByZXBhcmVGb3JBbGxvY2F0aW9uKCk7
CiAgICAgdXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKaW5kZXggYjk4NWQ0N2VhNGQ5NWVkZGRjOWMwY2YzNjY4OTY1MzM3NmY3ZDFkZi4uMDNiZGVm
OTQwNzE3YzMzZmMyYjk4NTExYmJhZDE4NGI1MTg4OTRjMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCkBAIC00NTIsMTUgKzQ1Miw2IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAg
CiAgICAgU3BhY2VBbmRTZXQgY29kZUJsb2NrU3BhY2U7CiAgICAgRFlOQU1JQ19TUEFDRV9BTkRf
U0VUX0RFRklORV9NRU1CRVIoaW5mZXJyZWRWYWx1ZVNwYWNlKQotCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZvckVhY2hDb2RlQmxvY2tTcGFjZShjb25zdCBGdW5jJiBm
dW5jKQotICAgIHsKLSAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGluY2x1ZGUgd2ViQXNzZW1i
bHlDb2RlQmxvY2tTcGFjZSBiZWNhdXNlIHRoaXMgaXMgYWJvdXQgc3Vic2NsYXNzZXMgb2YKLSAg
ICAgICAgLy8gSlNDOjpDb2RlQmxvY2suCi0gICAgICAgIGZ1bmMoY29kZUJsb2NrU3BhY2UpOwot
ICAgIH0KLQogICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKGV2YWxFeGVj
dXRhYmxlU3BhY2UpCiAgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKICAgICBTcGFjZUFuZFNldCBmdW5jdGlvbkV4ZWN1
dGFibGVTcGFjZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368428</attachid>
            <date>2019-04-28 04:29:12 -0700</date>
            <delta_ts>2019-05-07 02:25:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186740-20190428042911.patch</filename>
            <type>text/plain</type>
            <size>21308</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
OGFlY2E0NjBjYTY1NTgwYTlhZTYwZTk4ZGU3ZTE1ZmFkYTZkNDFiLi45OTQ3ZDYyOGZkMDUyNTk4
ZmNkOGY2MjkxNTExNmE1ZWU0ZDQxMWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAxOS0wNC0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIENvZGVCbG9ja1NldCB3YXN0ZXMgMTkwS0Igb2YgSGFzaFRhYmxlIGNhcGFj
aXR5IG9uIG55dGltZXMuY29tCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODY3NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVV
bmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAqIGhlYXAvQ29kZUJsb2NrU2V0LmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrU2V0OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrU2V0OjpjbGVhckN1cnJlbnRseUV4ZWN1dGluZyk6IERlbGV0ZWQuCisgICAgICAgICogaGVh
cC9Db2RlQmxvY2tTZXQuaDoKKyAgICAgICAgKiBoZWFwL0NvZGVCbG9ja1NldElubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrU2V0OjptYXJrKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrU2V0Ojp1bm1hcmspOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tTZXQ6Oml0ZXJhdGVWaWFT
dWJzcGFjZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tTZXQ6Oml0ZXJhdGVDdXJyZW50bHlF
eGVjdXRpbmcpOgorICAgICAgICAqIGhlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwOgorICAgICAg
ICAoSlNDOjpDb21wb3NpdGVNYXJrSG9vazo6Q29tcG9zaXRlTWFya0hvb2spOgorICAgICAgICAo
SlNDOjpDb21wb3NpdGVNYXJrSG9vazo6bWFya0tub3duSlNDZWxsKToKKyAgICAgICAgKEpTQzo6
Q29uc2VydmF0aXZlUm9vdHM6OmFkZCk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAg
ICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChKU0M6OkhlYXA6OmR1bXBIZWFwU3RhdGlz
dGljc0F0Vk1EZXN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6OmZpbmFsaXplVW5jb25k
aXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAoSlNDOjpIZWFwOjppdGVyYXRlRXhlY3V0aW5n
QW5kQ29tcGlsaW5nQ29kZUJsb2Nrcyk6CisgICAgICAgIChKU0M6OkhlYXA6OmdhdGhlclN0YWNr
Um9vdHMpOgorICAgICAgICAoSlNDOjpIZWFwOjpnYXRoZXJKU1N0YWNrUm9vdHMpOgorICAgICAg
ICAoSlNDOjpIZWFwOjpkZWxldGVVbm1hcmtlZENvbXBpbGVkQ29kZSk6CisgICAgICAgIChKU0M6
OkhlYXA6OnJ1bkVuZFBoYXNlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Zm9yRWFjaENvZGVCbG9j
a0ltcGwpOgorICAgICAgICAoSlNDOjpIZWFwOjpmb3JFYWNoQ29kZUJsb2NrSWdub3JpbmdKSVRQ
bGFuc0ltcGwpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlNDOjpIZWFwOjpj
b2RlQmxvY2tTZXQpOgorICAgICAgICAqIGhlYXAvSXNvQ2VsbFNldC5oOgorICAgICAgICAqIGhl
YXAvSXNvQ2VsbFNldElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SXNvQ2VsbFNldDo6Zm9yRWFj
aExpdmVDZWxsKToKKyAgICAgICAgKEpTQzo6SXNvQ2VsbFNldDo6Zm9yRWFjaENlbGwpOgorICAg
ICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
SGFuZGxlOjpzdG9wQWxsb2NhdGluZyk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoQ2VsbCk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpidW1wR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCk6CisgICAgICAgICogcnVudGltZS9W
TS5oOgorICAgICAgICAoSlNDOjpWTTo6Zm9yRWFjaENvZGVCbG9ja1NwYWNlKTogRGVsZXRlZC4K
KwogMjAxOS0wNC0yNiAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgRW5hYmxlIG5ldyBidWlsZCBydWxlIGZvciBwb3N0LXByb2Nlc3NpbmcgaGVhZGVycyB3aGVu
IHVzaW5nIFhDQnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggMGFiNzU2Y2JiOGZhOTE0MmM0MGY1ZTU3YWVlNDI1NWM2MzUzYzg4Yi4uMmQx
ZmJkOTE1Y2Q0Yzg5NGFlYzU3YTcyNGQwMTkxZTE2OWM1MGI5MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTk3NCw4ICs5NzQsNiBAQCB2b2lk
IENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIAogICAgIHN0
cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKGxvY2tlciwgdmlzaXRvcik7CiAgICAgc3Ryb25n
bHlWaXNpdFdlYWtSZWZlcmVuY2VzKGxvY2tlciwgdmlzaXRvcik7Ci0gICAgCi0gICAgVk06OlNw
YWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNwYWNlKCkpLmFkZCh0aGlzKTsKIH0KIAogYm9vbCBDb2Rl
QmxvY2s6OnNob3VsZFZpc2l0U3Ryb25nbHkoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2Nr
ZXIpCkBAIC0xMzc0LDggKzEzNzIsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkoVk0mIHZtKQogICAgICAgICBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMuZmlu
YWxpemUodm0pOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQotICAgIFZNOjpT
cGFjZUFuZFNldDo6c2V0Rm9yKCpzdWJzcGFjZSgpKS5yZW1vdmUodGhpcyk7CiB9CiAKIHZvaWQg
Q29kZUJsb2NrOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db2RlQmxvY2tTZXQuY3BwCmluZGV4IDQ5ZmNkODRmNGFkOTdhYWUwYWFmM2YxOTNjODZl
YTA2MTNmNmQ4YjcuLmVhYzM4MDQ4YjNlNGY4OWM5NmY5M2I4NTM0MmRlZjQ2OTg1OTQyZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNwcApAQCAtNTAsMjEg
KzUwLDEyIEBAIGJvb2wgQ29kZUJsb2NrU2V0Ojpjb250YWlucyhjb25zdCBBYnN0cmFjdExvY2tl
ciYsIHZvaWQqIGNhbmRpZGF0ZUNvZGVCbG9jaykKICAgICByZXR1cm4gbV9jb2RlQmxvY2tzLmNv
bnRhaW5zKGNvZGVCbG9jayk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrU2V0OjpjbGVhckN1cnJlbnRs
eUV4ZWN1dGluZygpCi17Ci0gICAgbV9jdXJyZW50bHlFeGVjdXRpbmcuY2xlYXIoKTsKLX0KLQog
dm9pZCBDb2RlQmxvY2tTZXQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBD
b21tYVByaW50ZXIgY29tbWE7CiAgICAgb3V0LnByaW50KCJ7Y29kZUJsb2NrcyA9IFsiKTsKICAg
ICBmb3IgKENvZGVCbG9jayogY29kZUJsb2NrIDogbV9jb2RlQmxvY2tzKQogICAgICAgICBvdXQu
cHJpbnQoY29tbWEsIHBvaW50ZXJEdW1wKGNvZGVCbG9jaykpOwotICAgIG91dC5wcmludCgiXSwg
Y3VycmVudGx5RXhlY3V0aW5nID0gWyIpOwotICAgIGNvbW1hID0gQ29tbWFQcmludGVyKCk7Ci0g
ICAgZm9yIChDb2RlQmxvY2sqIGNvZGVCbG9jayA6IG1fY3VycmVudGx5RXhlY3V0aW5nKQotICAg
ICAgICBvdXQucHJpbnQoY29tbWEsIHBvaW50ZXJEdW1wKGNvZGVCbG9jaykpOwogICAgIG91dC5w
cmludCgiXX0iKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29kZUJsb2NrU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQu
aAppbmRleCBjNGM1ODI3NGZjZDBlYjc1MmJiNjE0ZjYwZjY4MDkzMWVkYzc5Y2JiLi5hYjg0OTRl
OWYwYzlkNmVlNzkxMDU2NTdiYjI4ZTBlYzU4MWEyM2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db2RlQmxvY2tTZXQuaApAQCAtNDksMTAgKzQ5LDkgQEAgY2xhc3MgQ29kZUJsb2Nr
U2V0IHsKICAgICBDb2RlQmxvY2tTZXQoKTsKICAgICB+Q29kZUJsb2NrU2V0KCk7CiAKLSAgICB2
b2lkIG1hcmsoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBDb2RlQmxvY2sqIGNhbmRpZGF0ZUNvZGVC
bG9jayk7CisgICAgdm9pZCBtYXJrKENvZGVCbG9jayogY2FuZGlkYXRlQ29kZUJsb2NrKTsKKyAg
ICB2b2lkIHVubWFyayhDb2RlQmxvY2sqKTsKICAgICAKLSAgICB2b2lkIGNsZWFyQ3VycmVudGx5
RXhlY3V0aW5nKCk7Ci0KICAgICBib29sIGNvbnRhaW5zKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwg
dm9pZCogY2FuZGlkYXRlQ29kZUJsb2NrKTsKICAgICBMb2NrJiBnZXRMb2NrKCkgeyByZXR1cm4g
bV9sb2NrOyB9CiAKQEAgLTY0LDcgKzYzLDcgQEAgY2xhc3MgQ29kZUJsb2NrU2V0IHsKIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZVZpYVN1YnNwYWNlcyhWTSYs
IGNvbnN0IEZ1bmN0b3ImKTsKICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2
b2lkIGl0ZXJhdGVDdXJyZW50bHlFeGVjdXRpbmcoY29uc3QgRnVuY3RvciYpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZyhWTSYs
IGNvbnN0IEZ1bmN0b3ImKTsKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25z
dDsKICAgICAKQEAgLTczLDcgKzcyLDYgQEAgY2xhc3MgQ29kZUJsb2NrU2V0IHsKIAogcHJpdmF0
ZToKICAgICBIYXNoU2V0PENvZGVCbG9jayo+IG1fY29kZUJsb2NrczsKLSAgICBIYXNoU2V0PENv
ZGVCbG9jayo+IG1fY3VycmVudGx5RXhlY3V0aW5nOwogICAgIExvY2sgbV9sb2NrOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCmlu
ZGV4IDVkZGJmNDk0YWIyM2U4MDgwYjk5MzJhMGQyZjllM2NkZWNhZDUyNzYuLjk4MDRiZjk2YWM3
Yjc3ZGJjM2E4ZTRlOTM4N2QxZjc2MTIyMDA4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgKQEAgLTMwLDE1ICszMCwyMSBAQAogCiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCisjaW5jbHVk
ZSAiSXNvQ2VsbFNldElubGluZXMuaCIKKyNpbmNsdWRlICJTdWJzcGFjZUlubGluZXMuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLWlubGluZSB2b2lkIENvZGVCbG9ja1NldDo6bWFyayhjb25zdCBB
YnN0cmFjdExvY2tlciYsIENvZGVCbG9jayogY29kZUJsb2NrKQoraW5saW5lIHZvaWQgQ29kZUJs
b2NrU2V0OjptYXJrKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIGlmICghY29kZUJsb2Nr
KQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAgY29kZUJsb2Nr
LT52bSgpLT5jb2RlQmxvY2tTcGFjZS5zZXQuYWRkKGNvZGVCbG9jayk7Cit9CiAKLSAgICBtX2N1
cnJlbnRseUV4ZWN1dGluZy5hZGQoY29kZUJsb2NrKTsKK2lubGluZSB2b2lkIENvZGVCbG9ja1Nl
dDo6dW5tYXJrKENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIEFTU0VSVChjb2RlQmxvY2sp
OworICAgIGNvZGVCbG9jay0+dm0oKS0+Y29kZUJsb2NrU3BhY2Uuc2V0LnJlbW92ZShjb2RlQmxv
Y2spOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgpAQCAtNTgsMjEgKzY0LDE5IEBA
IHZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiB2b2lkIENvZGVC
bG9ja1NldDo6aXRlcmF0ZVZpYVN1YnNwYWNlcyhWTSYgdm0sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCiB7Ci0gICAgdm0uZm9yRWFjaENvZGVCbG9ja1NwYWNlKAotICAgICAgICBbJl0gKGF1dG8m
IHNwYWNlQW5kU2V0KSB7Ci0gICAgICAgICAgICBzcGFjZUFuZFNldC5zcGFjZS5mb3JFYWNoTGl2
ZUNlbGwoCi0gICAgICAgICAgICAgICAgWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6Oktp
bmQpIHsKLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rvcihqc0Nhc3Q8Q29kZUJsb2NrKj4oc3Rh
dGljX2Nhc3Q8SlNDZWxsKj4oY2VsbCkpKTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICB2bS5j
b2RlQmxvY2tTcGFjZS5zcGFjZS5mb3JFYWNoTGl2ZUNlbGwoCisgICAgICAgIFsmXSAoSGVhcENl
bGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSB7CisgICAgICAgICAgICBmdW5jdG9yKGpzQ2FzdDxD
b2RlQmxvY2sqPihzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSkpOwogICAgICAgICB9KTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRl
Q3VycmVudGx5RXhlY3V0aW5nKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit2b2lkIENvZGVCbG9j
a1NldDo6aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZyhWTSYgdm0sIGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoJm1fbG9jayk7Ci0gICAgZm9yIChDb2Rl
QmxvY2sqIGNvZGVCbG9jayA6IG1fY3VycmVudGx5RXhlY3V0aW5nKQotICAgICAgICBmdW5jdG9y
KGNvZGVCbG9jayk7CisgICAgdm0uY29kZUJsb2NrU3BhY2Uuc2V0LmZvckVhY2hNYXJrZWRDZWxs
KAorICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgeworICAgICAg
ICAgICAgZnVuY3Rvcihqc0Nhc3Q8Q29kZUJsb2NrKj4oc3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2Vs
bCkpKTsKKyAgICAgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCmluZGV4IGE0MjBmZThl
NjI1Yzk5M2VkNTk0ZDBhY2Y1OGFlY2I3NmM4Yzk5NWUuLjM4YzkwZGJiZDNlM2U3ZDUzN2RmZjg0
ZGI4MGFiZDExNmU1ZTEyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
b25zZXJ2YXRpdmVSb290cy5jcHAKQEAgLTExNywxMCArMTE3LDkgQEAgdm9pZCBDb25zZXJ2YXRp
dmVSb290czo6YWRkKHZvaWQqIGJlZ2luLCB2b2lkKiBlbmQpCiAKIGNsYXNzIENvbXBvc2l0ZU1h
cmtIb29rIHsKIHB1YmxpYzoKLSAgICBDb21wb3NpdGVNYXJrSG9vayhKSVRTdHViUm91dGluZVNl
dCYgc3R1YlJvdXRpbmVzLCBDb2RlQmxvY2tTZXQmIGNvZGVCbG9ja3MsIGNvbnN0IEFic3RyYWN0
TG9ja2VyJiBsb2NrZXIpCisgICAgQ29tcG9zaXRlTWFya0hvb2soSklUU3R1YlJvdXRpbmVTZXQm
IHN0dWJSb3V0aW5lcywgQ29kZUJsb2NrU2V0JiBjb2RlQmxvY2tzKQogICAgICAgICA6IG1fc3R1
YlJvdXRpbmVzKHN0dWJSb3V0aW5lcykKICAgICAgICAgLCBtX2NvZGVCbG9ja3MoY29kZUJsb2Nr
cykKLSAgICAgICAgLCBtX2NvZGVCbG9ja3NMb2NrZXIobG9ja2VyKQogICAgIHsKICAgICB9CiAg
ICAgCkBAIC0xMzIsMjAgKzEzMSwxOCBAQCBjbGFzcyBDb21wb3NpdGVNYXJrSG9vayB7CiAgICAg
dm9pZCBtYXJrS25vd25KU0NlbGwoSlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgaWYgKGNl
bGwtPnR5cGUoKSA9PSBDb2RlQmxvY2tUeXBlKQotICAgICAgICAgICAgbV9jb2RlQmxvY2tzLm1h
cmsobV9jb2RlQmxvY2tzTG9ja2VyLCBqc0Nhc3Q8Q29kZUJsb2NrKj4oY2VsbCkpOworICAgICAg
ICAgICAgbV9jb2RlQmxvY2tzLm1hcmsoanNDYXN0PENvZGVCbG9jayo+KGNlbGwpKTsKICAgICB9
CiAKIHByaXZhdGU6CiAgICAgSklUU3R1YlJvdXRpbmVTZXQmIG1fc3R1YlJvdXRpbmVzOwogICAg
IENvZGVCbG9ja1NldCYgbV9jb2RlQmxvY2tzOwotICAgIGNvbnN0IEFic3RyYWN0TG9ja2VyJiBt
X2NvZGVCbG9ja3NMb2NrZXI7CiB9OwogCiB2b2lkIENvbnNlcnZhdGl2ZVJvb3RzOjphZGQoCiAg
ICAgdm9pZCogYmVnaW4sIHZvaWQqIGVuZCwgSklUU3R1YlJvdXRpbmVTZXQmIGppdFN0dWJSb3V0
aW5lcywgQ29kZUJsb2NrU2V0JiBjb2RlQmxvY2tzKQogewotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KGNvZGVCbG9ja3MuZ2V0TG9jaygpKTsKLSAgICBDb21wb3NpdGVNYXJrSG9vayBtYXJrSG9vayhq
aXRTdHViUm91dGluZXMsIGNvZGVCbG9ja3MsIGxvY2tlcik7CisgICAgQ29tcG9zaXRlTWFya0hv
b2sgbWFya0hvb2soaml0U3R1YlJvdXRpbmVzLCBjb2RlQmxvY2tzKTsKICAgICBnZW5lcmljQWRk
U3BhbihiZWdpbiwgZW5kLCBtYXJrSG9vayk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAKaW5kZXggNDk1M2FjMjU5MjIzZjMyYTFhMGFkNmU5NjE4MmZmYmMxNmFhYTUyMi4uMGE2
ZTIwMzk5ZTJjNmE3NTEzZjA3NmY5YzlmYzc1ZjVkYzFhZjIyOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKQEAgLTI4NSw3ICsyODUsNyBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVh
cFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX3JhY2VNYXJrU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxN
YXJrU3RhY2tBcnJheT4oKSkKICAgICAsIG1fY29uc3RyYWludFNldChzdGQ6Om1ha2VfdW5pcXVl
PE1hcmtpbmdDb25zdHJhaW50U2V0PigqdGhpcykpCiAgICAgLCBtX2hhbmRsZVNldCh2bSkKLSAg
ICAsIG1fY29kZUJsb2NrcyhzdGQ6Om1ha2VfdW5pcXVlPENvZGVCbG9ja1NldD4oKSkKKyAgICAs
IG1fY29kZUJsb2NrU2V0KHN0ZDo6bWFrZV91bmlxdWU8Q29kZUJsb2NrU2V0PigpKQogICAgICwg
bV9qaXRTdHViUm91dGluZXMoc3RkOjptYWtlX3VuaXF1ZTxKSVRTdHViUm91dGluZVNldD4oKSkK
ICAgICAsIG1fdm0odm0pCiAgICAgLy8gV2Ugc2VlZCB3aXRoIDEwbXMgc28gdGhhdCBHQ0FjdGl2
aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRlIGRvZXNuJ3QgY29udGludW91c2x5IApAQCAtMzQ5LDEz
ICszNDksMTMgQEAgdm9pZCBIZWFwOjpkdW1wSGVhcFN0YXRpc3RpY3NBdFZNRGVzdHJ1Y3Rpb24o
KQogICAgIHVuc2lnbmVkIGNvdW50ZXIgPSAwOwogICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaEJs
b2NrKFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKICAgICAgICAgdW5zaWduZWQg
bGl2ZSA9IDA7Ci0gICAgICAgIGJsb2NrLT5mb3JFYWNoQ2VsbChbJl0gKEhlYXBDZWxsKiBjZWxs
LCBIZWFwQ2VsbDo6S2luZCkgeworICAgICAgICBibG9jay0+Zm9yRWFjaENlbGwoWyZdIChzaXpl
X3QsIEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgewogICAgICAgICAgICAgaWYgKGNl
bGwtPmlzTGl2ZSgpKQogICAgICAgICAgICAgICAgIGxpdmUrKzsKICAgICAgICAgICAgIHJldHVy
biBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsKICAgICAgICAgZGF0YUxv
Z0xuKCJbIiwgY291bnRlcisrLCAiXSAiLCBibG9jay0+Y2VsbFNpemUoKSwgIiwgIiwgbGl2ZSwg
IiAvICIsIGJsb2NrLT5jZWxsc1BlckJsb2NrKCksICIgIiwgc3RhdGljX2Nhc3Q8ZG91YmxlPihs
aXZlKSAvIGJsb2NrLT5jZWxsc1BlckJsb2NrKCkgKiAxMDAsICIlICIsIGJsb2NrLT5hdHRyaWJ1
dGVzKCksICIgIiwgYmxvY2stPnN1YnNwYWNlKCktPm5hbWUoKSk7Ci0gICAgICAgIGJsb2NrLT5m
b3JFYWNoQ2VsbChbJl0gKEhlYXBDZWxsKiBoZWFwQ2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkg
eworICAgICAgICBibG9jay0+Zm9yRWFjaENlbGwoWyZdIChzaXplX3QsIEhlYXBDZWxsKiBoZWFw
Q2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkgewogICAgICAgICAgICAgaWYgKGhlYXBDZWxsLT5p
c0xpdmUoKSAmJiBraW5kID09IEhlYXBDZWxsOjpLaW5kOjpKU0NlbGwpIHsKICAgICAgICAgICAg
ICAgICBhdXRvKiBjZWxsID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oaGVhcENlbGwpOwogICAgICAg
ICAgICAgICAgIGlmIChjZWxsLT5pc09iamVjdCgpKQpAQCAtNTkwLDEwICs1OTAsNyBAQCB2b2lk
IEhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKQogICAgIHZtKCktPmJ1aWx0
aW5FeGVjdXRhYmxlcygpLT5maW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwogICAgIGlmICh2bSgp
LT5tX2luZmVycmVkVmFsdWVTcGFjZSkKICAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlv
bmFsRmluYWxpemVyczxJbmZlcnJlZFZhbHVlPih2bSgpLT5tX2luZmVycmVkVmFsdWVTcGFjZS0+
c3BhY2UpOwotICAgIHZtKCktPmZvckVhY2hDb2RlQmxvY2tTcGFjZSgKLSAgICAgICAgWyZdIChh
dXRvJiBzcGFjZSkgewotICAgICAgICAgICAgdGhpcy0+ZmluYWxpemVNYXJrZWRVbmNvbmRpdGlv
bmFsRmluYWxpemVyczxDb2RlQmxvY2s+KHNwYWNlLnNldCk7Ci0gICAgICAgIH0pOworICAgIGZp
bmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8Q29kZUJsb2NrPih2bSgpLT5jb2Rl
QmxvY2tTcGFjZS5zcGFjZSk7CiAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxp
emVyczxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPih2bSgpLT5leGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlc1dpdGhGaW5hbGl6ZXJzKTsKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXJzPFN0cnVjdHVyZVJhcmVEYXRhPih2bSgpLT5zdHJ1Y3R1cmVSYXJlRGF0YVNwYWNl
KTsKICAgICBpZiAodm0oKS0+bV93ZWFrU2V0U3BhY2UpCkBAIC02MzIsNyArNjI5LDcgQEAgdm9p
ZCBIZWFwOjpjb21wbGV0ZUFsbEpJVFBsYW5zKCkKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiB2
b2lkIEhlYXA6Oml0ZXJhdGVFeGVjdXRpbmdBbmRDb21waWxpbmdDb2RlQmxvY2tzKGNvbnN0IEZ1
bmMmIGZ1bmMpCiB7Ci0gICAgbV9jb2RlQmxvY2tzLT5pdGVyYXRlQ3VycmVudGx5RXhlY3V0aW5n
KGZ1bmMpOworICAgIG1fY29kZUJsb2NrU2V0LT5pdGVyYXRlQ3VycmVudGx5RXhlY3V0aW5nKCpt
X3ZtLCBmdW5jKTsKICAgICBpZiAoVk06OmNhblVzZUpJVCgpKQogICAgICAgICBERkc6Oml0ZXJh
dGVDb2RlQmxvY2tzRm9yR0MoKm1fdm0sIGZ1bmMpOwogfQpAQCAtNjc3LDEzICs2NzQsMTMgQEAg
dm9pZCBIZWFwOjphc3NlcnRNYXJrU3RhY2tzRW1wdHkoKQogCiB2b2lkIEhlYXA6OmdhdGhlclN0
YWNrUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmIHJvb3RzKQogewotICAgIG1fbWFjaGluZVRocmVh
ZHMtPmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKHJvb3RzLCAqbV9qaXRTdHViUm91dGluZXMsICpt
X2NvZGVCbG9ja3MsIG1fY3VycmVudFRocmVhZFN0YXRlLCBtX2N1cnJlbnRUaHJlYWQpOworICAg
IG1fbWFjaGluZVRocmVhZHMtPmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKHJvb3RzLCAqbV9qaXRT
dHViUm91dGluZXMsICptX2NvZGVCbG9ja1NldCwgbV9jdXJyZW50VGhyZWFkU3RhdGUsIG1fY3Vy
cmVudFRocmVhZCk7CiB9CiAKIHZvaWQgSGVhcDo6Z2F0aGVySlNTdGFja1Jvb3RzKENvbnNlcnZh
dGl2ZVJvb3RzJiByb290cykKIHsKICNpZiBFTkFCTEUoQ19MT09QKQotICAgIG1fdm0tPmludGVy
cHJldGVyLT5jbG9vcFN0YWNrKCkuZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHMocm9vdHMsICptX2pp
dFN0dWJSb3V0aW5lcywgKm1fY29kZUJsb2Nrcyk7CisgICAgbV92bS0+aW50ZXJwcmV0ZXItPmNs
b29wU3RhY2soKS5nYXRoZXJDb25zZXJ2YXRpdmVSb290cyhyb290cywgKm1faml0U3R1YlJvdXRp
bmVzLCAqbV9jb2RlQmxvY2tTZXQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocm9vdHMpOwog
I2VuZGlmCkBAIC05NjIsNyArOTU5LDcgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxVbmxpbmtlZENv
ZGVCbG9ja3MoRGVsZXRlQWxsQ29kZUVmZm9ydCBlZmZvcnQpCiB2b2lkIEhlYXA6OmRlbGV0ZVVu
bWFya2VkQ29tcGlsZWRDb2RlKCkKIHsKICAgICB2bSgpLT5mb3JFYWNoU2NyaXB0RXhlY3V0YWJs
ZVNwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2VlcCgpOyB9KTsKLSAgICB2
bSgpLT5mb3JFYWNoQ29kZUJsb2NrU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNlLnNwYWNl
LnN3ZWVwKCk7IH0pOyAvLyBTd2VlcGluZyBtdXN0IG9jY3VyIGJlZm9yZSBkZWxldGluZyBzdHVi
cywgb3RoZXJ3aXNlIHRoZSBzdHVicyBtaWdodCBzdGlsbCB0aGluayB0aGV5J3JlIGFsaXZlIGFz
IHRoZXkgZ2V0IGRlbGV0ZWQuCisgICAgdm0oKS0+Y29kZUJsb2NrU3BhY2Uuc3BhY2Uuc3dlZXAo
KTsgLy8gU3dlZXBpbmcgbXVzdCBvY2N1ciBiZWZvcmUgZGVsZXRpbmcgc3R1YnMsIG90aGVyd2lz
ZSB0aGUgc3R1YnMgbWlnaHQgc3RpbGwgdGhpbmsgdGhleSdyZSBhbGl2ZSBhcyB0aGV5IGdldCBk
ZWxldGVkLgogICAgIG1faml0U3R1YlJvdXRpbmVzLT5kZWxldGVVbm1hcmtlZEpldHRpc29uZWRT
dHViUm91dGluZXMoKTsKIH0KIApAQCAtMTUwNSwxMSArMTUwMiwxMiBAQCBORVZFUl9JTkxJTkUg
Ym9vbCBIZWFwOjpydW5FbmRQaGFzZShHQ0NvbmR1Y3RvciBjb25uKQogICAgIHJlbW92ZURlYWRD
b21waWxlcldvcmtsaXN0RW50cmllcygpOwogICAgIG5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigp
OwogICAgIAotICAgIG1fY29kZUJsb2Nrcy0+aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZygKKyAg
ICBtX2NvZGVCbG9ja1NldC0+aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZygKKyAgICAgICAgKnZt
KCksCiAgICAgICAgIFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2spIHsKICAgICAgICAgICAgIHdy
aXRlQmFycmllcihjb2RlQmxvY2spOworICAgICAgICAgICAgbV9jb2RlQmxvY2tTZXQtPnVubWFy
ayhjb2RlQmxvY2spOwogICAgICAgICB9KTsKLSAgICBtX2NvZGVCbG9ja3MtPmNsZWFyQ3VycmVu
dGx5RXhlY3V0aW5nKCk7CiAgICAgICAgIAogICAgIG1fb2JqZWN0U3BhY2UucHJlcGFyZUZvckFs
bG9jYXRpb24oKTsKICAgICB1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCk7CkBAIC0yNTI1LDEyICsy
NTIzLDEyIEBAIHZvaWQgSGVhcDo6Zm9yRWFjaENvZGVCbG9ja0ltcGwoY29uc3QgU2NvcGVkTGFt
YmRhPHZvaWQoQ29kZUJsb2NrKik+JiBmdW5jKQogICAgIC8vIFdlIGRvbid0IGtub3cgdGhlIGZ1
bGwgc2V0IG9mIENvZGVCbG9ja3MgdW50aWwgY29tcGlsYXRpb24gaGFzIHRlcm1pbmF0ZWQuCiAg
ICAgY29tcGxldGVBbGxKSVRQbGFucygpOwogCi0gICAgcmV0dXJuIG1fY29kZUJsb2Nrcy0+aXRl
cmF0ZShmdW5jKTsKKyAgICByZXR1cm4gbV9jb2RlQmxvY2tTZXQtPml0ZXJhdGUoZnVuYyk7CiB9
CiAKIHZvaWQgSGVhcDo6Zm9yRWFjaENvZGVCbG9ja0lnbm9yaW5nSklUUGxhbnNJbXBsKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKENvZGVCbG9j
ayopPiYgZnVuYykKIHsKLSAgICByZXR1cm4gbV9jb2RlQmxvY2tzLT5pdGVyYXRlKGxvY2tlciwg
ZnVuYyk7CisgICAgcmV0dXJuIG1fY29kZUJsb2NrU2V0LT5pdGVyYXRlKGxvY2tlciwgZnVuYyk7
CiB9CiAKIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyU2xvd1BhdGgoY29uc3QgSlNDZWxsKiBmcm9t
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IDM4ZjUzMjFhZDlkNzdjMzg1YjVlYjJm
OWNhOTUxMjg3OTgzMGE3YTYuLjIzZDE4Mjg2MThlMTQwNWQ4NDNmMmIzMTA0MGNlZWU3NGQwMDRm
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTI3NCw3ICsyNzQsNyBAQCBjbGFz
cyBIZWFwIHsKIAogICAgIFN0cnVjdHVyZUlEVGFibGUmIHN0cnVjdHVyZUlEVGFibGUoKSB7IHJl
dHVybiBtX3N0cnVjdHVyZUlEVGFibGU7IH0KIAotICAgIENvZGVCbG9ja1NldCYgY29kZUJsb2Nr
U2V0KCkgeyByZXR1cm4gKm1fY29kZUJsb2NrczsgfQorICAgIENvZGVCbG9ja1NldCYgY29kZUJs
b2NrU2V0KCkgeyByZXR1cm4gKm1fY29kZUJsb2NrU2V0OyB9CiAKICNpZiBVU0UoRk9VTkRBVElP
TikKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHJlbGVhc2VTb29uKFJldGFpblB0cjxU
PiYmKTsKQEAgLTYzMiw3ICs2MzIsNyBAQCBjbGFzcyBIZWFwIHsKICAgICBWZWN0b3I8U2xvdFZp
c2l0b3IqPiBtX2F2YWlsYWJsZVBhcmFsbGVsU2xvdFZpc2l0b3JzOwogICAgIAogICAgIEhhbmRs
ZVNldCBtX2hhbmRsZVNldDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29kZUJsb2NrU2V0PiBtX2Nv
ZGVCbG9ja3M7CisgICAgc3RkOjp1bmlxdWVfcHRyPENvZGVCbG9ja1NldD4gbV9jb2RlQmxvY2tT
ZXQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEpJVFN0dWJSb3V0aW5lU2V0PiBtX2ppdFN0dWJSb3V0
aW5lczsKICAgICBGaW5hbGl6ZXJPd25lciBtX2ZpbmFsaXplck93bmVyOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCmluZGV4IGRhZGE2NzJjNDkxZGMwMzgxZjU4
ZmExYTY3MmI2YzZjMGI3ZTJlNTguLjI2YWQ3YjRiMjliNDcyYWY3ODNlYTBiZTkzZjNjOGRhODhk
YTYyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmgKQEAgLTM5LDcg
KzM5LDcgQEAgY2xhc3MgSXNvU3Vic3BhY2U7CiAKIC8vIENyZWF0ZSBhIHNldCBvZiBjZWxscyB0
aGF0IGFyZSBpbiBhbiBJc29TdWJzcGFjZS4gVGhpcyBhbGxvd3MgY29uY3VycmVudCBPKDEpIHNl
dCBpbnNlcnRpb24gYW5kCiAvLyByZW1vdmFsLiBFYWNoIHN1Y2ggc2V0IHNob3VsZCBiZSB0aG91
Z2h0IG9mIGFzIGEgMC44JSBpbmNyZWFzZSBpbiBvYmplY3Qgc2l6ZSBmb3Igb2JqZWN0cyBpbiB0
aGF0Ci0vLyBJc29TdWJzcGFjZSAoaXQncyBsaWtlIGFkZGluZyAxIGJpdCBldmVyeSAxNiBieXRl
cywgb3IgMSBiaXQgZXZlcnkgMTI4IGJpdHMpLgorLy8gSXNvU3Vic3BhY2UgKGl0J3MgbGlrZSBh
ZGRpbmcgMSBiaXQgZXZlcnkgMTYgYnl0ZXMsIG9yIDEgYnl0ZSBldmVyeSAxMjggYml0cykuCiBj
bGFzcyBJc29DZWxsU2V0IDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPElzb0NlbGxTZXQ+
IHsKIHB1YmxpYzoKICAgICBJc29DZWxsU2V0KElzb1N1YnNwYWNlJiBzdWJzcGFjZSk7CkBAIC02
Myw2ICs2Myw5IEBAIGNsYXNzIElzb0NlbGxTZXQgOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5v
ZGU8SXNvQ2VsbFNldD4gewogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAg
dm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYpOworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hDZWxsKGNvbnN0IEZ1bmMmKTsKICAgICAKIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIElzb1N1YnNwYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKaW5kZXggY2U3ZGU4ZTE5MGVhOGU1M2Y5MzM2
NGM3Y2YxZmNlNWVkMzRhNmY3NC4uNTZhMmMwMDkwOTUwOWNkMDQ3Yjk5N2MxNGI4ZmZhNjdhNTQy
ODdlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5l
cy5oCkBAIC0xMjIsMTAgKzEyMiwyNiBAQCB2b2lkIElzb0NlbGxTZXQ6OmZvckVhY2hMaXZlQ2Vs
bChjb25zdCBGdW5jJiBmdW5jKQogICAgICAgICBbJl0gKHNpemVfdCBibG9ja0luZGV4KSB7CiAg
ICAgICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IGRpcmVjdG9yeS5tX2Jsb2Nr
c1tibG9ja0luZGV4XTsKIAotICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIG9wdGltaXpl
IHRoaXMgYnkgY2hlY2tpbmcgb3VyIGJpdHMgYmVmb3JlIHF1ZXJ5aW5nIGlzTGl2ZS4KLSAgICAg
ICAgICAgIC8vIE9PUFMhIChuZWVkIGJ1ZyBVUkwpCiAgICAgICAgICAgICBhdXRvKiBiaXRzID0g
bV9iaXRzW2Jsb2NrSW5kZXhdLmdldCgpOwotICAgICAgICAgICAgYmxvY2stPmZvckVhY2hMaXZl
Q2VsbCgKKyAgICAgICAgICAgIGJsb2NrLT5mb3JFYWNoQ2VsbCgKKyAgICAgICAgICAgICAgICBb
Jl0gKHNpemVfdCBhdG9tTnVtYmVyLCBIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQga2lu
ZCkgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJpdHMtPmdl
dChhdG9tTnVtYmVyKSAmJiBibG9jay0+aXNMaXZlKGNlbGwpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgZnVuYyhjZWxsLCBraW5kKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJh
dGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgordm9pZCBJc29DZWxsU2V0Ojpmb3JFYWNoQ2Vs
bChjb25zdCBGdW5jJiBmdW5jKQoreworICAgIEJsb2NrRGlyZWN0b3J5JiBkaXJlY3RvcnkgPSBt
X3N1YnNwYWNlLm1fZGlyZWN0b3J5OworICAgIG1fYmxvY2tzV2l0aEJpdHMuZm9yRWFjaFNldEJp
dCgKKyAgICAgICAgWyZdIChzaXplX3QgYmxvY2tJbmRleCkgeworICAgICAgICAgICAgTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2sgPSBkaXJlY3RvcnkubV9ibG9ja3NbYmxvY2tJbmRleF07CisK
KyAgICAgICAgICAgIGF1dG8qIGJpdHMgPSBtX2JpdHNbYmxvY2tJbmRleF0uZ2V0KCk7CisgICAg
ICAgICAgICBibG9jay0+Zm9yRWFjaENlbGwoCiAgICAgICAgICAgICAgICAgWyZdIChzaXplX3Qg
YXRvbU51bWJlciwgSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kIGtpbmQpIC0+IEl0ZXJh
dGlvblN0YXR1cyB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChiaXRzLT5nZXQoYXRvbU51bWJl
cikpCiAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKGNlbGwsIGtpbmQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCmluZGV4IGIxYTEwYTFlNzkzZTE4MTNk
NDBhZjFhMTBjNWUwNTcyNDNmZTEyZmMuLmRlZGM3NTlmZmE3OGQwOWViNjllNzcyYmY0ZDk2MGEy
YjE4NTZjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAK
QEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0
aW5nKGNvbnN0IEZyZWVMaXN0JiBmcmVlTGlzdCkKICAgICBibG9ja0Zvb3RlcigpLm1fbmV3bHlB
bGxvY2F0ZWRWZXJzaW9uID0gaGVhcCgpLT5vYmplY3RTcGFjZSgpLm5ld2x5QWxsb2NhdGVkVmVy
c2lvbigpOwogCiAgICAgZm9yRWFjaENlbGwoCi0gICAgICAgIFsmXSAoSGVhcENlbGwqIGNlbGws
IEhlYXBDZWxsOjpLaW5kKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICBbJl0gKHNpemVf
dCwgSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSAtPiBJdGVyYXRpb25TdGF0dXMgewog
ICAgICAgICAgICAgYmxvY2soKS5zZXROZXdseUFsbG9jYXRlZChjZWxsKTsKICAgICAgICAgICAg
IHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4IDQzOTI5MzJhZWM3MGZjZjIyMDg0
OGFmZTY1N2U4MGY1NGI1Nzk5YTEuLjU3MDIwMGQxMTM1NGRmMjY0NzUzNGI0NzExYjllZTMxODk4
ZTdiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApAQCAtNjM2
LDcgKzYzNiw3IEBAIGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6
Zm9yRWFjaENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICBIZWFwQ2VsbDo6S2luZCBr
aW5kID0gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7CiAgICAgICAgIEhlYXBDZWxsKiBjZWxs
ID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmbV9ibG9jay0+YXRvbXMoKVtpXSk7
Ci0gICAgICAgIGlmIChmdW5jdG9yKGNlbGwsIGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9u
ZSkKKyAgICAgICAgaWYgKGZ1bmN0b3IoaSwgY2VsbCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVz
OjpEb25lKQogICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKICAgICB9
CiAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggNjRkNDY4ZTgzZjQ5
Nzg3YzEwNDNiYWQ0NzQzNzc2OWIwYjhiNzBhYS4uMmJmZDhiN2FiYTQ1MDVjYmMzNTMzNjlhMTc3
MzM0NmVmYzZhNmE1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcApAQCAtMjAzNyw3ICsyMDM3LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6YnVtcEdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goVk0mIHZtKQogICAgIGlmICgrK21fZ2xv
YmFsTGV4aWNhbEJpbmRpbmdFcG9jaCA9PSBPcHRpb25zOjp0aHJlc2hvbGRGb3JHbG9iYWxMZXhp
Y2FsQmluZGluZ0Vwb2NoKCkpIHsKICAgICAgICAgLy8gU2luY2UgdGhlIGVwb2NoIG92ZXJmbG93
cywgd2Ugc2hvdWxkIHJld3JpdGUgYWxsIHRoZSBDb2RlQmxvY2sgdG8gYWRqdXN0IHRvIHRoZSBu
ZXdseSBzdGFydGVkIGdlbmVyYXRpb24uCiAgICAgICAgIG1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdF
cG9jaCA9IDE7Ci0gICAgICAgIHZtLmhlYXAuY29kZUJsb2NrU2V0KCkuaXRlcmF0ZShbJl0gKENv
ZGVCbG9jayogY29kZUJsb2NrKSB7CisgICAgICAgIHZtLmhlYXAuY29kZUJsb2NrU2V0KCkuaXRl
cmF0ZVZpYVN1YnNwYWNlcyh2bSwgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaykgewogICAgICAg
ICAgICAgaWYgKGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkgIT0gdGhpcykKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICBjb2RlQmxvY2stPm5vdGlmeUxleGljYWxCaW5kaW5n
VXBkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBiOTg1ZDQ3ZWE0ZDk1
ZWRkZGM5YzBjZjM2Njg5NjUzMzc2ZjdkMWRmLi4wM2JkZWY5NDA3MTdjMzNmYzJiOTg1MTFiYmFk
MTg0YjUxODg5NGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQ1MiwxNSAr
NDUyLDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJs
aWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICAKICAgICBTcGFjZUFuZFNldCBjb2Rl
QmxvY2tTcGFjZTsKICAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihpbmZl
cnJlZFZhbHVlU3BhY2UpCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZvaWQg
Zm9yRWFjaENvZGVCbG9ja1NwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCi0gICAgewotICAgICAgICAv
LyBUaGlzIHNob3VsZCBub3QgaW5jbHVkZSB3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlIGJlY2F1
c2UgdGhpcyBpcyBhYm91dCBzdWJzY2xhc3NlcyBvZgotICAgICAgICAvLyBKU0M6OkNvZGVCbG9j
ay4KLSAgICAgICAgZnVuYyhjb2RlQmxvY2tTcGFjZSk7Ci0gICAgfQotCiAgICAgRFlOQU1JQ19T
UEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIoZXZhbEV4ZWN1dGFibGVTcGFjZSkKICAgICBEWU5B
TUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNw
YWNlKQogICAgIFNwYWNlQW5kU2V0IGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369261</attachid>
            <date>2019-05-07 02:25:27 -0700</date>
            <delta_ts>2019-05-07 02:25:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186740-20190507022526.patch</filename>
            <type>text/plain</type>
            <size>63828</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0OTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZDk2MDM5NTU4NGRlNmFhODMwYzAzM2M5ZjBjMjFkNDE2MmM2MmY2Li42ZjU5OTdlMTQyZDU0YWIz
NjkzNGQ2MDJmZDRiY2E3NGQzY2IyZTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4OSBAQAorMjAxOS0wNS0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIENvZGVCbG9ja1NldCB3YXN0ZXMgMTkwS0Igb2YgSGFzaFRhYmxlIGNhcGFj
aXR5IG9uIG55dGltZXMuY29tCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODY3NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKiBieXRlY29kZS9FdmFsQ29kZUJs
b2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaDoKKyAgICAgICAg
KiBieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUv
UHJvZ3JhbUNvZGVCbG9jay5oOgorICAgICAgICAqIGRmZy9ERkdDb21waWxhdGlvbktleS5jcHA6
CisgICAgICAgICogaGVhcC9Db2RlQmxvY2tTZXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGhl
YXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oOiBSZW1vdmVkLgorICAgICAgICAqIGhlYXAvQ29uc2Vy
dmF0aXZlUm9vdHMuY3BwOgorICAgICAgICAoSlNDOjpDb21wb3NpdGVNYXJrSG9vazo6Q29tcG9z
aXRlTWFya0hvb2spOgorICAgICAgICAoSlNDOjpDb21wb3NpdGVNYXJrSG9vazo6bWFya0tub3du
SlNDZWxsKToKKyAgICAgICAgKEpTQzo6Q29uc2VydmF0aXZlUm9vdHM6OmFkZCk6CisgICAgICAg
ICogaGVhcC9Db25zZXJ2YXRpdmVSb290cy5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6Cisg
ICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAoSlNDOjpIZWFwOjpkdW1wSGVhcFN0
YXRpc3RpY3NBdFZNRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpIZWFwOjpmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXJzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6aXRlcmF0ZUV4ZWN1
dGluZ0FuZENvbXBpbGluZ0NvZGVCbG9ja3MpOgorICAgICAgICAoSlNDOjpIZWFwOjpnYXRoZXJT
dGFja1Jvb3RzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Z2F0aGVySlNTdGFja1Jvb3RzKToKKyAg
ICAgICAgKEpTQzo6SGVhcDo6ZGVsZXRlVW5tYXJrZWRDb21waWxlZENvZGUpOgorICAgICAgICAo
SlNDOjpIZWFwOjpydW5FbmRQaGFzZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmZvckVhY2hDb2Rl
QmxvY2tJbXBsKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Zm9yRWFjaENvZGVCbG9ja0lnbm9yaW5n
SklUUGxhbnNJbXBsKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVh
cDo6Y29kZUJsb2NrU2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQuY3Bw
OgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjphZGRTbG93KToKKyAgICAgICAgKiBoZWFwL0lz
b0NlbGxTZXQuaDoKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6Oklzb0NlbGxTZXQ6OmFkZCk6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnJlbW92
ZSk6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OmNvbnRhaW5zQ29uc2VydmF0aXZlIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6SXNvQ2VsbFNldDo6Zm9yRWFjaExpdmVDZWxsKToKKyAgICAgICAg
KEpTQzo6SXNvQ2VsbFNldDo6Zm9yRWFjaENlbGwpOgorICAgICAgICAqIGhlYXAvSXNvU3Vic3Bh
Y2UuaDoKKyAgICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHA6CisgICAgICAgIChK
U0M6Ok1hY2hpbmVUaHJlYWRzOjpnYXRoZXJGcm9tQ3VycmVudFRocmVhZCk6CisgICAgICAgIChK
U0M6Ok1hY2hpbmVUaHJlYWRzOjpnYXRoZXJDb25zZXJ2YXRpdmVSb290cyk6CisgICAgICAgICog
aGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaDoKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcpOgor
ICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6
OkhhbmRsZTo6Zm9yRWFjaENlbGwpOgorICAgICAgICAqIGludGVycHJldGVyL0NMb29wU3RhY2su
Y3BwOgorICAgICAgICAoSlNDOjpDTG9vcFN0YWNrOjpnYXRoZXJDb25zZXJ2YXRpdmVSb290cyk6
CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ0xvb3BTdGFjay5oOgorICAgICAgICAqIHJ1bnRpbWUv
Q29kZUJsb2NrU3Vic3BhY2UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvZGVCbG9ja1NldC5oLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tTdWJzcGFjZTo6Q29k
ZUJsb2NrU3Vic3BhY2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tTdWJzcGFjZTo6Z2V0TG9j
ayk6CisgICAgICAgICogcnVudGltZS9Db2RlQmxvY2tTdWJzcGFjZUlubGluZXMuaDogQWRkZWQu
CisgICAgICAgIChKU0M6OkNvZGVCbG9ja1N1YnNwYWNlOjphZGQpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2tTdWJzcGFjZTo6cmVtb3ZlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrU3Vic3Bh
Y2U6OmNvbnRhaW5zKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrU3Vic3BhY2U6Oml0ZXJhdGUp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tTdWJzcGFjZTo6YWRkQ3VycmVudGx5RXhlY3V0aW5n
SW5HQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja1N1YnNwYWNlOjpyZW1vdmVDdXJyZW50bHlF
eGVjdXRpbmdJbkdDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrU3Vic3BhY2U6Oml0ZXJhdGVD
dXJyZW50bHlFeGVjdXRpbmdJbkdDKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmJ1bXBHbG9iYWxMZXhpY2FsQmlu
ZGluZ0Vwb2NoKToKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAg
ICAgICAoSlNDOjpGcmFtZVdhbGtlcjo6aXNWYWxpZENvZGVCbG9jayk6CisgICAgICAgIChKU0M6
OlNhbXBsaW5nUHJvZmlsZXI6OnRha2VTYW1wbGUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoK
KyAgICAgICAgKEpTQzo6Vk06OmZvckVhY2hDb2RlQmxvY2tTcGFjZSk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9WTVRyYXBzLmNwcDoKKyAgICAgICAgKEpTQzo6Vk1UcmFwczo6dHJ5SW5z
dGFsbFRyYXBCcmVha3BvaW50cyk6CisgICAgICAgIChKU0M6OlZNVHJhcHM6OmludmFsaWRhdGVD
b2RlQmxvY2tzT25TdGFjayk6CisgICAgICAgIChKU0M6OlZNVHJhcHM6OmhhbmRsZVRyYXBzKToK
KyAgICAgICAgKiB0b29scy9WTUluc3BlY3Rvci5jcHA6CisgICAgICAgIChKU0M6OlZNSW5zcGVj
dG9yOjpjb2RlQmxvY2tGb3JNYWNoaW5lUEMpOgorCiAyMDE5LTA1LTA0ICBUYWRldSBaYWdhbGxv
ICA8dHphZ2FsbG9AYXBwbGUuY29tPgogCiAgICAgICAgIFR5cGVkQXJyYXlzIHNob3VsZCBub3Qg
c3RvcmUgcHJvcGVydGllcyB0aGF0IGFyZSBjYW5vbmljYWwgbnVtZXJpYyBpbmRpY2VzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZmI2MjEwYzNmNzI3NWU3MDQ0MGZlNDFm
ZGJjODk4YzZiZTY0NTc0ZC4uZTA0ZTY4ZDU5MzI4MThkNDliMDg5ZDM2ZTAwOWNmZmIyZTA1OGQ5
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNzY0LDYgKzc2NCw4IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGlt
ZS9DYWxsRGF0YS5oCiAgICAgcnVudGltZS9DYXRjaFNjb3BlLmgKICAgICBydW50aW1lL0NsYXNz
SW5mby5oCisgICAgcnVudGltZS9Db2RlQmxvY2tTdWJzcGFjZS5oCisgICAgcnVudGltZS9Db2Rl
QmxvY2tTdWJzcGFjZUlubGluZXMuaAogICAgIHJ1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZC5oCiAgICAgcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCiAgICAgcnVudGltZS9Db21waWxh
dGlvblJlc3VsdC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZGM4ODdiOWFh
ZjgxNWJiM2I4MGE3ZDQyZThhMDdmODk0ZmRkMDMuLjU3YmFiOTc2MWQ4OGFmYWYxNDk5YzY4Zjg1
NWU4ZTNlMTg0Y2ZmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zOTcsNyAr
Mzk3LDYgQEAKIAkJMEY2NTg1RTExRUUwODA1QTAwOTUxNzZEIC8qIEZyZWVMaXN0SW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NTg1RTAx
RUUwODA1NzAwOTUxNzZEIC8qIEZyZWVMaXN0SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjYwRTM4MUUwNTE3QkIwMDMxNDYyQyAv
KiBNYXJraW5nQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY2NjBFMzQxRTA1MTdCNzAwMzE0NjJDIC8qIE1hcmtpbmdDb25zdHJhaW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2
NjBFM0ExRTA1MTdDMTAwMzE0NjJDIC8qIE1hcmtpbmdDb25zdHJhaW50U2V0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2MEUzNjFFMDUxN0I4MDAz
MTQ2MkMgLyogTWFya2luZ0NvbnN0cmFpbnRTZXQuaCAqLzsgfTsKLQkJMEY2NjRDRTgxREEzMDRF
RjAwQjAwQTExIC8qIENvZGVCbG9ja1NldElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjY0Q0U3MURBMzA0RUQwMEIwMEExMSAvKiBDb2Rl
QmxvY2tTZXRJbmxpbmVzLmggKi87IH07CiAJCTBGNjY2RUMwMTgzNTY2RjkwMEQwMTdGMSAvKiBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2NkVCRTE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGNjY2RUMxMTgzNTY2RjkwMEQwMTdGMSAvKiBGdWxsQnl0
ZWNvZGVMaXZlbmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY2NjZFQkYxODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxpdmVuZXNzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2NjZF
QzcxODM1NjcyQjAwRDAxN0YxIC8qIERGR0F2YWlsYWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NjZFQzMxODM1NjcyQjAwRDAxN0YxIC8q
IERGR0F2YWlsYWJpbGl0eS5oICovOyB9OwpAQCAtNTc5LDcgKzU3OCw2IEBACiAJCTBGRDgxQUQz
MTU0RkI0RjAwMDk4M0U3MiAvKiBERkdEb21pbmF0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MUFEMDE1NEZCNEVCMDA5ODNFNzIgLyogREZH
RG9taW5hdG9ycy5oICovOyB9OwogCQkwRkQ4MkU1NDE0MURBRUVFMDAxNzlDOTQgLyogU3BlY3Vs
YXRlZFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRDgyRTRGMTQxREFFQTEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRDgyRTU3MTQxREFGMTAw
MDE3OUM5NCAvKiBERkdPU1JFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZEODJFNTMxNDFEQUVERTAwMTc5Qzk0IC8qIERGR09TUkVudHJ5Lmgg
Ki87IH07Ci0JCTBGRDhBMzE0MTdENDMyNkMwMENBMkM0MCAvKiBDb2RlQmxvY2tTZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDhBMzEyMTdENDMy
NkMwMENBMkM0MCAvKiBDb2RlQmxvY2tTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkQ4QTMxQTE3RDUxRjIyMDBDQTJDNDAgLyogRlRMRm9y
T1NSRW50cnlKSVRDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkQ4QTMxNjE3RDUxRjIyMDBDQTJDNDAgLyogRlRMRm9yT1NSRW50cnlKSVRDb2Rl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZE
OEEzMUMxN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTE9TUkVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4QTMxODE3RDUxRjIyMDBDQTJDNDAgLyog
RlRMT1NSRW50cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRkQ4QTMyNjE3RDUxRjU3MDBDQTJDNDAgLyogREZHT1NSRW50cnlwb2ludENyZWF0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRDhBMzFFMTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFz
ZS5oICovOyB9OwpAQCAtMjU0OSw3ICsyNTQ3LDYgQEAKIAkJMEY2NjBFMzQxRTA1MTdCNzAwMzE0
NjJDIC8qIE1hcmtpbmdDb25zdHJhaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1hcmtpbmdDb25zdHJhaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
NjYwRTM1MUUwNTE3QjcwMDMxNDYyQyAvKiBNYXJraW5nQ29uc3RyYWludFNldC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXJraW5nQ29uc3RyYWludFNldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjYwRTM2MUUwNTE3QjgwMDMxNDYyQyAv
KiBNYXJraW5nQ29uc3RyYWludFNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNYXJraW5nQ29uc3RyYWludFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
RjY2NENFNzFEQTMwNEVEMDBCMDBBMTEgLyogQ29kZUJsb2NrU2V0SW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlQmxvY2tTZXRJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjY2RUJFMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY2NjZFQkYxODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxpdmVu
ZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxCeXRlY29kZUxpdmVu
ZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjY2RUMyMTgzNTY3MkIwMEQw
MTdGMSAvKiBERkdBdmFpbGFiaWxpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gREZHQXZhaWxhYmlsaXR5LmNwcDsgcGF0aCA9IGRmZy9ERkdBdmFpbGFiaWxpdHku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg2Niw4ICsyODYzLDYgQEAKIAkJ
MEZEODJFNTIxNDFEQUVERTAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkVudHJ5LmNwcDsgcGF0aCA9IGRmZy9ERkdP
U1JFbnRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgyRTUzMTQxREFF
REUwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBERkdPU1JFbnRyeS5oOyBwYXRoID0gZGZnL0RGR09TUkVudHJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRDgyRTg0MTQxRjNGREEwMDE3OUM5NCAvKiBTcGVjdWxhdGVk
VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVjdWxhdGVk
VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRDhBMzExMTdENDMyNkMw
MENBMkM0MCAvKiBDb2RlQmxvY2tTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ29kZUJsb2NrU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MEZEOEEzMTIxN0Q0MzI2QzAwQ0EyQzQwIC8qIENvZGVCbG9ja1NldC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlQmxvY2tTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZEOEEzMTUxN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTEZvck9TUkVudHJ5SklUQ29k
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExGb3JPU1JFbnRy
eUpJVENvZGUuY3BwOyBwYXRoID0gZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDhBMzE2MTdENTFGMjIwMENBMkM0MCAvKiBGVExG
b3JPU1JFbnRyeUpJVENvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRM
Rm9yT1NSRW50cnlKSVRDb2RlLmg7IHBhdGggPSBmdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDhBMzE3MTdENTFGMjIwMENBMkM0MCAv
KiBGVExPU1JFbnRyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBG
VExPU1JFbnRyeS5jcHA7IHBhdGggPSBmdGwvRlRMT1NSRW50cnkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTkwMyw5ICs1ODk4LDYgQEAKIAkJCQkwRjA3MEE0MjFENTQzQTg5
MDA2RTcyMzIgLyogQ2VsbENvbnRhaW5lci5oICovLAogCQkJCTBGMDcwQTQzMUQ1NDNBODkwMDZF
NzIzMiAvKiBDZWxsQ29udGFpbmVySW5saW5lcy5oICovLAogCQkJCTBGMUMzREQ5MUJCQ0UwOUUw
MEU1MjNFNCAvKiBDZWxsU3RhdGUuaCAqLywKLQkJCQkwRkQ4QTMxMTE3RDQzMjZDMDBDQTJDNDAg
LyogQ29kZUJsb2NrU2V0LmNwcCAqLywKLQkJCQkwRkQ4QTMxMjE3RDQzMjZDMDBDQTJDNDAgLyog
Q29kZUJsb2NrU2V0LmggKi8sCi0JCQkJMEY2NjRDRTcxREEzMDRFRDAwQjAwQTExIC8qIENvZGVC
bG9ja1NldElubGluZXMuaCAqLywKIAkJCQkwRkQwRTVGMTFFNDZDOEFEMDAwNkFCMDggLyogQ29s
bGVjdGluZ1Njb3BlLmggKi8sCiAJCQkJMEZBNzYyMDAxREI5MjQyMzAwQjdBMkZEIC8qIENvbGxl
Y3Rpb25TY29wZS5jcHAgKi8sCiAJCQkJMEZBNzYyMDExREI5MjQyMzAwQjdBMkZEIC8qIENvbGxl
Y3Rpb25TY29wZS5oICovLApAQCAtODgwNiw4ICs4Nzk4LDYgQEAKIAkJCQk5NjlBMDc5NzBFRDFE
M0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjhGOTQ0MTE2
Njc2MzMyMDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZD
OTdGMzQxODIwMjBENzAwMkM5QjI2IC8qIENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMEZEOEEzMTQxN0Q0MzI2QzAwQ0EyQzQwIC8qIENvZGVCbG9j
a1NldC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY2NjRDRTgxREEzMDRFRjAwQjAwQTExIC8qIENv
ZGVCbG9ja1NldElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTZFQkIzMTY2NzZFRjYw
MDhCQURFMyAvKiBDb2RlQmxvY2tXaXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3
RjE4MjIxNjQwODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODZFMTE2QjEwRkU3NUFDODAwQjUxMkJDIC8qIENvZGVMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggZjU1MzQ0NDEzOTBkMWE2MDhhYWUwZGMy
OGZmYmVmMzE4NjgzMjliNC4uMTgzYjA1ODYyNzZkMmVhYWVkNzMxMzgxNzkwZmNlNzM3MzlhNjk5
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtNDkxLDcgKzQ5MSw2IEBAIGhlYXAv
QWxsb2NhdG9yLmNwcAogaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKIGhlYXAvQ2VsbEF0dHJpYnV0
ZXMuY3BwCiBoZWFwL0NlbGxDb250YWluZXIuY3BwCi1oZWFwL0NvZGVCbG9ja1NldC5jcHAKIGhl
YXAvQ29sbGVjdGlvblNjb3BlLmNwcAogaGVhcC9Db2xsZWN0b3JQaGFzZS5jcHAKIGhlYXAvQ29t
cGxldGVTdWJzcGFjZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKaW5kZXggN2IxOTFjZDJiZWMwN2NlOTMwMzA1Y2RkYzI3Mzc2ZDhjNjdmOWU1Yi4u
NzM1MDdlNmNkYmMzNzA3OTUxZTZlNmM0NzA1NmNhOGU2MTYwZmY4YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKICNp
bmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAj
aW5jbHVkZSAiQ29kZUJsb2NrSW5saW5lcy5oIgotI2luY2x1ZGUgIkNvZGVCbG9ja1NldC5oIgor
I2luY2x1ZGUgIkNvZGVCbG9ja1N1YnNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIkRGR0NhcGFi
aWxpdGllcy5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5o
IgpAQCAtMzIxLDcgKzMyMSw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrCiAgICAgQVNTRVJU
KHNvdXJjZSgpLnByb3ZpZGVyKCkpOwogICAgIHNldE51bVBhcmFtZXRlcnMob3RoZXIubnVtUGFy
YW1ldGVycygpKTsKICAgICAKLSAgICB2bS0+aGVhcC5jb2RlQmxvY2tTZXQoKS5hZGQodGhpcyk7
CisgICAgdm0tPmNvZGVCbG9ja1NwYWNlLmFkZCh0aGlzKTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90
aGVyKQpAQCAtMzczLDcgKzM3Myw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0CiAgICAgQVNT
RVJUKHNvdXJjZSgpLnByb3ZpZGVyKCkpOwogICAgIHNldE51bVBhcmFtZXRlcnModW5saW5rZWRD
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CiAgICAgCi0gICAgdm0tPmhlYXAuY29kZUJsb2Nr
U2V0KCkuYWRkKHRoaXMpOworICAgIHZtLT5jb2RlQmxvY2tTcGFjZS5hZGQodGhpcyk7CiB9CiAK
IC8vIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyBmdW5jdGlvbiBpcyB0byBnZW5lcmF0ZSBsaW5r
ZWQgYnl0ZWNvZGUgZnJvbSB1bmxpbmtlZCBieXRlY29kZS4gVGhlIHByb2Nlc3MKQEAgLTgxMyw3
ICs4MTMsNyBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogewogICAgIFZNJiB2bSA9ICptX3Zt
OwogCi0gICAgdm0uaGVhcC5jb2RlQmxvY2tTZXQoKS5yZW1vdmUodGhpcyk7CisgICAgdm0uY29k
ZUJsb2NrU3BhY2UucmVtb3ZlKHRoaXMpOwogICAgIAogICAgIGlmIChVTkxJS0VMWSh2bS5tX3Bl
ckJ5dGVjb2RlUHJvZmlsZXIpKQogICAgICAgICB2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPm5v
dGlmeURlc3RydWN0aW9uKHRoaXMpOwpAQCAtOTczLDggKzk3Myw2IEBAIHZvaWQgQ29kZUJsb2Nr
Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiAgICAgc3Ryb25nbHlWaXNp
dFN0cm9uZ1JlZmVyZW5jZXMobG9ja2VyLCB2aXNpdG9yKTsKICAgICBzdHJvbmdseVZpc2l0V2Vh
a1JlZmVyZW5jZXMobG9ja2VyLCB2aXNpdG9yKTsKLSAgICAKLSAgICBWTTo6U3BhY2VBbmRTZXQ6
OnNldEZvcigqc3Vic3BhY2UoKSkuYWRkKHRoaXMpOwogfQogCiBib29sIENvZGVCbG9jazo6c2hv
dWxkVmlzaXRTdHJvbmdseShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlcikKQEAgLTEz
NzMsOCArMTM3MSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShW
TSYgdm0pCiAgICAgICAgIGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5maW5hbGl6ZSh2bSk7
CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQotCi0gICAgVk06OlNwYWNlQW5kU2V0
OjpzZXRGb3IoKnN1YnNwYWNlKCkpLnJlbW92ZSh0aGlzKTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6
OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FdmFsQ29kZUJsb2NrLmgKaW5kZXggYjlmMjhkMDJjNzE0Mjk0N2Q5ODFjYjA3YTljNTUyMmEw
ODFmYTc5ZS4uN2Y0YjhmZWZmYjc1YjE2OGIwYTcwNjg1OGEzMzQ5NDg3N2RlNWFhZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVCbG9jay5oCkBAIC0zOSw5
ICszOSw5IEBAIGNsYXNzIEV2YWxDb2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgR2xvYmFsQ29kZUJs
b2NrIHsKICAgICBERUNMQVJFX0lORk87CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3Bh
Y2VBY2Nlc3M+Ci0gICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisg
ICAgc3RhdGljIENvZGVCbG9ja1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlLnNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLmNvZGVCbG9ja1NwYWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBFdmFsQ29kZUJsb2NrKiBj
cmVhdGUoVk0qIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIEV2YWxDb2RlQmxvY2smIG90aGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bmN0aW9uQ29kZUJs
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2su
aAppbmRleCA4NTNmYWU5NWRlM2FhMjg0MmNkMGM3NjU4YTU2ZDEzYTk5NTBlZWE1Li40Y2YwZjQ0
MWZlNTg4MzM3YmRkYTg1MDk5OTNlYWIwNzEyYjllOGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaApAQCAtNDIsNyArNDIsNyBA
QCBjbGFzcyBGdW5jdGlvbkNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBDb2RlQmxvY2sgewogICAg
IHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY29kZUJs
b2NrU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2U7CiAgICAg
fQogCiAgICAgc3RhdGljIEZ1bmN0aW9uQ29kZUJsb2NrKiBjcmVhdGUoVk0qIHZtLCBDb3B5UGFy
c2VkQmxvY2tUYWcsIEZ1bmN0aW9uQ29kZUJsb2NrJiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCmluZGV4
IDIzNTU2Y2QxYzViOTgwMGRhZmZjNjIwOTZhY2ZjN2UzNjJjYjQ1ZGQuLjQ3OTc3NWI4ZDFmNzRl
MzY1ODgwMmE0NDY0YWQ2NDdiYjljYWQ2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2suaApAQCAtNDAsOSArNDAs
OSBAQCBjbGFzcyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIEdsb2JhbENv
ZGVCbG9jayB7CiAgICAgREVDTEFSRV9JTkZPOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1
YnNwYWNlQWNjZXNzPgotICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQorICAgIHN0YXRpYyBDb2RlQmxvY2tTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5jb2RlQmxvY2tTcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayogY3JlYXRlKFZNKiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrJiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJvZ3JhbUNvZGVCbG9jay5oCmluZGV4IGViNzk1ZmQzOGU3MDgwZTUyOTBjY2I0MDE5Y2Yx
ZmE3MTY5MWY0MTIuLjQ0MzlkZDQ1ZjNmZTk1MWU1Mzg4NzQzNWM5ODk1ZTk3YjBlNGYwMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2dyYW1Db2RlQmxvY2su
aApAQCAtNDAsOSArNDAsOSBAQCBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrIGZpbmFsIDogcHVibGlj
IEdsb2JhbENvZGVCbG9jayB7CiAgICAgREVDTEFSRV9JTkZPOwogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgotICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQorICAgIHN0YXRpYyBDb2RlQmxvY2tTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZS5zcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgUHJv
Z3JhbUNvZGVCbG9jayogY3JlYXRlKFZNKiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBQcm9ncmFt
Q29kZUJsb2NrJiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29tcGlsYXRpb25LZXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21w
aWxhdGlvbktleS5jcHAKaW5kZXggMjBhZDA4MmNjNGEwNTAzZWM5Njk0M2M0N2M5YjQ0MmFmODdm
ZjU1Zi4uYjk1MTVkYjA0ZTUzNjRlYTUwYjc1ZTE3ODkyZGY4NTMxYTE5YzlkYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21waWxhdGlvbktleS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21waWxhdGlvbktleS5jcHAKQEAgLTI5LDcg
KzI5LDYgQEAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgot
I2luY2x1ZGUgIkNvZGVCbG9ja1NldC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvZGVCbG9ja1NldC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5ZmNkODRm
NGFkOTdhYWUwYWFmM2YxOTNjODZlYTA2MTNmNmQ4YjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJs
b2NrU2V0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCi0KLSNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCi0jaW5jbHVk
ZSA8d3RmL0NvbW1hUHJpbnRlci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotQ29kZUJsb2NrU2V0
OjpDb2RlQmxvY2tTZXQoKQotewotfQotCi1Db2RlQmxvY2tTZXQ6On5Db2RlQmxvY2tTZXQoKQot
ewotfQotCi1ib29sIENvZGVCbG9ja1NldDo6Y29udGFpbnMoY29uc3QgQWJzdHJhY3RMb2NrZXIm
LCB2b2lkKiBjYW5kaWRhdGVDb2RlQmxvY2spCi17Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9sb2Nr
LmlzTG9ja2VkKCkpOwotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8Q29k
ZUJsb2NrKj4oY2FuZGlkYXRlQ29kZUJsb2NrKTsKLSAgICBpZiAoIUhhc2hTZXQ8Q29kZUJsb2Nr
Kj46OmlzVmFsaWRWYWx1ZShjb2RlQmxvY2spKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmV0dXJuIG1fY29kZUJsb2Nrcy5jb250YWlucyhjb2RlQmxvY2spOwotfQotCi12b2lkIENvZGVC
bG9ja1NldDo6Y2xlYXJDdXJyZW50bHlFeGVjdXRpbmcoKQotewotICAgIG1fY3VycmVudGx5RXhl
Y3V0aW5nLmNsZWFyKCk7Ci19Ci0KLXZvaWQgQ29kZUJsb2NrU2V0OjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0Ci17Ci0gICAgQ29tbWFQcmludGVyIGNvbW1hOwotICAgIG91dC5wcmludCgi
e2NvZGVCbG9ja3MgPSBbIik7Ci0gICAgZm9yIChDb2RlQmxvY2sqIGNvZGVCbG9jayA6IG1fY29k
ZUJsb2NrcykKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCBwb2ludGVyRHVtcChjb2RlQmxvY2sp
KTsKLSAgICBvdXQucHJpbnQoIl0sIGN1cnJlbnRseUV4ZWN1dGluZyA9IFsiKTsKLSAgICBjb21t
YSA9IENvbW1hUHJpbnRlcigpOwotICAgIGZvciAoQ29kZUJsb2NrKiBjb2RlQmxvY2sgOiBtX2N1
cnJlbnRseUV4ZWN1dGluZykKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCBwb2ludGVyRHVtcChj
b2RlQmxvY2spKTsKLSAgICBvdXQucHJpbnQoIl19Iik7Ci19Ci0KLXZvaWQgQ29kZUJsb2NrU2V0
OjphZGQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCi17Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX2xvY2spOwotICAgIGF1dG8gcmVzdWx0ID0gbV9jb2RlQmxvY2tzLmFkZChjb2RlQmxvY2sp
OwotICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7Ci19Ci0KLXZvaWQgQ29kZUJsb2NrU2V0Ojpy
ZW1vdmUoQ29kZUJsb2NrKiBjb2RlQmxvY2spCi17Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX2xvY2spOwotICAgIGJvb2wgcmVzdWx0ID0gbV9jb2RlQmxvY2tzLnJlbW92ZShjb2RlQmxv
Y2spOwotICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpT
QwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjNGM1ODI3NGZjZDBlYjc1MmJiNjE0ZjYwZjY4MDkzMWVkYzc5
Y2JiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCisrKyAvZGV2L251bGwKQEAgLTEs
ODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ29sbGVjdGlvblNjb3BlLmgiCi0jaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotCi1uYW1lc3Bh
Y2UgSlNDIHsKLQotY2xhc3MgQ29kZUJsb2NrOwotY2xhc3MgSGVhcDsKLWNsYXNzIEpTQ2VsbDsK
LWNsYXNzIFZNOwotCi0vLyBDb2RlQmxvY2tTZXQgdHJhY2tzIGFsbCBDb2RlQmxvY2tzLiBFdmVy
eSBDb2RlQmxvY2sgc3RhcnRzIG91dCB3aXRoIG9uZQotLy8gcmVmZXJlbmNlIGNvbWluZyBpbiBm
cm9tIEdDLiBUaGUgR0MgaXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgQ29kZUJsb2NrcwotLy8g
b25jZSB0aGV5IGhhc09uZVJlZigpIGFuZCBub2JvZHkgaXMgcnVubmluZyBjb2RlIGZyb20gdGhh
dCBDb2RlQmxvY2suCi0KLWNsYXNzIENvZGVCbG9ja1NldCB7Ci0gICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29kZUJsb2NrU2V0KTsKLXB1Ymxp
YzoKLSAgICBDb2RlQmxvY2tTZXQoKTsKLSAgICB+Q29kZUJsb2NrU2V0KCk7Ci0KLSAgICB2b2lk
IG1hcmsoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBDb2RlQmxvY2sqIGNhbmRpZGF0ZUNvZGVCbG9j
ayk7Ci0gICAgCi0gICAgdm9pZCBjbGVhckN1cnJlbnRseUV4ZWN1dGluZygpOwotCi0gICAgYm9v
bCBjb250YWlucyhjb25zdCBBYnN0cmFjdExvY2tlciYsIHZvaWQqIGNhbmRpZGF0ZUNvZGVCbG9j
ayk7Ci0gICAgTG9jayYgZ2V0TG9jaygpIHsgcmV0dXJuIG1fbG9jazsgfQotCi0gICAgLy8gVmlz
aXRzIGVhY2ggQ29kZUJsb2NrIGluIHRoZSBoZWFwIHVudGlsIHRoZSB2aXNpdG9yIGZ1bmN0aW9u
IHJldHVybnMgdHJ1ZQotICAgIC8vIHRvIGluZGljYXRlIHRoYXQgaXQgaXMgZG9uZSBpdGVyYXRp
bmcsIG9yIHVudGlsIGV2ZXJ5IENvZGVCbG9jayBoYXMgYmVlbgotICAgIC8vIHZpc2l0ZWQuCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRlKGNvbnN0IEZ1bmN0b3Im
KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGUoY29uc3QgQWJz
dHJhY3RMb2NrZXImLCBjb25zdCBGdW5jdG9yJik7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPiB2b2lkIGl0ZXJhdGVWaWFTdWJzcGFjZXMoVk0mLCBjb25zdCBGdW5jdG9yJik7Ci0g
ICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRlQ3VycmVudGx5
RXhlY3V0aW5nKGNvbnN0IEZ1bmN0b3ImKTsKLSAgICAKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKLSAgICAKLSAgICB2b2lkIGFkZChDb2RlQmxvY2sqKTsKLSAgICB2b2lkIHJl
bW92ZShDb2RlQmxvY2sqKTsKLQotcHJpdmF0ZToKLSAgICBIYXNoU2V0PENvZGVCbG9jayo+IG1f
Y29kZUJsb2NrczsKLSAgICBIYXNoU2V0PENvZGVCbG9jayo+IG1fY3VycmVudGx5RXhlY3V0aW5n
OwotICAgIExvY2sgbV9sb2NrOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDVkZGJmNDk0YWIyM2U4MDgwYjk5MzJhMGQyZjllM2NkZWNhZDUy
NzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCisrKyAvZGV2L251bGwK
QEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5j
bHVkZSAiQ29kZUJsb2NrU2V0LmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1pbmxpbmUgdm9pZCBD
b2RlQmxvY2tTZXQ6Om1hcmsoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaykKLXsKLSAgICBpZiAoIWNvZGVCbG9jaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9j
dXJyZW50bHlFeGVjdXRpbmcuYWRkKGNvZGVCbG9jayk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+Ci12b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0ZShjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQotewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKLSAgICBpdGVyYXRl
KGxvY2tlciwgZnVuY3Rvcik7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lk
IENvZGVCbG9ja1NldDo6aXRlcmF0ZShjb25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCi17Ci0gICAgZm9yIChDb2RlQmxvY2sqIGNvZGVCbG9jayA6IG1fY29kZUJs
b2NrcykKLSAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2spOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPgotdm9pZCBDb2RlQmxvY2tTZXQ6Oml0ZXJhdGVWaWFTdWJzcGFjZXMoVk0mIHZt
LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQotewotICAgIHZtLmZvckVhY2hDb2RlQmxvY2tTcGFj
ZSgKLSAgICAgICAgWyZdIChhdXRvJiBzcGFjZUFuZFNldCkgewotICAgICAgICAgICAgc3BhY2VB
bmRTZXQuc3BhY2UuZm9yRWFjaExpdmVDZWxsKAotICAgICAgICAgICAgICAgIFsmXSAoSGVhcENl
bGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZ1bmN0b3Io
anNDYXN0PENvZGVCbG9jayo+KHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpKSk7Ci0gICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
Pgotdm9pZCBDb2RlQmxvY2tTZXQ6Oml0ZXJhdGVDdXJyZW50bHlFeGVjdXRpbmcoY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV9sb2NrKTsKLSAgICBm
b3IgKENvZGVCbG9jayogY29kZUJsb2NrIDogbV9jdXJyZW50bHlFeGVjdXRpbmcpCi0gICAgICAg
IGZ1bmN0b3IoY29kZUJsb2NrKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAppbmRleCBhNDIw
ZmU4ZTYyNWM5OTNlZDU5NGQwYWNmNThhZWNiNzZjOGM5OTVlLi4zMTc3ZjliMDkzZTdhNTIxNTVk
ODJjNzg4ZTgxYzg2NTQzNDNjZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiQ29u
c2VydmF0aXZlUm9vdHMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkNv
ZGVCbG9ja1NldElubGluZXMuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2tTdWJzcGFjZUlubGluZXMu
aCIKICNpbmNsdWRlICJIZWFwSW5saW5lcy5oIgogI2luY2x1ZGUgIkhlYXBVdGlsLmgiCiAjaW5j
bHVkZSAiSklUU3R1YlJvdXRpbmVTZXQuaCIKQEAgLTExNywxMCArMTE3LDkgQEAgdm9pZCBDb25z
ZXJ2YXRpdmVSb290czo6YWRkKHZvaWQqIGJlZ2luLCB2b2lkKiBlbmQpCiAKIGNsYXNzIENvbXBv
c2l0ZU1hcmtIb29rIHsKIHB1YmxpYzoKLSAgICBDb21wb3NpdGVNYXJrSG9vayhKSVRTdHViUm91
dGluZVNldCYgc3R1YlJvdXRpbmVzLCBDb2RlQmxvY2tTZXQmIGNvZGVCbG9ja3MsIGNvbnN0IEFi
c3RyYWN0TG9ja2VyJiBsb2NrZXIpCisgICAgQ29tcG9zaXRlTWFya0hvb2soSklUU3R1YlJvdXRp
bmVTZXQmIHN0dWJSb3V0aW5lcywgQ29kZUJsb2NrU3Vic3BhY2UmIGNvZGVCbG9ja3MpCiAgICAg
ICAgIDogbV9zdHViUm91dGluZXMoc3R1YlJvdXRpbmVzKQogICAgICAgICAsIG1fY29kZUJsb2Nr
cyhjb2RlQmxvY2tzKQotICAgICAgICAsIG1fY29kZUJsb2Nrc0xvY2tlcihsb2NrZXIpCiAgICAg
ewogICAgIH0KICAgICAKQEAgLTEzMiwyMCArMTMxLDE4IEBAIGNsYXNzIENvbXBvc2l0ZU1hcmtI
b29rIHsKICAgICB2b2lkIG1hcmtLbm93bkpTQ2VsbChKU0NlbGwqIGNlbGwpCiAgICAgewogICAg
ICAgICBpZiAoY2VsbC0+dHlwZSgpID09IENvZGVCbG9ja1R5cGUpCi0gICAgICAgICAgICBtX2Nv
ZGVCbG9ja3MubWFyayhtX2NvZGVCbG9ja3NMb2NrZXIsIGpzQ2FzdDxDb2RlQmxvY2sqPihjZWxs
KSk7CisgICAgICAgICAgICBtX2NvZGVCbG9ja3MuYWRkKGpzQ2FzdDxDb2RlQmxvY2sqPihjZWxs
KSk7CiAgICAgfQogCiBwcml2YXRlOgogICAgIEpJVFN0dWJSb3V0aW5lU2V0JiBtX3N0dWJSb3V0
aW5lczsKLSAgICBDb2RlQmxvY2tTZXQmIG1fY29kZUJsb2NrczsKLSAgICBjb25zdCBBYnN0cmFj
dExvY2tlciYgbV9jb2RlQmxvY2tzTG9ja2VyOworICAgIENvZGVCbG9ja1N1YnNwYWNlJiBtX2Nv
ZGVCbG9ja3M7CiB9OwogCiB2b2lkIENvbnNlcnZhdGl2ZVJvb3RzOjphZGQoCi0gICAgdm9pZCog
YmVnaW4sIHZvaWQqIGVuZCwgSklUU3R1YlJvdXRpbmVTZXQmIGppdFN0dWJSb3V0aW5lcywgQ29k
ZUJsb2NrU2V0JiBjb2RlQmxvY2tzKQorICAgIHZvaWQqIGJlZ2luLCB2b2lkKiBlbmQsIEpJVFN0
dWJSb3V0aW5lU2V0JiBqaXRTdHViUm91dGluZXMsIENvZGVCbG9ja1N1YnNwYWNlJiBjb2RlQmxv
Y2tzKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKGNvZGVCbG9ja3MuZ2V0TG9jaygpKTsKLSAg
ICBDb21wb3NpdGVNYXJrSG9vayBtYXJrSG9vayhqaXRTdHViUm91dGluZXMsIGNvZGVCbG9ja3Ms
IGxvY2tlcik7CisgICAgQ29tcG9zaXRlTWFya0hvb2sgbWFya0hvb2soaml0U3R1YlJvdXRpbmVz
LCBjb2RlQmxvY2tzKTsKICAgICBnZW5lcmljQWRkU3BhbihiZWdpbiwgZW5kLCBtYXJrSG9vayk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2
ZVJvb3RzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5o
CmluZGV4IDNjMDY0YTliNzc3YjA2ZDA0OWY0ZmEwNzA0Mjc2NGY4OWY2YmRlNmEuLjZiYTIzMWE3
NDMwMGQ0Mzg5NDI0NjRkZThlZTBiN2ZjYzgxMGNjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotY2xhc3MgQ29kZUJsb2NrU2V0OworY2xhc3MgQ29kZUJsb2NrU3Vic3Bh
Y2U7CiBjbGFzcyBIZWFwQ2VsbDsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogCkBAIC0zOSw3
ICszOSw3IEBAIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzIHsKICAgICB+Q29uc2VydmF0aXZlUm9v
dHMoKTsKIAogICAgIHZvaWQgYWRkKHZvaWQqIGJlZ2luLCB2b2lkKiBlbmQpOwotICAgIHZvaWQg
YWRkKHZvaWQqIGJlZ2luLCB2b2lkKiBlbmQsIEpJVFN0dWJSb3V0aW5lU2V0JiwgQ29kZUJsb2Nr
U2V0Jik7CisgICAgdm9pZCBhZGQodm9pZCogYmVnaW4sIHZvaWQqIGVuZCwgSklUU3R1YlJvdXRp
bmVTZXQmLCBDb2RlQmxvY2tTdWJzcGFjZSYpOwogICAgIAogICAgIHNpemVfdCBzaXplKCkgY29u
c3Q7CiAgICAgSGVhcENlbGwqKiByb290cygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAppbmRleCA4ZDkyMzEzOTc3ZDMzMmJiZWJlM2RjZDdjZWJiZTYzMzZmYTYwNzNmLi4y
NmU5OWVkMjczNjk0YzMyMDY4MjUxNjhiZDZhNWU0NzhmY2Q1NTdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgIkJsb2NrRGlyZWN0
b3J5SW5saW5lcy5oIgogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkNvZGVCbG9ja1NldElubGluZXMuaCIKKyNpbmNsdWRl
ICJDb2RlQmxvY2tTdWJzcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJDb2xsZWN0aW5nU2NvcGUu
aCIKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVSb290cy5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0
SW5saW5lcy5oIgpAQCAtMjg1LDcgKzI4NSw2IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlw
ZSBoZWFwVHlwZSkKICAgICAsIG1fcmFjZU1hcmtTdGFjayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtT
dGFja0FycmF5PigpKQogICAgICwgbV9jb25zdHJhaW50U2V0KHN0ZDo6bWFrZV91bmlxdWU8TWFy
a2luZ0NvbnN0cmFpbnRTZXQ+KCp0aGlzKSkKICAgICAsIG1faGFuZGxlU2V0KHZtKQotICAgICwg
bV9jb2RlQmxvY2tzKHN0ZDo6bWFrZV91bmlxdWU8Q29kZUJsb2NrU2V0PigpKQogICAgICwgbV9q
aXRTdHViUm91dGluZXMoc3RkOjptYWtlX3VuaXF1ZTxKSVRTdHViUm91dGluZVNldD4oKSkKICAg
ICAsIG1fdm0odm0pCiAgICAgLy8gV2Ugc2VlZCB3aXRoIDEwbXMgc28gdGhhdCBHQ0FjdGl2aXR5
Q2FsbGJhY2s6OmRpZEFsbG9jYXRlIGRvZXNuJ3QgY29udGludW91c2x5IApAQCAtMzQ5LDEzICsz
NDgsMTMgQEAgdm9pZCBIZWFwOjpkdW1wSGVhcFN0YXRpc3RpY3NBdFZNRGVzdHJ1Y3Rpb24oKQog
ICAgIHVuc2lnbmVkIGNvdW50ZXIgPSAwOwogICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaEJsb2Nr
KFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKICAgICAgICAgdW5zaWduZWQgbGl2
ZSA9IDA7Ci0gICAgICAgIGJsb2NrLT5mb3JFYWNoQ2VsbChbJl0gKEhlYXBDZWxsKiBjZWxsLCBI
ZWFwQ2VsbDo6S2luZCkgeworICAgICAgICBibG9jay0+Zm9yRWFjaENlbGwoWyZdIChzaXplX3Qs
IEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgewogICAgICAgICAgICAgaWYgKGNlbGwt
PmlzTGl2ZSgpKQogICAgICAgICAgICAgICAgIGxpdmUrKzsKICAgICAgICAgICAgIHJldHVybiBJ
dGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9KTsKICAgICAgICAgZGF0YUxvZ0xu
KCJbIiwgY291bnRlcisrLCAiXSAiLCBibG9jay0+Y2VsbFNpemUoKSwgIiwgIiwgbGl2ZSwgIiAv
ICIsIGJsb2NrLT5jZWxsc1BlckJsb2NrKCksICIgIiwgc3RhdGljX2Nhc3Q8ZG91YmxlPihsaXZl
KSAvIGJsb2NrLT5jZWxsc1BlckJsb2NrKCkgKiAxMDAsICIlICIsIGJsb2NrLT5hdHRyaWJ1dGVz
KCksICIgIiwgYmxvY2stPnN1YnNwYWNlKCktPm5hbWUoKSk7Ci0gICAgICAgIGJsb2NrLT5mb3JF
YWNoQ2VsbChbJl0gKEhlYXBDZWxsKiBoZWFwQ2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkgewor
ICAgICAgICBibG9jay0+Zm9yRWFjaENlbGwoWyZdIChzaXplX3QsIEhlYXBDZWxsKiBoZWFwQ2Vs
bCwgSGVhcENlbGw6OktpbmQga2luZCkgewogICAgICAgICAgICAgaWYgKGhlYXBDZWxsLT5pc0xp
dmUoKSAmJiBraW5kID09IEhlYXBDZWxsOjpLaW5kOjpKU0NlbGwpIHsKICAgICAgICAgICAgICAg
ICBhdXRvKiBjZWxsID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oaGVhcENlbGwpOwogICAgICAgICAg
ICAgICAgIGlmIChjZWxsLT5pc09iamVjdCgpKQpAQCAtNTkwLDEwICs1ODksNyBAQCB2b2lkIEhl
YXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKQogICAgIHZtKCktPmJ1aWx0aW5F
eGVjdXRhYmxlcygpLT5maW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwogICAgIGlmICh2bSgpLT5t
X2luZmVycmVkVmFsdWVTcGFjZSkKICAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFs
RmluYWxpemVyczxJbmZlcnJlZFZhbHVlPih2bSgpLT5tX2luZmVycmVkVmFsdWVTcGFjZS0+c3Bh
Y2UpOwotICAgIHZtKCktPmZvckVhY2hDb2RlQmxvY2tTcGFjZSgKLSAgICAgICAgWyZdIChhdXRv
JiBzcGFjZSkgewotICAgICAgICAgICAgdGhpcy0+ZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFs
RmluYWxpemVyczxDb2RlQmxvY2s+KHNwYWNlLnNldCk7Ci0gICAgICAgIH0pOworICAgIGZpbmFs
aXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8Q29kZUJsb2NrPih2bSgpLT5jb2RlQmxv
Y2tTcGFjZSk7CiAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlPih2bSgpLT5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dp
dGhGaW5hbGl6ZXJzKTsKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PFN0cnVjdHVyZVJhcmVEYXRhPih2bSgpLT5zdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKTsKICAgICBp
ZiAodm0oKS0+bV93ZWFrU2V0U3BhY2UpCkBAIC02MzIsNyArNjI4LDcgQEAgdm9pZCBIZWFwOjpj
b21wbGV0ZUFsbEpJVFBsYW5zKCkKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiB2b2lkIEhlYXA6
Oml0ZXJhdGVFeGVjdXRpbmdBbmRDb21waWxpbmdDb2RlQmxvY2tzKGNvbnN0IEZ1bmMmIGZ1bmMp
CiB7Ci0gICAgbV9jb2RlQmxvY2tzLT5pdGVyYXRlQ3VycmVudGx5RXhlY3V0aW5nKGZ1bmMpOwor
ICAgIHZtKCktPmNvZGVCbG9ja1NwYWNlLml0ZXJhdGVDdXJyZW50bHlFeGVjdXRpbmdJbkdDKGZ1
bmMpOwogICAgIGlmIChWTTo6Y2FuVXNlSklUKCkpCiAgICAgICAgIERGRzo6aXRlcmF0ZUNvZGVC
bG9ja3NGb3JHQygqbV92bSwgZnVuYyk7CiB9CkBAIC02NzcsMTMgKzY3MywxMyBAQCB2b2lkIEhl
YXA6OmFzc2VydE1hcmtTdGFja3NFbXB0eSgpCiAKIHZvaWQgSGVhcDo6Z2F0aGVyU3RhY2tSb290
cyhDb25zZXJ2YXRpdmVSb290cyYgcm9vdHMpCiB7Ci0gICAgbV9tYWNoaW5lVGhyZWFkcy0+Z2F0
aGVyQ29uc2VydmF0aXZlUm9vdHMocm9vdHMsICptX2ppdFN0dWJSb3V0aW5lcywgKm1fY29kZUJs
b2NrcywgbV9jdXJyZW50VGhyZWFkU3RhdGUsIG1fY3VycmVudFRocmVhZCk7CisgICAgbV9tYWNo
aW5lVGhyZWFkcy0+Z2F0aGVyQ29uc2VydmF0aXZlUm9vdHMocm9vdHMsICptX2ppdFN0dWJSb3V0
aW5lcywgbV92bS0+Y29kZUJsb2NrU3BhY2UsIG1fY3VycmVudFRocmVhZFN0YXRlLCBtX2N1cnJl
bnRUaHJlYWQpOwogfQogCiB2b2lkIEhlYXA6OmdhdGhlckpTU3RhY2tSb290cyhDb25zZXJ2YXRp
dmVSb290cyYgcm9vdHMpCiB7CiAjaWYgRU5BQkxFKENfTE9PUCkKLSAgICBtX3ZtLT5pbnRlcnBy
ZXRlci0+Y2xvb3BTdGFjaygpLmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKHJvb3RzLCAqbV9qaXRT
dHViUm91dGluZXMsICptX2NvZGVCbG9ja3MpOworICAgIG1fdm0tPmludGVycHJldGVyLT5jbG9v
cFN0YWNrKCkuZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHMocm9vdHMsICptX2ppdFN0dWJSb3V0aW5l
cywgbV92bS0+Y29kZUJsb2NrU3BhY2UpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocm9vdHMp
OwogI2VuZGlmCkBAIC05NjIsNyArOTU4LDcgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxVbmxpbmtl
ZENvZGVCbG9ja3MoRGVsZXRlQWxsQ29kZUVmZm9ydCBlZmZvcnQpCiB2b2lkIEhlYXA6OmRlbGV0
ZVVubWFya2VkQ29tcGlsZWRDb2RlKCkKIHsKICAgICB2bSgpLT5mb3JFYWNoU2NyaXB0RXhlY3V0
YWJsZVNwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2VlcCgpOyB9KTsKLSAg
ICB2bSgpLT5mb3JFYWNoQ29kZUJsb2NrU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNlLnNw
YWNlLnN3ZWVwKCk7IH0pOyAvLyBTd2VlcGluZyBtdXN0IG9jY3VyIGJlZm9yZSBkZWxldGluZyBz
dHVicywgb3RoZXJ3aXNlIHRoZSBzdHVicyBtaWdodCBzdGlsbCB0aGluayB0aGV5J3JlIGFsaXZl
IGFzIHRoZXkgZ2V0IGRlbGV0ZWQuCisgICAgdm0oKS0+Y29kZUJsb2NrU3BhY2Uuc3dlZXAoKTsg
Ly8gU3dlZXBpbmcgbXVzdCBvY2N1ciBiZWZvcmUgZGVsZXRpbmcgc3R1YnMsIG90aGVyd2lzZSB0
aGUgc3R1YnMgbWlnaHQgc3RpbGwgdGhpbmsgdGhleSdyZSBhbGl2ZSBhcyB0aGV5IGdldCBkZWxl
dGVkLgogICAgIG1faml0U3R1YlJvdXRpbmVzLT5kZWxldGVVbm1hcmtlZEpldHRpc29uZWRTdHVi
Um91dGluZXMoKTsKIH0KIApAQCAtMTUwNSwxMSArMTUwMSwxMSBAQCBORVZFUl9JTkxJTkUgYm9v
bCBIZWFwOjpydW5FbmRQaGFzZShHQ0NvbmR1Y3RvciBjb25uKQogICAgIHJlbW92ZURlYWRDb21w
aWxlcldvcmtsaXN0RW50cmllcygpOwogICAgIG5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpOwog
ICAgIAotICAgIG1fY29kZUJsb2Nrcy0+aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZygKKyAgICB2
bSgpLT5jb2RlQmxvY2tTcGFjZS5pdGVyYXRlQ3VycmVudGx5RXhlY3V0aW5nSW5HQygKICAgICAg
ICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaykgewogICAgICAgICAgICAgd3JpdGVCYXJyaWVy
KGNvZGVCbG9jayk7CisgICAgICAgICAgICB2bSgpLT5jb2RlQmxvY2tTcGFjZS5yZW1vdmUoY29k
ZUJsb2NrKTsKICAgICAgICAgfSk7Ci0gICAgbV9jb2RlQmxvY2tzLT5jbGVhckN1cnJlbnRseUV4
ZWN1dGluZygpOwogICAgICAgICAKICAgICBtX29iamVjdFNwYWNlLnByZXBhcmVGb3JBbGxvY2F0
aW9uKCk7CiAgICAgdXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpOwpAQCAtMjUyNSwxMiArMjUyMSwx
MiBAQCB2b2lkIEhlYXA6OmZvckVhY2hDb2RlQmxvY2tJbXBsKGNvbnN0IFNjb3BlZExhbWJkYTx2
b2lkKENvZGVCbG9jayopPiYgZnVuYykKICAgICAvLyBXZSBkb24ndCBrbm93IHRoZSBmdWxsIHNl
dCBvZiBDb2RlQmxvY2tzIHVudGlsIGNvbXBpbGF0aW9uIGhhcyB0ZXJtaW5hdGVkLgogICAgIGNv
bXBsZXRlQWxsSklUUGxhbnMoKTsKIAotICAgIHJldHVybiBtX2NvZGVCbG9ja3MtPml0ZXJhdGUo
ZnVuYyk7CisgICAgcmV0dXJuIHZtKCktPmNvZGVCbG9ja1NwYWNlLml0ZXJhdGUoZnVuYyk7CiB9
CiAKIHZvaWQgSGVhcDo6Zm9yRWFjaENvZGVCbG9ja0lnbm9yaW5nSklUUGxhbnNJbXBsKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKENvZGVCbG9j
ayopPiYgZnVuYykKIHsKLSAgICByZXR1cm4gbV9jb2RlQmxvY2tzLT5pdGVyYXRlKGxvY2tlciwg
ZnVuYyk7CisgICAgcmV0dXJuIHZtKCktPmNvZGVCbG9ja1NwYWNlLml0ZXJhdGUobG9ja2VyLCBm
dW5jKTsKIH0KIAogdm9pZCBIZWFwOjp3cml0ZUJhcnJpZXJTbG93UGF0aChjb25zdCBKU0NlbGwq
IGZyb20pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKaW5kZXggMzhmNTMyMWFkOWQ3N2MzODVi
NWViMmY5Y2E5NTEyODc5ODMwYTdhNi4uZWU0NTRkOGRmYmMxMjM1MGVkMjZhODM3ZjlmYjcxMzM4
NzBmN2QzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtNTEsNyArNTEsNyBAQAog
bmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9jazsKLWNsYXNzIENvZGVCbG9ja1NldDsK
K2NsYXNzIENvZGVCbG9ja1N1YnNwYWNlOwogY2xhc3MgQ29sbGVjdGluZ1Njb3BlOwogY2xhc3Mg
Q29uc2VydmF0aXZlUm9vdHM7CiBjbGFzcyBHQ0RlZmVycmFsQ29udGV4dDsKQEAgLTI3NCw4ICsy
NzQsNiBAQCBjbGFzcyBIZWFwIHsKIAogICAgIFN0cnVjdHVyZUlEVGFibGUmIHN0cnVjdHVyZUlE
VGFibGUoKSB7IHJldHVybiBtX3N0cnVjdHVyZUlEVGFibGU7IH0KIAotICAgIENvZGVCbG9ja1Nl
dCYgY29kZUJsb2NrU2V0KCkgeyByZXR1cm4gKm1fY29kZUJsb2NrczsgfQotCiAjaWYgVVNFKEZP
VU5EQVRJT04pCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCByZWxlYXNlU29vbihSZXRh
aW5QdHI8VD4mJik7CiAjZW5kaWYKQEAgLTYzMiw3ICs2MzAsNiBAQCBjbGFzcyBIZWFwIHsKICAg
ICBWZWN0b3I8U2xvdFZpc2l0b3IqPiBtX2F2YWlsYWJsZVBhcmFsbGVsU2xvdFZpc2l0b3JzOwog
ICAgIAogICAgIEhhbmRsZVNldCBtX2hhbmRsZVNldDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29k
ZUJsb2NrU2V0PiBtX2NvZGVCbG9ja3M7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEpJVFN0dWJSb3V0
aW5lU2V0PiBtX2ppdFN0dWJSb3V0aW5lczsKICAgICBGaW5hbGl6ZXJPd25lciBtX2ZpbmFsaXpl
ck93bmVyOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
Q2VsbFNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcApp
bmRleCBiOGU0MzAxOTFlNmIxZGMyOWFhNWMwZjEwY2RkNmU5YmIxOThmZGE5Li43OTEwM2UxNjdk
ZWRkNGZkZjFhMGU0M2Q1YzdmMjYwZTdkZGIzNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29DZWxsU2V0LmNwcApAQCAtODEsOSArODEsOCBAQCBSZWY8U2hhcmVkVGFzazxNYXJr
ZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJs
b2NrUwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRhc2soKnRoaXMpKTsKIH0KIAotTkVWRVJf
SU5MSU5FIEJpdG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4qIElzb0NlbGxTZXQ6OmFk
ZFNsb3coc2l6ZV90IGJsb2NrSW5kZXgpCitORVZFUl9JTkxJTkUgQml0bWFwPE1hcmtlZEJsb2Nr
OjphdG9tc1BlckJsb2NrPiogSXNvQ2VsbFNldDo6YWRkU2xvdyhjb25zdCBBYnN0cmFjdExvY2tl
ciYsIHNpemVfdCBibG9ja0luZGV4KQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9z
dWJzcGFjZS5tX2RpcmVjdG9yeS5tX2JpdHZlY3RvckxvY2spOwogICAgIGF1dG8mIGJpdHNQdHJS
ZWYgPSBtX2JpdHNbYmxvY2tJbmRleF07CiAgICAgYXV0byogYml0cyA9IGJpdHNQdHJSZWYuZ2V0
KCk7CiAgICAgaWYgKCFiaXRzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29DZWxsU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0
LmgKaW5kZXggZGFkYTY3MmM0OTFkYzAzODFmNThmYTFhNjcyYjZjNmMwYjdlMmU1OC4uY2QxMGQ4
MzVmNjQyNDRjMGFmZWE1ZWI3MGQ1YjM4M2U0NTQ4N2E3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0lzb0NlbGxTZXQuaApAQCAtMzksMTcgKzM5LDIyIEBAIGNsYXNzIElzb1N1YnNwYWNl
OwogCiAvLyBDcmVhdGUgYSBzZXQgb2YgY2VsbHMgdGhhdCBhcmUgaW4gYW4gSXNvU3Vic3BhY2Uu
IFRoaXMgYWxsb3dzIGNvbmN1cnJlbnQgTygxKSBzZXQgaW5zZXJ0aW9uIGFuZAogLy8gcmVtb3Zh
bC4gRWFjaCBzdWNoIHNldCBzaG91bGQgYmUgdGhvdWdodCBvZiBhcyBhIDAuOCUgaW5jcmVhc2Ug
aW4gb2JqZWN0IHNpemUgZm9yIG9iamVjdHMgaW4gdGhhdAotLy8gSXNvU3Vic3BhY2UgKGl0J3Mg
bGlrZSBhZGRpbmcgMSBiaXQgZXZlcnkgMTYgYnl0ZXMsIG9yIDEgYml0IGV2ZXJ5IDEyOCBiaXRz
KS4KKy8vIElzb1N1YnNwYWNlIChpdCdzIGxpa2UgYWRkaW5nIDEgYml0IGV2ZXJ5IDE2IGJ5dGVz
LCBvciAxIGJ5dGUgZXZlcnkgMTI4IGJpdHMpLgogY2xhc3MgSXNvQ2VsbFNldCA6IHB1YmxpYyBC
YXNpY1Jhd1NlbnRpbmVsTm9kZTxJc29DZWxsU2V0PiB7CiBwdWJsaWM6CiAgICAgSXNvQ2VsbFNl
dChJc29TdWJzcGFjZSYgc3Vic3BhY2UpOwogICAgIH5Jc29DZWxsU2V0KCk7CiAgICAgCi0gICAg
Ym9vbCBhZGQoSGVhcENlbGwqIGNlbGwpOyAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNlbGwgd2Fz
IG5ld2x5IGFkZGVkLgorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY2VsbCB3YXMgbmV3bHkg
YWRkZWQuCisgICAgYm9vbCBhZGQoSGVhcENlbGwqIGNlbGwpOworICAgIGJvb2wgYWRkKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiwgSGVhcENlbGwqIGNlbGwpOwogICAgIAotICAgIGJvb2wgcmVtb3Zl
KEhlYXBDZWxsKiBjZWxsKTsgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjZWxsIHdhcyBwcmV2aW91
c2x5IHByZXNlbnQgYW5kIGdvdCByZW1vdmVkLgorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUg
Y2VsbCB3YXMgcHJldmlvdXNseSBwcmVzZW50IGFuZCBnb3QgcmVtb3ZlZC4KKyAgICBib29sIHJl
bW92ZShIZWFwQ2VsbCogY2VsbCk7CisgICAgYm9vbCByZW1vdmUoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImLCBIZWFwQ2VsbCogY2VsbCk7CiAgICAgCiAgICAgYm9vbCBjb250YWlucyhIZWFwQ2VsbCog
Y2VsbCkgY29uc3Q7CisgICAgYm9vbCBjb250YWluc0NvbnNlcnZhdGl2ZSh2b2lkKiBwb2ludGVy
KSBjb25zdDsKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWY8U2hhcmVkVGFzazxNYXJr
ZWRCbG9jazo6SGFuZGxlKigpPj4gcGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCk7
CiAgICAgCkBAIC02MywxMSArNjgsMTQgQEAgY2xhc3MgSXNvQ2VsbFNldCA6IHB1YmxpYyBCYXNp
Y1Jhd1NlbnRpbmVsTm9kZTxJc29DZWxsU2V0PiB7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuYz4KICAgICB2b2lkIGZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jJik7CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFjaENlbGwoY29uc3QgRnVuYyYp
OwogICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSXNvU3Vic3BhY2U7CiAgICAgCi0g
ICAgQml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJsb2NrPiogYWRkU2xvdyhzaXplX3QgYmxv
Y2tJbmRleCk7CisgICAgQml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJsb2NrPiogYWRkU2xv
dyhjb25zdCBBYnN0cmFjdExvY2tlciYsIHNpemVfdCBibG9ja0luZGV4KTsKICAgICAKICAgICB2
b2lkIGRpZFJlc2l6ZUJpdHMoc2l6ZV90IG5ld1NpemUpOwogICAgIHZvaWQgZGlkUmVtb3ZlQmxv
Y2soc2l6ZV90IGJsb2NrSW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvQ2VsbFNldElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b0NlbGxTZXRJbmxpbmVzLmgKaW5kZXggY2U3ZGU4ZTE5MGVhOGU1M2Y5MzM2NGM3Y2YxZmNlNWVk
MzRhNmY3NC4uYTkwYjYzMzZkN2YyZjM3YmZjMmFiYjVjZTAxMTljN2Q0ZDE0YjljYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCkBAIC0zNyw3
ICszNywxNyBAQCBpbmxpbmUgYm9vbCBJc29DZWxsU2V0OjphZGQoSGVhcENlbGwqIGNlbGwpCiAg
ICAgYXV0byYgYml0c1B0clJlZiA9IG1fYml0c1thdG9tSW5kaWNlcy5ibG9ja0luZGV4XTsKICAg
ICBhdXRvKiBiaXRzID0gYml0c1B0clJlZi5nZXQoKTsKICAgICBpZiAoVU5MSUtFTFkoIWJpdHMp
KQotICAgICAgICBiaXRzID0gYWRkU2xvdyhhdG9tSW5kaWNlcy5ibG9ja0luZGV4KTsKKyAgICAg
ICAgYml0cyA9IGFkZFNsb3coaG9sZExvY2sobV9zdWJzcGFjZS5tX2RpcmVjdG9yeS5tX2JpdHZl
Y3RvckxvY2spLCBhdG9tSW5kaWNlcy5ibG9ja0luZGV4KTsKKyAgICByZXR1cm4gIWJpdHMtPmNv
bmN1cnJlbnRUZXN0QW5kU2V0KGF0b21JbmRpY2VzLmF0b21OdW1iZXIpOworfQorCitpbmxpbmUg
Ym9vbCBJc29DZWxsU2V0OjphZGQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgSGVhcENl
bGwqIGNlbGwpCit7CisgICAgQXRvbUluZGljZXMgYXRvbUluZGljZXMoY2VsbCk7CisgICAgYXV0
byYgYml0c1B0clJlZiA9IG1fYml0c1thdG9tSW5kaWNlcy5ibG9ja0luZGV4XTsKKyAgICBhdXRv
KiBiaXRzID0gYml0c1B0clJlZi5nZXQoKTsKKyAgICBpZiAoVU5MSUtFTFkoIWJpdHMpKQorICAg
ICAgICBiaXRzID0gYWRkU2xvdyhsb2NrZXIsIGF0b21JbmRpY2VzLmJsb2NrSW5kZXgpOwogICAg
IHJldHVybiAhYml0cy0+Y29uY3VycmVudFRlc3RBbmRTZXQoYXRvbUluZGljZXMuYXRvbU51bWJl
cik7CiB9CiAKQEAgLTUxLDYgKzYxLDExIEBAIGlubGluZSBib29sIElzb0NlbGxTZXQ6OnJlbW92
ZShIZWFwQ2VsbCogY2VsbCkKICAgICByZXR1cm4gYml0cy0+Y29uY3VycmVudFRlc3RBbmRDbGVh
cihhdG9tSW5kaWNlcy5hdG9tTnVtYmVyKTsKIH0KIAoraW5saW5lIGJvb2wgSXNvQ2VsbFNldDo6
cmVtb3ZlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgSGVhcENlbGwqIGNlbGwpCit7CisgICAgcmV0
dXJuIHJlbW92ZShjZWxsKTsKK30KKwogaW5saW5lIGJvb2wgSXNvQ2VsbFNldDo6Y29udGFpbnMo
SGVhcENlbGwqIGNlbGwpIGNvbnN0CiB7CiAgICAgQXRvbUluZGljZXMgYXRvbUluZGljZXMoY2Vs
bCk7CkBAIC02MCw2ICs3NSwyNCBAQCBpbmxpbmUgYm9vbCBJc29DZWxsU2V0Ojpjb250YWlucyhI
ZWFwQ2VsbCogY2VsbCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2lubGluZSBib29s
IElzb0NlbGxTZXQ6OmNvbnRhaW5zQ29uc2VydmF0aXZlKHZvaWQqIHBvaW50ZXIpIGNvbnN0Cit7
CisgICAgQmxvY2tEaXJlY3RvcnkmIGRpcmVjdG9yeSA9IG1fc3Vic3BhY2UubV9kaXJlY3Rvcnk7
CisgICAgZm9yIChzaXplX3QgYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBtX2Jsb2Nrc1dp
dGhCaXRzLnNpemUoKTsgKytibG9ja0luZGV4KSB7CisgICAgICAgIGlmIChtX2Jsb2Nrc1dpdGhC
aXRzW2Jsb2NrSW5kZXhdKSB7CisgICAgICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
ayA9IGRpcmVjdG9yeS5tX2Jsb2Nrc1tibG9ja0luZGV4XTsKKyAgICAgICAgICAgIGlmIChNYXJr
ZWRCbG9jazo6YmxvY2tGb3IocG9pbnRlcikgPT0gJmJsb2NrLT5ibG9jaygpKSB7CisgICAgICAg
ICAgICAgICAgQXRvbUluZGljZXMgYXRvbUluZGljZXMoc3RhdGljX2Nhc3Q8SGVhcENlbGwqPihw
b2ludGVyKSk7CisgICAgICAgICAgICAgICAgYXV0byogYml0cyA9IG1fYml0c1thdG9tSW5kaWNl
cy5ibG9ja0luZGV4XS5nZXQoKTsKKyAgICAgICAgICAgICAgICBpZiAoYml0cykKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGJpdHMtPmdldChhdG9tSW5kaWNlcy5hdG9tTnVtYmVyKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogdm9p
ZCBJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbChjb25zdCBGdW5jJiBmdW5jKQogewpAQCAt
MTIyLDEwICsxNTUsMjYgQEAgdm9pZCBJc29DZWxsU2V0Ojpmb3JFYWNoTGl2ZUNlbGwoY29uc3Qg
RnVuYyYgZnVuYykKICAgICAgICAgWyZdIChzaXplX3QgYmxvY2tJbmRleCkgewogICAgICAgICAg
ICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBkaXJlY3RvcnkubV9ibG9ja3NbYmxvY2tJ
bmRleF07CiAKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGJ5
IGNoZWNraW5nIG91ciBiaXRzIGJlZm9yZSBxdWVyeWluZyBpc0xpdmUuCi0gICAgICAgICAgICAv
LyBPT1BTISAobmVlZCBidWcgVVJMKQogICAgICAgICAgICAgYXV0byogYml0cyA9IG1fYml0c1ti
bG9ja0luZGV4XS5nZXQoKTsKLSAgICAgICAgICAgIGJsb2NrLT5mb3JFYWNoTGl2ZUNlbGwoCisg
ICAgICAgICAgICBibG9jay0+Zm9yRWFjaENlbGwoCisgICAgICAgICAgICAgICAgWyZdIChzaXpl
X3QgYXRvbU51bWJlciwgSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kIGtpbmQpIC0+IEl0
ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICAgICAgICAgIGlmIChiaXRzLT5nZXQoYXRvbU51
bWJlcikgJiYgYmxvY2stPmlzTGl2ZShjZWxsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1
bmMoY2VsbCwga2luZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0
dXM6OkNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgRnVuYz4KK3ZvaWQgSXNvQ2VsbFNldDo6Zm9yRWFjaENlbGwoY29uc3Qg
RnVuYyYgZnVuYykKK3sKKyAgICBCbG9ja0RpcmVjdG9yeSYgZGlyZWN0b3J5ID0gbV9zdWJzcGFj
ZS5tX2RpcmVjdG9yeTsKKyAgICBtX2Jsb2Nrc1dpdGhCaXRzLmZvckVhY2hTZXRCaXQoCisgICAg
ICAgIFsmXSAoc2l6ZV90IGJsb2NrSW5kZXgpIHsKKyAgICAgICAgICAgIE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrID0gZGlyZWN0b3J5Lm1fYmxvY2tzW2Jsb2NrSW5kZXhdOworCisgICAgICAg
ICAgICBhdXRvKiBiaXRzID0gbV9iaXRzW2Jsb2NrSW5kZXhdLmdldCgpOworICAgICAgICAgICAg
YmxvY2stPmZvckVhY2hDZWxsKAogICAgICAgICAgICAgICAgIFsmXSAoc2l6ZV90IGF0b21OdW1i
ZXIsIEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5kKSAtPiBJdGVyYXRpb25TdGF0
dXMgewogICAgICAgICAgICAgICAgICAgICBpZiAoYml0cy0+Z2V0KGF0b21OdW1iZXIpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgZnVuYyhjZWxsLCBraW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29TdWJzcGFjZS5oCmluZGV4IGVmZDVjZDM4MjhlYmFlNGZmNGVlNjA5ZDIxMjI0
MjQzYjhiNGMzYjguLmI3NWQ2MmFjNDdmNTIxZjQ2OTlkODExYWY0OGMzNzZiNmVhNmJiY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuaApAQCAtNDcsNyArNDcsNyBA
QCBjbGFzcyBJc29TdWJzcGFjZSA6IHB1YmxpYyBTdWJzcGFjZSB7CiAgICAgdm9pZCogYWxsb2Nh
dGUoVk0mLCBzaXplX3QsIEdDRGVmZXJyYWxDb250ZXh0KiwgQWxsb2NhdGlvbkZhaWx1cmVNb2Rl
KSBvdmVycmlkZTsKICAgICB2b2lkKiBhbGxvY2F0ZU5vblZpcnR1YWwoVk0mLCBzaXplX3QsIEdD
RGVmZXJyYWxDb250ZXh0KiwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlKTsKIAotcHJpdmF0ZToKK3By
b3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgSXNvQ2VsbFNldDsKICAgICAKICAgICB2b2lkIGRp
ZFJlc2l6ZUJpdHMoc2l6ZV90IG5ld1NpemUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKaW5kZXggYWIxOWMwZTk4OTkz
NzEwM2NhNDFmMzllODdlMzBmY2E2MzVmZWU3MS4uNzc1YTI3ZWYwZTAzMzgwMGE2NWE0ZTc2OTU2
YTdhMjc4ZmU2MGFmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFj
aGluZVN0YWNrTWFya2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNo
aW5lU3RhY2tNYXJrZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIE1hY2hpbmVUaHJlYWRzOjpNYWNo
aW5lVGhyZWFkcygpCiB9CiAKIFNVUFBSRVNTX0FTQU4KLXZvaWQgTWFjaGluZVRocmVhZHM6Omdh
dGhlckZyb21DdXJyZW50VGhyZWFkKENvbnNlcnZhdGl2ZVJvb3RzJiBjb25zZXJ2YXRpdmVSb290
cywgSklUU3R1YlJvdXRpbmVTZXQmIGppdFN0dWJSb3V0aW5lcywgQ29kZUJsb2NrU2V0JiBjb2Rl
QmxvY2tzLCBDdXJyZW50VGhyZWFkU3RhdGUmIGN1cnJlbnRUaHJlYWRTdGF0ZSkKK3ZvaWQgTWFj
aGluZVRocmVhZHM6OmdhdGhlckZyb21DdXJyZW50VGhyZWFkKENvbnNlcnZhdGl2ZVJvb3RzJiBj
b25zZXJ2YXRpdmVSb290cywgSklUU3R1YlJvdXRpbmVTZXQmIGppdFN0dWJSb3V0aW5lcywgQ29k
ZUJsb2NrU3Vic3BhY2UmIGNvZGVCbG9ja3MsIEN1cnJlbnRUaHJlYWRTdGF0ZSYgY3VycmVudFRo
cmVhZFN0YXRlKQogewogICAgIGlmIChjdXJyZW50VGhyZWFkU3RhdGUucmVnaXN0ZXJTdGF0ZSkg
ewogICAgICAgICB2b2lkKiByZWdpc3RlcnNCZWdpbiA9IGN1cnJlbnRUaHJlYWRTdGF0ZS5yZWdp
c3RlclN0YXRlOwpAQCAtMTk4LDcgKzE5OCw3IEBAIHN0YXRpYyB2b2lkIGdyb3dCdWZmZXIoc2l6
ZV90IHNpemUsIHZvaWQqKiBidWZmZXIsIHNpemVfdCogY2FwYWNpdHkpCiAgICAgKmJ1ZmZlciA9
IGZhc3RNYWxsb2MoKmNhcGFjaXR5KTsKIH0KIAotdm9pZCBNYWNoaW5lVGhyZWFkczo6Z2F0aGVy
Q29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmIGNvbnNlcnZhdGl2ZVJvb3RzLCBK
SVRTdHViUm91dGluZVNldCYgaml0U3R1YlJvdXRpbmVzLCBDb2RlQmxvY2tTZXQmIGNvZGVCbG9j
a3MsIEN1cnJlbnRUaHJlYWRTdGF0ZSogY3VycmVudFRocmVhZFN0YXRlLCBUaHJlYWQqIGN1cnJl
bnRUaHJlYWQpCit2b2lkIE1hY2hpbmVUaHJlYWRzOjpnYXRoZXJDb25zZXJ2YXRpdmVSb290cyhD
b25zZXJ2YXRpdmVSb290cyYgY29uc2VydmF0aXZlUm9vdHMsIEpJVFN0dWJSb3V0aW5lU2V0JiBq
aXRTdHViUm91dGluZXMsIENvZGVCbG9ja1N1YnNwYWNlJiBjb2RlQmxvY2tzLCBDdXJyZW50VGhy
ZWFkU3RhdGUqIGN1cnJlbnRUaHJlYWRTdGF0ZSwgVGhyZWFkKiBjdXJyZW50VGhyZWFkKQogewog
ICAgIGlmIChjdXJyZW50VGhyZWFkU3RhdGUpCiAgICAgICAgIGdhdGhlckZyb21DdXJyZW50VGhy
ZWFkKGNvbnNlcnZhdGl2ZVJvb3RzLCBqaXRTdHViUm91dGluZXMsIGNvZGVCbG9ja3MsICpjdXJy
ZW50VGhyZWFkU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFjaGluZVN0YWNrTWFya2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5l
U3RhY2tNYXJrZXIuaAppbmRleCBlMjllZTQwMDRkYjRiYWFiMDJhOWFmOGFiMDBjOGEwYzJiYzRl
MGU5Li4yMmZjMDU0OWYwY2E5MjM3ZDliMzc1MmQxNjJlM2I3MjhlZTI2ZmY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaApAQCAtMjgsNyAr
MjgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgQ29kZUJsb2NrU2V0OworY2xhc3Mg
Q29kZUJsb2NrU3Vic3BhY2U7CiBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKIGNsYXNzIEhlYXA7
CiBjbGFzcyBKSVRTdHViUm91dGluZVNldDsKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgTWFjaGlu
ZVRocmVhZHMgewogcHVibGljOgogICAgIE1hY2hpbmVUaHJlYWRzKCk7CiAKLSAgICB2b2lkIGdh
dGhlckNvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZhdGl2ZVJvb3RzJiwgSklUU3R1YlJvdXRpbmVT
ZXQmLCBDb2RlQmxvY2tTZXQmLCBDdXJyZW50VGhyZWFkU3RhdGUqLCBUaHJlYWQqKTsKKyAgICB2
b2lkIGdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZhdGl2ZVJvb3RzJiwgSklUU3R1YlJv
dXRpbmVTZXQmLCBDb2RlQmxvY2tTdWJzcGFjZSYsIEN1cnJlbnRUaHJlYWRTdGF0ZSosIFRocmVh
ZCopOwogCiAgICAgLy8gT25seSBuZWVkcyB0byBiZSBjYWxsZWQgYnkgY2xpZW50cyB0aGF0IGNh
biB1c2UgdGhlIHNhbWUgaGVhcCBmcm9tIG11bHRpcGxlIHRocmVhZHMuCiAgICAgYm9vbCBhZGRD
dXJyZW50VGhyZWFkKCkgeyByZXR1cm4gbV90aHJlYWRHcm91cC0+YWRkQ3VycmVudFRocmVhZCgp
ID09IFRocmVhZEdyb3VwQWRkUmVzdWx0OjpOZXdseUFkZGVkOyB9CkBAIC01NCw3ICs1NCw3IEBA
IGNsYXNzIE1hY2hpbmVUaHJlYWRzIHsKICAgICBjb25zdCBMaXN0SGFzaFNldDxSZWY8VGhyZWFk
Pj4mIHRocmVhZHMoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlcikgY29uc3QgeyByZXR1cm4g
bV90aHJlYWRHcm91cC0+dGhyZWFkcyhsb2NrZXIpOyB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBn
YXRoZXJGcm9tQ3VycmVudFRocmVhZChDb25zZXJ2YXRpdmVSb290cyYsIEpJVFN0dWJSb3V0aW5l
U2V0JiwgQ29kZUJsb2NrU2V0JiwgQ3VycmVudFRocmVhZFN0YXRlJik7CisgICAgdm9pZCBnYXRo
ZXJGcm9tQ3VycmVudFRocmVhZChDb25zZXJ2YXRpdmVSb290cyYsIEpJVFN0dWJSb3V0aW5lU2V0
JiwgQ29kZUJsb2NrU3Vic3BhY2UmLCBDdXJyZW50VGhyZWFkU3RhdGUmKTsKIAogICAgIHZvaWQg
dHJ5Q29weU90aGVyVGhyZWFkU3RhY2soVGhyZWFkJiwgdm9pZCosIHNpemVfdCBjYXBhY2l0eSwg
c2l6ZV90Kik7CiAgICAgYm9vbCB0cnlDb3B5T3RoZXJUaHJlYWRTdGFja3MoY29uc3QgQWJzdHJh
Y3RMb2NrZXImLCB2b2lkKiwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QqLCBUaHJlYWQmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAppbmRleCA0OTU0MzQ4NzM4
YTc4OWQyMzdiZTcxODI5MzQwNzhjMTc1MTg5MDUzLi5jYTBmZWExYWIzOTYwNWM1YTJiODFmMzg5
YWRjNDhmMDJiMzJhMjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2suY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9w
QWxsb2NhdGluZyhjb25zdCBGcmVlTGlzdCYgZnJlZUxpc3QpCiAgICAgYmxvY2tGb290ZXIoKS5t
X25ld2x5QWxsb2NhdGVkVmVyc2lvbiA9IGhlYXAoKS0+b2JqZWN0U3BhY2UoKS5uZXdseUFsbG9j
YXRlZFZlcnNpb24oKTsKIAogICAgIGZvckVhY2hDZWxsKAotICAgICAgICBbJl0gKEhlYXBDZWxs
KiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAgWyZd
IChzaXplX3QsIEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgLT4gSXRlcmF0aW9uU3Rh
dHVzIHsKICAgICAgICAgICAgIGJsb2NrKCkuc2V0TmV3bHlBbGxvY2F0ZWQoY2VsbCk7CiAgICAg
ICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAppbmRleCA0MzkyOTMyYWVjNzBm
Y2YyMjA4NDhhZmU2NTdlODBmNTRiNTc5OWExLi41NzAyMDBkMTEzNTRkZjI2NDc1MzRiNDcxMWI5
ZWUzMTg5OGU3YmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgK
QEAgLTYzNiw3ICs2MzYsNyBAQCBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OmZvckVhY2hDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgSGVhcENlbGw6
OktpbmQga2luZCA9IG1fYXR0cmlidXRlcy5jZWxsS2luZDsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewogICAgICAgICBIZWFwQ2Vs
bCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJm1fYmxvY2stPmF0b21z
KClbaV0pOwotICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0
dXM6OkRvbmUpCisgICAgICAgIGlmIChmdW5jdG9yKGksIGNlbGwsIGtpbmQpID09IEl0ZXJhdGlv
blN0YXR1czo6RG9uZSkKICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7
CiAgICAgfQogICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NMb29wU3RhY2suY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NMb29wU3RhY2suY3BwCmluZGV4IDUyY2M3
NGExNmVkODM4YmJlOGE4OTVhYzFlNDgxNmFjMTkwMjU4YzMuLmUyYzlkMmJkMGM0NGVmYTM3MGUw
OTBlNDQxMmM2YWRkZTZkMzE0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9DTG9vcFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvQ0xvb3BTdGFjay5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIENMb29wU3Rh
Y2s6Omdyb3coUmVnaXN0ZXIqIG5ld1RvcE9mU3RhY2spCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgQ0xvb3BTdGFjazo6Z2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9v
dHMmIGNvbnNlcnZhdGl2ZVJvb3RzLCBKSVRTdHViUm91dGluZVNldCYgaml0U3R1YlJvdXRpbmVz
LCBDb2RlQmxvY2tTZXQmIGNvZGVCbG9ja3MpCit2b2lkIENMb29wU3RhY2s6OmdhdGhlckNvbnNl
cnZhdGl2ZVJvb3RzKENvbnNlcnZhdGl2ZVJvb3RzJiBjb25zZXJ2YXRpdmVSb290cywgSklUU3R1
YlJvdXRpbmVTZXQmIGppdFN0dWJSb3V0aW5lcywgQ29kZUJsb2NrU3Vic3BhY2UmIGNvZGVCbG9j
a3MpCiB7CiAgICAgY29uc2VydmF0aXZlUm9vdHMuYWRkKGN1cnJlbnRTdGFja1BvaW50ZXIoKSwg
aGlnaEFkZHJlc3MoKSwgaml0U3R1YlJvdXRpbmVzLCBjb2RlQmxvY2tzKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DTG9vcFN0YWNrLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ0xvb3BTdGFjay5oCmluZGV4IDFmNGQ5OWQ4
YjQzNGU5YjQ3OWU0ODM3YTI5ZGZkYzFiYzVjN2FiNTYuLjdiMTIxOTcxNDliMzI0NzFlMmNlMzBk
Y2Q0NjE0ZTA1YmYzOWI5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DTG9vcFN0YWNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NMb29wU3RhY2suaApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
ICAgIGNsYXNzIENvZGVCbG9ja1NldDsKKyAgICBjbGFzcyBDb2RlQmxvY2tTdWJzcGFjZTsKICAg
ICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKICAgICBjbGFzcyBKSVRTdHViUm91dGluZVNldDsK
ICAgICBjbGFzcyBWTTsKQEAgLTU2LDcgKzU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGJvb2wgY29udGFpbnNBZGRyZXNzKFJlZ2lzdGVyKiBhZGRyZXNzKSB7IHJldHVybiAobG93QWRk
cmVzcygpIDw9IGFkZHJlc3MgJiYgYWRkcmVzcyA8IGhpZ2hBZGRyZXNzKCkpOyB9CiAgICAgICAg
IHN0YXRpYyBzaXplX3QgY29tbWl0dGVkQnl0ZUNvdW50KCk7CiAKLSAgICAgICAgdm9pZCBnYXRo
ZXJDb25zZXJ2YXRpdmVSb290cyhDb25zZXJ2YXRpdmVSb290cyYsIEpJVFN0dWJSb3V0aW5lU2V0
JiwgQ29kZUJsb2NrU2V0Jik7CisgICAgICAgIHZvaWQgZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHMo
Q29uc2VydmF0aXZlUm9vdHMmLCBKSVRTdHViUm91dGluZVNldCYsIENvZGVCbG9ja1N1YnNwYWNl
Jik7CiAgICAgICAgIHZvaWQgc2FuaXRpemVTdGFjaygpOwogCiAgICAgICAgIGlubGluZSB2b2lk
KiBjdXJyZW50U3RhY2tQb2ludGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlQmxvY2tTdWJzcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29kZUJsb2NrU3Vic3BhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYWJkNWJhOTdmNGQzNzQ5ZDU2
NDY2MDcxMzY4ZDJiZGY4MWE2ZDAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUJsb2NrU3Vic3BhY2UuaApAQCAtMCwwICsxLDYxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJJc29DZWxsU2V0LmgiCisjaW5jbHVkZSAiSXNvU3Vic3BhY2UuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIENvZGVCbG9jazsKKworY2xhc3MgQ29kZUJsb2NrU3Vic3Bh
Y2UgOiBwdWJsaWMgSXNvU3Vic3BhY2UgeworcHVibGljOgorICAgIENvZGVCbG9ja1N1YnNwYWNl
KENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIHNp
emVfdCBzaXplKQorICAgICAgICA6IElzb1N1YnNwYWNlKG5hbWUsIGhlYXAsIGhlYXBDZWxsVHlw
ZSwgc2l6ZSkKKyAgICAgICAgLCBtX2luaXRpYWxpemVkKCp0aGlzKQorICAgICAgICAsIG1fY3Vy
cmVudGx5RXhlY3V0aW5nSW5HQygqdGhpcykKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBhZGQo
Q29kZUJsb2NrKik7CisgICAgdm9pZCByZW1vdmUoQ29kZUJsb2NrKik7CisgICAgYm9vbCBjb250
YWlucyhjb25zdCBBYnN0cmFjdExvY2tlciYsIHZvaWQqIGNhbmRpZGF0ZUNvZGVCbG9jayk7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRlKGNvbnN0IEZ1bmN0b3Im
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGUoY29uc3QgQWJz
dHJhY3RMb2NrZXImLCBjb25zdCBGdW5jdG9yJik7CisKKyAgICBMb2NrJiBnZXRMb2NrKCkgeyBy
ZXR1cm4gbV9kaXJlY3RvcnkuYml0dmVjdG9yTG9jaygpOyB9CisKKyAgICB2b2lkIGFkZEN1cnJl
bnRseUV4ZWN1dGluZ0luR0MoQ29kZUJsb2NrKik7CisgICAgdm9pZCByZW1vdmVDdXJyZW50bHlF
eGVjdXRpbmdJbkdDKENvZGVCbG9jayopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
IHZvaWQgaXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZ0luR0MoY29uc3QgRnVuY3RvciYpOworCitw
cml2YXRlOgorICAgIElzb0NlbGxTZXQgbV9pbml0aWFsaXplZDsKKyAgICBJc29DZWxsU2V0IG1f
Y3VycmVudGx5RXhlY3V0aW5nSW5HQzsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUJsb2NrU3Vic3BhY2VJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQmxvY2tTdWJzcGFjZUlu
bGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42N2FiYTJmNDkxYTQzNGViZDYwZmU2YjEwNTliY2UxNmM1OTgz
M2JlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUJsb2NrU3Vic3BhY2VJbmxpbmVzLmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrU3Vic3BhY2UuaCIKKyNpbmNsdWRlICJJ
c29DZWxsU2V0SW5saW5lcy5oIgorI2luY2x1ZGUgIklzb1N1YnNwYWNlLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitpbmxpbmUgdm9pZCBDb2RlQmxvY2tTdWJzcGFjZTo6YWRkKENvZGVCbG9jayog
Y29kZUJsb2NrKQoreworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZ2V0TG9jaygpKTsKKyAg
ICBtX2luaXRpYWxpemVkLmFkZChsb2NrZXIsIGNvZGVCbG9jayk7Cit9CisKK2lubGluZSB2b2lk
IENvZGVCbG9ja1N1YnNwYWNlOjpyZW1vdmUoQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhnZXRMb2NrKCkpOworICAgIG1faW5pdGlhbGl6ZWQucmVt
b3ZlKGxvY2tlciwgY29kZUJsb2NrKTsKK30KKworaW5saW5lIGJvb2wgQ29kZUJsb2NrU3Vic3Bh
Y2U6OmNvbnRhaW5zKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgdm9pZCogY2FuZGlkYXRlQ29kZUJs
b2NrKQoreworICAgIHJldHVybiBtX2luaXRpYWxpemVkLmNvbnRhaW5zQ29uc2VydmF0aXZlKGNh
bmRpZGF0ZUNvZGVCbG9jayk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lk
IENvZGVCbG9ja1N1YnNwYWNlOjppdGVyYXRlKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7Cisg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhnZXRMb2NrKCkpOworICAgIGl0ZXJhdGUobG9ja2Vy
LCBmdW5jdG9yKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgQ29kZUJs
b2NrU3Vic3BhY2U6Oml0ZXJhdGUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKQoreworICAgIG1faW5pdGlhbGl6ZWQuZm9yRWFjaENlbGwoCisgICAgICAgIFsm
XSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSB7CisgICAgICAgICAgICBmdW5jdG9y
KGpzQ2FzdDxDb2RlQmxvY2sqPihzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSkpOworICAgICAg
ICB9KTsKK30KKworaW5saW5lIHZvaWQgQ29kZUJsb2NrU3Vic3BhY2U6OmFkZEN1cnJlbnRseUV4
ZWN1dGluZ0luR0MoQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgbV9jdXJyZW50bHlFeGVj
dXRpbmdJbkdDLmFkZChjb2RlQmxvY2spOworfQorCitpbmxpbmUgdm9pZCBDb2RlQmxvY2tTdWJz
cGFjZTo6cmVtb3ZlQ3VycmVudGx5RXhlY3V0aW5nSW5HQyhDb2RlQmxvY2sqIGNvZGVCbG9jaykK
K3sKKyAgICBtX2N1cnJlbnRseUV4ZWN1dGluZ0luR0MucmVtb3ZlKGNvZGVCbG9jayk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIENvZGVCbG9ja1N1YnNwYWNlOjppdGVy
YXRlQ3VycmVudGx5RXhlY3V0aW5nSW5HQyhjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAg
IG1fY3VycmVudGx5RXhlY3V0aW5nSW5HQy5mb3JFYWNoTWFya2VkQ2VsbCgKKyAgICAgICAgWyZd
IChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQpIHsKKyAgICAgICAgICAgIGZ1bmN0b3Io
anNDYXN0PENvZGVCbG9jayo+KHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpKSk7CisgICAgICAg
IH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA2NGQ0NjhlODNmNDk3ODdjMTA0M2Jh
ZDQ3NDM3NzY5YjBiOGI3MGFhLi5lMmRlMWU1YzZhODYyNGFmZjE4NmRlYzY0MTM4MTU2YzQzOWE1
YzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC01MCw3ICs1MCw3IEBACiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5oIgogI2luY2x1
ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUg
IkNvZGVCbG9ja1NldElubGluZXMuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2tTdWJzcGFjZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJDb25zb2xlT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiRGF0ZUNvbnN0cnVjdG9yLmgiCkBAIC0yMDM3LDcgKzIwMzcsOCBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0OjpidW1wR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaChWTSYgdm0pCiAg
ICAgaWYgKCsrbV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoID09IE9wdGlvbnM6OnRocmVzaG9s
ZEZvckdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goKSkgewogICAgICAgICAvLyBTaW5jZSB0aGUg
ZXBvY2ggb3ZlcmZsb3dzLCB3ZSBzaG91bGQgcmV3cml0ZSBhbGwgdGhlIENvZGVCbG9jayB0byBh
ZGp1c3QgdG8gdGhlIG5ld2x5IHN0YXJ0ZWQgZ2VuZXJhdGlvbi4KICAgICAgICAgbV9nbG9iYWxM
ZXhpY2FsQmluZGluZ0Vwb2NoID0gMTsKLSAgICAgICAgdm0uaGVhcC5jb2RlQmxvY2tTZXQoKS5p
dGVyYXRlKFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2spIHsKKyAgICAgICAgSGVhcEl0ZXJhdGlv
blNjb3BlIGl0ZXJhdGlvblNjb3BlKHZtLmhlYXApOworICAgICAgICB2bS5jb2RlQmxvY2tTcGFj
ZS5pdGVyYXRlKFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2spIHsKICAgICAgICAgICAgIGlmIChj
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpICE9IHRoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgY29kZUJsb2NrLT5ub3RpZnlMZXhpY2FsQmluZGluZ1VwZGF0ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNw
cAppbmRleCAzYzJmYjZmNjVkN2RkZDI5ZDQ3YmM4NGEyMmMwNTc4MWVmZmJiZTcxLi4zMGQzZmZj
ZTk5NDMyY2NkNTZkNzdkMDk2YjU2OTBiYWUyZjRmNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcApAQCAtMzEsNyArMzEsNyBA
QAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNhdGNoU2NvcGUuaCIKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJDb2RlQmxvY2tTZXQuaCIKKyNpbmNsdWRlICJD
b2RlQmxvY2tTdWJzcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUu
aCIKICNpbmNsdWRlICJIZWFwVXRpbC5oIgogI2luY2x1ZGUgIklubGluZUNhbGxGcmFtZS5oIgpA
QCAtMTg0LDcgKzE4NCw3IEBAIGNsYXNzIEZyYW1lV2Fsa2VyIHsKICAgICB7CiAgICAgICAgIGlm
ICghY29kZUJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBib29sIHJl
c3VsdCA9IG1fdm0uaGVhcC5jb2RlQmxvY2tTZXQoKS5jb250YWlucyhtX2NvZGVCbG9ja1NldExv
Y2tlciwgY29kZUJsb2NrKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBtX3ZtLmNvZGVCbG9ja1Nw
YWNlLmNvbnRhaW5zKG1fY29kZUJsb2NrU2V0TG9ja2VyLCBjb2RlQmxvY2spOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgU2FtcGxpbmdQ
cm9maWxlcjo6dGFrZVNhbXBsZShjb25zdCBBYnN0cmFjdExvY2tlciYsIFNlY29uZHMmIHN0YWNr
VHJhY2VQcm9jCiAgICAgICAgIFNlY29uZHMgbm93VGltZSA9IG1fc3RvcHdhdGNoLT5lbGFwc2Vk
VGltZSgpOwogCiAgICAgICAgIGF1dG8gbWFjaGluZVRocmVhZHNMb2NrZXIgPSBob2xkTG9jayht
X3ZtLmhlYXAubWFjaGluZVRocmVhZHMoKS5nZXRMb2NrKCkpOwotICAgICAgICBMb2NrSG9sZGVy
IGNvZGVCbG9ja1NldExvY2tlcihtX3ZtLmhlYXAuY29kZUJsb2NrU2V0KCkuZ2V0TG9jaygpKTsK
KyAgICAgICAgTG9ja0hvbGRlciBjb2RlQmxvY2tTZXRMb2NrZXIobV92bS5jb2RlQmxvY2tTcGFj
ZS5nZXRMb2NrKCkpOwogICAgICAgICBMb2NrSG9sZGVyIGV4ZWN1dGFibGVBbGxvY2F0b3JMb2Nr
ZXIoRXhlY3V0YWJsZUFsbG9jYXRvcjo6c2luZ2xldG9uKCkuZ2V0TG9jaygpKTsKIAogICAgICAg
ICBhdXRvIGRpZFN1c3BlbmQgPSBtX2pzY0V4ZWN1dGlvblRocmVhZC0+c3VzcGVuZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYjk4NWQ0N2VhNGQ5NWVkZGRjOWMwY2YzNjY4
OTY1MzM3NmY3ZDFkZi4uMGExYTM3OTcwMGM1Y2IxYTBjZTYxNzVmYjM1N2NjZDcxZGJlNDcxNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkNhbGxEYXRhLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrU3Vic3Bh
Y2UuaCIKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiQ29t
cGxldGVTdWJzcGFjZS5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKQEAgLTQ1MCwx
NyArNDUxLDggQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBw
dWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICAgICAgfQogICAgIH07CiAgICAg
Ci0gICAgU3BhY2VBbmRTZXQgY29kZUJsb2NrU3BhY2U7CisgICAgQ29kZUJsb2NrU3Vic3BhY2Ug
Y29kZUJsb2NrU3BhY2U7CiAgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIo
aW5mZXJyZWRWYWx1ZVNwYWNlKQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2
b2lkIGZvckVhY2hDb2RlQmxvY2tTcGFjZShjb25zdCBGdW5jJiBmdW5jKQotICAgIHsKLSAgICAg
ICAgLy8gVGhpcyBzaG91bGQgbm90IGluY2x1ZGUgd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSBi
ZWNhdXNlIHRoaXMgaXMgYWJvdXQgc3Vic2NsYXNzZXMgb2YKLSAgICAgICAgLy8gSlNDOjpDb2Rl
QmxvY2suCi0gICAgICAgIGZ1bmMoY29kZUJsb2NrU3BhY2UpOwotICAgIH0KLQogICAgIERZTkFN
SUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKGV2YWxFeGVjdXRhYmxlU3BhY2UpCiAgICAg
RFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGVTcGFjZSkKICAgICBTcGFjZUFuZFNldCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKaW5kZXggZTY2ODY2YzE4NTFiNmFk
NjcwYmM5NTdmYmQ3MDE0ZDExODNlYjQxNC4uMDM1MmU1Njg1MWFiMjczOTlmMDZmMzFkZmUzNDQ3
YmZlOThkNjY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1U
cmFwcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAK
QEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgotI2luY2x1ZGUgIkNvZGVCbG9ja1NldC5oIgorI2luY2x1ZGUgIkNvZGVCbG9j
a1N1YnNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbkRhdGEuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSGVhcElubGluZXMuaCIKQEAgLTEwOSw3
ICsxMDksNyBAQCB2b2lkIFZNVHJhcHM6OnRyeUluc3RhbGxUcmFwQnJlYWtwb2ludHMoU2lnbmFs
Q29udGV4dCYgY29udGV4dCwgU3RhY2tCb3VuZHMgc3RhYwogCiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSByZWludGVycHJldF9jYXN0PENhbGxGcmFtZSo+KGNvbnRleHQuZnJhbWVQb2ludGVy
KTsKIAotICAgIGF1dG8gY29kZUJsb2NrU2V0TG9ja2VyID0gaG9sZExvY2sodm0uaGVhcC5jb2Rl
QmxvY2tTZXQoKS5nZXRMb2NrKCkpOworICAgIGF1dG8gY29kZUJsb2NrU2V0TG9ja2VyID0gaG9s
ZExvY2sodm0uY29kZUJsb2NrU3BhY2UuZ2V0TG9jaygpKTsKIAogICAgIENvZGVCbG9jayogZm91
bmRDb2RlQmxvY2sgPSBudWxscHRyOwogICAgIEVudHJ5RnJhbWUqIGVudHJ5RnJhbWUgPSB2bS50
b3BFbnRyeUZyYW1lOwpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgVk1UcmFwczo6dHJ5SW5zdGFs
bFRyYXBCcmVha3BvaW50cyhTaWduYWxDb250ZXh0JiBjb250ZXh0LCBTdGFja0JvdW5kcyBzdGFj
CiAgICAgICAgICAgICByZXR1cm47IC8vIExldCB0aGUgU2lnbmFsU2VuZGVyIHRyeSBhZ2FpbiBs
YXRlci4KIAogICAgICAgICBDb2RlQmxvY2sqIGNhbmRpZGF0ZUNvZGVCbG9jayA9IGNhbGxGcmFt
ZS0+dW5zYWZlQ29kZUJsb2NrKCk7Ci0gICAgICAgIGlmIChjYW5kaWRhdGVDb2RlQmxvY2sgJiYg
dm0uaGVhcC5jb2RlQmxvY2tTZXQoKS5jb250YWlucyhjb2RlQmxvY2tTZXRMb2NrZXIsIGNhbmRp
ZGF0ZUNvZGVCbG9jaykpIHsKKyAgICAgICAgaWYgKGNhbmRpZGF0ZUNvZGVCbG9jayAmJiB2bS5j
b2RlQmxvY2tTcGFjZS5jb250YWlucyhjb2RlQmxvY2tTZXRMb2NrZXIsIGNhbmRpZGF0ZUNvZGVC
bG9jaykpIHsKICAgICAgICAgICAgIGZvdW5kQ29kZUJsb2NrID0gY2FuZGlkYXRlQ29kZUJsb2Nr
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lk
IFZNVHJhcHM6OmludmFsaWRhdGVDb2RlQmxvY2tzT25TdGFjaygpCiAKIHZvaWQgVk1UcmFwczo6
aW52YWxpZGF0ZUNvZGVCbG9ja3NPblN0YWNrKEV4ZWNTdGF0ZSogdG9wQ2FsbEZyYW1lKQogewot
ICAgIGF1dG8gY29kZUJsb2NrU2V0TG9ja2VyID0gaG9sZExvY2sodm0oKS5oZWFwLmNvZGVCbG9j
a1NldCgpLmdldExvY2soKSk7CisgICAgYXV0byBjb2RlQmxvY2tTZXRMb2NrZXIgPSBob2xkTG9j
ayh2bSgpLmNvZGVCbG9ja1NwYWNlLmdldExvY2soKSk7CiAgICAgaW52YWxpZGF0ZUNvZGVCbG9j
a3NPblN0YWNrKGNvZGVCbG9ja1NldExvY2tlciwgdG9wQ2FsbEZyYW1lKTsKIH0KICAgICAKQEAg
LTIxOCw3ICsyMTgsNyBAQCBjbGFzcyBWTVRyYXBzOjpTaWduYWxTZW5kZXIgZmluYWwgOiBwdWJs
aWMgQXV0b21hdGljVGhyZWFkIHsKICAgICAgICAgICAgICAgICBWTSYgdm0gPSAqY3VycmVudENv
ZGVCbG9jay0+dm0oKTsKIAogICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBpbiBKSVQgY29kZSBz
byBpdCdzIHNhZmUgdG8gYWNxdWlyZSB0aGlzIGxvY2suCi0gICAgICAgICAgICAgICAgYXV0byBj
b2RlQmxvY2tTZXRMb2NrZXIgPSBob2xkTG9jayh2bS5oZWFwLmNvZGVCbG9ja1NldCgpLmdldExv
Y2soKSk7CisgICAgICAgICAgICAgICAgYXV0byBjb2RlQmxvY2tTZXRMb2NrZXIgPSBob2xkTG9j
ayh2bS5jb2RlQmxvY2tTcGFjZS5nZXRMb2NrKCkpOwogICAgICAgICAgICAgICAgIGJvb2wgc2F3
Q3VycmVudENvZGVCbG9jayA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHZtLmhlYXAuZm9yRWFj
aENvZGVCbG9ja0lnbm9yaW5nSklUUGxhbnMoY29kZUJsb2NrU2V0TG9ja2VyLCBbJl0gKENvZGVC
bG9jayogY29kZUJsb2NrKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gamV0
dGlzb24gYWxsIGNvZGUgYmxvY2tzIHRoYXQgaGF2ZSB2bSB0cmFwcyBicmVha3BvaW50cywgb3Ro
ZXJ3aXNlIHdlIGNvdWxkIGhpdCB0aGVtIGxhdGVyLgpAQCAtMzQwLDcgKzM0MCw3IEBAIHZvaWQg
Vk1UcmFwczo6aGFuZGxlVHJhcHMoRXhlY1N0YXRlKiBleGVjLCBWTVRyYXBzOjpNYXNrIG1hc2sp
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgewotICAg
ICAgICBhdXRvIGNvZGVCbG9ja1NldExvY2tlciA9IGhvbGRMb2NrKHZtLmhlYXAuY29kZUJsb2Nr
U2V0KCkuZ2V0TG9jaygpKTsKKyAgICAgICAgYXV0byBjb2RlQmxvY2tTZXRMb2NrZXIgPSBob2xk
TG9jayh2bS5jb2RlQmxvY2tTcGFjZS5nZXRMb2NrKCkpOwogICAgICAgICB2bS5oZWFwLmZvckVh
Y2hDb2RlQmxvY2tJZ25vcmluZ0pJVFBsYW5zKGNvZGVCbG9ja1NldExvY2tlciwgWyZdIChDb2Rl
QmxvY2sqIGNvZGVCbG9jaykgewogICAgICAgICAgICAgLy8gV2Ugd2FudCB0byBqZXR0aXNvbiBh
bGwgY29kZSBibG9ja3MgdGhhdCBoYXZlIHZtIHRyYXBzIGJyZWFrcG9pbnRzLCBvdGhlcndpc2Ug
d2UgY291bGQgaGl0IHRoZW0gbGF0ZXIuCiAgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT5oYXNJ
bnN0YWxsZWRWTVRyYXBCcmVha3BvaW50cygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9WTUluc3BlY3Rvci5jcHAKaW5kZXggNjMzOWZiOWRjNmU1Y2RiZjBmNjM3YjYwNTA4NDZjMjIx
MmEwYzBmMS4uYjBkYTQ3MjhmM2U0MWJlYWE4NDYyYWRjYWVhYTU3ZGFjNTZjYzdmNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCkBAIC0yNyw3ICsyNyw2
IEBACiAjaW5jbHVkZSAiVk1JbnNwZWN0b3IuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgot
I2luY2x1ZGUgIkNvZGVCbG9ja1NldC5oIgogI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpAQCAt
MTU4LDcgKzE1Nyw3IEBAIGF1dG8gVk1JbnNwZWN0b3I6OmNvZGVCbG9ja0Zvck1hY2hpbmVQQyhj
b25zdCBWTUluc3BlY3Rvcjo6TG9ja2VyJiwgdm9pZCogbWFjaGluCiAgICAgICAgIC8vICAgIEhl
YXA6OmZvckVhY2hDb2RlQmxvY2tJZ25vcmluZ0pJVFBsYW5zKCkuIEhlbmNlLCB0aGVyZSdzIG5v
IHJpc2sgb2YKICAgICAgICAgLy8gICAgcmUtZW50ZXJpbmcgdGhlIGxvY2sgYW5kIGRlYWRsb2Nr
aW5nIG9uIGl0LgogCi0gICAgICAgIGF1dG8mIGNvZGVCbG9ja1NldExvY2sgPSB2bS5oZWFwLmNv
ZGVCbG9ja1NldCgpLmdldExvY2soKTsKKyAgICAgICAgYXV0byYgY29kZUJsb2NrU2V0TG9jayA9
IHZtLmNvZGVCbG9ja1NwYWNlLmdldExvY2soKTsKICAgICAgICAgYm9vbCBpc1NhZmVUb0xvY2sg
PSBlbnN1cmVJc1NhZmVUb0xvY2soY29kZUJsb2NrU2V0TG9jayk7CiAgICAgICAgIGlmICghaXNT
YWZlVG9Mb2NrKSB7CiAgICAgICAgICAgICBoYXNUaW1lb3V0ID0gdHJ1ZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>