<?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>115219</bug_id>
          
          <creation_ts>2013-04-25 21:10:04 -0700</creation_ts>
          <short_desc>StaticHashSetNodeList is unnecessary</short_desc>
          <delta_ts>2013-04-28 15:20:51 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>881668</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-25 21:10:04 -0700</bug_when>
    <thetext>StaticHashSetNodeList is only used for Internals methods and as an intermediate data structure in TouchAdjustments.cpp.
We should get rid of this class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881669</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-25 21:10:47 -0700</bug_when>
    <thetext>Inspired by https://chromium.googlesource.com/chromium/blink/+/78207c5c34383fbb807bb9347deb67168f09bb04.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881670</commentid>
    <comment_count>2</comment_count>
      <attachid>199776</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-25 21:13:42 -0700</bug_when>
    <thetext>Created attachment 199776
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881671</commentid>
    <comment_count>3</comment_count>
      <attachid>199776</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-04-25 21:19:52 -0700</bug_when>
    <thetext>Comment on attachment 199776
Cleanup

Attachment 199776 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/223055</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881672</commentid>
    <comment_count>4</comment_count>
      <attachid>199776</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-04-25 21:20:56 -0700</bug_when>
    <thetext>Comment on attachment 199776
Cleanup

Attachment 199776 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/165357</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881673</commentid>
    <comment_count>5</comment_count>
      <attachid>199776</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-04-25 21:21:20 -0700</bug_when>
    <thetext>Comment on attachment 199776
Cleanup

Attachment 199776 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/200538</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881674</commentid>
    <comment_count>6</comment_count>
      <attachid>199777</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-25 21:23:48 -0700</bug_when>
    <thetext>Created attachment 199777
Fixed EFL and Qt builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881676</commentid>
    <comment_count>7</comment_count>
      <attachid>199779</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-25 21:42:21 -0700</bug_when>
    <thetext>Created attachment 199779
Fixed Mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881684</commentid>
    <comment_count>8</comment_count>
      <attachid>199779</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-04-25 21:51:37 -0700</bug_when>
    <thetext>Comment on attachment 199779
Fixed Mac build

Attachment 199779 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/59993</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881685</commentid>
    <comment_count>9</comment_count>
      <attachid>199779</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-04-25 21:52:04 -0700</bug_when>
    <thetext>Comment on attachment 199779
Fixed Mac build

Attachment 199779 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/126286</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881691</commentid>
    <comment_count>10</comment_count>
      <attachid>199779</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-25 22:20:20 -0700</bug_when>
    <thetext>Comment on attachment 199779
Fixed Mac build

Attachment 199779 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/209054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881694</commentid>
    <comment_count>11</comment_count>
      <attachid>199779</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-04-25 22:43:35 -0700</bug_when>
    <thetext>Comment on attachment 199779
Fixed Mac build

Attachment 199779 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/229013</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881784</commentid>
    <comment_count>12</comment_count>
      <attachid>199807</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-26 02:36:46 -0700</bug_when>
    <thetext>Created attachment 199807
Fixed more builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881789</commentid>
    <comment_count>13</comment_count>
      <attachid>199807</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-26 03:00:25 -0700</bug_when>
    <thetext>Comment on attachment 199807
Fixed more builds

Attachment 199807 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/77516</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881791</commentid>
    <comment_count>14</comment_count>
      <attachid>199809</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-26 03:10:01 -0700</bug_when>
    <thetext>Created attachment 199809
Fixed Windows build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881798</commentid>
    <comment_count>15</comment_count>
      <attachid>199809</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-26 03:47:31 -0700</bug_when>
    <thetext>Comment on attachment 199809
Fixed Windows build

Attachment 199809 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/61539</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881834</commentid>
    <comment_count>16</comment_count>
      <attachid>199809</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-04-26 05:48:17 -0700</bug_when>
    <thetext>Comment on attachment 199809
Fixed Windows build

Attachment 199809 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/171432</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882200</commentid>
    <comment_count>17</comment_count>
      <attachid>199907</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-27 12:37:30 -0700</bug_when>
    <thetext>Created attachment 199907
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882208</commentid>
    <comment_count>18</comment_count>
      <attachid>199907</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-27 13:06:09 -0700</bug_when>
    <thetext>Comment on attachment 199907
Patch for landing

Attachment 199907 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/229023</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882218</commentid>
    <comment_count>19</comment_count>
      <attachid>199913</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-27 13:44:47 -0700</bug_when>
    <thetext>Created attachment 199913
Another fixed Windows build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882219</commentid>
    <comment_count>20</comment_count>
      <attachid>199913</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-27 13:45:10 -0700</bug_when>
    <thetext>Comment on attachment 199913
Another fixed Windows build

Waiting for EWS to process it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882229</commentid>
    <comment_count>21</comment_count>
      <attachid>199913</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-04-27 14:07:58 -0700</bug_when>
    <thetext>Comment on attachment 199913
Another fixed Windows build

Attachment 199913 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/240094</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882231</commentid>
    <comment_count>22</comment_count>
      <attachid>199917</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-27 14:14:49 -0700</bug_when>
    <thetext>Created attachment 199917
Another GTK+ fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882355</commentid>
    <comment_count>23</comment_count>
      <attachid>199917</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-27 21:48:57 -0700</bug_when>
    <thetext>Comment on attachment 199917
Another GTK+ fix

Attachment 199917 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/25493</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882418</commentid>
    <comment_count>24</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-28 15:20:51 -0700</bug_when>
    <thetext>Committed r149262: &lt;http://trac.webkit.org/changeset/149262&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199776</attachid>
            <date>2013-04-25 21:13:42 -0700</date>
            <delta_ts>2013-04-25 21:23:45 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-115219-20130425211304.patch</filename>
            <type>text/plain</type>
            <size>33116</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEzLTA0LTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFN0YXRpY0hhc2hTZXROb2RlTGlz
dCBpcyB1bm5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE1MjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTW92ZWQgRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgaW50byBJbnRlcm5hbHM6Om5v
ZGVzRnJvbVJlY3QgcGVyCisgICAgICAgIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv
bS9jaHJvbWl1bS9ibGluay8rLzc4MjA3YzVjMzQzODNmYmI4MDdiYjkzNDdkZWI2NzE2OGYwOWJi
MDQuCisKKyAgICAgICAgQWxzbyBtYWRlIFRvdWNoQWRqdXN0bWVudCBmdW5jdGlvbnMgdXNlIEhh
c2hMaXN0U2V0IGRpcmVjdGx5IGluc3RlYWQgb2Ygd3JhcHBpbmcgaXQgaW5zaWRlCisgICAgICAg
IGEgU3RhdGljSGFzaFNldE5vZGVMaXN0IHNpbmNlIHRoZXJlIHdhcyBubyBuZWVkIHRvIHVzZSB0
aGUgbGF0dGVyLgorCisgICAgICAgIFdpdGggdGhlc2UgdHdvIGNoYW5nZXMsIEkgZGVsZXRlZCBT
dGF0aWNIYXNoU2V0Tm9kZUxpc3QuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0Lmg6IFJl
bW92ZWQuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpiZXN0Q2xpY2thYmxlTm9kZUZvclRvdWNoUG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpiZXN0Q29udGV4dE1lbnVOb2RlRm9yVG91Y2hQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmJlc3Rab29tYWJsZUFyZWFGb3JU
b3VjaFBvaW50KToKKyAgICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUb3VjaEFkanVzdG1lbnQ6OmNvbXBpbGVTdWJ0YXJnZXRMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRvdWNoQWRqdXN0bWVudDo6Y29tcGlsZVpvb21hYmxlU3VidGFyZ2V0cyk6
CisgICAgICAgIChXZWJDb3JlOjpmaW5kQmVzdENsaWNrYWJsZUNhbmRpZGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpmaW5kQmVzdENvbnRleHRNZW51Q2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmZpbmRCZXN0Wm9vbWFibGVBcmVhKToKKyAgICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVu
dC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0KToKKwogMjAxMy0w
NC0yNSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU3R5bGVQ
cm9wZXJ0eVNldDo6Z2V0UHJvcGVydHlTaG9ydGhhbmQoKSBzaG91bGQgcmV0dXJuIGEgU3RyaW5n
LgpJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNDkxNjUpCisr
KyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0z
MDczLDggKzMwNzMsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2Rv
bS9TaW11bGF0ZWRDbGlja09wdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3Bs
aXRTdHJpbmcuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5oIFwK
LQlTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCBcCi0JU291cmNl
L1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9k
b20vU3RhdGljTm9kZUxpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9kZUxp
c3QuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1N0cmluZ0NhbGxiYWNrLmNwcCBcCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1NCw3ICs0NTQsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20v
Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgXAogICAgIGRvbS9Ob2RlVHJhdmVyc2FsLmNwcCBc
CiAgICAgZG9tL05vdGF0aW9uLmNwcCBcCi0gICAgZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5j
cHAgXAogICAgIGRvbS9PdmVyZmxvd0V2ZW50LmNwcCBcCiAgICAgZG9tL1BhZ2VUcmFuc2l0aW9u
RXZlbnQuY3BwIFwKICAgICBkb20vUGVuZGluZ1NjcmlwdC5jcHAgXApAQCAtMTY4Myw3ICsxNjgy
LDYgQEAgSEVBREVSUyArPSBcCiAgICAgZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCBcCiAg
ICAgZG9tL05vZGVUcmF2ZXJzYWwuaCBcCiAgICAgZG9tL05vdGF0aW9uLmggXAotICAgIGRvbS9T
dGF0aWNIYXNoU2V0Tm9kZUxpc3QuaCBcCiAgICAgZG9tL092ZXJmbG93RXZlbnQuaCBcCiAgICAg
ZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuaCBcCiAgICAgZG9tL1Bvc2l0aW9uLmggXApJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUxLDcgKzE1NTEsNiBAQCBfX1pOSzdX
ZWJDb3JlN0ludFJlY3RjdjZDR1JlY3RFdgogX19aTks3V2ViQ29yZTdSdW5Mb29wOVRpbWVyQmFz
ZThpc0FjdGl2ZUV2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTFjb21wbGV0ZVVSTEVSS04zV1RG
NlN0cmluZ0UKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM2F4T2JqZWN0Q2FjaGVFdgotX19aTks3
V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampqCiBfX1pOSzdXZWJDb3JlOERv
Y3VtZW50MTRnZXRFbGVtZW50QnlJZEVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pOSzdXZWJD
b3JlOERvY3VtZW50MzFkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nRVJLTjNXVEY2U3Ry
aW5nRQogX19aTks3V2ViQ29yZThEb2N1bWVudDRib2R5RXYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0OTE2
NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNTI3Myw4ICs1MjczLDYgQEAKIAkJQ0U3QjJEQjQxNTg2QUJBRDAw
OThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIwMTU4NkFCQUQwMDk4QjNGQSAv
KiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKi87IH07CiAJCUNFN0IyREI1MTU4NkFC
QUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIxMTU4NkFCQUQwMDk4QjNGQSAv
KiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTdCMkRCNjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0U3QjJEQjIxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZS5tbSAqLzsgfTsKLQkJQ0VBMzk0OUMxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hh
c2hTZXROb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRUEzOTQ5QTExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0
LmNwcCAqLzsgfTsKLQkJQ0VBMzk0OUQxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXRO
b2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0VBMzk0OUIxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oICovOyB9
OwogCQlDRUNBREZDNjE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDQURGQzIx
NTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmNwcCAqLzsgfTsKIAkJQ0VD
QURGQzcxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUNBREZDMzE1Mzc3OEZGMDBF
MzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRUNBREZDODE1Mzc3OEZGMDBFMzcwNjggLyogRGlj
dGF0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRUNBREZDNDE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQ29tbWFuZC5jcHAg
Ki87IH07CkBAIC0xMjA2Miw4ICsxMjA2MCw2IEBACiAJCUNFN0IyREIwMTU4NkFCQUQwMDk4QjNG
QSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW07IHBhdGgg
PSBtYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRTdCMkRCMTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0
aFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZS5oOyBwYXRoID0gbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTdCMkRCMjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOyBwYXRoID0gbWFjL1RleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0VBMzk0
OUExMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRUEzOTQ5QjExRDQ1Q0RBMDAzMDk0Q0YgLyog
U3RhdGljSGFzaFNldE5vZGVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RUNBREZDMjE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUNBREZDMzE1Mzc3OEZGMDBFMzcwNjgg
LyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGljdGF0aW9uQWx0ZXJuYXRpdmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0VDQURGQzQxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQ29tbWFuZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDU2MCw4ICsyMDU1Niw2IEBACiAJCQkJMzE3NDFB
QUIxNjYzNUU0NTAwOEE1QjdFIC8qIFNpbXVsYXRlZENsaWNrT3B0aW9ucy5oICovLAogCQkJCUQw
MUEyN0FCMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmNwcCAqLywKIAkJCQlE
MDFBMjdBQzEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5oICovLAotCQkJCUNF
QTM5NDlBMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwICovLAot
CQkJCUNFQTM5NDlCMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaCAq
LywKIAkJCQlCQzdGQTYyQzBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3QuY3BwICov
LAogCQkJCUJDN0ZBNjJCMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5oICovLAog
CQkJCTgxMDJDNTg3MTMyNUJCMTEwMERERTY3QSAvKiBTdHJpbmdDYWxsYmFjay5jcHAgKi8sCkBA
IC0yMzUwNyw3ICsyMzUwMSw2IEBACiAJCQkJOTdCQzZBNUQxNTA1RjA4MTAwMUI3NEFDIC8qIFNR
TFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJFNkU1QTBD
QzU1MjEzMDA0QTIwNjIgLyogU1FMVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OTYz
MDgyNDVFNTkwMDFFOUFCQyAvKiBTU0xLZXlHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUNFQTM5NDlEMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDN0ZBNjJEMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNOb2RlTGlz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVBRkIzNTAxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBS
YW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCRTM3RTAwREFFRTAwRTAwMTA4NUZDIC8qIFN0
b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLywKQEAgLTI2NTc1LDcgKzI2NTY4LDYgQEAKIAkJCQkx
QTJFNkU1OTBDQzU1MjEzMDA0QTIwNjIgLyogU1FMVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTNGMTlBRTYwODI0NUU1OTAwMUU5QUJDIC8qIFNTTEtleUdlbmVyYXRvck1hYy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDRUEzOTQ5QzExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNl
dE5vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDN0ZBNjJFMEQxRjBFRkYwMERCMjJB
OSAvKiBTdGF0aWNOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUFGQjM0RjExNTE1
MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRTNGOUM3
MERBMDU5REMwMDI1MDkxMSAvKiBTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1MTYw
RUVBMTAwNDU0M0EwMEE3Q0VFMiAvKiBTdG9yYWdlQXJlYUltcGwuY3BwIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw3ICsxNTYs
NiBAQAogI2luY2x1ZGUgIlNlbGVjdG9yUXVlcnkuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJTdGF0aWNIYXNoU2V0Tm9kZUxpc3Qu
aCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2V0LmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZl
ci5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgpAQCAtMTQwNyw1OCArMTQwNiw2
IEBAIFN0cmluZyBEb2N1bWVudDo6c3VnZ2VzdGVkTUlNRVR5cGUoKSBjb24KICAgICByZXR1cm4g
U3RyaW5nKCk7CiB9CiAKLS8vIEZJWE1FOiBXZSBuZWVkIHRvIGRpc2N1c3MgdGhlIERPTSBBUEkg
aGVyZSBhdCBzb21lIHBvaW50LiBJZGVhczoKLS8vICogbWFraW5nIGl0IHJlY2VpdmUgYSByZWN0
IGFzIHBhcmFtZXRlciwgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHcsIGgpOwotLy8gKiBtYWtp
bmcgaXQgcmVjZWl2ZSB0aGUgZXhwYWRpbmcgc2l6ZSBvZiBlYWNoIGRpcmVjdGlvbiBzZXBhcmF0
ZWx5LAotLy8gICBpLmUuIG5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wU2l6ZSwgcmlnaHRTaXplLCBi
b3R0b21TaXplLCBsZWZ0U2l6ZSk7Ci1QYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9k
ZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2lnbmVkIHRvcFBhZGRpbmcs
IHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQg
bGVmdFBhZGRpbmcsIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSkg
Y29uc3QKLXsKLSAgICAvLyBGSVhNRTogU2hhcmUgY29kZSBiZXR3ZWVuIHRoaXMsIGVsZW1lbnRG
cm9tUG9pbnQgYW5kIGNhcmV0UmFuZ2VGcm9tUG9pbnQuCi0gICAgaWYgKCFyZW5kZXJlcigpKQot
ICAgICAgICByZXR1cm4gMDsKLSAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwotICAg
IGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiAwOwotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3
ID0gZnJhbWUtPnZpZXcoKTsKLSAgICBpZiAoIWZyYW1lVmlldykKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICBmbG9hdCB6b29tRmFjdG9yID0gZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCk7Ci0gICAg
TGF5b3V0UG9pbnQgcG9pbnQgPSByb3VuZGVkTGF5b3V0UG9pbnQoRmxvYXRQb2ludChjZW50ZXJY
ICogem9vbUZhY3RvciArIHZpZXcoKS0+c2Nyb2xsWCgpLCBjZW50ZXJZICogem9vbUZhY3RvciAr
IHZpZXcoKS0+c2Nyb2xsWSgpKSk7Ci0KLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KGhpdFR5
cGUpOwotCi0gICAgLy8gV2hlbiBpZ25vcmVDbGlwcGluZyBpcyBmYWxzZSwgdGhpcyBtZXRob2Qg
cmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9mIHRoZSB2aWV3cG9ydC4KLSAg
ICBpZiAoIXJlcXVlc3QuaWdub3JlQ2xpcHBpbmcoKSAmJiAhZnJhbWVWaWV3LT52aXNpYmxlQ29u
dGVudFJlY3QoKS5pbnRlcnNlY3RzKEhpdFRlc3RMb2NhdGlvbjo6cmVjdEZvclBvaW50KHBvaW50
LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKSkp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gUGFzc2luZyBhIHplcm8gcGFkZGluZyB3aWxs
IHRyaWdnZXIgYSByZWN0IGhpdCB0ZXN0LCBob3dldmVyIGZvciB0aGUgcHVycG9zZXMgb2Ygbm9k
ZXNGcm9tUmVjdCwKLSAgICAvLyB3ZSBzcGVjaWFsIGhhbmRsZSB0aGlzIGNhc2UgaW4gb3JkZXIg
dG8gcmV0dXJuIGEgdmFsaWQgTm9kZUxpc3QuCi0gICAgaWYgKCF0b3BQYWRkaW5nICYmICFyaWdo
dFBhZGRpbmcgJiYgIWJvdHRvbVBhZGRpbmcgJiYgIWxlZnRQYWRkaW5nKSB7Ci0gICAgICAgIEhp
dFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50KTsKLSAgICAgICAgcmV0dXJuIGhhbmRsZVplcm9QYWRk
aW5nKHJlcXVlc3QsIHJlc3VsdCk7Ci0gICAgfQotCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQo
cG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRp
bmcpOwotICAgIHJlbmRlclZpZXcoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwotCi0gICAg
cmV0dXJuIFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RS
ZXN1bHQoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50OjpoYW5kbGVaZXJv
UGFkZGluZyhjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVz
dWx0KSBjb25zdAotewotICAgIHJlbmRlclZpZXcoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQp
OwotCi0gICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKLSAgICBpZiAoIW5vZGUp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgbm9kZSA9IG5vZGUtPmRlcHJlY2F0ZWRTaGFkb3dB
bmNlc3Rvck5vZGUoKTsKLSAgICBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiBsaXN0OwotICAg
IGxpc3QuYWRkKG5vZGUpOwotICAgIHJldHVybiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OmFkb3B0
KGxpc3QpOwotfQotCiBFbGVtZW50KiBEb2N1bWVudDo6ZWxlbWVudEZyb21Qb2ludChpbnQgeCwg
aW50IHkpIGNvbnN0CiB7CiAgICAgaWYgKCFyZW5kZXJlcigpKQpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTksMjAgKzM1OSw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
Y3NzR3JpZExheW91dEVuYWJsZWQoKSBjb25zdDsKIAotICAgIC8qKgotICAgICAqIFJldHJpZXZl
IGFsbCBub2RlcyB0aGF0IGludGVyc2VjdCBhIHJlY3QgaW4gdGhlIHdpbmRvdydzIGRvY3VtZW50
LCB1bnRpbCBpdCBpcyBmdWxseSBlbmNsb3NlZCBieQotICAgICAqIHRoZSBib3VuZGFyaWVzIG9m
IGEgbm9kZS4KLSAgICAgKgotICAgICAqIEBwYXJhbSBjZW50ZXJYIHggcmVmZXJlbmNlIGZvciB0
aGUgcmVjdGFuZ2xlIGluIENTUyBwaXhlbHMKLSAgICAgKiBAcGFyYW0gY2VudGVyWSB5IHJlZmVy
ZW5jZSBmb3IgdGhlIHJlY3RhbmdsZSBpbiBDU1MgcGl4ZWxzCi0gICAgICogQHBhcmFtIHRvcFBh
ZGRpbmcgSG93IG11Y2ggdG8gZXhwYW5kIHRoZSB0b3Agb2YgdGhlIHJlY3RhbmdsZQotICAgICAq
IEBwYXJhbSByaWdodFBhZGRpbmcgSG93IG11Y2ggdG8gZXhwYW5kIHRoZSByaWdodCBvZiB0aGUg
cmVjdGFuZ2xlCi0gICAgICogQHBhcmFtIGJvdHRvbVBhZGRpbmcgSG93IG11Y2ggdG8gZXhwYW5k
IHRoZSBib3R0b20gb2YgdGhlIHJlY3RhbmdsZQotICAgICAqIEBwYXJhbSBsZWZ0UGFkZGluZyBI
b3cgbXVjaCB0byBleHBhbmQgdGhlIGxlZnQgb2YgdGhlIHJlY3RhbmdsZQotICAgICAqLwotICAg
IFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50
ZXJZLAotICAgICAgICB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcs
IHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLAotICAgICAgICBI
aXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRp
c2FsbG93U2hhZG93Q29udGVudCkgY29uc3Q7CiAgICAgRWxlbWVudCogZWxlbWVudEZyb21Qb2lu
dChpbnQgeCwgaW50IHkpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IGNhcmV0UmFuZ2VG
cm9tUG9pbnQoaW50IHgsIGludCB5KTsKIApAQCAtMTI2NCw4ICsxMjUwLDYgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgc2VhbWxlc3NQYXJlbnRVcGRhdGVkU3R5bGVzaGVldHMoKTsKIAotICAgIFBh
c3NSZWZQdHI8Tm9kZUxpc3Q+IGhhbmRsZVplcm9QYWRkaW5nKGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiwgSGl0VGVzdFJlc3VsdCYpIGNvbnN0OwotCiAgICAgdm9pZCBsb2FkRXZlbnREZWxheVRpbWVy
RmlyZWQoVGltZXI8RG9jdW1lbnQ+Kik7CiAKICAgICB2b2lkIHBlbmRpbmdUYXNrc1RpbWVyRmly
ZWQoVGltZXI8RG9jdW1lbnQ+Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljSGFz
aFNldE5vZGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGlj
SGFzaFNldE5vZGVMaXN0LmNwcAkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNzkgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBbnRvbmlvIEdvbWVz
IDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU3Rh
dGljSGFzaFNldE5vZGVMaXN0LmgiCi0KLSNpbmNsdWRlICJFbGVtZW50LmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotU3RhdGljSGFzaFNldE5vZGVMaXN0OjpTdGF0aWNIYXNoU2V0Tm9kZUxp
c3QoTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4mIG5vZGVzKQotewotICAgIG1fbm9kZXMuc3dh
cChub2Rlcyk7Ci19Ci0KLVN0YXRpY0hhc2hTZXROb2RlTGlzdDo6U3RhdGljSGFzaFNldE5vZGVM
aXN0KCkKLXsKLX0KLQotU3RhdGljSGFzaFNldE5vZGVMaXN0Ojp+U3RhdGljSGFzaFNldE5vZGVM
aXN0KCkKLXsKLX0KLQotdW5zaWduZWQgU3RhdGljSGFzaFNldE5vZGVMaXN0OjpsZW5ndGgoKSBj
b25zdAotewotICAgIHJldHVybiBtX25vZGVzLnNpemUoKTsKLX0KLQotTm9kZSogU3RhdGljSGFz
aFNldE5vZGVMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAotewotICAgIGlmIChpbmRl
eCA8ICh1bnNpZ25lZCkgbV9ub2Rlcy5zaXplKCkpIHsKLSAgICAgICAgTGlzdEhhc2hTZXQ8UmVm
UHRyPE5vZGU+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ub2Rlcy5iZWdpbigpOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGNvdW50ID0gMDsgY291bnQgPCBpbmRleDsgKytpdCwgKytjb3VudCkg
eyB9Ci0gICAgICAgIHJldHVybiAoKml0KS5nZXQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsK
LX0KLQotTm9kZSogU3RhdGljSGFzaFNldE5vZGVMaXN0OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWlj
U3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0Ci17Ci0gICAgTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+
ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ub2Rlcy5iZWdpbigpOwotICAgIExpc3RIYXNoU2V0
PFJlZlB0cjxOb2RlPiA+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX25vZGVzLmVuZCgpOwotICAg
IGZvciAoIDsgaXQgIT0gZW5kIDsgKytpdCkgewotICAgICAgICBOb2RlKiBub2RlID0gKCppdCku
Z2V0KCk7Ci0gICAgICAgIGlmICh0b0VsZW1lbnQobm9kZSktPmdldElkQXR0cmlidXRlKCkgPT0g
ZWxlbWVudElkKQotICAgICAgICAgICAgcmV0dXJuIG5vZGU7Ci0gICAgfQotCi0gICAgcmV0dXJu
IDA7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmgJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICogQ29weXJpZ2h0IChDKSAyMDEwIEFudG9uaW8g
R29tZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU3RhdGljSGFzaFNldE5vZGVMaXN0
X2gKLSNkZWZpbmUgU3RhdGljSGFzaFNldE5vZGVMaXN0X2gKLQotI2luY2x1ZGUgIk5vZGVMaXN0
LmgiCi0jaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgTm9kZTsKLQotY2xhc3MgU3RhdGljSGFzaFNldE5vZGVMaXN0IDogcHVibGljIE5vZGVM
aXN0IHsKLXB1YmxpYzoKLSAgICBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QoKTsKLSAgICB+U3RhdGlj
SGFzaFNldE5vZGVMaXN0KCk7Ci0KLSAgICAvLyBBZG9wdHMgdGhlIGNvbnRlbnRzIG9mIHRoZSBu
b2RlcyBMaXN0SGFzaFNldC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGF0aWNIYXNoU2V0Tm9k
ZUxpc3Q+IGFkb3B0KGNvbnN0IExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+JiBub2RlcykKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdChjb25zdF9jYXN0PExpc3RIYXNoU2V0PFJlZlB0cjxO
b2RlPiA+Jj4obm9kZXMpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGF0aWNI
YXNoU2V0Tm9kZUxpc3Q+IGFkb3B0KExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+JiBub2RlcykK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RhdGljSGFzaFNldE5vZGVMaXN0
KG5vZGVzKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0IE9W
RVJSSURFOwotICAgIHZpcnR1YWwgTm9kZSogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYp
IGNvbnN0IE9WRVJSSURFOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFN0YXRpY0hhc2hTZXRO
b2RlTGlzdChMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiYgbm9kZXMpOwotCi0gICAgTGlzdEhh
c2hTZXQ8UmVmUHRyPE5vZGU+ID4gbV9ub2RlczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIFN0YXRpY0hhc2hTZXROb2RlTGlzdF9oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDYgQEAK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRl
ICJTcGF0aWFsTmF2aWdhdGlvbi5oIgotI2luY2x1ZGUgIlN0YXRpY0hhc2hTZXROb2RlTGlzdC5o
IgogI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIK
ICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKQEAgLTI4MzUsMTMgKzI4MzQsMTIgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmJlc3RDbGlja2FibGVOb2RlRm9yVAogICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCBIaXRUZXN0UmVxdWVzdDo6
UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCB0b3VjaFJhZGl1cyk7CiAKICAgICBJ
bnRSZWN0IHRvdWNoUmVjdCh0b3VjaENlbnRlciAtIHRvdWNoUmFkaXVzLCB0b3VjaFJhZGl1cyAr
IHRvdWNoUmFkaXVzKTsKLSAgICBSZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBub2RlTGlz
dCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1
bHQoKSk7CiAKICAgICAvLyBGSVhNRTogU2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIHRhcmdldE5v
ZGUgYmVpbmcgYSBzaGFkb3cgRE9NIG5vZGUgdG8gYXZvaWQgcGVyZm9ybWluZyB1bmNlc3Nhcnkg
aGl0IHRlc3RzCiAgICAgLy8gaW4gdGhlIGNhc2Ugd2hlcmUgZnVydGhlciBwcm9jZXNzaW5nIG9u
IHRoZSBub2RlIGlzIHJlcXVpcmVkLiBSZXR1cm5pbmcgdGhlIHNoYWRvdyBhbmNlc3RvciBwcmV2
ZW50cyBhCiAgICAgLy8gcmVncmVzc2lvbiBpbiB0b3VjaGFkanVzdG1lbnQvaHRtbC1sYWJlbC5o
dG1sLiBTb21lIHJlZmluZW1lbnQgaXMgcmVxdWlyZWQgdG8gdGVzdGluZy9pbnRlcm5hbHMgdG8K
ICAgICAvLyBoYW5kbGUgdGFyZ2V0Tm9kZSBiZWluZyBhIHNoYWRvdyBET00gbm9kZS4gCi0gICAg
Ym9vbCBzdWNjZXNzID0gZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUodGFyZ2V0Tm9kZSwgdGFy
Z2V0UG9pbnQsIHRvdWNoQ2VudGVyLCB0b3VjaFJlY3QsICpub2RlTGlzdC5nZXQoKSk7CisgICAg
Ym9vbCBzdWNjZXNzID0gZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUodGFyZ2V0Tm9kZSwgdGFy
Z2V0UG9pbnQsIHRvdWNoQ2VudGVyLCB0b3VjaFJlY3QsIHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVz
dWx0KCkpOwogICAgIGlmIChzdWNjZXNzICYmIHRhcmdldE5vZGUpCiAgICAgICAgIHRhcmdldE5v
ZGUgPSB0YXJnZXROb2RlLT5kZXByZWNhdGVkU2hhZG93QW5jZXN0b3JOb2RlKCk7CiAgICAgcmV0
dXJuIHN1Y2Nlc3M7CkBAIC0yODUzLDggKzI4NTEsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6YmVz
dENvbnRleHRNZW51Tm9kZUZvCiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVz
dWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRl
c3RSZXF1ZXN0OjpBY3RpdmUsIHRvdWNoUmFkaXVzKTsKIAogICAgIEludFJlY3QgdG91Y2hSZWN0
KHRvdWNoQ2VudGVyIC0gdG91Y2hSYWRpdXMsIHRvdWNoUmFkaXVzICsgdG91Y2hSYWRpdXMpOwot
ICAgIFJlZlB0cjxTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IG5vZGVMaXN0ID0gU3RhdGljSGFzaFNl
dE5vZGVMaXN0OjphZG9wdChyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpKTsKLSAgICByZXR1
cm4gZmluZEJlc3RDb250ZXh0TWVudUNhbmRpZGF0ZSh0YXJnZXROb2RlLCB0YXJnZXRQb2ludCwg
dG91Y2hDZW50ZXIsIHRvdWNoUmVjdCwgKm5vZGVMaXN0LmdldCgpKTsKKyAgICByZXR1cm4gZmlu
ZEJlc3RDb250ZXh0TWVudUNhbmRpZGF0ZSh0YXJnZXROb2RlLCB0YXJnZXRQb2ludCwgdG91Y2hD
ZW50ZXIsIHRvdWNoUmVjdCwgcmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7CiB9CiAKIGJv
b2wgRXZlbnRIYW5kbGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9yVG91Y2hQb2ludChjb25zdCBJbnRQ
b2ludCYgdG91Y2hDZW50ZXIsIGNvbnN0IEludFNpemUmIHRvdWNoUmFkaXVzLCBJbnRSZWN0JiB0
YXJnZXRBcmVhLCBOb2RlKiYgdGFyZ2V0Tm9kZSkKQEAgLTI4NjMsOCArMjg2MCw3IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9yVG8KICAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgSGl0VGVzdFJlcXVlc3Q6
OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNh
bGxvd1NoYWRvd0NvbnRlbnQsIHRvdWNoUmFkaXVzKTsKIAogICAgIEludFJlY3QgdG91Y2hSZWN0
KHRvdWNoQ2VudGVyIC0gdG91Y2hSYWRpdXMsIHRvdWNoUmFkaXVzICsgdG91Y2hSYWRpdXMpOwot
ICAgIFJlZlB0cjxTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IG5vZGVMaXN0ID0gU3RhdGljSGFzaFNl
dE5vZGVMaXN0OjphZG9wdChyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpKTsKLSAgICByZXR1
cm4gZmluZEJlc3Rab29tYWJsZUFyZWEodGFyZ2V0Tm9kZSwgdGFyZ2V0QXJlYSwgdG91Y2hDZW50
ZXIsIHRvdWNoUmVjdCwgKm5vZGVMaXN0LmdldCgpKTsKKyAgICByZXR1cm4gZmluZEJlc3Rab29t
YWJsZUFyZWEodGFyZ2V0Tm9kZSwgdGFyZ2V0QXJlYSwgdG91Y2hDZW50ZXIsIHRvdWNoUmVjdCwg
cmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjph
ZGp1c3RHZXN0dXJlUG9zaXRpb24oY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVF
dmVudCwgSW50UG9pbnQmIGFkanVzdGVkUG9pbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1RvdWNoQWRqdXN0bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9U
b3VjaEFkanVzdG1lbnQuY3BwCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1RvdWNoQWRqdXN0bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw3ICsyMzMsNyBA
QCBzdGF0aWMgaW5saW5lIE5vZGUqIHBhcmVudFNoYWRvd0hvc3RPck93CiB9CiAKIC8vIENvbXBp
bGVzIGEgbGlzdCBvZiBzdWJ0YXJnZXRzIG9mIGFsbCB0aGUgcmVsZXZhbnQgdGFyZ2V0IG5vZGVz
Lgotdm9pZCBjb21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdCYgaW50ZXJzZWN0ZWRO
b2RlcywgU3VidGFyZ2V0R2VvbWV0cnlMaXN0JiBzdWJ0YXJnZXRzLCBOb2RlRmlsdGVyIG5vZGVG
aWx0ZXIsIEFwcGVuZFN1YnRhcmdldHNGb3JOb2RlIGFwcGVuZFN1YnRhcmdldHNGb3JOb2RlKQor
dm9pZCBjb21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdEhhc2hTZXQmIGludGVyc2Vj
dGVkTm9kZXMsIFN1YnRhcmdldEdlb21ldHJ5TGlzdCYgc3VidGFyZ2V0cywgTm9kZUZpbHRlciBu
b2RlRmlsdGVyLCBBcHBlbmRTdWJ0YXJnZXRzRm9yTm9kZSBhcHBlbmRTdWJ0YXJnZXRzRm9yTm9k
ZSkKIHsKICAgICAvLyBGaW5kIGNhbmRpZGF0ZXMgcmVzcG9uZGluZyB0byB0YXAgZ2VzdHVyZSBl
dmVudHMgaW4gTyhuKSB0aW1lLgogICAgIEhhc2hNYXA8Tm9kZSosIE5vZGUqPiByZXNwb25kZXJN
YXA7CkBAIC0yNDQsOSArMjQ0LDkgQEAgdm9pZCBjb21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBO
b2RlTGlzdAogICAgIC8vIEEgbm9kZSBtYXRjaGluZyB0aGUgTm9kZUZpbHRlciBpcyBjYWxsZWQg
YSByZXNwb25kZXIuIENhbmRpZGF0ZSBub2RlcyBtdXN0IGVpdGhlciBiZSBhCiAgICAgLy8gcmVz
cG9uZGVyIG9yIGhhdmUgYW4gYW5jZXN0b3IgdGhhdCBpcyBhIHJlc3BvbmRlci4KICAgICAvLyBU
aGlzIGl0ZXJhdGlvbiB0ZXN0cyBhbGwgYW5jZXN0b3JzIGF0IG1vc3Qgb25jZSBieSBjYWNoaW5n
IGVhcmxpZXIgcmVzdWx0cy4KLSAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnRlcnNlY3RlZE5vZGVz
Lmxlbmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewot
ICAgICAgICBOb2RlKiBjb25zdCBub2RlID0gaW50ZXJzZWN0ZWROb2Rlcy5pdGVtKGkpOworICAg
IE5vZGVMaXN0SGFzaFNldDo6aXRlcmF0b3IgZW5kID0gaW50ZXJzZWN0ZWROb2Rlcy5lbmQoKTsK
KyAgICBmb3IgKE5vZGVMaXN0SGFzaFNldDo6aXRlcmF0b3IgaXQgPSBpbnRlcnNlY3RlZE5vZGVz
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBOb2RlKiBjb25zdCBub2RlID0g
aXQtPmdldCgpOwogICAgICAgICBWZWN0b3I8Tm9kZSo+IHZpc2l0ZWROb2RlczsKICAgICAgICAg
Tm9kZSogcmVzcG9uZGluZ05vZGUgPSAwOwogICAgICAgICBmb3IgKE5vZGUqIHZpc2l0ZWROb2Rl
ID0gbm9kZTsgdmlzaXRlZE5vZGU7IHZpc2l0ZWROb2RlID0gdmlzaXRlZE5vZGUtPnBhcmVudE9y
U2hhZG93SG9zdE5vZGUoKSkgewpAQCAtMzEwLDExICszMTAsMTEgQEAgdm9pZCBjb21waWxlU3Vi
dGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdAogfQogCiAvLyBDb21waWxlcyBhIGxpc3Qgb2Ygem9v
bWFibGUgc3VidGFyZ2V0cy4KLXZvaWQgY29tcGlsZVpvb21hYmxlU3VidGFyZ2V0cyhjb25zdCBO
b2RlTGlzdCYgaW50ZXJzZWN0ZWROb2RlcywgU3VidGFyZ2V0R2VvbWV0cnlMaXN0JiBzdWJ0YXJn
ZXRzKQordm9pZCBjb21waWxlWm9vbWFibGVTdWJ0YXJnZXRzKGNvbnN0IE5vZGVMaXN0SGFzaFNl
dCYgaW50ZXJzZWN0ZWROb2RlcywgU3VidGFyZ2V0R2VvbWV0cnlMaXN0JiBzdWJ0YXJnZXRzKQog
ewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGludGVyc2VjdGVkTm9kZXMubGVuZ3RoKCk7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIE5vZGUqIGNv
bnN0IGNhbmRpZGF0ZSA9IGludGVyc2VjdGVkTm9kZXMuaXRlbShpKTsKKyAgICBOb2RlTGlzdEhh
c2hTZXQ6Oml0ZXJhdG9yIGVuZCA9IGludGVyc2VjdGVkTm9kZXMuZW5kKCk7CisgICAgZm9yIChO
b2RlTGlzdEhhc2hTZXQ6Oml0ZXJhdG9yIGl0ID0gaW50ZXJzZWN0ZWROb2Rlcy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgTm9kZSogY29uc3QgY2FuZGlkYXRlID0gaXQtPmdl
dCgpOwogICAgICAgICBpZiAobm9kZUlzWm9vbVRhcmdldChjYW5kaWRhdGUpKQogICAgICAgICAg
ICAgYXBwZW5kWm9vbWFibGVTdWJ0YXJnZXRzKGNhbmRpZGF0ZSwgc3VidGFyZ2V0cyk7CiAgICAg
fQpAQCAtNDc2LDcgKzQ3Niw3IEBAIGJvb2wgZmluZE5vZGVXaXRoTG93ZXN0RGlzdGFuY2VNZXRy
aWMoTm8KIAogfSAvLyBuYW1lc3BhY2UgVG91Y2hBZGp1c3RtZW50CiAKLWJvb2wgZmluZEJlc3RD
bGlja2FibGVDYW5kaWRhdGUoTm9kZSomIHRhcmdldE5vZGUsIEludFBvaW50ICZ0YXJnZXRQb2lu
dCwgY29uc3QgSW50UG9pbnQgJnRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCAmdG91Y2hBcmVh
LCBjb25zdCBOb2RlTGlzdCYgbm9kZUxpc3QpCitib29sIGZpbmRCZXN0Q2xpY2thYmxlQ2FuZGlk
YXRlKE5vZGUqJiB0YXJnZXROb2RlLCBJbnRQb2ludCAmdGFyZ2V0UG9pbnQsIGNvbnN0IEludFBv
aW50ICZ0b3VjaEhvdHNwb3QsIGNvbnN0IEludFJlY3QgJnRvdWNoQXJlYSwgY29uc3QgTm9kZUxp
c3RIYXNoU2V0JiBub2RlTGlzdCkKIHsKICAgICBJbnRSZWN0IHRhcmdldEFyZWE7CiAgICAgVG91
Y2hBZGp1c3RtZW50OjpTdWJ0YXJnZXRHZW9tZXRyeUxpc3Qgc3VidGFyZ2V0czsKQEAgLTQ4NCw3
ICs0ODQsNyBAQCBib29sIGZpbmRCZXN0Q2xpY2thYmxlQ2FuZGlkYXRlKE5vZGUqJiB0CiAgICAg
cmV0dXJuIFRvdWNoQWRqdXN0bWVudDo6ZmluZE5vZGVXaXRoTG93ZXN0RGlzdGFuY2VNZXRyaWMo
dGFyZ2V0Tm9kZSwgdGFyZ2V0UG9pbnQsIHRhcmdldEFyZWEsIHRvdWNoSG90c3BvdCwgdG91Y2hB
cmVhLCBzdWJ0YXJnZXRzLCBUb3VjaEFkanVzdG1lbnQ6Omh5YnJpZERpc3RhbmNlRnVuY3Rpb24p
OwogfQogCi1ib29sIGZpbmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUoTm9kZSomIHRhcmdldE5v
ZGUsIEludFBvaW50ICZ0YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQgJnRvdWNoSG90c3BvdCwg
Y29uc3QgSW50UmVjdCAmdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdCYgbm9kZUxpc3QpCitib29s
IGZpbmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUoTm9kZSomIHRhcmdldE5vZGUsIEludFBvaW50
ICZ0YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQgJnRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVj
dCAmdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdEhhc2hTZXQmIG5vZGVMaXN0KQogewogICAgIElu
dFJlY3QgdGFyZ2V0QXJlYTsKICAgICBUb3VjaEFkanVzdG1lbnQ6OlN1YnRhcmdldEdlb21ldHJ5
TGlzdCBzdWJ0YXJnZXRzOwpAQCAtNDkyLDcgKzQ5Miw3IEBAIGJvb2wgZmluZEJlc3RDb250ZXh0
TWVudUNhbmRpZGF0ZShOb2RlKiYKICAgICByZXR1cm4gVG91Y2hBZGp1c3RtZW50OjpmaW5kTm9k
ZVdpdGhMb3dlc3REaXN0YW5jZU1ldHJpYyh0YXJnZXROb2RlLCB0YXJnZXRQb2ludCwgdGFyZ2V0
QXJlYSwgdG91Y2hIb3RzcG90LCB0b3VjaEFyZWEsIHN1YnRhcmdldHMsIFRvdWNoQWRqdXN0bWVu
dDo6aHlicmlkRGlzdGFuY2VGdW5jdGlvbik7CiB9CiAKLWJvb2wgZmluZEJlc3Rab29tYWJsZUFy
ZWEoTm9kZSomIHRhcmdldE5vZGUsIEludFJlY3QmIHRhcmdldEFyZWEsIGNvbnN0IEludFBvaW50
JiB0b3VjaEhvdHNwb3QsIGNvbnN0IEludFJlY3QmIHRvdWNoQXJlYSwgY29uc3QgTm9kZUxpc3Qm
IG5vZGVMaXN0KQorYm9vbCBmaW5kQmVzdFpvb21hYmxlQXJlYShOb2RlKiYgdGFyZ2V0Tm9kZSwg
SW50UmVjdCYgdGFyZ2V0QXJlYSwgY29uc3QgSW50UG9pbnQmIHRvdWNoSG90c3BvdCwgY29uc3Qg
SW50UmVjdCYgdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdEhhc2hTZXQmIG5vZGVMaXN0KQogewog
ICAgIEludFBvaW50IHRhcmdldFBvaW50OwogICAgIFRvdWNoQWRqdXN0bWVudDo6U3VidGFyZ2V0
R2VvbWV0cnlMaXN0IHN1YnRhcmdldHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNo
QWRqdXN0bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1
c3RtZW50LmgJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hB
ZGp1c3RtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDExIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotYm9vbCBmaW5kQmVzdENsaWNrYWJsZUNhbmRpZGF0ZShOb2RlKiYgdGFy
Z2V0Tm9kZSwgSW50UG9pbnQmIHRhcmdldFBvaW50LCBjb25zdCBJbnRQb2ludCYgdG91Y2hIb3Rz
cG90LCBjb25zdCBJbnRSZWN0JiB0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0Jik7Ci1ib29sIGZp
bmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUoTm9kZSomIHRhcmdldE5vZGUsIEludFBvaW50JiB0
YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQmIHRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCYg
dG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdCYpOwotYm9vbCBmaW5kQmVzdFpvb21hYmxlQXJlYShO
b2RlKiYgdGFyZ2V0Tm9kZSwgSW50UmVjdCYgdGFyZ2V0QXJlYSwgY29uc3QgSW50UG9pbnQmIHRv
dWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCYgdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdCYpOwor
dHlwZWRlZiBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiBOb2RlTGlzdEhhc2hTZXQ7CisKK2Jv
b2wgZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUoTm9kZSomIHRhcmdldE5vZGUsIEludFBvaW50
JiB0YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQmIHRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVj
dCYgdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdEhhc2hTZXQmKTsKK2Jvb2wgZmluZEJlc3RDb250
ZXh0TWVudUNhbmRpZGF0ZShOb2RlKiYgdGFyZ2V0Tm9kZSwgSW50UG9pbnQmIHRhcmdldFBvaW50
LCBjb25zdCBJbnRQb2ludCYgdG91Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0JiB0b3VjaEFyZWEs
IGNvbnN0IE5vZGVMaXN0SGFzaFNldCYpOworYm9vbCBmaW5kQmVzdFpvb21hYmxlQXJlYShOb2Rl
KiYgdGFyZ2V0Tm9kZSwgSW50UmVjdCYgdGFyZ2V0QXJlYSwgY29uc3QgSW50UG9pbnQmIHRvdWNo
SG90c3BvdCwgY29uc3QgSW50UmVjdCYgdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdEhhc2hTZXQm
KTsKIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhlIHNpbWlsYXIgZnVuY3Rpb25zIGZvciBvdGhlciBn
ZXN0dXJlcyBoZXJlIGFzIHdlbGwuCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyMiw2
ICsxNDIyLDE1IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEludGVybmFsczo6bm9kZXNGcm8KICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZy
YW1lKCk7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBkb2N1bWVudC0+dmlldygpOworICAg
IFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBkb2N1bWVudC0+dmlldygpOworICAgIGlmICghcmVu
ZGVyVmlldykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmbG9hdCB6b29tRmFjdG9yID0gZnJh
bWUtPnBhZ2Vab29tRmFjdG9yKCk7CisgICAgTGF5b3V0UG9pbnQgcG9pbnQgPSByb3VuZGVkTGF5
b3V0UG9pbnQoRmxvYXRQb2ludChjZW50ZXJYICogem9vbUZhY3RvciArIGZyYW1lVmlldy0+c2Ny
b2xsWCgpLCBjZW50ZXJZICogem9vbUZhY3RvciArIGZyYW1lVmlldy0+c2Nyb2xsWSgpKSk7CisK
ICAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0
UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlOwogICAgIGlmIChpZ25v
cmVDbGlwcGluZykKICAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xp
cHBpbmc7CkBAIC0xNDMwLDcgKzE0MzksMjggQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW50ZXJu
YWxzOjpub2Rlc0ZybwogICAgIGlmIChhbGxvd0NoaWxkRnJhbWVDb250ZW50KQogICAgICAgICBo
aXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50OwogCi0gICAg
cmV0dXJuIGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFk
ZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGhpdFR5cGUpOworICAgIEhpdFRlc3RS
ZXF1ZXN0IHJlcXVlc3QoaGl0VHlwZSk7CisKKyAgICAvLyBXaGVuIGlnbm9yZUNsaXBwaW5nIGlz
IGZhbHNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIG51bGwgZm9yIGNvb3JkaW5hdGVzIG91dHNpZGUg
b2YgdGhlIHZpZXdwb3J0LgorICAgIGlmICghcmVxdWVzdC5pZ25vcmVDbGlwcGluZygpICYmICFm
cmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLmludGVyc2VjdHMoSGl0VGVzdExvY2F0aW9u
OjpyZWN0Rm9yUG9pbnQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFk
ZGluZywgbGVmdFBhZGRpbmcpKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBWZWN0b3I8UmVm
UHRyPE5vZGU+ID4gbWF0Y2hlczsKKworICAgIC8vIE5lZWQgcGFkZGluZyB0byB0cmlnZ2VyIGEg
cmVjdCBiYXNlZCBoaXQgdGVzdCwgYnV0IHdlIHdhbnQgdG8gcmV0dXJuIGEgTm9kZUxpc3QKKyAg
ICAvLyBzbyB3ZSBzcGVjaWFsIGNhc2UgdGhpcy4KKyAgICBpZiAoIXRvcFBhZGRpbmcgJiYgIXJp
Z2h0UGFkZGluZyAmJiAhYm90dG9tUGFkZGluZyAmJiAhbGVmdFBhZGRpbmcpIHsKKyAgICAgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQpOworICAgICAgICByZW5kZXJWaWV3LT5oaXRUZXN0
KHJlcXVlc3QsIHJlc3VsdCk7CisgICAgICAgIGlmIChyZXN1bHQuaW5uZXJOb2RlKCkpCisgICAg
ICAgICAgICBtYXRjaGVzLmFwcGVuZChyZXN1bHQuaW5uZXJOb2RlKCktPmRlcHJlY2F0ZWRTaGFk
b3dBbmNlc3Rvck5vZGUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCBy
ZXN1bHQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVm
dFBhZGRpbmcpOworICAgICAgICByZW5kZXJWaWV3LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7
CisgICAgICAgIGNvcHlUb1ZlY3RvcihyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpLCBtYXRj
aGVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RhdGljTm9kZUxpc3Q6OmFkb3B0KG1hdGNoZXMp
OwogfQogCiB2b2lkIEludGVybmFsczo6ZW1pdEluc3BlY3RvckRpZEJlZ2luRnJhbWUoKQpJbmRl
eDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDQtMjUgIFJ5b3N1a2UgTml3YSAg
PHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RhdGljSGFzaFNldE5vZGVMaXN0IGlzIHVu
bmVjZXNzYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTUyMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRl
Zi5pbjoKKwogMjAxMy0wNC0yNSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIEVOQUJMRShQQVJTRURfU1RZTEVfU0hFRVRfQ0FDSElORykgYW5kIG1h
a2UgaXQgYWx3YXlzLW9uLgpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJL
aXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhw
b3J0cy5kZWYuaW4JKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZj
eHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDQsNyArMzA0LDYgQEAgRVhQT1JUUwogICAgICAgICA/PzFDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBNQUVAWFoKICAgICAgICAgP2NvbnRleHREZXN0cm95
ZWRAQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAVUFFWFhaCiAgICAgICAgID8/
MENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFFBRUBQQVZTY3JpcHRFeGVjdXRp
b25Db250ZXh0QDFAQFoKLSAgICAgICAgP25vZGVzRnJvbVJlY3RARG9jdW1lbnRAV2ViQ29yZUBA
UUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RGQEBISElJSUlJQFoKICAg
ICAgICAgP3NlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yQEVkaXRvckBXZWJDb3JlQEBRQkVfTlc0
TWFya2VyVHlwZUBEb2N1bWVudE1hcmtlckAyQEhIQFoKICAgICAgICAgP2lzQ29udGludW91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkQEVkaXRvckBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID90b2dn
bGVDb250aW51b3VzU3BlbGxDaGVja2luZ0BFZGl0b3JAV2ViQ29yZUBAUUFFWFhaCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wNC0yNSAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBTdGF0aWNIYXNoU2V0Tm9kZUxp
c3QgaXMgdW5uZWNlc3NhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExNTIxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbjoKKwogMjAxMy0w
NC0yNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IENvbnNvbGVNZXNzYWdlIHNob3VsZCBpbmNsdWRlIGxpbmUgYW5kIGNvbHVt
biBudW1iZXIgd2hlcmUgcG9zc2libGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52
Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgkocmV2aXNpb24gMTQ5MTY1KQor
KysgU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgko
d29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw2IEBAIEVYUE9SVFMKICAgICAgICAgPz8xQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBATUFFQFhaCiAgICAgICAgID9jb250ZXh0
RGVzdHJveWVkQENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFVBRVhYWgogICAg
ICAgICA/PzBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBRQUVAUEFWU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEAxQEBaCi0gICAgICAgID9ub2Rlc0Zyb21SZWN0QERvY3VtZW50QFdl
YkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxpc3RAV2ViQ29yZUBAQFdURkBASEhJSUlJ
SUBaCiAgICAgICAgID9zZWxlY3Rpb25TdGFydEhhc01hcmtlckZvckBFZGl0b3JAV2ViQ29yZUBA
UUJFX05XNE1hcmtlclR5cGVARG9jdW1lbnRNYXJrZXJAMkBISEBaCiAgICAgICAgID9pc0NvbnRp
bnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZEBFZGl0b3JAV2ViQ29yZUBAUUJFX05YWgogICAgICAg
ICA/dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmdARWRpdG9yQFdlYkNvcmVAQFFBRVhYWgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199777</attachid>
            <date>2013-04-25 21:23:48 -0700</date>
            <delta_ts>2013-04-25 21:31:19 -0700</delta_ts>
            <desc>Fixed EFL and Qt builds</desc>
            <filename>bug-115219-20130425212311.patch</filename>
            <type>text/plain</type>
            <size>33587</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEzLTA0LTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFN0YXRpY0hhc2hTZXROb2RlTGlz
dCBpcyB1bm5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE1MjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTW92ZWQgRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgaW50byBJbnRlcm5hbHM6Om5v
ZGVzRnJvbVJlY3QgcGVyCisgICAgICAgIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv
bS9jaHJvbWl1bS9ibGluay8rLzc4MjA3YzVjMzQzODNmYmI4MDdiYjkzNDdkZWI2NzE2OGYwOWJi
MDQuCisKKyAgICAgICAgQWxzbyBtYWRlIFRvdWNoQWRqdXN0bWVudCBmdW5jdGlvbnMgdXNlIEhh
c2hMaXN0U2V0IGRpcmVjdGx5IGluc3RlYWQgb2Ygd3JhcHBpbmcgaXQgaW5zaWRlCisgICAgICAg
IGEgU3RhdGljSGFzaFNldE5vZGVMaXN0IHNpbmNlIHRoZXJlIHdhcyBubyBuZWVkIHRvIHVzZSB0
aGUgbGF0dGVyLgorCisgICAgICAgIFdpdGggdGhlc2UgdHdvIGNoYW5nZXMsIEkgZGVsZXRlZCBT
dGF0aWNIYXNoU2V0Tm9kZUxpc3QuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0Lmg6IFJl
bW92ZWQuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpiZXN0Q2xpY2thYmxlTm9kZUZvclRvdWNoUG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpiZXN0Q29udGV4dE1lbnVOb2RlRm9yVG91Y2hQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmJlc3Rab29tYWJsZUFyZWFGb3JU
b3VjaFBvaW50KToKKyAgICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUb3VjaEFkanVzdG1lbnQ6OmNvbXBpbGVTdWJ0YXJnZXRMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRvdWNoQWRqdXN0bWVudDo6Y29tcGlsZVpvb21hYmxlU3VidGFyZ2V0cyk6
CisgICAgICAgIChXZWJDb3JlOjpmaW5kQmVzdENsaWNrYWJsZUNhbmRpZGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpmaW5kQmVzdENvbnRleHRNZW51Q2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmZpbmRCZXN0Wm9vbWFibGVBcmVhKToKKyAgICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVu
dC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0KToKKwogMjAxMy0w
NC0yNSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU3R5bGVQ
cm9wZXJ0eVNldDo6Z2V0UHJvcGVydHlTaG9ydGhhbmQoKSBzaG91bGQgcmV0dXJuIGEgU3RyaW5n
LgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMjMyLDcgKzEyMzIsNiBA
QCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1NlbGVjdG9yUXVlcnkuY3BwCiAgICAgZG9t
L1NoYWRvd1Jvb3QuY3BwCiAgICAgZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwCi0gICAgZG9tL1N0
YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAKICAgICBkb20vU3RhdGljTm9kZUxpc3QuY3BwCiAgICAg
ZG9tL1N0cmluZ0NhbGxiYWNrLmNwcAogICAgIGRvbS9TdHlsZWRFbGVtZW50LmNwcApJbmRleDog
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zMDczLDggKzMw
NzMsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0
ZWRDbGlja09wdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5oIFwKLQlTb3VyY2Uv
V2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCBcCi0JU291cmNlL1dlYkNvcmUv
ZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGlj
Tm9kZUxpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9kZUxpc3QuaCBcCiAJ
U291cmNlL1dlYkNvcmUvZG9tL1N0cmluZ0NhbGxiYWNrLmNwcCBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJ
KHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1NCw3ICs0NTQsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vTm9kZVJlbmRl
cmluZ1RyYXZlcnNhbC5jcHAgXAogICAgIGRvbS9Ob2RlVHJhdmVyc2FsLmNwcCBcCiAgICAgZG9t
L05vdGF0aW9uLmNwcCBcCi0gICAgZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAgXAogICAg
IGRvbS9PdmVyZmxvd0V2ZW50LmNwcCBcCiAgICAgZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3Bw
IFwKICAgICBkb20vUGVuZGluZ1NjcmlwdC5jcHAgXApAQCAtMTY4Myw3ICsxNjgyLDYgQEAgSEVB
REVSUyArPSBcCiAgICAgZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCBcCiAgICAgZG9tL05v
ZGVUcmF2ZXJzYWwuaCBcCiAgICAgZG9tL05vdGF0aW9uLmggXAotICAgIGRvbS9TdGF0aWNIYXNo
U2V0Tm9kZUxpc3QuaCBcCiAgICAgZG9tL092ZXJmbG93RXZlbnQuaCBcCiAgICAgZG9tL1BhZ2VU
cmFuc2l0aW9uRXZlbnQuaCBcCiAgICAgZG9tL1Bvc2l0aW9uLmggXApJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4JKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUxLDcgKzE1NTEsNiBAQCBfX1pOSzdXZWJDb3JlN0lu
dFJlY3RjdjZDR1JlY3RFdgogX19aTks3V2ViQ29yZTdSdW5Mb29wOVRpbWVyQmFzZThpc0FjdGl2
ZUV2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTFjb21wbGV0ZVVSTEVSS04zV1RGNlN0cmluZ0UK
IF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM2F4T2JqZWN0Q2FjaGVFdgotX19aTks3V2ViQ29yZThE
b2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampqCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTRn
ZXRFbGVtZW50QnlJZEVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERvY3Vt
ZW50MzFkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nRVJLTjNXVEY2U3RyaW5nRQogX19a
Tks3V2ViQ29yZThEb2N1bWVudDRib2R5RXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNTI3Myw4ICs1MjczLDYgQEAKIAkJQ0U3QjJEQjQxNTg2QUJBRDAwOThCM0ZBIC8q
IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIwMTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKi87IH07CiAJCUNFN0IyREI1MTU4NkFCQUQwMDk4QjNG
QSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIxMTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0
ZXJuYXRpdmVXaXRoUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDRTdCMkRCNjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZl
V2l0aFJhbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0U3QjJEQjIxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5t
bSAqLzsgfTsKLQkJQ0VBMzk0OUMxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2Rl
TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RUEzOTQ5QTExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCAqLzsg
fTsKLQkJQ0VBMzk0OUQxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VBMzk0OUIx
MUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oICovOyB9OwogCQlDRUNB
REZDNjE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDQURGQzIxNTM3NzhGRjAw
RTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmNwcCAqLzsgfTsKIAkJQ0VDQURGQzcxNTM3
NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUNBREZDMzE1Mzc3OEZGMDBFMzcwNjggLyog
RGljdGF0aW9uQWx0ZXJuYXRpdmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDRUNBREZDODE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQ29t
bWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RUNBREZDNDE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQ29tbWFuZC5jcHAgKi87IH07CkBA
IC0xMjA2Miw4ICsxMjA2MCw2IEBACiAJCUNFN0IyREIwMTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW07IHBhdGggPSBtYWMvQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRTdCMkRCMTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZS5oOyBwYXRoID0gbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRTdCMkRCMjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOyBwYXRoID0gbWFjL1RleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0VBMzk0OUExMUQ0NUNE
QTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlDRUEzOTQ5QjExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFz
aFNldE5vZGVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpY0hh
c2hTZXROb2RlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUNBREZDMjE1
Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRUNBREZDMzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0
aW9uQWx0ZXJuYXRpdmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGljdGF0
aW9uQWx0ZXJuYXRpdmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VDQURGQzQx
NTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQ29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMDU2MCw4ICsyMDU1Niw2IEBACiAJCQkJMzE3NDFBQUIxNjYzNUU0
NTAwOEE1QjdFIC8qIFNpbXVsYXRlZENsaWNrT3B0aW9ucy5oICovLAogCQkJCUQwMUEyN0FCMTBD
OUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmNwcCAqLywKIAkJCQlEMDFBMjdBQzEw
QzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5oICovLAotCQkJCUNFQTM5NDlBMTFE
NDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwICovLAotCQkJCUNFQTM5
NDlCMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaCAqLywKIAkJCQlC
QzdGQTYyQzBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3QuY3BwICovLAogCQkJCUJD
N0ZBNjJCMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5oICovLAogCQkJCTgxMDJD
NTg3MTMyNUJCMTEwMERERTY3QSAvKiBTdHJpbmdDYWxsYmFjay5jcHAgKi8sCkBAIC0yMzUwNyw3
ICsyMzUwMSw2IEBACiAJCQkJOTdCQzZBNUQxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0
aW9uU3luY0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJFNkU1QTBDQzU1MjEzMDA0
QTIwNjIgLyogU1FMVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OTYzMDgyNDVFNTkw
MDFFOUFCQyAvKiBTU0xLZXlHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCUNFQTM5NDlE
MTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDN0ZBNjJEMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTVBRkIzNTAxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTFCRTM3RTAwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVh
LmggaW4gSGVhZGVycyAqLywKQEAgLTI2NTc1LDcgKzI2NTY4LDYgQEAKIAkJCQkxQTJFNkU1OTBD
QzU1MjEzMDA0QTIwNjIgLyogU1FMVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlB
RTYwODI0NUU1OTAwMUU5QUJDIC8qIFNTTEtleUdlbmVyYXRvck1hYy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDRUEzOTQ5QzExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDN0ZBNjJFMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0
aWNOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUFGQjM0RjExNTE1MUE3MDBCMDQ1
Q0IgLyogU3RlcFJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRTNGOUM3MERBMDU5REMw
MDI1MDkxMSAvKiBTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1MTYwRUVBMTAwNDU0
M0EwMEE3Q0VFMiAvKiBTdG9yYWdlQXJlYUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw3ICsxNTYsNiBAQAogI2lu
Y2x1ZGUgIlNlbGVjdG9yUXVlcnkuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaCIKICNpbmNs
dWRlICJTdHlsZVByb3BlcnR5U2V0LmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2lu
Y2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgpAQCAtMTQwNyw1OCArMTQwNiw2IEBAIFN0cmlu
ZyBEb2N1bWVudDo6c3VnZ2VzdGVkTUlNRVR5cGUoKSBjb24KICAgICByZXR1cm4gU3RyaW5nKCk7
CiB9CiAKLS8vIEZJWE1FOiBXZSBuZWVkIHRvIGRpc2N1c3MgdGhlIERPTSBBUEkgaGVyZSBhdCBz
b21lIHBvaW50LiBJZGVhczoKLS8vICogbWFraW5nIGl0IHJlY2VpdmUgYSByZWN0IGFzIHBhcmFt
ZXRlciwgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHcsIGgpOwotLy8gKiBtYWtpbmcgaXQgcmVj
ZWl2ZSB0aGUgZXhwYWRpbmcgc2l6ZSBvZiBlYWNoIGRpcmVjdGlvbiBzZXBhcmF0ZWx5LAotLy8g
ICBpLmUuIG5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wU2l6ZSwgcmlnaHRTaXplLCBib3R0b21TaXpl
LCBsZWZ0U2l6ZSk7Ci1QYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVj
dChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVk
IHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRp
bmcsIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSkgY29uc3QKLXsK
LSAgICAvLyBGSVhNRTogU2hhcmUgY29kZSBiZXR3ZWVuIHRoaXMsIGVsZW1lbnRGcm9tUG9pbnQg
YW5kIGNhcmV0UmFuZ2VGcm9tUG9pbnQuCi0gICAgaWYgKCFyZW5kZXJlcigpKQotICAgICAgICBy
ZXR1cm4gMDsKLSAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwotICAgIGlmICghZnJh
bWUpCi0gICAgICAgIHJldHVybiAwOwotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUt
PnZpZXcoKTsKLSAgICBpZiAoIWZyYW1lVmlldykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBm
bG9hdCB6b29tRmFjdG9yID0gZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCk7Ci0gICAgTGF5b3V0UG9p
bnQgcG9pbnQgPSByb3VuZGVkTGF5b3V0UG9pbnQoRmxvYXRQb2ludChjZW50ZXJYICogem9vbUZh
Y3RvciArIHZpZXcoKS0+c2Nyb2xsWCgpLCBjZW50ZXJZICogem9vbUZhY3RvciArIHZpZXcoKS0+
c2Nyb2xsWSgpKSk7Ci0KLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KGhpdFR5cGUpOwotCi0g
ICAgLy8gV2hlbiBpZ25vcmVDbGlwcGluZyBpcyBmYWxzZSwgdGhpcyBtZXRob2QgcmV0dXJucyBu
dWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9mIHRoZSB2aWV3cG9ydC4KLSAgICBpZiAoIXJl
cXVlc3QuaWdub3JlQ2xpcHBpbmcoKSAmJiAhZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3Qo
KS5pbnRlcnNlY3RzKEhpdFRlc3RMb2NhdGlvbjo6cmVjdEZvclBvaW50KHBvaW50LCB0b3BQYWRk
aW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKSkpCi0gICAgICAg
IHJldHVybiAwOwotCi0gICAgLy8gUGFzc2luZyBhIHplcm8gcGFkZGluZyB3aWxsIHRyaWdnZXIg
YSByZWN0IGhpdCB0ZXN0LCBob3dldmVyIGZvciB0aGUgcHVycG9zZXMgb2Ygbm9kZXNGcm9tUmVj
dCwKLSAgICAvLyB3ZSBzcGVjaWFsIGhhbmRsZSB0aGlzIGNhc2UgaW4gb3JkZXIgdG8gcmV0dXJu
IGEgdmFsaWQgTm9kZUxpc3QuCi0gICAgaWYgKCF0b3BQYWRkaW5nICYmICFyaWdodFBhZGRpbmcg
JiYgIWJvdHRvbVBhZGRpbmcgJiYgIWxlZnRQYWRkaW5nKSB7Ci0gICAgICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0KHBvaW50KTsKLSAgICAgICAgcmV0dXJuIGhhbmRsZVplcm9QYWRkaW5nKHJlcXVl
c3QsIHJlc3VsdCk7Ci0gICAgfQotCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQsIHRv
cFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpOwotICAg
IHJlbmRlclZpZXcoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwotCi0gICAgcmV0dXJuIFN0
YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7
Ci19Ci0KLVBhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50OjpoYW5kbGVaZXJvUGFkZGluZyhj
b25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KSBjb25z
dAotewotICAgIHJlbmRlclZpZXcoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwotCi0gICAg
Tm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAg
IHJldHVybiAwOwotCi0gICAgbm9kZSA9IG5vZGUtPmRlcHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5v
ZGUoKTsKLSAgICBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiBsaXN0OwotICAgIGxpc3QuYWRk
KG5vZGUpOwotICAgIHJldHVybiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OmFkb3B0KGxpc3QpOwot
fQotCiBFbGVtZW50KiBEb2N1bWVudDo6ZWxlbWVudEZyb21Qb2ludChpbnQgeCwgaW50IHkpIGNv
bnN0CiB7CiAgICAgaWYgKCFyZW5kZXJlcigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJl
dmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTksMjAgKzM1OSw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY3NzR3JpZExh
eW91dEVuYWJsZWQoKSBjb25zdDsKIAotICAgIC8qKgotICAgICAqIFJldHJpZXZlIGFsbCBub2Rl
cyB0aGF0IGludGVyc2VjdCBhIHJlY3QgaW4gdGhlIHdpbmRvdydzIGRvY3VtZW50LCB1bnRpbCBp
dCBpcyBmdWxseSBlbmNsb3NlZCBieQotICAgICAqIHRoZSBib3VuZGFyaWVzIG9mIGEgbm9kZS4K
LSAgICAgKgotICAgICAqIEBwYXJhbSBjZW50ZXJYIHggcmVmZXJlbmNlIGZvciB0aGUgcmVjdGFu
Z2xlIGluIENTUyBwaXhlbHMKLSAgICAgKiBAcGFyYW0gY2VudGVyWSB5IHJlZmVyZW5jZSBmb3Ig
dGhlIHJlY3RhbmdsZSBpbiBDU1MgcGl4ZWxzCi0gICAgICogQHBhcmFtIHRvcFBhZGRpbmcgSG93
IG11Y2ggdG8gZXhwYW5kIHRoZSB0b3Agb2YgdGhlIHJlY3RhbmdsZQotICAgICAqIEBwYXJhbSBy
aWdodFBhZGRpbmcgSG93IG11Y2ggdG8gZXhwYW5kIHRoZSByaWdodCBvZiB0aGUgcmVjdGFuZ2xl
Ci0gICAgICogQHBhcmFtIGJvdHRvbVBhZGRpbmcgSG93IG11Y2ggdG8gZXhwYW5kIHRoZSBib3R0
b20gb2YgdGhlIHJlY3RhbmdsZQotICAgICAqIEBwYXJhbSBsZWZ0UGFkZGluZyBIb3cgbXVjaCB0
byBleHBhbmQgdGhlIGxlZnQgb2YgdGhlIHJlY3RhbmdsZQotICAgICAqLwotICAgIFBhc3NSZWZQ
dHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLAotICAg
ICAgICB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVk
IGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLAotICAgICAgICBIaXRUZXN0UmVx
dWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9u
bHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hh
ZG93Q29udGVudCkgY29uc3Q7CiAgICAgRWxlbWVudCogZWxlbWVudEZyb21Qb2ludChpbnQgeCwg
aW50IHkpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IGNhcmV0UmFuZ2VGcm9tUG9pbnQo
aW50IHgsIGludCB5KTsKIApAQCAtMTI2NCw4ICsxMjUwLDYgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgc2VhbWxlc3NQYXJlbnRVcGRhdGVkU3R5bGVzaGVldHMoKTsKIAotICAgIFBhc3NSZWZQdHI8
Tm9kZUxpc3Q+IGhhbmRsZVplcm9QYWRkaW5nKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVz
dFJlc3VsdCYpIGNvbnN0OwotCiAgICAgdm9pZCBsb2FkRXZlbnREZWxheVRpbWVyRmlyZWQoVGlt
ZXI8RG9jdW1lbnQ+Kik7CiAKICAgICB2b2lkIHBlbmRpbmdUYXNrc1RpbWVyRmlyZWQoVGltZXI8
RG9jdW1lbnQ+Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVM
aXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5v
ZGVMaXN0LmNwcAkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1N0YXRp
Y0hhc2hTZXROb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNzkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBbnRvbmlvIEdvbWVzIDx0b25pa2l0
b29Ad2Via2l0Lm9yZz4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU3RhdGljSGFzaFNl
dE5vZGVMaXN0LmgiCi0KLSNpbmNsdWRlICJFbGVtZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotU3RhdGljSGFzaFNldE5vZGVMaXN0OjpTdGF0aWNIYXNoU2V0Tm9kZUxpc3QoTGlzdEhh
c2hTZXQ8UmVmUHRyPE5vZGU+ID4mIG5vZGVzKQotewotICAgIG1fbm9kZXMuc3dhcChub2Rlcyk7
Ci19Ci0KLVN0YXRpY0hhc2hTZXROb2RlTGlzdDo6U3RhdGljSGFzaFNldE5vZGVMaXN0KCkKLXsK
LX0KLQotU3RhdGljSGFzaFNldE5vZGVMaXN0Ojp+U3RhdGljSGFzaFNldE5vZGVMaXN0KCkKLXsK
LX0KLQotdW5zaWduZWQgU3RhdGljSGFzaFNldE5vZGVMaXN0OjpsZW5ndGgoKSBjb25zdAotewot
ICAgIHJldHVybiBtX25vZGVzLnNpemUoKTsKLX0KLQotTm9kZSogU3RhdGljSGFzaFNldE5vZGVM
aXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAotewotICAgIGlmIChpbmRleCA8ICh1bnNp
Z25lZCkgbV9ub2Rlcy5zaXplKCkpIHsKLSAgICAgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+
ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ub2Rlcy5iZWdpbigpOwotICAgICAgICBmb3IgKHVu
c2lnbmVkIGNvdW50ID0gMDsgY291bnQgPCBpbmRleDsgKytpdCwgKytjb3VudCkgeyB9Ci0gICAg
ICAgIHJldHVybiAoKml0KS5nZXQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotTm9k
ZSogU3RhdGljSGFzaFNldE5vZGVMaXN0OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBl
bGVtZW50SWQpIGNvbnN0Ci17Ci0gICAgTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID46OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9ub2Rlcy5iZWdpbigpOwotICAgIExpc3RIYXNoU2V0PFJlZlB0cjxO
b2RlPiA+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX25vZGVzLmVuZCgpOwotICAgIGZvciAoIDsg
aXQgIT0gZW5kIDsgKytpdCkgewotICAgICAgICBOb2RlKiBub2RlID0gKCppdCkuZ2V0KCk7Ci0g
ICAgICAgIGlmICh0b0VsZW1lbnQobm9kZSktPmdldElkQXR0cmlidXRlKCkgPT0gZWxlbWVudElk
KQotICAgICAgICAgICAgcmV0dXJuIG5vZGU7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNI
YXNoU2V0Tm9kZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGlj
SGFzaFNldE5vZGVMaXN0LmgJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3MCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQotICogQ29weXJpZ2h0IChDKSAyMDEwIEFudG9uaW8gR29tZXMgPHRv
bmlraXRvb0B3ZWJraXQub3JnPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
LSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0g
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU3RhdGljSGFzaFNldE5vZGVMaXN0X2gKLSNkZWZp
bmUgU3RhdGljSGFzaFNldE5vZGVMaXN0X2gKLQotI2luY2x1ZGUgIk5vZGVMaXN0LmgiCi0jaW5j
bHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTm9k
ZTsKLQotY2xhc3MgU3RhdGljSGFzaFNldE5vZGVMaXN0IDogcHVibGljIE5vZGVMaXN0IHsKLXB1
YmxpYzoKLSAgICBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QoKTsKLSAgICB+U3RhdGljSGFzaFNldE5v
ZGVMaXN0KCk7Ci0KLSAgICAvLyBBZG9wdHMgdGhlIGNvbnRlbnRzIG9mIHRoZSBub2RlcyBMaXN0
SGFzaFNldC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IGFk
b3B0KGNvbnN0IExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+JiBub2RlcykKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdChjb25zdF9jYXN0PExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+Jj4o
bm9kZXMpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGF0aWNIYXNoU2V0Tm9k
ZUxpc3Q+IGFkb3B0KExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+JiBub2RlcykKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RhdGljSGFzaFNldE5vZGVMaXN0KG5vZGVzKSk7
Ci0gICAgfQotCi0gICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0IE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgTm9kZSogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IE9W
RVJSSURFOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFN0YXRpY0hhc2hTZXROb2RlTGlzdChM
aXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiYgbm9kZXMpOwotCi0gICAgTGlzdEhhc2hTZXQ8UmVm
UHRyPE5vZGU+ID4gbV9ub2RlczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIFN0YXRpY0hhc2hTZXROb2RlTGlzdF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDYgQEAKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTcGF0aWFs
TmF2aWdhdGlvbi5oIgotI2luY2x1ZGUgIlN0YXRpY0hhc2hTZXROb2RlTGlzdC5oIgogI2luY2x1
ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRl
ICJUZXh0SXRlcmF0b3IuaCIKQEAgLTI4MzUsMTMgKzI4MzQsMTIgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmJlc3RDbGlja2FibGVOb2RlRm9yVAogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gaGl0
VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkg
fCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCB0b3VjaFJhZGl1cyk7CiAKICAgICBJbnRSZWN0IHRv
dWNoUmVjdCh0b3VjaENlbnRlciAtIHRvdWNoUmFkaXVzLCB0b3VjaFJhZGl1cyArIHRvdWNoUmFk
aXVzKTsKLSAgICBSZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBub2RlTGlzdCA9IFN0YXRp
Y0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7CiAK
ICAgICAvLyBGSVhNRTogU2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIHRhcmdldE5vZGUgYmVpbmcg
YSBzaGFkb3cgRE9NIG5vZGUgdG8gYXZvaWQgcGVyZm9ybWluZyB1bmNlc3NhcnkgaGl0IHRlc3Rz
CiAgICAgLy8gaW4gdGhlIGNhc2Ugd2hlcmUgZnVydGhlciBwcm9jZXNzaW5nIG9uIHRoZSBub2Rl
IGlzIHJlcXVpcmVkLiBSZXR1cm5pbmcgdGhlIHNoYWRvdyBhbmNlc3RvciBwcmV2ZW50cyBhCiAg
ICAgLy8gcmVncmVzc2lvbiBpbiB0b3VjaGFkanVzdG1lbnQvaHRtbC1sYWJlbC5odG1sLiBTb21l
IHJlZmluZW1lbnQgaXMgcmVxdWlyZWQgdG8gdGVzdGluZy9pbnRlcm5hbHMgdG8KICAgICAvLyBo
YW5kbGUgdGFyZ2V0Tm9kZSBiZWluZyBhIHNoYWRvdyBET00gbm9kZS4gCi0gICAgYm9vbCBzdWNj
ZXNzID0gZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUodGFyZ2V0Tm9kZSwgdGFyZ2V0UG9pbnQs
IHRvdWNoQ2VudGVyLCB0b3VjaFJlY3QsICpub2RlTGlzdC5nZXQoKSk7CisgICAgYm9vbCBzdWNj
ZXNzID0gZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUodGFyZ2V0Tm9kZSwgdGFyZ2V0UG9pbnQs
IHRvdWNoQ2VudGVyLCB0b3VjaFJlY3QsIHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwog
ICAgIGlmIChzdWNjZXNzICYmIHRhcmdldE5vZGUpCiAgICAgICAgIHRhcmdldE5vZGUgPSB0YXJn
ZXROb2RlLT5kZXByZWNhdGVkU2hhZG93QW5jZXN0b3JOb2RlKCk7CiAgICAgcmV0dXJuIHN1Y2Nl
c3M7CkBAIC0yODUzLDggKzI4NTEsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6YmVzdENvbnRleHRN
ZW51Tm9kZUZvCiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2lu
dChoaXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0
OjpBY3RpdmUsIHRvdWNoUmFkaXVzKTsKIAogICAgIEludFJlY3QgdG91Y2hSZWN0KHRvdWNoQ2Vu
dGVyIC0gdG91Y2hSYWRpdXMsIHRvdWNoUmFkaXVzICsgdG91Y2hSYWRpdXMpOwotICAgIFJlZlB0
cjxTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IG5vZGVMaXN0ID0gU3RhdGljSGFzaFNldE5vZGVMaXN0
OjphZG9wdChyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpKTsKLSAgICByZXR1cm4gZmluZEJl
c3RDb250ZXh0TWVudUNhbmRpZGF0ZSh0YXJnZXROb2RlLCB0YXJnZXRQb2ludCwgdG91Y2hDZW50
ZXIsIHRvdWNoUmVjdCwgKm5vZGVMaXN0LmdldCgpKTsKKyAgICByZXR1cm4gZmluZEJlc3RDb250
ZXh0TWVudUNhbmRpZGF0ZSh0YXJnZXROb2RlLCB0YXJnZXRQb2ludCwgdG91Y2hDZW50ZXIsIHRv
dWNoUmVjdCwgcmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7CiB9CiAKIGJvb2wgRXZlbnRI
YW5kbGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9yVG91Y2hQb2ludChjb25zdCBJbnRQb2ludCYgdG91
Y2hDZW50ZXIsIGNvbnN0IEludFNpemUmIHRvdWNoUmFkaXVzLCBJbnRSZWN0JiB0YXJnZXRBcmVh
LCBOb2RlKiYgdGFyZ2V0Tm9kZSkKQEAgLTI4NjMsOCArMjg2MCw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9yVG8KICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhp
dFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5
IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRv
d0NvbnRlbnQsIHRvdWNoUmFkaXVzKTsKIAogICAgIEludFJlY3QgdG91Y2hSZWN0KHRvdWNoQ2Vu
dGVyIC0gdG91Y2hSYWRpdXMsIHRvdWNoUmFkaXVzICsgdG91Y2hSYWRpdXMpOwotICAgIFJlZlB0
cjxTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IG5vZGVMaXN0ID0gU3RhdGljSGFzaFNldE5vZGVMaXN0
OjphZG9wdChyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpKTsKLSAgICByZXR1cm4gZmluZEJl
c3Rab29tYWJsZUFyZWEodGFyZ2V0Tm9kZSwgdGFyZ2V0QXJlYSwgdG91Y2hDZW50ZXIsIHRvdWNo
UmVjdCwgKm5vZGVMaXN0LmdldCgpKTsKKyAgICByZXR1cm4gZmluZEJlc3Rab29tYWJsZUFyZWEo
dGFyZ2V0Tm9kZSwgdGFyZ2V0QXJlYSwgdG91Y2hDZW50ZXIsIHRvdWNoUmVjdCwgcmVzdWx0LnJl
Y3RCYXNlZFRlc3RSZXN1bHQoKSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjphZGp1c3RHZXN0
dXJlUG9zaXRpb24oY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCwgSW50
UG9pbnQmIGFkanVzdGVkUG9pbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRq
dXN0bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVz
dG1lbnQuY3BwCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNo
QWRqdXN0bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw3ICsyMzMsNyBAQCBzdGF0aWMg
aW5saW5lIE5vZGUqIHBhcmVudFNoYWRvd0hvc3RPck93CiB9CiAKIC8vIENvbXBpbGVzIGEgbGlz
dCBvZiBzdWJ0YXJnZXRzIG9mIGFsbCB0aGUgcmVsZXZhbnQgdGFyZ2V0IG5vZGVzLgotdm9pZCBj
b21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdCYgaW50ZXJzZWN0ZWROb2RlcywgU3Vi
dGFyZ2V0R2VvbWV0cnlMaXN0JiBzdWJ0YXJnZXRzLCBOb2RlRmlsdGVyIG5vZGVGaWx0ZXIsIEFw
cGVuZFN1YnRhcmdldHNGb3JOb2RlIGFwcGVuZFN1YnRhcmdldHNGb3JOb2RlKQordm9pZCBjb21w
aWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdEhhc2hTZXQmIGludGVyc2VjdGVkTm9kZXMs
IFN1YnRhcmdldEdlb21ldHJ5TGlzdCYgc3VidGFyZ2V0cywgTm9kZUZpbHRlciBub2RlRmlsdGVy
LCBBcHBlbmRTdWJ0YXJnZXRzRm9yTm9kZSBhcHBlbmRTdWJ0YXJnZXRzRm9yTm9kZSkKIHsKICAg
ICAvLyBGaW5kIGNhbmRpZGF0ZXMgcmVzcG9uZGluZyB0byB0YXAgZ2VzdHVyZSBldmVudHMgaW4g
TyhuKSB0aW1lLgogICAgIEhhc2hNYXA8Tm9kZSosIE5vZGUqPiByZXNwb25kZXJNYXA7CkBAIC0y
NDQsOSArMjQ0LDkgQEAgdm9pZCBjb21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdAog
ICAgIC8vIEEgbm9kZSBtYXRjaGluZyB0aGUgTm9kZUZpbHRlciBpcyBjYWxsZWQgYSByZXNwb25k
ZXIuIENhbmRpZGF0ZSBub2RlcyBtdXN0IGVpdGhlciBiZSBhCiAgICAgLy8gcmVzcG9uZGVyIG9y
IGhhdmUgYW4gYW5jZXN0b3IgdGhhdCBpcyBhIHJlc3BvbmRlci4KICAgICAvLyBUaGlzIGl0ZXJh
dGlvbiB0ZXN0cyBhbGwgYW5jZXN0b3JzIGF0IG1vc3Qgb25jZSBieSBjYWNoaW5nIGVhcmxpZXIg
cmVzdWx0cy4KLSAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnRlcnNlY3RlZE5vZGVzLmxlbmd0aCgp
OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBO
b2RlKiBjb25zdCBub2RlID0gaW50ZXJzZWN0ZWROb2Rlcy5pdGVtKGkpOworICAgIE5vZGVMaXN0
SGFzaFNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW50ZXJzZWN0ZWROb2Rlcy5lbmQoKTsKKyAg
ICBmb3IgKE5vZGVMaXN0SGFzaFNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBpbnRlcnNlY3RlZE5v
ZGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBOb2RlKiBjb25zdCBub2Rl
ID0gaXQtPmdldCgpOwogICAgICAgICBWZWN0b3I8Tm9kZSo+IHZpc2l0ZWROb2RlczsKICAgICAg
ICAgTm9kZSogcmVzcG9uZGluZ05vZGUgPSAwOwogICAgICAgICBmb3IgKE5vZGUqIHZpc2l0ZWRO
b2RlID0gbm9kZTsgdmlzaXRlZE5vZGU7IHZpc2l0ZWROb2RlID0gdmlzaXRlZE5vZGUtPnBhcmVu
dE9yU2hhZG93SG9zdE5vZGUoKSkgewpAQCAtMzEwLDExICszMTAsMTEgQEAgdm9pZCBjb21waWxl
U3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdAogfQogCiAvLyBDb21waWxlcyBhIGxpc3Qgb2Yg
em9vbWFibGUgc3VidGFyZ2V0cy4KLXZvaWQgY29tcGlsZVpvb21hYmxlU3VidGFyZ2V0cyhjb25z
dCBOb2RlTGlzdCYgaW50ZXJzZWN0ZWROb2RlcywgU3VidGFyZ2V0R2VvbWV0cnlMaXN0JiBzdWJ0
YXJnZXRzKQordm9pZCBjb21waWxlWm9vbWFibGVTdWJ0YXJnZXRzKGNvbnN0IE5vZGVMaXN0SGFz
aFNldCYgaW50ZXJzZWN0ZWROb2RlcywgU3VidGFyZ2V0R2VvbWV0cnlMaXN0JiBzdWJ0YXJnZXRz
KQogewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGludGVyc2VjdGVkTm9kZXMubGVuZ3RoKCk7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIE5vZGUq
IGNvbnN0IGNhbmRpZGF0ZSA9IGludGVyc2VjdGVkTm9kZXMuaXRlbShpKTsKKyAgICBOb2RlTGlz
dEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGludGVyc2VjdGVkTm9kZXMuZW5kKCk7Cisg
ICAgZm9yIChOb2RlTGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaW50ZXJzZWN0ZWRO
b2Rlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgTm9kZSogY29uc3QgY2Fu
ZGlkYXRlID0gaXQtPmdldCgpOwogICAgICAgICBpZiAobm9kZUlzWm9vbVRhcmdldChjYW5kaWRh
dGUpKQogICAgICAgICAgICAgYXBwZW5kWm9vbWFibGVTdWJ0YXJnZXRzKGNhbmRpZGF0ZSwgc3Vi
dGFyZ2V0cyk7CiAgICAgfQpAQCAtNDc2LDcgKzQ3Niw3IEBAIGJvb2wgZmluZE5vZGVXaXRoTG93
ZXN0RGlzdGFuY2VNZXRyaWMoTm8KIAogfSAvLyBuYW1lc3BhY2UgVG91Y2hBZGp1c3RtZW50CiAK
LWJvb2wgZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUoTm9kZSomIHRhcmdldE5vZGUsIEludFBv
aW50ICZ0YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQgJnRvdWNoSG90c3BvdCwgY29uc3QgSW50
UmVjdCAmdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdCYgbm9kZUxpc3QpCitib29sIGZpbmRCZXN0
Q2xpY2thYmxlQ2FuZGlkYXRlKE5vZGUqJiB0YXJnZXROb2RlLCBJbnRQb2ludCAmdGFyZ2V0UG9p
bnQsIGNvbnN0IEludFBvaW50ICZ0b3VjaEhvdHNwb3QsIGNvbnN0IEludFJlY3QgJnRvdWNoQXJl
YSwgY29uc3QgTm9kZUxpc3RIYXNoU2V0JiBub2RlTGlzdCkKIHsKICAgICBJbnRSZWN0IHRhcmdl
dEFyZWE7CiAgICAgVG91Y2hBZGp1c3RtZW50OjpTdWJ0YXJnZXRHZW9tZXRyeUxpc3Qgc3VidGFy
Z2V0czsKQEAgLTQ4NCw3ICs0ODQsNyBAQCBib29sIGZpbmRCZXN0Q2xpY2thYmxlQ2FuZGlkYXRl
KE5vZGUqJiB0CiAgICAgcmV0dXJuIFRvdWNoQWRqdXN0bWVudDo6ZmluZE5vZGVXaXRoTG93ZXN0
RGlzdGFuY2VNZXRyaWModGFyZ2V0Tm9kZSwgdGFyZ2V0UG9pbnQsIHRhcmdldEFyZWEsIHRvdWNo
SG90c3BvdCwgdG91Y2hBcmVhLCBzdWJ0YXJnZXRzLCBUb3VjaEFkanVzdG1lbnQ6Omh5YnJpZERp
c3RhbmNlRnVuY3Rpb24pOwogfQogCi1ib29sIGZpbmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUo
Tm9kZSomIHRhcmdldE5vZGUsIEludFBvaW50ICZ0YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQg
JnRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCAmdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdCYg
bm9kZUxpc3QpCitib29sIGZpbmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUoTm9kZSomIHRhcmdl
dE5vZGUsIEludFBvaW50ICZ0YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQgJnRvdWNoSG90c3Bv
dCwgY29uc3QgSW50UmVjdCAmdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdEhhc2hTZXQmIG5vZGVM
aXN0KQogewogICAgIEludFJlY3QgdGFyZ2V0QXJlYTsKICAgICBUb3VjaEFkanVzdG1lbnQ6OlN1
YnRhcmdldEdlb21ldHJ5TGlzdCBzdWJ0YXJnZXRzOwpAQCAtNDkyLDcgKzQ5Miw3IEBAIGJvb2wg
ZmluZEJlc3RDb250ZXh0TWVudUNhbmRpZGF0ZShOb2RlKiYKICAgICByZXR1cm4gVG91Y2hBZGp1
c3RtZW50OjpmaW5kTm9kZVdpdGhMb3dlc3REaXN0YW5jZU1ldHJpYyh0YXJnZXROb2RlLCB0YXJn
ZXRQb2ludCwgdGFyZ2V0QXJlYSwgdG91Y2hIb3RzcG90LCB0b3VjaEFyZWEsIHN1YnRhcmdldHMs
IFRvdWNoQWRqdXN0bWVudDo6aHlicmlkRGlzdGFuY2VGdW5jdGlvbik7CiB9CiAKLWJvb2wgZmlu
ZEJlc3Rab29tYWJsZUFyZWEoTm9kZSomIHRhcmdldE5vZGUsIEludFJlY3QmIHRhcmdldEFyZWEs
IGNvbnN0IEludFBvaW50JiB0b3VjaEhvdHNwb3QsIGNvbnN0IEludFJlY3QmIHRvdWNoQXJlYSwg
Y29uc3QgTm9kZUxpc3QmIG5vZGVMaXN0KQorYm9vbCBmaW5kQmVzdFpvb21hYmxlQXJlYShOb2Rl
KiYgdGFyZ2V0Tm9kZSwgSW50UmVjdCYgdGFyZ2V0QXJlYSwgY29uc3QgSW50UG9pbnQmIHRvdWNo
SG90c3BvdCwgY29uc3QgSW50UmVjdCYgdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdEhhc2hTZXQm
IG5vZGVMaXN0KQogewogICAgIEludFBvaW50IHRhcmdldFBvaW50OwogICAgIFRvdWNoQWRqdXN0
bWVudDo6U3VidGFyZ2V0R2VvbWV0cnlMaXN0IHN1YnRhcmdldHM7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvVG91Y2hBZGp1c3RtZW50LmgJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDEx
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBmaW5kQmVzdENsaWNrYWJsZUNhbmRp
ZGF0ZShOb2RlKiYgdGFyZ2V0Tm9kZSwgSW50UG9pbnQmIHRhcmdldFBvaW50LCBjb25zdCBJbnRQ
b2ludCYgdG91Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0JiB0b3VjaEFyZWEsIGNvbnN0IE5vZGVM
aXN0Jik7Ci1ib29sIGZpbmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUoTm9kZSomIHRhcmdldE5v
ZGUsIEludFBvaW50JiB0YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQmIHRvdWNoSG90c3BvdCwg
Y29uc3QgSW50UmVjdCYgdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdCYpOwotYm9vbCBmaW5kQmVz
dFpvb21hYmxlQXJlYShOb2RlKiYgdGFyZ2V0Tm9kZSwgSW50UmVjdCYgdGFyZ2V0QXJlYSwgY29u
c3QgSW50UG9pbnQmIHRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCYgdG91Y2hBcmVhLCBjb25z
dCBOb2RlTGlzdCYpOwordHlwZWRlZiBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiBOb2RlTGlz
dEhhc2hTZXQ7CisKK2Jvb2wgZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUoTm9kZSomIHRhcmdl
dE5vZGUsIEludFBvaW50JiB0YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQmIHRvdWNoSG90c3Bv
dCwgY29uc3QgSW50UmVjdCYgdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdEhhc2hTZXQmKTsKK2Jv
b2wgZmluZEJlc3RDb250ZXh0TWVudUNhbmRpZGF0ZShOb2RlKiYgdGFyZ2V0Tm9kZSwgSW50UG9p
bnQmIHRhcmdldFBvaW50LCBjb25zdCBJbnRQb2ludCYgdG91Y2hIb3RzcG90LCBjb25zdCBJbnRS
ZWN0JiB0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0SGFzaFNldCYpOworYm9vbCBmaW5kQmVzdFpv
b21hYmxlQXJlYShOb2RlKiYgdGFyZ2V0Tm9kZSwgSW50UmVjdCYgdGFyZ2V0QXJlYSwgY29uc3Qg
SW50UG9pbnQmIHRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCYgdG91Y2hBcmVhLCBjb25zdCBO
b2RlTGlzdEhhc2hTZXQmKTsKIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhlIHNpbWlsYXIgZnVuY3Rp
b25zIGZvciBvdGhlciBnZXN0dXJlcyBoZXJlIGFzIHdlbGwuCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDE0
OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQyMiw2ICsxNDIyLDE1IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEludGVybmFs
czo6bm9kZXNGcm8KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgRnJhbWUqIGZyYW1l
ID0gZG9jdW1lbnQtPmZyYW1lKCk7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBkb2N1bWVu
dC0+dmlldygpOworICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBkb2N1bWVudC0+dmlldygp
OworICAgIGlmICghcmVuZGVyVmlldykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmbG9hdCB6
b29tRmFjdG9yID0gZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCk7CisgICAgTGF5b3V0UG9pbnQgcG9p
bnQgPSByb3VuZGVkTGF5b3V0UG9pbnQoRmxvYXRQb2ludChjZW50ZXJYICogem9vbUZhY3RvciAr
IGZyYW1lVmlldy0+c2Nyb2xsWCgpLCBjZW50ZXJZICogem9vbUZhY3RvciArIGZyYW1lVmlldy0+
c2Nyb2xsWSgpKSk7CisKICAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhp
dFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZl
OwogICAgIGlmIChpZ25vcmVDbGlwcGluZykKICAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVx
dWVzdDo6SWdub3JlQ2xpcHBpbmc7CkBAIC0xNDMwLDcgKzE0MzksMjggQEAgUGFzc1JlZlB0cjxO
b2RlTGlzdD4gSW50ZXJuYWxzOjpub2Rlc0ZybwogICAgIGlmIChhbGxvd0NoaWxkRnJhbWVDb250
ZW50KQogICAgICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVD
b250ZW50OwogCi0gICAgcmV0dXJuIGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFBh
ZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGhpdFR5cGUp
OworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoaGl0VHlwZSk7CisKKyAgICAvLyBXaGVuIGln
bm9yZUNsaXBwaW5nIGlzIGZhbHNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIG51bGwgZm9yIGNvb3Jk
aW5hdGVzIG91dHNpZGUgb2YgdGhlIHZpZXdwb3J0LgorICAgIGlmICghcmVxdWVzdC5pZ25vcmVD
bGlwcGluZygpICYmICFmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLmludGVyc2VjdHMo
SGl0VGVzdExvY2F0aW9uOjpyZWN0Rm9yUG9pbnQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFk
ZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbWF0Y2hlczsKKworICAgIC8vIE5lZWQgcGFkZGlu
ZyB0byB0cmlnZ2VyIGEgcmVjdCBiYXNlZCBoaXQgdGVzdCwgYnV0IHdlIHdhbnQgdG8gcmV0dXJu
IGEgTm9kZUxpc3QKKyAgICAvLyBzbyB3ZSBzcGVjaWFsIGNhc2UgdGhpcy4KKyAgICBpZiAoIXRv
cFBhZGRpbmcgJiYgIXJpZ2h0UGFkZGluZyAmJiAhYm90dG9tUGFkZGluZyAmJiAhbGVmdFBhZGRp
bmcpIHsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQpOworICAgICAgICByZW5k
ZXJWaWV3LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CisgICAgICAgIGlmIChyZXN1bHQuaW5u
ZXJOb2RlKCkpCisgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChyZXN1bHQuaW5uZXJOb2RlKCkt
PmRlcHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5vZGUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90
dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpOworICAgICAgICByZW5kZXJWaWV3LT5oaXRUZXN0KHJl
cXVlc3QsIHJlc3VsdCk7CisgICAgICAgIGNvcHlUb1ZlY3RvcihyZXN1bHQucmVjdEJhc2VkVGVz
dFJlc3VsdCgpLCBtYXRjaGVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RhdGljTm9kZUxpc3Q6
OmFkb3B0KG1hdGNoZXMpOwogfQogCiB2b2lkIEludGVybmFsczo6ZW1pdEluc3BlY3RvckRpZEJl
Z2luRnJhbWUoKQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDQtMjUg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RhdGljSGFzaFNl
dE5vZGVMaXN0IGlzIHVubmVjZXNzYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTUyMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9X
ZWJLaXRFeHBvcnRzLmRlZi5pbjoKKwogMjAxMy0wNC0yNSAgQW5kcmVhcyBLbGluZyAgPGFrbGlu
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRShQQVJTRURfU1RZTEVfU0hFRVRf
Q0FDSElORykgYW5kIG1ha2UgaXQgYWx3YXlzLW9uLgpJbmRleDogU291cmNlL1dlYktpdC9XZWJL
aXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5l
cmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMu
ZGVmLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsNyArMzA0LDYgQEAgRVhQT1JUUwogICAgICAg
ICA/PzFDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBNQUVAWFoKICAgICAgICAg
P2NvbnRleHREZXN0cm95ZWRAQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAVUFF
WFhaCiAgICAgICAgID8/MENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFFBRUBQ
QVZTY3JpcHRFeGVjdXRpb25Db250ZXh0QDFAQFoKLSAgICAgICAgP25vZGVzRnJvbVJlY3RARG9j
dW1lbnRAV2ViQ29yZUBAUUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RG
QEBISElJSUlJQFoKICAgICAgICAgP3NlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yQEVkaXRvckBX
ZWJDb3JlQEBRQkVfTlc0TWFya2VyVHlwZUBEb2N1bWVudE1hcmtlckAyQEhIQFoKICAgICAgICAg
P2lzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkQEVkaXRvckBXZWJDb3JlQEBRQkVfTlha
CiAgICAgICAgID90b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZ0BFZGl0b3JAV2ViQ29yZUBA
UUFFWFhaCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAx
My0wNC0yNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBTdGF0
aWNIYXNoU2V0Tm9kZUxpc3QgaXMgdW5uZWNlc3NhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTIxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRl
Zi5pbjoKKwogMjAxMy0wNC0yNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENvbnNvbGVNZXNzYWdlIHNob3VsZCBpbmNsdWRl
IGxpbmUgYW5kIGNvbHVtbiBudW1iZXIgd2hlcmUgcG9zc2libGUKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgkocmV2
aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRF
eHBvcnRzLmRlZi5pbgkod29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw2IEBAIEVYUE9SVFMK
ICAgICAgICAgPz8xQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBATUFFQFhaCiAg
ICAgICAgID9jb250ZXh0RGVzdHJveWVkQENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNv
cmVAQFVBRVhYWgogICAgICAgICA/PzBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3Jl
QEBRQUVAUEFWU2NyaXB0RXhlY3V0aW9uQ29udGV4dEAxQEBaCi0gICAgICAgID9ub2Rlc0Zyb21S
ZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxpc3RAV2ViQ29y
ZUBAQFdURkBASEhJSUlJSUBaCiAgICAgICAgID9zZWxlY3Rpb25TdGFydEhhc01hcmtlckZvckBF
ZGl0b3JAV2ViQ29yZUBAUUJFX05XNE1hcmtlclR5cGVARG9jdW1lbnRNYXJrZXJAMkBISEBaCiAg
ICAgICAgID9pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZEBFZGl0b3JAV2ViQ29yZUBA
UUJFX05YWgogICAgICAgICA/dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmdARWRpdG9yQFdl
YkNvcmVAQFFBRVhYWgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199779</attachid>
            <date>2013-04-25 21:42:21 -0700</date>
            <delta_ts>2013-04-26 02:36:42 -0700</delta_ts>
            <desc>Fixed Mac build</desc>
            <filename>bug-115219-20130425214144.patch</filename>
            <type>text/plain</type>
            <size>36556</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEzLTA0LTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFN0YXRpY0hhc2hTZXROb2RlTGlz
dCBpcyB1bm5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE1MjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTW92ZWQgRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgaW50byBJbnRlcm5hbHM6Om5v
ZGVzRnJvbVJlY3QgcGVyCisgICAgICAgIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv
bS9jaHJvbWl1bS9ibGluay8rLzc4MjA3YzVjMzQzODNmYmI4MDdiYjkzNDdkZWI2NzE2OGYwOWJi
MDQuCisKKyAgICAgICAgQWxzbyBtYWRlIFRvdWNoQWRqdXN0bWVudCBmdW5jdGlvbnMgdXNlIEhh
c2hMaXN0U2V0IGRpcmVjdGx5IGluc3RlYWQgb2Ygd3JhcHBpbmcgaXQgaW5zaWRlCisgICAgICAg
IGEgU3RhdGljSGFzaFNldE5vZGVMaXN0IHNpbmNlIHRoZXJlIHdhcyBubyBuZWVkIHRvIHVzZSB0
aGUgbGF0dGVyLgorCisgICAgICAgIFdpdGggdGhlc2UgdHdvIGNoYW5nZXMsIEkgZGVsZXRlZCBT
dGF0aWNIYXNoU2V0Tm9kZUxpc3QuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0Lmg6IFJl
bW92ZWQuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpiZXN0Q2xpY2thYmxlTm9kZUZvclRvdWNoUG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpiZXN0Q29udGV4dE1lbnVOb2RlRm9yVG91Y2hQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmJlc3Rab29tYWJsZUFyZWFGb3JU
b3VjaFBvaW50KToKKyAgICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUb3VjaEFkanVzdG1lbnQ6OmNvbXBpbGVTdWJ0YXJnZXRMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRvdWNoQWRqdXN0bWVudDo6Y29tcGlsZVpvb21hYmxlU3VidGFyZ2V0cyk6
CisgICAgICAgIChXZWJDb3JlOjpmaW5kQmVzdENsaWNrYWJsZUNhbmRpZGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpmaW5kQmVzdENvbnRleHRNZW51Q2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmZpbmRCZXN0Wm9vbWFibGVBcmVhKToKKyAgICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVu
dC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0KToKKwogMjAxMy0w
NC0yNSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU3R5bGVQ
cm9wZXJ0eVNldDo6Z2V0UHJvcGVydHlTaG9ydGhhbmQoKSBzaG91bGQgcmV0dXJuIGEgU3RyaW5n
LgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMjMyLDcgKzEyMzIsNiBA
QCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1NlbGVjdG9yUXVlcnkuY3BwCiAgICAgZG9t
L1NoYWRvd1Jvb3QuY3BwCiAgICAgZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwCi0gICAgZG9tL1N0
YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAKICAgICBkb20vU3RhdGljTm9kZUxpc3QuY3BwCiAgICAg
ZG9tL1N0cmluZ0NhbGxiYWNrLmNwcAogICAgIGRvbS9TdHlsZWRFbGVtZW50LmNwcApJbmRleDog
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zMDczLDggKzMw
NzMsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0
ZWRDbGlja09wdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5oIFwKLQlTb3VyY2Uv
V2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCBcCi0JU291cmNlL1dlYkNvcmUv
ZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGlj
Tm9kZUxpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9kZUxpc3QuaCBcCiAJ
U291cmNlL1dlYkNvcmUvZG9tL1N0cmluZ0NhbGxiYWNrLmNwcCBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJ
KHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1NCw3ICs0NTQsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vTm9kZVJlbmRl
cmluZ1RyYXZlcnNhbC5jcHAgXAogICAgIGRvbS9Ob2RlVHJhdmVyc2FsLmNwcCBcCiAgICAgZG9t
L05vdGF0aW9uLmNwcCBcCi0gICAgZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAgXAogICAg
IGRvbS9PdmVyZmxvd0V2ZW50LmNwcCBcCiAgICAgZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3Bw
IFwKICAgICBkb20vUGVuZGluZ1NjcmlwdC5jcHAgXApAQCAtMTY4Myw3ICsxNjgyLDYgQEAgSEVB
REVSUyArPSBcCiAgICAgZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCBcCiAgICAgZG9tL05v
ZGVUcmF2ZXJzYWwuaCBcCiAgICAgZG9tL05vdGF0aW9uLmggXAotICAgIGRvbS9TdGF0aWNIYXNo
U2V0Tm9kZUxpc3QuaCBcCiAgICAgZG9tL092ZXJmbG93RXZlbnQuaCBcCiAgICAgZG9tL1BhZ2VU
cmFuc2l0aW9uRXZlbnQuaCBcCiAgICAgZG9tL1Bvc2l0aW9uLmggXApJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4JKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDcgQEAgX19aTjdXZWJDb3JlMTNIVFRQ
SGVhZGVyTWFwQzFFdgogX19aTjdXZWJDb3JlMTNIVFRQSGVhZGVyTWFwRDFFdgogX19aTjdXZWJD
b3JlMTNIaXRUZXN0UmVzdWx0QzFFUktTMF8KIF9fWk43V2ViQ29yZTEzSGl0VGVzdFJlc3VsdEMx
RVJLTlNfMTFMYXlvdXRQb2ludEUKK19fWk43V2ViQ29yZTEzSGl0VGVzdFJlc3VsdEMxRVJLTlNf
MTFMYXlvdXRQb2ludEVqampqCiBfX1pON1dlYkNvcmUxM0hpdFRlc3RSZXN1bHREMUV2CiBfX1pO
N1dlYkNvcmUxM0lkZW50aWZpZXJSZXAzZ2V0RVBLYwogX19aTjdXZWJDb3JlMTNJZGVudGlmaWVy
UmVwM2dldEVpCkBAIC00NjMsNiArNDY0LDcgQEAgX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRl
eHQ5ZHJhd0ltYWdlRQogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ5c2V0U2hhZG93RVJL
TlNfOUZsb2F0U2l6ZUVmUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQogX19aTjdXZWJDb3Jl
MTVHcmFwaGljc0NvbnRleHQ5dHJhbnNsYXRlRWZmCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29u
dGV4dEQxRXYKK19fWk43V2ViQ29yZTE1SGl0VGVzdExvY2F0aW9uMTJyZWN0Rm9yUG9pbnRFUktO
U18xMUxheW91dFBvaW50RWpqamoKIF9fWk43V2ViQ29yZTE1SlNET01XaW5kb3dCYXNlOGNvbW1v
blZNRXYKIF9fWk43V2ViQ29yZTE1UGxhdGZvcm1DQUxheWVyMThzZXRHZW9tZXRyeUZsaXBwZWRF
YgogX19aTjdXZWJDb3JlMTVQcm90ZWN0aW9uU3BhY2VDMUVSS04zV1RGNlN0cmluZ0VpTlNfMjVQ
cm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlRVM0X05TXzM1UHJvdGVjdGlvblNwYWNlQXV0aGVudGlj
YXRpb25TY2hlbWVFCkBAIC0xMzEyLDYgKzEzMTQsNyBAQCBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0
UmVzdWx0MTZhYnNvbHV0ZU1lCiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0MTZhbHREaXNw
bGF5U3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxN2lzQ29udGVudEVkaXRh
YmxlRXYKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxOHRpdGxlRGlzcGxheVN0cmluZ0V2
CitfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0MTlyZWN0QmFzZWRUZXN0UmVzdWx0RXYKIF9f
Wk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQ1aW1hZ2VFdgogX19aTks3V2ViQ29yZTEzSGl0VGVz
dFJlc3VsdDV0aXRsZUVSTlNfMTNUZXh0RGlyZWN0aW9uRQogX19aTks3V2ViQ29yZTEzSGl0VGVz
dFJlc3VsdDlpbWFnZVJlY3RFdgpAQCAtMTQ3NCw2ICsxNDc3LDcgQEAgX19aTks3V2ViQ29yZTRO
b2RlMTF0ZXh0Q29udGVudEViCiBfX1pOSzdXZWJDb3JlNE5vZGUxM293bmVyRG9jdW1lbnRFdgog
X19aTks3V2ViQ29yZTROb2RlMTRpc0Rlc2NlbmRhbnRPZkVQS1MwXwogX19aTks3V2ViQ29yZTRO
b2RlMThnZXRTdWJyZXNvdXJjZVVSTHNFUk4zV1RGMTFMaXN0SGFzaFNldElOU180S1VSTEVMbTI1
NkVOU184S1VSTEhhc2hFRUUKK19fWk5LN1dlYkNvcmU0Tm9kZTI4ZGVwcmVjYXRlZFNoYWRvd0Fu
Y2VzdG9yTm9kZUV2CiBfX1pOSzdXZWJDb3JlNE5vZGUzMW51bWJlck9mU2NvcGVkSFRNTFN0eWxl
Q2hpbGRyZW5FdgogX19aTks3V2ViQ29yZTROb2RlOW5vZGVJbmRleEV2CiBfX1pOSzdXZWJDb3Jl
NFBhZ2UxMHBsdWdpbkRhdGFFdgpAQCAtMTU1MSw3ICsxNTU1LDYgQEAgX19aTks3V2ViQ29yZTdJ
bnRSZWN0Y3Y2Q0dSZWN0RXYKIF9fWk5LN1dlYkNvcmU3UnVuTG9vcDlUaW1lckJhc2U4aXNBY3Rp
dmVFdgogX19aTks3V2ViQ29yZThEb2N1bWVudDExY29tcGxldGVVUkxFUktOM1dURjZTdHJpbmdF
CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTNheE9iamVjdENhY2hlRXYKLV9fWk5LN1dlYkNvcmU4
RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqagogX19aTks3V2ViQ29yZThEb2N1bWVudDE0
Z2V0RWxlbWVudEJ5SWRFUktOM1dURjEyQXRvbWljU3RyaW5nRQogX19aTks3V2ViQ29yZThEb2N1
bWVudDMxZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZ0VSS04zV1RGNlN0cmluZ0UKIF9f
Wk5LN1dlYkNvcmU4RG9jdW1lbnQ0Ym9keUV2CkBAIC0xNjAwLDYgKzE2MDMsNyBAQCBfX1pOSzdX
ZWJDb3JlOVJlbmRlckJveDEyY2xpZW50SGVpZ2h0RXYKIF9fWk5LN1dlYkNvcmU5UmVuZGVyQm94
MTFjbGllbnRXaWR0aEV2CiBfX1pUVk43V2ViQ29yZTEyQ2hyb21lQ2xpZW50RQogX19aVFZON1dl
YkNvcmUxNExvYWRlclN0cmF0ZWd5RQorX19aVFZON1dlYkNvcmUxNFN0YXRpY05vZGVMaXN0RQog
X19aVFZON1dlYkNvcmUxNVN0b3JhZ2VTdHJhdGVneUUKIF9fWlRWTjdXZWJDb3JlMTZEYXRhYmFz
ZVN0cmF0ZWd5RQogX19aVFZON1dlYkNvcmUxNkljb25EYXRhYmFzZUJhc2VFCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUyNzMsOCArNTI3Myw2IEBACiAJCUNFN0IyREI0
MTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTdCMkRCMDE1ODZBQkFE
MDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICovOyB9OwogCQlDRTdC
MkRCNTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTdCMkRCMTE1ODZBQkFE
MDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U3QjJEQjYxNTg2QUJBRDAwOThCM0ZB
IC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIyMTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0
ZXJuYXRpdmVXaXRoUmFuZ2UubW0gKi87IH07Ci0JCUNFQTM5NDlDMTFENDVDREEwMDMwOTRDRiAv
KiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0VBMzk0OUExMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hT
ZXROb2RlTGlzdC5jcHAgKi87IH07Ci0JCUNFQTM5NDlEMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0
aWNIYXNoU2V0Tm9kZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFQTM5NDlCMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxp
c3QuaCAqLzsgfTsKIAkJQ0VDQURGQzYxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVy
bmF0aXZlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENFQ0FERkMyMTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5jcHAgKi87
IH07CiAJCUNFQ0FERkM3MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDQURGQzMx
NTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0VDQURGQzgxNTM3NzhGRjAwRTM3
MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0VDQURGQzQxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNv
bW1hbmQuY3BwICovOyB9OwpAQCAtMTIwNjIsOCArMTIwNjAsNiBAQAogCQlDRTdCMkRCMDE1ODZB
QkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
Lm1tOyBwYXRoID0gbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U3QjJEQjExNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaDsgcGF0aCA9IG1hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFu
Z2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U3QjJEQjIxNTg2QUJBRDAwOThC
M0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTsgcGF0aCA9IG1h
Yy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUNFQTM5NDlBMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljSGFzaFNldE5vZGVM
aXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0VBMzk0OUIxMUQ0NUNEQTAw
MzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0VDQURGQzIxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlvbkFsdGVy
bmF0aXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VDQURGQzMxNTM3NzhG
RjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERpY3RhdGlvbkFsdGVybmF0aXZlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNFQ0FERkM0MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlvbkNvbW1hbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA1NjAsOCArMjA1NTYsNiBAQAog
CQkJCTMxNzQxQUFCMTY2MzVFNDUwMDhBNUI3RSAvKiBTaW11bGF0ZWRDbGlja09wdGlvbnMuaCAq
LywKIAkJCQlEMDFBMjdBQjEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5jcHAg
Ki8sCiAJCQkJRDAxQTI3QUMxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuaCAq
LywKLQkJCQlDRUEzOTQ5QTExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0
LmNwcCAqLywKLQkJCQlDRUEzOTQ5QjExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5v
ZGVMaXN0LmggKi8sCiAJCQkJQkM3RkE2MkMwRDFGMEVGRjAwREIyMkE5IC8qIFN0YXRpY05vZGVM
aXN0LmNwcCAqLywKIAkJCQlCQzdGQTYyQjBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxp
c3QuaCAqLywKIAkJCQk4MTAyQzU4NzEzMjVCQjExMDBEREU2N0EgLyogU3RyaW5nQ2FsbGJhY2su
Y3BwICovLApAQCAtMjM1MDcsNyArMjM1MDEsNiBAQAogCQkJCTk3QkM2QTVEMTUwNUYwODEwMDFC
NzRBQyAvKiBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUEyRTZFNUEwQ0M1NTIxMzAwNEEyMDYyIC8qIFNRTFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5M0YxOTk2MzA4MjQ1RTU5MDAxRTlBQkMgLyogU1NMS2V5R2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlDRUEzOTQ5RDExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVM
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdGQTYyRDBEMUYwRUZGMDBEQjIyQTkgLyogU3Rh
dGljTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QUZCMzUwMTE1MTUxQTcwMEIwNDVD
QiAvKiBTdGVwUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQkUzN0UwMERBRUUwMEUwMDEw
ODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjU3NCw3ICsyNjU2Nyw2
IEBACiAJCQkJOTdCQzZBNUExNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJFNkU1OTBDQzU1MjEzMDA0QTIwNjIgLyogU1FMVmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlBRTYwODI0NUU1OTAwMUU5QUJDIC8qIFNT
TEtleUdlbmVyYXRvck1hYy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlDRUEzOTQ5QzExRDQ1Q0RB
MDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDN0ZBNjJFMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNUFGQjM0RjExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxRTNGOUM3MERBMDU5REMwMDI1MDkxMSAvKiBTdG9yYWdlLmNwcCBp
biBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxNDkx
NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTYsNyArMTU2LDYgQEAKICNpbmNsdWRlICJTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiU3RhdGljSGFz
aFNldE5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgogI2luY2x1ZGUg
IlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKQEAgLTE0
MDcsNTggKzE0MDYsNiBAQCBTdHJpbmcgRG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKCkgY29u
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi0vLyBGSVhNRTogV2UgbmVlZCB0byBkaXNjdXNz
IHRoZSBET00gQVBJIGhlcmUgYXQgc29tZSBwb2ludC4gSWRlYXM6Ci0vLyAqIG1ha2luZyBpdCBy
ZWNlaXZlIGEgcmVjdCBhcyBwYXJhbWV0ZXIsIGkuZS4gbm9kZXNGcm9tUmVjdCh4LCB5LCB3LCBo
KTsKLS8vICogbWFraW5nIGl0IHJlY2VpdmUgdGhlIGV4cGFkaW5nIHNpemUgb2YgZWFjaCBkaXJl
Y3Rpb24gc2VwYXJhdGVseSwKLS8vICAgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFNpemUs
IHJpZ2h0U2l6ZSwgYm90dG9tU2l6ZSwgbGVmdFNpemUpOwotUGFzc1JlZlB0cjxOb2RlTGlzdD4g
RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25l
ZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRp
bmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RU
eXBlIGhpdFR5cGUpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFNoYXJlIGNvZGUgYmV0d2VlbiB0
aGlzLCBlbGVtZW50RnJvbVBvaW50IGFuZCBjYXJldFJhbmdlRnJvbVBvaW50LgotICAgIGlmICgh
cmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+
ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gMDsKLSAgICBGcmFtZVZp
ZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7Ci0gICAgaWYgKCFmcmFtZVZpZXcpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgZmxvYXQgem9vbUZhY3RvciA9IGZyYW1lLT5wYWdlWm9vbUZh
Y3RvcigpOwotICAgIExheW91dFBvaW50IHBvaW50ID0gcm91bmRlZExheW91dFBvaW50KEZsb2F0
UG9pbnQoY2VudGVyWCAqIHpvb21GYWN0b3IgKyB2aWV3KCktPnNjcm9sbFgoKSwgY2VudGVyWSAq
IHpvb21GYWN0b3IgKyB2aWV3KCktPnNjcm9sbFkoKSkpOwotCi0gICAgSGl0VGVzdFJlcXVlc3Qg
cmVxdWVzdChoaXRUeXBlKTsKLQotICAgIC8vIFdoZW4gaWdub3JlQ2xpcHBpbmcgaXMgZmFsc2Us
IHRoaXMgbWV0aG9kIHJldHVybnMgbnVsbCBmb3IgY29vcmRpbmF0ZXMgb3V0c2lkZSBvZiB0aGUg
dmlld3BvcnQuCi0gICAgaWYgKCFyZXF1ZXN0Lmlnbm9yZUNsaXBwaW5nKCkgJiYgIWZyYW1lVmll
dy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuaW50ZXJzZWN0cyhIaXRUZXN0TG9jYXRpb246OnJlY3RG
b3JQb2ludChwb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBs
ZWZ0UGFkZGluZykpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIFBhc3NpbmcgYSB6ZXJv
IHBhZGRpbmcgd2lsbCB0cmlnZ2VyIGEgcmVjdCBoaXQgdGVzdCwgaG93ZXZlciBmb3IgdGhlIHB1
cnBvc2VzIG9mIG5vZGVzRnJvbVJlY3QsCi0gICAgLy8gd2Ugc3BlY2lhbCBoYW5kbGUgdGhpcyBj
YXNlIGluIG9yZGVyIHRvIHJldHVybiBhIHZhbGlkIE5vZGVMaXN0LgotICAgIGlmICghdG9wUGFk
ZGluZyAmJiAhcmlnaHRQYWRkaW5nICYmICFib3R0b21QYWRkaW5nICYmICFsZWZ0UGFkZGluZykg
ewotICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCk7Ci0gICAgICAgIHJldHVybiBo
YW5kbGVaZXJvUGFkZGluZyhyZXF1ZXN0LCByZXN1bHQpOwotICAgIH0KLQotICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRp
bmcsIGxlZnRQYWRkaW5nKTsKLSAgICByZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVzdCwgcmVz
dWx0KTsKLQotICAgIHJldHVybiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5y
ZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwotfQotCi1QYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVu
dDo6aGFuZGxlWmVyb1BhZGRpbmcoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRl
c3RSZXN1bHQmIHJlc3VsdCkgY29uc3QKLXsKLSAgICByZW5kZXJWaWV3KCktPmhpdFRlc3QocmVx
dWVzdCwgcmVzdWx0KTsKLQotICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7Ci0g
ICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIG5vZGUgPSBub2RlLT5kZXBy
ZWNhdGVkU2hhZG93QW5jZXN0b3JOb2RlKCk7Ci0gICAgTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+
ID4gbGlzdDsKLSAgICBsaXN0LmFkZChub2RlKTsKLSAgICByZXR1cm4gU3RhdGljSGFzaFNldE5v
ZGVMaXN0OjphZG9wdChsaXN0KTsKLX0KLQogRWxlbWVudCogRG9jdW1lbnQ6OmVsZW1lbnRGcm9t
UG9pbnQoaW50IHgsIGludCB5KSBjb25zdAogewogICAgIGlmICghcmVuZGVyZXIoKSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzU5LDIwICszNTksNiBAQCBwdWJsaWM6
CiAKICAgICBib29sIGNzc0dyaWRMYXlvdXRFbmFibGVkKCkgY29uc3Q7CiAKLSAgICAvKioKLSAg
ICAgKiBSZXRyaWV2ZSBhbGwgbm9kZXMgdGhhdCBpbnRlcnNlY3QgYSByZWN0IGluIHRoZSB3aW5k
b3cncyBkb2N1bWVudCwgdW50aWwgaXQgaXMgZnVsbHkgZW5jbG9zZWQgYnkKLSAgICAgKiB0aGUg
Ym91bmRhcmllcyBvZiBhIG5vZGUuCi0gICAgICoKLSAgICAgKiBAcGFyYW0gY2VudGVyWCB4IHJl
ZmVyZW5jZSBmb3IgdGhlIHJlY3RhbmdsZSBpbiBDU1MgcGl4ZWxzCi0gICAgICogQHBhcmFtIGNl
bnRlclkgeSByZWZlcmVuY2UgZm9yIHRoZSByZWN0YW5nbGUgaW4gQ1NTIHBpeGVscwotICAgICAq
IEBwYXJhbSB0b3BQYWRkaW5nIEhvdyBtdWNoIHRvIGV4cGFuZCB0aGUgdG9wIG9mIHRoZSByZWN0
YW5nbGUKLSAgICAgKiBAcGFyYW0gcmlnaHRQYWRkaW5nIEhvdyBtdWNoIHRvIGV4cGFuZCB0aGUg
cmlnaHQgb2YgdGhlIHJlY3RhbmdsZQotICAgICAqIEBwYXJhbSBib3R0b21QYWRkaW5nIEhvdyBt
dWNoIHRvIGV4cGFuZCB0aGUgYm90dG9tIG9mIHRoZSByZWN0YW5nbGUKLSAgICAgKiBAcGFyYW0g
bGVmdFBhZGRpbmcgSG93IG11Y2ggdG8gZXhwYW5kIHRoZSBsZWZ0IG9mIHRoZSByZWN0YW5nbGUK
LSAgICAgKi8KLSAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0KGludCBjZW50
ZXJYLCBpbnQgY2VudGVyWSwKLSAgICAgICAgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQg
cmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGlu
ZywKLSAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0g
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRl
c3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpIGNvbnN0OwogICAgIEVsZW1lbnQqIGVs
ZW1lbnRGcm9tUG9pbnQoaW50IHgsIGludCB5KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFJhbmdl
PiBjYXJldFJhbmdlRnJvbVBvaW50KGludCB4LCBpbnQgeSk7CiAKQEAgLTEyNjQsOCArMTI1MCw2
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNlYW1sZXNzUGFyZW50VXBkYXRlZFN0eWxlc2hlZXRz
KCk7CiAKLSAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBoYW5kbGVaZXJvUGFkZGluZyhjb25zdCBI
aXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmKSBjb25zdDsKLQogICAgIHZvaWQgbG9hZEV2
ZW50RGVsYXlUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiopOwogCiAgICAgdm9pZCBwZW5kaW5n
VGFza3NUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiopOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QW50b25pbyBHb21lcyA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+Ci0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlN0YXRpY0hhc2hTZXROb2RlTGlzdC5oIgotCi0jaW5jbHVkZSAiRWxlbWVudC5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVN0YXRpY0hhc2hTZXROb2RlTGlzdDo6U3RhdGlj
SGFzaFNldE5vZGVMaXN0KExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+JiBub2RlcykKLXsKLSAg
ICBtX25vZGVzLnN3YXAobm9kZXMpOwotfQotCi1TdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OlN0YXRp
Y0hhc2hTZXROb2RlTGlzdCgpCi17Ci19Ci0KLVN0YXRpY0hhc2hTZXROb2RlTGlzdDo6flN0YXRp
Y0hhc2hTZXROb2RlTGlzdCgpCi17Ci19Ci0KLXVuc2lnbmVkIFN0YXRpY0hhc2hTZXROb2RlTGlz
dDo6bGVuZ3RoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9ub2Rlcy5zaXplKCk7Ci19Ci0KLU5v
ZGUqIFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKLXsK
LSAgICBpZiAoaW5kZXggPCAodW5zaWduZWQpIG1fbm9kZXMuc2l6ZSgpKSB7Ci0gICAgICAgIExp
c3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fbm9kZXMuYmVn
aW4oKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBjb3VudCA9IDA7IGNvdW50IDwgaW5kZXg7ICsr
aXQsICsrY291bnQpIHsgfQotICAgICAgICByZXR1cm4gKCppdCkuZ2V0KCk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIDA7Ci19Ci0KLU5vZGUqIFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6bmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElkKSBjb25zdAotewotICAgIExpc3RIYXNoU2V0
PFJlZlB0cjxOb2RlPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fbm9kZXMuYmVnaW4oKTsKLSAg
ICBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9ub2Rl
cy5lbmQoKTsKLSAgICBmb3IgKCA7IGl0ICE9IGVuZCA7ICsraXQpIHsKLSAgICAgICAgTm9kZSog
bm9kZSA9ICgqaXQpLmdldCgpOwotICAgICAgICBpZiAodG9FbGVtZW50KG5vZGUpLT5nZXRJZEF0
dHJpYnV0ZSgpID09IGVsZW1lbnRJZCkKLSAgICAgICAgICAgIHJldHVybiBub2RlOwotICAgIH0K
LQotICAgIHJldHVybiAwOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oCShyZXZpc2lvbiAxNDkxNjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFN0YXRpY0hh
c2hTZXROb2RlTGlzdF9oCi0jZGVmaW5lIFN0YXRpY0hhc2hTZXROb2RlTGlzdF9oCi0KLSNpbmNs
dWRlICJOb2RlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIE5vZGU7Ci0KLWNsYXNzIFN0YXRpY0hhc2hTZXROb2RlTGlzdCA6
IHB1YmxpYyBOb2RlTGlzdCB7Ci1wdWJsaWM6Ci0gICAgU3RhdGljSGFzaFNldE5vZGVMaXN0KCk7
Ci0gICAgflN0YXRpY0hhc2hTZXROb2RlTGlzdCgpOwotCi0gICAgLy8gQWRvcHRzIHRoZSBjb250
ZW50cyBvZiB0aGUgbm9kZXMgTGlzdEhhc2hTZXQuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3Rh
dGljSGFzaFNldE5vZGVMaXN0PiBhZG9wdChjb25zdCBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4g
PiYgbm9kZXMpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHQoY29uc3RfY2FzdDxMaXN0SGFz
aFNldDxSZWZQdHI8Tm9kZT4gPiY+KG5vZGVzKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBhZG9wdChMaXN0SGFzaFNldDxSZWZQdHI8Tm9k
ZT4gPiYgbm9kZXMpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0YXRpY0hh
c2hTZXROb2RlTGlzdChub2RlcykpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBOb2RlKiBpdGVtKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIE5vZGUqIG5hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBT
dGF0aWNIYXNoU2V0Tm9kZUxpc3QoTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4mIG5vZGVzKTsK
LQotICAgIExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+IG1fbm9kZXM7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBTdGF0aWNIYXNoU2V0Tm9kZUxpc3RfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gMTQ5MTY1KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
OSw3ICs3OSw2IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290
LmgiCiAjaW5jbHVkZSAiU3BhdGlhbE5hdmlnYXRpb24uaCIKLSNpbmNsdWRlICJTdGF0aWNIYXNo
U2V0Tm9kZUxpc3QuaCIKICNpbmNsdWRlICJTdHlsZUNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAi
VGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCkBAIC0yODM1LDEzICsyODM0
LDEyIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Q2xpY2thYmxlTm9kZUZvclQKICAgICBIaXRU
ZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgSGl0
VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgdG91Y2hSYWRp
dXMpOwogCiAgICAgSW50UmVjdCB0b3VjaFJlY3QodG91Y2hDZW50ZXIgLSB0b3VjaFJhZGl1cywg
dG91Y2hSYWRpdXMgKyB0b3VjaFJhZGl1cyk7Ci0gICAgUmVmUHRyPFN0YXRpY0hhc2hTZXROb2Rl
TGlzdD4gbm9kZUxpc3QgPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5yZWN0
QmFzZWRUZXN0UmVzdWx0KCkpOwogCiAgICAgLy8gRklYTUU6IFNob3VsZCBiZSBhYmxlIHRvIGhh
bmRsZSB0YXJnZXROb2RlIGJlaW5nIGEgc2hhZG93IERPTSBub2RlIHRvIGF2b2lkIHBlcmZvcm1p
bmcgdW5jZXNzYXJ5IGhpdCB0ZXN0cwogICAgIC8vIGluIHRoZSBjYXNlIHdoZXJlIGZ1cnRoZXIg
cHJvY2Vzc2luZyBvbiB0aGUgbm9kZSBpcyByZXF1aXJlZC4gUmV0dXJuaW5nIHRoZSBzaGFkb3cg
YW5jZXN0b3IgcHJldmVudHMgYQogICAgIC8vIHJlZ3Jlc3Npb24gaW4gdG91Y2hhZGp1c3RtZW50
L2h0bWwtbGFiZWwuaHRtbC4gU29tZSByZWZpbmVtZW50IGlzIHJlcXVpcmVkIHRvIHRlc3Rpbmcv
aW50ZXJuYWxzIHRvCiAgICAgLy8gaGFuZGxlIHRhcmdldE5vZGUgYmVpbmcgYSBzaGFkb3cgRE9N
IG5vZGUuIAotICAgIGJvb2wgc3VjY2VzcyA9IGZpbmRCZXN0Q2xpY2thYmxlQ2FuZGlkYXRlKHRh
cmdldE5vZGUsIHRhcmdldFBvaW50LCB0b3VjaENlbnRlciwgdG91Y2hSZWN0LCAqbm9kZUxpc3Qu
Z2V0KCkpOworICAgIGJvb2wgc3VjY2VzcyA9IGZpbmRCZXN0Q2xpY2thYmxlQ2FuZGlkYXRlKHRh
cmdldE5vZGUsIHRhcmdldFBvaW50LCB0b3VjaENlbnRlciwgdG91Y2hSZWN0LCByZXN1bHQucmVj
dEJhc2VkVGVzdFJlc3VsdCgpKTsKICAgICBpZiAoc3VjY2VzcyAmJiB0YXJnZXROb2RlKQogICAg
ICAgICB0YXJnZXROb2RlID0gdGFyZ2V0Tm9kZS0+ZGVwcmVjYXRlZFNoYWRvd0FuY2VzdG9yTm9k
ZSgpOwogICAgIHJldHVybiBzdWNjZXNzOwpAQCAtMjg1Myw4ICsyODUxLDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmJlc3RDb250ZXh0TWVudU5vZGVGbwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCBIaXRUZXN0UmVxdWVzdDo6UmVh
ZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCB0b3VjaFJhZGl1cyk7CiAKICAgICBJbnRS
ZWN0IHRvdWNoUmVjdCh0b3VjaENlbnRlciAtIHRvdWNoUmFkaXVzLCB0b3VjaFJhZGl1cyArIHRv
dWNoUmFkaXVzKTsKLSAgICBSZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBub2RlTGlzdCA9
IFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQo
KSk7Ci0gICAgcmV0dXJuIGZpbmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUodGFyZ2V0Tm9kZSwg
dGFyZ2V0UG9pbnQsIHRvdWNoQ2VudGVyLCB0b3VjaFJlY3QsICpub2RlTGlzdC5nZXQoKSk7Cisg
ICAgcmV0dXJuIGZpbmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUodGFyZ2V0Tm9kZSwgdGFyZ2V0
UG9pbnQsIHRvdWNoQ2VudGVyLCB0b3VjaFJlY3QsIHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0
KCkpOwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6YmVzdFpvb21hYmxlQXJlYUZvclRvdWNoUG9p
bnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLCBjb25zdCBJbnRTaXplJiB0b3VjaFJhZGl1
cywgSW50UmVjdCYgdGFyZ2V0QXJlYSwgTm9kZSomIHRhcmdldE5vZGUpCkBAIC0yODYzLDggKzI4
NjAsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6YmVzdFpvb21hYmxlQXJlYUZvclRvCiAgICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIEhp
dFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0
UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50LCB0b3VjaFJhZGl1cyk7CiAKICAgICBJbnRS
ZWN0IHRvdWNoUmVjdCh0b3VjaENlbnRlciAtIHRvdWNoUmFkaXVzLCB0b3VjaFJhZGl1cyArIHRv
dWNoUmFkaXVzKTsKLSAgICBSZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBub2RlTGlzdCA9
IFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQo
KSk7Ci0gICAgcmV0dXJuIGZpbmRCZXN0Wm9vbWFibGVBcmVhKHRhcmdldE5vZGUsIHRhcmdldEFy
ZWEsIHRvdWNoQ2VudGVyLCB0b3VjaFJlY3QsICpub2RlTGlzdC5nZXQoKSk7CisgICAgcmV0dXJu
IGZpbmRCZXN0Wm9vbWFibGVBcmVhKHRhcmdldE5vZGUsIHRhcmdldEFyZWEsIHRvdWNoQ2VudGVy
LCB0b3VjaFJlY3QsIHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwogfQogCiBib29sIEV2
ZW50SGFuZGxlcjo6YWRqdXN0R2VzdHVyZVBvc2l0aW9uKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2
ZW50JiBnZXN0dXJlRXZlbnQsIEludFBvaW50JiBhZGp1c3RlZFBvaW50KQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcAkocmV2aXNpb24gMTQ5MTY1KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzMsNyArMjMzLDcgQEAgc3RhdGljIGlubGluZSBOb2RlKiBwYXJlbnRTaGFkb3dIb3N0T3JPdwog
fQogCiAvLyBDb21waWxlcyBhIGxpc3Qgb2Ygc3VidGFyZ2V0cyBvZiBhbGwgdGhlIHJlbGV2YW50
IHRhcmdldCBub2Rlcy4KLXZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3Qm
IGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdldEdlb21ldHJ5TGlzdCYgc3VidGFyZ2V0cywgTm9k
ZUZpbHRlciBub2RlRmlsdGVyLCBBcHBlbmRTdWJ0YXJnZXRzRm9yTm9kZSBhcHBlbmRTdWJ0YXJn
ZXRzRm9yTm9kZSkKK3ZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3RIYXNo
U2V0JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9tZXRyeUxpc3QmIHN1YnRhcmdldHMs
IE5vZGVGaWx0ZXIgbm9kZUZpbHRlciwgQXBwZW5kU3VidGFyZ2V0c0Zvck5vZGUgYXBwZW5kU3Vi
dGFyZ2V0c0Zvck5vZGUpCiB7CiAgICAgLy8gRmluZCBjYW5kaWRhdGVzIHJlc3BvbmRpbmcgdG8g
dGFwIGdlc3R1cmUgZXZlbnRzIGluIE8obikgdGltZS4KICAgICBIYXNoTWFwPE5vZGUqLCBOb2Rl
Kj4gcmVzcG9uZGVyTWFwOwpAQCAtMjQ0LDkgKzI0NCw5IEBAIHZvaWQgY29tcGlsZVN1YnRhcmdl
dExpc3QoY29uc3QgTm9kZUxpc3QKICAgICAvLyBBIG5vZGUgbWF0Y2hpbmcgdGhlIE5vZGVGaWx0
ZXIgaXMgY2FsbGVkIGEgcmVzcG9uZGVyLiBDYW5kaWRhdGUgbm9kZXMgbXVzdCBlaXRoZXIgYmUg
YQogICAgIC8vIHJlc3BvbmRlciBvciBoYXZlIGFuIGFuY2VzdG9yIHRoYXQgaXMgYSByZXNwb25k
ZXIuCiAgICAgLy8gVGhpcyBpdGVyYXRpb24gdGVzdHMgYWxsIGFuY2VzdG9ycyBhdCBtb3N0IG9u
Y2UgYnkgY2FjaGluZyBlYXJsaWVyIHJlc3VsdHMuCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gaW50
ZXJzZWN0ZWROb2Rlcy5sZW5ndGgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgTm9kZSogY29uc3Qgbm9kZSA9IGludGVyc2VjdGVkTm9kZXMu
aXRlbShpKTsKKyAgICBOb2RlTGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGludGVy
c2VjdGVkTm9kZXMuZW5kKCk7CisgICAgZm9yIChOb2RlTGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gaW50ZXJzZWN0ZWROb2Rlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAg
ICAgICAgTm9kZSogY29uc3Qgbm9kZSA9IGl0LT5nZXQoKTsKICAgICAgICAgVmVjdG9yPE5vZGUq
PiB2aXNpdGVkTm9kZXM7CiAgICAgICAgIE5vZGUqIHJlc3BvbmRpbmdOb2RlID0gMDsKICAgICAg
ICAgZm9yIChOb2RlKiB2aXNpdGVkTm9kZSA9IG5vZGU7IHZpc2l0ZWROb2RlOyB2aXNpdGVkTm9k
ZSA9IHZpc2l0ZWROb2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKQEAgLTMxMCwxMSAr
MzEwLDExIEBAIHZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3QKIH0KIAog
Ly8gQ29tcGlsZXMgYSBsaXN0IG9mIHpvb21hYmxlIHN1YnRhcmdldHMuCi12b2lkIGNvbXBpbGVa
b29tYWJsZVN1YnRhcmdldHMoY29uc3QgTm9kZUxpc3QmIGludGVyc2VjdGVkTm9kZXMsIFN1YnRh
cmdldEdlb21ldHJ5TGlzdCYgc3VidGFyZ2V0cykKK3ZvaWQgY29tcGlsZVpvb21hYmxlU3VidGFy
Z2V0cyhjb25zdCBOb2RlTGlzdEhhc2hTZXQmIGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdldEdl
b21ldHJ5TGlzdCYgc3VidGFyZ2V0cykKIHsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnRlcnNl
Y3RlZE5vZGVzLmxlbmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgewotICAgICAgICBOb2RlKiBjb25zdCBjYW5kaWRhdGUgPSBpbnRlcnNlY3RlZE5vZGVz
Lml0ZW0oaSk7CisgICAgTm9kZUxpc3RIYXNoU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBpbnRl
cnNlY3RlZE5vZGVzLmVuZCgpOworICAgIGZvciAoTm9kZUxpc3RIYXNoU2V0Ojpjb25zdF9pdGVy
YXRvciBpdCA9IGludGVyc2VjdGVkTm9kZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Cisg
ICAgICAgIE5vZGUqIGNvbnN0IGNhbmRpZGF0ZSA9IGl0LT5nZXQoKTsKICAgICAgICAgaWYgKG5v
ZGVJc1pvb21UYXJnZXQoY2FuZGlkYXRlKSkKICAgICAgICAgICAgIGFwcGVuZFpvb21hYmxlU3Vi
dGFyZ2V0cyhjYW5kaWRhdGUsIHN1YnRhcmdldHMpOwogICAgIH0KQEAgLTQ3Niw3ICs0NzYsNyBA
QCBib29sIGZpbmROb2RlV2l0aExvd2VzdERpc3RhbmNlTWV0cmljKE5vCiAKIH0gLy8gbmFtZXNw
YWNlIFRvdWNoQWRqdXN0bWVudAogCi1ib29sIGZpbmRCZXN0Q2xpY2thYmxlQ2FuZGlkYXRlKE5v
ZGUqJiB0YXJnZXROb2RlLCBJbnRQb2ludCAmdGFyZ2V0UG9pbnQsIGNvbnN0IEludFBvaW50ICZ0
b3VjaEhvdHNwb3QsIGNvbnN0IEludFJlY3QgJnRvdWNoQXJlYSwgY29uc3QgTm9kZUxpc3QmIG5v
ZGVMaXN0KQorYm9vbCBmaW5kQmVzdENsaWNrYWJsZUNhbmRpZGF0ZShOb2RlKiYgdGFyZ2V0Tm9k
ZSwgSW50UG9pbnQgJnRhcmdldFBvaW50LCBjb25zdCBJbnRQb2ludCAmdG91Y2hIb3RzcG90LCBj
b25zdCBJbnRSZWN0ICZ0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0SGFzaFNldCYgbm9kZUxpc3Qp
CiB7CiAgICAgSW50UmVjdCB0YXJnZXRBcmVhOwogICAgIFRvdWNoQWRqdXN0bWVudDo6U3VidGFy
Z2V0R2VvbWV0cnlMaXN0IHN1YnRhcmdldHM7CkBAIC00ODQsNyArNDg0LDcgQEAgYm9vbCBmaW5k
QmVzdENsaWNrYWJsZUNhbmRpZGF0ZShOb2RlKiYgdAogICAgIHJldHVybiBUb3VjaEFkanVzdG1l
bnQ6OmZpbmROb2RlV2l0aExvd2VzdERpc3RhbmNlTWV0cmljKHRhcmdldE5vZGUsIHRhcmdldFBv
aW50LCB0YXJnZXRBcmVhLCB0b3VjaEhvdHNwb3QsIHRvdWNoQXJlYSwgc3VidGFyZ2V0cywgVG91
Y2hBZGp1c3RtZW50OjpoeWJyaWREaXN0YW5jZUZ1bmN0aW9uKTsKIH0KIAotYm9vbCBmaW5kQmVz
dENvbnRleHRNZW51Q2FuZGlkYXRlKE5vZGUqJiB0YXJnZXROb2RlLCBJbnRQb2ludCAmdGFyZ2V0
UG9pbnQsIGNvbnN0IEludFBvaW50ICZ0b3VjaEhvdHNwb3QsIGNvbnN0IEludFJlY3QgJnRvdWNo
QXJlYSwgY29uc3QgTm9kZUxpc3QmIG5vZGVMaXN0KQorYm9vbCBmaW5kQmVzdENvbnRleHRNZW51
Q2FuZGlkYXRlKE5vZGUqJiB0YXJnZXROb2RlLCBJbnRQb2ludCAmdGFyZ2V0UG9pbnQsIGNvbnN0
IEludFBvaW50ICZ0b3VjaEhvdHNwb3QsIGNvbnN0IEludFJlY3QgJnRvdWNoQXJlYSwgY29uc3Qg
Tm9kZUxpc3RIYXNoU2V0JiBub2RlTGlzdCkKIHsKICAgICBJbnRSZWN0IHRhcmdldEFyZWE7CiAg
ICAgVG91Y2hBZGp1c3RtZW50OjpTdWJ0YXJnZXRHZW9tZXRyeUxpc3Qgc3VidGFyZ2V0czsKQEAg
LTQ5Miw3ICs0OTIsNyBAQCBib29sIGZpbmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUoTm9kZSom
CiAgICAgcmV0dXJuIFRvdWNoQWRqdXN0bWVudDo6ZmluZE5vZGVXaXRoTG93ZXN0RGlzdGFuY2VN
ZXRyaWModGFyZ2V0Tm9kZSwgdGFyZ2V0UG9pbnQsIHRhcmdldEFyZWEsIHRvdWNoSG90c3BvdCwg
dG91Y2hBcmVhLCBzdWJ0YXJnZXRzLCBUb3VjaEFkanVzdG1lbnQ6Omh5YnJpZERpc3RhbmNlRnVu
Y3Rpb24pOwogfQogCi1ib29sIGZpbmRCZXN0Wm9vbWFibGVBcmVhKE5vZGUqJiB0YXJnZXROb2Rl
LCBJbnRSZWN0JiB0YXJnZXRBcmVhLCBjb25zdCBJbnRQb2ludCYgdG91Y2hIb3RzcG90LCBjb25z
dCBJbnRSZWN0JiB0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0JiBub2RlTGlzdCkKK2Jvb2wgZmlu
ZEJlc3Rab29tYWJsZUFyZWEoTm9kZSomIHRhcmdldE5vZGUsIEludFJlY3QmIHRhcmdldEFyZWEs
IGNvbnN0IEludFBvaW50JiB0b3VjaEhvdHNwb3QsIGNvbnN0IEludFJlY3QmIHRvdWNoQXJlYSwg
Y29uc3QgTm9kZUxpc3RIYXNoU2V0JiBub2RlTGlzdCkKIHsKICAgICBJbnRQb2ludCB0YXJnZXRQ
b2ludDsKICAgICBUb3VjaEFkanVzdG1lbnQ6OlN1YnRhcmdldEdlb21ldHJ5TGlzdCBzdWJ0YXJn
ZXRzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5oCShyZXZpc2lvbiAx
NDkxNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw5ICsyOCwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wg
ZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUoTm9kZSomIHRhcmdldE5vZGUsIEludFBvaW50JiB0
YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQmIHRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCYg
dG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdCYpOwotYm9vbCBmaW5kQmVzdENvbnRleHRNZW51Q2Fu
ZGlkYXRlKE5vZGUqJiB0YXJnZXROb2RlLCBJbnRQb2ludCYgdGFyZ2V0UG9pbnQsIGNvbnN0IElu
dFBvaW50JiB0b3VjaEhvdHNwb3QsIGNvbnN0IEludFJlY3QmIHRvdWNoQXJlYSwgY29uc3QgTm9k
ZUxpc3QmKTsKLWJvb2wgZmluZEJlc3Rab29tYWJsZUFyZWEoTm9kZSomIHRhcmdldE5vZGUsIElu
dFJlY3QmIHRhcmdldEFyZWEsIGNvbnN0IEludFBvaW50JiB0b3VjaEhvdHNwb3QsIGNvbnN0IElu
dFJlY3QmIHRvdWNoQXJlYSwgY29uc3QgTm9kZUxpc3QmKTsKK3R5cGVkZWYgTGlzdEhhc2hTZXQ8
UmVmUHRyPE5vZGU+ID4gTm9kZUxpc3RIYXNoU2V0OworCitib29sIGZpbmRCZXN0Q2xpY2thYmxl
Q2FuZGlkYXRlKE5vZGUqJiB0YXJnZXROb2RlLCBJbnRQb2ludCYgdGFyZ2V0UG9pbnQsIGNvbnN0
IEludFBvaW50JiB0b3VjaEhvdHNwb3QsIGNvbnN0IEludFJlY3QmIHRvdWNoQXJlYSwgY29uc3Qg
Tm9kZUxpc3RIYXNoU2V0Jik7Citib29sIGZpbmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUoTm9k
ZSomIHRhcmdldE5vZGUsIEludFBvaW50JiB0YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQmIHRv
dWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCYgdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdEhhc2hT
ZXQmKTsKK2Jvb2wgZmluZEJlc3Rab29tYWJsZUFyZWEoTm9kZSomIHRhcmdldE5vZGUsIEludFJl
Y3QmIHRhcmdldEFyZWEsIGNvbnN0IEludFBvaW50JiB0b3VjaEhvdHNwb3QsIGNvbnN0IEludFJl
Y3QmIHRvdWNoQXJlYSwgY29uc3QgTm9kZUxpc3RIYXNoU2V0Jik7CiAvLyBGSVhNRTogSW1wbGVt
ZW50IHRoZSBzaW1pbGFyIGZ1bmN0aW9ucyBmb3Igb3RoZXIgZ2VzdHVyZXMgaGVyZSBhcyB3ZWxs
LgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDcgQEAKICNpbmNsdWRlICJS
ZW5kZXJNZW51TGlzdC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJl
bmRlclRyZWVBc1RleHQuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKQEAgLTg5LDYgKzkwLDcgQEAKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTcGVsbENo
ZWNrZXIuaCIKKyNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlN0eWxlU2hl
ZXRDb250ZW50cy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRyZWVT
Y29wZS5oIgpAQCAtMTQxNCw3ICsxNDE2LDcgQEAgUGFzc1JlZlB0cjxDbGllbnRSZWN0TGlzdD4g
SW50ZXJuYWxzOjp0bwogfQogI2VuZGlmCiAKLVBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEludGVybmFs
czo6bm9kZXNGcm9tUmVjdChEb2N1bWVudCogZG9jdW1lbnQsIGludCB4LCBpbnQgeSwgdW5zaWdu
ZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLAorUGFzc1JlZlB0cjxOb2RlTGlz
dD4gSW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0KERvY3VtZW50KiBkb2N1bWVudCwgaW50IGNlbnRl
clgsIGludCBjZW50ZXJZLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRp
bmcsCiAgICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJv
b2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29sIGFsbG93Q2hp
bGRGcmFtZUNvbnRlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIGlmICghZG9j
dW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpIHx8ICFkb2N1bWVudC0+ZnJhbWUoKS0+dmlldygp
KSB7CkBAIC0xNDIyLDYgKzE0MjQsMTUgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW50ZXJuYWxz
Ojpub2Rlc0ZybwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBGcmFtZSogZnJhbWUg
PSBkb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGRvY3VtZW50
LT52aWV3KCk7CisgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGRvY3VtZW50LT5yZW5kZXJW
aWV3KCk7CisgICAgaWYgKCFyZW5kZXJWaWV3KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZs
b2F0IHpvb21GYWN0b3IgPSBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKTsKKyAgICBMYXlvdXRQb2lu
dCBwb2ludCA9IHJvdW5kZWRMYXlvdXRQb2ludChGbG9hdFBvaW50KGNlbnRlclggKiB6b29tRmFj
dG9yICsgZnJhbWVWaWV3LT5zY3JvbGxYKCksIGNlbnRlclkgKiB6b29tRmFjdG9yICsgZnJhbWVW
aWV3LT5zY3JvbGxZKCkpKTsKKwogICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5
cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpB
Y3RpdmU7CiAgICAgaWYgKGlnbm9yZUNsaXBwaW5nKQogICAgICAgICBoaXRUeXBlIHw9IEhpdFRl
c3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZzsKQEAgLTE0MzAsNyArMTQ0MSwyOCBAQCBQYXNzUmVm
UHRyPE5vZGVMaXN0PiBJbnRlcm5hbHM6Om5vZGVzRnJvCiAgICAgaWYgKGFsbG93Q2hpbGRGcmFt
ZUNvbnRlbnQpCiAgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRG
cmFtZUNvbnRlbnQ7CiAKLSAgICByZXR1cm4gZG9jdW1lbnQtPm5vZGVzRnJvbVJlY3QoeCwgeSwg
dG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgaGl0
VHlwZSk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChoaXRUeXBlKTsKKworICAgIC8vIFdo
ZW4gaWdub3JlQ2xpcHBpbmcgaXMgZmFsc2UsIHRoaXMgbWV0aG9kIHJldHVybnMgbnVsbCBmb3Ig
Y29vcmRpbmF0ZXMgb3V0c2lkZSBvZiB0aGUgdmlld3BvcnQuCisgICAgaWYgKCFyZXF1ZXN0Lmln
bm9yZUNsaXBwaW5nKCkgJiYgIWZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuaW50ZXJz
ZWN0cyhIaXRUZXN0TG9jYXRpb246OnJlY3RGb3JQb2ludChwb2ludCwgdG9wUGFkZGluZywgcmln
aHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZykpKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBtYXRjaGVzOworCisgICAgLy8gTmVlZCBw
YWRkaW5nIHRvIHRyaWdnZXIgYSByZWN0IGJhc2VkIGhpdCB0ZXN0LCBidXQgd2Ugd2FudCB0byBy
ZXR1cm4gYSBOb2RlTGlzdAorICAgIC8vIHNvIHdlIHNwZWNpYWwgY2FzZSB0aGlzLgorICAgIGlm
ICghdG9wUGFkZGluZyAmJiAhcmlnaHRQYWRkaW5nICYmICFib3R0b21QYWRkaW5nICYmICFsZWZ0
UGFkZGluZykgeworICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCk7CisgICAgICAg
IHJlbmRlclZpZXctPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKKyAgICAgICAgaWYgKHJlc3Vs
dC5pbm5lck5vZGUoKSkKKyAgICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKHJlc3VsdC5pbm5lck5v
ZGUoKS0+ZGVwcmVjYXRlZFNoYWRvd0FuY2VzdG9yTm9kZSgpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5n
LCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZyk7CisgICAgICAgIHJlbmRlclZpZXctPmhpdFRl
c3QocmVxdWVzdCwgcmVzdWx0KTsKKyAgICAgICAgY29weVRvVmVjdG9yKHJlc3VsdC5yZWN0QmFz
ZWRUZXN0UmVzdWx0KCksIG1hdGNoZXMpOworICAgIH0KKworICAgIHJldHVybiBTdGF0aWNOb2Rl
TGlzdDo6YWRvcHQobWF0Y2hlcyk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjplbWl0SW5zcGVjdG9y
RGlkQmVnaW5GcmFtZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0w
NC0yNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBTdGF0aWNI
YXNoU2V0Tm9kZUxpc3QgaXMgdW5uZWNlc3NhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTIxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJh
dG9yL1dlYktpdEV4cG9ydHMuZGVmLmluOgorCiAyMDEzLTA0LTI1ICBBbmRyZWFzIEtsaW5nICA8
YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFKFBBUlNFRF9TVFlMRV9T
SEVFVF9DQUNISU5HKSBhbmQgbWFrZSBpdCBhbHdheXMtb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9y
dEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgkocmV2aXNpb24gMTQ5MTY1KQorKysgU291
cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhw
b3J0cy5kZWYuaW4JKHdvcmtpbmcgY29weSkKQEAgLTMwNCw3ICszMDQsNiBAQCBFWFBPUlRTCiAg
ICAgICAgID8/MUNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQE1BRUBYWgogICAg
ICAgICA/Y29udGV4dERlc3Ryb3llZEBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3Jl
QEBVQUVYWFoKICAgICAgICAgPz8wQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBA
UUFFQFBBVlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAMUBAWgotICAgICAgICA/bm9kZXNGcm9tUmVj
dEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVA
QEBXVEZAQEhISUlJSUlAWgogICAgICAgICA/c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JARWRp
dG9yQFdlYkNvcmVAQFFCRV9OVzRNYXJrZXJUeXBlQERvY3VtZW50TWFya2VyQDJASEhAWgogICAg
ICAgICA/aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWRARWRpdG9yQFdlYkNvcmVAQFFC
RV9OWFoKICAgICAgICAgP3RvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nQEVkaXRvckBXZWJD
b3JlQEBRQUVYWFoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBA
CisyMDEzLTA0LTI1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IFN0YXRpY0hhc2hTZXROb2RlTGlzdCBpcyB1bm5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1MjE5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQudmNwcm9qL1dlYktpdEV4cG9y
dHMuZGVmLmluOgorCiAyMDEzLTA0LTI1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQ29uc29sZU1lc3NhZ2Ugc2hvdWxkIGlu
Y2x1ZGUgbGluZSBhbmQgY29sdW1uIG51bWJlciB3aGVyZSBwb3NzaWJsZQpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmlu
CShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dl
YktpdEV4cG9ydHMuZGVmLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsNyArMzA0LDYgQEAgRVhQ
T1JUUwogICAgICAgICA/PzFDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBNQUVA
WFoKICAgICAgICAgP2NvbnRleHREZXN0cm95ZWRAQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJA
V2ViQ29yZUBAVUFFWFhaCiAgICAgICAgID8/MENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdl
YkNvcmVAQFFBRUBQQVZTY3JpcHRFeGVjdXRpb25Db250ZXh0QDFAQFoKLSAgICAgICAgP25vZGVz
RnJvbVJlY3RARG9jdW1lbnRAV2ViQ29yZUBAUUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBX
ZWJDb3JlQEBAV1RGQEBISElJSUlJQFoKICAgICAgICAgP3NlbGVjdGlvblN0YXJ0SGFzTWFya2Vy
Rm9yQEVkaXRvckBXZWJDb3JlQEBRQkVfTlc0TWFya2VyVHlwZUBEb2N1bWVudE1hcmtlckAyQEhI
QFoKICAgICAgICAgP2lzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkQEVkaXRvckBXZWJD
b3JlQEBRQkVfTlhaCiAgICAgICAgID90b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZ0BFZGl0
b3JAV2ViQ29yZUBAUUFFWFhaCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199807</attachid>
            <date>2013-04-26 02:36:46 -0700</date>
            <delta_ts>2013-04-26 03:09:55 -0700</delta_ts>
            <desc>Fixed more builds</desc>
            <filename>bug-115219-20130426023609.patch</filename>
            <type>text/plain</type>
            <size>37053</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEzLTA0LTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFN0YXRpY0hhc2hTZXROb2RlTGlz
dCBpcyB1bm5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE1MjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTW92ZWQgRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgaW50byBJbnRlcm5hbHM6Om5v
ZGVzRnJvbVJlY3QgcGVyCisgICAgICAgIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv
bS9jaHJvbWl1bS9ibGluay8rLzc4MjA3YzVjMzQzODNmYmI4MDdiYjkzNDdkZWI2NzE2OGYwOWJi
MDQuCisKKyAgICAgICAgQWxzbyBtYWRlIFRvdWNoQWRqdXN0bWVudCBmdW5jdGlvbnMgdXNlIEhh
c2hMaXN0U2V0IGRpcmVjdGx5IGluc3RlYWQgb2Ygd3JhcHBpbmcgaXQgaW5zaWRlCisgICAgICAg
IGEgU3RhdGljSGFzaFNldE5vZGVMaXN0IHNpbmNlIHRoZXJlIHdhcyBubyBuZWVkIHRvIHVzZSB0
aGUgbGF0dGVyLgorCisgICAgICAgIFdpdGggdGhlc2UgdHdvIGNoYW5nZXMsIEkgZGVsZXRlZCBT
dGF0aWNIYXNoU2V0Tm9kZUxpc3QuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0Lmg6IFJl
bW92ZWQuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpiZXN0Q2xpY2thYmxlTm9kZUZvclRvdWNoUG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpiZXN0Q29udGV4dE1lbnVOb2RlRm9yVG91Y2hQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmJlc3Rab29tYWJsZUFyZWFGb3JU
b3VjaFBvaW50KToKKyAgICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUb3VjaEFkanVzdG1lbnQ6OmNvbXBpbGVTdWJ0YXJnZXRMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRvdWNoQWRqdXN0bWVudDo6Y29tcGlsZVpvb21hYmxlU3VidGFyZ2V0cyk6
CisgICAgICAgIChXZWJDb3JlOjpmaW5kQmVzdENsaWNrYWJsZUNhbmRpZGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpmaW5kQmVzdENvbnRleHRNZW51Q2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmZpbmRCZXN0Wm9vbWFibGVBcmVhKToKKyAgICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVu
dC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0KToKKwogMjAxMy0w
NC0yNSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU3R5bGVQ
cm9wZXJ0eVNldDo6Z2V0UHJvcGVydHlTaG9ydGhhbmQoKSBzaG91bGQgcmV0dXJuIGEgU3RyaW5n
LgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMjMyLDcgKzEyMzIsNiBA
QCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1NlbGVjdG9yUXVlcnkuY3BwCiAgICAgZG9t
L1NoYWRvd1Jvb3QuY3BwCiAgICAgZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwCi0gICAgZG9tL1N0
YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAKICAgICBkb20vU3RhdGljTm9kZUxpc3QuY3BwCiAgICAg
ZG9tL1N0cmluZ0NhbGxiYWNrLmNwcAogICAgIGRvbS9TdHlsZWRFbGVtZW50LmNwcApJbmRleDog
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zMDczLDggKzMw
NzMsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0
ZWRDbGlja09wdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5oIFwKLQlTb3VyY2Uv
V2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCBcCi0JU291cmNlL1dlYkNvcmUv
ZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGlj
Tm9kZUxpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9kZUxpc3QuaCBcCiAJ
U291cmNlL1dlYkNvcmUvZG9tL1N0cmluZ0NhbGxiYWNrLmNwcCBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJ
KHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1NCw3ICs0NTQsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vTm9kZVJlbmRl
cmluZ1RyYXZlcnNhbC5jcHAgXAogICAgIGRvbS9Ob2RlVHJhdmVyc2FsLmNwcCBcCiAgICAgZG9t
L05vdGF0aW9uLmNwcCBcCi0gICAgZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAgXAogICAg
IGRvbS9PdmVyZmxvd0V2ZW50LmNwcCBcCiAgICAgZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3Bw
IFwKICAgICBkb20vUGVuZGluZ1NjcmlwdC5jcHAgXApAQCAtMTY4Myw3ICsxNjgyLDYgQEAgSEVB
REVSUyArPSBcCiAgICAgZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCBcCiAgICAgZG9tL05v
ZGVUcmF2ZXJzYWwuaCBcCiAgICAgZG9tL05vdGF0aW9uLmggXAotICAgIGRvbS9TdGF0aWNIYXNo
U2V0Tm9kZUxpc3QuaCBcCiAgICAgZG9tL092ZXJmbG93RXZlbnQuaCBcCiAgICAgZG9tL1BhZ2VU
cmFuc2l0aW9uRXZlbnQuaCBcCiAgICAgZG9tL1Bvc2l0aW9uLmggXApJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4JKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDcgQEAgX19aTjdXZWJDb3JlMTNIVFRQ
SGVhZGVyTWFwQzFFdgogX19aTjdXZWJDb3JlMTNIVFRQSGVhZGVyTWFwRDFFdgogX19aTjdXZWJD
b3JlMTNIaXRUZXN0UmVzdWx0QzFFUktTMF8KIF9fWk43V2ViQ29yZTEzSGl0VGVzdFJlc3VsdEMx
RVJLTlNfMTFMYXlvdXRQb2ludEUKK19fWk43V2ViQ29yZTEzSGl0VGVzdFJlc3VsdEMxRVJLTlNf
MTFMYXlvdXRQb2ludEVqampqCiBfX1pON1dlYkNvcmUxM0hpdFRlc3RSZXN1bHREMUV2CiBfX1pO
N1dlYkNvcmUxM0lkZW50aWZpZXJSZXAzZ2V0RVBLYwogX19aTjdXZWJDb3JlMTNJZGVudGlmaWVy
UmVwM2dldEVpCkBAIC00NjMsNiArNDY0LDcgQEAgX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRl
eHQ5ZHJhd0ltYWdlRQogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ5c2V0U2hhZG93RVJL
TlNfOUZsb2F0U2l6ZUVmUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQogX19aTjdXZWJDb3Jl
MTVHcmFwaGljc0NvbnRleHQ5dHJhbnNsYXRlRWZmCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29u
dGV4dEQxRXYKK19fWk43V2ViQ29yZTE1SGl0VGVzdExvY2F0aW9uMTJyZWN0Rm9yUG9pbnRFUktO
U18xMUxheW91dFBvaW50RWpqamoKIF9fWk43V2ViQ29yZTE1SlNET01XaW5kb3dCYXNlOGNvbW1v
blZNRXYKIF9fWk43V2ViQ29yZTE1UGxhdGZvcm1DQUxheWVyMThzZXRHZW9tZXRyeUZsaXBwZWRF
YgogX19aTjdXZWJDb3JlMTVQcm90ZWN0aW9uU3BhY2VDMUVSS04zV1RGNlN0cmluZ0VpTlNfMjVQ
cm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlRVM0X05TXzM1UHJvdGVjdGlvblNwYWNlQXV0aGVudGlj
YXRpb25TY2hlbWVFCkBAIC0xMzEyLDYgKzEzMTQsNyBAQCBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0
UmVzdWx0MTZhYnNvbHV0ZU1lCiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0MTZhbHREaXNw
bGF5U3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxN2lzQ29udGVudEVkaXRh
YmxlRXYKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxOHRpdGxlRGlzcGxheVN0cmluZ0V2
CitfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0MTlyZWN0QmFzZWRUZXN0UmVzdWx0RXYKIF9f
Wk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQ1aW1hZ2VFdgogX19aTks3V2ViQ29yZTEzSGl0VGVz
dFJlc3VsdDV0aXRsZUVSTlNfMTNUZXh0RGlyZWN0aW9uRQogX19aTks3V2ViQ29yZTEzSGl0VGVz
dFJlc3VsdDlpbWFnZVJlY3RFdgpAQCAtMTQ3NCw2ICsxNDc3LDcgQEAgX19aTks3V2ViQ29yZTRO
b2RlMTF0ZXh0Q29udGVudEViCiBfX1pOSzdXZWJDb3JlNE5vZGUxM293bmVyRG9jdW1lbnRFdgog
X19aTks3V2ViQ29yZTROb2RlMTRpc0Rlc2NlbmRhbnRPZkVQS1MwXwogX19aTks3V2ViQ29yZTRO
b2RlMThnZXRTdWJyZXNvdXJjZVVSTHNFUk4zV1RGMTFMaXN0SGFzaFNldElOU180S1VSTEVMbTI1
NkVOU184S1VSTEhhc2hFRUUKK19fWk5LN1dlYkNvcmU0Tm9kZTI4ZGVwcmVjYXRlZFNoYWRvd0Fu
Y2VzdG9yTm9kZUV2CiBfX1pOSzdXZWJDb3JlNE5vZGUzMW51bWJlck9mU2NvcGVkSFRNTFN0eWxl
Q2hpbGRyZW5FdgogX19aTks3V2ViQ29yZTROb2RlOW5vZGVJbmRleEV2CiBfX1pOSzdXZWJDb3Jl
NFBhZ2UxMHBsdWdpbkRhdGFFdgpAQCAtMTU1MSw3ICsxNTU1LDYgQEAgX19aTks3V2ViQ29yZTdJ
bnRSZWN0Y3Y2Q0dSZWN0RXYKIF9fWk5LN1dlYkNvcmU3UnVuTG9vcDlUaW1lckJhc2U4aXNBY3Rp
dmVFdgogX19aTks3V2ViQ29yZThEb2N1bWVudDExY29tcGxldGVVUkxFUktOM1dURjZTdHJpbmdF
CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTNheE9iamVjdENhY2hlRXYKLV9fWk5LN1dlYkNvcmU4
RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqagogX19aTks3V2ViQ29yZThEb2N1bWVudDE0
Z2V0RWxlbWVudEJ5SWRFUktOM1dURjEyQXRvbWljU3RyaW5nRQogX19aTks3V2ViQ29yZThEb2N1
bWVudDMxZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZ0VSS04zV1RGNlN0cmluZ0UKIF9f
Wk5LN1dlYkNvcmU4RG9jdW1lbnQ0Ym9keUV2CkBAIC0xNjAwLDYgKzE2MDMsNyBAQCBfX1pOSzdX
ZWJDb3JlOVJlbmRlckJveDEyY2xpZW50SGVpZ2h0RXYKIF9fWk5LN1dlYkNvcmU5UmVuZGVyQm94
MTFjbGllbnRXaWR0aEV2CiBfX1pUVk43V2ViQ29yZTEyQ2hyb21lQ2xpZW50RQogX19aVFZON1dl
YkNvcmUxNExvYWRlclN0cmF0ZWd5RQorX19aVFZON1dlYkNvcmUxNFN0YXRpY05vZGVMaXN0RQog
X19aVFZON1dlYkNvcmUxNVN0b3JhZ2VTdHJhdGVneUUKIF9fWlRWTjdXZWJDb3JlMTZEYXRhYmFz
ZVN0cmF0ZWd5RQogX19aVFZON1dlYkNvcmUxNkljb25EYXRhYmFzZUJhc2VFCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUyNzMsOCArNTI3Myw2IEBACiAJCUNFN0IyREI0
MTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTdCMkRCMDE1ODZBQkFE
MDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICovOyB9OwogCQlDRTdC
MkRCNTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTdCMkRCMTE1ODZBQkFE
MDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U3QjJEQjYxNTg2QUJBRDAwOThCM0ZB
IC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIyMTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0
ZXJuYXRpdmVXaXRoUmFuZ2UubW0gKi87IH07Ci0JCUNFQTM5NDlDMTFENDVDREEwMDMwOTRDRiAv
KiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0VBMzk0OUExMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hT
ZXROb2RlTGlzdC5jcHAgKi87IH07Ci0JCUNFQTM5NDlEMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0
aWNIYXNoU2V0Tm9kZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFQTM5NDlCMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxp
c3QuaCAqLzsgfTsKIAkJQ0VDQURGQzYxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVy
bmF0aXZlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENFQ0FERkMyMTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5jcHAgKi87
IH07CiAJCUNFQ0FERkM3MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDQURGQzMx
NTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0VDQURGQzgxNTM3NzhGRjAwRTM3
MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0VDQURGQzQxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNv
bW1hbmQuY3BwICovOyB9OwpAQCAtMTIwNjIsOCArMTIwNjAsNiBAQAogCQlDRTdCMkRCMDE1ODZB
QkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
Lm1tOyBwYXRoID0gbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U3QjJEQjExNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaDsgcGF0aCA9IG1hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFu
Z2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U3QjJEQjIxNTg2QUJBRDAwOThC
M0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTsgcGF0aCA9IG1h
Yy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUNFQTM5NDlBMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljSGFzaFNldE5vZGVM
aXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0VBMzk0OUIxMUQ0NUNEQTAw
MzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0VDQURGQzIxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlvbkFsdGVy
bmF0aXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VDQURGQzMxNTM3NzhG
RjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERpY3RhdGlvbkFsdGVybmF0aXZlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNFQ0FERkM0MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlvbkNvbW1hbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA1NjAsOCArMjA1NTYsNiBAQAog
CQkJCTMxNzQxQUFCMTY2MzVFNDUwMDhBNUI3RSAvKiBTaW11bGF0ZWRDbGlja09wdGlvbnMuaCAq
LywKIAkJCQlEMDFBMjdBQjEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5jcHAg
Ki8sCiAJCQkJRDAxQTI3QUMxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuaCAq
LywKLQkJCQlDRUEzOTQ5QTExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0
LmNwcCAqLywKLQkJCQlDRUEzOTQ5QjExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5v
ZGVMaXN0LmggKi8sCiAJCQkJQkM3RkE2MkMwRDFGMEVGRjAwREIyMkE5IC8qIFN0YXRpY05vZGVM
aXN0LmNwcCAqLywKIAkJCQlCQzdGQTYyQjBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxp
c3QuaCAqLywKIAkJCQk4MTAyQzU4NzEzMjVCQjExMDBEREU2N0EgLyogU3RyaW5nQ2FsbGJhY2su
Y3BwICovLApAQCAtMjM1MDcsNyArMjM1MDEsNiBAQAogCQkJCTk3QkM2QTVEMTUwNUYwODEwMDFC
NzRBQyAvKiBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUEyRTZFNUEwQ0M1NTIxMzAwNEEyMDYyIC8qIFNRTFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5M0YxOTk2MzA4MjQ1RTU5MDAxRTlBQkMgLyogU1NMS2V5R2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlDRUEzOTQ5RDExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVM
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdGQTYyRDBEMUYwRUZGMDBEQjIyQTkgLyogU3Rh
dGljTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QUZCMzUwMTE1MTUxQTcwMEIwNDVD
QiAvKiBTdGVwUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQkUzN0UwMERBRUUwMEUwMDEw
ODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjU3NCw3ICsyNjU2Nyw2
IEBACiAJCQkJOTdCQzZBNUExNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJFNkU1OTBDQzU1MjEzMDA0QTIwNjIgLyogU1FMVmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlBRTYwODI0NUU1OTAwMUU5QUJDIC8qIFNT
TEtleUdlbmVyYXRvck1hYy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlDRUEzOTQ5QzExRDQ1Q0RB
MDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDN0ZBNjJFMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNUFGQjM0RjExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxRTNGOUM3MERBMDU5REMwMDI1MDkxMSAvKiBTdG9yYWdlLmNwcCBp
biBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxNDkx
NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTYsNyArMTU2LDYgQEAKICNpbmNsdWRlICJTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiU3RhdGljSGFz
aFNldE5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgogI2luY2x1ZGUg
IlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKQEAgLTE0
MDcsNTggKzE0MDYsNiBAQCBTdHJpbmcgRG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKCkgY29u
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi0vLyBGSVhNRTogV2UgbmVlZCB0byBkaXNjdXNz
IHRoZSBET00gQVBJIGhlcmUgYXQgc29tZSBwb2ludC4gSWRlYXM6Ci0vLyAqIG1ha2luZyBpdCBy
ZWNlaXZlIGEgcmVjdCBhcyBwYXJhbWV0ZXIsIGkuZS4gbm9kZXNGcm9tUmVjdCh4LCB5LCB3LCBo
KTsKLS8vICogbWFraW5nIGl0IHJlY2VpdmUgdGhlIGV4cGFkaW5nIHNpemUgb2YgZWFjaCBkaXJl
Y3Rpb24gc2VwYXJhdGVseSwKLS8vICAgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFNpemUs
IHJpZ2h0U2l6ZSwgYm90dG9tU2l6ZSwgbGVmdFNpemUpOwotUGFzc1JlZlB0cjxOb2RlTGlzdD4g
RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25l
ZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRp
bmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RU
eXBlIGhpdFR5cGUpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFNoYXJlIGNvZGUgYmV0d2VlbiB0
aGlzLCBlbGVtZW50RnJvbVBvaW50IGFuZCBjYXJldFJhbmdlRnJvbVBvaW50LgotICAgIGlmICgh
cmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+
ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gMDsKLSAgICBGcmFtZVZp
ZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7Ci0gICAgaWYgKCFmcmFtZVZpZXcpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgZmxvYXQgem9vbUZhY3RvciA9IGZyYW1lLT5wYWdlWm9vbUZh
Y3RvcigpOwotICAgIExheW91dFBvaW50IHBvaW50ID0gcm91bmRlZExheW91dFBvaW50KEZsb2F0
UG9pbnQoY2VudGVyWCAqIHpvb21GYWN0b3IgKyB2aWV3KCktPnNjcm9sbFgoKSwgY2VudGVyWSAq
IHpvb21GYWN0b3IgKyB2aWV3KCktPnNjcm9sbFkoKSkpOwotCi0gICAgSGl0VGVzdFJlcXVlc3Qg
cmVxdWVzdChoaXRUeXBlKTsKLQotICAgIC8vIFdoZW4gaWdub3JlQ2xpcHBpbmcgaXMgZmFsc2Us
IHRoaXMgbWV0aG9kIHJldHVybnMgbnVsbCBmb3IgY29vcmRpbmF0ZXMgb3V0c2lkZSBvZiB0aGUg
dmlld3BvcnQuCi0gICAgaWYgKCFyZXF1ZXN0Lmlnbm9yZUNsaXBwaW5nKCkgJiYgIWZyYW1lVmll
dy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuaW50ZXJzZWN0cyhIaXRUZXN0TG9jYXRpb246OnJlY3RG
b3JQb2ludChwb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBs
ZWZ0UGFkZGluZykpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIFBhc3NpbmcgYSB6ZXJv
IHBhZGRpbmcgd2lsbCB0cmlnZ2VyIGEgcmVjdCBoaXQgdGVzdCwgaG93ZXZlciBmb3IgdGhlIHB1
cnBvc2VzIG9mIG5vZGVzRnJvbVJlY3QsCi0gICAgLy8gd2Ugc3BlY2lhbCBoYW5kbGUgdGhpcyBj
YXNlIGluIG9yZGVyIHRvIHJldHVybiBhIHZhbGlkIE5vZGVMaXN0LgotICAgIGlmICghdG9wUGFk
ZGluZyAmJiAhcmlnaHRQYWRkaW5nICYmICFib3R0b21QYWRkaW5nICYmICFsZWZ0UGFkZGluZykg
ewotICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCk7Ci0gICAgICAgIHJldHVybiBo
YW5kbGVaZXJvUGFkZGluZyhyZXF1ZXN0LCByZXN1bHQpOwotICAgIH0KLQotICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRp
bmcsIGxlZnRQYWRkaW5nKTsKLSAgICByZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVzdCwgcmVz
dWx0KTsKLQotICAgIHJldHVybiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5y
ZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwotfQotCi1QYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVu
dDo6aGFuZGxlWmVyb1BhZGRpbmcoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRl
c3RSZXN1bHQmIHJlc3VsdCkgY29uc3QKLXsKLSAgICByZW5kZXJWaWV3KCktPmhpdFRlc3QocmVx
dWVzdCwgcmVzdWx0KTsKLQotICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7Ci0g
ICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIG5vZGUgPSBub2RlLT5kZXBy
ZWNhdGVkU2hhZG93QW5jZXN0b3JOb2RlKCk7Ci0gICAgTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+
ID4gbGlzdDsKLSAgICBsaXN0LmFkZChub2RlKTsKLSAgICByZXR1cm4gU3RhdGljSGFzaFNldE5v
ZGVMaXN0OjphZG9wdChsaXN0KTsKLX0KLQogRWxlbWVudCogRG9jdW1lbnQ6OmVsZW1lbnRGcm9t
UG9pbnQoaW50IHgsIGludCB5KSBjb25zdAogewogICAgIGlmICghcmVuZGVyZXIoKSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzU5LDIwICszNTksNiBAQCBwdWJsaWM6
CiAKICAgICBib29sIGNzc0dyaWRMYXlvdXRFbmFibGVkKCkgY29uc3Q7CiAKLSAgICAvKioKLSAg
ICAgKiBSZXRyaWV2ZSBhbGwgbm9kZXMgdGhhdCBpbnRlcnNlY3QgYSByZWN0IGluIHRoZSB3aW5k
b3cncyBkb2N1bWVudCwgdW50aWwgaXQgaXMgZnVsbHkgZW5jbG9zZWQgYnkKLSAgICAgKiB0aGUg
Ym91bmRhcmllcyBvZiBhIG5vZGUuCi0gICAgICoKLSAgICAgKiBAcGFyYW0gY2VudGVyWCB4IHJl
ZmVyZW5jZSBmb3IgdGhlIHJlY3RhbmdsZSBpbiBDU1MgcGl4ZWxzCi0gICAgICogQHBhcmFtIGNl
bnRlclkgeSByZWZlcmVuY2UgZm9yIHRoZSByZWN0YW5nbGUgaW4gQ1NTIHBpeGVscwotICAgICAq
IEBwYXJhbSB0b3BQYWRkaW5nIEhvdyBtdWNoIHRvIGV4cGFuZCB0aGUgdG9wIG9mIHRoZSByZWN0
YW5nbGUKLSAgICAgKiBAcGFyYW0gcmlnaHRQYWRkaW5nIEhvdyBtdWNoIHRvIGV4cGFuZCB0aGUg
cmlnaHQgb2YgdGhlIHJlY3RhbmdsZQotICAgICAqIEBwYXJhbSBib3R0b21QYWRkaW5nIEhvdyBt
dWNoIHRvIGV4cGFuZCB0aGUgYm90dG9tIG9mIHRoZSByZWN0YW5nbGUKLSAgICAgKiBAcGFyYW0g
bGVmdFBhZGRpbmcgSG93IG11Y2ggdG8gZXhwYW5kIHRoZSBsZWZ0IG9mIHRoZSByZWN0YW5nbGUK
LSAgICAgKi8KLSAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0KGludCBjZW50
ZXJYLCBpbnQgY2VudGVyWSwKLSAgICAgICAgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQg
cmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGlu
ZywKLSAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0g
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRl
c3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpIGNvbnN0OwogICAgIEVsZW1lbnQqIGVs
ZW1lbnRGcm9tUG9pbnQoaW50IHgsIGludCB5KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFJhbmdl
PiBjYXJldFJhbmdlRnJvbVBvaW50KGludCB4LCBpbnQgeSk7CiAKQEAgLTEyNjQsOCArMTI1MCw2
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNlYW1sZXNzUGFyZW50VXBkYXRlZFN0eWxlc2hlZXRz
KCk7CiAKLSAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBoYW5kbGVaZXJvUGFkZGluZyhjb25zdCBI
aXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmKSBjb25zdDsKLQogICAgIHZvaWQgbG9hZEV2
ZW50RGVsYXlUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiopOwogCiAgICAgdm9pZCBwZW5kaW5n
VGFza3NUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiopOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QW50b25pbyBHb21lcyA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+Ci0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlN0YXRpY0hhc2hTZXROb2RlTGlzdC5oIgotCi0jaW5jbHVkZSAiRWxlbWVudC5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVN0YXRpY0hhc2hTZXROb2RlTGlzdDo6U3RhdGlj
SGFzaFNldE5vZGVMaXN0KExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+JiBub2RlcykKLXsKLSAg
ICBtX25vZGVzLnN3YXAobm9kZXMpOwotfQotCi1TdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OlN0YXRp
Y0hhc2hTZXROb2RlTGlzdCgpCi17Ci19Ci0KLVN0YXRpY0hhc2hTZXROb2RlTGlzdDo6flN0YXRp
Y0hhc2hTZXROb2RlTGlzdCgpCi17Ci19Ci0KLXVuc2lnbmVkIFN0YXRpY0hhc2hTZXROb2RlTGlz
dDo6bGVuZ3RoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9ub2Rlcy5zaXplKCk7Ci19Ci0KLU5v
ZGUqIFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKLXsK
LSAgICBpZiAoaW5kZXggPCAodW5zaWduZWQpIG1fbm9kZXMuc2l6ZSgpKSB7Ci0gICAgICAgIExp
c3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fbm9kZXMuYmVn
aW4oKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBjb3VudCA9IDA7IGNvdW50IDwgaW5kZXg7ICsr
aXQsICsrY291bnQpIHsgfQotICAgICAgICByZXR1cm4gKCppdCkuZ2V0KCk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIDA7Ci19Ci0KLU5vZGUqIFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6bmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElkKSBjb25zdAotewotICAgIExpc3RIYXNoU2V0
PFJlZlB0cjxOb2RlPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fbm9kZXMuYmVnaW4oKTsKLSAg
ICBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9ub2Rl
cy5lbmQoKTsKLSAgICBmb3IgKCA7IGl0ICE9IGVuZCA7ICsraXQpIHsKLSAgICAgICAgTm9kZSog
bm9kZSA9ICgqaXQpLmdldCgpOwotICAgICAgICBpZiAodG9FbGVtZW50KG5vZGUpLT5nZXRJZEF0
dHJpYnV0ZSgpID09IGVsZW1lbnRJZCkKLSAgICAgICAgICAgIHJldHVybiBub2RlOwotICAgIH0K
LQotICAgIHJldHVybiAwOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oCShyZXZpc2lvbiAxNDkxNjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFN0YXRpY0hh
c2hTZXROb2RlTGlzdF9oCi0jZGVmaW5lIFN0YXRpY0hhc2hTZXROb2RlTGlzdF9oCi0KLSNpbmNs
dWRlICJOb2RlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIE5vZGU7Ci0KLWNsYXNzIFN0YXRpY0hhc2hTZXROb2RlTGlzdCA6
IHB1YmxpYyBOb2RlTGlzdCB7Ci1wdWJsaWM6Ci0gICAgU3RhdGljSGFzaFNldE5vZGVMaXN0KCk7
Ci0gICAgflN0YXRpY0hhc2hTZXROb2RlTGlzdCgpOwotCi0gICAgLy8gQWRvcHRzIHRoZSBjb250
ZW50cyBvZiB0aGUgbm9kZXMgTGlzdEhhc2hTZXQuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3Rh
dGljSGFzaFNldE5vZGVMaXN0PiBhZG9wdChjb25zdCBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4g
PiYgbm9kZXMpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHQoY29uc3RfY2FzdDxMaXN0SGFz
aFNldDxSZWZQdHI8Tm9kZT4gPiY+KG5vZGVzKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBhZG9wdChMaXN0SGFzaFNldDxSZWZQdHI8Tm9k
ZT4gPiYgbm9kZXMpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0YXRpY0hh
c2hTZXROb2RlTGlzdChub2RlcykpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBOb2RlKiBpdGVtKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIE5vZGUqIG5hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBT
dGF0aWNIYXNoU2V0Tm9kZUxpc3QoTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4mIG5vZGVzKTsK
LQotICAgIExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+IG1fbm9kZXM7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBTdGF0aWNIYXNoU2V0Tm9kZUxpc3RfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gMTQ5MTY1KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
OSw3ICs3OSw2IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290
LmgiCiAjaW5jbHVkZSAiU3BhdGlhbE5hdmlnYXRpb24uaCIKLSNpbmNsdWRlICJTdGF0aWNIYXNo
U2V0Tm9kZUxpc3QuaCIKICNpbmNsdWRlICJTdHlsZUNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAi
VGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCkBAIC0yODM1LDEzICsyODM0
LDEyIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Q2xpY2thYmxlTm9kZUZvclQKICAgICBIaXRU
ZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgSGl0
VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgdG91Y2hSYWRp
dXMpOwogCiAgICAgSW50UmVjdCB0b3VjaFJlY3QodG91Y2hDZW50ZXIgLSB0b3VjaFJhZGl1cywg
dG91Y2hSYWRpdXMgKyB0b3VjaFJhZGl1cyk7Ci0gICAgUmVmUHRyPFN0YXRpY0hhc2hTZXROb2Rl
TGlzdD4gbm9kZUxpc3QgPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5yZWN0
QmFzZWRUZXN0UmVzdWx0KCkpOwogCiAgICAgLy8gRklYTUU6IFNob3VsZCBiZSBhYmxlIHRvIGhh
bmRsZSB0YXJnZXROb2RlIGJlaW5nIGEgc2hhZG93IERPTSBub2RlIHRvIGF2b2lkIHBlcmZvcm1p
bmcgdW5jZXNzYXJ5IGhpdCB0ZXN0cwogICAgIC8vIGluIHRoZSBjYXNlIHdoZXJlIGZ1cnRoZXIg
cHJvY2Vzc2luZyBvbiB0aGUgbm9kZSBpcyByZXF1aXJlZC4gUmV0dXJuaW5nIHRoZSBzaGFkb3cg
YW5jZXN0b3IgcHJldmVudHMgYQogICAgIC8vIHJlZ3Jlc3Npb24gaW4gdG91Y2hhZGp1c3RtZW50
L2h0bWwtbGFiZWwuaHRtbC4gU29tZSByZWZpbmVtZW50IGlzIHJlcXVpcmVkIHRvIHRlc3Rpbmcv
aW50ZXJuYWxzIHRvCiAgICAgLy8gaGFuZGxlIHRhcmdldE5vZGUgYmVpbmcgYSBzaGFkb3cgRE9N
IG5vZGUuIAotICAgIGJvb2wgc3VjY2VzcyA9IGZpbmRCZXN0Q2xpY2thYmxlQ2FuZGlkYXRlKHRh
cmdldE5vZGUsIHRhcmdldFBvaW50LCB0b3VjaENlbnRlciwgdG91Y2hSZWN0LCAqbm9kZUxpc3Qu
Z2V0KCkpOworICAgIGJvb2wgc3VjY2VzcyA9IGZpbmRCZXN0Q2xpY2thYmxlQ2FuZGlkYXRlKHRh
cmdldE5vZGUsIHRhcmdldFBvaW50LCB0b3VjaENlbnRlciwgdG91Y2hSZWN0LCByZXN1bHQucmVj
dEJhc2VkVGVzdFJlc3VsdCgpKTsKICAgICBpZiAoc3VjY2VzcyAmJiB0YXJnZXROb2RlKQogICAg
ICAgICB0YXJnZXROb2RlID0gdGFyZ2V0Tm9kZS0+ZGVwcmVjYXRlZFNoYWRvd0FuY2VzdG9yTm9k
ZSgpOwogICAgIHJldHVybiBzdWNjZXNzOwpAQCAtMjg1Myw4ICsyODUxLDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmJlc3RDb250ZXh0TWVudU5vZGVGbwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCBIaXRUZXN0UmVxdWVzdDo6UmVh
ZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCB0b3VjaFJhZGl1cyk7CiAKICAgICBJbnRS
ZWN0IHRvdWNoUmVjdCh0b3VjaENlbnRlciAtIHRvdWNoUmFkaXVzLCB0b3VjaFJhZGl1cyArIHRv
dWNoUmFkaXVzKTsKLSAgICBSZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBub2RlTGlzdCA9
IFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQo
KSk7Ci0gICAgcmV0dXJuIGZpbmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUodGFyZ2V0Tm9kZSwg
dGFyZ2V0UG9pbnQsIHRvdWNoQ2VudGVyLCB0b3VjaFJlY3QsICpub2RlTGlzdC5nZXQoKSk7Cisg
ICAgcmV0dXJuIGZpbmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUodGFyZ2V0Tm9kZSwgdGFyZ2V0
UG9pbnQsIHRvdWNoQ2VudGVyLCB0b3VjaFJlY3QsIHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0
KCkpOwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6YmVzdFpvb21hYmxlQXJlYUZvclRvdWNoUG9p
bnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLCBjb25zdCBJbnRTaXplJiB0b3VjaFJhZGl1
cywgSW50UmVjdCYgdGFyZ2V0QXJlYSwgTm9kZSomIHRhcmdldE5vZGUpCkBAIC0yODYzLDggKzI4
NjAsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6YmVzdFpvb21hYmxlQXJlYUZvclRvCiAgICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIEhp
dFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0
UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50LCB0b3VjaFJhZGl1cyk7CiAKICAgICBJbnRS
ZWN0IHRvdWNoUmVjdCh0b3VjaENlbnRlciAtIHRvdWNoUmFkaXVzLCB0b3VjaFJhZGl1cyArIHRv
dWNoUmFkaXVzKTsKLSAgICBSZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBub2RlTGlzdCA9
IFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQo
KSk7Ci0gICAgcmV0dXJuIGZpbmRCZXN0Wm9vbWFibGVBcmVhKHRhcmdldE5vZGUsIHRhcmdldEFy
ZWEsIHRvdWNoQ2VudGVyLCB0b3VjaFJlY3QsICpub2RlTGlzdC5nZXQoKSk7CisgICAgcmV0dXJu
IGZpbmRCZXN0Wm9vbWFibGVBcmVhKHRhcmdldE5vZGUsIHRhcmdldEFyZWEsIHRvdWNoQ2VudGVy
LCB0b3VjaFJlY3QsIHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwogfQogCiBib29sIEV2
ZW50SGFuZGxlcjo6YWRqdXN0R2VzdHVyZVBvc2l0aW9uKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2
ZW50JiBnZXN0dXJlRXZlbnQsIEludFBvaW50JiBhZGp1c3RlZFBvaW50KQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcAkocmV2aXNpb24gMTQ5MTY1KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzMsNyArMjMzLDcgQEAgc3RhdGljIGlubGluZSBOb2RlKiBwYXJlbnRTaGFkb3dIb3N0T3JPdwog
fQogCiAvLyBDb21waWxlcyBhIGxpc3Qgb2Ygc3VidGFyZ2V0cyBvZiBhbGwgdGhlIHJlbGV2YW50
IHRhcmdldCBub2Rlcy4KLXZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3Qm
IGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdldEdlb21ldHJ5TGlzdCYgc3VidGFyZ2V0cywgTm9k
ZUZpbHRlciBub2RlRmlsdGVyLCBBcHBlbmRTdWJ0YXJnZXRzRm9yTm9kZSBhcHBlbmRTdWJ0YXJn
ZXRzRm9yTm9kZSkKK3ZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3RIYXNo
U2V0JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9tZXRyeUxpc3QmIHN1YnRhcmdldHMs
IE5vZGVGaWx0ZXIgbm9kZUZpbHRlciwgQXBwZW5kU3VidGFyZ2V0c0Zvck5vZGUgYXBwZW5kU3Vi
dGFyZ2V0c0Zvck5vZGUpCiB7CiAgICAgLy8gRmluZCBjYW5kaWRhdGVzIHJlc3BvbmRpbmcgdG8g
dGFwIGdlc3R1cmUgZXZlbnRzIGluIE8obikgdGltZS4KICAgICBIYXNoTWFwPE5vZGUqLCBOb2Rl
Kj4gcmVzcG9uZGVyTWFwOwpAQCAtMjQ0LDkgKzI0NCw5IEBAIHZvaWQgY29tcGlsZVN1YnRhcmdl
dExpc3QoY29uc3QgTm9kZUxpc3QKICAgICAvLyBBIG5vZGUgbWF0Y2hpbmcgdGhlIE5vZGVGaWx0
ZXIgaXMgY2FsbGVkIGEgcmVzcG9uZGVyLiBDYW5kaWRhdGUgbm9kZXMgbXVzdCBlaXRoZXIgYmUg
YQogICAgIC8vIHJlc3BvbmRlciBvciBoYXZlIGFuIGFuY2VzdG9yIHRoYXQgaXMgYSByZXNwb25k
ZXIuCiAgICAgLy8gVGhpcyBpdGVyYXRpb24gdGVzdHMgYWxsIGFuY2VzdG9ycyBhdCBtb3N0IG9u
Y2UgYnkgY2FjaGluZyBlYXJsaWVyIHJlc3VsdHMuCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gaW50
ZXJzZWN0ZWROb2Rlcy5sZW5ndGgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgTm9kZSogY29uc3Qgbm9kZSA9IGludGVyc2VjdGVkTm9kZXMu
aXRlbShpKTsKKyAgICBOb2RlTGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGludGVy
c2VjdGVkTm9kZXMuZW5kKCk7CisgICAgZm9yIChOb2RlTGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gaW50ZXJzZWN0ZWROb2Rlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAg
ICAgICAgTm9kZSogY29uc3Qgbm9kZSA9IGl0LT5nZXQoKTsKICAgICAgICAgVmVjdG9yPE5vZGUq
PiB2aXNpdGVkTm9kZXM7CiAgICAgICAgIE5vZGUqIHJlc3BvbmRpbmdOb2RlID0gMDsKICAgICAg
ICAgZm9yIChOb2RlKiB2aXNpdGVkTm9kZSA9IG5vZGU7IHZpc2l0ZWROb2RlOyB2aXNpdGVkTm9k
ZSA9IHZpc2l0ZWROb2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKQEAgLTI3Nyw3ICsy
NzcsNyBAQCB2b2lkIGNvbXBpbGVTdWJ0YXJnZXRMaXN0KGNvbnN0IE5vZGVMaXN0CiAKICAgICAv
LyBXZSBjb21waWxlIHRoZSBsaXN0IG9mIGNvbXBvbmVudCBhYnNvbHV0ZSBxdWFkcyBpbnN0ZWFk
IG9mIHVzaW5nIHRoZSBib3VuZGluZyByZWN0CiAgICAgLy8gdG8gYmUgYWJsZSB0byBwZXJmb3Jt
IGJldHRlciBoaXQtdGVzdGluZyBvbiBpbmxpbmUgbGlua3Mgb24gbGluZS1icmVha3MuCi0gICAg
bGVuZ3RoID0gY2FuZGlkYXRlcy5zaXplKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gY2FuZGlk
YXRlcy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7
CiAgICAgICAgIE5vZGUqIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZXNbaV07CiAgICAgICAgIC8vIFNr
aXAgbm9kZXMgd2hvJ3MgcmVzcG9uZGVycyBhcmUgYW5jZXN0b3JzIG9mIG90aGVyIHJlc3BvbmRl
cnMuIFRoaXMgZ2l2ZXMgcHJlZmVyZW5jZSB0bwpAQCAtMzEwLDExICszMTAsMTEgQEAgdm9pZCBj
b21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdAogfQogCiAvLyBDb21waWxlcyBhIGxp
c3Qgb2Ygem9vbWFibGUgc3VidGFyZ2V0cy4KLXZvaWQgY29tcGlsZVpvb21hYmxlU3VidGFyZ2V0
cyhjb25zdCBOb2RlTGlzdCYgaW50ZXJzZWN0ZWROb2RlcywgU3VidGFyZ2V0R2VvbWV0cnlMaXN0
JiBzdWJ0YXJnZXRzKQordm9pZCBjb21waWxlWm9vbWFibGVTdWJ0YXJnZXRzKGNvbnN0IE5vZGVM
aXN0SGFzaFNldCYgaW50ZXJzZWN0ZWROb2RlcywgU3VidGFyZ2V0R2VvbWV0cnlMaXN0JiBzdWJ0
YXJnZXRzKQogewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGludGVyc2VjdGVkTm9kZXMubGVuZ3Ro
KCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAg
IE5vZGUqIGNvbnN0IGNhbmRpZGF0ZSA9IGludGVyc2VjdGVkTm9kZXMuaXRlbShpKTsKKyAgICBO
b2RlTGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGludGVyc2VjdGVkTm9kZXMuZW5k
KCk7CisgICAgZm9yIChOb2RlTGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaW50ZXJz
ZWN0ZWROb2Rlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgTm9kZSogY29u
c3QgY2FuZGlkYXRlID0gaXQtPmdldCgpOwogICAgICAgICBpZiAobm9kZUlzWm9vbVRhcmdldChj
YW5kaWRhdGUpKQogICAgICAgICAgICAgYXBwZW5kWm9vbWFibGVTdWJ0YXJnZXRzKGNhbmRpZGF0
ZSwgc3VidGFyZ2V0cyk7CiAgICAgfQpAQCAtNDc2LDcgKzQ3Niw3IEBAIGJvb2wgZmluZE5vZGVX
aXRoTG93ZXN0RGlzdGFuY2VNZXRyaWMoTm8KIAogfSAvLyBuYW1lc3BhY2UgVG91Y2hBZGp1c3Rt
ZW50CiAKLWJvb2wgZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUoTm9kZSomIHRhcmdldE5vZGUs
IEludFBvaW50ICZ0YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQgJnRvdWNoSG90c3BvdCwgY29u
c3QgSW50UmVjdCAmdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdCYgbm9kZUxpc3QpCitib29sIGZp
bmRCZXN0Q2xpY2thYmxlQ2FuZGlkYXRlKE5vZGUqJiB0YXJnZXROb2RlLCBJbnRQb2ludCAmdGFy
Z2V0UG9pbnQsIGNvbnN0IEludFBvaW50ICZ0b3VjaEhvdHNwb3QsIGNvbnN0IEludFJlY3QgJnRv
dWNoQXJlYSwgY29uc3QgTm9kZUxpc3RIYXNoU2V0JiBub2RlTGlzdCkKIHsKICAgICBJbnRSZWN0
IHRhcmdldEFyZWE7CiAgICAgVG91Y2hBZGp1c3RtZW50OjpTdWJ0YXJnZXRHZW9tZXRyeUxpc3Qg
c3VidGFyZ2V0czsKQEAgLTQ4NCw3ICs0ODQsNyBAQCBib29sIGZpbmRCZXN0Q2xpY2thYmxlQ2Fu
ZGlkYXRlKE5vZGUqJiB0CiAgICAgcmV0dXJuIFRvdWNoQWRqdXN0bWVudDo6ZmluZE5vZGVXaXRo
TG93ZXN0RGlzdGFuY2VNZXRyaWModGFyZ2V0Tm9kZSwgdGFyZ2V0UG9pbnQsIHRhcmdldEFyZWEs
IHRvdWNoSG90c3BvdCwgdG91Y2hBcmVhLCBzdWJ0YXJnZXRzLCBUb3VjaEFkanVzdG1lbnQ6Omh5
YnJpZERpc3RhbmNlRnVuY3Rpb24pOwogfQogCi1ib29sIGZpbmRCZXN0Q29udGV4dE1lbnVDYW5k
aWRhdGUoTm9kZSomIHRhcmdldE5vZGUsIEludFBvaW50ICZ0YXJnZXRQb2ludCwgY29uc3QgSW50
UG9pbnQgJnRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCAmdG91Y2hBcmVhLCBjb25zdCBOb2Rl
TGlzdCYgbm9kZUxpc3QpCitib29sIGZpbmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUoTm9kZSom
IHRhcmdldE5vZGUsIEludFBvaW50ICZ0YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQgJnRvdWNo
SG90c3BvdCwgY29uc3QgSW50UmVjdCAmdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdEhhc2hTZXQm
IG5vZGVMaXN0KQogewogICAgIEludFJlY3QgdGFyZ2V0QXJlYTsKICAgICBUb3VjaEFkanVzdG1l
bnQ6OlN1YnRhcmdldEdlb21ldHJ5TGlzdCBzdWJ0YXJnZXRzOwpAQCAtNDkyLDcgKzQ5Miw3IEBA
IGJvb2wgZmluZEJlc3RDb250ZXh0TWVudUNhbmRpZGF0ZShOb2RlKiYKICAgICByZXR1cm4gVG91
Y2hBZGp1c3RtZW50OjpmaW5kTm9kZVdpdGhMb3dlc3REaXN0YW5jZU1ldHJpYyh0YXJnZXROb2Rl
LCB0YXJnZXRQb2ludCwgdGFyZ2V0QXJlYSwgdG91Y2hIb3RzcG90LCB0b3VjaEFyZWEsIHN1YnRh
cmdldHMsIFRvdWNoQWRqdXN0bWVudDo6aHlicmlkRGlzdGFuY2VGdW5jdGlvbik7CiB9CiAKLWJv
b2wgZmluZEJlc3Rab29tYWJsZUFyZWEoTm9kZSomIHRhcmdldE5vZGUsIEludFJlY3QmIHRhcmdl
dEFyZWEsIGNvbnN0IEludFBvaW50JiB0b3VjaEhvdHNwb3QsIGNvbnN0IEludFJlY3QmIHRvdWNo
QXJlYSwgY29uc3QgTm9kZUxpc3QmIG5vZGVMaXN0KQorYm9vbCBmaW5kQmVzdFpvb21hYmxlQXJl
YShOb2RlKiYgdGFyZ2V0Tm9kZSwgSW50UmVjdCYgdGFyZ2V0QXJlYSwgY29uc3QgSW50UG9pbnQm
IHRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCYgdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdEhh
c2hTZXQmIG5vZGVMaXN0KQogewogICAgIEludFBvaW50IHRhcmdldFBvaW50OwogICAgIFRvdWNo
QWRqdXN0bWVudDo6U3VidGFyZ2V0R2VvbWV0cnlMaXN0IHN1YnRhcmdldHM7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmgJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkg
KzI4LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBmaW5kQmVzdENsaWNrYWJs
ZUNhbmRpZGF0ZShOb2RlKiYgdGFyZ2V0Tm9kZSwgSW50UG9pbnQmIHRhcmdldFBvaW50LCBjb25z
dCBJbnRQb2ludCYgdG91Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0JiB0b3VjaEFyZWEsIGNvbnN0
IE5vZGVMaXN0Jik7Ci1ib29sIGZpbmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUoTm9kZSomIHRh
cmdldE5vZGUsIEludFBvaW50JiB0YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQmIHRvdWNoSG90
c3BvdCwgY29uc3QgSW50UmVjdCYgdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdCYpOwotYm9vbCBm
aW5kQmVzdFpvb21hYmxlQXJlYShOb2RlKiYgdGFyZ2V0Tm9kZSwgSW50UmVjdCYgdGFyZ2V0QXJl
YSwgY29uc3QgSW50UG9pbnQmIHRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCYgdG91Y2hBcmVh
LCBjb25zdCBOb2RlTGlzdCYpOwordHlwZWRlZiBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiBO
b2RlTGlzdEhhc2hTZXQ7CisKK2Jvb2wgZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUoTm9kZSom
IHRhcmdldE5vZGUsIEludFBvaW50JiB0YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQmIHRvdWNo
SG90c3BvdCwgY29uc3QgSW50UmVjdCYgdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdEhhc2hTZXQm
KTsKK2Jvb2wgZmluZEJlc3RDb250ZXh0TWVudUNhbmRpZGF0ZShOb2RlKiYgdGFyZ2V0Tm9kZSwg
SW50UG9pbnQmIHRhcmdldFBvaW50LCBjb25zdCBJbnRQb2ludCYgdG91Y2hIb3RzcG90LCBjb25z
dCBJbnRSZWN0JiB0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0SGFzaFNldCYpOworYm9vbCBmaW5k
QmVzdFpvb21hYmxlQXJlYShOb2RlKiYgdGFyZ2V0Tm9kZSwgSW50UmVjdCYgdGFyZ2V0QXJlYSwg
Y29uc3QgSW50UG9pbnQmIHRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCYgdG91Y2hBcmVhLCBj
b25zdCBOb2RlTGlzdEhhc2hTZXQmKTsKIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhlIHNpbWlsYXIg
ZnVuY3Rpb25zIGZvciBvdGhlciBnZXN0dXJlcyBoZXJlIGFzIHdlbGwuCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlz
aW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQAogI2luY2x1ZGUgIlJlbmRlck1lbnVMaXN0Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5o
IgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgiCiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdD
b29yZGluYXRvci5oIgpAQCAtODksNiArOTAsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlNwZWxsQ2hlY2tlci5oIgorI2luY2x1
ZGUgIlN0YXRpY05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCiAj
aW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCkBAIC0xNDE0
LDcgKzE0MTYsNyBAQCBQYXNzUmVmUHRyPENsaWVudFJlY3RMaXN0PiBJbnRlcm5hbHM6OnRvCiB9
CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0
KERvY3VtZW50KiBkb2N1bWVudCwgaW50IHgsIGludCB5LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1
bnNpZ25lZCByaWdodFBhZGRpbmcsCitQYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnRlcm5hbHM6Om5v
ZGVzRnJvbVJlY3QoRG9jdW1lbnQqIGRvY3VtZW50LCBpbnQgY2VudGVyWCwgaW50IGNlbnRlclks
IHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywKICAgICB1bnNpZ25l
ZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGlu
ZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgYWxsb3dDaGlsZEZyYW1lQ29udGVudCwg
RXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1l
bnQtPmZyYW1lKCkgfHwgIWRvY3VtZW50LT5mcmFtZSgpLT52aWV3KCkpIHsKQEAgLTE0MjIsNiAr
MTQyNCwxNSBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnRlcm5hbHM6Om5vZGVzRnJvCiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFt
ZSgpOworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZG9jdW1lbnQtPnZpZXcoKTsKKyAgICBS
ZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZG9jdW1lbnQtPnJlbmRlclZpZXcoKTsKKyAgICBpZiAo
IXJlbmRlclZpZXcpCisgICAgICAgIHJldHVybiAwOworCisgICAgZmxvYXQgem9vbUZhY3RvciA9
IGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpOworICAgIExheW91dFBvaW50IHBvaW50ID0gcm91bmRl
ZExheW91dFBvaW50KEZsb2F0UG9pbnQoY2VudGVyWCAqIHpvb21GYWN0b3IgKyBmcmFtZVZpZXct
PnNjcm9sbFgoKSwgY2VudGVyWSAqIHpvb21GYWN0b3IgKyBmcmFtZVZpZXctPnNjcm9sbFkoKSkp
OworCiAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0
VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZTsKICAgICBpZiAo
aWdub3JlQ2xpcHBpbmcpCiAgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6Oklnbm9y
ZUNsaXBwaW5nOwpAQCAtMTQzMCw3ICsxNDQxLDI4IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IElu
dGVybmFsczo6bm9kZXNGcm8KICAgICBpZiAoYWxsb3dDaGlsZEZyYW1lQ29udGVudCkKICAgICAg
ICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudDsKIAot
ICAgIHJldHVybiBkb2N1bWVudC0+bm9kZXNGcm9tUmVjdCh4LCB5LCB0b3BQYWRkaW5nLCByaWdo
dFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBoaXRUeXBlKTsKKyAgICBIaXRU
ZXN0UmVxdWVzdCByZXF1ZXN0KGhpdFR5cGUpOworCisgICAgLy8gV2hlbiBpZ25vcmVDbGlwcGlu
ZyBpcyBmYWxzZSwgdGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRz
aWRlIG9mIHRoZSB2aWV3cG9ydC4KKyAgICBpZiAoIXJlcXVlc3QuaWdub3JlQ2xpcHBpbmcoKSAm
JiAhZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEhpdFRlc3RMb2Nh
dGlvbjo6cmVjdEZvclBvaW50KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRv
bVBhZGRpbmcsIGxlZnRQYWRkaW5nKSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgVmVjdG9y
PFJlZlB0cjxOb2RlPiA+IG1hdGNoZXM7CisKKyAgICAvLyBOZWVkIHBhZGRpbmcgdG8gdHJpZ2dl
ciBhIHJlY3QgYmFzZWQgaGl0IHRlc3QsIGJ1dCB3ZSB3YW50IHRvIHJldHVybiBhIE5vZGVMaXN0
CisgICAgLy8gc28gd2Ugc3BlY2lhbCBjYXNlIHRoaXMuCisgICAgaWYgKCF0b3BQYWRkaW5nICYm
ICFyaWdodFBhZGRpbmcgJiYgIWJvdHRvbVBhZGRpbmcgJiYgIWxlZnRQYWRkaW5nKSB7CisgICAg
ICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50KTsKKyAgICAgICAgcmVuZGVyVmlldy0+aGl0
VGVzdChyZXF1ZXN0LCByZXN1bHQpOworICAgICAgICBpZiAocmVzdWx0LmlubmVyTm9kZSgpKQor
ICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQocmVzdWx0LmlubmVyTm9kZSgpLT5kZXByZWNhdGVk
U2hhZG93QW5jZXN0b3JOb2RlKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcs
IGxlZnRQYWRkaW5nKTsKKyAgICAgICAgcmVuZGVyVmlldy0+aGl0VGVzdChyZXF1ZXN0LCByZXN1
bHQpOworICAgICAgICBjb3B5VG9WZWN0b3IocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSwg
bWF0Y2hlcyk7CisgICAgfQorCisgICAgcmV0dXJuIFN0YXRpY05vZGVMaXN0OjphZG9wdChtYXRj
aGVzKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OmVtaXRJbnNwZWN0b3JEaWRCZWdpbkZyYW1lKCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA0LTI1ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFN0YXRpY0hhc2hTZXROb2RlTGlzdCBp
cyB1bm5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE1MjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0
cy5kZWYuaW46CisKIDIwMTMtMDQtMjUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEUoUEFSU0VEX1NUWUxFX1NIRUVUX0NBQ0hJTkcpIGFu
ZCBtYWtlIGl0IGFsd2F5cy1vbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ov
V2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktp
dEV4cG9ydHMuZGVmLmluCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktp
dC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgkod29y
a2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw2IEBAIEVYUE9SVFMKICAgICAgICAgPz8xQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBATUFFQFhaCiAgICAgICAgID9jb250ZXh0RGVz
dHJveWVkQENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFVBRVhYWgogICAgICAg
ICA/PzBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBRQUVAUEFWU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEAxQEBaCi0gICAgICAgID9ub2Rlc0Zyb21SZWN0QERvY3VtZW50QFdlYkNv
cmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxpc3RAV2ViQ29yZUBAQFdURkBASEhJSUlJSUBa
CiAgICAgICAgID9zZWxlY3Rpb25TdGFydEhhc01hcmtlckZvckBFZGl0b3JAV2ViQ29yZUBAUUJF
X05XNE1hcmtlclR5cGVARG9jdW1lbnRNYXJrZXJAMkBISEBaCiAgICAgICAgID9pc0NvbnRpbnVv
dXNTcGVsbENoZWNraW5nRW5hYmxlZEBFZGl0b3JAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/
dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmdARWRpdG9yQFdlYkNvcmVAQFFBRVhYWgpJbmRl
eDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDQtMjUgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RhdGljSGFzaFNldE5v
ZGVMaXN0IGlzIHVubmVjZXNzYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTUyMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW46CisKIDIw
MTMtMDQtMjUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBDb25zb2xlTWVzc2FnZSBzaG91bGQgaW5jbHVkZSBsaW5lIGFuZCBj
b2x1bW4gbnVtYmVyIHdoZXJlIHBvc3NpYmxlCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJL
aXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHJldmlzaW9uIDE0OTE2
NSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTMwNCw3ICszMDQsNiBAQCBFWFBPUlRTCiAgICAgICAgID8/
MUNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQE1BRUBYWgogICAgICAgICA/Y29u
dGV4dERlc3Ryb3llZEBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBVQUVYWFoK
ICAgICAgICAgPz8wQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAUUFFQFBBVlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRAMUBAWgotICAgICAgICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVu
dEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhI
SUlJSUlAWgogICAgICAgICA/c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JARWRpdG9yQFdlYkNv
cmVAQFFCRV9OVzRNYXJrZXJUeXBlQERvY3VtZW50TWFya2VyQDJASEhAWgogICAgICAgICA/aXND
b250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWRARWRpdG9yQFdlYkNvcmVAQFFCRV9OWFoKICAg
ICAgICAgP3RvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nQEVkaXRvckBXZWJDb3JlQEBRQUVY
WFoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199809</attachid>
            <date>2013-04-26 03:10:01 -0700</date>
            <delta_ts>2013-04-27 12:37:24 -0700</delta_ts>
            <desc>Fixed Windows build</desc>
            <filename>bug-115219-20130426030924.patch</filename>
            <type>text/plain</type>
            <size>37512</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEzLTA0LTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFN0YXRpY0hhc2hTZXROb2RlTGlz
dCBpcyB1bm5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE1MjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTW92ZWQgRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgaW50byBJbnRlcm5hbHM6Om5v
ZGVzRnJvbVJlY3QgcGVyCisgICAgICAgIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv
bS9jaHJvbWl1bS9ibGluay8rLzc4MjA3YzVjMzQzODNmYmI4MDdiYjkzNDdkZWI2NzE2OGYwOWJi
MDQuCisKKyAgICAgICAgQWxzbyBtYWRlIFRvdWNoQWRqdXN0bWVudCBmdW5jdGlvbnMgdXNlIEhh
c2hMaXN0U2V0IGRpcmVjdGx5IGluc3RlYWQgb2Ygd3JhcHBpbmcgaXQgaW5zaWRlCisgICAgICAg
IGEgU3RhdGljSGFzaFNldE5vZGVMaXN0IHNpbmNlIHRoZXJlIHdhcyBubyBuZWVkIHRvIHVzZSB0
aGUgbGF0dGVyLgorCisgICAgICAgIFdpdGggdGhlc2UgdHdvIGNoYW5nZXMsIEkgZGVsZXRlZCBT
dGF0aWNIYXNoU2V0Tm9kZUxpc3QuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0Lmg6IFJl
bW92ZWQuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpiZXN0Q2xpY2thYmxlTm9kZUZvclRvdWNoUG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpiZXN0Q29udGV4dE1lbnVOb2RlRm9yVG91Y2hQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmJlc3Rab29tYWJsZUFyZWFGb3JU
b3VjaFBvaW50KToKKyAgICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUb3VjaEFkanVzdG1lbnQ6OmNvbXBpbGVTdWJ0YXJnZXRMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRvdWNoQWRqdXN0bWVudDo6Y29tcGlsZVpvb21hYmxlU3VidGFyZ2V0cyk6
CisgICAgICAgIChXZWJDb3JlOjpmaW5kQmVzdENsaWNrYWJsZUNhbmRpZGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpmaW5kQmVzdENvbnRleHRNZW51Q2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmZpbmRCZXN0Wm9vbWFibGVBcmVhKToKKyAgICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVu
dC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0KToKKwogMjAxMy0w
NC0yNSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU3R5bGVQ
cm9wZXJ0eVNldDo6Z2V0UHJvcGVydHlTaG9ydGhhbmQoKSBzaG91bGQgcmV0dXJuIGEgU3RyaW5n
LgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMjMyLDcgKzEyMzIsNiBA
QCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1NlbGVjdG9yUXVlcnkuY3BwCiAgICAgZG9t
L1NoYWRvd1Jvb3QuY3BwCiAgICAgZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwCi0gICAgZG9tL1N0
YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAKICAgICBkb20vU3RhdGljTm9kZUxpc3QuY3BwCiAgICAg
ZG9tL1N0cmluZ0NhbGxiYWNrLmNwcAogICAgIGRvbS9TdHlsZWRFbGVtZW50LmNwcApJbmRleDog
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zMDczLDggKzMw
NzMsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0
ZWRDbGlja09wdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5oIFwKLQlTb3VyY2Uv
V2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCBcCi0JU291cmNlL1dlYkNvcmUv
ZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGlj
Tm9kZUxpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9kZUxpc3QuaCBcCiAJ
U291cmNlL1dlYkNvcmUvZG9tL1N0cmluZ0NhbGxiYWNrLmNwcCBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJ
KHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1NCw3ICs0NTQsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vTm9kZVJlbmRl
cmluZ1RyYXZlcnNhbC5jcHAgXAogICAgIGRvbS9Ob2RlVHJhdmVyc2FsLmNwcCBcCiAgICAgZG9t
L05vdGF0aW9uLmNwcCBcCi0gICAgZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAgXAogICAg
IGRvbS9PdmVyZmxvd0V2ZW50LmNwcCBcCiAgICAgZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3Bw
IFwKICAgICBkb20vUGVuZGluZ1NjcmlwdC5jcHAgXApAQCAtMTY4Myw3ICsxNjgyLDYgQEAgSEVB
REVSUyArPSBcCiAgICAgZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCBcCiAgICAgZG9tL05v
ZGVUcmF2ZXJzYWwuaCBcCiAgICAgZG9tL05vdGF0aW9uLmggXAotICAgIGRvbS9TdGF0aWNIYXNo
U2V0Tm9kZUxpc3QuaCBcCiAgICAgZG9tL092ZXJmbG93RXZlbnQuaCBcCiAgICAgZG9tL1BhZ2VU
cmFuc2l0aW9uRXZlbnQuaCBcCiAgICAgZG9tL1Bvc2l0aW9uLmggXApJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4JKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDcgQEAgX19aTjdXZWJDb3JlMTNIVFRQ
SGVhZGVyTWFwQzFFdgogX19aTjdXZWJDb3JlMTNIVFRQSGVhZGVyTWFwRDFFdgogX19aTjdXZWJD
b3JlMTNIaXRUZXN0UmVzdWx0QzFFUktTMF8KIF9fWk43V2ViQ29yZTEzSGl0VGVzdFJlc3VsdEMx
RVJLTlNfMTFMYXlvdXRQb2ludEUKK19fWk43V2ViQ29yZTEzSGl0VGVzdFJlc3VsdEMxRVJLTlNf
MTFMYXlvdXRQb2ludEVqampqCiBfX1pON1dlYkNvcmUxM0hpdFRlc3RSZXN1bHREMUV2CiBfX1pO
N1dlYkNvcmUxM0lkZW50aWZpZXJSZXAzZ2V0RVBLYwogX19aTjdXZWJDb3JlMTNJZGVudGlmaWVy
UmVwM2dldEVpCkBAIC00NjMsNiArNDY0LDcgQEAgX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRl
eHQ5ZHJhd0ltYWdlRQogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ5c2V0U2hhZG93RVJL
TlNfOUZsb2F0U2l6ZUVmUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQogX19aTjdXZWJDb3Jl
MTVHcmFwaGljc0NvbnRleHQ5dHJhbnNsYXRlRWZmCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29u
dGV4dEQxRXYKK19fWk43V2ViQ29yZTE1SGl0VGVzdExvY2F0aW9uMTJyZWN0Rm9yUG9pbnRFUktO
U18xMUxheW91dFBvaW50RWpqamoKIF9fWk43V2ViQ29yZTE1SlNET01XaW5kb3dCYXNlOGNvbW1v
blZNRXYKIF9fWk43V2ViQ29yZTE1UGxhdGZvcm1DQUxheWVyMThzZXRHZW9tZXRyeUZsaXBwZWRF
YgogX19aTjdXZWJDb3JlMTVQcm90ZWN0aW9uU3BhY2VDMUVSS04zV1RGNlN0cmluZ0VpTlNfMjVQ
cm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlRVM0X05TXzM1UHJvdGVjdGlvblNwYWNlQXV0aGVudGlj
YXRpb25TY2hlbWVFCkBAIC0xMzEyLDYgKzEzMTQsNyBAQCBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0
UmVzdWx0MTZhYnNvbHV0ZU1lCiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0MTZhbHREaXNw
bGF5U3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxN2lzQ29udGVudEVkaXRh
YmxlRXYKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxOHRpdGxlRGlzcGxheVN0cmluZ0V2
CitfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0MTlyZWN0QmFzZWRUZXN0UmVzdWx0RXYKIF9f
Wk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQ1aW1hZ2VFdgogX19aTks3V2ViQ29yZTEzSGl0VGVz
dFJlc3VsdDV0aXRsZUVSTlNfMTNUZXh0RGlyZWN0aW9uRQogX19aTks3V2ViQ29yZTEzSGl0VGVz
dFJlc3VsdDlpbWFnZVJlY3RFdgpAQCAtMTQ3NCw2ICsxNDc3LDcgQEAgX19aTks3V2ViQ29yZTRO
b2RlMTF0ZXh0Q29udGVudEViCiBfX1pOSzdXZWJDb3JlNE5vZGUxM293bmVyRG9jdW1lbnRFdgog
X19aTks3V2ViQ29yZTROb2RlMTRpc0Rlc2NlbmRhbnRPZkVQS1MwXwogX19aTks3V2ViQ29yZTRO
b2RlMThnZXRTdWJyZXNvdXJjZVVSTHNFUk4zV1RGMTFMaXN0SGFzaFNldElOU180S1VSTEVMbTI1
NkVOU184S1VSTEhhc2hFRUUKK19fWk5LN1dlYkNvcmU0Tm9kZTI4ZGVwcmVjYXRlZFNoYWRvd0Fu
Y2VzdG9yTm9kZUV2CiBfX1pOSzdXZWJDb3JlNE5vZGUzMW51bWJlck9mU2NvcGVkSFRNTFN0eWxl
Q2hpbGRyZW5FdgogX19aTks3V2ViQ29yZTROb2RlOW5vZGVJbmRleEV2CiBfX1pOSzdXZWJDb3Jl
NFBhZ2UxMHBsdWdpbkRhdGFFdgpAQCAtMTU1MSw3ICsxNTU1LDYgQEAgX19aTks3V2ViQ29yZTdJ
bnRSZWN0Y3Y2Q0dSZWN0RXYKIF9fWk5LN1dlYkNvcmU3UnVuTG9vcDlUaW1lckJhc2U4aXNBY3Rp
dmVFdgogX19aTks3V2ViQ29yZThEb2N1bWVudDExY29tcGxldGVVUkxFUktOM1dURjZTdHJpbmdF
CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTNheE9iamVjdENhY2hlRXYKLV9fWk5LN1dlYkNvcmU4
RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqagogX19aTks3V2ViQ29yZThEb2N1bWVudDE0
Z2V0RWxlbWVudEJ5SWRFUktOM1dURjEyQXRvbWljU3RyaW5nRQogX19aTks3V2ViQ29yZThEb2N1
bWVudDMxZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZ0VSS04zV1RGNlN0cmluZ0UKIF9f
Wk5LN1dlYkNvcmU4RG9jdW1lbnQ0Ym9keUV2CkBAIC0xNjAwLDYgKzE2MDMsNyBAQCBfX1pOSzdX
ZWJDb3JlOVJlbmRlckJveDEyY2xpZW50SGVpZ2h0RXYKIF9fWk5LN1dlYkNvcmU5UmVuZGVyQm94
MTFjbGllbnRXaWR0aEV2CiBfX1pUVk43V2ViQ29yZTEyQ2hyb21lQ2xpZW50RQogX19aVFZON1dl
YkNvcmUxNExvYWRlclN0cmF0ZWd5RQorX19aVFZON1dlYkNvcmUxNFN0YXRpY05vZGVMaXN0RQog
X19aVFZON1dlYkNvcmUxNVN0b3JhZ2VTdHJhdGVneUUKIF9fWlRWTjdXZWJDb3JlMTZEYXRhYmFz
ZVN0cmF0ZWd5RQogX19aVFZON1dlYkNvcmUxNkljb25EYXRhYmFzZUJhc2VFCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUyNzMsOCArNTI3Myw2IEBACiAJCUNFN0IyREI0
MTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTdCMkRCMDE1ODZBQkFE
MDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICovOyB9OwogCQlDRTdC
MkRCNTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTdCMkRCMTE1ODZBQkFE
MDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U3QjJEQjYxNTg2QUJBRDAwOThCM0ZB
IC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIyMTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0
ZXJuYXRpdmVXaXRoUmFuZ2UubW0gKi87IH07Ci0JCUNFQTM5NDlDMTFENDVDREEwMDMwOTRDRiAv
KiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0VBMzk0OUExMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hT
ZXROb2RlTGlzdC5jcHAgKi87IH07Ci0JCUNFQTM5NDlEMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0
aWNIYXNoU2V0Tm9kZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFQTM5NDlCMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxp
c3QuaCAqLzsgfTsKIAkJQ0VDQURGQzYxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVy
bmF0aXZlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENFQ0FERkMyMTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5jcHAgKi87
IH07CiAJCUNFQ0FERkM3MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDQURGQzMx
NTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0VDQURGQzgxNTM3NzhGRjAwRTM3
MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0VDQURGQzQxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNv
bW1hbmQuY3BwICovOyB9OwpAQCAtMTIwNjIsOCArMTIwNjAsNiBAQAogCQlDRTdCMkRCMDE1ODZB
QkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
Lm1tOyBwYXRoID0gbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U3QjJEQjExNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaDsgcGF0aCA9IG1hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFu
Z2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U3QjJEQjIxNTg2QUJBRDAwOThC
M0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTsgcGF0aCA9IG1h
Yy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUNFQTM5NDlBMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljSGFzaFNldE5vZGVM
aXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0VBMzk0OUIxMUQ0NUNEQTAw
MzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0VDQURGQzIxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlvbkFsdGVy
bmF0aXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VDQURGQzMxNTM3NzhG
RjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERpY3RhdGlvbkFsdGVybmF0aXZlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNFQ0FERkM0MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlvbkNvbW1hbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA1NjAsOCArMjA1NTYsNiBAQAog
CQkJCTMxNzQxQUFCMTY2MzVFNDUwMDhBNUI3RSAvKiBTaW11bGF0ZWRDbGlja09wdGlvbnMuaCAq
LywKIAkJCQlEMDFBMjdBQjEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5jcHAg
Ki8sCiAJCQkJRDAxQTI3QUMxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuaCAq
LywKLQkJCQlDRUEzOTQ5QTExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0
LmNwcCAqLywKLQkJCQlDRUEzOTQ5QjExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5v
ZGVMaXN0LmggKi8sCiAJCQkJQkM3RkE2MkMwRDFGMEVGRjAwREIyMkE5IC8qIFN0YXRpY05vZGVM
aXN0LmNwcCAqLywKIAkJCQlCQzdGQTYyQjBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxp
c3QuaCAqLywKIAkJCQk4MTAyQzU4NzEzMjVCQjExMDBEREU2N0EgLyogU3RyaW5nQ2FsbGJhY2su
Y3BwICovLApAQCAtMjM1MDcsNyArMjM1MDEsNiBAQAogCQkJCTk3QkM2QTVEMTUwNUYwODEwMDFC
NzRBQyAvKiBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUEyRTZFNUEwQ0M1NTIxMzAwNEEyMDYyIC8qIFNRTFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5M0YxOTk2MzA4MjQ1RTU5MDAxRTlBQkMgLyogU1NMS2V5R2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlDRUEzOTQ5RDExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVM
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdGQTYyRDBEMUYwRUZGMDBEQjIyQTkgLyogU3Rh
dGljTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QUZCMzUwMTE1MTUxQTcwMEIwNDVD
QiAvKiBTdGVwUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQkUzN0UwMERBRUUwMEUwMDEw
ODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjU3NCw3ICsyNjU2Nyw2
IEBACiAJCQkJOTdCQzZBNUExNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJFNkU1OTBDQzU1MjEzMDA0QTIwNjIgLyogU1FMVmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlBRTYwODI0NUU1OTAwMUU5QUJDIC8qIFNT
TEtleUdlbmVyYXRvck1hYy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlDRUEzOTQ5QzExRDQ1Q0RB
MDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDN0ZBNjJFMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNUFGQjM0RjExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxRTNGOUM3MERBMDU5REMwMDI1MDkxMSAvKiBTdG9yYWdlLmNwcCBp
biBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCShyZXZpc2lv
biAxNDkxNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzAsNyArMTMwLDYgQEAKICNpbmNsdWRlICJTZWxlY3RvclF1ZXJ5LmNwcCIK
ICNpbmNsdWRlICJTaGFkb3dSb290LmNwcCIKICNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmNw
cCIKLSNpbmNsdWRlICJTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIgogI2luY2x1ZGUgIlN0YXRp
Y05vZGVMaXN0LmNwcCIKICNpbmNsdWRlICJTdHlsZUVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIlN0
eWxlZEVsZW1lbnQuY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAx
NDkxNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTYsNyArMTU2LDYgQEAKICNpbmNsdWRlICJTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiU3RhdGlj
SGFzaFNldE5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgogI2luY2x1
ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKQEAg
LTE0MDcsNTggKzE0MDYsNiBAQCBTdHJpbmcgRG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKCkg
Y29uCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi0vLyBGSVhNRTogV2UgbmVlZCB0byBkaXNj
dXNzIHRoZSBET00gQVBJIGhlcmUgYXQgc29tZSBwb2ludC4gSWRlYXM6Ci0vLyAqIG1ha2luZyBp
dCByZWNlaXZlIGEgcmVjdCBhcyBwYXJhbWV0ZXIsIGkuZS4gbm9kZXNGcm9tUmVjdCh4LCB5LCB3
LCBoKTsKLS8vICogbWFraW5nIGl0IHJlY2VpdmUgdGhlIGV4cGFkaW5nIHNpemUgb2YgZWFjaCBk
aXJlY3Rpb24gc2VwYXJhdGVseSwKLS8vICAgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFNp
emUsIHJpZ2h0U2l6ZSwgYm90dG9tU2l6ZSwgbGVmdFNpemUpOwotUGFzc1JlZlB0cjxOb2RlTGlz
dD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNp
Z25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBh
ZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVl
c3RUeXBlIGhpdFR5cGUpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFNoYXJlIGNvZGUgYmV0d2Vl
biB0aGlzLCBlbGVtZW50RnJvbVBvaW50IGFuZCBjYXJldFJhbmdlRnJvbVBvaW50LgotICAgIGlm
ICghcmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgRnJhbWUqIGZyYW1lID0gdGhp
cy0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gMDsKLSAgICBGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7Ci0gICAgaWYgKCFmcmFtZVZpZXcpCi0g
ICAgICAgIHJldHVybiAwOwotCi0gICAgZmxvYXQgem9vbUZhY3RvciA9IGZyYW1lLT5wYWdlWm9v
bUZhY3RvcigpOwotICAgIExheW91dFBvaW50IHBvaW50ID0gcm91bmRlZExheW91dFBvaW50KEZs
b2F0UG9pbnQoY2VudGVyWCAqIHpvb21GYWN0b3IgKyB2aWV3KCktPnNjcm9sbFgoKSwgY2VudGVy
WSAqIHpvb21GYWN0b3IgKyB2aWV3KCktPnNjcm9sbFkoKSkpOwotCi0gICAgSGl0VGVzdFJlcXVl
c3QgcmVxdWVzdChoaXRUeXBlKTsKLQotICAgIC8vIFdoZW4gaWdub3JlQ2xpcHBpbmcgaXMgZmFs
c2UsIHRoaXMgbWV0aG9kIHJldHVybnMgbnVsbCBmb3IgY29vcmRpbmF0ZXMgb3V0c2lkZSBvZiB0
aGUgdmlld3BvcnQuCi0gICAgaWYgKCFyZXF1ZXN0Lmlnbm9yZUNsaXBwaW5nKCkgJiYgIWZyYW1l
Vmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuaW50ZXJzZWN0cyhIaXRUZXN0TG9jYXRpb246OnJl
Y3RGb3JQb2ludChwb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5n
LCBsZWZ0UGFkZGluZykpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIFBhc3NpbmcgYSB6
ZXJvIHBhZGRpbmcgd2lsbCB0cmlnZ2VyIGEgcmVjdCBoaXQgdGVzdCwgaG93ZXZlciBmb3IgdGhl
IHB1cnBvc2VzIG9mIG5vZGVzRnJvbVJlY3QsCi0gICAgLy8gd2Ugc3BlY2lhbCBoYW5kbGUgdGhp
cyBjYXNlIGluIG9yZGVyIHRvIHJldHVybiBhIHZhbGlkIE5vZGVMaXN0LgotICAgIGlmICghdG9w
UGFkZGluZyAmJiAhcmlnaHRQYWRkaW5nICYmICFib3R0b21QYWRkaW5nICYmICFsZWZ0UGFkZGlu
ZykgewotICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCk7Ci0gICAgICAgIHJldHVy
biBoYW5kbGVaZXJvUGFkZGluZyhyZXF1ZXN0LCByZXN1bHQpOwotICAgIH0KLQotICAgIEhpdFRl
c3RSZXN1bHQgcmVzdWx0KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBh
ZGRpbmcsIGxlZnRQYWRkaW5nKTsKLSAgICByZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVzdCwg
cmVzdWx0KTsKLQotICAgIHJldHVybiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OmFkb3B0KHJlc3Vs
dC5yZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwotfQotCi1QYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1
bWVudDo6aGFuZGxlWmVyb1BhZGRpbmcoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhp
dFRlc3RSZXN1bHQmIHJlc3VsdCkgY29uc3QKLXsKLSAgICByZW5kZXJWaWV3KCktPmhpdFRlc3Qo
cmVxdWVzdCwgcmVzdWx0KTsKLQotICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7
Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIG5vZGUgPSBub2RlLT5k
ZXByZWNhdGVkU2hhZG93QW5jZXN0b3JOb2RlKCk7Ci0gICAgTGlzdEhhc2hTZXQ8UmVmUHRyPE5v
ZGU+ID4gbGlzdDsKLSAgICBsaXN0LmFkZChub2RlKTsKLSAgICByZXR1cm4gU3RhdGljSGFzaFNl
dE5vZGVMaXN0OjphZG9wdChsaXN0KTsKLX0KLQogRWxlbWVudCogRG9jdW1lbnQ6OmVsZW1lbnRG
cm9tUG9pbnQoaW50IHgsIGludCB5KSBjb25zdAogewogICAgIGlmICghcmVuZGVyZXIoKSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzU5LDIwICszNTksNiBAQCBwdWJs
aWM6CiAKICAgICBib29sIGNzc0dyaWRMYXlvdXRFbmFibGVkKCkgY29uc3Q7CiAKLSAgICAvKioK
LSAgICAgKiBSZXRyaWV2ZSBhbGwgbm9kZXMgdGhhdCBpbnRlcnNlY3QgYSByZWN0IGluIHRoZSB3
aW5kb3cncyBkb2N1bWVudCwgdW50aWwgaXQgaXMgZnVsbHkgZW5jbG9zZWQgYnkKLSAgICAgKiB0
aGUgYm91bmRhcmllcyBvZiBhIG5vZGUuCi0gICAgICoKLSAgICAgKiBAcGFyYW0gY2VudGVyWCB4
IHJlZmVyZW5jZSBmb3IgdGhlIHJlY3RhbmdsZSBpbiBDU1MgcGl4ZWxzCi0gICAgICogQHBhcmFt
IGNlbnRlclkgeSByZWZlcmVuY2UgZm9yIHRoZSByZWN0YW5nbGUgaW4gQ1NTIHBpeGVscwotICAg
ICAqIEBwYXJhbSB0b3BQYWRkaW5nIEhvdyBtdWNoIHRvIGV4cGFuZCB0aGUgdG9wIG9mIHRoZSBy
ZWN0YW5nbGUKLSAgICAgKiBAcGFyYW0gcmlnaHRQYWRkaW5nIEhvdyBtdWNoIHRvIGV4cGFuZCB0
aGUgcmlnaHQgb2YgdGhlIHJlY3RhbmdsZQotICAgICAqIEBwYXJhbSBib3R0b21QYWRkaW5nIEhv
dyBtdWNoIHRvIGV4cGFuZCB0aGUgYm90dG9tIG9mIHRoZSByZWN0YW5nbGUKLSAgICAgKiBAcGFy
YW0gbGVmdFBhZGRpbmcgSG93IG11Y2ggdG8gZXhwYW5kIHRoZSBsZWZ0IG9mIHRoZSByZWN0YW5n
bGUKLSAgICAgKi8KLSAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0KGludCBj
ZW50ZXJYLCBpbnQgY2VudGVyWSwKLSAgICAgICAgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWdu
ZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFk
ZGluZywKLSAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBl
ID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhp
dFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpIGNvbnN0OwogICAgIEVsZW1lbnQq
IGVsZW1lbnRGcm9tUG9pbnQoaW50IHgsIGludCB5KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFJh
bmdlPiBjYXJldFJhbmdlRnJvbVBvaW50KGludCB4LCBpbnQgeSk7CiAKQEAgLTEyNjQsOCArMTI1
MCw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNlYW1sZXNzUGFyZW50VXBkYXRlZFN0eWxlc2hl
ZXRzKCk7CiAKLSAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBoYW5kbGVaZXJvUGFkZGluZyhjb25z
dCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmKSBjb25zdDsKLQogICAgIHZvaWQgbG9h
ZEV2ZW50RGVsYXlUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiopOwogCiAgICAgdm9pZCBwZW5k
aW5nVGFza3NUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiopOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAJKHJldmlzaW9uIDE0OTE2NSkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQW50b25pbyBHb21lcyA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+Ci0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlN0YXRpY0hhc2hTZXROb2RlTGlzdC5oIgotCi0jaW5jbHVkZSAiRWxlbWVu
dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVN0YXRpY0hhc2hTZXROb2RlTGlzdDo6U3Rh
dGljSGFzaFNldE5vZGVMaXN0KExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+JiBub2RlcykKLXsK
LSAgICBtX25vZGVzLnN3YXAobm9kZXMpOwotfQotCi1TdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OlN0
YXRpY0hhc2hTZXROb2RlTGlzdCgpCi17Ci19Ci0KLVN0YXRpY0hhc2hTZXROb2RlTGlzdDo6flN0
YXRpY0hhc2hTZXROb2RlTGlzdCgpCi17Ci19Ci0KLXVuc2lnbmVkIFN0YXRpY0hhc2hTZXROb2Rl
TGlzdDo6bGVuZ3RoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9ub2Rlcy5zaXplKCk7Ci19Ci0K
LU5vZGUqIFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QK
LXsKLSAgICBpZiAoaW5kZXggPCAodW5zaWduZWQpIG1fbm9kZXMuc2l6ZSgpKSB7Ci0gICAgICAg
IExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fbm9kZXMu
YmVnaW4oKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBjb3VudCA9IDA7IGNvdW50IDwgaW5kZXg7
ICsraXQsICsrY291bnQpIHsgfQotICAgICAgICByZXR1cm4gKCppdCkuZ2V0KCk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLU5vZGUqIFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6bmFtZWRJ
dGVtKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElkKSBjb25zdAotewotICAgIExpc3RIYXNo
U2V0PFJlZlB0cjxOb2RlPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fbm9kZXMuYmVnaW4oKTsK
LSAgICBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9u
b2Rlcy5lbmQoKTsKLSAgICBmb3IgKCA7IGl0ICE9IGVuZCA7ICsraXQpIHsKLSAgICAgICAgTm9k
ZSogbm9kZSA9ICgqaXQpLmdldCgpOwotICAgICAgICBpZiAodG9FbGVtZW50KG5vZGUpLT5nZXRJ
ZEF0dHJpYnV0ZSgpID09IGVsZW1lbnRJZCkKLSAgICAgICAgICAgIHJldHVybiBub2RlOwotICAg
IH0KLQotICAgIHJldHVybiAwOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oCShyZXZpc2lvbiAxNDkx
NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFN0YXRp
Y0hhc2hTZXROb2RlTGlzdF9oCi0jZGVmaW5lIFN0YXRpY0hhc2hTZXROb2RlTGlzdF9oCi0KLSNp
bmNsdWRlICJOb2RlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE5vZGU7Ci0KLWNsYXNzIFN0YXRpY0hhc2hTZXROb2RlTGlz
dCA6IHB1YmxpYyBOb2RlTGlzdCB7Ci1wdWJsaWM6Ci0gICAgU3RhdGljSGFzaFNldE5vZGVMaXN0
KCk7Ci0gICAgflN0YXRpY0hhc2hTZXROb2RlTGlzdCgpOwotCi0gICAgLy8gQWRvcHRzIHRoZSBj
b250ZW50cyBvZiB0aGUgbm9kZXMgTGlzdEhhc2hTZXQuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RhdGljSGFzaFNldE5vZGVMaXN0PiBhZG9wdChjb25zdCBMaXN0SGFzaFNldDxSZWZQdHI8Tm9k
ZT4gPiYgbm9kZXMpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHQoY29uc3RfY2FzdDxMaXN0
SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiY+KG5vZGVzKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBh
c3NSZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBhZG9wdChMaXN0SGFzaFNldDxSZWZQdHI8
Tm9kZT4gPiYgbm9kZXMpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0YXRp
Y0hhc2hTZXROb2RlTGlzdChub2RlcykpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBOb2RlKiBpdGVtKHVuc2lnbmVk
IGluZGV4KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIE5vZGUqIG5hbWVkSXRlbShjb25z
dCBBdG9taWNTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNp
dCBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QoTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4mIG5vZGVz
KTsKLQotICAgIExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+IG1fbm9kZXM7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBTdGF0aWNIYXNoU2V0Tm9kZUxpc3RfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gMTQ5MTY1KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03OSw3ICs3OSw2IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dS
b290LmgiCiAjaW5jbHVkZSAiU3BhdGlhbE5hdmlnYXRpb24uaCIKLSNpbmNsdWRlICJTdGF0aWNI
YXNoU2V0Tm9kZUxpc3QuaCIKICNpbmNsdWRlICJTdHlsZUNhY2hlZEltYWdlLmgiCiAjaW5jbHVk
ZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCkBAIC0yODM1LDEzICsy
ODM0LDEyIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Q2xpY2thYmxlTm9kZUZvclQKICAgICBI
aXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwg
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgdG91Y2hS
YWRpdXMpOwogCiAgICAgSW50UmVjdCB0b3VjaFJlY3QodG91Y2hDZW50ZXIgLSB0b3VjaFJhZGl1
cywgdG91Y2hSYWRpdXMgKyB0b3VjaFJhZGl1cyk7Ci0gICAgUmVmUHRyPFN0YXRpY0hhc2hTZXRO
b2RlTGlzdD4gbm9kZUxpc3QgPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5y
ZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwogCiAgICAgLy8gRklYTUU6IFNob3VsZCBiZSBhYmxlIHRv
IGhhbmRsZSB0YXJnZXROb2RlIGJlaW5nIGEgc2hhZG93IERPTSBub2RlIHRvIGF2b2lkIHBlcmZv
cm1pbmcgdW5jZXNzYXJ5IGhpdCB0ZXN0cwogICAgIC8vIGluIHRoZSBjYXNlIHdoZXJlIGZ1cnRo
ZXIgcHJvY2Vzc2luZyBvbiB0aGUgbm9kZSBpcyByZXF1aXJlZC4gUmV0dXJuaW5nIHRoZSBzaGFk
b3cgYW5jZXN0b3IgcHJldmVudHMgYQogICAgIC8vIHJlZ3Jlc3Npb24gaW4gdG91Y2hhZGp1c3Rt
ZW50L2h0bWwtbGFiZWwuaHRtbC4gU29tZSByZWZpbmVtZW50IGlzIHJlcXVpcmVkIHRvIHRlc3Rp
bmcvaW50ZXJuYWxzIHRvCiAgICAgLy8gaGFuZGxlIHRhcmdldE5vZGUgYmVpbmcgYSBzaGFkb3cg
RE9NIG5vZGUuIAotICAgIGJvb2wgc3VjY2VzcyA9IGZpbmRCZXN0Q2xpY2thYmxlQ2FuZGlkYXRl
KHRhcmdldE5vZGUsIHRhcmdldFBvaW50LCB0b3VjaENlbnRlciwgdG91Y2hSZWN0LCAqbm9kZUxp
c3QuZ2V0KCkpOworICAgIGJvb2wgc3VjY2VzcyA9IGZpbmRCZXN0Q2xpY2thYmxlQ2FuZGlkYXRl
KHRhcmdldE5vZGUsIHRhcmdldFBvaW50LCB0b3VjaENlbnRlciwgdG91Y2hSZWN0LCByZXN1bHQu
cmVjdEJhc2VkVGVzdFJlc3VsdCgpKTsKICAgICBpZiAoc3VjY2VzcyAmJiB0YXJnZXROb2RlKQog
ICAgICAgICB0YXJnZXROb2RlID0gdGFyZ2V0Tm9kZS0+ZGVwcmVjYXRlZFNoYWRvd0FuY2VzdG9y
Tm9kZSgpOwogICAgIHJldHVybiBzdWNjZXNzOwpAQCAtMjg1Myw4ICsyODUxLDcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmJlc3RDb250ZXh0TWVudU5vZGVGbwogICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCBIaXRUZXN0UmVxdWVzdDo6
UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCB0b3VjaFJhZGl1cyk7CiAKICAgICBJ
bnRSZWN0IHRvdWNoUmVjdCh0b3VjaENlbnRlciAtIHRvdWNoUmFkaXVzLCB0b3VjaFJhZGl1cyAr
IHRvdWNoUmFkaXVzKTsKLSAgICBSZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBub2RlTGlz
dCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1
bHQoKSk7Ci0gICAgcmV0dXJuIGZpbmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUodGFyZ2V0Tm9k
ZSwgdGFyZ2V0UG9pbnQsIHRvdWNoQ2VudGVyLCB0b3VjaFJlY3QsICpub2RlTGlzdC5nZXQoKSk7
CisgICAgcmV0dXJuIGZpbmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUodGFyZ2V0Tm9kZSwgdGFy
Z2V0UG9pbnQsIHRvdWNoQ2VudGVyLCB0b3VjaFJlY3QsIHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVz
dWx0KCkpOwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6YmVzdFpvb21hYmxlQXJlYUZvclRvdWNo
UG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLCBjb25zdCBJbnRTaXplJiB0b3VjaFJh
ZGl1cywgSW50UmVjdCYgdGFyZ2V0QXJlYSwgTm9kZSomIHRhcmdldE5vZGUpCkBAIC0yODYzLDgg
KzI4NjAsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6YmVzdFpvb21hYmxlQXJlYUZvclRvCiAgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQs
IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRU
ZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50LCB0b3VjaFJhZGl1cyk7CiAKICAgICBJ
bnRSZWN0IHRvdWNoUmVjdCh0b3VjaENlbnRlciAtIHRvdWNoUmFkaXVzLCB0b3VjaFJhZGl1cyAr
IHRvdWNoUmFkaXVzKTsKLSAgICBSZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBub2RlTGlz
dCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1
bHQoKSk7Ci0gICAgcmV0dXJuIGZpbmRCZXN0Wm9vbWFibGVBcmVhKHRhcmdldE5vZGUsIHRhcmdl
dEFyZWEsIHRvdWNoQ2VudGVyLCB0b3VjaFJlY3QsICpub2RlTGlzdC5nZXQoKSk7CisgICAgcmV0
dXJuIGZpbmRCZXN0Wm9vbWFibGVBcmVhKHRhcmdldE5vZGUsIHRhcmdldEFyZWEsIHRvdWNoQ2Vu
dGVyLCB0b3VjaFJlY3QsIHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwogfQogCiBib29s
IEV2ZW50SGFuZGxlcjo6YWRqdXN0R2VzdHVyZVBvc2l0aW9uKGNvbnN0IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50JiBnZXN0dXJlRXZlbnQsIEludFBvaW50JiBhZGp1c3RlZFBvaW50KQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcAkocmV2aXNpb24gMTQ5MTY1KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzMsNyArMjMzLDcgQEAgc3RhdGljIGlubGluZSBOb2RlKiBwYXJlbnRTaGFkb3dIb3N0T3JP
dwogfQogCiAvLyBDb21waWxlcyBhIGxpc3Qgb2Ygc3VidGFyZ2V0cyBvZiBhbGwgdGhlIHJlbGV2
YW50IHRhcmdldCBub2Rlcy4KLXZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxp
c3QmIGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdldEdlb21ldHJ5TGlzdCYgc3VidGFyZ2V0cywg
Tm9kZUZpbHRlciBub2RlRmlsdGVyLCBBcHBlbmRTdWJ0YXJnZXRzRm9yTm9kZSBhcHBlbmRTdWJ0
YXJnZXRzRm9yTm9kZSkKK3ZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3RI
YXNoU2V0JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9tZXRyeUxpc3QmIHN1YnRhcmdl
dHMsIE5vZGVGaWx0ZXIgbm9kZUZpbHRlciwgQXBwZW5kU3VidGFyZ2V0c0Zvck5vZGUgYXBwZW5k
U3VidGFyZ2V0c0Zvck5vZGUpCiB7CiAgICAgLy8gRmluZCBjYW5kaWRhdGVzIHJlc3BvbmRpbmcg
dG8gdGFwIGdlc3R1cmUgZXZlbnRzIGluIE8obikgdGltZS4KICAgICBIYXNoTWFwPE5vZGUqLCBO
b2RlKj4gcmVzcG9uZGVyTWFwOwpAQCAtMjQ0LDkgKzI0NCw5IEBAIHZvaWQgY29tcGlsZVN1YnRh
cmdldExpc3QoY29uc3QgTm9kZUxpc3QKICAgICAvLyBBIG5vZGUgbWF0Y2hpbmcgdGhlIE5vZGVG
aWx0ZXIgaXMgY2FsbGVkIGEgcmVzcG9uZGVyLiBDYW5kaWRhdGUgbm9kZXMgbXVzdCBlaXRoZXIg
YmUgYQogICAgIC8vIHJlc3BvbmRlciBvciBoYXZlIGFuIGFuY2VzdG9yIHRoYXQgaXMgYSByZXNw
b25kZXIuCiAgICAgLy8gVGhpcyBpdGVyYXRpb24gdGVzdHMgYWxsIGFuY2VzdG9ycyBhdCBtb3N0
IG9uY2UgYnkgY2FjaGluZyBlYXJsaWVyIHJlc3VsdHMuCi0gICAgdW5zaWduZWQgbGVuZ3RoID0g
aW50ZXJzZWN0ZWROb2Rlcy5sZW5ndGgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgTm9kZSogY29uc3Qgbm9kZSA9IGludGVyc2VjdGVkTm9k
ZXMuaXRlbShpKTsKKyAgICBOb2RlTGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGlu
dGVyc2VjdGVkTm9kZXMuZW5kKCk7CisgICAgZm9yIChOb2RlTGlzdEhhc2hTZXQ6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gaW50ZXJzZWN0ZWROb2Rlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgTm9kZSogY29uc3Qgbm9kZSA9IGl0LT5nZXQoKTsKICAgICAgICAgVmVjdG9yPE5v
ZGUqPiB2aXNpdGVkTm9kZXM7CiAgICAgICAgIE5vZGUqIHJlc3BvbmRpbmdOb2RlID0gMDsKICAg
ICAgICAgZm9yIChOb2RlKiB2aXNpdGVkTm9kZSA9IG5vZGU7IHZpc2l0ZWROb2RlOyB2aXNpdGVk
Tm9kZSA9IHZpc2l0ZWROb2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKQEAgLTI3Nyw3
ICsyNzcsNyBAQCB2b2lkIGNvbXBpbGVTdWJ0YXJnZXRMaXN0KGNvbnN0IE5vZGVMaXN0CiAKICAg
ICAvLyBXZSBjb21waWxlIHRoZSBsaXN0IG9mIGNvbXBvbmVudCBhYnNvbHV0ZSBxdWFkcyBpbnN0
ZWFkIG9mIHVzaW5nIHRoZSBib3VuZGluZyByZWN0CiAgICAgLy8gdG8gYmUgYWJsZSB0byBwZXJm
b3JtIGJldHRlciBoaXQtdGVzdGluZyBvbiBpbmxpbmUgbGlua3Mgb24gbGluZS1icmVha3MuCi0g
ICAgbGVuZ3RoID0gY2FuZGlkYXRlcy5zaXplKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gY2Fu
ZGlkYXRlcy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsr
KSB7CiAgICAgICAgIE5vZGUqIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZXNbaV07CiAgICAgICAgIC8v
IFNraXAgbm9kZXMgd2hvJ3MgcmVzcG9uZGVycyBhcmUgYW5jZXN0b3JzIG9mIG90aGVyIHJlc3Bv
bmRlcnMuIFRoaXMgZ2l2ZXMgcHJlZmVyZW5jZSB0bwpAQCAtMzEwLDExICszMTAsMTEgQEAgdm9p
ZCBjb21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdAogfQogCiAvLyBDb21waWxlcyBh
IGxpc3Qgb2Ygem9vbWFibGUgc3VidGFyZ2V0cy4KLXZvaWQgY29tcGlsZVpvb21hYmxlU3VidGFy
Z2V0cyhjb25zdCBOb2RlTGlzdCYgaW50ZXJzZWN0ZWROb2RlcywgU3VidGFyZ2V0R2VvbWV0cnlM
aXN0JiBzdWJ0YXJnZXRzKQordm9pZCBjb21waWxlWm9vbWFibGVTdWJ0YXJnZXRzKGNvbnN0IE5v
ZGVMaXN0SGFzaFNldCYgaW50ZXJzZWN0ZWROb2RlcywgU3VidGFyZ2V0R2VvbWV0cnlMaXN0JiBz
dWJ0YXJnZXRzKQogewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGludGVyc2VjdGVkTm9kZXMubGVu
Z3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgIE5vZGUqIGNvbnN0IGNhbmRpZGF0ZSA9IGludGVyc2VjdGVkTm9kZXMuaXRlbShpKTsKKyAg
ICBOb2RlTGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGludGVyc2VjdGVkTm9kZXMu
ZW5kKCk7CisgICAgZm9yIChOb2RlTGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaW50
ZXJzZWN0ZWROb2Rlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgTm9kZSog
Y29uc3QgY2FuZGlkYXRlID0gaXQtPmdldCgpOwogICAgICAgICBpZiAobm9kZUlzWm9vbVRhcmdl
dChjYW5kaWRhdGUpKQogICAgICAgICAgICAgYXBwZW5kWm9vbWFibGVTdWJ0YXJnZXRzKGNhbmRp
ZGF0ZSwgc3VidGFyZ2V0cyk7CiAgICAgfQpAQCAtNDc2LDcgKzQ3Niw3IEBAIGJvb2wgZmluZE5v
ZGVXaXRoTG93ZXN0RGlzdGFuY2VNZXRyaWMoTm8KIAogfSAvLyBuYW1lc3BhY2UgVG91Y2hBZGp1
c3RtZW50CiAKLWJvb2wgZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUoTm9kZSomIHRhcmdldE5v
ZGUsIEludFBvaW50ICZ0YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQgJnRvdWNoSG90c3BvdCwg
Y29uc3QgSW50UmVjdCAmdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdCYgbm9kZUxpc3QpCitib29s
IGZpbmRCZXN0Q2xpY2thYmxlQ2FuZGlkYXRlKE5vZGUqJiB0YXJnZXROb2RlLCBJbnRQb2ludCAm
dGFyZ2V0UG9pbnQsIGNvbnN0IEludFBvaW50ICZ0b3VjaEhvdHNwb3QsIGNvbnN0IEludFJlY3Qg
JnRvdWNoQXJlYSwgY29uc3QgTm9kZUxpc3RIYXNoU2V0JiBub2RlTGlzdCkKIHsKICAgICBJbnRS
ZWN0IHRhcmdldEFyZWE7CiAgICAgVG91Y2hBZGp1c3RtZW50OjpTdWJ0YXJnZXRHZW9tZXRyeUxp
c3Qgc3VidGFyZ2V0czsKQEAgLTQ4NCw3ICs0ODQsNyBAQCBib29sIGZpbmRCZXN0Q2xpY2thYmxl
Q2FuZGlkYXRlKE5vZGUqJiB0CiAgICAgcmV0dXJuIFRvdWNoQWRqdXN0bWVudDo6ZmluZE5vZGVX
aXRoTG93ZXN0RGlzdGFuY2VNZXRyaWModGFyZ2V0Tm9kZSwgdGFyZ2V0UG9pbnQsIHRhcmdldEFy
ZWEsIHRvdWNoSG90c3BvdCwgdG91Y2hBcmVhLCBzdWJ0YXJnZXRzLCBUb3VjaEFkanVzdG1lbnQ6
Omh5YnJpZERpc3RhbmNlRnVuY3Rpb24pOwogfQogCi1ib29sIGZpbmRCZXN0Q29udGV4dE1lbnVD
YW5kaWRhdGUoTm9kZSomIHRhcmdldE5vZGUsIEludFBvaW50ICZ0YXJnZXRQb2ludCwgY29uc3Qg
SW50UG9pbnQgJnRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCAmdG91Y2hBcmVhLCBjb25zdCBO
b2RlTGlzdCYgbm9kZUxpc3QpCitib29sIGZpbmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUoTm9k
ZSomIHRhcmdldE5vZGUsIEludFBvaW50ICZ0YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQgJnRv
dWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCAmdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdEhhc2hT
ZXQmIG5vZGVMaXN0KQogewogICAgIEludFJlY3QgdGFyZ2V0QXJlYTsKICAgICBUb3VjaEFkanVz
dG1lbnQ6OlN1YnRhcmdldEdlb21ldHJ5TGlzdCBzdWJ0YXJnZXRzOwpAQCAtNDkyLDcgKzQ5Miw3
IEBAIGJvb2wgZmluZEJlc3RDb250ZXh0TWVudUNhbmRpZGF0ZShOb2RlKiYKICAgICByZXR1cm4g
VG91Y2hBZGp1c3RtZW50OjpmaW5kTm9kZVdpdGhMb3dlc3REaXN0YW5jZU1ldHJpYyh0YXJnZXRO
b2RlLCB0YXJnZXRQb2ludCwgdGFyZ2V0QXJlYSwgdG91Y2hIb3RzcG90LCB0b3VjaEFyZWEsIHN1
YnRhcmdldHMsIFRvdWNoQWRqdXN0bWVudDo6aHlicmlkRGlzdGFuY2VGdW5jdGlvbik7CiB9CiAK
LWJvb2wgZmluZEJlc3Rab29tYWJsZUFyZWEoTm9kZSomIHRhcmdldE5vZGUsIEludFJlY3QmIHRh
cmdldEFyZWEsIGNvbnN0IEludFBvaW50JiB0b3VjaEhvdHNwb3QsIGNvbnN0IEludFJlY3QmIHRv
dWNoQXJlYSwgY29uc3QgTm9kZUxpc3QmIG5vZGVMaXN0KQorYm9vbCBmaW5kQmVzdFpvb21hYmxl
QXJlYShOb2RlKiYgdGFyZ2V0Tm9kZSwgSW50UmVjdCYgdGFyZ2V0QXJlYSwgY29uc3QgSW50UG9p
bnQmIHRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCYgdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlz
dEhhc2hTZXQmIG5vZGVMaXN0KQogewogICAgIEludFBvaW50IHRhcmdldFBvaW50OwogICAgIFRv
dWNoQWRqdXN0bWVudDo6U3VidGFyZ2V0R2VvbWV0cnlMaXN0IHN1YnRhcmdldHM7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmgJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDkgKzI4LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBmaW5kQmVzdENsaWNr
YWJsZUNhbmRpZGF0ZShOb2RlKiYgdGFyZ2V0Tm9kZSwgSW50UG9pbnQmIHRhcmdldFBvaW50LCBj
b25zdCBJbnRQb2ludCYgdG91Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0JiB0b3VjaEFyZWEsIGNv
bnN0IE5vZGVMaXN0Jik7Ci1ib29sIGZpbmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUoTm9kZSom
IHRhcmdldE5vZGUsIEludFBvaW50JiB0YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQmIHRvdWNo
SG90c3BvdCwgY29uc3QgSW50UmVjdCYgdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdCYpOwotYm9v
bCBmaW5kQmVzdFpvb21hYmxlQXJlYShOb2RlKiYgdGFyZ2V0Tm9kZSwgSW50UmVjdCYgdGFyZ2V0
QXJlYSwgY29uc3QgSW50UG9pbnQmIHRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCYgdG91Y2hB
cmVhLCBjb25zdCBOb2RlTGlzdCYpOwordHlwZWRlZiBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4g
PiBOb2RlTGlzdEhhc2hTZXQ7CisKK2Jvb2wgZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUoTm9k
ZSomIHRhcmdldE5vZGUsIEludFBvaW50JiB0YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQmIHRv
dWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCYgdG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdEhhc2hT
ZXQmKTsKK2Jvb2wgZmluZEJlc3RDb250ZXh0TWVudUNhbmRpZGF0ZShOb2RlKiYgdGFyZ2V0Tm9k
ZSwgSW50UG9pbnQmIHRhcmdldFBvaW50LCBjb25zdCBJbnRQb2ludCYgdG91Y2hIb3RzcG90LCBj
b25zdCBJbnRSZWN0JiB0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0SGFzaFNldCYpOworYm9vbCBm
aW5kQmVzdFpvb21hYmxlQXJlYShOb2RlKiYgdGFyZ2V0Tm9kZSwgSW50UmVjdCYgdGFyZ2V0QXJl
YSwgY29uc3QgSW50UG9pbnQmIHRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCYgdG91Y2hBcmVh
LCBjb25zdCBOb2RlTGlzdEhhc2hTZXQmKTsKIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhlIHNpbWls
YXIgZnVuY3Rpb25zIGZvciBvdGhlciBnZXN0dXJlcyBoZXJlIGFzIHdlbGwuCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJl
dmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQAogI2luY2x1ZGUgIlJlbmRlck1lbnVMaXN0
LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4
dC5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTY3JvbGxp
bmdDb29yZGluYXRvci5oIgpAQCAtODksNiArOTAsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlNwZWxsQ2hlY2tlci5oIgorI2lu
Y2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgi
CiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCkBAIC0x
NDE0LDcgKzE0MTYsNyBAQCBQYXNzUmVmUHRyPENsaWVudFJlY3RMaXN0PiBJbnRlcm5hbHM6OnRv
CiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW50ZXJuYWxzOjpub2Rlc0Zyb21S
ZWN0KERvY3VtZW50KiBkb2N1bWVudCwgaW50IHgsIGludCB5LCB1bnNpZ25lZCB0b3BQYWRkaW5n
LCB1bnNpZ25lZCByaWdodFBhZGRpbmcsCitQYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnRlcm5hbHM6
Om5vZGVzRnJvbVJlY3QoRG9jdW1lbnQqIGRvY3VtZW50LCBpbnQgY2VudGVyWCwgaW50IGNlbnRl
clksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywKICAgICB1bnNp
Z25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlw
cGluZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgYWxsb3dDaGlsZEZyYW1lQ29udGVu
dCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9j
dW1lbnQtPmZyYW1lKCkgfHwgIWRvY3VtZW50LT5mcmFtZSgpLT52aWV3KCkpIHsKQEAgLTE0MjIs
NiArMTQyNCwxNSBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnRlcm5hbHM6Om5vZGVzRnJvCiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5m
cmFtZSgpOworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZG9jdW1lbnQtPnZpZXcoKTsKKyAg
ICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZG9jdW1lbnQtPnJlbmRlclZpZXcoKTsKKyAgICBp
ZiAoIXJlbmRlclZpZXcpCisgICAgICAgIHJldHVybiAwOworCisgICAgZmxvYXQgem9vbUZhY3Rv
ciA9IGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpOworICAgIExheW91dFBvaW50IHBvaW50ID0gcm91
bmRlZExheW91dFBvaW50KEZsb2F0UG9pbnQoY2VudGVyWCAqIHpvb21GYWN0b3IgKyBmcmFtZVZp
ZXctPnNjcm9sbFgoKSwgY2VudGVyWSAqIHpvb21GYWN0b3IgKyBmcmFtZVZpZXctPnNjcm9sbFko
KSkpOworCiAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0g
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZTsKICAgICBp
ZiAoaWdub3JlQ2xpcHBpbmcpCiAgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6Okln
bm9yZUNsaXBwaW5nOwpAQCAtMTQzMCw3ICsxNDQxLDI4IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+
IEludGVybmFsczo6bm9kZXNGcm8KICAgICBpZiAoYWxsb3dDaGlsZEZyYW1lQ29udGVudCkKICAg
ICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudDsK
IAotICAgIHJldHVybiBkb2N1bWVudC0+bm9kZXNGcm9tUmVjdCh4LCB5LCB0b3BQYWRkaW5nLCBy
aWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBoaXRUeXBlKTsKKyAgICBI
aXRUZXN0UmVxdWVzdCByZXF1ZXN0KGhpdFR5cGUpOworCisgICAgLy8gV2hlbiBpZ25vcmVDbGlw
cGluZyBpcyBmYWxzZSwgdGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBv
dXRzaWRlIG9mIHRoZSB2aWV3cG9ydC4KKyAgICBpZiAoIXJlcXVlc3QuaWdub3JlQ2xpcHBpbmco
KSAmJiAhZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEhpdFRlc3RM
b2NhdGlvbjo6cmVjdEZvclBvaW50KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJv
dHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgVmVj
dG9yPFJlZlB0cjxOb2RlPiA+IG1hdGNoZXM7CisKKyAgICAvLyBOZWVkIHBhZGRpbmcgdG8gdHJp
Z2dlciBhIHJlY3QgYmFzZWQgaGl0IHRlc3QsIGJ1dCB3ZSB3YW50IHRvIHJldHVybiBhIE5vZGVM
aXN0CisgICAgLy8gc28gd2Ugc3BlY2lhbCBjYXNlIHRoaXMuCisgICAgaWYgKCF0b3BQYWRkaW5n
ICYmICFyaWdodFBhZGRpbmcgJiYgIWJvdHRvbVBhZGRpbmcgJiYgIWxlZnRQYWRkaW5nKSB7Cisg
ICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50KTsKKyAgICAgICAgcmVuZGVyVmlldy0+
aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOworICAgICAgICBpZiAocmVzdWx0LmlubmVyTm9kZSgp
KQorICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQocmVzdWx0LmlubmVyTm9kZSgpLT5kZXByZWNh
dGVkU2hhZG93QW5jZXN0b3JOb2RlKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRp
bmcsIGxlZnRQYWRkaW5nKTsKKyAgICAgICAgcmVuZGVyVmlldy0+aGl0VGVzdChyZXF1ZXN0LCBy
ZXN1bHQpOworICAgICAgICBjb3B5VG9WZWN0b3IocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQo
KSwgbWF0Y2hlcyk7CisgICAgfQorCisgICAgcmV0dXJuIFN0YXRpY05vZGVMaXN0OjphZG9wdCht
YXRjaGVzKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OmVtaXRJbnNwZWN0b3JEaWRCZWdpbkZyYW1l
KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA0LTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFN0YXRpY0hhc2hTZXROb2RlTGlz
dCBpcyB1bm5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE1MjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhw
b3J0cy5kZWYuaW46CisKIDIwMTMtMDQtMjUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEUoUEFSU0VEX1NUWUxFX1NIRUVUX0NBQ0hJTkcp
IGFuZCBtYWtlIGl0IGFsd2F5cy1vbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHBy
b2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dl
YktpdEV4cG9ydHMuZGVmLmluCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgko
d29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw2IEBAIEVYUE9SVFMKICAgICAgICAgPz8xQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBATUFFQFhaCiAgICAgICAgID9jb250ZXh0
RGVzdHJveWVkQENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFVBRVhYWgogICAg
ICAgICA/PzBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBRQUVAUEFWU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEAxQEBaCi0gICAgICAgID9ub2Rlc0Zyb21SZWN0QERvY3VtZW50QFdl
YkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxpc3RAV2ViQ29yZUBAQFdURkBASEhJSUlJ
SUBaCiAgICAgICAgID9zZWxlY3Rpb25TdGFydEhhc01hcmtlckZvckBFZGl0b3JAV2ViQ29yZUBA
UUJFX05XNE1hcmtlclR5cGVARG9jdW1lbnRNYXJrZXJAMkBISEBaCiAgICAgICAgID9pc0NvbnRp
bnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZEBFZGl0b3JAV2ViQ29yZUBAUUJFX05YWgogICAgICAg
ICA/dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmdARWRpdG9yQFdlYkNvcmVAQFFBRVhYWgpJ
bmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDQtMjUg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RhdGljSGFzaFNl
dE5vZGVMaXN0IGlzIHVubmVjZXNzYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTUyMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW46CisK
IDIwMTMtMDQtMjUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBDb25zb2xlTWVzc2FnZSBzaG91bGQgaW5jbHVkZSBsaW5lIGFu
ZCBjb2x1bW4gbnVtYmVyIHdoZXJlIHBvc3NpYmxlCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHJldmlzaW9uIDE0
OTE2NSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5k
ZWYuaW4JKHdvcmtpbmcgY29weSkKQEAgLTMwNCw3ICszMDQsNiBAQCBFWFBPUlRTCiAgICAgICAg
ID8/MUNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQE1BRUBYWgogICAgICAgICA/
Y29udGV4dERlc3Ryb3llZEBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBVQUVY
WFoKICAgICAgICAgPz8wQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAUUFFQFBB
VlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAMUBAWgotICAgICAgICA/bm9kZXNGcm9tUmVjdEBEb2N1
bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBXVEZA
QEhISUlJSUlAWgogICAgICAgICA/c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JARWRpdG9yQFdl
YkNvcmVAQFFCRV9OVzRNYXJrZXJUeXBlQERvY3VtZW50TWFya2VyQDJASEhAWgogICAgICAgICA/
aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWRARWRpdG9yQFdlYkNvcmVAQFFCRV9OWFoK
ICAgICAgICAgP3RvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nQEVkaXRvckBXZWJDb3JlQEBR
QUVYWFoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199907</attachid>
            <date>2013-04-27 12:37:30 -0700</date>
            <delta_ts>2013-04-27 13:44:42 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-115219-20130427123649.patch</filename>
            <type>text/plain</type>
            <size>40173</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEzLTA0LTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFN0YXRpY0hhc2hTZXROb2RlTGlz
dCBpcyB1bm5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE1MjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KKwor
ICAgICAgICBNb3ZlZCBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCBpbnRvIEludGVybmFsczo6bm9k
ZXNGcm9tUmVjdCBwZXIKKyAgICAgICAgaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29t
L2Nocm9taXVtL2JsaW5rLysvNzgyMDdjNWMzNDM4M2ZiYjgwN2JiOTM0N2RlYjY3MTY4ZjA5YmIw
NC4KKworICAgICAgICBBbHNvIG1hZGUgVG91Y2hBZGp1c3RtZW50IGZ1bmN0aW9ucyB1c2UgSGFz
aExpc3RTZXQgZGlyZWN0bHkgaW5zdGVhZCBvZiB3cmFwcGluZyBpdCBpbnNpZGUKKyAgICAgICAg
YSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Qgc2luY2UgdGhlcmUgd2FzIG5vIG5lZWQgdG8gdXNlIHRo
ZSBsYXR0ZXIuCisKKyAgICAgICAgV2l0aCB0aGVzZSB0d28gY2hhbmdlcywgSSBkZWxldGVkIFN0
YXRpY0hhc2hTZXROb2RlTGlzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3Qu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmJlc3RDbGlja2FibGVOb2RlRm9yVG91Y2hQb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmJlc3RDb250ZXh0TWVudU5vZGVGb3JUb3VjaFBvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YmVzdFpvb21hYmxlQXJlYUZvclRv
dWNoUG9pbnQpOgorICAgICAgICAqIHBhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRvdWNoQWRqdXN0bWVudDo6Y29tcGlsZVN1YnRhcmdldExpc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6VG91Y2hBZGp1c3RtZW50Ojpjb21waWxlWm9vbWFibGVTdWJ0YXJnZXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OmZpbmRCZXN0Q2xpY2thYmxlQ2FuZGlkYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OmZpbmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6ZmluZEJlc3Rab29tYWJsZUFyZWEpOgorICAgICAgICAqIHBhZ2UvVG91Y2hBZGp1c3RtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3QpOgorCiAyMDEzLTA0
LTI1ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHlsZVBy
b3BlcnR5U2V0OjpnZXRQcm9wZXJ0eVNob3J0aGFuZCgpIHNob3VsZCByZXR1cm4gYSBTdHJpbmcu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEyMzIsNyArMTIzMiw2IEBA
IHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vU2VsZWN0b3JRdWVyeS5jcHAKICAgICBkb20v
U2hhZG93Um9vdC5jcHAKICAgICBkb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKLSAgICBkb20vU3Rh
dGljSGFzaFNldE5vZGVMaXN0LmNwcAogICAgIGRvbS9TdGF0aWNOb2RlTGlzdC5jcHAKICAgICBk
b20vU3RyaW5nQ2FsbGJhY2suY3BwCiAgICAgZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTMwNzMsOCArMzA3
Myw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NpbXVsYXRl
ZENsaWNrT3B0aW9ucy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmggXAotCVNvdXJjZS9X
ZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9k
b20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNO
b2RlTGlzdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNOb2RlTGlzdC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vU3RyaW5nQ2FsbGJhY2suY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQko
cmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBj
b3B5KQpAQCAtNDU0LDcgKzQ1NCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9Ob2RlUmVuZGVy
aW5nVHJhdmVyc2FsLmNwcCBcCiAgICAgZG9tL05vZGVUcmF2ZXJzYWwuY3BwIFwKICAgICBkb20v
Tm90YXRpb24uY3BwIFwKLSAgICBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCBcCiAgICAg
ZG9tL092ZXJmbG93RXZlbnQuY3BwIFwKICAgICBkb20vUGFnZVRyYW5zaXRpb25FdmVudC5jcHAg
XAogICAgIGRvbS9QZW5kaW5nU2NyaXB0LmNwcCBcCkBAIC0xNjgzLDcgKzE2ODIsNiBAQCBIRUFE
RVJTICs9IFwKICAgICBkb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIFwKICAgICBkb20vTm9k
ZVRyYXZlcnNhbC5oIFwKICAgICBkb20vTm90YXRpb24uaCBcCi0gICAgZG9tL1N0YXRpY0hhc2hT
ZXROb2RlTGlzdC5oIFwKICAgICBkb20vT3ZlcmZsb3dFdmVudC5oIFwKICAgICBkb20vUGFnZVRy
YW5zaXRpb25FdmVudC5oIFwKICAgICBkb20vUG9zaXRpb24uaCBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYsNyBAQCBfX1pON1dlYkNvcmUxM0hUVFBI
ZWFkZXJNYXBDMUV2CiBfX1pON1dlYkNvcmUxM0hUVFBIZWFkZXJNYXBEMUV2CiBfX1pON1dlYkNv
cmUxM0hpdFRlc3RSZXN1bHRDMUVSS1MwXwogX19aTjdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0QzFF
UktOU18xMUxheW91dFBvaW50RQorX19aTjdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0QzFFUktOU18x
MUxheW91dFBvaW50RWpqamoKIF9fWk43V2ViQ29yZTEzSGl0VGVzdFJlc3VsdEQxRXYKIF9fWk43
V2ViQ29yZTEzSWRlbnRpZmllclJlcDNnZXRFUEtjCiBfX1pON1dlYkNvcmUxM0lkZW50aWZpZXJS
ZXAzZ2V0RWkKQEAgLTQ2Myw2ICs0NjQsNyBAQCBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4
dDlkcmF3SW1hZ2VFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDlzZXRTaGFkb3dFUktO
U185RmxvYXRTaXplRWZSS05TXzVDb2xvckVOU18xMENvbG9yU3BhY2VFCiBfX1pON1dlYkNvcmUx
NUdyYXBoaWNzQ29udGV4dDl0cmFuc2xhdGVFZmYKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250
ZXh0RDFFdgorX19aTjdXZWJDb3JlMTVIaXRUZXN0TG9jYXRpb24xMnJlY3RGb3JQb2ludEVSS05T
XzExTGF5b3V0UG9pbnRFampqagogX19aTjdXZWJDb3JlMTVKU0RPTVdpbmRvd0Jhc2U4Y29tbW9u
Vk1FdgogX19aTjdXZWJDb3JlMTVQbGF0Zm9ybUNBTGF5ZXIxOHNldEdlb21ldHJ5RmxpcHBlZEVi
CiBfX1pON1dlYkNvcmUxNVByb3RlY3Rpb25TcGFjZUMxRVJLTjNXVEY2U3RyaW5nRWlOU18yNVBy
b3RlY3Rpb25TcGFjZVNlcnZlclR5cGVFUzRfTlNfMzVQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNh
dGlvblNjaGVtZUUKQEAgLTEzMTIsNiArMTMxNCw3IEBAIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RS
ZXN1bHQxNmFic29sdXRlTWUKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxNmFsdERpc3Bs
YXlTdHJpbmdFdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE3aXNDb250ZW50RWRpdGFi
bGVFdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE4dGl0bGVEaXNwbGF5U3RyaW5nRXYK
K19fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxOXJlY3RCYXNlZFRlc3RSZXN1bHRFdgogX19a
Tks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDVpbWFnZUV2CiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0
UmVzdWx0NXRpdGxlRVJOU18xM1RleHREaXJlY3Rpb25FCiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0
UmVzdWx0OWltYWdlUmVjdEV2CkBAIC0xNDc0LDYgKzE0NzcsNyBAQCBfX1pOSzdXZWJDb3JlNE5v
ZGUxMXRleHRDb250ZW50RWIKIF9fWk5LN1dlYkNvcmU0Tm9kZTEzb3duZXJEb2N1bWVudEV2CiBf
X1pOSzdXZWJDb3JlNE5vZGUxNGlzRGVzY2VuZGFudE9mRVBLUzBfCiBfX1pOSzdXZWJDb3JlNE5v
ZGUxOGdldFN1YnJlc291cmNlVVJMc0VSTjNXVEYxMUxpc3RIYXNoU2V0SU5TXzRLVVJMRUxtMjU2
RU5TXzhLVVJMSGFzaEVFRQorX19aTks3V2ViQ29yZTROb2RlMjhkZXByZWNhdGVkU2hhZG93QW5j
ZXN0b3JOb2RlRXYKIF9fWk5LN1dlYkNvcmU0Tm9kZTMxbnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVD
aGlsZHJlbkV2CiBfX1pOSzdXZWJDb3JlNE5vZGU5bm9kZUluZGV4RXYKIF9fWk5LN1dlYkNvcmU0
UGFnZTEwcGx1Z2luRGF0YUV2CkBAIC0xNTUxLDcgKzE1NTUsNiBAQCBfX1pOSzdXZWJDb3JlN0lu
dFJlY3RjdjZDR1JlY3RFdgogX19aTks3V2ViQ29yZTdSdW5Mb29wOVRpbWVyQmFzZThpc0FjdGl2
ZUV2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTFjb21wbGV0ZVVSTEVSS04zV1RGNlN0cmluZ0UK
IF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM2F4T2JqZWN0Q2FjaGVFdgotX19aTks3V2ViQ29yZThE
b2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampqCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTRn
ZXRFbGVtZW50QnlJZEVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERvY3Vt
ZW50MzFkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nRVJLTjNXVEY2U3RyaW5nRQogX19a
Tks3V2ViQ29yZThEb2N1bWVudDRib2R5RXYKQEAgLTE2MDAsNiArMTYwMyw3IEBAIF9fWk5LN1dl
YkNvcmU5UmVuZGVyQm94MTJjbGllbnRIZWlnaHRFdgogX19aTks3V2ViQ29yZTlSZW5kZXJCb3gx
MWNsaWVudFdpZHRoRXYKIF9fWlRWTjdXZWJDb3JlMTJDaHJvbWVDbGllbnRFCiBfX1pUVk43V2Vi
Q29yZTE0TG9hZGVyU3RyYXRlZ3lFCitfX1pUVk43V2ViQ29yZTE0U3RhdGljTm9kZUxpc3RFCiBf
X1pUVk43V2ViQ29yZTE1U3RvcmFnZVN0cmF0ZWd5RQogX19aVFZON1dlYkNvcmUxNkRhdGFiYXNl
U3RyYXRlZ3lFCiBfX1pUVk43V2ViQ29yZTE2SWNvbkRhdGFiYXNlQmFzZUUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTI3Myw4ICs1MjczLDYgQEAKIAkJQ0U3QjJEQjQx
NTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIwMTU4NkFCQUQw
MDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKi87IH07CiAJCUNFN0Iy
REI1MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIxMTU4NkFCQUQw
MDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTdCMkRCNjE1ODZBQkFEMDA5OEIzRkEg
LyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3QjJEQjIxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZS5tbSAqLzsgfTsKLQkJQ0VBMzk0OUMxMUQ0NUNEQTAwMzA5NENGIC8q
IFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRUEzOTQ5QTExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNl
dE5vZGVMaXN0LmNwcCAqLzsgfTsKLQkJQ0VBMzk0OUQxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRp
Y0hhc2hTZXROb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0VBMzk0OUIxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlz
dC5oICovOyB9OwogCQlDRUNBREZDNjE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJu
YXRpdmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0VDQURGQzIxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmNwcCAqLzsg
fTsKIAkJQ0VDQURGQzcxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUNBREZDMzE1
Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRUNBREZDODE1Mzc3OEZGMDBFMzcw
NjggLyogRGljdGF0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRUNBREZDNDE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQ29t
bWFuZC5jcHAgKi87IH07CkBAIC0xMjA2Miw4ICsxMjA2MCw2IEBACiAJCUNFN0IyREIwMTU4NkFC
QUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIu
bW07IHBhdGggPSBtYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRTdCMkRCMTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZS5oOyBwYXRoID0gbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTdCMkRCMjE1ODZBQkFEMDA5OEIz
RkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOyBwYXRoID0gbWFj
L1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQ0VBMzk0OUExMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGF0aWNIYXNoU2V0Tm9kZUxp
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRUEzOTQ5QjExRDQ1Q0RBMDAz
MDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRUNBREZDMjE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQWx0ZXJu
YXRpdmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUNBREZDMzE1Mzc3OEZG
MDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGljdGF0aW9uQWx0ZXJuYXRpdmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0VDQURGQzQxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQ29tbWFuZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDU2MCw4ICsyMDU1Niw2IEBACiAJ
CQkJMzE3NDFBQUIxNjYzNUU0NTAwOEE1QjdFIC8qIFNpbXVsYXRlZENsaWNrT3B0aW9ucy5oICov
LAogCQkJCUQwMUEyN0FCMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmNwcCAq
LywKIAkJCQlEMDFBMjdBQzEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5oICov
LAotCQkJCUNFQTM5NDlBMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Qu
Y3BwICovLAotCQkJCUNFQTM5NDlCMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9k
ZUxpc3QuaCAqLywKIAkJCQlCQzdGQTYyQzBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxp
c3QuY3BwICovLAogCQkJCUJDN0ZBNjJCMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNOb2RlTGlz
dC5oICovLAogCQkJCTgxMDJDNTg3MTMyNUJCMTEwMERERTY3QSAvKiBTdHJpbmdDYWxsYmFjay5j
cHAgKi8sCkBAIC0yMzUwNyw3ICsyMzUwMSw2IEBACiAJCQkJOTdCQzZBNUQxNTA1RjA4MTAwMUI3
NEFDIC8qIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTJFNkU1QTBDQzU1MjEzMDA0QTIwNjIgLyogU1FMVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzRjE5OTYzMDgyNDVFNTkwMDFFOUFCQyAvKiBTU0xLZXlHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUNFQTM5NDlEMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0ZBNjJEMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0
aWNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVBRkIzNTAxMTUxNTFBNzAwQjA0NUNC
IC8qIFN0ZXBSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCRTM3RTAwREFFRTAwRTAwMTA4
NUZDIC8qIFN0b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLywKQEAgLTI2NTc0LDcgKzI2NTY3LDYg
QEAKIAkJCQk5N0JDNkE1QTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkU2RTU5MENDNTUyMTMwMDRBMjA2MiAvKiBTUUxWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUFFNjA4MjQ1RTU5MDAxRTlBQkMgLyogU1NM
S2V5R2VuZXJhdG9yTWFjLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUNFQTM5NDlDMTFENDVDREEw
MDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM3RkE2MkUwRDFGMEVGRjAwREIyMkE5IC8qIFN0YXRpY05vZGVMaXN0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1QUZCMzRGMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTFFM0Y5QzcwREEwNTlEQzAwMjUwOTExIC8qIFN0b3JhZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAJKHJldmlzaW9u
IDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMCw3ICsxMzAsNiBAQAogI2luY2x1ZGUgIlNlbGVjdG9yUXVlcnkuY3BwIgog
I2luY2x1ZGUgIlNoYWRvd1Jvb3QuY3BwIgogI2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuY3Bw
IgotI2luY2x1ZGUgIlN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAiCiAjaW5jbHVkZSAiU3RhdGlj
Tm9kZUxpc3QuY3BwIgogI2luY2x1ZGUgIlN0eWxlRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiU3R5
bGVkRWxlbWVudC5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDE0
OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1Niw3ICsxNTYsNiBAQAogI2luY2x1ZGUgIlNlbGVjdG9yUXVlcnkuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJTdGF0aWNI
YXNoU2V0Tm9kZUxpc3QuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2V0LmgiCiAjaW5jbHVk
ZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgpAQCAt
MTQwNyw1OCArMTQwNiw2IEBAIFN0cmluZyBEb2N1bWVudDo6c3VnZ2VzdGVkTUlNRVR5cGUoKSBj
b24KICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLS8vIEZJWE1FOiBXZSBuZWVkIHRvIGRpc2N1
c3MgdGhlIERPTSBBUEkgaGVyZSBhdCBzb21lIHBvaW50LiBJZGVhczoKLS8vICogbWFraW5nIGl0
IHJlY2VpdmUgYSByZWN0IGFzIHBhcmFtZXRlciwgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHcs
IGgpOwotLy8gKiBtYWtpbmcgaXQgcmVjZWl2ZSB0aGUgZXhwYWRpbmcgc2l6ZSBvZiBlYWNoIGRp
cmVjdGlvbiBzZXBhcmF0ZWx5LAotLy8gICBpLmUuIG5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wU2l6
ZSwgcmlnaHRTaXplLCBib3R0b21TaXplLCBsZWZ0U2l6ZSk7Ci1QYXNzUmVmUHRyPE5vZGVMaXN0
PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2ln
bmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFk
ZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVz
dFR5cGUgaGl0VHlwZSkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogU2hhcmUgY29kZSBiZXR3ZWVu
IHRoaXMsIGVsZW1lbnRGcm9tUG9pbnQgYW5kIGNhcmV0UmFuZ2VGcm9tUG9pbnQuCi0gICAgaWYg
KCFyZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBGcmFtZSogZnJhbWUgPSB0aGlz
LT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiAwOwotICAgIEZyYW1l
VmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKLSAgICBpZiAoIWZyYW1lVmlldykKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBmbG9hdCB6b29tRmFjdG9yID0gZnJhbWUtPnBhZ2Vab29t
RmFjdG9yKCk7Ci0gICAgTGF5b3V0UG9pbnQgcG9pbnQgPSByb3VuZGVkTGF5b3V0UG9pbnQoRmxv
YXRQb2ludChjZW50ZXJYICogem9vbUZhY3RvciArIHZpZXcoKS0+c2Nyb2xsWCgpLCBjZW50ZXJZ
ICogem9vbUZhY3RvciArIHZpZXcoKS0+c2Nyb2xsWSgpKSk7Ci0KLSAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0KGhpdFR5cGUpOwotCi0gICAgLy8gV2hlbiBpZ25vcmVDbGlwcGluZyBpcyBmYWxz
ZSwgdGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9mIHRo
ZSB2aWV3cG9ydC4KLSAgICBpZiAoIXJlcXVlc3QuaWdub3JlQ2xpcHBpbmcoKSAmJiAhZnJhbWVW
aWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEhpdFRlc3RMb2NhdGlvbjo6cmVj
dEZvclBvaW50KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcs
IGxlZnRQYWRkaW5nKSkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gUGFzc2luZyBhIHpl
cm8gcGFkZGluZyB3aWxsIHRyaWdnZXIgYSByZWN0IGhpdCB0ZXN0LCBob3dldmVyIGZvciB0aGUg
cHVycG9zZXMgb2Ygbm9kZXNGcm9tUmVjdCwKLSAgICAvLyB3ZSBzcGVjaWFsIGhhbmRsZSB0aGlz
IGNhc2UgaW4gb3JkZXIgdG8gcmV0dXJuIGEgdmFsaWQgTm9kZUxpc3QuCi0gICAgaWYgKCF0b3BQ
YWRkaW5nICYmICFyaWdodFBhZGRpbmcgJiYgIWJvdHRvbVBhZGRpbmcgJiYgIWxlZnRQYWRkaW5n
KSB7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50KTsKLSAgICAgICAgcmV0dXJu
IGhhbmRsZVplcm9QYWRkaW5nKHJlcXVlc3QsIHJlc3VsdCk7Ci0gICAgfQotCi0gICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFk
ZGluZywgbGVmdFBhZGRpbmcpOwotICAgIHJlbmRlclZpZXcoKS0+aGl0VGVzdChyZXF1ZXN0LCBy
ZXN1bHQpOwotCi0gICAgcmV0dXJuIFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0
LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3Vt
ZW50OjpoYW5kbGVaZXJvUGFkZGluZyhjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlc3VsdCYgcmVzdWx0KSBjb25zdAotewotICAgIHJlbmRlclZpZXcoKS0+aGl0VGVzdChy
ZXF1ZXN0LCByZXN1bHQpOwotCi0gICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsK
LSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgbm9kZSA9IG5vZGUtPmRl
cHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5vZGUoKTsKLSAgICBMaXN0SGFzaFNldDxSZWZQdHI8Tm9k
ZT4gPiBsaXN0OwotICAgIGxpc3QuYWRkKG5vZGUpOwotICAgIHJldHVybiBTdGF0aWNIYXNoU2V0
Tm9kZUxpc3Q6OmFkb3B0KGxpc3QpOwotfQotCiBFbGVtZW50KiBEb2N1bWVudDo6ZWxlbWVudEZy
b21Qb2ludChpbnQgeCwgaW50IHkpIGNvbnN0CiB7CiAgICAgaWYgKCFyZW5kZXJlcigpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTksMjAgKzM1OSw2IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgY3NzR3JpZExheW91dEVuYWJsZWQoKSBjb25zdDsKIAotICAgIC8qKgot
ICAgICAqIFJldHJpZXZlIGFsbCBub2RlcyB0aGF0IGludGVyc2VjdCBhIHJlY3QgaW4gdGhlIHdp
bmRvdydzIGRvY3VtZW50LCB1bnRpbCBpdCBpcyBmdWxseSBlbmNsb3NlZCBieQotICAgICAqIHRo
ZSBib3VuZGFyaWVzIG9mIGEgbm9kZS4KLSAgICAgKgotICAgICAqIEBwYXJhbSBjZW50ZXJYIHgg
cmVmZXJlbmNlIGZvciB0aGUgcmVjdGFuZ2xlIGluIENTUyBwaXhlbHMKLSAgICAgKiBAcGFyYW0g
Y2VudGVyWSB5IHJlZmVyZW5jZSBmb3IgdGhlIHJlY3RhbmdsZSBpbiBDU1MgcGl4ZWxzCi0gICAg
ICogQHBhcmFtIHRvcFBhZGRpbmcgSG93IG11Y2ggdG8gZXhwYW5kIHRoZSB0b3Agb2YgdGhlIHJl
Y3RhbmdsZQotICAgICAqIEBwYXJhbSByaWdodFBhZGRpbmcgSG93IG11Y2ggdG8gZXhwYW5kIHRo
ZSByaWdodCBvZiB0aGUgcmVjdGFuZ2xlCi0gICAgICogQHBhcmFtIGJvdHRvbVBhZGRpbmcgSG93
IG11Y2ggdG8gZXhwYW5kIHRoZSBib3R0b20gb2YgdGhlIHJlY3RhbmdsZQotICAgICAqIEBwYXJh
bSBsZWZ0UGFkZGluZyBIb3cgbXVjaCB0byBleHBhbmQgdGhlIGxlZnQgb2YgdGhlIHJlY3Rhbmds
ZQotICAgICAqLwotICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoaW50IGNl
bnRlclgsIGludCBjZW50ZXJZLAotICAgICAgICB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25l
ZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRk
aW5nLAotICAgICAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUg
PSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0
VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCkgY29uc3Q7CiAgICAgRWxlbWVudCog
ZWxlbWVudEZyb21Qb2ludChpbnQgeCwgaW50IHkpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8UmFu
Z2U+IGNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5KTsKIApAQCAtMTI2NCw4ICsxMjUw
LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2VhbWxlc3NQYXJlbnRVcGRhdGVkU3R5bGVzaGVl
dHMoKTsKIAotICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGhhbmRsZVplcm9QYWRkaW5nKGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYpIGNvbnN0OwotCiAgICAgdm9pZCBsb2Fk
RXZlbnREZWxheVRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+Kik7CiAKICAgICB2b2lkIHBlbmRp
bmdUYXNrc1RpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcAkocmV2aXNpb24gMTQ5MTY1KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiU3RhdGljSGFzaFNldE5vZGVMaXN0LmgiCi0KLSNpbmNsdWRlICJFbGVtZW50
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU3RhdGljSGFzaFNldE5vZGVMaXN0OjpTdGF0
aWNIYXNoU2V0Tm9kZUxpc3QoTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4mIG5vZGVzKQotewot
ICAgIG1fbm9kZXMuc3dhcChub2Rlcyk7Ci19Ci0KLVN0YXRpY0hhc2hTZXROb2RlTGlzdDo6U3Rh
dGljSGFzaFNldE5vZGVMaXN0KCkKLXsKLX0KLQotU3RhdGljSGFzaFNldE5vZGVMaXN0Ojp+U3Rh
dGljSGFzaFNldE5vZGVMaXN0KCkKLXsKLX0KLQotdW5zaWduZWQgU3RhdGljSGFzaFNldE5vZGVM
aXN0OjpsZW5ndGgoKSBjb25zdAotewotICAgIHJldHVybiBtX25vZGVzLnNpemUoKTsKLX0KLQot
Tm9kZSogU3RhdGljSGFzaFNldE5vZGVMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAot
ewotICAgIGlmIChpbmRleCA8ICh1bnNpZ25lZCkgbV9ub2Rlcy5zaXplKCkpIHsKLSAgICAgICAg
TGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ub2Rlcy5i
ZWdpbigpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGNvdW50ID0gMDsgY291bnQgPCBpbmRleDsg
KytpdCwgKytjb3VudCkgeyB9Ci0gICAgICAgIHJldHVybiAoKml0KS5nZXQoKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gMDsKLX0KLQotTm9kZSogU3RhdGljSGFzaFNldE5vZGVMaXN0OjpuYW1lZEl0
ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0Ci17Ci0gICAgTGlzdEhhc2hT
ZXQ8UmVmUHRyPE5vZGU+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ub2Rlcy5iZWdpbigpOwot
ICAgIExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX25v
ZGVzLmVuZCgpOwotICAgIGZvciAoIDsgaXQgIT0gZW5kIDsgKytpdCkgewotICAgICAgICBOb2Rl
KiBub2RlID0gKCppdCkuZ2V0KCk7Ci0gICAgICAgIGlmICh0b0VsZW1lbnQobm9kZSktPmdldElk
QXR0cmlidXRlKCkgPT0gZWxlbWVudElkKQotICAgICAgICAgICAgcmV0dXJuIG5vZGU7Ci0gICAg
fQotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmgJKHJldmlzaW9uIDE0OTE2
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICogQ29weXJpZ2h0IChD
KSAyMDEwIEFudG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU3RhdGlj
SGFzaFNldE5vZGVMaXN0X2gKLSNkZWZpbmUgU3RhdGljSGFzaFNldE5vZGVMaXN0X2gKLQotI2lu
Y2x1ZGUgIk5vZGVMaXN0LmgiCi0jaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgTm9kZTsKLQotY2xhc3MgU3RhdGljSGFzaFNldE5vZGVMaXN0
IDogcHVibGljIE5vZGVMaXN0IHsKLXB1YmxpYzoKLSAgICBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Qo
KTsKLSAgICB+U3RhdGljSGFzaFNldE5vZGVMaXN0KCk7Ci0KLSAgICAvLyBBZG9wdHMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBub2RlcyBMaXN0SGFzaFNldC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IGFkb3B0KGNvbnN0IExpc3RIYXNoU2V0PFJlZlB0cjxOb2Rl
PiA+JiBub2RlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdChjb25zdF9jYXN0PExpc3RI
YXNoU2V0PFJlZlB0cjxOb2RlPiA+Jj4obm9kZXMpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IGFkb3B0KExpc3RIYXNoU2V0PFJlZlB0cjxO
b2RlPiA+JiBub2RlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RhdGlj
SGFzaFNldE5vZGVMaXN0KG5vZGVzKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQg
aW5kZXgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgTm9kZSogbmFtZWRJdGVtKGNvbnN0
IEF0b21pY1N0cmluZyYpIGNvbnN0IE9WRVJSSURFOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0
IFN0YXRpY0hhc2hTZXROb2RlTGlzdChMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiYgbm9kZXMp
OwotCi0gICAgTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4gbV9ub2RlczsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFN0YXRpY0hhc2hTZXROb2RlTGlzdF9oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAxNDkxNjUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc5LDcgKzc5LDYgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKICNpbmNsdWRlICJTcGF0aWFsTmF2aWdhdGlvbi5oIgotI2luY2x1ZGUgIlN0YXRpY0hh
c2hTZXROb2RlTGlzdC5oIgogI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRl
ICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKQEAgLTI4MzUsMTMgKzI4
MzQsMTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmJlc3RDbGlja2FibGVOb2RlRm9yVAogICAgIEhp
dFRlc3RSZXN1bHQgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCBI
aXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCB0b3VjaFJh
ZGl1cyk7CiAKICAgICBJbnRSZWN0IHRvdWNoUmVjdCh0b3VjaENlbnRlciAtIHRvdWNoUmFkaXVz
LCB0b3VjaFJhZGl1cyArIHRvdWNoUmFkaXVzKTsKLSAgICBSZWZQdHI8U3RhdGljSGFzaFNldE5v
ZGVMaXN0PiBub2RlTGlzdCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJl
Y3RCYXNlZFRlc3RSZXN1bHQoKSk7CiAKICAgICAvLyBGSVhNRTogU2hvdWxkIGJlIGFibGUgdG8g
aGFuZGxlIHRhcmdldE5vZGUgYmVpbmcgYSBzaGFkb3cgRE9NIG5vZGUgdG8gYXZvaWQgcGVyZm9y
bWluZyB1bmNlc3NhcnkgaGl0IHRlc3RzCiAgICAgLy8gaW4gdGhlIGNhc2Ugd2hlcmUgZnVydGhl
ciBwcm9jZXNzaW5nIG9uIHRoZSBub2RlIGlzIHJlcXVpcmVkLiBSZXR1cm5pbmcgdGhlIHNoYWRv
dyBhbmNlc3RvciBwcmV2ZW50cyBhCiAgICAgLy8gcmVncmVzc2lvbiBpbiB0b3VjaGFkanVzdG1l
bnQvaHRtbC1sYWJlbC5odG1sLiBTb21lIHJlZmluZW1lbnQgaXMgcmVxdWlyZWQgdG8gdGVzdGlu
Zy9pbnRlcm5hbHMgdG8KICAgICAvLyBoYW5kbGUgdGFyZ2V0Tm9kZSBiZWluZyBhIHNoYWRvdyBE
T00gbm9kZS4gCi0gICAgYm9vbCBzdWNjZXNzID0gZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUo
dGFyZ2V0Tm9kZSwgdGFyZ2V0UG9pbnQsIHRvdWNoQ2VudGVyLCB0b3VjaFJlY3QsICpub2RlTGlz
dC5nZXQoKSk7CisgICAgYm9vbCBzdWNjZXNzID0gZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUo
dGFyZ2V0Tm9kZSwgdGFyZ2V0UG9pbnQsIHRvdWNoQ2VudGVyLCB0b3VjaFJlY3QsIHJlc3VsdC5y
ZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwogICAgIGlmIChzdWNjZXNzICYmIHRhcmdldE5vZGUpCiAg
ICAgICAgIHRhcmdldE5vZGUgPSB0YXJnZXROb2RlLT5kZXByZWNhdGVkU2hhZG93QW5jZXN0b3JO
b2RlKCk7CiAgICAgcmV0dXJuIHN1Y2Nlc3M7CkBAIC0yODUzLDggKzI4NTEsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6YmVzdENvbnRleHRNZW51Tm9kZUZvCiAgICAgSGl0VGVzdFJlc3VsdCByZXN1
bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpS
ZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIHRvdWNoUmFkaXVzKTsKIAogICAgIElu
dFJlY3QgdG91Y2hSZWN0KHRvdWNoQ2VudGVyIC0gdG91Y2hSYWRpdXMsIHRvdWNoUmFkaXVzICsg
dG91Y2hSYWRpdXMpOwotICAgIFJlZlB0cjxTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IG5vZGVMaXN0
ID0gU3RhdGljSGFzaFNldE5vZGVMaXN0OjphZG9wdChyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3Vs
dCgpKTsKLSAgICByZXR1cm4gZmluZEJlc3RDb250ZXh0TWVudUNhbmRpZGF0ZSh0YXJnZXROb2Rl
LCB0YXJnZXRQb2ludCwgdG91Y2hDZW50ZXIsIHRvdWNoUmVjdCwgKm5vZGVMaXN0LmdldCgpKTsK
KyAgICByZXR1cm4gZmluZEJlc3RDb250ZXh0TWVudUNhbmRpZGF0ZSh0YXJnZXROb2RlLCB0YXJn
ZXRQb2ludCwgdG91Y2hDZW50ZXIsIHRvdWNoUmVjdCwgcmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1
bHQoKSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9yVG91Y2hQ
b2ludChjb25zdCBJbnRQb2ludCYgdG91Y2hDZW50ZXIsIGNvbnN0IEludFNpemUmIHRvdWNoUmFk
aXVzLCBJbnRSZWN0JiB0YXJnZXRBcmVhLCBOb2RlKiYgdGFyZ2V0Tm9kZSkKQEAgLTI4NjMsOCAr
Mjg2MCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9yVG8KICAgICBI
aXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwg
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRl
c3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQsIHRvdWNoUmFkaXVzKTsKIAogICAgIElu
dFJlY3QgdG91Y2hSZWN0KHRvdWNoQ2VudGVyIC0gdG91Y2hSYWRpdXMsIHRvdWNoUmFkaXVzICsg
dG91Y2hSYWRpdXMpOwotICAgIFJlZlB0cjxTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IG5vZGVMaXN0
ID0gU3RhdGljSGFzaFNldE5vZGVMaXN0OjphZG9wdChyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3Vs
dCgpKTsKLSAgICByZXR1cm4gZmluZEJlc3Rab29tYWJsZUFyZWEodGFyZ2V0Tm9kZSwgdGFyZ2V0
QXJlYSwgdG91Y2hDZW50ZXIsIHRvdWNoUmVjdCwgKm5vZGVMaXN0LmdldCgpKTsKKyAgICByZXR1
cm4gZmluZEJlc3Rab29tYWJsZUFyZWEodGFyZ2V0Tm9kZSwgdGFyZ2V0QXJlYSwgdG91Y2hDZW50
ZXIsIHRvdWNoUmVjdCwgcmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7CiB9CiAKIGJvb2wg
RXZlbnRIYW5kbGVyOjphZGp1c3RHZXN0dXJlUG9zaXRpb24oY29uc3QgUGxhdGZvcm1HZXN0dXJl
RXZlbnQmIGdlc3R1cmVFdmVudCwgSW50UG9pbnQmIGFkanVzdGVkUG9pbnQpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCShyZXZpc2lvbiAxNDkxNjUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzMyw3ICsyMzMsNyBAQCBzdGF0aWMgaW5saW5lIE5vZGUqIHBhcmVudFNoYWRvd0hvc3RPck93
CiB9CiAKIC8vIENvbXBpbGVzIGEgbGlzdCBvZiBzdWJ0YXJnZXRzIG9mIGFsbCB0aGUgcmVsZXZh
bnQgdGFyZ2V0IG5vZGVzLgotdm9pZCBjb21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlz
dCYgaW50ZXJzZWN0ZWROb2RlcywgU3VidGFyZ2V0R2VvbWV0cnlMaXN0JiBzdWJ0YXJnZXRzLCBO
b2RlRmlsdGVyIG5vZGVGaWx0ZXIsIEFwcGVuZFN1YnRhcmdldHNGb3JOb2RlIGFwcGVuZFN1YnRh
cmdldHNGb3JOb2RlKQordm9pZCBjb21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdEhh
c2hTZXQmIGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdldEdlb21ldHJ5TGlzdCYgc3VidGFyZ2V0
cywgTm9kZUZpbHRlciBub2RlRmlsdGVyLCBBcHBlbmRTdWJ0YXJnZXRzRm9yTm9kZSBhcHBlbmRT
dWJ0YXJnZXRzRm9yTm9kZSkKIHsKICAgICAvLyBGaW5kIGNhbmRpZGF0ZXMgcmVzcG9uZGluZyB0
byB0YXAgZ2VzdHVyZSBldmVudHMgaW4gTyhuKSB0aW1lLgogICAgIEhhc2hNYXA8Tm9kZSosIE5v
ZGUqPiByZXNwb25kZXJNYXA7CkBAIC0yNDQsOSArMjQ0LDkgQEAgdm9pZCBjb21waWxlU3VidGFy
Z2V0TGlzdChjb25zdCBOb2RlTGlzdAogICAgIC8vIEEgbm9kZSBtYXRjaGluZyB0aGUgTm9kZUZp
bHRlciBpcyBjYWxsZWQgYSByZXNwb25kZXIuIENhbmRpZGF0ZSBub2RlcyBtdXN0IGVpdGhlciBi
ZSBhCiAgICAgLy8gcmVzcG9uZGVyIG9yIGhhdmUgYW4gYW5jZXN0b3IgdGhhdCBpcyBhIHJlc3Bv
bmRlci4KICAgICAvLyBUaGlzIGl0ZXJhdGlvbiB0ZXN0cyBhbGwgYW5jZXN0b3JzIGF0IG1vc3Qg
b25jZSBieSBjYWNoaW5nIGVhcmxpZXIgcmVzdWx0cy4KLSAgICB1bnNpZ25lZCBsZW5ndGggPSBp
bnRlcnNlY3RlZE5vZGVzLmxlbmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgewotICAgICAgICBOb2RlKiBjb25zdCBub2RlID0gaW50ZXJzZWN0ZWROb2Rl
cy5pdGVtKGkpOworICAgIE5vZGVMaXN0SGFzaFNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW50
ZXJzZWN0ZWROb2Rlcy5lbmQoKTsKKyAgICBmb3IgKE5vZGVMaXN0SGFzaFNldDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBpbnRlcnNlY3RlZE5vZGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgICAgICBOb2RlKiBjb25zdCBub2RlID0gaXQtPmdldCgpOwogICAgICAgICBWZWN0b3I8Tm9k
ZSo+IHZpc2l0ZWROb2RlczsKICAgICAgICAgTm9kZSogcmVzcG9uZGluZ05vZGUgPSAwOwogICAg
ICAgICBmb3IgKE5vZGUqIHZpc2l0ZWROb2RlID0gbm9kZTsgdmlzaXRlZE5vZGU7IHZpc2l0ZWRO
b2RlID0gdmlzaXRlZE5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkgewpAQCAtMjc3LDcg
KzI3Nyw3IEBAIHZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3QKIAogICAg
IC8vIFdlIGNvbXBpbGUgdGhlIGxpc3Qgb2YgY29tcG9uZW50IGFic29sdXRlIHF1YWRzIGluc3Rl
YWQgb2YgdXNpbmcgdGhlIGJvdW5kaW5nIHJlY3QKICAgICAvLyB0byBiZSBhYmxlIHRvIHBlcmZv
cm0gYmV0dGVyIGhpdC10ZXN0aW5nIG9uIGlubGluZSBsaW5rcyBvbiBsaW5lLWJyZWFrcy4KLSAg
ICBsZW5ndGggPSBjYW5kaWRhdGVzLnNpemUoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBjYW5k
aWRhdGVzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0gY2FuZGlkYXRlc1tpXTsKICAgICAgICAgLy8g
U2tpcCBub2RlcyB3aG8ncyByZXNwb25kZXJzIGFyZSBhbmNlc3RvcnMgb2Ygb3RoZXIgcmVzcG9u
ZGVycy4gVGhpcyBnaXZlcyBwcmVmZXJlbmNlIHRvCkBAIC0zMTAsMTEgKzMxMCwxMSBAQCB2b2lk
IGNvbXBpbGVTdWJ0YXJnZXRMaXN0KGNvbnN0IE5vZGVMaXN0CiB9CiAKIC8vIENvbXBpbGVzIGEg
bGlzdCBvZiB6b29tYWJsZSBzdWJ0YXJnZXRzLgotdm9pZCBjb21waWxlWm9vbWFibGVTdWJ0YXJn
ZXRzKGNvbnN0IE5vZGVMaXN0JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9tZXRyeUxp
c3QmIHN1YnRhcmdldHMpCit2b2lkIGNvbXBpbGVab29tYWJsZVN1YnRhcmdldHMoY29uc3QgTm9k
ZUxpc3RIYXNoU2V0JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9tZXRyeUxpc3QmIHN1
YnRhcmdldHMpCiB7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gaW50ZXJzZWN0ZWROb2Rlcy5sZW5n
dGgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgTm9kZSogY29uc3QgY2FuZGlkYXRlID0gaW50ZXJzZWN0ZWROb2Rlcy5pdGVtKGkpOworICAg
IE5vZGVMaXN0SGFzaFNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW50ZXJzZWN0ZWROb2Rlcy5l
bmQoKTsKKyAgICBmb3IgKE5vZGVMaXN0SGFzaFNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBpbnRl
cnNlY3RlZE5vZGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBOb2RlKiBj
b25zdCBjYW5kaWRhdGUgPSBpdC0+Z2V0KCk7CiAgICAgICAgIGlmIChub2RlSXNab29tVGFyZ2V0
KGNhbmRpZGF0ZSkpCiAgICAgICAgICAgICBhcHBlbmRab29tYWJsZVN1YnRhcmdldHMoY2FuZGlk
YXRlLCBzdWJ0YXJnZXRzKTsKICAgICB9CkBAIC00NzYsNyArNDc2LDcgQEAgYm9vbCBmaW5kTm9k
ZVdpdGhMb3dlc3REaXN0YW5jZU1ldHJpYyhObwogCiB9IC8vIG5hbWVzcGFjZSBUb3VjaEFkanVz
dG1lbnQKIAotYm9vbCBmaW5kQmVzdENsaWNrYWJsZUNhbmRpZGF0ZShOb2RlKiYgdGFyZ2V0Tm9k
ZSwgSW50UG9pbnQgJnRhcmdldFBvaW50LCBjb25zdCBJbnRQb2ludCAmdG91Y2hIb3RzcG90LCBj
b25zdCBJbnRSZWN0ICZ0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0JiBub2RlTGlzdCkKK2Jvb2wg
ZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUoTm9kZSomIHRhcmdldE5vZGUsIEludFBvaW50ICZ0
YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQgJnRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCAm
dG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdEhhc2hTZXQmIG5vZGVMaXN0KQogewogICAgIEludFJl
Y3QgdGFyZ2V0QXJlYTsKICAgICBUb3VjaEFkanVzdG1lbnQ6OlN1YnRhcmdldEdlb21ldHJ5TGlz
dCBzdWJ0YXJnZXRzOwpAQCAtNDg0LDcgKzQ4NCw3IEBAIGJvb2wgZmluZEJlc3RDbGlja2FibGVD
YW5kaWRhdGUoTm9kZSomIHQKICAgICByZXR1cm4gVG91Y2hBZGp1c3RtZW50OjpmaW5kTm9kZVdp
dGhMb3dlc3REaXN0YW5jZU1ldHJpYyh0YXJnZXROb2RlLCB0YXJnZXRQb2ludCwgdGFyZ2V0QXJl
YSwgdG91Y2hIb3RzcG90LCB0b3VjaEFyZWEsIHN1YnRhcmdldHMsIFRvdWNoQWRqdXN0bWVudDo6
aHlicmlkRGlzdGFuY2VGdW5jdGlvbik7CiB9CiAKLWJvb2wgZmluZEJlc3RDb250ZXh0TWVudUNh
bmRpZGF0ZShOb2RlKiYgdGFyZ2V0Tm9kZSwgSW50UG9pbnQgJnRhcmdldFBvaW50LCBjb25zdCBJ
bnRQb2ludCAmdG91Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0ICZ0b3VjaEFyZWEsIGNvbnN0IE5v
ZGVMaXN0JiBub2RlTGlzdCkKK2Jvb2wgZmluZEJlc3RDb250ZXh0TWVudUNhbmRpZGF0ZShOb2Rl
KiYgdGFyZ2V0Tm9kZSwgSW50UG9pbnQgJnRhcmdldFBvaW50LCBjb25zdCBJbnRQb2ludCAmdG91
Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0ICZ0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0SGFzaFNl
dCYgbm9kZUxpc3QpCiB7CiAgICAgSW50UmVjdCB0YXJnZXRBcmVhOwogICAgIFRvdWNoQWRqdXN0
bWVudDo6U3VidGFyZ2V0R2VvbWV0cnlMaXN0IHN1YnRhcmdldHM7CkBAIC00OTIsNyArNDkyLDcg
QEAgYm9vbCBmaW5kQmVzdENvbnRleHRNZW51Q2FuZGlkYXRlKE5vZGUqJgogICAgIHJldHVybiBU
b3VjaEFkanVzdG1lbnQ6OmZpbmROb2RlV2l0aExvd2VzdERpc3RhbmNlTWV0cmljKHRhcmdldE5v
ZGUsIHRhcmdldFBvaW50LCB0YXJnZXRBcmVhLCB0b3VjaEhvdHNwb3QsIHRvdWNoQXJlYSwgc3Vi
dGFyZ2V0cywgVG91Y2hBZGp1c3RtZW50OjpoeWJyaWREaXN0YW5jZUZ1bmN0aW9uKTsKIH0KIAot
Ym9vbCBmaW5kQmVzdFpvb21hYmxlQXJlYShOb2RlKiYgdGFyZ2V0Tm9kZSwgSW50UmVjdCYgdGFy
Z2V0QXJlYSwgY29uc3QgSW50UG9pbnQmIHRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCYgdG91
Y2hBcmVhLCBjb25zdCBOb2RlTGlzdCYgbm9kZUxpc3QpCitib29sIGZpbmRCZXN0Wm9vbWFibGVB
cmVhKE5vZGUqJiB0YXJnZXROb2RlLCBJbnRSZWN0JiB0YXJnZXRBcmVhLCBjb25zdCBJbnRQb2lu
dCYgdG91Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0JiB0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0
SGFzaFNldCYgbm9kZUxpc3QpCiB7CiAgICAgSW50UG9pbnQgdGFyZ2V0UG9pbnQ7CiAgICAgVG91
Y2hBZGp1c3RtZW50OjpTdWJ0YXJnZXRHZW9tZXRyeUxpc3Qgc3VidGFyZ2V0czsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuaAkocmV2aXNpb24gMTQ5MTY1KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgs
OSArMjgsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIGZpbmRCZXN0Q2xpY2th
YmxlQ2FuZGlkYXRlKE5vZGUqJiB0YXJnZXROb2RlLCBJbnRQb2ludCYgdGFyZ2V0UG9pbnQsIGNv
bnN0IEludFBvaW50JiB0b3VjaEhvdHNwb3QsIGNvbnN0IEludFJlY3QmIHRvdWNoQXJlYSwgY29u
c3QgTm9kZUxpc3QmKTsKLWJvb2wgZmluZEJlc3RDb250ZXh0TWVudUNhbmRpZGF0ZShOb2RlKiYg
dGFyZ2V0Tm9kZSwgSW50UG9pbnQmIHRhcmdldFBvaW50LCBjb25zdCBJbnRQb2ludCYgdG91Y2hI
b3RzcG90LCBjb25zdCBJbnRSZWN0JiB0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0Jik7Ci1ib29s
IGZpbmRCZXN0Wm9vbWFibGVBcmVhKE5vZGUqJiB0YXJnZXROb2RlLCBJbnRSZWN0JiB0YXJnZXRB
cmVhLCBjb25zdCBJbnRQb2ludCYgdG91Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0JiB0b3VjaEFy
ZWEsIGNvbnN0IE5vZGVMaXN0Jik7Cit0eXBlZGVmIExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+
IE5vZGVMaXN0SGFzaFNldDsKKworYm9vbCBmaW5kQmVzdENsaWNrYWJsZUNhbmRpZGF0ZShOb2Rl
KiYgdGFyZ2V0Tm9kZSwgSW50UG9pbnQmIHRhcmdldFBvaW50LCBjb25zdCBJbnRQb2ludCYgdG91
Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0JiB0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0SGFzaFNl
dCYpOworYm9vbCBmaW5kQmVzdENvbnRleHRNZW51Q2FuZGlkYXRlKE5vZGUqJiB0YXJnZXROb2Rl
LCBJbnRQb2ludCYgdGFyZ2V0UG9pbnQsIGNvbnN0IEludFBvaW50JiB0b3VjaEhvdHNwb3QsIGNv
bnN0IEludFJlY3QmIHRvdWNoQXJlYSwgY29uc3QgTm9kZUxpc3RIYXNoU2V0Jik7Citib29sIGZp
bmRCZXN0Wm9vbWFibGVBcmVhKE5vZGUqJiB0YXJnZXROb2RlLCBJbnRSZWN0JiB0YXJnZXRBcmVh
LCBjb25zdCBJbnRQb2ludCYgdG91Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0JiB0b3VjaEFyZWEs
IGNvbnN0IE5vZGVMaXN0SGFzaFNldCYpOwogLy8gRklYTUU6IEltcGxlbWVudCB0aGUgc2ltaWxh
ciBmdW5jdGlvbnMgZm9yIG90aGVyIGdlc3R1cmVzIGhlcmUgYXMgd2VsbC4KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2
aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTWVudUxpc3Qu
aCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0
LmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgiCkBAIC04OSw2ICs5MCw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
ICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3BlbGxDaGVja2VyLmgiCisjaW5j
bHVkZSAiU3RhdGljTm9kZUxpc3QuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIK
ICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUcmVlU2NvcGUuaCIKQEAgLTE0
MTQsNyArMTQxNiw3IEBAIFBhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IEludGVybmFsczo6dG8K
IH0KICNlbmRpZgogCi1QYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnRlcm5hbHM6Om5vZGVzRnJvbVJl
Y3QoRG9jdW1lbnQqIGRvY3VtZW50LCBpbnQgeCwgaW50IHksIHVuc2lnbmVkIHRvcFBhZGRpbmcs
IHVuc2lnbmVkIHJpZ2h0UGFkZGluZywKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IEludGVybmFsczo6
bm9kZXNGcm9tUmVjdChEb2N1bWVudCogZG9jdW1lbnQsIGludCBjZW50ZXJYLCBpbnQgY2VudGVy
WSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLAogICAgIHVuc2ln
bmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBw
aW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBhbGxvd0NoaWxkRnJhbWVDb250ZW50
LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1
bWVudC0+ZnJhbWUoKSB8fCAhZG9jdW1lbnQtPmZyYW1lKCktPnZpZXcoKSkgewpAQCAtMTQyMiw2
ICsxNDI0LDE1IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEludGVybmFsczo6bm9kZXNGcm8KICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZy
YW1lKCk7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBkb2N1bWVudC0+dmlldygpOworICAg
IFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBkb2N1bWVudC0+cmVuZGVyVmlldygpOworICAgIGlm
ICghcmVuZGVyVmlldykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmbG9hdCB6b29tRmFjdG9y
ID0gZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCk7CisgICAgTGF5b3V0UG9pbnQgcG9pbnQgPSByb3Vu
ZGVkTGF5b3V0UG9pbnQoRmxvYXRQb2ludChjZW50ZXJYICogem9vbUZhY3RvciArIGZyYW1lVmll
dy0+c2Nyb2xsWCgpLCBjZW50ZXJZICogem9vbUZhY3RvciArIGZyYW1lVmlldy0+c2Nyb2xsWSgp
KSk7CisKICAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBI
aXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlOwogICAgIGlm
IChpZ25vcmVDbGlwcGluZykKICAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6SWdu
b3JlQ2xpcHBpbmc7CkBAIC0xNDMwLDcgKzE0NDEsMjggQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4g
SW50ZXJuYWxzOjpub2Rlc0ZybwogICAgIGlmIChhbGxvd0NoaWxkRnJhbWVDb250ZW50KQogICAg
ICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50Owog
Ci0gICAgcmV0dXJuIGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFBhZGRpbmcsIHJp
Z2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGhpdFR5cGUpOworICAgIEhp
dFRlc3RSZXF1ZXN0IHJlcXVlc3QoaGl0VHlwZSk7CisKKyAgICAvLyBXaGVuIGlnbm9yZUNsaXBw
aW5nIGlzIGZhbHNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIG51bGwgZm9yIGNvb3JkaW5hdGVzIG91
dHNpZGUgb2YgdGhlIHZpZXdwb3J0LgorICAgIGlmICghcmVxdWVzdC5pZ25vcmVDbGlwcGluZygp
ICYmICFmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLmludGVyc2VjdHMoSGl0VGVzdExv
Y2F0aW9uOjpyZWN0Rm9yUG9pbnQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90
dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBWZWN0
b3I8UmVmUHRyPE5vZGU+ID4gbWF0Y2hlczsKKworICAgIC8vIE5lZWQgcGFkZGluZyB0byB0cmln
Z2VyIGEgcmVjdCBiYXNlZCBoaXQgdGVzdCwgYnV0IHdlIHdhbnQgdG8gcmV0dXJuIGEgTm9kZUxp
c3QKKyAgICAvLyBzbyB3ZSBzcGVjaWFsIGNhc2UgdGhpcy4KKyAgICBpZiAoIXRvcFBhZGRpbmcg
JiYgIXJpZ2h0UGFkZGluZyAmJiAhYm90dG9tUGFkZGluZyAmJiAhbGVmdFBhZGRpbmcpIHsKKyAg
ICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQpOworICAgICAgICByZW5kZXJWaWV3LT5o
aXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CisgICAgICAgIGlmIChyZXN1bHQuaW5uZXJOb2RlKCkp
CisgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChyZXN1bHQuaW5uZXJOb2RlKCktPmRlcHJlY2F0
ZWRTaGFkb3dBbmNlc3Rvck5vZGUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGlu
ZywgbGVmdFBhZGRpbmcpOworICAgICAgICByZW5kZXJWaWV3LT5oaXRUZXN0KHJlcXVlc3QsIHJl
c3VsdCk7CisgICAgICAgIGNvcHlUb1ZlY3RvcihyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgp
LCBtYXRjaGVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RhdGljTm9kZUxpc3Q6OmFkb3B0KG1h
dGNoZXMpOwogfQogCiB2b2lkIEludGVybmFsczo6ZW1pdEluc3BlY3RvckRpZEJlZ2luRnJhbWUo
KQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDQtMjUgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RhdGljSGFzaFNldE5vZGVMaXN0
IGlzIHVubmVjZXNzYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTUyMTkKKworICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisg
ICAgICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9y
dHMuZGVmLmluOgorCiAyMDEzLTA0LTI1ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFKFBBUlNFRF9TVFlMRV9TSEVFVF9DQUNISU5HKSBh
bmQgbWFrZSBpdCBhbHdheXMtb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9q
L1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJL
aXRFeHBvcnRzLmRlZi5pbgkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dlYktpdC9XZWJL
aXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBAQCBFWFBPUlRTCiAgICAgICAgID8/MENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbkBXZWJDb3JlQEBBQUVAVj8kUGFzc1JlZlB0ckBWTm9kZUBX
ZWJDb3JlQEBAV1RGQEBfTkFCVlN0cmluZ0AzQEBaCiAgICAgICAgID8/ME11dGV4QFdURkBAUUFF
QFhaCiAgICAgICAgID8/MFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRUBYWgorICAgICAgICA/PzFI
aXRUZXN0UmVzdWx0QFdlYkNvcmVAQFFBRUBYWgogICAgICAgICA/PzFNdXRleEBXVEZAQFFBRUBY
WgogICAgICAgICA/PzFUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVAWFoKICAgICAgICAgP2FkZFRl
eHRNYXRjaE1hcmtlckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFBCVlJh
bmdlQDJAX05AWgpAQCAtMTkxLDYgKzE5Miw3IEBAIEVYUE9SVFMKICAgICAgICAgP2dldERhdGEx
NlNsb3dDYXNlQFN0cmluZ0ltcGxAV1RGQEBBQkVQQl9XWFoKICAgICAgICAgP2dldExvY2F0aW9u
QW5kTGVuZ3RoRnJvbVJhbmdlQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQV9OUEFWTm9kZUAyQFBC
VlJhbmdlQDJAQUFJMkBaCiAgICAgICAgID9pbnB1dFRhZ0BIVE1MTmFtZXNAV2ViQ29yZUBAM1ZR
dWFsaWZpZWROYW1lQDJAQgorICAgICAgICA/aXRlbUBTdGF0aWNOb2RlTGlzdEBXZWJDb3JlQEBV
QkVQQVZOb2RlQDJASUBaCiAgICAgICAgID9zZWxlY3RUYWdASFRNTE5hbWVzQFdlYkNvcmVAQDNW
UXVhbGlmaWVkTmFtZUAyQEIKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgICAgICA/Z2V0SGln
aGxpZ2h0QEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUJFWFBBVUhpZ2hsaWdodEAyQEBa
CkBAIC0yMjcsNyArMjI5LDEwIEBAIEVYUE9SVFMKICAgICAgICAgP25leHRTaWJsaW5nQENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2ZpcnN0Q2hpbGRA
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/bGFzdENo
aWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKKyAgICAgICAgP2xl
bmd0aEBTdGF0aWNOb2RlTGlzdEBXZWJDb3JlQEBVQkVJWFoKKyAgICAgICAgP25hbWVkSXRlbUBT
dGF0aWNOb2RlTGlzdEBXZWJDb3JlQEBVQkVQQVZOb2RlQDJAQUJWQXRvbWljU3RyaW5nQFdURkBA
QFoKICAgICAgICAgP25leHRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhY
WgorICAgICAgICA/bm9kZXNGcm9tUmVjdEBJbnRlcm5hbHNAV2ViQ29yZUBAUUJFP0FWPyRQYXNz
UmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RGQEBQQVZEb2N1bWVudEAyQEhISUlJSV9OMTFB
QUhAWgogICAgICAgICA/cHJldmlvdXNAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVA
QFFBRVhYWgogICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJAX0pAWgogICAgICAg
ICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJAX0tAWgpAQCAtMzA0LDcgKzMwOSw2IEBAIEVY
UE9SVFMKICAgICAgICAgPz8xQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBATUFF
QFhaCiAgICAgICAgID9jb250ZXh0RGVzdHJveWVkQENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
QFdlYkNvcmVAQFVBRVhYWgogICAgICAgICA/PzBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBX
ZWJDb3JlQEBRQUVAUEFWU2NyaXB0RXhlY3V0aW9uQ29udGV4dEAxQEBaCi0gICAgICAgID9ub2Rl
c0Zyb21SZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxpc3RA
V2ViQ29yZUBAQFdURkBASEhJSUlJSUBaCiAgICAgICAgID9zZWxlY3Rpb25TdGFydEhhc01hcmtl
ckZvckBFZGl0b3JAV2ViQ29yZUBAUUJFX05XNE1hcmtlclR5cGVARG9jdW1lbnRNYXJrZXJAMkBI
SEBaCiAgICAgICAgID9pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZEBFZGl0b3JAV2Vi
Q29yZUBAUUJFX05YWgogICAgICAgICA/dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmdARWRp
dG9yQFdlYkNvcmVAQFFBRVhYWgpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ5MTY1
KQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTMtMDQtMjUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgU3RhdGljSGFzaFNldE5vZGVMaXN0IGlzIHVubmVjZXNzYXJ5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTUyMTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisgICAgICAgICogV2ViS2l0LnZjcHJvai9XZWJL
aXRFeHBvcnRzLmRlZi5pbjoKKwogMjAxMy0wNC0yNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENvbnNvbGVNZXNzYWdlIHNo
b3VsZCBpbmNsdWRlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXIgd2hlcmUgcG9zc2libGUKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRz
LmRlZi5pbgkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZj
cHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgkod29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw2
IEBAIEVYUE9SVFMKICAgICAgICAgPz8xQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29y
ZUBATUFFQFhaCiAgICAgICAgID9jb250ZXh0RGVzdHJveWVkQENvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyQFdlYkNvcmVAQFVBRVhYWgogICAgICAgICA/PzBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlckBXZWJDb3JlQEBRQUVAUEFWU2NyaXB0RXhlY3V0aW9uQ29udGV4dEAxQEBaCi0gICAgICAg
ID9ub2Rlc0Zyb21SZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9k
ZUxpc3RAV2ViQ29yZUBAQFdURkBASEhJSUlJSUBaCiAgICAgICAgID9zZWxlY3Rpb25TdGFydEhh
c01hcmtlckZvckBFZGl0b3JAV2ViQ29yZUBAUUJFX05XNE1hcmtlclR5cGVARG9jdW1lbnRNYXJr
ZXJAMkBISEBaCiAgICAgICAgID9pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZEBFZGl0
b3JAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tp
bmdARWRpdG9yQFdlYkNvcmVAQFFBRVhYWgpJbmRleDogU291cmNlL2F1dG90b29scy9zeW1ib2xz
LmZpbHRlcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCShy
ZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDggQEAgX1pOSzdXZWJDb3JlNUZyYW1lMjV0cmFja2Vk
UmVwYWludFJlY3RzQQogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pT
RE9NR2xvYmFsT2JqZWN0RVBOM1dURjExQXJyYXlCdWZmZXJFOwogX1pON1dlYkNvcmUxMUZyYW1l
TG9hZGVyNnJlbG9hZEViOwogX1pON1dlYkNvcmUxM3RvQXJyYXlCdWZmZXJFTjNKU0M3SlNWYWx1
ZUU7CitfWk43V2ViQ29yZTEzSGl0VGVzdFJlc3VsdEMxRVJLTlNfMTFMYXlvdXRQb2ludEVqampq
OworX1pON1dlYkNvcmUxNUhpdFRlc3RMb2NhdGlvbjEycmVjdEZvclBvaW50RVJLTlNfMTFMYXlv
dXRQb2ludEVqampqOwogX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVF
UktOM1dURjZTdHJpbmdFOwogX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUQxRXY7
CiBfWk43V2ViQ29yZTI0U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uMTZoYXNTaGFkb3dFbGVtZW50
RVBLTlNfMTBTaGFkb3dSb290RTsKQEAgLTMwMSw2ICszMDMsMTAgQEAgX1pON1dlYkNvcmUxMnRv
VGltZVJhbmdlc0VOM0pTQzdKU1ZhbHVlRQogX1pON1dlYkNvcmUxNHRvRmxvYXQzMkFycmF5RU4z
SlNDN0pTVmFsdWVFOwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pT
RE9NR2xvYmFsT2JqZWN0RVBOU18xMFRpbWVSYW5nZXNFOwogX1pOSzdXZWJDb3JlMTBUaW1lUmFu
Z2VzN25lYXJlc3RFZDsKK19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE5cmVjdEJhc2VkVGVz
dFJlc3VsdEV2OworX1pOSzdXZWJDb3JlNE5vZGUyOGRlcHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5v
ZGVFdjsKK19aTks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampqOworX1pU
Vk43V2ViQ29yZTE0U3RhdGljTm9kZUxpc3RFOwogCiBsb2NhbDoKIF9aKjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199913</attachid>
            <date>2013-04-27 13:44:47 -0700</date>
            <delta_ts>2013-04-27 14:14:44 -0700</delta_ts>
            <desc>Another fixed Windows build</desc>
            <filename>bug-115219-20130427134406.patch</filename>
            <type>text/plain</type>
            <size>41678</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEzLTA0LTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFN0YXRpY0hhc2hTZXROb2RlTGlz
dCBpcyB1bm5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE1MjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KKwor
ICAgICAgICBNb3ZlZCBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCBpbnRvIEludGVybmFsczo6bm9k
ZXNGcm9tUmVjdCBwZXIKKyAgICAgICAgaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29t
L2Nocm9taXVtL2JsaW5rLysvNzgyMDdjNWMzNDM4M2ZiYjgwN2JiOTM0N2RlYjY3MTY4ZjA5YmIw
NC4KKworICAgICAgICBBbHNvIG1hZGUgVG91Y2hBZGp1c3RtZW50IGZ1bmN0aW9ucyB1c2UgSGFz
aExpc3RTZXQgZGlyZWN0bHkgaW5zdGVhZCBvZiB3cmFwcGluZyBpdCBpbnNpZGUKKyAgICAgICAg
YSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Qgc2luY2UgdGhlcmUgd2FzIG5vIG5lZWQgdG8gdXNlIHRo
ZSBsYXR0ZXIuCisKKyAgICAgICAgV2l0aCB0aGVzZSB0d28gY2hhbmdlcywgSSBkZWxldGVkIFN0
YXRpY0hhc2hTZXROb2RlTGlzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3Qu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmJlc3RDbGlja2FibGVOb2RlRm9yVG91Y2hQb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmJlc3RDb250ZXh0TWVudU5vZGVGb3JUb3VjaFBvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YmVzdFpvb21hYmxlQXJlYUZvclRv
dWNoUG9pbnQpOgorICAgICAgICAqIHBhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRvdWNoQWRqdXN0bWVudDo6Y29tcGlsZVN1YnRhcmdldExpc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6VG91Y2hBZGp1c3RtZW50Ojpjb21waWxlWm9vbWFibGVTdWJ0YXJnZXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OmZpbmRCZXN0Q2xpY2thYmxlQ2FuZGlkYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OmZpbmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6ZmluZEJlc3Rab29tYWJsZUFyZWEpOgorICAgICAgICAqIHBhZ2UvVG91Y2hBZGp1c3RtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3QpOgorCiAyMDEzLTA0
LTI1ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHlsZVBy
b3BlcnR5U2V0OjpnZXRQcm9wZXJ0eVNob3J0aGFuZCgpIHNob3VsZCByZXR1cm4gYSBTdHJpbmcu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEyMzIsNyArMTIzMiw2IEBA
IHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vU2VsZWN0b3JRdWVyeS5jcHAKICAgICBkb20v
U2hhZG93Um9vdC5jcHAKICAgICBkb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKLSAgICBkb20vU3Rh
dGljSGFzaFNldE5vZGVMaXN0LmNwcAogICAgIGRvbS9TdGF0aWNOb2RlTGlzdC5jcHAKICAgICBk
b20vU3RyaW5nQ2FsbGJhY2suY3BwCiAgICAgZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTMwNzMsOCArMzA3
Myw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NpbXVsYXRl
ZENsaWNrT3B0aW9ucy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmggXAotCVNvdXJjZS9X
ZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9k
b20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNO
b2RlTGlzdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNOb2RlTGlzdC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vU3RyaW5nQ2FsbGJhY2suY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQko
cmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBj
b3B5KQpAQCAtNDU0LDcgKzQ1NCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9Ob2RlUmVuZGVy
aW5nVHJhdmVyc2FsLmNwcCBcCiAgICAgZG9tL05vZGVUcmF2ZXJzYWwuY3BwIFwKICAgICBkb20v
Tm90YXRpb24uY3BwIFwKLSAgICBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCBcCiAgICAg
ZG9tL092ZXJmbG93RXZlbnQuY3BwIFwKICAgICBkb20vUGFnZVRyYW5zaXRpb25FdmVudC5jcHAg
XAogICAgIGRvbS9QZW5kaW5nU2NyaXB0LmNwcCBcCkBAIC0xNjgzLDcgKzE2ODIsNiBAQCBIRUFE
RVJTICs9IFwKICAgICBkb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIFwKICAgICBkb20vTm9k
ZVRyYXZlcnNhbC5oIFwKICAgICBkb20vTm90YXRpb24uaCBcCi0gICAgZG9tL1N0YXRpY0hhc2hT
ZXROb2RlTGlzdC5oIFwKICAgICBkb20vT3ZlcmZsb3dFdmVudC5oIFwKICAgICBkb20vUGFnZVRy
YW5zaXRpb25FdmVudC5oIFwKICAgICBkb20vUG9zaXRpb24uaCBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYsNyBAQCBfX1pON1dlYkNvcmUxM0hUVFBI
ZWFkZXJNYXBDMUV2CiBfX1pON1dlYkNvcmUxM0hUVFBIZWFkZXJNYXBEMUV2CiBfX1pON1dlYkNv
cmUxM0hpdFRlc3RSZXN1bHRDMUVSS1MwXwogX19aTjdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0QzFF
UktOU18xMUxheW91dFBvaW50RQorX19aTjdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0QzFFUktOU18x
MUxheW91dFBvaW50RWpqamoKIF9fWk43V2ViQ29yZTEzSGl0VGVzdFJlc3VsdEQxRXYKIF9fWk43
V2ViQ29yZTEzSWRlbnRpZmllclJlcDNnZXRFUEtjCiBfX1pON1dlYkNvcmUxM0lkZW50aWZpZXJS
ZXAzZ2V0RWkKQEAgLTQ2Myw2ICs0NjQsNyBAQCBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4
dDlkcmF3SW1hZ2VFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDlzZXRTaGFkb3dFUktO
U185RmxvYXRTaXplRWZSS05TXzVDb2xvckVOU18xMENvbG9yU3BhY2VFCiBfX1pON1dlYkNvcmUx
NUdyYXBoaWNzQ29udGV4dDl0cmFuc2xhdGVFZmYKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250
ZXh0RDFFdgorX19aTjdXZWJDb3JlMTVIaXRUZXN0TG9jYXRpb24xMnJlY3RGb3JQb2ludEVSS05T
XzExTGF5b3V0UG9pbnRFampqagogX19aTjdXZWJDb3JlMTVKU0RPTVdpbmRvd0Jhc2U4Y29tbW9u
Vk1FdgogX19aTjdXZWJDb3JlMTVQbGF0Zm9ybUNBTGF5ZXIxOHNldEdlb21ldHJ5RmxpcHBlZEVi
CiBfX1pON1dlYkNvcmUxNVByb3RlY3Rpb25TcGFjZUMxRVJLTjNXVEY2U3RyaW5nRWlOU18yNVBy
b3RlY3Rpb25TcGFjZVNlcnZlclR5cGVFUzRfTlNfMzVQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNh
dGlvblNjaGVtZUUKQEAgLTEzMTIsNiArMTMxNCw3IEBAIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RS
ZXN1bHQxNmFic29sdXRlTWUKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxNmFsdERpc3Bs
YXlTdHJpbmdFdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE3aXNDb250ZW50RWRpdGFi
bGVFdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE4dGl0bGVEaXNwbGF5U3RyaW5nRXYK
K19fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxOXJlY3RCYXNlZFRlc3RSZXN1bHRFdgogX19a
Tks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDVpbWFnZUV2CiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0
UmVzdWx0NXRpdGxlRVJOU18xM1RleHREaXJlY3Rpb25FCiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0
UmVzdWx0OWltYWdlUmVjdEV2CkBAIC0xNDc0LDYgKzE0NzcsNyBAQCBfX1pOSzdXZWJDb3JlNE5v
ZGUxMXRleHRDb250ZW50RWIKIF9fWk5LN1dlYkNvcmU0Tm9kZTEzb3duZXJEb2N1bWVudEV2CiBf
X1pOSzdXZWJDb3JlNE5vZGUxNGlzRGVzY2VuZGFudE9mRVBLUzBfCiBfX1pOSzdXZWJDb3JlNE5v
ZGUxOGdldFN1YnJlc291cmNlVVJMc0VSTjNXVEYxMUxpc3RIYXNoU2V0SU5TXzRLVVJMRUxtMjU2
RU5TXzhLVVJMSGFzaEVFRQorX19aTks3V2ViQ29yZTROb2RlMjhkZXByZWNhdGVkU2hhZG93QW5j
ZXN0b3JOb2RlRXYKIF9fWk5LN1dlYkNvcmU0Tm9kZTMxbnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVD
aGlsZHJlbkV2CiBfX1pOSzdXZWJDb3JlNE5vZGU5bm9kZUluZGV4RXYKIF9fWk5LN1dlYkNvcmU0
UGFnZTEwcGx1Z2luRGF0YUV2CkBAIC0xNTUxLDcgKzE1NTUsNiBAQCBfX1pOSzdXZWJDb3JlN0lu
dFJlY3RjdjZDR1JlY3RFdgogX19aTks3V2ViQ29yZTdSdW5Mb29wOVRpbWVyQmFzZThpc0FjdGl2
ZUV2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTFjb21wbGV0ZVVSTEVSS04zV1RGNlN0cmluZ0UK
IF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM2F4T2JqZWN0Q2FjaGVFdgotX19aTks3V2ViQ29yZThE
b2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampqCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTRn
ZXRFbGVtZW50QnlJZEVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERvY3Vt
ZW50MzFkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nRVJLTjNXVEY2U3RyaW5nRQogX19a
Tks3V2ViQ29yZThEb2N1bWVudDRib2R5RXYKQEAgLTE2MDAsNiArMTYwMyw3IEBAIF9fWk5LN1dl
YkNvcmU5UmVuZGVyQm94MTJjbGllbnRIZWlnaHRFdgogX19aTks3V2ViQ29yZTlSZW5kZXJCb3gx
MWNsaWVudFdpZHRoRXYKIF9fWlRWTjdXZWJDb3JlMTJDaHJvbWVDbGllbnRFCiBfX1pUVk43V2Vi
Q29yZTE0TG9hZGVyU3RyYXRlZ3lFCitfX1pUVk43V2ViQ29yZTE0U3RhdGljTm9kZUxpc3RFCiBf
X1pUVk43V2ViQ29yZTE1U3RvcmFnZVN0cmF0ZWd5RQogX19aVFZON1dlYkNvcmUxNkRhdGFiYXNl
U3RyYXRlZ3lFCiBfX1pUVk43V2ViQ29yZTE2SWNvbkRhdGFiYXNlQmFzZUUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTI3Myw4ICs1MjczLDYgQEAKIAkJQ0U3QjJEQjQx
NTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIwMTU4NkFCQUQw
MDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKi87IH07CiAJCUNFN0Iy
REI1MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIxMTU4NkFCQUQw
MDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTdCMkRCNjE1ODZBQkFEMDA5OEIzRkEg
LyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3QjJEQjIxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZS5tbSAqLzsgfTsKLQkJQ0VBMzk0OUMxMUQ0NUNEQTAwMzA5NENGIC8q
IFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRUEzOTQ5QTExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNl
dE5vZGVMaXN0LmNwcCAqLzsgfTsKLQkJQ0VBMzk0OUQxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRp
Y0hhc2hTZXROb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0VBMzk0OUIxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlz
dC5oICovOyB9OwogCQlDRUNBREZDNjE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJu
YXRpdmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0VDQURGQzIxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmNwcCAqLzsg
fTsKIAkJQ0VDQURGQzcxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUNBREZDMzE1
Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRUNBREZDODE1Mzc3OEZGMDBFMzcw
NjggLyogRGljdGF0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRUNBREZDNDE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQ29t
bWFuZC5jcHAgKi87IH07CkBAIC0xMjA2Miw4ICsxMjA2MCw2IEBACiAJCUNFN0IyREIwMTU4NkFC
QUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIu
bW07IHBhdGggPSBtYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRTdCMkRCMTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZS5oOyBwYXRoID0gbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTdCMkRCMjE1ODZBQkFEMDA5OEIz
RkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOyBwYXRoID0gbWFj
L1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQ0VBMzk0OUExMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGF0aWNIYXNoU2V0Tm9kZUxp
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRUEzOTQ5QjExRDQ1Q0RBMDAz
MDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRUNBREZDMjE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQWx0ZXJu
YXRpdmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUNBREZDMzE1Mzc3OEZG
MDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGljdGF0aW9uQWx0ZXJuYXRpdmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0VDQURGQzQxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQ29tbWFuZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDU2MCw4ICsyMDU1Niw2IEBACiAJ
CQkJMzE3NDFBQUIxNjYzNUU0NTAwOEE1QjdFIC8qIFNpbXVsYXRlZENsaWNrT3B0aW9ucy5oICov
LAogCQkJCUQwMUEyN0FCMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmNwcCAq
LywKIAkJCQlEMDFBMjdBQzEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5oICov
LAotCQkJCUNFQTM5NDlBMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Qu
Y3BwICovLAotCQkJCUNFQTM5NDlCMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9k
ZUxpc3QuaCAqLywKIAkJCQlCQzdGQTYyQzBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxp
c3QuY3BwICovLAogCQkJCUJDN0ZBNjJCMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNOb2RlTGlz
dC5oICovLAogCQkJCTgxMDJDNTg3MTMyNUJCMTEwMERERTY3QSAvKiBTdHJpbmdDYWxsYmFjay5j
cHAgKi8sCkBAIC0yMzUwNyw3ICsyMzUwMSw2IEBACiAJCQkJOTdCQzZBNUQxNTA1RjA4MTAwMUI3
NEFDIC8qIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTJFNkU1QTBDQzU1MjEzMDA0QTIwNjIgLyogU1FMVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzRjE5OTYzMDgyNDVFNTkwMDFFOUFCQyAvKiBTU0xLZXlHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUNFQTM5NDlEMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0ZBNjJEMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0
aWNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVBRkIzNTAxMTUxNTFBNzAwQjA0NUNC
IC8qIFN0ZXBSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCRTM3RTAwREFFRTAwRTAwMTA4
NUZDIC8qIFN0b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLywKQEAgLTI2NTc0LDcgKzI2NTY3LDYg
QEAKIAkJCQk5N0JDNkE1QTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkU2RTU5MENDNTUyMTMwMDRBMjA2MiAvKiBTUUxWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUFFNjA4MjQ1RTU5MDAxRTlBQkMgLyogU1NM
S2V5R2VuZXJhdG9yTWFjLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUNFQTM5NDlDMTFENDVDREEw
MDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM3RkE2MkUwRDFGMEVGRjAwREIyMkE5IC8qIFN0YXRpY05vZGVMaXN0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1QUZCMzRGMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTFFM0Y5QzcwREEwNTlEQzAwMjUwOTExIC8qIFN0b3JhZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAJKHJldmlzaW9u
IDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMCw3ICsxMzAsNiBAQAogI2luY2x1ZGUgIlNlbGVjdG9yUXVlcnkuY3BwIgog
I2luY2x1ZGUgIlNoYWRvd1Jvb3QuY3BwIgogI2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuY3Bw
IgotI2luY2x1ZGUgIlN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAiCiAjaW5jbHVkZSAiU3RhdGlj
Tm9kZUxpc3QuY3BwIgogI2luY2x1ZGUgIlN0eWxlRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiU3R5
bGVkRWxlbWVudC5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDE0
OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1Niw3ICsxNTYsNiBAQAogI2luY2x1ZGUgIlNlbGVjdG9yUXVlcnkuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJTdGF0aWNI
YXNoU2V0Tm9kZUxpc3QuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2V0LmgiCiAjaW5jbHVk
ZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgpAQCAt
MTQwNyw1OCArMTQwNiw2IEBAIFN0cmluZyBEb2N1bWVudDo6c3VnZ2VzdGVkTUlNRVR5cGUoKSBj
b24KICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLS8vIEZJWE1FOiBXZSBuZWVkIHRvIGRpc2N1
c3MgdGhlIERPTSBBUEkgaGVyZSBhdCBzb21lIHBvaW50LiBJZGVhczoKLS8vICogbWFraW5nIGl0
IHJlY2VpdmUgYSByZWN0IGFzIHBhcmFtZXRlciwgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHcs
IGgpOwotLy8gKiBtYWtpbmcgaXQgcmVjZWl2ZSB0aGUgZXhwYWRpbmcgc2l6ZSBvZiBlYWNoIGRp
cmVjdGlvbiBzZXBhcmF0ZWx5LAotLy8gICBpLmUuIG5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wU2l6
ZSwgcmlnaHRTaXplLCBib3R0b21TaXplLCBsZWZ0U2l6ZSk7Ci1QYXNzUmVmUHRyPE5vZGVMaXN0
PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2ln
bmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFk
ZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVz
dFR5cGUgaGl0VHlwZSkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogU2hhcmUgY29kZSBiZXR3ZWVu
IHRoaXMsIGVsZW1lbnRGcm9tUG9pbnQgYW5kIGNhcmV0UmFuZ2VGcm9tUG9pbnQuCi0gICAgaWYg
KCFyZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBGcmFtZSogZnJhbWUgPSB0aGlz
LT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiAwOwotICAgIEZyYW1l
VmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKLSAgICBpZiAoIWZyYW1lVmlldykKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBmbG9hdCB6b29tRmFjdG9yID0gZnJhbWUtPnBhZ2Vab29t
RmFjdG9yKCk7Ci0gICAgTGF5b3V0UG9pbnQgcG9pbnQgPSByb3VuZGVkTGF5b3V0UG9pbnQoRmxv
YXRQb2ludChjZW50ZXJYICogem9vbUZhY3RvciArIHZpZXcoKS0+c2Nyb2xsWCgpLCBjZW50ZXJZ
ICogem9vbUZhY3RvciArIHZpZXcoKS0+c2Nyb2xsWSgpKSk7Ci0KLSAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0KGhpdFR5cGUpOwotCi0gICAgLy8gV2hlbiBpZ25vcmVDbGlwcGluZyBpcyBmYWxz
ZSwgdGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9mIHRo
ZSB2aWV3cG9ydC4KLSAgICBpZiAoIXJlcXVlc3QuaWdub3JlQ2xpcHBpbmcoKSAmJiAhZnJhbWVW
aWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEhpdFRlc3RMb2NhdGlvbjo6cmVj
dEZvclBvaW50KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcs
IGxlZnRQYWRkaW5nKSkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gUGFzc2luZyBhIHpl
cm8gcGFkZGluZyB3aWxsIHRyaWdnZXIgYSByZWN0IGhpdCB0ZXN0LCBob3dldmVyIGZvciB0aGUg
cHVycG9zZXMgb2Ygbm9kZXNGcm9tUmVjdCwKLSAgICAvLyB3ZSBzcGVjaWFsIGhhbmRsZSB0aGlz
IGNhc2UgaW4gb3JkZXIgdG8gcmV0dXJuIGEgdmFsaWQgTm9kZUxpc3QuCi0gICAgaWYgKCF0b3BQ
YWRkaW5nICYmICFyaWdodFBhZGRpbmcgJiYgIWJvdHRvbVBhZGRpbmcgJiYgIWxlZnRQYWRkaW5n
KSB7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50KTsKLSAgICAgICAgcmV0dXJu
IGhhbmRsZVplcm9QYWRkaW5nKHJlcXVlc3QsIHJlc3VsdCk7Ci0gICAgfQotCi0gICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFk
ZGluZywgbGVmdFBhZGRpbmcpOwotICAgIHJlbmRlclZpZXcoKS0+aGl0VGVzdChyZXF1ZXN0LCBy
ZXN1bHQpOwotCi0gICAgcmV0dXJuIFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0
LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3Vt
ZW50OjpoYW5kbGVaZXJvUGFkZGluZyhjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlc3VsdCYgcmVzdWx0KSBjb25zdAotewotICAgIHJlbmRlclZpZXcoKS0+aGl0VGVzdChy
ZXF1ZXN0LCByZXN1bHQpOwotCi0gICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsK
LSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgbm9kZSA9IG5vZGUtPmRl
cHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5vZGUoKTsKLSAgICBMaXN0SGFzaFNldDxSZWZQdHI8Tm9k
ZT4gPiBsaXN0OwotICAgIGxpc3QuYWRkKG5vZGUpOwotICAgIHJldHVybiBTdGF0aWNIYXNoU2V0
Tm9kZUxpc3Q6OmFkb3B0KGxpc3QpOwotfQotCiBFbGVtZW50KiBEb2N1bWVudDo6ZWxlbWVudEZy
b21Qb2ludChpbnQgeCwgaW50IHkpIGNvbnN0CiB7CiAgICAgaWYgKCFyZW5kZXJlcigpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTksMjAgKzM1OSw2IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgY3NzR3JpZExheW91dEVuYWJsZWQoKSBjb25zdDsKIAotICAgIC8qKgot
ICAgICAqIFJldHJpZXZlIGFsbCBub2RlcyB0aGF0IGludGVyc2VjdCBhIHJlY3QgaW4gdGhlIHdp
bmRvdydzIGRvY3VtZW50LCB1bnRpbCBpdCBpcyBmdWxseSBlbmNsb3NlZCBieQotICAgICAqIHRo
ZSBib3VuZGFyaWVzIG9mIGEgbm9kZS4KLSAgICAgKgotICAgICAqIEBwYXJhbSBjZW50ZXJYIHgg
cmVmZXJlbmNlIGZvciB0aGUgcmVjdGFuZ2xlIGluIENTUyBwaXhlbHMKLSAgICAgKiBAcGFyYW0g
Y2VudGVyWSB5IHJlZmVyZW5jZSBmb3IgdGhlIHJlY3RhbmdsZSBpbiBDU1MgcGl4ZWxzCi0gICAg
ICogQHBhcmFtIHRvcFBhZGRpbmcgSG93IG11Y2ggdG8gZXhwYW5kIHRoZSB0b3Agb2YgdGhlIHJl
Y3RhbmdsZQotICAgICAqIEBwYXJhbSByaWdodFBhZGRpbmcgSG93IG11Y2ggdG8gZXhwYW5kIHRo
ZSByaWdodCBvZiB0aGUgcmVjdGFuZ2xlCi0gICAgICogQHBhcmFtIGJvdHRvbVBhZGRpbmcgSG93
IG11Y2ggdG8gZXhwYW5kIHRoZSBib3R0b20gb2YgdGhlIHJlY3RhbmdsZQotICAgICAqIEBwYXJh
bSBsZWZ0UGFkZGluZyBIb3cgbXVjaCB0byBleHBhbmQgdGhlIGxlZnQgb2YgdGhlIHJlY3Rhbmds
ZQotICAgICAqLwotICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoaW50IGNl
bnRlclgsIGludCBjZW50ZXJZLAotICAgICAgICB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25l
ZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRk
aW5nLAotICAgICAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUg
PSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0
VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCkgY29uc3Q7CiAgICAgRWxlbWVudCog
ZWxlbWVudEZyb21Qb2ludChpbnQgeCwgaW50IHkpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8UmFu
Z2U+IGNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5KTsKIApAQCAtMTI2NCw4ICsxMjUw
LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2VhbWxlc3NQYXJlbnRVcGRhdGVkU3R5bGVzaGVl
dHMoKTsKIAotICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGhhbmRsZVplcm9QYWRkaW5nKGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYpIGNvbnN0OwotCiAgICAgdm9pZCBsb2Fk
RXZlbnREZWxheVRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+Kik7CiAKICAgICB2b2lkIHBlbmRp
bmdUYXNrc1RpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcAkocmV2aXNpb24gMTQ5MTY1KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiU3RhdGljSGFzaFNldE5vZGVMaXN0LmgiCi0KLSNpbmNsdWRlICJFbGVtZW50
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU3RhdGljSGFzaFNldE5vZGVMaXN0OjpTdGF0
aWNIYXNoU2V0Tm9kZUxpc3QoTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4mIG5vZGVzKQotewot
ICAgIG1fbm9kZXMuc3dhcChub2Rlcyk7Ci19Ci0KLVN0YXRpY0hhc2hTZXROb2RlTGlzdDo6U3Rh
dGljSGFzaFNldE5vZGVMaXN0KCkKLXsKLX0KLQotU3RhdGljSGFzaFNldE5vZGVMaXN0Ojp+U3Rh
dGljSGFzaFNldE5vZGVMaXN0KCkKLXsKLX0KLQotdW5zaWduZWQgU3RhdGljSGFzaFNldE5vZGVM
aXN0OjpsZW5ndGgoKSBjb25zdAotewotICAgIHJldHVybiBtX25vZGVzLnNpemUoKTsKLX0KLQot
Tm9kZSogU3RhdGljSGFzaFNldE5vZGVMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAot
ewotICAgIGlmIChpbmRleCA8ICh1bnNpZ25lZCkgbV9ub2Rlcy5zaXplKCkpIHsKLSAgICAgICAg
TGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ub2Rlcy5i
ZWdpbigpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGNvdW50ID0gMDsgY291bnQgPCBpbmRleDsg
KytpdCwgKytjb3VudCkgeyB9Ci0gICAgICAgIHJldHVybiAoKml0KS5nZXQoKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gMDsKLX0KLQotTm9kZSogU3RhdGljSGFzaFNldE5vZGVMaXN0OjpuYW1lZEl0
ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0Ci17Ci0gICAgTGlzdEhhc2hT
ZXQ8UmVmUHRyPE5vZGU+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ub2Rlcy5iZWdpbigpOwot
ICAgIExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX25v
ZGVzLmVuZCgpOwotICAgIGZvciAoIDsgaXQgIT0gZW5kIDsgKytpdCkgewotICAgICAgICBOb2Rl
KiBub2RlID0gKCppdCkuZ2V0KCk7Ci0gICAgICAgIGlmICh0b0VsZW1lbnQobm9kZSktPmdldElk
QXR0cmlidXRlKCkgPT0gZWxlbWVudElkKQotICAgICAgICAgICAgcmV0dXJuIG5vZGU7Ci0gICAg
fQotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmgJKHJldmlzaW9uIDE0OTE2
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICogQ29weXJpZ2h0IChD
KSAyMDEwIEFudG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU3RhdGlj
SGFzaFNldE5vZGVMaXN0X2gKLSNkZWZpbmUgU3RhdGljSGFzaFNldE5vZGVMaXN0X2gKLQotI2lu
Y2x1ZGUgIk5vZGVMaXN0LmgiCi0jaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgTm9kZTsKLQotY2xhc3MgU3RhdGljSGFzaFNldE5vZGVMaXN0
IDogcHVibGljIE5vZGVMaXN0IHsKLXB1YmxpYzoKLSAgICBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Qo
KTsKLSAgICB+U3RhdGljSGFzaFNldE5vZGVMaXN0KCk7Ci0KLSAgICAvLyBBZG9wdHMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBub2RlcyBMaXN0SGFzaFNldC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IGFkb3B0KGNvbnN0IExpc3RIYXNoU2V0PFJlZlB0cjxOb2Rl
PiA+JiBub2RlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdChjb25zdF9jYXN0PExpc3RI
YXNoU2V0PFJlZlB0cjxOb2RlPiA+Jj4obm9kZXMpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IGFkb3B0KExpc3RIYXNoU2V0PFJlZlB0cjxO
b2RlPiA+JiBub2RlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RhdGlj
SGFzaFNldE5vZGVMaXN0KG5vZGVzKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQg
aW5kZXgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgTm9kZSogbmFtZWRJdGVtKGNvbnN0
IEF0b21pY1N0cmluZyYpIGNvbnN0IE9WRVJSSURFOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0
IFN0YXRpY0hhc2hTZXROb2RlTGlzdChMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiYgbm9kZXMp
OwotCi0gICAgTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4gbV9ub2RlczsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFN0YXRpY0hhc2hTZXROb2RlTGlzdF9oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAxNDkxNjUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc5LDcgKzc5LDYgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKICNpbmNsdWRlICJTcGF0aWFsTmF2aWdhdGlvbi5oIgotI2luY2x1ZGUgIlN0YXRpY0hh
c2hTZXROb2RlTGlzdC5oIgogI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRl
ICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKQEAgLTI4MzUsMTMgKzI4
MzQsMTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmJlc3RDbGlja2FibGVOb2RlRm9yVAogICAgIEhp
dFRlc3RSZXN1bHQgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCBI
aXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCB0b3VjaFJh
ZGl1cyk7CiAKICAgICBJbnRSZWN0IHRvdWNoUmVjdCh0b3VjaENlbnRlciAtIHRvdWNoUmFkaXVz
LCB0b3VjaFJhZGl1cyArIHRvdWNoUmFkaXVzKTsKLSAgICBSZWZQdHI8U3RhdGljSGFzaFNldE5v
ZGVMaXN0PiBub2RlTGlzdCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJl
Y3RCYXNlZFRlc3RSZXN1bHQoKSk7CiAKICAgICAvLyBGSVhNRTogU2hvdWxkIGJlIGFibGUgdG8g
aGFuZGxlIHRhcmdldE5vZGUgYmVpbmcgYSBzaGFkb3cgRE9NIG5vZGUgdG8gYXZvaWQgcGVyZm9y
bWluZyB1bmNlc3NhcnkgaGl0IHRlc3RzCiAgICAgLy8gaW4gdGhlIGNhc2Ugd2hlcmUgZnVydGhl
ciBwcm9jZXNzaW5nIG9uIHRoZSBub2RlIGlzIHJlcXVpcmVkLiBSZXR1cm5pbmcgdGhlIHNoYWRv
dyBhbmNlc3RvciBwcmV2ZW50cyBhCiAgICAgLy8gcmVncmVzc2lvbiBpbiB0b3VjaGFkanVzdG1l
bnQvaHRtbC1sYWJlbC5odG1sLiBTb21lIHJlZmluZW1lbnQgaXMgcmVxdWlyZWQgdG8gdGVzdGlu
Zy9pbnRlcm5hbHMgdG8KICAgICAvLyBoYW5kbGUgdGFyZ2V0Tm9kZSBiZWluZyBhIHNoYWRvdyBE
T00gbm9kZS4gCi0gICAgYm9vbCBzdWNjZXNzID0gZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUo
dGFyZ2V0Tm9kZSwgdGFyZ2V0UG9pbnQsIHRvdWNoQ2VudGVyLCB0b3VjaFJlY3QsICpub2RlTGlz
dC5nZXQoKSk7CisgICAgYm9vbCBzdWNjZXNzID0gZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUo
dGFyZ2V0Tm9kZSwgdGFyZ2V0UG9pbnQsIHRvdWNoQ2VudGVyLCB0b3VjaFJlY3QsIHJlc3VsdC5y
ZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwogICAgIGlmIChzdWNjZXNzICYmIHRhcmdldE5vZGUpCiAg
ICAgICAgIHRhcmdldE5vZGUgPSB0YXJnZXROb2RlLT5kZXByZWNhdGVkU2hhZG93QW5jZXN0b3JO
b2RlKCk7CiAgICAgcmV0dXJuIHN1Y2Nlc3M7CkBAIC0yODUzLDggKzI4NTEsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6YmVzdENvbnRleHRNZW51Tm9kZUZvCiAgICAgSGl0VGVzdFJlc3VsdCByZXN1
bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpS
ZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIHRvdWNoUmFkaXVzKTsKIAogICAgIElu
dFJlY3QgdG91Y2hSZWN0KHRvdWNoQ2VudGVyIC0gdG91Y2hSYWRpdXMsIHRvdWNoUmFkaXVzICsg
dG91Y2hSYWRpdXMpOwotICAgIFJlZlB0cjxTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IG5vZGVMaXN0
ID0gU3RhdGljSGFzaFNldE5vZGVMaXN0OjphZG9wdChyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3Vs
dCgpKTsKLSAgICByZXR1cm4gZmluZEJlc3RDb250ZXh0TWVudUNhbmRpZGF0ZSh0YXJnZXROb2Rl
LCB0YXJnZXRQb2ludCwgdG91Y2hDZW50ZXIsIHRvdWNoUmVjdCwgKm5vZGVMaXN0LmdldCgpKTsK
KyAgICByZXR1cm4gZmluZEJlc3RDb250ZXh0TWVudUNhbmRpZGF0ZSh0YXJnZXROb2RlLCB0YXJn
ZXRQb2ludCwgdG91Y2hDZW50ZXIsIHRvdWNoUmVjdCwgcmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1
bHQoKSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9yVG91Y2hQ
b2ludChjb25zdCBJbnRQb2ludCYgdG91Y2hDZW50ZXIsIGNvbnN0IEludFNpemUmIHRvdWNoUmFk
aXVzLCBJbnRSZWN0JiB0YXJnZXRBcmVhLCBOb2RlKiYgdGFyZ2V0Tm9kZSkKQEAgLTI4NjMsOCAr
Mjg2MCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9yVG8KICAgICBI
aXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwg
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRl
c3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQsIHRvdWNoUmFkaXVzKTsKIAogICAgIElu
dFJlY3QgdG91Y2hSZWN0KHRvdWNoQ2VudGVyIC0gdG91Y2hSYWRpdXMsIHRvdWNoUmFkaXVzICsg
dG91Y2hSYWRpdXMpOwotICAgIFJlZlB0cjxTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IG5vZGVMaXN0
ID0gU3RhdGljSGFzaFNldE5vZGVMaXN0OjphZG9wdChyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3Vs
dCgpKTsKLSAgICByZXR1cm4gZmluZEJlc3Rab29tYWJsZUFyZWEodGFyZ2V0Tm9kZSwgdGFyZ2V0
QXJlYSwgdG91Y2hDZW50ZXIsIHRvdWNoUmVjdCwgKm5vZGVMaXN0LmdldCgpKTsKKyAgICByZXR1
cm4gZmluZEJlc3Rab29tYWJsZUFyZWEodGFyZ2V0Tm9kZSwgdGFyZ2V0QXJlYSwgdG91Y2hDZW50
ZXIsIHRvdWNoUmVjdCwgcmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7CiB9CiAKIGJvb2wg
RXZlbnRIYW5kbGVyOjphZGp1c3RHZXN0dXJlUG9zaXRpb24oY29uc3QgUGxhdGZvcm1HZXN0dXJl
RXZlbnQmIGdlc3R1cmVFdmVudCwgSW50UG9pbnQmIGFkanVzdGVkUG9pbnQpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCShyZXZpc2lvbiAxNDkxNjUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzMyw3ICsyMzMsNyBAQCBzdGF0aWMgaW5saW5lIE5vZGUqIHBhcmVudFNoYWRvd0hvc3RPck93
CiB9CiAKIC8vIENvbXBpbGVzIGEgbGlzdCBvZiBzdWJ0YXJnZXRzIG9mIGFsbCB0aGUgcmVsZXZh
bnQgdGFyZ2V0IG5vZGVzLgotdm9pZCBjb21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlz
dCYgaW50ZXJzZWN0ZWROb2RlcywgU3VidGFyZ2V0R2VvbWV0cnlMaXN0JiBzdWJ0YXJnZXRzLCBO
b2RlRmlsdGVyIG5vZGVGaWx0ZXIsIEFwcGVuZFN1YnRhcmdldHNGb3JOb2RlIGFwcGVuZFN1YnRh
cmdldHNGb3JOb2RlKQordm9pZCBjb21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdEhh
c2hTZXQmIGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdldEdlb21ldHJ5TGlzdCYgc3VidGFyZ2V0
cywgTm9kZUZpbHRlciBub2RlRmlsdGVyLCBBcHBlbmRTdWJ0YXJnZXRzRm9yTm9kZSBhcHBlbmRT
dWJ0YXJnZXRzRm9yTm9kZSkKIHsKICAgICAvLyBGaW5kIGNhbmRpZGF0ZXMgcmVzcG9uZGluZyB0
byB0YXAgZ2VzdHVyZSBldmVudHMgaW4gTyhuKSB0aW1lLgogICAgIEhhc2hNYXA8Tm9kZSosIE5v
ZGUqPiByZXNwb25kZXJNYXA7CkBAIC0yNDQsOSArMjQ0LDkgQEAgdm9pZCBjb21waWxlU3VidGFy
Z2V0TGlzdChjb25zdCBOb2RlTGlzdAogICAgIC8vIEEgbm9kZSBtYXRjaGluZyB0aGUgTm9kZUZp
bHRlciBpcyBjYWxsZWQgYSByZXNwb25kZXIuIENhbmRpZGF0ZSBub2RlcyBtdXN0IGVpdGhlciBi
ZSBhCiAgICAgLy8gcmVzcG9uZGVyIG9yIGhhdmUgYW4gYW5jZXN0b3IgdGhhdCBpcyBhIHJlc3Bv
bmRlci4KICAgICAvLyBUaGlzIGl0ZXJhdGlvbiB0ZXN0cyBhbGwgYW5jZXN0b3JzIGF0IG1vc3Qg
b25jZSBieSBjYWNoaW5nIGVhcmxpZXIgcmVzdWx0cy4KLSAgICB1bnNpZ25lZCBsZW5ndGggPSBp
bnRlcnNlY3RlZE5vZGVzLmxlbmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgewotICAgICAgICBOb2RlKiBjb25zdCBub2RlID0gaW50ZXJzZWN0ZWROb2Rl
cy5pdGVtKGkpOworICAgIE5vZGVMaXN0SGFzaFNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW50
ZXJzZWN0ZWROb2Rlcy5lbmQoKTsKKyAgICBmb3IgKE5vZGVMaXN0SGFzaFNldDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBpbnRlcnNlY3RlZE5vZGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgICAgICBOb2RlKiBjb25zdCBub2RlID0gaXQtPmdldCgpOwogICAgICAgICBWZWN0b3I8Tm9k
ZSo+IHZpc2l0ZWROb2RlczsKICAgICAgICAgTm9kZSogcmVzcG9uZGluZ05vZGUgPSAwOwogICAg
ICAgICBmb3IgKE5vZGUqIHZpc2l0ZWROb2RlID0gbm9kZTsgdmlzaXRlZE5vZGU7IHZpc2l0ZWRO
b2RlID0gdmlzaXRlZE5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkgewpAQCAtMjc3LDcg
KzI3Nyw3IEBAIHZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3QKIAogICAg
IC8vIFdlIGNvbXBpbGUgdGhlIGxpc3Qgb2YgY29tcG9uZW50IGFic29sdXRlIHF1YWRzIGluc3Rl
YWQgb2YgdXNpbmcgdGhlIGJvdW5kaW5nIHJlY3QKICAgICAvLyB0byBiZSBhYmxlIHRvIHBlcmZv
cm0gYmV0dGVyIGhpdC10ZXN0aW5nIG9uIGlubGluZSBsaW5rcyBvbiBsaW5lLWJyZWFrcy4KLSAg
ICBsZW5ndGggPSBjYW5kaWRhdGVzLnNpemUoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBjYW5k
aWRhdGVzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0gY2FuZGlkYXRlc1tpXTsKICAgICAgICAgLy8g
U2tpcCBub2RlcyB3aG8ncyByZXNwb25kZXJzIGFyZSBhbmNlc3RvcnMgb2Ygb3RoZXIgcmVzcG9u
ZGVycy4gVGhpcyBnaXZlcyBwcmVmZXJlbmNlIHRvCkBAIC0zMTAsMTEgKzMxMCwxMSBAQCB2b2lk
IGNvbXBpbGVTdWJ0YXJnZXRMaXN0KGNvbnN0IE5vZGVMaXN0CiB9CiAKIC8vIENvbXBpbGVzIGEg
bGlzdCBvZiB6b29tYWJsZSBzdWJ0YXJnZXRzLgotdm9pZCBjb21waWxlWm9vbWFibGVTdWJ0YXJn
ZXRzKGNvbnN0IE5vZGVMaXN0JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9tZXRyeUxp
c3QmIHN1YnRhcmdldHMpCit2b2lkIGNvbXBpbGVab29tYWJsZVN1YnRhcmdldHMoY29uc3QgTm9k
ZUxpc3RIYXNoU2V0JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9tZXRyeUxpc3QmIHN1
YnRhcmdldHMpCiB7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gaW50ZXJzZWN0ZWROb2Rlcy5sZW5n
dGgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgTm9kZSogY29uc3QgY2FuZGlkYXRlID0gaW50ZXJzZWN0ZWROb2Rlcy5pdGVtKGkpOworICAg
IE5vZGVMaXN0SGFzaFNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW50ZXJzZWN0ZWROb2Rlcy5l
bmQoKTsKKyAgICBmb3IgKE5vZGVMaXN0SGFzaFNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBpbnRl
cnNlY3RlZE5vZGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBOb2RlKiBj
b25zdCBjYW5kaWRhdGUgPSBpdC0+Z2V0KCk7CiAgICAgICAgIGlmIChub2RlSXNab29tVGFyZ2V0
KGNhbmRpZGF0ZSkpCiAgICAgICAgICAgICBhcHBlbmRab29tYWJsZVN1YnRhcmdldHMoY2FuZGlk
YXRlLCBzdWJ0YXJnZXRzKTsKICAgICB9CkBAIC00NzYsNyArNDc2LDcgQEAgYm9vbCBmaW5kTm9k
ZVdpdGhMb3dlc3REaXN0YW5jZU1ldHJpYyhObwogCiB9IC8vIG5hbWVzcGFjZSBUb3VjaEFkanVz
dG1lbnQKIAotYm9vbCBmaW5kQmVzdENsaWNrYWJsZUNhbmRpZGF0ZShOb2RlKiYgdGFyZ2V0Tm9k
ZSwgSW50UG9pbnQgJnRhcmdldFBvaW50LCBjb25zdCBJbnRQb2ludCAmdG91Y2hIb3RzcG90LCBj
b25zdCBJbnRSZWN0ICZ0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0JiBub2RlTGlzdCkKK2Jvb2wg
ZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUoTm9kZSomIHRhcmdldE5vZGUsIEludFBvaW50ICZ0
YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQgJnRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCAm
dG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdEhhc2hTZXQmIG5vZGVMaXN0KQogewogICAgIEludFJl
Y3QgdGFyZ2V0QXJlYTsKICAgICBUb3VjaEFkanVzdG1lbnQ6OlN1YnRhcmdldEdlb21ldHJ5TGlz
dCBzdWJ0YXJnZXRzOwpAQCAtNDg0LDcgKzQ4NCw3IEBAIGJvb2wgZmluZEJlc3RDbGlja2FibGVD
YW5kaWRhdGUoTm9kZSomIHQKICAgICByZXR1cm4gVG91Y2hBZGp1c3RtZW50OjpmaW5kTm9kZVdp
dGhMb3dlc3REaXN0YW5jZU1ldHJpYyh0YXJnZXROb2RlLCB0YXJnZXRQb2ludCwgdGFyZ2V0QXJl
YSwgdG91Y2hIb3RzcG90LCB0b3VjaEFyZWEsIHN1YnRhcmdldHMsIFRvdWNoQWRqdXN0bWVudDo6
aHlicmlkRGlzdGFuY2VGdW5jdGlvbik7CiB9CiAKLWJvb2wgZmluZEJlc3RDb250ZXh0TWVudUNh
bmRpZGF0ZShOb2RlKiYgdGFyZ2V0Tm9kZSwgSW50UG9pbnQgJnRhcmdldFBvaW50LCBjb25zdCBJ
bnRQb2ludCAmdG91Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0ICZ0b3VjaEFyZWEsIGNvbnN0IE5v
ZGVMaXN0JiBub2RlTGlzdCkKK2Jvb2wgZmluZEJlc3RDb250ZXh0TWVudUNhbmRpZGF0ZShOb2Rl
KiYgdGFyZ2V0Tm9kZSwgSW50UG9pbnQgJnRhcmdldFBvaW50LCBjb25zdCBJbnRQb2ludCAmdG91
Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0ICZ0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0SGFzaFNl
dCYgbm9kZUxpc3QpCiB7CiAgICAgSW50UmVjdCB0YXJnZXRBcmVhOwogICAgIFRvdWNoQWRqdXN0
bWVudDo6U3VidGFyZ2V0R2VvbWV0cnlMaXN0IHN1YnRhcmdldHM7CkBAIC00OTIsNyArNDkyLDcg
QEAgYm9vbCBmaW5kQmVzdENvbnRleHRNZW51Q2FuZGlkYXRlKE5vZGUqJgogICAgIHJldHVybiBU
b3VjaEFkanVzdG1lbnQ6OmZpbmROb2RlV2l0aExvd2VzdERpc3RhbmNlTWV0cmljKHRhcmdldE5v
ZGUsIHRhcmdldFBvaW50LCB0YXJnZXRBcmVhLCB0b3VjaEhvdHNwb3QsIHRvdWNoQXJlYSwgc3Vi
dGFyZ2V0cywgVG91Y2hBZGp1c3RtZW50OjpoeWJyaWREaXN0YW5jZUZ1bmN0aW9uKTsKIH0KIAot
Ym9vbCBmaW5kQmVzdFpvb21hYmxlQXJlYShOb2RlKiYgdGFyZ2V0Tm9kZSwgSW50UmVjdCYgdGFy
Z2V0QXJlYSwgY29uc3QgSW50UG9pbnQmIHRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCYgdG91
Y2hBcmVhLCBjb25zdCBOb2RlTGlzdCYgbm9kZUxpc3QpCitib29sIGZpbmRCZXN0Wm9vbWFibGVB
cmVhKE5vZGUqJiB0YXJnZXROb2RlLCBJbnRSZWN0JiB0YXJnZXRBcmVhLCBjb25zdCBJbnRQb2lu
dCYgdG91Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0JiB0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0
SGFzaFNldCYgbm9kZUxpc3QpCiB7CiAgICAgSW50UG9pbnQgdGFyZ2V0UG9pbnQ7CiAgICAgVG91
Y2hBZGp1c3RtZW50OjpTdWJ0YXJnZXRHZW9tZXRyeUxpc3Qgc3VidGFyZ2V0czsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuaAkocmV2aXNpb24gMTQ5MTY1KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgs
OSArMjgsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIGZpbmRCZXN0Q2xpY2th
YmxlQ2FuZGlkYXRlKE5vZGUqJiB0YXJnZXROb2RlLCBJbnRQb2ludCYgdGFyZ2V0UG9pbnQsIGNv
bnN0IEludFBvaW50JiB0b3VjaEhvdHNwb3QsIGNvbnN0IEludFJlY3QmIHRvdWNoQXJlYSwgY29u
c3QgTm9kZUxpc3QmKTsKLWJvb2wgZmluZEJlc3RDb250ZXh0TWVudUNhbmRpZGF0ZShOb2RlKiYg
dGFyZ2V0Tm9kZSwgSW50UG9pbnQmIHRhcmdldFBvaW50LCBjb25zdCBJbnRQb2ludCYgdG91Y2hI
b3RzcG90LCBjb25zdCBJbnRSZWN0JiB0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0Jik7Ci1ib29s
IGZpbmRCZXN0Wm9vbWFibGVBcmVhKE5vZGUqJiB0YXJnZXROb2RlLCBJbnRSZWN0JiB0YXJnZXRB
cmVhLCBjb25zdCBJbnRQb2ludCYgdG91Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0JiB0b3VjaEFy
ZWEsIGNvbnN0IE5vZGVMaXN0Jik7Cit0eXBlZGVmIExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+
IE5vZGVMaXN0SGFzaFNldDsKKworYm9vbCBmaW5kQmVzdENsaWNrYWJsZUNhbmRpZGF0ZShOb2Rl
KiYgdGFyZ2V0Tm9kZSwgSW50UG9pbnQmIHRhcmdldFBvaW50LCBjb25zdCBJbnRQb2ludCYgdG91
Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0JiB0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0SGFzaFNl
dCYpOworYm9vbCBmaW5kQmVzdENvbnRleHRNZW51Q2FuZGlkYXRlKE5vZGUqJiB0YXJnZXROb2Rl
LCBJbnRQb2ludCYgdGFyZ2V0UG9pbnQsIGNvbnN0IEludFBvaW50JiB0b3VjaEhvdHNwb3QsIGNv
bnN0IEludFJlY3QmIHRvdWNoQXJlYSwgY29uc3QgTm9kZUxpc3RIYXNoU2V0Jik7Citib29sIGZp
bmRCZXN0Wm9vbWFibGVBcmVhKE5vZGUqJiB0YXJnZXROb2RlLCBJbnRSZWN0JiB0YXJnZXRBcmVh
LCBjb25zdCBJbnRQb2ludCYgdG91Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0JiB0b3VjaEFyZWEs
IGNvbnN0IE5vZGVMaXN0SGFzaFNldCYpOwogLy8gRklYTUU6IEltcGxlbWVudCB0aGUgc2ltaWxh
ciBmdW5jdGlvbnMgZm9yIG90aGVyIGdlc3R1cmVzIGhlcmUgYXMgd2VsbC4KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2
aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTWVudUxpc3Qu
aCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0
LmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgiCkBAIC04OSw2ICs5MCw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
ICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3BlbGxDaGVja2VyLmgiCisjaW5j
bHVkZSAiU3RhdGljTm9kZUxpc3QuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIK
ICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUcmVlU2NvcGUuaCIKQEAgLTE0
MTQsNyArMTQxNiw3IEBAIFBhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IEludGVybmFsczo6dG8K
IH0KICNlbmRpZgogCi1QYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnRlcm5hbHM6Om5vZGVzRnJvbVJl
Y3QoRG9jdW1lbnQqIGRvY3VtZW50LCBpbnQgeCwgaW50IHksIHVuc2lnbmVkIHRvcFBhZGRpbmcs
IHVuc2lnbmVkIHJpZ2h0UGFkZGluZywKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IEludGVybmFsczo6
bm9kZXNGcm9tUmVjdChEb2N1bWVudCogZG9jdW1lbnQsIGludCBjZW50ZXJYLCBpbnQgY2VudGVy
WSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLAogICAgIHVuc2ln
bmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBw
aW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBhbGxvd0NoaWxkRnJhbWVDb250ZW50
LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1
bWVudC0+ZnJhbWUoKSB8fCAhZG9jdW1lbnQtPmZyYW1lKCktPnZpZXcoKSkgewpAQCAtMTQyMiw2
ICsxNDI0LDE1IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEludGVybmFsczo6bm9kZXNGcm8KICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZy
YW1lKCk7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBkb2N1bWVudC0+dmlldygpOworICAg
IFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBkb2N1bWVudC0+cmVuZGVyVmlldygpOworICAgIGlm
ICghcmVuZGVyVmlldykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmbG9hdCB6b29tRmFjdG9y
ID0gZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCk7CisgICAgTGF5b3V0UG9pbnQgcG9pbnQgPSByb3Vu
ZGVkTGF5b3V0UG9pbnQoRmxvYXRQb2ludChjZW50ZXJYICogem9vbUZhY3RvciArIGZyYW1lVmll
dy0+c2Nyb2xsWCgpLCBjZW50ZXJZICogem9vbUZhY3RvciArIGZyYW1lVmlldy0+c2Nyb2xsWSgp
KSk7CisKICAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBI
aXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlOwogICAgIGlm
IChpZ25vcmVDbGlwcGluZykKICAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6SWdu
b3JlQ2xpcHBpbmc7CkBAIC0xNDMwLDcgKzE0NDEsMjggQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4g
SW50ZXJuYWxzOjpub2Rlc0ZybwogICAgIGlmIChhbGxvd0NoaWxkRnJhbWVDb250ZW50KQogICAg
ICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50Owog
Ci0gICAgcmV0dXJuIGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFBhZGRpbmcsIHJp
Z2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGhpdFR5cGUpOworICAgIEhp
dFRlc3RSZXF1ZXN0IHJlcXVlc3QoaGl0VHlwZSk7CisKKyAgICAvLyBXaGVuIGlnbm9yZUNsaXBw
aW5nIGlzIGZhbHNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIG51bGwgZm9yIGNvb3JkaW5hdGVzIG91
dHNpZGUgb2YgdGhlIHZpZXdwb3J0LgorICAgIGlmICghcmVxdWVzdC5pZ25vcmVDbGlwcGluZygp
ICYmICFmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLmludGVyc2VjdHMoSGl0VGVzdExv
Y2F0aW9uOjpyZWN0Rm9yUG9pbnQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90
dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBWZWN0
b3I8UmVmUHRyPE5vZGU+ID4gbWF0Y2hlczsKKworICAgIC8vIE5lZWQgcGFkZGluZyB0byB0cmln
Z2VyIGEgcmVjdCBiYXNlZCBoaXQgdGVzdCwgYnV0IHdlIHdhbnQgdG8gcmV0dXJuIGEgTm9kZUxp
c3QKKyAgICAvLyBzbyB3ZSBzcGVjaWFsIGNhc2UgdGhpcy4KKyAgICBpZiAoIXRvcFBhZGRpbmcg
JiYgIXJpZ2h0UGFkZGluZyAmJiAhYm90dG9tUGFkZGluZyAmJiAhbGVmdFBhZGRpbmcpIHsKKyAg
ICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQpOworICAgICAgICByZW5kZXJWaWV3LT5o
aXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CisgICAgICAgIGlmIChyZXN1bHQuaW5uZXJOb2RlKCkp
CisgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChyZXN1bHQuaW5uZXJOb2RlKCktPmRlcHJlY2F0
ZWRTaGFkb3dBbmNlc3Rvck5vZGUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGlu
ZywgbGVmdFBhZGRpbmcpOworICAgICAgICByZW5kZXJWaWV3LT5oaXRUZXN0KHJlcXVlc3QsIHJl
c3VsdCk7CisgICAgICAgIGNvcHlUb1ZlY3RvcihyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgp
LCBtYXRjaGVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RhdGljTm9kZUxpc3Q6OmFkb3B0KG1h
dGNoZXMpOwogfQogCiB2b2lkIEludGVybmFsczo6ZW1pdEluc3BlY3RvckRpZEJlZ2luRnJhbWUo
KQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDQtMjUgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RhdGljSGFzaFNldE5vZGVMaXN0
IGlzIHVubmVjZXNzYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTUyMTkKKworICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisg
ICAgICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9y
dHMuZGVmLmluOgorCiAyMDEzLTA0LTI1ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFKFBBUlNFRF9TVFlMRV9TSEVFVF9DQUNISU5HKSBh
bmQgbWFrZSBpdCBhbHdheXMtb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9q
L1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJL
aXRFeHBvcnRzLmRlZi5pbgkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dlYktpdC9XZWJL
aXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBAQCBFWFBPUlRTCiAgICAgICAgID8/MENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbkBXZWJDb3JlQEBBQUVAVj8kUGFzc1JlZlB0ckBWTm9kZUBX
ZWJDb3JlQEBAV1RGQEBfTkFCVlN0cmluZ0AzQEBaCiAgICAgICAgID8/ME11dGV4QFdURkBAUUFF
QFhaCiAgICAgICAgID8/MFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRUBYWgorICAgICAgICA/PzFI
aXRUZXN0UmVzdWx0QFdlYkNvcmVAQFFBRUBYWgogICAgICAgICA/PzFNdXRleEBXVEZAQFFBRUBY
WgogICAgICAgICA/PzFUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVAWFoKICAgICAgICAgP2FkZFRl
eHRNYXRjaE1hcmtlckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFBCVlJh
bmdlQDJAX05AWgpAQCAtMTkxLDYgKzE5Miw3IEBAIEVYUE9SVFMKICAgICAgICAgP2dldERhdGEx
NlNsb3dDYXNlQFN0cmluZ0ltcGxAV1RGQEBBQkVQQl9XWFoKICAgICAgICAgP2dldExvY2F0aW9u
QW5kTGVuZ3RoRnJvbVJhbmdlQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQV9OUEFWTm9kZUAyQFBC
VlJhbmdlQDJAQUFJMkBaCiAgICAgICAgID9pbnB1dFRhZ0BIVE1MTmFtZXNAV2ViQ29yZUBAM1ZR
dWFsaWZpZWROYW1lQDJAQgorICAgICAgICA/aXRlbUBTdGF0aWNOb2RlTGlzdEBXZWJDb3JlQEBV
QkVQQVZOb2RlQDJASUBaCiAgICAgICAgID9zZWxlY3RUYWdASFRNTE5hbWVzQFdlYkNvcmVAQDNW
UXVhbGlmaWVkTmFtZUAyQEIKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgICAgICA/Z2V0SGln
aGxpZ2h0QEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUJFWFBBVUhpZ2hsaWdodEAyQEBa
CkBAIC0yMjcsNyArMjI5LDEwIEBAIEVYUE9SVFMKICAgICAgICAgP25leHRTaWJsaW5nQENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2ZpcnN0Q2hpbGRA
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/bGFzdENo
aWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKKyAgICAgICAgP2xl
bmd0aEBTdGF0aWNOb2RlTGlzdEBXZWJDb3JlQEBVQkVJWFoKKyAgICAgICAgP25hbWVkSXRlbUBT
dGF0aWNOb2RlTGlzdEBXZWJDb3JlQEBVQkVQQVZOb2RlQDJAQUJWQXRvbWljU3RyaW5nQFdURkBA
QFoKICAgICAgICAgP25leHRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhY
WgorICAgICAgICA/bm9kZXNGcm9tUmVjdEBJbnRlcm5hbHNAV2ViQ29yZUBAUUJFP0FWPyRQYXNz
UmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RGQEBQQVZEb2N1bWVudEAyQEhISUlJSV9OMTFB
QUhAWgogICAgICAgICA/cHJldmlvdXNAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVA
QFFBRVhYWgogICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJAX0pAWgogICAgICAg
ICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJAX0tAWgpAQCAtMzA0LDcgKzMwOSw2IEBAIEVY
UE9SVFMKICAgICAgICAgPz8xQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBATUFF
QFhaCiAgICAgICAgID9jb250ZXh0RGVzdHJveWVkQENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
QFdlYkNvcmVAQFVBRVhYWgogICAgICAgICA/PzBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBX
ZWJDb3JlQEBRQUVAUEFWU2NyaXB0RXhlY3V0aW9uQ29udGV4dEAxQEBaCi0gICAgICAgID9ub2Rl
c0Zyb21SZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxpc3RA
V2ViQ29yZUBAQFdURkBASEhJSUlJSUBaCiAgICAgICAgID9zZWxlY3Rpb25TdGFydEhhc01hcmtl
ckZvckBFZGl0b3JAV2ViQ29yZUBAUUJFX05XNE1hcmtlclR5cGVARG9jdW1lbnRNYXJrZXJAMkBI
SEBaCiAgICAgICAgID9pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZEBFZGl0b3JAV2Vi
Q29yZUBAUUJFX05YWgogICAgICAgICA/dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmdARWRp
dG9yQFdlYkNvcmVAQFFBRVhYWgpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ5MTY1
KQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTMtMDQtMjUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgU3RhdGljSGFzaFNldE5vZGVMaXN0IGlzIHVubmVjZXNzYXJ5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTUyMTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisgICAgICAgICogV2ViS2l0LnZjcHJvai9XZWJL
aXRFeHBvcnRzLmRlZi5pbjoKKwogMjAxMy0wNC0yNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENvbnNvbGVNZXNzYWdlIHNo
b3VsZCBpbmNsdWRlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXIgd2hlcmUgcG9zc2libGUKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRz
LmRlZi5pbgkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZj
cHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw3
IEBAIEVYUE9SVFMKICAgICAgICAgPz8wQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uQFdlYkNv
cmVAQEFBRUBWPyRQYXNzUmVmUHRyQFZOb2RlQFdlYkNvcmVAQEBXVEZAQF9OQUJWU3RyaW5nQDNA
QFoKICAgICAgICAgPz8wTXV0ZXhAV1RGQEBRQUVAWFoKICAgICAgICAgPz8wVGhyZWFkQ29uZGl0
aW9uQFdURkBAUUFFQFhaCisgICAgICAgID8/MUhpdFRlc3RSZXN1bHRAV2ViQ29yZUBAUUFFQFha
CiAgICAgICAgID8/MU11dGV4QFdURkBAUUFFQFhaCiAgICAgICAgID8/MVRocmVhZENvbmRpdGlv
bkBXVEZAQFFBRUBYWgogICAgICAgICA/YWRkVGV4dE1hdGNoTWFya2VyQERvY3VtZW50TWFya2Vy
Q29udHJvbGxlckBXZWJDb3JlQEBRQUVYUEJWUmFuZ2VAMkBfTkBaCkBAIC0xOTEsNiArMTkyLDcg
QEAgRVhQT1JUUwogICAgICAgICA/Z2V0RGF0YTE2U2xvd0Nhc2VAU3RyaW5nSW1wbEBXVEZAQEFC
RVBCX1dYWgogICAgICAgICA/Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2VAVGV4dEl0ZXJh
dG9yQFdlYkNvcmVAQFNBX05QQVZOb2RlQDJAUEJWUmFuZ2VAMkBBQUkyQFoKICAgICAgICAgP2lu
cHV0VGFnQEhUTUxOYW1lc0BXZWJDb3JlQEAzVlF1YWxpZmllZE5hbWVAMkBCCisgICAgICAgID9p
dGVtQFN0YXRpY05vZGVMaXN0QFdlYkNvcmVAQFVCRVBBVk5vZGVAMkBJQFoKICAgICAgICAgP3Nl
bGVjdFRhZ0BIVE1MTmFtZXNAV2ViQ29yZUBAM1ZRdWFsaWZpZWROYW1lQDJAQgogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAgICAgICAgID9nZXRIaWdobGlnaHRASW5zcGVjdG9yQ29udHJvbGxlckBX
ZWJDb3JlQEBRQkVYUEFVSGlnaGxpZ2h0QDJAQFoKQEAgLTIyNyw3ICsyMjksMTAgQEAgRVhQT1JU
UwogICAgICAgICA/bmV4dFNpYmxpbmdAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVA
QFFBRVhYWgogICAgICAgICA/Zmlyc3RDaGlsZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2Vi
Q29yZUBAUUFFWFhaCiAgICAgICAgID9sYXN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
QFdlYkNvcmVAQFFBRVhYWgorICAgICAgICA/bGVuZ3RoQFN0YXRpY05vZGVMaXN0QFdlYkNvcmVA
QFVCRUlYWgorICAgICAgICA/bmFtZWRJdGVtQFN0YXRpY05vZGVMaXN0QFdlYkNvcmVAQFVCRVBB
Vk5vZGVAMkBBQlZBdG9taWNTdHJpbmdAV1RGQEBAWgogICAgICAgICA/bmV4dEBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCisgICAgICAgID9ub2Rlc0Zyb21SZWN0QElu
dGVybmFsc0BXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBX
VEZAQFBBVkRvY3VtZW50QDJASEhJSUlJX04xMUFBSEBaCiAgICAgICAgID9wcmV2aW91c0BDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9udW1iZXJAU3Ry
aW5nQFdURkBAU0E/QVYxMkBfSkBaCiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYx
MkBfS0BaCkBAIC0zMDQsNyArMzA5LDYgQEAgRVhQT1JUUwogICAgICAgICA/PzFDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBNQUVAWFoKICAgICAgICAgP2NvbnRleHREZXN0cm95
ZWRAQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAVUFFWFhaCiAgICAgICAgID8/
MENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFFBRUBQQVZTY3JpcHRFeGVjdXRp
b25Db250ZXh0QDFAQFoKLSAgICAgICAgP25vZGVzRnJvbVJlY3RARG9jdW1lbnRAV2ViQ29yZUBA
UUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RGQEBISElJSUlJQFoKICAg
ICAgICAgP3NlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yQEVkaXRvckBXZWJDb3JlQEBRQkVfTlc0
TWFya2VyVHlwZUBEb2N1bWVudE1hcmtlckAyQEhIQFoKICAgICAgICAgP2lzQ29udGludW91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkQEVkaXRvckBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID90b2dn
bGVDb250aW51b3VzU3BlbGxDaGVja2luZ0BFZGl0b3JAV2ViQ29yZUBAUUFFWFhaCkluZGV4OiBT
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9hdXRv
dG9vbHMvc3ltYm9scy5maWx0ZXIJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXIJKHdvcmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYsOCBAQCBfWk5L
N1dlYkNvcmU1RnJhbWUyNXRyYWNrZWRSZXBhaW50UmVjdHNBCiBfWk43V2ViQ29yZTR0b0pTRVBO
M0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE4zV1RGMTFBcnJheUJ1ZmZl
ckU7CiBfWk43V2ViQ29yZTExRnJhbWVMb2FkZXI2cmVsb2FkRWI7CiBfWk43V2ViQ29yZTEzdG9B
cnJheUJ1ZmZlckVOM0pTQzdKU1ZhbHVlRTsKK19aTjdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0QzFF
UktOU18xMUxheW91dFBvaW50RWpqamo7CitfWk43V2ViQ29yZTE1SGl0VGVzdExvY2F0aW9uMTJy
ZWN0Rm9yUG9pbnRFUktOU18xMUxheW91dFBvaW50RWpqamo7CiBfWk43V2ViQ29yZTIxU2VyaWFs
aXplZFNjcmlwdFZhbHVlNmNyZWF0ZUVSS04zV1RGNlN0cmluZ0U7CiBfWk43V2ViQ29yZTIxU2Vy
aWFsaXplZFNjcmlwdFZhbHVlRDFFdjsKIF9aTjdXZWJDb3JlMjRTY29wZUNvbnRlbnREaXN0cmli
dXRpb24xNmhhc1NoYWRvd0VsZW1lbnRFUEtOU18xMFNoYWRvd1Jvb3RFOwpAQCAtMzAxLDYgKzMw
MywxMCBAQCBfWk43V2ViQ29yZTEydG9UaW1lUmFuZ2VzRU4zSlNDN0pTVmFsdWVFCiBfWk43V2Vi
Q29yZTE0dG9GbG9hdDMyQXJyYXlFTjNKU0M3SlNWYWx1ZUU7CiBfWk43V2ViQ29yZTR0b0pTRVBO
M0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEwVGltZVJhbmdlc0U7
CiBfWk5LN1dlYkNvcmUxMFRpbWVSYW5nZXM3bmVhcmVzdEVkOworX1pOSzdXZWJDb3JlMTNIaXRU
ZXN0UmVzdWx0MTlyZWN0QmFzZWRUZXN0UmVzdWx0RXY7CitfWk5LN1dlYkNvcmU0Tm9kZTI4ZGVw
cmVjYXRlZFNoYWRvd0FuY2VzdG9yTm9kZUV2OworX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rl
c0Zyb21SZWN0RWlpampqamo7CitfWlRWTjdXZWJDb3JlMTRTdGF0aWNOb2RlTGlzdEU7CiAKIGxv
Y2FsOgogX1oqOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199917</attachid>
            <date>2013-04-27 14:14:49 -0700</date>
            <delta_ts>2013-04-27 21:48:56 -0700</delta_ts>
            <desc>Another GTK+ fix</desc>
            <filename>bug-115219-20130427141407.patch</filename>
            <type>text/plain</type>
            <size>42599</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEzLTA0LTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFN0YXRpY0hhc2hTZXROb2RlTGlz
dCBpcyB1bm5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE1MjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KKwor
ICAgICAgICBNb3ZlZCBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCBpbnRvIEludGVybmFsczo6bm9k
ZXNGcm9tUmVjdCBwZXIKKyAgICAgICAgaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29t
L2Nocm9taXVtL2JsaW5rLysvNzgyMDdjNWMzNDM4M2ZiYjgwN2JiOTM0N2RlYjY3MTY4ZjA5YmIw
NC4KKworICAgICAgICBBbHNvIG1hZGUgVG91Y2hBZGp1c3RtZW50IGZ1bmN0aW9ucyB1c2UgSGFz
aExpc3RTZXQgZGlyZWN0bHkgaW5zdGVhZCBvZiB3cmFwcGluZyBpdCBpbnNpZGUKKyAgICAgICAg
YSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Qgc2luY2UgdGhlcmUgd2FzIG5vIG5lZWQgdG8gdXNlIHRo
ZSBsYXR0ZXIuCisKKyAgICAgICAgV2l0aCB0aGVzZSB0d28gY2hhbmdlcywgSSBkZWxldGVkIFN0
YXRpY0hhc2hTZXROb2RlTGlzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3Qu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmJlc3RDbGlja2FibGVOb2RlRm9yVG91Y2hQb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmJlc3RDb250ZXh0TWVudU5vZGVGb3JUb3VjaFBvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YmVzdFpvb21hYmxlQXJlYUZvclRv
dWNoUG9pbnQpOgorICAgICAgICAqIHBhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRvdWNoQWRqdXN0bWVudDo6Y29tcGlsZVN1YnRhcmdldExpc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6VG91Y2hBZGp1c3RtZW50Ojpjb21waWxlWm9vbWFibGVTdWJ0YXJnZXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OmZpbmRCZXN0Q2xpY2thYmxlQ2FuZGlkYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OmZpbmRCZXN0Q29udGV4dE1lbnVDYW5kaWRhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6ZmluZEJlc3Rab29tYWJsZUFyZWEpOgorICAgICAgICAqIHBhZ2UvVG91Y2hBZGp1c3RtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3QpOgorCiAyMDEzLTA0
LTI1ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHlsZVBy
b3BlcnR5U2V0OjpnZXRQcm9wZXJ0eVNob3J0aGFuZCgpIHNob3VsZCByZXR1cm4gYSBTdHJpbmcu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEyMzIsNyArMTIzMiw2IEBA
IHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vU2VsZWN0b3JRdWVyeS5jcHAKICAgICBkb20v
U2hhZG93Um9vdC5jcHAKICAgICBkb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKLSAgICBkb20vU3Rh
dGljSGFzaFNldE5vZGVMaXN0LmNwcAogICAgIGRvbS9TdGF0aWNOb2RlTGlzdC5jcHAKICAgICBk
b20vU3RyaW5nQ2FsbGJhY2suY3BwCiAgICAgZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTMwNzMsOCArMzA3
Myw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NpbXVsYXRl
ZENsaWNrT3B0aW9ucy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmggXAotCVNvdXJjZS9X
ZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9k
b20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNO
b2RlTGlzdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNOb2RlTGlzdC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vU3RyaW5nQ2FsbGJhY2suY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQko
cmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBj
b3B5KQpAQCAtNDU0LDcgKzQ1NCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9Ob2RlUmVuZGVy
aW5nVHJhdmVyc2FsLmNwcCBcCiAgICAgZG9tL05vZGVUcmF2ZXJzYWwuY3BwIFwKICAgICBkb20v
Tm90YXRpb24uY3BwIFwKLSAgICBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCBcCiAgICAg
ZG9tL092ZXJmbG93RXZlbnQuY3BwIFwKICAgICBkb20vUGFnZVRyYW5zaXRpb25FdmVudC5jcHAg
XAogICAgIGRvbS9QZW5kaW5nU2NyaXB0LmNwcCBcCkBAIC0xNjgzLDcgKzE2ODIsNiBAQCBIRUFE
RVJTICs9IFwKICAgICBkb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIFwKICAgICBkb20vTm9k
ZVRyYXZlcnNhbC5oIFwKICAgICBkb20vTm90YXRpb24uaCBcCi0gICAgZG9tL1N0YXRpY0hhc2hT
ZXROb2RlTGlzdC5oIFwKICAgICBkb20vT3ZlcmZsb3dFdmVudC5oIFwKICAgICBkb20vUGFnZVRy
YW5zaXRpb25FdmVudC5oIFwKICAgICBkb20vUG9zaXRpb24uaCBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYsNyBAQCBfX1pON1dlYkNvcmUxM0hUVFBI
ZWFkZXJNYXBDMUV2CiBfX1pON1dlYkNvcmUxM0hUVFBIZWFkZXJNYXBEMUV2CiBfX1pON1dlYkNv
cmUxM0hpdFRlc3RSZXN1bHRDMUVSS1MwXwogX19aTjdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0QzFF
UktOU18xMUxheW91dFBvaW50RQorX19aTjdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0QzFFUktOU18x
MUxheW91dFBvaW50RWpqamoKIF9fWk43V2ViQ29yZTEzSGl0VGVzdFJlc3VsdEQxRXYKIF9fWk43
V2ViQ29yZTEzSWRlbnRpZmllclJlcDNnZXRFUEtjCiBfX1pON1dlYkNvcmUxM0lkZW50aWZpZXJS
ZXAzZ2V0RWkKQEAgLTQ2Myw2ICs0NjQsNyBAQCBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4
dDlkcmF3SW1hZ2VFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDlzZXRTaGFkb3dFUktO
U185RmxvYXRTaXplRWZSS05TXzVDb2xvckVOU18xMENvbG9yU3BhY2VFCiBfX1pON1dlYkNvcmUx
NUdyYXBoaWNzQ29udGV4dDl0cmFuc2xhdGVFZmYKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250
ZXh0RDFFdgorX19aTjdXZWJDb3JlMTVIaXRUZXN0TG9jYXRpb24xMnJlY3RGb3JQb2ludEVSS05T
XzExTGF5b3V0UG9pbnRFampqagogX19aTjdXZWJDb3JlMTVKU0RPTVdpbmRvd0Jhc2U4Y29tbW9u
Vk1FdgogX19aTjdXZWJDb3JlMTVQbGF0Zm9ybUNBTGF5ZXIxOHNldEdlb21ldHJ5RmxpcHBlZEVi
CiBfX1pON1dlYkNvcmUxNVByb3RlY3Rpb25TcGFjZUMxRVJLTjNXVEY2U3RyaW5nRWlOU18yNVBy
b3RlY3Rpb25TcGFjZVNlcnZlclR5cGVFUzRfTlNfMzVQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNh
dGlvblNjaGVtZUUKQEAgLTEzMTIsNiArMTMxNCw3IEBAIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RS
ZXN1bHQxNmFic29sdXRlTWUKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxNmFsdERpc3Bs
YXlTdHJpbmdFdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE3aXNDb250ZW50RWRpdGFi
bGVFdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE4dGl0bGVEaXNwbGF5U3RyaW5nRXYK
K19fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxOXJlY3RCYXNlZFRlc3RSZXN1bHRFdgogX19a
Tks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDVpbWFnZUV2CiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0
UmVzdWx0NXRpdGxlRVJOU18xM1RleHREaXJlY3Rpb25FCiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0
UmVzdWx0OWltYWdlUmVjdEV2CkBAIC0xNDc0LDYgKzE0NzcsNyBAQCBfX1pOSzdXZWJDb3JlNE5v
ZGUxMXRleHRDb250ZW50RWIKIF9fWk5LN1dlYkNvcmU0Tm9kZTEzb3duZXJEb2N1bWVudEV2CiBf
X1pOSzdXZWJDb3JlNE5vZGUxNGlzRGVzY2VuZGFudE9mRVBLUzBfCiBfX1pOSzdXZWJDb3JlNE5v
ZGUxOGdldFN1YnJlc291cmNlVVJMc0VSTjNXVEYxMUxpc3RIYXNoU2V0SU5TXzRLVVJMRUxtMjU2
RU5TXzhLVVJMSGFzaEVFRQorX19aTks3V2ViQ29yZTROb2RlMjhkZXByZWNhdGVkU2hhZG93QW5j
ZXN0b3JOb2RlRXYKIF9fWk5LN1dlYkNvcmU0Tm9kZTMxbnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVD
aGlsZHJlbkV2CiBfX1pOSzdXZWJDb3JlNE5vZGU5bm9kZUluZGV4RXYKIF9fWk5LN1dlYkNvcmU0
UGFnZTEwcGx1Z2luRGF0YUV2CkBAIC0xNTUxLDcgKzE1NTUsNiBAQCBfX1pOSzdXZWJDb3JlN0lu
dFJlY3RjdjZDR1JlY3RFdgogX19aTks3V2ViQ29yZTdSdW5Mb29wOVRpbWVyQmFzZThpc0FjdGl2
ZUV2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTFjb21wbGV0ZVVSTEVSS04zV1RGNlN0cmluZ0UK
IF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM2F4T2JqZWN0Q2FjaGVFdgotX19aTks3V2ViQ29yZThE
b2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampqCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTRn
ZXRFbGVtZW50QnlJZEVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERvY3Vt
ZW50MzFkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nRVJLTjNXVEY2U3RyaW5nRQogX19a
Tks3V2ViQ29yZThEb2N1bWVudDRib2R5RXYKQEAgLTE2MDAsNiArMTYwMyw3IEBAIF9fWk5LN1dl
YkNvcmU5UmVuZGVyQm94MTJjbGllbnRIZWlnaHRFdgogX19aTks3V2ViQ29yZTlSZW5kZXJCb3gx
MWNsaWVudFdpZHRoRXYKIF9fWlRWTjdXZWJDb3JlMTJDaHJvbWVDbGllbnRFCiBfX1pUVk43V2Vi
Q29yZTE0TG9hZGVyU3RyYXRlZ3lFCitfX1pUVk43V2ViQ29yZTE0U3RhdGljTm9kZUxpc3RFCiBf
X1pUVk43V2ViQ29yZTE1U3RvcmFnZVN0cmF0ZWd5RQogX19aVFZON1dlYkNvcmUxNkRhdGFiYXNl
U3RyYXRlZ3lFCiBfX1pUVk43V2ViQ29yZTE2SWNvbkRhdGFiYXNlQmFzZUUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTI3Myw4ICs1MjczLDYgQEAKIAkJQ0U3QjJEQjQx
NTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIwMTU4NkFCQUQw
MDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKi87IH07CiAJCUNFN0Iy
REI1MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIxMTU4NkFCQUQw
MDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTdCMkRCNjE1ODZBQkFEMDA5OEIzRkEg
LyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3QjJEQjIxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZS5tbSAqLzsgfTsKLQkJQ0VBMzk0OUMxMUQ0NUNEQTAwMzA5NENGIC8q
IFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRUEzOTQ5QTExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNl
dE5vZGVMaXN0LmNwcCAqLzsgfTsKLQkJQ0VBMzk0OUQxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRp
Y0hhc2hTZXROb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0VBMzk0OUIxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlz
dC5oICovOyB9OwogCQlDRUNBREZDNjE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJu
YXRpdmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0VDQURGQzIxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmNwcCAqLzsg
fTsKIAkJQ0VDQURGQzcxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUNBREZDMzE1
Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRUNBREZDODE1Mzc3OEZGMDBFMzcw
NjggLyogRGljdGF0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRUNBREZDNDE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQ29t
bWFuZC5jcHAgKi87IH07CkBAIC0xMjA2Miw4ICsxMjA2MCw2IEBACiAJCUNFN0IyREIwMTU4NkFC
QUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIu
bW07IHBhdGggPSBtYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRTdCMkRCMTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZS5oOyBwYXRoID0gbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTdCMkRCMjE1ODZBQkFEMDA5OEIz
RkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOyBwYXRoID0gbWFj
L1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQ0VBMzk0OUExMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGF0aWNIYXNoU2V0Tm9kZUxp
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRUEzOTQ5QjExRDQ1Q0RBMDAz
MDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRUNBREZDMjE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQWx0ZXJu
YXRpdmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUNBREZDMzE1Mzc3OEZG
MDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGljdGF0aW9uQWx0ZXJuYXRpdmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0VDQURGQzQxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQ29tbWFuZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDU2MCw4ICsyMDU1Niw2IEBACiAJ
CQkJMzE3NDFBQUIxNjYzNUU0NTAwOEE1QjdFIC8qIFNpbXVsYXRlZENsaWNrT3B0aW9ucy5oICov
LAogCQkJCUQwMUEyN0FCMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmNwcCAq
LywKIAkJCQlEMDFBMjdBQzEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5oICov
LAotCQkJCUNFQTM5NDlBMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Qu
Y3BwICovLAotCQkJCUNFQTM5NDlCMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9k
ZUxpc3QuaCAqLywKIAkJCQlCQzdGQTYyQzBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxp
c3QuY3BwICovLAogCQkJCUJDN0ZBNjJCMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNOb2RlTGlz
dC5oICovLAogCQkJCTgxMDJDNTg3MTMyNUJCMTEwMERERTY3QSAvKiBTdHJpbmdDYWxsYmFjay5j
cHAgKi8sCkBAIC0yMzUwNyw3ICsyMzUwMSw2IEBACiAJCQkJOTdCQzZBNUQxNTA1RjA4MTAwMUI3
NEFDIC8qIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTJFNkU1QTBDQzU1MjEzMDA0QTIwNjIgLyogU1FMVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzRjE5OTYzMDgyNDVFNTkwMDFFOUFCQyAvKiBTU0xLZXlHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUNFQTM5NDlEMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0ZBNjJEMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0
aWNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVBRkIzNTAxMTUxNTFBNzAwQjA0NUNC
IC8qIFN0ZXBSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCRTM3RTAwREFFRTAwRTAwMTA4
NUZDIC8qIFN0b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLywKQEAgLTI2NTc0LDcgKzI2NTY3LDYg
QEAKIAkJCQk5N0JDNkE1QTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkU2RTU5MENDNTUyMTMwMDRBMjA2MiAvKiBTUUxWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUFFNjA4MjQ1RTU5MDAxRTlBQkMgLyogU1NM
S2V5R2VuZXJhdG9yTWFjLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUNFQTM5NDlDMTFENDVDREEw
MDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM3RkE2MkUwRDFGMEVGRjAwREIyMkE5IC8qIFN0YXRpY05vZGVMaXN0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1QUZCMzRGMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTFFM0Y5QzcwREEwNTlEQzAwMjUwOTExIC8qIFN0b3JhZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAJKHJldmlzaW9u
IDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMCw3ICsxMzAsNiBAQAogI2luY2x1ZGUgIlNlbGVjdG9yUXVlcnkuY3BwIgog
I2luY2x1ZGUgIlNoYWRvd1Jvb3QuY3BwIgogI2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuY3Bw
IgotI2luY2x1ZGUgIlN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAiCiAjaW5jbHVkZSAiU3RhdGlj
Tm9kZUxpc3QuY3BwIgogI2luY2x1ZGUgIlN0eWxlRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiU3R5
bGVkRWxlbWVudC5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDE0
OTE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1Niw3ICsxNTYsNiBAQAogI2luY2x1ZGUgIlNlbGVjdG9yUXVlcnkuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJTdGF0aWNI
YXNoU2V0Tm9kZUxpc3QuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2V0LmgiCiAjaW5jbHVk
ZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgpAQCAt
MTQwNyw1OCArMTQwNiw2IEBAIFN0cmluZyBEb2N1bWVudDo6c3VnZ2VzdGVkTUlNRVR5cGUoKSBj
b24KICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLS8vIEZJWE1FOiBXZSBuZWVkIHRvIGRpc2N1
c3MgdGhlIERPTSBBUEkgaGVyZSBhdCBzb21lIHBvaW50LiBJZGVhczoKLS8vICogbWFraW5nIGl0
IHJlY2VpdmUgYSByZWN0IGFzIHBhcmFtZXRlciwgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHcs
IGgpOwotLy8gKiBtYWtpbmcgaXQgcmVjZWl2ZSB0aGUgZXhwYWRpbmcgc2l6ZSBvZiBlYWNoIGRp
cmVjdGlvbiBzZXBhcmF0ZWx5LAotLy8gICBpLmUuIG5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wU2l6
ZSwgcmlnaHRTaXplLCBib3R0b21TaXplLCBsZWZ0U2l6ZSk7Ci1QYXNzUmVmUHRyPE5vZGVMaXN0
PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2ln
bmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFk
ZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVz
dFR5cGUgaGl0VHlwZSkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogU2hhcmUgY29kZSBiZXR3ZWVu
IHRoaXMsIGVsZW1lbnRGcm9tUG9pbnQgYW5kIGNhcmV0UmFuZ2VGcm9tUG9pbnQuCi0gICAgaWYg
KCFyZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBGcmFtZSogZnJhbWUgPSB0aGlz
LT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiAwOwotICAgIEZyYW1l
VmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKLSAgICBpZiAoIWZyYW1lVmlldykKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBmbG9hdCB6b29tRmFjdG9yID0gZnJhbWUtPnBhZ2Vab29t
RmFjdG9yKCk7Ci0gICAgTGF5b3V0UG9pbnQgcG9pbnQgPSByb3VuZGVkTGF5b3V0UG9pbnQoRmxv
YXRQb2ludChjZW50ZXJYICogem9vbUZhY3RvciArIHZpZXcoKS0+c2Nyb2xsWCgpLCBjZW50ZXJZ
ICogem9vbUZhY3RvciArIHZpZXcoKS0+c2Nyb2xsWSgpKSk7Ci0KLSAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0KGhpdFR5cGUpOwotCi0gICAgLy8gV2hlbiBpZ25vcmVDbGlwcGluZyBpcyBmYWxz
ZSwgdGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9mIHRo
ZSB2aWV3cG9ydC4KLSAgICBpZiAoIXJlcXVlc3QuaWdub3JlQ2xpcHBpbmcoKSAmJiAhZnJhbWVW
aWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEhpdFRlc3RMb2NhdGlvbjo6cmVj
dEZvclBvaW50KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcs
IGxlZnRQYWRkaW5nKSkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gUGFzc2luZyBhIHpl
cm8gcGFkZGluZyB3aWxsIHRyaWdnZXIgYSByZWN0IGhpdCB0ZXN0LCBob3dldmVyIGZvciB0aGUg
cHVycG9zZXMgb2Ygbm9kZXNGcm9tUmVjdCwKLSAgICAvLyB3ZSBzcGVjaWFsIGhhbmRsZSB0aGlz
IGNhc2UgaW4gb3JkZXIgdG8gcmV0dXJuIGEgdmFsaWQgTm9kZUxpc3QuCi0gICAgaWYgKCF0b3BQ
YWRkaW5nICYmICFyaWdodFBhZGRpbmcgJiYgIWJvdHRvbVBhZGRpbmcgJiYgIWxlZnRQYWRkaW5n
KSB7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50KTsKLSAgICAgICAgcmV0dXJu
IGhhbmRsZVplcm9QYWRkaW5nKHJlcXVlc3QsIHJlc3VsdCk7Ci0gICAgfQotCi0gICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFk
ZGluZywgbGVmdFBhZGRpbmcpOwotICAgIHJlbmRlclZpZXcoKS0+aGl0VGVzdChyZXF1ZXN0LCBy
ZXN1bHQpOwotCi0gICAgcmV0dXJuIFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0
LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3Vt
ZW50OjpoYW5kbGVaZXJvUGFkZGluZyhjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlc3VsdCYgcmVzdWx0KSBjb25zdAotewotICAgIHJlbmRlclZpZXcoKS0+aGl0VGVzdChy
ZXF1ZXN0LCByZXN1bHQpOwotCi0gICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsK
LSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgbm9kZSA9IG5vZGUtPmRl
cHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5vZGUoKTsKLSAgICBMaXN0SGFzaFNldDxSZWZQdHI8Tm9k
ZT4gPiBsaXN0OwotICAgIGxpc3QuYWRkKG5vZGUpOwotICAgIHJldHVybiBTdGF0aWNIYXNoU2V0
Tm9kZUxpc3Q6OmFkb3B0KGxpc3QpOwotfQotCiBFbGVtZW50KiBEb2N1bWVudDo6ZWxlbWVudEZy
b21Qb2ludChpbnQgeCwgaW50IHkpIGNvbnN0CiB7CiAgICAgaWYgKCFyZW5kZXJlcigpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTksMjAgKzM1OSw2IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgY3NzR3JpZExheW91dEVuYWJsZWQoKSBjb25zdDsKIAotICAgIC8qKgot
ICAgICAqIFJldHJpZXZlIGFsbCBub2RlcyB0aGF0IGludGVyc2VjdCBhIHJlY3QgaW4gdGhlIHdp
bmRvdydzIGRvY3VtZW50LCB1bnRpbCBpdCBpcyBmdWxseSBlbmNsb3NlZCBieQotICAgICAqIHRo
ZSBib3VuZGFyaWVzIG9mIGEgbm9kZS4KLSAgICAgKgotICAgICAqIEBwYXJhbSBjZW50ZXJYIHgg
cmVmZXJlbmNlIGZvciB0aGUgcmVjdGFuZ2xlIGluIENTUyBwaXhlbHMKLSAgICAgKiBAcGFyYW0g
Y2VudGVyWSB5IHJlZmVyZW5jZSBmb3IgdGhlIHJlY3RhbmdsZSBpbiBDU1MgcGl4ZWxzCi0gICAg
ICogQHBhcmFtIHRvcFBhZGRpbmcgSG93IG11Y2ggdG8gZXhwYW5kIHRoZSB0b3Agb2YgdGhlIHJl
Y3RhbmdsZQotICAgICAqIEBwYXJhbSByaWdodFBhZGRpbmcgSG93IG11Y2ggdG8gZXhwYW5kIHRo
ZSByaWdodCBvZiB0aGUgcmVjdGFuZ2xlCi0gICAgICogQHBhcmFtIGJvdHRvbVBhZGRpbmcgSG93
IG11Y2ggdG8gZXhwYW5kIHRoZSBib3R0b20gb2YgdGhlIHJlY3RhbmdsZQotICAgICAqIEBwYXJh
bSBsZWZ0UGFkZGluZyBIb3cgbXVjaCB0byBleHBhbmQgdGhlIGxlZnQgb2YgdGhlIHJlY3Rhbmds
ZQotICAgICAqLwotICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoaW50IGNl
bnRlclgsIGludCBjZW50ZXJZLAotICAgICAgICB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25l
ZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRk
aW5nLAotICAgICAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUg
PSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0
VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCkgY29uc3Q7CiAgICAgRWxlbWVudCog
ZWxlbWVudEZyb21Qb2ludChpbnQgeCwgaW50IHkpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8UmFu
Z2U+IGNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5KTsKIApAQCAtMTI2NCw4ICsxMjUw
LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2VhbWxlc3NQYXJlbnRVcGRhdGVkU3R5bGVzaGVl
dHMoKTsKIAotICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGhhbmRsZVplcm9QYWRkaW5nKGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYpIGNvbnN0OwotCiAgICAgdm9pZCBsb2Fk
RXZlbnREZWxheVRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+Kik7CiAKICAgICB2b2lkIHBlbmRp
bmdUYXNrc1RpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcAkocmV2aXNpb24gMTQ5MTY1KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiU3RhdGljSGFzaFNldE5vZGVMaXN0LmgiCi0KLSNpbmNsdWRlICJFbGVtZW50
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU3RhdGljSGFzaFNldE5vZGVMaXN0OjpTdGF0
aWNIYXNoU2V0Tm9kZUxpc3QoTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4mIG5vZGVzKQotewot
ICAgIG1fbm9kZXMuc3dhcChub2Rlcyk7Ci19Ci0KLVN0YXRpY0hhc2hTZXROb2RlTGlzdDo6U3Rh
dGljSGFzaFNldE5vZGVMaXN0KCkKLXsKLX0KLQotU3RhdGljSGFzaFNldE5vZGVMaXN0Ojp+U3Rh
dGljSGFzaFNldE5vZGVMaXN0KCkKLXsKLX0KLQotdW5zaWduZWQgU3RhdGljSGFzaFNldE5vZGVM
aXN0OjpsZW5ndGgoKSBjb25zdAotewotICAgIHJldHVybiBtX25vZGVzLnNpemUoKTsKLX0KLQot
Tm9kZSogU3RhdGljSGFzaFNldE5vZGVMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAot
ewotICAgIGlmIChpbmRleCA8ICh1bnNpZ25lZCkgbV9ub2Rlcy5zaXplKCkpIHsKLSAgICAgICAg
TGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ub2Rlcy5i
ZWdpbigpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGNvdW50ID0gMDsgY291bnQgPCBpbmRleDsg
KytpdCwgKytjb3VudCkgeyB9Ci0gICAgICAgIHJldHVybiAoKml0KS5nZXQoKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gMDsKLX0KLQotTm9kZSogU3RhdGljSGFzaFNldE5vZGVMaXN0OjpuYW1lZEl0
ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0Ci17Ci0gICAgTGlzdEhhc2hT
ZXQ8UmVmUHRyPE5vZGU+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ub2Rlcy5iZWdpbigpOwot
ICAgIExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX25v
ZGVzLmVuZCgpOwotICAgIGZvciAoIDsgaXQgIT0gZW5kIDsgKytpdCkgewotICAgICAgICBOb2Rl
KiBub2RlID0gKCppdCkuZ2V0KCk7Ci0gICAgICAgIGlmICh0b0VsZW1lbnQobm9kZSktPmdldElk
QXR0cmlidXRlKCkgPT0gZWxlbWVudElkKQotICAgICAgICAgICAgcmV0dXJuIG5vZGU7Ci0gICAg
fQotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmgJKHJldmlzaW9uIDE0OTE2
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICogQ29weXJpZ2h0IChD
KSAyMDEwIEFudG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU3RhdGlj
SGFzaFNldE5vZGVMaXN0X2gKLSNkZWZpbmUgU3RhdGljSGFzaFNldE5vZGVMaXN0X2gKLQotI2lu
Y2x1ZGUgIk5vZGVMaXN0LmgiCi0jaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgTm9kZTsKLQotY2xhc3MgU3RhdGljSGFzaFNldE5vZGVMaXN0
IDogcHVibGljIE5vZGVMaXN0IHsKLXB1YmxpYzoKLSAgICBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Qo
KTsKLSAgICB+U3RhdGljSGFzaFNldE5vZGVMaXN0KCk7Ci0KLSAgICAvLyBBZG9wdHMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBub2RlcyBMaXN0SGFzaFNldC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IGFkb3B0KGNvbnN0IExpc3RIYXNoU2V0PFJlZlB0cjxOb2Rl
PiA+JiBub2RlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdChjb25zdF9jYXN0PExpc3RI
YXNoU2V0PFJlZlB0cjxOb2RlPiA+Jj4obm9kZXMpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IGFkb3B0KExpc3RIYXNoU2V0PFJlZlB0cjxO
b2RlPiA+JiBub2RlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RhdGlj
SGFzaFNldE5vZGVMaXN0KG5vZGVzKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQg
aW5kZXgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgTm9kZSogbmFtZWRJdGVtKGNvbnN0
IEF0b21pY1N0cmluZyYpIGNvbnN0IE9WRVJSSURFOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0
IFN0YXRpY0hhc2hTZXROb2RlTGlzdChMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiYgbm9kZXMp
OwotCi0gICAgTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4gbV9ub2RlczsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFN0YXRpY0hhc2hTZXROb2RlTGlzdF9oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAxNDkxNjUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc5LDcgKzc5LDYgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKICNpbmNsdWRlICJTcGF0aWFsTmF2aWdhdGlvbi5oIgotI2luY2x1ZGUgIlN0YXRpY0hh
c2hTZXROb2RlTGlzdC5oIgogI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRl
ICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKQEAgLTI4MzUsMTMgKzI4
MzQsMTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmJlc3RDbGlja2FibGVOb2RlRm9yVAogICAgIEhp
dFRlc3RSZXN1bHQgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCBI
aXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCB0b3VjaFJh
ZGl1cyk7CiAKICAgICBJbnRSZWN0IHRvdWNoUmVjdCh0b3VjaENlbnRlciAtIHRvdWNoUmFkaXVz
LCB0b3VjaFJhZGl1cyArIHRvdWNoUmFkaXVzKTsKLSAgICBSZWZQdHI8U3RhdGljSGFzaFNldE5v
ZGVMaXN0PiBub2RlTGlzdCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJl
Y3RCYXNlZFRlc3RSZXN1bHQoKSk7CiAKICAgICAvLyBGSVhNRTogU2hvdWxkIGJlIGFibGUgdG8g
aGFuZGxlIHRhcmdldE5vZGUgYmVpbmcgYSBzaGFkb3cgRE9NIG5vZGUgdG8gYXZvaWQgcGVyZm9y
bWluZyB1bmNlc3NhcnkgaGl0IHRlc3RzCiAgICAgLy8gaW4gdGhlIGNhc2Ugd2hlcmUgZnVydGhl
ciBwcm9jZXNzaW5nIG9uIHRoZSBub2RlIGlzIHJlcXVpcmVkLiBSZXR1cm5pbmcgdGhlIHNoYWRv
dyBhbmNlc3RvciBwcmV2ZW50cyBhCiAgICAgLy8gcmVncmVzc2lvbiBpbiB0b3VjaGFkanVzdG1l
bnQvaHRtbC1sYWJlbC5odG1sLiBTb21lIHJlZmluZW1lbnQgaXMgcmVxdWlyZWQgdG8gdGVzdGlu
Zy9pbnRlcm5hbHMgdG8KICAgICAvLyBoYW5kbGUgdGFyZ2V0Tm9kZSBiZWluZyBhIHNoYWRvdyBE
T00gbm9kZS4gCi0gICAgYm9vbCBzdWNjZXNzID0gZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUo
dGFyZ2V0Tm9kZSwgdGFyZ2V0UG9pbnQsIHRvdWNoQ2VudGVyLCB0b3VjaFJlY3QsICpub2RlTGlz
dC5nZXQoKSk7CisgICAgYm9vbCBzdWNjZXNzID0gZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUo
dGFyZ2V0Tm9kZSwgdGFyZ2V0UG9pbnQsIHRvdWNoQ2VudGVyLCB0b3VjaFJlY3QsIHJlc3VsdC5y
ZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwogICAgIGlmIChzdWNjZXNzICYmIHRhcmdldE5vZGUpCiAg
ICAgICAgIHRhcmdldE5vZGUgPSB0YXJnZXROb2RlLT5kZXByZWNhdGVkU2hhZG93QW5jZXN0b3JO
b2RlKCk7CiAgICAgcmV0dXJuIHN1Y2Nlc3M7CkBAIC0yODUzLDggKzI4NTEsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6YmVzdENvbnRleHRNZW51Tm9kZUZvCiAgICAgSGl0VGVzdFJlc3VsdCByZXN1
bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpS
ZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIHRvdWNoUmFkaXVzKTsKIAogICAgIElu
dFJlY3QgdG91Y2hSZWN0KHRvdWNoQ2VudGVyIC0gdG91Y2hSYWRpdXMsIHRvdWNoUmFkaXVzICsg
dG91Y2hSYWRpdXMpOwotICAgIFJlZlB0cjxTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IG5vZGVMaXN0
ID0gU3RhdGljSGFzaFNldE5vZGVMaXN0OjphZG9wdChyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3Vs
dCgpKTsKLSAgICByZXR1cm4gZmluZEJlc3RDb250ZXh0TWVudUNhbmRpZGF0ZSh0YXJnZXROb2Rl
LCB0YXJnZXRQb2ludCwgdG91Y2hDZW50ZXIsIHRvdWNoUmVjdCwgKm5vZGVMaXN0LmdldCgpKTsK
KyAgICByZXR1cm4gZmluZEJlc3RDb250ZXh0TWVudUNhbmRpZGF0ZSh0YXJnZXROb2RlLCB0YXJn
ZXRQb2ludCwgdG91Y2hDZW50ZXIsIHRvdWNoUmVjdCwgcmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1
bHQoKSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9yVG91Y2hQ
b2ludChjb25zdCBJbnRQb2ludCYgdG91Y2hDZW50ZXIsIGNvbnN0IEludFNpemUmIHRvdWNoUmFk
aXVzLCBJbnRSZWN0JiB0YXJnZXRBcmVhLCBOb2RlKiYgdGFyZ2V0Tm9kZSkKQEAgLTI4NjMsOCAr
Mjg2MCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9yVG8KICAgICBI
aXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwg
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRl
c3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQsIHRvdWNoUmFkaXVzKTsKIAogICAgIElu
dFJlY3QgdG91Y2hSZWN0KHRvdWNoQ2VudGVyIC0gdG91Y2hSYWRpdXMsIHRvdWNoUmFkaXVzICsg
dG91Y2hSYWRpdXMpOwotICAgIFJlZlB0cjxTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IG5vZGVMaXN0
ID0gU3RhdGljSGFzaFNldE5vZGVMaXN0OjphZG9wdChyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3Vs
dCgpKTsKLSAgICByZXR1cm4gZmluZEJlc3Rab29tYWJsZUFyZWEodGFyZ2V0Tm9kZSwgdGFyZ2V0
QXJlYSwgdG91Y2hDZW50ZXIsIHRvdWNoUmVjdCwgKm5vZGVMaXN0LmdldCgpKTsKKyAgICByZXR1
cm4gZmluZEJlc3Rab29tYWJsZUFyZWEodGFyZ2V0Tm9kZSwgdGFyZ2V0QXJlYSwgdG91Y2hDZW50
ZXIsIHRvdWNoUmVjdCwgcmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7CiB9CiAKIGJvb2wg
RXZlbnRIYW5kbGVyOjphZGp1c3RHZXN0dXJlUG9zaXRpb24oY29uc3QgUGxhdGZvcm1HZXN0dXJl
RXZlbnQmIGdlc3R1cmVFdmVudCwgSW50UG9pbnQmIGFkanVzdGVkUG9pbnQpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCShyZXZpc2lvbiAxNDkxNjUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzMyw3ICsyMzMsNyBAQCBzdGF0aWMgaW5saW5lIE5vZGUqIHBhcmVudFNoYWRvd0hvc3RPck93
CiB9CiAKIC8vIENvbXBpbGVzIGEgbGlzdCBvZiBzdWJ0YXJnZXRzIG9mIGFsbCB0aGUgcmVsZXZh
bnQgdGFyZ2V0IG5vZGVzLgotdm9pZCBjb21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlz
dCYgaW50ZXJzZWN0ZWROb2RlcywgU3VidGFyZ2V0R2VvbWV0cnlMaXN0JiBzdWJ0YXJnZXRzLCBO
b2RlRmlsdGVyIG5vZGVGaWx0ZXIsIEFwcGVuZFN1YnRhcmdldHNGb3JOb2RlIGFwcGVuZFN1YnRh
cmdldHNGb3JOb2RlKQordm9pZCBjb21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdEhh
c2hTZXQmIGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdldEdlb21ldHJ5TGlzdCYgc3VidGFyZ2V0
cywgTm9kZUZpbHRlciBub2RlRmlsdGVyLCBBcHBlbmRTdWJ0YXJnZXRzRm9yTm9kZSBhcHBlbmRT
dWJ0YXJnZXRzRm9yTm9kZSkKIHsKICAgICAvLyBGaW5kIGNhbmRpZGF0ZXMgcmVzcG9uZGluZyB0
byB0YXAgZ2VzdHVyZSBldmVudHMgaW4gTyhuKSB0aW1lLgogICAgIEhhc2hNYXA8Tm9kZSosIE5v
ZGUqPiByZXNwb25kZXJNYXA7CkBAIC0yNDQsOSArMjQ0LDkgQEAgdm9pZCBjb21waWxlU3VidGFy
Z2V0TGlzdChjb25zdCBOb2RlTGlzdAogICAgIC8vIEEgbm9kZSBtYXRjaGluZyB0aGUgTm9kZUZp
bHRlciBpcyBjYWxsZWQgYSByZXNwb25kZXIuIENhbmRpZGF0ZSBub2RlcyBtdXN0IGVpdGhlciBi
ZSBhCiAgICAgLy8gcmVzcG9uZGVyIG9yIGhhdmUgYW4gYW5jZXN0b3IgdGhhdCBpcyBhIHJlc3Bv
bmRlci4KICAgICAvLyBUaGlzIGl0ZXJhdGlvbiB0ZXN0cyBhbGwgYW5jZXN0b3JzIGF0IG1vc3Qg
b25jZSBieSBjYWNoaW5nIGVhcmxpZXIgcmVzdWx0cy4KLSAgICB1bnNpZ25lZCBsZW5ndGggPSBp
bnRlcnNlY3RlZE5vZGVzLmxlbmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgewotICAgICAgICBOb2RlKiBjb25zdCBub2RlID0gaW50ZXJzZWN0ZWROb2Rl
cy5pdGVtKGkpOworICAgIE5vZGVMaXN0SGFzaFNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW50
ZXJzZWN0ZWROb2Rlcy5lbmQoKTsKKyAgICBmb3IgKE5vZGVMaXN0SGFzaFNldDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBpbnRlcnNlY3RlZE5vZGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgICAgICBOb2RlKiBjb25zdCBub2RlID0gaXQtPmdldCgpOwogICAgICAgICBWZWN0b3I8Tm9k
ZSo+IHZpc2l0ZWROb2RlczsKICAgICAgICAgTm9kZSogcmVzcG9uZGluZ05vZGUgPSAwOwogICAg
ICAgICBmb3IgKE5vZGUqIHZpc2l0ZWROb2RlID0gbm9kZTsgdmlzaXRlZE5vZGU7IHZpc2l0ZWRO
b2RlID0gdmlzaXRlZE5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkgewpAQCAtMjc3LDcg
KzI3Nyw3IEBAIHZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3QKIAogICAg
IC8vIFdlIGNvbXBpbGUgdGhlIGxpc3Qgb2YgY29tcG9uZW50IGFic29sdXRlIHF1YWRzIGluc3Rl
YWQgb2YgdXNpbmcgdGhlIGJvdW5kaW5nIHJlY3QKICAgICAvLyB0byBiZSBhYmxlIHRvIHBlcmZv
cm0gYmV0dGVyIGhpdC10ZXN0aW5nIG9uIGlubGluZSBsaW5rcyBvbiBsaW5lLWJyZWFrcy4KLSAg
ICBsZW5ndGggPSBjYW5kaWRhdGVzLnNpemUoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBjYW5k
aWRhdGVzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0gY2FuZGlkYXRlc1tpXTsKICAgICAgICAgLy8g
U2tpcCBub2RlcyB3aG8ncyByZXNwb25kZXJzIGFyZSBhbmNlc3RvcnMgb2Ygb3RoZXIgcmVzcG9u
ZGVycy4gVGhpcyBnaXZlcyBwcmVmZXJlbmNlIHRvCkBAIC0zMTAsMTEgKzMxMCwxMSBAQCB2b2lk
IGNvbXBpbGVTdWJ0YXJnZXRMaXN0KGNvbnN0IE5vZGVMaXN0CiB9CiAKIC8vIENvbXBpbGVzIGEg
bGlzdCBvZiB6b29tYWJsZSBzdWJ0YXJnZXRzLgotdm9pZCBjb21waWxlWm9vbWFibGVTdWJ0YXJn
ZXRzKGNvbnN0IE5vZGVMaXN0JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9tZXRyeUxp
c3QmIHN1YnRhcmdldHMpCit2b2lkIGNvbXBpbGVab29tYWJsZVN1YnRhcmdldHMoY29uc3QgTm9k
ZUxpc3RIYXNoU2V0JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9tZXRyeUxpc3QmIHN1
YnRhcmdldHMpCiB7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gaW50ZXJzZWN0ZWROb2Rlcy5sZW5n
dGgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgTm9kZSogY29uc3QgY2FuZGlkYXRlID0gaW50ZXJzZWN0ZWROb2Rlcy5pdGVtKGkpOworICAg
IE5vZGVMaXN0SGFzaFNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW50ZXJzZWN0ZWROb2Rlcy5l
bmQoKTsKKyAgICBmb3IgKE5vZGVMaXN0SGFzaFNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBpbnRl
cnNlY3RlZE5vZGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBOb2RlKiBj
b25zdCBjYW5kaWRhdGUgPSBpdC0+Z2V0KCk7CiAgICAgICAgIGlmIChub2RlSXNab29tVGFyZ2V0
KGNhbmRpZGF0ZSkpCiAgICAgICAgICAgICBhcHBlbmRab29tYWJsZVN1YnRhcmdldHMoY2FuZGlk
YXRlLCBzdWJ0YXJnZXRzKTsKICAgICB9CkBAIC00NzYsNyArNDc2LDcgQEAgYm9vbCBmaW5kTm9k
ZVdpdGhMb3dlc3REaXN0YW5jZU1ldHJpYyhObwogCiB9IC8vIG5hbWVzcGFjZSBUb3VjaEFkanVz
dG1lbnQKIAotYm9vbCBmaW5kQmVzdENsaWNrYWJsZUNhbmRpZGF0ZShOb2RlKiYgdGFyZ2V0Tm9k
ZSwgSW50UG9pbnQgJnRhcmdldFBvaW50LCBjb25zdCBJbnRQb2ludCAmdG91Y2hIb3RzcG90LCBj
b25zdCBJbnRSZWN0ICZ0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0JiBub2RlTGlzdCkKK2Jvb2wg
ZmluZEJlc3RDbGlja2FibGVDYW5kaWRhdGUoTm9kZSomIHRhcmdldE5vZGUsIEludFBvaW50ICZ0
YXJnZXRQb2ludCwgY29uc3QgSW50UG9pbnQgJnRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCAm
dG91Y2hBcmVhLCBjb25zdCBOb2RlTGlzdEhhc2hTZXQmIG5vZGVMaXN0KQogewogICAgIEludFJl
Y3QgdGFyZ2V0QXJlYTsKICAgICBUb3VjaEFkanVzdG1lbnQ6OlN1YnRhcmdldEdlb21ldHJ5TGlz
dCBzdWJ0YXJnZXRzOwpAQCAtNDg0LDcgKzQ4NCw3IEBAIGJvb2wgZmluZEJlc3RDbGlja2FibGVD
YW5kaWRhdGUoTm9kZSomIHQKICAgICByZXR1cm4gVG91Y2hBZGp1c3RtZW50OjpmaW5kTm9kZVdp
dGhMb3dlc3REaXN0YW5jZU1ldHJpYyh0YXJnZXROb2RlLCB0YXJnZXRQb2ludCwgdGFyZ2V0QXJl
YSwgdG91Y2hIb3RzcG90LCB0b3VjaEFyZWEsIHN1YnRhcmdldHMsIFRvdWNoQWRqdXN0bWVudDo6
aHlicmlkRGlzdGFuY2VGdW5jdGlvbik7CiB9CiAKLWJvb2wgZmluZEJlc3RDb250ZXh0TWVudUNh
bmRpZGF0ZShOb2RlKiYgdGFyZ2V0Tm9kZSwgSW50UG9pbnQgJnRhcmdldFBvaW50LCBjb25zdCBJ
bnRQb2ludCAmdG91Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0ICZ0b3VjaEFyZWEsIGNvbnN0IE5v
ZGVMaXN0JiBub2RlTGlzdCkKK2Jvb2wgZmluZEJlc3RDb250ZXh0TWVudUNhbmRpZGF0ZShOb2Rl
KiYgdGFyZ2V0Tm9kZSwgSW50UG9pbnQgJnRhcmdldFBvaW50LCBjb25zdCBJbnRQb2ludCAmdG91
Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0ICZ0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0SGFzaFNl
dCYgbm9kZUxpc3QpCiB7CiAgICAgSW50UmVjdCB0YXJnZXRBcmVhOwogICAgIFRvdWNoQWRqdXN0
bWVudDo6U3VidGFyZ2V0R2VvbWV0cnlMaXN0IHN1YnRhcmdldHM7CkBAIC00OTIsNyArNDkyLDcg
QEAgYm9vbCBmaW5kQmVzdENvbnRleHRNZW51Q2FuZGlkYXRlKE5vZGUqJgogICAgIHJldHVybiBU
b3VjaEFkanVzdG1lbnQ6OmZpbmROb2RlV2l0aExvd2VzdERpc3RhbmNlTWV0cmljKHRhcmdldE5v
ZGUsIHRhcmdldFBvaW50LCB0YXJnZXRBcmVhLCB0b3VjaEhvdHNwb3QsIHRvdWNoQXJlYSwgc3Vi
dGFyZ2V0cywgVG91Y2hBZGp1c3RtZW50OjpoeWJyaWREaXN0YW5jZUZ1bmN0aW9uKTsKIH0KIAot
Ym9vbCBmaW5kQmVzdFpvb21hYmxlQXJlYShOb2RlKiYgdGFyZ2V0Tm9kZSwgSW50UmVjdCYgdGFy
Z2V0QXJlYSwgY29uc3QgSW50UG9pbnQmIHRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCYgdG91
Y2hBcmVhLCBjb25zdCBOb2RlTGlzdCYgbm9kZUxpc3QpCitib29sIGZpbmRCZXN0Wm9vbWFibGVB
cmVhKE5vZGUqJiB0YXJnZXROb2RlLCBJbnRSZWN0JiB0YXJnZXRBcmVhLCBjb25zdCBJbnRQb2lu
dCYgdG91Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0JiB0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0
SGFzaFNldCYgbm9kZUxpc3QpCiB7CiAgICAgSW50UG9pbnQgdGFyZ2V0UG9pbnQ7CiAgICAgVG91
Y2hBZGp1c3RtZW50OjpTdWJ0YXJnZXRHZW9tZXRyeUxpc3Qgc3VidGFyZ2V0czsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuaAkocmV2aXNpb24gMTQ5MTY1KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgs
OSArMjgsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIGZpbmRCZXN0Q2xpY2th
YmxlQ2FuZGlkYXRlKE5vZGUqJiB0YXJnZXROb2RlLCBJbnRQb2ludCYgdGFyZ2V0UG9pbnQsIGNv
bnN0IEludFBvaW50JiB0b3VjaEhvdHNwb3QsIGNvbnN0IEludFJlY3QmIHRvdWNoQXJlYSwgY29u
c3QgTm9kZUxpc3QmKTsKLWJvb2wgZmluZEJlc3RDb250ZXh0TWVudUNhbmRpZGF0ZShOb2RlKiYg
dGFyZ2V0Tm9kZSwgSW50UG9pbnQmIHRhcmdldFBvaW50LCBjb25zdCBJbnRQb2ludCYgdG91Y2hI
b3RzcG90LCBjb25zdCBJbnRSZWN0JiB0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0Jik7Ci1ib29s
IGZpbmRCZXN0Wm9vbWFibGVBcmVhKE5vZGUqJiB0YXJnZXROb2RlLCBJbnRSZWN0JiB0YXJnZXRB
cmVhLCBjb25zdCBJbnRQb2ludCYgdG91Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0JiB0b3VjaEFy
ZWEsIGNvbnN0IE5vZGVMaXN0Jik7Cit0eXBlZGVmIExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+
IE5vZGVMaXN0SGFzaFNldDsKKworYm9vbCBmaW5kQmVzdENsaWNrYWJsZUNhbmRpZGF0ZShOb2Rl
KiYgdGFyZ2V0Tm9kZSwgSW50UG9pbnQmIHRhcmdldFBvaW50LCBjb25zdCBJbnRQb2ludCYgdG91
Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0JiB0b3VjaEFyZWEsIGNvbnN0IE5vZGVMaXN0SGFzaFNl
dCYpOworYm9vbCBmaW5kQmVzdENvbnRleHRNZW51Q2FuZGlkYXRlKE5vZGUqJiB0YXJnZXROb2Rl
LCBJbnRQb2ludCYgdGFyZ2V0UG9pbnQsIGNvbnN0IEludFBvaW50JiB0b3VjaEhvdHNwb3QsIGNv
bnN0IEludFJlY3QmIHRvdWNoQXJlYSwgY29uc3QgTm9kZUxpc3RIYXNoU2V0Jik7Citib29sIGZp
bmRCZXN0Wm9vbWFibGVBcmVhKE5vZGUqJiB0YXJnZXROb2RlLCBJbnRSZWN0JiB0YXJnZXRBcmVh
LCBjb25zdCBJbnRQb2ludCYgdG91Y2hIb3RzcG90LCBjb25zdCBJbnRSZWN0JiB0b3VjaEFyZWEs
IGNvbnN0IE5vZGVMaXN0SGFzaFNldCYpOwogLy8gRklYTUU6IEltcGxlbWVudCB0aGUgc2ltaWxh
ciBmdW5jdGlvbnMgZm9yIG90aGVyIGdlc3R1cmVzIGhlcmUgYXMgd2VsbC4KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2
aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTWVudUxpc3Qu
aCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0
LmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgiCkBAIC04OSw2ICs5MCw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
ICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3BlbGxDaGVja2VyLmgiCisjaW5j
bHVkZSAiU3RhdGljTm9kZUxpc3QuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIK
ICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUcmVlU2NvcGUuaCIKQEAgLTE0
MTQsNyArMTQxNiw3IEBAIFBhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IEludGVybmFsczo6dG8K
IH0KICNlbmRpZgogCi1QYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnRlcm5hbHM6Om5vZGVzRnJvbVJl
Y3QoRG9jdW1lbnQqIGRvY3VtZW50LCBpbnQgeCwgaW50IHksIHVuc2lnbmVkIHRvcFBhZGRpbmcs
IHVuc2lnbmVkIHJpZ2h0UGFkZGluZywKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IEludGVybmFsczo6
bm9kZXNGcm9tUmVjdChEb2N1bWVudCogZG9jdW1lbnQsIGludCBjZW50ZXJYLCBpbnQgY2VudGVy
WSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLAogICAgIHVuc2ln
bmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBw
aW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBhbGxvd0NoaWxkRnJhbWVDb250ZW50
LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1
bWVudC0+ZnJhbWUoKSB8fCAhZG9jdW1lbnQtPmZyYW1lKCktPnZpZXcoKSkgewpAQCAtMTQyMiw2
ICsxNDI0LDE1IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEludGVybmFsczo6bm9kZXNGcm8KICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZy
YW1lKCk7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBkb2N1bWVudC0+dmlldygpOworICAg
IFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBkb2N1bWVudC0+cmVuZGVyVmlldygpOworICAgIGlm
ICghcmVuZGVyVmlldykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmbG9hdCB6b29tRmFjdG9y
ID0gZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCk7CisgICAgTGF5b3V0UG9pbnQgcG9pbnQgPSByb3Vu
ZGVkTGF5b3V0UG9pbnQoRmxvYXRQb2ludChjZW50ZXJYICogem9vbUZhY3RvciArIGZyYW1lVmll
dy0+c2Nyb2xsWCgpLCBjZW50ZXJZICogem9vbUZhY3RvciArIGZyYW1lVmlldy0+c2Nyb2xsWSgp
KSk7CisKICAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBI
aXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlOwogICAgIGlm
IChpZ25vcmVDbGlwcGluZykKICAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6SWdu
b3JlQ2xpcHBpbmc7CkBAIC0xNDMwLDcgKzE0NDEsMjggQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4g
SW50ZXJuYWxzOjpub2Rlc0ZybwogICAgIGlmIChhbGxvd0NoaWxkRnJhbWVDb250ZW50KQogICAg
ICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50Owog
Ci0gICAgcmV0dXJuIGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFBhZGRpbmcsIHJp
Z2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGhpdFR5cGUpOworICAgIEhp
dFRlc3RSZXF1ZXN0IHJlcXVlc3QoaGl0VHlwZSk7CisKKyAgICAvLyBXaGVuIGlnbm9yZUNsaXBw
aW5nIGlzIGZhbHNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIG51bGwgZm9yIGNvb3JkaW5hdGVzIG91
dHNpZGUgb2YgdGhlIHZpZXdwb3J0LgorICAgIGlmICghcmVxdWVzdC5pZ25vcmVDbGlwcGluZygp
ICYmICFmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLmludGVyc2VjdHMoSGl0VGVzdExv
Y2F0aW9uOjpyZWN0Rm9yUG9pbnQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90
dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBWZWN0
b3I8UmVmUHRyPE5vZGU+ID4gbWF0Y2hlczsKKworICAgIC8vIE5lZWQgcGFkZGluZyB0byB0cmln
Z2VyIGEgcmVjdCBiYXNlZCBoaXQgdGVzdCwgYnV0IHdlIHdhbnQgdG8gcmV0dXJuIGEgTm9kZUxp
c3QKKyAgICAvLyBzbyB3ZSBzcGVjaWFsIGNhc2UgdGhpcy4KKyAgICBpZiAoIXRvcFBhZGRpbmcg
JiYgIXJpZ2h0UGFkZGluZyAmJiAhYm90dG9tUGFkZGluZyAmJiAhbGVmdFBhZGRpbmcpIHsKKyAg
ICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQpOworICAgICAgICByZW5kZXJWaWV3LT5o
aXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CisgICAgICAgIGlmIChyZXN1bHQuaW5uZXJOb2RlKCkp
CisgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChyZXN1bHQuaW5uZXJOb2RlKCktPmRlcHJlY2F0
ZWRTaGFkb3dBbmNlc3Rvck5vZGUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGlu
ZywgbGVmdFBhZGRpbmcpOworICAgICAgICByZW5kZXJWaWV3LT5oaXRUZXN0KHJlcXVlc3QsIHJl
c3VsdCk7CisgICAgICAgIGNvcHlUb1ZlY3RvcihyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgp
LCBtYXRjaGVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RhdGljTm9kZUxpc3Q6OmFkb3B0KG1h
dGNoZXMpOwogfQogCiB2b2lkIEludGVybmFsczo6ZW1pdEluc3BlY3RvckRpZEJlZ2luRnJhbWUo
KQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDQtMjUgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RhdGljSGFzaFNldE5vZGVMaXN0
IGlzIHVubmVjZXNzYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTUyMTkKKworICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisg
ICAgICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9y
dHMuZGVmLmluOgorCiAyMDEzLTA0LTI1ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFKFBBUlNFRF9TVFlMRV9TSEVFVF9DQUNISU5HKSBh
bmQgbWFrZSBpdCBhbHdheXMtb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9q
L1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJL
aXRFeHBvcnRzLmRlZi5pbgkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dlYktpdC9XZWJL
aXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBAQCBFWFBPUlRTCiAgICAgICAgID8/MENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbkBXZWJDb3JlQEBBQUVAVj8kUGFzc1JlZlB0ckBWTm9kZUBX
ZWJDb3JlQEBAV1RGQEBfTkFCVlN0cmluZ0AzQEBaCiAgICAgICAgID8/ME11dGV4QFdURkBAUUFF
QFhaCiAgICAgICAgID8/MFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRUBYWgorICAgICAgICA/PzFI
aXRUZXN0UmVzdWx0QFdlYkNvcmVAQFFBRUBYWgogICAgICAgICA/PzFNdXRleEBXVEZAQFFBRUBY
WgogICAgICAgICA/PzFUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVAWFoKICAgICAgICAgP2FkZFRl
eHRNYXRjaE1hcmtlckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFBCVlJh
bmdlQDJAX05AWgpAQCAtMTkxLDYgKzE5Miw3IEBAIEVYUE9SVFMKICAgICAgICAgP2dldERhdGEx
NlNsb3dDYXNlQFN0cmluZ0ltcGxAV1RGQEBBQkVQQl9XWFoKICAgICAgICAgP2dldExvY2F0aW9u
QW5kTGVuZ3RoRnJvbVJhbmdlQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQV9OUEFWTm9kZUAyQFBC
VlJhbmdlQDJAQUFJMkBaCiAgICAgICAgID9pbnB1dFRhZ0BIVE1MTmFtZXNAV2ViQ29yZUBAM1ZR
dWFsaWZpZWROYW1lQDJAQgorICAgICAgICA/aXRlbUBTdGF0aWNOb2RlTGlzdEBXZWJDb3JlQEBV
QkVQQVZOb2RlQDJASUBaCiAgICAgICAgID9zZWxlY3RUYWdASFRNTE5hbWVzQFdlYkNvcmVAQDNW
UXVhbGlmaWVkTmFtZUAyQEIKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgICAgICA/Z2V0SGln
aGxpZ2h0QEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUJFWFBBVUhpZ2hsaWdodEAyQEBa
CkBAIC0yMjcsNyArMjI5LDEwIEBAIEVYUE9SVFMKICAgICAgICAgP25leHRTaWJsaW5nQENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2ZpcnN0Q2hpbGRA
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/bGFzdENo
aWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKKyAgICAgICAgP2xl
bmd0aEBTdGF0aWNOb2RlTGlzdEBXZWJDb3JlQEBVQkVJWFoKKyAgICAgICAgP25hbWVkSXRlbUBT
dGF0aWNOb2RlTGlzdEBXZWJDb3JlQEBVQkVQQVZOb2RlQDJAQUJWQXRvbWljU3RyaW5nQFdURkBA
QFoKICAgICAgICAgP25leHRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhY
WgorICAgICAgICA/bm9kZXNGcm9tUmVjdEBJbnRlcm5hbHNAV2ViQ29yZUBAUUJFP0FWPyRQYXNz
UmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RGQEBQQVZEb2N1bWVudEAyQEhISUlJSV9OMTFB
QUhAWgogICAgICAgICA/cHJldmlvdXNAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVA
QFFBRVhYWgogICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJAX0pAWgogICAgICAg
ICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJAX0tAWgpAQCAtMzA0LDcgKzMwOSw2IEBAIEVY
UE9SVFMKICAgICAgICAgPz8xQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBATUFF
QFhaCiAgICAgICAgID9jb250ZXh0RGVzdHJveWVkQENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
QFdlYkNvcmVAQFVBRVhYWgogICAgICAgICA/PzBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBX
ZWJDb3JlQEBRQUVAUEFWU2NyaXB0RXhlY3V0aW9uQ29udGV4dEAxQEBaCi0gICAgICAgID9ub2Rl
c0Zyb21SZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxpc3RA
V2ViQ29yZUBAQFdURkBASEhJSUlJSUBaCiAgICAgICAgID9zZWxlY3Rpb25TdGFydEhhc01hcmtl
ckZvckBFZGl0b3JAV2ViQ29yZUBAUUJFX05XNE1hcmtlclR5cGVARG9jdW1lbnRNYXJrZXJAMkBI
SEBaCiAgICAgICAgID9pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZEBFZGl0b3JAV2Vi
Q29yZUBAUUJFX05YWgogICAgICAgICA/dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmdARWRp
dG9yQFdlYkNvcmVAQFFBRVhYWgpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ5MTY1
KQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTMtMDQtMjUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgU3RhdGljSGFzaFNldE5vZGVMaXN0IGlzIHVubmVjZXNzYXJ5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTUyMTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisgICAgICAgICogV2ViS2l0LnZjcHJvai9XZWJL
aXRFeHBvcnRzLmRlZi5pbjoKKwogMjAxMy0wNC0yNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENvbnNvbGVNZXNzYWdlIHNo
b3VsZCBpbmNsdWRlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXIgd2hlcmUgcG9zc2libGUKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRz
LmRlZi5pbgkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZj
cHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw3
IEBAIEVYUE9SVFMKICAgICAgICAgPz8wQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uQFdlYkNv
cmVAQEFBRUBWPyRQYXNzUmVmUHRyQFZOb2RlQFdlYkNvcmVAQEBXVEZAQF9OQUJWU3RyaW5nQDNA
QFoKICAgICAgICAgPz8wTXV0ZXhAV1RGQEBRQUVAWFoKICAgICAgICAgPz8wVGhyZWFkQ29uZGl0
aW9uQFdURkBAUUFFQFhaCisgICAgICAgID8/MUhpdFRlc3RSZXN1bHRAV2ViQ29yZUBAUUFFQFha
CiAgICAgICAgID8/MU11dGV4QFdURkBAUUFFQFhaCiAgICAgICAgID8/MVRocmVhZENvbmRpdGlv
bkBXVEZAQFFBRUBYWgogICAgICAgICA/YWRkVGV4dE1hdGNoTWFya2VyQERvY3VtZW50TWFya2Vy
Q29udHJvbGxlckBXZWJDb3JlQEBRQUVYUEJWUmFuZ2VAMkBfTkBaCkBAIC0xOTEsNiArMTkyLDcg
QEAgRVhQT1JUUwogICAgICAgICA/Z2V0RGF0YTE2U2xvd0Nhc2VAU3RyaW5nSW1wbEBXVEZAQEFC
RVBCX1dYWgogICAgICAgICA/Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2VAVGV4dEl0ZXJh
dG9yQFdlYkNvcmVAQFNBX05QQVZOb2RlQDJAUEJWUmFuZ2VAMkBBQUkyQFoKICAgICAgICAgP2lu
cHV0VGFnQEhUTUxOYW1lc0BXZWJDb3JlQEAzVlF1YWxpZmllZE5hbWVAMkBCCisgICAgICAgID9p
dGVtQFN0YXRpY05vZGVMaXN0QFdlYkNvcmVAQFVCRVBBVk5vZGVAMkBJQFoKICAgICAgICAgP3Nl
bGVjdFRhZ0BIVE1MTmFtZXNAV2ViQ29yZUBAM1ZRdWFsaWZpZWROYW1lQDJAQgogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAgICAgICAgID9nZXRIaWdobGlnaHRASW5zcGVjdG9yQ29udHJvbGxlckBX
ZWJDb3JlQEBRQkVYUEFVSGlnaGxpZ2h0QDJAQFoKQEAgLTIyNyw3ICsyMjksMTAgQEAgRVhQT1JU
UwogICAgICAgICA/bmV4dFNpYmxpbmdAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVA
QFFBRVhYWgogICAgICAgICA/Zmlyc3RDaGlsZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2Vi
Q29yZUBAUUFFWFhaCiAgICAgICAgID9sYXN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
QFdlYkNvcmVAQFFBRVhYWgorICAgICAgICA/bGVuZ3RoQFN0YXRpY05vZGVMaXN0QFdlYkNvcmVA
QFVCRUlYWgorICAgICAgICA/bmFtZWRJdGVtQFN0YXRpY05vZGVMaXN0QFdlYkNvcmVAQFVCRVBB
Vk5vZGVAMkBBQlZBdG9taWNTdHJpbmdAV1RGQEBAWgogICAgICAgICA/bmV4dEBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCisgICAgICAgID9ub2Rlc0Zyb21SZWN0QElu
dGVybmFsc0BXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBX
VEZAQFBBVkRvY3VtZW50QDJASEhJSUlJX04xMUFBSEBaCiAgICAgICAgID9wcmV2aW91c0BDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9udW1iZXJAU3Ry
aW5nQFdURkBAU0E/QVYxMkBfSkBaCiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYx
MkBfS0BaCkBAIC0zMDQsNyArMzA5LDYgQEAgRVhQT1JUUwogICAgICAgICA/PzFDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBNQUVAWFoKICAgICAgICAgP2NvbnRleHREZXN0cm95
ZWRAQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAVUFFWFhaCiAgICAgICAgID8/
MENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFFBRUBQQVZTY3JpcHRFeGVjdXRp
b25Db250ZXh0QDFAQFoKLSAgICAgICAgP25vZGVzRnJvbVJlY3RARG9jdW1lbnRAV2ViQ29yZUBA
UUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RGQEBISElJSUlJQFoKICAg
ICAgICAgP3NlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yQEVkaXRvckBXZWJDb3JlQEBRQkVfTlc0
TWFya2VyVHlwZUBEb2N1bWVudE1hcmtlckAyQEhIQFoKICAgICAgICAgP2lzQ29udGludW91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkQEVkaXRvckBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID90b2dn
bGVDb250aW51b3VzU3BlbGxDaGVja2luZ0BFZGl0b3JAV2ViQ29yZUBAUUFFWFhaCkluZGV4OiBT
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9hdXRv
dG9vbHMvc3ltYm9scy5maWx0ZXIJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXIJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcgQEAgX1pON1dl
YkNvcmUxMHRvRG9jdW1lbnRFTjNKU0M3SlNWYWx1ZUU7CiBfWk43V2ViQ29yZTEwQ2xpZW50UmVj
dEMxRXY7CiBfWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNfN0ludFJlY3RFOwogX1pON1dl
YkNvcmUxMFNoYWRvd1Jvb3Q2Y3JlYXRlRVBOU183RWxlbWVudEVSaTsKK19aTjdXZWJDb3JlMTBS
ZW5kZXJWaWV3N2hpdFRlc3RFUktOU18xNEhpdFRlc3RSZXF1ZXN0RVJOU18xM0hpdFRlc3RSZXN1
bHRFOwogX1pON1dlYkNvcmUxMW1lbW9yeUNhY2hlRXY7CiBfWk43V2ViQ29yZTExRXZlbnRUYXJn
ZXQxN3RvR2VuZXJhdGVkU3RyZWFtRXY7CiBfWk43V2ViQ29yZTExRXZlbnRUYXJnZXQ4dG9TdHJl
YW1FdjsKQEAgLTY4LDYgKzY5LDggQEAgX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjI5Z2V0TG9j
YXRpb25BbgogX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjI5Z2V0TG9jYXRpb25BbmRMZW5ndGhG
cm9tUmFuZ2VFUE5TXzROb2RlRVBLTlNfNVJhbmdlRVJtUzZfOwogX1pON1dlYkNvcmUxMlByaW50
Q29udGV4dDIwcGFnZU51bWJlckZvckVsZW1lbnRFUE5TXzdFbGVtZW50RVJLTlNfOUZsb2F0U2l6
ZUU7CiBfWk43V2ViQ29yZTEyV29ya2VyVGhyZWFkMTd3b3JrZXJUaHJlYWRDb3VudEV2OworX1pO
N1dlYkNvcmUxM0hpdFRlc3RSZXN1bHRDMUVSS05TXzExTGF5b3V0UG9pbnRFOworX1pON1dlYkNv
cmUxM0hpdFRlc3RSZXN1bHREMUV2OwogX1pON1dlYkNvcmUxM2NyZWF0ZVdyYXBwZXJFUE4zSlND
OUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfNE5vZGVFOwogX1pON1dlYkNv
cmUxNENsaWVudFJlY3RMaXN0QzFFdjsKIF9aTjdXZWJDb3JlMTRDbGllbnRSZWN0TGlzdEQxRXY7
CkBAIC0yNTYsNiArMjU5LDggQEAgX1pOSzdXZWJDb3JlNUZyYW1lMjV0cmFja2VkUmVwYWludFJl
Y3RzQQogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFs
T2JqZWN0RVBOM1dURjExQXJyYXlCdWZmZXJFOwogX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyNnJl
bG9hZEViOwogX1pON1dlYkNvcmUxM3RvQXJyYXlCdWZmZXJFTjNKU0M3SlNWYWx1ZUU7CitfWk43
V2ViQ29yZTEzSGl0VGVzdFJlc3VsdEMxRVJLTlNfMTFMYXlvdXRQb2ludEVqampqOworX1pON1dl
YkNvcmUxNUhpdFRlc3RMb2NhdGlvbjEycmVjdEZvclBvaW50RVJLTlNfMTFMYXlvdXRQb2ludEVq
ampqOwogX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUktOM1dURjZT
dHJpbmdFOwogX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUQxRXY7CiBfWk43V2Vi
Q29yZTI0U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uMTZoYXNTaGFkb3dFbGVtZW50RVBLTlNfMTBT
aGFkb3dSb290RTsKQEAgLTMwMSw2ICszMDYsMTEgQEAgX1pON1dlYkNvcmUxMnRvVGltZVJhbmdl
c0VOM0pTQzdKU1ZhbHVlRQogX1pON1dlYkNvcmUxNHRvRmxvYXQzMkFycmF5RU4zSlNDN0pTVmFs
dWVFOwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFs
T2JqZWN0RVBOU18xMFRpbWVSYW5nZXNFOwogX1pOSzdXZWJDb3JlMTBUaW1lUmFuZ2VzN25lYXJl
c3RFZDsKK19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE5cmVjdEJhc2VkVGVzdFJlc3VsdEV2
OworX1pOSzdXZWJDb3JlNE5vZGUyOGRlcHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5vZGVFdjsKK19a
Tks3V2ViQ29yZTdJbnRSZWN0MTBpbnRlcnNlY3RzRVJLUzBfOworX1pOSzdXZWJDb3JlOERvY3Vt
ZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamo7CitfWlRWTjdXZWJDb3JlMTRTdGF0aWNOb2RlTGlz
dEU7CiAKIGxvY2FsOgogX1oqOwo=
</data>
<flag name="commit-queue"
          id="221437"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>