<?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>115757</bug_id>
          
          <creation_ts>2013-05-07 14:06:31 -0700</creation_ts>
          <short_desc>Remove SelectRuleFeatureSet</short_desc>
          <delta_ts>2013-05-07 19:02:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>885958</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-05-07 14:06:31 -0700</bug_when>
    <thetext>Dead code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885962</commentid>
    <comment_count>1</comment_count>
      <attachid>200972</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-05-07 14:13:17 -0700</bug_when>
    <thetext>Created attachment 200972
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885969</commentid>
    <comment_count>2</comment_count>
      <attachid>200972</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-05-07 14:21:49 -0700</bug_when>
    <thetext>Comment on attachment 200972
patch

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

&gt; Source/WebCore/dom/Element.cpp:1472
&gt; +void Element::didAffectSelector(AffectedSelectorMask )

Extra space before the parenthesis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885970</commentid>
    <comment_count>3</comment_count>
      <attachid>200972</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-07 14:23:22 -0700</bug_when>
    <thetext>Comment on attachment 200972
patch

Attachment 200972 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/347254</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885975</commentid>
    <comment_count>4</comment_count>
      <attachid>200972</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-07 14:27:11 -0700</bug_when>
    <thetext>Comment on attachment 200972
patch

Attachment 200972 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/359183</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885983</commentid>
    <comment_count>5</comment_count>
      <attachid>200972</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-07 14:43:35 -0700</bug_when>
    <thetext>Comment on attachment 200972
patch

Attachment 200972 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/355185</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886074</commentid>
    <comment_count>6</comment_count>
      <attachid>201007</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-05-07 18:08:01 -0700</bug_when>
    <thetext>Created attachment 201007
for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886075</commentid>
    <comment_count>7</comment_count>
      <attachid>201008</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-05-07 18:09:31 -0700</bug_when>
    <thetext>Created attachment 201008
for landing 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886091</commentid>
    <comment_count>8</comment_count>
      <attachid>201011</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-05-07 18:39:28 -0700</bug_when>
    <thetext>Created attachment 201011
for landing 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886100</commentid>
    <comment_count>9</comment_count>
      <attachid>201011</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-07 19:02:42 -0700</bug_when>
    <thetext>Comment on attachment 201011
for landing 3

Clearing flags on attachment: 201011

Committed r149708: &lt;http://trac.webkit.org/changeset/149708&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886101</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-07 19:02:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200972</attachid>
            <date>2013-05-07 14:13:17 -0700</date>
            <delta_ts>2013-05-07 18:08:01 -0700</delta_ts>
            <desc>patch</desc>
            <filename>remove-selectrulefeatureset-2.patch</filename>
            <type>text/plain</type>
            <size>30952</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTY5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEzLTA1LTA3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgU2VsZWN0UnVsZUZl
