<?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>171707</bug_id>
          
          <creation_ts>2017-05-04 19:24:06 -0700</creation_ts>
          <short_desc>CallLinkInfos belonging to Wasm-&gt;JS stubs need to be informed when we clearCode() from all Executables</short_desc>
          <delta_ts>2017-05-12 15:54:48 -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>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1304956</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-05-04 19:24:06 -0700</bug_when>
    <thetext>Otherwise, we end up with a situation like this:
1. We generate our IC which has a branch on a callee check. If the branch succeeds, we will call code for a particular CodeBlock.
2. Heap::deleteAllCodeBlocks is called. This leads the Executable to clear its various codeBlock references.
3. Wasm has no idea this happened, so now it has stale ICs that point into code from a CodeBlock no longer belonging to an Executable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304958</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-05-04 19:25:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/31891649&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304964</commentid>
    <comment_count>2</comment_count>
      <attachid>309130</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-05-04 19:42:03 -0700</bug_when>
    <thetext>Created attachment 309130
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304966</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-04 19:46:50 -0700</bug_when>
    <thetext>Attachment 309130 did not pass style-queue:


ERROR: Source/JavaScriptCore/wasm/js/JSWebAssemblyCodeBlockSubspace.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/wasm/js/JSWebAssemblyCodeBlockSubspace.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:51:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305212</commentid>
    <comment_count>4</comment_count>
      <attachid>309189</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-05-05 11:13:51 -0700</bug_when>
    <thetext>Created attachment 309189
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305215</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-05 11:15:49 -0700</bug_when>
    <thetext>Attachment 309189 did not pass style-queue:


ERROR: Source/JavaScriptCore/wasm/js/JSWebAssemblyCodeBlockSubspace.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/wasm/js/JSWebAssemblyCodeBlockSubspace.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:51:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305217</commentid>
    <comment_count>6</comment_count>
      <attachid>309190</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-05-05 11:16:55 -0700</bug_when>
    <thetext>Created attachment 309190
patch

fix include ordering</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305506</commentid>
    <comment_count>7</comment_count>
      <attachid>309190</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-05 20:34:29 -0700</bug_when>
    <thetext>Comment on attachment 309190
patch

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

Looks good!

&gt; Source/JavaScriptCore/runtime/VM.cpp:176
&gt; +    , webAssemblyCodeBlockSubspace(&quot;JSWebAssemblyCodeBlockSubspace&quot;, heap)

I&apos;ve been calling these &quot;Spaces&quot; and not &quot;Subspaces&quot;.  It&apos;s a subspace of the heap but it&apos;s the space of web assembly code blocks.  But, I don&apos;t feel very strongly about this.  For example, I would be in favor of renaming all of them to have the &quot;Subspace&quot; suffix (including the two in WebCore).  I&apos;m a bit less sure about having the naming be inconsistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306245</commentid>
    <comment_count>8</comment_count>
      <attachid>309465</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-05-08 21:19:09 -0700</bug_when>
    <thetext>Created attachment 309465
patch for landing

I made Fil&apos;s naming suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306294</commentid>
    <comment_count>9</comment_count>
      <attachid>309465</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-09 00:15:05 -0700</bug_when>
    <thetext>Comment on attachment 309465
patch for landing

Clearing flags on attachment: 309465

Committed r216481: &lt;http://trac.webkit.org/changeset/216481&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306295</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-09 00:15:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308125</commentid>
    <comment_count>11</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-05-12 15:54:48 -0700</bug_when>
    <thetext>*** Bug 165639 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309130</attachid>
            <date>2017-05-04 19:42:03 -0700</date>
            <delta_ts>2017-05-05 11:13:51 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>20456</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2MjI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBA
CisyMDE3LTA1LTA0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENhbGxMaW5rSW5mb3MgYmVsb25naW5nIHRvIFdhc20tPkpTIHN0dWJzIG5lZWQgdG8gYmUgaW5m
b3JtZWQgd2hlbiB3ZSBjbGVhckNvZGUoKSBmcm9tIGFsbCBFeGVjdXRhYmxlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxNzA3CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zMTg5MTY0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIGEgV2FzbS0+SlMg
SUMgY2FsbCBzdHViIHdvdWxkIGdvIHN0YWxlCisgICAgICAgIGFuZCBwb2ludCBpbnRvIGEgQ29k
ZUJsb2NrIG5vIGxvbmdlciBvd25lZCBieSBhbnkgZXhlY3V0YWJsZS4gVGhlCisgICAgICAgIHBy
b2JsZW1hdGljIHNjZW5hcmlvIGlzIHRoaXM6CisKKyAgICAgICAgMS4gV2UgZ2VuZXJhdGUgdGhl
IGNhbGwgSUMgd2hpY2ggaGFzIGEgYnJhbmNoIG9uIGEgY2FsbGVlIGNoZWNrLiBUaGlzCisgICAg
ICAgICAgIGNhbGxlZSBvd25zIHRoZSBFeGVjdXRhYmxlIGluIHF1ZXN0aW9uLiBJZiB0aGUgYnJh
bmNoIHN1Y2NlZWRzLCBpdAorICAgICAgICAgICB3aWxsIGNhbGwgY29kZSBiZWxvbmdpbmcgdG8g
YSBwYXJ0aWN1bGFyIENvZGVCbG9jayBhc3NvY2lhdGVkIHdpdGgKKyAgICAgICAgICAgdGhhdCBF
eGVjdXRhYmxlLgorCisgICAgICAgIDIuIEhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MgaXMgY2Fs
bGVkLiBUaGlzIGxlYWRzIHRoZSBFeGVjdXRhYmxlIHRvIGNsZWFyCisgICAgICAgICAgIGl0cyB2
YXJpb3VzIENvZGVCbG9jayByZWZlcmVuY2VzLgorCisgICAgICAgIDMuIFdhc20gaGFzIG5vIGlk
ZWEgdGhpcyBoYXBwZW5lZCwgc28gbm93IGl0IGhhcyBzdGFsZSBJQ3MgdGhhdCBwb2ludCBpbnRv
CisgICAgICAgICAgIGNvZGUgZnJvbSBhIENvZGVCbG9jayBubyBsb25nZXIgYmVsb25naW5nIHRv
IGFuIEV4ZWN1dGFibGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgYnVnIGJ5IGlu
Zm9ybWluZyBhbGwgSlNXZWJBc3NlbWJseUNvZGVCbG9ja3MgdG8gdW5saW5rCisgICAgICAgIHRo
ZWlyIENhbGxMaW5rSW5mbyB3aGVuIEhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MgaXMgY2FsbGVk
LgorCisgICAgICAgIFdlIHRyYWNrIGFsbCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrcyBieSBjcmVh
dGluZyBhIG5ldyBzdWJzcGFjZSBmb3IgdGhlbS4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8g
cXVpY2tseSBpdGVyYXRlIG92ZXIgdGhlIGxpdmUgSlNXZWJBc3NlbWJseUNvZGVCbG9ja3MgaW4g
dGhlCisgICAgICAgIGhlYXAuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6
OkhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MpOgorICAgICAgICAqIGhlYXAvU3Vic3BhY2UuaDoK
KyAgICAgICAgKiBoZWFwL1N1YnNwYWNlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdWJzcGFj
ZTo6Zm9yRWFjaExpdmVDZWxsKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAg
KEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogd2FzbS9q
cy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJs
eUNvZGVCbG9jazo6Y2xlYXJKU0NhbGxJQ3MpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3Nl
bWJseUNvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpj
cmVhdGVTdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrOjpmdW5jdGlvbkltcG9ydENvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNX
ZWJBc3NlbWJseUNvZGVCbG9jazo6bW9kdWxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNX
ZWJBc3NlbWJseUNvZGVCbG9jazo6anNFbnRyeXBvaW50Q2FsbGVlRnJvbUZ1bmN0aW9uSW5kZXhT
cGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6Ondh
c21FbnRyeXBvaW50TG9hZExvY2F0aW9uRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6Ondhc21Ub0pzQ2FsbFN0dWJG
b3JJbXBvcnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2Nr
OjpvZmZzZXRPZkltcG9ydFdhc21Ub0pTU3R1Yik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpT
V2ViQXNzZW1ibHlDb2RlQmxvY2s6OmNvZGVCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6Om9mZnNldE9mSW1wb3J0U3R1YnMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjphbGxvY2F0aW9uU2l6ZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OmltcG9ydFdhc21U
b0pTU3R1Yik6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJs
b2NrU3Vic3BhY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVC
bG9ja1N1YnNwYWNlOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UpOgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2U6On5KU1dlYkFzc2VtYmx5Q29kZUJs
b2NrU3Vic3BhY2UpOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3Bh
Y2U6OmZpbmlzaFN3ZWVwKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1
YnNwYWNlOjpkZXN0cm95KToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxv
Y2tTdWJzcGFjZS5oOiBBZGRlZC4KKwogMjAxNy0wNS0wNCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9s
bXN0ZWFkQGFtLnNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dIFJlbW92ZSByZWR1bmRhbnQgbWFj
cm9zIHRoYXQgYXJlIHNldCBpbiB0aGUgQ01ha2UgY29uZmlnCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjE2MTk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTE1NTUsNiArMTU1NSw4IEBACiAJCTc5REZDQkRCMUQ4OEM1OTYwMDUyN0QwMyAvKiBIYXNP
d25Qcm9wZXJ0eUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3OURGQ0JEQTFEODhDNTk2MDA1MjdEMDMgLyogSGFzT3duUHJvcGVydHlDYWNoZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5RUUw
QkZGMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RUUwQkZEMUI0QUZCODUwMDAz
ODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNwcCAqLzsgfTsKIAkJNzlFRTBDMDAxQjRBRkI4
NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RUUwQkZFMUI0QUZCODUwMDAzODVDOSAvKiBWYXJp
YWJsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNzlFRkQ0ODMxRUJDMDQ1QzAwRjNERkVBIC8qIEpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2tTdWJzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3OUVGRDQ4MTFFQkMwNDVDMDBGM0RGRUEgLyogSlNXZWJBc3NlbWJseUNvZGVCbG9j
a1N1YnNwYWNlLmNwcCAqLzsgfTsKKwkJNzlFRkQ0ODQxRUJDMDQ1QzAwRjNERkVBIC8qIEpTV2Vi
QXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzlFRkQ0ODIxRUJDMDQ1QzAwRjNERkVBIC8qIEpTV2ViQXNzZW1i
bHlDb2RlQmxvY2tTdWJzcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTc5RjhGQzFFMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1
c2hJbnNlcnRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3OUY4RkMxQzFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5z
ZXJ0aW9uUGhhc2UuY3BwICovOyB9OwogCQk3OUY4RkMxRjFCOUZFRDBGMDBDQTY2QUIgLyogREZH
TWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjhGQzFEMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFs
Rmx1c2hJbnNlcnRpb25QaGFzZS5oICovOyB9OwogCQk3OUZDOEEwODFFMzJFOUYwMDBEODhGMEUg
LyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzlGQzhBMDcxRTMyRTlGMDAwRDg4RjBFIC8qIERGR1JlZ2lzdGVy
ZWRTdHJ1Y3R1cmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNDEzMSw2ICs0MTMzLDggQEAKIAkJNzlERkNCREExRDg4QzU5NjAwNTI3RDAzIC8q
IEhhc093blByb3BlcnR5Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGFzT3duUHJvcGVydHlDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OUVF
MEJGRDFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYXJpYWJsZUVudmlyb25tZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzlFRTBCRkUxQjRBRkI4NTAwMDM4NUM5IC8qIFZh
cmlhYmxlRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFy
aWFibGVFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OUVGRDQ4
MTFFQkMwNDVDMDBGM0RGRUEgLyogSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViQXNzZW1ibHlDb2RlQmxv
Y2tTdWJzcGFjZS5jcHA7IHBhdGggPSBqcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OUVGRDQ4MjFFQkMwNDVDMDBGM0RG
RUEgLyogSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5oOyBwYXRoID0g
anMvSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTc5RjhGQzFDMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNl
cnRpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdN
YXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHTWF4aW1hbEZsdXNo
SW5zZXJ0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OUY4RkMx
RDFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhh
c2UuaDsgcGF0aCA9IGRmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3OUZDOEEwNzFFMzJFOUYwMDBEODhGMEUgLyogREZHUmVn
aXN0ZXJlZFN0cnVjdHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdS
ZWdpc3RlcmVkU3RydWN0dXJlLmg7IHBhdGggPSBkZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODAyMiw2ICs4MDI2LDggQEAKIAkJCWNo
aWxkcmVuID0gKAogCQkJCTUzODNBQTJGMUU2NUU4QTEwMEE1MzJGQyAvKiBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrLmNwcCAqLywKIAkJCQlBRDlFODUyRTFFOEEwQzZFMDA4REUzOUUgLyogSlNXZWJB
c3NlbWJseUNvZGVCbG9jay5oICovLAorCQkJCTc5RUZENDgxMUVCQzA0NUMwMEYzREZFQSAvKiBK
U1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UuY3BwICovLAorCQkJCTc5RUZENDgyMUVCQzA0
NUMwMEYzREZFQSAvKiBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UuaCAqLywKIAkJCQlB
RDJGQ0JBNjFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5jcHAg
Ki8sCiAJCQkJQUQyRkNCQTcxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlDb21waWxl
RXJyb3IuaCAqLywKIAkJCQk3OTZGQjQzOTFERkY4QzNGMDAzOUM5NUQgLyogSlNXZWJBc3NlbWJs
eUhlbHBlcnMuaCAqLywKQEAgLTg5NTMsNiArODk1OSw3IEBACiAJCQkJMEZCMTRFMUYxODEyNEFD
RTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NkNDODVBMTBFRTc5QTQ3MDAyODg2ODIgLyogSklUSW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkUzQTA2QkUxQzExMDQxMjAwMzkwRkREIC8qIEpJVExlZnRTaGlmdEdlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNzlFRkQ0ODQxRUJDMDQ1QzAwRjNERkVBIC8qIEpTV2ViQXNz
ZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzkyMzNDMkIxRDM0
NzE1NzAwQzVBODM0IC8qIEpJVE1hdGhJQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlCMTc4OEUx
RDM5OUI4MDAwQjFBNTY3IC8qIEpJVE1hdGhJQ0ZvcndhcmRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3OUFGMEJFNDFEM0VGRDRDMDBFOTVGQTUgLyogSklUTWF0aElDSW5saW5lUmVzdWx0LmggaW4g
SGVhZGVycyAqLywKQEAgLTEwNjYwLDYgKzEwNjY3LDcgQEAKIAkJCQk2NTg4MjRCMTFFNUNGREY0
MDBGQjczNTkgLyogQ29uZmlnRmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzAwODc0MTE3
Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc0REVGOTUx
ODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NzlFRkQ0ODMxRUJDMDQ1QzAwRjNERkVBIC8qIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFj
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNN
b2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxM0ZFQ0UwNkQzQjQ0NUZD
QjZDOTM0NjEgLyogSlNNb2R1bGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMxOENC
QzAxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIx
NjE5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw2ICs0Nyw4IEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNs
dWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCIKKyNp
bmNsdWRlICJKU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTWFya2VkQWxsb2Nh
dG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIk1hY2hpbmVTdGFja01hcmtlci5oIgogI2luY2x1ZGUg
Ik1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcmtpbmdDb25zdHJhaW50U2V0Lmgi
CkBAIC01NCw2ICs1Niw3IEBACiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2luY2x1
ZGUgIlNoYWRvd0NoaWNrZW4uaCIKICNpbmNsdWRlICJTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVy
LmgiCisjaW5jbHVkZSAiU3Vic3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVy
LmgiCiAjaW5jbHVkZSAiU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIuaCIKICNp
bmNsdWRlICJTdG9wSWZOZWNlc3NhcnlUaW1lci5oIgpAQCAtODI4LDYgKzgzMSwyMiBAQCB2b2lk
IEhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MoRGVsZXRlQWxsCiAKICAgICBmb3IgKEV4ZWN1dGFi
bGVCYXNlKiBleGVjdXRhYmxlIDogbV9leGVjdXRhYmxlcykKICAgICAgICAgZXhlY3V0YWJsZS0+
Y2xlYXJDb2RlKCk7CisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgeworICAgICAgICAv
LyBXZSBtdXN0IGVuc3VyZSB0aGF0IHdlIGNsZWFyIHRoZSBKUyBjYWxsIElDcyBmcm9tIFdhc20u
IE90aGVyd2lzZSwgV2FzbSB3aWxsCisgICAgICAgIC8vIGhhdmUgbm8gaWRlYSB0aGF0IHdlIGNs
ZWFyZWQgdGhlIGNvZGUgZnJvbSBhbGwgb2YgdGhlIEV4ZWN1dGFibGVzIGluIHRoZQorICAgICAg
ICAvLyBWTS4gVGhpcyBjb3VsZCBsZWF2ZSBXYXNtIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZSB3
aGVyZSBpdCBoYXMgYW4gSUMgdGhhdAorICAgICAgICAvLyBwb2ludHMgaW50byBhIENvZGVCbG9j
ayB0aGF0IGNvdWxkIGJlIGRlYWQuIFRoZSBJQyB3aWxsIHN0aWxsIHN1Y2NlZWQgYmVjYXVzZQor
ICAgICAgICAvLyBpdCB1c2VzIGEgY2FsbGVlIGNoZWNrLCBidXQgdGhlbiBpdCB3aWxsIGNhbGwg
aW50byBkZWFkIGNvZGUuCisgICAgICAgIEhlYXBJdGVyYXRpb25TY29wZSBoZWFwSXRlcmF0aW9u
U2NvcGUoKnRoaXMpOworICAgICAgICBtX3ZtLT53ZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNl
LmZvckVhY2hMaXZlQ2VsbChbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5k
KSB7CisgICAgICAgICAgICBBU1NFUlQoa2luZCA9PSBIZWFwQ2VsbDo6S2luZDo6SlNDZWxsKTsK
KyAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19j
YXN0PEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqPihjZWxsKTsKKyAgICAgICAgICAgIGNvZGVCbG9j
ay0+Y2xlYXJKU0NhbGxJQ3MoKm1fdm0pOworICAgICAgICB9KTsKKyAgICB9CisjZW5kaWYKIH0K
IAogdm9pZCBIZWFwOjpkZWxldGVBbGxVbmxpbmtlZENvZGVCbG9ja3MoRGVsZXRlQWxsQ29kZUVm
Zm9ydCBlZmZvcnQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgJKHJl
dmlzaW9uIDIxNjE5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDkgQEAgcHVibGljOgogICAgIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTWFya2VkQ2VsbChjb25zdCBGdW5j
Jik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFjaExpdmVD
ZWxsKGNvbnN0IEZ1bmMmKTsKICAgICAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQWxs
b2NhdG9yRm9yU2l6ZVN0ZXAoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3Vic3BhY2UsIG1f
YWxsb2NhdG9yRm9yU2l6ZVN0ZXApOyB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAkocmV2aXNpb24gMjE2MTk4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTcyLDUgKzcyLDIzIEBAIHZvaWQgU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEYK
ICAgICAgICAgfSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Cit2b2lkIFN1YnNwYWNl
Ojpmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYgZnVuYykKK3sKKyAgICBmb3JFYWNoTWFya2Vk
QmxvY2soCisgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogaGFuZGxlKSB7CisgICAg
ICAgICAgICBoYW5kbGUtPmZvckVhY2hMaXZlQ2VsbCgKKyAgICAgICAgICAgICAgICBbJl0gKEhl
YXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5kKSAtPiBJdGVyYXRpb25TdGF0dXMgeyAK
KyAgICAgICAgICAgICAgICAgICAgZnVuYyhjZWxsLCBraW5kKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgIH0pOworICAgIGZvckVhY2hMYXJnZUFsbG9jYXRpb24oCisgICAgICAgIFsmXSAo
TGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uKSB7CisgICAgICAgICAgICBpZiAoYWxsb2NhdGlv
bi0+aXNMaXZlKCkpCisgICAgICAgICAgICAgICAgZnVuYyhhbGxvY2F0aW9uLT5jZWxsKCksIG1f
YXR0cmlidXRlcy5jZWxsS2luZCk7CisgICAgICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjE2
MTk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzIsNiArMTcyLDkgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhl
YXBUeXBlKQogICAgICwgc3RyaW5nU3BhY2UoIkpTU3RyaW5nIiwgaGVhcCkKICAgICAsIGRlc3Ry
dWN0aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9iamVjdCIsIGhlYXApCiAgICAgLCBz
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdFNwYWNlKCJKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3Bh
Y2UiLCBoZWFwKQorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICAsIHdlYkFzc2VtYmx5Q29k
ZUJsb2NrU3Vic3BhY2UoIkpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZSIsIGhlYXApCisj
ZW5kaWYKICAgICAsIHZtVHlwZSh2bVR5cGUpCiAgICAgLCBjbGllbnREYXRhKDApCiAgICAgLCB0
b3BWTUVudHJ5RnJhbWUobnVsbHB0cikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkocmV2aXNpb24gMjE2MTk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgog
I2luY2x1ZGUgIkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZS5oIgogI2luY2x1ZGUg
IkpTU3RyaW5nU3Vic3BhY2UuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vi
c3BhY2UuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlICJN
aWNyb3Rhc2suaCIKICNpbmNsdWRlICJOdW1lcmljU3RyaW5ncy5oIgpAQCAtMjkxLDYgKzI5Miw5
IEBAIHB1YmxpYzoKICAgICBKU1N0cmluZ1N1YnNwYWNlIHN0cmluZ1NwYWNlOwogICAgIEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2UgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CiAgICAgSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdFN1YnNwYWNlIHNlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3Bh
Y2U7CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tT
dWJzcGFjZSB3ZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlOworI2VuZGlmCiAKICNpZiBFTkFC
TEUoREZHX0pJVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8REZHOjpMb25nTGl2ZWRTdGF0ZT4gZGZn
U3RhdGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
Q29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjE2MTk4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc5LDYgKzc5LDEyIEBAIGJvb2wgSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6
aXNTYWZlVG9SdW4KICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmlzU2FmZVRvUnVuKG1lbW9yeS0+
bWVtb3J5KCkubW9kZSgpKTsKIH0KIAordm9pZCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpjbGVh
ckpTQ2FsbElDcyhWTSYgdm0pCit7CisgICAgZm9yIChhdXRvIGl0ZXIgPSBtX2NhbGxMaW5rSW5m
b3MuYmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpCisgICAgICAgICgqaXRlciktPnVubGluayh2bSk7
Cit9CisKIHZvaWQgSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTV2ViQXNzZW1ibHlDb2RlQmxv
Y2sqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNXZWJBc3NlbWJseUNvZGVCbG9jayo+KGNlbGwpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9j
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlDb2RlQmxvY2suaAkocmV2aXNpb24gMjE2MTk4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXYXNtIHsKIGNsYXNzIFBsYW47CiB9CiAKLWNsYXNzIEpT
V2ViQXNzZW1ibHlDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIEpTV2ViQXNzZW1i
bHlDb2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVm
IEpTQ2VsbCBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKQEAgLTU3LDYgKzU3
LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBz
dGF0aWMgU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVy
biAmdm0ud2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZTsKKyAgICB9CisKICAgICB1bnNpZ25l
ZCBmdW5jdGlvbkltcG9ydENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmZ1bmN0
aW9uSW1wb3J0Q291bnQoKTsgfQogICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbW9kdWxlLmdldCgpOyB9CiAKQEAgLTg3LDYgKzkzLDggQEAgcHVibGlj
OgogCiAgICAgV2FzbTo6Q29kZUJsb2NrJiBjb2RlQmxvY2soKSB7IHJldHVybiBtX2NvZGVCbG9j
ay5nZXQoKTsgfQogCisgICAgdm9pZCBjbGVhckpTQ2FsbElDcyhWTSYpOworCiBwcml2YXRlOgog
ICAgIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2soVk0mLCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmLCBj
b25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYpOwogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJs
b2NrU3Vic3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNw
YWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UuaCIKKworI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKKworI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
V2ViQXNzZW1ibHlDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiU3Vic3BhY2VJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2Ugewor
CitzdHJ1Y3QgRGVzdHJveUZ1bmMgeworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBvcGVyYXRvcigp
KFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2ZpbmFsPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+Ojp2YWx1ZSwgIk90aGVyd2lzZSwg
dGhpcyBjb2RlIHdvdWxkIG5vdCBiZSBjb3JyZWN0LiIpOworICAgICAgICBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrOjppbmZvKCktPm1ldGhvZFRhYmxlLmRlc3Ryb3koY2VsbCk7CisgICAgfQorfTsK
KworfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK0pTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJz
cGFjZTo6SlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYg
aGVhcCkKKyAgICA6IFN1YnNwYWNlKG5hbWUsIGhlYXAsIEFsbG9jYXRvckF0dHJpYnV0ZXMoTmVl
ZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpCit7Cit9CisKK0pTV2ViQXNzZW1ibHlD
b2RlQmxvY2tTdWJzcGFjZTo6fkpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZSgpCit7Cit9
CisKK0ZyZWVMaXN0IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZTo6ZmluaXNoU3dlZXAo
TWFya2VkQmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcE1v
ZGUgc3dlZXBNb2RlKQoreworICAgIHJldHVybiBoYW5kbGUuZmluaXNoU3dlZXBLbm93aW5nU3Vi
c3BhY2Uoc3dlZXBNb2RlLCBEZXN0cm95RnVuYygpKTsKK30KKwordm9pZCBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrU3Vic3BhY2U6OmRlc3Ryb3koVk0mIHZtLCBKU0NlbGwqIGNlbGwpCit7CisgICAg
RGVzdHJveUZ1bmMoKSh2bSwgY2VsbCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNl
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworI2luY2x1ZGUgIlN1YnNwYWNlLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3Bh
Y2UgOiBwdWJsaWMgU3Vic3BhY2UgeworcHVibGljOgorICAgIEpTV2ViQXNzZW1ibHlDb2RlQmxv
Y2tTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmKTsKKyAgICB2aXJ0dWFsIH5KU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrU3Vic3BhY2UoKTsKKyAgICAKKyAgICBGcmVlTGlzdCBmaW5pc2hTd2VlcChN
YXJrZWRCbG9jazo6SGFuZGxlJiwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRlc3Ryb3koVk0mLCBKU0NlbGwqKSBvdmVycmlkZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309189</attachid>
            <date>2017-05-05 11:13:51 -0700</date>
            <delta_ts>2017-05-05 11:16:55 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>20982</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2MjI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBA
CisyMDE3LTA1LTA0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENhbGxMaW5rSW5mb3MgYmVsb25naW5nIHRvIFdhc20tPkpTIHN0dWJzIG5lZWQgdG8gYmUgaW5m
b3JtZWQgd2hlbiB3ZSBjbGVhckNvZGUoKSBmcm9tIGFsbCBFeGVjdXRhYmxlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxNzA3CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zMTg5MTY0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIGEgV2FzbS0+SlMg
SUMgY2FsbCBzdHViIHdvdWxkIGdvIHN0YWxlCisgICAgICAgIGFuZCBwb2ludCBpbnRvIGEgQ29k
ZUJsb2NrIG5vIGxvbmdlciBvd25lZCBieSBhbnkgZXhlY3V0YWJsZS4gVGhlCisgICAgICAgIHBy
b2JsZW1hdGljIHNjZW5hcmlvIGlzIHRoaXM6CisKKyAgICAgICAgMS4gV2UgZ2VuZXJhdGUgdGhl
IGNhbGwgSUMgd2hpY2ggaGFzIGEgYnJhbmNoIG9uIGEgY2FsbGVlIGNoZWNrLiBUaGlzCisgICAg
ICAgICAgIGNhbGxlZSBvd25zIHRoZSBFeGVjdXRhYmxlIGluIHF1ZXN0aW9uLiBJZiB0aGUgYnJh
bmNoIHN1Y2NlZWRzLCBpdAorICAgICAgICAgICB3aWxsIGNhbGwgY29kZSBiZWxvbmdpbmcgdG8g
YSBwYXJ0aWN1bGFyIENvZGVCbG9jayBhc3NvY2lhdGVkIHdpdGgKKyAgICAgICAgICAgdGhhdCBF
eGVjdXRhYmxlLgorCisgICAgICAgIDIuIEhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MgaXMgY2Fs
bGVkLiBUaGlzIGxlYWRzIHRoZSBFeGVjdXRhYmxlIHRvIGNsZWFyCisgICAgICAgICAgIGl0cyB2
YXJpb3VzIENvZGVCbG9jayByZWZlcmVuY2VzLgorCisgICAgICAgIDMuIFdhc20gaGFzIG5vIGlk
ZWEgdGhpcyBoYXBwZW5lZCwgc28gbm93IGl0IGhhcyBzdGFsZSBJQ3MgdGhhdCBwb2ludCBpbnRv
CisgICAgICAgICAgIGNvZGUgZnJvbSBhIENvZGVCbG9jayBubyBsb25nZXIgYmVsb25naW5nIHRv
IGFuIEV4ZWN1dGFibGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgYnVnIGJ5IGlu
Zm9ybWluZyBhbGwgSlNXZWJBc3NlbWJseUNvZGVCbG9ja3MgdG8gdW5saW5rCisgICAgICAgIHRo
ZWlyIENhbGxMaW5rSW5mbyB3aGVuIEhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MgaXMgY2FsbGVk
LgorCisgICAgICAgIFdlIHRyYWNrIGFsbCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrcyBieSBjcmVh
dGluZyBhIG5ldyBzdWJzcGFjZSBmb3IgdGhlbS4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8g
cXVpY2tseSBpdGVyYXRlIG92ZXIgdGhlIGxpdmUgSlNXZWJBc3NlbWJseUNvZGVCbG9ja3MgaW4g
dGhlCisgICAgICAgIGhlYXAuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6
OkhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MpOgorICAgICAgICAqIGhlYXAvU3Vic3BhY2UuaDoK
KyAgICAgICAgKiBoZWFwL1N1YnNwYWNlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdWJzcGFj
ZTo6Zm9yRWFjaExpdmVDZWxsKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAg
KEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogd2FzbS9q
cy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJs
eUNvZGVCbG9jazo6Y2xlYXJKU0NhbGxJQ3MpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3Nl
bWJseUNvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpj
cmVhdGVTdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrOjpmdW5jdGlvbkltcG9ydENvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNX
ZWJBc3NlbWJseUNvZGVCbG9jazo6bW9kdWxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNX
ZWJBc3NlbWJseUNvZGVCbG9jazo6anNFbnRyeXBvaW50Q2FsbGVlRnJvbUZ1bmN0aW9uSW5kZXhT
cGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6Ondh
c21FbnRyeXBvaW50TG9hZExvY2F0aW9uRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6Ondhc21Ub0pzQ2FsbFN0dWJG
b3JJbXBvcnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2Nr
OjpvZmZzZXRPZkltcG9ydFdhc21Ub0pTU3R1Yik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpT
V2ViQXNzZW1ibHlDb2RlQmxvY2s6OmNvZGVCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6Om9mZnNldE9mSW1wb3J0U3R1YnMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjphbGxvY2F0aW9uU2l6ZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OmltcG9ydFdhc21U
b0pTU3R1Yik6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJs
b2NrU3Vic3BhY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVC
bG9ja1N1YnNwYWNlOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UpOgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2U6On5KU1dlYkFzc2VtYmx5Q29kZUJs
b2NrU3Vic3BhY2UpOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3Bh
Y2U6OmZpbmlzaFN3ZWVwKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1
YnNwYWNlOjpkZXN0cm95KToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxv
Y2tTdWJzcGFjZS5oOiBBZGRlZC4KKwogMjAxNy0wNS0wNCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9s
bXN0ZWFkQGFtLnNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dIFJlbW92ZSByZWR1bmRhbnQgbWFj
cm9zIHRoYXQgYXJlIHNldCBpbiB0aGUgQ01ha2UgY29uZmlnCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMTYxOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTk2NSw2ICs5NjUsNyBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHdhc20vV2FzbVdvcmtsaXN0LmNwcAogCiAg
ICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcAorICAgIHdhc20vanMvSlNXZWJB
c3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmNwcAogICAgIHdhc20vanMvSlNXZWJBc3NlbWJseUNv
bXBpbGVFcnJvci5jcHAKICAgICB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKICAg
ICB3YXNtL2pzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjE2MTk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTE1NTUsNiArMTU1NSw4IEBACiAJCTc5REZDQkRCMUQ4OEM1OTYwMDUyN0QwMyAvKiBIYXNP
d25Qcm9wZXJ0eUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3OURGQ0JEQTFEODhDNTk2MDA1MjdEMDMgLyogSGFzT3duUHJvcGVydHlDYWNoZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5RUUw
QkZGMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RUUwQkZEMUI0QUZCODUwMDAz
ODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNwcCAqLzsgfTsKIAkJNzlFRTBDMDAxQjRBRkI4
NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RUUwQkZFMUI0QUZCODUwMDAzODVDOSAvKiBWYXJp
YWJsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNzlFRkQ0ODMxRUJDMDQ1QzAwRjNERkVBIC8qIEpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2tTdWJzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3OUVGRDQ4MTFFQkMwNDVDMDBGM0RGRUEgLyogSlNXZWJBc3NlbWJseUNvZGVCbG9j
a1N1YnNwYWNlLmNwcCAqLzsgfTsKKwkJNzlFRkQ0ODQxRUJDMDQ1QzAwRjNERkVBIC8qIEpTV2Vi
QXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzlFRkQ0ODIxRUJDMDQ1QzAwRjNERkVBIC8qIEpTV2ViQXNzZW1i
bHlDb2RlQmxvY2tTdWJzcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTc5RjhGQzFFMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1
c2hJbnNlcnRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3OUY4RkMxQzFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5z
ZXJ0aW9uUGhhc2UuY3BwICovOyB9OwogCQk3OUY4RkMxRjFCOUZFRDBGMDBDQTY2QUIgLyogREZH
TWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjhGQzFEMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFs
Rmx1c2hJbnNlcnRpb25QaGFzZS5oICovOyB9OwogCQk3OUZDOEEwODFFMzJFOUYwMDBEODhGMEUg
LyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzlGQzhBMDcxRTMyRTlGMDAwRDg4RjBFIC8qIERGR1JlZ2lzdGVy
ZWRTdHJ1Y3R1cmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNDEzMSw2ICs0MTMzLDggQEAKIAkJNzlERkNCREExRDg4QzU5NjAwNTI3RDAzIC8q
IEhhc093blByb3BlcnR5Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGFzT3duUHJvcGVydHlDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OUVF
MEJGRDFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYXJpYWJsZUVudmlyb25tZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzlFRTBCRkUxQjRBRkI4NTAwMDM4NUM5IC8qIFZh
cmlhYmxlRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFy
aWFibGVFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OUVGRDQ4
MTFFQkMwNDVDMDBGM0RGRUEgLyogSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViQXNzZW1ibHlDb2RlQmxv
Y2tTdWJzcGFjZS5jcHA7IHBhdGggPSBqcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OUVGRDQ4MjFFQkMwNDVDMDBGM0RG
RUEgLyogSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5oOyBwYXRoID0g
anMvSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTc5RjhGQzFDMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNl
cnRpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdN
YXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHTWF4aW1hbEZsdXNo
SW5zZXJ0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OUY4RkMx
RDFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhh
c2UuaDsgcGF0aCA9IGRmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3OUZDOEEwNzFFMzJFOUYwMDBEODhGMEUgLyogREZHUmVn
aXN0ZXJlZFN0cnVjdHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdS
ZWdpc3RlcmVkU3RydWN0dXJlLmg7IHBhdGggPSBkZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODAyMiw2ICs4MDI2LDggQEAKIAkJCWNo
aWxkcmVuID0gKAogCQkJCTUzODNBQTJGMUU2NUU4QTEwMEE1MzJGQyAvKiBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrLmNwcCAqLywKIAkJCQlBRDlFODUyRTFFOEEwQzZFMDA4REUzOUUgLyogSlNXZWJB
c3NlbWJseUNvZGVCbG9jay5oICovLAorCQkJCTc5RUZENDgxMUVCQzA0NUMwMEYzREZFQSAvKiBK
U1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UuY3BwICovLAorCQkJCTc5RUZENDgyMUVCQzA0
NUMwMEYzREZFQSAvKiBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UuaCAqLywKIAkJCQlB
RDJGQ0JBNjFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5jcHAg
Ki8sCiAJCQkJQUQyRkNCQTcxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlDb21waWxl
RXJyb3IuaCAqLywKIAkJCQk3OTZGQjQzOTFERkY4QzNGMDAzOUM5NUQgLyogSlNXZWJBc3NlbWJs
eUhlbHBlcnMuaCAqLywKQEAgLTg5NTMsNiArODk1OSw3IEBACiAJCQkJMEZCMTRFMUYxODEyNEFD
RTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NkNDODVBMTBFRTc5QTQ3MDAyODg2ODIgLyogSklUSW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkUzQTA2QkUxQzExMDQxMjAwMzkwRkREIC8qIEpJVExlZnRTaGlmdEdlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNzlFRkQ0ODQxRUJDMDQ1QzAwRjNERkVBIC8qIEpTV2ViQXNz
ZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzkyMzNDMkIxRDM0
NzE1NzAwQzVBODM0IC8qIEpJVE1hdGhJQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlCMTc4OEUx
RDM5OUI4MDAwQjFBNTY3IC8qIEpJVE1hdGhJQ0ZvcndhcmRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3OUFGMEJFNDFEM0VGRDRDMDBFOTVGQTUgLyogSklUTWF0aElDSW5saW5lUmVzdWx0LmggaW4g
SGVhZGVycyAqLywKQEAgLTEwNjYwLDYgKzEwNjY3LDcgQEAKIAkJCQk2NTg4MjRCMTFFNUNGREY0
MDBGQjczNTkgLyogQ29uZmlnRmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzAwODc0MTE3
Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc0REVGOTUx
ODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NzlFRkQ0ODMxRUJDMDQ1QzAwRjNERkVBIC8qIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFj
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNN
b2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxM0ZFQ0UwNkQzQjQ0NUZD
QjZDOTM0NjEgLyogSlNNb2R1bGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMxOENC
QzAxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIx
NjE5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw2ICs0Nyw4IEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNs
dWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCIKKyNp
bmNsdWRlICJKU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTWFya2VkQWxsb2Nh
dG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIk1hY2hpbmVTdGFja01hcmtlci5oIgogI2luY2x1ZGUg
Ik1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcmtpbmdDb25zdHJhaW50U2V0Lmgi
CkBAIC01NCw2ICs1Niw3IEBACiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2luY2x1
ZGUgIlNoYWRvd0NoaWNrZW4uaCIKICNpbmNsdWRlICJTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVy
LmgiCisjaW5jbHVkZSAiU3Vic3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVy
LmgiCiAjaW5jbHVkZSAiU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIuaCIKICNp
bmNsdWRlICJTdG9wSWZOZWNlc3NhcnlUaW1lci5oIgpAQCAtODI4LDYgKzgzMSwyMiBAQCB2b2lk
IEhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MoRGVsZXRlQWxsCiAKICAgICBmb3IgKEV4ZWN1dGFi
bGVCYXNlKiBleGVjdXRhYmxlIDogbV9leGVjdXRhYmxlcykKICAgICAgICAgZXhlY3V0YWJsZS0+
Y2xlYXJDb2RlKCk7CisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgeworICAgICAgICAv
LyBXZSBtdXN0IGVuc3VyZSB0aGF0IHdlIGNsZWFyIHRoZSBKUyBjYWxsIElDcyBmcm9tIFdhc20u
IE90aGVyd2lzZSwgV2FzbSB3aWxsCisgICAgICAgIC8vIGhhdmUgbm8gaWRlYSB0aGF0IHdlIGNs
ZWFyZWQgdGhlIGNvZGUgZnJvbSBhbGwgb2YgdGhlIEV4ZWN1dGFibGVzIGluIHRoZQorICAgICAg
ICAvLyBWTS4gVGhpcyBjb3VsZCBsZWF2ZSBXYXNtIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZSB3
aGVyZSBpdCBoYXMgYW4gSUMgdGhhdAorICAgICAgICAvLyBwb2ludHMgaW50byBhIENvZGVCbG9j
ayB0aGF0IGNvdWxkIGJlIGRlYWQuIFRoZSBJQyB3aWxsIHN0aWxsIHN1Y2NlZWQgYmVjYXVzZQor
ICAgICAgICAvLyBpdCB1c2VzIGEgY2FsbGVlIGNoZWNrLCBidXQgdGhlbiBpdCB3aWxsIGNhbGwg
aW50byBkZWFkIGNvZGUuCisgICAgICAgIEhlYXBJdGVyYXRpb25TY29wZSBoZWFwSXRlcmF0aW9u
U2NvcGUoKnRoaXMpOworICAgICAgICBtX3ZtLT53ZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNl
LmZvckVhY2hMaXZlQ2VsbChbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5k
KSB7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGtpbmQsIGtpbmQgPT0gSGVhcENlbGw6Oktp
bmQ6OkpTQ2VsbCk7CisgICAgICAgICAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKj4oY2VsbCk7CisgICAgICAg
ICAgICBjb2RlQmxvY2stPmNsZWFySlNDYWxsSUNzKCptX3ZtKTsKKyAgICAgICAgfSk7CisgICAg
fQorI2VuZGlmCiB9CiAKIHZvaWQgSGVhcDo6ZGVsZXRlQWxsVW5saW5rZWRDb2RlQmxvY2tzKERl
bGV0ZUFsbENvZGVFZmZvcnQgZWZmb3J0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvU3Vic3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
dWJzcGFjZS5oCShyZXZpc2lvbiAyMTYxOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TdWJzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw5IEBAIHB1YmxpYzoKICAg
ICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9yRWFjaE1hcmtlZENl
bGwoY29uc3QgRnVuYyYpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lk
IGZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jJik7CiAgICAgCiAgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZkFsbG9jYXRvckZvclNpemVTdGVwKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KFN1YnNwYWNlLCBtX2FsbG9jYXRvckZvclNpemVTdGVwKTsgfQogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxpbmVzLmgJKHJldmlzaW9uIDIxNjE5
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Miw1ICs3MiwyMyBAQCB2b2lkIFN1YnNwYWNlOjpmb3JFYWNoTWFya2Vk
Q2VsbChjb25zdCBGCiAgICAgICAgIH0pOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgor
dm9pZCBTdWJzcGFjZTo6Zm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmMmIGZ1bmMpCit7CisgICAg
Zm9yRWFjaE1hcmtlZEJsb2NrKAorICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhh
bmRsZSkgeworICAgICAgICAgICAgaGFuZGxlLT5mb3JFYWNoTGl2ZUNlbGwoCisgICAgICAgICAg
ICAgICAgWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkgLT4gSXRlcmF0
aW9uU3RhdHVzIHsgCisgICAgICAgICAgICAgICAgICAgIGZ1bmMoY2VsbCwga2luZCk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICBmb3JFYWNoTGFyZ2VBbGxvY2F0aW9uKAor
ICAgICAgICBbJl0gKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbikgeworICAgICAgICAgICAg
aWYgKGFsbG9jYXRpb24tPmlzTGl2ZSgpKQorICAgICAgICAgICAgICAgIGZ1bmMoYWxsb2NhdGlv
bi0+Y2VsbCgpLCBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQpOworICAgICAgICB9KTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJ
KHJldmlzaW9uIDIxNjE5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDYgKzE3Miw5IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIHN0cmluZ1NwYWNlKCJKU1N0cmluZyIsIGhlYXAp
CiAgICAgLCBkZXN0cnVjdGlibGVPYmplY3RTcGFjZSgiSlNEZXN0cnVjdGlibGVPYmplY3QiLCBo
ZWFwKQogICAgICwgc2VnbWVudGVkVmFyaWFibGVPYmplY3RTcGFjZSgiSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdFNwYWNlIiwgaGVhcCkKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgLCB3
ZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlKCJKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3Bh
Y2UiLCBoZWFwKQorI2VuZGlmCiAgICAgLCB2bVR5cGUodm1UeXBlKQogICAgICwgY2xpZW50RGF0
YSgwKQogICAgICwgdG9wVk1FbnRyeUZyYW1lKG51bGxwdHIpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDIxNjE5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRl
ICJKU0xvY2suaCIKICNpbmNsdWRlICJKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3Vic3BhY2Uu
aCIKICNpbmNsdWRlICJKU1N0cmluZ1N1YnNwYWNlLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJs
eUNvZGVCbG9ja1N1YnNwYWNlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgi
CiAjaW5jbHVkZSAiTWljcm90YXNrLmgiCiAjaW5jbHVkZSAiTnVtZXJpY1N0cmluZ3MuaCIKQEAg
LTI5MSw2ICsyOTIsOSBAQCBwdWJsaWM6CiAgICAgSlNTdHJpbmdTdWJzcGFjZSBzdHJpbmdTcGFj
ZTsKICAgICBKU0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNlIGRlc3RydWN0aWJsZU9iamVjdFNw
YWNlOwogICAgIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZSBzZWdtZW50ZWRWYXJp
YWJsZU9iamVjdFNwYWNlOworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICBKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrU3Vic3BhY2Ugd2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZTsKKyNlbmRp
ZgogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPERGRzo6TG9uZ0xp
dmVkU3RhdGU+IGRmZ1N0YXRlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIxNjE5
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxv
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSwxMiBAQCBib29sIEpTV2ViQXNzZW1i
bHlDb2RlQmxvY2s6OmlzU2FmZVRvUnVuCiAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1NhZmVU
b1J1bihtZW1vcnktPm1lbW9yeSgpLm1vZGUoKSk7CiB9CiAKK3ZvaWQgSlNXZWJBc3NlbWJseUNv
ZGVCbG9jazo6Y2xlYXJKU0NhbGxJQ3MoVk0mIHZtKQoreworICAgIGZvciAoYXV0byBpdGVyID0g
bV9jYWxsTGlua0luZm9zLmJlZ2luKCk7ICEhaXRlcjsgKytpdGVyKQorICAgICAgICAoKml0ZXIp
LT51bmxpbmsodm0pOworfQorCiB2b2lkIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBKU1dlYkFz
c2VtYmx5Q29kZUJsb2NrKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTV2ViQXNzZW1ibHlDb2RlQmxv
Y2sqPihjZWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlDb2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgJKHJldmlzaW9uIDIxNjE5OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2FzbSB7CiBjbGFzcyBQbGFuOwog
fQogCi1jbGFzcyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CitjbGFz
cyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7
CkBAIC01Nyw2ICs1NywxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGU+CisgICAgc3RhdGljIFN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgewor
ICAgICAgICByZXR1cm4gJnZtLndlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2U7CisgICAgfQor
CiAgICAgdW5zaWduZWQgZnVuY3Rpb25JbXBvcnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZUJsb2NrLT5mdW5jdGlvbkltcG9ydENvdW50KCk7IH0KICAgICBKU1dlYkFzc2VtYmx5TW9kdWxl
KiBtb2R1bGUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZS5nZXQoKTsgfQogCkBAIC04Nyw2ICs5
Myw4IEBAIHB1YmxpYzoKIAogICAgIFdhc206OkNvZGVCbG9jayYgY29kZUJsb2NrKCkgeyByZXR1
cm4gbV9jb2RlQmxvY2suZ2V0KCk7IH0KIAorICAgIHZvaWQgY2xlYXJKU0NhbGxJQ3MoVk0mKTsK
KwogcHJpdmF0ZToKICAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKFZNJiwgUmVmPFdhc206OkNv
ZGVCbG9jaz4mJiwgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mKTsKICAgICBERUNMQVJF
X0VYUE9SVF9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlD
b2RlQmxvY2tTdWJzcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmgiCisKKyNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIK
KyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIlN1YnNwYWNlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
bmFtZXNwYWNlIHsKKworc3RydWN0IERlc3Ryb3lGdW5jIHsKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgb3BlcmF0b3IoKShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QKKyAgICB7CisgICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19maW5hbDxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPjo6dmFsdWUs
ICJPdGhlcndpc2UsIHRoaXMgY29kZSB3b3VsZCBub3QgYmUgY29ycmVjdC4iKTsKKyAgICAgICAg
SlNXZWJBc3NlbWJseUNvZGVCbG9jazo6aW5mbygpLT5tZXRob2RUYWJsZS5kZXN0cm95KGNlbGwp
OworICAgIH0KK307CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrU3Vic3BhY2U6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZShDU3RyaW5n
IG5hbWUsIEhlYXAmIGhlYXApCisgICAgOiBTdWJzcGFjZShuYW1lLCBoZWFwLCBBbGxvY2F0b3JB
dHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKQoreworfQorCitK
U1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2U6On5KU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vi
c3BhY2UoKQoreworfQorCitGcmVlTGlzdCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2U6
OmZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgTWFya2VkQmxvY2s6Okhh
bmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSkKK3sKKyAgICByZXR1cm4gaGFuZGxlLmZpbmlzaFN3
ZWVwS25vd2luZ1N1YnNwYWNlKHN3ZWVwTW9kZSwgRGVzdHJveUZ1bmMoKSk7Cit9CisKK3ZvaWQg
SlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlOjpkZXN0cm95KFZNJiB2bSwgSlNDZWxsKiBj
ZWxsKQoreworICAgIERlc3Ryb3lGdW5jKCkodm0sIGNlbGwpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2Rl
QmxvY2tTdWJzcGFjZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNpbmNsdWRl
ICJTdWJzcGFjZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNXZWJBc3NlbWJseUNv
ZGVCbG9ja1N1YnNwYWNlIDogcHVibGljIFN1YnNwYWNlIHsKK3B1YmxpYzoKKyAgICBKU1dlYkFz
c2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJik7CisgICAgdmlydHVh
bCB+SlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlKCk7CisgICAgCisgICAgRnJlZUxpc3Qg
ZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3
ZWVwTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXN0cm95KFZNJiwgSlNDZWxsKikgb3ZlcnJp
ZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NF
TUJMWSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309190</attachid>
            <date>2017-05-05 11:16:55 -0700</date>
            <delta_ts>2017-05-08 21:19:18 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>21003</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2MjI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBA
CisyMDE3LTA1LTA0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENhbGxMaW5rSW5mb3MgYmVsb25naW5nIHRvIFdhc20tPkpTIHN0dWJzIG5lZWQgdG8gYmUgaW5m
b3JtZWQgd2hlbiB3ZSBjbGVhckNvZGUoKSBmcm9tIGFsbCBFeGVjdXRhYmxlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxNzA3CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zMTg5MTY0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIGEgV2FzbS0+SlMg
SUMgY2FsbCBzdHViIHdvdWxkIGdvIHN0YWxlCisgICAgICAgIGFuZCBwb2ludCBpbnRvIGEgQ29k
ZUJsb2NrIG5vIGxvbmdlciBvd25lZCBieSBhbnkgZXhlY3V0YWJsZS4gVGhlCisgICAgICAgIHBy
b2JsZW1hdGljIHNjZW5hcmlvIGlzIHRoaXM6CisKKyAgICAgICAgMS4gV2UgZ2VuZXJhdGUgdGhl
IGNhbGwgSUMgd2hpY2ggaGFzIGEgYnJhbmNoIG9uIGEgY2FsbGVlIGNoZWNrLiBUaGlzCisgICAg
ICAgICAgIGNhbGxlZSBvd25zIHRoZSBFeGVjdXRhYmxlIGluIHF1ZXN0aW9uLiBJZiB0aGUgYnJh
bmNoIHN1Y2NlZWRzLCBpdAorICAgICAgICAgICB3aWxsIGNhbGwgY29kZSBiZWxvbmdpbmcgdG8g
YSBwYXJ0aWN1bGFyIENvZGVCbG9jayBhc3NvY2lhdGVkIHdpdGgKKyAgICAgICAgICAgdGhhdCBF
eGVjdXRhYmxlLgorCisgICAgICAgIDIuIEhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MgaXMgY2Fs
bGVkLiBUaGlzIGxlYWRzIHRoZSBFeGVjdXRhYmxlIHRvIGNsZWFyCisgICAgICAgICAgIGl0cyB2
YXJpb3VzIENvZGVCbG9jayByZWZlcmVuY2VzLgorCisgICAgICAgIDMuIFdhc20gaGFzIG5vIGlk
ZWEgdGhpcyBoYXBwZW5lZCwgc28gbm93IGl0IGhhcyBzdGFsZSBJQ3MgdGhhdCBwb2ludCBpbnRv
CisgICAgICAgICAgIGNvZGUgZnJvbSBhIENvZGVCbG9jayBubyBsb25nZXIgYmVsb25naW5nIHRv
IGFuIEV4ZWN1dGFibGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgYnVnIGJ5IGlu
Zm9ybWluZyBhbGwgSlNXZWJBc3NlbWJseUNvZGVCbG9ja3MgdG8gdW5saW5rCisgICAgICAgIHRo
ZWlyIENhbGxMaW5rSW5mbyB3aGVuIEhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MgaXMgY2FsbGVk
LgorCisgICAgICAgIFdlIHRyYWNrIGFsbCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrcyBieSBjcmVh
dGluZyBhIG5ldyBzdWJzcGFjZSBmb3IgdGhlbS4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8g
cXVpY2tseSBpdGVyYXRlIG92ZXIgdGhlIGxpdmUgSlNXZWJBc3NlbWJseUNvZGVCbG9ja3MgaW4g
dGhlCisgICAgICAgIGhlYXAuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6
OkhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MpOgorICAgICAgICAqIGhlYXAvU3Vic3BhY2UuaDoK
KyAgICAgICAgKiBoZWFwL1N1YnNwYWNlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdWJzcGFj
ZTo6Zm9yRWFjaExpdmVDZWxsKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAg
KEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogd2FzbS9q
cy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJs
eUNvZGVCbG9jazo6Y2xlYXJKU0NhbGxJQ3MpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3Nl
bWJseUNvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpj
cmVhdGVTdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrOjpmdW5jdGlvbkltcG9ydENvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNX
ZWJBc3NlbWJseUNvZGVCbG9jazo6bW9kdWxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNX
ZWJBc3NlbWJseUNvZGVCbG9jazo6anNFbnRyeXBvaW50Q2FsbGVlRnJvbUZ1bmN0aW9uSW5kZXhT
cGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6Ondh
c21FbnRyeXBvaW50TG9hZExvY2F0aW9uRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6Ondhc21Ub0pzQ2FsbFN0dWJG
b3JJbXBvcnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2Nr
OjpvZmZzZXRPZkltcG9ydFdhc21Ub0pTU3R1Yik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpT
V2ViQXNzZW1ibHlDb2RlQmxvY2s6OmNvZGVCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6Om9mZnNldE9mSW1wb3J0U3R1YnMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjphbGxvY2F0aW9uU2l6ZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OmltcG9ydFdhc21U
b0pTU3R1Yik6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJs
b2NrU3Vic3BhY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVC
bG9ja1N1YnNwYWNlOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UpOgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2U6On5KU1dlYkFzc2VtYmx5Q29kZUJs
b2NrU3Vic3BhY2UpOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3Bh
Y2U6OmZpbmlzaFN3ZWVwKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1
YnNwYWNlOjpkZXN0cm95KToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxv
Y2tTdWJzcGFjZS5oOiBBZGRlZC4KKwogMjAxNy0wNS0wNCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9s
bXN0ZWFkQGFtLnNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dIFJlbW92ZSByZWR1bmRhbnQgbWFj
cm9zIHRoYXQgYXJlIHNldCBpbiB0aGUgQ01ha2UgY29uZmlnCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMTYxOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTk2NSw2ICs5NjUsNyBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHdhc20vV2FzbVdvcmtsaXN0LmNwcAogCiAg
ICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcAorICAgIHdhc20vanMvSlNXZWJB
c3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmNwcAogICAgIHdhc20vanMvSlNXZWJBc3NlbWJseUNv
bXBpbGVFcnJvci5jcHAKICAgICB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKICAg
ICB3YXNtL2pzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjE2MTk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTE1NTUsNiArMTU1NSw4IEBACiAJCTc5REZDQkRCMUQ4OEM1OTYwMDUyN0QwMyAvKiBIYXNP
d25Qcm9wZXJ0eUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3OURGQ0JEQTFEODhDNTk2MDA1MjdEMDMgLyogSGFzT3duUHJvcGVydHlDYWNoZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5RUUw
QkZGMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RUUwQkZEMUI0QUZCODUwMDAz
ODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNwcCAqLzsgfTsKIAkJNzlFRTBDMDAxQjRBRkI4
NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RUUwQkZFMUI0QUZCODUwMDAzODVDOSAvKiBWYXJp
YWJsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNzlFRkQ0ODMxRUJDMDQ1QzAwRjNERkVBIC8qIEpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2tTdWJzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3OUVGRDQ4MTFFQkMwNDVDMDBGM0RGRUEgLyogSlNXZWJBc3NlbWJseUNvZGVCbG9j
a1N1YnNwYWNlLmNwcCAqLzsgfTsKKwkJNzlFRkQ0ODQxRUJDMDQ1QzAwRjNERkVBIC8qIEpTV2Vi
QXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzlFRkQ0ODIxRUJDMDQ1QzAwRjNERkVBIC8qIEpTV2ViQXNzZW1i
bHlDb2RlQmxvY2tTdWJzcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTc5RjhGQzFFMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1
c2hJbnNlcnRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3OUY4RkMxQzFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5z
ZXJ0aW9uUGhhc2UuY3BwICovOyB9OwogCQk3OUY4RkMxRjFCOUZFRDBGMDBDQTY2QUIgLyogREZH
TWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjhGQzFEMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFs
Rmx1c2hJbnNlcnRpb25QaGFzZS5oICovOyB9OwogCQk3OUZDOEEwODFFMzJFOUYwMDBEODhGMEUg
LyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzlGQzhBMDcxRTMyRTlGMDAwRDg4RjBFIC8qIERGR1JlZ2lzdGVy
ZWRTdHJ1Y3R1cmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNDEzMSw2ICs0MTMzLDggQEAKIAkJNzlERkNCREExRDg4QzU5NjAwNTI3RDAzIC8q
IEhhc093blByb3BlcnR5Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGFzT3duUHJvcGVydHlDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OUVF
MEJGRDFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYXJpYWJsZUVudmlyb25tZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzlFRTBCRkUxQjRBRkI4NTAwMDM4NUM5IC8qIFZh
cmlhYmxlRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFy
aWFibGVFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OUVGRDQ4
MTFFQkMwNDVDMDBGM0RGRUEgLyogSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViQXNzZW1ibHlDb2RlQmxv
Y2tTdWJzcGFjZS5jcHA7IHBhdGggPSBqcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OUVGRDQ4MjFFQkMwNDVDMDBGM0RG
RUEgLyogSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5oOyBwYXRoID0g
anMvSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTc5RjhGQzFDMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNl
cnRpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdN
YXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHTWF4aW1hbEZsdXNo
SW5zZXJ0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OUY4RkMx
RDFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhh
c2UuaDsgcGF0aCA9IGRmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3OUZDOEEwNzFFMzJFOUYwMDBEODhGMEUgLyogREZHUmVn
aXN0ZXJlZFN0cnVjdHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdS
ZWdpc3RlcmVkU3RydWN0dXJlLmg7IHBhdGggPSBkZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODAyMiw2ICs4MDI2LDggQEAKIAkJCWNo
aWxkcmVuID0gKAogCQkJCTUzODNBQTJGMUU2NUU4QTEwMEE1MzJGQyAvKiBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrLmNwcCAqLywKIAkJCQlBRDlFODUyRTFFOEEwQzZFMDA4REUzOUUgLyogSlNXZWJB
c3NlbWJseUNvZGVCbG9jay5oICovLAorCQkJCTc5RUZENDgxMUVCQzA0NUMwMEYzREZFQSAvKiBK
U1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UuY3BwICovLAorCQkJCTc5RUZENDgyMUVCQzA0
NUMwMEYzREZFQSAvKiBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UuaCAqLywKIAkJCQlB
RDJGQ0JBNjFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5jcHAg
Ki8sCiAJCQkJQUQyRkNCQTcxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlDb21waWxl
RXJyb3IuaCAqLywKIAkJCQk3OTZGQjQzOTFERkY4QzNGMDAzOUM5NUQgLyogSlNXZWJBc3NlbWJs
eUhlbHBlcnMuaCAqLywKQEAgLTg5NTMsNiArODk1OSw3IEBACiAJCQkJMEZCMTRFMUYxODEyNEFD
RTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NkNDODVBMTBFRTc5QTQ3MDAyODg2ODIgLyogSklUSW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkUzQTA2QkUxQzExMDQxMjAwMzkwRkREIC8qIEpJVExlZnRTaGlmdEdlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNzlFRkQ0ODQxRUJDMDQ1QzAwRjNERkVBIC8qIEpTV2ViQXNz
ZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzkyMzNDMkIxRDM0
NzE1NzAwQzVBODM0IC8qIEpJVE1hdGhJQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlCMTc4OEUx
RDM5OUI4MDAwQjFBNTY3IC8qIEpJVE1hdGhJQ0ZvcndhcmRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3OUFGMEJFNDFEM0VGRDRDMDBFOTVGQTUgLyogSklUTWF0aElDSW5saW5lUmVzdWx0LmggaW4g
SGVhZGVycyAqLywKQEAgLTEwNjYwLDYgKzEwNjY3LDcgQEAKIAkJCQk2NTg4MjRCMTFFNUNGREY0
MDBGQjczNTkgLyogQ29uZmlnRmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzAwODc0MTE3
Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc0REVGOTUx
ODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NzlFRkQ0ODMxRUJDMDQ1QzAwRjNERkVBIC8qIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFj
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNN
b2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxM0ZFQ0UwNkQzQjQ0NUZD
QjZDOTM0NjEgLyogSlNNb2R1bGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMxOENC
QzAxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIx
NjE5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NywxMyArNDcsMTYgQEAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oIgor
I2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlDb2RlQmxvY2suaCIKICNpbmNsdWRlICJNYWNoaW5lU3Rh
Y2tNYXJrZXIuaCIKKyNpbmNsdWRlICJNYXJrZWRBbGxvY2F0b3JJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFya2luZ0NvbnN0cmFpbnRTZXQu
aCIKICNpbmNsdWRlICJQcmV2ZW50Q29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiU2FtcGxp
bmdQcm9maWxlci5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKICNpbmNsdWRlICJTcGFj
ZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiU3Vic3BhY2VJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiU3RvY2hhc3RpY1NwYWNlVGltZU11
dGF0b3JTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJTdG9wSWZOZWNlc3NhcnlUaW1lci5oIgpAQCAt
ODI4LDYgKzgzMSwyMiBAQCB2b2lkIEhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MoRGVsZXRlQWxs
CiAKICAgICBmb3IgKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlIDogbV9leGVjdXRhYmxlcykK
ICAgICAgICAgZXhlY3V0YWJsZS0+Y2xlYXJDb2RlKCk7CisKKyNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCisgICAgeworICAgICAgICAvLyBXZSBtdXN0IGVuc3VyZSB0aGF0IHdlIGNsZWFyIHRoZSBK
UyBjYWxsIElDcyBmcm9tIFdhc20uIE90aGVyd2lzZSwgV2FzbSB3aWxsCisgICAgICAgIC8vIGhh
dmUgbm8gaWRlYSB0aGF0IHdlIGNsZWFyZWQgdGhlIGNvZGUgZnJvbSBhbGwgb2YgdGhlIEV4ZWN1
dGFibGVzIGluIHRoZQorICAgICAgICAvLyBWTS4gVGhpcyBjb3VsZCBsZWF2ZSBXYXNtIGluIGFu
IGluY29uc2lzdGVudCBzdGF0ZSB3aGVyZSBpdCBoYXMgYW4gSUMgdGhhdAorICAgICAgICAvLyBw
b2ludHMgaW50byBhIENvZGVCbG9jayB0aGF0IGNvdWxkIGJlIGRlYWQuIFRoZSBJQyB3aWxsIHN0
aWxsIHN1Y2NlZWQgYmVjYXVzZQorICAgICAgICAvLyBpdCB1c2VzIGEgY2FsbGVlIGNoZWNrLCBi
dXQgdGhlbiBpdCB3aWxsIGNhbGwgaW50byBkZWFkIGNvZGUuCisgICAgICAgIEhlYXBJdGVyYXRp
b25TY29wZSBoZWFwSXRlcmF0aW9uU2NvcGUoKnRoaXMpOworICAgICAgICBtX3ZtLT53ZWJBc3Nl
bWJseUNvZGVCbG9ja1N1YnNwYWNlLmZvckVhY2hMaXZlQ2VsbChbJl0gKEhlYXBDZWxsKiBjZWxs
LCBIZWFwQ2VsbDo6S2luZCBraW5kKSB7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGtpbmQs
IGtpbmQgPT0gSGVhcENlbGw6OktpbmQ6OkpTQ2VsbCk7CisgICAgICAgICAgICBKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5Q29kZUJs
b2NrKj4oY2VsbCk7CisgICAgICAgICAgICBjb2RlQmxvY2stPmNsZWFySlNDYWxsSUNzKCptX3Zt
KTsKKyAgICAgICAgfSk7CisgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgSGVhcDo6ZGVsZXRlQWxs
VW5saW5rZWRDb2RlQmxvY2tzKERlbGV0ZUFsbENvZGVFZmZvcnQgZWZmb3J0KQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCShyZXZpc2lvbiAyMTYxOTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2
ICs3OSw5IEBAIHB1YmxpYzoKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAg
IHZvaWQgZm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYpOworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jJik7CiAgICAg
CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkFsbG9jYXRvckZvclNpemVTdGVwKCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN1YnNwYWNlLCBtX2FsbG9jYXRvckZvclNpemVTdGVwKTsg
fQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxp
bmVzLmgJKHJldmlzaW9uIDIxNjE5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1
YnNwYWNlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw1ICs3MiwyMyBAQCB2b2lkIFN1
YnNwYWNlOjpmb3JFYWNoTWFya2VkQ2VsbChjb25zdCBGCiAgICAgICAgIH0pOwogfQogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jPgordm9pZCBTdWJzcGFjZTo6Zm9yRWFjaExpdmVDZWxsKGNvbnN0
IEZ1bmMmIGZ1bmMpCit7CisgICAgZm9yRWFjaE1hcmtlZEJsb2NrKAorICAgICAgICBbJl0gKE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSkgeworICAgICAgICAgICAgaGFuZGxlLT5mb3JFYWNo
TGl2ZUNlbGwoCisgICAgICAgICAgICAgICAgWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6
OktpbmQga2luZCkgLT4gSXRlcmF0aW9uU3RhdHVzIHsgCisgICAgICAgICAgICAgICAgICAgIGZ1
bmMoY2VsbCwga2luZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0
dXM6OkNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICBmb3JF
YWNoTGFyZ2VBbGxvY2F0aW9uKAorICAgICAgICBbJl0gKExhcmdlQWxsb2NhdGlvbiogYWxsb2Nh
dGlvbikgeworICAgICAgICAgICAgaWYgKGFsbG9jYXRpb24tPmlzTGl2ZSgpKQorICAgICAgICAg
ICAgICAgIGZ1bmMoYWxsb2NhdGlvbi0+Y2VsbCgpLCBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQpOwor
ICAgICAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDIxNjE5OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDYgKzE3Miw5IEBA
IFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIHN0cmluZ1Nw
YWNlKCJKU1N0cmluZyIsIGhlYXApCiAgICAgLCBkZXN0cnVjdGlibGVPYmplY3RTcGFjZSgiSlNE
ZXN0cnVjdGlibGVPYmplY3QiLCBoZWFwKQogICAgICwgc2VnbWVudGVkVmFyaWFibGVPYmplY3RT
cGFjZSgiSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdFNwYWNlIiwgaGVhcCkKKyNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCisgICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlKCJKU1dlYkFz
c2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UiLCBoZWFwKQorI2VuZGlmCiAgICAgLCB2bVR5cGUodm1U
eXBlKQogICAgICwgY2xpZW50RGF0YSgwKQogICAgICwgdG9wVk1FbnRyeUZyYW1lKG51bGxwdHIp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDIxNjE5OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0U3Vic3BhY2UuaCIKICNpbmNsdWRlICJKU1N0cmluZ1N1YnNwYWNlLmgiCisj
aW5jbHVkZSAiSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmgiCiAjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAiTWljcm90YXNrLmgiCiAjaW5jbHVkZSAi
TnVtZXJpY1N0cmluZ3MuaCIKQEAgLTI5MSw2ICsyOTIsOSBAQCBwdWJsaWM6CiAgICAgSlNTdHJp
bmdTdWJzcGFjZSBzdHJpbmdTcGFjZTsKICAgICBKU0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNl
IGRlc3RydWN0aWJsZU9iamVjdFNwYWNlOwogICAgIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RT
dWJzcGFjZSBzZWdtZW50ZWRWYXJpYWJsZU9iamVjdFNwYWNlOworI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKKyAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2Ugd2ViQXNzZW1ibHlDb2Rl
QmxvY2tTdWJzcGFjZTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgc3RkOjp1
bmlxdWVfcHRyPERGRzo6TG9uZ0xpdmVkU3RhdGU+IGRmZ1N0YXRlOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9j
ay5jcHAJKHJldmlzaW9uIDIxNjE5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSwx
MiBAQCBib29sIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OmlzU2FmZVRvUnVuCiAgICAgcmV0dXJu
IG1fY29kZUJsb2NrLT5pc1NhZmVUb1J1bihtZW1vcnktPm1lbW9yeSgpLm1vZGUoKSk7CiB9CiAK
K3ZvaWQgSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6Y2xlYXJKU0NhbGxJQ3MoVk0mIHZtKQorewor
ICAgIGZvciAoYXV0byBpdGVyID0gbV9jYWxsTGlua0luZm9zLmJlZ2luKCk7ICEhaXRlcjsgKytp
dGVyKQorICAgICAgICAoKml0ZXIpLT51bmxpbmsodm0pOworfQorCiB2b2lkIEpTV2ViQXNzZW1i
bHlDb2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKICAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqPihjZWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgJKHJldmlz
aW9uIDIxNjE5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2Ug
V2FzbSB7CiBjbGFzcyBQbGFuOwogfQogCi1jbGFzcyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrIDog
cHVibGljIEpTQ2VsbCB7CitjbGFzcyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrIGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IFN0cnVjdHVyZUlzSW1tb3J0YWw7CkBAIC01Nyw2ICs1NywxMiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIFN1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLndlYkFzc2VtYmx5Q29kZUJs
b2NrU3Vic3BhY2U7CisgICAgfQorCiAgICAgdW5zaWduZWQgZnVuY3Rpb25JbXBvcnRDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5mdW5jdGlvbkltcG9ydENvdW50KCk7IH0KICAg
ICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZS5n
ZXQoKTsgfQogCkBAIC04Nyw2ICs5Myw4IEBAIHB1YmxpYzoKIAogICAgIFdhc206OkNvZGVCbG9j
ayYgY29kZUJsb2NrKCkgeyByZXR1cm4gbV9jb2RlQmxvY2suZ2V0KCk7IH0KIAorICAgIHZvaWQg
Y2xlYXJKU0NhbGxJQ3MoVk0mKTsKKwogcHJpdmF0ZToKICAgICBKU1dlYkFzc2VtYmx5Q29kZUJs
b2NrKFZNJiwgUmVmPFdhc206OkNvZGVCbG9jaz4mJiwgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3Jt
YXRpb24mKTsKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJs
b2NrU3Vic3BhY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUNvZGVC
bG9ja1N1YnNwYWNlLmgiCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIgorI2luY2x1
ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIlN1YnNwYWNlSW5saW5lcy5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworbmFtZXNwYWNlIHsKKworc3RydWN0IERlc3Ryb3lGdW5jIHsK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb3BlcmF0b3IoKShWTSYsIEpTQ2VsbCogY2VsbCkgY29u
c3QKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19maW5hbDxKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrPjo6dmFsdWUsICJPdGhlcndpc2UsIHRoaXMgY29kZSB3b3VsZCBub3QgYmUg
Y29ycmVjdC4iKTsKKyAgICAgICAgSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6aW5mbygpLT5tZXRo
b2RUYWJsZS5kZXN0cm95KGNlbGwpOworICAgIH0KK307CisKK30gLy8gYW5vbnltb3VzIG5hbWVz
cGFjZQorCitKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2U6OkpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2tTdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXApCisgICAgOiBTdWJzcGFjZShu
YW1lLCBoZWFwLCBBbGxvY2F0b3JBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxs
OjpKU0NlbGwpKQoreworfQorCitKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2U6On5KU1dl
YkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UoKQoreworfQorCitGcmVlTGlzdCBKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrU3Vic3BhY2U6OmZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhh
bmRsZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSkKK3sKKyAgICBy
ZXR1cm4gaGFuZGxlLmZpbmlzaFN3ZWVwS25vd2luZ1N1YnNwYWNlKHN3ZWVwTW9kZSwgRGVzdHJv
eUZ1bmMoKSk7Cit9CisKK3ZvaWQgSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlOjpkZXN0
cm95KFZNJiB2bSwgSlNDZWxsKiBjZWxsKQoreworICAgIERlc3Ryb3lGdW5jKCkodm0sIGNlbGwp
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJM
WSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2Rl
QmxvY2tTdWJzcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFj
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCisKKyNpbmNsdWRlICJTdWJzcGFjZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlIDogcHVibGljIFN1YnNwYWNlIHsK
K3B1YmxpYzoKKyAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UoQ1N0cmluZyBuYW1l
LCBIZWFwJik7CisgICAgdmlydHVhbCB+SlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlKCk7
CisgICAgCisgICAgRnJlZUxpc3QgZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIE1h
cmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXN0cm95
KFZNJiwgSlNDZWxsKikgb3ZlcnJpZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkK
</data>
<flag name="review"
          id="330357"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309465</attachid>
            <date>2017-05-08 21:19:09 -0700</date>
            <delta_ts>2017-05-09 00:15:05 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>21020</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2NDc2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBA
CisyMDE3LTA1LTA4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENhbGxMaW5rSW5mb3MgYmVsb25naW5nIHRvIFdhc20tPkpTIHN0dWJzIG5lZWQgdG8gYmUgaW5m
b3JtZWQgd2hlbiB3ZSBjbGVhckNvZGUoKSBmcm9tIGFsbCBFeGVjdXRhYmxlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxNzA3CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zMTg5MTY0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXps
by4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIGEgV2FzbS0+SlMgSUMg
Y2FsbCBzdHViIHdvdWxkIGdvIHN0YWxlCisgICAgICAgIGFuZCBwb2ludCBpbnRvIGEgQ29kZUJs
b2NrIG5vIGxvbmdlciBvd25lZCBieSBhbnkgZXhlY3V0YWJsZS4gVGhlCisgICAgICAgIHByb2Js
ZW1hdGljIHNjZW5hcmlvIGlzIHRoaXM6CisKKyAgICAgICAgMS4gV2UgZ2VuZXJhdGUgdGhlIGNh
bGwgSUMgd2hpY2ggaGFzIGEgYnJhbmNoIG9uIGEgY2FsbGVlIGNoZWNrLiBUaGlzCisgICAgICAg
ICAgIGNhbGxlZSBvd25zIHRoZSBFeGVjdXRhYmxlIGluIHF1ZXN0aW9uLiBJZiB0aGUgYnJhbmNo
IHN1Y2NlZWRzLCBpdAorICAgICAgICAgICB3aWxsIGNhbGwgY29kZSBiZWxvbmdpbmcgdG8gYSBw
YXJ0aWN1bGFyIENvZGVCbG9jayBhc3NvY2lhdGVkIHdpdGgKKyAgICAgICAgICAgdGhhdCBFeGVj
dXRhYmxlLgorCisgICAgICAgIDIuIEhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MgaXMgY2FsbGVk
LiBUaGlzIGxlYWRzIHRoZSBFeGVjdXRhYmxlIHRvIGNsZWFyCisgICAgICAgICAgIGl0cyB2YXJp
b3VzIENvZGVCbG9jayByZWZlcmVuY2VzLgorCisgICAgICAgIDMuIFdhc20gaGFzIG5vIGlkZWEg
dGhpcyBoYXBwZW5lZCwgc28gbm93IGl0IGhhcyBzdGFsZSBJQ3MgdGhhdCBwb2ludCBpbnRvCisg
ICAgICAgICAgIGNvZGUgZnJvbSBhIENvZGVCbG9jayBubyBsb25nZXIgYmVsb25naW5nIHRvIGFu
IEV4ZWN1dGFibGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgYnVnIGJ5IGluZm9y
bWluZyBhbGwgSlNXZWJBc3NlbWJseUNvZGVCbG9ja3MgdG8gdW5saW5rCisgICAgICAgIHRoZWly
IENhbGxMaW5rSW5mbyB3aGVuIEhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MgaXMgY2FsbGVkLgor
CisgICAgICAgIFdlIHRyYWNrIGFsbCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrcyBieSBjcmVhdGlu
ZyBhIG5ldyBzdWJzcGFjZSBmb3IgdGhlbS4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gcXVp
Y2tseSBpdGVyYXRlIG92ZXIgdGhlIGxpdmUgSlNXZWJBc3NlbWJseUNvZGVCbG9ja3MgaW4gdGhl
CisgICAgICAgIGhlYXAuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MpOgorICAg
ICAgICAqIGhlYXAvU3Vic3BhY2UuaDoKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6Zm9yRWFjaExpdmVDZWxsKToKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1l
L1ZNLmg6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVCbG9jazo6Y2xlYXJKU0NhbGxJQ3MpOgorICAg
ICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpK
U1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpmdW5jdGlvbkltcG9ydENvdW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVCbG9jazo6bW9kdWxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVCbG9jazo6anNFbnRyeXBvaW50
Q2FsbGVlRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpT
V2ViQXNzZW1ibHlDb2RlQmxvY2s6Ondhc21FbnRyeXBvaW50TG9hZExvY2F0aW9uRnJvbUZ1bmN0
aW9uSW5kZXhTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2s6Ondhc21Ub0pzQ2FsbFN0dWJGb3JJbXBvcnQpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpvZmZzZXRPZkltcG9ydFdhc21Ub0pTU3R1Yik6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OmNvZGVCbG9jayk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6Om9mZnNldE9m
SW1wb3J0U3R1YnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJs
b2NrOjphbGxvY2F0aW9uU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1i
bHlDb2RlQmxvY2s6OmltcG9ydFdhc21Ub0pTU3R1Yik6IERlbGV0ZWQuCisgICAgICAgICogd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlOjpKU1dlYkFzc2VtYmx5Q29kZUJs
b2NrU3Vic3BhY2UpOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3Bh
Y2U6On5KU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UpOgorICAgICAgICAoSlNDOjpKU1dl
YkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2U6OmZpbmlzaFN3ZWVwKToKKyAgICAgICAgKEpTQzo6
SlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlOjpkZXN0cm95KToKKyAgICAgICAgKiB3YXNt
L2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5oOiBBZGRlZC4KKwogMjAxNy0wNS0w
OCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICB0ZXN0V2FzbUJv
dW5kc0NoZWNrIGFuZCB0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzIGlzIGJyb2tl
biBpbiB0ZXN0YjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDIxNjQ3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtOTY3LDYgKzk2Nyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VT
CiAgICAgd2FzbS9XYXNtV29ya2xpc3QuY3BwCiAKICAgICB3YXNtL2pzL0pTV2ViQXNzZW1ibHlD
b2RlQmxvY2suY3BwCisgICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2Uu
Y3BwCiAgICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcAogICAgIHdhc20v
anMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAogICAgIHdhc20vanMvSlNXZWJBc3NlbWJseUxp
bmtFcnJvci5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
MTY0NzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTU2MCw2ICsxNTYwLDggQEAKIAkJ
NzlERkNCREIxRDg4QzU5NjAwNTI3RDAzIC8qIEhhc093blByb3BlcnR5Q2FjaGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5REZDQkRBMUQ4OEM1OTYw
MDUyN0QwMyAvKiBIYXNPd25Qcm9wZXJ0eUNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzlFRTBCRkYxQjRBRkI4NTAwMDM4NUM5IC8qIFZh
cmlhYmxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzlFRTBCRkQxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1l
bnQuY3BwICovOyB9OwogCQk3OUVFMEMwMDFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZp
cm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzlFRTBCRkUxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3OUVGRDQ4MzFFQkMw
NDVDMDBGM0RGRUEgLyogSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RUZENDgxMUVCQzA0NUMw
MEYzREZFQSAvKiBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UuY3BwICovOyB9OworCQk3
OUVGRDQ4NDFFQkMwNDVDMDBGM0RGRUEgLyogSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUVGRDQ4
MjFFQkMwNDVDMDBGM0RGRUEgLyogSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzlGOEZDMUUx
QjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjhGQzFDMUI5RkVE
MEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAgKi87IH07CiAJ
CTc5RjhGQzFGMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlGOEZD
MUQxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmggKi87
IH07CiAJCTc5RkM4QTA4MUUzMkU5RjAwMEQ4OEYwRSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUZDOEEw
NzFFMzJFOUYwMDBEODhGMEUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MTQzLDYgKzQxNDUsOCBA
QAogCQk3OURGQ0JEQTFEODhDNTk2MDA1MjdEMDMgLyogSGFzT3duUHJvcGVydHlDYWNoZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYXNPd25Qcm9wZXJ0eUNhY2hlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5RUUwQkZEMUI0QUZCODUwMDAzODVDOSAvKiBW
YXJpYWJsZUVudmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFZhcmlhYmxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3OUVFMEJGRTFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYXJpYWJsZUVudmlyb25tZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc5RUZENDgxMUVCQzA0NUMwMEYzREZFQSAvKiBKU1dl
YkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmNwcDsgcGF0aCA9IGpz
L0pTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTc5RUZENDgyMUVCQzA0NUMwMEYzREZFQSAvKiBKU1dlYkFzc2VtYmx5Q29kZUJs
b2NrU3Vic3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJBc3Nl
bWJseUNvZGVCbG9ja1N1YnNwYWNlLmg7IHBhdGggPSBqcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2Nr
U3Vic3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzlGOEZDMUMxQjlGRUQw
RjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNl
LmNwcDsgcGF0aCA9IGRmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5RjhGQzFEMUI5RkVEMEYwMENBNjZBQiAvKiBERkdN
YXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR01heGlt
YWxGbHVzaEluc2VydGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5
RkM4QTA3MUUzMkU5RjAwMEQ4OEYwRSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaDsgcGF0
aCA9IGRmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04MDQ0LDYgKzgwNDgsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTM4M0FBMkYx
RTY1RThBMTAwQTUzMkZDIC8qIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2suY3BwICovLAogCQkJCUFE
OUU4NTJFMUU4QTBDNkUwMDhERTM5RSAvKiBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmggKi8sCisJ
CQkJNzlFRkQ0ODExRUJDMDQ1QzAwRjNERkVBIC8qIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJz
cGFjZS5jcHAgKi8sCisJCQkJNzlFRkQ0ODIxRUJDMDQ1QzAwRjNERkVBIC8qIEpTV2ViQXNzZW1i
bHlDb2RlQmxvY2tTdWJzcGFjZS5oICovLAogCQkJCUFEMkZDQkE2MURCNThEQTQwMEIzRTczNiAv
KiBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcCAqLywKIAkJCQlBRDJGQ0JBNzFEQjU4REE0
MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oICovLAogCQkJCTc5NkZCNDM5
MURGRjhDM0YwMDM5Qzk1RCAvKiBKU1dlYkFzc2VtYmx5SGVscGVycy5oICovLApAQCAtODk3Niw2
ICs4OTgyLDcgQEAKIAkJCQkwRkIxNEUxRjE4MTI0QUNFMDA5QjZCNEQgLyogSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2Q0M4NUExMEVFNzlBNDcwMDI4ODY4
MiAvKiBKSVRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTNBMDZCRTFDMTEwNDEyMDAz
OTBGREQgLyogSklUTGVmdFNoaWZ0R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk3OUVG
RDQ4NDFFQkMwNDVDMDBGM0RGRUEgLyogSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3OTIzM0MyQjFEMzQ3MTU3MDBDNUE4MzQgLyogSklUTWF0aElD
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3OUIxNzg4RTFEMzk5QjgwMDBCMUE1NjcgLyogSklUTWF0
aElDRm9yd2FyZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5QUYwQkU0MUQzRUZENEMwMEU5NUZB
NSAvKiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQuaCBpbiBIZWFkZXJzICovLApAQCAtMTA2ODcsNiAr
MTA2OTQsNyBAQAogCQkJCTY1ODgyNEIxMUU1Q0ZERjQwMEZCNzM1OSAvKiBDb25maWdGaWxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3MDA4NzQxMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzRERUY5NTE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJ
dGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3OUVGRDQ4MzFFQkMwNDVDMDBGM0RGRUEg
LyogSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUUzRDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTEzRkVDRTA2RDNCNDQ1RkNCNkM5MzQ2MSAvKiBKU01vZHVsZUxvYWRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzE4Q0JDMDFCOEFFRjUxMDBBMjkyOUQgLyogSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMjE2NDc2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDEzICs0NywxNiBAQAog
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVk
ZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIk1hY2hpbmVTdGFja01hcmtlci5oIgorI2luY2x1ZGUgIk1h
cmtlZEFsbG9jYXRvcklubGluZXMuaCIKICNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIK
ICNpbmNsdWRlICJNYXJraW5nQ29uc3RyYWludFNldC5oIgogI2luY2x1ZGUgIlByZXZlbnRDb2xs
ZWN0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAi
U2hhZG93Q2hpY2tlbi5oIgogI2luY2x1ZGUgIlNwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIuaCIK
KyNpbmNsdWRlICJTdWJzcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIK
ICNpbmNsdWRlICJTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5oIgogI2luY2x1
ZGUgIlN0b3BJZk5lY2Vzc2FyeVRpbWVyLmgiCkBAIC04MjgsNiArODMxLDIyIEBAIHZvaWQgSGVh
cDo6ZGVsZXRlQWxsQ29kZUJsb2NrcyhEZWxldGVBbGwKIAogICAgIGZvciAoRXhlY3V0YWJsZUJh
c2UqIGV4ZWN1dGFibGUgOiBtX2V4ZWN1dGFibGVzKQogICAgICAgICBleGVjdXRhYmxlLT5jbGVh
ckNvZGUoKTsKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICB7CisgICAgICAgIC8vIFdl
IG11c3QgZW5zdXJlIHRoYXQgd2UgY2xlYXIgdGhlIEpTIGNhbGwgSUNzIGZyb20gV2FzbS4gT3Ro
ZXJ3aXNlLCBXYXNtIHdpbGwKKyAgICAgICAgLy8gaGF2ZSBubyBpZGVhIHRoYXQgd2UgY2xlYXJl
ZCB0aGUgY29kZSBmcm9tIGFsbCBvZiB0aGUgRXhlY3V0YWJsZXMgaW4gdGhlCisgICAgICAgIC8v
IFZNLiBUaGlzIGNvdWxkIGxlYXZlIFdhc20gaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlIHdoZXJl
IGl0IGhhcyBhbiBJQyB0aGF0CisgICAgICAgIC8vIHBvaW50cyBpbnRvIGEgQ29kZUJsb2NrIHRo
YXQgY291bGQgYmUgZGVhZC4gVGhlIElDIHdpbGwgc3RpbGwgc3VjY2VlZCBiZWNhdXNlCisgICAg
ICAgIC8vIGl0IHVzZXMgYSBjYWxsZWUgY2hlY2ssIGJ1dCB0aGVuIGl0IHdpbGwgY2FsbCBpbnRv
IGRlYWQgY29kZS4KKyAgICAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGhlYXBJdGVyYXRpb25TY29w
ZSgqdGhpcyk7CisgICAgICAgIG1fdm0tPndlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UuZm9yRWFj
aExpdmVDZWxsKFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kIGtpbmQpIHsKKyAg
ICAgICAgICAgIEFTU0VSVF9VTlVTRUQoa2luZCwga2luZCA9PSBIZWFwQ2VsbDo6S2luZDo6SlND
ZWxsKTsKKyAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0
YXRpY19jYXN0PEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqPihjZWxsKTsKKyAgICAgICAgICAgIGNv
ZGVCbG9jay0+Y2xlYXJKU0NhbGxJQ3MoKm1fdm0pOworICAgICAgICB9KTsKKyAgICB9CisjZW5k
aWYKIH0KIAogdm9pZCBIZWFwOjpkZWxldGVBbGxVbmxpbmtlZENvZGVCbG9ja3MoRGVsZXRlQWxs
Q29kZUVmZm9ydCBlZmZvcnQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJz
cGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNl
LmgJKHJldmlzaW9uIDIxNjQ3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNw
YWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDkgQEAgcHVibGljOgogICAgIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTWFya2VkQ2VsbChjb25z
dCBGdW5jJik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFj
aExpdmVDZWxsKGNvbnN0IEZ1bmMmKTsKICAgICAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mQWxsb2NhdG9yRm9yU2l6ZVN0ZXAoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3Vic3Bh
Y2UsIG1fYWxsb2NhdG9yRm9yU2l6ZVN0ZXApOyB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAkocmV2aXNpb24gMjE2NDc2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxpbmVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTcyLDUgKzcyLDIzIEBAIHZvaWQgU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsKGNv
bnN0IEYKICAgICAgICAgfSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Cit2b2lkIFN1
YnNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYgZnVuYykKK3sKKyAgICBmb3JFYWNo
TWFya2VkQmxvY2soCisgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogaGFuZGxlKSB7
CisgICAgICAgICAgICBoYW5kbGUtPmZvckVhY2hMaXZlQ2VsbCgKKyAgICAgICAgICAgICAgICBb
Jl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5kKSAtPiBJdGVyYXRpb25TdGF0
dXMgeyAKKyAgICAgICAgICAgICAgICAgICAgZnVuYyhjZWxsLCBraW5kKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworICAgIGZvckVhY2hMYXJnZUFsbG9jYXRpb24oCisgICAgICAg
IFsmXSAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uKSB7CisgICAgICAgICAgICBpZiAoYWxs
b2NhdGlvbi0+aXNMaXZlKCkpCisgICAgICAgICAgICAgICAgZnVuYyhhbGxvY2F0aW9uLT5jZWxs
KCksIG1fYXR0cmlidXRlcy5jZWxsS2luZCk7CisgICAgICAgIH0pOworfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNp
b24gMjE2NDc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzIsNiArMTcyLDkgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBU
eXBlIGhlYXBUeXBlKQogICAgICwgc3RyaW5nU3BhY2UoIkpTU3RyaW5nIiwgaGVhcCkKICAgICAs
IGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9iamVjdCIsIGhlYXApCiAg
ICAgLCBzZWdtZW50ZWRWYXJpYWJsZU9iamVjdFNwYWNlKCJKU1NlZ21lbnRlZFZhcmlhYmxlT2Jq
ZWN0U3BhY2UiLCBoZWFwKQorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICAsIHdlYkFzc2Vt
Ymx5Q29kZUJsb2NrU3BhY2UoIkpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSIsIGhlYXApCisj
ZW5kaWYKICAgICAsIHZtVHlwZSh2bVR5cGUpCiAgICAgLCBjbGllbnREYXRhKDApCiAgICAgLCB0
b3BWTUVudHJ5RnJhbWUobnVsbHB0cikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkocmV2aXNpb24gMjE2NDc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgog
I2luY2x1ZGUgIkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZS5oIgogI2luY2x1ZGUg
IkpTU3RyaW5nU3Vic3BhY2UuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vi
c3BhY2UuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlICJN
aWNyb3Rhc2suaCIKICNpbmNsdWRlICJOdW1lcmljU3RyaW5ncy5oIgpAQCAtMjk1LDYgKzI5Niw5
IEBAIHB1YmxpYzoKICAgICBKU1N0cmluZ1N1YnNwYWNlIHN0cmluZ1NwYWNlOwogICAgIEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2UgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CiAgICAgSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdFN1YnNwYWNlIHNlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3Bh
Y2U7CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tT
dWJzcGFjZSB3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlOworI2VuZGlmCiAKICNpZiBFTkFCTEUo
REZHX0pJVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8REZHOjpMb25nTGl2ZWRTdGF0ZT4gZGZnU3Rh
dGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjE2NDc2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc5LDYgKzc5LDEyIEBAIGJvb2wgSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6aXNT
YWZlVG9SdW4KICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmlzU2FmZVRvUnVuKG1lbW9yeS0+bWVt
b3J5KCkubW9kZSgpKTsKIH0KIAordm9pZCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpjbGVhckpT
Q2FsbElDcyhWTSYgdm0pCit7CisgICAgZm9yIChhdXRvIGl0ZXIgPSBtX2NhbGxMaW5rSW5mb3Mu
YmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpCisgICAgICAgICgqaXRlciktPnVubGluayh2bSk7Cit9
CisKIHZvaWQgSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNXZWJBc3NlbWJseUNvZGVCbG9jayo+KGNlbGwpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlDb2RlQmxvY2suaAkocmV2aXNpb24gMjE2NDc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3
ICs0Niw3IEBAIG5hbWVzcGFjZSBXYXNtIHsKIGNsYXNzIFBsYW47CiB9CiAKLWNsYXNzIEpTV2Vi
QXNzZW1ibHlDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIEpTV2ViQXNzZW1ibHlD
b2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpT
Q2VsbCBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKQEAgLTU3LDYgKzU3LDEy
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0
aWMgU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAm
dm0ud2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZTsKKyAgICB9CisKICAgICB1bnNpZ25lZCBmdW5j
dGlvbkltcG9ydENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmZ1bmN0aW9uSW1w
b3J0Q291bnQoKTsgfQogICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kdWxlLmdldCgpOyB9CiAKQEAgLTg3LDYgKzkzLDggQEAgcHVibGljOgogCiAg
ICAgV2FzbTo6Q29kZUJsb2NrJiBjb2RlQmxvY2soKSB7IHJldHVybiBtX2NvZGVCbG9jay5nZXQo
KTsgfQogCisgICAgdm9pZCBjbGVhckpTQ2FsbElDcyhWTSYpOworCiBwcml2YXRlOgogICAgIEpT
V2ViQXNzZW1ibHlDb2RlQmxvY2soVk0mLCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmLCBjb25zdCBX
YXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYpOwogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vi
c3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJK
U1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UuaCIKKworI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3Vi
c3BhY2VJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2UgeworCitzdHJ1
Y3QgRGVzdHJveUZ1bmMgeworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBvcGVyYXRvcigpKFZNJiwg
SlNDZWxsKiBjZWxsKSBjb25zdAorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2ZpbmFsPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+Ojp2YWx1ZSwgIk90aGVyd2lzZSwgdGhpcyBj
b2RlIHdvdWxkIG5vdCBiZSBjb3JyZWN0LiIpOworICAgICAgICBKU1dlYkFzc2VtYmx5Q29kZUJs
b2NrOjppbmZvKCktPm1ldGhvZFRhYmxlLmRlc3Ryb3koY2VsbCk7CisgICAgfQorfTsKKworfSAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK0pTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZTo6
SlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCkK
KyAgICA6IFN1YnNwYWNlKG5hbWUsIGhlYXAsIEFsbG9jYXRvckF0dHJpYnV0ZXMoTmVlZHNEZXN0
cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpCit7Cit9CisKK0pTV2ViQXNzZW1ibHlDb2RlQmxv
Y2tTdWJzcGFjZTo6fkpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZSgpCit7Cit9CisKK0Zy
ZWVMaXN0IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZTo6ZmluaXNoU3dlZXAoTWFya2Vk
QmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcE1vZGUgc3dl
ZXBNb2RlKQoreworICAgIHJldHVybiBoYW5kbGUuZmluaXNoU3dlZXBLbm93aW5nU3Vic3BhY2Uo
c3dlZXBNb2RlLCBEZXN0cm95RnVuYygpKTsKK30KKwordm9pZCBKU1dlYkFzc2VtYmx5Q29kZUJs
b2NrU3Vic3BhY2U6OmRlc3Ryb3koVk0mIHZtLCBKU0NlbGwqIGNlbGwpCit7CisgICAgRGVzdHJv
eUZ1bmMoKSh2bSwgY2VsbCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
RU5BQkxFKFdFQkFTU0VNQkxZKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eUNvZGVCbG9ja1N1YnNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworI2luY2x1ZGUgIlN1YnNwYWNlLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UgOiBw
dWJsaWMgU3Vic3BhY2UgeworcHVibGljOgorICAgIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJz
cGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmKTsKKyAgICB2aXJ0dWFsIH5KU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrU3Vic3BhY2UoKTsKKyAgICAKKyAgICBGcmVlTGlzdCBmaW5pc2hTd2VlcChNYXJrZWRC
bG9jazo6SGFuZGxlJiwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRlc3Ryb3koVk0mLCBKU0NlbGwqKSBvdmVycmlkZTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>