<?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>126834</bug_id>
          
          <creation_ts>2014-01-11 20:59:37 -0800</creation_ts>
          <short_desc>Split ICU UText providers out into their own files</short_desc>
          <delta_ts>2014-01-12 11:20:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>966892</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-11 20:59:37 -0800</bug_when>
    <thetext>Split ICU UText providers out into their own files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966895</commentid>
    <comment_count>1</comment_count>
      <attachid>220955</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-11 21:03:34 -0800</bug_when>
    <thetext>Created attachment 220955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966899</commentid>
    <comment_count>2</comment_count>
      <attachid>220955</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2014-01-11 21:17:15 -0800</bug_when>
    <thetext>Comment on attachment 220955
Patch

Attachment 220955 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/5705531192770560</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966900</commentid>
    <comment_count>3</comment_count>
      <attachid>220956</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-11 21:28:21 -0800</bug_when>
    <thetext>Created attachment 220956
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966903</commentid>
    <comment_count>4</comment_count>
      <attachid>220956</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2014-01-11 21:43:16 -0800</bug_when>
    <thetext>Comment on attachment 220956
Patch

Attachment 220956 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/5982434176794624</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966906</commentid>
    <comment_count>5</comment_count>
      <attachid>220958</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-11 21:54:39 -0800</bug_when>
    <thetext>Created attachment 220958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966913</commentid>
    <comment_count>6</comment_count>
      <attachid>220958</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2014-01-11 22:18:27 -0800</bug_when>
    <thetext>Comment on attachment 220958
Patch

Attachment 220958 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/4911751577468928</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966974</commentid>
    <comment_count>7</comment_count>
      <attachid>220975</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-12 10:35:09 -0800</bug_when>
    <thetext>Created attachment 220975
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966976</commentid>
    <comment_count>8</comment_count>
      <attachid>220975</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2014-01-12 10:41:32 -0800</bug_when>
    <thetext>Comment on attachment 220975
Patch

Attachment 220975 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/5260009940189184</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966992</commentid>
    <comment_count>9</comment_count>
      <attachid>220977</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-12 11:07:38 -0800</bug_when>
    <thetext>Created attachment 220977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966999</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-12 11:20:21 -0800</bug_when>
    <thetext>Committed r161817: &lt;http://trac.webkit.org/changeset/161817&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220955</attachid>
            <date>2014-01-11 21:03:34 -0800</date>
            <delta_ts>2014-01-11 21:28:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126834-20140111210333.patch</filename>
            <type>text/plain</type>
            <size>70665</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTc5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE0LTAxLTExICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3BsaXQgSUNVIFVUZXh0IHByb3ZpZGVy
cyBvdXQgaW50byB0aGVpciBvd24gZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vdmVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBvdXIgY3VzdG9t
IFVUZXh0IHByb3ZpZGVycyBvdXQgaW50bworICAgICAgICB0aGVpciBvd24gZmlsZXMuCisgICAg
ICAgIC0gVVRleHRQcm92aWRlckxhdGluMS5oL2NwcCBjb250YWlucyB0aGUgTGF0aW4tMSBwcm92
aWRlci4KKyAgICAgICAgLSBVVGV4dFByb3ZpZGVyVVRGMTYuaC9jcHAgY29udGFpbnMgdGhlIFVU
Ri0xNiBwcm92aWRlci4KKyAgICAgICAgLSBVVGV4dFByb3ZpZGVyLmgvY3BwIGNvbnRhaW5zIGNv
ZGUgY29tbW9uIHRvIGFsbCB0aGUgcHJvdmlkZXJzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybUdU
Sy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZUNvbW1vbi5wcm9wczoK
KyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9UZXh0QWxsSW5PbmUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3JJQ1UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0VXBJdGVyYXRvcik6
CisgICAgICAgIChXZWJDb3JlOjp3b3JkQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjphY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2VudGVuY2VC
cmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFVwSXRlcmF0b3JXaXRoUnVsZXMp
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvaWN1OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpm
aXhQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0Q2xvbmVJbXBsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6dVRleHRQcm92aWRlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6dVRleHRJbml0
aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0QWNjZXNzUGluSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6dVRleHRBY2Nlc3NJbkNodW5rT3JPdXRPZlJhbmdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuaDogQWRkZWQuCisK
IDIwMTQtMDEtMTEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbaU9TXSBGaXggYnVpbGQgb2YgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWdpc3RlckFsbFZp
ZXdwb3J0Q29uc3RyYWluZWRMYXllcnMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDE2MTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw2ICs3Nyw3IEBAIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAg
ICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yayIKICAgICAiJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vc3FsIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0IgorICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0L2ljdSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGx1
Z2lucyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcmVuZGVyaW5nIgogICAgICIke1dFQkNPUkVfRElS
fS9yZW5kZXJpbmcvbGluZSIKQEAgLTI4MDEsNiArMjgwMiw5IEBAIGVuZGlmICgpCiAKIGlmIChX
VEZfVVNFX0lDVV9VTklDT0RFKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAg
ICAgICBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmNwcAorICAgICAgICBwbGF0Zm9y
bS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcAorICAgICAgICBwbGF0Zm9ybS90ZXh0
L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwCiAgICAgICAgIHBsYXRmb3JtL3RleHQvVGV4dEJy
ZWFrSXRlcmF0b3JJQ1UuY3BwCiAgICAgICAgIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNw
cAogICAgICAgICBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcApJbmRl
eDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNjE3OTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01OTczLDYg
KzU5NzMsMTIgQEAgcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9lbmNoYW50L1RleHRDaGVja2VyRW5jaGFudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuaCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNwcCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvQmlkaVJlc29sdmVyLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21h
a2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UJKHJldmlz
aW9uIDE2MTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC0yMCw2ICsyMCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJF
Q1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL2d0ayIKICAgICAi
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9zb3VwIgogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS90ZXh0L2d0ayIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vdGV4dC9p
Y3UiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsdWdpbnMvZ3RrIgogKQogCkBAIC0xMjgsNiArMTI5
LDkgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9zb3VwL1No
YXJlZEJ1ZmZlclNvdXAuY3BwCiAKKyAgICBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVy
LmNwcAorICAgIHBsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCisgICAg
cGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNwcAogICAgIHBsYXRmb3JtL3Rl
eHQvTG9jYWxlSUNVLmNwcAogICAgIHBsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJQ1Uu
Y3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCkBAIC0yNTUsNiArMjU5LDkg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZVBsYXRmb3JtR1RLX1NPVVJDRVMKIAogICAgIHBsYXRmb3Jt
L3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAKIAorICAgIHBsYXRmb3JtL3RleHQvaWN1L1VUZXh0
UHJvdmlkZXIuY3BwCisgICAgcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5j
cHAKKyAgICBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwCiAgICAgcGxh
dGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVy
YXRvcklDVS5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlQ29tbW9uLnByb3BzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlQ29tbW9uLnByb3Bz
CShyZXZpc2lvbiAxNjE3OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZUNvbW1vbi5wcm9wcwkod29ya2luZyBjb3B5KQpAQCAtNyw3ICs3LDcgQEAKICAgPC9Qcm9w
ZXJ0eUdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgotICAg
ICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVj
dERpcikuLlxNb2R1bGVzXG1lZGlhY29udHJvbHM7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcbWVk
aWFzdHJlYW07JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcZmlsZXN5c3RlbTskKFByb2plY3REaXIp
Li5cTW9kdWxlc1xnZW9sb2NhdGlvbjskKFByb2plY3REaXIpLi5cTW9kdWxlc1xpbmRleGVkZGI7
JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcbWVkaWFzb3VyY2U7JChQcm9qZWN0RGlyKS4uXE1vZHVs
ZXNcbmF2aWdhdG9yY29udGVudHV0aWxzOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXHBsdWdpbnM7
JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcc3BlZWNoOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXHBy
b3hpbWl0eTskKFByb2plY3REaXIpLi5cTW9kdWxlc1xxdW90YTskKFByb2plY3REaXIpLi5cTW9k
dWxlc1xub3RpZmljYXRpb25zOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXHdlYmRhdGFiYXNlOyQo
UHJvamVjdERpcikuLlxNb2R1bGVzXHdlYnNvY2tldHM7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2li
aWxpdHk7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlcd2luOyQoUHJvamVjdERpcikuLlxi
cmlkZ2U7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVxjOyQoUHJvamVjdERpcikuLlxicmlkZ2VcanNj
OyQoUHJvamVjdERpcikuLlxjc3M7JChQcm9qZWN0RGlyKS4uXGVkaXRpbmc7JChQcm9qZWN0RGly
KS4uXGZpbGVhcGk7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZzskKFByb2plY3REaXIpLi5ccmVu
ZGVyaW5nXGxpbmU7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xtYXRobWw7JChQcm9qZWN0RGly
KS4uXHJlbmRlcmluZ1xzaGFwZXM7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHlsZTskKFBy
b2plY3REaXIpLi5ccmVuZGVyaW5nXHN2ZzskKFByb2plY3REaXIpLi5cYmluZGluZ3M7JChQcm9q
ZWN0RGlyKS4uXGJpbmRpbmdzXGdlbmVyaWM7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzOyQo
UHJvamVjdERpcikuLlxiaW5kaW5nc1xqc1xzcGVjaWFsaXphdGlvbjskKFByb2plY3REaXIpLi5c
ZG9tOyQoUHJvamVjdERpcikuLlxkb21cZGVmYXVsdDskKFByb2plY3REaXIpLi5caGlzdG9yeTsk
KFByb2plY3REaXIpLi5caHRtbDskKFByb2plY3REaXIpLi5caHRtbFxjYW52YXM7JChQcm9qZWN0
RGlyKS4uXGh0bWxcZm9ybXM7JChQcm9qZWN0RGlyKS4uXGh0bWxccGFyc2VyOyQoUHJvamVjdERp
cikuLlxodG1sXHNoYWRvdzskKFByb2plY3REaXIpLi5caHRtbFx0cmFjazskKFByb2plY3REaXIp
Li5caW5zcGVjdG9yOyQoUHJvamVjdERpcikuLlxsb2FkZXI7JChQcm9qZWN0RGlyKS4uXGxvYWRl
clxhcHBjYWNoZTskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmU7JChQcm9qZWN0RGlyKS4u
XGxvYWRlclxhcmNoaXZlXGNmOyQoUHJvamVjdERpcikuLlxsb2FkZXJcY2FjaGU7JChQcm9qZWN0
RGlyKS4uXGxvYWRlclxpY29uOyQoUHJvamVjdERpcikuLlxtYXRobWw7JChQcm9qZWN0RGlyKS4u
XHBhZ2U7JChQcm9qZWN0RGlyKS4uXHBhZ2VcYW5pbWF0aW9uOyQoUHJvamVjdERpcikuLlxwYWdl
XHNjcm9sbGluZzskKFByb2plY3REaXIpLi5ccGFnZVx3aW47JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb247JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXGF1ZGlvOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxtb2NrOyQoUHJvamVjdERpciku
LlxwbGF0Zm9ybVxzcWw7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdpbjskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cbmV0d29yazskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1x3aW47
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNmOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFw
aGljczskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2E7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXGdyYXBoaWNzXGNwdVxhcm1cZmlsdGVyczskKFByb2plY3REaXIpLi5ccGxhdGZv
cm1cZ3JhcGhpY3NcZmlsdGVyczskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmls
dGVyc1xhcm07JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlOyQoUHJv
amVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x0cmFuc2Zvcm1zOyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVx0ZXh0OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0XHRyYW5zY29kZXI7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpbjskKFByb2plY3REaXIpLi5ceG1sOyQo
UHJvamVjdERpcikuLlx4bWxccGFyc2VyOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVxXZWJDb3JlXERlcml2ZWRTb3VyY2VzOyQoUHJvamVjdERpciku
LlxwbHVnaW5zOyQoUHJvamVjdERpcikuLlxwbHVnaW5zXHdpbjskKFByb2plY3REaXIpLi5cc3Zn
XGFuaW1hdGlvbjskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzOyQoUHJvamVjdERpcikuLlxz
dmdccHJvcGVydGllczskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzXGZpbHRlcnM7JChQcm9q
ZWN0RGlyKS4uXHN2ZzskKFByb2plY3REaXIpLi5cdGVzdGluZzskKFByb2plY3REaXIpLi5cY3J5
cHRvOyQoUHJvamVjdERpcikuLlxjcnlwdG9ca2V5czskKFByb2plY3REaXIpLi5cd21sOyQoUHJv
amVjdERpcikuLlxzdG9yYWdlOyQoUHJvamVjdERpcikuLlxzdHlsZTskKFByb2plY3REaXIpLi5c
d2Vic29ja2V0czskKFByb2plY3REaXIpLi5cd29ya2VyczskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcaW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlOyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JChQcm9qZWN0RGlyKS4u
XEZvcndhcmRpbmdIZWFkZXJzOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xncHU7
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGVnbDskKFByb2plY3REaXIpLi5ccGxh
dGZvcm1cZ3JhcGhpY3Ncc3VyZmFjZXM7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNz
XHN1cmZhY2VzXGVnbDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbmdsOyQo
V2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVccHJp
dmF0ZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTsk
KFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVcc3FsaXRlOyQoV2ViS2l0X0xpYnJhcmllcylcaW5j
bHVkZVxKYXZhU2NyaXB0Q29yZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVcemxpYjslKEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQo
UHJvamVjdERpcikuLlxNb2R1bGVzXG1lZGlhY29udHJvbHM7JChQcm9qZWN0RGlyKS4uXE1vZHVs
ZXNcbWVkaWFzdHJlYW07JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcZmlsZXN5c3RlbTskKFByb2pl
Y3REaXIpLi5cTW9kdWxlc1xnZW9sb2NhdGlvbjskKFByb2plY3REaXIpLi5cTW9kdWxlc1xpbmRl
eGVkZGI7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcbWVkaWFzb3VyY2U7JChQcm9qZWN0RGlyKS4u
XE1vZHVsZXNcbmF2aWdhdG9yY29udGVudHV0aWxzOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXHBs
dWdpbnM7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcc3BlZWNoOyQoUHJvamVjdERpcikuLlxNb2R1
bGVzXHByb3hpbWl0eTskKFByb2plY3REaXIpLi5cTW9kdWxlc1xxdW90YTskKFByb2plY3REaXIp
Li5cTW9kdWxlc1xub3RpZmljYXRpb25zOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXHdlYmRhdGFi
YXNlOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXHdlYnNvY2tldHM7JChQcm9qZWN0RGlyKS4uXGFj
Y2Vzc2liaWxpdHk7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlcd2luOyQoUHJvamVjdERp
cikuLlxicmlkZ2U7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVxjOyQoUHJvamVjdERpcikuLlxicmlk
Z2VcanNjOyQoUHJvamVjdERpcikuLlxjc3M7JChQcm9qZWN0RGlyKS4uXGVkaXRpbmc7JChQcm9q
ZWN0RGlyKS4uXGZpbGVhcGk7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZzskKFByb2plY3REaXIp
Li5ccmVuZGVyaW5nXGxpbmU7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xtYXRobWw7JChQcm9q
ZWN0RGlyKS4uXHJlbmRlcmluZ1xzaGFwZXM7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHls
ZTskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXHN2ZzskKFByb2plY3REaXIpLi5cYmluZGluZ3M7
JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGdlbmVyaWM7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdz
XGpzOyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xqc1xzcGVjaWFsaXphdGlvbjskKFByb2plY3RE
aXIpLi5cZG9tOyQoUHJvamVjdERpcikuLlxkb21cZGVmYXVsdDskKFByb2plY3REaXIpLi5caGlz
dG9yeTskKFByb2plY3REaXIpLi5caHRtbDskKFByb2plY3REaXIpLi5caHRtbFxjYW52YXM7JChQ
cm9qZWN0RGlyKS4uXGh0bWxcZm9ybXM7JChQcm9qZWN0RGlyKS4uXGh0bWxccGFyc2VyOyQoUHJv
amVjdERpcikuLlxodG1sXHNoYWRvdzskKFByb2plY3REaXIpLi5caHRtbFx0cmFjazskKFByb2pl
Y3REaXIpLi5caW5zcGVjdG9yOyQoUHJvamVjdERpcikuLlxsb2FkZXI7JChQcm9qZWN0RGlyKS4u
XGxvYWRlclxhcHBjYWNoZTskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmU7JChQcm9qZWN0
RGlyKS4uXGxvYWRlclxhcmNoaXZlXGNmOyQoUHJvamVjdERpcikuLlxsb2FkZXJcY2FjaGU7JChQ
cm9qZWN0RGlyKS4uXGxvYWRlclxpY29uOyQoUHJvamVjdERpcikuLlxtYXRobWw7JChQcm9qZWN0
RGlyKS4uXHBhZ2U7JChQcm9qZWN0RGlyKS4uXHBhZ2VcYW5pbWF0aW9uOyQoUHJvamVjdERpciku
LlxwYWdlXHNjcm9sbGluZzskKFByb2plY3REaXIpLi5ccGFnZVx3aW47JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb247JChQcm9qZWN0RGly
KS4uXHBsYXRmb3JtXGF1ZGlvOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxtb2NrOyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxzcWw7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdpbjskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cbmV0d29yazskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29y
a1x3aW47JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNmOyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bVxncmFwaGljczskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2E7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGNwdVxhcm1cZmlsdGVyczskKFByb2plY3REaXIpLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyczskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcZmlsdGVyc1xhcm07JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBl
OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x0cmFuc2Zvcm1zOyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVx0ZXh0OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0XGljdTskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cdGV4dFx0cmFuc2NvZGVyOyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxncmFwaGljc1x3aW47JChQcm9qZWN0RGlyKS4uXHhtbDskKFByb2plY3REaXIpLi5ceG1s
XHBhcnNlcjskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcV2ViQ29yZVxEZXJpdmVkU291cmNlczskKFByb2plY3REaXIpLi5ccGx1Z2luczskKFByb2pl
Y3REaXIpLi5ccGx1Z2luc1x3aW47JChQcm9qZWN0RGlyKS4uXHN2Z1xhbmltYXRpb247JChQcm9q
ZWN0RGlyKS4uXHN2Z1xncmFwaGljczskKFByb2plY3REaXIpLi5cc3ZnXHByb3BlcnRpZXM7JChQ
cm9qZWN0RGlyKS4uXHN2Z1xncmFwaGljc1xmaWx0ZXJzOyQoUHJvamVjdERpcikuLlxzdmc7JChQ
cm9qZWN0RGlyKS4uXHRlc3Rpbmc7JChQcm9qZWN0RGlyKS4uXGNyeXB0bzskKFByb2plY3REaXIp
Li5cY3J5cHRvXGtleXM7JChQcm9qZWN0RGlyKS4uXHdtbDskKFByb2plY3REaXIpLi5cc3RvcmFn
ZTskKFByb2plY3REaXIpLi5cc3R5bGU7JChQcm9qZWN0RGlyKS4uXHdlYnNvY2tldHM7JChQcm9q
ZWN0RGlyKS4uXHdvcmtlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGU7JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVk
ZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyQoUHJvamVjdERpcikuLlxGb3J3YXJkaW5nSGVhZGVy
czskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZ3B1OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVxncmFwaGljc1xlZ2w7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHN1
cmZhY2VzOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xzdXJmYWNlc1xlZ2w7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW5nbDskKFdlYktpdF9MaWJyYXJpZXMp
XGluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7JChXZWJLaXRfTGli
cmFyaWVzKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JChXZWJLaXRfTGlicmFyaWVz
KVxpbmNsdWRlXHNxbGl0ZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVcSmF2YVNjcmlwdENv
cmU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz5ESVNBQkxFXzNEX1JFTkRFUklORztXRUJDT1JFX0NPTlRFWFRfTUVO
VVM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgog
ICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CiAgICAgICA8
UHJlY29tcGlsZWRIZWFkZXJGaWxlPldlYkNvcmVQcmVmaXguaDwvUHJlY29tcGlsZWRIZWFkZXJG
aWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL2NvcHlGb3J3YXJkaW5n
SGVhZGVycy5jbWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQJKHJldmlzaW9uIDE2MTc5NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kCSh3b3JraW5n
IGNvcHkpCkBAIC01OCw2ICs1OCw3IEBAIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0
Zm9ybVxncmEKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVxncmFwaGljc1xv
cGVudHlwZVwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4
Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cbW9ja1wqLmgiICIlQ09ORklHVVJB
VElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIl
Li5ccGxhdGZvcm1cdGV4dFwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdl
YkNvcmUiCit4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cdGV4dFxpY3VcKi5o
IiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2Qg
IiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXHRleHRcdHJhbnNjb2RlclwqLmgiICIlQ09ORklHVVJB
VElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIl
Li5ccGxhdGZvcm1cd2luXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2Vi
Q29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVxuZXR3b3JrXCouaCIg
IiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDE2MTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjI5Miw2ICsyMjkyLDEyIEBACiAJCTdDNTIyRDRCMTVC
NDc3RTgwMDlCN0M5NSAvKiBJbnNwZWN0b3JPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTIyRDQ5MTVCNDc3RTgwMDlCN0M5NSAvKiBJ
bnNwZWN0b3JPdmVybGF5LmNwcCAqLzsgfTsKIAkJN0M1MzQzRkMxN0I3NEI2MzAwNDIzMkYwIC8q
IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUzNDNGQTE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmNwcCAqLzsgfTsKIAkJN0M1MzQzRkQxN0I3NEI2MzAwNDIzMkYwIC8q
IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M1MzQzRkIxN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5oICovOyB9OworCQk3Qzc0RDQzMzE4ODIzQTkzMDBFNUVENTcgLyogVVRl
eHRQcm92aWRlckxhdGluMS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3Qzc0RDQzMTE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQcm92aWRlckxhdGlu
MS5jcHAgKi87IH07CisJCTdDNzRENDM0MTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVy
TGF0aW4xLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Qzc0RDQzMjE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQcm92aWRlckxhdGluMS5oICovOyB9Owor
CQk3Qzc0RDQzNzE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc0RDQzNTE4ODIzQjE5MDBF
NUVENTcgLyogVVRleHRQcm92aWRlci5jcHAgKi87IH07CisJCTdDNzRENDM4MTg4MjNCMTkwMEU1
RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Qzc0RDQzNjE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5o
ICovOyB9OworCQk3Qzc0RDQzQjE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92aWRlclVURjE2
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRE
NDM5MTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwICovOyB9OworCQk3
Qzc0RDQzQzE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92aWRlclVURjE2LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc0RDQzQTE4ODI0MDA0MDBF
NUVENTcgLyogVVRleHRQcm92aWRlclVURjE2LmggKi87IH07CiAJCTdDQzdFM0Q3MTcyMDhDMEYw
MDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0IGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0M3RTNENjE3MjA4QzBGMDAzQzUyNzcgLyogSURO
U2NyaXB0V2hpdGVMaXN0LnR4dCAqLzsgfTsKIAkJN0NFNkNCRkIxODdGMzcwNzAwRDQ2QkY1IC8q
IEZvcm1hdENvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0NFNkNCRkExODdGMzcwNzAwRDQ2QkY1IC8qIEZvcm1hdENvbnZlcnRlci5oICov
OyB9OwogCQk3Q0U2Q0JGRDE4N0YzOTQ5MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTZDQkZDMTg3
RjM5NDkwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuY3BwICovOyB9OwpAQCAtOTI2Nyw2ICs5
MjczLDEyIEBACiAJCTdDNjEzNkY3MTcxMEMzNTIwMEZGNEE1NyAvKiBJbkZpbGVzQ29tcGlsZXIu
cG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnNjcmlwdC5wZXJsOyBuYW1lID0gSW5GaWxlc0NvbXBpbGVyLnBtOyBwYXRoID0gc2NyaXB0cy9J
bkZpbGVzQ29tcGlsZXIucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNjEzNkY4
MTcxMEMzNTIwMEZGNEE1NyAvKiBJbkZpbGVzUGFyc2VyLnBtICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IElu
RmlsZXNQYXJzZXIucG07IHBhdGggPSBzY3JpcHRzL0luRmlsZXNQYXJzZXIucG07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNjEzNkY5MTcxMEMzNTIwMEZGNEE1NyAvKiBTdGF0aWNT
dHJpbmcucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gU3RhdGljU3RyaW5nLnBtOyBwYXRoID0gc2NyaXB0
cy9TdGF0aWNTdHJpbmcucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNzRENDMx
MTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3Qzc0RDQzMjE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQ
cm92aWRlckxhdGluMS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVVGV4dFBy
b3ZpZGVyTGF0aW4xLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNzRENDM1MTg4
MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFVUZXh0UHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3Qzc0RDQzNjE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVVGV4dFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdDNzRENDM5MTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3Zp
ZGVyVVRGMTYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVRleHRQ
cm92aWRlclVURjE2LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M3NEQ0M0Ex
ODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBVVGV4dFByb3ZpZGVyVVRGMTYuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0NDN0UzRDYxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlz
dC50eHQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSUROU2NyaXB0V2hpdGVMaXN0LnR4dDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NFNkNCRkExODdGMzcwNzAwRDQ2QkY1IC8qIEZv
cm1hdENvbnZlcnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtYXRD
b252ZXJ0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NFNkNCRkMxODdGMzk0
OTAwRDQ2QkY1IC8qIEZvcm1hdENvbnZlcnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGb3JtYXRDb252ZXJ0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTYyODUsNiArMTYyOTcsMTkgQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNU
YWJzID0gMDsKIAkJfTsKKwkJN0M3NEQ0MzAxODgyM0E0MjAwRTVFRDU3IC8qIGljdSAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJN0M3NEQ0MzExODgyM0E5
MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwICovLAorCQkJCTdDNzRENDMyMTg4
MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmggKi8sCisJCQkJN0M3NEQ0Mzkx
ODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgKi8sCisJCQkJN0M3NEQ0
M0ExODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5oICovLAorCQkJCTdDNzRE
NDM1MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCAqLywKKwkJCQk3Qzc0RDQz
NjE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5oICovLAorCQkJKTsKKwkJCXBhdGgg
PSBpY3U7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk3RTQ3NEUxOTEyNDk0
REE5MDAyMzUzNjQgLyogaW9zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKQEAgLTIwMDI2LDYgKzIwMDUxLDcgQEAKIAkJCQlCMkIyNjQ1OTBEMDBBNzdFMDAwQUND
MUQgLyogY2YgKi8sCiAJCQkJQTUxNkU4QjIxMzZFMDRDMDAwNzZDM0MwIC8qIGlvcyAqLywKIAkJ
CQlCMkMzRDlGOTBEMDA2QzFEMDBFRjZGMjYgLyogbWFjICovLAorCQkJCTdDNzRENDMwMTg4MjNB
NDIwMEU1RUQ1NyAvKiBpY3UgKi8sCiAJCQkJMzdDNjFGMDAxMjA5NUM4NzAwN0EzQzY3IC8qIEF0
b21pY1N0cmluZ0tleWVkTVJVQ2FjaGUuaCAqLywKIAkJCQlCMkMzRDlGMjBEMDA2QzFEMDBFRjZG
MjYgLyogQmlkaUNvbnRleHQuY3BwICovLAogCQkJCUIyQzNEOUYzMEQwMDZDMUQwMEVGNkYyNiAv
KiBCaWRpQ29udGV4dC5oICovLApAQCAtMjUyMDAsMTAgKzI1MjI2LDEyIEBACiAJCQkJRDBBM0E3
MzExNDA1QTM5ODAwRkI4RUQzIC8qIFJlc291cmNlTG9hZGVyT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFBRjUwMzYxNkYxMDBGNjAwOTVCMkU4IC8qIFJlc291cmNlTG9hZGVyVHlwZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3M0UzMjU3MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJj
ZUxvYWROb3RpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0M3NEQ0MzQxODgyM0E5MzAwRTVF
RDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0Mjk1RkE0
MTJCMDYxNEUwMEQxQUNFMCAvKiBSZXNvdXJjZUxvYWRQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRDBDRTU4RjkxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDdDNTlCNzYxN0Y3RDBEQjAwMEZCQ0JCIC8qIENhcGFiaWxp
dHlSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE4MUJGODUxMURDRkQ5MDAwREEyQjk4IC8q
IFJlc291cmNlTG9hZFRpbWluZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0M3NEQ0MzgxODgyM0Ix
OTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFRTY4NDZE
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxNEM3NjdEMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwNzk2OURCODE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENJY2VDYW5kaWRh
dGVFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTQzNiw2ICsyNTQ2NCw3IEBACiAJCQkJQkNF
RjQ0NEEwRTY3NDVFMDAwMUMxMjg3IC8qIFN0eWxlR2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExMERDNzZCMTQ3NDdCQUIwMDVFMjQ3MSAvKiBTdHlsZUdyaWREYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMTEwREI5QjE0RjVERjc3MDBBMDNCOTMgLyogU3R5bGVHcmlkSXRl
bURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDNzRENDNDMTg4MjQwMDQwMEU1RUQ1NyAvKiBV
VGV4dFByb3ZpZGVyVVRGMTYuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUY0M0NGMEU2NzNEQTEw
MDFDMTI4NyAvKiBTdHlsZUltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIyNzMwNDBFODJG
MUU2MDBFN0Y5NzUgLyogU3R5bGVJbmhlcml0ZWREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NDcxMjdDQjE2MzQzOEFFMDBFRDZGNUEgLyogU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcy5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNjczNSw2ICsyNjc2NCw3IEBACiAJCQkJRkUxNkNGRDUxNjlEMURF
RDAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZFN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkVCQzVGMzExNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5N0JDNkEyNzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTdDNzRENDMzMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3Zp
ZGVyTGF0aW4xLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNDU2RjE4MTY3N0Q3NEUwMDVFRERG
OSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVCMjZEMjgxNjdB
OEYyQTAwRkREMjZCIC8qIERhdGFiYXNlU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZF
REVGODQxMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjY4NDUsNiArMjY4NzUsNyBAQAogCQkJCTA3ODMyMjg0MTgwMTNFRDgwMDk5OUUw
QyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOUEy
NDczMTVCOUMyRDEwMEQzNDUyNyAvKiBET01ET01TZWN1cml0eVBvbGljeS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTc2OTQ1NjVDMTIxNERCNjMwMDA3Q0JBRSAvKiBET01ET01Ub2tlbkxpc3QubW0g
aW4gU291cmNlcyAqLywKKwkJCQk3Qzc0RDQzQjE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92
aWRlclVURjE2LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBQUJBMjU5MTRCQzYxMzMwMEFBOUEx
MSAvKiBET01FZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODVBQ0E5QzEwQTlCNUZBNTAw
NjcxRTkwIC8qIERPTUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUNBOTZCOTBBOTYy
MUE2MDA2OTBDQ0YgLyogRE9NRW50aXR5Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yODk1Niw2ICsy
ODk4Nyw3IEBACiAJCQkJMDc4RTA5MEExN0QxNENFRTAwNDIwQUExIC8qIFJUQ0ljZUNhbmRpZGF0
ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDgzMkM4MTg3RjY3M0YwMERBNjNBNiAv
KiBXZWJDb3JlVGhyZWFkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBQzQwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR1Rlc3RzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDNzRENDM3MTg4MjNC
MTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3
QUM3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDc5NjlEQkIxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QUNBMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdUZXh0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dEFsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDE2MTc5NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEFsbEluT25lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsMyArMzgsNiBAQAogI2luY2x1ZGUgIlRleHRFbmNvZGluZ0RldGVjdG9ySUNV
LmNwcCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAiCiAjaW5jbHVkZSAiVGV4
dFN0cmVhbS5jcHAiCisjaW5jbHVkZSAiVVRleHRQcm92aWRlci5jcHAiCisjaW5jbHVkZSAiVVRl
eHRQcm92aWRlckxhdGluMS5jcHAiCisjaW5jbHVkZSAiVVRleHRQcm92aWRlclVURjE2LmNwcCIK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJQ1Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3JJQ1UuY3BwCShyZXZpc2lvbiAxNjE3OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySUNVLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMs
NiArMjMsOCBAQAogI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCiAKICNpbmNsdWRlICJM
aW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCIKKyNpbmNsdWRlICJVVGV4dFByb3ZpZGVyTGF0aW4x
LmgiCisjaW5jbHVkZSAiVVRleHRQcm92aWRlclVURjE2LmgiCiAjaW5jbHVkZSA8d3RmL0F0b21p
Y3MuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzAsOCArMzIsNyBA
QCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBU
ZXh0QnJlYWtJdGVyYXRvciogc2V0VXBJdGVyYXRvcihib29sJiBjcmVhdGVkSXRlcmF0b3IsIFRl
eHRCcmVha0l0ZXJhdG9yKiYgaXRlcmF0b3IsCi0gICAgVUJyZWFrSXRlcmF0b3JUeXBlIHR5cGUs
IGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgpCitzdGF0aWMgVGV4dEJyZWFrSXRlcmF0
b3IqIHNldFVwSXRlcmF0b3IoYm9vbCYgY3JlYXRlZEl0ZXJhdG9yLCBUZXh0QnJlYWtJdGVyYXRv
ciomIGl0ZXJhdG9yLCBVQnJlYWtJdGVyYXRvclR5cGUgdHlwZSwgY29uc3QgVUNoYXIqIHN0cmlu
ZywgaW50IGxlbmd0aCkKIHsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIDA7CkBA
IC01MywzNzMgKzU0LDExIEBAIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0VXBJdGVyYXRv
cigKICAgICByZXR1cm4gaXRlcmF0b3I7CiB9CiAKLWVudW0gVGV4dENvbnRleHQgeyBOb0NvbnRl
eHQsIFByaW9yQ29udGV4dCwgUHJpbWFyeUNvbnRleHQgfTsKLQotY29uc3QgaW50IHRleHRCdWZm
ZXJDYXBhY2l0eSA9IDE2OwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgVVRleHQgdGV4dDsKLSAg
ICBVQ2hhciBidWZmZXJbdGV4dEJ1ZmZlckNhcGFjaXR5XTsKLX0gVVRleHRXaXRoQnVmZmVyOwot
Ci1zdGF0aWMgaW5saW5lIGludDY0X3QgdGV4dFBpbkluZGV4KGludDY0X3QmIGluZGV4LCBpbnQ2
NF90IGxpbWl0KQotewotICAgIGlmIChpbmRleCA8IDApCi0gICAgICAgIGluZGV4ID0gMDsKLSAg
ICBlbHNlIGlmIChpbmRleCA+IGxpbWl0KQotICAgICAgICBpbmRleCA9IGxpbWl0OwotICAgIHJl
dHVybiBpbmRleDsKLX0KLQotc3RhdGljIGlubGluZSBpbnQ2NF90IHRleHROYXRpdmVMZW5ndGgo
VVRleHQqIHRleHQpCi17Ci0gICAgcmV0dXJuIHRleHQtPmEgKyB0ZXh0LT5iOwotfQotCi0vLyBS
ZWxvY2F0ZSBwb2ludGVyIGZyb20gc291cmNlIGludG8gZGVzdGluYXRpb24gYXMgcmVxdWlyZWQu
Ci1zdGF0aWMgdm9pZCB0ZXh0Rml4UG9pbnRlcihjb25zdCBVVGV4dCogc291cmNlLCBVVGV4dCog
ZGVzdGluYXRpb24sIGNvbnN0IHZvaWQqJiBwb2ludGVyKQotewotICAgIGlmIChwb2ludGVyID49
IHNvdXJjZS0+cEV4dHJhICYmIHBvaW50ZXIgPCBzdGF0aWNfY2FzdDxjaGFyKj4oc291cmNlLT5w
RXh0cmEpICsgc291cmNlLT5leHRyYVNpemUpIHsKLSAgICAgICAgLy8gUG9pbnRlciByZWZlcmVu
Y2VzIHNvdXJjZSBleHRyYSBidWZmZXIuCi0gICAgICAgIHBvaW50ZXIgPSBzdGF0aWNfY2FzdDxj
aGFyKj4oZGVzdGluYXRpb24tPnBFeHRyYSkgKyAoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHBv
aW50ZXIpIC0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHNvdXJjZS0+cEV4dHJhKSk7Ci0gICAg
fSBlbHNlIGlmIChwb2ludGVyID49IHNvdXJjZSAmJiBwb2ludGVyIDwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oc291cmNlKSArIHNvdXJjZS0+c2l6ZU9mU3RydWN0KSB7Ci0gICAgICAg
IC8vIFBvaW50ZXIgcmVmZXJlbmNlcyBzb3VyY2UgdGV4dCBzdHJ1Y3R1cmUsIGJ1dCBub3Qgc291
cmNlIGV4dHJhIGJ1ZmZlci4KLSAgICAgICAgcG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGRlc3RpbmF0aW9uKSArIChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4ocG9pbnRlcikgLSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzb3VyY2UpKTsKLSAgICB9Ci19Ci0KLXN0YXRp
YyBVVGV4dCogdGV4dENsb25lKFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3QgVVRleHQqIHNvdXJj
ZSwgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKQotewotICAgIEFTU0VSVF9VTlVTRUQo
ZGVlcCwgIWRlZXApOwotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVy
biAwOwotICAgIGludDMyX3QgZXh0cmFTaXplID0gc291cmNlLT5leHRyYVNpemU7Ci0gICAgZGVz
dGluYXRpb24gPSB1dGV4dF9zZXR1cChkZXN0aW5hdGlvbiwgZXh0cmFTaXplLCBzdGF0dXMpOwot
ICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVybiBkZXN0aW5hdGlvbjsK
LSAgICB2b2lkKiBleHRyYU5ldyA9IGRlc3RpbmF0aW9uLT5wRXh0cmE7Ci0gICAgaW50MzJfdCBm
bGFncyA9IGRlc3RpbmF0aW9uLT5mbGFnczsKLSAgICBpbnQgc2l6ZVRvQ29weSA9IHN0ZDo6bWlu
KHNvdXJjZS0+c2l6ZU9mU3RydWN0LCBkZXN0aW5hdGlvbi0+c2l6ZU9mU3RydWN0KTsKLSAgICBt
ZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSwgc2l6ZVRvQ29weSk7Ci0gICAgZGVzdGluYXRpb24t
PnBFeHRyYSA9IGV4dHJhTmV3OwotICAgIGRlc3RpbmF0aW9uLT5mbGFncyA9IGZsYWdzOwotICAg
IG1lbWNweShkZXN0aW5hdGlvbi0+cEV4dHJhLCBzb3VyY2UtPnBFeHRyYSwgZXh0cmFTaXplKTsK
LSAgICB0ZXh0Rml4UG9pbnRlcihzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbi0+Y29u
dGV4dCk7Ci0gICAgdGV4dEZpeFBvaW50ZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRp
b24tPnApOwotICAgIHRleHRGaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0
aW9uLT5xKTsKLSAgICBBU1NFUlQoIWRlc3RpbmF0aW9uLT5yKTsKLSAgICBjb25zdCB2b2lkICog
Y2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkZXN0aW5hdGlvbi0+Y2h1
bmtDb250ZW50cyk7Ci0gICAgdGV4dEZpeFBvaW50ZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY2h1
bmtDb250ZW50cyk7Ci0gICAgZGVzdGluYXRpb24tPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2Fz
dDxjb25zdCBVQ2hhcio+KGNodW5rQ29udGVudHMpOwotICAgIHJldHVybiBkZXN0aW5hdGlvbjsK
LX0KLQotc3RhdGljIGludDMyX3QgdGV4dEV4dHJhY3QoVVRleHQqIHRleHQsIGludDY0X3Qgc3Rh
cnQsIGludDY0X3QgbGltaXQsIFVDaGFyKiBkZXN0aW5hdGlvbiwgaW50MzJfdCBkZXN0aW5hdGlv
bkNhcGFjaXR5LCBVRXJyb3JDb2RlKiBlcnJvckNvZGUpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRl
eHQpOwotICAgIFVOVVNFRF9QQVJBTShzdGFydCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxpbWl0KTsK
LSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5h
dGlvbkNhcGFjaXR5KTsKLSAgICAvLyBJbiB0aGUgcHJlc2VudCBjb250ZXh0LCB0aGlzIHRleHQg
cHJvdmlkZXIgaXMgdXNlZCBvbmx5IHdpdGggSUNVIGZ1bmN0aW9ucwotICAgIC8vIHRoYXQgZG8g
bm90IHBlcmZvcm0gYW4gZXh0cmFjdCBvcGVyYXRpb24uCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgKmVycm9yQ29kZSA9IFVfVU5TVVBQT1JURURfRVJST1I7Ci0gICAgcmV0dXJuIDA7
Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRDbG9zZShVVGV4dCogdGV4dCkKLXsKLSAgICB0ZXh0LT5j
b250ZXh0ID0gMDsKLX0KLQotc3RhdGljIGlubGluZSBUZXh0Q29udGV4dCB0ZXh0R2V0Q29udGV4
dChjb25zdCBVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgVUJvb2wgZm9yd2FyZCkK
LXsKLSAgICBpZiAoIXRleHQtPmIgfHwgbmF0aXZlSW5kZXggPiB0ZXh0LT5iKQotICAgICAgICBy
ZXR1cm4gUHJpbWFyeUNvbnRleHQ7Ci0gICAgaWYgKG5hdGl2ZUluZGV4ID09IHRleHQtPmIpCi0g
ICAgICAgIHJldHVybiBmb3J3YXJkID8gUHJpbWFyeUNvbnRleHQgOiBQcmlvckNvbnRleHQ7Ci0g
ICAgcmV0dXJuIFByaW9yQ29udGV4dDsKLX0KLQotc3RhdGljIGlubGluZSBUZXh0Q29udGV4dCB0
ZXh0TGF0aW4xR2V0Q3VycmVudENvbnRleHQoY29uc3QgVVRleHQqIHRleHQpCi17Ci0gICAgaWYg
KCF0ZXh0LT5jaHVua0NvbnRlbnRzKQotICAgICAgICByZXR1cm4gTm9Db250ZXh0OwotICAgIHJl
dHVybiB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnBFeHRyYSA/IFByaW1hcnlDb250ZXh0
IDogUHJpb3JDb250ZXh0OwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0TGF0aW4xTW92ZUluUHJpbWFy
eUNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZl
TGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRz
ID09IHRleHQtPnBFeHRyYSk7Ci0gICAgaWYgKGZvcndhcmQpIHsKLSAgICAgICAgQVNTRVJUKG5h
dGl2ZUluZGV4ID49IHRleHQtPmIgJiYgbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGgpOwotICAg
ICAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gbmF0aXZlSW5kZXg7Ci0gICAgICAgIHRleHQt
PmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVJbmRleCArIHRleHQtPmV4dHJhU2l6ZSAvIHNpemVv
ZihVQ2hhcik7Ci0gICAgICAgIGlmICh0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID4gbmF0aXZlTGVu
Z3RoKQotICAgICAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxlbmd0aDsK
LSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQobmF0aXZlSW5kZXggPiB0ZXh0LT5iICYmIG5h
dGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7Ci0gICAgICAgIHRleHQtPmNodW5rTmF0aXZlTGlt
aXQgPSBuYXRpdmVJbmRleDsKLSAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IG5hdGl2
ZUluZGV4IC0gdGV4dC0+ZXh0cmFTaXplIC8gc2l6ZW9mKFVDaGFyKTsKLSAgICAgICAgaWYgKHRl
eHQtPmNodW5rTmF0aXZlU3RhcnQgPCB0ZXh0LT5iKQotICAgICAgICAgICAgdGV4dC0+Y2h1bmtO
YXRpdmVTdGFydCA9IHRleHQtPmI7Ci0gICAgfQotICAgIGludDY0X3QgbGVuZ3RoID0gdGV4dC0+
Y2h1bmtOYXRpdmVMaW1pdCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgLy8gRW5zdXJl
IGNodW5rIGxlbmd0aCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgbGVuZ3RoIGV4Y2VlZHMg
aW50MzJfdCByYW5nZS4KLSAgICBBU1NFUlQobGVuZ3RoIDwgc3RkOjpudW1lcmljX2xpbWl0czxp
bnQzMl90Pjo6bWF4KCkpOwotICAgIHRleHQtPmNodW5rTGVuZ3RoID0gbGVuZ3RoIDwgc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihsZW5n
dGgpIDogMDsKLSAgICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5n
dGg7Ci0gICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBmb3J3YXJkID8gMCA6IHRleHQtPmNodW5rTGVu
Z3RoOwotICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhjb25zdF9jYXN0PFVDaGFyKj4odGV4dC0+
Y2h1bmtDb250ZW50cyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4odGV4dC0+cCkgKyAodGV4
dC0+Y2h1bmtOYXRpdmVTdGFydCAtIHRleHQtPmIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGV4
dC0+Y2h1bmtMZW5ndGgpKTsKLX0KLQotc3RhdGljIHZvaWQgdGV4dExhdGluMVN3aXRjaFRvUHJp
bWFyeUNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0
aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250
ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOwotICAgIHRleHQtPmNodW5r
Q29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnBFeHRyYSk7Ci0gICAg
dGV4dExhdGluMU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVM
ZW5ndGgsIGZvcndhcmQpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0TGF0aW4xTW92ZUluUHJpb3JD
b250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxl
bmd0aCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9
PSB0ZXh0LT5xKTsKLSAgICBBU1NFUlQoZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgdGV4dC0+YiA6
IG5hdGl2ZUluZGV4IDw9IHRleHQtPmIpOwotICAgIEFTU0VSVF9VTlVTRUQobmF0aXZlTGVuZ3Ro
LCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBu
YXRpdmVMZW5ndGgpOwotICAgIEFTU0VSVF9VTlVTRUQoZm9yd2FyZCwgZm9yd2FyZCA/IG5hdGl2
ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3RoKTsKLSAg
ICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gMDsKLSAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0
ID0gdGV4dC0+YjsKLSAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IHRleHQtPmI7Ci0gICAgdGV4dC0+
bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOwotICAgIGludDY0X3Qgb2Zm
c2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgIC8vIEVuc3Vy
ZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRz
IGludDMyX3QgcmFuZ2Ugb3IgY2h1bmsgbGVuZ3RoLgotICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7Ci0gICAgdGV4dC0+Y2h1bmtPZmZzZXQg
PSBzdGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/
IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Ci19
Ci0KLXN0YXRpYyB2b2lkIHRleHRMYXRpbjFTd2l0Y2hUb1ByaW9yQ29udGV4dChVVGV4dCogdGV4
dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndh
cmQpCi17Ci0gICAgQVNTRVJUKCF0ZXh0LT5jaHVua0NvbnRlbnRzIHx8IHRleHQtPmNodW5rQ29u
dGVudHMgPT0gdGV4dC0+cEV4dHJhKTsKLSAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5xKTsKLSAgICB0ZXh0TGF0aW4xTW92ZUluUHJpb3JD
b250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotfQotCi1z
dGF0aWMgaW5saW5lIGJvb2wgdGV4dEluQ2h1bmtPck91dE9mUmFuZ2UoVVRleHQqIHRleHQsIGlu
dDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkLCBV
Qm9vbCYgaXNBY2Nlc3NpYmxlKQotewotICAgIGlmIChmb3J3YXJkKSB7Ci0gICAgICAgIGlmIChu
YXRpdmVJbmRleCA+PSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ICYmIG5hdGl2ZUluZGV4IDwgdGV4
dC0+Y2h1bmtOYXRpdmVMaW1pdCkgewotICAgICAgICAgICAgaW50NjRfdCBvZmZzZXQgPSBuYXRp
dmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgICAgICAgICAvLyBFbnN1cmUg
Y2h1bmsgb2Zmc2V0IGlzIHdlbGwgZm9ybWVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGlu
dDMyX3QgcmFuZ2UuCi0gICAgICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWF4KCkpOwotICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBv
ZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0
PGludDMyX3Q+KG9mZnNldCkgOiAwOwotICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gVFJVRTsK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChuYXRpdmVJ
bmRleCA+PSBuYXRpdmVMZW5ndGggJiYgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9PSBuYXRpdmVM
ZW5ndGgpIHsKLSAgICAgICAgICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gdGV4dC0+Y2h1bmtMZW5n
dGg7Ci0gICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBGQUxTRTsKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKG5hdGl2ZUluZGV4
ID4gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAmJiBuYXRpdmVJbmRleCA8PSB0ZXh0LT5jaHVua05h
dGl2ZUxpbWl0KSB7Ci0gICAgICAgICAgICBpbnQ2NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0g
dGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKLSAgICAgICAgICAgIC8vIEVuc3VyZSBjaHVuayBvZmZz
ZXQgaXMgd2VsbCBmb3JtZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5n
ZS4KLSAgICAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptYXgoKSk7Ci0gICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNldCA9IG9mZnNldCA8IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4o
b2Zmc2V0KSA6IDA7Ci0gICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBUUlVFOwotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG5hdGl2ZUluZGV4IDw9IDAg
JiYgIXRleHQtPmNodW5rTmF0aXZlU3RhcnQpIHsKLSAgICAgICAgICAgIHRleHQtPmNodW5rT2Zm
c2V0ID0gMDsKLSAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IEZBTFNFOwotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1z
dGF0aWMgVUJvb2wgdGV4dExhdGluMUFjY2VzcyhVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJ
bmRleCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBpZiAoIXRleHQtPmNvbnRleHQpCi0gICAgICAg
IHJldHVybiBGQUxTRTsKLSAgICBpbnQ2NF90IG5hdGl2ZUxlbmd0aCA9IHRleHROYXRpdmVMZW5n
dGgodGV4dCk7Ci0gICAgVUJvb2wgaXNBY2Nlc3NpYmxlOwotICAgIGlmICh0ZXh0SW5DaHVua09y
T3V0T2ZSYW5nZSh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkLCBpc0Fj
Y2Vzc2libGUpKQotICAgICAgICByZXR1cm4gaXNBY2Nlc3NpYmxlOwotICAgIG5hdGl2ZUluZGV4
ID0gdGV4dFBpbkluZGV4KG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgpOwotICAgIFRleHRDb250
ZXh0IGN1cnJlbnRDb250ZXh0ID0gdGV4dExhdGluMUdldEN1cnJlbnRDb250ZXh0KHRleHQpOwot
ICAgIFRleHRDb250ZXh0IG5ld0NvbnRleHQgPSB0ZXh0R2V0Q29udGV4dCh0ZXh0LCBuYXRpdmVJ
bmRleCwgZm9yd2FyZCk7Ci0gICAgQVNTRVJUKG5ld0NvbnRleHQgIT0gTm9Db250ZXh0KTsKLSAg
ICBpZiAobmV3Q29udGV4dCA9PSBjdXJyZW50Q29udGV4dCkgewotICAgICAgICBpZiAoY3VycmVu
dENvbnRleHQgPT0gUHJpbWFyeUNvbnRleHQpCi0gICAgICAgICAgICB0ZXh0TGF0aW4xTW92ZUlu
UHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRleHRMYXRpbjFNb3ZlSW5QcmlvckNvbnRleHQo
dGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci0gICAgfSBlbHNlIGlm
IChuZXdDb250ZXh0ID09IFByaW1hcnlDb250ZXh0KQotICAgICAgICB0ZXh0TGF0aW4xU3dpdGNo
VG9QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJk
KTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG5ld0NvbnRleHQgPT0gUHJpb3JDb250ZXh0
KTsKLSAgICAgICAgdGV4dExhdGluMVN3aXRjaFRvUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUlu
ZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAgIH0KLSAgICByZXR1cm4gVFJVRTsKLX0K
LQotc3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHRleHRMYXRpbjFGdW5jcyA9IHsKLSAg
ICBzaXplb2YoVVRleHRGdW5jcyksCi0gICAgMCwgMCwgMCwKLSAgICB0ZXh0Q2xvbmUsCi0gICAg
dGV4dE5hdGl2ZUxlbmd0aCwKLSAgICB0ZXh0TGF0aW4xQWNjZXNzLAotICAgIHRleHRFeHRyYWN0
LAotICAgIDAsIDAsIDAsIDAsCi0gICAgdGV4dENsb3NlLAotICAgIDAsIDAsIDAsCi19OwotCi1z
dGF0aWMgdm9pZCB0ZXh0SW5pdChVVGV4dCogdGV4dCwgY29uc3QgVVRleHRGdW5jcyogZnVuY3Ms
IGNvbnN0IHZvaWQqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JD
b250ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVuZ3RoKQotewotICAgIHRleHQtPnBGdW5jcyA9IGZ1
bmNzOwotICAgIHRleHQtPnByb3ZpZGVyUHJvcGVydGllcyA9IDEgPDwgVVRFWFRfUFJPVklERVJf
U1RBQkxFX0NIVU5LUzsKLSAgICB0ZXh0LT5jb250ZXh0ID0gc3RyaW5nOwotICAgIHRleHQtPnAg
PSBzdHJpbmc7Ci0gICAgdGV4dC0+YSA9IGxlbmd0aDsKLSAgICB0ZXh0LT5xID0gcHJpb3JDb250
ZXh0OwotICAgIHRleHQtPmIgPSBwcmlvckNvbnRleHRMZW5ndGg7Ci19Ci0KLXN0YXRpYyBVVGV4
dCogdGV4dE9wZW5MYXRpbjEoVVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExD
aGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwg
aW50IHByaW9yQ29udGV4dExlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKQotewotICAgIGlmIChV
X0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmICghc3RyaW5nIHx8
IGxlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptYXgoKSkpIHsKLSAgICAgICAgKnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJP
UjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIFVUZXh0KiB0ZXh0ID0gdXRleHRfc2V0
dXAoJnV0V2l0aEJ1ZmZlci0+dGV4dCwgc2l6ZW9mKHV0V2l0aEJ1ZmZlci0+YnVmZmVyKSwgc3Rh
dHVzKTsKLSAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKSB7Ci0gICAgICAgIEFTU0VSVCghdGV4
dCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICB0ZXh0SW5pdCh0ZXh0LCAmdGV4dExh
dGluMUZ1bmNzLCBzdHJpbmcsIGxlbmd0aCwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5n
dGgpOwotICAgIHJldHVybiB0ZXh0OwotfQotCi1zdGF0aWMgaW5saW5lIFRleHRDb250ZXh0IHRl
eHRVVEYxNkdldEN1cnJlbnRDb250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0KQotewotICAgIGlmICgh
dGV4dC0+Y2h1bmtDb250ZW50cykKLSAgICAgICAgcmV0dXJuIE5vQ29udGV4dDsKLSAgICByZXR1
cm4gdGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wID8gUHJpbWFyeUNvbnRleHQgOiBQcmlv
ckNvbnRleHQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRVVEYxNk1vdmVJblByaW1hcnlDb250ZXh0
KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwg
VUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0
LT5wKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA+
PSB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPiB0ZXh0LT5iKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZv
cndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4
IDw9IG5hdGl2ZUxlbmd0aCk7Ci0gICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IHRleHQtPmI7
Ci0gICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxlbmd0aDsKLSAgICBpbnQ2NF90
IGxlbmd0aCA9IHRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0
OwotICAgIC8vIEVuc3VyZSBjaHVuayBsZW5ndGggaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVk
IGxlbmd0aCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCi0gICAgQVNTRVJUKGxlbmd0aCA8IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICB0ZXh0LT5jaHVua0xlbmd0aCA9
IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nh
c3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7Ci0gICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9
IHRleHQtPmNodW5rTGVuZ3RoOwotICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0
ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMgd2Vs
bCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2Ugb3IgY2h1
bmsgbGVuZ3RoLgotICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptYXgoKSk7Ci0gICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGQ6Om1pbihvZmZzZXQgPCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+
KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRV
VEYxNlN3aXRjaFRvUHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5k
ZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCgh
dGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOwot
ICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQt
PnApOwotICAgIHRleHRVVEYxNk1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4
LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0VVRGMTZNb3Zl
SW5QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3Qg
bmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCh0ZXh0LT5jaHVua0Nv
bnRlbnRzID09IHRleHQtPnEpOwotICAgIEFTU0VSVChmb3J3YXJkID8gbmF0aXZlSW5kZXggPCB0
ZXh0LT5iIDogbmF0aXZlSW5kZXggPD0gdGV4dC0+Yik7Ci0gICAgQVNTRVJUX1VOVVNFRChuYXRp
dmVMZW5ndGgsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUlu
ZGV4IDw9IG5hdGl2ZUxlbmd0aCk7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJk
ID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5n
dGgpOwotICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSAwOwotICAgIHRleHQtPmNodW5rTmF0
aXZlTGltaXQgPSB0ZXh0LT5iOwotICAgIHRleHQtPmNodW5rTGVuZ3RoID0gdGV4dC0+YjsKLSAg
ICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7Ci0gICAgaW50
NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAg
Ly8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgb2Zmc2V0
IGV4Y2VlZHMgaW50MzJfdCByYW5nZSBvciBjaHVuayBsZW5ndGguCi0gICAgQVNTRVJUKG9mZnNl
dCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICB0ZXh0LT5jaHVu
a09mZnNldCA9IHN0ZDo6bWluKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQtPmNodW5rTGVu
Z3RoKTsKLX0KLQotc3RhdGljIHZvaWQgdGV4dFVURjE2U3dpdGNoVG9QcmlvckNvbnRleHQoVVRl
eHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9v
bCBmb3J3YXJkKQotewotICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5j
aHVua0NvbnRlbnRzID09IHRleHQtPnApOwotICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0
aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnEpOwotICAgIHRleHRVVEYxNk1vdmVJblByaW9y
Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLX0KLQot
c3RhdGljIFVCb29sIHRleHRVVEYxNkFjY2VzcyhVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJ
bmRleCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBpZiAoIXRleHQtPmNvbnRleHQpCi0gICAgICAg
IHJldHVybiBGQUxTRTsKLSAgICBpbnQ2NF90IG5hdGl2ZUxlbmd0aCA9IHRleHROYXRpdmVMZW5n
dGgodGV4dCk7Ci0gICAgVUJvb2wgaXNBY2Nlc3NpYmxlOwotICAgIGlmICh0ZXh0SW5DaHVua09y
T3V0T2ZSYW5nZSh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkLCBpc0Fj
Y2Vzc2libGUpKQotICAgICAgICByZXR1cm4gaXNBY2Nlc3NpYmxlOwotICAgIG5hdGl2ZUluZGV4
ID0gdGV4dFBpbkluZGV4KG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgpOwotICAgIFRleHRDb250
ZXh0IGN1cnJlbnRDb250ZXh0ID0gdGV4dFVURjE2R2V0Q3VycmVudENvbnRleHQodGV4dCk7Ci0g
ICAgVGV4dENvbnRleHQgbmV3Q29udGV4dCA9IHRleHRHZXRDb250ZXh0KHRleHQsIG5hdGl2ZUlu
ZGV4LCBmb3J3YXJkKTsKLSAgICBBU1NFUlQobmV3Q29udGV4dCAhPSBOb0NvbnRleHQpOwotICAg
IGlmIChuZXdDb250ZXh0ID09IGN1cnJlbnRDb250ZXh0KSB7Ci0gICAgICAgIGlmIChjdXJyZW50
Q29udGV4dCA9PSBQcmltYXJ5Q29udGV4dCkKLSAgICAgICAgICAgIHRleHRVVEYxNk1vdmVJblBy
aW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXh0VVRGMTZNb3ZlSW5QcmlvckNvbnRleHQodGV4
dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci0gICAgfSBlbHNlIGlmIChu
ZXdDb250ZXh0ID09IFByaW1hcnlDb250ZXh0KQotICAgICAgICB0ZXh0VVRGMTZTd2l0Y2hUb1By
aW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwot
ICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobmV3Q29udGV4dCA9PSBQcmlvckNvbnRleHQpOwot
ICAgICAgICB0ZXh0VVRGMTZTd2l0Y2hUb1ByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwg
bmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLSAgICB9Ci0gICAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0
YXRpYyBjb25zdCBzdHJ1Y3QgVVRleHRGdW5jcyB0ZXh0VVRGMTZGdW5jcyA9IHsKLSAgICBzaXpl
b2YoVVRleHRGdW5jcyksCi0gICAgMCwgMCwgMCwKLSAgICB0ZXh0Q2xvbmUsCi0gICAgdGV4dE5h
dGl2ZUxlbmd0aCwKLSAgICB0ZXh0VVRGMTZBY2Nlc3MsCi0gICAgdGV4dEV4dHJhY3QsCi0gICAg
MCwgMCwgMCwgMCwKLSAgICB0ZXh0Q2xvc2UsCi0gICAgMCwgMCwgMCwKLX07Ci0KLXN0YXRpYyBV
VGV4dCogdGV4dE9wZW5VVEYxNihVVGV4dCogdGV4dCwgY29uc3QgVUNoYXIqIHN0cmluZywgdW5z
aWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0
TGVuZ3RoLCBVRXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0gICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVz
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCFzdHJpbmcgfHwgbGVuZ3RoID4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkgewot
ICAgICAgICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOwotICAgICAgICByZXR1
cm4gMDsKLSAgICB9Ci0gICAgdGV4dCA9IHV0ZXh0X3NldHVwKHRleHQsIDAsIHN0YXR1cyk7Ci0g
ICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkgewotICAgICAgICBBU1NFUlQoIXRleHQpOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgdGV4dEluaXQodGV4dCwgJnRleHRVVEYxNkZ1bmNz
LCBzdHJpbmcsIGxlbmd0aCwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5ndGgpOwotICAg
IHJldHVybiB0ZXh0OwotfQotCiBUZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3Io
Y29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCkKIHsKICAgICBzdGF0aWMgYm9vbCBjcmVh
dGVkV29yZEJyZWFrSXRlcmF0b3IgPSBmYWxzZTsKICAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0
b3IqIHN0YXRpY1dvcmRCcmVha0l0ZXJhdG9yOwotICAgIHJldHVybiBzZXRVcEl0ZXJhdG9yKGNy
ZWF0ZWRXb3JkQnJlYWtJdGVyYXRvciwKLSAgICAgICAgc3RhdGljV29yZEJyZWFrSXRlcmF0b3Is
IFVCUktfV09SRCwgc3RyaW5nLCBsZW5ndGgpOworICAgIHJldHVybiBzZXRVcEl0ZXJhdG9yKGNy
ZWF0ZWRXb3JkQnJlYWtJdGVyYXRvciwgc3RhdGljV29yZEJyZWFrSXRlcmF0b3IsIFVCUktfV09S
RCwgc3RyaW5nLCBsZW5ndGgpOwogfQogCiBzdGF0aWMgVVRleHQgZW1wdHlUZXh0ID0gVVRFWFRf
SU5JVElBTElaRVI7CkBAIC00MzYsNyArNzUsNyBAQCBUZXh0QnJlYWtJdGVyYXRvciogYWNxdWly
ZUxpbmVCcmVha0l0ZXJhCiAgICAgdGV4dExvY2FsLnRleHQucEV4dHJhID0gdGV4dExvY2FsLmJ1
ZmZlcjsKIAogICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBV
VGV4dCogdGV4dCA9IHRleHRPcGVuTGF0aW4xKCZ0ZXh0TG9jYWwsIHN0cmluZywgbGVuZ3RoLCBw
cmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCwgJm9wZW5TdGF0dXMpOworICAgIFVUZXh0
KiB0ZXh0ID0gdVRleHRPcGVuTGF0aW4xKCZ0ZXh0TG9jYWwsIHN0cmluZywgbGVuZ3RoLCBwcmlv
ckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCwgJm9wZW5TdGF0dXMpOwogICAgIGlmIChVX0ZB
SUxVUkUob3BlblN0YXR1cykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJ0ZXh0T3BlblVURjE2IGZh
aWxlZCB3aXRoIHN0YXR1cyAlZCIsIG9wZW5TdGF0dXMpOwogICAgICAgICByZXR1cm4gMDsKQEAg
LTQ2Myw3ICsxMDIsNyBAQCBUZXh0QnJlYWtJdGVyYXRvciogYWNxdWlyZUxpbmVCcmVha0l0ZXJh
CiAgICAgVVRleHQgdGV4dExvY2FsID0gVVRFWFRfSU5JVElBTElaRVI7CiAKICAgICBVRXJyb3JD
b2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgVVRleHQqIHRleHQgPSB0ZXh0T3Bl
blVURjE2KCZ0ZXh0TG9jYWwsIHN0cmluZywgbGVuZ3RoLCBwcmlvckNvbnRleHQsIHByaW9yQ29u
dGV4dExlbmd0aCwgJm9wZW5TdGF0dXMpOworICAgIFVUZXh0KiB0ZXh0ID0gdVRleHRPcGVuVVRG
MTYoJnRleHRMb2NhbCwgc3RyaW5nLCBsZW5ndGgsIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0
TGVuZ3RoLCAmb3BlblN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShvcGVuU3RhdHVzKSkgewog
ICAgICAgICBMT0dfRVJST1IoInRleHRPcGVuVVRGMTYgZmFpbGVkIHdpdGggc3RhdHVzICVkIiwg
b3BlblN0YXR1cyk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNTIxLDggKzE2MCw3IEBAIFRleHRC
cmVha0l0ZXJhdG9yKiBzZW50ZW5jZUJyZWFrSXRlcmF0b3IKIHsKICAgICBzdGF0aWMgYm9vbCBj
cmVhdGVkU2VudGVuY2VCcmVha0l0ZXJhdG9yID0gZmFsc2U7CiAgICAgc3RhdGljIFRleHRCcmVh
a0l0ZXJhdG9yKiBzdGF0aWNTZW50ZW5jZUJyZWFrSXRlcmF0b3I7Ci0gICAgcmV0dXJuIHNldFVw
SXRlcmF0b3IoY3JlYXRlZFNlbnRlbmNlQnJlYWtJdGVyYXRvciwKLSAgICAgICAgc3RhdGljU2Vu
dGVuY2VCcmVha0l0ZXJhdG9yLCBVQlJLX1NFTlRFTkNFLCBzdHJpbmcsIGxlbmd0aCk7CisgICAg
cmV0dXJuIHNldFVwSXRlcmF0b3IoY3JlYXRlZFNlbnRlbmNlQnJlYWtJdGVyYXRvciwgc3RhdGlj
U2VudGVuY2VCcmVha0l0ZXJhdG9yLCBVQlJLX1NFTlRFTkNFLCBzdHJpbmcsIGxlbmd0aCk7CiB9
CiAKIGludCB0ZXh0QnJlYWtGaXJzdChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCkBAIC01
NzIsOCArMjEwLDcgQEAgYm9vbCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqIAog
fQogCiAjaWYgIVBMQVRGT1JNKElPUykKLXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0VXBJ
dGVyYXRvcldpdGhSdWxlcyhib29sJiBjcmVhdGVkSXRlcmF0b3IsIFRleHRCcmVha0l0ZXJhdG9y
KiYgaXRlcmF0b3IsCi0gICAgY29uc3QgY2hhciogYnJlYWtSdWxlcywgY29uc3QgVUNoYXIqIHN0
cmluZywgaW50IGxlbmd0aCkKK3N0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0VXBJdGVyYXRv
cldpdGhSdWxlcyhib29sJiBjcmVhdGVkSXRlcmF0b3IsIFRleHRCcmVha0l0ZXJhdG9yKiYgaXRl
cmF0b3IsIGNvbnN0IGNoYXIqIGJyZWFrUnVsZXMsIGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBs
ZW5ndGgpCiB7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiAwOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFBy
b3ZpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXIuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisvLyBSZWxvY2F0ZSBwb2ludGVyIGZyb20gc291cmNlIGludG8gZGVz
dGluYXRpb24gYXMgcmVxdWlyZWQuCitzdGF0aWMgaW5saW5lIHZvaWQgZml4UG9pbnRlcihjb25z
dCBVVGV4dCogc291cmNlLCBVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IHZvaWQqJiBwb2ludGVy
KQoreworICAgIGlmIChwb2ludGVyID49IHNvdXJjZS0+cEV4dHJhICYmIHBvaW50ZXIgPCBzdGF0
aWNfY2FzdDxjaGFyKj4oc291cmNlLT5wRXh0cmEpICsgc291cmNlLT5leHRyYVNpemUpIHsKKyAg
ICAgICAgLy8gUG9pbnRlciByZWZlcmVuY2VzIHNvdXJjZSBleHRyYSBidWZmZXIuCisgICAgICAg
IHBvaW50ZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZGVzdGluYXRpb24tPnBFeHRyYSkgKyAoc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KHBvaW50ZXIpIC0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KHNvdXJjZS0+cEV4dHJhKSk7CisgICAgfSBlbHNlIGlmIChwb2ludGVyID49IHNvdXJjZSAmJiBw
b2ludGVyIDwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlKSArIHNvdXJjZS0+
c2l6ZU9mU3RydWN0KSB7CisgICAgICAgIC8vIFBvaW50ZXIgcmVmZXJlbmNlcyBzb3VyY2UgdGV4
dCBzdHJ1Y3R1cmUsIGJ1dCBub3Qgc291cmNlIGV4dHJhIGJ1ZmZlci4KKyAgICAgICAgcG9pbnRl
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRlc3RpbmF0aW9uKSArIChzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4ocG9pbnRlcikgLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzb3Vy
Y2UpKTsKKyAgICB9Cit9CisKK1VUZXh0KiB1VGV4dENsb25lSW1wbChVVGV4dCogZGVzdGluYXRp
b24sIGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVCb29sIGRlZXAsIFVFcnJvckNvZGUqIHN0YXR1cykK
K3sKKyAgICBBU1NFUlRfVU5VU0VEKGRlZXAsICFkZWVwKTsKKyAgICBpZiAoVV9GQUlMVVJFKCpz
dGF0dXMpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpbnQzMl90IGV4dHJhU2l6ZSA9
IHNvdXJjZS0+ZXh0cmFTaXplOworICAgIGRlc3RpbmF0aW9uID0gdXRleHRfc2V0dXAoZGVzdGlu
YXRpb24sIGV4dHJhU2l6ZSwgc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKQor
ICAgICAgICByZXR1cm4gZGVzdGluYXRpb247CisgICAgdm9pZCogZXh0cmFOZXcgPSBkZXN0aW5h
dGlvbi0+cEV4dHJhOworICAgIGludDMyX3QgZmxhZ3MgPSBkZXN0aW5hdGlvbi0+ZmxhZ3M7Cisg
ICAgaW50IHNpemVUb0NvcHkgPSBzdGQ6Om1pbihzb3VyY2UtPnNpemVPZlN0cnVjdCwgZGVzdGlu
YXRpb24tPnNpemVPZlN0cnVjdCk7CisgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHNp
emVUb0NvcHkpOworICAgIGRlc3RpbmF0aW9uLT5wRXh0cmEgPSBleHRyYU5ldzsKKyAgICBkZXN0
aW5hdGlvbi0+ZmxhZ3MgPSBmbGFnczsKKyAgICBtZW1jcHkoZGVzdGluYXRpb24tPnBFeHRyYSwg
c291cmNlLT5wRXh0cmEsIGV4dHJhU2l6ZSk7CisgICAgZml4UG9pbnRlcihzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBkZXN0aW5hdGlvbi0+Y29udGV4dCk7CisgICAgZml4UG9pbnRlcihzb3VyY2UsIGRl
c3RpbmF0aW9uLCBkZXN0aW5hdGlvbi0+cCk7CisgICAgZml4UG9pbnRlcihzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBkZXN0aW5hdGlvbi0+cSk7CisgICAgQVNTRVJUKCFkZXN0aW5hdGlvbi0+cik7Cisg
ICAgY29uc3Qgdm9pZCogY2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihk
ZXN0aW5hdGlvbi0+Y2h1bmtDb250ZW50cyk7CisgICAgZml4UG9pbnRlcihzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBjaHVua0NvbnRlbnRzKTsKKyAgICBkZXN0aW5hdGlvbi0+Y2h1bmtDb250ZW50cyA9
IHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4oY2h1bmtDb250ZW50cyk7CisgICAgcmV0dXJuIGRl
c3RpbmF0aW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVVGV4
dFByb3ZpZGVyX2gKKyNkZWZpbmUgVVRleHRQcm92aWRlcl9oCisKKyNpbmNsdWRlIDx1bmljb2Rl
L1VUZXh0Lmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2VudW0gY2xhc3MgVVRleHRQcm92aWRlckNvbnRleHQgeworICAgIE5vQ29u
dGV4dCwKKyAgICBQcmlvckNvbnRleHQsCisgICAgUHJpbWFyeUNvbnRleHQKK307CisKK2lubGlu
ZSBVVGV4dFByb3ZpZGVyQ29udGV4dCB1VGV4dFByb3ZpZGVyQ29udGV4dChjb25zdCBVVGV4dCog
dGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBpZiAoIXRl
eHQtPmIgfHwgbmF0aXZlSW5kZXggPiB0ZXh0LT5iKQorICAgICAgICByZXR1cm4gVVRleHRQcm92
aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0OworICAgIGlmIChuYXRpdmVJbmRleCA9PSB0ZXh0
LT5iKQorICAgICAgICByZXR1cm4gZm9yd2FyZCA/IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlt
YXJ5Q29udGV4dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7CisgICAgcmV0
dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Cit9CisKK2lubGluZSB2b2lk
IHVUZXh0SW5pdGlhbGl6ZShVVGV4dCogdGV4dCwgY29uc3QgVVRleHRGdW5jcyogZnVuY3MsIGNv
bnN0IHZvaWQqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250
ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVuZ3RoKQoreworICAgIHRleHQtPnBGdW5jcyA9IGZ1bmNz
OworICAgIHRleHQtPnByb3ZpZGVyUHJvcGVydGllcyA9IDEgPDwgVVRFWFRfUFJPVklERVJfU1RB
QkxFX0NIVU5LUzsKKyAgICB0ZXh0LT5jb250ZXh0ID0gc3RyaW5nOworICAgIHRleHQtPnAgPSBz
dHJpbmc7CisgICAgdGV4dC0+YSA9IGxlbmd0aDsKKyAgICB0ZXh0LT5xID0gcHJpb3JDb250ZXh0
OworICAgIHRleHQtPmIgPSBwcmlvckNvbnRleHRMZW5ndGg7Cit9CisKKy8vIFNoYXJlZCBpbXBs
ZW1lbnRhdGlvbiBmb3IgdGhlIFVUZXh0Q2xvbmUgZnVuY3Rpb24gb24gVVRleHRGdW5jcy4KKwor
VVRleHQqIHVUZXh0Q2xvbmVJbXBsKFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3QgVVRleHQqIHNv
dXJjZSwgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKTsKKworCisvLyBIZWxwZXJzIGZv
ciB0aGUgVVRleHRBY2Nlc3MgZnVuY3Rpb24gb24gVVRleHRGdW5jcy4KKworaW5saW5lIGludDY0
X3QgdVRleHRBY2Nlc3NQaW5JbmRleChpbnQ2NF90JiBpbmRleCwgaW50NjRfdCBsaW1pdCkKK3sK
KyAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICBpbmRleCA9IDA7CisgICAgZWxzZSBpZiAoaW5k
ZXggPiBsaW1pdCkKKyAgICAgICAgaW5kZXggPSBsaW1pdDsKKyAgICByZXR1cm4gaW5kZXg7Cit9
CisKK2lubGluZSBib29sIHVUZXh0QWNjZXNzSW5DaHVua09yT3V0T2ZSYW5nZShVVGV4dCogdGV4
dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndh
cmQsIFVCb29sJiBpc0FjY2Vzc2libGUpCit7CisgICAgaWYgKGZvcndhcmQpIHsKKyAgICAgICAg
aWYgKG5hdGl2ZUluZGV4ID49IHRleHQtPmNodW5rTmF0aXZlU3RhcnQgJiYgbmF0aXZlSW5kZXgg
PCB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0KSB7CisgICAgICAgICAgICBpbnQ2NF90IG9mZnNldCA9
IG5hdGl2ZUluZGV4IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAgICAgICAgIC8vIEVu
c3VyZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBmb3JtZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2Vl
ZHMgaW50MzJfdCByYW5nZS4KKyAgICAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNl
dCA9IG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDA7CisgICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBU
UlVFOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5h
dGl2ZUluZGV4ID49IG5hdGl2ZUxlbmd0aCAmJiB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID09IG5h
dGl2ZUxlbmd0aCkgeworICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSB0ZXh0LT5jaHVu
a0xlbmd0aDsKKyAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IEZBTFNFOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAobmF0aXZl
SW5kZXggPiB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ICYmIG5hdGl2ZUluZGV4IDw9IHRleHQtPmNo
dW5rTmF0aXZlTGltaXQpIHsKKyAgICAgICAgICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5k
ZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OworICAgICAgICAgICAgLy8gRW5zdXJlIGNodW5r
IG9mZnNldCBpcyB3ZWxsIGZvcm1lZCBpZiBjb21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQzMl90
IHJhbmdlLgorICAgICAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1heCgpKTsKKyAgICAgICAgICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gb2Zmc2V0
IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQz
Ml90PihvZmZzZXQpIDogMDsKKyAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IFRSVUU7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAobmF0aXZlSW5kZXgg
PD0gMCAmJiAhdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCkgeworICAgICAgICAgICAgdGV4dC0+Y2h1
bmtPZmZzZXQgPSAwOworICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gRkFMU0U7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVUZXh0UHJvdmlkZXJfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGlu
MS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRl
eHRQcm92aWRlckxhdGluMS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJVVGV4dFByb3ZpZGVyTGF0aW4xLmgiCisKKyNpbmNsdWRlICJVVGV4dFByb3ZpZGVyLmgiCisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0YXRpYyBpbmxpbmUgVVRleHRQcm92aWRlckNvbnRleHQgdGV4dExhdGluMUdldEN1cnJlbnRD
b250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0KQoreworICAgIGlmICghdGV4dC0+Y2h1bmtDb250ZW50
cykKKyAgICAgICAgcmV0dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpOb0NvbnRleHQ7CisgICAg
cmV0dXJuIHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cEV4dHJhID8gVVRleHRQcm92aWRl
ckNvbnRleHQ6OlByaW1hcnlDb250ZXh0IDogVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW9yQ29u
dGV4dDsKK30KKworc3RhdGljIHZvaWQgdGV4dExhdGluMU1vdmVJblByaW1hcnlDb250ZXh0KFVU
ZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJv
b2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5w
RXh0cmEpOworICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAgIEFTU0VSVChuYXRpdmVJbmRleCA+
PSB0ZXh0LT5iICYmIG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoKTsKKyAgICAgICAgdGV4dC0+
Y2h1bmtOYXRpdmVTdGFydCA9IG5hdGl2ZUluZGV4OworICAgICAgICB0ZXh0LT5jaHVua05hdGl2
ZUxpbWl0ID0gbmF0aXZlSW5kZXggKyB0ZXh0LT5leHRyYVNpemUgLyBzaXplb2YoVUNoYXIpOwor
ICAgICAgICBpZiAodGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA+IG5hdGl2ZUxlbmd0aCkKKyAgICAg
ICAgICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVMZW5ndGg7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgQVNTRVJUKG5hdGl2ZUluZGV4ID4gdGV4dC0+YiAmJiBuYXRpdmVJbmRleCA8
PSBuYXRpdmVMZW5ndGgpOworICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gbmF0aXZl
SW5kZXg7CisgICAgICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSBuYXRpdmVJbmRleCAtIHRl
eHQtPmV4dHJhU2l6ZSAvIHNpemVvZihVQ2hhcik7CisgICAgICAgIGlmICh0ZXh0LT5jaHVua05h
dGl2ZVN0YXJ0IDwgdGV4dC0+YikKKyAgICAgICAgICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQg
PSB0ZXh0LT5iOworICAgIH0KKyAgICBpbnQ2NF90IGxlbmd0aCA9IHRleHQtPmNodW5rTmF0aXZl
TGltaXQgLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OworICAgIC8vIEVuc3VyZSBjaHVuayBsZW5n
dGggaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIGxlbmd0aCBleGNlZWRzIGludDMyX3QgcmFu
Z2UuCisgICAgQVNTRVJUKGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1h
eCgpKTsKKyAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7Cisg
ICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOworICAgIHRl
eHQtPmNodW5rT2Zmc2V0ID0gZm9yd2FyZCA/IDAgOiB0ZXh0LT5jaHVua0xlbmd0aDsKKyAgICBT
dHJpbmdJbXBsOjpjb3B5Q2hhcnMoY29uc3RfY2FzdDxVQ2hhcio+KHRleHQtPmNodW5rQ29udGVu
dHMpLCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KHRleHQtPnApICsgKHRleHQtPmNodW5rTmF0
aXZlU3RhcnQgLSB0ZXh0LT5iKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRleHQtPmNodW5rTGVu
Z3RoKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRMYXRpbjFTd2l0Y2hUb1ByaW1hcnlDb250ZXh0
KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwg
VUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQoIXRleHQtPmNodW5rQ29udGVudHMgfHwgdGV4
dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5xKTsKKyAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0g
c3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5wRXh0cmEpOworICAgIHRleHRMYXRpbjFN
b3ZlSW5QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3
YXJkKTsKK30KKworc3RhdGljIHZvaWQgdGV4dExhdGluMU1vdmVJblByaW9yQ29udGV4dChVVGV4
dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29s
IGZvcndhcmQpCit7CisgICAgQVNTRVJUKHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cSk7
CisgICAgQVNTRVJUKGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IHRleHQtPmIgOiBuYXRpdmVJbmRl
eCA8PSB0ZXh0LT5iKTsKKyAgICBBU1NFUlRfVU5VU0VEKG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCA/
IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3Ro
KTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5h
dGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7CisgICAgdGV4dC0+Y2h1
bmtOYXRpdmVTdGFydCA9IDA7CisgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IHRleHQtPmI7
CisgICAgdGV4dC0+Y2h1bmtMZW5ndGggPSB0ZXh0LT5iOworICAgIHRleHQtPm5hdGl2ZUluZGV4
aW5nTGltaXQgPSB0ZXh0LT5jaHVua0xlbmd0aDsKKyAgICBpbnQ2NF90IG9mZnNldCA9IG5hdGl2
ZUluZGV4IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAvLyBFbnN1cmUgY2h1bmsgb2Zm
c2V0IGlzIHdlbGwgZGVmaW5lZCBpZiBjb21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQzMl90IHJh
bmdlIG9yIGNodW5rIGxlbmd0aC4KKyAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWF4KCkpOworICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gc3RkOjptaW4o
b2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2Fz
dDxpbnQzMl90PihvZmZzZXQpIDogMCwgdGV4dC0+Y2h1bmtMZW5ndGgpOworfQorCitzdGF0aWMg
dm9pZCB0ZXh0TGF0aW4xU3dpdGNoVG9QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3Qg
bmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQoreworICAg
IEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRl
eHQtPnBFeHRyYSk7CisgICAgdGV4dC0+Y2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0
IFVDaGFyKj4odGV4dC0+cSk7CisgICAgdGV4dExhdGluMU1vdmVJblByaW9yQ29udGV4dCh0ZXh0
LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKK30KKworLy8gLS0gQmVnaW4g
TGF0aW4tMSBwcm92aWRlciBmdW5jdGlvbnMgLS0KKworc3RhdGljIFVUZXh0KiB1VGV4dExhdGlu
MUNsb25lKFVUZXh0KiwgY29uc3QgVVRleHQqLCBVQm9vbCwgVUVycm9yQ29kZSopOworc3RhdGlj
IGludDY0X3QgdVRleHRMYXRpbjFOYXRpdmVMZW5ndGgoVVRleHQqKTsgCitzdGF0aWMgVUJvb2wg
dVRleHRMYXRpbjFBY2Nlc3MoVVRleHQqLCBpbnQ2NF90LCBVQm9vbCk7IAorc3RhdGljIGludDMy
X3QgdVRleHRMYXRpbjFFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBp
bnQzMl90LCBVRXJyb3JDb2RlKik7IAorc3RhdGljIHZvaWQgdVRleHRMYXRpbjFDbG9zZShVVGV4
dCopOworCitzdGF0aWMgVVRleHQqIHVUZXh0TGF0aW4xQ2xvbmUoVVRleHQqIGRlc3RpbmF0aW9u
LCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpCit7
CisgICAgcmV0dXJuIHVUZXh0Q2xvbmVJbXBsKGRlc3RpbmF0aW9uLCBzb3VyY2UsIGRlZXAsIHN0
YXR1cyk7Cit9CisKK3N0YXRpYyBpbnQ2NF90IHVUZXh0TGF0aW4xTmF0aXZlTGVuZ3RoKFVUZXh0
KiB0ZXh0KQoreworICAgIHJldHVybiB0ZXh0LT5hICsgdGV4dC0+YjsKK30KKworc3RhdGljIFVC
b29sIHVUZXh0TGF0aW4xQWNjZXNzKFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBV
Qm9vbCBmb3J3YXJkKQoreworICAgIGlmICghdGV4dC0+Y29udGV4dCkKKyAgICAgICAgcmV0dXJu
IEZBTFNFOworICAgIGludDY0X3QgbmF0aXZlTGVuZ3RoID0gdVRleHRMYXRpbjFOYXRpdmVMZW5n
dGgodGV4dCk7CisgICAgVUJvb2wgaXNBY2Nlc3NpYmxlOworICAgIGlmICh1VGV4dEFjY2Vzc0lu
Q2h1bmtPck91dE9mUmFuZ2UodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2Fy
ZCwgaXNBY2Nlc3NpYmxlKSkKKyAgICAgICAgcmV0dXJuIGlzQWNjZXNzaWJsZTsKKyAgICBuYXRp
dmVJbmRleCA9IHVUZXh0QWNjZXNzUGluSW5kZXgobmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCk7
CisgICAgVVRleHRQcm92aWRlckNvbnRleHQgY3VycmVudENvbnRleHQgPSB0ZXh0TGF0aW4xR2V0
Q3VycmVudENvbnRleHQodGV4dCk7CisgICAgVVRleHRQcm92aWRlckNvbnRleHQgbmV3Q29udGV4
dCA9IHVUZXh0UHJvdmlkZXJDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBmb3J3YXJkKTsKKyAg
ICBBU1NFUlQobmV3Q29udGV4dCAhPSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250ZXh0KTsK
KyAgICBpZiAobmV3Q29udGV4dCA9PSBjdXJyZW50Q29udGV4dCkgeworICAgICAgICBpZiAoY3Vy
cmVudENvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQorICAg
ICAgICAgICAgdGV4dExhdGluMU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4
LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXh0
TGF0aW4xTW92ZUluUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgs
IGZvcndhcmQpOworICAgIH0gZWxzZSBpZiAobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29u
dGV4dDo6UHJpbWFyeUNvbnRleHQpCisgICAgICAgIHRleHRMYXRpbjFTd2l0Y2hUb1ByaW1hcnlD
b250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgIGVs
c2UgeworICAgICAgICBBU1NFUlQobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6
UHJpb3JDb250ZXh0KTsKKyAgICAgICAgdGV4dExhdGluMVN3aXRjaFRvUHJpb3JDb250ZXh0KHRl
eHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgIH0KKyAgICByZXR1
cm4gVFJVRTsKK30KKworc3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFFeHRyYWN0KFVUZXh0Kiwg
aW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKiBlcnJvckNvZGUp
Cit7CisgICAgLy8gSW4gdGhlIHByZXNlbnQgY29udGV4dCwgdGhpcyB0ZXh0IHByb3ZpZGVyIGlz
IHVzZWQgb25seSB3aXRoIElDVSBmdW5jdGlvbnMKKyAgICAvLyB0aGF0IGRvIG5vdCBwZXJmb3Jt
IGFuIGV4dHJhY3Qgb3BlcmF0aW9uLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICpl
cnJvckNvZGUgPSBVX1VOU1VQUE9SVEVEX0VSUk9SOworICAgIHJldHVybiAwOworfQorCitzdGF0
aWMgdm9pZCB1VGV4dExhdGluMUNsb3NlKFVUZXh0KiB0ZXh0KQoreworICAgIHRleHQtPmNvbnRl
eHQgPSAwOworfQorCisvLyAtLSBFbmQgTGF0aW4tMSBwcm92aWRlciBmdW5jdGlvbnMgLS0KKwor
c3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHRleHRMYXRpbjFGdW5jcyA9IHsKKyAgICBz
aXplb2YoVVRleHRGdW5jcyksCisgICAgMCwgMCwgMCwKKyAgICB1VGV4dExhdGluMUNsb25lLAor
ICAgIHVUZXh0TGF0aW4xTmF0aXZlTGVuZ3RoLAorICAgIHVUZXh0TGF0aW4xQWNjZXNzLAorICAg
IHVUZXh0TGF0aW4xRXh0cmFjdCwKKyAgICAwLCAwLCAwLCAwLAorICAgIHVUZXh0TGF0aW4xQ2xv
c2UsCisgICAgMCwgMCwgMCwKK307CisKK1VUZXh0KiB1VGV4dE9wZW5MYXRpbjEoVVRleHRXaXRo
QnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0
aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29udGV4dExlbmd0aCwgVUVy
cm9yQ29kZSogc3RhdHVzKQoreworICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCisgICAgICAg
IHJldHVybiAwOworICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpIHsKKyAgICAgICAgKnN0
YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorICAgIFVUZXh0KiB0ZXh0ID0gdXRleHRfc2V0dXAoJnV0V2l0aEJ1ZmZlci0+dGV4dCwgc2l6
ZW9mKHV0V2l0aEJ1ZmZlci0+YnVmZmVyKSwgc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKCpz
dGF0dXMpKSB7CisgICAgICAgIEFTU0VSVCghdGV4dCk7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICB1VGV4dEluaXRpYWxpemUodGV4dCwgJnRleHRMYXRpbjFGdW5jcywgc3RyaW5nLCBs
ZW5ndGgsIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoKTsKKyAgICByZXR1cm4gdGV4
dDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJM
YXRpbjEuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBVVGV4dFByb3ZpZGVyTGF0aW4xX2gKKyNkZWZpbmUgVVRleHRQcm92aWRlckxhdGluMV9o
CisKKyNpbmNsdWRlIDx1bmljb2RlL1VUZXh0Lmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5p
Y29kZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IGludCBVVGV4dFdpdGhCdWZm
ZXJJbmxpbmVDYXBhY2l0eSA9IDE2OworCitzdHJ1Y3QgVVRleHRXaXRoQnVmZmVyIHsKKyAgICBV
VGV4dCB0ZXh0OworICAgIFVDaGFyIGJ1ZmZlcltVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0
eV07Cit9OworCitVVGV4dCogdVRleHRPcGVuTGF0aW4xKFVUZXh0V2l0aEJ1ZmZlciogdXRXaXRo
QnVmZmVyLCBjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFy
KiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgsIFVFcnJvckNvZGUqIHN0YXR1
cyk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVUZXh0UHJvdmlkZXJM
YXRpbjFfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92
aWRlclVURjE2LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJVVGV4dFByb3ZpZGVyVVRGMTYuaCIKKworI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXIu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5saW5lIFVUZXh0UHJvdmlkZXJD
b250ZXh0IHRleHRVVEYxNkdldEN1cnJlbnRDb250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0KQorewor
ICAgIGlmICghdGV4dC0+Y2h1bmtDb250ZW50cykKKyAgICAgICAgcmV0dXJuIFVUZXh0UHJvdmlk
ZXJDb250ZXh0OjpOb0NvbnRleHQ7CisgICAgcmV0dXJuIHRleHQtPmNodW5rQ29udGVudHMgPT0g
dGV4dC0+cCA/IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCA6IFVUZXh0UHJv
dmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRVVEYxNk1v
dmVJblByaW1hcnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2
NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQodGV4dC0+Y2h1
bmtDb250ZW50cyA9PSB0ZXh0LT5wKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndh
cmQgPyBuYXRpdmVJbmRleCA+PSB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPiB0ZXh0LT5iKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxl
bmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7CisgICAgdGV4dC0+Y2h1bmtOYXRp
dmVTdGFydCA9IHRleHQtPmI7CisgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxl
bmd0aDsKKyAgICBpbnQ2NF90IGxlbmd0aCA9IHRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB0ZXh0
LT5jaHVua05hdGl2ZVN0YXJ0OworICAgIC8vIEVuc3VyZSBjaHVuayBsZW5ndGggaXMgd2VsbCBk
ZWZpbmVkIGlmIGNvbXB1dGVkIGxlbmd0aCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCisgICAgQVNT
RVJUKGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKKyAgICB0
ZXh0LT5jaHVua0xlbmd0aCA9IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7CisgICAgdGV4dC0+bmF0
aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOworICAgIGludDY0X3Qgb2Zmc2V0
ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OworICAgIC8vIEVuc3VyZSBj
aHVuayBvZmZzZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGlu
dDMyX3QgcmFuZ2Ugb3IgY2h1bmsgbGVuZ3RoLgorICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBz
dGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0
YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Cit9CisK
K3N0YXRpYyB2b2lkIHRleHRVVEYxNlN3aXRjaFRvUHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQs
IGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJk
KQoreworICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRl
bnRzID09IHRleHQtPnEpOworICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxj
b25zdCBVQ2hhcio+KHRleHQtPnApOworICAgIHRleHRVVEYxNk1vdmVJblByaW1hcnlDb250ZXh0
KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworfQorCitzdGF0aWMg
dm9pZCB0ZXh0VVRGMTZNb3ZlSW5QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0
aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQoreworICAgIEFT
U0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOworICAgIEFTU0VSVChmb3J3YXJk
ID8gbmF0aXZlSW5kZXggPCB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPD0gdGV4dC0+Yik7CisgICAg
QVNTRVJUX1VOVVNFRChuYXRpdmVMZW5ndGgsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2
ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7CisgICAgQVNTRVJUX1VOVVNF
RChmb3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJ
bmRleCA8PSBuYXRpdmVMZW5ndGgpOworICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSAwOwor
ICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSB0ZXh0LT5iOworICAgIHRleHQtPmNodW5rTGVu
Z3RoID0gdGV4dC0+YjsKKyAgICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1
bmtMZW5ndGg7CisgICAgaW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5r
TmF0aXZlU3RhcnQ7CisgICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGRlZmluZWQg
aWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZSBvciBjaHVuayBsZW5ndGgu
CisgICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgp
KTsKKyAgICB0ZXh0LT5jaHVua09mZnNldCA9IHN0ZDo6bWluKG9mZnNldCA8IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6
IDAsIHRleHQtPmNodW5rTGVuZ3RoKTsKK30KKworc3RhdGljIHZvaWQgdGV4dFVURjE2U3dpdGNo
VG9QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3Qg
bmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQoreworICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtD
b250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnApOworICAgIHRleHQtPmNo
dW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnEpOworICAgIHRl
eHRVVEYxNk1vdmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3Ro
LCBmb3J3YXJkKTsKK30KKworLy8gLS0gQmVnaW4gVVRGLTE2IHByb3ZpZGVyIGZ1bmN0aW9ucyAt
LQorCitzdGF0aWMgVVRleHQqIHVUZXh0VVRGMTZDbG9uZShVVGV4dCosIGNvbnN0IFVUZXh0Kiwg
VUJvb2wsIFVFcnJvckNvZGUqKTsKK3N0YXRpYyBpbnQ2NF90IHVUZXh0VVRGMTZOYXRpdmVMZW5n
dGgoVVRleHQqKTsKK3N0YXRpYyBVQm9vbCB1VGV4dFVURjE2QWNjZXNzKFVUZXh0KiwgaW50NjRf
dCwgVUJvb2wpOworc3RhdGljIGludDMyX3QgdVRleHRVVEYxNkV4dHJhY3QoVVRleHQqLCBpbnQ2
NF90LCBpbnQ2NF90LCBVQ2hhciosIGludDMyX3QsIFVFcnJvckNvZGUqKTsKK3N0YXRpYyB2b2lk
IHVUZXh0VVRGMTZDbG9zZShVVGV4dCopOworCitzdGF0aWMgVVRleHQqIHVUZXh0VVRGMTZDbG9u
ZShVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVCb29sIGRlZXAsIFVF
cnJvckNvZGUqIHN0YXR1cykKK3sKKyAgICByZXR1cm4gdVRleHRDbG9uZUltcGwoZGVzdGluYXRp
b24sIHNvdXJjZSwgZGVlcCwgc3RhdHVzKTsKK30KKworc3RhdGljIGlubGluZSBpbnQ2NF90IHVU
ZXh0VVRGMTZOYXRpdmVMZW5ndGgoVVRleHQqIHRleHQpCit7CisgICAgcmV0dXJuIHRleHQtPmEg
KyB0ZXh0LT5iOworfQorCitzdGF0aWMgVUJvb2wgdVRleHRVVEYxNkFjY2VzcyhVVGV4dCogdGV4
dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBpZiAoIXRleHQt
PmNvbnRleHQpCisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICBpbnQ2NF90IG5hdGl2ZUxlbmd0
aCA9IHVUZXh0VVRGMTZOYXRpdmVMZW5ndGgodGV4dCk7CisgICAgVUJvb2wgaXNBY2Nlc3NpYmxl
OworICAgIGlmICh1VGV4dEFjY2Vzc0luQ2h1bmtPck91dE9mUmFuZ2UodGV4dCwgbmF0aXZlSW5k
ZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCwgaXNBY2Nlc3NpYmxlKSkKKyAgICAgICAgcmV0dXJu
IGlzQWNjZXNzaWJsZTsKKyAgICBuYXRpdmVJbmRleCA9IHVUZXh0QWNjZXNzUGluSW5kZXgobmF0
aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCk7CisgICAgVVRleHRQcm92aWRlckNvbnRleHQgY3VycmVu
dENvbnRleHQgPSB0ZXh0VVRGMTZHZXRDdXJyZW50Q29udGV4dCh0ZXh0KTsKKyAgICBVVGV4dFBy
b3ZpZGVyQ29udGV4dCBuZXdDb250ZXh0ID0gdVRleHRQcm92aWRlckNvbnRleHQodGV4dCwgbmF0
aXZlSW5kZXgsIGZvcndhcmQpOworICAgIEFTU0VSVChuZXdDb250ZXh0ICE9IFVUZXh0UHJvdmlk
ZXJDb250ZXh0OjpOb0NvbnRleHQpOworICAgIGlmIChuZXdDb250ZXh0ID09IGN1cnJlbnRDb250
ZXh0KSB7CisgICAgICAgIGlmIChjdXJyZW50Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4
dDo6UHJpbWFyeUNvbnRleHQpCisgICAgICAgICAgICB0ZXh0VVRGMTZNb3ZlSW5QcmltYXJ5Q29u
dGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgdGV4dFVURjE2TW92ZUluUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2
ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgIH0gZWxzZSBpZiAobmV3Q29udGV4
dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQpCisgICAgICAgIHRleHRV
VEYxNlN3aXRjaFRvUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0
aCwgZm9yd2FyZCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChuZXdDb250ZXh0ID09IFVU
ZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQpOworICAgICAgICB0ZXh0VVRGMTZTd2l0
Y2hUb1ByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJk
KTsKKyAgICB9CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBpbnQzMl90IHVUZXh0VVRG
MTZFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJy
b3JDb2RlKiBlcnJvckNvZGUpCit7CisgICAgLy8gSW4gdGhlIHByZXNlbnQgY29udGV4dCwgdGhp
cyB0ZXh0IHByb3ZpZGVyIGlzIHVzZWQgb25seSB3aXRoIElDVSBmdW5jdGlvbnMKKyAgICAvLyB0
aGF0IGRvIG5vdCBwZXJmb3JtIGFuIGV4dHJhY3Qgb3BlcmF0aW9uLgorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICplcnJvckNvZGUgPSBVX1VOU1VQUE9SVEVEX0VSUk9SOworICAgIHJl
dHVybiAwOworfQorCitzdGF0aWMgdm9pZCB1VGV4dFVURjE2Q2xvc2UoVVRleHQqIHRleHQpCit7
CisgICAgdGV4dC0+Y29udGV4dCA9IDA7Cit9CisKKy8vIC0tIEVuZCBVVEYtMTYgcHJvdmlkZXIg
ZnVuY3Rpb25zIC0tCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgVVRleHRGdW5jcyB0ZXh0VVRGMTZG
dW5jcyA9IHsKKyAgICBzaXplb2YoVVRleHRGdW5jcyksCisgICAgMCwgMCwgMCwKKyAgICB1VGV4
dFVURjE2Q2xvbmUsCisgICAgdVRleHRVVEYxNk5hdGl2ZUxlbmd0aCwKKyAgICB1VGV4dFVURjE2
QWNjZXNzLAorICAgIHVUZXh0VVRGMTZFeHRyYWN0LAorICAgIDAsIDAsIDAsIDAsCisgICAgdVRl
eHRVVEYxNkNsb3NlLAorICAgIDAsIDAsIDAsCit9OworCitVVGV4dCogdVRleHRPcGVuVVRGMTYo
VVRleHQqIHRleHQsIGNvbnN0IFVDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3Qg
VUNoYXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29udGV4dExlbmd0aCwgVUVycm9yQ29kZSog
c3RhdHVzKQoreworICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCisgICAgICAgIHJldHVybiAw
OworICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpIHsKKyAgICAgICAgKnN0YXR1cyA9IFVf
SUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHRl
eHQgPSB1dGV4dF9zZXR1cCh0ZXh0LCAwLCBzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoKnN0
YXR1cykpIHsKKyAgICAgICAgQVNTRVJUKCF0ZXh0KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorICAgIHVUZXh0SW5pdGlhbGl6ZSh0ZXh0LCAmdGV4dFVURjE2RnVuY3MsIHN0cmluZywgbGVu
Z3RoLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7CisgICAgcmV0dXJuIHRleHQ7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
VVRleHRQcm92aWRlclVURjE2X2gKKyNkZWZpbmUgVVRleHRQcm92aWRlclVURjE2X2gKKworI2lu
Y2x1ZGUgPHVuaWNvZGUvVVRleHQuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVVRleHQqIHVUZXh0T3BlblVURjE2KFVUZXh0Kiwg
Y29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQs
IGludCBwcmlvckNvbnRleHRMZW5ndGgsIFVFcnJvckNvZGUqKTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gVVRleHRQcm92aWRlclVURjE2X2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220956</attachid>
            <date>2014-01-11 21:28:21 -0800</date>
            <delta_ts>2014-01-11 21:54:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126834-20140111212821.patch</filename>
            <type>text/plain</type>
            <size>70665</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTc5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE0LTAxLTExICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3BsaXQgSUNVIFVUZXh0IHByb3ZpZGVy
cyBvdXQgaW50byB0aGVpciBvd24gZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vdmVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBvdXIgY3VzdG9t
IFVUZXh0IHByb3ZpZGVycyBvdXQgaW50bworICAgICAgICB0aGVpciBvd24gZmlsZXMuCisgICAg
ICAgIC0gVVRleHRQcm92aWRlckxhdGluMS5oL2NwcCBjb250YWlucyB0aGUgTGF0aW4tMSBwcm92
aWRlci4KKyAgICAgICAgLSBVVGV4dFByb3ZpZGVyVVRGMTYuaC9jcHAgY29udGFpbnMgdGhlIFVU
Ri0xNiBwcm92aWRlci4KKyAgICAgICAgLSBVVGV4dFByb3ZpZGVyLmgvY3BwIGNvbnRhaW5zIGNv
ZGUgY29tbW9uIHRvIGFsbCB0aGUgcHJvdmlkZXJzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybUdU
Sy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZUNvbW1vbi5wcm9wczoK
KyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9UZXh0QWxsSW5PbmUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3JJQ1UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0VXBJdGVyYXRvcik6
CisgICAgICAgIChXZWJDb3JlOjp3b3JkQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjphY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2VudGVuY2VC
cmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFVwSXRlcmF0b3JXaXRoUnVsZXMp
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvaWN1OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpm
aXhQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0Q2xvbmVJbXBsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6dVRleHRQcm92aWRlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6dVRleHRJbml0
aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0QWNjZXNzUGluSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6dVRleHRBY2Nlc3NJbkNodW5rT3JPdXRPZlJhbmdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuaDogQWRkZWQuCisK
IDIwMTQtMDEtMTEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbaU9TXSBGaXggYnVpbGQgb2YgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWdpc3RlckFsbFZp
ZXdwb3J0Q29uc3RyYWluZWRMYXllcnMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDE2MTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw2ICs3Nyw3IEBAIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAg
ICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yayIKICAgICAiJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vc3FsIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0IgorICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0L2ljdSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGx1
Z2lucyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcmVuZGVyaW5nIgogICAgICIke1dFQkNPUkVfRElS
fS9yZW5kZXJpbmcvbGluZSIKQEAgLTI4MDEsNiArMjgwMiw5IEBAIGVuZGlmICgpCiAKIGlmIChX
VEZfVVNFX0lDVV9VTklDT0RFKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAg
ICAgICBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmNwcAorICAgICAgICBwbGF0Zm9y
bS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcAorICAgICAgICBwbGF0Zm9ybS90ZXh0
L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwCiAgICAgICAgIHBsYXRmb3JtL3RleHQvVGV4dEJy
ZWFrSXRlcmF0b3JJQ1UuY3BwCiAgICAgICAgIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNw
cAogICAgICAgICBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcApJbmRl
eDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNjE3OTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01OTczLDYg
KzU5NzMsMTIgQEAgcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9lbmNoYW50L1RleHRDaGVja2VyRW5jaGFudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuaCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNwcCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvQmlkaVJlc29sdmVyLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21h
a2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UJKHJldmlz
aW9uIDE2MTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC0yMCw2ICsyMCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJF
Q1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL2d0ayIKICAgICAi
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9zb3VwIgogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS90ZXh0L2d0ayIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vdGV4dC9p
Y3UiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsdWdpbnMvZ3RrIgogKQogCkBAIC0xMjgsNiArMTI5
LDkgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9zb3VwL1No
YXJlZEJ1ZmZlclNvdXAuY3BwCiAKKyAgICBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVy
LmNwcAorICAgIHBsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCisgICAg
cGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNwcAogICAgIHBsYXRmb3JtL3Rl
eHQvTG9jYWxlSUNVLmNwcAogICAgIHBsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJQ1Uu
Y3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCkBAIC0yNTUsNiArMjU5LDkg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZVBsYXRmb3JtR1RLX1NPVVJDRVMKIAogICAgIHBsYXRmb3Jt
L3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAKIAorICAgIHBsYXRmb3JtL3RleHQvaWN1L1VUZXh0
UHJvdmlkZXIuY3BwCisgICAgcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5j
cHAKKyAgICBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwCiAgICAgcGxh
dGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVy
YXRvcklDVS5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlQ29tbW9uLnByb3BzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlQ29tbW9uLnByb3Bz
CShyZXZpc2lvbiAxNjE3OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZUNvbW1vbi5wcm9wcwkod29ya2luZyBjb3B5KQpAQCAtNyw3ICs3LDcgQEAKICAgPC9Qcm9w
ZXJ0eUdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgotICAg
ICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVj
dERpcikuLlxNb2R1bGVzXG1lZGlhY29udHJvbHM7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcbWVk
aWFzdHJlYW07JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcZmlsZXN5c3RlbTskKFByb2plY3REaXIp
Li5cTW9kdWxlc1xnZW9sb2NhdGlvbjskKFByb2plY3REaXIpLi5cTW9kdWxlc1xpbmRleGVkZGI7
JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcbWVkaWFzb3VyY2U7JChQcm9qZWN0RGlyKS4uXE1vZHVs
ZXNcbmF2aWdhdG9yY29udGVudHV0aWxzOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXHBsdWdpbnM7
JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcc3BlZWNoOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXHBy
b3hpbWl0eTskKFByb2plY3REaXIpLi5cTW9kdWxlc1xxdW90YTskKFByb2plY3REaXIpLi5cTW9k
dWxlc1xub3RpZmljYXRpb25zOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXHdlYmRhdGFiYXNlOyQo
UHJvamVjdERpcikuLlxNb2R1bGVzXHdlYnNvY2tldHM7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2li
aWxpdHk7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlcd2luOyQoUHJvamVjdERpcikuLlxi
cmlkZ2U7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVxjOyQoUHJvamVjdERpcikuLlxicmlkZ2VcanNj
OyQoUHJvamVjdERpcikuLlxjc3M7JChQcm9qZWN0RGlyKS4uXGVkaXRpbmc7JChQcm9qZWN0RGly
KS4uXGZpbGVhcGk7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZzskKFByb2plY3REaXIpLi5ccmVu
ZGVyaW5nXGxpbmU7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xtYXRobWw7JChQcm9qZWN0RGly
KS4uXHJlbmRlcmluZ1xzaGFwZXM7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHlsZTskKFBy
b2plY3REaXIpLi5ccmVuZGVyaW5nXHN2ZzskKFByb2plY3REaXIpLi5cYmluZGluZ3M7JChQcm9q
ZWN0RGlyKS4uXGJpbmRpbmdzXGdlbmVyaWM7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzOyQo
UHJvamVjdERpcikuLlxiaW5kaW5nc1xqc1xzcGVjaWFsaXphdGlvbjskKFByb2plY3REaXIpLi5c
ZG9tOyQoUHJvamVjdERpcikuLlxkb21cZGVmYXVsdDskKFByb2plY3REaXIpLi5caGlzdG9yeTsk
KFByb2plY3REaXIpLi5caHRtbDskKFByb2plY3REaXIpLi5caHRtbFxjYW52YXM7JChQcm9qZWN0
RGlyKS4uXGh0bWxcZm9ybXM7JChQcm9qZWN0RGlyKS4uXGh0bWxccGFyc2VyOyQoUHJvamVjdERp
cikuLlxodG1sXHNoYWRvdzskKFByb2plY3REaXIpLi5caHRtbFx0cmFjazskKFByb2plY3REaXIp
Li5caW5zcGVjdG9yOyQoUHJvamVjdERpcikuLlxsb2FkZXI7JChQcm9qZWN0RGlyKS4uXGxvYWRl
clxhcHBjYWNoZTskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmU7JChQcm9qZWN0RGlyKS4u
XGxvYWRlclxhcmNoaXZlXGNmOyQoUHJvamVjdERpcikuLlxsb2FkZXJcY2FjaGU7JChQcm9qZWN0
RGlyKS4uXGxvYWRlclxpY29uOyQoUHJvamVjdERpcikuLlxtYXRobWw7JChQcm9qZWN0RGlyKS4u
XHBhZ2U7JChQcm9qZWN0RGlyKS4uXHBhZ2VcYW5pbWF0aW9uOyQoUHJvamVjdERpcikuLlxwYWdl
XHNjcm9sbGluZzskKFByb2plY3REaXIpLi5ccGFnZVx3aW47JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb247JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXGF1ZGlvOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxtb2NrOyQoUHJvamVjdERpciku
LlxwbGF0Zm9ybVxzcWw7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdpbjskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cbmV0d29yazskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1x3aW47
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNmOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFw
aGljczskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2E7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXGdyYXBoaWNzXGNwdVxhcm1cZmlsdGVyczskKFByb2plY3REaXIpLi5ccGxhdGZv
cm1cZ3JhcGhpY3NcZmlsdGVyczskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmls
dGVyc1xhcm07JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlOyQoUHJv
amVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x0cmFuc2Zvcm1zOyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVx0ZXh0OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0XHRyYW5zY29kZXI7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpbjskKFByb2plY3REaXIpLi5ceG1sOyQo
UHJvamVjdERpcikuLlx4bWxccGFyc2VyOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVxXZWJDb3JlXERlcml2ZWRTb3VyY2VzOyQoUHJvamVjdERpciku
LlxwbHVnaW5zOyQoUHJvamVjdERpcikuLlxwbHVnaW5zXHdpbjskKFByb2plY3REaXIpLi5cc3Zn
XGFuaW1hdGlvbjskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzOyQoUHJvamVjdERpcikuLlxz
dmdccHJvcGVydGllczskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzXGZpbHRlcnM7JChQcm9q
ZWN0RGlyKS4uXHN2ZzskKFByb2plY3REaXIpLi5cdGVzdGluZzskKFByb2plY3REaXIpLi5cY3J5
cHRvOyQoUHJvamVjdERpcikuLlxjcnlwdG9ca2V5czskKFByb2plY3REaXIpLi5cd21sOyQoUHJv
amVjdERpcikuLlxzdG9yYWdlOyQoUHJvamVjdERpcikuLlxzdHlsZTskKFByb2plY3REaXIpLi5c
d2Vic29ja2V0czskKFByb2plY3REaXIpLi5cd29ya2VyczskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcaW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlOyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JChQcm9qZWN0RGlyKS4u
XEZvcndhcmRpbmdIZWFkZXJzOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xncHU7
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGVnbDskKFByb2plY3REaXIpLi5ccGxh
dGZvcm1cZ3JhcGhpY3Ncc3VyZmFjZXM7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNz
XHN1cmZhY2VzXGVnbDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbmdsOyQo
V2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVccHJp
dmF0ZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTsk
KFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVcc3FsaXRlOyQoV2ViS2l0X0xpYnJhcmllcylcaW5j
bHVkZVxKYXZhU2NyaXB0Q29yZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVcemxpYjslKEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQo
UHJvamVjdERpcikuLlxNb2R1bGVzXG1lZGlhY29udHJvbHM7JChQcm9qZWN0RGlyKS4uXE1vZHVs
ZXNcbWVkaWFzdHJlYW07JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcZmlsZXN5c3RlbTskKFByb2pl
Y3REaXIpLi5cTW9kdWxlc1xnZW9sb2NhdGlvbjskKFByb2plY3REaXIpLi5cTW9kdWxlc1xpbmRl
eGVkZGI7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcbWVkaWFzb3VyY2U7JChQcm9qZWN0RGlyKS4u
XE1vZHVsZXNcbmF2aWdhdG9yY29udGVudHV0aWxzOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXHBs
dWdpbnM7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcc3BlZWNoOyQoUHJvamVjdERpcikuLlxNb2R1
bGVzXHByb3hpbWl0eTskKFByb2plY3REaXIpLi5cTW9kdWxlc1xxdW90YTskKFByb2plY3REaXIp
Li5cTW9kdWxlc1xub3RpZmljYXRpb25zOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXHdlYmRhdGFi
YXNlOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXHdlYnNvY2tldHM7JChQcm9qZWN0RGlyKS4uXGFj
Y2Vzc2liaWxpdHk7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlcd2luOyQoUHJvamVjdERp
cikuLlxicmlkZ2U7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVxjOyQoUHJvamVjdERpcikuLlxicmlk
Z2VcanNjOyQoUHJvamVjdERpcikuLlxjc3M7JChQcm9qZWN0RGlyKS4uXGVkaXRpbmc7JChQcm9q
ZWN0RGlyKS4uXGZpbGVhcGk7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZzskKFByb2plY3REaXIp
Li5ccmVuZGVyaW5nXGxpbmU7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xtYXRobWw7JChQcm9q
ZWN0RGlyKS4uXHJlbmRlcmluZ1xzaGFwZXM7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHls
ZTskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXHN2ZzskKFByb2plY3REaXIpLi5cYmluZGluZ3M7
JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGdlbmVyaWM7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdz
XGpzOyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xqc1xzcGVjaWFsaXphdGlvbjskKFByb2plY3RE
aXIpLi5cZG9tOyQoUHJvamVjdERpcikuLlxkb21cZGVmYXVsdDskKFByb2plY3REaXIpLi5caGlz
dG9yeTskKFByb2plY3REaXIpLi5caHRtbDskKFByb2plY3REaXIpLi5caHRtbFxjYW52YXM7JChQ
cm9qZWN0RGlyKS4uXGh0bWxcZm9ybXM7JChQcm9qZWN0RGlyKS4uXGh0bWxccGFyc2VyOyQoUHJv
amVjdERpcikuLlxodG1sXHNoYWRvdzskKFByb2plY3REaXIpLi5caHRtbFx0cmFjazskKFByb2pl
Y3REaXIpLi5caW5zcGVjdG9yOyQoUHJvamVjdERpcikuLlxsb2FkZXI7JChQcm9qZWN0RGlyKS4u
XGxvYWRlclxhcHBjYWNoZTskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmU7JChQcm9qZWN0
RGlyKS4uXGxvYWRlclxhcmNoaXZlXGNmOyQoUHJvamVjdERpcikuLlxsb2FkZXJcY2FjaGU7JChQ
cm9qZWN0RGlyKS4uXGxvYWRlclxpY29uOyQoUHJvamVjdERpcikuLlxtYXRobWw7JChQcm9qZWN0
RGlyKS4uXHBhZ2U7JChQcm9qZWN0RGlyKS4uXHBhZ2VcYW5pbWF0aW9uOyQoUHJvamVjdERpciku
LlxwYWdlXHNjcm9sbGluZzskKFByb2plY3REaXIpLi5ccGFnZVx3aW47JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb247JChQcm9qZWN0RGly
KS4uXHBsYXRmb3JtXGF1ZGlvOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxtb2NrOyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxzcWw7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdpbjskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cbmV0d29yazskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29y
a1x3aW47JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNmOyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bVxncmFwaGljczskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2E7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGNwdVxhcm1cZmlsdGVyczskKFByb2plY3REaXIpLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyczskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcZmlsdGVyc1xhcm07JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBl
OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x0cmFuc2Zvcm1zOyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVx0ZXh0OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0XGljdTskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cdGV4dFx0cmFuc2NvZGVyOyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxncmFwaGljc1x3aW47JChQcm9qZWN0RGlyKS4uXHhtbDskKFByb2plY3REaXIpLi5ceG1s
XHBhcnNlcjskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcV2ViQ29yZVxEZXJpdmVkU291cmNlczskKFByb2plY3REaXIpLi5ccGx1Z2luczskKFByb2pl
Y3REaXIpLi5ccGx1Z2luc1x3aW47JChQcm9qZWN0RGlyKS4uXHN2Z1xhbmltYXRpb247JChQcm9q
ZWN0RGlyKS4uXHN2Z1xncmFwaGljczskKFByb2plY3REaXIpLi5cc3ZnXHByb3BlcnRpZXM7JChQ
cm9qZWN0RGlyKS4uXHN2Z1xncmFwaGljc1xmaWx0ZXJzOyQoUHJvamVjdERpcikuLlxzdmc7JChQ
cm9qZWN0RGlyKS4uXHRlc3Rpbmc7JChQcm9qZWN0RGlyKS4uXGNyeXB0bzskKFByb2plY3REaXIp
Li5cY3J5cHRvXGtleXM7JChQcm9qZWN0RGlyKS4uXHdtbDskKFByb2plY3REaXIpLi5cc3RvcmFn
ZTskKFByb2plY3REaXIpLi5cc3R5bGU7JChQcm9qZWN0RGlyKS4uXHdlYnNvY2tldHM7JChQcm9q
ZWN0RGlyKS4uXHdvcmtlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGU7JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVk
ZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyQoUHJvamVjdERpcikuLlxGb3J3YXJkaW5nSGVhZGVy
czskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZ3B1OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVxncmFwaGljc1xlZ2w7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHN1
cmZhY2VzOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xzdXJmYWNlc1xlZ2w7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW5nbDskKFdlYktpdF9MaWJyYXJpZXMp
XGluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7JChXZWJLaXRfTGli
cmFyaWVzKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JChXZWJLaXRfTGlicmFyaWVz
KVxpbmNsdWRlXHNxbGl0ZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVcSmF2YVNjcmlwdENv
cmU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz5ESVNBQkxFXzNEX1JFTkRFUklORztXRUJDT1JFX0NPTlRFWFRfTUVO
VVM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgog
ICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CiAgICAgICA8
UHJlY29tcGlsZWRIZWFkZXJGaWxlPldlYkNvcmVQcmVmaXguaDwvUHJlY29tcGlsZWRIZWFkZXJG
aWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL2NvcHlGb3J3YXJkaW5n
SGVhZGVycy5jbWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQJKHJldmlzaW9uIDE2MTc5NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kCSh3b3JraW5n
IGNvcHkpCkBAIC01OCw2ICs1OCw3IEBAIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0
Zm9ybVxncmEKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVxncmFwaGljc1xv
cGVudHlwZVwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4
Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cbW9ja1wqLmgiICIlQ09ORklHVVJB
VElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIl
Li5ccGxhdGZvcm1cdGV4dFwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdl
YkNvcmUiCit4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cdGV4dFxpY3VcKi5o
IiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2Qg
IiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXHRleHRcdHJhbnNjb2RlclwqLmgiICIlQ09ORklHVVJB
VElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIl
Li5ccGxhdGZvcm1cd2luXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2Vi
Q29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVxuZXR3b3JrXCouaCIg
IiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDE2MTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjI5Miw2ICsyMjkyLDEyIEBACiAJCTdDNTIyRDRCMTVC
NDc3RTgwMDlCN0M5NSAvKiBJbnNwZWN0b3JPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTIyRDQ5MTVCNDc3RTgwMDlCN0M5NSAvKiBJ
bnNwZWN0b3JPdmVybGF5LmNwcCAqLzsgfTsKIAkJN0M1MzQzRkMxN0I3NEI2MzAwNDIzMkYwIC8q
IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUzNDNGQTE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmNwcCAqLzsgfTsKIAkJN0M1MzQzRkQxN0I3NEI2MzAwNDIzMkYwIC8q
IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M1MzQzRkIxN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5oICovOyB9OworCQk3Qzc0RDQzMzE4ODIzQTkzMDBFNUVENTcgLyogVVRl
eHRQcm92aWRlckxhdGluMS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3Qzc0RDQzMTE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQcm92aWRlckxhdGlu
MS5jcHAgKi87IH07CisJCTdDNzRENDM0MTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVy
TGF0aW4xLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Qzc0RDQzMjE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQcm92aWRlckxhdGluMS5oICovOyB9Owor
CQk3Qzc0RDQzNzE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc0RDQzNTE4ODIzQjE5MDBF
NUVENTcgLyogVVRleHRQcm92aWRlci5jcHAgKi87IH07CisJCTdDNzRENDM4MTg4MjNCMTkwMEU1
RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Qzc0RDQzNjE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5o
ICovOyB9OworCQk3Qzc0RDQzQjE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92aWRlclVURjE2
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRE
NDM5MTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwICovOyB9OworCQk3
Qzc0RDQzQzE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92aWRlclVURjE2LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc0RDQzQTE4ODI0MDA0MDBF
NUVENTcgLyogVVRleHRQcm92aWRlclVURjE2LmggKi87IH07CiAJCTdDQzdFM0Q3MTcyMDhDMEYw
MDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0IGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0M3RTNENjE3MjA4QzBGMDAzQzUyNzcgLyogSURO
U2NyaXB0V2hpdGVMaXN0LnR4dCAqLzsgfTsKIAkJN0NFNkNCRkIxODdGMzcwNzAwRDQ2QkY1IC8q
IEZvcm1hdENvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0NFNkNCRkExODdGMzcwNzAwRDQ2QkY1IC8qIEZvcm1hdENvbnZlcnRlci5oICov
OyB9OwogCQk3Q0U2Q0JGRDE4N0YzOTQ5MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTZDQkZDMTg3
RjM5NDkwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuY3BwICovOyB9OwpAQCAtOTI2Nyw2ICs5
MjczLDEyIEBACiAJCTdDNjEzNkY3MTcxMEMzNTIwMEZGNEE1NyAvKiBJbkZpbGVzQ29tcGlsZXIu
cG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnNjcmlwdC5wZXJsOyBuYW1lID0gSW5GaWxlc0NvbXBpbGVyLnBtOyBwYXRoID0gc2NyaXB0cy9J
bkZpbGVzQ29tcGlsZXIucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNjEzNkY4
MTcxMEMzNTIwMEZGNEE1NyAvKiBJbkZpbGVzUGFyc2VyLnBtICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IElu
RmlsZXNQYXJzZXIucG07IHBhdGggPSBzY3JpcHRzL0luRmlsZXNQYXJzZXIucG07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNjEzNkY5MTcxMEMzNTIwMEZGNEE1NyAvKiBTdGF0aWNT
dHJpbmcucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gU3RhdGljU3RyaW5nLnBtOyBwYXRoID0gc2NyaXB0
cy9TdGF0aWNTdHJpbmcucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNzRENDMx
MTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3Qzc0RDQzMjE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQ
cm92aWRlckxhdGluMS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVVGV4dFBy
b3ZpZGVyTGF0aW4xLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNzRENDM1MTg4
MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFVUZXh0UHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3Qzc0RDQzNjE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVVGV4dFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdDNzRENDM5MTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3Zp
ZGVyVVRGMTYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVRleHRQ
cm92aWRlclVURjE2LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M3NEQ0M0Ex
ODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBVVGV4dFByb3ZpZGVyVVRGMTYuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0NDN0UzRDYxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlz
dC50eHQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSUROU2NyaXB0V2hpdGVMaXN0LnR4dDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NFNkNCRkExODdGMzcwNzAwRDQ2QkY1IC8qIEZv
cm1hdENvbnZlcnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtYXRD
b252ZXJ0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NFNkNCRkMxODdGMzk0
OTAwRDQ2QkY1IC8qIEZvcm1hdENvbnZlcnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGb3JtYXRDb252ZXJ0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTYyODUsNiArMTYyOTcsMTkgQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNU
YWJzID0gMDsKIAkJfTsKKwkJN0M3NEQ0MzAxODgyM0E0MjAwRTVFRDU3IC8qIGljdSAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJN0M3NEQ0MzExODgyM0E5
MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwICovLAorCQkJCTdDNzRENDMyMTg4
MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmggKi8sCisJCQkJN0M3NEQ0Mzkx
ODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgKi8sCisJCQkJN0M3NEQ0
M0ExODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5oICovLAorCQkJCTdDNzRE
NDM1MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCAqLywKKwkJCQk3Qzc0RDQz
NjE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5oICovLAorCQkJKTsKKwkJCXBhdGgg
PSBpY3U7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk3RTQ3NEUxOTEyNDk0
REE5MDAyMzUzNjQgLyogaW9zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKQEAgLTIwMDI2LDYgKzIwMDUxLDcgQEAKIAkJCQlCMkIyNjQ1OTBEMDBBNzdFMDAwQUND
MUQgLyogY2YgKi8sCiAJCQkJQTUxNkU4QjIxMzZFMDRDMDAwNzZDM0MwIC8qIGlvcyAqLywKIAkJ
CQlCMkMzRDlGOTBEMDA2QzFEMDBFRjZGMjYgLyogbWFjICovLAorCQkJCTdDNzRENDMwMTg4MjNB
NDIwMEU1RUQ1NyAvKiBpY3UgKi8sCiAJCQkJMzdDNjFGMDAxMjA5NUM4NzAwN0EzQzY3IC8qIEF0
b21pY1N0cmluZ0tleWVkTVJVQ2FjaGUuaCAqLywKIAkJCQlCMkMzRDlGMjBEMDA2QzFEMDBFRjZG
MjYgLyogQmlkaUNvbnRleHQuY3BwICovLAogCQkJCUIyQzNEOUYzMEQwMDZDMUQwMEVGNkYyNiAv
KiBCaWRpQ29udGV4dC5oICovLApAQCAtMjUyMDAsMTAgKzI1MjI2LDEyIEBACiAJCQkJRDBBM0E3
MzExNDA1QTM5ODAwRkI4RUQzIC8qIFJlc291cmNlTG9hZGVyT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFBRjUwMzYxNkYxMDBGNjAwOTVCMkU4IC8qIFJlc291cmNlTG9hZGVyVHlwZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3M0UzMjU3MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJj
ZUxvYWROb3RpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0M3NEQ0MzQxODgyM0E5MzAwRTVF
RDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0Mjk1RkE0
MTJCMDYxNEUwMEQxQUNFMCAvKiBSZXNvdXJjZUxvYWRQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRDBDRTU4RjkxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDdDNTlCNzYxN0Y3RDBEQjAwMEZCQ0JCIC8qIENhcGFiaWxp
dHlSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE4MUJGODUxMURDRkQ5MDAwREEyQjk4IC8q
IFJlc291cmNlTG9hZFRpbWluZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0M3NEQ0MzgxODgyM0Ix
OTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFRTY4NDZE
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxNEM3NjdEMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwNzk2OURCODE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENJY2VDYW5kaWRh
dGVFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTQzNiw2ICsyNTQ2NCw3IEBACiAJCQkJQkNF
RjQ0NEEwRTY3NDVFMDAwMUMxMjg3IC8qIFN0eWxlR2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExMERDNzZCMTQ3NDdCQUIwMDVFMjQ3MSAvKiBTdHlsZUdyaWREYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMTEwREI5QjE0RjVERjc3MDBBMDNCOTMgLyogU3R5bGVHcmlkSXRl
bURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDNzRENDNDMTg4MjQwMDQwMEU1RUQ1NyAvKiBV
VGV4dFByb3ZpZGVyVVRGMTYuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUY0M0NGMEU2NzNEQTEw
MDFDMTI4NyAvKiBTdHlsZUltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIyNzMwNDBFODJG
MUU2MDBFN0Y5NzUgLyogU3R5bGVJbmhlcml0ZWREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NDcxMjdDQjE2MzQzOEFFMDBFRDZGNUEgLyogU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcy5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNjczNSw2ICsyNjc2NCw3IEBACiAJCQkJRkUxNkNGRDUxNjlEMURF
RDAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZFN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkVCQzVGMzExNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5N0JDNkEyNzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTdDNzRENDMzMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3Zp
ZGVyTGF0aW4xLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNDU2RjE4MTY3N0Q3NEUwMDVFRERG
OSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVCMjZEMjgxNjdB
OEYyQTAwRkREMjZCIC8qIERhdGFiYXNlU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZF
REVGODQxMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjY4NDUsNiArMjY4NzUsNyBAQAogCQkJCTA3ODMyMjg0MTgwMTNFRDgwMDk5OUUw
QyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOUEy
NDczMTVCOUMyRDEwMEQzNDUyNyAvKiBET01ET01TZWN1cml0eVBvbGljeS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTc2OTQ1NjVDMTIxNERCNjMwMDA3Q0JBRSAvKiBET01ET01Ub2tlbkxpc3QubW0g
aW4gU291cmNlcyAqLywKKwkJCQk3Qzc0RDQzQjE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92
aWRlclVURjE2LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBQUJBMjU5MTRCQzYxMzMwMEFBOUEx
MSAvKiBET01FZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODVBQ0E5QzEwQTlCNUZBNTAw
NjcxRTkwIC8qIERPTUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUNBOTZCOTBBOTYy
MUE2MDA2OTBDQ0YgLyogRE9NRW50aXR5Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yODk1Niw2ICsy
ODk4Nyw3IEBACiAJCQkJMDc4RTA5MEExN0QxNENFRTAwNDIwQUExIC8qIFJUQ0ljZUNhbmRpZGF0
ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDgzMkM4MTg3RjY3M0YwMERBNjNBNiAv
KiBXZWJDb3JlVGhyZWFkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBQzQwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR1Rlc3RzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDNzRENDM3MTg4MjNC
MTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3
QUM3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDc5NjlEQkIxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QUNBMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdUZXh0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dEFsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDE2MTc5NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEFsbEluT25lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsMyArMzgsNiBAQAogI2luY2x1ZGUgIlRleHRFbmNvZGluZ0RldGVjdG9ySUNV
LmNwcCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAiCiAjaW5jbHVkZSAiVGV4
dFN0cmVhbS5jcHAiCisjaW5jbHVkZSAiVVRleHRQcm92aWRlci5jcHAiCisjaW5jbHVkZSAiVVRl
eHRQcm92aWRlckxhdGluMS5jcHAiCisjaW5jbHVkZSAiVVRleHRQcm92aWRlclVURjE2LmNwcCIK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJQ1Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3JJQ1UuY3BwCShyZXZpc2lvbiAxNjE3OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySUNVLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMs
NiArMjMsOCBAQAogI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCiAKICNpbmNsdWRlICJM
aW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCIKKyNpbmNsdWRlICJVVGV4dFByb3ZpZGVyTGF0aW4x
LmgiCisjaW5jbHVkZSAiVVRleHRQcm92aWRlclVURjE2LmgiCiAjaW5jbHVkZSA8d3RmL0F0b21p
Y3MuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzAsOCArMzIsNyBA
QCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBU
ZXh0QnJlYWtJdGVyYXRvciogc2V0VXBJdGVyYXRvcihib29sJiBjcmVhdGVkSXRlcmF0b3IsIFRl
eHRCcmVha0l0ZXJhdG9yKiYgaXRlcmF0b3IsCi0gICAgVUJyZWFrSXRlcmF0b3JUeXBlIHR5cGUs
IGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgpCitzdGF0aWMgVGV4dEJyZWFrSXRlcmF0
b3IqIHNldFVwSXRlcmF0b3IoYm9vbCYgY3JlYXRlZEl0ZXJhdG9yLCBUZXh0QnJlYWtJdGVyYXRv
ciomIGl0ZXJhdG9yLCBVQnJlYWtJdGVyYXRvclR5cGUgdHlwZSwgY29uc3QgVUNoYXIqIHN0cmlu
ZywgaW50IGxlbmd0aCkKIHsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIDA7CkBA
IC01MywzNzMgKzU0LDExIEBAIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0VXBJdGVyYXRv
cigKICAgICByZXR1cm4gaXRlcmF0b3I7CiB9CiAKLWVudW0gVGV4dENvbnRleHQgeyBOb0NvbnRl
eHQsIFByaW9yQ29udGV4dCwgUHJpbWFyeUNvbnRleHQgfTsKLQotY29uc3QgaW50IHRleHRCdWZm
ZXJDYXBhY2l0eSA9IDE2OwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgVVRleHQgdGV4dDsKLSAg
ICBVQ2hhciBidWZmZXJbdGV4dEJ1ZmZlckNhcGFjaXR5XTsKLX0gVVRleHRXaXRoQnVmZmVyOwot
Ci1zdGF0aWMgaW5saW5lIGludDY0X3QgdGV4dFBpbkluZGV4KGludDY0X3QmIGluZGV4LCBpbnQ2
NF90IGxpbWl0KQotewotICAgIGlmIChpbmRleCA8IDApCi0gICAgICAgIGluZGV4ID0gMDsKLSAg
ICBlbHNlIGlmIChpbmRleCA+IGxpbWl0KQotICAgICAgICBpbmRleCA9IGxpbWl0OwotICAgIHJl
dHVybiBpbmRleDsKLX0KLQotc3RhdGljIGlubGluZSBpbnQ2NF90IHRleHROYXRpdmVMZW5ndGgo
VVRleHQqIHRleHQpCi17Ci0gICAgcmV0dXJuIHRleHQtPmEgKyB0ZXh0LT5iOwotfQotCi0vLyBS
ZWxvY2F0ZSBwb2ludGVyIGZyb20gc291cmNlIGludG8gZGVzdGluYXRpb24gYXMgcmVxdWlyZWQu
Ci1zdGF0aWMgdm9pZCB0ZXh0Rml4UG9pbnRlcihjb25zdCBVVGV4dCogc291cmNlLCBVVGV4dCog
ZGVzdGluYXRpb24sIGNvbnN0IHZvaWQqJiBwb2ludGVyKQotewotICAgIGlmIChwb2ludGVyID49
IHNvdXJjZS0+cEV4dHJhICYmIHBvaW50ZXIgPCBzdGF0aWNfY2FzdDxjaGFyKj4oc291cmNlLT5w
RXh0cmEpICsgc291cmNlLT5leHRyYVNpemUpIHsKLSAgICAgICAgLy8gUG9pbnRlciByZWZlcmVu
Y2VzIHNvdXJjZSBleHRyYSBidWZmZXIuCi0gICAgICAgIHBvaW50ZXIgPSBzdGF0aWNfY2FzdDxj
aGFyKj4oZGVzdGluYXRpb24tPnBFeHRyYSkgKyAoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHBv
aW50ZXIpIC0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHNvdXJjZS0+cEV4dHJhKSk7Ci0gICAg
fSBlbHNlIGlmIChwb2ludGVyID49IHNvdXJjZSAmJiBwb2ludGVyIDwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oc291cmNlKSArIHNvdXJjZS0+c2l6ZU9mU3RydWN0KSB7Ci0gICAgICAg
IC8vIFBvaW50ZXIgcmVmZXJlbmNlcyBzb3VyY2UgdGV4dCBzdHJ1Y3R1cmUsIGJ1dCBub3Qgc291
cmNlIGV4dHJhIGJ1ZmZlci4KLSAgICAgICAgcG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGRlc3RpbmF0aW9uKSArIChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4ocG9pbnRlcikgLSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzb3VyY2UpKTsKLSAgICB9Ci19Ci0KLXN0YXRp
YyBVVGV4dCogdGV4dENsb25lKFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3QgVVRleHQqIHNvdXJj
ZSwgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKQotewotICAgIEFTU0VSVF9VTlVTRUQo
ZGVlcCwgIWRlZXApOwotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVy
biAwOwotICAgIGludDMyX3QgZXh0cmFTaXplID0gc291cmNlLT5leHRyYVNpemU7Ci0gICAgZGVz
dGluYXRpb24gPSB1dGV4dF9zZXR1cChkZXN0aW5hdGlvbiwgZXh0cmFTaXplLCBzdGF0dXMpOwot
ICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVybiBkZXN0aW5hdGlvbjsK
LSAgICB2b2lkKiBleHRyYU5ldyA9IGRlc3RpbmF0aW9uLT5wRXh0cmE7Ci0gICAgaW50MzJfdCBm
bGFncyA9IGRlc3RpbmF0aW9uLT5mbGFnczsKLSAgICBpbnQgc2l6ZVRvQ29weSA9IHN0ZDo6bWlu
KHNvdXJjZS0+c2l6ZU9mU3RydWN0LCBkZXN0aW5hdGlvbi0+c2l6ZU9mU3RydWN0KTsKLSAgICBt
ZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSwgc2l6ZVRvQ29weSk7Ci0gICAgZGVzdGluYXRpb24t
PnBFeHRyYSA9IGV4dHJhTmV3OwotICAgIGRlc3RpbmF0aW9uLT5mbGFncyA9IGZsYWdzOwotICAg
IG1lbWNweShkZXN0aW5hdGlvbi0+cEV4dHJhLCBzb3VyY2UtPnBFeHRyYSwgZXh0cmFTaXplKTsK
LSAgICB0ZXh0Rml4UG9pbnRlcihzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbi0+Y29u
dGV4dCk7Ci0gICAgdGV4dEZpeFBvaW50ZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRp
b24tPnApOwotICAgIHRleHRGaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0
aW9uLT5xKTsKLSAgICBBU1NFUlQoIWRlc3RpbmF0aW9uLT5yKTsKLSAgICBjb25zdCB2b2lkICog
Y2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkZXN0aW5hdGlvbi0+Y2h1
bmtDb250ZW50cyk7Ci0gICAgdGV4dEZpeFBvaW50ZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY2h1
bmtDb250ZW50cyk7Ci0gICAgZGVzdGluYXRpb24tPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2Fz
dDxjb25zdCBVQ2hhcio+KGNodW5rQ29udGVudHMpOwotICAgIHJldHVybiBkZXN0aW5hdGlvbjsK
LX0KLQotc3RhdGljIGludDMyX3QgdGV4dEV4dHJhY3QoVVRleHQqIHRleHQsIGludDY0X3Qgc3Rh
cnQsIGludDY0X3QgbGltaXQsIFVDaGFyKiBkZXN0aW5hdGlvbiwgaW50MzJfdCBkZXN0aW5hdGlv
bkNhcGFjaXR5LCBVRXJyb3JDb2RlKiBlcnJvckNvZGUpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRl
eHQpOwotICAgIFVOVVNFRF9QQVJBTShzdGFydCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxpbWl0KTsK
LSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5h
dGlvbkNhcGFjaXR5KTsKLSAgICAvLyBJbiB0aGUgcHJlc2VudCBjb250ZXh0LCB0aGlzIHRleHQg
cHJvdmlkZXIgaXMgdXNlZCBvbmx5IHdpdGggSUNVIGZ1bmN0aW9ucwotICAgIC8vIHRoYXQgZG8g
bm90IHBlcmZvcm0gYW4gZXh0cmFjdCBvcGVyYXRpb24uCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgKmVycm9yQ29kZSA9IFVfVU5TVVBQT1JURURfRVJST1I7Ci0gICAgcmV0dXJuIDA7
Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRDbG9zZShVVGV4dCogdGV4dCkKLXsKLSAgICB0ZXh0LT5j
b250ZXh0ID0gMDsKLX0KLQotc3RhdGljIGlubGluZSBUZXh0Q29udGV4dCB0ZXh0R2V0Q29udGV4
dChjb25zdCBVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgVUJvb2wgZm9yd2FyZCkK
LXsKLSAgICBpZiAoIXRleHQtPmIgfHwgbmF0aXZlSW5kZXggPiB0ZXh0LT5iKQotICAgICAgICBy
ZXR1cm4gUHJpbWFyeUNvbnRleHQ7Ci0gICAgaWYgKG5hdGl2ZUluZGV4ID09IHRleHQtPmIpCi0g
ICAgICAgIHJldHVybiBmb3J3YXJkID8gUHJpbWFyeUNvbnRleHQgOiBQcmlvckNvbnRleHQ7Ci0g
ICAgcmV0dXJuIFByaW9yQ29udGV4dDsKLX0KLQotc3RhdGljIGlubGluZSBUZXh0Q29udGV4dCB0
ZXh0TGF0aW4xR2V0Q3VycmVudENvbnRleHQoY29uc3QgVVRleHQqIHRleHQpCi17Ci0gICAgaWYg
KCF0ZXh0LT5jaHVua0NvbnRlbnRzKQotICAgICAgICByZXR1cm4gTm9Db250ZXh0OwotICAgIHJl
dHVybiB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnBFeHRyYSA/IFByaW1hcnlDb250ZXh0
IDogUHJpb3JDb250ZXh0OwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0TGF0aW4xTW92ZUluUHJpbWFy
eUNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZl
TGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRz
ID09IHRleHQtPnBFeHRyYSk7Ci0gICAgaWYgKGZvcndhcmQpIHsKLSAgICAgICAgQVNTRVJUKG5h
dGl2ZUluZGV4ID49IHRleHQtPmIgJiYgbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGgpOwotICAg
ICAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gbmF0aXZlSW5kZXg7Ci0gICAgICAgIHRleHQt
PmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVJbmRleCArIHRleHQtPmV4dHJhU2l6ZSAvIHNpemVv
ZihVQ2hhcik7Ci0gICAgICAgIGlmICh0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID4gbmF0aXZlTGVu
Z3RoKQotICAgICAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxlbmd0aDsK
LSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQobmF0aXZlSW5kZXggPiB0ZXh0LT5iICYmIG5h
dGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7Ci0gICAgICAgIHRleHQtPmNodW5rTmF0aXZlTGlt
aXQgPSBuYXRpdmVJbmRleDsKLSAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IG5hdGl2
ZUluZGV4IC0gdGV4dC0+ZXh0cmFTaXplIC8gc2l6ZW9mKFVDaGFyKTsKLSAgICAgICAgaWYgKHRl
eHQtPmNodW5rTmF0aXZlU3RhcnQgPCB0ZXh0LT5iKQotICAgICAgICAgICAgdGV4dC0+Y2h1bmtO
YXRpdmVTdGFydCA9IHRleHQtPmI7Ci0gICAgfQotICAgIGludDY0X3QgbGVuZ3RoID0gdGV4dC0+
Y2h1bmtOYXRpdmVMaW1pdCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgLy8gRW5zdXJl
IGNodW5rIGxlbmd0aCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgbGVuZ3RoIGV4Y2VlZHMg
aW50MzJfdCByYW5nZS4KLSAgICBBU1NFUlQobGVuZ3RoIDwgc3RkOjpudW1lcmljX2xpbWl0czxp
bnQzMl90Pjo6bWF4KCkpOwotICAgIHRleHQtPmNodW5rTGVuZ3RoID0gbGVuZ3RoIDwgc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihsZW5n
dGgpIDogMDsKLSAgICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5n
dGg7Ci0gICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBmb3J3YXJkID8gMCA6IHRleHQtPmNodW5rTGVu
Z3RoOwotICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhjb25zdF9jYXN0PFVDaGFyKj4odGV4dC0+
Y2h1bmtDb250ZW50cyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4odGV4dC0+cCkgKyAodGV4
dC0+Y2h1bmtOYXRpdmVTdGFydCAtIHRleHQtPmIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGV4
dC0+Y2h1bmtMZW5ndGgpKTsKLX0KLQotc3RhdGljIHZvaWQgdGV4dExhdGluMVN3aXRjaFRvUHJp
bWFyeUNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0
aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250
ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOwotICAgIHRleHQtPmNodW5r
Q29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnBFeHRyYSk7Ci0gICAg
dGV4dExhdGluMU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVM
ZW5ndGgsIGZvcndhcmQpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0TGF0aW4xTW92ZUluUHJpb3JD
b250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxl
bmd0aCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9
PSB0ZXh0LT5xKTsKLSAgICBBU1NFUlQoZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgdGV4dC0+YiA6
IG5hdGl2ZUluZGV4IDw9IHRleHQtPmIpOwotICAgIEFTU0VSVF9VTlVTRUQobmF0aXZlTGVuZ3Ro
LCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBu
YXRpdmVMZW5ndGgpOwotICAgIEFTU0VSVF9VTlVTRUQoZm9yd2FyZCwgZm9yd2FyZCA/IG5hdGl2
ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3RoKTsKLSAg
ICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gMDsKLSAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0
ID0gdGV4dC0+YjsKLSAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IHRleHQtPmI7Ci0gICAgdGV4dC0+
bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOwotICAgIGludDY0X3Qgb2Zm
c2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgIC8vIEVuc3Vy
ZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRz
IGludDMyX3QgcmFuZ2Ugb3IgY2h1bmsgbGVuZ3RoLgotICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7Ci0gICAgdGV4dC0+Y2h1bmtPZmZzZXQg
PSBzdGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/
IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Ci19
Ci0KLXN0YXRpYyB2b2lkIHRleHRMYXRpbjFTd2l0Y2hUb1ByaW9yQ29udGV4dChVVGV4dCogdGV4
dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndh
cmQpCi17Ci0gICAgQVNTRVJUKCF0ZXh0LT5jaHVua0NvbnRlbnRzIHx8IHRleHQtPmNodW5rQ29u
dGVudHMgPT0gdGV4dC0+cEV4dHJhKTsKLSAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5xKTsKLSAgICB0ZXh0TGF0aW4xTW92ZUluUHJpb3JD
b250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotfQotCi1z
dGF0aWMgaW5saW5lIGJvb2wgdGV4dEluQ2h1bmtPck91dE9mUmFuZ2UoVVRleHQqIHRleHQsIGlu
dDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkLCBV
Qm9vbCYgaXNBY2Nlc3NpYmxlKQotewotICAgIGlmIChmb3J3YXJkKSB7Ci0gICAgICAgIGlmIChu
YXRpdmVJbmRleCA+PSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ICYmIG5hdGl2ZUluZGV4IDwgdGV4
dC0+Y2h1bmtOYXRpdmVMaW1pdCkgewotICAgICAgICAgICAgaW50NjRfdCBvZmZzZXQgPSBuYXRp
dmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgICAgICAgICAvLyBFbnN1cmUg
Y2h1bmsgb2Zmc2V0IGlzIHdlbGwgZm9ybWVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGlu
dDMyX3QgcmFuZ2UuCi0gICAgICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWF4KCkpOwotICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBv
ZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0
PGludDMyX3Q+KG9mZnNldCkgOiAwOwotICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gVFJVRTsK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChuYXRpdmVJ
bmRleCA+PSBuYXRpdmVMZW5ndGggJiYgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9PSBuYXRpdmVM
ZW5ndGgpIHsKLSAgICAgICAgICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gdGV4dC0+Y2h1bmtMZW5n
dGg7Ci0gICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBGQUxTRTsKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKG5hdGl2ZUluZGV4
ID4gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAmJiBuYXRpdmVJbmRleCA8PSB0ZXh0LT5jaHVua05h
dGl2ZUxpbWl0KSB7Ci0gICAgICAgICAgICBpbnQ2NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0g
dGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKLSAgICAgICAgICAgIC8vIEVuc3VyZSBjaHVuayBvZmZz
ZXQgaXMgd2VsbCBmb3JtZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5n
ZS4KLSAgICAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptYXgoKSk7Ci0gICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNldCA9IG9mZnNldCA8IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4o
b2Zmc2V0KSA6IDA7Ci0gICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBUUlVFOwotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG5hdGl2ZUluZGV4IDw9IDAg
JiYgIXRleHQtPmNodW5rTmF0aXZlU3RhcnQpIHsKLSAgICAgICAgICAgIHRleHQtPmNodW5rT2Zm
c2V0ID0gMDsKLSAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IEZBTFNFOwotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1z
dGF0aWMgVUJvb2wgdGV4dExhdGluMUFjY2VzcyhVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJ
bmRleCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBpZiAoIXRleHQtPmNvbnRleHQpCi0gICAgICAg
IHJldHVybiBGQUxTRTsKLSAgICBpbnQ2NF90IG5hdGl2ZUxlbmd0aCA9IHRleHROYXRpdmVMZW5n
dGgodGV4dCk7Ci0gICAgVUJvb2wgaXNBY2Nlc3NpYmxlOwotICAgIGlmICh0ZXh0SW5DaHVua09y
T3V0T2ZSYW5nZSh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkLCBpc0Fj
Y2Vzc2libGUpKQotICAgICAgICByZXR1cm4gaXNBY2Nlc3NpYmxlOwotICAgIG5hdGl2ZUluZGV4
ID0gdGV4dFBpbkluZGV4KG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgpOwotICAgIFRleHRDb250
ZXh0IGN1cnJlbnRDb250ZXh0ID0gdGV4dExhdGluMUdldEN1cnJlbnRDb250ZXh0KHRleHQpOwot
ICAgIFRleHRDb250ZXh0IG5ld0NvbnRleHQgPSB0ZXh0R2V0Q29udGV4dCh0ZXh0LCBuYXRpdmVJ
bmRleCwgZm9yd2FyZCk7Ci0gICAgQVNTRVJUKG5ld0NvbnRleHQgIT0gTm9Db250ZXh0KTsKLSAg
ICBpZiAobmV3Q29udGV4dCA9PSBjdXJyZW50Q29udGV4dCkgewotICAgICAgICBpZiAoY3VycmVu
dENvbnRleHQgPT0gUHJpbWFyeUNvbnRleHQpCi0gICAgICAgICAgICB0ZXh0TGF0aW4xTW92ZUlu
UHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRleHRMYXRpbjFNb3ZlSW5QcmlvckNvbnRleHQo
dGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci0gICAgfSBlbHNlIGlm
IChuZXdDb250ZXh0ID09IFByaW1hcnlDb250ZXh0KQotICAgICAgICB0ZXh0TGF0aW4xU3dpdGNo
VG9QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJk
KTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG5ld0NvbnRleHQgPT0gUHJpb3JDb250ZXh0
KTsKLSAgICAgICAgdGV4dExhdGluMVN3aXRjaFRvUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUlu
ZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAgIH0KLSAgICByZXR1cm4gVFJVRTsKLX0K
LQotc3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHRleHRMYXRpbjFGdW5jcyA9IHsKLSAg
ICBzaXplb2YoVVRleHRGdW5jcyksCi0gICAgMCwgMCwgMCwKLSAgICB0ZXh0Q2xvbmUsCi0gICAg
dGV4dE5hdGl2ZUxlbmd0aCwKLSAgICB0ZXh0TGF0aW4xQWNjZXNzLAotICAgIHRleHRFeHRyYWN0
LAotICAgIDAsIDAsIDAsIDAsCi0gICAgdGV4dENsb3NlLAotICAgIDAsIDAsIDAsCi19OwotCi1z
dGF0aWMgdm9pZCB0ZXh0SW5pdChVVGV4dCogdGV4dCwgY29uc3QgVVRleHRGdW5jcyogZnVuY3Ms
IGNvbnN0IHZvaWQqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JD
b250ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVuZ3RoKQotewotICAgIHRleHQtPnBGdW5jcyA9IGZ1
bmNzOwotICAgIHRleHQtPnByb3ZpZGVyUHJvcGVydGllcyA9IDEgPDwgVVRFWFRfUFJPVklERVJf
U1RBQkxFX0NIVU5LUzsKLSAgICB0ZXh0LT5jb250ZXh0ID0gc3RyaW5nOwotICAgIHRleHQtPnAg
PSBzdHJpbmc7Ci0gICAgdGV4dC0+YSA9IGxlbmd0aDsKLSAgICB0ZXh0LT5xID0gcHJpb3JDb250
ZXh0OwotICAgIHRleHQtPmIgPSBwcmlvckNvbnRleHRMZW5ndGg7Ci19Ci0KLXN0YXRpYyBVVGV4
dCogdGV4dE9wZW5MYXRpbjEoVVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExD
aGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwg
aW50IHByaW9yQ29udGV4dExlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKQotewotICAgIGlmIChV
X0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmICghc3RyaW5nIHx8
IGxlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptYXgoKSkpIHsKLSAgICAgICAgKnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJP
UjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIFVUZXh0KiB0ZXh0ID0gdXRleHRfc2V0
dXAoJnV0V2l0aEJ1ZmZlci0+dGV4dCwgc2l6ZW9mKHV0V2l0aEJ1ZmZlci0+YnVmZmVyKSwgc3Rh
dHVzKTsKLSAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKSB7Ci0gICAgICAgIEFTU0VSVCghdGV4
dCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICB0ZXh0SW5pdCh0ZXh0LCAmdGV4dExh
dGluMUZ1bmNzLCBzdHJpbmcsIGxlbmd0aCwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5n
dGgpOwotICAgIHJldHVybiB0ZXh0OwotfQotCi1zdGF0aWMgaW5saW5lIFRleHRDb250ZXh0IHRl
eHRVVEYxNkdldEN1cnJlbnRDb250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0KQotewotICAgIGlmICgh
dGV4dC0+Y2h1bmtDb250ZW50cykKLSAgICAgICAgcmV0dXJuIE5vQ29udGV4dDsKLSAgICByZXR1
cm4gdGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wID8gUHJpbWFyeUNvbnRleHQgOiBQcmlv
ckNvbnRleHQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRVVEYxNk1vdmVJblByaW1hcnlDb250ZXh0
KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwg
VUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0
LT5wKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA+
PSB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPiB0ZXh0LT5iKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZv
cndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4
IDw9IG5hdGl2ZUxlbmd0aCk7Ci0gICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IHRleHQtPmI7
Ci0gICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxlbmd0aDsKLSAgICBpbnQ2NF90
IGxlbmd0aCA9IHRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0
OwotICAgIC8vIEVuc3VyZSBjaHVuayBsZW5ndGggaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVk
IGxlbmd0aCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCi0gICAgQVNTRVJUKGxlbmd0aCA8IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICB0ZXh0LT5jaHVua0xlbmd0aCA9
IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nh
c3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7Ci0gICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9
IHRleHQtPmNodW5rTGVuZ3RoOwotICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0
ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMgd2Vs
bCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2Ugb3IgY2h1
bmsgbGVuZ3RoLgotICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptYXgoKSk7Ci0gICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGQ6Om1pbihvZmZzZXQgPCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+
KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRV
VEYxNlN3aXRjaFRvUHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5k
ZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCgh
dGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOwot
ICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQt
PnApOwotICAgIHRleHRVVEYxNk1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4
LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0VVRGMTZNb3Zl
SW5QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3Qg
bmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCh0ZXh0LT5jaHVua0Nv
bnRlbnRzID09IHRleHQtPnEpOwotICAgIEFTU0VSVChmb3J3YXJkID8gbmF0aXZlSW5kZXggPCB0
ZXh0LT5iIDogbmF0aXZlSW5kZXggPD0gdGV4dC0+Yik7Ci0gICAgQVNTRVJUX1VOVVNFRChuYXRp
dmVMZW5ndGgsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUlu
ZGV4IDw9IG5hdGl2ZUxlbmd0aCk7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJk
ID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5n
dGgpOwotICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSAwOwotICAgIHRleHQtPmNodW5rTmF0
aXZlTGltaXQgPSB0ZXh0LT5iOwotICAgIHRleHQtPmNodW5rTGVuZ3RoID0gdGV4dC0+YjsKLSAg
ICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7Ci0gICAgaW50
NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAg
Ly8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgb2Zmc2V0
IGV4Y2VlZHMgaW50MzJfdCByYW5nZSBvciBjaHVuayBsZW5ndGguCi0gICAgQVNTRVJUKG9mZnNl
dCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICB0ZXh0LT5jaHVu
a09mZnNldCA9IHN0ZDo6bWluKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQtPmNodW5rTGVu
Z3RoKTsKLX0KLQotc3RhdGljIHZvaWQgdGV4dFVURjE2U3dpdGNoVG9QcmlvckNvbnRleHQoVVRl
eHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9v
bCBmb3J3YXJkKQotewotICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5j
aHVua0NvbnRlbnRzID09IHRleHQtPnApOwotICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0
aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnEpOwotICAgIHRleHRVVEYxNk1vdmVJblByaW9y
Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLX0KLQot
c3RhdGljIFVCb29sIHRleHRVVEYxNkFjY2VzcyhVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJ
bmRleCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBpZiAoIXRleHQtPmNvbnRleHQpCi0gICAgICAg
IHJldHVybiBGQUxTRTsKLSAgICBpbnQ2NF90IG5hdGl2ZUxlbmd0aCA9IHRleHROYXRpdmVMZW5n
dGgodGV4dCk7Ci0gICAgVUJvb2wgaXNBY2Nlc3NpYmxlOwotICAgIGlmICh0ZXh0SW5DaHVua09y
T3V0T2ZSYW5nZSh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkLCBpc0Fj
Y2Vzc2libGUpKQotICAgICAgICByZXR1cm4gaXNBY2Nlc3NpYmxlOwotICAgIG5hdGl2ZUluZGV4
ID0gdGV4dFBpbkluZGV4KG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgpOwotICAgIFRleHRDb250
ZXh0IGN1cnJlbnRDb250ZXh0ID0gdGV4dFVURjE2R2V0Q3VycmVudENvbnRleHQodGV4dCk7Ci0g
ICAgVGV4dENvbnRleHQgbmV3Q29udGV4dCA9IHRleHRHZXRDb250ZXh0KHRleHQsIG5hdGl2ZUlu
ZGV4LCBmb3J3YXJkKTsKLSAgICBBU1NFUlQobmV3Q29udGV4dCAhPSBOb0NvbnRleHQpOwotICAg
IGlmIChuZXdDb250ZXh0ID09IGN1cnJlbnRDb250ZXh0KSB7Ci0gICAgICAgIGlmIChjdXJyZW50
Q29udGV4dCA9PSBQcmltYXJ5Q29udGV4dCkKLSAgICAgICAgICAgIHRleHRVVEYxNk1vdmVJblBy
aW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXh0VVRGMTZNb3ZlSW5QcmlvckNvbnRleHQodGV4
dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci0gICAgfSBlbHNlIGlmIChu
ZXdDb250ZXh0ID09IFByaW1hcnlDb250ZXh0KQotICAgICAgICB0ZXh0VVRGMTZTd2l0Y2hUb1By
aW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwot
ICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobmV3Q29udGV4dCA9PSBQcmlvckNvbnRleHQpOwot
ICAgICAgICB0ZXh0VVRGMTZTd2l0Y2hUb1ByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwg
bmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLSAgICB9Ci0gICAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0
YXRpYyBjb25zdCBzdHJ1Y3QgVVRleHRGdW5jcyB0ZXh0VVRGMTZGdW5jcyA9IHsKLSAgICBzaXpl
b2YoVVRleHRGdW5jcyksCi0gICAgMCwgMCwgMCwKLSAgICB0ZXh0Q2xvbmUsCi0gICAgdGV4dE5h
dGl2ZUxlbmd0aCwKLSAgICB0ZXh0VVRGMTZBY2Nlc3MsCi0gICAgdGV4dEV4dHJhY3QsCi0gICAg
MCwgMCwgMCwgMCwKLSAgICB0ZXh0Q2xvc2UsCi0gICAgMCwgMCwgMCwKLX07Ci0KLXN0YXRpYyBV
VGV4dCogdGV4dE9wZW5VVEYxNihVVGV4dCogdGV4dCwgY29uc3QgVUNoYXIqIHN0cmluZywgdW5z
aWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0
TGVuZ3RoLCBVRXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0gICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVz
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCFzdHJpbmcgfHwgbGVuZ3RoID4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkgewot
ICAgICAgICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOwotICAgICAgICByZXR1
cm4gMDsKLSAgICB9Ci0gICAgdGV4dCA9IHV0ZXh0X3NldHVwKHRleHQsIDAsIHN0YXR1cyk7Ci0g
ICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkgewotICAgICAgICBBU1NFUlQoIXRleHQpOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgdGV4dEluaXQodGV4dCwgJnRleHRVVEYxNkZ1bmNz
LCBzdHJpbmcsIGxlbmd0aCwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5ndGgpOwotICAg
IHJldHVybiB0ZXh0OwotfQotCiBUZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3Io
Y29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCkKIHsKICAgICBzdGF0aWMgYm9vbCBjcmVh
dGVkV29yZEJyZWFrSXRlcmF0b3IgPSBmYWxzZTsKICAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0
b3IqIHN0YXRpY1dvcmRCcmVha0l0ZXJhdG9yOwotICAgIHJldHVybiBzZXRVcEl0ZXJhdG9yKGNy
ZWF0ZWRXb3JkQnJlYWtJdGVyYXRvciwKLSAgICAgICAgc3RhdGljV29yZEJyZWFrSXRlcmF0b3Is
IFVCUktfV09SRCwgc3RyaW5nLCBsZW5ndGgpOworICAgIHJldHVybiBzZXRVcEl0ZXJhdG9yKGNy
ZWF0ZWRXb3JkQnJlYWtJdGVyYXRvciwgc3RhdGljV29yZEJyZWFrSXRlcmF0b3IsIFVCUktfV09S
RCwgc3RyaW5nLCBsZW5ndGgpOwogfQogCiBzdGF0aWMgVVRleHQgZW1wdHlUZXh0ID0gVVRFWFRf
SU5JVElBTElaRVI7CkBAIC00MzYsNyArNzUsNyBAQCBUZXh0QnJlYWtJdGVyYXRvciogYWNxdWly
ZUxpbmVCcmVha0l0ZXJhCiAgICAgdGV4dExvY2FsLnRleHQucEV4dHJhID0gdGV4dExvY2FsLmJ1
ZmZlcjsKIAogICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBV
VGV4dCogdGV4dCA9IHRleHRPcGVuTGF0aW4xKCZ0ZXh0TG9jYWwsIHN0cmluZywgbGVuZ3RoLCBw
cmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCwgJm9wZW5TdGF0dXMpOworICAgIFVUZXh0
KiB0ZXh0ID0gdVRleHRPcGVuTGF0aW4xKCZ0ZXh0TG9jYWwsIHN0cmluZywgbGVuZ3RoLCBwcmlv
ckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCwgJm9wZW5TdGF0dXMpOwogICAgIGlmIChVX0ZB
SUxVUkUob3BlblN0YXR1cykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJ0ZXh0T3BlblVURjE2IGZh
aWxlZCB3aXRoIHN0YXR1cyAlZCIsIG9wZW5TdGF0dXMpOwogICAgICAgICByZXR1cm4gMDsKQEAg
LTQ2Myw3ICsxMDIsNyBAQCBUZXh0QnJlYWtJdGVyYXRvciogYWNxdWlyZUxpbmVCcmVha0l0ZXJh
CiAgICAgVVRleHQgdGV4dExvY2FsID0gVVRFWFRfSU5JVElBTElaRVI7CiAKICAgICBVRXJyb3JD
b2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgVVRleHQqIHRleHQgPSB0ZXh0T3Bl
blVURjE2KCZ0ZXh0TG9jYWwsIHN0cmluZywgbGVuZ3RoLCBwcmlvckNvbnRleHQsIHByaW9yQ29u
dGV4dExlbmd0aCwgJm9wZW5TdGF0dXMpOworICAgIFVUZXh0KiB0ZXh0ID0gdVRleHRPcGVuVVRG
MTYoJnRleHRMb2NhbCwgc3RyaW5nLCBsZW5ndGgsIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0
TGVuZ3RoLCAmb3BlblN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShvcGVuU3RhdHVzKSkgewog
ICAgICAgICBMT0dfRVJST1IoInRleHRPcGVuVVRGMTYgZmFpbGVkIHdpdGggc3RhdHVzICVkIiwg
b3BlblN0YXR1cyk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNTIxLDggKzE2MCw3IEBAIFRleHRC
cmVha0l0ZXJhdG9yKiBzZW50ZW5jZUJyZWFrSXRlcmF0b3IKIHsKICAgICBzdGF0aWMgYm9vbCBj
cmVhdGVkU2VudGVuY2VCcmVha0l0ZXJhdG9yID0gZmFsc2U7CiAgICAgc3RhdGljIFRleHRCcmVh
a0l0ZXJhdG9yKiBzdGF0aWNTZW50ZW5jZUJyZWFrSXRlcmF0b3I7Ci0gICAgcmV0dXJuIHNldFVw
SXRlcmF0b3IoY3JlYXRlZFNlbnRlbmNlQnJlYWtJdGVyYXRvciwKLSAgICAgICAgc3RhdGljU2Vu
dGVuY2VCcmVha0l0ZXJhdG9yLCBVQlJLX1NFTlRFTkNFLCBzdHJpbmcsIGxlbmd0aCk7CisgICAg
cmV0dXJuIHNldFVwSXRlcmF0b3IoY3JlYXRlZFNlbnRlbmNlQnJlYWtJdGVyYXRvciwgc3RhdGlj
U2VudGVuY2VCcmVha0l0ZXJhdG9yLCBVQlJLX1NFTlRFTkNFLCBzdHJpbmcsIGxlbmd0aCk7CiB9
CiAKIGludCB0ZXh0QnJlYWtGaXJzdChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCkBAIC01
NzIsOCArMjEwLDcgQEAgYm9vbCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqIAog
fQogCiAjaWYgIVBMQVRGT1JNKElPUykKLXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0VXBJ
dGVyYXRvcldpdGhSdWxlcyhib29sJiBjcmVhdGVkSXRlcmF0b3IsIFRleHRCcmVha0l0ZXJhdG9y
KiYgaXRlcmF0b3IsCi0gICAgY29uc3QgY2hhciogYnJlYWtSdWxlcywgY29uc3QgVUNoYXIqIHN0
cmluZywgaW50IGxlbmd0aCkKK3N0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0VXBJdGVyYXRv
cldpdGhSdWxlcyhib29sJiBjcmVhdGVkSXRlcmF0b3IsIFRleHRCcmVha0l0ZXJhdG9yKiYgaXRl
cmF0b3IsIGNvbnN0IGNoYXIqIGJyZWFrUnVsZXMsIGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBs
ZW5ndGgpCiB7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiAwOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFBy
b3ZpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXIuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisvLyBSZWxvY2F0ZSBwb2ludGVyIGZyb20gc291cmNlIGludG8gZGVz
dGluYXRpb24gYXMgcmVxdWlyZWQuCitzdGF0aWMgaW5saW5lIHZvaWQgZml4UG9pbnRlcihjb25z
dCBVVGV4dCogc291cmNlLCBVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IHZvaWQqJiBwb2ludGVy
KQoreworICAgIGlmIChwb2ludGVyID49IHNvdXJjZS0+cEV4dHJhICYmIHBvaW50ZXIgPCBzdGF0
aWNfY2FzdDxjaGFyKj4oc291cmNlLT5wRXh0cmEpICsgc291cmNlLT5leHRyYVNpemUpIHsKKyAg
ICAgICAgLy8gUG9pbnRlciByZWZlcmVuY2VzIHNvdXJjZSBleHRyYSBidWZmZXIuCisgICAgICAg
IHBvaW50ZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZGVzdGluYXRpb24tPnBFeHRyYSkgKyAoc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KHBvaW50ZXIpIC0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KHNvdXJjZS0+cEV4dHJhKSk7CisgICAgfSBlbHNlIGlmIChwb2ludGVyID49IHNvdXJjZSAmJiBw
b2ludGVyIDwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlKSArIHNvdXJjZS0+
c2l6ZU9mU3RydWN0KSB7CisgICAgICAgIC8vIFBvaW50ZXIgcmVmZXJlbmNlcyBzb3VyY2UgdGV4
dCBzdHJ1Y3R1cmUsIGJ1dCBub3Qgc291cmNlIGV4dHJhIGJ1ZmZlci4KKyAgICAgICAgcG9pbnRl
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRlc3RpbmF0aW9uKSArIChzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4ocG9pbnRlcikgLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzb3Vy
Y2UpKTsKKyAgICB9Cit9CisKK1VUZXh0KiB1VGV4dENsb25lSW1wbChVVGV4dCogZGVzdGluYXRp
b24sIGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVCb29sIGRlZXAsIFVFcnJvckNvZGUqIHN0YXR1cykK
K3sKKyAgICBBU1NFUlRfVU5VU0VEKGRlZXAsICFkZWVwKTsKKyAgICBpZiAoVV9GQUlMVVJFKCpz
dGF0dXMpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpbnQzMl90IGV4dHJhU2l6ZSA9
IHNvdXJjZS0+ZXh0cmFTaXplOworICAgIGRlc3RpbmF0aW9uID0gdXRleHRfc2V0dXAoZGVzdGlu
YXRpb24sIGV4dHJhU2l6ZSwgc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKQor
ICAgICAgICByZXR1cm4gZGVzdGluYXRpb247CisgICAgdm9pZCogZXh0cmFOZXcgPSBkZXN0aW5h
dGlvbi0+cEV4dHJhOworICAgIGludDMyX3QgZmxhZ3MgPSBkZXN0aW5hdGlvbi0+ZmxhZ3M7Cisg
ICAgaW50IHNpemVUb0NvcHkgPSBzdGQ6Om1pbihzb3VyY2UtPnNpemVPZlN0cnVjdCwgZGVzdGlu
YXRpb24tPnNpemVPZlN0cnVjdCk7CisgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHNp
emVUb0NvcHkpOworICAgIGRlc3RpbmF0aW9uLT5wRXh0cmEgPSBleHRyYU5ldzsKKyAgICBkZXN0
aW5hdGlvbi0+ZmxhZ3MgPSBmbGFnczsKKyAgICBtZW1jcHkoZGVzdGluYXRpb24tPnBFeHRyYSwg
c291cmNlLT5wRXh0cmEsIGV4dHJhU2l6ZSk7CisgICAgZml4UG9pbnRlcihzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBkZXN0aW5hdGlvbi0+Y29udGV4dCk7CisgICAgZml4UG9pbnRlcihzb3VyY2UsIGRl
c3RpbmF0aW9uLCBkZXN0aW5hdGlvbi0+cCk7CisgICAgZml4UG9pbnRlcihzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBkZXN0aW5hdGlvbi0+cSk7CisgICAgQVNTRVJUKCFkZXN0aW5hdGlvbi0+cik7Cisg
ICAgY29uc3Qgdm9pZCogY2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihk
ZXN0aW5hdGlvbi0+Y2h1bmtDb250ZW50cyk7CisgICAgZml4UG9pbnRlcihzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBjaHVua0NvbnRlbnRzKTsKKyAgICBkZXN0aW5hdGlvbi0+Y2h1bmtDb250ZW50cyA9
IHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4oY2h1bmtDb250ZW50cyk7CisgICAgcmV0dXJuIGRl
c3RpbmF0aW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVVGV4
dFByb3ZpZGVyX2gKKyNkZWZpbmUgVVRleHRQcm92aWRlcl9oCisKKyNpbmNsdWRlIDx1bmljb2Rl
L3V0ZXh0Lmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2VudW0gY2xhc3MgVVRleHRQcm92aWRlckNvbnRleHQgeworICAgIE5vQ29u
dGV4dCwKKyAgICBQcmlvckNvbnRleHQsCisgICAgUHJpbWFyeUNvbnRleHQKK307CisKK2lubGlu
ZSBVVGV4dFByb3ZpZGVyQ29udGV4dCB1VGV4dFByb3ZpZGVyQ29udGV4dChjb25zdCBVVGV4dCog
dGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBpZiAoIXRl
eHQtPmIgfHwgbmF0aXZlSW5kZXggPiB0ZXh0LT5iKQorICAgICAgICByZXR1cm4gVVRleHRQcm92
aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0OworICAgIGlmIChuYXRpdmVJbmRleCA9PSB0ZXh0
LT5iKQorICAgICAgICByZXR1cm4gZm9yd2FyZCA/IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlt
YXJ5Q29udGV4dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7CisgICAgcmV0
dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Cit9CisKK2lubGluZSB2b2lk
IHVUZXh0SW5pdGlhbGl6ZShVVGV4dCogdGV4dCwgY29uc3QgVVRleHRGdW5jcyogZnVuY3MsIGNv
bnN0IHZvaWQqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250
ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVuZ3RoKQoreworICAgIHRleHQtPnBGdW5jcyA9IGZ1bmNz
OworICAgIHRleHQtPnByb3ZpZGVyUHJvcGVydGllcyA9IDEgPDwgVVRFWFRfUFJPVklERVJfU1RB
QkxFX0NIVU5LUzsKKyAgICB0ZXh0LT5jb250ZXh0ID0gc3RyaW5nOworICAgIHRleHQtPnAgPSBz
dHJpbmc7CisgICAgdGV4dC0+YSA9IGxlbmd0aDsKKyAgICB0ZXh0LT5xID0gcHJpb3JDb250ZXh0
OworICAgIHRleHQtPmIgPSBwcmlvckNvbnRleHRMZW5ndGg7Cit9CisKKy8vIFNoYXJlZCBpbXBs
ZW1lbnRhdGlvbiBmb3IgdGhlIFVUZXh0Q2xvbmUgZnVuY3Rpb24gb24gVVRleHRGdW5jcy4KKwor
VVRleHQqIHVUZXh0Q2xvbmVJbXBsKFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3QgVVRleHQqIHNv
dXJjZSwgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKTsKKworCisvLyBIZWxwZXJzIGZv
ciB0aGUgVVRleHRBY2Nlc3MgZnVuY3Rpb24gb24gVVRleHRGdW5jcy4KKworaW5saW5lIGludDY0
X3QgdVRleHRBY2Nlc3NQaW5JbmRleChpbnQ2NF90JiBpbmRleCwgaW50NjRfdCBsaW1pdCkKK3sK
KyAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICBpbmRleCA9IDA7CisgICAgZWxzZSBpZiAoaW5k
ZXggPiBsaW1pdCkKKyAgICAgICAgaW5kZXggPSBsaW1pdDsKKyAgICByZXR1cm4gaW5kZXg7Cit9
CisKK2lubGluZSBib29sIHVUZXh0QWNjZXNzSW5DaHVua09yT3V0T2ZSYW5nZShVVGV4dCogdGV4
dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndh
cmQsIFVCb29sJiBpc0FjY2Vzc2libGUpCit7CisgICAgaWYgKGZvcndhcmQpIHsKKyAgICAgICAg
aWYgKG5hdGl2ZUluZGV4ID49IHRleHQtPmNodW5rTmF0aXZlU3RhcnQgJiYgbmF0aXZlSW5kZXgg
PCB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0KSB7CisgICAgICAgICAgICBpbnQ2NF90IG9mZnNldCA9
IG5hdGl2ZUluZGV4IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAgICAgICAgIC8vIEVu
c3VyZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBmb3JtZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2Vl
ZHMgaW50MzJfdCByYW5nZS4KKyAgICAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNl
dCA9IG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDA7CisgICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBU
UlVFOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5h
dGl2ZUluZGV4ID49IG5hdGl2ZUxlbmd0aCAmJiB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID09IG5h
dGl2ZUxlbmd0aCkgeworICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSB0ZXh0LT5jaHVu
a0xlbmd0aDsKKyAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IEZBTFNFOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAobmF0aXZl
SW5kZXggPiB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ICYmIG5hdGl2ZUluZGV4IDw9IHRleHQtPmNo
dW5rTmF0aXZlTGltaXQpIHsKKyAgICAgICAgICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5k
ZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OworICAgICAgICAgICAgLy8gRW5zdXJlIGNodW5r
IG9mZnNldCBpcyB3ZWxsIGZvcm1lZCBpZiBjb21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQzMl90
IHJhbmdlLgorICAgICAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1heCgpKTsKKyAgICAgICAgICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gb2Zmc2V0
IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQz
Ml90PihvZmZzZXQpIDogMDsKKyAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IFRSVUU7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAobmF0aXZlSW5kZXgg
PD0gMCAmJiAhdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCkgeworICAgICAgICAgICAgdGV4dC0+Y2h1
bmtPZmZzZXQgPSAwOworICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gRkFMU0U7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVUZXh0UHJvdmlkZXJfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGlu
MS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRl
eHRQcm92aWRlckxhdGluMS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJVVGV4dFByb3ZpZGVyTGF0aW4xLmgiCisKKyNpbmNsdWRlICJVVGV4dFByb3ZpZGVyLmgiCisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0YXRpYyBpbmxpbmUgVVRleHRQcm92aWRlckNvbnRleHQgdGV4dExhdGluMUdldEN1cnJlbnRD
b250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0KQoreworICAgIGlmICghdGV4dC0+Y2h1bmtDb250ZW50
cykKKyAgICAgICAgcmV0dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpOb0NvbnRleHQ7CisgICAg
cmV0dXJuIHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cEV4dHJhID8gVVRleHRQcm92aWRl
ckNvbnRleHQ6OlByaW1hcnlDb250ZXh0IDogVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW9yQ29u
dGV4dDsKK30KKworc3RhdGljIHZvaWQgdGV4dExhdGluMU1vdmVJblByaW1hcnlDb250ZXh0KFVU
ZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJv
b2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5w
RXh0cmEpOworICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAgIEFTU0VSVChuYXRpdmVJbmRleCA+
PSB0ZXh0LT5iICYmIG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoKTsKKyAgICAgICAgdGV4dC0+
Y2h1bmtOYXRpdmVTdGFydCA9IG5hdGl2ZUluZGV4OworICAgICAgICB0ZXh0LT5jaHVua05hdGl2
ZUxpbWl0ID0gbmF0aXZlSW5kZXggKyB0ZXh0LT5leHRyYVNpemUgLyBzaXplb2YoVUNoYXIpOwor
ICAgICAgICBpZiAodGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA+IG5hdGl2ZUxlbmd0aCkKKyAgICAg
ICAgICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVMZW5ndGg7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgQVNTRVJUKG5hdGl2ZUluZGV4ID4gdGV4dC0+YiAmJiBuYXRpdmVJbmRleCA8
PSBuYXRpdmVMZW5ndGgpOworICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gbmF0aXZl
SW5kZXg7CisgICAgICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSBuYXRpdmVJbmRleCAtIHRl
eHQtPmV4dHJhU2l6ZSAvIHNpemVvZihVQ2hhcik7CisgICAgICAgIGlmICh0ZXh0LT5jaHVua05h
dGl2ZVN0YXJ0IDwgdGV4dC0+YikKKyAgICAgICAgICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQg
PSB0ZXh0LT5iOworICAgIH0KKyAgICBpbnQ2NF90IGxlbmd0aCA9IHRleHQtPmNodW5rTmF0aXZl
TGltaXQgLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OworICAgIC8vIEVuc3VyZSBjaHVuayBsZW5n
dGggaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIGxlbmd0aCBleGNlZWRzIGludDMyX3QgcmFu
Z2UuCisgICAgQVNTRVJUKGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1h
eCgpKTsKKyAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7Cisg
ICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOworICAgIHRl
eHQtPmNodW5rT2Zmc2V0ID0gZm9yd2FyZCA/IDAgOiB0ZXh0LT5jaHVua0xlbmd0aDsKKyAgICBT
dHJpbmdJbXBsOjpjb3B5Q2hhcnMoY29uc3RfY2FzdDxVQ2hhcio+KHRleHQtPmNodW5rQ29udGVu
dHMpLCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KHRleHQtPnApICsgKHRleHQtPmNodW5rTmF0
aXZlU3RhcnQgLSB0ZXh0LT5iKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRleHQtPmNodW5rTGVu
Z3RoKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRMYXRpbjFTd2l0Y2hUb1ByaW1hcnlDb250ZXh0
KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwg
VUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQoIXRleHQtPmNodW5rQ29udGVudHMgfHwgdGV4
dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5xKTsKKyAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0g
c3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5wRXh0cmEpOworICAgIHRleHRMYXRpbjFN
b3ZlSW5QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3
YXJkKTsKK30KKworc3RhdGljIHZvaWQgdGV4dExhdGluMU1vdmVJblByaW9yQ29udGV4dChVVGV4
dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29s
IGZvcndhcmQpCit7CisgICAgQVNTRVJUKHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cSk7
CisgICAgQVNTRVJUKGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IHRleHQtPmIgOiBuYXRpdmVJbmRl
eCA8PSB0ZXh0LT5iKTsKKyAgICBBU1NFUlRfVU5VU0VEKG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCA/
IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3Ro
KTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5h
dGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7CisgICAgdGV4dC0+Y2h1
bmtOYXRpdmVTdGFydCA9IDA7CisgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IHRleHQtPmI7
CisgICAgdGV4dC0+Y2h1bmtMZW5ndGggPSB0ZXh0LT5iOworICAgIHRleHQtPm5hdGl2ZUluZGV4
aW5nTGltaXQgPSB0ZXh0LT5jaHVua0xlbmd0aDsKKyAgICBpbnQ2NF90IG9mZnNldCA9IG5hdGl2
ZUluZGV4IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAvLyBFbnN1cmUgY2h1bmsgb2Zm
c2V0IGlzIHdlbGwgZGVmaW5lZCBpZiBjb21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQzMl90IHJh
bmdlIG9yIGNodW5rIGxlbmd0aC4KKyAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWF4KCkpOworICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gc3RkOjptaW4o
b2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2Fz
dDxpbnQzMl90PihvZmZzZXQpIDogMCwgdGV4dC0+Y2h1bmtMZW5ndGgpOworfQorCitzdGF0aWMg
dm9pZCB0ZXh0TGF0aW4xU3dpdGNoVG9QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3Qg
bmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQoreworICAg
IEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRl
eHQtPnBFeHRyYSk7CisgICAgdGV4dC0+Y2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0
IFVDaGFyKj4odGV4dC0+cSk7CisgICAgdGV4dExhdGluMU1vdmVJblByaW9yQ29udGV4dCh0ZXh0
LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKK30KKworLy8gLS0gQmVnaW4g
TGF0aW4tMSBwcm92aWRlciBmdW5jdGlvbnMgLS0KKworc3RhdGljIFVUZXh0KiB1VGV4dExhdGlu
MUNsb25lKFVUZXh0KiwgY29uc3QgVVRleHQqLCBVQm9vbCwgVUVycm9yQ29kZSopOworc3RhdGlj
IGludDY0X3QgdVRleHRMYXRpbjFOYXRpdmVMZW5ndGgoVVRleHQqKTsgCitzdGF0aWMgVUJvb2wg
dVRleHRMYXRpbjFBY2Nlc3MoVVRleHQqLCBpbnQ2NF90LCBVQm9vbCk7IAorc3RhdGljIGludDMy
X3QgdVRleHRMYXRpbjFFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBp
bnQzMl90LCBVRXJyb3JDb2RlKik7IAorc3RhdGljIHZvaWQgdVRleHRMYXRpbjFDbG9zZShVVGV4
dCopOworCitzdGF0aWMgVVRleHQqIHVUZXh0TGF0aW4xQ2xvbmUoVVRleHQqIGRlc3RpbmF0aW9u
LCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpCit7
CisgICAgcmV0dXJuIHVUZXh0Q2xvbmVJbXBsKGRlc3RpbmF0aW9uLCBzb3VyY2UsIGRlZXAsIHN0
YXR1cyk7Cit9CisKK3N0YXRpYyBpbnQ2NF90IHVUZXh0TGF0aW4xTmF0aXZlTGVuZ3RoKFVUZXh0
KiB0ZXh0KQoreworICAgIHJldHVybiB0ZXh0LT5hICsgdGV4dC0+YjsKK30KKworc3RhdGljIFVC
b29sIHVUZXh0TGF0aW4xQWNjZXNzKFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBV
Qm9vbCBmb3J3YXJkKQoreworICAgIGlmICghdGV4dC0+Y29udGV4dCkKKyAgICAgICAgcmV0dXJu
IEZBTFNFOworICAgIGludDY0X3QgbmF0aXZlTGVuZ3RoID0gdVRleHRMYXRpbjFOYXRpdmVMZW5n
dGgodGV4dCk7CisgICAgVUJvb2wgaXNBY2Nlc3NpYmxlOworICAgIGlmICh1VGV4dEFjY2Vzc0lu
Q2h1bmtPck91dE9mUmFuZ2UodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2Fy
ZCwgaXNBY2Nlc3NpYmxlKSkKKyAgICAgICAgcmV0dXJuIGlzQWNjZXNzaWJsZTsKKyAgICBuYXRp
dmVJbmRleCA9IHVUZXh0QWNjZXNzUGluSW5kZXgobmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCk7
CisgICAgVVRleHRQcm92aWRlckNvbnRleHQgY3VycmVudENvbnRleHQgPSB0ZXh0TGF0aW4xR2V0
Q3VycmVudENvbnRleHQodGV4dCk7CisgICAgVVRleHRQcm92aWRlckNvbnRleHQgbmV3Q29udGV4
dCA9IHVUZXh0UHJvdmlkZXJDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBmb3J3YXJkKTsKKyAg
ICBBU1NFUlQobmV3Q29udGV4dCAhPSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250ZXh0KTsK
KyAgICBpZiAobmV3Q29udGV4dCA9PSBjdXJyZW50Q29udGV4dCkgeworICAgICAgICBpZiAoY3Vy
cmVudENvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQorICAg
ICAgICAgICAgdGV4dExhdGluMU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4
LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXh0
TGF0aW4xTW92ZUluUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgs
IGZvcndhcmQpOworICAgIH0gZWxzZSBpZiAobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29u
dGV4dDo6UHJpbWFyeUNvbnRleHQpCisgICAgICAgIHRleHRMYXRpbjFTd2l0Y2hUb1ByaW1hcnlD
b250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgIGVs
c2UgeworICAgICAgICBBU1NFUlQobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6
UHJpb3JDb250ZXh0KTsKKyAgICAgICAgdGV4dExhdGluMVN3aXRjaFRvUHJpb3JDb250ZXh0KHRl
eHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgIH0KKyAgICByZXR1
cm4gVFJVRTsKK30KKworc3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFFeHRyYWN0KFVUZXh0Kiwg
aW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKiBlcnJvckNvZGUp
Cit7CisgICAgLy8gSW4gdGhlIHByZXNlbnQgY29udGV4dCwgdGhpcyB0ZXh0IHByb3ZpZGVyIGlz
IHVzZWQgb25seSB3aXRoIElDVSBmdW5jdGlvbnMKKyAgICAvLyB0aGF0IGRvIG5vdCBwZXJmb3Jt
IGFuIGV4dHJhY3Qgb3BlcmF0aW9uLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICpl
cnJvckNvZGUgPSBVX1VOU1VQUE9SVEVEX0VSUk9SOworICAgIHJldHVybiAwOworfQorCitzdGF0
aWMgdm9pZCB1VGV4dExhdGluMUNsb3NlKFVUZXh0KiB0ZXh0KQoreworICAgIHRleHQtPmNvbnRl
eHQgPSAwOworfQorCisvLyAtLSBFbmQgTGF0aW4tMSBwcm92aWRlciBmdW5jdGlvbnMgLS0KKwor
c3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHRleHRMYXRpbjFGdW5jcyA9IHsKKyAgICBz
aXplb2YoVVRleHRGdW5jcyksCisgICAgMCwgMCwgMCwKKyAgICB1VGV4dExhdGluMUNsb25lLAor
ICAgIHVUZXh0TGF0aW4xTmF0aXZlTGVuZ3RoLAorICAgIHVUZXh0TGF0aW4xQWNjZXNzLAorICAg
IHVUZXh0TGF0aW4xRXh0cmFjdCwKKyAgICAwLCAwLCAwLCAwLAorICAgIHVUZXh0TGF0aW4xQ2xv
c2UsCisgICAgMCwgMCwgMCwKK307CisKK1VUZXh0KiB1VGV4dE9wZW5MYXRpbjEoVVRleHRXaXRo
QnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0
aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29udGV4dExlbmd0aCwgVUVy
cm9yQ29kZSogc3RhdHVzKQoreworICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCisgICAgICAg
IHJldHVybiAwOworICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpIHsKKyAgICAgICAgKnN0
YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorICAgIFVUZXh0KiB0ZXh0ID0gdXRleHRfc2V0dXAoJnV0V2l0aEJ1ZmZlci0+dGV4dCwgc2l6
ZW9mKHV0V2l0aEJ1ZmZlci0+YnVmZmVyKSwgc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKCpz
dGF0dXMpKSB7CisgICAgICAgIEFTU0VSVCghdGV4dCk7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICB1VGV4dEluaXRpYWxpemUodGV4dCwgJnRleHRMYXRpbjFGdW5jcywgc3RyaW5nLCBs
ZW5ndGgsIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoKTsKKyAgICByZXR1cm4gdGV4
dDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJM
YXRpbjEuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBVVGV4dFByb3ZpZGVyTGF0aW4xX2gKKyNkZWZpbmUgVVRleHRQcm92aWRlckxhdGluMV9o
CisKKyNpbmNsdWRlIDx1bmljb2RlL3V0ZXh0Lmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5p
Y29kZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IGludCBVVGV4dFdpdGhCdWZm
ZXJJbmxpbmVDYXBhY2l0eSA9IDE2OworCitzdHJ1Y3QgVVRleHRXaXRoQnVmZmVyIHsKKyAgICBV
VGV4dCB0ZXh0OworICAgIFVDaGFyIGJ1ZmZlcltVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0
eV07Cit9OworCitVVGV4dCogdVRleHRPcGVuTGF0aW4xKFVUZXh0V2l0aEJ1ZmZlciogdXRXaXRo
QnVmZmVyLCBjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFy
KiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgsIFVFcnJvckNvZGUqIHN0YXR1
cyk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVUZXh0UHJvdmlkZXJM
YXRpbjFfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92
aWRlclVURjE2LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJVVGV4dFByb3ZpZGVyVVRGMTYuaCIKKworI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXIu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5saW5lIFVUZXh0UHJvdmlkZXJD
b250ZXh0IHRleHRVVEYxNkdldEN1cnJlbnRDb250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0KQorewor
ICAgIGlmICghdGV4dC0+Y2h1bmtDb250ZW50cykKKyAgICAgICAgcmV0dXJuIFVUZXh0UHJvdmlk
ZXJDb250ZXh0OjpOb0NvbnRleHQ7CisgICAgcmV0dXJuIHRleHQtPmNodW5rQ29udGVudHMgPT0g
dGV4dC0+cCA/IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCA6IFVUZXh0UHJv
dmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRVVEYxNk1v
dmVJblByaW1hcnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2
NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQodGV4dC0+Y2h1
bmtDb250ZW50cyA9PSB0ZXh0LT5wKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndh
cmQgPyBuYXRpdmVJbmRleCA+PSB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPiB0ZXh0LT5iKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxl
bmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7CisgICAgdGV4dC0+Y2h1bmtOYXRp
dmVTdGFydCA9IHRleHQtPmI7CisgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxl
bmd0aDsKKyAgICBpbnQ2NF90IGxlbmd0aCA9IHRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB0ZXh0
LT5jaHVua05hdGl2ZVN0YXJ0OworICAgIC8vIEVuc3VyZSBjaHVuayBsZW5ndGggaXMgd2VsbCBk
ZWZpbmVkIGlmIGNvbXB1dGVkIGxlbmd0aCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCisgICAgQVNT
RVJUKGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKKyAgICB0
ZXh0LT5jaHVua0xlbmd0aCA9IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7CisgICAgdGV4dC0+bmF0
aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOworICAgIGludDY0X3Qgb2Zmc2V0
ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OworICAgIC8vIEVuc3VyZSBj
aHVuayBvZmZzZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGlu
dDMyX3QgcmFuZ2Ugb3IgY2h1bmsgbGVuZ3RoLgorICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBz
dGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0
YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Cit9CisK
K3N0YXRpYyB2b2lkIHRleHRVVEYxNlN3aXRjaFRvUHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQs
IGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJk
KQoreworICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRl
bnRzID09IHRleHQtPnEpOworICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxj
b25zdCBVQ2hhcio+KHRleHQtPnApOworICAgIHRleHRVVEYxNk1vdmVJblByaW1hcnlDb250ZXh0
KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworfQorCitzdGF0aWMg
dm9pZCB0ZXh0VVRGMTZNb3ZlSW5QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0
aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQoreworICAgIEFT
U0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOworICAgIEFTU0VSVChmb3J3YXJk
ID8gbmF0aXZlSW5kZXggPCB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPD0gdGV4dC0+Yik7CisgICAg
QVNTRVJUX1VOVVNFRChuYXRpdmVMZW5ndGgsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2
ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7CisgICAgQVNTRVJUX1VOVVNF
RChmb3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJ
bmRleCA8PSBuYXRpdmVMZW5ndGgpOworICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSAwOwor
ICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSB0ZXh0LT5iOworICAgIHRleHQtPmNodW5rTGVu
Z3RoID0gdGV4dC0+YjsKKyAgICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1
bmtMZW5ndGg7CisgICAgaW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5r
TmF0aXZlU3RhcnQ7CisgICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGRlZmluZWQg
aWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZSBvciBjaHVuayBsZW5ndGgu
CisgICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgp
KTsKKyAgICB0ZXh0LT5jaHVua09mZnNldCA9IHN0ZDo6bWluKG9mZnNldCA8IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6
IDAsIHRleHQtPmNodW5rTGVuZ3RoKTsKK30KKworc3RhdGljIHZvaWQgdGV4dFVURjE2U3dpdGNo
VG9QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3Qg
bmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQoreworICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtD
b250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnApOworICAgIHRleHQtPmNo
dW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnEpOworICAgIHRl
eHRVVEYxNk1vdmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3Ro
LCBmb3J3YXJkKTsKK30KKworLy8gLS0gQmVnaW4gVVRGLTE2IHByb3ZpZGVyIGZ1bmN0aW9ucyAt
LQorCitzdGF0aWMgVVRleHQqIHVUZXh0VVRGMTZDbG9uZShVVGV4dCosIGNvbnN0IFVUZXh0Kiwg
VUJvb2wsIFVFcnJvckNvZGUqKTsKK3N0YXRpYyBpbnQ2NF90IHVUZXh0VVRGMTZOYXRpdmVMZW5n
dGgoVVRleHQqKTsKK3N0YXRpYyBVQm9vbCB1VGV4dFVURjE2QWNjZXNzKFVUZXh0KiwgaW50NjRf
dCwgVUJvb2wpOworc3RhdGljIGludDMyX3QgdVRleHRVVEYxNkV4dHJhY3QoVVRleHQqLCBpbnQ2
NF90LCBpbnQ2NF90LCBVQ2hhciosIGludDMyX3QsIFVFcnJvckNvZGUqKTsKK3N0YXRpYyB2b2lk
IHVUZXh0VVRGMTZDbG9zZShVVGV4dCopOworCitzdGF0aWMgVVRleHQqIHVUZXh0VVRGMTZDbG9u
ZShVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVCb29sIGRlZXAsIFVF
cnJvckNvZGUqIHN0YXR1cykKK3sKKyAgICByZXR1cm4gdVRleHRDbG9uZUltcGwoZGVzdGluYXRp
b24sIHNvdXJjZSwgZGVlcCwgc3RhdHVzKTsKK30KKworc3RhdGljIGlubGluZSBpbnQ2NF90IHVU
ZXh0VVRGMTZOYXRpdmVMZW5ndGgoVVRleHQqIHRleHQpCit7CisgICAgcmV0dXJuIHRleHQtPmEg
KyB0ZXh0LT5iOworfQorCitzdGF0aWMgVUJvb2wgdVRleHRVVEYxNkFjY2VzcyhVVGV4dCogdGV4
dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBpZiAoIXRleHQt
PmNvbnRleHQpCisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICBpbnQ2NF90IG5hdGl2ZUxlbmd0
aCA9IHVUZXh0VVRGMTZOYXRpdmVMZW5ndGgodGV4dCk7CisgICAgVUJvb2wgaXNBY2Nlc3NpYmxl
OworICAgIGlmICh1VGV4dEFjY2Vzc0luQ2h1bmtPck91dE9mUmFuZ2UodGV4dCwgbmF0aXZlSW5k
ZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCwgaXNBY2Nlc3NpYmxlKSkKKyAgICAgICAgcmV0dXJu
IGlzQWNjZXNzaWJsZTsKKyAgICBuYXRpdmVJbmRleCA9IHVUZXh0QWNjZXNzUGluSW5kZXgobmF0
aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCk7CisgICAgVVRleHRQcm92aWRlckNvbnRleHQgY3VycmVu
dENvbnRleHQgPSB0ZXh0VVRGMTZHZXRDdXJyZW50Q29udGV4dCh0ZXh0KTsKKyAgICBVVGV4dFBy
b3ZpZGVyQ29udGV4dCBuZXdDb250ZXh0ID0gdVRleHRQcm92aWRlckNvbnRleHQodGV4dCwgbmF0
aXZlSW5kZXgsIGZvcndhcmQpOworICAgIEFTU0VSVChuZXdDb250ZXh0ICE9IFVUZXh0UHJvdmlk
ZXJDb250ZXh0OjpOb0NvbnRleHQpOworICAgIGlmIChuZXdDb250ZXh0ID09IGN1cnJlbnRDb250
ZXh0KSB7CisgICAgICAgIGlmIChjdXJyZW50Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4
dDo6UHJpbWFyeUNvbnRleHQpCisgICAgICAgICAgICB0ZXh0VVRGMTZNb3ZlSW5QcmltYXJ5Q29u
dGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgdGV4dFVURjE2TW92ZUluUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2
ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgIH0gZWxzZSBpZiAobmV3Q29udGV4
dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQpCisgICAgICAgIHRleHRV
VEYxNlN3aXRjaFRvUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0
aCwgZm9yd2FyZCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChuZXdDb250ZXh0ID09IFVU
ZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQpOworICAgICAgICB0ZXh0VVRGMTZTd2l0
Y2hUb1ByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJk
KTsKKyAgICB9CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBpbnQzMl90IHVUZXh0VVRG
MTZFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJy
b3JDb2RlKiBlcnJvckNvZGUpCit7CisgICAgLy8gSW4gdGhlIHByZXNlbnQgY29udGV4dCwgdGhp
cyB0ZXh0IHByb3ZpZGVyIGlzIHVzZWQgb25seSB3aXRoIElDVSBmdW5jdGlvbnMKKyAgICAvLyB0
aGF0IGRvIG5vdCBwZXJmb3JtIGFuIGV4dHJhY3Qgb3BlcmF0aW9uLgorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICplcnJvckNvZGUgPSBVX1VOU1VQUE9SVEVEX0VSUk9SOworICAgIHJl
dHVybiAwOworfQorCitzdGF0aWMgdm9pZCB1VGV4dFVURjE2Q2xvc2UoVVRleHQqIHRleHQpCit7
CisgICAgdGV4dC0+Y29udGV4dCA9IDA7Cit9CisKKy8vIC0tIEVuZCBVVEYtMTYgcHJvdmlkZXIg
ZnVuY3Rpb25zIC0tCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgVVRleHRGdW5jcyB0ZXh0VVRGMTZG
dW5jcyA9IHsKKyAgICBzaXplb2YoVVRleHRGdW5jcyksCisgICAgMCwgMCwgMCwKKyAgICB1VGV4
dFVURjE2Q2xvbmUsCisgICAgdVRleHRVVEYxNk5hdGl2ZUxlbmd0aCwKKyAgICB1VGV4dFVURjE2
QWNjZXNzLAorICAgIHVUZXh0VVRGMTZFeHRyYWN0LAorICAgIDAsIDAsIDAsIDAsCisgICAgdVRl
eHRVVEYxNkNsb3NlLAorICAgIDAsIDAsIDAsCit9OworCitVVGV4dCogdVRleHRPcGVuVVRGMTYo
VVRleHQqIHRleHQsIGNvbnN0IFVDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3Qg
VUNoYXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29udGV4dExlbmd0aCwgVUVycm9yQ29kZSog
c3RhdHVzKQoreworICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCisgICAgICAgIHJldHVybiAw
OworICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpIHsKKyAgICAgICAgKnN0YXR1cyA9IFVf
SUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHRl
eHQgPSB1dGV4dF9zZXR1cCh0ZXh0LCAwLCBzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoKnN0
YXR1cykpIHsKKyAgICAgICAgQVNTRVJUKCF0ZXh0KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorICAgIHVUZXh0SW5pdGlhbGl6ZSh0ZXh0LCAmdGV4dFVURjE2RnVuY3MsIHN0cmluZywgbGVu
Z3RoLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7CisgICAgcmV0dXJuIHRleHQ7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
VVRleHRQcm92aWRlclVURjE2X2gKKyNkZWZpbmUgVVRleHRQcm92aWRlclVURjE2X2gKKworI2lu
Y2x1ZGUgPHVuaWNvZGUvdXRleHQuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVVRleHQqIHVUZXh0T3BlblVURjE2KFVUZXh0Kiwg
Y29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQs
IGludCBwcmlvckNvbnRleHRMZW5ndGgsIFVFcnJvckNvZGUqKTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gVVRleHRQcm92aWRlclVURjE2X2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220958</attachid>
            <date>2014-01-11 21:54:39 -0800</date>
            <delta_ts>2014-01-12 10:35:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126834-20140111215439.patch</filename>
            <type>text/plain</type>
            <size>71245</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTc5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE0LTAxLTExICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3BsaXQgSUNVIFVUZXh0IHByb3ZpZGVy
cyBvdXQgaW50byB0aGVpciBvd24gZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vdmVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBvdXIgY3VzdG9t
IFVUZXh0IHByb3ZpZGVycyBvdXQgaW50bworICAgICAgICB0aGVpciBvd24gZmlsZXMuCisgICAg
ICAgIC0gVVRleHRQcm92aWRlckxhdGluMS5oL2NwcCBjb250YWlucyB0aGUgTGF0aW4tMSBwcm92
aWRlci4KKyAgICAgICAgLSBVVGV4dFByb3ZpZGVyVVRGMTYuaC9jcHAgY29udGFpbnMgdGhlIFVU
Ri0xNiBwcm92aWRlci4KKyAgICAgICAgLSBVVGV4dFByb3ZpZGVyLmgvY3BwIGNvbnRhaW5zIGNv
ZGUgY29tbW9uIHRvIGFsbCB0aGUgcHJvdmlkZXJzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybUdU
Sy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZUNvbW1vbi5wcm9wczoK
KyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9UZXh0QWxsSW5PbmUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3JJQ1UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0VXBJdGVyYXRvcik6
CisgICAgICAgIChXZWJDb3JlOjp3b3JkQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjphY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2VudGVuY2VC
cmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFVwSXRlcmF0b3JXaXRoUnVsZXMp
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvaWN1OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpm
aXhQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0Q2xvbmVJbXBsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6dVRleHRQcm92aWRlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6dVRleHRJbml0
aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0QWNjZXNzUGluSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6dVRleHRBY2Nlc3NJbkNodW5rT3JPdXRPZlJhbmdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuaDogQWRkZWQuCisK
IDIwMTQtMDEtMTEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbaU9TXSBGaXggYnVpbGQgb2YgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWdpc3RlckFsbFZp
ZXdwb3J0Q29uc3RyYWluZWRMYXllcnMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDE2MTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw2ICs3Nyw3IEBAIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAg
ICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yayIKICAgICAiJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vc3FsIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0IgorICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0L2ljdSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGx1
Z2lucyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcmVuZGVyaW5nIgogICAgICIke1dFQkNPUkVfRElS
fS9yZW5kZXJpbmcvbGluZSIKQEAgLTI4MDEsNiArMjgwMiw5IEBAIGVuZGlmICgpCiAKIGlmIChX
VEZfVVNFX0lDVV9VTklDT0RFKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAg
ICAgICBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmNwcAorICAgICAgICBwbGF0Zm9y
bS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcAorICAgICAgICBwbGF0Zm9ybS90ZXh0
L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwCiAgICAgICAgIHBsYXRmb3JtL3RleHQvVGV4dEJy
ZWFrSXRlcmF0b3JJQ1UuY3BwCiAgICAgICAgIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNw
cAogICAgICAgICBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcApJbmRl
eDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDE2MTc5NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5MCw3IEBAIHdlYmNvcmVf
Y3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvZ3RrIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwgXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQgXAorCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ljdSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zIFwKIAkt
SSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbiBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE2MTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTU5NzMsNiArNTk3MywxMiBAQCBw
bGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1NoYXJl
ZEJ1ZmZlclNvdXAuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2VuY2hhbnQv
VGV4dENoZWNrZXJFbmNoYW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5j
aGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9pY3UvVVRleHRQcm92aWRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lj
dS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9CaWRpQ29udGV4dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
QmlkaUNvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2
ZXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQkocmV2aXNpb24gMTYxNzk0KQor
KysgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTIw
LDYgKzIwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsvZ3RrIgogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3Rl
eHQvZ3RrIgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0L2ljdSIKICAgICAiJHtX
RUJDT1JFX0RJUn0vcGx1Z2lucy9ndGsiCiApCiAKQEAgLTEyOCw2ICsxMjksOSBAQCBsaXN0KEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291
cC5jcHAKIAorICAgIHBsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwCisgICAgcGxh
dGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5jcHAKKyAgICBwbGF0Zm9ybS90ZXh0
L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1Uu
Y3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHAKICAgICBwbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKQEAgLTI1NSw2ICsyNTksOSBAQCBsaXN0KEFQUEVO
RCBXZWJDb3JlUGxhdGZvcm1HVEtfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vc291cC9TaGFyZWRC
dWZmZXJTb3VwLmNwcAogCisgICAgcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAK
KyAgICBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcAorICAgIHBsYXRm
b3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L0xv
Y2FsZUlDVS5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySUNVLmNwcAog
ICAgIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmVDb21tb24ucHJvcHMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmVDb21tb24ucHJvcHMJKHJldmlzaW9uIDE2
MTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlQ29tbW9uLnBy
b3BzCSh3b3JraW5nIGNvcHkpCkBAIC03LDcgKzcsNyBAQAogICA8L1Byb3BlcnR5R3JvdXA+CiAg
IDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXE1vZHVs
ZXNcbWVkaWFjb250cm9sczskKFByb2plY3REaXIpLi5cTW9kdWxlc1xtZWRpYXN0cmVhbTskKFBy
b2plY3REaXIpLi5cTW9kdWxlc1xmaWxlc3lzdGVtOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXGdl
b2xvY2F0aW9uOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXGluZGV4ZWRkYjskKFByb2plY3REaXIp
Li5cTW9kdWxlc1xtZWRpYXNvdXJjZTskKFByb2plY3REaXIpLi5cTW9kdWxlc1xuYXZpZ2F0b3Jj
b250ZW50dXRpbHM7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNccGx1Z2luczskKFByb2plY3REaXIp
Li5cTW9kdWxlc1xzcGVlY2g7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNccHJveGltaXR5OyQoUHJv
amVjdERpcikuLlxNb2R1bGVzXHF1b3RhOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXG5vdGlmaWNh
dGlvbnM7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcd2ViZGF0YWJhc2U7JChQcm9qZWN0RGlyKS4u
XE1vZHVsZXNcd2Vic29ja2V0czskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eTskKFByb2pl
Y3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW47JChQcm9qZWN0RGlyKS4uXGJyaWRnZTskKFByb2pl
Y3REaXIpLi5cYnJpZGdlXGM7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVxqc2M7JChQcm9qZWN0RGly
KS4uXGNzczskKFByb2plY3REaXIpLi5cZWRpdGluZzskKFByb2plY3REaXIpLi5cZmlsZWFwaTsk
KFByb2plY3REaXIpLi5ccmVuZGVyaW5nOyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcbGluZTsk
KFByb2plY3REaXIpLi5ccmVuZGVyaW5nXG1hdGhtbDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5n
XHNoYXBlczskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXHN0eWxlOyQoUHJvamVjdERpcikuLlxy
ZW5kZXJpbmdcc3ZnOyQoUHJvamVjdERpcikuLlxiaW5kaW5nczskKFByb2plY3REaXIpLi5cYmlu
ZGluZ3NcZ2VuZXJpYzskKFByb2plY3REaXIpLi5cYmluZGluZ3NcanM7JChQcm9qZWN0RGlyKS4u
XGJpbmRpbmdzXGpzXHNwZWNpYWxpemF0aW9uOyQoUHJvamVjdERpcikuLlxkb207JChQcm9qZWN0
RGlyKS4uXGRvbVxkZWZhdWx0OyQoUHJvamVjdERpcikuLlxoaXN0b3J5OyQoUHJvamVjdERpciku
LlxodG1sOyQoUHJvamVjdERpcikuLlxodG1sXGNhbnZhczskKFByb2plY3REaXIpLi5caHRtbFxm
b3JtczskKFByb2plY3REaXIpLi5caHRtbFxwYXJzZXI7JChQcm9qZWN0RGlyKS4uXGh0bWxcc2hh
ZG93OyQoUHJvamVjdERpcikuLlxodG1sXHRyYWNrOyQoUHJvamVjdERpcikuLlxpbnNwZWN0b3I7
JChQcm9qZWN0RGlyKS4uXGxvYWRlcjskKFByb2plY3REaXIpLi5cbG9hZGVyXGFwcGNhY2hlOyQo
UHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZTskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hp
dmVcY2Y7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxjYWNoZTskKFByb2plY3REaXIpLi5cbG9hZGVy
XGljb247JChQcm9qZWN0RGlyKS4uXG1hdGhtbDskKFByb2plY3REaXIpLi5ccGFnZTskKFByb2pl
Y3REaXIpLi5ccGFnZVxhbmltYXRpb247JChQcm9qZWN0RGlyKS4uXHBhZ2Vcc2Nyb2xsaW5nOyQo
UHJvamVjdERpcikuLlxwYWdlXHdpbjskKFByb2plY3REaXIpLi5ccGxhdGZvcm07JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXGFuaW1hdGlvbjskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYXVkaW87
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG1vY2s7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNx
bDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxu
ZXR3b3JrOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdpbjskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cY2Y7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzOyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xjYTskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3Jh
cGhpY3NcY3B1XGFybVxmaWx0ZXJzOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xm
aWx0ZXJzOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXGFybTskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGU7JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXGdyYXBoaWNzXHRyYW5zZm9ybXM7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHQ7
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHRcdHJhbnNjb2RlcjskKFByb2plY3REaXIpLi5c
cGxhdGZvcm1cZ3JhcGhpY3Ncd2luOyQoUHJvamVjdERpcikuLlx4bWw7JChQcm9qZWN0RGlyKS4u
XHhtbFxwYXJzZXI7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXM7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnM7JChQ
cm9qZWN0RGlyKS4uXHBsdWdpbnNcd2luOyQoUHJvamVjdERpcikuLlxzdmdcYW5pbWF0aW9uOyQo
UHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3M7JChQcm9qZWN0RGlyKS4uXHN2Z1xwcm9wZXJ0aWVz
OyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3NcZmlsdGVyczskKFByb2plY3REaXIpLi5cc3Zn
OyQoUHJvamVjdERpcikuLlx0ZXN0aW5nOyQoUHJvamVjdERpcikuLlxjcnlwdG87JChQcm9qZWN0
RGlyKS4uXGNyeXB0b1xrZXlzOyQoUHJvamVjdERpcikuLlx3bWw7JChQcm9qZWN0RGlyKS4uXHN0
b3JhZ2U7JChQcm9qZWN0RGlyKS4uXHN0eWxlOyQoUHJvamVjdERpcikuLlx3ZWJzb2NrZXRzOyQo
UHJvamVjdERpcikuLlx3b3JrZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlOyQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVp
bGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGlu
Y2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTskKFByb2plY3REaXIpLi5cRm9yd2FyZGluZ0hl
YWRlcnM7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGdwdTskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcZWdsOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGlj
c1xzdXJmYWNlczskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncc3VyZmFjZXNcZWds
OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVuZ2w7JChXZWJLaXRfTGlicmFy
aWVzKVxpbmNsdWRlOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZVxwcml2YXRlOyQoV2ViS2l0
X0xpYnJhcmllcylcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyQoV2ViS2l0X0xpYnJh
cmllcylcaW5jbHVkZVxzcWxpdGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXEphdmFTY3Jp
cHRDb3JlOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZVx6bGliOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4u
XE1vZHVsZXNcbWVkaWFjb250cm9sczskKFByb2plY3REaXIpLi5cTW9kdWxlc1xtZWRpYXN0cmVh
bTskKFByb2plY3REaXIpLi5cTW9kdWxlc1xmaWxlc3lzdGVtOyQoUHJvamVjdERpcikuLlxNb2R1
bGVzXGdlb2xvY2F0aW9uOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXGluZGV4ZWRkYjskKFByb2pl
Y3REaXIpLi5cTW9kdWxlc1xtZWRpYXNvdXJjZTskKFByb2plY3REaXIpLi5cTW9kdWxlc1xuYXZp
Z2F0b3Jjb250ZW50dXRpbHM7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNccGx1Z2luczskKFByb2pl
Y3REaXIpLi5cTW9kdWxlc1xzcGVlY2g7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNccHJveGltaXR5
OyQoUHJvamVjdERpcikuLlxNb2R1bGVzXHF1b3RhOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXG5v
dGlmaWNhdGlvbnM7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcd2ViZGF0YWJhc2U7JChQcm9qZWN0
RGlyKS4uXE1vZHVsZXNcd2Vic29ja2V0czskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eTsk
KFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW47JChQcm9qZWN0RGlyKS4uXGJyaWRnZTsk
KFByb2plY3REaXIpLi5cYnJpZGdlXGM7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVxqc2M7JChQcm9q
ZWN0RGlyKS4uXGNzczskKFByb2plY3REaXIpLi5cZWRpdGluZzskKFByb2plY3REaXIpLi5cZmls
ZWFwaTskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nOyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdc
bGluZTskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXG1hdGhtbDskKFByb2plY3REaXIpLi5ccmVu
ZGVyaW5nXHNoYXBlczskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXHN0eWxlOyQoUHJvamVjdERp
cikuLlxyZW5kZXJpbmdcc3ZnOyQoUHJvamVjdERpcikuLlxiaW5kaW5nczskKFByb2plY3REaXIp
Li5cYmluZGluZ3NcZ2VuZXJpYzskKFByb2plY3REaXIpLi5cYmluZGluZ3NcanM7JChQcm9qZWN0
RGlyKS4uXGJpbmRpbmdzXGpzXHNwZWNpYWxpemF0aW9uOyQoUHJvamVjdERpcikuLlxkb207JChQ
cm9qZWN0RGlyKS4uXGRvbVxkZWZhdWx0OyQoUHJvamVjdERpcikuLlxoaXN0b3J5OyQoUHJvamVj
dERpcikuLlxodG1sOyQoUHJvamVjdERpcikuLlxodG1sXGNhbnZhczskKFByb2plY3REaXIpLi5c
aHRtbFxmb3JtczskKFByb2plY3REaXIpLi5caHRtbFxwYXJzZXI7JChQcm9qZWN0RGlyKS4uXGh0
bWxcc2hhZG93OyQoUHJvamVjdERpcikuLlxodG1sXHRyYWNrOyQoUHJvamVjdERpcikuLlxpbnNw
ZWN0b3I7JChQcm9qZWN0RGlyKS4uXGxvYWRlcjskKFByb2plY3REaXIpLi5cbG9hZGVyXGFwcGNh
Y2hlOyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZTskKFByb2plY3REaXIpLi5cbG9hZGVy
XGFyY2hpdmVcY2Y7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxjYWNoZTskKFByb2plY3REaXIpLi5c
bG9hZGVyXGljb247JChQcm9qZWN0RGlyKS4uXG1hdGhtbDskKFByb2plY3REaXIpLi5ccGFnZTsk
KFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRpb247JChQcm9qZWN0RGlyKS4uXHBhZ2Vcc2Nyb2xs
aW5nOyQoUHJvamVjdERpcikuLlxwYWdlXHdpbjskKFByb2plY3REaXIpLi5ccGxhdGZvcm07JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXGFuaW1hdGlvbjskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
YXVkaW87JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG1vY2s7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXHNxbDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luOyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxuZXR3b3JrOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdpbjskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cY2Y7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzOyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xjYTskKFByb2plY3REaXIpLi5ccGxhdGZv
cm1cZ3JhcGhpY3NcY3B1XGFybVxmaWx0ZXJzOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFw
aGljc1xmaWx0ZXJzOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXGFy
bTskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGU7JChQcm9qZWN0RGly
KS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRyYW5zZm9ybXM7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XHRleHQ7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHRcaWN1OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVx0ZXh0XHRyYW5zY29kZXI7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNz
XHdpbjskKFByb2plY3REaXIpLi5ceG1sOyQoUHJvamVjdERpcikuLlx4bWxccGFyc2VyOyQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxXZWJDb3JlXERl
cml2ZWRTb3VyY2VzOyQoUHJvamVjdERpcikuLlxwbHVnaW5zOyQoUHJvamVjdERpcikuLlxwbHVn
aW5zXHdpbjskKFByb2plY3REaXIpLi5cc3ZnXGFuaW1hdGlvbjskKFByb2plY3REaXIpLi5cc3Zn
XGdyYXBoaWNzOyQoUHJvamVjdERpcikuLlxzdmdccHJvcGVydGllczskKFByb2plY3REaXIpLi5c
c3ZnXGdyYXBoaWNzXGZpbHRlcnM7JChQcm9qZWN0RGlyKS4uXHN2ZzskKFByb2plY3REaXIpLi5c
dGVzdGluZzskKFByb2plY3REaXIpLi5cY3J5cHRvOyQoUHJvamVjdERpcikuLlxjcnlwdG9ca2V5
czskKFByb2plY3REaXIpLi5cd21sOyQoUHJvamVjdERpcikuLlxzdG9yYWdlOyQoUHJvamVjdERp
cikuLlxzdHlsZTskKFByb2plY3REaXIpLi5cd2Vic29ja2V0czskKFByb2plY3REaXIpLi5cd29y
a2VyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEph
dmFTY3JpcHRDb3JlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2
YVNjcmlwdENvcmU7JChQcm9qZWN0RGlyKS4uXEZvcndhcmRpbmdIZWFkZXJzOyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVxncmFwaGljc1xncHU7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBo
aWNzXGVnbDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncc3VyZmFjZXM7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHN1cmZhY2VzXGVnbDskKFByb2plY3REaXIpLi5c
cGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbmdsOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZTskKFdl
YktpdF9MaWJyYXJpZXMpXGluY2x1ZGVccHJpdmF0ZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1
ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVcc3Fs
aXRlOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZTskKFdlYktpdF9M
aWJyYXJpZXMpXGluY2x1ZGVcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRp
b25zPkRJU0FCTEVfM0RfUkVOREVSSU5HO1dFQkNPUkVfQ09OVEVYVF9NRU5VUzslKFByZXByb2Nl
c3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8UHJlY29t
cGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KICAgICAgIDxQcmVjb21waWxlZEhl
YWRlckZpbGU+V2ViQ29yZVByZWZpeC5oPC9QcmVjb21waWxlZEhlYWRlckZpbGU+CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovY29weUZvcndhcmRp
bmdIZWFkZXJzLmNtZAkocmV2aXNpb24gMTYxNzk0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQJKHdvcmtpbmcgY29weSkKQEAgLTU4
LDYgKzU4LDcgQEAgeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXGdyYQogeGNv
cHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXCouaCIg
IiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIl
UHJvamVjdERpciUuLlxwbGF0Zm9ybVxtb2NrXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIl
XGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVx0
ZXh0XCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKK3hjb3B5
IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVx0ZXh0XGljdVwqLmgiICIlQ09ORklHVVJB
VElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIl
Li5ccGxhdGZvcm1cdGV4dFx0cmFuc2NvZGVyXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIl
XGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVx3
aW5cKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkg
L3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXG5ldHdvcmtcKi5oIiAiJUNPTkZJR1VSQVRJ
T05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTYxNzk0KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjkyLDYgKzIyOTIsMTIgQEAKIAkJN0M1MjJENEIxNUI0NzdFODAwOUI3Qzk1
IC8qIEluc3BlY3Rvck92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0M1MjJENDkxNUI0NzdFODAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJs
YXkuY3BwICovOyB9OwogCQk3QzUzNDNGQzE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDNTM0M0ZBMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuY3BwICovOyB9OwogCQk3QzUzNDNGRDE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzUzNDNGQjE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmggKi87IH07CisJCTdDNzRENDMzMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0
aW4xLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
NzRENDMxMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCAqLzsgfTsK
KwkJN0M3NEQ0MzQxODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDMyMTg4MjNB
OTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmggKi87IH07CisJCTdDNzRENDM3MTg4
MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDM1MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4
dFByb3ZpZGVyLmNwcCAqLzsgfTsKKwkJN0M3NEQ0MzgxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDNzRENDM2MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmggKi87IH07CisJCTdD
NzRENDNCMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3NEQ0MzkxODgyNDAwNDAw
RTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgKi87IH07CisJCTdDNzRENDNDMTg4MjQw
MDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDNBMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4
dFByb3ZpZGVyVVRGMTYuaCAqLzsgfTsKIAkJN0NDN0UzRDcxNzIwOEMwRjAwM0M1Mjc3IC8qIElE
TlNjcmlwdFdoaXRlTGlzdC50eHQgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDQzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxp
c3QudHh0ICovOyB9OwogCQk3Q0U2Q0JGQjE4N0YzNzA3MDBENDZCRjUgLyogRm9ybWF0Q29udmVy
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0U2
Q0JGQTE4N0YzNzA3MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVyLmggKi87IH07CiAJCTdDRTZD
QkZEMTg3RjM5NDkwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFNkNCRkMxODdGMzk0OTAwRDQ2QkY1
IC8qIEZvcm1hdENvbnZlcnRlci5jcHAgKi87IH07CkBAIC05MjY3LDYgKzkyNzMsMTIgQEAKIAkJ
N0M2MTM2RjcxNzEwQzM1MjAwRkY0QTU3IC8qIEluRmlsZXNDb21waWxlci5wbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7
IG5hbWUgPSBJbkZpbGVzQ29tcGlsZXIucG07IHBhdGggPSBzY3JpcHRzL0luRmlsZXNDb21waWxl
ci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M2MTM2RjgxNzEwQzM1MjAwRkY0
QTU3IC8qIEluRmlsZXNQYXJzZXIucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gSW5GaWxlc1BhcnNlci5w
bTsgcGF0aCA9IHNjcmlwdHMvSW5GaWxlc1BhcnNlci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0M2MTM2RjkxNzEwQzM1MjAwRkY0QTU3IC8qIFN0YXRpY1N0cmluZy5wbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0
LnBlcmw7IG5hbWUgPSBTdGF0aWNTdHJpbmcucG07IHBhdGggPSBzY3JpcHRzL1N0YXRpY1N0cmlu
Zy5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M3NEQ0MzExODgyM0E5MzAwRTVF
RDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVVRleHRQcm92aWRlckxhdGluMS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdDNzRENDMyMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4x
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJMYXRpbjEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M3NEQ0MzUxODgyM0IxOTAwRTVFRDU3
IC8qIFVUZXh0UHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVVRleHRQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNzRE
NDM2MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFVUZXh0UHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0M3NEQ0MzkxODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVVGV4dFByb3ZpZGVyVVRGMTYu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qzc0RDQzQTE4ODI0MDA0MDBFNUVE
NTcgLyogVVRleHRQcm92aWRlclVURjE2LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVUZXh0UHJvdmlkZXJVVEYxNi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
Q0M3RTNENjE3MjA4QzBGMDAzQzUyNzcgLyogSUROU2NyaXB0V2hpdGVMaXN0LnR4dCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0OyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3Q0U2Q0JGQTE4N0YzNzA3MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1hdENvbnZlcnRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0U2Q0JGQzE4N0YzOTQ5MDBENDZCRjUgLyog
Rm9ybWF0Q29udmVydGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZvcm1hdENvbnZlcnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjI4
NSw2ICsxNjI5NywxOSBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9
OworCQk3Qzc0RDQzMDE4ODIzQTQyMDBFNUVENTcgLyogaWN1ICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk3Qzc0RDQzMTE4ODIzQTkzMDBFNUVENTcgLyog
VVRleHRQcm92aWRlckxhdGluMS5jcHAgKi8sCisJCQkJN0M3NEQ0MzIxODgyM0E5MzAwRTVFRDU3
IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCAqLywKKwkJCQk3Qzc0RDQzOTE4ODI0MDA0MDBFNUVE
NTcgLyogVVRleHRQcm92aWRlclVURjE2LmNwcCAqLywKKwkJCQk3Qzc0RDQzQTE4ODI0MDA0MDBF
NUVENTcgLyogVVRleHRQcm92aWRlclVURjE2LmggKi8sCisJCQkJN0M3NEQ0MzUxODgyM0IxOTAw
RTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuY3BwICovLAorCQkJCTdDNzRENDM2MTg4MjNCMTkwMEU1
RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGljdTsKKwkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTdFNDc0RTE5MTI0OTREQTkwMDIzNTM2NCAv
KiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjAw
MjYsNiArMjAwNTEsNyBAQAogCQkJCUIyQjI2NDU5MEQwMEE3N0UwMDBBQ0MxRCAvKiBjZiAqLywK
IAkJCQlBNTE2RThCMjEzNkUwNEMwMDA3NkMzQzAgLyogaW9zICovLAogCQkJCUIyQzNEOUY5MEQw
MDZDMUQwMEVGNkYyNiAvKiBtYWMgKi8sCisJCQkJN0M3NEQ0MzAxODgyM0E0MjAwRTVFRDU3IC8q
IGljdSAqLywKIAkJCQkzN0M2MUYwMDEyMDk1Qzg3MDA3QTNDNjcgLyogQXRvbWljU3RyaW5nS2V5
ZWRNUlVDYWNoZS5oICovLAogCQkJCUIyQzNEOUYyMEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRpQ29u
dGV4dC5jcHAgKi8sCiAJCQkJQjJDM0Q5RjMwRDAwNkMxRDAwRUY2RjI2IC8qIEJpZGlDb250ZXh0
LmggKi8sCkBAIC0yNTIwMCwxMCArMjUyMjYsMTIgQEAKIAkJCQlEMEEzQTczMTE0MDVBMzk4MDBG
QjhFRDMgLyogUmVzb3VyY2VMb2FkZXJPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUFG
NTAzNjE2RjEwMEY2MDA5NUIyRTggLyogUmVzb3VyY2VMb2FkZXJUeXBlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTczRTMyNTcxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3Qzc0RDQzNDE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQ
cm92aWRlckxhdGluMS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQyOTVGQTQxMkIwNjE0RTAwRDFB
Q0UwIC8qIFJlc291cmNlTG9hZFByaW9yaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlEMENFNThG
OTEyNUU0Q0MyMDBGM0YxOTkgLyogUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwN0M1OUI3NjE3RjdEMERCMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4QTgxQkY4NTExRENGRDkwMDBEQTJCOTggLyogUmVzb3VyY2VMb2Fk
VGltaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQk3Qzc0RDQzODE4ODIzQjE5MDBFNUVENTcgLyog
VVRleHRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NkQxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2N0QwQ0U5
MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA3OTY5REI4MTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ0ljZUNhbmRpZGF0ZUV2ZW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTI1NDM2LDYgKzI1NDY0LDcgQEAKIAkJCQlCQ0VGNDQ0QTBFNjc0NUUw
MDAxQzEyODcgLyogU3R5bGVHZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEw
REM3NkIxNDc0N0JBQjAwNUUyNDcxIC8qIFN0eWxlR3JpZERhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExMTBEQjlCMTRGNURGNzcwMEEwM0I5MyAvKiBTdHlsZUdyaWRJdGVtRGF0YS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJN0M3NEQ0M0MxODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJV
VEYxNi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFRjQzQ0YwRTY3M0RBMTAwMUMxMjg3IC8qIFN0
eWxlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjI3MzA0MEU4MkYxRTYwMEU3Rjk3NSAv
KiBTdHlsZUluaGVyaXRlZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NzEyN0NCMTYzNDM4
QUUwMEVENkY1QSAvKiBTdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmggaW4gSGVhZGVycyAqLywK
QEAgLTI2NzM1LDYgKzI2NzY0LDcgQEAKIAkJCQlGRTE2Q0ZENTE2OUQxREVEMDBEM0EwQzcgLyog
RGF0YWJhc2VCYWNrZW5kU3luYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRUJDNUYzMTE2QkQw
Q0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QkM2
QTI3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJN0M3NEQ0MzMxODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkU0NTZGMTgxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNl
TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRUIyNkQyODE2N0E4RjJBMDBGREQyNkIg
LyogRGF0YWJhc2VTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVERUY4NDExNjc5NzEw
ODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjg0
NSw2ICsyNjg3NSw3IEBACiAJCQkJMDc4MzIyODQxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5QTI0NzMxNUI5QzJEMTAw
RDM0NTI3IC8qIERPTURPTVNlY3VyaXR5UG9saWN5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNzY5
NDU2NUMxMjE0REI2MzAwMDdDQkFFIC8qIERPTURPTVRva2VuTGlzdC5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTdDNzRENDNCMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBQkEyNTkxNEJDNjEzMzAwQUE5QTExIC8qIERPTUVkaXRv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NUFDQTlDMTBBOUI1RkE1MDA2NzFFOTAgLyogRE9N
RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1Q0E5NkI5MEE5NjIxQTYwMDY5MENDRiAv
KiBET01FbnRpdHkubW0gaW4gU291cmNlcyAqLywKQEAgLTI4OTU2LDYgKzI4OTg3LDcgQEAKIAkJ
CQkwNzhFMDkwQTE3RDE0Q0VFMDA0MjBBQTEgLyogUlRDSWNlQ2FuZGlkYXRlRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTE0ODMyQzgxODdGNjczRjAwREE2M0E2IC8qIFdlYkNvcmVUaHJl
YWQubW0gaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FDNDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
VGVzdHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0M3NEQ0MzcxODgyM0IxOTAwRTVFRDU3IC8q
IFVUZXh0UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBQzcwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR1RleHRDb250ZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
Nzk2OURCQjE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENTZXNzaW9uRGVzY3JpcHRpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBQ0EwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RleHRFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0QWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEFsbEluT25lLmNwcAkocmV2aXNpb24gMTYxNzk0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0QWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwz
ICszOCw2IEBACiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwIgogI2luY2x1
ZGUgIlRleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmNwcCIK
KyNpbmNsdWRlICJVVGV4dFByb3ZpZGVyLmNwcCIKKyNpbmNsdWRlICJVVGV4dFByb3ZpZGVyTGF0
aW4xLmNwcCIKKyNpbmNsdWRlICJVVGV4dFByb3ZpZGVyVVRGMTYuY3BwIgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5j
cHAJKHJldmlzaW9uIDE2MTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3JJQ1UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4IEBACiAj
aW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKIAogI2luY2x1ZGUgIkxpbmVCcmVha0l0ZXJh
dG9yUG9vbElDVS5oIgorI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXJMYXRpbjEuaCIKKyNpbmNsdWRl
ICJVVGV4dFByb3ZpZGVyVVRGMTYuaCIKICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zMCw4ICszMiw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFRleHRCcmVha0l0ZXJh
dG9yKiBzZXRVcEl0ZXJhdG9yKGJvb2wmIGNyZWF0ZWRJdGVyYXRvciwgVGV4dEJyZWFrSXRlcmF0
b3IqJiBpdGVyYXRvciwKLSAgICBVQnJlYWtJdGVyYXRvclR5cGUgdHlwZSwgY29uc3QgVUNoYXIq
IHN0cmluZywgaW50IGxlbmd0aCkKK3N0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0VXBJdGVy
YXRvcihib29sJiBjcmVhdGVkSXRlcmF0b3IsIFRleHRCcmVha0l0ZXJhdG9yKiYgaXRlcmF0b3Is
IFVCcmVha0l0ZXJhdG9yVHlwZSB0eXBlLCBjb25zdCBVQ2hhciogc3RyaW5nLCBpbnQgbGVuZ3Ro
KQogewogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gMDsKQEAgLTUzLDM3MyArNTQs
MTEgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRVcEl0ZXJhdG9yKAogICAgIHJldHVy
biBpdGVyYXRvcjsKIH0KIAotZW51bSBUZXh0Q29udGV4dCB7IE5vQ29udGV4dCwgUHJpb3JDb250
ZXh0LCBQcmltYXJ5Q29udGV4dCB9OwotCi1jb25zdCBpbnQgdGV4dEJ1ZmZlckNhcGFjaXR5ID0g
MTY7Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBVVGV4dCB0ZXh0OwotICAgIFVDaGFyIGJ1ZmZl
clt0ZXh0QnVmZmVyQ2FwYWNpdHldOwotfSBVVGV4dFdpdGhCdWZmZXI7Ci0KLXN0YXRpYyBpbmxp
bmUgaW50NjRfdCB0ZXh0UGluSW5kZXgoaW50NjRfdCYgaW5kZXgsIGludDY0X3QgbGltaXQpCi17
Ci0gICAgaWYgKGluZGV4IDwgMCkKLSAgICAgICAgaW5kZXggPSAwOwotICAgIGVsc2UgaWYgKGlu
ZGV4ID4gbGltaXQpCi0gICAgICAgIGluZGV4ID0gbGltaXQ7Ci0gICAgcmV0dXJuIGluZGV4Owot
fQotCi1zdGF0aWMgaW5saW5lIGludDY0X3QgdGV4dE5hdGl2ZUxlbmd0aChVVGV4dCogdGV4dCkK
LXsKLSAgICByZXR1cm4gdGV4dC0+YSArIHRleHQtPmI7Ci19Ci0KLS8vIFJlbG9jYXRlIHBvaW50
ZXIgZnJvbSBzb3VyY2UgaW50byBkZXN0aW5hdGlvbiBhcyByZXF1aXJlZC4KLXN0YXRpYyB2b2lk
IHRleHRGaXhQb2ludGVyKGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVUZXh0KiBkZXN0aW5hdGlvbiwg
Y29uc3Qgdm9pZComIHBvaW50ZXIpCi17Ci0gICAgaWYgKHBvaW50ZXIgPj0gc291cmNlLT5wRXh0
cmEgJiYgcG9pbnRlciA8IHN0YXRpY19jYXN0PGNoYXIqPihzb3VyY2UtPnBFeHRyYSkgKyBzb3Vy
Y2UtPmV4dHJhU2l6ZSkgewotICAgICAgICAvLyBQb2ludGVyIHJlZmVyZW5jZXMgc291cmNlIGV4
dHJhIGJ1ZmZlci4KLSAgICAgICAgcG9pbnRlciA9IHN0YXRpY19jYXN0PGNoYXIqPihkZXN0aW5h
dGlvbi0+cEV4dHJhKSArIChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4ocG9pbnRlcikgLSBzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlLT5wRXh0cmEpKTsKLSAgICB9IGVsc2UgaWYgKHBv
aW50ZXIgPj0gc291cmNlICYmIHBvaW50ZXIgPCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
Pihzb3VyY2UpICsgc291cmNlLT5zaXplT2ZTdHJ1Y3QpIHsKLSAgICAgICAgLy8gUG9pbnRlciBy
ZWZlcmVuY2VzIHNvdXJjZSB0ZXh0IHN0cnVjdHVyZSwgYnV0IG5vdCBzb3VyY2UgZXh0cmEgYnVm
ZmVyLgotICAgICAgICBwb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGVzdGluYXRp
b24pICsgKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihwb2ludGVyKSAtIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KHNvdXJjZSkpOwotICAgIH0KLX0KLQotc3RhdGljIFVUZXh0KiB0ZXh0
Q2xvbmUoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVw
LCBVRXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChkZWVwLCAhZGVlcCk7
Ci0gICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaW50
MzJfdCBleHRyYVNpemUgPSBzb3VyY2UtPmV4dHJhU2l6ZTsKLSAgICBkZXN0aW5hdGlvbiA9IHV0
ZXh0X3NldHVwKGRlc3RpbmF0aW9uLCBleHRyYVNpemUsIHN0YXR1cyk7Ci0gICAgaWYgKFVfRkFJ
TFVSRSgqc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOwotICAgIHZvaWQqIGV4
dHJhTmV3ID0gZGVzdGluYXRpb24tPnBFeHRyYTsKLSAgICBpbnQzMl90IGZsYWdzID0gZGVzdGlu
YXRpb24tPmZsYWdzOwotICAgIGludCBzaXplVG9Db3B5ID0gc3RkOjptaW4oc291cmNlLT5zaXpl
T2ZTdHJ1Y3QsIGRlc3RpbmF0aW9uLT5zaXplT2ZTdHJ1Y3QpOwotICAgIG1lbWNweShkZXN0aW5h
dGlvbiwgc291cmNlLCBzaXplVG9Db3B5KTsKLSAgICBkZXN0aW5hdGlvbi0+cEV4dHJhID0gZXh0
cmFOZXc7Ci0gICAgZGVzdGluYXRpb24tPmZsYWdzID0gZmxhZ3M7Ci0gICAgbWVtY3B5KGRlc3Rp
bmF0aW9uLT5wRXh0cmEsIHNvdXJjZS0+cEV4dHJhLCBleHRyYVNpemUpOwotICAgIHRleHRGaXhQ
b2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uLT5jb250ZXh0KTsKLSAgICB0
ZXh0Rml4UG9pbnRlcihzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbi0+cCk7Ci0gICAg
dGV4dEZpeFBvaW50ZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24tPnEpOwotICAg
IEFTU0VSVCghZGVzdGluYXRpb24tPnIpOwotICAgIGNvbnN0IHZvaWQgKiBjaHVua0NvbnRlbnRz
ID0gc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRlc3RpbmF0aW9uLT5jaHVua0NvbnRlbnRzKTsK
LSAgICB0ZXh0Rml4UG9pbnRlcihzb3VyY2UsIGRlc3RpbmF0aW9uLCBjaHVua0NvbnRlbnRzKTsK
LSAgICBkZXN0aW5hdGlvbi0+Y2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0IFVDaGFy
Kj4oY2h1bmtDb250ZW50cyk7Ci0gICAgcmV0dXJuIGRlc3RpbmF0aW9uOwotfQotCi1zdGF0aWMg
aW50MzJfdCB0ZXh0RXh0cmFjdChVVGV4dCogdGV4dCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBs
aW1pdCwgVUNoYXIqIGRlc3RpbmF0aW9uLCBpbnQzMl90IGRlc3RpbmF0aW9uQ2FwYWNpdHksIFVF
cnJvckNvZGUqIGVycm9yQ29kZSkKLXsKLSAgICBVTlVTRURfUEFSQU0odGV4dCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHN0YXJ0KTsKLSAgICBVTlVTRURfUEFSQU0obGltaXQpOwotICAgIFVOVVNFRF9Q
QVJBTShkZXN0aW5hdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uQ2FwYWNpdHkp
OwotICAgIC8vIEluIHRoZSBwcmVzZW50IGNvbnRleHQsIHRoaXMgdGV4dCBwcm92aWRlciBpcyB1
c2VkIG9ubHkgd2l0aCBJQ1UgZnVuY3Rpb25zCi0gICAgLy8gdGhhdCBkbyBub3QgcGVyZm9ybSBh
biBleHRyYWN0IG9wZXJhdGlvbi4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAqZXJy
b3JDb2RlID0gVV9VTlNVUFBPUlRFRF9FUlJPUjsKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGlj
IHZvaWQgdGV4dENsb3NlKFVUZXh0KiB0ZXh0KQotewotICAgIHRleHQtPmNvbnRleHQgPSAwOwot
fQotCi1zdGF0aWMgaW5saW5lIFRleHRDb250ZXh0IHRleHRHZXRDb250ZXh0KGNvbnN0IFVUZXh0
KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBVQm9vbCBmb3J3YXJkKQotewotICAgIGlmICgh
dGV4dC0+YiB8fCBuYXRpdmVJbmRleCA+IHRleHQtPmIpCi0gICAgICAgIHJldHVybiBQcmltYXJ5
Q29udGV4dDsKLSAgICBpZiAobmF0aXZlSW5kZXggPT0gdGV4dC0+YikKLSAgICAgICAgcmV0dXJu
IGZvcndhcmQgPyBQcmltYXJ5Q29udGV4dCA6IFByaW9yQ29udGV4dDsKLSAgICByZXR1cm4gUHJp
b3JDb250ZXh0OwotfQotCi1zdGF0aWMgaW5saW5lIFRleHRDb250ZXh0IHRleHRMYXRpbjFHZXRD
dXJyZW50Q29udGV4dChjb25zdCBVVGV4dCogdGV4dCkKLXsKLSAgICBpZiAoIXRleHQtPmNodW5r
Q29udGVudHMpCi0gICAgICAgIHJldHVybiBOb0NvbnRleHQ7Ci0gICAgcmV0dXJuIHRleHQtPmNo
dW5rQ29udGVudHMgPT0gdGV4dC0+cEV4dHJhID8gUHJpbWFyeUNvbnRleHQgOiBQcmlvckNvbnRl
eHQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRMYXRpbjFNb3ZlSW5QcmltYXJ5Q29udGV4dChVVGV4
dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29s
IGZvcndhcmQpCi17Ci0gICAgQVNTRVJUKHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cEV4
dHJhKTsKLSAgICBpZiAoZm9yd2FyZCkgewotICAgICAgICBBU1NFUlQobmF0aXZlSW5kZXggPj0g
dGV4dC0+YiAmJiBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCk7Ci0gICAgICAgIHRleHQtPmNo
dW5rTmF0aXZlU3RhcnQgPSBuYXRpdmVJbmRleDsKLSAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVM
aW1pdCA9IG5hdGl2ZUluZGV4ICsgdGV4dC0+ZXh0cmFTaXplIC8gc2l6ZW9mKFVDaGFyKTsKLSAg
ICAgICAgaWYgKHRleHQtPmNodW5rTmF0aXZlTGltaXQgPiBuYXRpdmVMZW5ndGgpCi0gICAgICAg
ICAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gbmF0aXZlTGVuZ3RoOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIEFTU0VSVChuYXRpdmVJbmRleCA+IHRleHQtPmIgJiYgbmF0aXZlSW5kZXggPD0g
bmF0aXZlTGVuZ3RoKTsKLSAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUlu
ZGV4OwotICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gbmF0aXZlSW5kZXggLSB0ZXh0
LT5leHRyYVNpemUgLyBzaXplb2YoVUNoYXIpOwotICAgICAgICBpZiAodGV4dC0+Y2h1bmtOYXRp
dmVTdGFydCA8IHRleHQtPmIpCi0gICAgICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0g
dGV4dC0+YjsKLSAgICB9Ci0gICAgaW50NjRfdCBsZW5ndGggPSB0ZXh0LT5jaHVua05hdGl2ZUxp
bWl0IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKLSAgICAvLyBFbnN1cmUgY2h1bmsgbGVuZ3Ro
IGlzIHdlbGwgZGVmaW5lZCBpZiBjb21wdXRlZCBsZW5ndGggZXhjZWVkcyBpbnQzMl90IHJhbmdl
LgotICAgIEFTU0VSVChsZW5ndGggPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgo
KSk7Ci0gICAgdGV4dC0+Y2h1bmtMZW5ndGggPSBsZW5ndGggPCBzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KGxlbmd0aCkgOiAwOwotICAg
IHRleHQtPm5hdGl2ZUluZGV4aW5nTGltaXQgPSB0ZXh0LT5jaHVua0xlbmd0aDsKLSAgICB0ZXh0
LT5jaHVua09mZnNldCA9IGZvcndhcmQgPyAwIDogdGV4dC0+Y2h1bmtMZW5ndGg7Ci0gICAgU3Ry
aW5nSW1wbDo6Y29weUNoYXJzKGNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0LT5jaHVua0NvbnRlbnRz
KSwgc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIqPih0ZXh0LT5wKSArICh0ZXh0LT5jaHVua05hdGl2
ZVN0YXJ0IC0gdGV4dC0+YiksIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0ZXh0LT5jaHVua0xlbmd0
aCkpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0TGF0aW4xU3dpdGNoVG9QcmltYXJ5Q29udGV4dChV
VGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVC
b29sIGZvcndhcmQpCi17Ci0gICAgQVNTRVJUKCF0ZXh0LT5jaHVua0NvbnRlbnRzIHx8IHRleHQt
PmNodW5rQ29udGVudHMgPT0gdGV4dC0+cSk7Ci0gICAgdGV4dC0+Y2h1bmtDb250ZW50cyA9IHN0
YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4odGV4dC0+cEV4dHJhKTsKLSAgICB0ZXh0TGF0aW4xTW92
ZUluUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2Fy
ZCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRMYXRpbjFNb3ZlSW5QcmlvckNvbnRleHQoVVRleHQq
IHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBm
b3J3YXJkKQotewotICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOwot
ICAgIEFTU0VSVChmb3J3YXJkID8gbmF0aXZlSW5kZXggPCB0ZXh0LT5iIDogbmF0aXZlSW5kZXgg
PD0gdGV4dC0+Yik7Ci0gICAgQVNTRVJUX1VOVVNFRChuYXRpdmVMZW5ndGgsIGZvcndhcmQgPyBu
YXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7
Ci0gICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRp
dmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOwotICAgIHRleHQtPmNodW5r
TmF0aXZlU3RhcnQgPSAwOwotICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSB0ZXh0LT5iOwot
ICAgIHRleHQtPmNodW5rTGVuZ3RoID0gdGV4dC0+YjsKLSAgICB0ZXh0LT5uYXRpdmVJbmRleGlu
Z0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7Ci0gICAgaW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJ
bmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgLy8gRW5zdXJlIGNodW5rIG9mZnNl
dCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5n
ZSBvciBjaHVuayBsZW5ndGguCi0gICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50MzJfdD46Om1heCgpKTsKLSAgICB0ZXh0LT5jaHVua09mZnNldCA9IHN0ZDo6bWluKG9m
ZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8
aW50MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQtPmNodW5rTGVuZ3RoKTsKLX0KLQotc3RhdGljIHZv
aWQgdGV4dExhdGluMVN3aXRjaFRvUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5h
dGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBB
U1NFUlQoIXRleHQtPmNodW5rQ29udGVudHMgfHwgdGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0
LT5wRXh0cmEpOwotICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBV
Q2hhcio+KHRleHQtPnEpOwotICAgIHRleHRMYXRpbjFNb3ZlSW5QcmlvckNvbnRleHQodGV4dCwg
bmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUg
Ym9vbCB0ZXh0SW5DaHVua09yT3V0T2ZSYW5nZShVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJ
bmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQsIFVCb29sJiBpc0FjY2Vz
c2libGUpCi17Ci0gICAgaWYgKGZvcndhcmQpIHsKLSAgICAgICAgaWYgKG5hdGl2ZUluZGV4ID49
IHRleHQtPmNodW5rTmF0aXZlU3RhcnQgJiYgbmF0aXZlSW5kZXggPCB0ZXh0LT5jaHVua05hdGl2
ZUxpbWl0KSB7Ci0gICAgICAgICAgICBpbnQ2NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0gdGV4
dC0+Y2h1bmtOYXRpdmVTdGFydDsKLSAgICAgICAgICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQg
aXMgd2VsbCBmb3JtZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZS4K
LSAgICAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKSk7Ci0gICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNldCA9IG9mZnNldCA8IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zm
c2V0KSA6IDA7Ci0gICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBUUlVFOwotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG5hdGl2ZUluZGV4ID49IG5hdGl2
ZUxlbmd0aCAmJiB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID09IG5hdGl2ZUxlbmd0aCkgewotICAg
ICAgICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSB0ZXh0LT5jaHVua0xlbmd0aDsKLSAgICAgICAg
ICAgIGlzQWNjZXNzaWJsZSA9IEZBTFNFOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAobmF0aXZlSW5kZXggPiB0ZXh0LT5jaHVu
a05hdGl2ZVN0YXJ0ICYmIG5hdGl2ZUluZGV4IDw9IHRleHQtPmNodW5rTmF0aXZlTGltaXQpIHsK
LSAgICAgICAgICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05h
dGl2ZVN0YXJ0OwotICAgICAgICAgICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGZv
cm1lZCBpZiBjb21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQzMl90IHJhbmdlLgotICAgICAgICAg
ICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsK
LSAgICAgICAgICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gb2Zmc2V0IDwgc3RkOjpudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMDsK
LSAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IFRSVUU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAobmF0aXZlSW5kZXggPD0gMCAmJiAhdGV4dC0+Y2h1
bmtOYXRpdmVTdGFydCkgewotICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSAwOwotICAg
ICAgICAgICAgaXNBY2Nlc3NpYmxlID0gRkFMU0U7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBVQm9vbCB0
ZXh0TGF0aW4xQWNjZXNzKFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBVQm9vbCBm
b3J3YXJkKQotewotICAgIGlmICghdGV4dC0+Y29udGV4dCkKLSAgICAgICAgcmV0dXJuIEZBTFNF
OwotICAgIGludDY0X3QgbmF0aXZlTGVuZ3RoID0gdGV4dE5hdGl2ZUxlbmd0aCh0ZXh0KTsKLSAg
ICBVQm9vbCBpc0FjY2Vzc2libGU7Ci0gICAgaWYgKHRleHRJbkNodW5rT3JPdXRPZlJhbmdlKHRl
eHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQsIGlzQWNjZXNzaWJsZSkpCi0g
ICAgICAgIHJldHVybiBpc0FjY2Vzc2libGU7Ci0gICAgbmF0aXZlSW5kZXggPSB0ZXh0UGluSW5k
ZXgobmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCk7Ci0gICAgVGV4dENvbnRleHQgY3VycmVudENv
bnRleHQgPSB0ZXh0TGF0aW4xR2V0Q3VycmVudENvbnRleHQodGV4dCk7Ci0gICAgVGV4dENvbnRl
eHQgbmV3Q29udGV4dCA9IHRleHRHZXRDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBmb3J3YXJk
KTsKLSAgICBBU1NFUlQobmV3Q29udGV4dCAhPSBOb0NvbnRleHQpOwotICAgIGlmIChuZXdDb250
ZXh0ID09IGN1cnJlbnRDb250ZXh0KSB7Ci0gICAgICAgIGlmIChjdXJyZW50Q29udGV4dCA9PSBQ
cmltYXJ5Q29udGV4dCkKLSAgICAgICAgICAgIHRleHRMYXRpbjFNb3ZlSW5QcmltYXJ5Q29udGV4
dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgdGV4dExhdGluMU1vdmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJ
bmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLSAgICB9IGVsc2UgaWYgKG5ld0NvbnRleHQg
PT0gUHJpbWFyeUNvbnRleHQpCi0gICAgICAgIHRleHRMYXRpbjFTd2l0Y2hUb1ByaW1hcnlDb250
ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAgIGVsc2Ug
ewotICAgICAgICBBU1NFUlQobmV3Q29udGV4dCA9PSBQcmlvckNvbnRleHQpOwotICAgICAgICB0
ZXh0TGF0aW4xU3dpdGNoVG9QcmlvckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxl
bmd0aCwgZm9yd2FyZCk7Ci0gICAgfQotICAgIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgY29u
c3Qgc3RydWN0IFVUZXh0RnVuY3MgdGV4dExhdGluMUZ1bmNzID0gewotICAgIHNpemVvZihVVGV4
dEZ1bmNzKSwKLSAgICAwLCAwLCAwLAotICAgIHRleHRDbG9uZSwKLSAgICB0ZXh0TmF0aXZlTGVu
Z3RoLAotICAgIHRleHRMYXRpbjFBY2Nlc3MsCi0gICAgdGV4dEV4dHJhY3QsCi0gICAgMCwgMCwg
MCwgMCwKLSAgICB0ZXh0Q2xvc2UsCi0gICAgMCwgMCwgMCwKLX07Ci0KLXN0YXRpYyB2b2lkIHRl
eHRJbml0KFVUZXh0KiB0ZXh0LCBjb25zdCBVVGV4dEZ1bmNzKiBmdW5jcywgY29uc3Qgdm9pZCog
c3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIGludCBw
cmlvckNvbnRleHRMZW5ndGgpCi17Ci0gICAgdGV4dC0+cEZ1bmNzID0gZnVuY3M7Ci0gICAgdGV4
dC0+cHJvdmlkZXJQcm9wZXJ0aWVzID0gMSA8PCBVVEVYVF9QUk9WSURFUl9TVEFCTEVfQ0hVTktT
OwotICAgIHRleHQtPmNvbnRleHQgPSBzdHJpbmc7Ci0gICAgdGV4dC0+cCA9IHN0cmluZzsKLSAg
ICB0ZXh0LT5hID0gbGVuZ3RoOwotICAgIHRleHQtPnEgPSBwcmlvckNvbnRleHQ7Ci0gICAgdGV4
dC0+YiA9IHByaW9yQ29udGV4dExlbmd0aDsKLX0KLQotc3RhdGljIFVUZXh0KiB0ZXh0T3Blbkxh
dGluMShVVGV4dFdpdGhCdWZmZXIqIHV0V2l0aEJ1ZmZlciwgY29uc3QgTENoYXIqIHN0cmluZywg
dW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250
ZXh0TGVuZ3RoLCBVRXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0gICAgaWYgKFVfRkFJTFVSRSgqc3Rh
dHVzKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCFzdHJpbmcgfHwgbGVuZ3RoID4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkg
ewotICAgICAgICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9Ci0gICAgVVRleHQqIHRleHQgPSB1dGV4dF9zZXR1cCgmdXRXaXRoQnVm
ZmVyLT50ZXh0LCBzaXplb2YodXRXaXRoQnVmZmVyLT5idWZmZXIpLCBzdGF0dXMpOwotICAgIGlm
IChVX0ZBSUxVUkUoKnN0YXR1cykpIHsKLSAgICAgICAgQVNTRVJUKCF0ZXh0KTsKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotICAgIHRleHRJbml0KHRleHQsICZ0ZXh0TGF0aW4xRnVuY3MsIHN0
cmluZywgbGVuZ3RoLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgcmV0
dXJuIHRleHQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgVGV4dENvbnRleHQgdGV4dFVURjE2R2V0Q3Vy
cmVudENvbnRleHQoY29uc3QgVVRleHQqIHRleHQpCi17Ci0gICAgaWYgKCF0ZXh0LT5jaHVua0Nv
bnRlbnRzKQotICAgICAgICByZXR1cm4gTm9Db250ZXh0OwotICAgIHJldHVybiB0ZXh0LT5jaHVu
a0NvbnRlbnRzID09IHRleHQtPnAgPyBQcmltYXJ5Q29udGV4dCA6IFByaW9yQ29udGV4dDsKLX0K
LQotc3RhdGljIHZvaWQgdGV4dFVURjE2TW92ZUluUHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQs
IGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJk
KQotewotICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnApOwotICAgIEFT
U0VSVF9VTlVTRUQoZm9yd2FyZCwgZm9yd2FyZCA/IG5hdGl2ZUluZGV4ID49IHRleHQtPmIgOiBu
YXRpdmVJbmRleCA+IHRleHQtPmIpOwotICAgIEFTU0VSVF9VTlVTRUQoZm9yd2FyZCwgZm9yd2Fy
ZCA/IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVu
Z3RoKTsKLSAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gdGV4dC0+YjsKLSAgICB0ZXh0LT5j
aHVua05hdGl2ZUxpbWl0ID0gbmF0aXZlTGVuZ3RoOwotICAgIGludDY0X3QgbGVuZ3RoID0gdGV4
dC0+Y2h1bmtOYXRpdmVMaW1pdCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgLy8gRW5z
dXJlIGNodW5rIGxlbmd0aCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgbGVuZ3RoIGV4Y2Vl
ZHMgaW50MzJfdCByYW5nZS4KLSAgICBBU1NFUlQobGVuZ3RoIDwgc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkpOwotICAgIHRleHQtPmNodW5rTGVuZ3RoID0gbGVuZ3RoIDwgc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90Pihs
ZW5ndGgpIDogMDsKLSAgICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtM
ZW5ndGg7Ci0gICAgaW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0
aXZlU3RhcnQ7Ci0gICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGRlZmluZWQgaWYg
Y29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZSBvciBjaHVuayBsZW5ndGguCi0g
ICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsK
LSAgICB0ZXh0LT5jaHVua09mZnNldCA9IHN0ZDo6bWluKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDAs
IHRleHQtPmNodW5rTGVuZ3RoKTsKLX0KLQotc3RhdGljIHZvaWQgdGV4dFVURjE2U3dpdGNoVG9Q
cmltYXJ5Q29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBu
YXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCi17Ci0gICAgQVNTRVJUKCF0ZXh0LT5jaHVua0Nv
bnRlbnRzIHx8IHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cSk7Ci0gICAgdGV4dC0+Y2h1
bmtDb250ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4odGV4dC0+cCk7Ci0gICAgdGV4
dFVURjE2TW92ZUluUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0
aCwgZm9yd2FyZCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRVVEYxNk1vdmVJblByaW9yQ29udGV4
dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgs
IFVCb29sIGZvcndhcmQpCi17Ci0gICAgQVNTRVJUKHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4
dC0+cSk7Ci0gICAgQVNTRVJUKGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IHRleHQtPmIgOiBuYXRp
dmVJbmRleCA8PSB0ZXh0LT5iKTsKLSAgICBBU1NFUlRfVU5VU0VEKG5hdGl2ZUxlbmd0aCwgZm9y
d2FyZCA/IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0aXZlSW5kZXggPD0gbmF0aXZl
TGVuZ3RoKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRl
eCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7Ci0gICAgdGV4
dC0+Y2h1bmtOYXRpdmVTdGFydCA9IDA7Ci0gICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IHRl
eHQtPmI7Ci0gICAgdGV4dC0+Y2h1bmtMZW5ndGggPSB0ZXh0LT5iOwotICAgIHRleHQtPm5hdGl2
ZUluZGV4aW5nTGltaXQgPSB0ZXh0LT5jaHVua0xlbmd0aDsKLSAgICBpbnQ2NF90IG9mZnNldCA9
IG5hdGl2ZUluZGV4IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKLSAgICAvLyBFbnN1cmUgY2h1
bmsgb2Zmc2V0IGlzIHdlbGwgZGVmaW5lZCBpZiBjb21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQz
Ml90IHJhbmdlIG9yIGNodW5rIGxlbmd0aC4KLSAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOwotICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gc3Rk
OjptaW4ob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0
aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMCwgdGV4dC0+Y2h1bmtMZW5ndGgpOwotfQotCi1z
dGF0aWMgdm9pZCB0ZXh0VVRGMTZTd2l0Y2hUb1ByaW9yQ29udGV4dChVVGV4dCogdGV4dCwgaW50
NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCi17
Ci0gICAgQVNTRVJUKCF0ZXh0LT5jaHVua0NvbnRlbnRzIHx8IHRleHQtPmNodW5rQ29udGVudHMg
PT0gdGV4dC0+cCk7Ci0gICAgdGV4dC0+Y2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0
IFVDaGFyKj4odGV4dC0+cSk7Ci0gICAgdGV4dFVURjE2TW92ZUluUHJpb3JDb250ZXh0KHRleHQs
IG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotfQotCi1zdGF0aWMgVUJvb2wg
dGV4dFVURjE2QWNjZXNzKFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBVQm9vbCBm
b3J3YXJkKQotewotICAgIGlmICghdGV4dC0+Y29udGV4dCkKLSAgICAgICAgcmV0dXJuIEZBTFNF
OwotICAgIGludDY0X3QgbmF0aXZlTGVuZ3RoID0gdGV4dE5hdGl2ZUxlbmd0aCh0ZXh0KTsKLSAg
ICBVQm9vbCBpc0FjY2Vzc2libGU7Ci0gICAgaWYgKHRleHRJbkNodW5rT3JPdXRPZlJhbmdlKHRl
eHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQsIGlzQWNjZXNzaWJsZSkpCi0g
ICAgICAgIHJldHVybiBpc0FjY2Vzc2libGU7Ci0gICAgbmF0aXZlSW5kZXggPSB0ZXh0UGluSW5k
ZXgobmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCk7Ci0gICAgVGV4dENvbnRleHQgY3VycmVudENv
bnRleHQgPSB0ZXh0VVRGMTZHZXRDdXJyZW50Q29udGV4dCh0ZXh0KTsKLSAgICBUZXh0Q29udGV4
dCBuZXdDb250ZXh0ID0gdGV4dEdldENvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIGZvcndhcmQp
OwotICAgIEFTU0VSVChuZXdDb250ZXh0ICE9IE5vQ29udGV4dCk7Ci0gICAgaWYgKG5ld0NvbnRl
eHQgPT0gY3VycmVudENvbnRleHQpIHsKLSAgICAgICAgaWYgKGN1cnJlbnRDb250ZXh0ID09IFBy
aW1hcnlDb250ZXh0KQotICAgICAgICAgICAgdGV4dFVURjE2TW92ZUluUHJpbWFyeUNvbnRleHQo
dGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHRleHRVVEYxNk1vdmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRl
eCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLSAgICB9IGVsc2UgaWYgKG5ld0NvbnRleHQgPT0g
UHJpbWFyeUNvbnRleHQpCi0gICAgICAgIHRleHRVVEYxNlN3aXRjaFRvUHJpbWFyeUNvbnRleHQo
dGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci0gICAgZWxzZSB7Ci0g
ICAgICAgIEFTU0VSVChuZXdDb250ZXh0ID09IFByaW9yQ29udGV4dCk7Ci0gICAgICAgIHRleHRV
VEYxNlN3aXRjaFRvUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgs
IGZvcndhcmQpOwotICAgIH0KLSAgICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIGNvbnN0IHN0
cnVjdCBVVGV4dEZ1bmNzIHRleHRVVEYxNkZ1bmNzID0gewotICAgIHNpemVvZihVVGV4dEZ1bmNz
KSwKLSAgICAwLCAwLCAwLAotICAgIHRleHRDbG9uZSwKLSAgICB0ZXh0TmF0aXZlTGVuZ3RoLAot
ICAgIHRleHRVVEYxNkFjY2VzcywKLSAgICB0ZXh0RXh0cmFjdCwKLSAgICAwLCAwLCAwLCAwLAot
ICAgIHRleHRDbG9zZSwKLSAgICAwLCAwLCAwLAotfTsKLQotc3RhdGljIFVUZXh0KiB0ZXh0T3Bl
blVURjE2KFVUZXh0KiB0ZXh0LCBjb25zdCBVQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgs
IGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgsIFVFcnJv
ckNvZGUqIHN0YXR1cykKLXsKLSAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKQotICAgICAgICBy
ZXR1cm4gMDsKLSAgICBpZiAoIXN0cmluZyB8fCBsZW5ndGggPiBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSB7Ci0gICAgICAgICpzdGF0
dXMgPSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1I7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0K
LSAgICB0ZXh0ID0gdXRleHRfc2V0dXAodGV4dCwgMCwgc3RhdHVzKTsKLSAgICBpZiAoVV9GQUlM
VVJFKCpzdGF0dXMpKSB7Ci0gICAgICAgIEFTU0VSVCghdGV4dCk7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KLSAgICB0ZXh0SW5pdCh0ZXh0LCAmdGV4dFVURjE2RnVuY3MsIHN0cmluZywgbGVu
Z3RoLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgcmV0dXJuIHRleHQ7
Ci19Ci0KIFRleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihjb25zdCBVQ2hhciog
c3RyaW5nLCBpbnQgbGVuZ3RoKQogewogICAgIHN0YXRpYyBib29sIGNyZWF0ZWRXb3JkQnJlYWtJ
dGVyYXRvciA9IGZhbHNlOwogICAgIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGljV29y
ZEJyZWFrSXRlcmF0b3I7Ci0gICAgcmV0dXJuIHNldFVwSXRlcmF0b3IoY3JlYXRlZFdvcmRCcmVh
a0l0ZXJhdG9yLAotICAgICAgICBzdGF0aWNXb3JkQnJlYWtJdGVyYXRvciwgVUJSS19XT1JELCBz
dHJpbmcsIGxlbmd0aCk7CisgICAgcmV0dXJuIHNldFVwSXRlcmF0b3IoY3JlYXRlZFdvcmRCcmVh
a0l0ZXJhdG9yLCBzdGF0aWNXb3JkQnJlYWtJdGVyYXRvciwgVUJSS19XT1JELCBzdHJpbmcsIGxl
bmd0aCk7CiB9CiAKIHN0YXRpYyBVVGV4dCBlbXB0eVRleHQgPSBVVEVYVF9JTklUSUFMSVpFUjsK
QEAgLTQzNiw3ICs3NSw3IEBAIFRleHRCcmVha0l0ZXJhdG9yKiBhY3F1aXJlTGluZUJyZWFrSXRl
cmEKICAgICB0ZXh0TG9jYWwudGV4dC5wRXh0cmEgPSB0ZXh0TG9jYWwuYnVmZmVyOwogCiAgICAg
VUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIFVUZXh0KiB0ZXh0ID0g
dGV4dE9wZW5MYXRpbjEoJnRleHRMb2NhbCwgc3RyaW5nLCBsZW5ndGgsIHByaW9yQ29udGV4dCwg
cHJpb3JDb250ZXh0TGVuZ3RoLCAmb3BlblN0YXR1cyk7CisgICAgVVRleHQqIHRleHQgPSB1VGV4
dE9wZW5MYXRpbjEoJnRleHRMb2NhbCwgc3RyaW5nLCBsZW5ndGgsIHByaW9yQ29udGV4dCwgcHJp
b3JDb250ZXh0TGVuZ3RoLCAmb3BlblN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShvcGVuU3Rh
dHVzKSkgewogICAgICAgICBMT0dfRVJST1IoInRleHRPcGVuVVRGMTYgZmFpbGVkIHdpdGggc3Rh
dHVzICVkIiwgb3BlblN0YXR1cyk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNDYzLDcgKzEwMiw3
IEBAIFRleHRCcmVha0l0ZXJhdG9yKiBhY3F1aXJlTGluZUJyZWFrSXRlcmEKICAgICBVVGV4dCB0
ZXh0TG9jYWwgPSBVVEVYVF9JTklUSUFMSVpFUjsKIAogICAgIFVFcnJvckNvZGUgb3BlblN0YXR1
cyA9IFVfWkVST19FUlJPUjsKLSAgICBVVGV4dCogdGV4dCA9IHRleHRPcGVuVVRGMTYoJnRleHRM
b2NhbCwgc3RyaW5nLCBsZW5ndGgsIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoLCAm
b3BlblN0YXR1cyk7CisgICAgVVRleHQqIHRleHQgPSB1VGV4dE9wZW5VVEYxNigmdGV4dExvY2Fs
LCBzdHJpbmcsIGxlbmd0aCwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5ndGgsICZvcGVu
U3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7CiAgICAgICAgIExPR19F
UlJPUigidGV4dE9wZW5VVEYxNiBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBvcGVuU3RhdHVzKTsK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC01MjEsOCArMTYwLDcgQEAgVGV4dEJyZWFrSXRlcmF0b3Iq
IHNlbnRlbmNlQnJlYWtJdGVyYXRvcgogewogICAgIHN0YXRpYyBib29sIGNyZWF0ZWRTZW50ZW5j
ZUJyZWFrSXRlcmF0b3IgPSBmYWxzZTsKICAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0
YXRpY1NlbnRlbmNlQnJlYWtJdGVyYXRvcjsKLSAgICByZXR1cm4gc2V0VXBJdGVyYXRvcihjcmVh
dGVkU2VudGVuY2VCcmVha0l0ZXJhdG9yLAotICAgICAgICBzdGF0aWNTZW50ZW5jZUJyZWFrSXRl
cmF0b3IsIFVCUktfU0VOVEVOQ0UsIHN0cmluZywgbGVuZ3RoKTsKKyAgICByZXR1cm4gc2V0VXBJ
dGVyYXRvcihjcmVhdGVkU2VudGVuY2VCcmVha0l0ZXJhdG9yLCBzdGF0aWNTZW50ZW5jZUJyZWFr
SXRlcmF0b3IsIFVCUktfU0VOVEVOQ0UsIHN0cmluZywgbGVuZ3RoKTsKIH0KIAogaW50IHRleHRC
cmVha0ZpcnN0KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKQEAgLTU3Miw4ICsyMTAsNyBA
QCBib29sIGlzV29yZFRleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciogCiB9CiAKICNpZiAhUExB
VEZPUk0oSU9TKQotc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRVcEl0ZXJhdG9yV2l0aFJ1
bGVzKGJvb2wmIGNyZWF0ZWRJdGVyYXRvciwgVGV4dEJyZWFrSXRlcmF0b3IqJiBpdGVyYXRvciwK
LSAgICBjb25zdCBjaGFyKiBicmVha1J1bGVzLCBjb25zdCBVQ2hhciogc3RyaW5nLCBpbnQgbGVu
Z3RoKQorc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRVcEl0ZXJhdG9yV2l0aFJ1bGVzKGJv
b2wmIGNyZWF0ZWRJdGVyYXRvciwgVGV4dEJyZWFrSXRlcmF0b3IqJiBpdGVyYXRvciwgY29uc3Qg
Y2hhciogYnJlYWtSdWxlcywgY29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCkKIHsKICAg
ICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiVVRleHRQcm92aWRlci5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gUmVsb2NhdGUgcG9pbnRlciBmcm9tIHNvdXJj
ZSBpbnRvIGRlc3RpbmF0aW9uIGFzIHJlcXVpcmVkLgorc3RhdGljIGlubGluZSB2b2lkIGZpeFBv
aW50ZXIoY29uc3QgVVRleHQqIHNvdXJjZSwgVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCB2b2lk
KiYgcG9pbnRlcikKK3sKKyAgICBpZiAocG9pbnRlciA+PSBzb3VyY2UtPnBFeHRyYSAmJiBwb2lu
dGVyIDwgc3RhdGljX2Nhc3Q8Y2hhcio+KHNvdXJjZS0+cEV4dHJhKSArIHNvdXJjZS0+ZXh0cmFT
aXplKSB7CisgICAgICAgIC8vIFBvaW50ZXIgcmVmZXJlbmNlcyBzb3VyY2UgZXh0cmEgYnVmZmVy
LgorICAgICAgICBwb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGRlc3RpbmF0aW9uLT5wRXh0
cmEpICsgKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihwb2ludGVyKSAtIHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihzb3VyY2UtPnBFeHRyYSkpOworICAgIH0gZWxzZSBpZiAocG9pbnRlciA+PSBz
b3VyY2UgJiYgcG9pbnRlciA8IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNvdXJjZSkg
KyBzb3VyY2UtPnNpemVPZlN0cnVjdCkgeworICAgICAgICAvLyBQb2ludGVyIHJlZmVyZW5jZXMg
c291cmNlIHRleHQgc3RydWN0dXJlLCBidXQgbm90IHNvdXJjZSBleHRyYSBidWZmZXIuCisgICAg
ICAgIHBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihkZXN0aW5hdGlvbikgKyAoc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KHBvaW50ZXIpIC0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oc291cmNlKSk7CisgICAgfQorfQorCitVVGV4dCogdVRleHRDbG9uZUltcGwoVVRleHQq
IGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2Rl
KiBzdGF0dXMpCit7CisgICAgQVNTRVJUX1VOVVNFRChkZWVwLCAhZGVlcCk7CisgICAgaWYgKFVf
RkFJTFVSRSgqc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaW50MzJfdCBl
eHRyYVNpemUgPSBzb3VyY2UtPmV4dHJhU2l6ZTsKKyAgICBkZXN0aW5hdGlvbiA9IHV0ZXh0X3Nl
dHVwKGRlc3RpbmF0aW9uLCBleHRyYVNpemUsIHN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRSgq
c3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOworICAgIHZvaWQqIGV4dHJhTmV3
ID0gZGVzdGluYXRpb24tPnBFeHRyYTsKKyAgICBpbnQzMl90IGZsYWdzID0gZGVzdGluYXRpb24t
PmZsYWdzOworICAgIGludCBzaXplVG9Db3B5ID0gc3RkOjptaW4oc291cmNlLT5zaXplT2ZTdHJ1
Y3QsIGRlc3RpbmF0aW9uLT5zaXplT2ZTdHJ1Y3QpOworICAgIG1lbWNweShkZXN0aW5hdGlvbiwg
c291cmNlLCBzaXplVG9Db3B5KTsKKyAgICBkZXN0aW5hdGlvbi0+cEV4dHJhID0gZXh0cmFOZXc7
CisgICAgZGVzdGluYXRpb24tPmZsYWdzID0gZmxhZ3M7CisgICAgbWVtY3B5KGRlc3RpbmF0aW9u
LT5wRXh0cmEsIHNvdXJjZS0+cEV4dHJhLCBleHRyYVNpemUpOworICAgIGZpeFBvaW50ZXIoc291
cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24tPmNvbnRleHQpOworICAgIGZpeFBvaW50ZXIo
c291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24tPnApOworICAgIGZpeFBvaW50ZXIoc291
cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24tPnEpOworICAgIEFTU0VSVCghZGVzdGluYXRp
b24tPnIpOworICAgIGNvbnN0IHZvaWQqIGNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25z
dCB2b2lkKj4oZGVzdGluYXRpb24tPmNodW5rQ29udGVudHMpOworICAgIGZpeFBvaW50ZXIoc291
cmNlLCBkZXN0aW5hdGlvbiwgY2h1bmtDb250ZW50cyk7CisgICAgZGVzdGluYXRpb24tPmNodW5r
Q29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KGNodW5rQ29udGVudHMpOworICAg
IHJldHVybiBkZXN0aW5hdGlvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJv
dmlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgVVRleHRQcm92aWRlcl9oCisjZGVmaW5lIFVUZXh0UHJvdmlkZXJfaAorCisjaW5jbHVk
ZSA8dW5pY29kZS91dGV4dC5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIFVUZXh0UHJvdmlkZXJDb250ZXh0IHsK
KyAgICBOb0NvbnRleHQsCisgICAgUHJpb3JDb250ZXh0LAorICAgIFByaW1hcnlDb250ZXh0Cit9
OworCitpbmxpbmUgVVRleHRQcm92aWRlckNvbnRleHQgdVRleHRQcm92aWRlckNvbnRleHQoY29u
c3QgVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIFVCb29sIGZvcndhcmQpCit7Cisg
ICAgaWYgKCF0ZXh0LT5iIHx8IG5hdGl2ZUluZGV4ID4gdGV4dC0+YikKKyAgICAgICAgcmV0dXJu
IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dDsKKyAgICBpZiAobmF0aXZlSW5k
ZXggPT0gdGV4dC0+YikKKyAgICAgICAgcmV0dXJuIGZvcndhcmQgPyBVVGV4dFByb3ZpZGVyQ29u
dGV4dDo6UHJpbWFyeUNvbnRleHQgOiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0
OworICAgIHJldHVybiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0OworfQorCitp
bmxpbmUgdm9pZCB1VGV4dEluaXRpYWxpemUoVVRleHQqIHRleHQsIGNvbnN0IFVUZXh0RnVuY3Mq
IGZ1bmNzLCBjb25zdCB2b2lkKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIq
IHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29udGV4dExlbmd0aCkKK3sKKyAgICB0ZXh0LT5wRnVu
Y3MgPSBmdW5jczsKKyAgICB0ZXh0LT5wcm92aWRlclByb3BlcnRpZXMgPSAxIDw8IFVURVhUX1BS
T1ZJREVSX1NUQUJMRV9DSFVOS1M7CisgICAgdGV4dC0+Y29udGV4dCA9IHN0cmluZzsKKyAgICB0
ZXh0LT5wID0gc3RyaW5nOworICAgIHRleHQtPmEgPSBsZW5ndGg7CisgICAgdGV4dC0+cSA9IHBy
aW9yQ29udGV4dDsKKyAgICB0ZXh0LT5iID0gcHJpb3JDb250ZXh0TGVuZ3RoOworfQorCisvLyBT
aGFyZWQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBVVGV4dENsb25lIGZ1bmN0aW9uIG9uIFVUZXh0
RnVuY3MuCisKK1VUZXh0KiB1VGV4dENsb25lSW1wbChVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0
IFVUZXh0KiBzb3VyY2UsIFVCb29sIGRlZXAsIFVFcnJvckNvZGUqIHN0YXR1cyk7CisKKworLy8g
SGVscGVycyBmb3IgdGhlIFVUZXh0QWNjZXNzIGZ1bmN0aW9uIG9uIFVUZXh0RnVuY3MuCisKK2lu
bGluZSBpbnQ2NF90IHVUZXh0QWNjZXNzUGluSW5kZXgoaW50NjRfdCYgaW5kZXgsIGludDY0X3Qg
bGltaXQpCit7CisgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgaW5kZXggPSAwOworICAgIGVs
c2UgaWYgKGluZGV4ID4gbGltaXQpCisgICAgICAgIGluZGV4ID0gbGltaXQ7CisgICAgcmV0dXJu
IGluZGV4OworfQorCitpbmxpbmUgYm9vbCB1VGV4dEFjY2Vzc0luQ2h1bmtPck91dE9mUmFuZ2Uo
VVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBV
Qm9vbCBmb3J3YXJkLCBVQm9vbCYgaXNBY2Nlc3NpYmxlKQoreworICAgIGlmIChmb3J3YXJkKSB7
CisgICAgICAgIGlmIChuYXRpdmVJbmRleCA+PSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ICYmIG5h
dGl2ZUluZGV4IDwgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCkgeworICAgICAgICAgICAgaW50NjRf
dCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7CisgICAgICAg
ICAgICAvLyBFbnN1cmUgY2h1bmsgb2Zmc2V0IGlzIHdlbGwgZm9ybWVkIGlmIGNvbXB1dGVkIG9m
ZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCisgICAgICAgICAgICBBU1NFUlQob2Zmc2V0IDwg
c3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOworICAgICAgICAgICAgdGV4dC0+
Y2h1bmtPZmZzZXQgPSBvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgo
KSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwOworICAgICAgICAgICAgaXNBY2Nl
c3NpYmxlID0gVFJVRTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
ICAgIGlmIChuYXRpdmVJbmRleCA+PSBuYXRpdmVMZW5ndGggJiYgdGV4dC0+Y2h1bmtOYXRpdmVM
aW1pdCA9PSBuYXRpdmVMZW5ndGgpIHsKKyAgICAgICAgICAgIHRleHQtPmNodW5rT2Zmc2V0ID0g
dGV4dC0+Y2h1bmtMZW5ndGg7CisgICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBGQUxTRTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKG5hdGl2ZUluZGV4ID4gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAmJiBuYXRpdmVJbmRleCA8
PSB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0KSB7CisgICAgICAgICAgICBpbnQ2NF90IG9mZnNldCA9
IG5hdGl2ZUluZGV4IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAgICAgICAgIC8vIEVu
c3VyZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBmb3JtZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2Vl
ZHMgaW50MzJfdCByYW5nZS4KKyAgICAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNl
dCA9IG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDA7CisgICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBU
UlVFOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5h
dGl2ZUluZGV4IDw9IDAgJiYgIXRleHQtPmNodW5rTmF0aXZlU3RhcnQpIHsKKyAgICAgICAgICAg
IHRleHQtPmNodW5rT2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IEZBTFNF
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVVGV4dFBy
b3ZpZGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJv
dmlkZXJMYXRpbjEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVVRleHRQcm92aWRlckxhdGluMS5oIgorCisjaW5jbHVkZSAiVVRleHRQcm92
aWRlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGF0aWMgaW5saW5lIFVUZXh0UHJvdmlkZXJDb250ZXh0IHRleHRMYXRpbjFH
ZXRDdXJyZW50Q29udGV4dChjb25zdCBVVGV4dCogdGV4dCkKK3sKKyAgICBpZiAoIXRleHQtPmNo
dW5rQ29udGVudHMpCisgICAgICAgIHJldHVybiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250
ZXh0OworICAgIHJldHVybiB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnBFeHRyYSA/IFVU
ZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0
OjpQcmlvckNvbnRleHQ7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRMYXRpbjFNb3ZlSW5QcmltYXJ5
Q29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVM
ZW5ndGgsIFVCb29sIGZvcndhcmQpCit7CisgICAgQVNTRVJUKHRleHQtPmNodW5rQ29udGVudHMg
PT0gdGV4dC0+cEV4dHJhKTsKKyAgICBpZiAoZm9yd2FyZCkgeworICAgICAgICBBU1NFUlQobmF0
aXZlSW5kZXggPj0gdGV4dC0+YiAmJiBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCk7CisgICAg
ICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSBuYXRpdmVJbmRleDsKKyAgICAgICAgdGV4dC0+
Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUluZGV4ICsgdGV4dC0+ZXh0cmFTaXplIC8gc2l6ZW9m
KFVDaGFyKTsKKyAgICAgICAgaWYgKHRleHQtPmNodW5rTmF0aXZlTGltaXQgPiBuYXRpdmVMZW5n
dGgpCisgICAgICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gbmF0aXZlTGVuZ3RoOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChuYXRpdmVJbmRleCA+IHRleHQtPmIgJiYgbmF0
aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3RoKTsKKyAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1p
dCA9IG5hdGl2ZUluZGV4OworICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gbmF0aXZl
SW5kZXggLSB0ZXh0LT5leHRyYVNpemUgLyBzaXplb2YoVUNoYXIpOworICAgICAgICBpZiAodGV4
dC0+Y2h1bmtOYXRpdmVTdGFydCA8IHRleHQtPmIpCisgICAgICAgICAgICB0ZXh0LT5jaHVua05h
dGl2ZVN0YXJ0ID0gdGV4dC0+YjsKKyAgICB9CisgICAgaW50NjRfdCBsZW5ndGggPSB0ZXh0LT5j
aHVua05hdGl2ZUxpbWl0IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAvLyBFbnN1cmUg
Y2h1bmsgbGVuZ3RoIGlzIHdlbGwgZGVmaW5lZCBpZiBjb21wdXRlZCBsZW5ndGggZXhjZWVkcyBp
bnQzMl90IHJhbmdlLgorICAgIEFTU0VSVChsZW5ndGggPCBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDMyX3Q+OjptYXgoKSk7CisgICAgdGV4dC0+Y2h1bmtMZW5ndGggPSBsZW5ndGggPCBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KGxlbmd0
aCkgOiAwOworICAgIHRleHQtPm5hdGl2ZUluZGV4aW5nTGltaXQgPSB0ZXh0LT5jaHVua0xlbmd0
aDsKKyAgICB0ZXh0LT5jaHVua09mZnNldCA9IGZvcndhcmQgPyAwIDogdGV4dC0+Y2h1bmtMZW5n
dGg7CisgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0LT5j
aHVua0NvbnRlbnRzKSwgc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIqPih0ZXh0LT5wKSArICh0ZXh0
LT5jaHVua05hdGl2ZVN0YXJ0IC0gdGV4dC0+YiksIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0ZXh0
LT5jaHVua0xlbmd0aCkpOworfQorCitzdGF0aWMgdm9pZCB0ZXh0TGF0aW4xU3dpdGNoVG9Qcmlt
YXJ5Q29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRp
dmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCit7CisgICAgQVNTRVJUKCF0ZXh0LT5jaHVua0NvbnRl
bnRzIHx8IHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cSk7CisgICAgdGV4dC0+Y2h1bmtD
b250ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4odGV4dC0+cEV4dHJhKTsKKyAgICB0
ZXh0TGF0aW4xTW92ZUluUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxl
bmd0aCwgZm9yd2FyZCk7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRMYXRpbjFNb3ZlSW5QcmlvckNv
bnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVu
Z3RoLCBVQm9vbCBmb3J3YXJkKQoreworICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09
IHRleHQtPnEpOworICAgIEFTU0VSVChmb3J3YXJkID8gbmF0aXZlSW5kZXggPCB0ZXh0LT5iIDog
bmF0aXZlSW5kZXggPD0gdGV4dC0+Yik7CisgICAgQVNTRVJUX1VOVVNFRChuYXRpdmVMZW5ndGgs
IGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5h
dGl2ZUxlbmd0aCk7CisgICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJkID8gbmF0aXZl
SW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOworICAg
IHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSAwOworICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQg
PSB0ZXh0LT5iOworICAgIHRleHQtPmNodW5rTGVuZ3RoID0gdGV4dC0+YjsKKyAgICB0ZXh0LT5u
YXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7CisgICAgaW50NjRfdCBvZmZz
ZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7CisgICAgLy8gRW5zdXJl
IGNodW5rIG9mZnNldCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMg
aW50MzJfdCByYW5nZSBvciBjaHVuayBsZW5ndGguCisgICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKKyAgICB0ZXh0LT5jaHVua09mZnNldCA9
IHN0ZDo6bWluKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8g
c3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQtPmNodW5rTGVuZ3RoKTsKK30K
Kworc3RhdGljIHZvaWQgdGV4dExhdGluMVN3aXRjaFRvUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0
LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2Fy
ZCkKK3sKKyAgICBBU1NFUlQoIXRleHQtPmNodW5rQ29udGVudHMgfHwgdGV4dC0+Y2h1bmtDb250
ZW50cyA9PSB0ZXh0LT5wRXh0cmEpOworICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNf
Y2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnEpOworICAgIHRleHRMYXRpbjFNb3ZlSW5QcmlvckNv
bnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Cit9CisKKy8v
IC0tIEJlZ2luIExhdGluLTEgcHJvdmlkZXIgZnVuY3Rpb25zIC0tCisKK3N0YXRpYyBVVGV4dCog
dVRleHRMYXRpbjFDbG9uZShVVGV4dCosIGNvbnN0IFVUZXh0KiwgVUJvb2wsIFVFcnJvckNvZGUq
KTsKK3N0YXRpYyBpbnQ2NF90IHVUZXh0TGF0aW4xTmF0aXZlTGVuZ3RoKFVUZXh0Kik7IAorc3Rh
dGljIFVCb29sIHVUZXh0TGF0aW4xQWNjZXNzKFVUZXh0KiwgaW50NjRfdCwgVUJvb2wpOyAKK3N0
YXRpYyBpbnQzMl90IHVUZXh0TGF0aW4xRXh0cmFjdChVVGV4dCosIGludDY0X3QsIGludDY0X3Qs
IFVDaGFyKiwgaW50MzJfdCwgVUVycm9yQ29kZSopOyAKK3N0YXRpYyB2b2lkIHVUZXh0TGF0aW4x
Q2xvc2UoVVRleHQqKTsKKworc3RhdGljIFVUZXh0KiB1VGV4dExhdGluMUNsb25lKFVUZXh0KiBk
ZXN0aW5hdGlvbiwgY29uc3QgVVRleHQqIHNvdXJjZSwgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSog
c3RhdHVzKQoreworICAgIHJldHVybiB1VGV4dENsb25lSW1wbChkZXN0aW5hdGlvbiwgc291cmNl
LCBkZWVwLCBzdGF0dXMpOworfQorCitzdGF0aWMgaW50NjRfdCB1VGV4dExhdGluMU5hdGl2ZUxl
bmd0aChVVGV4dCogdGV4dCkKK3sKKyAgICByZXR1cm4gdGV4dC0+YSArIHRleHQtPmI7Cit9CisK
K3N0YXRpYyBVQm9vbCB1VGV4dExhdGluMUFjY2VzcyhVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRp
dmVJbmRleCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBpZiAoIXRleHQtPmNvbnRleHQpCisgICAg
ICAgIHJldHVybiBGQUxTRTsKKyAgICBpbnQ2NF90IG5hdGl2ZUxlbmd0aCA9IHVUZXh0TGF0aW4x
TmF0aXZlTGVuZ3RoKHRleHQpOworICAgIFVCb29sIGlzQWNjZXNzaWJsZTsKKyAgICBpZiAodVRl
eHRBY2Nlc3NJbkNodW5rT3JPdXRPZlJhbmdlKHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5n
dGgsIGZvcndhcmQsIGlzQWNjZXNzaWJsZSkpCisgICAgICAgIHJldHVybiBpc0FjY2Vzc2libGU7
CisgICAgbmF0aXZlSW5kZXggPSB1VGV4dEFjY2Vzc1BpbkluZGV4KG5hdGl2ZUluZGV4LCBuYXRp
dmVMZW5ndGgpOworICAgIFVUZXh0UHJvdmlkZXJDb250ZXh0IGN1cnJlbnRDb250ZXh0ID0gdGV4
dExhdGluMUdldEN1cnJlbnRDb250ZXh0KHRleHQpOworICAgIFVUZXh0UHJvdmlkZXJDb250ZXh0
IG5ld0NvbnRleHQgPSB1VGV4dFByb3ZpZGVyQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgZm9y
d2FyZCk7CisgICAgQVNTRVJUKG5ld0NvbnRleHQgIT0gVVRleHRQcm92aWRlckNvbnRleHQ6Ok5v
Q29udGV4dCk7CisgICAgaWYgKG5ld0NvbnRleHQgPT0gY3VycmVudENvbnRleHQpIHsKKyAgICAg
ICAgaWYgKGN1cnJlbnRDb250ZXh0ID09IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29u
dGV4dCkKKyAgICAgICAgICAgIHRleHRMYXRpbjFNb3ZlSW5QcmltYXJ5Q29udGV4dCh0ZXh0LCBu
YXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgdGV4dExhdGluMU1vdmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0
aXZlTGVuZ3RoLCBmb3J3YXJkKTsKKyAgICB9IGVsc2UgaWYgKG5ld0NvbnRleHQgPT0gVVRleHRQ
cm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQorICAgICAgICB0ZXh0TGF0aW4xU3dpdGNo
VG9QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJk
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG5ld0NvbnRleHQgPT0gVVRleHRQcm92aWRl
ckNvbnRleHQ6OlByaW9yQ29udGV4dCk7CisgICAgICAgIHRleHRMYXRpbjFTd2l0Y2hUb1ByaW9y
Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKKyAgICB9
CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBpbnQzMl90IHVUZXh0TGF0aW4xRXh0cmFj
dChVVGV4dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50MzJfdCwgVUVycm9yQ29kZSog
ZXJyb3JDb2RlKQoreworICAgIC8vIEluIHRoZSBwcmVzZW50IGNvbnRleHQsIHRoaXMgdGV4dCBw
cm92aWRlciBpcyB1c2VkIG9ubHkgd2l0aCBJQ1UgZnVuY3Rpb25zCisgICAgLy8gdGhhdCBkbyBu
b3QgcGVyZm9ybSBhbiBleHRyYWN0IG9wZXJhdGlvbi4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAqZXJyb3JDb2RlID0gVV9VTlNVUFBPUlRFRF9FUlJPUjsKKyAgICByZXR1cm4gMDsK
K30KKworc3RhdGljIHZvaWQgdVRleHRMYXRpbjFDbG9zZShVVGV4dCogdGV4dCkKK3sKKyAgICB0
ZXh0LT5jb250ZXh0ID0gMDsKK30KKworLy8gLS0gRW5kIExhdGluLTEgcHJvdmlkZXIgZnVuY3Rp
b25zIC0tCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgVVRleHRGdW5jcyB0ZXh0TGF0aW4xRnVuY3Mg
PSB7CisgICAgc2l6ZW9mKFVUZXh0RnVuY3MpLAorICAgIDAsIDAsIDAsCisgICAgdVRleHRMYXRp
bjFDbG9uZSwKKyAgICB1VGV4dExhdGluMU5hdGl2ZUxlbmd0aCwKKyAgICB1VGV4dExhdGluMUFj
Y2VzcywKKyAgICB1VGV4dExhdGluMUV4dHJhY3QsCisgICAgMCwgMCwgMCwgMCwKKyAgICB1VGV4
dExhdGluMUNsb3NlLAorICAgIDAsIDAsIDAsCit9OworCitVVGV4dCogdVRleHRPcGVuTGF0aW4x
KFVUZXh0V2l0aEJ1ZmZlciogdXRXaXRoQnVmZmVyLCBjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNp
Z25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRM
ZW5ndGgsIFVFcnJvckNvZGUqIHN0YXR1cykKK3sKKyAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMp
KQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIXN0cmluZyB8fCBsZW5ndGggPiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSB7Cisg
ICAgICAgICpzdGF0dXMgPSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1I7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKyAgICBVVGV4dCogdGV4dCA9IHV0ZXh0X3NldHVwKCZ1dFdpdGhCdWZmZXIt
PnRleHQsIHNpemVvZih1dFdpdGhCdWZmZXItPmJ1ZmZlciksIHN0YXR1cyk7CisgICAgaWYgKFVf
RkFJTFVSRSgqc3RhdHVzKSkgeworICAgICAgICBBU1NFUlQoIXRleHQpOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisgICAgdVRleHRJbml0aWFsaXplKHRleHQsICZ0ZXh0TGF0aW4xRnVuY3Ms
IHN0cmluZywgbGVuZ3RoLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7CisgICAg
cmV0dXJuIHRleHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4x
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4
dFByb3ZpZGVyTGF0aW4xLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgVVRleHRQcm92aWRlckxhdGluMV9oCisjZGVmaW5lIFVUZXh0UHJvdmlk
ZXJMYXRpbjFfaAorCisjaW5jbHVkZSA8dW5pY29kZS91dGV4dC5oPgorI2luY2x1ZGUgPHd0Zi91
bmljb2RlL1VuaWNvZGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBpbnQgVVRl
eHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHkgPSAxNjsKKworc3RydWN0IFVUZXh0V2l0aEJ1ZmZl
ciB7CisgICAgVVRleHQgdGV4dDsKKyAgICBVQ2hhciBidWZmZXJbVVRleHRXaXRoQnVmZmVySW5s
aW5lQ2FwYWNpdHldOworfTsKKworVVRleHQqIHVUZXh0T3BlbkxhdGluMShVVGV4dFdpdGhCdWZm
ZXIqIHV0V2l0aEJ1ZmZlciwgY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBj
b25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVuZ3RoLCBVRXJyb3JD
b2RlKiBzdGF0dXMpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVVGV4
dFByb3ZpZGVyTGF0aW4xX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1
L1VUZXh0UHJvdmlkZXJVVEYxNi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiVVRleHRQcm92aWRlclVURjE2LmgiCisKKyNpbmNsdWRlICJVVGV4
dFByb3ZpZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGlubGluZSBVVGV4
dFByb3ZpZGVyQ29udGV4dCB0ZXh0VVRGMTZHZXRDdXJyZW50Q29udGV4dChjb25zdCBVVGV4dCog
dGV4dCkKK3sKKyAgICBpZiAoIXRleHQtPmNodW5rQ29udGVudHMpCisgICAgICAgIHJldHVybiBV
VGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250ZXh0OworICAgIHJldHVybiB0ZXh0LT5jaHVua0Nv
bnRlbnRzID09IHRleHQtPnAgPyBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQg
OiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0OworfQorCitzdGF0aWMgdm9pZCB0
ZXh0VVRGMTZNb3ZlSW5QcmltYXJ5Q29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJ
bmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCit7CisgICAgQVNTRVJU
KHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cCk7CisgICAgQVNTRVJUX1VOVVNFRChmb3J3
YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPj0gdGV4dC0+YiA6IG5hdGl2ZUluZGV4ID4gdGV4
dC0+Yik7CisgICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5kZXgg
PCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOworICAgIHRleHQt
PmNodW5rTmF0aXZlU3RhcnQgPSB0ZXh0LT5iOworICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQg
PSBuYXRpdmVMZW5ndGg7CisgICAgaW50NjRfdCBsZW5ndGggPSB0ZXh0LT5jaHVua05hdGl2ZUxp
bWl0IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAvLyBFbnN1cmUgY2h1bmsgbGVuZ3Ro
IGlzIHdlbGwgZGVmaW5lZCBpZiBjb21wdXRlZCBsZW5ndGggZXhjZWVkcyBpbnQzMl90IHJhbmdl
LgorICAgIEFTU0VSVChsZW5ndGggPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgo
KSk7CisgICAgdGV4dC0+Y2h1bmtMZW5ndGggPSBsZW5ndGggPCBzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KGxlbmd0aCkgOiAwOworICAg
IHRleHQtPm5hdGl2ZUluZGV4aW5nTGltaXQgPSB0ZXh0LT5jaHVua0xlbmd0aDsKKyAgICBpbnQ2
NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAv
LyBFbnN1cmUgY2h1bmsgb2Zmc2V0IGlzIHdlbGwgZGVmaW5lZCBpZiBjb21wdXRlZCBvZmZzZXQg
ZXhjZWVkcyBpbnQzMl90IHJhbmdlIG9yIGNodW5rIGxlbmd0aC4KKyAgICBBU1NFUlQob2Zmc2V0
IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOworICAgIHRleHQtPmNodW5r
T2Zmc2V0ID0gc3RkOjptaW4ob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6
bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMCwgdGV4dC0+Y2h1bmtMZW5n
dGgpOworfQorCitzdGF0aWMgdm9pZCB0ZXh0VVRGMTZTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KFVU
ZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJv
b2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQoIXRleHQtPmNodW5rQ29udGVudHMgfHwgdGV4dC0+
Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5xKTsKKyAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5wKTsKKyAgICB0ZXh0VVRGMTZNb3ZlSW5Qcmlt
YXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKK30K
Kworc3RhdGljIHZvaWQgdGV4dFVURjE2TW92ZUluUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0LCBp
bnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkK
K3sKKyAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5xKTsKKyAgICBBU1NF
UlQoZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgdGV4dC0+YiA6IG5hdGl2ZUluZGV4IDw9IHRleHQt
PmIpOworICAgIEFTU0VSVF9VTlVTRUQobmF0aXZlTGVuZ3RoLCBmb3J3YXJkID8gbmF0aXZlSW5k
ZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOworICAgIEFT
U0VSVF9VTlVTRUQoZm9yd2FyZCwgZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3Ro
IDogbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3RoKTsKKyAgICB0ZXh0LT5jaHVua05hdGl2ZVN0
YXJ0ID0gMDsKKyAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gdGV4dC0+YjsKKyAgICB0ZXh0
LT5jaHVua0xlbmd0aCA9IHRleHQtPmI7CisgICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9
IHRleHQtPmNodW5rTGVuZ3RoOworICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0
ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OworICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMgd2Vs
bCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2Ugb3IgY2h1
bmsgbGVuZ3RoLgorICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptYXgoKSk7CisgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGQ6Om1pbihvZmZzZXQgPCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+
KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRV
VEYxNlN3aXRjaFRvUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4
LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQoIXRl
eHQtPmNodW5rQ29udGVudHMgfHwgdGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wKTsKKyAg
ICB0ZXh0LT5jaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5x
KTsKKyAgICB0ZXh0VVRGMTZNb3ZlSW5QcmlvckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5h
dGl2ZUxlbmd0aCwgZm9yd2FyZCk7Cit9CisKKy8vIC0tIEJlZ2luIFVURi0xNiBwcm92aWRlciBm
dW5jdGlvbnMgLS0KKworc3RhdGljIFVUZXh0KiB1VGV4dFVURjE2Q2xvbmUoVVRleHQqLCBjb25z
dCBVVGV4dCosIFVCb29sLCBVRXJyb3JDb2RlKik7CitzdGF0aWMgaW50NjRfdCB1VGV4dFVURjE2
TmF0aXZlTGVuZ3RoKFVUZXh0Kik7CitzdGF0aWMgVUJvb2wgdVRleHRVVEYxNkFjY2VzcyhVVGV4
dCosIGludDY0X3QsIFVCb29sKTsKK3N0YXRpYyBpbnQzMl90IHVUZXh0VVRGMTZFeHRyYWN0KFVU
ZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKik7Citz
dGF0aWMgdm9pZCB1VGV4dFVURjE2Q2xvc2UoVVRleHQqKTsKKworc3RhdGljIFVUZXh0KiB1VGV4
dFVURjE2Q2xvbmUoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9v
bCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpCit7CisgICAgcmV0dXJuIHVUZXh0Q2xvbmVJbXBs
KGRlc3RpbmF0aW9uLCBzb3VyY2UsIGRlZXAsIHN0YXR1cyk7Cit9CisKK3N0YXRpYyBpbmxpbmUg
aW50NjRfdCB1VGV4dFVURjE2TmF0aXZlTGVuZ3RoKFVUZXh0KiB0ZXh0KQoreworICAgIHJldHVy
biB0ZXh0LT5hICsgdGV4dC0+YjsKK30KKworc3RhdGljIFVCb29sIHVUZXh0VVRGMTZBY2Nlc3Mo
VVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIFVCb29sIGZvcndhcmQpCit7CisgICAg
aWYgKCF0ZXh0LT5jb250ZXh0KQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgaW50NjRfdCBu
YXRpdmVMZW5ndGggPSB1VGV4dFVURjE2TmF0aXZlTGVuZ3RoKHRleHQpOworICAgIFVCb29sIGlz
QWNjZXNzaWJsZTsKKyAgICBpZiAodVRleHRBY2Nlc3NJbkNodW5rT3JPdXRPZlJhbmdlKHRleHQs
IG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQsIGlzQWNjZXNzaWJsZSkpCisgICAg
ICAgIHJldHVybiBpc0FjY2Vzc2libGU7CisgICAgbmF0aXZlSW5kZXggPSB1VGV4dEFjY2Vzc1Bp
bkluZGV4KG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgpOworICAgIFVUZXh0UHJvdmlkZXJDb250
ZXh0IGN1cnJlbnRDb250ZXh0ID0gdGV4dFVURjE2R2V0Q3VycmVudENvbnRleHQodGV4dCk7Cisg
ICAgVVRleHRQcm92aWRlckNvbnRleHQgbmV3Q29udGV4dCA9IHVUZXh0UHJvdmlkZXJDb250ZXh0
KHRleHQsIG5hdGl2ZUluZGV4LCBmb3J3YXJkKTsKKyAgICBBU1NFUlQobmV3Q29udGV4dCAhPSBV
VGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250ZXh0KTsKKyAgICBpZiAobmV3Q29udGV4dCA9PSBj
dXJyZW50Q29udGV4dCkgeworICAgICAgICBpZiAoY3VycmVudENvbnRleHQgPT0gVVRleHRQcm92
aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQorICAgICAgICAgICAgdGV4dFVURjE2TW92ZUlu
UHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRleHRVVEYxNk1vdmVJblByaW9yQ29udGV4dCh0
ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKKyAgICB9IGVsc2UgaWYg
KG5ld0NvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQorICAg
ICAgICB0ZXh0VVRGMTZTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBu
YXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQobmV3Q29u
dGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0KTsKKyAgICAgICAgdGV4
dFVURjE2U3dpdGNoVG9QcmlvckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0
aCwgZm9yd2FyZCk7CisgICAgfQorICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgaW50MzJf
dCB1VGV4dFVURjE2RXh0cmFjdChVVGV4dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50
MzJfdCwgVUVycm9yQ29kZSogZXJyb3JDb2RlKQoreworICAgIC8vIEluIHRoZSBwcmVzZW50IGNv
bnRleHQsIHRoaXMgdGV4dCBwcm92aWRlciBpcyB1c2VkIG9ubHkgd2l0aCBJQ1UgZnVuY3Rpb25z
CisgICAgLy8gdGhhdCBkbyBub3QgcGVyZm9ybSBhbiBleHRyYWN0IG9wZXJhdGlvbi4KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAqZXJyb3JDb2RlID0gVV9VTlNVUFBPUlRFRF9FUlJP
UjsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdVRleHRVVEYxNkNsb3NlKFVUZXh0
KiB0ZXh0KQoreworICAgIHRleHQtPmNvbnRleHQgPSAwOworfQorCisvLyAtLSBFbmQgVVRGLTE2
IHByb3ZpZGVyIGZ1bmN0aW9ucyAtLQorCitzdGF0aWMgY29uc3Qgc3RydWN0IFVUZXh0RnVuY3Mg
dGV4dFVURjE2RnVuY3MgPSB7CisgICAgc2l6ZW9mKFVUZXh0RnVuY3MpLAorICAgIDAsIDAsIDAs
CisgICAgdVRleHRVVEYxNkNsb25lLAorICAgIHVUZXh0VVRGMTZOYXRpdmVMZW5ndGgsCisgICAg
dVRleHRVVEYxNkFjY2VzcywKKyAgICB1VGV4dFVURjE2RXh0cmFjdCwKKyAgICAwLCAwLCAwLCAw
LAorICAgIHVUZXh0VVRGMTZDbG9zZSwKKyAgICAwLCAwLCAwLAorfTsKKworVVRleHQqIHVUZXh0
T3BlblVURjE2KFVUZXh0KiB0ZXh0LCBjb25zdCBVQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5n
dGgsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgsIFVF
cnJvckNvZGUqIHN0YXR1cykKK3sKKyAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICBpZiAoIXN0cmluZyB8fCBsZW5ndGggPiBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSB7CisgICAgICAgICpz
dGF0dXMgPSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1I7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICB0ZXh0ID0gdXRleHRfc2V0dXAodGV4dCwgMCwgc3RhdHVzKTsKKyAgICBpZiAoVV9G
QUlMVVJFKCpzdGF0dXMpKSB7CisgICAgICAgIEFTU0VSVCghdGV4dCk7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKyAgICB1VGV4dEluaXRpYWxpemUodGV4dCwgJnRleHRVVEYxNkZ1bmNzLCBz
dHJpbmcsIGxlbmd0aCwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5ndGgpOworICAgIHJl
dHVybiB0ZXh0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJv
dmlkZXJVVEYxNi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFVUZXh0UHJvdmlkZXJVVEYxNl9oCisjZGVmaW5lIFVUZXh0UHJvdmlkZXJVVEYx
Nl9oCisKKyNpbmNsdWRlIDx1bmljb2RlL3V0ZXh0Lmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUv
VW5pY29kZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1VUZXh0KiB1VGV4dE9wZW5VVEYx
NihVVGV4dCosIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJp
b3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVuZ3RoLCBVRXJyb3JDb2RlKik7CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVUZXh0UHJvdmlkZXJVVEYxNl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220975</attachid>
            <date>2014-01-12 10:35:09 -0800</date>
            <delta_ts>2014-01-12 11:07:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126834-20140112103508.patch</filename>
            <type>text/plain</type>
            <size>71250</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTc5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE0LTAxLTExICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3BsaXQgSUNVIFVUZXh0IHByb3ZpZGVy
cyBvdXQgaW50byB0aGVpciBvd24gZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vdmVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBvdXIgY3VzdG9t
IFVUZXh0IHByb3ZpZGVycyBvdXQgaW50bworICAgICAgICB0aGVpciBvd24gZmlsZXMuCisgICAg
ICAgIC0gVVRleHRQcm92aWRlckxhdGluMS5oL2NwcCBjb250YWlucyB0aGUgTGF0aW4tMSBwcm92
aWRlci4KKyAgICAgICAgLSBVVGV4dFByb3ZpZGVyVVRGMTYuaC9jcHAgY29udGFpbnMgdGhlIFVU
Ri0xNiBwcm92aWRlci4KKyAgICAgICAgLSBVVGV4dFByb3ZpZGVyLmgvY3BwIGNvbnRhaW5zIGNv
ZGUgY29tbW9uIHRvIGFsbCB0aGUgcHJvdmlkZXJzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybUdU
Sy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZUNvbW1vbi5wcm9wczoK
KyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9UZXh0QWxsSW5PbmUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3JJQ1UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0VXBJdGVyYXRvcik6
CisgICAgICAgIChXZWJDb3JlOjp3b3JkQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjphY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2VudGVuY2VC
cmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFVwSXRlcmF0b3JXaXRoUnVsZXMp
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvaWN1OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpm
aXhQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0Q2xvbmVJbXBsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6dVRleHRQcm92aWRlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6dVRleHRJbml0
aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0QWNjZXNzUGluSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6dVRleHRBY2Nlc3NJbkNodW5rT3JPdXRPZlJhbmdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuaDogQWRkZWQuCisK
IDIwMTQtMDEtMTEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbaU9TXSBGaXggYnVpbGQgb2YgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWdpc3RlckFsbFZp
ZXdwb3J0Q29uc3RyYWluZWRMYXllcnMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDE2MTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw2ICs3Nyw3IEBAIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAg
ICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yayIKICAgICAiJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vc3FsIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0IgorICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0L2ljdSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGx1
Z2lucyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcmVuZGVyaW5nIgogICAgICIke1dFQkNPUkVfRElS
fS9yZW5kZXJpbmcvbGluZSIKQEAgLTI4MDEsNiArMjgwMiw5IEBAIGVuZGlmICgpCiAKIGlmIChX
VEZfVVNFX0lDVV9VTklDT0RFKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAg
ICAgICBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmNwcAorICAgICAgICBwbGF0Zm9y
bS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcAorICAgICAgICBwbGF0Zm9ybS90ZXh0
L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwCiAgICAgICAgIHBsYXRmb3JtL3RleHQvVGV4dEJy
ZWFrSXRlcmF0b3JJQ1UuY3BwCiAgICAgICAgIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNw
cAogICAgICAgICBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcApJbmRl
eDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDE2MTc5NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5MCw3IEBAIHdlYmNvcmVf
Y3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvZ3RrIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwgXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQgXAorCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMg
XAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luIFwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTYxNzk0KQorKysgU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTk3Myw2ICs1OTczLDEy
IEBAIHBsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAv
U2hhcmVkQnVmZmVyU291cC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5j
aGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9lbmNoYW50L1RleHRDaGVja2VyRW5jaGFudC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9CaWRpQ29udGV4dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlS
ZXNvbHZlci5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCShyZXZpc2lvbiAxNjE3
OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQkod29ya2luZyBjb3B5KQpA
QCAtMjAsNiArMjAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMK
ICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9ndGsiCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsvc291cCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vdGV4dC9ndGsiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQvaWN1IgogICAg
ICIke1dFQkNPUkVfRElSfS9wbHVnaW5zL2d0ayIKICkKIApAQCAtMTI4LDYgKzEyOSw5IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vc291cC9TaGFyZWRCdWZm
ZXJTb3VwLmNwcAogCisgICAgcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAKKyAg
ICBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcAorICAgIHBsYXRmb3Jt
L3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L0xvY2Fs
ZUlDVS5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySUNVLmNwcAogICAg
IHBsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcApAQCAtMjU1LDYgKzI1OSw5IEBAIGxpc3Qo
QVBQRU5EIFdlYkNvcmVQbGF0Zm9ybUdUS19TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9zb3VwL1No
YXJlZEJ1ZmZlclNvdXAuY3BwCiAKKyAgICBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVy
LmNwcAorICAgIHBsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCisgICAg
cGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNwcAogICAgIHBsYXRmb3JtL3Rl
eHQvTG9jYWxlSUNVLmNwcAogICAgIHBsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJQ1Uu
Y3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZUNvbW1vbi5wcm9wcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZUNvbW1vbi5wcm9wcwkocmV2aXNp
b24gMTYxNzk0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmVDb21t
b24ucHJvcHMJKHdvcmtpbmcgY29weSkKQEAgLTcsNyArNyw3IEBACiAgIDwvUHJvcGVydHlHcm91
cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5c
TW9kdWxlc1xtZWRpYWNvbnRyb2xzOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXG1lZGlhc3RyZWFt
OyQoUHJvamVjdERpcikuLlxNb2R1bGVzXGZpbGVzeXN0ZW07JChQcm9qZWN0RGlyKS4uXE1vZHVs
ZXNcZ2VvbG9jYXRpb247JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcaW5kZXhlZGRiOyQoUHJvamVj
dERpcikuLlxNb2R1bGVzXG1lZGlhc291cmNlOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXG5hdmln
YXRvcmNvbnRlbnR1dGlsczskKFByb2plY3REaXIpLi5cTW9kdWxlc1xwbHVnaW5zOyQoUHJvamVj
dERpcikuLlxNb2R1bGVzXHNwZWVjaDskKFByb2plY3REaXIpLi5cTW9kdWxlc1xwcm94aW1pdHk7
JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNccXVvdGE7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcbm90
aWZpY2F0aW9uczskKFByb2plY3REaXIpLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZTskKFByb2plY3RE
aXIpLi5cTW9kdWxlc1x3ZWJzb2NrZXRzOyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5OyQo
UHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5XHdpbjskKFByb2plY3REaXIpLi5cYnJpZGdlOyQo
UHJvamVjdERpcikuLlxicmlkZ2VcYzskKFByb2plY3REaXIpLi5cYnJpZGdlXGpzYzskKFByb2pl
Y3REaXIpLi5cY3NzOyQoUHJvamVjdERpcikuLlxlZGl0aW5nOyQoUHJvamVjdERpcikuLlxmaWxl
YXBpOyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmc7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xs
aW5lOyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcbWF0aG1sOyQoUHJvamVjdERpcikuLlxyZW5k
ZXJpbmdcc2hhcGVzOyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3R5bGU7JChQcm9qZWN0RGly
KS4uXHJlbmRlcmluZ1xzdmc7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzOyQoUHJvamVjdERpciku
LlxiaW5kaW5nc1xnZW5lcmljOyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xqczskKFByb2plY3RE
aXIpLi5cYmluZGluZ3NcanNcc3BlY2lhbGl6YXRpb247JChQcm9qZWN0RGlyKS4uXGRvbTskKFBy
b2plY3REaXIpLi5cZG9tXGRlZmF1bHQ7JChQcm9qZWN0RGlyKS4uXGhpc3Rvcnk7JChQcm9qZWN0
RGlyKS4uXGh0bWw7JChQcm9qZWN0RGlyKS4uXGh0bWxcY2FudmFzOyQoUHJvamVjdERpcikuLlxo
dG1sXGZvcm1zOyQoUHJvamVjdERpcikuLlxodG1sXHBhcnNlcjskKFByb2plY3REaXIpLi5caHRt
bFxzaGFkb3c7JChQcm9qZWN0RGlyKS4uXGh0bWxcdHJhY2s7JChQcm9qZWN0RGlyKS4uXGluc3Bl
Y3RvcjskKFByb2plY3REaXIpLi5cbG9hZGVyOyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXBwY2Fj
aGU7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlOyQoUHJvamVjdERpcikuLlxsb2FkZXJc
YXJjaGl2ZVxjZjskKFByb2plY3REaXIpLi5cbG9hZGVyXGNhY2hlOyQoUHJvamVjdERpcikuLlxs
b2FkZXJcaWNvbjskKFByb2plY3REaXIpLi5cbWF0aG1sOyQoUHJvamVjdERpcikuLlxwYWdlOyQo
UHJvamVjdERpcikuLlxwYWdlXGFuaW1hdGlvbjskKFByb2plY3REaXIpLi5ccGFnZVxzY3JvbGxp
bmc7JChQcm9qZWN0RGlyKS4uXHBhZ2Vcd2luOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybTskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxh
dWRpbzskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbW9jazskKFByb2plY3REaXIpLi5ccGxhdGZv
cm1cc3FsOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx3aW47JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXG5ldHdvcms7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcd2luOyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxjZjskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3M7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGNhOyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bVxncmFwaGljc1xjcHVcYXJtXGZpbHRlcnM7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBo
aWNzXGZpbHRlcnM7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcYXJt
OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZTskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcdHJhbnNmb3JtczskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
dGV4dDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cdGV4dFx0cmFuc2NvZGVyOyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW47JChQcm9qZWN0RGlyKS4uXHhtbDskKFByb2plY3RE
aXIpLi5ceG1sXHBhcnNlcjskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcV2ViQ29yZVxEZXJpdmVkU291cmNlczskKFByb2plY3REaXIpLi5ccGx1Z2lu
czskKFByb2plY3REaXIpLi5ccGx1Z2luc1x3aW47JChQcm9qZWN0RGlyKS4uXHN2Z1xhbmltYXRp
b247JChQcm9qZWN0RGlyKS4uXHN2Z1xncmFwaGljczskKFByb2plY3REaXIpLi5cc3ZnXHByb3Bl
cnRpZXM7JChQcm9qZWN0RGlyKS4uXHN2Z1xncmFwaGljc1xmaWx0ZXJzOyQoUHJvamVjdERpciku
Llxzdmc7JChQcm9qZWN0RGlyKS4uXHRlc3Rpbmc7JChQcm9qZWN0RGlyKS4uXGNyeXB0bzskKFBy
b2plY3REaXIpLi5cY3J5cHRvXGtleXM7JChQcm9qZWN0RGlyKS4uXHdtbDskKFByb2plY3REaXIp
Li5cc3RvcmFnZTskKFByb2plY3REaXIpLi5cc3R5bGU7JChQcm9qZWN0RGlyKS4uXHdlYnNvY2tl
dHM7JChQcm9qZWN0RGlyKS4uXHdvcmtlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1
ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZTskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyQoUHJvamVjdERpcikuLlxGb3J3YXJk
aW5nSGVhZGVyczskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZ3B1OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xlZ2w7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdy
YXBoaWNzXHN1cmZhY2VzOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xzdXJmYWNl
c1xlZ2w7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW5nbDskKFdlYktpdF9M
aWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7JChX
ZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JChXZWJLaXRf
TGlicmFyaWVzKVxpbmNsdWRlXHNxbGl0ZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVcSmF2
YVNjcmlwdENvcmU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHpsaWI7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3RE
aXIpLi5cTW9kdWxlc1xtZWRpYWNvbnRyb2xzOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXG1lZGlh
c3RyZWFtOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXGZpbGVzeXN0ZW07JChQcm9qZWN0RGlyKS4u
XE1vZHVsZXNcZ2VvbG9jYXRpb247JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcaW5kZXhlZGRiOyQo
UHJvamVjdERpcikuLlxNb2R1bGVzXG1lZGlhc291cmNlOyQoUHJvamVjdERpcikuLlxNb2R1bGVz
XG5hdmlnYXRvcmNvbnRlbnR1dGlsczskKFByb2plY3REaXIpLi5cTW9kdWxlc1xwbHVnaW5zOyQo
UHJvamVjdERpcikuLlxNb2R1bGVzXHNwZWVjaDskKFByb2plY3REaXIpLi5cTW9kdWxlc1xwcm94
aW1pdHk7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNccXVvdGE7JChQcm9qZWN0RGlyKS4uXE1vZHVs
ZXNcbm90aWZpY2F0aW9uczskKFByb2plY3REaXIpLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZTskKFBy
b2plY3REaXIpLi5cTW9kdWxlc1x3ZWJzb2NrZXRzOyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmls
aXR5OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5XHdpbjskKFByb2plY3REaXIpLi5cYnJp
ZGdlOyQoUHJvamVjdERpcikuLlxicmlkZ2VcYzskKFByb2plY3REaXIpLi5cYnJpZGdlXGpzYzsk
KFByb2plY3REaXIpLi5cY3NzOyQoUHJvamVjdERpcikuLlxlZGl0aW5nOyQoUHJvamVjdERpciku
LlxmaWxlYXBpOyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmc7JChQcm9qZWN0RGlyKS4uXHJlbmRl
cmluZ1xsaW5lOyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcbWF0aG1sOyQoUHJvamVjdERpciku
LlxyZW5kZXJpbmdcc2hhcGVzOyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3R5bGU7JChQcm9q
ZWN0RGlyKS4uXHJlbmRlcmluZ1xzdmc7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzOyQoUHJvamVj
dERpcikuLlxiaW5kaW5nc1xnZW5lcmljOyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xqczskKFBy
b2plY3REaXIpLi5cYmluZGluZ3NcanNcc3BlY2lhbGl6YXRpb247JChQcm9qZWN0RGlyKS4uXGRv
bTskKFByb2plY3REaXIpLi5cZG9tXGRlZmF1bHQ7JChQcm9qZWN0RGlyKS4uXGhpc3Rvcnk7JChQ
cm9qZWN0RGlyKS4uXGh0bWw7JChQcm9qZWN0RGlyKS4uXGh0bWxcY2FudmFzOyQoUHJvamVjdERp
cikuLlxodG1sXGZvcm1zOyQoUHJvamVjdERpcikuLlxodG1sXHBhcnNlcjskKFByb2plY3REaXIp
Li5caHRtbFxzaGFkb3c7JChQcm9qZWN0RGlyKS4uXGh0bWxcdHJhY2s7JChQcm9qZWN0RGlyKS4u
XGluc3BlY3RvcjskKFByb2plY3REaXIpLi5cbG9hZGVyOyQoUHJvamVjdERpcikuLlxsb2FkZXJc
YXBwY2FjaGU7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlOyQoUHJvamVjdERpcikuLlxs
b2FkZXJcYXJjaGl2ZVxjZjskKFByb2plY3REaXIpLi5cbG9hZGVyXGNhY2hlOyQoUHJvamVjdERp
cikuLlxsb2FkZXJcaWNvbjskKFByb2plY3REaXIpLi5cbWF0aG1sOyQoUHJvamVjdERpcikuLlxw
YWdlOyQoUHJvamVjdERpcikuLlxwYWdlXGFuaW1hdGlvbjskKFByb2plY3REaXIpLi5ccGFnZVxz
Y3JvbGxpbmc7JChQcm9qZWN0RGlyKS4uXHBhZ2Vcd2luOyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bTskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uOyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxhdWRpbzskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbW9jazskKFByb2plY3REaXIpLi5c
cGxhdGZvcm1cc3FsOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx3aW47JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXG5ldHdvcms7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcd2luOyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxjZjskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhp
Y3M7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGNhOyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVxncmFwaGljc1xjcHVcYXJtXGZpbHRlcnM7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XGdyYXBoaWNzXGZpbHRlcnM7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRl
cnNcYXJtOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZTskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdHJhbnNmb3JtczskKFByb2plY3REaXIpLi5ccGxh
dGZvcm1cdGV4dDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cdGV4dFxpY3U7JChQcm9qZWN0RGly
KS4uXHBsYXRmb3JtXHRleHRcdHJhbnNjb2RlcjskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3Jh
cGhpY3Ncd2luOyQoUHJvamVjdERpcikuLlx4bWw7JChQcm9qZWN0RGlyKS4uXHhtbFxwYXJzZXI7
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXFdlYkNv
cmVcRGVyaXZlZFNvdXJjZXM7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnM7JChQcm9qZWN0RGlyKS4u
XHBsdWdpbnNcd2luOyQoUHJvamVjdERpcikuLlxzdmdcYW5pbWF0aW9uOyQoUHJvamVjdERpciku
LlxzdmdcZ3JhcGhpY3M7JChQcm9qZWN0RGlyKS4uXHN2Z1xwcm9wZXJ0aWVzOyQoUHJvamVjdERp
cikuLlxzdmdcZ3JhcGhpY3NcZmlsdGVyczskKFByb2plY3REaXIpLi5cc3ZnOyQoUHJvamVjdERp
cikuLlx0ZXN0aW5nOyQoUHJvamVjdERpcikuLlxjcnlwdG87JChQcm9qZWN0RGlyKS4uXGNyeXB0
b1xrZXlzOyQoUHJvamVjdERpcikuLlx3bWw7JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2U7JChQcm9q
ZWN0RGlyKS4uXHN0eWxlOyQoUHJvamVjdERpcikuLlx3ZWJzb2NrZXRzOyQoUHJvamVjdERpciku
Llx3b3JrZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlOyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1
ZGVcSmF2YVNjcmlwdENvcmU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0
ZVxKYXZhU2NyaXB0Q29yZTskKFByb2plY3REaXIpLi5cRm9yd2FyZGluZ0hlYWRlcnM7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGdwdTskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcZWdsOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xzdXJmYWNlczsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncc3VyZmFjZXNcZWdsOyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVuZ2w7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRl
OyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZVxwcml2YXRlOyQoV2ViS2l0X0xpYnJhcmllcylc
aW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVk
ZVxzcWxpdGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlOyQoV2Vi
S2l0X0xpYnJhcmllcylcaW5jbHVkZVx6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+RElTQUJMRV8zRF9SRU5ERVJJTkc7V0VCQ09SRV9DT05URVhUX01FTlVTOyUoUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxQ
cmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPgogICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyRmlsZT5XZWJDb3JlUHJlZml4Lmg8L1ByZWNvbXBpbGVkSGVhZGVyRmlsZT4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMu
Y21kCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9jb3B5Rm9y
d2FyZGluZ0hlYWRlcnMuY21kCShyZXZpc2lvbiAxNjE3OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZAkod29ya2luZyBjb3B5KQpA
QCAtNTgsNiArNTgsNyBAQCB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cZ3Jh
CiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGVc
Ki5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kg
L2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXG1vY2tcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlM
RERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRm
b3JtXHRleHRcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgor
eGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXHRleHRcaWN1XCouaCIgIiVDT05G
SUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVj
dERpciUuLlxwbGF0Zm9ybVx0ZXh0XHRyYW5zY29kZXJcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlM
RERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRm
b3JtXHdpblwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4
Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cbmV0d29ya1wqLmgiICIlQ09ORklH
VVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjE3OTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTIyOTIsNiArMjI5MiwxMiBAQAogCQk3QzUyMkQ0QjE1QjQ3N0U4MDA5
QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUyMkQ0OTE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9y
T3ZlcmxheS5jcHAgKi87IH07CiAJCTdDNTM0M0ZDMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0M1MzQzRkExN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5jcHAgKi87IH07CiAJCTdDNTM0M0ZEMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDNTM0M0ZCMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuaCAqLzsgfTsKKwkJN0M3NEQ0MzMxODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlk
ZXJMYXRpbjEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0M3NEQ0MzExODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwICov
OyB9OworCQk3Qzc0RDQzNDE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQcm92aWRlckxhdGluMS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3NEQ0MzIx
ODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCAqLzsgfTsKKwkJN0M3NEQ0
MzcxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3NEQ0MzUxODgyM0IxOTAwRTVFRDU3IC8q
IFVUZXh0UHJvdmlkZXIuY3BwICovOyB9OworCQk3Qzc0RDQzODE4ODIzQjE5MDBFNUVENTcgLyog
VVRleHRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0M3NEQ0MzYxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuaCAqLzsgfTsK
KwkJN0M3NEQ0M0IxODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc0RDQzOTE4ODI0
MDA0MDBFNUVENTcgLyogVVRleHRQcm92aWRlclVURjE2LmNwcCAqLzsgfTsKKwkJN0M3NEQ0M0Mx
ODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3NEQ0M0ExODgyNDAwNDAwRTVFRDU3IC8q
IFVUZXh0UHJvdmlkZXJVVEYxNi5oICovOyB9OwogCQk3Q0M3RTNENzE3MjA4QzBGMDAzQzUyNzcg
LyogSUROU2NyaXB0V2hpdGVMaXN0LnR4dCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0NDN0UzRDYxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdo
aXRlTGlzdC50eHQgKi87IH07CiAJCTdDRTZDQkZCMTg3RjM3MDcwMEQ0NkJGNSAvKiBGb3JtYXRD
b252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDRTZDQkZBMTg3RjM3MDcwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuaCAqLzsgfTsKIAkJ
N0NFNkNCRkQxODdGMzk0OTAwRDQ2QkY1IC8qIEZvcm1hdENvbnZlcnRlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0U2Q0JGQzE4N0YzOTQ5MDBE
NDZCRjUgLyogRm9ybWF0Q29udmVydGVyLmNwcCAqLzsgfTsKQEAgLTkyNjcsNiArOTI3MywxMiBA
QAogCQk3QzYxMzZGNzE3MTBDMzUyMDBGRjRBNTcgLyogSW5GaWxlc0NvbXBpbGVyLnBtICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQu
cGVybDsgbmFtZSA9IEluRmlsZXNDb21waWxlci5wbTsgcGF0aCA9IHNjcmlwdHMvSW5GaWxlc0Nv
bXBpbGVyLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzYxMzZGODE3MTBDMzUy
MDBGRjRBNTcgLyogSW5GaWxlc1BhcnNlci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBJbkZpbGVzUGFy
c2VyLnBtOyBwYXRoID0gc2NyaXB0cy9JbkZpbGVzUGFyc2VyLnBtOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzYxMzZGOTE3MTBDMzUyMDBGRjRBNTcgLyogU3RhdGljU3RyaW5nLnBt
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5z
Y3JpcHQucGVybDsgbmFtZSA9IFN0YXRpY1N0cmluZy5wbTsgcGF0aCA9IHNjcmlwdHMvU3RhdGlj
U3RyaW5nLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qzc0RDQzMTE4ODIzQTkz
MDBFNUVENTcgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0M3NEQ0MzIxODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJM
YXRpbjEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRleHRQcm92aWRlckxh
dGluMS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qzc0RDQzNTE4ODIzQjE5MDBF
NUVENTcgLyogVVRleHRQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBVVGV4dFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0M3NEQ0MzYxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVVRleHRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3Qzc0RDQzOTE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92aWRlclVURjE2
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJV
VEYxNi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNzRENDNBMTg4MjQwMDQw
MEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVVRleHRQcm92aWRlclVURjE2Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDQzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0ICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IElETlNjcmlwdFdoaXRlTGlzdC50eHQ7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDRTZDQkZBMTg3RjM3MDcwMEQ0NkJGNSAvKiBGb3JtYXRDb252
ZXJ0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybWF0Q29udmVydGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRTZDQkZDMTg3RjM5NDkwMEQ0NkJG
NSAvKiBGb3JtYXRDb252ZXJ0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRm9ybWF0Q29udmVydGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE2Mjg1LDYgKzE2Mjk3LDE5IEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2VzVGFicyA9IDA7
CiAJCX07CisJCTdDNzRENDMwMTg4MjNBNDIwMEU1RUQ1NyAvKiBpY3UgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdDNzRENDMxMTg4MjNBOTMwMEU1RUQ1
NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCAqLywKKwkJCQk3Qzc0RDQzMjE4ODIzQTkzMDBF
NUVENTcgLyogVVRleHRQcm92aWRlckxhdGluMS5oICovLAorCQkJCTdDNzRENDM5MTg4MjQwMDQw
MEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwICovLAorCQkJCTdDNzRENDNBMTg4MjQw
MDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLywKKwkJCQk3Qzc0RDQzNTE4ODIz
QjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5jcHAgKi8sCisJCQkJN0M3NEQ0MzYxODgyM0Ix
OTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gaWN1Owor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJN0U0NzRFMTkxMjQ5NERBOTAwMjM1
MzY0IC8qIGlvcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBA
IC0yMDAyNiw2ICsyMDA1MSw3IEBACiAJCQkJQjJCMjY0NTkwRDAwQTc3RTAwMEFDQzFEIC8qIGNm
ICovLAogCQkJCUE1MTZFOEIyMTM2RTA0QzAwMDc2QzNDMCAvKiBpb3MgKi8sCiAJCQkJQjJDM0Q5
RjkwRDAwNkMxRDAwRUY2RjI2IC8qIG1hYyAqLywKKwkJCQk3Qzc0RDQzMDE4ODIzQTQyMDBFNUVE
NTcgLyogaWN1ICovLAogCQkJCTM3QzYxRjAwMTIwOTVDODcwMDdBM0M2NyAvKiBBdG9taWNTdHJp
bmdLZXllZE1SVUNhY2hlLmggKi8sCiAJCQkJQjJDM0Q5RjIwRDAwNkMxRDAwRUY2RjI2IC8qIEJp
ZGlDb250ZXh0LmNwcCAqLywKIAkJCQlCMkMzRDlGMzBEMDA2QzFEMDBFRjZGMjYgLyogQmlkaUNv
bnRleHQuaCAqLywKQEAgLTI1MjAwLDEwICsyNTIyNiwxMiBAQAogCQkJCUQwQTNBNzMxMTQwNUEz
OTgwMEZCOEVEMyAvKiBSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxQUY1MDM2MTZGMTAwRjYwMDk1QjJFOCAvKiBSZXNvdXJjZUxvYWRlclR5cGVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzNFMzI1NzEwODgzQjdDMDA1QkM0OTMgLyogUmVzb3VyY2VMb2FkTm90
aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDNzRENDM0MTg4MjNBOTMwMEU1RUQ1NyAvKiBV
VGV4dFByb3ZpZGVyTGF0aW4xLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDI5NUZBNDEyQjA2MTRF
MDBEMUFDRTAgLyogUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUQw
Q0U1OEY5MTI1RTRDQzIwMEYzRjE5OSAvKiBSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA3QzU5Qjc2MTdGN0QwREIwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCThBODFCRjg1MTFEQ0ZEOTAwMERBMkI5OCAvKiBSZXNvdXJj
ZUxvYWRUaW1pbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDNzRENDM4MTg4MjNCMTkwMEU1RUQ1
NyAvKiBVVGV4dFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RUU2ODQ2RDEyRDI2RTM4
MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3
RDBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDc5NjlEQjgxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDSWNlQ2FuZGlkYXRlRXZlbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjU0MzYsNiArMjU0NjQsNyBAQAogCQkJCUJDRUY0NDRBMEU2
NzQ1RTAwMDFDMTI4NyAvKiBTdHlsZUdlbmVyYXRlZEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMTBEQzc2QjE0NzQ3QkFCMDA1RTI0NzEgLyogU3R5bGVHcmlkRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTExMERCOUIxNEY1REY3NzAwQTAzQjkzIC8qIFN0eWxlR3JpZEl0ZW1EYXRhLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3Qzc0RDQzQzE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92
aWRlclVURjE2LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VGNDNDRjBFNjczREExMDAxQzEyODcg
LyogU3R5bGVJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyMjczMDQwRTgyRjFFNjAwRTdG
OTc1IC8qIFN0eWxlSW5oZXJpdGVkRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ3MTI3Q0Ix
NjM0MzhBRTAwRUQ2RjVBIC8qIFN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjY3MzUsNiArMjY3NjQsNyBAQAogCQkJCUZFMTZDRkQ1MTY5RDFERUQwMEQzQTBD
NyAvKiBEYXRhYmFzZUJhY2tlbmRTeW5jLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFQkM1RjMx
MTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTdCQzZBMjcxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3Qzc0RDQzMzE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQcm92aWRlckxhdGlu
MS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTQ1NkYxODE2NzdENzRFMDA1RURERjkgLyogRGF0
YWJhc2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFQjI2RDI4MTY3QThGMkEwMEZE
RDI2QiAvKiBEYXRhYmFzZVNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRURFRjg0MTE2
Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI2ODQ1LDYgKzI2ODc1LDcgQEAKIAkJCQkwNzgzMjI4NDE4MDEzRUQ4MDA5OTlFMEMgLyogTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDlBMjQ3MzE1QjlD
MkQxMDBEMzQ1MjcgLyogRE9NRE9NU2VjdXJpdHlQb2xpY3kubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3Njk0NTY1QzEyMTREQjYzMDAwN0NCQUUgLyogRE9NRE9NVG9rZW5MaXN0Lm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJN0M3NEQ0M0IxODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYx
Ni5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QUFCQTI1OTE0QkM2MTMzMDBBQTlBMTEgLyogRE9N
RWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1QUNBOUMxMEE5QjVGQTUwMDY3MUU5MCAv
KiBET01FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVDQTk2QjkwQTk2MjFBNjAwNjkw
Q0NGIC8qIERPTUVudGl0eS5tbSBpbiBTb3VyY2VzICovLApAQCAtMjg5NTYsNiArMjg5ODcsNyBA
QAogCQkJCTA3OEUwOTBBMTdEMTRDRUUwMDQyMEFBMSAvKiBSVENJY2VDYW5kaWRhdGVFdmVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTQ4MzJDODE4N0Y2NzNGMDBEQTYzQTYgLyogV2ViQ29y
ZVRocmVhZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QUM0MEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdUZXN0cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3Qzc0RDQzNzE4ODIzQjE5MDBFNUVE
NTcgLyogVVRleHRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FDNzBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTA3OTY5REJCMTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FDQTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVGV4
dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0QWxsSW5PbmUuY3BwCShyZXZpc2lvbiAxNjE3OTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDMgKzM4LDYgQEAKICNpbmNsdWRlICJUZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5jcHAiCiAj
aW5jbHVkZSAiVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwIgogI2luY2x1ZGUgIlRleHRTdHJlYW0u
Y3BwIgorI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXIuY3BwIgorI2luY2x1ZGUgIlVUZXh0UHJvdmlk
ZXJMYXRpbjEuY3BwIgorI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXJVVEYxNi5jcHAiCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySUNVLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9y
SUNVLmNwcAkocmV2aXNpb24gMTYxNzk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDgg
QEAKICNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogCiAjaW5jbHVkZSAiTGluZUJyZWFr
SXRlcmF0b3JQb29sSUNVLmgiCisjaW5jbHVkZSAiVVRleHRQcm92aWRlckxhdGluMS5oIgorI2lu
Y2x1ZGUgIlVUZXh0UHJvdmlkZXJVVEYxNi5oIgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTMwLDggKzMyLDcgQEAgdXNpbmcg
bmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgVGV4dEJyZWFr
SXRlcmF0b3IqIHNldFVwSXRlcmF0b3IoYm9vbCYgY3JlYXRlZEl0ZXJhdG9yLCBUZXh0QnJlYWtJ
dGVyYXRvciomIGl0ZXJhdG9yLAotICAgIFVCcmVha0l0ZXJhdG9yVHlwZSB0eXBlLCBjb25zdCBV
Q2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoKQorc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRV
cEl0ZXJhdG9yKGJvb2wmIGNyZWF0ZWRJdGVyYXRvciwgVGV4dEJyZWFrSXRlcmF0b3IqJiBpdGVy
YXRvciwgVUJyZWFrSXRlcmF0b3JUeXBlIHR5cGUsIGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBs
ZW5ndGgpCiB7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNTMsMzcz
ICs1NCwxMSBAQCBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHNldFVwSXRlcmF0b3IoCiAgICAg
cmV0dXJuIGl0ZXJhdG9yOwogfQogCi1lbnVtIFRleHRDb250ZXh0IHsgTm9Db250ZXh0LCBQcmlv
ckNvbnRleHQsIFByaW1hcnlDb250ZXh0IH07Ci0KLWNvbnN0IGludCB0ZXh0QnVmZmVyQ2FwYWNp
dHkgPSAxNjsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFVUZXh0IHRleHQ7Ci0gICAgVUNoYXIg
YnVmZmVyW3RleHRCdWZmZXJDYXBhY2l0eV07Ci19IFVUZXh0V2l0aEJ1ZmZlcjsKLQotc3RhdGlj
IGlubGluZSBpbnQ2NF90IHRleHRQaW5JbmRleChpbnQ2NF90JiBpbmRleCwgaW50NjRfdCBsaW1p
dCkKLXsKLSAgICBpZiAoaW5kZXggPCAwKQotICAgICAgICBpbmRleCA9IDA7Ci0gICAgZWxzZSBp
ZiAoaW5kZXggPiBsaW1pdCkKLSAgICAgICAgaW5kZXggPSBsaW1pdDsKLSAgICByZXR1cm4gaW5k
ZXg7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgaW50NjRfdCB0ZXh0TmF0aXZlTGVuZ3RoKFVUZXh0KiB0
ZXh0KQotewotICAgIHJldHVybiB0ZXh0LT5hICsgdGV4dC0+YjsKLX0KLQotLy8gUmVsb2NhdGUg
cG9pbnRlciBmcm9tIHNvdXJjZSBpbnRvIGRlc3RpbmF0aW9uIGFzIHJlcXVpcmVkLgotc3RhdGlj
IHZvaWQgdGV4dEZpeFBvaW50ZXIoY29uc3QgVVRleHQqIHNvdXJjZSwgVVRleHQqIGRlc3RpbmF0
aW9uLCBjb25zdCB2b2lkKiYgcG9pbnRlcikKLXsKLSAgICBpZiAocG9pbnRlciA+PSBzb3VyY2Ut
PnBFeHRyYSAmJiBwb2ludGVyIDwgc3RhdGljX2Nhc3Q8Y2hhcio+KHNvdXJjZS0+cEV4dHJhKSAr
IHNvdXJjZS0+ZXh0cmFTaXplKSB7Ci0gICAgICAgIC8vIFBvaW50ZXIgcmVmZXJlbmNlcyBzb3Vy
Y2UgZXh0cmEgYnVmZmVyLgotICAgICAgICBwb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGRl
c3RpbmF0aW9uLT5wRXh0cmEpICsgKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihwb2ludGVyKSAt
IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihzb3VyY2UtPnBFeHRyYSkpOwotICAgIH0gZWxzZSBp
ZiAocG9pbnRlciA+PSBzb3VyY2UgJiYgcG9pbnRlciA8IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KHNvdXJjZSkgKyBzb3VyY2UtPnNpemVPZlN0cnVjdCkgewotICAgICAgICAvLyBQb2lu
dGVyIHJlZmVyZW5jZXMgc291cmNlIHRleHQgc3RydWN0dXJlLCBidXQgbm90IHNvdXJjZSBleHRy
YSBidWZmZXIuCi0gICAgICAgIHBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihkZXN0
aW5hdGlvbikgKyAoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHBvaW50ZXIpIC0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlKSk7Ci0gICAgfQotfQotCi1zdGF0aWMgVVRleHQq
IHRleHRDbG9uZShVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVCb29s
IGRlZXAsIFVFcnJvckNvZGUqIHN0YXR1cykKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGRlZXAsICFk
ZWVwKTsKLSAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKQotICAgICAgICByZXR1cm4gMDsKLSAg
ICBpbnQzMl90IGV4dHJhU2l6ZSA9IHNvdXJjZS0+ZXh0cmFTaXplOwotICAgIGRlc3RpbmF0aW9u
ID0gdXRleHRfc2V0dXAoZGVzdGluYXRpb24sIGV4dHJhU2l6ZSwgc3RhdHVzKTsKLSAgICBpZiAo
VV9GQUlMVVJFKCpzdGF0dXMpKQotICAgICAgICByZXR1cm4gZGVzdGluYXRpb247Ci0gICAgdm9p
ZCogZXh0cmFOZXcgPSBkZXN0aW5hdGlvbi0+cEV4dHJhOwotICAgIGludDMyX3QgZmxhZ3MgPSBk
ZXN0aW5hdGlvbi0+ZmxhZ3M7Ci0gICAgaW50IHNpemVUb0NvcHkgPSBzdGQ6Om1pbihzb3VyY2Ut
PnNpemVPZlN0cnVjdCwgZGVzdGluYXRpb24tPnNpemVPZlN0cnVjdCk7Ci0gICAgbWVtY3B5KGRl
c3RpbmF0aW9uLCBzb3VyY2UsIHNpemVUb0NvcHkpOwotICAgIGRlc3RpbmF0aW9uLT5wRXh0cmEg
PSBleHRyYU5ldzsKLSAgICBkZXN0aW5hdGlvbi0+ZmxhZ3MgPSBmbGFnczsKLSAgICBtZW1jcHko
ZGVzdGluYXRpb24tPnBFeHRyYSwgc291cmNlLT5wRXh0cmEsIGV4dHJhU2l6ZSk7Ci0gICAgdGV4
dEZpeFBvaW50ZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24tPmNvbnRleHQpOwot
ICAgIHRleHRGaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uLT5wKTsK
LSAgICB0ZXh0Rml4UG9pbnRlcihzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbi0+cSk7
Ci0gICAgQVNTRVJUKCFkZXN0aW5hdGlvbi0+cik7Ci0gICAgY29uc3Qgdm9pZCAqIGNodW5rQ29u
dGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oZGVzdGluYXRpb24tPmNodW5rQ29udGVu
dHMpOwotICAgIHRleHRGaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGNodW5rQ29udGVu
dHMpOwotICAgIGRlc3RpbmF0aW9uLT5jaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
VUNoYXIqPihjaHVua0NvbnRlbnRzKTsKLSAgICByZXR1cm4gZGVzdGluYXRpb247Ci19Ci0KLXN0
YXRpYyBpbnQzMl90IHRleHRFeHRyYWN0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IHN0YXJ0LCBpbnQ2
NF90IGxpbWl0LCBVQ2hhciogZGVzdGluYXRpb24sIGludDMyX3QgZGVzdGluYXRpb25DYXBhY2l0
eSwgVUVycm9yQ29kZSogZXJyb3JDb2RlKQotewotICAgIFVOVVNFRF9QQVJBTSh0ZXh0KTsKLSAg
ICBVTlVTRURfUEFSQU0oc3RhcnQpOwotICAgIFVOVVNFRF9QQVJBTShsaW1pdCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb25DYXBh
Y2l0eSk7Ci0gICAgLy8gSW4gdGhlIHByZXNlbnQgY29udGV4dCwgdGhpcyB0ZXh0IHByb3ZpZGVy
IGlzIHVzZWQgb25seSB3aXRoIElDVSBmdW5jdGlvbnMKLSAgICAvLyB0aGF0IGRvIG5vdCBwZXJm
b3JtIGFuIGV4dHJhY3Qgb3BlcmF0aW9uLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICplcnJvckNvZGUgPSBVX1VOU1VQUE9SVEVEX0VSUk9SOwotICAgIHJldHVybiAwOwotfQotCi1z
dGF0aWMgdm9pZCB0ZXh0Q2xvc2UoVVRleHQqIHRleHQpCi17Ci0gICAgdGV4dC0+Y29udGV4dCA9
IDA7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgVGV4dENvbnRleHQgdGV4dEdldENvbnRleHQoY29uc3Qg
VVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIFVCb29sIGZvcndhcmQpCi17Ci0gICAg
aWYgKCF0ZXh0LT5iIHx8IG5hdGl2ZUluZGV4ID4gdGV4dC0+YikKLSAgICAgICAgcmV0dXJuIFBy
aW1hcnlDb250ZXh0OwotICAgIGlmIChuYXRpdmVJbmRleCA9PSB0ZXh0LT5iKQotICAgICAgICBy
ZXR1cm4gZm9yd2FyZCA/IFByaW1hcnlDb250ZXh0IDogUHJpb3JDb250ZXh0OwotICAgIHJldHVy
biBQcmlvckNvbnRleHQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgVGV4dENvbnRleHQgdGV4dExhdGlu
MUdldEN1cnJlbnRDb250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0KQotewotICAgIGlmICghdGV4dC0+
Y2h1bmtDb250ZW50cykKLSAgICAgICAgcmV0dXJuIE5vQ29udGV4dDsKLSAgICByZXR1cm4gdGV4
dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wRXh0cmEgPyBQcmltYXJ5Q29udGV4dCA6IFByaW9y
Q29udGV4dDsKLX0KLQotc3RhdGljIHZvaWQgdGV4dExhdGluMU1vdmVJblByaW1hcnlDb250ZXh0
KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwg
VUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0
LT5wRXh0cmEpOwotICAgIGlmIChmb3J3YXJkKSB7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVJbmRl
eCA+PSB0ZXh0LT5iICYmIG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoKTsKLSAgICAgICAgdGV4
dC0+Y2h1bmtOYXRpdmVTdGFydCA9IG5hdGl2ZUluZGV4OwotICAgICAgICB0ZXh0LT5jaHVua05h
dGl2ZUxpbWl0ID0gbmF0aXZlSW5kZXggKyB0ZXh0LT5leHRyYVNpemUgLyBzaXplb2YoVUNoYXIp
OwotICAgICAgICBpZiAodGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA+IG5hdGl2ZUxlbmd0aCkKLSAg
ICAgICAgICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVMZW5ndGg7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZUluZGV4ID4gdGV4dC0+YiAmJiBuYXRpdmVJbmRl
eCA8PSBuYXRpdmVMZW5ndGgpOwotICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gbmF0
aXZlSW5kZXg7Ci0gICAgICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSBuYXRpdmVJbmRleCAt
IHRleHQtPmV4dHJhU2l6ZSAvIHNpemVvZihVQ2hhcik7Ci0gICAgICAgIGlmICh0ZXh0LT5jaHVu
a05hdGl2ZVN0YXJ0IDwgdGV4dC0+YikKLSAgICAgICAgICAgIHRleHQtPmNodW5rTmF0aXZlU3Rh
cnQgPSB0ZXh0LT5iOwotICAgIH0KLSAgICBpbnQ2NF90IGxlbmd0aCA9IHRleHQtPmNodW5rTmF0
aXZlTGltaXQgLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgIC8vIEVuc3VyZSBjaHVuayBs
ZW5ndGggaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIGxlbmd0aCBleGNlZWRzIGludDMyX3Qg
cmFuZ2UuCi0gICAgQVNTRVJUKGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpKTsKLSAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7
Ci0gICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOwotICAg
IHRleHQtPmNodW5rT2Zmc2V0ID0gZm9yd2FyZCA/IDAgOiB0ZXh0LT5jaHVua0xlbmd0aDsKLSAg
ICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoY29uc3RfY2FzdDxVQ2hhcio+KHRleHQtPmNodW5rQ29u
dGVudHMpLCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KHRleHQtPnApICsgKHRleHQtPmNodW5r
TmF0aXZlU3RhcnQgLSB0ZXh0LT5iKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRleHQtPmNodW5r
TGVuZ3RoKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRMYXRpbjFTd2l0Y2hUb1ByaW1hcnlDb250
ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0
aCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQoIXRleHQtPmNodW5rQ29udGVudHMgfHwg
dGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5xKTsKLSAgICB0ZXh0LT5jaHVua0NvbnRlbnRz
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5wRXh0cmEpOwotICAgIHRleHRMYXRp
bjFNb3ZlSW5QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBm
b3J3YXJkKTsKLX0KLQotc3RhdGljIHZvaWQgdGV4dExhdGluMU1vdmVJblByaW9yQ29udGV4dChV
VGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVC
b29sIGZvcndhcmQpCi17Ci0gICAgQVNTRVJUKHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+
cSk7Ci0gICAgQVNTRVJUKGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IHRleHQtPmIgOiBuYXRpdmVJ
bmRleCA8PSB0ZXh0LT5iKTsKLSAgICBBU1NFUlRfVU5VU0VEKG5hdGl2ZUxlbmd0aCwgZm9yd2Fy
ZCA/IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVu
Z3RoKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8
IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7Ci0gICAgdGV4dC0+
Y2h1bmtOYXRpdmVTdGFydCA9IDA7Ci0gICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IHRleHQt
PmI7Ci0gICAgdGV4dC0+Y2h1bmtMZW5ndGggPSB0ZXh0LT5iOwotICAgIHRleHQtPm5hdGl2ZUlu
ZGV4aW5nTGltaXQgPSB0ZXh0LT5jaHVua0xlbmd0aDsKLSAgICBpbnQ2NF90IG9mZnNldCA9IG5h
dGl2ZUluZGV4IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKLSAgICAvLyBFbnN1cmUgY2h1bmsg
b2Zmc2V0IGlzIHdlbGwgZGVmaW5lZCBpZiBjb21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQzMl90
IHJhbmdlIG9yIGNodW5rIGxlbmd0aC4KLSAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOwotICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gc3RkOjpt
aW4ob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNf
Y2FzdDxpbnQzMl90PihvZmZzZXQpIDogMCwgdGV4dC0+Y2h1bmtMZW5ndGgpOwotfQotCi1zdGF0
aWMgdm9pZCB0ZXh0TGF0aW4xU3dpdGNoVG9QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0
X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewot
ICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09
IHRleHQtPnBFeHRyYSk7Ci0gICAgdGV4dC0+Y2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0PGNv
bnN0IFVDaGFyKj4odGV4dC0+cSk7Ci0gICAgdGV4dExhdGluMU1vdmVJblByaW9yQ29udGV4dCh0
ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLX0KLQotc3RhdGljIGlu
bGluZSBib29sIHRleHRJbkNodW5rT3JPdXRPZlJhbmdlKFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5h
dGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCwgVUJvb2wmIGlz
QWNjZXNzaWJsZSkKLXsKLSAgICBpZiAoZm9yd2FyZCkgewotICAgICAgICBpZiAobmF0aXZlSW5k
ZXggPj0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAmJiBuYXRpdmVJbmRleCA8IHRleHQtPmNodW5r
TmF0aXZlTGltaXQpIHsKLSAgICAgICAgICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXgg
LSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgICAgICAgICAgLy8gRW5zdXJlIGNodW5rIG9m
ZnNldCBpcyB3ZWxsIGZvcm1lZCBpZiBjb21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQzMl90IHJh
bmdlLgotICAgICAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MzJfdD46Om1heCgpKTsKLSAgICAgICAgICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gb2Zmc2V0IDwg
c3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90
PihvZmZzZXQpIDogMDsKLSAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IFRSVUU7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAobmF0aXZlSW5kZXggPj0g
bmF0aXZlTGVuZ3RoICYmIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPT0gbmF0aXZlTGVuZ3RoKSB7
Ci0gICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNldCA9IHRleHQtPmNodW5rTGVuZ3RoOwotICAg
ICAgICAgICAgaXNBY2Nlc3NpYmxlID0gRkFMU0U7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChuYXRpdmVJbmRleCA+IHRleHQt
PmNodW5rTmF0aXZlU3RhcnQgJiYgbmF0aXZlSW5kZXggPD0gdGV4dC0+Y2h1bmtOYXRpdmVMaW1p
dCkgewotICAgICAgICAgICAgaW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNo
dW5rTmF0aXZlU3RhcnQ7Ci0gICAgICAgICAgICAvLyBFbnN1cmUgY2h1bmsgb2Zmc2V0IGlzIHdl
bGwgZm9ybWVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCi0gICAg
ICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4
KCkpOwotICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBvZmZzZXQgPCBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkg
OiAwOwotICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gVFJVRTsKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChuYXRpdmVJbmRleCA8PSAwICYmICF0ZXh0
LT5jaHVua05hdGl2ZVN0YXJ0KSB7Ci0gICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNldCA9IDA7
Ci0gICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBGQUxTRTsKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIFVC
b29sIHRleHRMYXRpbjFBY2Nlc3MoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIFVC
b29sIGZvcndhcmQpCi17Ci0gICAgaWYgKCF0ZXh0LT5jb250ZXh0KQotICAgICAgICByZXR1cm4g
RkFMU0U7Ci0gICAgaW50NjRfdCBuYXRpdmVMZW5ndGggPSB0ZXh0TmF0aXZlTGVuZ3RoKHRleHQp
OwotICAgIFVCb29sIGlzQWNjZXNzaWJsZTsKLSAgICBpZiAodGV4dEluQ2h1bmtPck91dE9mUmFu
Z2UodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCwgaXNBY2Nlc3NpYmxl
KSkKLSAgICAgICAgcmV0dXJuIGlzQWNjZXNzaWJsZTsKLSAgICBuYXRpdmVJbmRleCA9IHRleHRQ
aW5JbmRleChuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoKTsKLSAgICBUZXh0Q29udGV4dCBjdXJy
ZW50Q29udGV4dCA9IHRleHRMYXRpbjFHZXRDdXJyZW50Q29udGV4dCh0ZXh0KTsKLSAgICBUZXh0
Q29udGV4dCBuZXdDb250ZXh0ID0gdGV4dEdldENvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIGZv
cndhcmQpOwotICAgIEFTU0VSVChuZXdDb250ZXh0ICE9IE5vQ29udGV4dCk7Ci0gICAgaWYgKG5l
d0NvbnRleHQgPT0gY3VycmVudENvbnRleHQpIHsKLSAgICAgICAgaWYgKGN1cnJlbnRDb250ZXh0
ID09IFByaW1hcnlDb250ZXh0KQotICAgICAgICAgICAgdGV4dExhdGluMU1vdmVJblByaW1hcnlD
b250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB0ZXh0TGF0aW4xTW92ZUluUHJpb3JDb250ZXh0KHRleHQsIG5h
dGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAgIH0gZWxzZSBpZiAobmV3Q29u
dGV4dCA9PSBQcmltYXJ5Q29udGV4dCkKLSAgICAgICAgdGV4dExhdGluMVN3aXRjaFRvUHJpbWFy
eUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci0gICAg
ZWxzZSB7Ci0gICAgICAgIEFTU0VSVChuZXdDb250ZXh0ID09IFByaW9yQ29udGV4dCk7Ci0gICAg
ICAgIHRleHRMYXRpbjFTd2l0Y2hUb1ByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0
aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLSAgICB9Ci0gICAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRp
YyBjb25zdCBzdHJ1Y3QgVVRleHRGdW5jcyB0ZXh0TGF0aW4xRnVuY3MgPSB7Ci0gICAgc2l6ZW9m
KFVUZXh0RnVuY3MpLAotICAgIDAsIDAsIDAsCi0gICAgdGV4dENsb25lLAotICAgIHRleHROYXRp
dmVMZW5ndGgsCi0gICAgdGV4dExhdGluMUFjY2VzcywKLSAgICB0ZXh0RXh0cmFjdCwKLSAgICAw
LCAwLCAwLCAwLAotICAgIHRleHRDbG9zZSwKLSAgICAwLCAwLCAwLAotfTsKLQotc3RhdGljIHZv
aWQgdGV4dEluaXQoVVRleHQqIHRleHQsIGNvbnN0IFVUZXh0RnVuY3MqIGZ1bmNzLCBjb25zdCB2
b2lkKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwg
aW50IHByaW9yQ29udGV4dExlbmd0aCkKLXsKLSAgICB0ZXh0LT5wRnVuY3MgPSBmdW5jczsKLSAg
ICB0ZXh0LT5wcm92aWRlclByb3BlcnRpZXMgPSAxIDw8IFVURVhUX1BST1ZJREVSX1NUQUJMRV9D
SFVOS1M7Ci0gICAgdGV4dC0+Y29udGV4dCA9IHN0cmluZzsKLSAgICB0ZXh0LT5wID0gc3RyaW5n
OwotICAgIHRleHQtPmEgPSBsZW5ndGg7Ci0gICAgdGV4dC0+cSA9IHByaW9yQ29udGV4dDsKLSAg
ICB0ZXh0LT5iID0gcHJpb3JDb250ZXh0TGVuZ3RoOwotfQotCi1zdGF0aWMgVVRleHQqIHRleHRP
cGVuTGF0aW4xKFVUZXh0V2l0aEJ1ZmZlciogdXRXaXRoQnVmZmVyLCBjb25zdCBMQ2hhciogc3Ry
aW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlv
ckNvbnRleHRMZW5ndGgsIFVFcnJvckNvZGUqIHN0YXR1cykKLXsKLSAgICBpZiAoVV9GQUlMVVJF
KCpzdGF0dXMpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIXN0cmluZyB8fCBsZW5ndGgg
PiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4
KCkpKSB7Ci0gICAgICAgICpzdGF0dXMgPSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1I7Ci0gICAg
ICAgIHJldHVybiAwOwotICAgIH0KLSAgICBVVGV4dCogdGV4dCA9IHV0ZXh0X3NldHVwKCZ1dFdp
dGhCdWZmZXItPnRleHQsIHNpemVvZih1dFdpdGhCdWZmZXItPmJ1ZmZlciksIHN0YXR1cyk7Ci0g
ICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkgewotICAgICAgICBBU1NFUlQoIXRleHQpOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgdGV4dEluaXQodGV4dCwgJnRleHRMYXRpbjFGdW5j
cywgc3RyaW5nLCBsZW5ndGgsIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoKTsKLSAg
ICByZXR1cm4gdGV4dDsKLX0KLQotc3RhdGljIGlubGluZSBUZXh0Q29udGV4dCB0ZXh0VVRGMTZH
ZXRDdXJyZW50Q29udGV4dChjb25zdCBVVGV4dCogdGV4dCkKLXsKLSAgICBpZiAoIXRleHQtPmNo
dW5rQ29udGVudHMpCi0gICAgICAgIHJldHVybiBOb0NvbnRleHQ7Ci0gICAgcmV0dXJuIHRleHQt
PmNodW5rQ29udGVudHMgPT0gdGV4dC0+cCA/IFByaW1hcnlDb250ZXh0IDogUHJpb3JDb250ZXh0
OwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0VVRGMTZNb3ZlSW5QcmltYXJ5Q29udGV4dChVVGV4dCog
dGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZv
cndhcmQpCi17Ci0gICAgQVNTRVJUKHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cCk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPj0gdGV4dC0+
YiA6IG5hdGl2ZUluZGV4ID4gdGV4dC0+Yik7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBm
b3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRp
dmVMZW5ndGgpOwotICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSB0ZXh0LT5iOwotICAgIHRl
eHQtPmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVMZW5ndGg7Ci0gICAgaW50NjRfdCBsZW5ndGgg
PSB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKLSAgICAv
LyBFbnN1cmUgY2h1bmsgbGVuZ3RoIGlzIHdlbGwgZGVmaW5lZCBpZiBjb21wdXRlZCBsZW5ndGgg
ZXhjZWVkcyBpbnQzMl90IHJhbmdlLgotICAgIEFTU0VSVChsZW5ndGggPCBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptYXgoKSk7Ci0gICAgdGV4dC0+Y2h1bmtMZW5ndGggPSBsZW5ndGgg
PCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMy
X3Q+KGxlbmd0aCkgOiAwOwotICAgIHRleHQtPm5hdGl2ZUluZGV4aW5nTGltaXQgPSB0ZXh0LT5j
aHVua0xlbmd0aDsKLSAgICBpbnQ2NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+Y2h1
bmtOYXRpdmVTdGFydDsKLSAgICAvLyBFbnN1cmUgY2h1bmsgb2Zmc2V0IGlzIHdlbGwgZGVmaW5l
ZCBpZiBjb21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQzMl90IHJhbmdlIG9yIGNodW5rIGxlbmd0
aC4KLSAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4
KCkpOwotICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gc3RkOjptaW4ob2Zmc2V0IDwgc3RkOjpudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQp
IDogMCwgdGV4dC0+Y2h1bmtMZW5ndGgpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0VVRGMTZTd2l0
Y2hUb1ByaW1hcnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2
NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQoIXRleHQtPmNo
dW5rQ29udGVudHMgfHwgdGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5xKTsKLSAgICB0ZXh0
LT5jaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5wKTsKLSAg
ICB0ZXh0VVRGMTZNb3ZlSW5QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZl
TGVuZ3RoLCBmb3J3YXJkKTsKLX0KLQotc3RhdGljIHZvaWQgdGV4dFVURjE2TW92ZUluUHJpb3JD
b250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxl
bmd0aCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9
PSB0ZXh0LT5xKTsKLSAgICBBU1NFUlQoZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgdGV4dC0+YiA6
IG5hdGl2ZUluZGV4IDw9IHRleHQtPmIpOwotICAgIEFTU0VSVF9VTlVTRUQobmF0aXZlTGVuZ3Ro
LCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBu
YXRpdmVMZW5ndGgpOwotICAgIEFTU0VSVF9VTlVTRUQoZm9yd2FyZCwgZm9yd2FyZCA/IG5hdGl2
ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3RoKTsKLSAg
ICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gMDsKLSAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0
ID0gdGV4dC0+YjsKLSAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IHRleHQtPmI7Ci0gICAgdGV4dC0+
bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOwotICAgIGludDY0X3Qgb2Zm
c2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgIC8vIEVuc3Vy
ZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRz
IGludDMyX3QgcmFuZ2Ugb3IgY2h1bmsgbGVuZ3RoLgotICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7Ci0gICAgdGV4dC0+Y2h1bmtPZmZzZXQg
PSBzdGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/
IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Ci19
Ci0KLXN0YXRpYyB2b2lkIHRleHRVVEYxNlN3aXRjaFRvUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0
LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2Fy
ZCkKLXsKLSAgICBBU1NFUlQoIXRleHQtPmNodW5rQ29udGVudHMgfHwgdGV4dC0+Y2h1bmtDb250
ZW50cyA9PSB0ZXh0LT5wKTsKLSAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8
Y29uc3QgVUNoYXIqPih0ZXh0LT5xKTsKLSAgICB0ZXh0VVRGMTZNb3ZlSW5QcmlvckNvbnRleHQo
dGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci19Ci0KLXN0YXRpYyBV
Qm9vbCB0ZXh0VVRGMTZBY2Nlc3MoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIFVC
b29sIGZvcndhcmQpCi17Ci0gICAgaWYgKCF0ZXh0LT5jb250ZXh0KQotICAgICAgICByZXR1cm4g
RkFMU0U7Ci0gICAgaW50NjRfdCBuYXRpdmVMZW5ndGggPSB0ZXh0TmF0aXZlTGVuZ3RoKHRleHQp
OwotICAgIFVCb29sIGlzQWNjZXNzaWJsZTsKLSAgICBpZiAodGV4dEluQ2h1bmtPck91dE9mUmFu
Z2UodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCwgaXNBY2Nlc3NpYmxl
KSkKLSAgICAgICAgcmV0dXJuIGlzQWNjZXNzaWJsZTsKLSAgICBuYXRpdmVJbmRleCA9IHRleHRQ
aW5JbmRleChuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoKTsKLSAgICBUZXh0Q29udGV4dCBjdXJy
ZW50Q29udGV4dCA9IHRleHRVVEYxNkdldEN1cnJlbnRDb250ZXh0KHRleHQpOwotICAgIFRleHRD
b250ZXh0IG5ld0NvbnRleHQgPSB0ZXh0R2V0Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgZm9y
d2FyZCk7Ci0gICAgQVNTRVJUKG5ld0NvbnRleHQgIT0gTm9Db250ZXh0KTsKLSAgICBpZiAobmV3
Q29udGV4dCA9PSBjdXJyZW50Q29udGV4dCkgewotICAgICAgICBpZiAoY3VycmVudENvbnRleHQg
PT0gUHJpbWFyeUNvbnRleHQpCi0gICAgICAgICAgICB0ZXh0VVRGMTZNb3ZlSW5QcmltYXJ5Q29u
dGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgdGV4dFVURjE2TW92ZUluUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2
ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAgIH0gZWxzZSBpZiAobmV3Q29udGV4
dCA9PSBQcmltYXJ5Q29udGV4dCkKLSAgICAgICAgdGV4dFVURjE2U3dpdGNoVG9QcmltYXJ5Q29u
dGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLSAgICBlbHNl
IHsKLSAgICAgICAgQVNTRVJUKG5ld0NvbnRleHQgPT0gUHJpb3JDb250ZXh0KTsKLSAgICAgICAg
dGV4dFVURjE2U3dpdGNoVG9QcmlvckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxl
bmd0aCwgZm9yd2FyZCk7Ci0gICAgfQotICAgIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgY29u
c3Qgc3RydWN0IFVUZXh0RnVuY3MgdGV4dFVURjE2RnVuY3MgPSB7Ci0gICAgc2l6ZW9mKFVUZXh0
RnVuY3MpLAotICAgIDAsIDAsIDAsCi0gICAgdGV4dENsb25lLAotICAgIHRleHROYXRpdmVMZW5n
dGgsCi0gICAgdGV4dFVURjE2QWNjZXNzLAotICAgIHRleHRFeHRyYWN0LAotICAgIDAsIDAsIDAs
IDAsCi0gICAgdGV4dENsb3NlLAotICAgIDAsIDAsIDAsCi19OwotCi1zdGF0aWMgVVRleHQqIHRl
eHRPcGVuVVRGMTYoVVRleHQqIHRleHQsIGNvbnN0IFVDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxl
bmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29udGV4dExlbmd0aCwg
VUVycm9yQ29kZSogc3RhdHVzKQotewotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpIHsKLSAgICAgICAg
KnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgfQotICAgIHRleHQgPSB1dGV4dF9zZXR1cCh0ZXh0LCAwLCBzdGF0dXMpOwotICAgIGlmIChV
X0ZBSUxVUkUoKnN0YXR1cykpIHsKLSAgICAgICAgQVNTRVJUKCF0ZXh0KTsKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgfQotICAgIHRleHRJbml0KHRleHQsICZ0ZXh0VVRGMTZGdW5jcywgc3RyaW5n
LCBsZW5ndGgsIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoKTsKLSAgICByZXR1cm4g
dGV4dDsKLX0KLQogVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yKGNvbnN0IFVD
aGFyKiBzdHJpbmcsIGludCBsZW5ndGgpCiB7CiAgICAgc3RhdGljIGJvb2wgY3JlYXRlZFdvcmRC
cmVha0l0ZXJhdG9yID0gZmFsc2U7CiAgICAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzdGF0
aWNXb3JkQnJlYWtJdGVyYXRvcjsKLSAgICByZXR1cm4gc2V0VXBJdGVyYXRvcihjcmVhdGVkV29y
ZEJyZWFrSXRlcmF0b3IsCi0gICAgICAgIHN0YXRpY1dvcmRCcmVha0l0ZXJhdG9yLCBVQlJLX1dP
UkQsIHN0cmluZywgbGVuZ3RoKTsKKyAgICByZXR1cm4gc2V0VXBJdGVyYXRvcihjcmVhdGVkV29y
ZEJyZWFrSXRlcmF0b3IsIHN0YXRpY1dvcmRCcmVha0l0ZXJhdG9yLCBVQlJLX1dPUkQsIHN0cmlu
ZywgbGVuZ3RoKTsKIH0KIAogc3RhdGljIFVUZXh0IGVtcHR5VGV4dCA9IFVURVhUX0lOSVRJQUxJ
WkVSOwpAQCAtNDM2LDcgKzc1LDcgQEAgVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5lQnJl
YWtJdGVyYQogICAgIHRleHRMb2NhbC50ZXh0LnBFeHRyYSA9IHRleHRMb2NhbC5idWZmZXI7CiAK
ICAgICBVRXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgVVRleHQqIHRl
eHQgPSB0ZXh0T3BlbkxhdGluMSgmdGV4dExvY2FsLCBzdHJpbmcsIGxlbmd0aCwgcHJpb3JDb250
ZXh0LCBwcmlvckNvbnRleHRMZW5ndGgsICZvcGVuU3RhdHVzKTsKKyAgICBVVGV4dCogdGV4dCA9
IHVUZXh0T3BlbkxhdGluMSgmdGV4dExvY2FsLCBzdHJpbmcsIGxlbmd0aCwgcHJpb3JDb250ZXh0
LCBwcmlvckNvbnRleHRMZW5ndGgsICZvcGVuU3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKG9w
ZW5TdGF0dXMpKSB7CiAgICAgICAgIExPR19FUlJPUigidGV4dE9wZW5VVEYxNiBmYWlsZWQgd2l0
aCBzdGF0dXMgJWQiLCBvcGVuU3RhdHVzKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC00NjMsNyAr
MTAyLDcgQEAgVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5lQnJlYWtJdGVyYQogICAgIFVU
ZXh0IHRleHRMb2NhbCA9IFVURVhUX0lOSVRJQUxJWkVSOwogCiAgICAgVUVycm9yQ29kZSBvcGVu
U3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIFVUZXh0KiB0ZXh0ID0gdGV4dE9wZW5VVEYxNigm
dGV4dExvY2FsLCBzdHJpbmcsIGxlbmd0aCwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5n
dGgsICZvcGVuU3RhdHVzKTsKKyAgICBVVGV4dCogdGV4dCA9IHVUZXh0T3BlblVURjE2KCZ0ZXh0
TG9jYWwsIHN0cmluZywgbGVuZ3RoLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCwg
Jm9wZW5TdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUob3BlblN0YXR1cykpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJ0ZXh0T3BlblVURjE2IGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIG9wZW5TdGF0
dXMpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTUyMSw4ICsxNjAsNyBAQCBUZXh0QnJlYWtJdGVy
YXRvciogc2VudGVuY2VCcmVha0l0ZXJhdG9yCiB7CiAgICAgc3RhdGljIGJvb2wgY3JlYXRlZFNl
bnRlbmNlQnJlYWtJdGVyYXRvciA9IGZhbHNlOwogICAgIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRv
ciogc3RhdGljU2VudGVuY2VCcmVha0l0ZXJhdG9yOwotICAgIHJldHVybiBzZXRVcEl0ZXJhdG9y
KGNyZWF0ZWRTZW50ZW5jZUJyZWFrSXRlcmF0b3IsCi0gICAgICAgIHN0YXRpY1NlbnRlbmNlQnJl
YWtJdGVyYXRvciwgVUJSS19TRU5URU5DRSwgc3RyaW5nLCBsZW5ndGgpOworICAgIHJldHVybiBz
ZXRVcEl0ZXJhdG9yKGNyZWF0ZWRTZW50ZW5jZUJyZWFrSXRlcmF0b3IsIHN0YXRpY1NlbnRlbmNl
QnJlYWtJdGVyYXRvciwgVUJSS19TRU5URU5DRSwgc3RyaW5nLCBsZW5ndGgpOwogfQogCiBpbnQg
dGV4dEJyZWFrRmlyc3QoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQpAQCAtNTcyLDggKzIx
MCw3IEBAIGJvb2wgaXNXb3JkVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKiAKIH0KIAogI2lm
ICFQTEFURk9STShJT1MpCi1zdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHNldFVwSXRlcmF0b3JX
aXRoUnVsZXMoYm9vbCYgY3JlYXRlZEl0ZXJhdG9yLCBUZXh0QnJlYWtJdGVyYXRvciomIGl0ZXJh
dG9yLAotICAgIGNvbnN0IGNoYXIqIGJyZWFrUnVsZXMsIGNvbnN0IFVDaGFyKiBzdHJpbmcsIGlu
dCBsZW5ndGgpCitzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHNldFVwSXRlcmF0b3JXaXRoUnVs
ZXMoYm9vbCYgY3JlYXRlZEl0ZXJhdG9yLCBUZXh0QnJlYWtJdGVyYXRvciomIGl0ZXJhdG9yLCBj
b25zdCBjaGFyKiBicmVha1J1bGVzLCBjb25zdCBVQ2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoKQog
ewogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gMDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJVVGV4dFByb3ZpZGVyLmgiCisKKyNpbmNsdWRlIDxzdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBSZWxvY2F0ZSBwb2ludGVyIGZyb20g
c291cmNlIGludG8gZGVzdGluYXRpb24gYXMgcmVxdWlyZWQuCitzdGF0aWMgaW5saW5lIHZvaWQg
Zml4UG9pbnRlcihjb25zdCBVVGV4dCogc291cmNlLCBVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0
IHZvaWQqJiBwb2ludGVyKQoreworICAgIGlmIChwb2ludGVyID49IHNvdXJjZS0+cEV4dHJhICYm
IHBvaW50ZXIgPCBzdGF0aWNfY2FzdDxjaGFyKj4oc291cmNlLT5wRXh0cmEpICsgc291cmNlLT5l
eHRyYVNpemUpIHsKKyAgICAgICAgLy8gUG9pbnRlciByZWZlcmVuY2VzIHNvdXJjZSBleHRyYSBi
dWZmZXIuCisgICAgICAgIHBvaW50ZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZGVzdGluYXRpb24t
PnBFeHRyYSkgKyAoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHBvaW50ZXIpIC0gc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KHNvdXJjZS0+cEV4dHJhKSk7CisgICAgfSBlbHNlIGlmIChwb2ludGVy
ID49IHNvdXJjZSAmJiBwb2ludGVyIDwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc291
cmNlKSArIHNvdXJjZS0+c2l6ZU9mU3RydWN0KSB7CisgICAgICAgIC8vIFBvaW50ZXIgcmVmZXJl
bmNlcyBzb3VyY2UgdGV4dCBzdHJ1Y3R1cmUsIGJ1dCBub3Qgc291cmNlIGV4dHJhIGJ1ZmZlci4K
KyAgICAgICAgcG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRlc3RpbmF0aW9uKSAr
IChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4ocG9pbnRlcikgLSByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihzb3VyY2UpKTsKKyAgICB9Cit9CisKK1VUZXh0KiB1VGV4dENsb25lSW1wbChV
VGV4dCogZGVzdGluYXRpb24sIGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVCb29sIGRlZXAsIFVFcnJv
ckNvZGUqIHN0YXR1cykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGRlZXAsICFkZWVwKTsKKyAgICBp
ZiAoVV9GQUlMVVJFKCpzdGF0dXMpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpbnQz
Ml90IGV4dHJhU2l6ZSA9IHNvdXJjZS0+ZXh0cmFTaXplOworICAgIGRlc3RpbmF0aW9uID0gdXRl
eHRfc2V0dXAoZGVzdGluYXRpb24sIGV4dHJhU2l6ZSwgc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlM
VVJFKCpzdGF0dXMpKQorICAgICAgICByZXR1cm4gZGVzdGluYXRpb247CisgICAgdm9pZCogZXh0
cmFOZXcgPSBkZXN0aW5hdGlvbi0+cEV4dHJhOworICAgIGludDMyX3QgZmxhZ3MgPSBkZXN0aW5h
dGlvbi0+ZmxhZ3M7CisgICAgaW50IHNpemVUb0NvcHkgPSBzdGQ6Om1pbihzb3VyY2UtPnNpemVP
ZlN0cnVjdCwgZGVzdGluYXRpb24tPnNpemVPZlN0cnVjdCk7CisgICAgbWVtY3B5KGRlc3RpbmF0
aW9uLCBzb3VyY2UsIHNpemVUb0NvcHkpOworICAgIGRlc3RpbmF0aW9uLT5wRXh0cmEgPSBleHRy
YU5ldzsKKyAgICBkZXN0aW5hdGlvbi0+ZmxhZ3MgPSBmbGFnczsKKyAgICBtZW1jcHkoZGVzdGlu
YXRpb24tPnBFeHRyYSwgc291cmNlLT5wRXh0cmEsIGV4dHJhU2l6ZSk7CisgICAgZml4UG9pbnRl
cihzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbi0+Y29udGV4dCk7CisgICAgZml4UG9p
bnRlcihzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbi0+cCk7CisgICAgZml4UG9pbnRl
cihzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbi0+cSk7CisgICAgQVNTRVJUKCFkZXN0
aW5hdGlvbi0+cik7CisgICAgY29uc3Qgdm9pZCogY2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0
PGNvbnN0IHZvaWQqPihkZXN0aW5hdGlvbi0+Y2h1bmtDb250ZW50cyk7CisgICAgZml4UG9pbnRl
cihzb3VyY2UsIGRlc3RpbmF0aW9uLCBjaHVua0NvbnRlbnRzKTsKKyAgICBkZXN0aW5hdGlvbi0+
Y2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4oY2h1bmtDb250ZW50cyk7
CisgICAgcmV0dXJuIGRlc3RpbmF0aW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRl
ci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRl
eHRQcm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBVVGV4dFByb3ZpZGVyX2gKKyNkZWZpbmUgVVRleHRQcm92aWRlcl9oCisKKyNp
bmNsdWRlIDx1bmljb2RlL3V0ZXh0Lmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgVVRleHRQcm92aWRlckNvbnRl
eHQgeworICAgIE5vQ29udGV4dCwKKyAgICBQcmlvckNvbnRleHQsCisgICAgUHJpbWFyeUNvbnRl
eHQKK307CisKK2lubGluZSBVVGV4dFByb3ZpZGVyQ29udGV4dCB1VGV4dFByb3ZpZGVyQ29udGV4
dChjb25zdCBVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgVUJvb2wgZm9yd2FyZCkK
K3sKKyAgICBpZiAoIXRleHQtPmIgfHwgbmF0aXZlSW5kZXggPiB0ZXh0LT5iKQorICAgICAgICBy
ZXR1cm4gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0OworICAgIGlmIChuYXRp
dmVJbmRleCA9PSB0ZXh0LT5iKQorICAgICAgICByZXR1cm4gZm9yd2FyZCA/IFVUZXh0UHJvdmlk
ZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNv
bnRleHQ7CisgICAgcmV0dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Cit9
CisKK2lubGluZSB2b2lkIHVUZXh0SW5pdGlhbGl6ZShVVGV4dCogdGV4dCwgY29uc3QgVVRleHRG
dW5jcyogZnVuY3MsIGNvbnN0IHZvaWQqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBV
Q2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVuZ3RoKQoreworICAgIHRleHQt
PnBGdW5jcyA9IGZ1bmNzOworICAgIHRleHQtPnByb3ZpZGVyUHJvcGVydGllcyA9IDEgPDwgVVRF
WFRfUFJPVklERVJfU1RBQkxFX0NIVU5LUzsKKyAgICB0ZXh0LT5jb250ZXh0ID0gc3RyaW5nOwor
ICAgIHRleHQtPnAgPSBzdHJpbmc7CisgICAgdGV4dC0+YSA9IGxlbmd0aDsKKyAgICB0ZXh0LT5x
ID0gcHJpb3JDb250ZXh0OworICAgIHRleHQtPmIgPSBwcmlvckNvbnRleHRMZW5ndGg7Cit9CisK
Ky8vIFNoYXJlZCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIFVUZXh0Q2xvbmUgZnVuY3Rpb24gb24g
VVRleHRGdW5jcy4KKworVVRleHQqIHVUZXh0Q2xvbmVJbXBsKFVUZXh0KiBkZXN0aW5hdGlvbiwg
Y29uc3QgVVRleHQqIHNvdXJjZSwgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKTsKKwor
CisvLyBIZWxwZXJzIGZvciB0aGUgVVRleHRBY2Nlc3MgZnVuY3Rpb24gb24gVVRleHRGdW5jcy4K
KworaW5saW5lIGludDY0X3QgdVRleHRBY2Nlc3NQaW5JbmRleChpbnQ2NF90JiBpbmRleCwgaW50
NjRfdCBsaW1pdCkKK3sKKyAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICBpbmRleCA9IDA7Cisg
ICAgZWxzZSBpZiAoaW5kZXggPiBsaW1pdCkKKyAgICAgICAgaW5kZXggPSBsaW1pdDsKKyAgICBy
ZXR1cm4gaW5kZXg7Cit9CisKK2lubGluZSBib29sIHVUZXh0QWNjZXNzSW5DaHVua09yT3V0T2ZS
YW5nZShVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5n
dGgsIFVCb29sIGZvcndhcmQsIFVCb29sJiBpc0FjY2Vzc2libGUpCit7CisgICAgaWYgKGZvcndh
cmQpIHsKKyAgICAgICAgaWYgKG5hdGl2ZUluZGV4ID49IHRleHQtPmNodW5rTmF0aXZlU3RhcnQg
JiYgbmF0aXZlSW5kZXggPCB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0KSB7CisgICAgICAgICAgICBp
bnQ2NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAg
ICAgICAgICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBmb3JtZWQgaWYgY29tcHV0
ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZS4KKyAgICAgICAgICAgIEFTU0VSVChvZmZz
ZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAgICAgICAgICB0
ZXh0LT5jaHVua09mZnNldCA9IG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDA7CisgICAgICAgICAgICBp
c0FjY2Vzc2libGUgPSBUUlVFOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG5hdGl2ZUluZGV4ID49IG5hdGl2ZUxlbmd0aCAmJiB0ZXh0LT5jaHVua05h
dGl2ZUxpbWl0ID09IG5hdGl2ZUxlbmd0aCkgeworICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZz
ZXQgPSB0ZXh0LT5jaHVua0xlbmd0aDsKKyAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IEZBTFNF
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAg
ICAgICBpZiAobmF0aXZlSW5kZXggPiB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ICYmIG5hdGl2ZUlu
ZGV4IDw9IHRleHQtPmNodW5rTmF0aXZlTGltaXQpIHsKKyAgICAgICAgICAgIGludDY0X3Qgb2Zm
c2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OworICAgICAgICAgICAg
Ly8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGZvcm1lZCBpZiBjb21wdXRlZCBvZmZzZXQg
ZXhjZWVkcyBpbnQzMl90IHJhbmdlLgorICAgICAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKKyAgICAgICAgICAgIHRleHQtPmNodW5r
T2Zmc2V0ID0gb2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBz
dGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMDsKKyAgICAgICAgICAgIGlzQWNjZXNzaWJs
ZSA9IFRSVUU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAobmF0aXZlSW5kZXggPD0gMCAmJiAhdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCkgeworICAgICAg
ICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSAwOworICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0g
RkFMU0U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVU
ZXh0UHJvdmlkZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRl
eHRQcm92aWRlckxhdGluMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJVVGV4dFByb3ZpZGVyTGF0aW4xLmgiCisKKyNpbmNsdWRlICJVVGV4
dFByb3ZpZGVyLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgVVRleHRQcm92aWRlckNvbnRleHQgdGV4dExh
dGluMUdldEN1cnJlbnRDb250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0KQoreworICAgIGlmICghdGV4
dC0+Y2h1bmtDb250ZW50cykKKyAgICAgICAgcmV0dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpO
b0NvbnRleHQ7CisgICAgcmV0dXJuIHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cEV4dHJh
ID8gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0IDogVVRleHRQcm92aWRlckNv
bnRleHQ6OlByaW9yQ29udGV4dDsKK30KKworc3RhdGljIHZvaWQgdGV4dExhdGluMU1vdmVJblBy
aW1hcnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5h
dGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250
ZW50cyA9PSB0ZXh0LT5wRXh0cmEpOworICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAgIEFTU0VS
VChuYXRpdmVJbmRleCA+PSB0ZXh0LT5iICYmIG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoKTsK
KyAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IG5hdGl2ZUluZGV4OworICAgICAgICB0
ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gbmF0aXZlSW5kZXggKyB0ZXh0LT5leHRyYVNpemUgLyBz
aXplb2YoVUNoYXIpOworICAgICAgICBpZiAodGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA+IG5hdGl2
ZUxlbmd0aCkKKyAgICAgICAgICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVMZW5n
dGg7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG5hdGl2ZUluZGV4ID4gdGV4dC0+YiAm
JiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOworICAgICAgICB0ZXh0LT5jaHVua05hdGl2
ZUxpbWl0ID0gbmF0aXZlSW5kZXg7CisgICAgICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSBu
YXRpdmVJbmRleCAtIHRleHQtPmV4dHJhU2l6ZSAvIHNpemVvZihVQ2hhcik7CisgICAgICAgIGlm
ICh0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0IDwgdGV4dC0+YikKKyAgICAgICAgICAgIHRleHQtPmNo
dW5rTmF0aXZlU3RhcnQgPSB0ZXh0LT5iOworICAgIH0KKyAgICBpbnQ2NF90IGxlbmd0aCA9IHRl
eHQtPmNodW5rTmF0aXZlTGltaXQgLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OworICAgIC8vIEVu
c3VyZSBjaHVuayBsZW5ndGggaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIGxlbmd0aCBleGNl
ZWRzIGludDMyX3QgcmFuZ2UuCisgICAgQVNTRVJUKGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50MzJfdD46Om1heCgpKTsKKyAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IGxlbmd0aCA8IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4o
bGVuZ3RoKSA6IDA7CisgICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5r
TGVuZ3RoOworICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gZm9yd2FyZCA/IDAgOiB0ZXh0LT5jaHVu
a0xlbmd0aDsKKyAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoY29uc3RfY2FzdDxVQ2hhcio+KHRl
eHQtPmNodW5rQ29udGVudHMpLCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KHRleHQtPnApICsg
KHRleHQtPmNodW5rTmF0aXZlU3RhcnQgLSB0ZXh0LT5iKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHRleHQtPmNodW5rTGVuZ3RoKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRMYXRpbjFTd2l0Y2hU
b1ByaW1hcnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90
IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQoIXRleHQtPmNodW5r
Q29udGVudHMgfHwgdGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5xKTsKKyAgICB0ZXh0LT5j
aHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5wRXh0cmEpOwor
ICAgIHRleHRMYXRpbjFNb3ZlSW5QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0
aXZlTGVuZ3RoLCBmb3J3YXJkKTsKK30KKworc3RhdGljIHZvaWQgdGV4dExhdGluMU1vdmVJblBy
aW9yQ29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRp
dmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCit7CisgICAgQVNTRVJUKHRleHQtPmNodW5rQ29udGVu
dHMgPT0gdGV4dC0+cSk7CisgICAgQVNTRVJUKGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IHRleHQt
PmIgOiBuYXRpdmVJbmRleCA8PSB0ZXh0LT5iKTsKKyAgICBBU1NFUlRfVU5VU0VEKG5hdGl2ZUxl
bmd0aCwgZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0aXZlSW5kZXgg
PD0gbmF0aXZlTGVuZ3RoKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBu
YXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7
CisgICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IDA7CisgICAgdGV4dC0+Y2h1bmtOYXRpdmVM
aW1pdCA9IHRleHQtPmI7CisgICAgdGV4dC0+Y2h1bmtMZW5ndGggPSB0ZXh0LT5iOworICAgIHRl
eHQtPm5hdGl2ZUluZGV4aW5nTGltaXQgPSB0ZXh0LT5jaHVua0xlbmd0aDsKKyAgICBpbnQ2NF90
IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAvLyBF
bnN1cmUgY2h1bmsgb2Zmc2V0IGlzIHdlbGwgZGVmaW5lZCBpZiBjb21wdXRlZCBvZmZzZXQgZXhj
ZWVkcyBpbnQzMl90IHJhbmdlIG9yIGNodW5rIGxlbmd0aC4KKyAgICBBU1NFUlQob2Zmc2V0IDwg
c3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOworICAgIHRleHQtPmNodW5rT2Zm
c2V0ID0gc3RkOjptaW4ob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4
KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMCwgdGV4dC0+Y2h1bmtMZW5ndGgp
OworfQorCitzdGF0aWMgdm9pZCB0ZXh0TGF0aW4xU3dpdGNoVG9QcmlvckNvbnRleHQoVVRleHQq
IHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBm
b3J3YXJkKQoreworICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVu
a0NvbnRlbnRzID09IHRleHQtPnBFeHRyYSk7CisgICAgdGV4dC0+Y2h1bmtDb250ZW50cyA9IHN0
YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4odGV4dC0+cSk7CisgICAgdGV4dExhdGluMU1vdmVJblBy
aW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKK30K
KworLy8gLS0gQmVnaW4gTGF0aW4tMSBwcm92aWRlciBmdW5jdGlvbnMgLS0KKworc3RhdGljIFVU
ZXh0KiB1VGV4dExhdGluMUNsb25lKFVUZXh0KiwgY29uc3QgVVRleHQqLCBVQm9vbCwgVUVycm9y
Q29kZSopOworc3RhdGljIGludDY0X3QgdVRleHRMYXRpbjFOYXRpdmVMZW5ndGgoVVRleHQqKTsg
CitzdGF0aWMgVUJvb2wgdVRleHRMYXRpbjFBY2Nlc3MoVVRleHQqLCBpbnQ2NF90LCBVQm9vbCk7
IAorc3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50
NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKik7IAorc3RhdGljIHZvaWQgdVRleHRM
YXRpbjFDbG9zZShVVGV4dCopOworCitzdGF0aWMgVVRleHQqIHVUZXh0TGF0aW4xQ2xvbmUoVVRl
eHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JD
b2RlKiBzdGF0dXMpCit7CisgICAgcmV0dXJuIHVUZXh0Q2xvbmVJbXBsKGRlc3RpbmF0aW9uLCBz
b3VyY2UsIGRlZXAsIHN0YXR1cyk7Cit9CisKK3N0YXRpYyBpbnQ2NF90IHVUZXh0TGF0aW4xTmF0
aXZlTGVuZ3RoKFVUZXh0KiB0ZXh0KQoreworICAgIHJldHVybiB0ZXh0LT5hICsgdGV4dC0+YjsK
K30KKworc3RhdGljIFVCb29sIHVUZXh0TGF0aW4xQWNjZXNzKFVUZXh0KiB0ZXh0LCBpbnQ2NF90
IG5hdGl2ZUluZGV4LCBVQm9vbCBmb3J3YXJkKQoreworICAgIGlmICghdGV4dC0+Y29udGV4dCkK
KyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIGludDY0X3QgbmF0aXZlTGVuZ3RoID0gdVRleHRM
YXRpbjFOYXRpdmVMZW5ndGgodGV4dCk7CisgICAgVUJvb2wgaXNBY2Nlc3NpYmxlOworICAgIGlm
ICh1VGV4dEFjY2Vzc0luQ2h1bmtPck91dE9mUmFuZ2UodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2
ZUxlbmd0aCwgZm9yd2FyZCwgaXNBY2Nlc3NpYmxlKSkKKyAgICAgICAgcmV0dXJuIGlzQWNjZXNz
aWJsZTsKKyAgICBuYXRpdmVJbmRleCA9IHVUZXh0QWNjZXNzUGluSW5kZXgobmF0aXZlSW5kZXgs
IG5hdGl2ZUxlbmd0aCk7CisgICAgVVRleHRQcm92aWRlckNvbnRleHQgY3VycmVudENvbnRleHQg
PSB0ZXh0TGF0aW4xR2V0Q3VycmVudENvbnRleHQodGV4dCk7CisgICAgVVRleHRQcm92aWRlckNv
bnRleHQgbmV3Q29udGV4dCA9IHVUZXh0UHJvdmlkZXJDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4
LCBmb3J3YXJkKTsKKyAgICBBU1NFUlQobmV3Q29udGV4dCAhPSBVVGV4dFByb3ZpZGVyQ29udGV4
dDo6Tm9Db250ZXh0KTsKKyAgICBpZiAobmV3Q29udGV4dCA9PSBjdXJyZW50Q29udGV4dCkgewor
ICAgICAgICBpZiAoY3VycmVudENvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1h
cnlDb250ZXh0KQorICAgICAgICAgICAgdGV4dExhdGluMU1vdmVJblByaW1hcnlDb250ZXh0KHRl
eHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICB0ZXh0TGF0aW4xTW92ZUluUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4
LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgIH0gZWxzZSBpZiAobmV3Q29udGV4dCA9PSBV
VGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQpCisgICAgICAgIHRleHRMYXRpbjFT
d2l0Y2hUb1ByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZv
cndhcmQpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQobmV3Q29udGV4dCA9PSBVVGV4dFBy
b3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0KTsKKyAgICAgICAgdGV4dExhdGluMVN3aXRjaFRv
UHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwor
ICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFF
eHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JD
b2RlKiBlcnJvckNvZGUpCit7CisgICAgLy8gSW4gdGhlIHByZXNlbnQgY29udGV4dCwgdGhpcyB0
ZXh0IHByb3ZpZGVyIGlzIHVzZWQgb25seSB3aXRoIElDVSBmdW5jdGlvbnMKKyAgICAvLyB0aGF0
IGRvIG5vdCBwZXJmb3JtIGFuIGV4dHJhY3Qgb3BlcmF0aW9uLgorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICplcnJvckNvZGUgPSBVX1VOU1VQUE9SVEVEX0VSUk9SOworICAgIHJldHVy
biAwOworfQorCitzdGF0aWMgdm9pZCB1VGV4dExhdGluMUNsb3NlKFVUZXh0KiB0ZXh0KQorewor
ICAgIHRleHQtPmNvbnRleHQgPSAwOworfQorCisvLyAtLSBFbmQgTGF0aW4tMSBwcm92aWRlciBm
dW5jdGlvbnMgLS0KKworc3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHRleHRMYXRpbjFG
dW5jcyA9IHsKKyAgICBzaXplb2YoVVRleHRGdW5jcyksCisgICAgMCwgMCwgMCwKKyAgICB1VGV4
dExhdGluMUNsb25lLAorICAgIHVUZXh0TGF0aW4xTmF0aXZlTGVuZ3RoLAorICAgIHVUZXh0TGF0
aW4xQWNjZXNzLAorICAgIHVUZXh0TGF0aW4xRXh0cmFjdCwKKyAgICAwLCAwLCAwLCAwLAorICAg
IHVUZXh0TGF0aW4xQ2xvc2UsCisgICAgMCwgMCwgMCwKK307CisKK1VUZXh0KiB1VGV4dE9wZW5M
YXRpbjEoVVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcs
IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29u
dGV4dExlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKQoreworICAgIGlmIChVX0ZBSUxVUkUoKnN0
YXR1cykpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkp
IHsKKyAgICAgICAgKnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorICAgIFVUZXh0KiB0ZXh0ID0gdXRleHRfc2V0dXAoJnV0V2l0aEJ1
ZmZlci0+dGV4dCwgc2l6ZW9mKHV0V2l0aEJ1ZmZlci0+YnVmZmVyKSwgc3RhdHVzKTsKKyAgICBp
ZiAoVV9GQUlMVVJFKCpzdGF0dXMpKSB7CisgICAgICAgIEFTU0VSVCghdGV4dCk7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKyAgICB1VGV4dEluaXRpYWxpemUodGV4dCwgJnRleHRMYXRpbjFG
dW5jcywgc3RyaW5nLCBsZW5ndGgsIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoKTsK
KyAgICByZXR1cm4gdGV4dDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJM
YXRpbjEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1
L1VUZXh0UHJvdmlkZXJMYXRpbjEuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBVVGV4dFByb3ZpZGVyTGF0aW4xX2gKKyNkZWZpbmUgVVRleHRQ
cm92aWRlckxhdGluMV9oCisKKyNpbmNsdWRlIDx1bmljb2RlL3V0ZXh0Lmg+CisjaW5jbHVkZSA8
d3RmL3VuaWNvZGUvVW5pY29kZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IGlu
dCBVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0eSA9IDE2OworCitzdHJ1Y3QgVVRleHRXaXRo
QnVmZmVyIHsKKyAgICBVVGV4dCB0ZXh0OworICAgIFVDaGFyIGJ1ZmZlcltVVGV4dFdpdGhCdWZm
ZXJJbmxpbmVDYXBhY2l0eV07Cit9OworCitVVGV4dCogdVRleHRPcGVuTGF0aW4xKFVUZXh0V2l0
aEJ1ZmZlciogdXRXaXRoQnVmZmVyLCBjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5n
dGgsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgsIFVF
cnJvckNvZGUqIHN0YXR1cyk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IFVUZXh0UHJvdmlkZXJMYXRpbjFfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJVVGV4dFByb3ZpZGVyVVRGMTYuaCIKKworI2luY2x1ZGUg
IlVUZXh0UHJvdmlkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5saW5l
IFVUZXh0UHJvdmlkZXJDb250ZXh0IHRleHRVVEYxNkdldEN1cnJlbnRDb250ZXh0KGNvbnN0IFVU
ZXh0KiB0ZXh0KQoreworICAgIGlmICghdGV4dC0+Y2h1bmtDb250ZW50cykKKyAgICAgICAgcmV0
dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpOb0NvbnRleHQ7CisgICAgcmV0dXJuIHRleHQtPmNo
dW5rQ29udGVudHMgPT0gdGV4dC0+cCA/IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29u
dGV4dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Cit9CisKK3N0YXRpYyB2
b2lkIHRleHRVVEYxNk1vdmVJblByaW1hcnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5h
dGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBB
U1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wKTsKKyAgICBBU1NFUlRfVU5VU0VE
KGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA+PSB0ZXh0LT5iIDogbmF0aXZlSW5kZXgg
PiB0ZXh0LT5iKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJ
bmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7CisgICAg
dGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IHRleHQtPmI7CisgICAgdGV4dC0+Y2h1bmtOYXRpdmVM
aW1pdCA9IG5hdGl2ZUxlbmd0aDsKKyAgICBpbnQ2NF90IGxlbmd0aCA9IHRleHQtPmNodW5rTmF0
aXZlTGltaXQgLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OworICAgIC8vIEVuc3VyZSBjaHVuayBs
ZW5ndGggaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIGxlbmd0aCBleGNlZWRzIGludDMyX3Qg
cmFuZ2UuCisgICAgQVNTRVJUKGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpKTsKKyAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7
CisgICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOworICAg
IGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0Owor
ICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9m
ZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2Ugb3IgY2h1bmsgbGVuZ3RoLgorICAgIEFTU0VSVChv
ZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAgdGV4dC0+
Y2h1bmtPZmZzZXQgPSBzdGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVu
a0xlbmd0aCk7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRVVEYxNlN3aXRjaFRvUHJpbWFyeUNvbnRl
eHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3Ro
LCBVQm9vbCBmb3J3YXJkKQoreworICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0
ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOworICAgIHRleHQtPmNodW5rQ29udGVudHMg
PSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnApOworICAgIHRleHRVVEYxNk1vdmVJ
blByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQp
OworfQorCitzdGF0aWMgdm9pZCB0ZXh0VVRGMTZNb3ZlSW5QcmlvckNvbnRleHQoVVRleHQqIHRl
eHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3
YXJkKQoreworICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOworICAg
IEFTU0VSVChmb3J3YXJkID8gbmF0aXZlSW5kZXggPCB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPD0g
dGV4dC0+Yik7CisgICAgQVNTRVJUX1VOVVNFRChuYXRpdmVMZW5ndGgsIGZvcndhcmQgPyBuYXRp
dmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7Cisg
ICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVM
ZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOworICAgIHRleHQtPmNodW5rTmF0
aXZlU3RhcnQgPSAwOworICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSB0ZXh0LT5iOworICAg
IHRleHQtPmNodW5rTGVuZ3RoID0gdGV4dC0+YjsKKyAgICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xp
bWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7CisgICAgaW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRl
eCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7CisgICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBp
cyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZSBv
ciBjaHVuayBsZW5ndGguCisgICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1heCgpKTsKKyAgICB0ZXh0LT5jaHVua09mZnNldCA9IHN0ZDo6bWluKG9mZnNl
dCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50
MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQtPmNodW5rTGVuZ3RoKTsKK30KKworc3RhdGljIHZvaWQg
dGV4dFVURjE2U3dpdGNoVG9QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZl
SW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQoreworICAgIEFTU0VS
VCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnAp
OworICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRl
eHQtPnEpOworICAgIHRleHRVVEYxNk1vdmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRl
eCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKK30KKworLy8gLS0gQmVnaW4gVVRGLTE2IHByb3Zp
ZGVyIGZ1bmN0aW9ucyAtLQorCitzdGF0aWMgVVRleHQqIHVUZXh0VVRGMTZDbG9uZShVVGV4dCos
IGNvbnN0IFVUZXh0KiwgVUJvb2wsIFVFcnJvckNvZGUqKTsKK3N0YXRpYyBpbnQ2NF90IHVUZXh0
VVRGMTZOYXRpdmVMZW5ndGgoVVRleHQqKTsKK3N0YXRpYyBVQm9vbCB1VGV4dFVURjE2QWNjZXNz
KFVUZXh0KiwgaW50NjRfdCwgVUJvb2wpOworc3RhdGljIGludDMyX3QgdVRleHRVVEYxNkV4dHJh
Y3QoVVRleHQqLCBpbnQ2NF90LCBpbnQ2NF90LCBVQ2hhciosIGludDMyX3QsIFVFcnJvckNvZGUq
KTsKK3N0YXRpYyB2b2lkIHVUZXh0VVRGMTZDbG9zZShVVGV4dCopOworCitzdGF0aWMgVVRleHQq
IHVUZXh0VVRGMTZDbG9uZShVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IFVUZXh0KiBzb3VyY2Us
IFVCb29sIGRlZXAsIFVFcnJvckNvZGUqIHN0YXR1cykKK3sKKyAgICByZXR1cm4gdVRleHRDbG9u
ZUltcGwoZGVzdGluYXRpb24sIHNvdXJjZSwgZGVlcCwgc3RhdHVzKTsKK30KKworc3RhdGljIGlu
bGluZSBpbnQ2NF90IHVUZXh0VVRGMTZOYXRpdmVMZW5ndGgoVVRleHQqIHRleHQpCit7CisgICAg
cmV0dXJuIHRleHQtPmEgKyB0ZXh0LT5iOworfQorCitzdGF0aWMgVUJvb2wgdVRleHRVVEYxNkFj
Y2VzcyhVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgVUJvb2wgZm9yd2FyZCkKK3sK
KyAgICBpZiAoIXRleHQtPmNvbnRleHQpCisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICBpbnQ2
NF90IG5hdGl2ZUxlbmd0aCA9IHVUZXh0VVRGMTZOYXRpdmVMZW5ndGgodGV4dCk7CisgICAgVUJv
b2wgaXNBY2Nlc3NpYmxlOworICAgIGlmICh1VGV4dEFjY2Vzc0luQ2h1bmtPck91dE9mUmFuZ2Uo
dGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCwgaXNBY2Nlc3NpYmxlKSkK
KyAgICAgICAgcmV0dXJuIGlzQWNjZXNzaWJsZTsKKyAgICBuYXRpdmVJbmRleCA9IHVUZXh0QWNj
ZXNzUGluSW5kZXgobmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCk7CisgICAgVVRleHRQcm92aWRl
ckNvbnRleHQgY3VycmVudENvbnRleHQgPSB0ZXh0VVRGMTZHZXRDdXJyZW50Q29udGV4dCh0ZXh0
KTsKKyAgICBVVGV4dFByb3ZpZGVyQ29udGV4dCBuZXdDb250ZXh0ID0gdVRleHRQcm92aWRlckNv
bnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIGZvcndhcmQpOworICAgIEFTU0VSVChuZXdDb250ZXh0
ICE9IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpOb0NvbnRleHQpOworICAgIGlmIChuZXdDb250ZXh0
ID09IGN1cnJlbnRDb250ZXh0KSB7CisgICAgICAgIGlmIChjdXJyZW50Q29udGV4dCA9PSBVVGV4
dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQpCisgICAgICAgICAgICB0ZXh0VVRGMTZN
b3ZlSW5QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3
YXJkKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGV4dFVURjE2TW92ZUluUHJpb3JDb250
ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgIH0gZWxz
ZSBpZiAobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQp
CisgICAgICAgIHRleHRVVEYxNlN3aXRjaFRvUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5k
ZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChu
ZXdDb250ZXh0ID09IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQpOworICAgICAg
ICB0ZXh0VVRGMTZTd2l0Y2hUb1ByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZl
TGVuZ3RoLCBmb3J3YXJkKTsKKyAgICB9CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBp
bnQzMl90IHVUZXh0VVRGMTZFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIq
LCBpbnQzMl90LCBVRXJyb3JDb2RlKiBlcnJvckNvZGUpCit7CisgICAgLy8gSW4gdGhlIHByZXNl
bnQgY29udGV4dCwgdGhpcyB0ZXh0IHByb3ZpZGVyIGlzIHVzZWQgb25seSB3aXRoIElDVSBmdW5j
dGlvbnMKKyAgICAvLyB0aGF0IGRvIG5vdCBwZXJmb3JtIGFuIGV4dHJhY3Qgb3BlcmF0aW9uLgor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICplcnJvckNvZGUgPSBVX1VOU1VQUE9SVEVE
X0VSUk9SOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCB1VGV4dFVURjE2Q2xvc2Uo
VVRleHQqIHRleHQpCit7CisgICAgdGV4dC0+Y29udGV4dCA9IDA7Cit9CisKKy8vIC0tIEVuZCBV
VEYtMTYgcHJvdmlkZXIgZnVuY3Rpb25zIC0tCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgVVRleHRG
dW5jcyB0ZXh0VVRGMTZGdW5jcyA9IHsKKyAgICBzaXplb2YoVVRleHRGdW5jcyksCisgICAgMCwg
MCwgMCwKKyAgICB1VGV4dFVURjE2Q2xvbmUsCisgICAgdVRleHRVVEYxNk5hdGl2ZUxlbmd0aCwK
KyAgICB1VGV4dFVURjE2QWNjZXNzLAorICAgIHVUZXh0VVRGMTZFeHRyYWN0LAorICAgIDAsIDAs
IDAsIDAsCisgICAgdVRleHRVVEYxNkNsb3NlLAorICAgIDAsIDAsIDAsCit9OworCitVVGV4dCog
dVRleHRPcGVuVVRGMTYoVVRleHQqIHRleHQsIGNvbnN0IFVDaGFyKiBzdHJpbmcsIHVuc2lnbmVk
IGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29udGV4dExlbmd0
aCwgVUVycm9yQ29kZSogc3RhdHVzKQoreworICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCisg
ICAgICAgIHJldHVybiAwOworICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpIHsKKyAgICAg
ICAgKnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorICAgIHRleHQgPSB1dGV4dF9zZXR1cCh0ZXh0LCAwLCBzdGF0dXMpOworICAgIGlm
IChVX0ZBSUxVUkUoKnN0YXR1cykpIHsKKyAgICAgICAgQVNTRVJUKCF0ZXh0KTsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorICAgIHVUZXh0SW5pdGlhbGl6ZSh0ZXh0LCAmdGV4dFVURjE2RnVu
Y3MsIHN0cmluZywgbGVuZ3RoLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7Cisg
ICAgcmV0dXJuIHRleHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYx
Ni5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRl
eHRQcm92aWRlclVURjE2LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgVVRleHRQcm92aWRlclVURjE2X2gKKyNkZWZpbmUgVVRleHRQcm92aWRl
clVURjE2X2gKKworI2luY2x1ZGUgPHVuaWNvZGUvdXRleHQuaD4KKyNpbmNsdWRlIDx3dGYvdW5p
Y29kZS9Vbmljb2RlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVVRleHQqIHVUZXh0T3Bl
blVURjE2KFVUZXh0KiwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFy
KiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgsIFVFcnJvckNvZGUqKTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVRleHRQcm92aWRlclVURjE2X2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220977</attachid>
            <date>2014-01-12 11:07:38 -0800</date>
            <delta_ts>2014-01-12 11:17:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126834-20140112110738.patch</filename>
            <type>text/plain</type>
            <size>71788</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvUGxhdGZvcm0vR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDE2MTc5NCkKKysrIFNvdXJjZS9Q
bGF0Zm9ybS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCBw
bGF0Zm9ybV93ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0IFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdSBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVyCiAK
IG5vaW5zdF9MVExJQlJBUklFUyArPSBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjE3OTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0
MyBAQAorMjAxNC0wMS0xMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAg
IFNwbGl0IElDVSBVVGV4dCBwcm92aWRlcnMgb3V0IGludG8gdGhlaXIgb3duIGZpbGVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY4MzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlcyB0aGUgaW1w
bGVtZW50YXRpb24gb2Ygb3VyIGN1c3RvbSBVVGV4dCBwcm92aWRlcnMgb3V0IGludG8KKyAgICAg
ICAgdGhlaXIgb3duIGZpbGVzLgorICAgICAgICAtIFVUZXh0UHJvdmlkZXJMYXRpbjEuaC9jcHAg
Y29udGFpbnMgdGhlIExhdGluLTEgcHJvdmlkZXIuCisgICAgICAgIC0gVVRleHRQcm92aWRlclVU
RjE2LmgvY3BwIGNvbnRhaW5zIHRoZSBVVEYtMTYgcHJvdmlkZXIuCisgICAgICAgIC0gVVRleHRQ
cm92aWRlci5oL2NwcCBjb250YWlucyBjb2RlIGNvbW1vbiB0byBhbGwgdGhlIHByb3ZpZGVycy4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3Qu
YW06CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmVDb21tb24ucHJvcHM6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL2NvcHlG
b3J3YXJkaW5nSGVhZGVycy5jbWQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEFsbEluT25lLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySUNVLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNldFVwSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6d29yZEJyZWFrSXRl
cmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6YWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNlbnRlbmNlQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRVcEl0ZXJhdG9yV2l0aFJ1bGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2ljdTog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6Zml4UG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjp1
VGV4dENsb25lSW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRl
ci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0UHJvdmlkZXJDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OnVUZXh0SW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjp1VGV4
dEFjY2Vzc1BpbkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0QWNjZXNzSW5DaHVua09y
T3V0T2ZSYW5nZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxh
dGluMS5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlk
ZXJMYXRpbjEuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92
aWRlclVURjE2LmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQ
cm92aWRlclVURjE2Lmg6IEFkZGVkLgorCiAyMDE0LTAxLTExICBEYXZpZCBLaWx6ZXIgIDxkZGtp
bHplckBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRml4IGJ1aWxkIG9mIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6cmVnaXN0ZXJBbGxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzKCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNjE3OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsNyBAQCBzZXQoV2ViQ29y
ZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdv
cmsiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3NxbCIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vdGV4dCIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vdGV4dC9pY3Ui
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsdWdpbnMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3JlbmRl
cmluZyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcmVuZGVyaW5nL2xpbmUiCkBAIC0yODAxLDYgKzI4
MDIsOSBAQCBlbmRpZiAoKQogCiBpZiAoV1RGX1VTRV9JQ1VfVU5JQ09ERSkKICAgICBsaXN0KEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAgICAgcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92
aWRlci5jcHAKKyAgICAgICAgcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5j
cHAKKyAgICAgICAgcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNwcAogICAg
ICAgICBwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySUNVLmNwcAogICAgICAgICBwbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKICAgICAgICAgcGxhdGZvcm0vdGV4dC9UZXh0RW5j
b2RpbmdEZXRlY3RvcklDVS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAx
NjE3OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpA
QCAtOTAsNiArOTAsNyBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0IFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdSBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luIFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL3dpbiBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9u
IDE2MTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTU5NzMsNiArNTk3MywxMiBAQCBwbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZlclNvdXAuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmggXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRG
MTYuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUdUSy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQkocmV2aXNpb24gMTYxNzk0KQorKysgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1H
VEsuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25l
dHdvcmsvZ3RrIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAiCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQvZ3RrIgorICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS90ZXh0L2ljdSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGx1Z2lucy9ndGsiCiAp
CiAKQEAgLTEyOCw2ICsxMjksOSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAg
IHBsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAKIAorICAgIHBsYXRmb3JtL3RleHQv
aWN1L1VUZXh0UHJvdmlkZXIuY3BwCisgICAgcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRl
ckxhdGluMS5jcHAKKyAgICBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3Bw
CiAgICAgcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0
QnJlYWtJdGVyYXRvcklDVS5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAK
QEAgLTI1NSw2ICsyNTksOSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlUGxhdGZvcm1HVEtfU09VUkNF
UwogCiAgICAgcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcAogCisgICAgcGxhdGZv
cm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAKKyAgICBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4
dFByb3ZpZGVyTGF0aW4xLmNwcAorICAgIHBsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJV
VEYxNi5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKICAgICBwbGF0Zm9ybS90
ZXh0L1RleHRCcmVha0l0ZXJhdG9ySUNVLmNwcAogICAgIHBsYXRmb3JtL3RleHQvVGV4dENvZGVj
SUNVLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmVDb21t
b24ucHJvcHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmVDb21tb24ucHJvcHMJKHJldmlzaW9uIDE2MTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlQ29tbW9uLnByb3BzCSh3b3JraW5nIGNvcHkpCkBAIC03LDcg
KzcsNyBAQAogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAg
IDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2pl
Y3REaXIpLi47JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcbWVkaWFjb250cm9sczskKFByb2plY3RE
aXIpLi5cTW9kdWxlc1xtZWRpYXN0cmVhbTskKFByb2plY3REaXIpLi5cTW9kdWxlc1xmaWxlc3lz
dGVtOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXGdlb2xvY2F0aW9uOyQoUHJvamVjdERpcikuLlxN
b2R1bGVzXGluZGV4ZWRkYjskKFByb2plY3REaXIpLi5cTW9kdWxlc1xtZWRpYXNvdXJjZTskKFBy
b2plY3REaXIpLi5cTW9kdWxlc1xuYXZpZ2F0b3Jjb250ZW50dXRpbHM7JChQcm9qZWN0RGlyKS4u
XE1vZHVsZXNccGx1Z2luczskKFByb2plY3REaXIpLi5cTW9kdWxlc1xzcGVlY2g7JChQcm9qZWN0
RGlyKS4uXE1vZHVsZXNccHJveGltaXR5OyQoUHJvamVjdERpcikuLlxNb2R1bGVzXHF1b3RhOyQo
UHJvamVjdERpcikuLlxNb2R1bGVzXG5vdGlmaWNhdGlvbnM7JChQcm9qZWN0RGlyKS4uXE1vZHVs
ZXNcd2ViZGF0YWJhc2U7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcd2Vic29ja2V0czskKFByb2pl
Y3REaXIpLi5cYWNjZXNzaWJpbGl0eTskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW47
JChQcm9qZWN0RGlyKS4uXGJyaWRnZTskKFByb2plY3REaXIpLi5cYnJpZGdlXGM7JChQcm9qZWN0
RGlyKS4uXGJyaWRnZVxqc2M7JChQcm9qZWN0RGlyKS4uXGNzczskKFByb2plY3REaXIpLi5cZWRp
dGluZzskKFByb2plY3REaXIpLi5cZmlsZWFwaTskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nOyQo
UHJvamVjdERpcikuLlxyZW5kZXJpbmdcbGluZTskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXG1h
dGhtbDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXHNoYXBlczskKFByb2plY3REaXIpLi5ccmVu
ZGVyaW5nXHN0eWxlOyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3ZnOyQoUHJvamVjdERpciku
LlxiaW5kaW5nczskKFByb2plY3REaXIpLi5cYmluZGluZ3NcZ2VuZXJpYzskKFByb2plY3REaXIp
Li5cYmluZGluZ3NcanM7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzXHNwZWNpYWxpemF0aW9u
OyQoUHJvamVjdERpcikuLlxkb207JChQcm9qZWN0RGlyKS4uXGRvbVxkZWZhdWx0OyQoUHJvamVj
dERpcikuLlxoaXN0b3J5OyQoUHJvamVjdERpcikuLlxodG1sOyQoUHJvamVjdERpcikuLlxodG1s
XGNhbnZhczskKFByb2plY3REaXIpLi5caHRtbFxmb3JtczskKFByb2plY3REaXIpLi5caHRtbFxw
YXJzZXI7JChQcm9qZWN0RGlyKS4uXGh0bWxcc2hhZG93OyQoUHJvamVjdERpcikuLlxodG1sXHRy
YWNrOyQoUHJvamVjdERpcikuLlxpbnNwZWN0b3I7JChQcm9qZWN0RGlyKS4uXGxvYWRlcjskKFBy
b2plY3REaXIpLi5cbG9hZGVyXGFwcGNhY2hlOyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2
ZTskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2Y7JChQcm9qZWN0RGlyKS4uXGxvYWRl
clxjYWNoZTskKFByb2plY3REaXIpLi5cbG9hZGVyXGljb247JChQcm9qZWN0RGlyKS4uXG1hdGht
bDskKFByb2plY3REaXIpLi5ccGFnZTskKFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRpb247JChQ
cm9qZWN0RGlyKS4uXHBhZ2Vcc2Nyb2xsaW5nOyQoUHJvamVjdERpcikuLlxwYWdlXHdpbjskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm07JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGFuaW1hdGlvbjsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cYXVkaW87JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG1v
Y2s7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNxbDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
d2luOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrOyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxuZXR3b3JrXHdpbjskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2Y7JChQcm9qZWN0RGly
KS4uXHBsYXRmb3JtXGdyYXBoaWNzOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xj
YTskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY3B1XGFybVxmaWx0ZXJzOyQoUHJv
amVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzOyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxncmFwaGljc1xmaWx0ZXJzXGFybTskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhp
Y3Ncb3BlbnR5cGU7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRyYW5zZm9ybXM7
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHQ7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRl
eHRcdHJhbnNjb2RlcjskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luOyQoUHJv
amVjdERpcikuLlx4bWw7JChQcm9qZWN0RGlyKS4uXHhtbFxwYXJzZXI7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXFdlYkNvcmVcRGVyaXZlZFNvdXJj
ZXM7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnM7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcd2luOyQo
UHJvamVjdERpcikuLlxzdmdcYW5pbWF0aW9uOyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3M7
JChQcm9qZWN0RGlyKS4uXHN2Z1xwcm9wZXJ0aWVzOyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhp
Y3NcZmlsdGVyczskKFByb2plY3REaXIpLi5cc3ZnOyQoUHJvamVjdERpcikuLlx0ZXN0aW5nOyQo
UHJvamVjdERpcikuLlxjcnlwdG87JChQcm9qZWN0RGlyKS4uXGNyeXB0b1xrZXlzOyQoUHJvamVj
dERpcikuLlx3bWw7JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2U7JChQcm9qZWN0RGlyKS4uXHN0eWxl
OyQoUHJvamVjdERpcikuLlx3ZWJzb2NrZXRzOyQoUHJvamVjdERpcikuLlx3b3JrZXJzOyQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNs
dWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENv
cmU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29y
ZTskKFByb2plY3REaXIpLi5cRm9yd2FyZGluZ0hlYWRlcnM7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXGdyYXBoaWNzXGdwdTskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZWdsOyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xzdXJmYWNlczskKFByb2plY3REaXIpLi5c
cGxhdGZvcm1cZ3JhcGhpY3Ncc3VyZmFjZXNcZWdsOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxn
cmFwaGljc1xvcGVuZ2w7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlOyQoV2ViS2l0X0xpYnJh
cmllcylcaW5jbHVkZVxwcml2YXRlOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZVxwcml2YXRl
XEphdmFTY3JpcHRDb3JlOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZVxzcWxpdGU7JChXZWJL
aXRfTGlicmFyaWVzKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlOyQoV2ViS2l0X0xpYnJhcmllcylc
aW5jbHVkZVx6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4k
KFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcbWVkaWFjb250cm9sczskKFBy
b2plY3REaXIpLi5cTW9kdWxlc1xtZWRpYXN0cmVhbTskKFByb2plY3REaXIpLi5cTW9kdWxlc1xm
aWxlc3lzdGVtOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXGdlb2xvY2F0aW9uOyQoUHJvamVjdERp
cikuLlxNb2R1bGVzXGluZGV4ZWRkYjskKFByb2plY3REaXIpLi5cTW9kdWxlc1xtZWRpYXNvdXJj
ZTskKFByb2plY3REaXIpLi5cTW9kdWxlc1xuYXZpZ2F0b3Jjb250ZW50dXRpbHM7JChQcm9qZWN0
RGlyKS4uXE1vZHVsZXNccGx1Z2luczskKFByb2plY3REaXIpLi5cTW9kdWxlc1xzcGVlY2g7JChQ
cm9qZWN0RGlyKS4uXE1vZHVsZXNccHJveGltaXR5OyQoUHJvamVjdERpcikuLlxNb2R1bGVzXHF1
b3RhOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXG5vdGlmaWNhdGlvbnM7JChQcm9qZWN0RGlyKS4u
XE1vZHVsZXNcd2ViZGF0YWJhc2U7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcd2Vic29ja2V0czsk
KFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eTskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0
eVx3aW47JChQcm9qZWN0RGlyKS4uXGJyaWRnZTskKFByb2plY3REaXIpLi5cYnJpZGdlXGM7JChQ
cm9qZWN0RGlyKS4uXGJyaWRnZVxqc2M7JChQcm9qZWN0RGlyKS4uXGNzczskKFByb2plY3REaXIp
Li5cZWRpdGluZzskKFByb2plY3REaXIpLi5cZmlsZWFwaTskKFByb2plY3REaXIpLi5ccmVuZGVy
aW5nOyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcbGluZTskKFByb2plY3REaXIpLi5ccmVuZGVy
aW5nXG1hdGhtbDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXHNoYXBlczskKFByb2plY3REaXIp
Li5ccmVuZGVyaW5nXHN0eWxlOyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3ZnOyQoUHJvamVj
dERpcikuLlxiaW5kaW5nczskKFByb2plY3REaXIpLi5cYmluZGluZ3NcZ2VuZXJpYzskKFByb2pl
Y3REaXIpLi5cYmluZGluZ3NcanM7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzXHNwZWNpYWxp
emF0aW9uOyQoUHJvamVjdERpcikuLlxkb207JChQcm9qZWN0RGlyKS4uXGRvbVxkZWZhdWx0OyQo
UHJvamVjdERpcikuLlxoaXN0b3J5OyQoUHJvamVjdERpcikuLlxodG1sOyQoUHJvamVjdERpciku
LlxodG1sXGNhbnZhczskKFByb2plY3REaXIpLi5caHRtbFxmb3JtczskKFByb2plY3REaXIpLi5c
aHRtbFxwYXJzZXI7JChQcm9qZWN0RGlyKS4uXGh0bWxcc2hhZG93OyQoUHJvamVjdERpcikuLlxo
dG1sXHRyYWNrOyQoUHJvamVjdERpcikuLlxpbnNwZWN0b3I7JChQcm9qZWN0RGlyKS4uXGxvYWRl
cjskKFByb2plY3REaXIpLi5cbG9hZGVyXGFwcGNhY2hlOyQoUHJvamVjdERpcikuLlxsb2FkZXJc
YXJjaGl2ZTskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2Y7JChQcm9qZWN0RGlyKS4u
XGxvYWRlclxjYWNoZTskKFByb2plY3REaXIpLi5cbG9hZGVyXGljb247JChQcm9qZWN0RGlyKS4u
XG1hdGhtbDskKFByb2plY3REaXIpLi5ccGFnZTskKFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRp
b247JChQcm9qZWN0RGlyKS4uXHBhZ2Vcc2Nyb2xsaW5nOyQoUHJvamVjdERpcikuLlxwYWdlXHdp
bjskKFByb2plY3REaXIpLi5ccGxhdGZvcm07JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGFuaW1h
dGlvbjskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYXVkaW87JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXG1vY2s7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNxbDskKFByb2plY3REaXIpLi5ccGxh
dGZvcm1cd2luOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrOyQoUHJvamVjdERpciku
LlxwbGF0Zm9ybVxuZXR3b3JrXHdpbjskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2Y7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFw
aGljc1xjYTskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY3B1XGFybVxmaWx0ZXJz
OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzOyQoUHJvamVjdERpciku
LlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXGFybTskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
Z3JhcGhpY3Ncb3BlbnR5cGU7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRyYW5z
Zm9ybXM7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHQ7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXHRleHRcaWN1OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0XHRyYW5zY29kZXI7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpbjskKFByb2plY3REaXIpLi5ceG1sOyQo
UHJvamVjdERpcikuLlx4bWxccGFyc2VyOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVxXZWJDb3JlXERlcml2ZWRTb3VyY2VzOyQoUHJvamVjdERpciku
LlxwbHVnaW5zOyQoUHJvamVjdERpcikuLlxwbHVnaW5zXHdpbjskKFByb2plY3REaXIpLi5cc3Zn
XGFuaW1hdGlvbjskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzOyQoUHJvamVjdERpcikuLlxz
dmdccHJvcGVydGllczskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzXGZpbHRlcnM7JChQcm9q
ZWN0RGlyKS4uXHN2ZzskKFByb2plY3REaXIpLi5cdGVzdGluZzskKFByb2plY3REaXIpLi5cY3J5
cHRvOyQoUHJvamVjdERpcikuLlxjcnlwdG9ca2V5czskKFByb2plY3REaXIpLi5cd21sOyQoUHJv
amVjdERpcikuLlxzdG9yYWdlOyQoUHJvamVjdERpcikuLlxzdHlsZTskKFByb2plY3REaXIpLi5c
d2Vic29ja2V0czskKFByb2plY3REaXIpLi5cd29ya2VyczskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcaW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlOyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JChQcm9qZWN0RGlyKS4u
XEZvcndhcmRpbmdIZWFkZXJzOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xncHU7
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGVnbDskKFByb2plY3REaXIpLi5ccGxh
dGZvcm1cZ3JhcGhpY3Ncc3VyZmFjZXM7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNz
XHN1cmZhY2VzXGVnbDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbmdsOyQo
V2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVccHJp
dmF0ZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTsk
KFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVcc3FsaXRlOyQoV2ViS2l0X0xpYnJhcmllcylcaW5j
bHVkZVxKYXZhU2NyaXB0Q29yZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVcemxpYjslKEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
PgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPkRJU0FCTEVfM0RfUkVOREVSSU5HO1dF
QkNPUkVfQ09OVEVYVF9NRU5VUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+CiAgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxl
ZEhlYWRlcj4KICAgICAgIDxQcmVjb21waWxlZEhlYWRlckZpbGU+V2ViQ29yZVByZWZpeC5oPC9Q
cmVjb21waWxlZEhlYWRlckZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZAkocmV2aXNpb24gMTYx
Nzk0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL2NvcHlGb3J3YXJkaW5nSGVh
ZGVycy5jbWQJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAgeGNvcHkgL3kgL2QgIiVQ
cm9qZWN0RGlyJS4uXHBsYXRmb3JtXGdyYQogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBs
YXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGlu
Y2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVxtb2Nr
XCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95
IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVx0ZXh0XCouaCIgIiVDT05GSUdVUkFUSU9OQlVJ
TERESVIlXGluY2x1ZGVcV2ViQ29yZSIKK3hjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0
Zm9ybVx0ZXh0XGljdVwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNv
cmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cdGV4dFx0cmFuc2NvZGVy
XCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95
IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVx3aW5cKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlM
RERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRm
b3JtXG5ldHdvcmtcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3Jl
IgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTYxNzk0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMjkyLDYgKzIyOTIsMTIg
QEAKIAkJN0M1MjJENEIxNUI0NzdFODAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXkuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M1MjJENDkxNUI0
NzdFODAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXkuY3BwICovOyB9OwogCQk3QzUzNDNGQzE3
Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTM0M0ZBMTdCNzRCNjMwMDQy
MzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwICovOyB9OwogCQk3QzUzNDNGRDE3
Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUzNDNGQjE3Qjc0QjYzMDA0MjMy
RjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggKi87IH07CisJCTdDNzRENDMzMTg4MjNB
OTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDMxMTg4MjNBOTMwMEU1RUQ1NyAvKiBV
VGV4dFByb3ZpZGVyTGF0aW4xLmNwcCAqLzsgfTsKKwkJN0M3NEQ0MzQxODgyM0E5MzAwRTVFRDU3
IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDNzRENDMyMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVy
TGF0aW4xLmggKi87IH07CisJCTdDNzRENDM3MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3Zp
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
NzRENDM1MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCAqLzsgfTsKKwkJN0M3
NEQ0MzgxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDM2MTg4MjNCMTkwMEU1RUQ1NyAv
KiBVVGV4dFByb3ZpZGVyLmggKi87IH07CisJCTdDNzRENDNCMTg4MjQwMDQwMEU1RUQ1NyAvKiBV
VGV4dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0M3NEQ0MzkxODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYx
Ni5jcHAgKi87IH07CisJCTdDNzRENDNDMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVy
VVRGMTYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
NzRENDNBMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLzsgfTsKIAkJ
N0NDN0UzRDcxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlzdC50eHQgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQzdFM0Q2MTcyMDhD
MEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0ICovOyB9OwogCQk3Q0U2Q0JGQjE4
N0YzNzA3MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0U2Q0JGQTE4N0YzNzA3MDBENDZCRjUgLyogRm9y
bWF0Q29udmVydGVyLmggKi87IH07CiAJCTdDRTZDQkZEMTg3RjM5NDkwMEQ0NkJGNSAvKiBGb3Jt
YXRDb252ZXJ0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0NFNkNCRkMxODdGMzk0OTAwRDQ2QkY1IC8qIEZvcm1hdENvbnZlcnRlci5jcHAgKi87
IH07CkBAIC05MjY3LDYgKzkyNzMsMTIgQEAKIAkJN0M2MTM2RjcxNzEwQzM1MjAwRkY0QTU3IC8q
IEluRmlsZXNDb21waWxlci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBJbkZpbGVzQ29tcGlsZXIucG07
IHBhdGggPSBzY3JpcHRzL0luRmlsZXNDb21waWxlci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0M2MTM2RjgxNzEwQzM1MjAwRkY0QTU3IC8qIEluRmlsZXNQYXJzZXIucG0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlw
dC5wZXJsOyBuYW1lID0gSW5GaWxlc1BhcnNlci5wbTsgcGF0aCA9IHNjcmlwdHMvSW5GaWxlc1Bh
cnNlci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M2MTM2RjkxNzEwQzM1MjAw
RkY0QTU3IC8qIFN0YXRpY1N0cmluZy5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBTdGF0aWNTdHJpbmcu
cG07IHBhdGggPSBzY3JpcHRzL1N0YXRpY1N0cmluZy5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0M3NEQ0MzExODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVRleHRQcm92aWRlckxh
dGluMS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNzRENDMyMTg4MjNBOTMw
MEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJMYXRpbjEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0M3NEQ0MzUxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVRleHRQcm92aWRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNzRENDM2MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4
dFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUZXh0UHJvdmlk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M3NEQ0MzkxODgyNDAwNDAwRTVF
RDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3Qzc0RDQzQTE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92aWRlclVURjE2Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJVVEYxNi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0M3RTNENjE3MjA4QzBGMDAzQzUyNzcgLyog
SUROU2NyaXB0V2hpdGVMaXN0LnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJRE5TY3JpcHRX
aGl0ZUxpc3QudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0U2Q0JGQTE4N0Yz
NzA3MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZvcm1hdENvbnZlcnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3Q0U2Q0JGQzE4N0YzOTQ5MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1hdENvbnZlcnRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjI4NSw2ICsxNjI5NywxOSBAQAogCQkJdGFiV2lk
dGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQk3Qzc0RDQzMDE4ODIzQTQyMDBFNUVE
NTcgLyogaWN1ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQk3Qzc0RDQzMTE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgKi8s
CisJCQkJN0M3NEQ0MzIxODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCAq
LywKKwkJCQk3Qzc0RDQzOTE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92aWRlclVURjE2LmNw
cCAqLywKKwkJCQk3Qzc0RDQzQTE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92aWRlclVURjE2
LmggKi8sCisJCQkJN0M3NEQ0MzUxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuY3Bw
ICovLAorCQkJCTdDNzRENDM2MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmggKi8s
CisJCQkpOworCQkJcGF0aCA9IGljdTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CiAJCTdFNDc0RTE5MTI0OTREQTkwMDIzNTM2NCAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjAwMjYsNiArMjAwNTEsNyBAQAogCQkJCUIyQjI2
NDU5MEQwMEE3N0UwMDBBQ0MxRCAvKiBjZiAqLywKIAkJCQlBNTE2RThCMjEzNkUwNEMwMDA3NkMz
QzAgLyogaW9zICovLAogCQkJCUIyQzNEOUY5MEQwMDZDMUQwMEVGNkYyNiAvKiBtYWMgKi8sCisJ
CQkJN0M3NEQ0MzAxODgyM0E0MjAwRTVFRDU3IC8qIGljdSAqLywKIAkJCQkzN0M2MUYwMDEyMDk1
Qzg3MDA3QTNDNjcgLyogQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5oICovLAogCQkJCUIyQzNE
OUYyMEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRpQ29udGV4dC5jcHAgKi8sCiAJCQkJQjJDM0Q5RjMw
RDAwNkMxRDAwRUY2RjI2IC8qIEJpZGlDb250ZXh0LmggKi8sCkBAIC0yNTIwMCwxMCArMjUyMjYs
MTIgQEAKIAkJCQlEMEEzQTczMTE0MDVBMzk4MDBGQjhFRDMgLyogUmVzb3VyY2VMb2FkZXJPcHRp
b25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUFGNTAzNjE2RjEwMEY2MDA5NUIyRTggLyogUmVz
b3VyY2VMb2FkZXJUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTczRTMyNTcxMDg4M0I3QzAw
NUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3Qzc0
RDQzNDE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQcm92aWRlckxhdGluMS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTQyOTVGQTQxMkIwNjE0RTAwRDFBQ0UwIC8qIFJlc291cmNlTG9hZFByaW9yaXR5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlEMENFNThGOTEyNUU0Q0MyMDBGM0YxOTkgLyogUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0M1OUI3NjE3RjdEMERCMDAw
RkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTgxQkY4NTEx
RENGRDkwMDBEQTJCOTggLyogUmVzb3VyY2VMb2FkVGltaW5nLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3Qzc0RDQzODE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2N0QwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVx
dWVzdEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTY5REI4MTdEMTQxNTEwMDdGRjg0MiAv
KiBKU1JUQ0ljZUNhbmRpZGF0ZUV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI1NDM2LDYgKzI1
NDY0LDcgQEAKIAkJCQlCQ0VGNDQ0QTBFNjc0NUUwMDAxQzEyODcgLyogU3R5bGVHZW5lcmF0ZWRJ
bWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEwREM3NkIxNDc0N0JBQjAwNUUyNDcxIC8qIFN0
eWxlR3JpZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMTBEQjlCMTRGNURGNzcwMEEwM0I5
MyAvKiBTdHlsZUdyaWRJdGVtRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0M3NEQ0M0MxODgy
NDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFRjQzQ0YwRTY3M0RBMTAwMUMxMjg3IC8qIFN0eWxlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMjI3MzA0MEU4MkYxRTYwMEU3Rjk3NSAvKiBTdHlsZUluaGVyaXRlZERhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0NzEyN0NCMTYzNDM4QUUwMEVENkY1QSAvKiBTdHlsZUludmFsaWRh
dGlvbkFuYWx5c2lzLmggaW4gSGVhZGVycyAqLywKQEAgLTI2NzM1LDYgKzI2NzY0LDcgQEAKIAkJ
CQlGRTE2Q0ZENTE2OUQxREVEMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kU3luYy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGRUJDNUYzMTE2QkQwQ0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QkM2QTI3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRh
YmFzZUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0M3NEQ0MzMxODgyM0E5MzAwRTVF
RDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU0NTZG
MTgxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGRUIyNkQyODE2N0E4RjJBMDBGREQyNkIgLyogRGF0YWJhc2VTZXJ2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkVERUY4NDExNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRl
Z3kuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjg0NSw2ICsyNjg3NSw3IEBACiAJCQkJMDc4MzIy
ODQxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkQ5QTI0NzMxNUI5QzJEMTAwRDM0NTI3IC8qIERPTURPTVNlY3VyaXR5UG9s
aWN5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNzY5NDU2NUMxMjE0REI2MzAwMDdDQkFFIC8qIERP
TURPTVRva2VuTGlzdC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdDNzRENDNCMTg4MjQwMDQwMEU1
RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBQkEy
NTkxNEJDNjEzMzAwQUE5QTExIC8qIERPTUVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NUFDQTlDMTBBOUI1RkE1MDA2NzFFOTAgLyogRE9NRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTg1Q0E5NkI5MEE5NjIxQTYwMDY5MENDRiAvKiBET01FbnRpdHkubW0gaW4gU291cmNlcyAq
LywKQEAgLTI4OTU2LDYgKzI4OTg3LDcgQEAKIAkJCQkwNzhFMDkwQTE3RDE0Q0VFMDA0MjBBQTEg
LyogUlRDSWNlQ2FuZGlkYXRlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE0ODMyQzgx
ODdGNjczRjAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWQubW0gaW4gU291cmNlcyAqLywKIAkJCQlC
MjIyN0FDNDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVGVzdHMuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJN0M3NEQ0MzcxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjIyMjdBQzcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RleHRDb250ZW50RWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzk2OURCQjE3RDE0MTUxMDA3RkY4NDIgLyog
SlNSVENTZXNzaW9uRGVzY3JpcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBQ0Ew
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RleHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QWxsSW5PbmUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEFsbEluT25lLmNwcAkocmV2
aXNpb24gMTYxNzk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QWxsSW5P
bmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwzICszOCw2IEBACiAjaW5jbHVkZSAiVGV4dEVu
Y29kaW5nRGV0ZWN0b3JJQ1UuY3BwIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZ1JlZ2lzdHJ5LmNw
cCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmNwcCIKKyNpbmNsdWRlICJVVGV4dFByb3ZpZGVyLmNw
cCIKKyNpbmNsdWRlICJVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCIKKyNpbmNsdWRlICJVVGV4dFBy
b3ZpZGVyVVRGMTYuY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
QnJlYWtJdGVyYXRvcklDVS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHAJKHJldmlzaW9uIDE2MTc5NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJQ1UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4IEBACiAjaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3Iu
aCIKIAogI2luY2x1ZGUgIkxpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIgorI2luY2x1ZGUgIlVU
ZXh0UHJvdmlkZXJMYXRpbjEuaCIKKyNpbmNsdWRlICJVVGV4dFByb3ZpZGVyVVRGMTYuaCIKICNp
bmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC0zMCw4ICszMiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRVcEl0ZXJhdG9yKGJvb2wmIGNy
ZWF0ZWRJdGVyYXRvciwgVGV4dEJyZWFrSXRlcmF0b3IqJiBpdGVyYXRvciwKLSAgICBVQnJlYWtJ
dGVyYXRvclR5cGUgdHlwZSwgY29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCkKK3N0YXRp
YyBUZXh0QnJlYWtJdGVyYXRvciogc2V0VXBJdGVyYXRvcihib29sJiBjcmVhdGVkSXRlcmF0b3Is
IFRleHRCcmVha0l0ZXJhdG9yKiYgaXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yVHlwZSB0eXBlLCBj
b25zdCBVQ2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoKQogewogICAgIGlmICghc3RyaW5nKQogICAg
ICAgICByZXR1cm4gMDsKQEAgLTUzLDM3MyArNTQsMTEgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJh
dG9yKiBzZXRVcEl0ZXJhdG9yKAogICAgIHJldHVybiBpdGVyYXRvcjsKIH0KIAotZW51bSBUZXh0
Q29udGV4dCB7IE5vQ29udGV4dCwgUHJpb3JDb250ZXh0LCBQcmltYXJ5Q29udGV4dCB9OwotCi1j
b25zdCBpbnQgdGV4dEJ1ZmZlckNhcGFjaXR5ID0gMTY7Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAg
ICBVVGV4dCB0ZXh0OwotICAgIFVDaGFyIGJ1ZmZlclt0ZXh0QnVmZmVyQ2FwYWNpdHldOwotfSBV
VGV4dFdpdGhCdWZmZXI7Ci0KLXN0YXRpYyBpbmxpbmUgaW50NjRfdCB0ZXh0UGluSW5kZXgoaW50
NjRfdCYgaW5kZXgsIGludDY0X3QgbGltaXQpCi17Ci0gICAgaWYgKGluZGV4IDwgMCkKLSAgICAg
ICAgaW5kZXggPSAwOwotICAgIGVsc2UgaWYgKGluZGV4ID4gbGltaXQpCi0gICAgICAgIGluZGV4
ID0gbGltaXQ7Ci0gICAgcmV0dXJuIGluZGV4OwotfQotCi1zdGF0aWMgaW5saW5lIGludDY0X3Qg
dGV4dE5hdGl2ZUxlbmd0aChVVGV4dCogdGV4dCkKLXsKLSAgICByZXR1cm4gdGV4dC0+YSArIHRl
eHQtPmI7Ci19Ci0KLS8vIFJlbG9jYXRlIHBvaW50ZXIgZnJvbSBzb3VyY2UgaW50byBkZXN0aW5h
dGlvbiBhcyByZXF1aXJlZC4KLXN0YXRpYyB2b2lkIHRleHRGaXhQb2ludGVyKGNvbnN0IFVUZXh0
KiBzb3VyY2UsIFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3Qgdm9pZComIHBvaW50ZXIpCi17Ci0g
ICAgaWYgKHBvaW50ZXIgPj0gc291cmNlLT5wRXh0cmEgJiYgcG9pbnRlciA8IHN0YXRpY19jYXN0
PGNoYXIqPihzb3VyY2UtPnBFeHRyYSkgKyBzb3VyY2UtPmV4dHJhU2l6ZSkgewotICAgICAgICAv
LyBQb2ludGVyIHJlZmVyZW5jZXMgc291cmNlIGV4dHJhIGJ1ZmZlci4KLSAgICAgICAgcG9pbnRl
ciA9IHN0YXRpY19jYXN0PGNoYXIqPihkZXN0aW5hdGlvbi0+cEV4dHJhKSArIChzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4ocG9pbnRlcikgLSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oc291cmNl
LT5wRXh0cmEpKTsKLSAgICB9IGVsc2UgaWYgKHBvaW50ZXIgPj0gc291cmNlICYmIHBvaW50ZXIg
PCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzb3VyY2UpICsgc291cmNlLT5zaXplT2ZT
dHJ1Y3QpIHsKLSAgICAgICAgLy8gUG9pbnRlciByZWZlcmVuY2VzIHNvdXJjZSB0ZXh0IHN0cnVj
dHVyZSwgYnV0IG5vdCBzb3VyY2UgZXh0cmEgYnVmZmVyLgotICAgICAgICBwb2ludGVyID0gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oZGVzdGluYXRpb24pICsgKHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihwb2ludGVyKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNvdXJjZSkpOwot
ICAgIH0KLX0KLQotc3RhdGljIFVUZXh0KiB0ZXh0Q2xvbmUoVVRleHQqIGRlc3RpbmF0aW9uLCBj
b25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0g
ICAgQVNTRVJUX1VOVVNFRChkZWVwLCAhZGVlcCk7Ci0gICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVz
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaW50MzJfdCBleHRyYVNpemUgPSBzb3VyY2UtPmV4
dHJhU2l6ZTsKLSAgICBkZXN0aW5hdGlvbiA9IHV0ZXh0X3NldHVwKGRlc3RpbmF0aW9uLCBleHRy
YVNpemUsIHN0YXR1cyk7Ci0gICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKLSAgICAgICAgcmV0
dXJuIGRlc3RpbmF0aW9uOwotICAgIHZvaWQqIGV4dHJhTmV3ID0gZGVzdGluYXRpb24tPnBFeHRy
YTsKLSAgICBpbnQzMl90IGZsYWdzID0gZGVzdGluYXRpb24tPmZsYWdzOwotICAgIGludCBzaXpl
VG9Db3B5ID0gc3RkOjptaW4oc291cmNlLT5zaXplT2ZTdHJ1Y3QsIGRlc3RpbmF0aW9uLT5zaXpl
T2ZTdHJ1Y3QpOwotICAgIG1lbWNweShkZXN0aW5hdGlvbiwgc291cmNlLCBzaXplVG9Db3B5KTsK
LSAgICBkZXN0aW5hdGlvbi0+cEV4dHJhID0gZXh0cmFOZXc7Ci0gICAgZGVzdGluYXRpb24tPmZs
YWdzID0gZmxhZ3M7Ci0gICAgbWVtY3B5KGRlc3RpbmF0aW9uLT5wRXh0cmEsIHNvdXJjZS0+cEV4
dHJhLCBleHRyYVNpemUpOwotICAgIHRleHRGaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24s
IGRlc3RpbmF0aW9uLT5jb250ZXh0KTsKLSAgICB0ZXh0Rml4UG9pbnRlcihzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBkZXN0aW5hdGlvbi0+cCk7Ci0gICAgdGV4dEZpeFBvaW50ZXIoc291cmNlLCBkZXN0
aW5hdGlvbiwgZGVzdGluYXRpb24tPnEpOwotICAgIEFTU0VSVCghZGVzdGluYXRpb24tPnIpOwot
ICAgIGNvbnN0IHZvaWQgKiBjaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+
KGRlc3RpbmF0aW9uLT5jaHVua0NvbnRlbnRzKTsKLSAgICB0ZXh0Rml4UG9pbnRlcihzb3VyY2Us
IGRlc3RpbmF0aW9uLCBjaHVua0NvbnRlbnRzKTsKLSAgICBkZXN0aW5hdGlvbi0+Y2h1bmtDb250
ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4oY2h1bmtDb250ZW50cyk7Ci0gICAgcmV0
dXJuIGRlc3RpbmF0aW9uOwotfQotCi1zdGF0aWMgaW50MzJfdCB0ZXh0RXh0cmFjdChVVGV4dCog
dGV4dCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBsaW1pdCwgVUNoYXIqIGRlc3RpbmF0aW9uLCBp
bnQzMl90IGRlc3RpbmF0aW9uQ2FwYWNpdHksIFVFcnJvckNvZGUqIGVycm9yQ29kZSkKLXsKLSAg
ICBVTlVTRURfUEFSQU0odGV4dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXJ0KTsKLSAgICBVTlVT
RURfUEFSQU0obGltaXQpOwotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbik7Ci0gICAgVU5V
U0VEX1BBUkFNKGRlc3RpbmF0aW9uQ2FwYWNpdHkpOwotICAgIC8vIEluIHRoZSBwcmVzZW50IGNv
bnRleHQsIHRoaXMgdGV4dCBwcm92aWRlciBpcyB1c2VkIG9ubHkgd2l0aCBJQ1UgZnVuY3Rpb25z
Ci0gICAgLy8gdGhhdCBkbyBub3QgcGVyZm9ybSBhbiBleHRyYWN0IG9wZXJhdGlvbi4KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAqZXJyb3JDb2RlID0gVV9VTlNVUFBPUlRFRF9FUlJP
UjsKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgdGV4dENsb3NlKFVUZXh0KiB0ZXh0
KQotewotICAgIHRleHQtPmNvbnRleHQgPSAwOwotfQotCi1zdGF0aWMgaW5saW5lIFRleHRDb250
ZXh0IHRleHRHZXRDb250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4
LCBVQm9vbCBmb3J3YXJkKQotewotICAgIGlmICghdGV4dC0+YiB8fCBuYXRpdmVJbmRleCA+IHRl
eHQtPmIpCi0gICAgICAgIHJldHVybiBQcmltYXJ5Q29udGV4dDsKLSAgICBpZiAobmF0aXZlSW5k
ZXggPT0gdGV4dC0+YikKLSAgICAgICAgcmV0dXJuIGZvcndhcmQgPyBQcmltYXJ5Q29udGV4dCA6
IFByaW9yQ29udGV4dDsKLSAgICByZXR1cm4gUHJpb3JDb250ZXh0OwotfQotCi1zdGF0aWMgaW5s
aW5lIFRleHRDb250ZXh0IHRleHRMYXRpbjFHZXRDdXJyZW50Q29udGV4dChjb25zdCBVVGV4dCog
dGV4dCkKLXsKLSAgICBpZiAoIXRleHQtPmNodW5rQ29udGVudHMpCi0gICAgICAgIHJldHVybiBO
b0NvbnRleHQ7Ci0gICAgcmV0dXJuIHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cEV4dHJh
ID8gUHJpbWFyeUNvbnRleHQgOiBQcmlvckNvbnRleHQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRM
YXRpbjFNb3ZlSW5QcmltYXJ5Q29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRl
eCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCi17Ci0gICAgQVNTRVJUKHRl
eHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cEV4dHJhKTsKLSAgICBpZiAoZm9yd2FyZCkgewot
ICAgICAgICBBU1NFUlQobmF0aXZlSW5kZXggPj0gdGV4dC0+YiAmJiBuYXRpdmVJbmRleCA8IG5h
dGl2ZUxlbmd0aCk7Ci0gICAgICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSBuYXRpdmVJbmRl
eDsKLSAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUluZGV4ICsgdGV4dC0+
ZXh0cmFTaXplIC8gc2l6ZW9mKFVDaGFyKTsKLSAgICAgICAgaWYgKHRleHQtPmNodW5rTmF0aXZl
TGltaXQgPiBuYXRpdmVMZW5ndGgpCi0gICAgICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0
ID0gbmF0aXZlTGVuZ3RoOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVJbmRl
eCA+IHRleHQtPmIgJiYgbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3RoKTsKLSAgICAgICAgdGV4
dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUluZGV4OwotICAgICAgICB0ZXh0LT5jaHVua05h
dGl2ZVN0YXJ0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5leHRyYVNpemUgLyBzaXplb2YoVUNoYXIp
OwotICAgICAgICBpZiAodGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA8IHRleHQtPmIpCi0gICAgICAg
ICAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gdGV4dC0+YjsKLSAgICB9Ci0gICAgaW50NjRf
dCBsZW5ndGggPSB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFy
dDsKLSAgICAvLyBFbnN1cmUgY2h1bmsgbGVuZ3RoIGlzIHdlbGwgZGVmaW5lZCBpZiBjb21wdXRl
ZCBsZW5ndGggZXhjZWVkcyBpbnQzMl90IHJhbmdlLgotICAgIEFTU0VSVChsZW5ndGggPCBzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7Ci0gICAgdGV4dC0+Y2h1bmtMZW5ndGgg
PSBsZW5ndGggPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19j
YXN0PGludDMyX3Q+KGxlbmd0aCkgOiAwOwotICAgIHRleHQtPm5hdGl2ZUluZGV4aW5nTGltaXQg
PSB0ZXh0LT5jaHVua0xlbmd0aDsKLSAgICB0ZXh0LT5jaHVua09mZnNldCA9IGZvcndhcmQgPyAw
IDogdGV4dC0+Y2h1bmtMZW5ndGg7Ci0gICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGNvbnN0X2Nh
c3Q8VUNoYXIqPih0ZXh0LT5jaHVua0NvbnRlbnRzKSwgc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIq
Pih0ZXh0LT5wKSArICh0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0IC0gdGV4dC0+YiksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPih0ZXh0LT5jaHVua0xlbmd0aCkpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0
TGF0aW4xU3dpdGNoVG9QcmltYXJ5Q29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJ
bmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCi17Ci0gICAgQVNTRVJU
KCF0ZXh0LT5jaHVua0NvbnRlbnRzIHx8IHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cSk7
Ci0gICAgdGV4dC0+Y2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4odGV4
dC0+cEV4dHJhKTsKLSAgICB0ZXh0TGF0aW4xTW92ZUluUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0
aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRM
YXRpbjFNb3ZlSW5QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgs
IGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCh0ZXh0
LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOwotICAgIEFTU0VSVChmb3J3YXJkID8gbmF0aXZl
SW5kZXggPCB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPD0gdGV4dC0+Yik7Ci0gICAgQVNTRVJUX1VO
VVNFRChuYXRpdmVMZW5ndGgsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6
IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3J3YXJk
LCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBu
YXRpdmVMZW5ndGgpOwotICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSAwOwotICAgIHRleHQt
PmNodW5rTmF0aXZlTGltaXQgPSB0ZXh0LT5iOwotICAgIHRleHQtPmNodW5rTGVuZ3RoID0gdGV4
dC0+YjsKLSAgICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7
Ci0gICAgaW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3Rh
cnQ7Ci0gICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0
ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZSBvciBjaHVuayBsZW5ndGguCi0gICAgQVNT
RVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICB0
ZXh0LT5jaHVua09mZnNldCA9IHN0ZDo6bWluKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQt
PmNodW5rTGVuZ3RoKTsKLX0KLQotc3RhdGljIHZvaWQgdGV4dExhdGluMVN3aXRjaFRvUHJpb3JD
b250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxl
bmd0aCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQoIXRleHQtPmNodW5rQ29udGVudHMg
fHwgdGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wRXh0cmEpOwotICAgIHRleHQtPmNodW5r
Q29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnEpOwotICAgIHRleHRM
YXRpbjFNb3ZlSW5QcmlvckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwg
Zm9yd2FyZCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCB0ZXh0SW5DaHVua09yT3V0T2ZSYW5n
ZShVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgs
IFVCb29sIGZvcndhcmQsIFVCb29sJiBpc0FjY2Vzc2libGUpCi17Ci0gICAgaWYgKGZvcndhcmQp
IHsKLSAgICAgICAgaWYgKG5hdGl2ZUluZGV4ID49IHRleHQtPmNodW5rTmF0aXZlU3RhcnQgJiYg
bmF0aXZlSW5kZXggPCB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0KSB7Ci0gICAgICAgICAgICBpbnQ2
NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKLSAgICAg
ICAgICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBmb3JtZWQgaWYgY29tcHV0ZWQg
b2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZS4KLSAgICAgICAgICAgIEFTU0VSVChvZmZzZXQg
PCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7Ci0gICAgICAgICAgICB0ZXh0
LT5jaHVua09mZnNldCA9IG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1h
eCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDA7Ci0gICAgICAgICAgICBpc0Fj
Y2Vzc2libGUgPSBUUlVFOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKG5hdGl2ZUluZGV4ID49IG5hdGl2ZUxlbmd0aCAmJiB0ZXh0LT5jaHVua05hdGl2
ZUxpbWl0ID09IG5hdGl2ZUxlbmd0aCkgewotICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQg
PSB0ZXh0LT5jaHVua0xlbmd0aDsKLSAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IEZBTFNFOwot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAg
ICBpZiAobmF0aXZlSW5kZXggPiB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ICYmIG5hdGl2ZUluZGV4
IDw9IHRleHQtPmNodW5rTmF0aXZlTGltaXQpIHsKLSAgICAgICAgICAgIGludDY0X3Qgb2Zmc2V0
ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgICAgICAgICAgLy8g
RW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGZvcm1lZCBpZiBjb21wdXRlZCBvZmZzZXQgZXhj
ZWVkcyBpbnQzMl90IHJhbmdlLgotICAgICAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICAgICAgICAgIHRleHQtPmNodW5rT2Zm
c2V0ID0gb2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0
aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMDsKLSAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9
IFRSVUU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAo
bmF0aXZlSW5kZXggPD0gMCAmJiAhdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCkgewotICAgICAgICAg
ICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSAwOwotICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gRkFM
U0U7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBVQm9vbCB0ZXh0TGF0aW4xQWNjZXNzKFVUZXh0KiB0ZXh0
LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBVQm9vbCBmb3J3YXJkKQotewotICAgIGlmICghdGV4dC0+
Y29udGV4dCkKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgIGludDY0X3QgbmF0aXZlTGVuZ3Ro
ID0gdGV4dE5hdGl2ZUxlbmd0aCh0ZXh0KTsKLSAgICBVQm9vbCBpc0FjY2Vzc2libGU7Ci0gICAg
aWYgKHRleHRJbkNodW5rT3JPdXRPZlJhbmdlKHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5n
dGgsIGZvcndhcmQsIGlzQWNjZXNzaWJsZSkpCi0gICAgICAgIHJldHVybiBpc0FjY2Vzc2libGU7
Ci0gICAgbmF0aXZlSW5kZXggPSB0ZXh0UGluSW5kZXgobmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0
aCk7Ci0gICAgVGV4dENvbnRleHQgY3VycmVudENvbnRleHQgPSB0ZXh0TGF0aW4xR2V0Q3VycmVu
dENvbnRleHQodGV4dCk7Ci0gICAgVGV4dENvbnRleHQgbmV3Q29udGV4dCA9IHRleHRHZXRDb250
ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBmb3J3YXJkKTsKLSAgICBBU1NFUlQobmV3Q29udGV4dCAh
PSBOb0NvbnRleHQpOwotICAgIGlmIChuZXdDb250ZXh0ID09IGN1cnJlbnRDb250ZXh0KSB7Ci0g
ICAgICAgIGlmIChjdXJyZW50Q29udGV4dCA9PSBQcmltYXJ5Q29udGV4dCkKLSAgICAgICAgICAg
IHRleHRMYXRpbjFNb3ZlSW5QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZl
TGVuZ3RoLCBmb3J3YXJkKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGV4dExhdGluMU1v
dmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJk
KTsKLSAgICB9IGVsc2UgaWYgKG5ld0NvbnRleHQgPT0gUHJpbWFyeUNvbnRleHQpCi0gICAgICAg
IHRleHRMYXRpbjFTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRp
dmVMZW5ndGgsIGZvcndhcmQpOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobmV3Q29udGV4
dCA9PSBQcmlvckNvbnRleHQpOwotICAgICAgICB0ZXh0TGF0aW4xU3dpdGNoVG9QcmlvckNvbnRl
eHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci0gICAgfQotICAg
IHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IFVUZXh0RnVuY3MgdGV4dExh
dGluMUZ1bmNzID0gewotICAgIHNpemVvZihVVGV4dEZ1bmNzKSwKLSAgICAwLCAwLCAwLAotICAg
IHRleHRDbG9uZSwKLSAgICB0ZXh0TmF0aXZlTGVuZ3RoLAotICAgIHRleHRMYXRpbjFBY2Nlc3Ms
Ci0gICAgdGV4dEV4dHJhY3QsCi0gICAgMCwgMCwgMCwgMCwKLSAgICB0ZXh0Q2xvc2UsCi0gICAg
MCwgMCwgMCwKLX07Ci0KLXN0YXRpYyB2b2lkIHRleHRJbml0KFVUZXh0KiB0ZXh0LCBjb25zdCBV
VGV4dEZ1bmNzKiBmdW5jcywgY29uc3Qgdm9pZCogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNv
bnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgpCi17Ci0gICAg
dGV4dC0+cEZ1bmNzID0gZnVuY3M7Ci0gICAgdGV4dC0+cHJvdmlkZXJQcm9wZXJ0aWVzID0gMSA8
PCBVVEVYVF9QUk9WSURFUl9TVEFCTEVfQ0hVTktTOwotICAgIHRleHQtPmNvbnRleHQgPSBzdHJp
bmc7Ci0gICAgdGV4dC0+cCA9IHN0cmluZzsKLSAgICB0ZXh0LT5hID0gbGVuZ3RoOwotICAgIHRl
eHQtPnEgPSBwcmlvckNvbnRleHQ7Ci0gICAgdGV4dC0+YiA9IHByaW9yQ29udGV4dExlbmd0aDsK
LX0KLQotc3RhdGljIFVUZXh0KiB0ZXh0T3BlbkxhdGluMShVVGV4dFdpdGhCdWZmZXIqIHV0V2l0
aEJ1ZmZlciwgY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hh
ciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVuZ3RoLCBVRXJyb3JDb2RlKiBzdGF0
dXMpCi17Ci0gICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgaWYgKCFzdHJpbmcgfHwgbGVuZ3RoID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkgewotICAgICAgICAqc3RhdHVzID0gVV9JTExF
R0FMX0FSR1VNRU5UX0VSUk9SOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgVVRleHQq
IHRleHQgPSB1dGV4dF9zZXR1cCgmdXRXaXRoQnVmZmVyLT50ZXh0LCBzaXplb2YodXRXaXRoQnVm
ZmVyLT5idWZmZXIpLCBzdGF0dXMpOwotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpIHsKLSAg
ICAgICAgQVNTRVJUKCF0ZXh0KTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHRleHRJ
bml0KHRleHQsICZ0ZXh0TGF0aW4xRnVuY3MsIHN0cmluZywgbGVuZ3RoLCBwcmlvckNvbnRleHQs
IHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgcmV0dXJuIHRleHQ7Ci19Ci0KLXN0YXRpYyBpbmxp
bmUgVGV4dENvbnRleHQgdGV4dFVURjE2R2V0Q3VycmVudENvbnRleHQoY29uc3QgVVRleHQqIHRl
eHQpCi17Ci0gICAgaWYgKCF0ZXh0LT5jaHVua0NvbnRlbnRzKQotICAgICAgICByZXR1cm4gTm9D
b250ZXh0OwotICAgIHJldHVybiB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnAgPyBQcmlt
YXJ5Q29udGV4dCA6IFByaW9yQ29udGV4dDsKLX0KLQotc3RhdGljIHZvaWQgdGV4dFVURjE2TW92
ZUluUHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0
X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCh0ZXh0LT5jaHVu
a0NvbnRlbnRzID09IHRleHQtPnApOwotICAgIEFTU0VSVF9VTlVTRUQoZm9yd2FyZCwgZm9yd2Fy
ZCA/IG5hdGl2ZUluZGV4ID49IHRleHQtPmIgOiBuYXRpdmVJbmRleCA+IHRleHQtPmIpOwotICAg
IEFTU0VSVF9VTlVTRUQoZm9yd2FyZCwgZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVu
Z3RoIDogbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3RoKTsKLSAgICB0ZXh0LT5jaHVua05hdGl2
ZVN0YXJ0ID0gdGV4dC0+YjsKLSAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gbmF0aXZlTGVu
Z3RoOwotICAgIGludDY0X3QgbGVuZ3RoID0gdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAtIHRleHQt
PmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgLy8gRW5zdXJlIGNodW5rIGxlbmd0aCBpcyB3ZWxsIGRl
ZmluZWQgaWYgY29tcHV0ZWQgbGVuZ3RoIGV4Y2VlZHMgaW50MzJfdCByYW5nZS4KLSAgICBBU1NF
UlQobGVuZ3RoIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOwotICAgIHRl
eHQtPmNodW5rTGVuZ3RoID0gbGVuZ3RoIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6
bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpIDogMDsKLSAgICB0ZXh0LT5uYXRp
dmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7Ci0gICAgaW50NjRfdCBvZmZzZXQg
PSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgLy8gRW5zdXJlIGNo
dW5rIG9mZnNldCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50
MzJfdCByYW5nZSBvciBjaHVuayBsZW5ndGguCi0gICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICB0ZXh0LT5jaHVua09mZnNldCA9IHN0
ZDo6bWluKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQtPmNodW5rTGVuZ3RoKTsKLX0KLQot
c3RhdGljIHZvaWQgdGV4dFVURjE2U3dpdGNoVG9QcmltYXJ5Q29udGV4dChVVGV4dCogdGV4dCwg
aW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQp
Ci17Ci0gICAgQVNTRVJUKCF0ZXh0LT5jaHVua0NvbnRlbnRzIHx8IHRleHQtPmNodW5rQ29udGVu
dHMgPT0gdGV4dC0+cSk7Ci0gICAgdGV4dC0+Y2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0PGNv
bnN0IFVDaGFyKj4odGV4dC0+cCk7Ci0gICAgdGV4dFVURjE2TW92ZUluUHJpbWFyeUNvbnRleHQo
dGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci19Ci0KLXN0YXRpYyB2
b2lkIHRleHRVVEYxNk1vdmVJblByaW9yQ29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRp
dmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCi17Ci0gICAgQVNT
RVJUKHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cSk7Ci0gICAgQVNTRVJUKGZvcndhcmQg
PyBuYXRpdmVJbmRleCA8IHRleHQtPmIgOiBuYXRpdmVJbmRleCA8PSB0ZXh0LT5iKTsKLSAgICBB
U1NFUlRfVU5VU0VEKG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgbmF0aXZl
TGVuZ3RoIDogbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3RoKTsKLSAgICBBU1NFUlRfVU5VU0VE
KGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUlu
ZGV4IDw9IG5hdGl2ZUxlbmd0aCk7Ci0gICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IDA7Ci0g
ICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IHRleHQtPmI7Ci0gICAgdGV4dC0+Y2h1bmtMZW5n
dGggPSB0ZXh0LT5iOwotICAgIHRleHQtPm5hdGl2ZUluZGV4aW5nTGltaXQgPSB0ZXh0LT5jaHVu
a0xlbmd0aDsKLSAgICBpbnQ2NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+Y2h1bmtO
YXRpdmVTdGFydDsKLSAgICAvLyBFbnN1cmUgY2h1bmsgb2Zmc2V0IGlzIHdlbGwgZGVmaW5lZCBp
ZiBjb21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQzMl90IHJhbmdlIG9yIGNodW5rIGxlbmd0aC4K
LSAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkp
OwotICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gc3RkOjptaW4ob2Zmc2V0IDwgc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDog
MCwgdGV4dC0+Y2h1bmtMZW5ndGgpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0VVRGMTZTd2l0Y2hU
b1ByaW9yQ29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBu
YXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCi17Ci0gICAgQVNTRVJUKCF0ZXh0LT5jaHVua0Nv
bnRlbnRzIHx8IHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cCk7Ci0gICAgdGV4dC0+Y2h1
bmtDb250ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4odGV4dC0+cSk7Ci0gICAgdGV4
dFVURjE2TW92ZUluUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgs
IGZvcndhcmQpOwotfQotCi1zdGF0aWMgVUJvb2wgdGV4dFVURjE2QWNjZXNzKFVUZXh0KiB0ZXh0
LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBVQm9vbCBmb3J3YXJkKQotewotICAgIGlmICghdGV4dC0+
Y29udGV4dCkKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgIGludDY0X3QgbmF0aXZlTGVuZ3Ro
ID0gdGV4dE5hdGl2ZUxlbmd0aCh0ZXh0KTsKLSAgICBVQm9vbCBpc0FjY2Vzc2libGU7Ci0gICAg
aWYgKHRleHRJbkNodW5rT3JPdXRPZlJhbmdlKHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5n
dGgsIGZvcndhcmQsIGlzQWNjZXNzaWJsZSkpCi0gICAgICAgIHJldHVybiBpc0FjY2Vzc2libGU7
Ci0gICAgbmF0aXZlSW5kZXggPSB0ZXh0UGluSW5kZXgobmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0
aCk7Ci0gICAgVGV4dENvbnRleHQgY3VycmVudENvbnRleHQgPSB0ZXh0VVRGMTZHZXRDdXJyZW50
Q29udGV4dCh0ZXh0KTsKLSAgICBUZXh0Q29udGV4dCBuZXdDb250ZXh0ID0gdGV4dEdldENvbnRl
eHQodGV4dCwgbmF0aXZlSW5kZXgsIGZvcndhcmQpOwotICAgIEFTU0VSVChuZXdDb250ZXh0ICE9
IE5vQ29udGV4dCk7Ci0gICAgaWYgKG5ld0NvbnRleHQgPT0gY3VycmVudENvbnRleHQpIHsKLSAg
ICAgICAgaWYgKGN1cnJlbnRDb250ZXh0ID09IFByaW1hcnlDb250ZXh0KQotICAgICAgICAgICAg
dGV4dFVURjE2TW92ZUluUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxl
bmd0aCwgZm9yd2FyZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRleHRVVEYxNk1vdmVJ
blByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsK
LSAgICB9IGVsc2UgaWYgKG5ld0NvbnRleHQgPT0gUHJpbWFyeUNvbnRleHQpCi0gICAgICAgIHRl
eHRVVEYxNlN3aXRjaFRvUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxl
bmd0aCwgZm9yd2FyZCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChuZXdDb250ZXh0ID09
IFByaW9yQ29udGV4dCk7Ci0gICAgICAgIHRleHRVVEYxNlN3aXRjaFRvUHJpb3JDb250ZXh0KHRl
eHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAgIH0KLSAgICByZXR1
cm4gVFJVRTsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHRleHRVVEYxNkZ1
bmNzID0gewotICAgIHNpemVvZihVVGV4dEZ1bmNzKSwKLSAgICAwLCAwLCAwLAotICAgIHRleHRD
bG9uZSwKLSAgICB0ZXh0TmF0aXZlTGVuZ3RoLAotICAgIHRleHRVVEYxNkFjY2VzcywKLSAgICB0
ZXh0RXh0cmFjdCwKLSAgICAwLCAwLCAwLCAwLAotICAgIHRleHRDbG9zZSwKLSAgICAwLCAwLCAw
LAotfTsKLQotc3RhdGljIFVUZXh0KiB0ZXh0T3BlblVURjE2KFVUZXh0KiB0ZXh0LCBjb25zdCBV
Q2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQs
IGludCBwcmlvckNvbnRleHRMZW5ndGgsIFVFcnJvckNvZGUqIHN0YXR1cykKLXsKLSAgICBpZiAo
VV9GQUlMVVJFKCpzdGF0dXMpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIXN0cmluZyB8
fCBsZW5ndGggPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQz
Ml90Pjo6bWF4KCkpKSB7Ci0gICAgICAgICpzdGF0dXMgPSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJS
T1I7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICB0ZXh0ID0gdXRleHRfc2V0dXAodGV4
dCwgMCwgc3RhdHVzKTsKLSAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKSB7Ci0gICAgICAgIEFT
U0VSVCghdGV4dCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICB0ZXh0SW5pdCh0ZXh0
LCAmdGV4dFVURjE2RnVuY3MsIHN0cmluZywgbGVuZ3RoLCBwcmlvckNvbnRleHQsIHByaW9yQ29u
dGV4dExlbmd0aCk7Ci0gICAgcmV0dXJuIHRleHQ7Ci19Ci0KIFRleHRCcmVha0l0ZXJhdG9yKiB3
b3JkQnJlYWtJdGVyYXRvcihjb25zdCBVQ2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoKQogewogICAg
IHN0YXRpYyBib29sIGNyZWF0ZWRXb3JkQnJlYWtJdGVyYXRvciA9IGZhbHNlOwogICAgIHN0YXRp
YyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGljV29yZEJyZWFrSXRlcmF0b3I7Ci0gICAgcmV0dXJu
IHNldFVwSXRlcmF0b3IoY3JlYXRlZFdvcmRCcmVha0l0ZXJhdG9yLAotICAgICAgICBzdGF0aWNX
b3JkQnJlYWtJdGVyYXRvciwgVUJSS19XT1JELCBzdHJpbmcsIGxlbmd0aCk7CisgICAgcmV0dXJu
IHNldFVwSXRlcmF0b3IoY3JlYXRlZFdvcmRCcmVha0l0ZXJhdG9yLCBzdGF0aWNXb3JkQnJlYWtJ
dGVyYXRvciwgVUJSS19XT1JELCBzdHJpbmcsIGxlbmd0aCk7CiB9CiAKIHN0YXRpYyBVVGV4dCBl
bXB0eVRleHQgPSBVVEVYVF9JTklUSUFMSVpFUjsKQEAgLTQzNiw3ICs3NSw3IEBAIFRleHRCcmVh
a0l0ZXJhdG9yKiBhY3F1aXJlTGluZUJyZWFrSXRlcmEKICAgICB0ZXh0TG9jYWwudGV4dC5wRXh0
cmEgPSB0ZXh0TG9jYWwuYnVmZmVyOwogCiAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9a
RVJPX0VSUk9SOwotICAgIFVUZXh0KiB0ZXh0ID0gdGV4dE9wZW5MYXRpbjEoJnRleHRMb2NhbCwg
c3RyaW5nLCBsZW5ndGgsIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoLCAmb3BlblN0
YXR1cyk7CisgICAgVVRleHQqIHRleHQgPSB1VGV4dE9wZW5MYXRpbjEoJnRleHRMb2NhbCwgc3Ry
aW5nLCBsZW5ndGgsIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoLCAmb3BlblN0YXR1
cyk7CiAgICAgaWYgKFVfRkFJTFVSRShvcGVuU3RhdHVzKSkgewogICAgICAgICBMT0dfRVJST1Io
InRleHRPcGVuVVRGMTYgZmFpbGVkIHdpdGggc3RhdHVzICVkIiwgb3BlblN0YXR1cyk7CiAgICAg
ICAgIHJldHVybiAwOwpAQCAtNDYzLDcgKzEwMiw3IEBAIFRleHRCcmVha0l0ZXJhdG9yKiBhY3F1
aXJlTGluZUJyZWFrSXRlcmEKICAgICBVVGV4dCB0ZXh0TG9jYWwgPSBVVEVYVF9JTklUSUFMSVpF
UjsKIAogICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBVVGV4
dCogdGV4dCA9IHRleHRPcGVuVVRGMTYoJnRleHRMb2NhbCwgc3RyaW5nLCBsZW5ndGgsIHByaW9y
Q29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoLCAmb3BlblN0YXR1cyk7CisgICAgVVRleHQqIHRl
eHQgPSB1VGV4dE9wZW5VVEYxNigmdGV4dExvY2FsLCBzdHJpbmcsIGxlbmd0aCwgcHJpb3JDb250
ZXh0LCBwcmlvckNvbnRleHRMZW5ndGgsICZvcGVuU3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJF
KG9wZW5TdGF0dXMpKSB7CiAgICAgICAgIExPR19FUlJPUigidGV4dE9wZW5VVEYxNiBmYWlsZWQg
d2l0aCBzdGF0dXMgJWQiLCBvcGVuU3RhdHVzKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC01MjEs
OCArMTYwLDcgQEAgVGV4dEJyZWFrSXRlcmF0b3IqIHNlbnRlbmNlQnJlYWtJdGVyYXRvcgogewog
ICAgIHN0YXRpYyBib29sIGNyZWF0ZWRTZW50ZW5jZUJyZWFrSXRlcmF0b3IgPSBmYWxzZTsKICAg
ICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1NlbnRlbmNlQnJlYWtJdGVyYXRvcjsK
LSAgICByZXR1cm4gc2V0VXBJdGVyYXRvcihjcmVhdGVkU2VudGVuY2VCcmVha0l0ZXJhdG9yLAot
ICAgICAgICBzdGF0aWNTZW50ZW5jZUJyZWFrSXRlcmF0b3IsIFVCUktfU0VOVEVOQ0UsIHN0cmlu
ZywgbGVuZ3RoKTsKKyAgICByZXR1cm4gc2V0VXBJdGVyYXRvcihjcmVhdGVkU2VudGVuY2VCcmVh
a0l0ZXJhdG9yLCBzdGF0aWNTZW50ZW5jZUJyZWFrSXRlcmF0b3IsIFVCUktfU0VOVEVOQ0UsIHN0
cmluZywgbGVuZ3RoKTsKIH0KIAogaW50IHRleHRCcmVha0ZpcnN0KFRleHRCcmVha0l0ZXJhdG9y
KiBpdGVyYXRvcikKQEAgLTU3Miw4ICsyMTAsNyBAQCBib29sIGlzV29yZFRleHRCcmVhayhUZXh0
QnJlYWtJdGVyYXRvciogCiB9CiAKICNpZiAhUExBVEZPUk0oSU9TKQotc3RhdGljIFRleHRCcmVh
a0l0ZXJhdG9yKiBzZXRVcEl0ZXJhdG9yV2l0aFJ1bGVzKGJvb2wmIGNyZWF0ZWRJdGVyYXRvciwg
VGV4dEJyZWFrSXRlcmF0b3IqJiBpdGVyYXRvciwKLSAgICBjb25zdCBjaGFyKiBicmVha1J1bGVz
LCBjb25zdCBVQ2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoKQorc3RhdGljIFRleHRCcmVha0l0ZXJh
dG9yKiBzZXRVcEl0ZXJhdG9yV2l0aFJ1bGVzKGJvb2wmIGNyZWF0ZWRJdGVyYXRvciwgVGV4dEJy
ZWFrSXRlcmF0b3IqJiBpdGVyYXRvciwgY29uc3QgY2hhciogYnJlYWtSdWxlcywgY29uc3QgVUNo
YXIqIHN0cmluZywgaW50IGxlbmd0aCkKIHsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0
dXJuIDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3Zp
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVVRleHRQcm92
aWRlci5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Ly8gUmVsb2NhdGUgcG9pbnRlciBmcm9tIHNvdXJjZSBpbnRvIGRlc3RpbmF0aW9uIGFzIHJlcXVp
cmVkLgorc3RhdGljIGlubGluZSB2b2lkIGZpeFBvaW50ZXIoY29uc3QgVVRleHQqIHNvdXJjZSwg
VVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCB2b2lkKiYgcG9pbnRlcikKK3sKKyAgICBpZiAocG9p
bnRlciA+PSBzb3VyY2UtPnBFeHRyYSAmJiBwb2ludGVyIDwgc3RhdGljX2Nhc3Q8Y2hhcio+KHNv
dXJjZS0+cEV4dHJhKSArIHNvdXJjZS0+ZXh0cmFTaXplKSB7CisgICAgICAgIC8vIFBvaW50ZXIg
cmVmZXJlbmNlcyBzb3VyY2UgZXh0cmEgYnVmZmVyLgorICAgICAgICBwb2ludGVyID0gc3RhdGlj
X2Nhc3Q8Y2hhcio+KGRlc3RpbmF0aW9uLT5wRXh0cmEpICsgKHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihwb2ludGVyKSAtIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihzb3VyY2UtPnBFeHRyYSkp
OworICAgIH0gZWxzZSBpZiAocG9pbnRlciA+PSBzb3VyY2UgJiYgcG9pbnRlciA8IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNvdXJjZSkgKyBzb3VyY2UtPnNpemVPZlN0cnVjdCkgewor
ICAgICAgICAvLyBQb2ludGVyIHJlZmVyZW5jZXMgc291cmNlIHRleHQgc3RydWN0dXJlLCBidXQg
bm90IHNvdXJjZSBleHRyYSBidWZmZXIuCisgICAgICAgIHBvaW50ZXIgPSByZWludGVycHJldF9j
YXN0PGNoYXIqPihkZXN0aW5hdGlvbikgKyAoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHBvaW50
ZXIpIC0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlKSk7CisgICAgfQorfQor
CitVVGV4dCogdVRleHRDbG9uZUltcGwoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCog
c291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpCit7CisgICAgQVNTRVJUX1VO
VVNFRChkZWVwLCAhZGVlcCk7CisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgaW50MzJfdCBleHRyYVNpemUgPSBzb3VyY2UtPmV4dHJhU2l6
ZTsKKyAgICBkZXN0aW5hdGlvbiA9IHV0ZXh0X3NldHVwKGRlc3RpbmF0aW9uLCBleHRyYVNpemUs
IHN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIGRl
c3RpbmF0aW9uOworICAgIHZvaWQqIGV4dHJhTmV3ID0gZGVzdGluYXRpb24tPnBFeHRyYTsKKyAg
ICBpbnQzMl90IGZsYWdzID0gZGVzdGluYXRpb24tPmZsYWdzOworICAgIGludCBzaXplVG9Db3B5
ID0gc3RkOjptaW4oc291cmNlLT5zaXplT2ZTdHJ1Y3QsIGRlc3RpbmF0aW9uLT5zaXplT2ZTdHJ1
Y3QpOworICAgIG1lbWNweShkZXN0aW5hdGlvbiwgc291cmNlLCBzaXplVG9Db3B5KTsKKyAgICBk
ZXN0aW5hdGlvbi0+cEV4dHJhID0gZXh0cmFOZXc7CisgICAgZGVzdGluYXRpb24tPmZsYWdzID0g
ZmxhZ3M7CisgICAgbWVtY3B5KGRlc3RpbmF0aW9uLT5wRXh0cmEsIHNvdXJjZS0+cEV4dHJhLCBl
eHRyYVNpemUpOworICAgIGZpeFBvaW50ZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRp
b24tPmNvbnRleHQpOworICAgIGZpeFBvaW50ZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGlu
YXRpb24tPnApOworICAgIGZpeFBvaW50ZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRp
b24tPnEpOworICAgIEFTU0VSVCghZGVzdGluYXRpb24tPnIpOworICAgIGNvbnN0IHZvaWQqIGNo
dW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oZGVzdGluYXRpb24tPmNodW5r
Q29udGVudHMpOworICAgIGZpeFBvaW50ZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY2h1bmtDb250
ZW50cyk7CisgICAgZGVzdGluYXRpb24tPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25z
dCBVQ2hhcio+KGNodW5rQ29udGVudHMpOworICAgIHJldHVybiBkZXN0aW5hdGlvbjsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9pY3UvVVRleHRQcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVVRleHRQcm92aWRlcl9oCisjZGVm
aW5lIFVUZXh0UHJvdmlkZXJfaAorCisjaW5jbHVkZSA8dW5pY29kZS91dGV4dC5oPgorI2luY2x1
ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVt
IGNsYXNzIFVUZXh0UHJvdmlkZXJDb250ZXh0IHsKKyAgICBOb0NvbnRleHQsCisgICAgUHJpb3JD
b250ZXh0LAorICAgIFByaW1hcnlDb250ZXh0Cit9OworCitpbmxpbmUgVVRleHRQcm92aWRlckNv
bnRleHQgdVRleHRQcm92aWRlckNvbnRleHQoY29uc3QgVVRleHQqIHRleHQsIGludDY0X3QgbmF0
aXZlSW5kZXgsIFVCb29sIGZvcndhcmQpCit7CisgICAgaWYgKCF0ZXh0LT5iIHx8IG5hdGl2ZUlu
ZGV4ID4gdGV4dC0+YikKKyAgICAgICAgcmV0dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlt
YXJ5Q29udGV4dDsKKyAgICBpZiAobmF0aXZlSW5kZXggPT0gdGV4dC0+YikKKyAgICAgICAgcmV0
dXJuIGZvcndhcmQgPyBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQgOiBVVGV4
dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0OworICAgIHJldHVybiBVVGV4dFByb3ZpZGVy
Q29udGV4dDo6UHJpb3JDb250ZXh0OworfQorCitpbmxpbmUgdm9pZCB1VGV4dEluaXRpYWxpemUo
VVRleHQqIHRleHQsIGNvbnN0IFVUZXh0RnVuY3MqIGZ1bmNzLCBjb25zdCB2b2lkKiBzdHJpbmcs
IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29u
dGV4dExlbmd0aCkKK3sKKyAgICB0ZXh0LT5wRnVuY3MgPSBmdW5jczsKKyAgICB0ZXh0LT5wcm92
aWRlclByb3BlcnRpZXMgPSAxIDw8IFVURVhUX1BST1ZJREVSX1NUQUJMRV9DSFVOS1M7CisgICAg
dGV4dC0+Y29udGV4dCA9IHN0cmluZzsKKyAgICB0ZXh0LT5wID0gc3RyaW5nOworICAgIHRleHQt
PmEgPSBsZW5ndGg7CisgICAgdGV4dC0+cSA9IHByaW9yQ29udGV4dDsKKyAgICB0ZXh0LT5iID0g
cHJpb3JDb250ZXh0TGVuZ3RoOworfQorCisvLyBTaGFyZWQgaW1wbGVtZW50YXRpb24gZm9yIHRo
ZSBVVGV4dENsb25lIGZ1bmN0aW9uIG9uIFVUZXh0RnVuY3MuCisKK1VUZXh0KiB1VGV4dENsb25l
SW1wbChVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVCb29sIGRlZXAs
IFVFcnJvckNvZGUqIHN0YXR1cyk7CisKKworLy8gSGVscGVycyBmb3IgdGhlIFVUZXh0QWNjZXNz
IGZ1bmN0aW9uIG9uIFVUZXh0RnVuY3MuCisKK2lubGluZSBpbnQ2NF90IHVUZXh0QWNjZXNzUGlu
SW5kZXgoaW50NjRfdCYgaW5kZXgsIGludDY0X3QgbGltaXQpCit7CisgICAgaWYgKGluZGV4IDwg
MCkKKyAgICAgICAgaW5kZXggPSAwOworICAgIGVsc2UgaWYgKGluZGV4ID4gbGltaXQpCisgICAg
ICAgIGluZGV4ID0gbGltaXQ7CisgICAgcmV0dXJuIGluZGV4OworfQorCitpbmxpbmUgYm9vbCB1
VGV4dEFjY2Vzc0luQ2h1bmtPck91dE9mUmFuZ2UoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZl
SW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkLCBVQm9vbCYgaXNBY2Nl
c3NpYmxlKQoreworICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAgIGlmIChuYXRpdmVJbmRleCA+
PSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ICYmIG5hdGl2ZUluZGV4IDwgdGV4dC0+Y2h1bmtOYXRp
dmVMaW1pdCkgeworICAgICAgICAgICAgaW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRl
eHQtPmNodW5rTmF0aXZlU3RhcnQ7CisgICAgICAgICAgICAvLyBFbnN1cmUgY2h1bmsgb2Zmc2V0
IGlzIHdlbGwgZm9ybWVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2Uu
CisgICAgICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWF4KCkpOworICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBvZmZzZXQgPCBzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9m
ZnNldCkgOiAwOworICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gVFJVRTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChuYXRpdmVJbmRleCA+PSBuYXRp
dmVMZW5ndGggJiYgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9PSBuYXRpdmVMZW5ndGgpIHsKKyAg
ICAgICAgICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7CisgICAgICAg
ICAgICBpc0FjY2Vzc2libGUgPSBGQUxTRTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG5hdGl2ZUluZGV4ID4gdGV4dC0+Y2h1
bmtOYXRpdmVTdGFydCAmJiBuYXRpdmVJbmRleCA8PSB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0KSB7
CisgICAgICAgICAgICBpbnQ2NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+Y2h1bmtO
YXRpdmVTdGFydDsKKyAgICAgICAgICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBm
b3JtZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZS4KKyAgICAgICAg
ICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7
CisgICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNldCA9IG9mZnNldCA8IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDA7
CisgICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBUUlVFOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5hdGl2ZUluZGV4IDw9IDAgJiYgIXRleHQtPmNo
dW5rTmF0aXZlU3RhcnQpIHsKKyAgICAgICAgICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gMDsKKyAg
ICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IEZBTFNFOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVVGV4dFByb3ZpZGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRl
eHRQcm92aWRlckxhdGluMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVVRleHRQcm92aWRlckxh
dGluMS5oIgorCisjaW5jbHVkZSAiVVRleHRQcm92aWRlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5saW5lIFVU
ZXh0UHJvdmlkZXJDb250ZXh0IHRleHRMYXRpbjFHZXRDdXJyZW50Q29udGV4dChjb25zdCBVVGV4
dCogdGV4dCkKK3sKKyAgICBpZiAoIXRleHQtPmNodW5rQ29udGVudHMpCisgICAgICAgIHJldHVy
biBVVGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250ZXh0OworICAgIHJldHVybiB0ZXh0LT5jaHVu
a0NvbnRlbnRzID09IHRleHQtPnBFeHRyYSA/IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5
Q29udGV4dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Cit9CisKK3N0YXRp
YyB2b2lkIHRleHRMYXRpbjFNb3ZlSW5QcmltYXJ5Q29udGV4dChVVGV4dCogdGV4dCwgaW50NjRf
dCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCit7Cisg
ICAgQVNTRVJUKHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cEV4dHJhKTsKKyAgICBpZiAo
Zm9yd2FyZCkgeworICAgICAgICBBU1NFUlQobmF0aXZlSW5kZXggPj0gdGV4dC0+YiAmJiBuYXRp
dmVJbmRleCA8IG5hdGl2ZUxlbmd0aCk7CisgICAgICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQg
PSBuYXRpdmVJbmRleDsKKyAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUlu
ZGV4ICsgdGV4dC0+ZXh0cmFTaXplIC8gc2l6ZW9mKFVDaGFyKTsKKyAgICAgICAgaWYgKHRleHQt
PmNodW5rTmF0aXZlTGltaXQgPiBuYXRpdmVMZW5ndGgpCisgICAgICAgICAgICB0ZXh0LT5jaHVu
a05hdGl2ZUxpbWl0ID0gbmF0aXZlTGVuZ3RoOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VS
VChuYXRpdmVJbmRleCA+IHRleHQtPmIgJiYgbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3RoKTsK
KyAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUluZGV4OworICAgICAgICB0
ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5leHRyYVNpemUgLyBz
aXplb2YoVUNoYXIpOworICAgICAgICBpZiAodGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA8IHRleHQt
PmIpCisgICAgICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gdGV4dC0+YjsKKyAgICB9
CisgICAgaW50NjRfdCBsZW5ndGggPSB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0IC0gdGV4dC0+Y2h1
bmtOYXRpdmVTdGFydDsKKyAgICAvLyBFbnN1cmUgY2h1bmsgbGVuZ3RoIGlzIHdlbGwgZGVmaW5l
ZCBpZiBjb21wdXRlZCBsZW5ndGggZXhjZWVkcyBpbnQzMl90IHJhbmdlLgorICAgIEFTU0VSVChs
ZW5ndGggPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAgdGV4dC0+
Y2h1bmtMZW5ndGggPSBsZW5ndGggPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgo
KSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KGxlbmd0aCkgOiAwOworICAgIHRleHQtPm5hdGl2ZUlu
ZGV4aW5nTGltaXQgPSB0ZXh0LT5jaHVua0xlbmd0aDsKKyAgICB0ZXh0LT5jaHVua09mZnNldCA9
IGZvcndhcmQgPyAwIDogdGV4dC0+Y2h1bmtMZW5ndGg7CisgICAgU3RyaW5nSW1wbDo6Y29weUNo
YXJzKGNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0LT5jaHVua0NvbnRlbnRzKSwgc3RhdGljX2Nhc3Q8
Y29uc3QgTENoYXIqPih0ZXh0LT5wKSArICh0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0IC0gdGV4dC0+
YiksIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0ZXh0LT5jaHVua0xlbmd0aCkpOworfQorCitzdGF0
aWMgdm9pZCB0ZXh0TGF0aW4xU3dpdGNoVG9QcmltYXJ5Q29udGV4dChVVGV4dCogdGV4dCwgaW50
NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCit7
CisgICAgQVNTRVJUKCF0ZXh0LT5jaHVua0NvbnRlbnRzIHx8IHRleHQtPmNodW5rQ29udGVudHMg
PT0gdGV4dC0+cSk7CisgICAgdGV4dC0+Y2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0
IFVDaGFyKj4odGV4dC0+cEV4dHJhKTsKKyAgICB0ZXh0TGF0aW4xTW92ZUluUHJpbWFyeUNvbnRl
eHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Cit9CisKK3N0YXRp
YyB2b2lkIHRleHRMYXRpbjFNb3ZlSW5QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3Qg
bmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQoreworICAg
IEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOworICAgIEFTU0VSVChmb3J3
YXJkID8gbmF0aXZlSW5kZXggPCB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPD0gdGV4dC0+Yik7Cisg
ICAgQVNTRVJUX1VOVVNFRChuYXRpdmVMZW5ndGgsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5h
dGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7CisgICAgQVNTRVJUX1VO
VVNFRChmb3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRp
dmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOworICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSAw
OworICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSB0ZXh0LT5iOworICAgIHRleHQtPmNodW5r
TGVuZ3RoID0gdGV4dC0+YjsKKyAgICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+
Y2h1bmtMZW5ndGg7CisgICAgaW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNo
dW5rTmF0aXZlU3RhcnQ7CisgICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGRlZmlu
ZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZSBvciBjaHVuayBsZW5n
dGguCisgICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1h
eCgpKTsKKyAgICB0ZXh0LT5jaHVua09mZnNldCA9IHN0ZDo6bWluKG9mZnNldCA8IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0
KSA6IDAsIHRleHQtPmNodW5rTGVuZ3RoKTsKK30KKworc3RhdGljIHZvaWQgdGV4dExhdGluMVN3
aXRjaFRvUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2
NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQoIXRleHQtPmNo
dW5rQ29udGVudHMgfHwgdGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wRXh0cmEpOworICAg
IHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnEp
OworICAgIHRleHRMYXRpbjFNb3ZlSW5QcmlvckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5h
dGl2ZUxlbmd0aCwgZm9yd2FyZCk7Cit9CisKKy8vIC0tIEJlZ2luIExhdGluLTEgcHJvdmlkZXIg
ZnVuY3Rpb25zIC0tCisKK3N0YXRpYyBVVGV4dCogdVRleHRMYXRpbjFDbG9uZShVVGV4dCosIGNv
bnN0IFVUZXh0KiwgVUJvb2wsIFVFcnJvckNvZGUqKTsKK3N0YXRpYyBpbnQ2NF90IHVUZXh0TGF0
aW4xTmF0aXZlTGVuZ3RoKFVUZXh0Kik7IAorc3RhdGljIFVCb29sIHVUZXh0TGF0aW4xQWNjZXNz
KFVUZXh0KiwgaW50NjRfdCwgVUJvb2wpOyAKK3N0YXRpYyBpbnQzMl90IHVUZXh0TGF0aW4xRXh0
cmFjdChVVGV4dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50MzJfdCwgVUVycm9yQ29k
ZSopOyAKK3N0YXRpYyB2b2lkIHVUZXh0TGF0aW4xQ2xvc2UoVVRleHQqKTsKKworc3RhdGljIFVU
ZXh0KiB1VGV4dExhdGluMUNsb25lKFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3QgVVRleHQqIHNv
dXJjZSwgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKQoreworICAgIHJldHVybiB1VGV4
dENsb25lSW1wbChkZXN0aW5hdGlvbiwgc291cmNlLCBkZWVwLCBzdGF0dXMpOworfQorCitzdGF0
aWMgaW50NjRfdCB1VGV4dExhdGluMU5hdGl2ZUxlbmd0aChVVGV4dCogdGV4dCkKK3sKKyAgICBy
ZXR1cm4gdGV4dC0+YSArIHRleHQtPmI7Cit9CisKK3N0YXRpYyBVQm9vbCB1VGV4dExhdGluMUFj
Y2VzcyhVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgVUJvb2wgZm9yd2FyZCkKK3sK
KyAgICBpZiAoIXRleHQtPmNvbnRleHQpCisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICBpbnQ2
NF90IG5hdGl2ZUxlbmd0aCA9IHVUZXh0TGF0aW4xTmF0aXZlTGVuZ3RoKHRleHQpOworICAgIFVC
b29sIGlzQWNjZXNzaWJsZTsKKyAgICBpZiAodVRleHRBY2Nlc3NJbkNodW5rT3JPdXRPZlJhbmdl
KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQsIGlzQWNjZXNzaWJsZSkp
CisgICAgICAgIHJldHVybiBpc0FjY2Vzc2libGU7CisgICAgbmF0aXZlSW5kZXggPSB1VGV4dEFj
Y2Vzc1BpbkluZGV4KG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgpOworICAgIFVUZXh0UHJvdmlk
ZXJDb250ZXh0IGN1cnJlbnRDb250ZXh0ID0gdGV4dExhdGluMUdldEN1cnJlbnRDb250ZXh0KHRl
eHQpOworICAgIFVUZXh0UHJvdmlkZXJDb250ZXh0IG5ld0NvbnRleHQgPSB1VGV4dFByb3ZpZGVy
Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgZm9yd2FyZCk7CisgICAgQVNTRVJUKG5ld0NvbnRl
eHQgIT0gVVRleHRQcm92aWRlckNvbnRleHQ6Ok5vQ29udGV4dCk7CisgICAgaWYgKG5ld0NvbnRl
eHQgPT0gY3VycmVudENvbnRleHQpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRDb250ZXh0ID09IFVU
ZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCkKKyAgICAgICAgICAgIHRleHRMYXRp
bjFNb3ZlSW5QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBm
b3J3YXJkKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGV4dExhdGluMU1vdmVJblByaW9y
Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKKyAgICB9
IGVsc2UgaWYgKG5ld0NvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250
ZXh0KQorICAgICAgICB0ZXh0TGF0aW4xU3dpdGNoVG9QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRp
dmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNT
RVJUKG5ld0NvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW9yQ29udGV4dCk7Cisg
ICAgICAgIHRleHRMYXRpbjFTd2l0Y2hUb1ByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwg
bmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKKyAgICB9CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0
YXRpYyBpbnQzMl90IHVUZXh0TGF0aW4xRXh0cmFjdChVVGV4dCosIGludDY0X3QsIGludDY0X3Qs
IFVDaGFyKiwgaW50MzJfdCwgVUVycm9yQ29kZSogZXJyb3JDb2RlKQoreworICAgIC8vIEluIHRo
ZSBwcmVzZW50IGNvbnRleHQsIHRoaXMgdGV4dCBwcm92aWRlciBpcyB1c2VkIG9ubHkgd2l0aCBJ
Q1UgZnVuY3Rpb25zCisgICAgLy8gdGhhdCBkbyBub3QgcGVyZm9ybSBhbiBleHRyYWN0IG9wZXJh
dGlvbi4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAqZXJyb3JDb2RlID0gVV9VTlNV
UFBPUlRFRF9FUlJPUjsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdVRleHRMYXRp
bjFDbG9zZShVVGV4dCogdGV4dCkKK3sKKyAgICB0ZXh0LT5jb250ZXh0ID0gMDsKK30KKworLy8g
LS0gRW5kIExhdGluLTEgcHJvdmlkZXIgZnVuY3Rpb25zIC0tCisKK3N0YXRpYyBjb25zdCBzdHJ1
Y3QgVVRleHRGdW5jcyB0ZXh0TGF0aW4xRnVuY3MgPSB7CisgICAgc2l6ZW9mKFVUZXh0RnVuY3Mp
LAorICAgIDAsIDAsIDAsCisgICAgdVRleHRMYXRpbjFDbG9uZSwKKyAgICB1VGV4dExhdGluMU5h
dGl2ZUxlbmd0aCwKKyAgICB1VGV4dExhdGluMUFjY2VzcywKKyAgICB1VGV4dExhdGluMUV4dHJh
Y3QsCisgICAgMCwgMCwgMCwgMCwKKyAgICB1VGV4dExhdGluMUNsb3NlLAorICAgIDAsIDAsIDAs
Cit9OworCitVVGV4dCogdVRleHRPcGVuTGF0aW4xKFVUZXh0V2l0aEJ1ZmZlciogdXRXaXRoQnVm
ZmVyLCBjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBw
cmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgsIFVFcnJvckNvZGUqIHN0YXR1cykK
K3sKKyAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBp
ZiAoIXN0cmluZyB8fCBsZW5ndGggPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSB7CisgICAgICAgICpzdGF0dXMgPSBVX0lMTEVHQUxf
QVJHVU1FTlRfRVJST1I7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBVVGV4dCogdGV4
dCA9IHV0ZXh0X3NldHVwKCZ1dFdpdGhCdWZmZXItPnRleHQsIHNpemVvZih1dFdpdGhCdWZmZXIt
PmJ1ZmZlciksIHN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkgeworICAgICAg
ICBBU1NFUlQoIXRleHQpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgdVRleHRJbml0
aWFsaXplKHRleHQsICZ0ZXh0TGF0aW4xRnVuY3MsIHN0cmluZywgbGVuZ3RoLCBwcmlvckNvbnRl
eHQsIHByaW9yQ29udGV4dExlbmd0aCk7CisgICAgcmV0dXJuIHRleHQ7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VU
ZXh0UHJvdmlkZXJMYXRpbjEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVVRleHRQcm92aWRl
ckxhdGluMV9oCisjZGVmaW5lIFVUZXh0UHJvdmlkZXJMYXRpbjFfaAorCisjaW5jbHVkZSA8dW5p
Y29kZS91dGV4dC5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjb25zdCBpbnQgVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHkg
PSAxNjsKKworc3RydWN0IFVUZXh0V2l0aEJ1ZmZlciB7CisgICAgVVRleHQgdGV4dDsKKyAgICBV
Q2hhciBidWZmZXJbVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHldOworfTsKKworVVRleHQq
IHVUZXh0T3BlbkxhdGluMShVVGV4dFdpdGhCdWZmZXIqIHV0V2l0aEJ1ZmZlciwgY29uc3QgTENo
YXIqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBp
bnQgcHJpb3JDb250ZXh0TGVuZ3RoLCBVRXJyb3JDb2RlKiBzdGF0dXMpOworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVVGV4dFByb3ZpZGVyTGF0aW4xX2gKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRl
clVURjE2LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
aWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVVRleHRQcm92
aWRlclVURjE2LmgiCisKKyNpbmNsdWRlICJVVGV4dFByb3ZpZGVyLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RhdGljIGlubGluZSBVVGV4dFByb3ZpZGVyQ29udGV4dCB0ZXh0VVRGMTZH
ZXRDdXJyZW50Q29udGV4dChjb25zdCBVVGV4dCogdGV4dCkKK3sKKyAgICBpZiAoIXRleHQtPmNo
dW5rQ29udGVudHMpCisgICAgICAgIHJldHVybiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250
ZXh0OworICAgIHJldHVybiB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnAgPyBVVGV4dFBy
b3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQgOiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJp
b3JDb250ZXh0OworfQorCitzdGF0aWMgdm9pZCB0ZXh0VVRGMTZNb3ZlSW5QcmltYXJ5Q29udGV4
dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgs
IFVCb29sIGZvcndhcmQpCit7CisgICAgQVNTRVJUKHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4
dC0+cCk7CisgICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5kZXgg
Pj0gdGV4dC0+YiA6IG5hdGl2ZUluZGV4ID4gdGV4dC0+Yik7CisgICAgQVNTRVJUX1VOVVNFRChm
b3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRl
eCA8PSBuYXRpdmVMZW5ndGgpOworICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSB0ZXh0LT5i
OworICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVMZW5ndGg7CisgICAgaW50NjRf
dCBsZW5ndGggPSB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFy
dDsKKyAgICAvLyBFbnN1cmUgY2h1bmsgbGVuZ3RoIGlzIHdlbGwgZGVmaW5lZCBpZiBjb21wdXRl
ZCBsZW5ndGggZXhjZWVkcyBpbnQzMl90IHJhbmdlLgorICAgIEFTU0VSVChsZW5ndGggPCBzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAgdGV4dC0+Y2h1bmtMZW5ndGgg
PSBsZW5ndGggPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19j
YXN0PGludDMyX3Q+KGxlbmd0aCkgOiAwOworICAgIHRleHQtPm5hdGl2ZUluZGV4aW5nTGltaXQg
PSB0ZXh0LT5jaHVua0xlbmd0aDsKKyAgICBpbnQ2NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0g
dGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAvLyBFbnN1cmUgY2h1bmsgb2Zmc2V0IGlzIHdl
bGwgZGVmaW5lZCBpZiBjb21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQzMl90IHJhbmdlIG9yIGNo
dW5rIGxlbmd0aC4KKyAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQz
Ml90Pjo6bWF4KCkpOworICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gc3RkOjptaW4ob2Zmc2V0IDwg
c3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90
PihvZmZzZXQpIDogMCwgdGV4dC0+Y2h1bmtMZW5ndGgpOworfQorCitzdGF0aWMgdm9pZCB0ZXh0
VVRGMTZTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUlu
ZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQo
IXRleHQtPmNodW5rQ29udGVudHMgfHwgdGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5xKTsK
KyAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0
LT5wKTsKKyAgICB0ZXh0VVRGMTZNb3ZlSW5QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRl
eCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKK30KKworc3RhdGljIHZvaWQgdGV4dFVURjE2TW92
ZUluUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90
IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQodGV4dC0+Y2h1bmtD
b250ZW50cyA9PSB0ZXh0LT5xKTsKKyAgICBBU1NFUlQoZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwg
dGV4dC0+YiA6IG5hdGl2ZUluZGV4IDw9IHRleHQtPmIpOworICAgIEFTU0VSVF9VTlVTRUQobmF0
aXZlTGVuZ3RoLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJ
bmRleCA8PSBuYXRpdmVMZW5ndGgpOworICAgIEFTU0VSVF9VTlVTRUQoZm9yd2FyZCwgZm9yd2Fy
ZCA/IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVu
Z3RoKTsKKyAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gMDsKKyAgICB0ZXh0LT5jaHVua05h
dGl2ZUxpbWl0ID0gdGV4dC0+YjsKKyAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IHRleHQtPmI7Cisg
ICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOworICAgIGlu
dDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OworICAg
IC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNl
dCBleGNlZWRzIGludDMyX3QgcmFuZ2Ugb3IgY2h1bmsgbGVuZ3RoLgorICAgIEFTU0VSVChvZmZz
ZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAgdGV4dC0+Y2h1
bmtPZmZzZXQgPSBzdGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xl
bmd0aCk7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRVVEYxNlN3aXRjaFRvUHJpb3JDb250ZXh0KFVU
ZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJv
b2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQoIXRleHQtPmNodW5rQ29udGVudHMgfHwgdGV4dC0+
Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wKTsKKyAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5xKTsKKyAgICB0ZXh0VVRGMTZNb3ZlSW5Qcmlv
ckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Cit9CisK
Ky8vIC0tIEJlZ2luIFVURi0xNiBwcm92aWRlciBmdW5jdGlvbnMgLS0KKworc3RhdGljIFVUZXh0
KiB1VGV4dFVURjE2Q2xvbmUoVVRleHQqLCBjb25zdCBVVGV4dCosIFVCb29sLCBVRXJyb3JDb2Rl
Kik7CitzdGF0aWMgaW50NjRfdCB1VGV4dFVURjE2TmF0aXZlTGVuZ3RoKFVUZXh0Kik7CitzdGF0
aWMgVUJvb2wgdVRleHRVVEYxNkFjY2VzcyhVVGV4dCosIGludDY0X3QsIFVCb29sKTsKK3N0YXRp
YyBpbnQzMl90IHVUZXh0VVRGMTZFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNo
YXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKik7CitzdGF0aWMgdm9pZCB1VGV4dFVURjE2Q2xvc2Uo
VVRleHQqKTsKKworc3RhdGljIFVUZXh0KiB1VGV4dFVURjE2Q2xvbmUoVVRleHQqIGRlc3RpbmF0
aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMp
Cit7CisgICAgcmV0dXJuIHVUZXh0Q2xvbmVJbXBsKGRlc3RpbmF0aW9uLCBzb3VyY2UsIGRlZXAs
IHN0YXR1cyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50NjRfdCB1VGV4dFVURjE2TmF0aXZlTGVu
Z3RoKFVUZXh0KiB0ZXh0KQoreworICAgIHJldHVybiB0ZXh0LT5hICsgdGV4dC0+YjsKK30KKwor
c3RhdGljIFVCb29sIHVUZXh0VVRGMTZBY2Nlc3MoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZl
SW5kZXgsIFVCb29sIGZvcndhcmQpCit7CisgICAgaWYgKCF0ZXh0LT5jb250ZXh0KQorICAgICAg
ICByZXR1cm4gRkFMU0U7CisgICAgaW50NjRfdCBuYXRpdmVMZW5ndGggPSB1VGV4dFVURjE2TmF0
aXZlTGVuZ3RoKHRleHQpOworICAgIFVCb29sIGlzQWNjZXNzaWJsZTsKKyAgICBpZiAodVRleHRB
Y2Nlc3NJbkNodW5rT3JPdXRPZlJhbmdlKHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgs
IGZvcndhcmQsIGlzQWNjZXNzaWJsZSkpCisgICAgICAgIHJldHVybiBpc0FjY2Vzc2libGU7Cisg
ICAgbmF0aXZlSW5kZXggPSB1VGV4dEFjY2Vzc1BpbkluZGV4KG5hdGl2ZUluZGV4LCBuYXRpdmVM
ZW5ndGgpOworICAgIFVUZXh0UHJvdmlkZXJDb250ZXh0IGN1cnJlbnRDb250ZXh0ID0gdGV4dFVU
RjE2R2V0Q3VycmVudENvbnRleHQodGV4dCk7CisgICAgVVRleHRQcm92aWRlckNvbnRleHQgbmV3
Q29udGV4dCA9IHVUZXh0UHJvdmlkZXJDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBmb3J3YXJk
KTsKKyAgICBBU1NFUlQobmV3Q29udGV4dCAhPSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250
ZXh0KTsKKyAgICBpZiAobmV3Q29udGV4dCA9PSBjdXJyZW50Q29udGV4dCkgeworICAgICAgICBp
ZiAoY3VycmVudENvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0
KQorICAgICAgICAgICAgdGV4dFVURjE2TW92ZUluUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZl
SW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHRleHRVVEYxNk1vdmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVu
Z3RoLCBmb3J3YXJkKTsKKyAgICB9IGVsc2UgaWYgKG5ld0NvbnRleHQgPT0gVVRleHRQcm92aWRl
ckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQorICAgICAgICB0ZXh0VVRGMTZTd2l0Y2hUb1ByaW1h
cnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAg
IGVsc2UgeworICAgICAgICBBU1NFUlQobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4
dDo6UHJpb3JDb250ZXh0KTsKKyAgICAgICAgdGV4dFVURjE2U3dpdGNoVG9QcmlvckNvbnRleHQo
dGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7CisgICAgfQorICAgIHJl
dHVybiBUUlVFOworfQorCitzdGF0aWMgaW50MzJfdCB1VGV4dFVURjE2RXh0cmFjdChVVGV4dCos
IGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50MzJfdCwgVUVycm9yQ29kZSogZXJyb3JDb2Rl
KQoreworICAgIC8vIEluIHRoZSBwcmVzZW50IGNvbnRleHQsIHRoaXMgdGV4dCBwcm92aWRlciBp
cyB1c2VkIG9ubHkgd2l0aCBJQ1UgZnVuY3Rpb25zCisgICAgLy8gdGhhdCBkbyBub3QgcGVyZm9y
bSBhbiBleHRyYWN0IG9wZXJhdGlvbi4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAq
ZXJyb3JDb2RlID0gVV9VTlNVUFBPUlRFRF9FUlJPUjsKKyAgICByZXR1cm4gMDsKK30KKworc3Rh
dGljIHZvaWQgdVRleHRVVEYxNkNsb3NlKFVUZXh0KiB0ZXh0KQoreworICAgIHRleHQtPmNvbnRl
eHQgPSAwOworfQorCisvLyAtLSBFbmQgVVRGLTE2IHByb3ZpZGVyIGZ1bmN0aW9ucyAtLQorCitz
dGF0aWMgY29uc3Qgc3RydWN0IFVUZXh0RnVuY3MgdGV4dFVURjE2RnVuY3MgPSB7CisgICAgc2l6
ZW9mKFVUZXh0RnVuY3MpLAorICAgIDAsIDAsIDAsCisgICAgdVRleHRVVEYxNkNsb25lLAorICAg
IHVUZXh0VVRGMTZOYXRpdmVMZW5ndGgsCisgICAgdVRleHRVVEYxNkFjY2VzcywKKyAgICB1VGV4
dFVURjE2RXh0cmFjdCwKKyAgICAwLCAwLCAwLCAwLAorICAgIHVUZXh0VVRGMTZDbG9zZSwKKyAg
ICAwLCAwLCAwLAorfTsKKworVVRleHQqIHVUZXh0T3BlblVURjE2KFVUZXh0KiB0ZXh0LCBjb25z
dCBVQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRl
eHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgsIFVFcnJvckNvZGUqIHN0YXR1cykKK3sKKyAgICBp
ZiAoVV9GQUlMVVJFKCpzdGF0dXMpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIXN0cmlu
ZyB8fCBsZW5ndGggPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpudW1lcmljX2xpbWl0czxp
bnQzMl90Pjo6bWF4KCkpKSB7CisgICAgICAgICpzdGF0dXMgPSBVX0lMTEVHQUxfQVJHVU1FTlRf
RVJST1I7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICB0ZXh0ID0gdXRleHRfc2V0dXAo
dGV4dCwgMCwgc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKSB7CisgICAgICAg
IEFTU0VSVCghdGV4dCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICB1VGV4dEluaXRp
YWxpemUodGV4dCwgJnRleHRVVEYxNkZ1bmNzLCBzdHJpbmcsIGxlbmd0aCwgcHJpb3JDb250ZXh0
LCBwcmlvckNvbnRleHRMZW5ndGgpOworICAgIHJldHVybiB0ZXh0OworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4
dFByb3ZpZGVyVVRGMTYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVUZXh0UHJvdmlkZXJVVEYx
Nl9oCisjZGVmaW5lIFVUZXh0UHJvdmlkZXJVVEYxNl9oCisKKyNpbmNsdWRlIDx1bmljb2RlL3V0
ZXh0Lmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1VUZXh0KiB1VGV4dE9wZW5VVEYxNihVVGV4dCosIGNvbnN0IFVDaGFyKiwgdW5z
aWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0
TGVuZ3RoLCBVRXJyb3JDb2RlKik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFVUZXh0UHJvdmlkZXJVVEYxNl9oCg==
</data>
<flag name="review"
          id="244811"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>