YXR1cmVTZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgaXMgZGVhZCBjb2RlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
ZGlkQWZmZWN0U2VsZWN0b3IpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChF
bGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudFNoYWRvdy5oOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudFNoYWRvdzo6aW52YWxpZGF0ZURpc3RyaWJ1dGlvbik6CisgICAgICAgICogaHRt
bC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnREaXN0cmlidXRvcjo6Q29udGVudERpc3RyaWJ1dG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGh0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oOgorICAgICAgICAoQ29u
dGVudERpc3RyaWJ1dG9yKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6aW5zZXJ0ZWRJbnRvKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjpyZW1vdmVkRnJvbSk6CisgICAgICAgICog
aHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKEluc2VydGlvblBvaW50KToK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTMtMDUtMDcgIENocmlzIEZsZWl6
YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWcgMTE1Njk0IC0gRml4IGJh
ZCBjYXN0IHRvIFJlbmRlckhUTUxDYW52YXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAxNDk2NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMTU3OCw3ICsxNTc4LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKICAgICBodG1sL3NoYWRvdy9NZXRlclNoYWRv
d0VsZW1lbnQuY3BwCiAgICAgaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAot
ICAgIGh0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcAogICAgIGh0bWwvc2hhZG93
L1NsaWRlclRodW1iRWxlbWVudC5jcHAKICAgICBodG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVu
dC5jcHAKICAgICBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0OTY1MikKKysrIFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTM3NTAsOCAr
Mzc1MCw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWV0ZXJTaGFkb3dFbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1By
b2dyZXNzU2hhZG93RWxlbWVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1By
b2dyZXNzU2hhZG93RWxlbWVudC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TZWxl
Y3RSdWxlRmVhdHVyZVNldC5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVj
dFJ1bGVGZWF0dXJlU2V0LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRo
dW1iRWxlbWVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVu
dC5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxNDk2NTIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC03NzMsNyArNzczLDYgQEAgU09VUkNF
UyArPSBcCiAgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcCBcCiAgICAgaHRt
bC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvUHJvZ3Jl
c3NTaGFkb3dFbGVtZW50LmNwcCBcCi0gICAgaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVT
ZXQuY3BwIFwKICAgICBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIFwKICAgICBo
dG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAgXAogICAgIGh0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlz
aW9uIDE0OTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNv
cHkpCkBAIC01ODQsNyArNTg0LDYgQEAgX19aTjdXZWJDb3JlMTdsYW5ndWFnZURpZENoYW5nZUV2
CiBfX1pON1dlYkNvcmUxN29wZW5UZW1wb3JhcnlGaWxlRVJLTjNXVEY2U3RyaW5nRVJpCiBfX1pO
N1dlYkNvcmUxN3NldENvb2tpZXNGcm9tRE9NRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25F
UktOU180S1VSTEVTNV9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE3dXNlclZpc2libGVT
dHJpbmdFUDVOU1VSTAotX19aTjdXZWJDb3JlMThDb250ZW50RGlzdHJpYnV0b3IyMmVuc3VyZVNl
bGVjdEZlYXR1cmVTZXRFUE5TXzEzRWxlbWVudFNoYWRvd0UKIF9fWk43V2ViQ29yZTE4RE9NV2lu
ZG93RXh0ZW5zaW9uQzFFUE5TXzVGcmFtZUVQTlNfMTVET01XcmFwcGVyV29ybGRFCiBfX1pON1dl
YkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDEwdW5pcXVlTmFtZUV2CiBfX1pON1dlYkNvcmUxOFBs
YXRmb3JtUGFzdGVib2FyZDEzYnVmZmVyRm9yVHlwZUVSS04zV1RGNlN0cmluZ0UKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAx
NDk2NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagko
d29ya2luZyBjb3B5KQpAQCAtNjU1OTgsMTQgKzY1NTk4LDYgQEAKIAkJCQkJPgogCQkJCTwvRmls
ZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcc2hhZG93XFNlbGVjdFJ1
bGVGZWF0dXJlU2V0LmNwcCIKLQkJCQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQotCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcc2hhZG93XFNlbGVjdFJ1bGVGZWF0dXJlU2V0LmgiCi0JCQkJ
CT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHNo
YWRvd1xTbGlkZXJUaHVtYkVsZW1lbnQuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTQ5NjUyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjU4LDggKzE2NTgsNiBAQAogCQk1M0VG
NzY2QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCBpbiBDb3B5IEdlbmVyYXRl
ZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUY3NjZBMTY1
MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9OwogCQk1NTBBMEJDOTA4NUY2
MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlm
aWVkTmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZp
ZWROYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTU3MEI3OEJGMTY1MENFODEwMDFE
QkUxQiAvKiBTZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBCNzhCRDE2NTBDRTgxMDAxREJFMUIgLyogU2VsZWN0
UnVsZUZlYXR1cmVTZXQuY3BwICovOyB9OwotCQk1NzBCNzhDMDE2NTBDRTgxMDAxREJFMUIgLyog
U2VsZWN0UnVsZUZlYXR1cmVTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3MEI3OEJFMTY1MENFODEwMDFEQkUxQiAvKiBTZWxlY3RSdWxlRmVhdHVy
ZVNldC5oICovOyB9OwogCQk1NzNEMTM0NzE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yVHlw
ZUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTczRDEzNDUxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmNwcCAq
LzsgfTsKIAkJNTc4REEyMEUxNTIwRUI4QzAwNjE0MUMxIC8qIEluc3BlY3RvckZyb250ZW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjRGNUZGQzEx
Q0JEMzAxMDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzhEQTIwRjE1MjBFQkEzMDA2MTQxQzEg
LyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBl
QnVpbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC04MDYzLDggKzgwNjEsNiBAQAogCQk1M0VGNzY2QTE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0
dGluZ3NNYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2V0dGluZ3NN
YWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwQTBCQzcwODVGNjAzOTAw
NzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4
NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQk1NzBCNzhCRDE2
NTBDRTgxMDAxREJFMUIgLyogU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk1NzBCNzhCRTE2NTBDRTgxMDAxREJFMUIgLyogU2VsZWN0
UnVsZUZlYXR1cmVTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VsZWN0
UnVsZUZlYXR1cmVTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczRDEzNDUx
NENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclR5cGVCdWlsZGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczRDEzNDYxNENFMzlGRjAwNTdBQkNBIC8qIEluc3Bl
Y3RvclR5cGVCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3Bl
Y3RvclR5cGVCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3Qjc5MTlG
MTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50RGlzdHJpYnV0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudERpc3RyaWJ1dG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzOTQzLDggKzEzOTM5LDYgQEAKIAkJCQlBNzhFNTI2RTEz
NDZCRDE3MDBBRDlDMzEgLyogTWV0ZXJTaGFkb3dFbGVtZW50LmggKi8sCiAJCQkJQTcxNUU2NTAx
MzRCQkJFQzAwRDhFNzEzIC8qIFByb2dyZXNzU2hhZG93RWxlbWVudC5jcHAgKi8sCiAJCQkJQTcx
NUU2NTExMzRCQkJFQzAwRDhFNzEzIC8qIFByb2dyZXNzU2hhZG93RWxlbWVudC5oICovLAotCQkJ
CTU3MEI3OEJEMTY1MENFODEwMDFEQkUxQiAvKiBTZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAgKi8s
Ci0JCQkJNTcwQjc4QkUxNjUwQ0U4MTAwMURCRTFCIC8qIFNlbGVjdFJ1bGVGZWF0dXJlU2V0Lmgg
Ki8sCiAJCQkJNDE1MEY5RjAxMkI2RTBFNzAwMDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVudC5j
cHAgKi8sCiAJCQkJNDE1MEY5RUYxMkI2RTBFNzAwMDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVu
dC5oICovLAogCQkJCTQ1MTI1MDIwMTVEQ0UzN0QwMDJGODRFMiAvKiBTcGluQnV0dG9uRWxlbWVu
dC5jcHAgKi8sCkBAIC0yMzM5OCw3ICsyMzM5Miw2IEBACiAJCQkJNDFCOENENDYxNkQwNDU5MTAw
MEU4Q0MwIC8qIFNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTUwNzE1ODE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0NTMyMkFDMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmggaW4gSGVh
ZGVycyAqLywKLQkJCQk1NzBCNzhDMDE2NTBDRTgxMDAxREJFMUIgLyogU2VsZWN0UnVsZUZlYXR1
cmVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NUU0OTc2MTA3NTJBQ0IwMEM5Qjg5NiAvKiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTEwMDk5RTY0
OTIwMDU2RTU4MSAvKiBTZXROb2RlQXR0cmlidXRlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjhEQkRCNEMxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlvbkNvbW1hbmQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjY0NzUsNyArMjY0NjgsNiBAQAogCQkJCTQxQjhDRDQ1MTZEMDQ1OTEw
MDBFOENDMCAvKiBTZWxlY3RvckNoZWNrZXJGYXN0UGF0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0MTUwNzE1NzE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTQ1MzIyQUIxNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNTcwQjc4QkYxNjUwQ0U4MTAwMURCRTFCIC8qIFNlbGVjdFJ1
bGVGZWF0dXJlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NUU0OTc3MTA3NTJBQ0IwMEM5
Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMz
MDlFMEYwOTlFNjQ5MjAwNTZFNTgxIC8qIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUI4REJEQjRCMTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25D
b21tYW5kLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ5NjUyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04NDksMTEgKzg0OSw2IEBAIHN0YXRpYyBib29sIGNoZWNrTmVlZHNTdHlsZUlu
dmFsaWRhdGlvbkYKIAogdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUsIEF0dHJpYnV0ZU1v
ZGlmaWNhdGlvblJlYXNvbikKIHsKLSAgICBpZiAoRWxlbWVudFNoYWRvdyogcGFyZW50RWxlbWVu
dFNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKHRoaXMpKSB7Ci0gICAgICAg
IGlmIChzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQocGFy
ZW50RWxlbWVudFNoYWRvdywgbmFtZSwgbmV3VmFsdWUpKQotICAgICAgICAgICAgcGFyZW50RWxl
bWVudFNoYWRvdy0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwotICAgIH0KLQogICAgIHBhcnNl
QXR0cmlidXRlKG5hbWUsIG5ld1ZhbHVlKTsKIAogICAgIGRvY3VtZW50KCktPmluY0RPTVRyZWVW
ZXJzaW9uKCk7CkBAIC05OTMsNDAgKzk4OCw2IEBAIHZvaWQgRWxlbWVudDo6Y2xhc3NBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnMKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCi1ib29s
IEVsZW1lbnQ6OnNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb25XaGVuQXR0cmlidXRlQ2hhbmdl
ZChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQotewotICAgIEFTU0VSVChlbGVtZW50U2hh
ZG93KTsKLSAgICBjb25zdCBTZWxlY3RSdWxlRmVhdHVyZVNldCYgZmVhdHVyZVNldCA9IGVsZW1l
bnRTaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChlbGVtZW50U2hh
ZG93KTsKLQotICAgIGlmIChpc0lkQXR0cmlidXRlTmFtZShuYW1lKSkgewotICAgICAgICBBdG9t
aWNTdHJpbmcgb2xkSWQgPSBlbGVtZW50RGF0YSgpLT5pZEZvclN0eWxlUmVzb2x1dGlvbigpOwot
ICAgICAgICBBdG9taWNTdHJpbmcgbmV3SWQgPSBtYWtlSWRGb3JTdHlsZVJlc29sdXRpb24obmV3
VmFsdWUsIGRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKTsKLSAgICAgICAgaWYgKG5ld0lkICE9
IG9sZElkKSB7Ci0gICAgICAgICAgICBpZiAoIW9sZElkLmlzRW1wdHkoKSAmJiBmZWF0dXJlU2V0
Lmhhc1NlbGVjdG9yRm9ySWQob2xkSWQpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICAgICAgaWYgKCFuZXdJZC5pc0VtcHR5KCkgJiYgZmVhdHVyZVNldC5oYXNTZWxlY3Rv
ckZvcklkKG5ld0lkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIGlmIChuYW1lID09IEhUTUxOYW1lczo6Y2xhc3NBdHRyKSB7Ci0gICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NTdHJpbmcgPSBuZXdWYWx1ZTsKLSAgICAgICAg
aWYgKGNsYXNzU3RyaW5nSGFzQ2xhc3NOYW1lKG5ld0NsYXNzU3RyaW5nKSkgewotICAgICAgICAg
ICAgY29uc3QgYm9vbCBzaG91bGRGb2xkQ2FzZSA9IGRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgp
OwotICAgICAgICAgICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgb2xkQ2xhc3NlcyA9IGVsZW1l
bnREYXRhKCktPmNsYXNzTmFtZXMoKTsKLSAgICAgICAgICAgIGNvbnN0IFNwYWNlU3BsaXRTdHJp
bmcgbmV3Q2xhc3NlcyhuZXdDbGFzc1N0cmluZywgc2hvdWxkRm9sZENhc2UpOwotICAgICAgICAg
ICAgaWYgKGNoZWNrU2VsZWN0b3JGb3JDbGFzc0NoYW5nZShvbGRDbGFzc2VzLCBuZXdDbGFzc2Vz
LCBmZWF0dXJlU2V0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG9sZENsYXNzZXMgPSBl
bGVtZW50RGF0YSgpLT5jbGFzc05hbWVzKCk7Ci0gICAgICAgICAgICBpZiAoY2hlY2tTZWxlY3Rv
ckZvckNsYXNzQ2hhbmdlKG9sZENsYXNzZXMsIGZlYXR1cmVTZXQpKQotICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGZlYXR1cmVTZXQu
aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUobmFtZS5sb2NhbE5hbWUoKSk7Ci19Ci0KIC8vIFJldHVy
bnMgdHJ1ZSBpcyB0aGUgZ2l2ZW4gYXR0cmlidXRlIGlzIGFuIGV2ZW50IGhhbmRsZXIuCiAvLyBX
ZSBjb25zaWRlciBhbiBldmVudCBoYW5kbGVyIGFueSBhdHRyaWJ1dGUgdGhhdCBiZWdpbnMgd2l0
aCAib24iLgogLy8gSXQgaXMgYSBzaW1wbGUgc29sdXRpb24gdGhhdCBoYXMgdGhlIGFkdmFudGFn
ZSBvZiBub3QgcmVxdWlyaW5nIGFueQpAQCAtMTUwOCwxMSArMTQ2OSw5IEBAIEVsZW1lbnRTaGFk
b3cqIEVsZW1lbnQ6OmVuc3VyZVNoYWRvdygpCiAgICAgcmV0dXJuIGVuc3VyZUVsZW1lbnRSYXJl
RGF0YSgpLT5lbnN1cmVTaGFkb3coKTsKIH0KIAotdm9pZCBFbGVtZW50OjpkaWRBZmZlY3RTZWxl
Y3RvcihBZmZlY3RlZFNlbGVjdG9yTWFzayBtYXNrKQordm9pZCBFbGVtZW50OjpkaWRBZmZlY3RT
ZWxlY3RvcihBZmZlY3RlZFNlbGVjdG9yTWFzayApCiB7CiAgICAgc2V0TmVlZHNTdHlsZVJlY2Fs
YygpOwotICAgIGlmIChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0gc2hhZG93T2ZQYXJl
bnRGb3JEaXN0cmlidXRpb24odGhpcykpCi0gICAgICAgIGVsZW1lbnRTaGFkb3ctPmRpZEFmZmVj
dFNlbGVjdG9yKG1hc2spOwogfQogCiBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IEVsZW1lbnQ6OmNy
ZWF0ZVNoYWRvd1Jvb3QoRXhjZXB0aW9uQ29kZSYgZWMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJ
KHJldmlzaW9uIDE0OTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTcyNyw4ICs3MjcsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjcmVhdGVV
bmlxdWVFbGVtZW50RGF0YSgpOwogCi0gICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0
aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudFNoYWRvdyosIGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKLQogICAgIEVsZW1lbnRSYXJlRGF0YSogZWxlbWVu
dFJhcmVEYXRhKCkgY29uc3Q7CiAgICAgRWxlbWVudFJhcmVEYXRhKiBlbnN1cmVFbGVtZW50UmFy
ZURhdGEoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCShyZXZpc2lvbiAx
NDk2NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NSw4ICs2NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUFsbEV2ZW50TGlz
dGVuZXJzKCk7CiAKICAgICB2b2lkIGludmFsaWRhdGVEaXN0cmlidXRpb24oKSB7IG1fZGlzdHJp
YnV0b3IuaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihob3N0KCkpOyB9Ci0gICAgdm9pZCBkaWRBZmZl
Y3RTZWxlY3RvcihBZmZlY3RlZFNlbGVjdG9yTWFzayBtYXNrKSB7IG1fZGlzdHJpYnV0b3IuZGlk
QWZmZWN0U2VsZWN0b3IoaG9zdCgpLCBtYXNrKTsgfQotICAgIHZvaWQgd2lsbEFmZmVjdFNlbGVj
dG9yKCkgeyBtX2Rpc3RyaWJ1dG9yLndpbGxBZmZlY3RTZWxlY3Rvcihob3N0KCkpOyB9CiAKICAg
ICBDb250ZW50RGlzdHJpYnV0b3ImIGRpc3RyaWJ1dG9yKCkgeyByZXR1cm4gbV9kaXN0cmlidXRv
cjsgfQogICAgIGNvbnN0IENvbnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKSBjb25zdCB7
IHJldHVybiBtX2Rpc3RyaWJ1dG9yOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAJKHJldmlzaW9uIDE0OTY1MikKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1MSw4ICsxNTEsNyBAQCBib29sIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6
aGFzSW5zZXJ0CiB9CiAKIENvbnRlbnREaXN0cmlidXRvcjo6Q29udGVudERpc3RyaWJ1dG9yKCkK
LSAgICA6IG1fbmVlZHNTZWxlY3RGZWF0dXJlU2V0KGZhbHNlKQotICAgICwgbV92YWxpZGl0eShV
bmRldGVybWluZWQpCisgICAgOiBtX3ZhbGlkaXR5KFVuZGV0ZXJtaW5lZCkKIHsKIH0KIApAQCAt
MzI1LDU3ICszMjQsNiBAQCB2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6aW52YWxpZGF0ZURpc3Ry
CiAgICAgfQogfQogCi1jb25zdCBTZWxlY3RSdWxlRmVhdHVyZVNldCYgQ29udGVudERpc3RyaWJ1
dG9yOjplbnN1cmVTZWxlY3RGZWF0dXJlU2V0KEVsZW1lbnRTaGFkb3cqIHNoYWRvdykKLXsKLSAg
ICBpZiAoIW1fbmVlZHNTZWxlY3RGZWF0dXJlU2V0KQotICAgICAgICByZXR1cm4gbV9zZWxlY3RG
ZWF0dXJlczsKLQotICAgIG1fc2VsZWN0RmVhdHVyZXMuY2xlYXIoKTsKLSAgICBpZiAoU2hhZG93
Um9vdCogcm9vdCA9IHNoYWRvdy0+c2hhZG93Um9vdCgpKQotICAgICAgICBjb2xsZWN0U2VsZWN0
RmVhdHVyZVNldEZyb20ocm9vdCk7Ci0gICAgbV9uZWVkc1NlbGVjdEZlYXR1cmVTZXQgPSBmYWxz
ZTsKLSAgICByZXR1cm4gbV9zZWxlY3RGZWF0dXJlczsKLX0KLQotdm9pZCBDb250ZW50RGlzdHJp
YnV0b3I6OmNvbGxlY3RTZWxlY3RGZWF0dXJlU2V0RnJvbShTaGFkb3dSb290KiByb290KQotewot
ICAgIGlmIChTY29wZUNvbnRlbnREaXN0cmlidXRpb246Omhhc0VsZW1lbnRTaGFkb3cocm9vdCkp
IHsKLSAgICAgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmly
c3RXaXRoaW4ocm9vdCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0
KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRv
dyA9IGVsZW1lbnQtPnNoYWRvdygpKQotICAgICAgICAgICAgICAgIG1fc2VsZWN0RmVhdHVyZXMu
YWRkKGVsZW1lbnRTaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChl
bGVtZW50U2hhZG93KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoU2NvcGVDb250ZW50
RGlzdHJpYnV0aW9uOjpoYXNDb250ZW50RWxlbWVudChyb290KSkgewotICAgICAgICBmb3IgKEVs
ZW1lbnQqIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbihyb290KTsgZWxl
bWVudDsgZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQoZWxlbWVudCkpIHsKLSAgICAg
ICAgICAgIGlmICghaXNIVE1MQ29udGVudEVsZW1lbnQoZWxlbWVudCkpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIGxpc3QgPSB0
b0hUTUxDb250ZW50RWxlbWVudChlbGVtZW50KS0+c2VsZWN0b3JMaXN0KCk7Ci0gICAgICAgICAg
ICBmb3IgKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IGxpc3QuZmlyc3QoKTsgc2VsZWN0
b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkgewotICAgICAg
ICAgICAgICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIGNvbXBvbmVudCA9IHNlbGVjdG9yOyBj
b21wb25lbnQ7IGNvbXBvbmVudCA9IGNvbXBvbmVudC0+dGFnSGlzdG9yeSgpKQotICAgICAgICAg
ICAgICAgICAgICBtX3NlbGVjdEZlYXR1cmVzLmNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3Rvcihj
b21wb25lbnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIENv
bnRlbnREaXN0cmlidXRvcjo6ZGlkQWZmZWN0U2VsZWN0b3IoRWxlbWVudCogaG9zdCwgQWZmZWN0
ZWRTZWxlY3Rvck1hc2sgbWFzaykKLXsKLSAgICBpZiAoZW5zdXJlU2VsZWN0RmVhdHVyZVNldCho
b3N0LT5zaGFkb3coKSkuaGFzU2VsZWN0b3JGb3IobWFzaykpCi0gICAgICAgIGludmFsaWRhdGVE
aXN0cmlidXRpb24oaG9zdCk7Ci19Ci0KLXZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjp3aWxsQWZm
ZWN0U2VsZWN0b3IoRWxlbWVudCogaG9zdCkKLXsKLSAgICBmb3IgKEVsZW1lbnRTaGFkb3cqIHNo
YWRvdyA9IGhvc3QtPnNoYWRvdygpOyBzaGFkb3c7IHNoYWRvdyA9IHNoYWRvdy0+Y29udGFpbmlu
Z1NoYWRvdygpKSB7Ci0gICAgICAgIGlmIChzaGFkb3ctPmRpc3RyaWJ1dG9yKCkubmVlZHNTZWxl
Y3RGZWF0dXJlU2V0KCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgc2hhZG93LT5kaXN0
cmlidXRvcigpLnNldE5lZWRzU2VsZWN0RmVhdHVyZVNldCgpOwotICAgIH0KLQotICAgIGludmFs
aWRhdGVEaXN0cmlidXRpb24oaG9zdCk7Ci19Ci0KIHZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpk
aWRTaGFkb3dCb3VuZGFyeUNoYW5nZShFbGVtZW50KiBob3N0KQogewogICAgIHNldFZhbGlkaXR5
KFVuZGV0ZXJtaW5lZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50
RGlzdHJpYnV0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9D
b250ZW50RGlzdHJpYnV0b3IuaAkocmV2aXNpb24gMTQ5NjUyKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcg
KzMxLDYgQEAKICNpZm5kZWYgQ29udGVudERpc3RyaWJ1dG9yX2gKICNkZWZpbmUgQ29udGVudERp
c3RyaWJ1dG9yX2gKIAotI2luY2x1ZGUgIlNlbGVjdFJ1bGVGZWF0dXJlU2V0LmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CkBAIC0xMTUsMTUgKzExNCwxMiBAQCBwdWJsaWM6CiAgICAgfkNvbnRl
bnREaXN0cmlidXRvcigpOwogCiAgICAgSW5zZXJ0aW9uUG9pbnQqIGZpbmRJbnNlcnRpb25Qb2lu
dEZvcihjb25zdCBOb2RlKiBrZXkpIGNvbnN0OwotICAgIGNvbnN0IFNlbGVjdFJ1bGVGZWF0dXJl
U2V0JiBlbnN1cmVTZWxlY3RGZWF0dXJlU2V0KEVsZW1lbnRTaGFkb3cqKTsKIAogICAgIHZvaWQg
ZGlzdHJpYnV0ZVNlbGVjdGlvbnNUbyhJbnNlcnRpb25Qb2ludCosIGNvbnN0IENvbnRlbnREaXN0
cmlidXRpb24mIHBvb2wsIFZlY3Rvcjxib29sPiYgZGlzdHJpYnV0ZWQpOwogICAgIHZvaWQgZGlz
dHJpYnV0ZU5vZGVDaGlsZHJlblRvKEluc2VydGlvblBvaW50KiwgQ29udGFpbmVyTm9kZSopOwog
CiAgICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKEVsZW1lbnQqIGhvc3QpOwogICAgIHZv
aWQgZGlkU2hhZG93Qm91bmRhcnlDaGFuZ2UoRWxlbWVudCogaG9zdCk7Ci0gICAgdm9pZCBkaWRB
ZmZlY3RTZWxlY3RvcihFbGVtZW50KiBob3N0LCBBZmZlY3RlZFNlbGVjdG9yTWFzayk7Ci0gICAg
dm9pZCB3aWxsQWZmZWN0U2VsZWN0b3IoRWxlbWVudCogaG9zdCk7CiAKICAgICBzdGF0aWMgdm9p
ZCBlbnN1cmVEaXN0cmlidXRpb24oU2hhZG93Um9vdCopOwogCkBAIC0xMzIsMTggKzEyOCwxMiBA
QCBwcml2YXRlOgogICAgIGJvb2wgaW52YWxpZGF0ZShFbGVtZW50KiBob3N0KTsKICAgICB2b2lk
IHBvcHVsYXRlKE5vZGUqLCBDb250ZW50RGlzdHJpYnV0aW9uJik7CiAKLSAgICB2b2lkIGNvbGxl
Y3RTZWxlY3RGZWF0dXJlU2V0RnJvbShTaGFkb3dSb290Kik7Ci0gICAgYm9vbCBuZWVkc1NlbGVj
dEZlYXR1cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX25lZWRzU2VsZWN0RmVhdHVyZVNldDsgfQot
ICAgIHZvaWQgc2V0TmVlZHNTZWxlY3RGZWF0dXJlU2V0KCkgeyBtX25lZWRzU2VsZWN0RmVhdHVy
ZVNldCA9IHRydWU7IH0KLQogICAgIHZvaWQgc2V0VmFsaWRpdHkoVmFsaWRpdHkgdmFsaWRpdHkp
IHsgbV92YWxpZGl0eSA9IHZhbGlkaXR5OyB9CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWxpZGl0eSA9PSBWYWxpZDsgfQogICAgIGJvb2wgbmVlZHNEaXN0cmlidXRpb24o
KSBjb25zdDsKICAgICBib29sIG5lZWRzSW52YWxpZGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92
YWxpZGl0eSAhPSBJbnZhbGlkYXRlZDsgfQogCiAgICAgSGFzaE1hcDxjb25zdCBOb2RlKiwgUmVm
UHRyPEluc2VydGlvblBvaW50PiA+IG1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQ7Ci0gICAgU2VsZWN0
UnVsZUZlYXR1cmVTZXQgbV9zZWxlY3RGZWF0dXJlczsKLSAgICBib29sIG1fbmVlZHNTZWxlY3RG
ZWF0dXJlU2V0IDogMTsKICAgICB1bnNpZ25lZCBtX3ZhbGlkaXR5IDogMjsKIH07CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAJKHJldmlz
aW9uIDE0OTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDggKzEzNCw2IEBAIE5vZGU6Okluc2VydGlvbk5v
dGlmaWNhdGlvblJlcXVlc3QgSW5zZXIKICAgICAgICAgICAgIGlmIChpc0FjdGl2ZSgpICYmICFt
X3JlZ2lzdGVyZWRXaXRoU2hhZG93Um9vdCAmJiBpbnNlcnRpb25Qb2ludC0+dHJlZVNjb3BlKCkt
PnJvb3ROb2RlKCkgPT0gcm9vdCkgewogICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJlZFdpdGhT
aGFkb3dSb290ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByb290LT5lbnN1cmVTY29wZURpc3Ry
aWJ1dGlvbigpLT5yZWdpc3Rlckluc2VydGlvblBvaW50KHRoaXMpOwotICAgICAgICAgICAgICAg
IGlmIChjYW5BZmZlY3RTZWxlY3RvcigpKQotICAgICAgICAgICAgICAgICAgICByb290T3duZXIt
PndpbGxBZmZlY3RTZWxlY3RvcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpA
QCAtMTYxLDggKzE1OSw2IEBAIHZvaWQgSW5zZXJ0aW9uUG9pbnQ6OnJlbW92ZWRGcm9tKENvbnRh
aW4KICAgICAgICAgQVNTRVJUKHJvb3QpOwogICAgICAgICBtX3JlZ2lzdGVyZWRXaXRoU2hhZG93
Um9vdCA9IGZhbHNlOwogICAgICAgICByb290LT5lbnN1cmVTY29wZURpc3RyaWJ1dGlvbigpLT51
bnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQodGhpcyk7Ci0gICAgICAgIGlmIChyb290T3duZXIgJiYg
Y2FuQWZmZWN0U2VsZWN0b3IoKSkKLSAgICAgICAgICAgIHJvb3RPd25lci0+d2lsbEFmZmVjdFNl
bGVjdG9yKCk7CiAgICAgfQogCiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tKGluc2VydGlv
blBvaW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9p
bnQuaAkocmV2aXNpb24gMTQ5NjUyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5z
ZXJ0aW9uUG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBNYXRjaFR5cGUgbWF0Y2hUeXBlRm9yKE5vZGUqKSB7IHJldHVybiBBbHdheXNN
YXRjaGVzOyB9CiAgICAgdmlydHVhbCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlz
dCgpIHsgcmV0dXJuIGVtcHR5U2VsZWN0b3JMaXN0KCk7IH0KICAgICB2aXJ0dWFsIFR5cGUgaW5z
ZXJ0aW9uUG9pbnRUeXBlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjYW5BZmZlY3RT
ZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29sIHJlc2V0U3R5bGVJ
bmhlcml0YW5jZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0UmVzZXRTdHlsZUluaGVyaXRhbmNlKGJv
b2wpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVT
ZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1
bGVGZWF0dXJlU2V0LmNwcAkocmV2aXNpb24gMTQ5NjUyKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2VsZWN0UnVsZUZlYXR1cmVT
ZXQuaCIKLQotI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotU2VsZWN0UnVsZUZlYXR1cmVTZXQ6OlNlbGVjdFJ1bGVGZWF0dXJlU2V0KCkKLSAgICA6IG1f
ZmVhdHVyZUZsYWdzKDApCi17Ci19Ci0KLXZvaWQgU2VsZWN0UnVsZUZlYXR1cmVTZXQ6OmFkZChj
b25zdCBTZWxlY3RSdWxlRmVhdHVyZVNldCYgZmVhdHVyZVNldCkKLXsKLSAgICBtX2Nzc1J1bGVG
ZWF0dXJlU2V0LmFkZChmZWF0dXJlU2V0Lm1fY3NzUnVsZUZlYXR1cmVTZXQpOwotICAgIG1fZmVh
dHVyZUZsYWdzIHw9IGZlYXR1cmVTZXQubV9mZWF0dXJlRmxhZ3M7Ci19Ci0KLXZvaWQgU2VsZWN0
UnVsZUZlYXR1cmVTZXQ6OmNsZWFyKCkKLXsKLSAgICBtX2Nzc1J1bGVGZWF0dXJlU2V0LmNsZWFy
KCk7Ci0gICAgbV9mZWF0dXJlRmxhZ3MgPSAwOwotfQotCi12b2lkIFNlbGVjdFJ1bGVGZWF0dXJl
U2V0Ojpjb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVj
dG9yKQotewotICAgIG1fY3NzUnVsZUZlYXR1cmVTZXQuY29sbGVjdEZlYXR1cmVzRnJvbVNlbGVj
dG9yKHNlbGVjdG9yKTsKLQotICAgIHN3aXRjaCAoc2VsZWN0b3ItPnBzZXVkb1R5cGUoKSkgewot
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NoZWNrZWQ6Ci0gICAgICAgIHNldFNlbGVjdFJ1
bGVGZWF0dXJlKEFmZmVjdGVkU2VsZWN0b3JDaGVja2VkKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRW5hYmxlZDoKLSAgICAgICAgc2V0U2VsZWN0UnVsZUZl
YXR1cmUoQWZmZWN0ZWRTZWxlY3RvckVuYWJsZWQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9EaXNhYmxlZDoKLSAgICAgICAgc2V0U2VsZWN0UnVsZUZlYXR1
cmUoQWZmZWN0ZWRTZWxlY3RvckRpc2FibGVkKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
U1NTZWxlY3Rvcjo6UHNldWRvSW5kZXRlcm1pbmF0ZToKLSAgICAgICAgc2V0U2VsZWN0UnVsZUZl
YXR1cmUoQWZmZWN0ZWRTZWxlY3RvckluZGV0ZXJtaW5hdGUpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9MaW5rOgotICAgICAgICBzZXRTZWxlY3RSdWxlRmVh
dHVyZShBZmZlY3RlZFNlbGVjdG9yTGluayk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb1RhcmdldDoKLSAgICAgICAgc2V0U2VsZWN0UnVsZUZlYXR1cmUoQWZm
ZWN0ZWRTZWxlY3RvclRhcmdldCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTU2VsZWN0
b3I6OlBzZXVkb1Zpc2l0ZWQ6Ci0gICAgICAgIHNldFNlbGVjdFJ1bGVGZWF0dXJlKEFmZmVjdGVk
U2VsZWN0b3JWaXNpdGVkKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotfQotCi19Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuaAkocmV2aXNpb24gMTQ5NjUyKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTZWxlY3RSdWxlRmVhdHVyZVNldF9oCi0jZGVm
aW5lIFNlbGVjdFJ1bGVGZWF0dXJlU2V0X2gKLQotI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNs
dWRlICJSdWxlRmVhdHVyZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNlbGVj
dFJ1bGVGZWF0dXJlU2V0IHsKLXB1YmxpYzoKLSAgICBTZWxlY3RSdWxlRmVhdHVyZVNldCgpOwot
Ci0gICAgdm9pZCBhZGQoY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmKTsKLSAgICB2b2lkIGNs
ZWFyKCk7Ci0gICAgdm9pZCBjb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3IoY29uc3QgQ1NTU2Vs
ZWN0b3IqKTsKLQotICAgIGJvb2wgaGFzU2VsZWN0b3JGb3JJZChjb25zdCBBdG9taWNTdHJpbmcm
KSBjb25zdDsKLSAgICBib29sIGhhc1NlbGVjdG9yRm9yQ2xhc3MoY29uc3QgQXRvbWljU3RyaW5n
JikgY29uc3Q7Ci0gICAgYm9vbCBoYXNTZWxlY3RvckZvckF0dHJpYnV0ZShjb25zdCBBdG9taWNT
dHJpbmcmKSBjb25zdDsKLQotICAgIGJvb2wgaGFzU2VsZWN0b3JGb3JDaGVja2VkKCkgY29uc3Qg
eyByZXR1cm4gaGFzU2VsZWN0b3JGb3IoQWZmZWN0ZWRTZWxlY3RvckNoZWNrZWQpOyB9Ci0gICAg
Ym9vbCBoYXNTZWxlY3RvckZvckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBoYXNTZWxlY3RvckZv
cihBZmZlY3RlZFNlbGVjdG9yRW5hYmxlZCk7IH0KLSAgICBib29sIGhhc1NlbGVjdG9yRm9yRGlz
YWJsZWQoKSBjb25zdCB7IHJldHVybiBoYXNTZWxlY3RvckZvcihBZmZlY3RlZFNlbGVjdG9yRGlz
YWJsZWQpOyB9Ci0gICAgYm9vbCBoYXNTZWxlY3RvckZvckluZGV0ZXJtaW5hdGUoKSBjb25zdCB7
IHJldHVybiBoYXNTZWxlY3RvckZvcihBZmZlY3RlZFNlbGVjdG9ySW5kZXRlcm1pbmF0ZSk7IH0K
LSAgICBib29sIGhhc1NlbGVjdG9yRm9yTGluaygpIGNvbnN0IHsgcmV0dXJuIGhhc1NlbGVjdG9y
Rm9yKEFmZmVjdGVkU2VsZWN0b3JMaW5rKTsgfQotICAgIGJvb2wgaGFzU2VsZWN0b3JGb3JUYXJn
ZXQoKSBjb25zdCB7IHJldHVybiBoYXNTZWxlY3RvckZvcihBZmZlY3RlZFNlbGVjdG9yVGFyZ2V0
KTsgfQotICAgIGJvb2wgaGFzU2VsZWN0b3JGb3JWaXNpdGVkKCkgY29uc3QgeyByZXR1cm4gaGFz
U2VsZWN0b3JGb3IoQWZmZWN0ZWRTZWxlY3RvclZpc2l0ZWQpOyB9Ci0KLSAgICBib29sIGhhc1Nl
bGVjdG9yRm9yKEFmZmVjdGVkU2VsZWN0b3JNYXNrIGZlYXR1cmVzKSBjb25zdCB7IHJldHVybiBt
X2ZlYXR1cmVGbGFncyAmIGZlYXR1cmVzOyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBzZXRTZWxl
Y3RSdWxlRmVhdHVyZShBZmZlY3RlZFNlbGVjdG9yVHlwZSBmZWF0dXJlKSB7IG1fZmVhdHVyZUZs
YWdzIHw9IGZlYXR1cmU7IH0KLQotICAgIFJ1bGVGZWF0dXJlU2V0IG1fY3NzUnVsZUZlYXR1cmVT
ZXQ7Ci0gICAgaW50IG1fZmVhdHVyZUZsYWdzOwotfTsKLQotaW5saW5lIGJvb2wgU2VsZWN0UnVs
ZUZlYXR1cmVTZXQ6Omhhc1NlbGVjdG9yRm9ySWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZFZhbHVl
KSBjb25zdAotewotICAgIEFTU0VSVCghaWRWYWx1ZS5pc0VtcHR5KCkpOwotICAgIHJldHVybiBt
X2Nzc1J1bGVGZWF0dXJlU2V0Lmlkc0luUnVsZXMuY29udGFpbnMoaWRWYWx1ZS5pbXBsKCkpOwot
fQotCi1pbmxpbmUgYm9vbCBTZWxlY3RSdWxlRmVhdHVyZVNldDo6aGFzU2VsZWN0b3JGb3JDbGFz
cyhjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzVmFsdWUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFj
bGFzc1ZhbHVlLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIG1fY3NzUnVsZUZlYXR1cmVTZXQuY2xh
c3Nlc0luUnVsZXMuY29udGFpbnMoY2xhc3NWYWx1ZS5pbXBsKCkpOwotfQotCi1pbmxpbmUgYm9v
bCBTZWxlY3RSdWxlRmVhdHVyZVNldDo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUoY29uc3QgQXRv
bWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAotewotICAgIEFTU0VSVCghYXR0cmlidXRl
TmFtZS5pc0VtcHR5KCkpOwotICAgIHJldHVybiBtX2Nzc1J1bGVGZWF0dXJlU2V0LmF0dHJzSW5S
dWxlcy5jb250YWlucyhhdHRyaWJ1dGVOYW1lLmltcGwoKSk7Ci19Ci0KLX0KLQotI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAxNDk2NTIpCisr
KyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg1LDcgKzg1LDYgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5j
bHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5o
IgotI2luY2x1ZGUgIlNlbGVjdFJ1bGVGZWF0dXJlU2V0LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dS
b290LmgiCkBAIC00MDIsNjMgKzQwMSw2IEBAIE5vZGUqIEludGVybmFsczo6cGFyZW50VHJlZVNj
b3BlKE5vZGUqIG4KICAgICByZXR1cm4gcGFyZW50VHJlZVNjb3BlID8gcGFyZW50VHJlZVNjb3Bl
LT5yb290Tm9kZSgpIDogMDsKIH0KIAotYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9ySWRJ
blNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIGlkVmFsdWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQotewotICAgIGlmICghaG9zdCB8fCAhaG9zdC0+c2hhZG93KCkpIHsKLSAgICAgICAg
ZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAg
IHJldHVybiBob3N0LT5zaGFkb3coKS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJl
U2V0KGhvc3QtPnNoYWRvdygpKS5oYXNTZWxlY3RvckZvcklkKGlkVmFsdWUpOwotfQotCi1ib29s
IEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JDbGFzc0luU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNv
bnN0IFN0cmluZyYgY2xhc3NOYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIWhv
c3QgfHwgIWhvc3QtPnNoYWRvdygpKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJS
OwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gaG9zdC0+c2hhZG93KCkt
PmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFkb3coKSkuaGFz
U2VsZWN0b3JGb3JDbGFzcyhjbGFzc05hbWUpOwotfQotCi1ib29sIEludGVybmFsczo6aGFzU2Vs
ZWN0b3JGb3JBdHRyaWJ1dGVJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIGF0
dHJpYnV0ZU5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghaG9zdCB8fCAhaG9z
dC0+c2hhZG93KCkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KLQotICAgIHJldHVybiBob3N0LT5zaGFkb3coKS0+ZGlzdHJpYnV0
b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGhvc3QtPnNoYWRvdygpKS5oYXNTZWxlY3RvckZv
ckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKLX0KLQotYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVj
dG9yRm9yUHNldWRvQ2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIHBz
ZXVkb0NsYXNzLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIWhvc3QgfHwgIWhvc3Qt
PnNoYWRvdygpKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBjb25zdCBTZWxlY3RSdWxlRmVhdHVyZVNldCYgZmVhdHVy
ZVNldCA9IGhvc3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVT
ZXQoaG9zdC0+c2hhZG93KCkpOwotICAgIGlmIChwc2V1ZG9DbGFzcyA9PSAiY2hlY2tlZCIpCi0g
ICAgICAgIHJldHVybiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9yQ2hlY2tlZCgpOwotICAgIGlm
IChwc2V1ZG9DbGFzcyA9PSAiZW5hYmxlZCIpCi0gICAgICAgIHJldHVybiBmZWF0dXJlU2V0Lmhh
c1NlbGVjdG9yRm9yRW5hYmxlZCgpOwotICAgIGlmIChwc2V1ZG9DbGFzcyA9PSAiZGlzYWJsZWQi
KQotICAgICAgICByZXR1cm4gZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvckRpc2FibGVkKCk7Ci0g
ICAgaWYgKHBzZXVkb0NsYXNzID09ICJpbmRldGVybWluYXRlIikKLSAgICAgICAgcmV0dXJuIGZl
YXR1cmVTZXQuaGFzU2VsZWN0b3JGb3JJbmRldGVybWluYXRlKCk7Ci0gICAgaWYgKHBzZXVkb0Ns
YXNzID09ICJsaW5rIikKLSAgICAgICAgcmV0dXJuIGZlYXR1cmVTZXQuaGFzU2VsZWN0b3JGb3JM
aW5rKCk7Ci0gICAgaWYgKHBzZXVkb0NsYXNzID09ICJ0YXJnZXQiKQotICAgICAgICByZXR1cm4g
ZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvclRhcmdldCgpOwotICAgIGlmIChwc2V1ZG9DbGFzcyA9
PSAidmlzaXRlZCIpCi0gICAgICAgIHJldHVybiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9yVmlz
aXRlZCgpOwotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCiB1bnNpZ25lZCBJbnRlcm5hbHM6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0
CiB7CiAgICAgRnJhbWUqIGNvbnRleHRGcmFtZSA9IGZyYW1lKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAxNDk2NTIpCisrKyBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEwICs1NSw2IEBA
CiAgICAgYm9vbGVhbiBpc1ZhbGlkQ29udGVudFNlbGVjdChFbGVtZW50IGNvbnRlbnRFbGVtZW50
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICBOb2RlIHRyZWVTY29wZVJvb3ROb2RlKE5vZGUg
bm9kZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgIE5vZGUgcGFyZW50VHJlZVNjb3BlKE5v
ZGUgbm9kZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwotICAgIGJvb2xlYW4gaGFzU2VsZWN0b3JG
b3JJZEluU2hhZG93KEVsZW1lbnQgaG9zdCwgRE9NU3RyaW5nIGlkKSByYWlzZXMgKERPTUV4Y2Vw
dGlvbik7Ci0gICAgYm9vbGVhbiBoYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coRWxlbWVudCBo
b3N0LCBET01TdHJpbmcgY2xhc3NOYW1lKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0gICAgYm9v
bGVhbiBoYXNTZWxlY3RvckZvckF0dHJpYnV0ZUluU2hhZG93KEVsZW1lbnQgaG9zdCwgRE9NU3Ry
aW5nIGF0dHJpYnV0ZU5hbWUpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAgICBib29sZWFuIGhh
c1NlbGVjdG9yRm9yUHNldWRvQ2xhc3NJblNoYWRvdyhFbGVtZW50IGhvc3QsIERPTVN0cmluZyBw
c2V1ZG9DbGFzcykgcmFpc2VzIChET01FeGNlcHRpb24pOwogCiAgICAgLy8gQ1NTIEFuaW1hdGlv
biB0ZXN0aW5nLgogICAgIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7
Cg==
</data>
<flag name="review"
          id="222284"
          type_id="1"
          status="+"
          setter="benjamin"
    />
    <flag name="commit-queue"
          id="222288"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201007</attachid>
            <date>2013-05-07 18:08:01 -0700</date>
            <delta_ts>2013-05-07 18:09:43 -0700</delta_ts>
            <desc>for landing</desc>
            <filename>remove-selectrulefeatureset-3.patch</filename>
            <type>text/plain</type>
            <size>30954</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTY5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEzLTA1LTA3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgU2VsZWN0UnVsZUZl
YXR1cmVTZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAg
ICAgVGhpcyBpcyBkZWFkIGNvZGUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAg
ICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpkaWRBZmZlY3RTZWxlY3Rvcik6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAg
KEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50U2hhZG93Lmg6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50U2hhZG93OjppbnZhbGlkYXRlRGlzdHJpYnV0aW9uKToKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudERpc3RyaWJ1dG9yOjpDb250ZW50RGlzdHJpYnV0b3IpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmg6CisgICAgICAgIChD
b250ZW50RGlzdHJpYnV0b3IpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjppbnNlcnRlZEludG8pOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6OnJlbW92ZWRGcm9tKToKKyAgICAgICAg
KiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoSW5zZXJ0aW9uUG9pbnQp
OgorICAgICAgICAqIGh0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5oOiBSZW1vdmVk
LgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMy0wNS0wNyAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1ZyAxMTU2OTQgLSBGaXgg
YmFkIGNhc3QgdG8gUmVuZGVySFRNTENhbnZhcwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDE0OTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xNTc4LDcgKzE1NzgsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcAogICAgIGh0bWwvc2hhZG93L01ldGVyU2hh
ZG93RWxlbWVudC5jcHAKICAgICBodG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3Bw
Ci0gICAgaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3BwCiAgICAgaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAogICAgIGh0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVt
ZW50LmNwcAogICAgIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTQ5NjUyKQorKysgU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMzc1MCw4
ICszNzUwLDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
UHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
UHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Nl
bGVjdFJ1bGVGZWF0dXJlU2V0LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2Vs
ZWN0UnVsZUZlYXR1cmVTZXQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVy
VGh1bWJFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1
bWJFbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVt
ZW50LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDE0OTY1MikKKysrIFNvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTc3Myw3ICs3NzMsNiBAQCBTT1VS
Q0VTICs9IFwKICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwIFwKICAgICBo
dG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwIFwKICAgICBodG1sL3NoYWRvdy9Qcm9n
cmVzc1NoYWRvd0VsZW1lbnQuY3BwIFwKLSAgICBodG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVy
ZVNldC5jcHAgXAogICAgIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgXAogICAg
IGh0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2
aXNpb24gMTQ5NjUyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTU4NCw3ICs1ODQsNiBAQCBfX1pON1dlYkNvcmUxN2xhbmd1YWdlRGlkQ2hhbmdl
RXYKIF9fWk43V2ViQ29yZTE3b3BlblRlbXBvcmFyeUZpbGVFUktOM1dURjZTdHJpbmdFUmkKIF9f
Wk43V2ViQ29yZTE3c2V0Q29va2llc0Zyb21ET01FUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lv
bkVSS05TXzRLVVJMRVM1X1JLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTd1c2VyVmlzaWJs
ZVN0cmluZ0VQNU5TVVJMCi1fX1pON1dlYkNvcmUxOENvbnRlbnREaXN0cmlidXRvcjIyZW5zdXJl
U2VsZWN0RmVhdHVyZVNldEVQTlNfMTNFbGVtZW50U2hhZG93RQogX19aTjdXZWJDb3JlMThET01X
aW5kb3dFeHRlbnNpb25DMUVQTlNfNUZyYW1lRVBOU18xNURPTVdyYXBwZXJXb3JsZEUKIF9fWk43
V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkMTB1bmlxdWVOYW1lRXYKIF9fWk43V2ViQ29yZTE4
UGxhdGZvcm1QYXN0ZWJvYXJkMTNidWZmZXJGb3JUeXBlRVJLTjNXVEY2U3RyaW5nRQpJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9u
IDE0OTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC02NTU5OCwxNCArNjU1OTgsNiBAQAogCQkJCQk+CiAJCQkJPC9G
aWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcU2VsZWN0
UnVsZUZlYXR1cmVTZXQuY3BwIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCi0JCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcU2VsZWN0UnVsZUZlYXR1cmVTZXQuaCIKLQkJ
CQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
c2hhZG93XFNsaWRlclRodW1iRWxlbWVudC5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAxNDk2NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2NTgsOCArMTY1OCw2IEBACiAJCTUz
RUY3NjZDMTY1MzE5OTQwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oIGluIENvcHkgR2VuZXJh
dGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFRjc2NkEx
NjUzMEE2MTAwNENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi87IH07CiAJCTU1MEEwQkM5MDg1
RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFs
aWZpZWROYW1lLmNwcCAqLzsgfTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxp
ZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTcwQjc4QkYxNjUwQ0U4MTAw
MURCRTFCIC8qIFNlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MEI3OEJEMTY1MENFODEwMDFEQkUxQiAvKiBTZWxl
Y3RSdWxlRmVhdHVyZVNldC5jcHAgKi87IH07Ci0JCTU3MEI3OEMwMTY1MENFODEwMDFEQkUxQiAv
KiBTZWxlY3RSdWxlRmVhdHVyZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTcwQjc4QkUxNjUwQ0U4MTAwMURCRTFCIC8qIFNlbGVjdFJ1bGVGZWF0
dXJlU2V0LmggKi87IH07CiAJCTU3M0QxMzQ3MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JU
eXBlQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzNEMTM0NTE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuY3Bw
ICovOyB9OwogCQk1NzhEQTIwRTE1MjBFQjhDMDA2MTQxQzEgLyogSW5zcGVjdG9yRnJvbnRlbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNEY1RkZD
MTFDQkQzMDEwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3OERBMjBGMTUyMEVCQTMwMDYxNDFD
MSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTczRDEzNDYxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvclR5
cGVCdWlsZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTgwNjMsOCArODA2MSw2IEBACiAJCTUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBT
ZXR0aW5nc01hY3Jvcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXR0aW5n
c01hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTBBMEJDNzA4NUY2MDM5
MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWFsaWZpZWROYW1lLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTU1MEEwQkM4
MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCTU3MEI3OEJE
MTY1MENFODEwMDFEQkUxQiAvKiBTZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWxlY3RSdWxlRmVhdHVyZVNldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3MEI3OEJFMTY1MENFODEwMDFEQkUxQiAvKiBTZWxl
Y3RSdWxlRmVhdHVyZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWxl
Y3RSdWxlRmVhdHVyZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzNEMTM0
NTE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yVHlwZUJ1aWxkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzNEMTM0NjE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5z
cGVjdG9yVHlwZUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5z
cGVjdG9yVHlwZUJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCNzkx
OUYxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RGlzdHJpYnV0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM5NDMsOCArMTM5MzksNiBAQAogCQkJCUE3OEU1MjZF
MTM0NkJEMTcwMEFEOUMzMSAvKiBNZXRlclNoYWRvd0VsZW1lbnQuaCAqLywKIAkJCQlBNzE1RTY1
MDEzNEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcCAqLywKIAkJCQlB
NzE1RTY1MTEzNEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggKi8sCi0J
CQkJNTcwQjc4QkQxNjUwQ0U4MTAwMURCRTFCIC8qIFNlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcCAq
LywKLQkJCQk1NzBCNzhCRTE2NTBDRTgxMDAxREJFMUIgLyogU2VsZWN0UnVsZUZlYXR1cmVTZXQu
aCAqLywKIAkJCQk0MTUwRjlGMDEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50
LmNwcCAqLywKIAkJCQk0MTUwRjlFRjEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVt
ZW50LmggKi8sCiAJCQkJNDUxMjUwMjAxNURDRTM3RDAwMkY4NEUyIC8qIFNwaW5CdXR0b25FbGVt
ZW50LmNwcCAqLywKQEAgLTIzMzk4LDcgKzIzMzkyLDYgQEAKIAkJCQk0MUI4Q0Q0NjE2RDA0NTkx
MDAwRThDQzAgLyogU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxNTA3MTU4MTY4NTA2NzMwMEMzQzdCMyAvKiBTZWxlY3RvckZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTQ1MzIyQUMxNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTU3MEI3OEMwMTY1MENFODEwMDFEQkUxQiAvKiBTZWxlY3RSdWxlRmVh
dHVyZVNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc1RTQ5NzYxMDc1MkFDQjAwQzlCODk2IC8q
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMTAwOTlF
NjQ5MjAwNTZFNTgxIC8qIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCOERCREI0QzEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNjQ3NSw3ICsyNjQ2OCw2IEBACiAJCQkJNDFCOENENDUxNkQwNDU5
MTAwMEU4Q0MwIC8qIFNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxNTA3MTU3MTY4NTA2NzMwMEMzQzdCMyAvKiBTZWxlY3RvckZpbHRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFNDUzMjJBQjE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk1NzBCNzhCRjE2NTBDRTgxMDAxREJFMUIgLyogU2VsZWN0
UnVsZUZlYXR1cmVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc1RTQ5NzcxMDc1MkFDQjAw
QzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
MzMwOUUwRjA5OUU2NDkyMDA1NkU1ODEgLyogU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjhEQkRCNEIxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlv
bkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDk2NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg0OSwxMSArODQ5LDYgQEAgc3RhdGljIGJvb2wgY2hlY2tOZWVkc1N0eWxl
SW52YWxpZGF0aW9uRgogCiB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRl
TW9kaWZpY2F0aW9uUmVhc29uKQogewotICAgIGlmIChFbGVtZW50U2hhZG93KiBwYXJlbnRFbGVt
ZW50U2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24odGhpcykpIHsKLSAgICAg
ICAgaWYgKHNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb25XaGVuQXR0cmlidXRlQ2hhbmdlZChw
YXJlbnRFbGVtZW50U2hhZG93LCBuYW1lLCBuZXdWYWx1ZSkpCi0gICAgICAgICAgICBwYXJlbnRF
bGVtZW50U2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7Ci0gICAgfQotCiAgICAgcGFy
c2VBdHRyaWJ1dGUobmFtZSwgbmV3VmFsdWUpOwogCiAgICAgZG9jdW1lbnQoKS0+aW5jRE9NVHJl
ZVZlcnNpb24oKTsKQEAgLTk5Myw0MCArOTg4LDYgQEAgdm9pZCBFbGVtZW50OjpjbGFzc0F0dHJp
YnV0ZUNoYW5nZWQoY29ucwogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CiAKLWJv
b2wgRWxlbWVudDo6c2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlvbldoZW5BdHRyaWJ1dGVDaGFu
Z2VkKEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFkb3csIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCi17Ci0gICAgQVNTRVJUKGVsZW1lbnRT
aGFkb3cpOwotICAgIGNvbnN0IFNlbGVjdFJ1bGVGZWF0dXJlU2V0JiBmZWF0dXJlU2V0ID0gZWxl
bWVudFNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGVsZW1lbnRT
aGFkb3cpOwotCi0gICAgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKG5hbWUpKSB7Ci0gICAgICAgIEF0
b21pY1N0cmluZyBvbGRJZCA9IGVsZW1lbnREYXRhKCktPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCk7
Ci0gICAgICAgIEF0b21pY1N0cmluZyBuZXdJZCA9IG1ha2VJZEZvclN0eWxlUmVzb2x1dGlvbihu
ZXdWYWx1ZSwgZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpOwotICAgICAgICBpZiAobmV3SWQg
IT0gb2xkSWQpIHsKLSAgICAgICAgICAgIGlmICghb2xkSWQuaXNFbXB0eSgpICYmIGZlYXR1cmVT
ZXQuaGFzU2VsZWN0b3JGb3JJZChvbGRJZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgICAgICBpZiAoIW5ld0lkLmlzRW1wdHkoKSAmJiBmZWF0dXJlU2V0Lmhhc1NlbGVj
dG9yRm9ySWQobmV3SWQpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgaWYgKG5hbWUgPT0gSFRNTE5hbWVzOjpjbGFzc0F0dHIpIHsKLSAgICAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdDbGFzc1N0cmluZyA9IG5ld1ZhbHVlOwotICAgICAg
ICBpZiAoY2xhc3NTdHJpbmdIYXNDbGFzc05hbWUobmV3Q2xhc3NTdHJpbmcpKSB7Ci0gICAgICAg
ICAgICBjb25zdCBib29sIHNob3VsZEZvbGRDYXNlID0gZG9jdW1lbnQoKS0+aW5RdWlya3NNb2Rl
KCk7Ci0gICAgICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBvbGRDbGFzc2VzID0gZWxl
bWVudERhdGEoKS0+Y2xhc3NOYW1lcygpOwotICAgICAgICAgICAgY29uc3QgU3BhY2VTcGxpdFN0
cmluZyBuZXdDbGFzc2VzKG5ld0NsYXNzU3RyaW5nLCBzaG91bGRGb2xkQ2FzZSk7Ci0gICAgICAg
ICAgICBpZiAoY2hlY2tTZWxlY3RvckZvckNsYXNzQ2hhbmdlKG9sZENsYXNzZXMsIG5ld0NsYXNz
ZXMsIGZlYXR1cmVTZXQpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgb2xkQ2xhc3NlcyA9
IGVsZW1lbnREYXRhKCktPmNsYXNzTmFtZXMoKTsKLSAgICAgICAgICAgIGlmIChjaGVja1NlbGVj
dG9yRm9yQ2xhc3NDaGFuZ2Uob2xkQ2xhc3NlcywgZmVhdHVyZVNldCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZmVhdHVyZVNl
dC5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZShuYW1lLmxvY2FsTmFtZSgpKTsKLX0KLQogLy8gUmV0
dXJucyB0cnVlIGlzIHRoZSBnaXZlbiBhdHRyaWJ1dGUgaXMgYW4gZXZlbnQgaGFuZGxlci4KIC8v
IFdlIGNvbnNpZGVyIGFuIGV2ZW50IGhhbmRsZXIgYW55IGF0dHJpYnV0ZSB0aGF0IGJlZ2lucyB3
aXRoICJvbiIuCiAvLyBJdCBpcyBhIHNpbXBsZSBzb2x1dGlvbiB0aGF0IGhhcyB0aGUgYWR2YW50
YWdlIG9mIG5vdCByZXF1aXJpbmcgYW55CkBAIC0xNTA4LDExICsxNDY5LDkgQEAgRWxlbWVudFNo
YWRvdyogRWxlbWVudDo6ZW5zdXJlU2hhZG93KCkKICAgICByZXR1cm4gZW5zdXJlRWxlbWVudFJh
cmVEYXRhKCktPmVuc3VyZVNoYWRvdygpOwogfQogCi12b2lkIEVsZW1lbnQ6OmRpZEFmZmVjdFNl
bGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JNYXNrIG1hc2spCit2b2lkIEVsZW1lbnQ6OmRpZEFmZmVj
dFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JNYXNrICkKIHsKICAgICBzZXROZWVkc1N0eWxlUmVj
YWxjKCk7Ci0gICAgaWYgKEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFkb3cgPSBzaGFkb3dPZlBh
cmVudEZvckRpc3RyaWJ1dGlvbih0aGlzKSkKLSAgICAgICAgZWxlbWVudFNoYWRvdy0+ZGlkQWZm
ZWN0U2VsZWN0b3IobWFzayk7CiB9CiAKIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gRWxlbWVudDo6
Y3JlYXRlU2hhZG93Um9vdChFeGNlcHRpb25Db2RlJiBlYykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAkocmV2aXNpb24gMTQ5NjUyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNzI3LDggKzcyNyw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNyZWF0
ZVVuaXF1ZUVsZW1lbnREYXRhKCk7CiAKLSAgICBib29sIHNob3VsZEludmFsaWRhdGVEaXN0cmli
dXRpb25XaGVuQXR0cmlidXRlQ2hhbmdlZChFbGVtZW50U2hhZG93KiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpOwotCiAgICAgRWxlbWVudFJhcmVEYXRhKiBlbGVt
ZW50UmFyZURhdGEoKSBjb25zdDsKICAgICBFbGVtZW50UmFyZURhdGEqIGVuc3VyZUVsZW1lbnRS
YXJlRGF0YSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgJKHJldmlzaW9u
IDE0OTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY1LDggKzY1LDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlQWxsRXZlbnRM
aXN0ZW5lcnMoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpIHsgbV9kaXN0
cmlidXRvci5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKGhvc3QoKSk7IH0KLSAgICB2b2lkIGRpZEFm
ZmVjdFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JNYXNrIG1hc2spIHsgbV9kaXN0cmlidXRvci5k
aWRBZmZlY3RTZWxlY3Rvcihob3N0KCksIG1hc2spOyB9Ci0gICAgdm9pZCB3aWxsQWZmZWN0U2Vs
ZWN0b3IoKSB7IG1fZGlzdHJpYnV0b3Iud2lsbEFmZmVjdFNlbGVjdG9yKGhvc3QoKSk7IH0KIAog
ICAgIENvbnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKSB7IHJldHVybiBtX2Rpc3RyaWJ1
dG9yOyB9CiAgICAgY29uc3QgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0cmlidXRvcigpIGNvbnN0
IHsgcmV0dXJuIG1fZGlzdHJpYnV0b3I7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAkocmV2aXNpb24gMTQ5NjUyKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUxLDggKzE1MSw3IEBAIGJvb2wgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9u
OjpoYXNJbnNlcnQKIH0KIAogQ29udGVudERpc3RyaWJ1dG9yOjpDb250ZW50RGlzdHJpYnV0b3Io
KQotICAgIDogbV9uZWVkc1NlbGVjdEZlYXR1cmVTZXQoZmFsc2UpCi0gICAgLCBtX3ZhbGlkaXR5
KFVuZGV0ZXJtaW5lZCkKKyAgICA6IG1fdmFsaWRpdHkoVW5kZXRlcm1pbmVkKQogewogfQogCkBA
IC0zMjUsNTcgKzMyNCw2IEBAIHZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjppbnZhbGlkYXRlRGlz
dHIKICAgICB9CiB9CiAKLWNvbnN0IFNlbGVjdFJ1bGVGZWF0dXJlU2V0JiBDb250ZW50RGlzdHJp
YnV0b3I6OmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoRWxlbWVudFNoYWRvdyogc2hhZG93KQotewot
ICAgIGlmICghbV9uZWVkc1NlbGVjdEZlYXR1cmVTZXQpCi0gICAgICAgIHJldHVybiBtX3NlbGVj
dEZlYXR1cmVzOwotCi0gICAgbV9zZWxlY3RGZWF0dXJlcy5jbGVhcigpOwotICAgIGlmIChTaGFk
b3dSb290KiByb290ID0gc2hhZG93LT5zaGFkb3dSb290KCkpCi0gICAgICAgIGNvbGxlY3RTZWxl
Y3RGZWF0dXJlU2V0RnJvbShyb290KTsKLSAgICBtX25lZWRzU2VsZWN0RmVhdHVyZVNldCA9IGZh
bHNlOwotICAgIHJldHVybiBtX3NlbGVjdEZlYXR1cmVzOwotfQotCi12b2lkIENvbnRlbnREaXN0
cmlidXRvcjo6Y29sbGVjdFNlbGVjdEZlYXR1cmVTZXRGcm9tKFNoYWRvd1Jvb3QqIHJvb3QpCi17
Ci0gICAgaWYgKFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzRWxlbWVudFNoYWRvdyhyb290
KSkgewotICAgICAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpm
aXJzdFdpdGhpbihyb290KTsgZWxlbWVudDsgZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5l
eHQoZWxlbWVudCkpIHsKLSAgICAgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hh
ZG93ID0gZWxlbWVudC0+c2hhZG93KCkpCi0gICAgICAgICAgICAgICAgbV9zZWxlY3RGZWF0dXJl
cy5hZGQoZWxlbWVudFNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0
KGVsZW1lbnRTaGFkb3cpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChTY29wZUNvbnRl
bnREaXN0cmlidXRpb246Omhhc0NvbnRlbnRFbGVtZW50KHJvb3QpKSB7Ci0gICAgICAgIGZvciAo
RWxlbWVudCogZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKHJvb3QpOyBl
bGVtZW50OyBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dChlbGVtZW50KSkgewotICAg
ICAgICAgICAgaWYgKCFpc0hUTUxDb250ZW50RWxlbWVudChlbGVtZW50KSkKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgbGlzdCA9
IHRvSFRNTENvbnRlbnRFbGVtZW50KGVsZW1lbnQpLT5zZWxlY3Rvckxpc3QoKTsKLSAgICAgICAg
ICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gbGlzdC5maXJzdCgpOyBzZWxl
Y3Rvcjsgc2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc2VsZWN0b3IpKSB7Ci0gICAg
ICAgICAgICAgICAgZm9yIChjb25zdCBDU1NTZWxlY3RvciogY29tcG9uZW50ID0gc2VsZWN0b3I7
IGNvbXBvbmVudDsgY29tcG9uZW50ID0gY29tcG9uZW50LT50YWdIaXN0b3J5KCkpCi0gICAgICAg
ICAgICAgICAgICAgIG1fc2VsZWN0RmVhdHVyZXMuY29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9y
KGNvbXBvbmVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQg
Q29udGVudERpc3RyaWJ1dG9yOjpkaWRBZmZlY3RTZWxlY3RvcihFbGVtZW50KiBob3N0LCBBZmZl
Y3RlZFNlbGVjdG9yTWFzayBtYXNrKQotewotICAgIGlmIChlbnN1cmVTZWxlY3RGZWF0dXJlU2V0
KGhvc3QtPnNoYWRvdygpKS5oYXNTZWxlY3RvckZvcihtYXNrKSkKLSAgICAgICAgaW52YWxpZGF0
ZURpc3RyaWJ1dGlvbihob3N0KTsKLX0KLQotdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OndpbGxB
ZmZlY3RTZWxlY3RvcihFbGVtZW50KiBob3N0KQotewotICAgIGZvciAoRWxlbWVudFNoYWRvdyog
c2hhZG93ID0gaG9zdC0+c2hhZG93KCk7IHNoYWRvdzsgc2hhZG93ID0gc2hhZG93LT5jb250YWlu
aW5nU2hhZG93KCkpIHsKLSAgICAgICAgaWYgKHNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5uZWVkc1Nl
bGVjdEZlYXR1cmVTZXQoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBzaGFkb3ctPmRp
c3RyaWJ1dG9yKCkuc2V0TmVlZHNTZWxlY3RGZWF0dXJlU2V0KCk7Ci0gICAgfQotCi0gICAgaW52
YWxpZGF0ZURpc3RyaWJ1dGlvbihob3N0KTsKLX0KLQogdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6
OmRpZFNoYWRvd0JvdW5kYXJ5Q2hhbmdlKEVsZW1lbnQqIGhvc3QpCiB7CiAgICAgc2V0VmFsaWRp
dHkoVW5kZXRlcm1pbmVkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRl
bnREaXN0cmlidXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0NvbnRlbnREaXN0cmlidXRvci5oCShyZXZpc2lvbiAxNDk2NTIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NyArMzEsNiBAQAogI2lmbmRlZiBDb250ZW50RGlzdHJpYnV0b3JfaAogI2RlZmluZSBDb250ZW50
RGlzdHJpYnV0b3JfaAogCi0jaW5jbHVkZSAiU2VsZWN0UnVsZUZlYXR1cmVTZXQuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTExNSwxNSArMTE0LDEyIEBAIHB1YmxpYzoKICAgICB+Q29u
dGVudERpc3RyaWJ1dG9yKCk7CiAKICAgICBJbnNlcnRpb25Qb2ludCogZmluZEluc2VydGlvblBv
aW50Rm9yKGNvbnN0IE5vZGUqIGtleSkgY29uc3Q7Ci0gICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1
cmVTZXQmIGVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoRWxlbWVudFNoYWRvdyopOwogCiAgICAgdm9p
ZCBkaXN0cmlidXRlU2VsZWN0aW9uc1RvKEluc2VydGlvblBvaW50KiwgY29uc3QgQ29udGVudERp
c3RyaWJ1dGlvbiYgcG9vbCwgVmVjdG9yPGJvb2w+JiBkaXN0cmlidXRlZCk7CiAgICAgdm9pZCBk
aXN0cmlidXRlTm9kZUNoaWxkcmVuVG8oSW5zZXJ0aW9uUG9pbnQqLCBDb250YWluZXJOb2RlKik7
CiAKICAgICB2b2lkIGludmFsaWRhdGVEaXN0cmlidXRpb24oRWxlbWVudCogaG9zdCk7CiAgICAg
dm9pZCBkaWRTaGFkb3dCb3VuZGFyeUNoYW5nZShFbGVtZW50KiBob3N0KTsKLSAgICB2b2lkIGRp
ZEFmZmVjdFNlbGVjdG9yKEVsZW1lbnQqIGhvc3QsIEFmZmVjdGVkU2VsZWN0b3JNYXNrKTsKLSAg
ICB2b2lkIHdpbGxBZmZlY3RTZWxlY3RvcihFbGVtZW50KiBob3N0KTsKIAogICAgIHN0YXRpYyB2
b2lkIGVuc3VyZURpc3RyaWJ1dGlvbihTaGFkb3dSb290Kik7CiAKQEAgLTEzMiwxOCArMTI4LDEy
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbnZhbGlkYXRlKEVsZW1lbnQqIGhvc3QpOwogICAgIHZv
aWQgcG9wdWxhdGUoTm9kZSosIENvbnRlbnREaXN0cmlidXRpb24mKTsKIAotICAgIHZvaWQgY29s
bGVjdFNlbGVjdEZlYXR1cmVTZXRGcm9tKFNoYWRvd1Jvb3QqKTsKLSAgICBib29sIG5lZWRzU2Vs
ZWN0RmVhdHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNTZWxlY3RGZWF0dXJlU2V0OyB9
Ci0gICAgdm9pZCBzZXROZWVkc1NlbGVjdEZlYXR1cmVTZXQoKSB7IG1fbmVlZHNTZWxlY3RGZWF0
dXJlU2V0ID0gdHJ1ZTsgfQotCiAgICAgdm9pZCBzZXRWYWxpZGl0eShWYWxpZGl0eSB2YWxpZGl0
eSkgeyBtX3ZhbGlkaXR5ID0gdmFsaWRpdHk7IH0KICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7
IHJldHVybiBtX3ZhbGlkaXR5ID09IFZhbGlkOyB9CiAgICAgYm9vbCBuZWVkc0Rpc3RyaWJ1dGlv
bigpIGNvbnN0OwogICAgIGJvb2wgbmVlZHNJbnZhbGlkYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3ZhbGlkaXR5ICE9IEludmFsaWRhdGVkOyB9CiAKICAgICBIYXNoTWFwPGNvbnN0IE5vZGUqLCBS
ZWZQdHI8SW5zZXJ0aW9uUG9pbnQ+ID4gbV9ub2RlVG9JbnNlcnRpb25Qb2ludDsKLSAgICBTZWxl
Y3RSdWxlRmVhdHVyZVNldCBtX3NlbGVjdEZlYXR1cmVzOwotICAgIGJvb2wgbV9uZWVkc1NlbGVj
dEZlYXR1cmVTZXQgOiAxOwogICAgIHVuc2lnbmVkIG1fdmFsaWRpdHkgOiAyOwogfTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAkocmV2
aXNpb24gMTQ5NjUyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9p
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsOCArMTM0LDYgQEAgTm9kZTo6SW5zZXJ0aW9u
Tm90aWZpY2F0aW9uUmVxdWVzdCBJbnNlcgogICAgICAgICAgICAgaWYgKGlzQWN0aXZlKCkgJiYg
IW1fcmVnaXN0ZXJlZFdpdGhTaGFkb3dSb290ICYmIGluc2VydGlvblBvaW50LT50cmVlU2NvcGUo
KS0+cm9vdE5vZGUoKSA9PSByb290KSB7CiAgICAgICAgICAgICAgICAgbV9yZWdpc3RlcmVkV2l0
aFNoYWRvd1Jvb3QgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJvb3QtPmVuc3VyZVNjb3BlRGlz
dHJpYnV0aW9uKCktPnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQodGhpcyk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGNhbkFmZmVjdFNlbGVjdG9yKCkpCi0gICAgICAgICAgICAgICAgICAgIHJvb3RPd25l
ci0+d2lsbEFmZmVjdFNlbGVjdG9yKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CkBAIC0xNjEsOCArMTU5LDYgQEAgdm9pZCBJbnNlcnRpb25Qb2ludDo6cmVtb3ZlZEZyb20oQ29u
dGFpbgogICAgICAgICBBU1NFUlQocm9vdCk7CiAgICAgICAgIG1fcmVnaXN0ZXJlZFdpdGhTaGFk
b3dSb290ID0gZmFsc2U7CiAgICAgICAgIHJvb3QtPmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCkt
PnVucmVnaXN0ZXJJbnNlcnRpb25Qb2ludCh0aGlzKTsKLSAgICAgICAgaWYgKHJvb3RPd25lciAm
JiBjYW5BZmZlY3RTZWxlY3RvcigpKQotICAgICAgICAgICAgcm9vdE93bmVyLT53aWxsQWZmZWN0
U2VsZWN0b3IoKTsKICAgICB9CiAKICAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb20oaW5zZXJ0
aW9uUG9pbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9p
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5oCShyZXZpc2lvbiAxNDk2NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9J
bnNlcnRpb25Qb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw2IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIE1hdGNoVHlwZSBtYXRjaFR5cGVGb3IoTm9kZSopIHsgcmV0dXJuIEFsd2F5
c01hdGNoZXM7IH0KICAgICB2aXJ0dWFsIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JM
aXN0KCkgeyByZXR1cm4gZW1wdHlTZWxlY3Rvckxpc3QoKTsgfQogICAgIHZpcnR1YWwgVHlwZSBp
bnNlcnRpb25Qb2ludFR5cGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNhbkFmZmVj
dFNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGJvb2wgcmVzZXRTdHls
ZUluaGVyaXRhbmNlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRSZXNldFN0eWxlSW5oZXJpdGFuY2Uo
Ym9vbCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVy
ZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0
UnVsZUZlYXR1cmVTZXQuY3BwCShyZXZpc2lvbiAxNDk2NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
ODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTZWxlY3RSdWxlRmVhdHVy
ZVNldC5oIgotCi0jaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1TZWxlY3RSdWxlRmVhdHVyZVNldDo6U2VsZWN0UnVsZUZlYXR1cmVTZXQoKQotICAgIDog
bV9mZWF0dXJlRmxhZ3MoMCkKLXsKLX0KLQotdm9pZCBTZWxlY3RSdWxlRmVhdHVyZVNldDo6YWRk
KGNvbnN0IFNlbGVjdFJ1bGVGZWF0dXJlU2V0JiBmZWF0dXJlU2V0KQotewotICAgIG1fY3NzUnVs
ZUZlYXR1cmVTZXQuYWRkKGZlYXR1cmVTZXQubV9jc3NSdWxlRmVhdHVyZVNldCk7Ci0gICAgbV9m
ZWF0dXJlRmxhZ3MgfD0gZmVhdHVyZVNldC5tX2ZlYXR1cmVGbGFnczsKLX0KLQotdm9pZCBTZWxl
Y3RSdWxlRmVhdHVyZVNldDo6Y2xlYXIoKQotewotICAgIG1fY3NzUnVsZUZlYXR1cmVTZXQuY2xl
YXIoKTsKLSAgICBtX2ZlYXR1cmVGbGFncyA9IDA7Ci19Ci0KLXZvaWQgU2VsZWN0UnVsZUZlYXR1
cmVTZXQ6OmNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2Vs
ZWN0b3IpCi17Ci0gICAgbV9jc3NSdWxlRmVhdHVyZVNldC5jb2xsZWN0RmVhdHVyZXNGcm9tU2Vs
ZWN0b3Ioc2VsZWN0b3IpOwotCi0gICAgc3dpdGNoIChzZWxlY3Rvci0+cHNldWRvVHlwZSgpKSB7
Ci0gICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2hlY2tlZDoKLSAgICAgICAgc2V0U2VsZWN0
UnVsZUZlYXR1cmUoQWZmZWN0ZWRTZWxlY3RvckNoZWNrZWQpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9FbmFibGVkOgotICAgICAgICBzZXRTZWxlY3RSdWxl
RmVhdHVyZShBZmZlY3RlZFNlbGVjdG9yRW5hYmxlZCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0Rpc2FibGVkOgotICAgICAgICBzZXRTZWxlY3RSdWxlRmVh
dHVyZShBZmZlY3RlZFNlbGVjdG9yRGlzYWJsZWQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9JbmRldGVybWluYXRlOgotICAgICAgICBzZXRTZWxlY3RSdWxl
RmVhdHVyZShBZmZlY3RlZFNlbGVjdG9ySW5kZXRlcm1pbmF0ZSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xpbms6Ci0gICAgICAgIHNldFNlbGVjdFJ1bGVG
ZWF0dXJlKEFmZmVjdGVkU2VsZWN0b3JMaW5rKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
U1NTZWxlY3Rvcjo6UHNldWRvVGFyZ2V0OgotICAgICAgICBzZXRTZWxlY3RSdWxlRmVhdHVyZShB
ZmZlY3RlZFNlbGVjdG9yVGFyZ2V0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvVmlzaXRlZDoKLSAgICAgICAgc2V0U2VsZWN0UnVsZUZlYXR1cmUoQWZmZWN0
ZWRTZWxlY3RvclZpc2l0ZWQpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAg
ICBicmVhazsKLSAgICB9Ci19Ci0KLX0KLQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5oCShyZXZpc2lvbiAxNDk2NTIpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFNlbGVjdFJ1bGVGZWF0dXJlU2V0X2gKLSNk
ZWZpbmUgU2VsZWN0UnVsZUZlYXR1cmVTZXRfaAotCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2lu
Y2x1ZGUgIlJ1bGVGZWF0dXJlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2Vs
ZWN0UnVsZUZlYXR1cmVTZXQgewotcHVibGljOgotICAgIFNlbGVjdFJ1bGVGZWF0dXJlU2V0KCk7
Ci0KLSAgICB2b2lkIGFkZChjb25zdCBTZWxlY3RSdWxlRmVhdHVyZVNldCYpOwotICAgIHZvaWQg
Y2xlYXIoKTsKLSAgICB2b2lkIGNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3Rvcihjb25zdCBDU1NT
ZWxlY3RvciopOwotCi0gICAgYm9vbCBoYXNTZWxlY3RvckZvcklkKGNvbnN0IEF0b21pY1N0cmlu
ZyYpIGNvbnN0OwotICAgIGJvb2wgaGFzU2VsZWN0b3JGb3JDbGFzcyhjb25zdCBBdG9taWNTdHJp
bmcmKSBjb25zdDsKLSAgICBib29sIGhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYpIGNvbnN0OwotCi0gICAgYm9vbCBoYXNTZWxlY3RvckZvckNoZWNrZWQoKSBjb25z
dCB7IHJldHVybiBoYXNTZWxlY3RvckZvcihBZmZlY3RlZFNlbGVjdG9yQ2hlY2tlZCk7IH0KLSAg
ICBib29sIGhhc1NlbGVjdG9yRm9yRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGhhc1NlbGVjdG9y
Rm9yKEFmZmVjdGVkU2VsZWN0b3JFbmFibGVkKTsgfQotICAgIGJvb2wgaGFzU2VsZWN0b3JGb3JE
aXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGhhc1NlbGVjdG9yRm9yKEFmZmVjdGVkU2VsZWN0b3JE
aXNhYmxlZCk7IH0KLSAgICBib29sIGhhc1NlbGVjdG9yRm9ySW5kZXRlcm1pbmF0ZSgpIGNvbnN0
IHsgcmV0dXJuIGhhc1NlbGVjdG9yRm9yKEFmZmVjdGVkU2VsZWN0b3JJbmRldGVybWluYXRlKTsg
fQotICAgIGJvb2wgaGFzU2VsZWN0b3JGb3JMaW5rKCkgY29uc3QgeyByZXR1cm4gaGFzU2VsZWN0
b3JGb3IoQWZmZWN0ZWRTZWxlY3RvckxpbmspOyB9Ci0gICAgYm9vbCBoYXNTZWxlY3RvckZvclRh
cmdldCgpIGNvbnN0IHsgcmV0dXJuIGhhc1NlbGVjdG9yRm9yKEFmZmVjdGVkU2VsZWN0b3JUYXJn
ZXQpOyB9Ci0gICAgYm9vbCBoYXNTZWxlY3RvckZvclZpc2l0ZWQoKSBjb25zdCB7IHJldHVybiBo
YXNTZWxlY3RvckZvcihBZmZlY3RlZFNlbGVjdG9yVmlzaXRlZCk7IH0KLQotICAgIGJvb2wgaGFz
U2VsZWN0b3JGb3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2sgZmVhdHVyZXMpIGNvbnN0IHsgcmV0dXJu
IG1fZmVhdHVyZUZsYWdzICYgZmVhdHVyZXM7IH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIHNldFNl
bGVjdFJ1bGVGZWF0dXJlKEFmZmVjdGVkU2VsZWN0b3JUeXBlIGZlYXR1cmUpIHsgbV9mZWF0dXJl
RmxhZ3MgfD0gZmVhdHVyZTsgfQotCi0gICAgUnVsZUZlYXR1cmVTZXQgbV9jc3NSdWxlRmVhdHVy
ZVNldDsKLSAgICBpbnQgbV9mZWF0dXJlRmxhZ3M7Ci19OwotCi1pbmxpbmUgYm9vbCBTZWxlY3RS
dWxlRmVhdHVyZVNldDo6aGFzU2VsZWN0b3JGb3JJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkVmFs
dWUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFpZFZhbHVlLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJu
IG1fY3NzUnVsZUZlYXR1cmVTZXQuaWRzSW5SdWxlcy5jb250YWlucyhpZFZhbHVlLmltcGwoKSk7
Ci19Ci0KLWlubGluZSBib29sIFNlbGVjdFJ1bGVGZWF0dXJlU2V0OjpoYXNTZWxlY3RvckZvckNs
YXNzKGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NWYWx1ZSkgY29uc3QKLXsKLSAgICBBU1NFUlQo
IWNsYXNzVmFsdWUuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4gbV9jc3NSdWxlRmVhdHVyZVNldC5j
bGFzc2VzSW5SdWxlcy5jb250YWlucyhjbGFzc1ZhbHVlLmltcGwoKSk7Ci19Ci0KLWlubGluZSBi
b29sIFNlbGVjdFJ1bGVGZWF0dXJlU2V0OjpoYXNTZWxlY3RvckZvckF0dHJpYnV0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFhdHRyaWJ1
dGVOYW1lLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIG1fY3NzUnVsZUZlYXR1cmVTZXQuYXR0cnNJ
blJ1bGVzLmNvbnRhaW5zKGF0dHJpYnV0ZU5hbWUuaW1wbCgpKTsKLX0KLQotfQotCi0jZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDE0OTY1MikK
KysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODUsNyArODUsNiBAQAogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNp
bmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9y
LmgiCi0jaW5jbHVkZSAiU2VsZWN0UnVsZUZlYXR1cmVTZXQuaCIKICNpbmNsdWRlICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKQEAgLTQwMiw2MyArNDAxLDYgQEAgTm9kZSogSW50ZXJuYWxzOjpwYXJlbnRUcmVl
U2NvcGUoTm9kZSogbgogICAgIHJldHVybiBwYXJlbnRUcmVlU2NvcGUgPyBwYXJlbnRUcmVlU2Nv
cGUtPnJvb3ROb2RlKCkgOiAwOwogfQogCi1ib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JJ
ZEluU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgaWRWYWx1ZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCi17Ci0gICAgaWYgKCFob3N0IHx8ICFob3N0LT5zaGFkb3coKSkgewotICAgICAg
ICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGhvc3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1
cmVTZXQoaG9zdC0+c2hhZG93KCkpLmhhc1NlbGVjdG9yRm9ySWQoaWRWYWx1ZSk7Ci19Ci0KLWJv
b2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwg
Y29uc3QgU3RyaW5nJiBjbGFzc05hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICgh
aG9zdCB8fCAhaG9zdC0+c2hhZG93KCkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19F
UlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHJldHVybiBob3N0LT5zaGFkb3co
KS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGhvc3QtPnNoYWRvdygpKS5o
YXNTZWxlY3RvckZvckNsYXNzKGNsYXNzTmFtZSk7Ci19Ci0KLWJvb2wgSW50ZXJuYWxzOjpoYXNT
ZWxlY3RvckZvckF0dHJpYnV0ZUluU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYg
YXR0cmlidXRlTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFob3N0IHx8ICFo
b3N0LT5zaGFkb3coKSkgewotICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcmV0dXJuIGhvc3QtPnNoYWRvdygpLT5kaXN0cmli
dXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoaG9zdC0+c2hhZG93KCkpLmhhc1NlbGVjdG9y
Rm9yQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwotfQotCi1ib29sIEludGVybmFsczo6aGFzU2Vs
ZWN0b3JGb3JQc2V1ZG9DbGFzc0luU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYg
cHNldWRvQ2xhc3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghaG9zdCB8fCAhaG9z
dC0+c2hhZG93KCkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KLQotICAgIGNvbnN0IFNlbGVjdFJ1bGVGZWF0dXJlU2V0JiBmZWF0
dXJlU2V0ID0gaG9zdC0+c2hhZG93KCktPmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVy
ZVNldChob3N0LT5zaGFkb3coKSk7Ci0gICAgaWYgKHBzZXVkb0NsYXNzID09ICJjaGVja2VkIikK
LSAgICAgICAgcmV0dXJuIGZlYXR1cmVTZXQuaGFzU2VsZWN0b3JGb3JDaGVja2VkKCk7Ci0gICAg
aWYgKHBzZXVkb0NsYXNzID09ICJlbmFibGVkIikKLSAgICAgICAgcmV0dXJuIGZlYXR1cmVTZXQu
aGFzU2VsZWN0b3JGb3JFbmFibGVkKCk7Ci0gICAgaWYgKHBzZXVkb0NsYXNzID09ICJkaXNhYmxl
ZCIpCi0gICAgICAgIHJldHVybiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9yRGlzYWJsZWQoKTsK
LSAgICBpZiAocHNldWRvQ2xhc3MgPT0gImluZGV0ZXJtaW5hdGUiKQotICAgICAgICByZXR1cm4g
ZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvckluZGV0ZXJtaW5hdGUoKTsKLSAgICBpZiAocHNldWRv
Q2xhc3MgPT0gImxpbmsiKQotICAgICAgICByZXR1cm4gZmVhdHVyZVNldC5oYXNTZWxlY3RvckZv
ckxpbmsoKTsKLSAgICBpZiAocHNldWRvQ2xhc3MgPT0gInRhcmdldCIpCi0gICAgICAgIHJldHVy
biBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9yVGFyZ2V0KCk7Ci0gICAgaWYgKHBzZXVkb0NsYXNz
ID09ICJ2aXNpdGVkIikKLSAgICAgICAgcmV0dXJuIGZlYXR1cmVTZXQuaGFzU2VsZWN0b3JGb3JW
aXNpdGVkKCk7Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KIHVuc2lnbmVkIEludGVybmFsczo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29u
c3QKIHsKICAgICBGcmFtZSogY29udGV4dEZyYW1lID0gZnJhbWUoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9uIDE0OTY1MikKKysrIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTAgKzU1LDYg
QEAKICAgICBib29sZWFuIGlzVmFsaWRDb250ZW50U2VsZWN0KEVsZW1lbnQgY29udGVudEVsZW1l
bnQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIE5vZGUgdHJlZVNjb3BlUm9vdE5vZGUoTm9k
ZSBub2RlKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgTm9kZSBwYXJlbnRUcmVlU2NvcGUo
Tm9kZSBub2RlKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0gICAgYm9vbGVhbiBoYXNTZWxlY3Rv
ckZvcklkSW5TaGFkb3coRWxlbWVudCBob3N0LCBET01TdHJpbmcgaWQpIHJhaXNlcyAoRE9NRXhj
ZXB0aW9uKTsKLSAgICBib29sZWFuIGhhc1NlbGVjdG9yRm9yQ2xhc3NJblNoYWRvdyhFbGVtZW50
IGhvc3QsIERPTVN0cmluZyBjbGFzc05hbWUpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAgICBi
b29sZWFuIGhhc1NlbGVjdG9yRm9yQXR0cmlidXRlSW5TaGFkb3coRWxlbWVudCBob3N0LCBET01T
dHJpbmcgYXR0cmlidXRlTmFtZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwotICAgIGJvb2xlYW4g
aGFzU2VsZWN0b3JGb3JQc2V1ZG9DbGFzc0luU2hhZG93KEVsZW1lbnQgaG9zdCwgRE9NU3RyaW5n
IHBzZXVkb0NsYXNzKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKICAgICAvLyBDU1MgQW5pbWF0
aW9uIHRlc3RpbmcuCiAgICAgdW5zaWduZWQgbG9uZyBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMo
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201008</attachid>
            <date>2013-05-07 18:09:31 -0700</date>
            <delta_ts>2013-05-07 18:39:28 -0700</delta_ts>
            <desc>for landing 2</desc>
            <filename>remove-selectrulefeatureset-4.patch</filename>
            <type>text/plain</type>
            <size>30953</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTY5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEzLTA1LTA3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgU2VsZWN0UnVsZUZl
YXR1cmVTZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAg
ICAgVGhpcyBpcyBkZWFkIGNvZGUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAg
ICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpkaWRBZmZlY3RTZWxlY3Rvcik6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAg
KEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50U2hhZG93Lmg6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50U2hhZG93OjppbnZhbGlkYXRlRGlzdHJpYnV0aW9uKToKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudERpc3RyaWJ1dG9yOjpDb250ZW50RGlzdHJpYnV0b3IpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmg6CisgICAgICAgIChD
b250ZW50RGlzdHJpYnV0b3IpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjppbnNlcnRlZEludG8pOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6OnJlbW92ZWRGcm9tKToKKyAgICAgICAg
KiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoSW5zZXJ0aW9uUG9pbnQp
OgorICAgICAgICAqIGh0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5oOiBSZW1vdmVk
LgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMy0wNS0wNyAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1ZyAxMTU2OTQgLSBGaXgg
YmFkIGNhc3QgdG8gUmVuZGVySFRNTENhbnZhcwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDE0OTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xNTc4LDcgKzE1NzgsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcAogICAgIGh0bWwvc2hhZG93L01ldGVyU2hh
ZG93RWxlbWVudC5jcHAKICAgICBodG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3Bw
Ci0gICAgaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3BwCiAgICAgaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAogICAgIGh0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVt
ZW50LmNwcAogICAgIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTQ5NjUyKQorKysgU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMzc1MCw4
ICszNzUwLDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
UHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
UHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Nl
bGVjdFJ1bGVGZWF0dXJlU2V0LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2Vs
ZWN0UnVsZUZlYXR1cmVTZXQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVy
VGh1bWJFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1
bWJFbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVt
ZW50LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDE0OTY1MikKKysrIFNvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTc3Myw3ICs3NzMsNiBAQCBTT1VS
Q0VTICs9IFwKICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwIFwKICAgICBo
dG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwIFwKICAgICBodG1sL3NoYWRvdy9Qcm9n
cmVzc1NoYWRvd0VsZW1lbnQuY3BwIFwKLSAgICBodG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVy
ZVNldC5jcHAgXAogICAgIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgXAogICAg
IGh0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2
aXNpb24gMTQ5NjUyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTU4NCw3ICs1ODQsNiBAQCBfX1pON1dlYkNvcmUxN2xhbmd1YWdlRGlkQ2hhbmdl
RXYKIF9fWk43V2ViQ29yZTE3b3BlblRlbXBvcmFyeUZpbGVFUktOM1dURjZTdHJpbmdFUmkKIF9f
Wk43V2ViQ29yZTE3c2V0Q29va2llc0Zyb21ET01FUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lv
bkVSS05TXzRLVVJMRVM1X1JLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTd1c2VyVmlzaWJs
ZVN0cmluZ0VQNU5TVVJMCi1fX1pON1dlYkNvcmUxOENvbnRlbnREaXN0cmlidXRvcjIyZW5zdXJl
U2VsZWN0RmVhdHVyZVNldEVQTlNfMTNFbGVtZW50U2hhZG93RQogX19aTjdXZWJDb3JlMThET01X
aW5kb3dFeHRlbnNpb25DMUVQTlNfNUZyYW1lRVBOU18xNURPTVdyYXBwZXJXb3JsZEUKIF9fWk43
V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkMTB1bmlxdWVOYW1lRXYKIF9fWk43V2ViQ29yZTE4
UGxhdGZvcm1QYXN0ZWJvYXJkMTNidWZmZXJGb3JUeXBlRVJLTjNXVEY2U3RyaW5nRQpJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9u
IDE0OTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC02NTU5OCwxNCArNjU1OTgsNiBAQAogCQkJCQk+CiAJCQkJPC9G
aWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcU2VsZWN0
UnVsZUZlYXR1cmVTZXQuY3BwIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCi0JCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcU2VsZWN0UnVsZUZlYXR1cmVTZXQuaCIKLQkJ
CQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
c2hhZG93XFNsaWRlclRodW1iRWxlbWVudC5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAxNDk2NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2NTgsOCArMTY1OCw2IEBACiAJCTUz
RUY3NjZDMTY1MzE5OTQwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oIGluIENvcHkgR2VuZXJh
dGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFRjc2NkEx
NjUzMEE2MTAwNENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi87IH07CiAJCTU1MEEwQkM5MDg1
RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFs
aWZpZWROYW1lLmNwcCAqLzsgfTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxp
ZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTcwQjc4QkYxNjUwQ0U4MTAw
MURCRTFCIC8qIFNlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MEI3OEJEMTY1MENFODEwMDFEQkUxQiAvKiBTZWxl
Y3RSdWxlRmVhdHVyZVNldC5jcHAgKi87IH07Ci0JCTU3MEI3OEMwMTY1MENFODEwMDFEQkUxQiAv
KiBTZWxlY3RSdWxlRmVhdHVyZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTcwQjc4QkUxNjUwQ0U4MTAwMURCRTFCIC8qIFNlbGVjdFJ1bGVGZWF0
dXJlU2V0LmggKi87IH07CiAJCTU3M0QxMzQ3MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JU
eXBlQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzNEMTM0NTE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuY3Bw
ICovOyB9OwogCQk1NzhEQTIwRTE1MjBFQjhDMDA2MTQxQzEgLyogSW5zcGVjdG9yRnJvbnRlbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNEY1RkZD
MTFDQkQzMDEwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3OERBMjBGMTUyMEVCQTMwMDYxNDFD
MSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTczRDEzNDYxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvclR5
cGVCdWlsZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTgwNjMsOCArODA2MSw2IEBACiAJCTUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBT
ZXR0aW5nc01hY3Jvcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXR0aW5n
c01hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTBBMEJDNzA4NUY2MDM5
MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWFsaWZpZWROYW1lLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTU1MEEwQkM4
MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCTU3MEI3OEJE
MTY1MENFODEwMDFEQkUxQiAvKiBTZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWxlY3RSdWxlRmVhdHVyZVNldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3MEI3OEJFMTY1MENFODEwMDFEQkUxQiAvKiBTZWxl
Y3RSdWxlRmVhdHVyZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWxl
Y3RSdWxlRmVhdHVyZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzNEMTM0
NTE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yVHlwZUJ1aWxkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzNEMTM0NjE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5z
cGVjdG9yVHlwZUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5z
cGVjdG9yVHlwZUJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCNzkx
OUYxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RGlzdHJpYnV0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM5NDMsOCArMTM5MzksNiBAQAogCQkJCUE3OEU1MjZF
MTM0NkJEMTcwMEFEOUMzMSAvKiBNZXRlclNoYWRvd0VsZW1lbnQuaCAqLywKIAkJCQlBNzE1RTY1
MDEzNEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcCAqLywKIAkJCQlB
NzE1RTY1MTEzNEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggKi8sCi0J
CQkJNTcwQjc4QkQxNjUwQ0U4MTAwMURCRTFCIC8qIFNlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcCAq
LywKLQkJCQk1NzBCNzhCRTE2NTBDRTgxMDAxREJFMUIgLyogU2VsZWN0UnVsZUZlYXR1cmVTZXQu
aCAqLywKIAkJCQk0MTUwRjlGMDEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50
LmNwcCAqLywKIAkJCQk0MTUwRjlFRjEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVt
ZW50LmggKi8sCiAJCQkJNDUxMjUwMjAxNURDRTM3RDAwMkY4NEUyIC8qIFNwaW5CdXR0b25FbGVt
ZW50LmNwcCAqLywKQEAgLTIzMzk4LDcgKzIzMzkyLDYgQEAKIAkJCQk0MUI4Q0Q0NjE2RDA0NTkx
MDAwRThDQzAgLyogU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxNTA3MTU4MTY4NTA2NzMwMEMzQzdCMyAvKiBTZWxlY3RvckZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTQ1MzIyQUMxNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTU3MEI3OEMwMTY1MENFODEwMDFEQkUxQiAvKiBTZWxlY3RSdWxlRmVh
dHVyZVNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc1RTQ5NzYxMDc1MkFDQjAwQzlCODk2IC8q
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMTAwOTlF
NjQ5MjAwNTZFNTgxIC8qIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCOERCREI0QzEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNjQ3NSw3ICsyNjQ2OCw2IEBACiAJCQkJNDFCOENENDUxNkQwNDU5
MTAwMEU4Q0MwIC8qIFNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxNTA3MTU3MTY4NTA2NzMwMEMzQzdCMyAvKiBTZWxlY3RvckZpbHRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFNDUzMjJBQjE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk1NzBCNzhCRjE2NTBDRTgxMDAxREJFMUIgLyogU2VsZWN0
UnVsZUZlYXR1cmVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc1RTQ5NzcxMDc1MkFDQjAw
QzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
MzMwOUUwRjA5OUU2NDkyMDA1NkU1ODEgLyogU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjhEQkRCNEIxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlv
bkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDk2NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg0OSwxMSArODQ5LDYgQEAgc3RhdGljIGJvb2wgY2hlY2tOZWVkc1N0eWxl
SW52YWxpZGF0aW9uRgogCiB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRl
TW9kaWZpY2F0aW9uUmVhc29uKQogewotICAgIGlmIChFbGVtZW50U2hhZG93KiBwYXJlbnRFbGVt
ZW50U2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24odGhpcykpIHsKLSAgICAg
ICAgaWYgKHNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb25XaGVuQXR0cmlidXRlQ2hhbmdlZChw
YXJlbnRFbGVtZW50U2hhZG93LCBuYW1lLCBuZXdWYWx1ZSkpCi0gICAgICAgICAgICBwYXJlbnRF
bGVtZW50U2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7Ci0gICAgfQotCiAgICAgcGFy
c2VBdHRyaWJ1dGUobmFtZSwgbmV3VmFsdWUpOwogCiAgICAgZG9jdW1lbnQoKS0+aW5jRE9NVHJl
ZVZlcnNpb24oKTsKQEAgLTk5Myw0MCArOTg4LDYgQEAgdm9pZCBFbGVtZW50OjpjbGFzc0F0dHJp
YnV0ZUNoYW5nZWQoY29ucwogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CiAKLWJv
b2wgRWxlbWVudDo6c2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlvbldoZW5BdHRyaWJ1dGVDaGFu
Z2VkKEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFkb3csIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCi17Ci0gICAgQVNTRVJUKGVsZW1lbnRT
aGFkb3cpOwotICAgIGNvbnN0IFNlbGVjdFJ1bGVGZWF0dXJlU2V0JiBmZWF0dXJlU2V0ID0gZWxl
bWVudFNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGVsZW1lbnRT
aGFkb3cpOwotCi0gICAgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKG5hbWUpKSB7Ci0gICAgICAgIEF0
b21pY1N0cmluZyBvbGRJZCA9IGVsZW1lbnREYXRhKCktPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCk7
Ci0gICAgICAgIEF0b21pY1N0cmluZyBuZXdJZCA9IG1ha2VJZEZvclN0eWxlUmVzb2x1dGlvbihu
ZXdWYWx1ZSwgZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpOwotICAgICAgICBpZiAobmV3SWQg
IT0gb2xkSWQpIHsKLSAgICAgICAgICAgIGlmICghb2xkSWQuaXNFbXB0eSgpICYmIGZlYXR1cmVT
ZXQuaGFzU2VsZWN0b3JGb3JJZChvbGRJZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgICAgICBpZiAoIW5ld0lkLmlzRW1wdHkoKSAmJiBmZWF0dXJlU2V0Lmhhc1NlbGVj
dG9yRm9ySWQobmV3SWQpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgaWYgKG5hbWUgPT0gSFRNTE5hbWVzOjpjbGFzc0F0dHIpIHsKLSAgICAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdDbGFzc1N0cmluZyA9IG5ld1ZhbHVlOwotICAgICAg
ICBpZiAoY2xhc3NTdHJpbmdIYXNDbGFzc05hbWUobmV3Q2xhc3NTdHJpbmcpKSB7Ci0gICAgICAg
ICAgICBjb25zdCBib29sIHNob3VsZEZvbGRDYXNlID0gZG9jdW1lbnQoKS0+aW5RdWlya3NNb2Rl
KCk7Ci0gICAgICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBvbGRDbGFzc2VzID0gZWxl
bWVudERhdGEoKS0+Y2xhc3NOYW1lcygpOwotICAgICAgICAgICAgY29uc3QgU3BhY2VTcGxpdFN0
cmluZyBuZXdDbGFzc2VzKG5ld0NsYXNzU3RyaW5nLCBzaG91bGRGb2xkQ2FzZSk7Ci0gICAgICAg
ICAgICBpZiAoY2hlY2tTZWxlY3RvckZvckNsYXNzQ2hhbmdlKG9sZENsYXNzZXMsIG5ld0NsYXNz
ZXMsIGZlYXR1cmVTZXQpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgb2xkQ2xhc3NlcyA9
IGVsZW1lbnREYXRhKCktPmNsYXNzTmFtZXMoKTsKLSAgICAgICAgICAgIGlmIChjaGVja1NlbGVj
dG9yRm9yQ2xhc3NDaGFuZ2Uob2xkQ2xhc3NlcywgZmVhdHVyZVNldCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZmVhdHVyZVNl
dC5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZShuYW1lLmxvY2FsTmFtZSgpKTsKLX0KLQogLy8gUmV0
dXJucyB0cnVlIGlzIHRoZSBnaXZlbiBhdHRyaWJ1dGUgaXMgYW4gZXZlbnQgaGFuZGxlci4KIC8v
IFdlIGNvbnNpZGVyIGFuIGV2ZW50IGhhbmRsZXIgYW55IGF0dHJpYnV0ZSB0aGF0IGJlZ2lucyB3
aXRoICJvbiIuCiAvLyBJdCBpcyBhIHNpbXBsZSBzb2x1dGlvbiB0aGF0IGhhcyB0aGUgYWR2YW50
YWdlIG9mIG5vdCByZXF1aXJpbmcgYW55CkBAIC0xNTA4LDExICsxNDY5LDkgQEAgRWxlbWVudFNo
YWRvdyogRWxlbWVudDo6ZW5zdXJlU2hhZG93KCkKICAgICByZXR1cm4gZW5zdXJlRWxlbWVudFJh
cmVEYXRhKCktPmVuc3VyZVNoYWRvdygpOwogfQogCi12b2lkIEVsZW1lbnQ6OmRpZEFmZmVjdFNl
bGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JNYXNrIG1hc2spCit2b2lkIEVsZW1lbnQ6OmRpZEFmZmVj
dFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JNYXNrKQogewogICAgIHNldE5lZWRzU3R5bGVSZWNh
bGMoKTsKLSAgICBpZiAoRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRvdyA9IHNoYWRvd09mUGFy
ZW50Rm9yRGlzdHJpYnV0aW9uKHRoaXMpKQotICAgICAgICBlbGVtZW50U2hhZG93LT5kaWRBZmZl
Y3RTZWxlY3RvcihtYXNrKTsKIH0KIAogUGFzc1JlZlB0cjxTaGFkb3dSb290PiBFbGVtZW50Ojpj
cmVhdGVTaGFkb3dSb290KEV4Y2VwdGlvbkNvZGUmIGVjKQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CShyZXZpc2lvbiAxNDk2NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MjcsOCArNzI3LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY3JlYXRl
VW5pcXVlRWxlbWVudERhdGEoKTsKIAotICAgIGJvb2wgc2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1
dGlvbldoZW5BdHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnRTaGFkb3cqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJik7Ci0KICAgICBFbGVtZW50UmFyZURhdGEqIGVsZW1l
bnRSYXJlRGF0YSgpIGNvbnN0OwogICAgIEVsZW1lbnRSYXJlRGF0YSogZW5zdXJlRWxlbWVudFJh
cmVEYXRhKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaAkocmV2aXNpb24g
MTQ5NjUyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaAkod29ya2luZyBj
b3B5KQpAQCAtNjUsOCArNjUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVBbGxFdmVudExp
c3RlbmVycygpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCkgeyBtX2Rpc3Ry
aWJ1dG9yLmludmFsaWRhdGVEaXN0cmlidXRpb24oaG9zdCgpKTsgfQotICAgIHZvaWQgZGlkQWZm
ZWN0U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2sgbWFzaykgeyBtX2Rpc3RyaWJ1dG9yLmRp
ZEFmZmVjdFNlbGVjdG9yKGhvc3QoKSwgbWFzayk7IH0KLSAgICB2b2lkIHdpbGxBZmZlY3RTZWxl
Y3RvcigpIHsgbV9kaXN0cmlidXRvci53aWxsQWZmZWN0U2VsZWN0b3IoaG9zdCgpKTsgfQogCiAg
ICAgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0cmlidXRvcigpIHsgcmV0dXJuIG1fZGlzdHJpYnV0
b3I7IH0KICAgICBjb25zdCBDb250ZW50RGlzdHJpYnV0b3ImIGRpc3RyaWJ1dG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXN0cmlidXRvcjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCShyZXZpc2lvbiAxNDk2NTIpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTEsOCArMTUxLDcgQEAgYm9vbCBTY29wZUNvbnRlbnREaXN0cmlidXRpb246
Omhhc0luc2VydAogfQogCiBDb250ZW50RGlzdHJpYnV0b3I6OkNvbnRlbnREaXN0cmlidXRvcigp
Ci0gICAgOiBtX25lZWRzU2VsZWN0RmVhdHVyZVNldChmYWxzZSkKLSAgICAsIG1fdmFsaWRpdHko
VW5kZXRlcm1pbmVkKQorICAgIDogbV92YWxpZGl0eShVbmRldGVybWluZWQpCiB7CiB9CiAKQEAg
LTMyNSw1NyArMzI0LDYgQEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmludmFsaWRhdGVEaXN0
cgogICAgIH0KIH0KIAotY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIENvbnRlbnREaXN0cmli
dXRvcjo6ZW5zdXJlU2VsZWN0RmVhdHVyZVNldChFbGVtZW50U2hhZG93KiBzaGFkb3cpCi17Ci0g
ICAgaWYgKCFtX25lZWRzU2VsZWN0RmVhdHVyZVNldCkKLSAgICAgICAgcmV0dXJuIG1fc2VsZWN0
RmVhdHVyZXM7Ci0KLSAgICBtX3NlbGVjdEZlYXR1cmVzLmNsZWFyKCk7Ci0gICAgaWYgKFNoYWRv
d1Jvb3QqIHJvb3QgPSBzaGFkb3ctPnNoYWRvd1Jvb3QoKSkKLSAgICAgICAgY29sbGVjdFNlbGVj
dEZlYXR1cmVTZXRGcm9tKHJvb3QpOwotICAgIG1fbmVlZHNTZWxlY3RGZWF0dXJlU2V0ID0gZmFs
c2U7Ci0gICAgcmV0dXJuIG1fc2VsZWN0RmVhdHVyZXM7Ci19Ci0KLXZvaWQgQ29udGVudERpc3Ry
aWJ1dG9yOjpjb2xsZWN0U2VsZWN0RmVhdHVyZVNldEZyb20oU2hhZG93Um9vdCogcm9vdCkKLXsK
LSAgICBpZiAoU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNFbGVtZW50U2hhZG93KHJvb3Qp
KSB7Ci0gICAgICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZp
cnN0V2l0aGluKHJvb3QpOyBlbGVtZW50OyBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4
dChlbGVtZW50KSkgewotICAgICAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFk
b3cgPSBlbGVtZW50LT5zaGFkb3coKSkKLSAgICAgICAgICAgICAgICBtX3NlbGVjdEZlYXR1cmVz
LmFkZChlbGVtZW50U2hhZG93LT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQo
ZWxlbWVudFNoYWRvdykpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKFNjb3BlQ29udGVu
dERpc3RyaWJ1dGlvbjo6aGFzQ29udGVudEVsZW1lbnQocm9vdCkpIHsKLSAgICAgICAgZm9yIChF
bGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4ocm9vdCk7IGVs
ZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQpKSB7Ci0gICAg
ICAgICAgICBpZiAoIWlzSFRNTENvbnRlbnRFbGVtZW50KGVsZW1lbnQpKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBsaXN0ID0g
dG9IVE1MQ29udGVudEVsZW1lbnQoZWxlbWVudCktPnNlbGVjdG9yTGlzdCgpOwotICAgICAgICAg
ICAgZm9yIChjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBsaXN0LmZpcnN0KCk7IHNlbGVj
dG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3RvcikpIHsKLSAgICAg
ICAgICAgICAgICBmb3IgKGNvbnN0IENTU1NlbGVjdG9yKiBjb21wb25lbnQgPSBzZWxlY3Rvcjsg
Y29tcG9uZW50OyBjb21wb25lbnQgPSBjb21wb25lbnQtPnRhZ0hpc3RvcnkoKSkKLSAgICAgICAg
ICAgICAgICAgICAgbV9zZWxlY3RGZWF0dXJlcy5jb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3Io
Y29tcG9uZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBD
b250ZW50RGlzdHJpYnV0b3I6OmRpZEFmZmVjdFNlbGVjdG9yKEVsZW1lbnQqIGhvc3QsIEFmZmVj
dGVkU2VsZWN0b3JNYXNrIG1hc2spCi17Ci0gICAgaWYgKGVuc3VyZVNlbGVjdEZlYXR1cmVTZXQo
aG9zdC0+c2hhZG93KCkpLmhhc1NlbGVjdG9yRm9yKG1hc2spKQotICAgICAgICBpbnZhbGlkYXRl
RGlzdHJpYnV0aW9uKGhvc3QpOwotfQotCi12b2lkIENvbnRlbnREaXN0cmlidXRvcjo6d2lsbEFm
ZmVjdFNlbGVjdG9yKEVsZW1lbnQqIGhvc3QpCi17Ci0gICAgZm9yIChFbGVtZW50U2hhZG93KiBz
aGFkb3cgPSBob3N0LT5zaGFkb3coKTsgc2hhZG93OyBzaGFkb3cgPSBzaGFkb3ctPmNvbnRhaW5p
bmdTaGFkb3coKSkgewotICAgICAgICBpZiAoc2hhZG93LT5kaXN0cmlidXRvcigpLm5lZWRzU2Vs
ZWN0RmVhdHVyZVNldCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHNoYWRvdy0+ZGlz
dHJpYnV0b3IoKS5zZXROZWVkc1NlbGVjdEZlYXR1cmVTZXQoKTsKLSAgICB9Ci0KLSAgICBpbnZh
bGlkYXRlRGlzdHJpYnV0aW9uKGhvc3QpOwotfQotCiB2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6
ZGlkU2hhZG93Qm91bmRhcnlDaGFuZ2UoRWxlbWVudCogaG9zdCkKIHsKICAgICBzZXRWYWxpZGl0
eShVbmRldGVybWluZWQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVu
dERpc3RyaWJ1dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
Q29udGVudERpc3RyaWJ1dG9yLmgJKHJldmlzaW9uIDE0OTY1MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3
ICszMSw2IEBACiAjaWZuZGVmIENvbnRlbnREaXN0cmlidXRvcl9oCiAjZGVmaW5lIENvbnRlbnRE
aXN0cmlidXRvcl9oCiAKLSNpbmNsdWRlICJTZWxlY3RSdWxlRmVhdHVyZVNldC5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgpAQCAtMTE1LDE1ICsxMTQsMTIgQEAgcHVibGljOgogICAgIH5Db250
ZW50RGlzdHJpYnV0b3IoKTsKIAogICAgIEluc2VydGlvblBvaW50KiBmaW5kSW5zZXJ0aW9uUG9p
bnRGb3IoY29uc3QgTm9kZSoga2V5KSBjb25zdDsKLSAgICBjb25zdCBTZWxlY3RSdWxlRmVhdHVy
ZVNldCYgZW5zdXJlU2VsZWN0RmVhdHVyZVNldChFbGVtZW50U2hhZG93Kik7CiAKICAgICB2b2lk
IGRpc3RyaWJ1dGVTZWxlY3Rpb25zVG8oSW5zZXJ0aW9uUG9pbnQqLCBjb25zdCBDb250ZW50RGlz
dHJpYnV0aW9uJiBwb29sLCBWZWN0b3I8Ym9vbD4mIGRpc3RyaWJ1dGVkKTsKICAgICB2b2lkIGRp
c3RyaWJ1dGVOb2RlQ2hpbGRyZW5UbyhJbnNlcnRpb25Qb2ludCosIENvbnRhaW5lck5vZGUqKTsK
IAogICAgIHZvaWQgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihFbGVtZW50KiBob3N0KTsKICAgICB2
b2lkIGRpZFNoYWRvd0JvdW5kYXJ5Q2hhbmdlKEVsZW1lbnQqIGhvc3QpOwotICAgIHZvaWQgZGlk
QWZmZWN0U2VsZWN0b3IoRWxlbWVudCogaG9zdCwgQWZmZWN0ZWRTZWxlY3Rvck1hc2spOwotICAg
IHZvaWQgd2lsbEFmZmVjdFNlbGVjdG9yKEVsZW1lbnQqIGhvc3QpOwogCiAgICAgc3RhdGljIHZv
aWQgZW5zdXJlRGlzdHJpYnV0aW9uKFNoYWRvd1Jvb3QqKTsKIApAQCAtMTMyLDE4ICsxMjgsMTIg
QEAgcHJpdmF0ZToKICAgICBib29sIGludmFsaWRhdGUoRWxlbWVudCogaG9zdCk7CiAgICAgdm9p
ZCBwb3B1bGF0ZShOb2RlKiwgQ29udGVudERpc3RyaWJ1dGlvbiYpOwogCi0gICAgdm9pZCBjb2xs
ZWN0U2VsZWN0RmVhdHVyZVNldEZyb20oU2hhZG93Um9vdCopOwotICAgIGJvb2wgbmVlZHNTZWxl
Y3RGZWF0dXJlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1NlbGVjdEZlYXR1cmVTZXQ7IH0K
LSAgICB2b2lkIHNldE5lZWRzU2VsZWN0RmVhdHVyZVNldCgpIHsgbV9uZWVkc1NlbGVjdEZlYXR1
cmVTZXQgPSB0cnVlOyB9Ci0KICAgICB2b2lkIHNldFZhbGlkaXR5KFZhbGlkaXR5IHZhbGlkaXR5
KSB7IG1fdmFsaWRpdHkgPSB2YWxpZGl0eTsgfQogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsaWRpdHkgPT0gVmFsaWQ7IH0KICAgICBib29sIG5lZWRzRGlzdHJpYnV0aW9u
KCkgY29uc3Q7CiAgICAgYm9vbCBuZWVkc0ludmFsaWRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsaWRpdHkgIT0gSW52YWxpZGF0ZWQ7IH0KIAogICAgIEhhc2hNYXA8Y29uc3QgTm9kZSosIFJl
ZlB0cjxJbnNlcnRpb25Qb2ludD4gPiBtX25vZGVUb0luc2VydGlvblBvaW50OwotICAgIFNlbGVj
dFJ1bGVGZWF0dXJlU2V0IG1fc2VsZWN0RmVhdHVyZXM7Ci0gICAgYm9vbCBtX25lZWRzU2VsZWN0
RmVhdHVyZVNldCA6IDE7CiAgICAgdW5zaWduZWQgbV92YWxpZGl0eSA6IDI7CiB9OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCShyZXZp
c2lvbiAxNDk2NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2lu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw4ICsxMzQsNiBAQCBOb2RlOjpJbnNlcnRpb25O
b3RpZmljYXRpb25SZXF1ZXN0IEluc2VyCiAgICAgICAgICAgICBpZiAoaXNBY3RpdmUoKSAmJiAh
bV9yZWdpc3RlcmVkV2l0aFNoYWRvd1Jvb3QgJiYgaW5zZXJ0aW9uUG9pbnQtPnRyZWVTY29wZSgp
LT5yb290Tm9kZSgpID09IHJvb3QpIHsKICAgICAgICAgICAgICAgICBtX3JlZ2lzdGVyZWRXaXRo
U2hhZG93Um9vdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcm9vdC0+ZW5zdXJlU2NvcGVEaXN0
cmlidXRpb24oKS0+cmVnaXN0ZXJJbnNlcnRpb25Qb2ludCh0aGlzKTsKLSAgICAgICAgICAgICAg
ICBpZiAoY2FuQWZmZWN0U2VsZWN0b3IoKSkKLSAgICAgICAgICAgICAgICAgICAgcm9vdE93bmVy
LT53aWxsQWZmZWN0U2VsZWN0b3IoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
QEAgLTE2MSw4ICsxNTksNiBAQCB2b2lkIEluc2VydGlvblBvaW50OjpyZW1vdmVkRnJvbShDb250
YWluCiAgICAgICAgIEFTU0VSVChyb290KTsKICAgICAgICAgbV9yZWdpc3RlcmVkV2l0aFNoYWRv
d1Jvb3QgPSBmYWxzZTsKICAgICAgICAgcm9vdC0+ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24oKS0+
dW5yZWdpc3Rlckluc2VydGlvblBvaW50KHRoaXMpOwotICAgICAgICBpZiAocm9vdE93bmVyICYm
IGNhbkFmZmVjdFNlbGVjdG9yKCkpCi0gICAgICAgICAgICByb290T3duZXItPndpbGxBZmZlY3RT
ZWxlY3RvcigpOwogICAgIH0KIAogICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRp
b25Qb2ludCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2lu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBv
aW50LmgJKHJldmlzaW9uIDE0OTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lu
c2VydGlvblBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgTWF0Y2hUeXBlIG1hdGNoVHlwZUZvcihOb2RlKikgeyByZXR1cm4gQWx3YXlz
TWF0Y2hlczsgfQogICAgIHZpcnR1YWwgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxp
c3QoKSB7IHJldHVybiBlbXB0eVNlbGVjdG9yTGlzdCgpOyB9CiAgICAgdmlydHVhbCBUeXBlIGlu
c2VydGlvblBvaW50VHlwZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuQWZmZWN0
U2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgYm9vbCByZXNldFN0eWxl
SW5oZXJpdGFuY2UoKSBjb25zdDsKICAgICB2b2lkIHNldFJlc2V0U3R5bGVJbmhlcml0YW5jZShi
b29sKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJl
U2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RS
dWxlRmVhdHVyZVNldC5jcHAJKHJldmlzaW9uIDE0OTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw4
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNlbGVjdFJ1bGVGZWF0dXJl
U2V0LmgiCi0KLSNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLVNlbGVjdFJ1bGVGZWF0dXJlU2V0OjpTZWxlY3RSdWxlRmVhdHVyZVNldCgpCi0gICAgOiBt
X2ZlYXR1cmVGbGFncygwKQotewotfQotCi12b2lkIFNlbGVjdFJ1bGVGZWF0dXJlU2V0OjphZGQo
Y29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIGZlYXR1cmVTZXQpCi17Ci0gICAgbV9jc3NSdWxl
RmVhdHVyZVNldC5hZGQoZmVhdHVyZVNldC5tX2Nzc1J1bGVGZWF0dXJlU2V0KTsKLSAgICBtX2Zl
YXR1cmVGbGFncyB8PSBmZWF0dXJlU2V0Lm1fZmVhdHVyZUZsYWdzOwotfQotCi12b2lkIFNlbGVj
dFJ1bGVGZWF0dXJlU2V0OjpjbGVhcigpCi17Ci0gICAgbV9jc3NSdWxlRmVhdHVyZVNldC5jbGVh
cigpOwotICAgIG1fZmVhdHVyZUZsYWdzID0gMDsKLX0KLQotdm9pZCBTZWxlY3RSdWxlRmVhdHVy
ZVNldDo6Y29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxl
Y3RvcikKLXsKLSAgICBtX2Nzc1J1bGVGZWF0dXJlU2V0LmNvbGxlY3RGZWF0dXJlc0Zyb21TZWxl
Y3RvcihzZWxlY3Rvcik7Ci0KLSAgICBzd2l0Y2ggKHNlbGVjdG9yLT5wc2V1ZG9UeXBlKCkpIHsK
LSAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DaGVja2VkOgotICAgICAgICBzZXRTZWxlY3RS
dWxlRmVhdHVyZShBZmZlY3RlZFNlbGVjdG9yQ2hlY2tlZCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0VuYWJsZWQ6Ci0gICAgICAgIHNldFNlbGVjdFJ1bGVG
ZWF0dXJlKEFmZmVjdGVkU2VsZWN0b3JFbmFibGVkKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6UHNldWRvRGlzYWJsZWQ6Ci0gICAgICAgIHNldFNlbGVjdFJ1bGVGZWF0
dXJlKEFmZmVjdGVkU2VsZWN0b3JEaXNhYmxlZCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OlBzZXVkb0luZGV0ZXJtaW5hdGU6Ci0gICAgICAgIHNldFNlbGVjdFJ1bGVG
ZWF0dXJlKEFmZmVjdGVkU2VsZWN0b3JJbmRldGVybWluYXRlKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGluazoKLSAgICAgICAgc2V0U2VsZWN0UnVsZUZl
YXR1cmUoQWZmZWN0ZWRTZWxlY3RvckxpbmspOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENT
U1NlbGVjdG9yOjpQc2V1ZG9UYXJnZXQ6Ci0gICAgICAgIHNldFNlbGVjdFJ1bGVGZWF0dXJlKEFm
ZmVjdGVkU2VsZWN0b3JUYXJnZXQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9WaXNpdGVkOgotICAgICAgICBzZXRTZWxlY3RSdWxlRmVhdHVyZShBZmZlY3Rl
ZFNlbGVjdG9yVmlzaXRlZCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLX0KLQotfQotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TZWxlY3RSdWxlRmVhdHVyZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmgJKHJldmlzaW9uIDE0OTY1MikKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU2VsZWN0UnVsZUZlYXR1cmVTZXRfaAotI2Rl
ZmluZSBTZWxlY3RSdWxlRmVhdHVyZVNldF9oCi0KLSNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5j
bHVkZSAiUnVsZUZlYXR1cmUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTZWxl
Y3RSdWxlRmVhdHVyZVNldCB7Ci1wdWJsaWM6Ci0gICAgU2VsZWN0UnVsZUZlYXR1cmVTZXQoKTsK
LQotICAgIHZvaWQgYWRkKGNvbnN0IFNlbGVjdFJ1bGVGZWF0dXJlU2V0Jik7Ci0gICAgdm9pZCBj
bGVhcigpOwotICAgIHZvaWQgY29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKGNvbnN0IENTU1Nl
bGVjdG9yKik7Ci0KLSAgICBib29sIGhhc1NlbGVjdG9yRm9ySWQoY29uc3QgQXRvbWljU3RyaW5n
JikgY29uc3Q7Ci0gICAgYm9vbCBoYXNTZWxlY3RvckZvckNsYXNzKGNvbnN0IEF0b21pY1N0cmlu
ZyYpIGNvbnN0OwotICAgIGJvb2wgaGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUoY29uc3QgQXRvbWlj
U3RyaW5nJikgY29uc3Q7Ci0KLSAgICBib29sIGhhc1NlbGVjdG9yRm9yQ2hlY2tlZCgpIGNvbnN0
IHsgcmV0dXJuIGhhc1NlbGVjdG9yRm9yKEFmZmVjdGVkU2VsZWN0b3JDaGVja2VkKTsgfQotICAg
IGJvb2wgaGFzU2VsZWN0b3JGb3JFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gaGFzU2VsZWN0b3JG
b3IoQWZmZWN0ZWRTZWxlY3RvckVuYWJsZWQpOyB9Ci0gICAgYm9vbCBoYXNTZWxlY3RvckZvckRp
c2FibGVkKCkgY29uc3QgeyByZXR1cm4gaGFzU2VsZWN0b3JGb3IoQWZmZWN0ZWRTZWxlY3RvckRp
c2FibGVkKTsgfQotICAgIGJvb2wgaGFzU2VsZWN0b3JGb3JJbmRldGVybWluYXRlKCkgY29uc3Qg
eyByZXR1cm4gaGFzU2VsZWN0b3JGb3IoQWZmZWN0ZWRTZWxlY3RvckluZGV0ZXJtaW5hdGUpOyB9
Ci0gICAgYm9vbCBoYXNTZWxlY3RvckZvckxpbmsoKSBjb25zdCB7IHJldHVybiBoYXNTZWxlY3Rv
ckZvcihBZmZlY3RlZFNlbGVjdG9yTGluayk7IH0KLSAgICBib29sIGhhc1NlbGVjdG9yRm9yVGFy
Z2V0KCkgY29uc3QgeyByZXR1cm4gaGFzU2VsZWN0b3JGb3IoQWZmZWN0ZWRTZWxlY3RvclRhcmdl
dCk7IH0KLSAgICBib29sIGhhc1NlbGVjdG9yRm9yVmlzaXRlZCgpIGNvbnN0IHsgcmV0dXJuIGhh
c1NlbGVjdG9yRm9yKEFmZmVjdGVkU2VsZWN0b3JWaXNpdGVkKTsgfQotCi0gICAgYm9vbCBoYXNT
ZWxlY3RvckZvcihBZmZlY3RlZFNlbGVjdG9yTWFzayBmZWF0dXJlcykgY29uc3QgeyByZXR1cm4g
bV9mZWF0dXJlRmxhZ3MgJiBmZWF0dXJlczsgfQotCi1wcml2YXRlOgotICAgIHZvaWQgc2V0U2Vs
ZWN0UnVsZUZlYXR1cmUoQWZmZWN0ZWRTZWxlY3RvclR5cGUgZmVhdHVyZSkgeyBtX2ZlYXR1cmVG
bGFncyB8PSBmZWF0dXJlOyB9Ci0KLSAgICBSdWxlRmVhdHVyZVNldCBtX2Nzc1J1bGVGZWF0dXJl
U2V0OwotICAgIGludCBtX2ZlYXR1cmVGbGFnczsKLX07Ci0KLWlubGluZSBib29sIFNlbGVjdFJ1
bGVGZWF0dXJlU2V0OjpoYXNTZWxlY3RvckZvcklkKGNvbnN0IEF0b21pY1N0cmluZyYgaWRWYWx1
ZSkgY29uc3QKLXsKLSAgICBBU1NFUlQoIWlkVmFsdWUuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4g
bV9jc3NSdWxlRmVhdHVyZVNldC5pZHNJblJ1bGVzLmNvbnRhaW5zKGlkVmFsdWUuaW1wbCgpKTsK
LX0KLQotaW5saW5lIGJvb2wgU2VsZWN0UnVsZUZlYXR1cmVTZXQ6Omhhc1NlbGVjdG9yRm9yQ2xh
c3MoY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc1ZhbHVlKSBjb25zdAotewotICAgIEFTU0VSVCgh
Y2xhc3NWYWx1ZS5pc0VtcHR5KCkpOwotICAgIHJldHVybiBtX2Nzc1J1bGVGZWF0dXJlU2V0LmNs
YXNzZXNJblJ1bGVzLmNvbnRhaW5zKGNsYXNzVmFsdWUuaW1wbCgpKTsKLX0KLQotaW5saW5lIGJv
b2wgU2VsZWN0UnVsZUZlYXR1cmVTZXQ6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgYXR0cmlidXRlTmFtZSkgY29uc3QKLXsKLSAgICBBU1NFUlQoIWF0dHJpYnV0
ZU5hbWUuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4gbV9jc3NSdWxlRmVhdHVyZVNldC5hdHRyc0lu
UnVsZXMuY29udGFpbnMoYXR0cmlidXRlTmFtZS5pbXBsKCkpOwotfQotCi19Ci0KLSNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMTQ5NjUyKQor
KysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04NSw3ICs4NSw2IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2lu
Y2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
aCIKLSNpbmNsdWRlICJTZWxlY3RSdWxlRmVhdHVyZVNldC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93
Um9vdC5oIgpAQCAtNDAyLDYzICs0MDEsNiBAQCBOb2RlKiBJbnRlcm5hbHM6OnBhcmVudFRyZWVT
Y29wZShOb2RlKiBuCiAgICAgcmV0dXJuIHBhcmVudFRyZWVTY29wZSA/IHBhcmVudFRyZWVTY29w
ZS0+cm9vdE5vZGUoKSA6IDA7CiB9CiAKLWJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvcklk
SW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBpZFZhbHVlLCBFeGNlcHRpb25D
b2RlJiBlYykKLXsKLSAgICBpZiAoIWhvc3QgfHwgIWhvc3QtPnNoYWRvdygpKSB7Ci0gICAgICAg
IGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gaG9zdC0+c2hhZG93KCktPmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVy
ZVNldChob3N0LT5zaGFkb3coKSkuaGFzU2VsZWN0b3JGb3JJZChpZFZhbHVlKTsKLX0KLQotYm9v
bCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yQ2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBj
b25zdCBTdHJpbmcmIGNsYXNzTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFo
b3N0IHx8ICFob3N0LT5zaGFkb3coKSkgewotICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VS
UjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcmV0dXJuIGhvc3QtPnNoYWRvdygp
LT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoaG9zdC0+c2hhZG93KCkpLmhh
c1NlbGVjdG9yRm9yQ2xhc3MoY2xhc3NOYW1lKTsKLX0KLQotYm9vbCBJbnRlcm5hbHM6Omhhc1Nl
bGVjdG9yRm9yQXR0cmlidXRlSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBh
dHRyaWJ1dGVOYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIWhvc3QgfHwgIWhv
c3QtPnNoYWRvdygpKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gaG9zdC0+c2hhZG93KCktPmRpc3RyaWJ1
dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFkb3coKSkuaGFzU2VsZWN0b3JG
b3JBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Ci19Ci0KLWJvb2wgSW50ZXJuYWxzOjpoYXNTZWxl
Y3RvckZvclBzZXVkb0NsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBw
c2V1ZG9DbGFzcywgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFob3N0IHx8ICFob3N0
LT5zaGFkb3coKSkgewotICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotCi0gICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIGZlYXR1
cmVTZXQgPSBob3N0LT5zaGFkb3coKS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJl
U2V0KGhvc3QtPnNoYWRvdygpKTsKLSAgICBpZiAocHNldWRvQ2xhc3MgPT0gImNoZWNrZWQiKQot
ICAgICAgICByZXR1cm4gZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvckNoZWNrZWQoKTsKLSAgICBp
ZiAocHNldWRvQ2xhc3MgPT0gImVuYWJsZWQiKQotICAgICAgICByZXR1cm4gZmVhdHVyZVNldC5o
YXNTZWxlY3RvckZvckVuYWJsZWQoKTsKLSAgICBpZiAocHNldWRvQ2xhc3MgPT0gImRpc2FibGVk
IikKLSAgICAgICAgcmV0dXJuIGZlYXR1cmVTZXQuaGFzU2VsZWN0b3JGb3JEaXNhYmxlZCgpOwot
ICAgIGlmIChwc2V1ZG9DbGFzcyA9PSAiaW5kZXRlcm1pbmF0ZSIpCi0gICAgICAgIHJldHVybiBm
ZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9ySW5kZXRlcm1pbmF0ZSgpOwotICAgIGlmIChwc2V1ZG9D
bGFzcyA9PSAibGluayIpCi0gICAgICAgIHJldHVybiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9y
TGluaygpOwotICAgIGlmIChwc2V1ZG9DbGFzcyA9PSAidGFyZ2V0IikKLSAgICAgICAgcmV0dXJu
IGZlYXR1cmVTZXQuaGFzU2VsZWN0b3JGb3JUYXJnZXQoKTsKLSAgICBpZiAocHNldWRvQ2xhc3Mg
PT0gInZpc2l0ZWQiKQotICAgICAgICByZXR1cm4gZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvclZp
c2l0ZWQoKTsKLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsK
LX0KLQogdW5zaWduZWQgSW50ZXJuYWxzOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBjb25z
dAogewogICAgIEZyYW1lKiBjb250ZXh0RnJhbWUgPSBmcmFtZSgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMTQ5NjUyKQorKysgU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMCArNTUsNiBA
QAogICAgIGJvb2xlYW4gaXNWYWxpZENvbnRlbnRTZWxlY3QoRWxlbWVudCBjb250ZW50RWxlbWVu
dCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgTm9kZSB0cmVlU2NvcGVSb290Tm9kZShOb2Rl
IG5vZGUpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICBOb2RlIHBhcmVudFRyZWVTY29wZShO
b2RlIG5vZGUpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAgICBib29sZWFuIGhhc1NlbGVjdG9y
Rm9ySWRJblNoYWRvdyhFbGVtZW50IGhvc3QsIERPTVN0cmluZyBpZCkgcmFpc2VzIChET01FeGNl
cHRpb24pOwotICAgIGJvb2xlYW4gaGFzU2VsZWN0b3JGb3JDbGFzc0luU2hhZG93KEVsZW1lbnQg
aG9zdCwgRE9NU3RyaW5nIGNsYXNzTmFtZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwotICAgIGJv
b2xlYW4gaGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGVJblNoYWRvdyhFbGVtZW50IGhvc3QsIERPTVN0
cmluZyBhdHRyaWJ1dGVOYW1lKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0gICAgYm9vbGVhbiBo
YXNTZWxlY3RvckZvclBzZXVkb0NsYXNzSW5TaGFkb3coRWxlbWVudCBob3N0LCBET01TdHJpbmcg
cHNldWRvQ2xhc3MpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIAogICAgIC8vIENTUyBBbmltYXRp
b24gdGVzdGluZy4KICAgICB1bnNpZ25lZCBsb25nIG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201011</attachid>
            <date>2013-05-07 18:39:28 -0700</date>
            <delta_ts>2013-05-07 19:02:42 -0700</delta_ts>
            <desc>for landing 3</desc>
            <filename>remove-selectrulefeatureset-5.patch</filename>
            <type>text/plain</type>
            <size>32833</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTcwMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEzLTA1LTA3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgU2VsZWN0UnVsZUZl
YXR1cmVTZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAg
ICAgVGhpcyBpcyBkZWFkIGNvZGUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAg
ICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpkaWRBZmZlY3RTZWxlY3Rvcik6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAg
KEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50U2hhZG93Lmg6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50U2hhZG93OjppbnZhbGlkYXRlRGlzdHJpYnV0aW9uKToKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudERpc3RyaWJ1dG9yOjpDb250ZW50RGlzdHJpYnV0b3IpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmg6CisgICAgICAgIChD
b250ZW50RGlzdHJpYnV0b3IpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjppbnNlcnRlZEludG8pOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6OnJlbW92ZWRGcm9tKToKKyAgICAgICAg
KiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoSW5zZXJ0aW9uUG9pbnQp
OgorICAgICAgICAqIGh0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5oOiBSZW1vdmVk
LgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMy0wNS0wNyAgQW5kZXJzIENh
cmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEJlZ2luIHVucmF2ZWxpbmcg
dGhlIG1lc3MgdGhhdCBpcyBRdW90ZXNEYXRhCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMTQ5NzAzKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTE1NzgsNyArMTU3OCw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCiAgICAgaHRtbC9zaGFkb3cvTWV0ZXJTaGFk
b3dFbGVtZW50LmNwcAogICAgIGh0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAK
LSAgICBodG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAKICAgICBodG1sL3NoYWRv
dy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCiAgICAgaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1l
bnQuY3BwCiAgICAgaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApJbmRl
eDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNDk3MDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNzUwLDgg
KzM3NTAsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01ldGVyU2hhZG93RWxlbWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Q
cm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Q
cm9ncmVzc1NoYWRvd0VsZW1lbnQuaCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2Vs
ZWN0UnVsZUZlYXR1cmVTZXQuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TZWxl
Y3RSdWxlRmVhdHVyZVNldC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJU
aHVtYkVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVt
YkVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1l
bnQuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTQ5NzAzKQorKysgU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtNzczLDcgKzc3Myw2IEBAIFNPVVJD
RVMgKz0gXAogICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAgXAogICAgIGh0
bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAgXAogICAgIGh0bWwvc2hhZG93L1Byb2dy
ZXNzU2hhZG93RWxlbWVudC5jcHAgXAotICAgIGh0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJl
U2V0LmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBcCiAgICAg
aHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwIFwKICAgICBodG1sL3NoYWRvdy9UZXh0
Q29udHJvbElubmVyRWxlbWVudHMuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZp
c2lvbiAxNDk3MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBj
b3B5KQpAQCAtNTg3LDcgKzU4Nyw2IEBAIF9fWk43V2ViQ29yZTE3bGFuZ3VhZ2VEaWRDaGFuZ2VF
dgogX19aTjdXZWJDb3JlMTdvcGVuVGVtcG9yYXJ5RmlsZUVSS04zV1RGNlN0cmluZ0VSaQogX19a
TjdXZWJDb3JlMTdzZXRDb29raWVzRnJvbURPTUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9u
RVJLTlNfNEtVUkxFUzVfUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxN3VzZXJWaXNpYmxl
U3RyaW5nRVA1TlNVUkwKLV9fWk43V2ViQ29yZTE4Q29udGVudERpc3RyaWJ1dG9yMjJlbnN1cmVT
ZWxlY3RGZWF0dXJlU2V0RVBOU18xM0VsZW1lbnRTaGFkb3dFCiBfX1pON1dlYkNvcmUxOERPTVdp
bmRvd0V4dGVuc2lvbkMxRVBOU181RnJhbWVFUE5TXzE1RE9NV3JhcHBlcldvcmxkRQogX19aTjdX
ZWJDb3JlMThQbGF0Zm9ybVBhc3RlYm9hcmQxMHVuaXF1ZU5hbWVFdgogX19aTjdXZWJDb3JlMThQ
bGF0Zm9ybVBhc3RlYm9hcmQxM2J1ZmZlckZvclR5cGVFUktOM1dURjZTdHJpbmdFCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24g
MTQ5NzAzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTY1NTk4LDE0ICs2NTU5OCw2IEBACiAJCQkJCT4KIAkJCQk8L0Zp
bGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHNoYWRvd1xTZWxlY3RS
dWxlRmVhdHVyZVNldC5jcHAiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKLQkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxodG1sXHNoYWRvd1xTZWxlY3RSdWxlRmVhdHVyZVNldC5oIgotCQkJ
CQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxz
aGFkb3dcU2xpZGVyVGh1bWJFbGVtZW50LmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDE0OTcwMykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTY1OCw4ICsxNjU4LDYgQEAKIAkJNTNF
Rjc2NkMxNjUzMTk5NDAwNENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggaW4gQ29weSBHZW5lcmF0
ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0VGNzY2QTE2
NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLzsgfTsKIAkJNTUwQTBCQzkwODVG
NjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxp
ZmllZE5hbWUuY3BwICovOyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlm
aWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1NzBCNzhCRjE2NTBDRTgxMDAx
REJFMUIgLyogU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwQjc4QkQxNjUwQ0U4MTAwMURCRTFCIC8qIFNlbGVj
dFJ1bGVGZWF0dXJlU2V0LmNwcCAqLzsgfTsKLQkJNTcwQjc4QzAxNjUwQ0U4MTAwMURCRTFCIC8q
IFNlbGVjdFJ1bGVGZWF0dXJlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzBCNzhCRTE2NTBDRTgxMDAxREJFMUIgLyogU2VsZWN0UnVsZUZlYXR1
cmVTZXQuaCAqLzsgfTsKIAkJNTczRDEzNDcxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvclR5
cGVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAg
Ki87IH07CiAJCTU3OERBMjBFMTUyMEVCOEMwMDYxNDFDMSAvKiBJbnNwZWN0b3JGcm9udGVuZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY0RjVGRkMx
MUNCRDMwMTAwQTE4NkJGIC8qIEluc3BlY3RvckZyb250ZW5kLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTc4REEyMEYxNTIwRUJBMzAwNjE0MUMx
IC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NzNEMTM0NjE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yVHlw
ZUJ1aWxkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtODA2Myw4ICs4MDYxLDYgQEAKIAkJNTNFRjc2NkExNjUzMEE2MTAwNENCRTQ5IC8qIFNl
dHRpbmdzTWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNldHRpbmdz
TWFjcm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MEEwQkM3MDg1RjYwMzkw
MDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTUwQTBCQzgw
ODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKLQkJNTcwQjc4QkQx
NjUwQ0U4MTAwMURCRTFCIC8qIFNlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTcwQjc4QkUxNjUwQ0U4MTAwMURCRTFCIC8qIFNlbGVj
dFJ1bGVGZWF0dXJlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlbGVj
dFJ1bGVGZWF0dXJlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3M0QxMzQ1
MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNw
ZWN0b3JUeXBlQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JUeXBlQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0I3OTE5
RjE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudERpc3RyaWJ1dG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnREaXN0cmlidXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzk0Myw4ICsxMzkzOSw2IEBACiAJCQkJQTc4RTUyNkUx
MzQ2QkQxNzAwQUQ5QzMxIC8qIE1ldGVyU2hhZG93RWxlbWVudC5oICovLAogCQkJCUE3MTVFNjUw
MTM0QkJCRUMwMEQ4RTcxMyAvKiBQcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwICovLAogCQkJCUE3
MTVFNjUxMTM0QkJCRUMwMEQ4RTcxMyAvKiBQcm9ncmVzc1NoYWRvd0VsZW1lbnQuaCAqLywKLQkJ
CQk1NzBCNzhCRDE2NTBDRTgxMDAxREJFMUIgLyogU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3BwICov
LAotCQkJCTU3MEI3OEJFMTY1MENFODEwMDFEQkUxQiAvKiBTZWxlY3RSdWxlRmVhdHVyZVNldC5o
ICovLAogCQkJCTQxNTBGOUYwMTJCNkUwRTcwMDA4Qzg2MCAvKiBTbGlkZXJUaHVtYkVsZW1lbnQu
Y3BwICovLAogCQkJCTQxNTBGOUVGMTJCNkUwRTcwMDA4Qzg2MCAvKiBTbGlkZXJUaHVtYkVsZW1l
bnQuaCAqLywKIAkJCQk0NTEyNTAyMDE1RENFMzdEMDAyRjg0RTIgLyogU3BpbkJ1dHRvbkVsZW1l
bnQuY3BwICovLApAQCAtMjMzOTgsNyArMjMzOTIsNiBAQAogCQkJCTQxQjhDRDQ2MTZEMDQ1OTEw
MDBFOENDMCAvKiBTZWxlY3RvckNoZWNrZXJGYXN0UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDE1MDcxNTgxNjg1MDY3MzAwQzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNDUzMjJBQzE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNTcwQjc4QzAxNjUwQ0U4MTAwMURCRTFCIC8qIFNlbGVjdFJ1bGVGZWF0
dXJlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzVFNDk3NjEwNzUyQUNCMDBDOUI4OTYgLyog
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUxMDA5OUU2
NDkyMDA1NkU1ODEgLyogU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUI4REJEQjRDMTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmggaW4g
SGVhZGVycyAqLywKQEAgLTI2NDc1LDcgKzI2NDY4LDYgQEAKIAkJCQk0MUI4Q0Q0NTE2RDA0NTkx
MDAwRThDQzAgLyogU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDE1MDcxNTcxNjg1MDY3MzAwQzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUU0NTMyMkFCMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTU3MEI3OEJGMTY1MENFODEwMDFEQkUxQiAvKiBTZWxlY3RS
dWxlRmVhdHVyZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzVFNDk3NzEwNzUyQUNCMDBD
OUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkz
MzA5RTBGMDk5RTY0OTIwMDU2RTU4MSAvKiBTZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCOERCREI0QjEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9u
Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE0OTcwMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODUxLDExICs4NTEsNiBAQCBzdGF0aWMgYm9vbCBjaGVja05lZWRzU3R5bGVJ
bnZhbGlkYXRpb25GCiAKIHZvaWQgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlLCBBdHRyaWJ1dGVN
b2RpZmljYXRpb25SZWFzb24pCiB7Ci0gICAgaWYgKEVsZW1lbnRTaGFkb3cqIHBhcmVudEVsZW1l
bnRTaGFkb3cgPSBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbih0aGlzKSkgewotICAgICAg
ICBpZiAoc2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlvbldoZW5BdHRyaWJ1dGVDaGFuZ2VkKHBh
cmVudEVsZW1lbnRTaGFkb3csIG5hbWUsIG5ld1ZhbHVlKSkKLSAgICAgICAgICAgIHBhcmVudEVs
ZW1lbnRTaGFkb3ctPmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKLSAgICB9Ci0KICAgICBwYXJz
ZUF0dHJpYnV0ZShuYW1lLCBuZXdWYWx1ZSk7CiAKICAgICBkb2N1bWVudCgpLT5pbmNET01UcmVl
VmVyc2lvbigpOwpAQCAtOTk1LDQwICs5OTAsNiBAQCB2b2lkIEVsZW1lbnQ6OmNsYXNzQXR0cmli
dXRlQ2hhbmdlZChjb25zCiAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIAotYm9v
bCBFbGVtZW50OjpzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5n
ZWQoRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRvdywgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKLXsKLSAgICBBU1NFUlQoZWxlbWVudFNo
YWRvdyk7Ci0gICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIGZlYXR1cmVTZXQgPSBlbGVt
ZW50U2hhZG93LT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoZWxlbWVudFNo
YWRvdyk7Ci0KLSAgICBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUobmFtZSkpIHsKLSAgICAgICAgQXRv
bWljU3RyaW5nIG9sZElkID0gZWxlbWVudERhdGEoKS0+aWRGb3JTdHlsZVJlc29sdXRpb24oKTsK
LSAgICAgICAgQXRvbWljU3RyaW5nIG5ld0lkID0gbWFrZUlkRm9yU3R5bGVSZXNvbHV0aW9uKG5l
d1ZhbHVlLCBkb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSk7Ci0gICAgICAgIGlmIChuZXdJZCAh
PSBvbGRJZCkgewotICAgICAgICAgICAgaWYgKCFvbGRJZC5pc0VtcHR5KCkgJiYgZmVhdHVyZVNl
dC5oYXNTZWxlY3RvckZvcklkKG9sZElkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICAgIGlmICghbmV3SWQuaXNFbXB0eSgpICYmIGZlYXR1cmVTZXQuaGFzU2VsZWN0
b3JGb3JJZChuZXdJZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBpZiAobmFtZSA9PSBIVE1MTmFtZXM6OmNsYXNzQXR0cikgewotICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzU3RyaW5nID0gbmV3VmFsdWU7Ci0gICAgICAg
IGlmIChjbGFzc1N0cmluZ0hhc0NsYXNzTmFtZShuZXdDbGFzc1N0cmluZykpIHsKLSAgICAgICAg
ICAgIGNvbnN0IGJvb2wgc2hvdWxkRm9sZENhc2UgPSBkb2N1bWVudCgpLT5pblF1aXJrc01vZGUo
KTsKLSAgICAgICAgICAgIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG9sZENsYXNzZXMgPSBlbGVt
ZW50RGF0YSgpLT5jbGFzc05hbWVzKCk7Ci0gICAgICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3Ry
aW5nIG5ld0NsYXNzZXMobmV3Q2xhc3NTdHJpbmcsIHNob3VsZEZvbGRDYXNlKTsKLSAgICAgICAg
ICAgIGlmIChjaGVja1NlbGVjdG9yRm9yQ2xhc3NDaGFuZ2Uob2xkQ2xhc3NlcywgbmV3Q2xhc3Nl
cywgZmVhdHVyZVNldCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBvbGRDbGFzc2VzID0g
ZWxlbWVudERhdGEoKS0+Y2xhc3NOYW1lcygpOwotICAgICAgICAgICAgaWYgKGNoZWNrU2VsZWN0
b3JGb3JDbGFzc0NoYW5nZShvbGRDbGFzc2VzLCBmZWF0dXJlU2V0KSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBmZWF0dXJlU2V0
Lmhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKG5hbWUubG9jYWxOYW1lKCkpOwotfQotCiAvLyBSZXR1
cm5zIHRydWUgaXMgdGhlIGdpdmVuIGF0dHJpYnV0ZSBpcyBhbiBldmVudCBoYW5kbGVyLgogLy8g
V2UgY29uc2lkZXIgYW4gZXZlbnQgaGFuZGxlciBhbnkgYXR0cmlidXRlIHRoYXQgYmVnaW5zIHdp
dGggIm9uIi4KIC8vIEl0IGlzIGEgc2ltcGxlIHNvbHV0aW9uIHRoYXQgaGFzIHRoZSBhZHZhbnRh
Z2Ugb2Ygbm90IHJlcXVpcmluZyBhbnkKQEAgLTE1MTAsMTEgKzE0NzEsOSBAQCBFbGVtZW50U2hh
ZG93KiBFbGVtZW50OjplbnN1cmVTaGFkb3coKQogICAgIHJldHVybiBlbnN1cmVFbGVtZW50UmFy
ZURhdGEoKS0+ZW5zdXJlU2hhZG93KCk7CiB9CiAKLXZvaWQgRWxlbWVudDo6ZGlkQWZmZWN0U2Vs
ZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2sgbWFzaykKK3ZvaWQgRWxlbWVudDo6ZGlkQWZmZWN0
U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2spCiB7CiAgICAgc2V0TmVlZHNTdHlsZVJlY2Fs
YygpOwotICAgIGlmIChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0gc2hhZG93T2ZQYXJl
bnRGb3JEaXN0cmlidXRpb24odGhpcykpCi0gICAgICAgIGVsZW1lbnRTaGFkb3ctPmRpZEFmZmVj
dFNlbGVjdG9yKG1hc2spOwogfQogCiBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IEVsZW1lbnQ6OmNy
ZWF0ZVNoYWRvd1Jvb3QoRXhjZXB0aW9uQ29kZSYgZWMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJ
KHJldmlzaW9uIDE0OTcwMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTcyNyw4ICs3MjcsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjcmVhdGVV
bmlxdWVFbGVtZW50RGF0YSgpOwogCi0gICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0
aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudFNoYWRvdyosIGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKLQogICAgIEVsZW1lbnRSYXJlRGF0YSogZWxlbWVu
dFJhcmVEYXRhKCkgY29uc3Q7CiAgICAgRWxlbWVudFJhcmVEYXRhKiBlbnN1cmVFbGVtZW50UmFy
ZURhdGEoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCShyZXZpc2lvbiAx
NDk3MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NSw4ICs2NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUFsbEV2ZW50TGlz
dGVuZXJzKCk7CiAKICAgICB2b2lkIGludmFsaWRhdGVEaXN0cmlidXRpb24oKSB7IG1fZGlzdHJp
YnV0b3IuaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihob3N0KCkpOyB9Ci0gICAgdm9pZCBkaWRBZmZl
Y3RTZWxlY3RvcihBZmZlY3RlZFNlbGVjdG9yTWFzayBtYXNrKSB7IG1fZGlzdHJpYnV0b3IuZGlk
QWZmZWN0U2VsZWN0b3IoaG9zdCgpLCBtYXNrKTsgfQotICAgIHZvaWQgd2lsbEFmZmVjdFNlbGVj
dG9yKCkgeyBtX2Rpc3RyaWJ1dG9yLndpbGxBZmZlY3RTZWxlY3Rvcihob3N0KCkpOyB9CiAKICAg
ICBDb250ZW50RGlzdHJpYnV0b3ImIGRpc3RyaWJ1dG9yKCkgeyByZXR1cm4gbV9kaXN0cmlidXRv
cjsgfQogICAgIGNvbnN0IENvbnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKSBjb25zdCB7
IHJldHVybiBtX2Rpc3RyaWJ1dG9yOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAJKHJldmlzaW9uIDE0OTcwMykKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1MSw4ICsxNTEsNyBAQCBib29sIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6
aGFzSW5zZXJ0CiB9CiAKIENvbnRlbnREaXN0cmlidXRvcjo6Q29udGVudERpc3RyaWJ1dG9yKCkK
LSAgICA6IG1fbmVlZHNTZWxlY3RGZWF0dXJlU2V0KGZhbHNlKQotICAgICwgbV92YWxpZGl0eShV
bmRldGVybWluZWQpCisgICAgOiBtX3ZhbGlkaXR5KFVuZGV0ZXJtaW5lZCkKIHsKIH0KIApAQCAt
MzI1LDU3ICszMjQsNiBAQCB2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6aW52YWxpZGF0ZURpc3Ry
CiAgICAgfQogfQogCi1jb25zdCBTZWxlY3RSdWxlRmVhdHVyZVNldCYgQ29udGVudERpc3RyaWJ1
dG9yOjplbnN1cmVTZWxlY3RGZWF0dXJlU2V0KEVsZW1lbnRTaGFkb3cqIHNoYWRvdykKLXsKLSAg
ICBpZiAoIW1fbmVlZHNTZWxlY3RGZWF0dXJlU2V0KQotICAgICAgICByZXR1cm4gbV9zZWxlY3RG
ZWF0dXJlczsKLQotICAgIG1fc2VsZWN0RmVhdHVyZXMuY2xlYXIoKTsKLSAgICBpZiAoU2hhZG93
Um9vdCogcm9vdCA9IHNoYWRvdy0+c2hhZG93Um9vdCgpKQotICAgICAgICBjb2xsZWN0U2VsZWN0
RmVhdHVyZVNldEZyb20ocm9vdCk7Ci0gICAgbV9uZWVkc1NlbGVjdEZlYXR1cmVTZXQgPSBmYWxz
ZTsKLSAgICByZXR1cm4gbV9zZWxlY3RGZWF0dXJlczsKLX0KLQotdm9pZCBDb250ZW50RGlzdHJp
YnV0b3I6OmNvbGxlY3RTZWxlY3RGZWF0dXJlU2V0RnJvbShTaGFkb3dSb290KiByb290KQotewot
ICAgIGlmIChTY29wZUNvbnRlbnREaXN0cmlidXRpb246Omhhc0VsZW1lbnRTaGFkb3cocm9vdCkp
IHsKLSAgICAgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmly
c3RXaXRoaW4ocm9vdCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0
KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRv
dyA9IGVsZW1lbnQtPnNoYWRvdygpKQotICAgICAgICAgICAgICAgIG1fc2VsZWN0RmVhdHVyZXMu
YWRkKGVsZW1lbnRTaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChl
bGVtZW50U2hhZG93KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoU2NvcGVDb250ZW50
RGlzdHJpYnV0aW9uOjpoYXNDb250ZW50RWxlbWVudChyb290KSkgewotICAgICAgICBmb3IgKEVs
ZW1lbnQqIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbihyb290KTsgZWxl
bWVudDsgZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQoZWxlbWVudCkpIHsKLSAgICAg
ICAgICAgIGlmICghaXNIVE1MQ29udGVudEVsZW1lbnQoZWxlbWVudCkpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIGxpc3QgPSB0
b0hUTUxDb250ZW50RWxlbWVudChlbGVtZW50KS0+c2VsZWN0b3JMaXN0KCk7Ci0gICAgICAgICAg
ICBmb3IgKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IGxpc3QuZmlyc3QoKTsgc2VsZWN0
b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkgewotICAgICAg
ICAgICAgICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIGNvbXBvbmVudCA9IHNlbGVjdG9yOyBj
b21wb25lbnQ7IGNvbXBvbmVudCA9IGNvbXBvbmVudC0+dGFnSGlzdG9yeSgpKQotICAgICAgICAg
ICAgICAgICAgICBtX3NlbGVjdEZlYXR1cmVzLmNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3Rvcihj
b21wb25lbnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIENv
bnRlbnREaXN0cmlidXRvcjo6ZGlkQWZmZWN0U2VsZWN0b3IoRWxlbWVudCogaG9zdCwgQWZmZWN0
ZWRTZWxlY3Rvck1hc2sgbWFzaykKLXsKLSAgICBpZiAoZW5zdXJlU2VsZWN0RmVhdHVyZVNldCho
b3N0LT5zaGFkb3coKSkuaGFzU2VsZWN0b3JGb3IobWFzaykpCi0gICAgICAgIGludmFsaWRhdGVE
aXN0cmlidXRpb24oaG9zdCk7Ci19Ci0KLXZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjp3aWxsQWZm
ZWN0U2VsZWN0b3IoRWxlbWVudCogaG9zdCkKLXsKLSAgICBmb3IgKEVsZW1lbnRTaGFkb3cqIHNo
YWRvdyA9IGhvc3QtPnNoYWRvdygpOyBzaGFkb3c7IHNoYWRvdyA9IHNoYWRvdy0+Y29udGFpbmlu
Z1NoYWRvdygpKSB7Ci0gICAgICAgIGlmIChzaGFkb3ctPmRpc3RyaWJ1dG9yKCkubmVlZHNTZWxl
Y3RGZWF0dXJlU2V0KCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgc2hhZG93LT5kaXN0
cmlidXRvcigpLnNldE5lZWRzU2VsZWN0RmVhdHVyZVNldCgpOwotICAgIH0KLQotICAgIGludmFs
aWRhdGVEaXN0cmlidXRpb24oaG9zdCk7Ci19Ci0KIHZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpk
aWRTaGFkb3dCb3VuZGFyeUNoYW5nZShFbGVtZW50KiBob3N0KQogewogICAgIHNldFZhbGlkaXR5
KFVuZGV0ZXJtaW5lZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50
RGlzdHJpYnV0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9D
b250ZW50RGlzdHJpYnV0b3IuaAkocmV2aXNpb24gMTQ5NzAzKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcg
KzMxLDYgQEAKICNpZm5kZWYgQ29udGVudERpc3RyaWJ1dG9yX2gKICNkZWZpbmUgQ29udGVudERp
c3RyaWJ1dG9yX2gKIAotI2luY2x1ZGUgIlNlbGVjdFJ1bGVGZWF0dXJlU2V0LmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CkBAIC0xMTUsMTUgKzExNCwxMiBAQCBwdWJsaWM6CiAgICAgfkNvbnRl
bnREaXN0cmlidXRvcigpOwogCiAgICAgSW5zZXJ0aW9uUG9pbnQqIGZpbmRJbnNlcnRpb25Qb2lu
dEZvcihjb25zdCBOb2RlKiBrZXkpIGNvbnN0OwotICAgIGNvbnN0IFNlbGVjdFJ1bGVGZWF0dXJl
U2V0JiBlbnN1cmVTZWxlY3RGZWF0dXJlU2V0KEVsZW1lbnRTaGFkb3cqKTsKIAogICAgIHZvaWQg
ZGlzdHJpYnV0ZVNlbGVjdGlvbnNUbyhJbnNlcnRpb25Qb2ludCosIGNvbnN0IENvbnRlbnREaXN0
cmlidXRpb24mIHBvb2wsIFZlY3Rvcjxib29sPiYgZGlzdHJpYnV0ZWQpOwogICAgIHZvaWQgZGlz
dHJpYnV0ZU5vZGVDaGlsZHJlblRvKEluc2VydGlvblBvaW50KiwgQ29udGFpbmVyTm9kZSopOwog
CiAgICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKEVsZW1lbnQqIGhvc3QpOwogICAgIHZv
aWQgZGlkU2hhZG93Qm91bmRhcnlDaGFuZ2UoRWxlbWVudCogaG9zdCk7Ci0gICAgdm9pZCBkaWRB
ZmZlY3RTZWxlY3RvcihFbGVtZW50KiBob3N0LCBBZmZlY3RlZFNlbGVjdG9yTWFzayk7Ci0gICAg
dm9pZCB3aWxsQWZmZWN0U2VsZWN0b3IoRWxlbWVudCogaG9zdCk7CiAKICAgICBzdGF0aWMgdm9p
ZCBlbnN1cmVEaXN0cmlidXRpb24oU2hhZG93Um9vdCopOwogCkBAIC0xMzIsMTggKzEyOCwxMiBA
QCBwcml2YXRlOgogICAgIGJvb2wgaW52YWxpZGF0ZShFbGVtZW50KiBob3N0KTsKICAgICB2b2lk
IHBvcHVsYXRlKE5vZGUqLCBDb250ZW50RGlzdHJpYnV0aW9uJik7CiAKLSAgICB2b2lkIGNvbGxl
Y3RTZWxlY3RGZWF0dXJlU2V0RnJvbShTaGFkb3dSb290Kik7Ci0gICAgYm9vbCBuZWVkc1NlbGVj
dEZlYXR1cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX25lZWRzU2VsZWN0RmVhdHVyZVNldDsgfQot
ICAgIHZvaWQgc2V0TmVlZHNTZWxlY3RGZWF0dXJlU2V0KCkgeyBtX25lZWRzU2VsZWN0RmVhdHVy
ZVNldCA9IHRydWU7IH0KLQogICAgIHZvaWQgc2V0VmFsaWRpdHkoVmFsaWRpdHkgdmFsaWRpdHkp
IHsgbV92YWxpZGl0eSA9IHZhbGlkaXR5OyB9CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWxpZGl0eSA9PSBWYWxpZDsgfQogICAgIGJvb2wgbmVlZHNEaXN0cmlidXRpb24o
KSBjb25zdDsKICAgICBib29sIG5lZWRzSW52YWxpZGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92
YWxpZGl0eSAhPSBJbnZhbGlkYXRlZDsgfQogCiAgICAgSGFzaE1hcDxjb25zdCBOb2RlKiwgUmVm
UHRyPEluc2VydGlvblBvaW50PiA+IG1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQ7Ci0gICAgU2VsZWN0
UnVsZUZlYXR1cmVTZXQgbV9zZWxlY3RGZWF0dXJlczsKLSAgICBib29sIG1fbmVlZHNTZWxlY3RG
ZWF0dXJlU2V0IDogMTsKICAgICB1bnNpZ25lZCBtX3ZhbGlkaXR5IDogMjsKIH07CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAJKHJldmlz
aW9uIDE0OTcwMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDggKzEzNCw2IEBAIE5vZGU6Okluc2VydGlvbk5v
dGlmaWNhdGlvblJlcXVlc3QgSW5zZXIKICAgICAgICAgICAgIGlmIChpc0FjdGl2ZSgpICYmICFt
X3JlZ2lzdGVyZWRXaXRoU2hhZG93Um9vdCAmJiBpbnNlcnRpb25Qb2ludC0+dHJlZVNjb3BlKCkt
PnJvb3ROb2RlKCkgPT0gcm9vdCkgewogICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJlZFdpdGhT
aGFkb3dSb290ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByb290LT5lbnN1cmVTY29wZURpc3Ry
aWJ1dGlvbigpLT5yZWdpc3Rlckluc2VydGlvblBvaW50KHRoaXMpOwotICAgICAgICAgICAgICAg
IGlmIChjYW5BZmZlY3RTZWxlY3RvcigpKQotICAgICAgICAgICAgICAgICAgICByb290T3duZXIt
PndpbGxBZmZlY3RTZWxlY3RvcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpA
QCAtMTYxLDggKzE1OSw2IEBAIHZvaWQgSW5zZXJ0aW9uUG9pbnQ6OnJlbW92ZWRGcm9tKENvbnRh
aW4KICAgICAgICAgQVNTRVJUKHJvb3QpOwogICAgICAgICBtX3JlZ2lzdGVyZWRXaXRoU2hhZG93
Um9vdCA9IGZhbHNlOwogICAgICAgICByb290LT5lbnN1cmVTY29wZURpc3RyaWJ1dGlvbigpLT51
bnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQodGhpcyk7Ci0gICAgICAgIGlmIChyb290T3duZXIgJiYg
Y2FuQWZmZWN0U2VsZWN0b3IoKSkKLSAgICAgICAgICAgIHJvb3RPd25lci0+d2lsbEFmZmVjdFNl
bGVjdG9yKCk7CiAgICAgfQogCiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tKGluc2VydGlv
blBvaW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9p
bnQuaAkocmV2aXNpb24gMTQ5NzAzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5z
ZXJ0aW9uUG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBNYXRjaFR5cGUgbWF0Y2hUeXBlRm9yKE5vZGUqKSB7IHJldHVybiBBbHdheXNN
YXRjaGVzOyB9CiAgICAgdmlydHVhbCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlz
dCgpIHsgcmV0dXJuIGVtcHR5U2VsZWN0b3JMaXN0KCk7IH0KICAgICB2aXJ0dWFsIFR5cGUgaW5z
ZXJ0aW9uUG9pbnRUeXBlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjYW5BZmZlY3RT
ZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29sIHJlc2V0U3R5bGVJ
bmhlcml0YW5jZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0UmVzZXRTdHlsZUluaGVyaXRhbmNlKGJv
b2wpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVT
ZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1
bGVGZWF0dXJlU2V0LmNwcAkocmV2aXNpb24gMTQ5NzAzKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2VsZWN0UnVsZUZlYXR1cmVT
ZXQuaCIKLQotI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotU2VsZWN0UnVsZUZlYXR1cmVTZXQ6OlNlbGVjdFJ1bGVGZWF0dXJlU2V0KCkKLSAgICA6IG1f
ZmVhdHVyZUZsYWdzKDApCi17Ci19Ci0KLXZvaWQgU2VsZWN0UnVsZUZlYXR1cmVTZXQ6OmFkZChj
b25zdCBTZWxlY3RSdWxlRmVhdHVyZVNldCYgZmVhdHVyZVNldCkKLXsKLSAgICBtX2Nzc1J1bGVG
ZWF0dXJlU2V0LmFkZChmZWF0dXJlU2V0Lm1fY3NzUnVsZUZlYXR1cmVTZXQpOwotICAgIG1fZmVh
dHVyZUZsYWdzIHw9IGZlYXR1cmVTZXQubV9mZWF0dXJlRmxhZ3M7Ci19Ci0KLXZvaWQgU2VsZWN0
UnVsZUZlYXR1cmVTZXQ6OmNsZWFyKCkKLXsKLSAgICBtX2Nzc1J1bGVGZWF0dXJlU2V0LmNsZWFy
KCk7Ci0gICAgbV9mZWF0dXJlRmxhZ3MgPSAwOwotfQotCi12b2lkIFNlbGVjdFJ1bGVGZWF0dXJl
U2V0Ojpjb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVj
dG9yKQotewotICAgIG1fY3NzUnVsZUZlYXR1cmVTZXQuY29sbGVjdEZlYXR1cmVzRnJvbVNlbGVj
dG9yKHNlbGVjdG9yKTsKLQotICAgIHN3aXRjaCAoc2VsZWN0b3ItPnBzZXVkb1R5cGUoKSkgewot
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NoZWNrZWQ6Ci0gICAgICAgIHNldFNlbGVjdFJ1
bGVGZWF0dXJlKEFmZmVjdGVkU2VsZWN0b3JDaGVja2VkKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRW5hYmxlZDoKLSAgICAgICAgc2V0U2VsZWN0UnVsZUZl
YXR1cmUoQWZmZWN0ZWRTZWxlY3RvckVuYWJsZWQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9EaXNhYmxlZDoKLSAgICAgICAgc2V0U2VsZWN0UnVsZUZlYXR1
cmUoQWZmZWN0ZWRTZWxlY3RvckRpc2FibGVkKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
U1NTZWxlY3Rvcjo6UHNldWRvSW5kZXRlcm1pbmF0ZToKLSAgICAgICAgc2V0U2VsZWN0UnVsZUZl
YXR1cmUoQWZmZWN0ZWRTZWxlY3RvckluZGV0ZXJtaW5hdGUpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9MaW5rOgotICAgICAgICBzZXRTZWxlY3RSdWxlRmVh
dHVyZShBZmZlY3RlZFNlbGVjdG9yTGluayk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb1RhcmdldDoKLSAgICAgICAgc2V0U2VsZWN0UnVsZUZlYXR1cmUoQWZm
ZWN0ZWRTZWxlY3RvclRhcmdldCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTU2VsZWN0
b3I6OlBzZXVkb1Zpc2l0ZWQ6Ci0gICAgICAgIHNldFNlbGVjdFJ1bGVGZWF0dXJlKEFmZmVjdGVk
U2VsZWN0b3JWaXNpdGVkKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotfQotCi19Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuaAkocmV2aXNpb24gMTQ5NzAzKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTZWxlY3RSdWxlRmVhdHVyZVNldF9oCi0jZGVm
aW5lIFNlbGVjdFJ1bGVGZWF0dXJlU2V0X2gKLQotI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNs
dWRlICJSdWxlRmVhdHVyZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNlbGVj
dFJ1bGVGZWF0dXJlU2V0IHsKLXB1YmxpYzoKLSAgICBTZWxlY3RSdWxlRmVhdHVyZVNldCgpOwot
Ci0gICAgdm9pZCBhZGQoY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmKTsKLSAgICB2b2lkIGNs
ZWFyKCk7Ci0gICAgdm9pZCBjb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3IoY29uc3QgQ1NTU2Vs
ZWN0b3IqKTsKLQotICAgIGJvb2wgaGFzU2VsZWN0b3JGb3JJZChjb25zdCBBdG9taWNTdHJpbmcm
KSBjb25zdDsKLSAgICBib29sIGhhc1NlbGVjdG9yRm9yQ2xhc3MoY29uc3QgQXRvbWljU3RyaW5n
JikgY29uc3Q7Ci0gICAgYm9vbCBoYXNTZWxlY3RvckZvckF0dHJpYnV0ZShjb25zdCBBdG9taWNT
dHJpbmcmKSBjb25zdDsKLQotICAgIGJvb2wgaGFzU2VsZWN0b3JGb3JDaGVja2VkKCkgY29uc3Qg
eyByZXR1cm4gaGFzU2VsZWN0b3JGb3IoQWZmZWN0ZWRTZWxlY3RvckNoZWNrZWQpOyB9Ci0gICAg
Ym9vbCBoYXNTZWxlY3RvckZvckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBoYXNTZWxlY3RvckZv
cihBZmZlY3RlZFNlbGVjdG9yRW5hYmxlZCk7IH0KLSAgICBib29sIGhhc1NlbGVjdG9yRm9yRGlz
YWJsZWQoKSBjb25zdCB7IHJldHVybiBoYXNTZWxlY3RvckZvcihBZmZlY3RlZFNlbGVjdG9yRGlz
YWJsZWQpOyB9Ci0gICAgYm9vbCBoYXNTZWxlY3RvckZvckluZGV0ZXJtaW5hdGUoKSBjb25zdCB7
IHJldHVybiBoYXNTZWxlY3RvckZvcihBZmZlY3RlZFNlbGVjdG9ySW5kZXRlcm1pbmF0ZSk7IH0K
LSAgICBib29sIGhhc1NlbGVjdG9yRm9yTGluaygpIGNvbnN0IHsgcmV0dXJuIGhhc1NlbGVjdG9y
Rm9yKEFmZmVjdGVkU2VsZWN0b3JMaW5rKTsgfQotICAgIGJvb2wgaGFzU2VsZWN0b3JGb3JUYXJn
ZXQoKSBjb25zdCB7IHJldHVybiBoYXNTZWxlY3RvckZvcihBZmZlY3RlZFNlbGVjdG9yVGFyZ2V0
KTsgfQotICAgIGJvb2wgaGFzU2VsZWN0b3JGb3JWaXNpdGVkKCkgY29uc3QgeyByZXR1cm4gaGFz
U2VsZWN0b3JGb3IoQWZmZWN0ZWRTZWxlY3RvclZpc2l0ZWQpOyB9Ci0KLSAgICBib29sIGhhc1Nl
bGVjdG9yRm9yKEFmZmVjdGVkU2VsZWN0b3JNYXNrIGZlYXR1cmVzKSBjb25zdCB7IHJldHVybiBt
X2ZlYXR1cmVGbGFncyAmIGZlYXR1cmVzOyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBzZXRTZWxl
Y3RSdWxlRmVhdHVyZShBZmZlY3RlZFNlbGVjdG9yVHlwZSBmZWF0dXJlKSB7IG1fZmVhdHVyZUZs
YWdzIHw9IGZlYXR1cmU7IH0KLQotICAgIFJ1bGVGZWF0dXJlU2V0IG1fY3NzUnVsZUZlYXR1cmVT
ZXQ7Ci0gICAgaW50IG1fZmVhdHVyZUZsYWdzOwotfTsKLQotaW5saW5lIGJvb2wgU2VsZWN0UnVs
ZUZlYXR1cmVTZXQ6Omhhc1NlbGVjdG9yRm9ySWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZFZhbHVl
KSBjb25zdAotewotICAgIEFTU0VSVCghaWRWYWx1ZS5pc0VtcHR5KCkpOwotICAgIHJldHVybiBt
X2Nzc1J1bGVGZWF0dXJlU2V0Lmlkc0luUnVsZXMuY29udGFpbnMoaWRWYWx1ZS5pbXBsKCkpOwot
fQotCi1pbmxpbmUgYm9vbCBTZWxlY3RSdWxlRmVhdHVyZVNldDo6aGFzU2VsZWN0b3JGb3JDbGFz
cyhjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzVmFsdWUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFj
bGFzc1ZhbHVlLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIG1fY3NzUnVsZUZlYXR1cmVTZXQuY2xh
c3Nlc0luUnVsZXMuY29udGFpbnMoY2xhc3NWYWx1ZS5pbXBsKCkpOwotfQotCi1pbmxpbmUgYm9v
bCBTZWxlY3RSdWxlRmVhdHVyZVNldDo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUoY29uc3QgQXRv
bWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAotewotICAgIEFTU0VSVCghYXR0cmlidXRl
TmFtZS5pc0VtcHR5KCkpOwotICAgIHJldHVybiBtX2Nzc1J1bGVGZWF0dXJlU2V0LmF0dHJzSW5S
dWxlcy5jb250YWlucyhhdHRyaWJ1dGVOYW1lLmltcGwoKSk7Ci19Ci0KLX0KLQotI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAxNDk3MDMpCisr
KyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg1LDcgKzg1LDYgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5j
bHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5o
IgotI2luY2x1ZGUgIlNlbGVjdFJ1bGVGZWF0dXJlU2V0LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dS
b290LmgiCkBAIC00MDIsNjMgKzQwMSw2IEBAIE5vZGUqIEludGVybmFsczo6cGFyZW50VHJlZVNj
b3BlKE5vZGUqIG4KICAgICByZXR1cm4gcGFyZW50VHJlZVNjb3BlID8gcGFyZW50VHJlZVNjb3Bl
LT5yb290Tm9kZSgpIDogMDsKIH0KIAotYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9ySWRJ
blNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIGlkVmFsdWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQotewotICAgIGlmICghaG9zdCB8fCAhaG9zdC0+c2hhZG93KCkpIHsKLSAgICAgICAg
ZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAg
IHJldHVybiBob3N0LT5zaGFkb3coKS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJl
U2V0KGhvc3QtPnNoYWRvdygpKS5oYXNTZWxlY3RvckZvcklkKGlkVmFsdWUpOwotfQotCi1ib29s
IEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JDbGFzc0luU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNv
bnN0IFN0cmluZyYgY2xhc3NOYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIWhv
c3QgfHwgIWhvc3QtPnNoYWRvdygpKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJS
OwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gaG9zdC0+c2hhZG93KCkt
PmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFkb3coKSkuaGFz
U2VsZWN0b3JGb3JDbGFzcyhjbGFzc05hbWUpOwotfQotCi1ib29sIEludGVybmFsczo6aGFzU2Vs
ZWN0b3JGb3JBdHRyaWJ1dGVJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIGF0
dHJpYnV0ZU5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghaG9zdCB8fCAhaG9z
dC0+c2hhZG93KCkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KLQotICAgIHJldHVybiBob3N0LT5zaGFkb3coKS0+ZGlzdHJpYnV0
b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGhvc3QtPnNoYWRvdygpKS5oYXNTZWxlY3RvckZv
ckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKLX0KLQotYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVj
dG9yRm9yUHNldWRvQ2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIHBz
ZXVkb0NsYXNzLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIWhvc3QgfHwgIWhvc3Qt
PnNoYWRvdygpKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBjb25zdCBTZWxlY3RSdWxlRmVhdHVyZVNldCYgZmVhdHVy
ZVNldCA9IGhvc3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVT
ZXQoaG9zdC0+c2hhZG93KCkpOwotICAgIGlmIChwc2V1ZG9DbGFzcyA9PSAiY2hlY2tlZCIpCi0g
ICAgICAgIHJldHVybiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9yQ2hlY2tlZCgpOwotICAgIGlm
IChwc2V1ZG9DbGFzcyA9PSAiZW5hYmxlZCIpCi0gICAgICAgIHJldHVybiBmZWF0dXJlU2V0Lmhh
c1NlbGVjdG9yRm9yRW5hYmxlZCgpOwotICAgIGlmIChwc2V1ZG9DbGFzcyA9PSAiZGlzYWJsZWQi
KQotICAgICAgICByZXR1cm4gZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvckRpc2FibGVkKCk7Ci0g
ICAgaWYgKHBzZXVkb0NsYXNzID09ICJpbmRldGVybWluYXRlIikKLSAgICAgICAgcmV0dXJuIGZl
YXR1cmVTZXQuaGFzU2VsZWN0b3JGb3JJbmRldGVybWluYXRlKCk7Ci0gICAgaWYgKHBzZXVkb0Ns
YXNzID09ICJsaW5rIikKLSAgICAgICAgcmV0dXJuIGZlYXR1cmVTZXQuaGFzU2VsZWN0b3JGb3JM
aW5rKCk7Ci0gICAgaWYgKHBzZXVkb0NsYXNzID09ICJ0YXJnZXQiKQotICAgICAgICByZXR1cm4g
ZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvclRhcmdldCgpOwotICAgIGlmIChwc2V1ZG9DbGFzcyA9
PSAidmlzaXRlZCIpCi0gICAgICAgIHJldHVybiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9yVmlz
aXRlZCgpOwotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCiB1bnNpZ25lZCBJbnRlcm5hbHM6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0
CiB7CiAgICAgRnJhbWUqIGNvbnRleHRGcmFtZSA9IGZyYW1lKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAxNDk3MDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEwICs1NSw2IEBA
CiAgICAgYm9vbGVhbiBpc1ZhbGlkQ29udGVudFNlbGVjdChFbGVtZW50IGNvbnRlbnRFbGVtZW50
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICBOb2RlIHRyZWVTY29wZVJvb3ROb2RlKE5vZGUg
bm9kZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgIE5vZGUgcGFyZW50VHJlZVNjb3BlKE5v
ZGUgbm9kZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwotICAgIGJvb2xlYW4gaGFzU2VsZWN0b3JG
b3JJZEluU2hhZG93KEVsZW1lbnQgaG9zdCwgRE9NU3RyaW5nIGlkKSByYWlzZXMgKERPTUV4Y2Vw
dGlvbik7Ci0gICAgYm9vbGVhbiBoYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coRWxlbWVudCBo
b3N0LCBET01TdHJpbmcgY2xhc3NOYW1lKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0gICAgYm9v
bGVhbiBoYXNTZWxlY3RvckZvckF0dHJpYnV0ZUluU2hhZG93KEVsZW1lbnQgaG9zdCwgRE9NU3Ry
aW5nIGF0dHJpYnV0ZU5hbWUpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAgICBib29sZWFuIGhh
c1NlbGVjdG9yRm9yUHNldWRvQ2xhc3NJblNoYWRvdyhFbGVtZW50IGhvc3QsIERPTVN0cmluZyBw
c2V1ZG9DbGFzcykgcmFpc2VzIChET01FeGNlcHRpb24pOwogCiAgICAgLy8gQ1NTIEFuaW1hdGlv
biB0ZXN0aW5nLgogICAgIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRv
ci9XZWJLaXRFeHBvcnRzLmRlZi5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktp
dC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgkocmV2
aXNpb24gMTQ5NzAzKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBv
cnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM5NCw3
ICszOTQsNiBAQCBFWFBPUlRTCiAgICAgICAgID9wc2V1ZG9FbGVtZW50QEVsZW1lbnRAV2ViQ29y
ZUBAUUJFUEFWUHNldWRvRWxlbWVudEAyQFc0UHNldWRvSWRAMkBAWgogICAgICAgICA/cGF1c2VU
cmFuc2l0aW9uQXRUaW1lQEFuaW1hdGlvbkNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFX05QQVZSZW5k
ZXJPYmplY3RAMkBBQlZTdHJpbmdAV1RGQEBOQFoKICAgICAgICAgP2FkZEZyb21MaXRlcmFsRGF0
YUBBdG9taWNTdHJpbmdAV1RGQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAy
QFBCRElAWgotICAgICAgICA/ZW5zdXJlU2VsZWN0RmVhdHVyZVNldEBDb250ZW50RGlzdHJpYnV0
b3JAV2ViQ29yZUBAUUFFQUJWU2VsZWN0UnVsZUZlYXR1cmVTZXRAMkBQQVZFbGVtZW50U2hhZG93
QDJAQFoKICAgICAgICAgP2hhc0NvbnRlbnRFbGVtZW50QFNjb3BlQ29udGVudERpc3RyaWJ1dGlv
bkBXZWJDb3JlQEBTQV9OUEJWU2hhZG93Um9vdEAyQEBaCiAgICAgICAgID9jb3VudEVsZW1lbnRT
aGFkb3dAU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uQFdlYkNvcmVAQFNBSVBCVlNoYWRvd1Jvb3RA
MkBAWgogICAgICAgICA/bWVtb3J5Q2FjaGVAV2ViQ29yZUBAWUFQQVZNZW1vcnlDYWNoZUAxQFha
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVm
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0
RXhwb3J0cy5kZWYuaW4JKHJldmlzaW9uIDE0OTcwMykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dl
YktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM5NCw3
ICszOTQsNiBAQCBFWFBPUlRTCiAgICAgICAgID9wc2V1ZG9FbGVtZW50QEVsZW1lbnRAV2ViQ29y
ZUBAUUJFUEFWUHNldWRvRWxlbWVudEAyQFc0UHNldWRvSWRAMkBAWgogICAgICAgICA/cGF1c2VU
cmFuc2l0aW9uQXRUaW1lQEFuaW1hdGlvbkNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFX05QQVZSZW5k
ZXJPYmplY3RAMkBBQlZTdHJpbmdAV1RGQEBOQFoKICAgICAgICAgP2FkZEZyb21MaXRlcmFsRGF0
YUBBdG9taWNTdHJpbmdAV1RGQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAy
QFBCRElAWgotICAgICAgICA/ZW5zdXJlU2VsZWN0RmVhdHVyZVNldEBDb250ZW50RGlzdHJpYnV0
b3JAV2ViQ29yZUBAUUFFQUJWU2VsZWN0UnVsZUZlYXR1cmVTZXRAMkBQQVZFbGVtZW50U2hhZG93
QDJAQFoKICAgICAgICAgP2hhc0NvbnRlbnRFbGVtZW50QFNjb3BlQ29udGVudERpc3RyaWJ1dGlv
bkBXZWJDb3JlQEBTQV9OUEJWU2hhZG93Um9vdEAyQEBaCiAgICAgICAgID9jb3VudEVsZW1lbnRT
aGFkb3dAU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uQFdlYkNvcmVAQFNBSVBCVlNoYWRvd1Jvb3RA
MkBAWgogICAgICAgICA/bWVtb3J5Q2FjaGVAV2ViQ29yZUBAWUFQQVZNZW1vcnlDYWNoZUAxQFha
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>