<?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>125371</bug_id>
          
          <creation_ts>2013-12-06 15:08:39 -0800</creation_ts>
          <short_desc>REGRESSION(r159543): Build fix for mac no longer needed (Requested by rfong on #webkit).</short_desc>
          <delta_ts>2013-12-06 15:11:13 -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="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>mrobinson</cc>
    
    <cc>roger_fong</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>957414</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-06 15:08:39 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/159543 broke the build:
Build fix for mac no longer needed (Requested by rfong on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957415</commentid>
    <comment_count>1</comment_count>
      <attachid>218628</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-06 15:08:58 -0800</bug_when>
    <thetext>Created attachment 218628
ROLLOUT of r159543

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957416</commentid>
    <comment_count>2</comment_count>
      <attachid>218628</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-06 15:11:10 -0800</bug_when>
    <thetext>Comment on attachment 218628
ROLLOUT of r159543

Clearing flags on attachment: 218628

Committed r160256: &lt;http://trac.webkit.org/changeset/160256&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957417</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-06 15:11:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218628</attachid>
            <date>2013-12-06 15:08:58 -0800</date>
            <delta_ts>2013-12-06 15:11:10 -0800</delta_ts>
            <desc>ROLLOUT of r159543</desc>
            <filename>bug-125371-20131206150858.patch</filename>
            <type>text/plain</type>
            <size>182131</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggNmRkNmQ5MjYzMDM4OTc3OTU2MTQ1YzAzNmRmNTQ1ODFkY2M5MzZkNS4uODgzZGQxZWQ3Yjcz
NTQ1NTViYjQyYTI1NDIwODJkZWU4NjlhMmI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTEyLTA2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVl
dWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTU5NTQz
LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xNTk1NDMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTM3MQorCisgICAg
ICAgIEJ1aWxkIGZpeCBmb3IgbWFjIG5vIGxvbmdlciBuZWVkZWQgKFJlcXVlc3RlZCBieSByZm9u
ZyBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICAqIEFOR0xFLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmNwcDoKKyAg
ICAgICAgKHl5c3ludGF4X2Vycm9yKToKKyAgICAgICAgKGdsc2xhbmdfcGFyc2UpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9w
cmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5jcHA6CisgICAgICAgICh5eV9zeW1ib2xfcHJp
bnQpOgorICAgICAgICAoeXlfc3RhY2tfcHJpbnQpOgorICAgICAgICAoeXlfcmVkdWNlX3ByaW50
KToKKyAgICAgICAgKHl5dG5hbWVycik6CisgICAgICAgICh5eXN5bnRheF9lcnJvcik6CisgICAg
ICAgICh5eWRlc3RydWN0KToKKyAgICAgICAgKHl5cGFyc2UpOgorCiAyMDEzLTEyLTA1ICBSb2dl
ciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdMXSBNYWtlIHN1
cmUgd2Ugc2F0aXNmeSB1bmlmb3JtIGFuZCB2YXJ5aW5nIHBhY2tpbmcgcmVzdHJpY3Rpb25zLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZjlmMDQxMzE3YmIzNTk3NGQwZGU0ZTMzZWIxNGIxNzM3ZTc5MzNk
YS4uYzEyZDY3OWQ1ZmQ3OWY5MTFlNzE0ZmNjMjMzOGZhZjc1NWY2MDBjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xODgsNyArMTg4LDcgQEAKIAkJNzIzMDlBNTUxODNDMjdEQjAwMzcwQjkzIC8qIFRv
a2VuaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUb2tlbml6ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MjMwOUE1NzE4M0MyN0YxMDAzNzBCOTMgLyogRXhwcmVzc2lv
blBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHByZXNzaW9uUGFyc2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIzMDlBNTkxODNDMjg0RTAwMzcwQjkzIC8qIGds
c2xhbmdfbGV4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGdsc2xhbmdfbGV4LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzIzMDlBNUExODNDMjg0RTAwMzcwQjkzIC8qIGdsc2xh
bmdfdGFiLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGdsc2xhbmdfdGFiLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdXNlc1RhYnMgPSAxOyB9OworCQk3MjMwOUE1QTE4M0MyODRFMDAzNzBC
OTMgLyogZ2xzbGFuZ190YWIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gZ2xzbGFuZ190YWIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjMwOUE1QjE4M0MyODRFMDAzNzBCOTMg
LyogZ2xzbGFuZ190YWIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZ2xzbGFuZ190YWIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIzMDlBNUYxODNDMkE2NDAwMzcwQjkzIC8qIFRyYW5zbGF0
b3JITFNMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zbGF0b3JITFNMLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIzMDlBNjAxODNDMkE2NDAwMzcwQjkzIC8qIFRyYW5z
bGF0b3JITFNMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5zbGF0b3JITFNMLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL2dsc2xhbmdfdGFiLmNwcAppbmRleCA4NGMyOTA1ZTkxNjZkYmMyNTY4NjEzYjdiMGMw
N2RjOGNkOGFjNmMxLi5jZTdiMmM3MTE3MGE4YjQ3YmY0ZGYwODdhOWRiYTNhMGU2ZjUxN2E1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190
YWIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5n
X3RhYi5jcHAKQEAgLTEsMjQgKzEsMjMgQEAKLS8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdO
VSBCaXNvbiAyLjMuICAqLworLyogQXBwbGUgTm90ZTogRm9yIHRoZSBhdm9pZGFuY2Ugb2YgZG91
YnQsIEFwcGxlIGVsZWN0cyB0byBkaXN0cmlidXRlIHRoaXMgZmlsZSB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEJTRCBsaWNlbnNlLiAqLwogCi0vKiBTa2VsZXRvbiBpbXBsZW1lbnRhdGlvbiBmb3Ig
Qmlzb24ncyBZYWNjLWxpa2UgcGFyc2VycyBpbiBDCisvKiBBIEJpc29uIHBhcnNlciwgbWFkZSBi
eSBHTlUgQmlzb24gMi43LiAgKi8KIAotICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5LCAxOTkw
LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2Ci0gICBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4KLQotICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy8qIEJpc29uIGltcGxlbWVu
dGF0aW9uIGZvciBZYWNjLWxpa2UgcGFyc2VycyBpbiBDCisgICAKKyAgICAgIENvcHlyaWdodCAo
QykgMTk4NCwgMTk4OS0xOTkwLCAyMDAwLTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuCisgICAKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQot
ICAgYW55IGxhdGVyIHZlcnNpb24uCi0KKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICAgCiAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAg
ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCisgICAKICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZQotICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KKyAgIGFs
b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s
aWNlbnNlcy8+LiAgKi8KIAogLyogQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSBjcmVh
dGUgYSBsYXJnZXIgd29yayB0aGF0IGNvbnRhaW5zCiAgICBwYXJ0IG9yIGFsbCBvZiB0aGUgQmlz
b24gcGFyc2VyIHNrZWxldG9uIGFuZCBkaXN0cmlidXRlIHRoYXQgd29yawpAQCAtMjksNyArMjgs
NyBAQAogICAgc3BlY2lhbCBleGNlcHRpb24sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNrZWxldG9u
IGFuZCB0aGUgcmVzdWx0aW5nCiAgICBCaXNvbiBvdXRwdXQgZmlsZXMgdG8gYmUgbGljZW5zZWQg
dW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwogICAgTGljZW5zZSB3aXRob3V0IHRoaXMgc3Bl
Y2lhbCBleGNlcHRpb24uCi0KKyAgIAogICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB3YXMgYWRk
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBpbgogICAgdmVyc2lvbiAyLjIgb2Yg
Qmlzb24uICAqLwogCkBAIC00Nyw3ICs0Niw3IEBACiAjZGVmaW5lIFlZQklTT04gMQogCiAvKiBC
aXNvbiB2ZXJzaW9uLiAgKi8KLSNkZWZpbmUgWVlCSVNPTl9WRVJTSU9OICIyLjMiCisjZGVmaW5l
IFlZQklTT05fVkVSU0lPTiAiMi43IgogCiAvKiBTa2VsZXRvbiBuYW1lLiAgKi8KICNkZWZpbmUg
WVlTS0VMRVRPTl9OQU1FICJ5YWNjLmMiCkBAIC01NSw4ICs1NCw4MiBAQAogLyogUHVyZSBwYXJz
ZXJzLiAgKi8KICNkZWZpbmUgWVlQVVJFIDEKIAotLyogVXNpbmcgbG9jYXRpb25zLiAgKi8KLSNk
ZWZpbmUgWVlMU1BfTkVFREVEIDEKKy8qIFB1c2ggcGFyc2Vycy4gICovCisjZGVmaW5lIFlZUFVT
SCAwCisKKy8qIFB1bGwgcGFyc2Vycy4gICovCisjZGVmaW5lIFlZUFVMTCAxCisKKworCisKKy8q
IENvcHkgdGhlIGZpcnN0IHBhcnQgb2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLworCisKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKy8vIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBnZW5lcmF0
ZV9wYXJzZXIuc2guIERPIE5PVCBFRElUIQorCisvLyBJZ25vcmUgZXJyb3JzIGluIGF1dG8tZ2Vu
ZXJhdGVkIGNvZGUuCisjaWYgZGVmaW5lZChfX0dOVUNfXykKKyNwcmFnbWEgR0NDIGRpYWdub3N0
aWMgaWdub3JlZCAiLVd1bnVzZWQtZnVuY3Rpb24iCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGln
bm9yZWQgIi1XdW51c2VkLXZhcmlhYmxlIgorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVk
ICItV3N3aXRjaC1lbnVtIgorI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNwcmFnbWEgd2Fybmlu
ZyhkaXNhYmxlOiA0MDY1KQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxODkpCisjcHJhZ21h
IHdhcm5pbmcoZGlzYWJsZTogNDUwNSkKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NzAxKQor
I2VuZGlmCisKKyNpbmNsdWRlICJjb21waWxlci9TeW1ib2xUYWJsZS5oIgorI2luY2x1ZGUgImNv
bXBpbGVyL1BhcnNlQ29udGV4dC5oIgorI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgor
CisjZGVmaW5lIFlZRU5BQkxFX05MUyAwCisKKyNkZWZpbmUgWVlMRVhfUEFSQU0gY29udGV4dC0+
c2Nhbm5lcgorCisKKworIyBpZm5kZWYgWVlfTlVMTAorIyAgaWYgZGVmaW5lZCBfX2NwbHVzcGx1
cyAmJiAyMDExMDNMIDw9IF9fY3BsdXNwbHVzCisjICAgZGVmaW5lIFlZX05VTEwgbnVsbHB0cgor
IyAgZWxzZQorIyAgIGRlZmluZSBZWV9OVUxMIDAKKyMgIGVuZGlmCisjIGVuZGlmCisKKy8qIEVu
YWJsaW5nIHZlcmJvc2UgZXJyb3IgbWVzc2FnZXMuICAqLworI2lmZGVmIFlZRVJST1JfVkVSQk9T
RQorIyB1bmRlZiBZWUVSUk9SX1ZFUkJPU0UKKyMgZGVmaW5lIFlZRVJST1JfVkVSQk9TRSAxCisj
ZWxzZQorIyBkZWZpbmUgWVlFUlJPUl9WRVJCT1NFIDAKKyNlbmRpZgorCisvKiBJbiBhIGZ1dHVy
ZSByZWxlYXNlIG9mIEJpc29uLCB0aGlzIHNlY3Rpb24gd2lsbCBiZSByZXBsYWNlZAorICAgYnkg
I2luY2x1ZGUgImdsc2xhbmdfdGFiLmgiLiAgKi8KKyNpZm5kZWYgWVlfWVlfR0xTTEFOR19UQUJf
SF9JTkNMVURFRAorIyBkZWZpbmUgWVlfWVlfR0xTTEFOR19UQUJfSF9JTkNMVURFRAorLyogRW5h
YmxpbmcgdHJhY2VzLiAgKi8KKyNpZm5kZWYgWVlERUJVRworIyBkZWZpbmUgWVlERUJVRyAwCisj
ZW5kaWYKKyNpZiBZWURFQlVHCitleHRlcm4gaW50IHl5ZGVidWc7CisjZW5kaWYKKy8qICIlY29k
ZSByZXF1aXJlcyIgYmxvY2tzLiAgKi8KKworCisjZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxvYwor
I2RlZmluZSBZWUxUWVBFX0lTX0RFQ0xBUkVEIDEKKyNkZWZpbmUgU0hfTUFYX1RPS0VOX0xFTkdU
SCAyNTYgIC8vIFdlYkdMIHNwZWMuCisKIAogCiAKQEAgLTE2MCwxNTkgKzIzMywxMyBAQAogICAg
ICBRVUVTVElPTiA9IDM0OQogICAgfTsKICNlbmRpZgotLyogVG9rZW5zLiAgKi8KLSNkZWZpbmUg
SU5WQVJJQU5UIDI1OAotI2RlZmluZSBISUdIX1BSRUNJU0lPTiAyNTkKLSNkZWZpbmUgTUVESVVN
X1BSRUNJU0lPTiAyNjAKLSNkZWZpbmUgTE9XX1BSRUNJU0lPTiAyNjEKLSNkZWZpbmUgUFJFQ0lT
SU9OIDI2MgotI2RlZmluZSBBVFRSSUJVVEUgMjYzCi0jZGVmaW5lIENPTlNUX1FVQUwgMjY0Ci0j
ZGVmaW5lIEJPT0xfVFlQRSAyNjUKLSNkZWZpbmUgRkxPQVRfVFlQRSAyNjYKLSNkZWZpbmUgSU5U
X1RZUEUgMjY3Ci0jZGVmaW5lIEJSRUFLIDI2OAotI2RlZmluZSBDT05USU5VRSAyNjkKLSNkZWZp
bmUgRE8gMjcwCi0jZGVmaW5lIEVMU0UgMjcxCi0jZGVmaW5lIEZPUiAyNzIKLSNkZWZpbmUgSUYg
MjczCi0jZGVmaW5lIERJU0NBUkQgMjc0Ci0jZGVmaW5lIFJFVFVSTiAyNzUKLSNkZWZpbmUgQlZF
QzIgMjc2Ci0jZGVmaW5lIEJWRUMzIDI3NwotI2RlZmluZSBCVkVDNCAyNzgKLSNkZWZpbmUgSVZF
QzIgMjc5Ci0jZGVmaW5lIElWRUMzIDI4MAotI2RlZmluZSBJVkVDNCAyODEKLSNkZWZpbmUgVkVD
MiAyODIKLSNkZWZpbmUgVkVDMyAyODMKLSNkZWZpbmUgVkVDNCAyODQKLSNkZWZpbmUgTUFUUklY
MiAyODUKLSNkZWZpbmUgTUFUUklYMyAyODYKLSNkZWZpbmUgTUFUUklYNCAyODcKLSNkZWZpbmUg
SU5fUVVBTCAyODgKLSNkZWZpbmUgT1VUX1FVQUwgMjg5Ci0jZGVmaW5lIElOT1VUX1FVQUwgMjkw
Ci0jZGVmaW5lIFVOSUZPUk0gMjkxCi0jZGVmaW5lIFZBUllJTkcgMjkyCi0jZGVmaW5lIFNUUlVD
VCAyOTMKLSNkZWZpbmUgVk9JRF9UWVBFIDI5NAotI2RlZmluZSBXSElMRSAyOTUKLSNkZWZpbmUg
U0FNUExFUjJEIDI5NgotI2RlZmluZSBTQU1QTEVSQ1VCRSAyOTcKLSNkZWZpbmUgU0FNUExFUl9F
WFRFUk5BTF9PRVMgMjk4Ci0jZGVmaW5lIFNBTVBMRVIyRFJFQ1QgMjk5Ci0jZGVmaW5lIElERU5U
SUZJRVIgMzAwCi0jZGVmaW5lIFRZUEVfTkFNRSAzMDEKLSNkZWZpbmUgRkxPQVRDT05TVEFOVCAz
MDIKLSNkZWZpbmUgSU5UQ09OU1RBTlQgMzAzCi0jZGVmaW5lIEJPT0xDT05TVEFOVCAzMDQKLSNk
ZWZpbmUgTEVGVF9PUCAzMDUKLSNkZWZpbmUgUklHSFRfT1AgMzA2Ci0jZGVmaW5lIElOQ19PUCAz
MDcKLSNkZWZpbmUgREVDX09QIDMwOAotI2RlZmluZSBMRV9PUCAzMDkKLSNkZWZpbmUgR0VfT1Ag
MzEwCi0jZGVmaW5lIEVRX09QIDMxMQotI2RlZmluZSBORV9PUCAzMTIKLSNkZWZpbmUgQU5EX09Q
IDMxMwotI2RlZmluZSBPUl9PUCAzMTQKLSNkZWZpbmUgWE9SX09QIDMxNQotI2RlZmluZSBNVUxf
QVNTSUdOIDMxNgotI2RlZmluZSBESVZfQVNTSUdOIDMxNwotI2RlZmluZSBBRERfQVNTSUdOIDMx
OAotI2RlZmluZSBNT0RfQVNTSUdOIDMxOQotI2RlZmluZSBMRUZUX0FTU0lHTiAzMjAKLSNkZWZp
bmUgUklHSFRfQVNTSUdOIDMyMQotI2RlZmluZSBBTkRfQVNTSUdOIDMyMgotI2RlZmluZSBYT1Jf
QVNTSUdOIDMyMwotI2RlZmluZSBPUl9BU1NJR04gMzI0Ci0jZGVmaW5lIFNVQl9BU1NJR04gMzI1
Ci0jZGVmaW5lIExFRlRfUEFSRU4gMzI2Ci0jZGVmaW5lIFJJR0hUX1BBUkVOIDMyNwotI2RlZmlu
ZSBMRUZUX0JSQUNLRVQgMzI4Ci0jZGVmaW5lIFJJR0hUX0JSQUNLRVQgMzI5Ci0jZGVmaW5lIExF
RlRfQlJBQ0UgMzMwCi0jZGVmaW5lIFJJR0hUX0JSQUNFIDMzMQotI2RlZmluZSBET1QgMzMyCi0j
ZGVmaW5lIENPTU1BIDMzMwotI2RlZmluZSBDT0xPTiAzMzQKLSNkZWZpbmUgRVFVQUwgMzM1Ci0j
ZGVmaW5lIFNFTUlDT0xPTiAzMzYKLSNkZWZpbmUgQkFORyAzMzcKLSNkZWZpbmUgREFTSCAzMzgK
LSNkZWZpbmUgVElMREUgMzM5Ci0jZGVmaW5lIFBMVVMgMzQwCi0jZGVmaW5lIFNUQVIgMzQxCi0j
ZGVmaW5lIFNMQVNIIDM0MgotI2RlZmluZSBQRVJDRU5UIDM0MwotI2RlZmluZSBMRUZUX0FOR0xF
IDM0NAotI2RlZmluZSBSSUdIVF9BTkdMRSAzNDUKLSNkZWZpbmUgVkVSVElDQUxfQkFSIDM0Ngot
I2RlZmluZSBDQVJFVCAzNDcKLSNkZWZpbmUgQU1QRVJTQU5EIDM0OAotI2RlZmluZSBRVUVTVElP
TiAzNDkKLQotCi0KLQotLyogQ29weSB0aGUgZmlyc3QgcGFydCBvZiB1c2VyIGRlY2xhcmF0aW9u
cy4gICovCi0KLQotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlX3BhcnNlci5zaC4gRE8gTk9UIEVESVQhCi0KLS8vIElnbm9yZSBl
cnJvcnMgaW4gYXV0by1nZW5lcmF0ZWQgY29kZS4KLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotI3By
YWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1mdW5jdGlvbiIKLSNwcmFnbWEg
R0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtdmFyaWFibGUiCi0jcHJhZ21hIEdDQyBk
aWFnbm9zdGljIGlnbm9yZWQgIi1Xc3dpdGNoLWVudW0iCi0jZWxpZiBkZWZpbmVkKF9NU0NfVkVS
KQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQwNjUpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTogNDE4OSkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NTA1KQotI3ByYWdtYSB3YXJuaW5n
KGRpc2FibGU6IDQ3MDEpCi0jZW5kaWYKIAotI2luY2x1ZGUgImNvbXBpbGVyL1N5bWJvbFRhYmxl
LmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VDb250ZXh0LmgiCi0jaW5jbHVkZSAiR0xTTEFO
Ry9TaGFkZXJMYW5nLmgiCi0KLSNkZWZpbmUgWVlFTkFCTEVfTkxTIDAKLQotI2RlZmluZSBZWUxF
WF9QQVJBTSBjb250ZXh0LT5zY2FubmVyCi0KLQotLyogRW5hYmxpbmcgdHJhY2VzLiAgKi8KLSNp
Zm5kZWYgWVlERUJVRwotIyBkZWZpbmUgWVlERUJVRyAwCi0jZW5kaWYKLQotLyogRW5hYmxpbmcg
dmVyYm9zZSBlcnJvciBtZXNzYWdlcy4gICovCi0jaWZkZWYgWVlFUlJPUl9WRVJCT1NFCi0jIHVu
ZGVmIFlZRVJST1JfVkVSQk9TRQotIyBkZWZpbmUgWVlFUlJPUl9WRVJCT1NFIDEKLSNlbHNlCi0j
IGRlZmluZSBZWUVSUk9SX1ZFUkJPU0UgMAotI2VuZGlmCi0KLS8qIEVuYWJsaW5nIHRoZSB0b2tl
biB0YWJsZS4gICovCi0jaWZuZGVmIFlZVE9LRU5fVEFCTEUKLSMgZGVmaW5lIFlZVE9LRU5fVEFC
TEUgMAotI2VuZGlmCiAKICNpZiAhIGRlZmluZWQgWVlTVFlQRSAmJiAhIGRlZmluZWQgWVlTVFlQ
RV9JU19ERUNMQVJFRAogdHlwZWRlZiB1bmlvbiBZWVNUWVBFCi0KIHsKLSNkZWZpbmUgWVlMVFlQ
RSBUU291cmNlTG9jCi0jZGVmaW5lIFlZTFRZUEVfSVNfREVDTEFSRUQgMQorCisKICAgICBzdHJ1
Y3QgewogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUU3RyaW5nICpzdHJpbmc7CkBAIC0z
NDAsMTMgKzI2NywxMyBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKICAgICAgICAgICAgIFRGaWVs
ZExpc3QqIGZpZWxkTGlzdDsKICAgICAgICAgfTsKICAgICB9IGludGVybTsKLX0KLS8qIExpbmUg
MTkzIG9mIHlhY2MuYy4gICovCiAKLSAgICBZWVNUWVBFOworCisKK30gWVlTVFlQRTsKKyMgZGVm
aW5lIFlZU1RZUEVfSVNfVFJJVklBTCAxCiAjIGRlZmluZSB5eXN0eXBlIFlZU1RZUEUgLyogb2Jz
b2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCiAjIGRlZmluZSBZWVNUWVBFX0lTX0RFQ0xB
UkVEIDEKLSMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAxCiAjZW5kaWYKIAogI2lmICEgZGVm
aW5lZCBZWUxUWVBFICYmICEgZGVmaW5lZCBZWUxUWVBFX0lTX0RFQ0xBUkVECkBAIC0zNjMsMTEg
KzI5MCwyNyBAQCB0eXBlZGVmIHN0cnVjdCBZWUxUWVBFCiAjZW5kaWYKIAogCisjaWZkZWYgWVlQ
QVJTRV9QQVJBTQorI2lmIGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cwor
aW50IHl5cGFyc2UgKHZvaWQgKllZUEFSU0VfUEFSQU0pOworI2Vsc2UKK2ludCB5eXBhcnNlICgp
OworI2VuZGlmCisjZWxzZSAvKiAhIFlZUEFSU0VfUEFSQU0gKi8KKyNpZiBkZWZpbmVkIF9fU1RE
Q19fIHx8IGRlZmluZWQgX19jcGx1c3BsdXMKK2ludCB5eXBhcnNlIChUUGFyc2VDb250ZXh0KiBj
b250ZXh0KTsKKyNlbHNlCitpbnQgeXlwYXJzZSAoKTsKKyNlbmRpZgorI2VuZGlmIC8qICEgWVlQ
QVJTRV9QQVJBTSAqLworCisjZW5kaWYgLyogIVlZX1lZX0dMU0xBTkdfVEFCX0hfSU5DTFVERUQg
ICovCisKIC8qIENvcHkgdGhlIHNlY29uZCBwYXJ0IG9mIHVzZXIgZGVjbGFyYXRpb25zLiAgKi8K
IAogCiBleHRlcm4gaW50IHl5bGV4KFlZU1RZUEUqIHl5bHZhbCwgWVlMVFlQRSogeXlsbG9jLCB2
b2lkKiB5eXNjYW5uZXIpOwotc3RhdGljIHZvaWQgeXllcnJvcihZWUxUWVBFKiB5eWxsb2MsIFRQ
YXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7CitleHRlcm4gdm9pZCB5
eWVycm9yKFlZTFRZUEUqIHl5bGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hh
ciogcmVhc29uKTsKIAogI2RlZmluZSBZWUxMT0NfREVGQVVMVChDdXJyZW50LCBSaHMsIE4pICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC00MDAsOCArMzQzLDYgQEAgc3RhdGljIHZv
aWQgeXllcnJvcihZWUxUWVBFKiB5eWxsb2MsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IGNoYXIqIHJlYXNvbikKIH0KIAogCi0vKiBMaW5lIDIxNiBvZiB5YWNjLmMuICAqLwotCiAKICNp
ZmRlZiBzaG9ydAogIyB1bmRlZiBzaG9ydApAQCAtNDU0LDM2ICszOTUsMzYgQEAgdHlwZWRlZiBz
aG9ydCBpbnQgeXl0eXBlX2ludDE2OwogIyBpZiBkZWZpbmVkIFlZRU5BQkxFX05MUyAmJiBZWUVO
QUJMRV9OTFMKICMgIGlmIEVOQUJMRV9OTFMKICMgICBpbmNsdWRlIDxsaWJpbnRsLmg+IC8qIElO
RlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KLSMgICBkZWZpbmUgWVlfKG1zZ2lkKSBkZ2V0
dGV4dCAoImJpc29uLXJ1bnRpbWUiLCBtc2dpZCkKKyMgICBkZWZpbmUgWVlfKE1zZ2lkKSBkZ2V0
dGV4dCAoImJpc29uLXJ1bnRpbWUiLCBNc2dpZCkKICMgIGVuZGlmCiAjIGVuZGlmCiAjIGlmbmRl
ZiBZWV8KLSMgIGRlZmluZSBZWV8obXNnaWQpIG1zZ2lkCisjICBkZWZpbmUgWVlfKE1zZ2lkKSBN
c2dpZAogIyBlbmRpZgogI2VuZGlmCiAKIC8qIFN1cHByZXNzIHVudXNlZC12YXJpYWJsZSB3YXJu
aW5ncyBieSAidXNpbmciIEUuICAqLwogI2lmICEgZGVmaW5lZCBsaW50IHx8IGRlZmluZWQgX19H
TlVDX18KLSMgZGVmaW5lIFlZVVNFKGUpICgodm9pZCkgKGUpKQorIyBkZWZpbmUgWVlVU0UoRSkg
KCh2b2lkKSAoRSkpCiAjZWxzZQotIyBkZWZpbmUgWVlVU0UoZSkgLyogZW1wdHkgKi8KKyMgZGVm
aW5lIFlZVVNFKEUpIC8qIGVtcHR5ICovCiAjZW5kaWYKIAogLyogSWRlbnRpdHkgZnVuY3Rpb24s
IHVzZWQgdG8gc3VwcHJlc3Mgd2FybmluZ3MgYWJvdXQgY29uc3RhbnQgY29uZGl0aW9ucy4gICov
CiAjaWZuZGVmIGxpbnQKLSMgZGVmaW5lIFlZSUQobikgKG4pCisjIGRlZmluZSBZWUlEKE4pIChO
KQogI2Vsc2UKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18g
XAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiBzdGF0
aWMgaW50Ci1ZWUlEIChpbnQgaSkKK1lZSUQgKGludCB5eWkpCiAjZWxzZQogc3RhdGljIGludAot
WVlJRCAoaSkKLSAgICBpbnQgaTsKK1lZSUQgKHl5aSkKKyAgICBpbnQgeXlpOwogI2VuZGlmCiB7
Ci0gIHJldHVybiBpOworICByZXR1cm4geXlpOwogfQogI2VuZGlmCiAKQEAgLTUwNCwxMSArNDQ1
LDEyIEBAIFlZSUQgKGkpCiAjICAgIGRlZmluZSBhbGxvY2EgX2FsbG9jYQogIyAgIGVsc2UKICMg
ICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgYWxsb2NhCi0jICAgIGlmICEgZGVmaW5lZCBfQUxMT0NB
X0ggJiYgISBkZWZpbmVkIF9TVERMSUJfSCAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVk
IF9fQzk5X19GVU5DX18gXAorIyAgICBpZiAhIGRlZmluZWQgX0FMTE9DQV9IICYmICEgZGVmaW5l
ZCBFWElUX1NVQ0NFU1MgJiYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVO
Q19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQog
IyAgICAgaW5jbHVkZSA8c3RkbGliLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0Ug
Ki8KLSMgICAgIGlmbmRlZiBfU1RETElCX0gKLSMgICAgICBkZWZpbmUgX1NURExJQl9IIDEKKyAg
ICAgIC8qIFVzZSBFWElUX1NVQ0NFU1MgYXMgYSB3aXRuZXNzIGZvciBzdGRsaWIuaC4gICovCisj
ICAgICBpZm5kZWYgRVhJVF9TVUNDRVNTCisjICAgICAgZGVmaW5lIEVYSVRfU1VDQ0VTUyAwCiAj
ICAgICBlbmRpZgogIyAgICBlbmRpZgogIyAgIGVuZGlmCkBAIC01MzEsMjQgKzQ3MywyNCBAQCBZ
WUlEIChpKQogIyAgaWZuZGVmIFlZU1RBQ0tfQUxMT0NfTUFYSU1VTQogIyAgIGRlZmluZSBZWVNU
QUNLX0FMTE9DX01BWElNVU0gWVlTSVpFX01BWElNVU0KICMgIGVuZGlmCi0jICBpZiAoZGVmaW5l
ZCBfX2NwbHVzcGx1cyAmJiAhIGRlZmluZWQgX1NURExJQl9IIFwKKyMgIGlmIChkZWZpbmVkIF9f
Y3BsdXNwbHVzICYmICEgZGVmaW5lZCBFWElUX1NVQ0NFU1MgXAogICAgICAgICYmICEgKChkZWZp
bmVkIFlZTUFMTE9DIHx8IGRlZmluZWQgbWFsbG9jKSBcCi0gICAgICAgICAmJiAoZGVmaW5lZCBZ
WUZSRUUgfHwgZGVmaW5lZCBmcmVlKSkpCisJICAgICAmJiAoZGVmaW5lZCBZWUZSRUUgfHwgZGVm
aW5lZCBmcmVlKSkpCiAjICAgaW5jbHVkZSA8c3RkbGliLmg+IC8qIElORlJJTkdFUyBPTiBVU0VS
IE5BTUUgU1BBQ0UgKi8KLSMgICBpZm5kZWYgX1NURExJQl9ICi0jICAgIGRlZmluZSBfU1RETElC
X0ggMQorIyAgIGlmbmRlZiBFWElUX1NVQ0NFU1MKKyMgICAgZGVmaW5lIEVYSVRfU1VDQ0VTUyAw
CiAjICAgZW5kaWYKICMgIGVuZGlmCiAjICBpZm5kZWYgWVlNQUxMT0MKICMgICBkZWZpbmUgWVlN
QUxMT0MgbWFsbG9jCi0jICAgaWYgISBkZWZpbmVkIG1hbGxvYyAmJiAhIGRlZmluZWQgX1NURExJ
Ql9IICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisjICAg
aWYgISBkZWZpbmVkIG1hbGxvYyAmJiAhIGRlZmluZWQgRVhJVF9TVUNDRVNTICYmIChkZWZpbmVk
IF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19j
cGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHZvaWQgKm1hbGxvYyAoWVlTSVpFX1QpOyAv
KiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCiAjICAgZW5kaWYKICMgIGVuZGlmCiAj
ICBpZm5kZWYgWVlGUkVFCiAjICAgZGVmaW5lIFlZRlJFRSBmcmVlCi0jICAgaWYgISBkZWZpbmVk
IGZyZWUgJiYgISBkZWZpbmVkIF9TVERMSUJfSCAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZp
bmVkIF9fQzk5X19GVU5DX18gXAorIyAgIGlmICEgZGVmaW5lZCBmcmVlICYmICEgZGVmaW5lZCBF
WElUX1NVQ0NFU1MgJiYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19f
IFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogdm9p
ZCBmcmVlICh2b2lkICopOyAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCiAjICAg
ZW5kaWYKQEAgLTU1OSwxNSArNTAxLDE1IEBAIHZvaWQgZnJlZSAodm9pZCAqKTsgLyogSU5GUklO
R0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwogCiAjaWYgKCEgZGVmaW5lZCB5eW92ZXJmbG93IFwK
ICAgICAgJiYgKCEgZGVmaW5lZCBfX2NwbHVzcGx1cyBcCi0gICAgIHx8IChkZWZpbmVkIFlZTFRZ
UEVfSVNfVFJJVklBTCAmJiBZWUxUWVBFX0lTX1RSSVZJQUwgXAotICAgICAgICAgJiYgZGVmaW5l
ZCBZWVNUWVBFX0lTX1RSSVZJQUwgJiYgWVlTVFlQRV9JU19UUklWSUFMKSkpCisJIHx8IChkZWZp
bmVkIFlZTFRZUEVfSVNfVFJJVklBTCAmJiBZWUxUWVBFX0lTX1RSSVZJQUwgXAorCSAgICAgJiYg
ZGVmaW5lZCBZWVNUWVBFX0lTX1RSSVZJQUwgJiYgWVlTVFlQRV9JU19UUklWSUFMKSkpCiAKIC8q
IEEgdHlwZSB0aGF0IGlzIHByb3Blcmx5IGFsaWduZWQgZm9yIGFueSBzdGFjayBtZW1iZXIuICAq
LwogdW5pb24geXlhbGxvYwogewotICB5eXR5cGVfaW50MTYgeXlzczsKLSAgWVlTVFlQRSB5eXZz
OwotICAgIFlZTFRZUEUgeXlsczsKKyAgeXl0eXBlX2ludDE2IHl5c3NfYWxsb2M7CisgIFlZU1RZ
UEUgeXl2c19hbGxvYzsKKyAgWVlMVFlQRSB5eWxzX2FsbG9jOwogfTsKIAogLyogVGhlIHNpemUg
b2YgdGhlIG1heGltdW0gZ2FwIGJldHdlZW4gb25lIGFsaWduZWQgc3RhY2sgYW5kIHRoZSBuZXh0
LiAgKi8KQEAgLTU3OSw0MiArNTIxLDQ2IEBAIHVuaW9uIHl5YWxsb2MKICAgICAgKChOKSAqIChz
aXplb2YgKHl5dHlwZV9pbnQxNikgKyBzaXplb2YgKFlZU1RZUEUpICsgc2l6ZW9mIChZWUxUWVBF
KSkgXAogICAgICAgKyAyICogWVlTVEFDS19HQVBfTUFYSU1VTSkKIAotLyogQ29weSBDT1VOVCBv
YmplY3RzIGZyb20gRlJPTSB0byBUTy4gIFRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRvCi0g
ICBub3Qgb3ZlcmxhcC4gICovCi0jIGlmbmRlZiBZWUNPUFkKLSMgIGlmIGRlZmluZWQgX19HTlVD
X18gJiYgMSA8IF9fR05VQ19fCi0jICAgZGVmaW5lIFlZQ09QWShUbywgRnJvbSwgQ291bnQpIFwK
LSAgICAgIF9fYnVpbHRpbl9tZW1jcHkgKFRvLCBGcm9tLCAoQ291bnQpICogc2l6ZW9mICgqKEZy
b20pKSkKLSMgIGVsc2UKLSMgICBkZWZpbmUgWVlDT1BZKFRvLCBGcm9tLCBDb3VudCkgICAgICAg
IFwKLSAgICAgIGRvICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgWVlTSVpFX1QgeXlpOyAgICAgICAgICAgICAgICBcCi0gICAgICBmb3IgKHl5
aSA9IDA7IHl5aSA8IChDb3VudCk7IHl5aSsrKSAgICBcCi0gICAgICAgIChUbylbeXlpXSA9IChG
cm9tKVt5eWldOyAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHdo
aWxlIChZWUlEICgwKSkKLSMgIGVuZGlmCi0jIGVuZGlmCisjIGRlZmluZSBZWUNPUFlfTkVFREVE
IDEKIAogLyogUmVsb2NhdGUgU1RBQ0sgZnJvbSBpdHMgb2xkIGxvY2F0aW9uIHRvIHRoZSBuZXcg
b25lLiAgVGhlCiAgICBsb2NhbCB2YXJpYWJsZXMgWVlTSVpFIGFuZCBZWVNUQUNLU0laRSBnaXZl
IHRoZSBvbGQgYW5kIG5ldyBudW1iZXIgb2YKICAgIGVsZW1lbnRzIGluIHRoZSBzdGFjaywgYW5k
IFlZUFRSIGdpdmVzIHRoZSBuZXcgbG9jYXRpb24gb2YgdGhlCiAgICBzdGFjay4gIEFkdmFuY2Ug
WVlQVFIgdG8gYSBwcm9wZXJseSBhbGlnbmVkIGxvY2F0aW9uIGZvciB0aGUgbmV4dAogICAgc3Rh
Y2suICAqLwotIyBkZWZpbmUgWVlTVEFDS19SRUxPQ0FURShTdGFjaykgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICBkbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgWVlTSVpFX1QgeXlu
ZXdieXRlczsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgWVlDT1BZICgmeXlwdHItPlN0
YWNrLCBTdGFjaywgeXlzaXplKTsgICAgICAgICAgICAgICAgXAotICAgIFN0YWNrID0gJnl5cHRy
LT5TdGFjazsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeXluZXdieXRlcyA9IHl5c3Rh
Y2tzaXplICogc2l6ZW9mICgqU3RhY2spICsgWVlTVEFDS19HQVBfTUFYSU1VTTsgXAotICAgIHl5
cHRyICs9IHl5bmV3Ynl0ZXMgLyBzaXplb2YgKCp5eXB0cik7ICAgICAgICAgICAgICAgIFwKLSAg
ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisjIGRlZmluZSBZWVNU
QUNLX1JFTE9DQVRFKFN0YWNrX2FsbG9jLCBTdGFjaykJCQkJXAorICAgIGRvCQkJCQkJCQkJXAor
ICAgICAgewkJCQkJCQkJCVwKKwlZWVNJWkVfVCB5eW5ld2J5dGVzOwkJCQkJCVwKKwlZWUNPUFkg
KCZ5eXB0ci0+U3RhY2tfYWxsb2MsIFN0YWNrLCB5eXNpemUpOwkJCVwKKwlTdGFjayA9ICZ5eXB0
ci0+U3RhY2tfYWxsb2M7CQkJCQlcCisJeXluZXdieXRlcyA9IHl5c3RhY2tzaXplICogc2l6ZW9m
ICgqU3RhY2spICsgWVlTVEFDS19HQVBfTUFYSU1VTTsgXAorCXl5cHRyICs9IHl5bmV3Ynl0ZXMg
LyBzaXplb2YgKCp5eXB0cik7CQkJCVwKKyAgICAgIH0JCQkJCQkJCQlcCiAgICAgd2hpbGUgKFlZ
SUQgKDApKQogCiAjZW5kaWYKIAorI2lmIGRlZmluZWQgWVlDT1BZX05FRURFRCAmJiBZWUNPUFlf
TkVFREVECisvKiBDb3B5IENPVU5UIG9iamVjdHMgZnJvbSBTUkMgdG8gRFNULiAgVGhlIHNvdXJj
ZSBhbmQgZGVzdGluYXRpb24gZG8KKyAgIG5vdCBvdmVybGFwLiAgKi8KKyMgaWZuZGVmIFlZQ09Q
WQorIyAgaWYgZGVmaW5lZCBfX0dOVUNfXyAmJiAxIDwgX19HTlVDX18KKyMgICBkZWZpbmUgWVlD
T1BZKERzdCwgU3JjLCBDb3VudCkgXAorICAgICAgX19idWlsdGluX21lbWNweSAoRHN0LCBTcmMs
IChDb3VudCkgKiBzaXplb2YgKCooU3JjKSkpCisjICBlbHNlCisjICAgZGVmaW5lIFlZQ09QWShE
c3QsIFNyYywgQ291bnQpICAgICAgICAgICAgICBcCisgICAgICBkbyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgWVlTSVpFX1QgeXlpOyAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgZm9yICh5eWkgPSAwOyB5eWkgPCAoQ291bnQpOyB5eWkr
KykgICBcCisgICAgICAgICAgICAoRHN0KVt5eWldID0gKFNyYylbeXlpXTsgICAgICAgICAgICBc
CisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICB3aGlsZSAoWVlJRCAoMCkpCisjICBlbmRpZgorIyBlbmRpZgorI2VuZGlmIC8qICFZWUNPUFlf
TkVFREVEICovCisKIC8qIFlZRklOQUwgLS0gU3RhdGUgbnVtYmVyIG9mIHRoZSB0ZXJtaW5hdGlv
biBzdGF0ZS4gICovCiAjZGVmaW5lIFlZRklOQUwgIDc0CiAvKiBZWUxBU1QgLS0gTGFzdCBpbmRl
eCBpbiBZWVRBQkxFLiAgKi8KQEAgLTYzMyw3ICs1NzksNyBAQCB1bmlvbiB5eWFsbG9jCiAjZGVm
aW5lIFlZVU5ERUZUT0sgIDIKICNkZWZpbmUgWVlNQVhVVE9LICAgMzQ5CiAKLSNkZWZpbmUgWVlU
UkFOU0xBVEUoWVlYKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgWVlUUkFOU0xB
VEUoWVlYKQkJCQkJCVwKICAgKCh1bnNpZ25lZCBpbnQpIChZWVgpIDw9IFlZTUFYVVRPSyA/IHl5
dHJhbnNsYXRlW1lZWF0gOiBZWVVOREVGVE9LKQogCiAvKiBZWVRSQU5TTEFURVtZWUxFWF0gLS0g
Qmlzb24gc3ltYm9sIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIFlZTEVYLiAgKi8KQEAgLTc3MCwz
MSArNzE2LDMxIEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlyaHNbXSA9CiAvKiBZWVJM
SU5FW1lZTl0gLS0gc291cmNlIGxpbmUgd2hlcmUgcnVsZSBudW1iZXIgWVlOIHdhcyBkZWZpbmVk
LiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDE2IHl5cmxpbmVbXSA9CiB7Ci0gICAgICAg
MCwgICAxNzYsICAgMTc2LCAgIDE3NywgICAxODAsICAgMjIzLCAgIDIyNiwgICAyMzksICAgMjQ0
LCAgIDI0OSwKLSAgICAgMjU1LCAgIDI1OCwgICAyNjEsICAgMjY0LCAgIDM1OSwgICAzNjksICAg
MzgyLCAgIDM5MCwgICA0OTAsICAgNDkzLAotICAgICA1MDEsICAgNTA0LCAgIDUxMCwgICA1MTQs
ICAgNTIxLCAgIDUyNywgICA1MzYsICAgNTQ0LCAgIDU5OSwgICA2MDksCi0gICAgIDYxMiwgICA2
MjIsICAgNjMyLCAgIDY1MywgICA2NTQsICAgNjU1LCAgIDY2MCwgICA2NjEsICAgNjY5LCAgIDY4
MCwKLSAgICAgNjgxLCAgIDY4OSwgICA3MDAsICAgNzA0LCAgIDcwNSwgICA3MTUsICAgNzI1LCAg
IDczNSwgICA3NDgsICAgNzQ5LAotICAgICA3NTksICAgNzcyLCAgIDc3NiwgICA3ODAsICAgNzg0
LCAgIDc4NSwgICA3OTgsICAgNzk5LCAgIDgxMiwgICA4MTMsCi0gICAgIDgyNiwgICA4MjcsICAg
ODQ0LCAgIDg0NSwgICA4NTgsICAgODU5LCAgIDg2MCwgICA4NjEsICAgODYyLCAgIDg2NiwKLSAg
ICAgODY5LCAgIDg4MCwgICA4ODgsICAgOTE1LCAgIDkyMCwgICA5MzQsICAgOTg5LCAgIDk5Miwg
ICA5OTksICAxMDA3LAotICAgIDEwMjgsICAxMDQ5LCAgMTA1OSwgIDEwODcsICAxMDkyLCAgMTEw
MiwgIDExMDcsICAxMTE3LCAgMTEyMCwgIDExMjMsCi0gICAgMTEyNiwgIDExMzIsICAxMTM5LCAg
MTE0MiwgIDExNjQsICAxMTgyLCAgMTIwNiwgIDEyMjksICAxMjMzLCAgMTI1MSwKLSAgICAxMjU5
LCAgMTI5MSwgIDEzMTEsICAxMzMyLCAgMTM0MSwgIDEzNjQsICAxMzY3LCAgMTM3MywgIDEzODEs
ICAxMzg5LAotICAgIDEzOTcsICAxNDA3LCAgMTQxNCwgIDE0MTcsICAxNDIwLCAgMTQyNiwgIDE0
MjksICAxNDQ0LCAgMTQ0OCwgIDE0NTIsCi0gICAgMTQ1NiwgIDE0NjAsICAxNDY1LCAgMTQ3MCwg
IDE0NzUsICAxNDgwLCAgMTQ4NSwgIDE0OTAsICAxNDk1LCAgMTUwMCwKLSAgICAxNTA1LCAgMTUx
MCwgIDE1MTUsICAxNTIwLCAgMTUyNCwgIDE1MjgsICAxNTM2LCAgMTU0NCwgIDE1NDgsICAxNTYx
LAotICAgIDE1NjEsICAxNTc1LCAgMTU3NSwgIDE1ODQsICAxNTg3LCAgMTYwMywgIDE2MzYsICAx
NjQwLCAgMTY0NiwgIDE2NTMsCi0gICAgMTY2OCwgIDE2NzIsICAxNjc2LCAgMTY3NywgIDE2ODMs
ICAxNjg0LCAgMTY4NSwgIDE2ODYsICAxNjg3LCAgMTY5MSwKLSAgICAxNjkyLCAgMTY5MiwgIDE2
OTIsICAxNzAyLCAgMTcwMywgIDE3MDcsICAxNzA3LCAgMTcwOCwgIDE3MDgsICAxNzEzLAotICAg
IDE3MTYsICAxNzI2LCAgMTcyOSwgIDE3MzUsICAxNzM2LCAgMTc0MCwgIDE3NDgsICAxNzUyLCAg
MTc2MiwgIDE3NjcsCi0gICAgMTc4NCwgIDE3ODQsICAxNzg5LCAgMTc4OSwgIDE3OTYsICAxNzk2
LCAgMTgwNCwgIDE4MDcsICAxODEzLCAgMTgxNiwKLSAgICAxODIyLCAgMTgyNiwgIDE4MzMsICAx
ODQwLCAgMTg0NywgIDE4NTQsICAxODY1LCAgMTg3NCwgIDE4NzgsICAxODg1LAotICAgIDE4ODgs
ICAxODk0LCAgMTg5NAorICAgICAgIDAsICAgMTgwLCAgIDE4MCwgICAxODEsICAgMTg0LCAgIDIy
NywgICAyMzAsICAgMjQzLCAgIDI0OCwgICAyNTMsCisgICAgIDI1OSwgICAyNjIsICAgMjY1LCAg
IDI2OCwgICAzNjMsICAgMzczLCAgIDM4NiwgICAzOTQsICAgNDk0LCAgIDQ5NywKKyAgICAgNTA1
LCAgIDUwOCwgICA1MTQsICAgNTE4LCAgIDUyNSwgICA1MzEsICAgNTQwLCAgIDU0OCwgICA2MDMs
ICAgNjEzLAorICAgICA2MTYsICAgNjI2LCAgIDYzNiwgICA2NTcsICAgNjU4LCAgIDY1OSwgICA2
NjQsICAgNjY1LCAgIDY3MywgICA2ODQsCisgICAgIDY4NSwgICA2OTMsICAgNzA0LCAgIDcwOCwg
ICA3MDksICAgNzE5LCAgIDcyOSwgICA3MzksICAgNzUyLCAgIDc1MywKKyAgICAgNzYzLCAgIDc3
NiwgICA3ODAsICAgNzg0LCAgIDc4OCwgICA3ODksICAgODAyLCAgIDgwMywgICA4MTYsICAgODE3
LAorICAgICA4MzAsICAgODMxLCAgIDg0OCwgICA4NDksICAgODYyLCAgIDg2MywgICA4NjQsICAg
ODY1LCAgIDg2NiwgICA4NzAsCisgICAgIDg3MywgICA4ODQsICAgODkyLCAgIDkxOSwgICA5MjQs
ICAgOTM4LCAgIDk5MywgICA5OTYsICAxMDAzLCAgMTAxMSwKKyAgICAxMDMyLCAgMTA1MywgIDEw
NjMsICAxMDkxLCAgMTA5NiwgIDExMDYsICAxMTExLCAgMTEyMSwgIDExMjQsICAxMTI3LAorICAg
IDExMzAsICAxMTM2LCAgMTE0MywgIDExNDYsICAxMTY4LCAgMTE4NiwgIDEyMTAsICAxMjMzLCAg
MTIzNywgIDEyNTUsCisgICAgMTI2MywgIDEyOTUsICAxMzE1LCAgMTMzNiwgIDEzNDUsICAxMzY4
LCAgMTM3MSwgIDEzNzcsICAxMzg1LCAgMTM5MywKKyAgICAxNDAxLCAgMTQxMSwgIDE0MTgsICAx
NDIxLCAgMTQyNCwgIDE0MzAsICAxNDMzLCAgMTQ0OCwgIDE0NTIsICAxNDU2LAorICAgIDE0NjAs
ICAxNDY0LCAgMTQ2OSwgIDE0NzQsICAxNDc5LCAgMTQ4NCwgIDE0ODksICAxNDk0LCAgMTQ5OSwg
IDE1MDQsCisgICAgMTUwOSwgIDE1MTQsICAxNTE5LCAgMTUyNCwgIDE1MjgsICAxNTMyLCAgMTU0
MCwgIDE1NDgsICAxNTUyLCAgMTU2NSwKKyAgICAxNTY1LCAgMTU3OSwgIDE1NzksICAxNTg4LCAg
MTU5MSwgIDE2MDcsICAxNjQwLCAgMTY0NCwgIDE2NTAsICAxNjU3LAorICAgIDE2NzIsICAxNjc2
LCAgMTY4MCwgIDE2ODEsICAxNjg3LCAgMTY4OCwgIDE2ODksICAxNjkwLCAgMTY5MSwgIDE2OTUs
CisgICAgMTY5NiwgIDE2OTYsICAxNjk2LCAgMTcwNiwgIDE3MDcsICAxNzExLCAgMTcxMSwgIDE3
MTIsICAxNzEyLCAgMTcxNywKKyAgICAxNzIwLCAgMTczMCwgIDE3MzMsICAxNzM5LCAgMTc0MCwg
IDE3NDQsICAxNzUyLCAgMTc1NiwgIDE3NjYsICAxNzcxLAorICAgIDE3ODgsICAxNzg4LCAgMTc5
MywgIDE3OTMsICAxODAwLCAgMTgwMCwgIDE4MDgsICAxODExLCAgMTgxNywgIDE4MjAsCisgICAg
MTgyNiwgIDE4MzAsICAxODM3LCAgMTg0NCwgIDE4NTEsICAxODU4LCAgMTg2OSwgIDE4NzgsICAx
ODgyLCAgMTg4OSwKKyAgICAxODkyLCAgMTg5OCwgIDE4OTgKIH07CiAjZW5kaWYKIAotI2lmIFlZ
REVCVUcgfHwgWVlFUlJPUl9WRVJCT1NFIHx8IFlZVE9LRU5fVEFCTEUKKyNpZiBZWURFQlVHIHx8
IFlZRVJST1JfVkVSQk9TRSB8fCAwCiAvKiBZWVROQU1FW1NZTUJPTC1OVU1dIC0tIFN0cmluZyBu
YW1lIG9mIHRoZSBzeW1ib2wgU1lNQk9MLU5VTS4KICAgIEZpcnN0LCB0aGUgdGVybWluYWxzLCB0
aGVuLCBzdGFydGluZyBhdCBZWU5UT0tFTlMsIG5vbnRlcm1pbmFscy4gICovCiBzdGF0aWMgY29u
c3QgY2hhciAqY29uc3QgeXl0bmFtZVtdID0KQEAgLTgzNCwxNiArNzgwLDE2IEBAIHN0YXRpYyBj
b25zdCBjaGFyICpjb25zdCB5eXRuYW1lW10gPQogICAiaW5pdF9kZWNsYXJhdG9yX2xpc3QiLCAi
c2luZ2xlX2RlY2xhcmF0aW9uIiwgImZ1bGx5X3NwZWNpZmllZF90eXBlIiwKICAgInR5cGVfcXVh
bGlmaWVyIiwgInR5cGVfc3BlY2lmaWVyIiwgInByZWNpc2lvbl9xdWFsaWZpZXIiLAogICAidHlw
ZV9zcGVjaWZpZXJfbm9fcHJlYyIsICJ0eXBlX3NwZWNpZmllcl9ub25hcnJheSIsICJzdHJ1Y3Rf
c3BlY2lmaWVyIiwKLSAgIkAxIiwgIkAyIiwgInN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IiwgInN0
cnVjdF9kZWNsYXJhdGlvbiIsCisgICIkQDEiLCAiJEAyIiwgInN0cnVjdF9kZWNsYXJhdGlvbl9s
aXN0IiwgInN0cnVjdF9kZWNsYXJhdGlvbiIsCiAgICJzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0Iiwg
InN0cnVjdF9kZWNsYXJhdG9yIiwgImluaXRpYWxpemVyIiwKICAgImRlY2xhcmF0aW9uX3N0YXRl
bWVudCIsICJzdGF0ZW1lbnQiLCAic2ltcGxlX3N0YXRlbWVudCIsCi0gICJjb21wb3VuZF9zdGF0
ZW1lbnQiLCAiQDMiLCAiQDQiLCAic3RhdGVtZW50X25vX25ld19zY29wZSIsCi0gICJzdGF0ZW1l
bnRfd2l0aF9zY29wZSIsICJANSIsICJANiIsICJjb21wb3VuZF9zdGF0ZW1lbnRfbm9fbmV3X3Nj
b3BlIiwKKyAgImNvbXBvdW5kX3N0YXRlbWVudCIsICIkQDMiLCAiJEA0IiwgInN0YXRlbWVudF9u
b19uZXdfc2NvcGUiLAorICAic3RhdGVtZW50X3dpdGhfc2NvcGUiLCAiJEA1IiwgIiRANiIsICJj
b21wb3VuZF9zdGF0ZW1lbnRfbm9fbmV3X3Njb3BlIiwKICAgInN0YXRlbWVudF9saXN0IiwgImV4
cHJlc3Npb25fc3RhdGVtZW50IiwgInNlbGVjdGlvbl9zdGF0ZW1lbnQiLAotICAic2VsZWN0aW9u
X3Jlc3Rfc3RhdGVtZW50IiwgImNvbmRpdGlvbiIsICJpdGVyYXRpb25fc3RhdGVtZW50IiwgIkA3
IiwKLSAgIkA4IiwgIkA5IiwgImZvcl9pbml0X3N0YXRlbWVudCIsICJjb25kaXRpb25vcHQiLCAi
Zm9yX3Jlc3Rfc3RhdGVtZW50IiwKKyAgInNlbGVjdGlvbl9yZXN0X3N0YXRlbWVudCIsICJjb25k
aXRpb24iLCAiaXRlcmF0aW9uX3N0YXRlbWVudCIsICIkQDciLAorICAiJEA4IiwgIiRAOSIsICJm
b3JfaW5pdF9zdGF0ZW1lbnQiLCAiY29uZGl0aW9ub3B0IiwgImZvcl9yZXN0X3N0YXRlbWVudCIs
CiAgICJqdW1wX3N0YXRlbWVudCIsICJ0cmFuc2xhdGlvbl91bml0IiwgImV4dGVybmFsX2RlY2xh
cmF0aW9uIiwKLSAgImZ1bmN0aW9uX2RlZmluaXRpb24iLCAiQDEwIiwgMAorICAiZnVuY3Rpb25f
ZGVmaW5pdGlvbiIsICIkQDEwIiwgWVlfTlVMTAogfTsKICNlbmRpZgogCkBAIC05MTcsOCArODYz
LDggQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXIyW10gPQogICAgICAgIDEsICAgICAw
LCAgICAgMwogfTsKIAotLyogWVlERUZBQ1RbU1RBVEUtTkFNRV0gLS0gRGVmYXVsdCBydWxlIHRv
IHJlZHVjZSB3aXRoIGluIHN0YXRlCi0gICBTVEFURS1OVU0gd2hlbiBZWVRBQkxFIGRvZXNuJ3Qg
c3BlY2lmeSBzb21ldGhpbmcgZWxzZSB0byBkby4gIFplcm8KKy8qIFlZREVGQUNUW1NUQVRFLU5B
TUVdIC0tIERlZmF1bHQgcmVkdWN0aW9uIG51bWJlciBpbiBzdGF0ZSBTVEFURS1OVU0uCisgICBQ
ZXJmb3JtZWQgd2hlbiBZWVRBQkxFIGRvZXNuJ3Qgc3BlY2lmeSBzb21ldGhpbmcgZWxzZSB0byBk
by4gIFplcm8KICAgIG1lYW5zIHRoZSBkZWZhdWx0IGlzIGFuIGVycm9yLiAgKi8KIHN0YXRpYyBj
b25zdCB5eXR5cGVfdWludDggeXlkZWZhY3RbXSA9CiB7CkBAIC0xMDIzLDggKzk2OSw3IEBAIHN0
YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlwZ290b1tdID0KIAogLyogWVlUQUJMRVtZWVBBQ1Rb
U1RBVEUtTlVNXV0uICBXaGF0IHRvIGRvIGluIHN0YXRlIFNUQVRFLU5VTS4gIElmCiAgICBwb3Np
dGl2ZSwgc2hpZnQgdGhhdCB0b2tlbi4gIElmIG5lZ2F0aXZlLCByZWR1Y2UgdGhlIHJ1bGUgd2hp
Y2gKLSAgIG51bWJlciBpcyB0aGUgb3Bwb3NpdGUuICBJZiB6ZXJvLCBkbyB3aGF0IFlZREVGQUNU
IHNheXMuCi0gICBJZiBZWVRBQkxFX05JTkYsIHN5bnRheCBlcnJvci4gICovCisgICBudW1iZXIg
aXMgdGhlIG9wcG9zaXRlLiAgSWYgWVlUQUJMRV9OSU5GLCBzeW50YXggZXJyb3IuICAqLwogI2Rl
ZmluZSBZWVRBQkxFX05JTkYgLTE2Ngogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXRhYmxl
W10gPQogewpAQCAtMTE4MCw2ICsxMTI1LDEyIEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYg
eXl0YWJsZVtdID0KICAgICAgIDMxCiB9OwogCisjZGVmaW5lIHl5cGFjdF92YWx1ZV9pc19kZWZh
dWx0KFl5c3RhdGUpIFwKKyAgKCEhKChZeXN0YXRlKSA9PSAoLTI2MSkpKQorCisjZGVmaW5lIHl5
dGFibGVfdmFsdWVfaXNfZXJyb3IoWXl0YWJsZV92YWx1ZSkgXAorICBZWUlEICgwKQorCiBzdGF0
aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5Y2hlY2tbXSA9CiB7CiAgICAgICAgMCwgICAgMjUsICAg
IDg5LCAgICA4OCwgICAgOTYsICAgIDU3LCAgIDE2MiwgICAgNzMsICAgMTUzLCAgIDEyOCwKQEAg
LTEzNzEsNzEgKzEzMjIsODEgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXN0b3NbXSA9
CiAgICAgIDE2MSwgICAgNzIsICAgMTI0LCAgIDE1NywgICAxNTgsICAgMTUwLCAgICA4MQogfTsK
IAotI2RlZmluZSB5eWVycm9rICAgICAgICAoeXllcnJzdGF0dXMgPSAwKQotI2RlZmluZSB5eWNs
ZWFyaW4gICAgKHl5Y2hhciA9IFlZRU1QVFkpCi0jZGVmaW5lIFlZRU1QVFkgICAgICAgICgtMikK
LSNkZWZpbmUgWVlFT0YgICAgICAgIDAKKyNkZWZpbmUgeXllcnJvawkJKHl5ZXJyc3RhdHVzID0g
MCkKKyNkZWZpbmUgeXljbGVhcmluCSh5eWNoYXIgPSBZWUVNUFRZKQorI2RlZmluZSBZWUVNUFRZ
CQkoLTIpCisjZGVmaW5lIFlZRU9GCQkwCiAKLSNkZWZpbmUgWVlBQ0NFUFQgICAgZ290byB5eWFj
Y2VwdGxhYgotI2RlZmluZSBZWUFCT1JUICAgICAgICBnb3RvIHl5YWJvcnRsYWIKLSNkZWZpbmUg
WVlFUlJPUiAgICAgICAgZ290byB5eWVycm9ybGFiCisjZGVmaW5lIFlZQUNDRVBUCWdvdG8geXlh
Y2NlcHRsYWIKKyNkZWZpbmUgWVlBQk9SVAkJZ290byB5eWFib3J0bGFiCisjZGVmaW5lIFlZRVJS
T1IJCWdvdG8geXllcnJvcmxhYgogCiAKIC8qIExpa2UgWVlFUlJPUiBleGNlcHQgZG8gY2FsbCB5
eWVycm9yLiAgVGhpcyByZW1haW5zIGhlcmUgdGVtcG9yYXJpbHkKICAgIHRvIGVhc2UgdGhlIHRy
YW5zaXRpb24gdG8gdGhlIG5ldyBtZWFuaW5nIG9mIFlZRVJST1IsIGZvciBHQ0MuCi0gICBPbmNl
IEdDQyB2ZXJzaW9uIDIgaGFzIHN1cHBsYW50ZWQgdmVyc2lvbiAxLCB0aGlzIGNhbiBnby4gICov
Ci0KLSNkZWZpbmUgWVlGQUlMICAgICAgICBnb3RvIHl5ZXJybGFiCisgICBPbmNlIEdDQyB2ZXJz
aW9uIDIgaGFzIHN1cHBsYW50ZWQgdmVyc2lvbiAxLCB0aGlzIGNhbiBnby4gIEhvd2V2ZXIsCisg
ICBZWUZBSUwgYXBwZWFycyB0byBiZSBpbiB1c2UuICBOZXZlcnRoZWxlc3MsIGl0IGlzIGZvcm1h
bGx5IGRlcHJlY2F0ZWQKKyAgIGluIEJpc29uIDIuNC4yJ3MgTkVXUyBlbnRyeSwgd2hlcmUgYSBw
bGFuIHRvIHBoYXNlIGl0IG91dCBpcworICAgZGlzY3Vzc2VkLiAgKi8KKworI2RlZmluZSBZWUZB
SUwJCWdvdG8geXllcnJsYWIKKyNpZiBkZWZpbmVkIFlZRkFJTAorICAvKiBUaGlzIGlzIGhlcmUg
dG8gc3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0aGUgR0NDIGNwcCdzCisgICAgIC1XdW51c2VkLW1h
Y3Jvcy4gIE5vcm1hbGx5IHdlIGRvbid0IHdvcnJ5IGFib3V0IHRoYXQgd2FybmluZywgYnV0Cisg
ICAgIHNvbWUgdXNlcnMgZG8sIGFuZCB3ZSB3YW50IHRvIG1ha2UgaXQgZWFzeSBmb3IgdXNlcnMg
dG8gcmVtb3ZlCisgICAgIFlZRkFJTCB1c2VzLCB3aGljaCB3aWxsIHByb2R1Y2Ugd2FybmluZ3Mg
ZnJvbSBCaXNvbiAyLjUuICAqLworI2VuZGlmCiAKICNkZWZpbmUgWVlSRUNPVkVSSU5HKCkgICgh
IXl5ZXJyc3RhdHVzKQogCi0jZGVmaW5lIFlZQkFDS1VQKFRva2VuLCBWYWx1ZSkgICAgICAgICAg
ICAgICAgICAgIFwKLWRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGlmICh5
eWNoYXIgPT0gWVlFTVBUWSAmJiB5eWxlbiA9PSAxKSAgICAgICAgICAgICAgICBcCi0gICAgeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgeXljaGFyID0gKFRva2VuKTsg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICB5eWx2YWwgPSAoVmFsdWUpOyAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgIHl5dG9rZW4gPSBZWVRSQU5TTEFURSAoeXljaGFyKTsg
ICAgICAgICAgICAgICAgXAotICAgICAgWVlQT1BTVEFDSyAoMSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgICAgZ290byB5eWJhY2t1cDsgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBlbHNlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorI2RlZmluZSBZWUJBQ0tVUChUb2tlbiwgVmFsdWUpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKK2RvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgIGlmICh5eWNoYXIgPT0gWVlFTVBUWSkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHl5Y2hh
ciA9IChUb2tlbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICB5eWx2YWwgPSAoVmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgWVlQT1BTVEFDSyAoeXlsZW4pOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgIHl5c3RhdGUgPSAqeXlzc3A7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBnb3RvIHl5YmFja3VwOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZWxzZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgICAgeXllcnJvciAoJnl5bGxvYywgY29udGV4dCwgWVlfKCJzeW50YXgg
ZXJyb3I6IGNhbm5vdCBiYWNrIHVwIikpOyBcCi0gICAgICBZWUVSUk9SOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgWVlFUlJPUjsJCQkJCQkJXAorICAgIH0JCQkJCQkJCVwKIHdoaWxlIChZWUlEICgwKSkK
IAotCi0jZGVmaW5lIFlZVEVSUk9SICAgIDEKLSNkZWZpbmUgWVlFUlJDT0RFICAgIDI1NgorLyog
RXJyb3IgdG9rZW4gbnVtYmVyICovCisjZGVmaW5lIFlZVEVSUk9SCTEKKyNkZWZpbmUgWVlFUlJD
T0RFCTI1NgogCiAKIC8qIFlZTExPQ19ERUZBVUxUIC0tIFNldCBDVVJSRU5UIHRvIHNwYW4gZnJv
bSBSSFNbMV0gdG8gUkhTW05dLgogICAgSWYgTiBpcyAwLCB0aGVuIHNldCBDVVJSRU5UIHRvIHRo
ZSBlbXB0eSBsb2NhdGlvbiB3aGljaCBlbmRzCiAgICB0aGUgcHJldmlvdXMgc3ltYm9sOiBSSFNb
MF0gKGFsd2F5cyBkZWZpbmVkKS4gICovCiAKLSNkZWZpbmUgWVlSSFNMT0MoUmhzLCBLKSAoKFJo
cylbS10pCiAjaWZuZGVmIFlZTExPQ19ERUZBVUxUCi0jIGRlZmluZSBZWUxMT0NfREVGQVVMVChD
dXJyZW50LCBSaHMsIE4pICAgICAgICAgICAgICAgIFwKLSAgICBkbyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIGlmIChZWUlEIChOKSkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIChDdXJyZW50KS5maXJzdF9saW5lICAgPSBZWVJI
U0xPQyAoUmhzLCAxKS5maXJzdF9saW5lOyAgICBcCi0gICAgICAoQ3VycmVudCkuZmlyc3RfY29s
dW1uID0gWVlSSFNMT0MgKFJocywgMSkuZmlyc3RfY29sdW1uOyAgICBcCi0gICAgICAoQ3VycmVu
dCkubGFzdF9saW5lICAgID0gWVlSSFNMT0MgKFJocywgTikubGFzdF9saW5lOyAgICAgICAgXAot
ICAgICAgKEN1cnJlbnQpLmxhc3RfY29sdW1uICA9IFlZUkhTTE9DIChSaHMsIE4pLmxhc3RfY29s
dW1uOyAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIChDdXJyZW50KS5maXJzdF9saW5lICAgPSAoQ3Vy
cmVudCkubGFzdF9saW5lICAgPSAgICAgICAgXAotICAgICAgICBZWVJIU0xPQyAoUmhzLCAwKS5s
YXN0X2xpbmU7ICAgICAgICAgICAgICAgIFwKLSAgICAgIChDdXJyZW50KS5maXJzdF9jb2x1bW4g
PSAoQ3VycmVudCkubGFzdF9jb2x1bW4gPSAgICAgICAgXAotICAgICAgICBZWVJIU0xPQyAoUmhz
LCAwKS5sYXN0X2NvbHVtbjsgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyMgZGVmaW5lIFlZTExPQ19ERUZBVUxUKEN1cnJlbnQsIFJocywg
TikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgIGlmIChZWUlEIChOKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoQ3VycmVudCkuZmly
c3RfbGluZSAgID0gWVlSSFNMT0MgKFJocywgMSkuZmlyc3RfbGluZTsgICAgICAgIFwKKyAgICAg
ICAgICAoQ3VycmVudCkuZmlyc3RfY29sdW1uID0gWVlSSFNMT0MgKFJocywgMSkuZmlyc3RfY29s
dW1uOyAgICAgIFwKKyAgICAgICAgICAoQ3VycmVudCkubGFzdF9saW5lICAgID0gWVlSSFNMT0Mg
KFJocywgTikubGFzdF9saW5lOyAgICAgICAgIFwKKyAgICAgICAgICAoQ3VycmVudCkubGFzdF9j
b2x1bW4gID0gWVlSSFNMT0MgKFJocywgTikubGFzdF9jb2x1bW47ICAgICAgIFwKKyAgICAgICAg
fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAo
Q3VycmVudCkuZmlyc3RfbGluZSAgID0gKEN1cnJlbnQpLmxhc3RfbGluZSAgID0gICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgIFlZUkhTTE9DIChSaHMsIDApLmxhc3RfbGluZTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoQ3VycmVudCkuZmlyc3RfY29sdW1u
ID0gKEN1cnJlbnQpLmxhc3RfY29sdW1uID0gICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFlZ
UkhTTE9DIChSaHMsIDApLmxhc3RfY29sdW1uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICB3aGlsZSAoWVlJRCAoMCkpCiAjZW5kaWYKIAorI2Rl
ZmluZSBZWVJIU0xPQyhSaHMsIEspICgoUmhzKVtLXSkKKwogCiAvKiBZWV9MT0NBVElPTl9QUklO
VCAtLSBQcmludCB0aGUgbG9jYXRpb24gb24gdGhlIHN0cmVhbS4KICAgIFRoaXMgbWFjcm8gd2Fz
IG5vdCBtYW5kYXRlZCBvcmlnaW5hbGx5OiBkZWZpbmUgb25seSBpZiB3ZSBrbm93CkBAIC0xNDQz
LDEwICsxNDA0LDQ2IEBAIHdoaWxlIChZWUlEICgwKSkKIAogI2lmbmRlZiBZWV9MT0NBVElPTl9Q
UklOVAogIyBpZiBkZWZpbmVkIFlZTFRZUEVfSVNfVFJJVklBTCAmJiBZWUxUWVBFX0lTX1RSSVZJ
QUwKLSMgIGRlZmluZSBZWV9MT0NBVElPTl9QUklOVChGaWxlLCBMb2MpICAgICAgICAgICAgXAot
ICAgICBmcHJpbnRmIChGaWxlLCAiJWQuJWQtJWQuJWQiLCAgICAgICAgICAgIFwKLSAgICAgICAg
ICAoTG9jKS5maXJzdF9saW5lLCAoTG9jKS5maXJzdF9jb2x1bW4sICAgIFwKLSAgICAgICAgICAo
TG9jKS5sYXN0X2xpbmUsICAoTG9jKS5sYXN0X2NvbHVtbikKKworLyogUHJpbnQgKllZTE9DUCBv
biBZWU8uICBQcml2YXRlLCBkbyBub3QgcmVseSBvbiBpdHMgZXhpc3RlbmNlLiAqLworCitfX2F0
dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkKKyNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVk
IF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQg
X01TQ19WRVIpCitzdGF0aWMgdW5zaWduZWQKK3l5X2xvY2F0aW9uX3ByaW50XyAoRklMRSAqeXlv
LCBZWUxUWVBFIGNvbnN0ICogY29uc3QgeXlsb2NwKQorI2Vsc2UKK3N0YXRpYyB1bnNpZ25lZAor
eXlfbG9jYXRpb25fcHJpbnRfICh5eW8sIHl5bG9jcCkKKyAgICBGSUxFICp5eW87CisgICAgWVlM
VFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jcDsKKyNlbmRpZgoreworICB1bnNpZ25lZCByZXMgPSAw
OworICBpbnQgZW5kX2NvbCA9IDAgIT0geXlsb2NwLT5sYXN0X2NvbHVtbiA/IHl5bG9jcC0+bGFz
dF9jb2x1bW4gLSAxIDogMDsKKyAgaWYgKDAgPD0geXlsb2NwLT5maXJzdF9saW5lKQorICAgIHsK
KyAgICAgIHJlcyArPSBmcHJpbnRmICh5eW8sICIlZCIsIHl5bG9jcC0+Zmlyc3RfbGluZSk7Cisg
ICAgICBpZiAoMCA8PSB5eWxvY3AtPmZpcnN0X2NvbHVtbikKKyAgICAgICAgcmVzICs9IGZwcmlu
dGYgKHl5bywgIi4lZCIsIHl5bG9jcC0+Zmlyc3RfY29sdW1uKTsKKyAgICB9CisgIGlmICgwIDw9
IHl5bG9jcC0+bGFzdF9saW5lKQorICAgIHsKKyAgICAgIGlmICh5eWxvY3AtPmZpcnN0X2xpbmUg
PCB5eWxvY3AtPmxhc3RfbGluZSkKKyAgICAgICAgeworICAgICAgICAgIHJlcyArPSBmcHJpbnRm
ICh5eW8sICItJWQiLCB5eWxvY3AtPmxhc3RfbGluZSk7CisgICAgICAgICAgaWYgKDAgPD0gZW5k
X2NvbCkKKyAgICAgICAgICAgIHJlcyArPSBmcHJpbnRmICh5eW8sICIuJWQiLCBlbmRfY29sKTsK
KyAgICAgICAgfQorICAgICAgZWxzZSBpZiAoMCA8PSBlbmRfY29sICYmIHl5bG9jcC0+Zmlyc3Rf
Y29sdW1uIDwgZW5kX2NvbCkKKyAgICAgICAgcmVzICs9IGZwcmludGYgKHl5bywgIi0lZCIsIGVu
ZF9jb2wpOworICAgIH0KKyAgcmV0dXJuIHJlczsKKyB9CisKKyMgIGRlZmluZSBZWV9MT0NBVElP
Tl9QUklOVChGaWxlLCBMb2MpICAgICAgICAgIFwKKyAgeXlfbG9jYXRpb25fcHJpbnRfIChGaWxl
LCAmKExvYykpCisKICMgZWxzZQogIyAgZGVmaW5lIFlZX0xPQ0FUSU9OX1BSSU5UKEZpbGUsIExv
YykgKCh2b2lkKSAwKQogIyBlbmRpZgpAQCAtMTQ1NCw3ICsxNDUxLDYgQEAgd2hpbGUgKFlZSUQg
KDApKQogCiAKIC8qIFlZTEVYIC0tIGNhbGxpbmcgYHl5bGV4JyB3aXRoIHRoZSByaWdodCBhcmd1
bWVudHMuICAqLwotCiAjaWZkZWYgWVlMRVhfUEFSQU0KICMgZGVmaW5lIFlZTEVYIHl5bGV4ICgm
eXlsdmFsLCAmeXlsbG9jLCBZWUxFWF9QQVJBTSkKICNlbHNlCkBAIC0xNDY5LDIxICsxNDY1LDIx
IEBAIHdoaWxlIChZWUlEICgwKSkKICMgIGRlZmluZSBZWUZQUklOVEYgZnByaW50ZgogIyBlbmRp
ZgogCi0jIGRlZmluZSBZWURQUklOVEYoQXJncykgICAgICAgICAgICBcCi1kbyB7ICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICBpZiAoeXlkZWJ1ZykgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICBZWUZQUklOVEYgQXJnczsgICAgICAgICAgICAgICAgXAorIyBkZWZpbmUgWVlEUFJJTlRGKEFy
Z3MpCQkJXAorZG8gewkJCQkJCVwKKyAgaWYgKHl5ZGVidWcpCQkJCQlcCisgICAgWVlGUFJJTlRG
IEFyZ3M7CQkJCVwKIH0gd2hpbGUgKFlZSUQgKDApKQogCi0jIGRlZmluZSBZWV9TWU1CT0xfUFJJ
TlQoVGl0bGUsIFR5cGUsIFZhbHVlLCBMb2NhdGlvbikgICAgICAgICAgICAgIFwKLWRvIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaWYgKHl5ZGVidWcpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiVzICIsIFRpdGxl
KTsgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgeXlfc3ltYm9sX3ByaW50IChzdGRlcnIs
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgVHlwZSwgVmFsdWUsIExvY2F0
aW9uLCBjb250ZXh0KTsgXAotICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyMgZGVmaW5lIFlZX1NZTUJPTF9QUklOVChUaXRsZSwgVHlwZSwgVmFsdWUsIExv
Y2F0aW9uKQkJCSAgXAorZG8gewkJCQkJCQkJCSAgXAorICBpZiAoeXlkZWJ1ZykJCQkJCQkJCSAg
XAorICAgIHsJCQkJCQkJCQkgIFwKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiJXMgIiwgVGl0
bGUpOwkJCQkJICBcCisgICAgICB5eV9zeW1ib2xfcHJpbnQgKHN0ZGVyciwJCQkJCQkgIFwKKwkJ
ICBUeXBlLCBWYWx1ZSwgTG9jYXRpb24sIGNvbnRleHQpOyBcCisgICAgICBZWUZQUklOVEYgKHN0
ZGVyciwgIlxuIik7CQkJCQkJICBcCisgICAgfQkJCQkJCQkJCSAgXAogfSB3aGlsZSAoWVlJRCAo
MCkpCiAKIApAQCAtMTUwNiw2ICsxNTAyLDggQEAgeXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91
dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgeXlsb2NhdGlvbnAsIGNvbnRleHQpCiAgICAgVFBhcnNl
Q29udGV4dCogY29udGV4dDsKICNlbmRpZgogeworICBGSUxFICp5eW8gPSB5eW91dHB1dDsKKyAg
WVlVU0UgKHl5byk7CiAgIGlmICgheXl2YWx1ZXApCiAgICAgcmV0dXJuOwogICBZWVVTRSAoeXls
b2NhdGlvbnApOwpAQCAtMTUxOSw3ICsxNTE3LDcgQEAgeXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5
eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgeXlsb2NhdGlvbnAsIGNvbnRleHQpCiAgIHN3aXRj
aCAoeXl0eXBlKQogICAgIHsKICAgICAgIGRlZmF1bHQ6Ci0gICAgYnJlYWs7CisgICAgICAgIGJy
ZWFrOwogICAgIH0KIH0KIApAQCAtMTU2MSwyNCArMTU1OSwyNyBAQCB5eV9zeW1ib2xfcHJpbnQg
KHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCB5eWxvY2F0aW9ucCwgY29udGV4dCkKICNpZiAo
ZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZp
bmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlfc3Rh
Y2tfcHJpbnQgKHl5dHlwZV9pbnQxNiAqYm90dG9tLCB5eXR5cGVfaW50MTYgKnRvcCkKK3l5X3N0
YWNrX3ByaW50ICh5eXR5cGVfaW50MTYgKnl5Ym90dG9tLCB5eXR5cGVfaW50MTYgKnl5dG9wKQog
I2Vsc2UKIHN0YXRpYyB2b2lkCi15eV9zdGFja19wcmludCAoYm90dG9tLCB0b3ApCi0gICAgeXl0
eXBlX2ludDE2ICpib3R0b207Ci0gICAgeXl0eXBlX2ludDE2ICp0b3A7Cit5eV9zdGFja19wcmlu
dCAoeXlib3R0b20sIHl5dG9wKQorICAgIHl5dHlwZV9pbnQxNiAqeXlib3R0b207CisgICAgeXl0
eXBlX2ludDE2ICp5eXRvcDsKICNlbmRpZgogewogICBZWUZQUklOVEYgKHN0ZGVyciwgIlN0YWNr
IG5vdyIpOwotICBmb3IgKDsgYm90dG9tIDw9IHRvcDsgKytib3R0b20pCi0gICAgWVlGUFJJTlRG
IChzdGRlcnIsICIgJWQiLCAqYm90dG9tKTsKKyAgZm9yICg7IHl5Ym90dG9tIDw9IHl5dG9wOyB5
eWJvdHRvbSsrKQorICAgIHsKKyAgICAgIGludCB5eWJvdCA9ICp5eWJvdHRvbTsKKyAgICAgIFlZ
RlBSSU5URiAoc3RkZXJyLCAiICVkIiwgeXlib3QpOworICAgIH0KICAgWVlGUFJJTlRGIChzdGRl
cnIsICJcbiIpOwogfQogCi0jIGRlZmluZSBZWV9TVEFDS19QUklOVChCb3R0b20sIFRvcCkgICAg
ICAgICAgICAgICAgXAotZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBp
ZiAoeXlkZWJ1ZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHl5X3N0YWNrX3By
aW50ICgoQm90dG9tKSwgKFRvcCkpOyAgICAgICAgICAgICAgICBcCisjIGRlZmluZSBZWV9TVEFD
S19QUklOVChCb3R0b20sIFRvcCkJCQkJXAorZG8gewkJCQkJCQkJXAorICBpZiAoeXlkZWJ1ZykJ
CQkJCQkJXAorICAgIHl5X3N0YWNrX3ByaW50ICgoQm90dG9tKSwgKFRvcCkpOwkJCQlcCiB9IHdo
aWxlIChZWUlEICgwKSkKIAogCkBAIC0xNjAzLDIxICsxNjA0LDIxIEBAIHl5X3JlZHVjZV9wcmlu
dCAoeXl2c3AsIHl5bHNwLCB5eXJ1bGUsIGNvbnRleHQpCiAgIGludCB5eWk7CiAgIHVuc2lnbmVk
IGxvbmcgaW50IHl5bG5vID0geXlybGluZVt5eXJ1bGVdOwogICBZWUZQUklOVEYgKHN0ZGVyciwg
IlJlZHVjaW5nIHN0YWNrIGJ5IHJ1bGUgJWQgKGxpbmUgJWx1KTpcbiIsCi0gICAgICAgICB5eXJ1
bGUgLSAxLCB5eWxubyk7CisJICAgICB5eXJ1bGUgLSAxLCB5eWxubyk7CiAgIC8qIFRoZSBzeW1i
b2xzIGJlaW5nIHJlZHVjZWQuICAqLwogICBmb3IgKHl5aSA9IDA7IHl5aSA8IHl5bnJoczsgeXlp
KyspCiAgICAgewotICAgICAgZnByaW50ZiAoc3RkZXJyLCAiICAgJCVkID0gIiwgeXlpICsgMSk7
CisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5aSArIDEpOwogICAgICAg
eXlfc3ltYm9sX3ByaW50IChzdGRlcnIsIHl5cmhzW3l5cHJoc1t5eXJ1bGVdICsgeXlpXSwKLSAg
ICAgICAgICAgICAgICYoeXl2c3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQotICAgICAgICAgICAg
ICAgLCAmKHl5bHNwWyh5eWkgKyAxKSAtICh5eW5yaHMpXSkgICAgICAgICAgICAgICAsIGNvbnRl
eHQpOwotICAgICAgZnByaW50ZiAoc3RkZXJyLCAiXG4iKTsKKwkJICAgICAgICYoeXl2c3BbKHl5
aSArIDEpIC0gKHl5bnJocyldKQorCQkgICAgICAgLCAmKHl5bHNwWyh5eWkgKyAxKSAtICh5eW5y
aHMpXSkJCSAgICAgICAsIGNvbnRleHQpOworICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIp
OwogICAgIH0KIH0KIAotIyBkZWZpbmUgWVlfUkVEVUNFX1BSSU5UKFJ1bGUpICAgICAgICBcCi1k
byB7ICAgICAgICAgICAgICAgICAgICBcCi0gIGlmICh5eWRlYnVnKSAgICAgICAgICAgICAgICBc
CisjIGRlZmluZSBZWV9SRURVQ0VfUFJJTlQoUnVsZSkJCVwKK2RvIHsJCQkJCVwKKyAgaWYgKHl5
ZGVidWcpCQkJCVwKICAgICB5eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eWxzcCwgUnVsZSwgY29u
dGV4dCk7IFwKIH0gd2hpbGUgKFlZSUQgKDApKQogCkBAIC0xNjMzLDcgKzE2MzQsNyBAQCBpbnQg
eXlkZWJ1ZzsKIAogCiAvKiBZWUlOSVRERVBUSCAtLSBpbml0aWFsIHNpemUgb2YgdGhlIHBhcnNl
cidzIHN0YWNrcy4gICovCi0jaWZuZGVmICAgIFlZSU5JVERFUFRICisjaWZuZGVmCVlZSU5JVERF
UFRICiAjIGRlZmluZSBZWUlOSVRERVBUSCAyMDAKICNlbmRpZgogCkBAIC0xNjQ4LDcgKzE2NDks
NiBAQCBpbnQgeXlkZWJ1ZzsKICMgZGVmaW5lIFlZTUFYREVQVEggMTAwMDAKICNlbmRpZgogCi0M
CiAKICNpZiBZWUVSUk9SX1ZFUkJPU0UKIApAQCAtMTcyMCwyNyArMTcyMCwyNyBAQCB5eXRuYW1l
cnIgKGNoYXIgKnl5cmVzLCBjb25zdCBjaGFyICp5eXN0cikKICAgICAgIGNoYXIgY29uc3QgKnl5
cCA9IHl5c3RyOwogCiAgICAgICBmb3IgKDs7KQotICAgIHN3aXRjaCAoKisreXlwKQotICAgICAg
ewotICAgICAgY2FzZSAnXCcnOgotICAgICAgY2FzZSAnLCc6Ci0gICAgICAgIGdvdG8gZG9fbm90
X3N0cmlwX3F1b3RlczsKLQotICAgICAgY2FzZSAnXFwnOgotICAgICAgICBpZiAoKisreXlwICE9
ICdcXCcpCi0gICAgICAgICAgZ290byBkb19ub3Rfc3RyaXBfcXVvdGVzOwotICAgICAgICAvKiBG
YWxsIHRocm91Z2guICAqLwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgaWYgKHl5cmVzKQotICAg
ICAgICAgIHl5cmVzW3l5bl0gPSAqeXlwOwotICAgICAgICB5eW4rKzsKLSAgICAgICAgYnJlYWs7
Ci0KLSAgICAgIGNhc2UgJyInOgotICAgICAgICBpZiAoeXlyZXMpCi0gICAgICAgICAgeXlyZXNb
eXluXSA9ICdcMCc7Ci0gICAgICAgIHJldHVybiB5eW47Ci0gICAgICB9CisJc3dpdGNoICgqKyt5
eXApCisJICB7CisJICBjYXNlICdcJyc6CisJICBjYXNlICcsJzoKKwkgICAgZ290byBkb19ub3Rf
c3RyaXBfcXVvdGVzOworCisJICBjYXNlICdcXCc6CisJICAgIGlmICgqKyt5eXAgIT0gJ1xcJykK
KwkgICAgICBnb3RvIGRvX25vdF9zdHJpcF9xdW90ZXM7CisJICAgIC8qIEZhbGwgdGhyb3VnaC4g
ICovCisJICBkZWZhdWx0OgorCSAgICBpZiAoeXlyZXMpCisJICAgICAgeXlyZXNbeXluXSA9ICp5
eXA7CisJICAgIHl5bisrOworCSAgICBicmVhazsKKworCSAgY2FzZSAnIic6CisJICAgIGlmICh5
eXJlcykKKwkgICAgICB5eXJlc1t5eW5dID0gJ1wwJzsKKwkgICAgcmV0dXJuIHl5bjsKKwkgIH0K
ICAgICBkb19ub3Rfc3RyaXBfcXVvdGVzOiA7CiAgICAgfQogCkBAIC0xNzUxLDExNSArMTc1MSwx
NDUgQEAgeXl0bmFtZXJyIChjaGFyICp5eXJlcywgY29uc3QgY2hhciAqeXlzdHIpCiB9CiAjIGVu
ZGlmCiAKLS8qIENvcHkgaW50byBZWVJFU1VMVCBhbiBlcnJvciBtZXNzYWdlIGFib3V0IHRoZSB1
bmV4cGVjdGVkIHRva2VuCi0gICBZWUNIQVIgd2hpbGUgaW4gc3RhdGUgWVlTVEFURS4gIFJldHVy
biB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCwKLSAgIGluY2x1ZGluZyB0aGUgdGVybWluYXRp
bmcgbnVsbCBieXRlLiAgSWYgWVlSRVNVTFQgaXMgbnVsbCwgZG8gbm90Ci0gICBjb3B5IGFueXRo
aW5nOyBqdXN0IHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd291bGQgYmUKLSAgIGNv
cGllZC4gIEFzIGEgc3BlY2lhbCBjYXNlLCByZXR1cm4gMCBpZiBhbiBvcmRpbmFyeSAic3ludGF4
IGVycm9yIgotICAgbWVzc2FnZSB3aWxsIGRvLiAgUmV0dXJuIFlZU0laRV9NQVhJTVVNIGlmIG92
ZXJmbG93IG9jY3VycyBkdXJpbmcKLSAgIHNpemUgY2FsY3VsYXRpb24uICAqLwotc3RhdGljIFlZ
U0laRV9UCi15eXN5bnRheF9lcnJvciAoY2hhciAqeXlyZXN1bHQsIGludCB5eXN0YXRlLCBpbnQg
eXljaGFyKQotewotICBpbnQgeXluID0geXlwYWN0W3l5c3RhdGVdOworLyogQ29weSBpbnRvICpZ
WU1TRywgd2hpY2ggaXMgb2Ygc2l6ZSAqWVlNU0dfQUxMT0MsIGFuIGVycm9yIG1lc3NhZ2UKKyAg
IGFib3V0IHRoZSB1bmV4cGVjdGVkIHRva2VuIFlZVE9LRU4gZm9yIHRoZSBzdGF0ZSBzdGFjayB3
aG9zZSB0b3AgaXMKKyAgIFlZU1NQLgogCi0gIGlmICghIChZWVBBQ1RfTklORiA8IHl5biAmJiB5
eW4gPD0gWVlMQVNUKSkKLSAgICByZXR1cm4gMDsKLSAgZWxzZQotICAgIHsKLSAgICAgIGludCB5
eXR5cGUgPSBZWVRSQU5TTEFURSAoeXljaGFyKTsKLSAgICAgIFlZU0laRV9UIHl5c2l6ZTAgPSB5
eXRuYW1lcnIgKDAsIHl5dG5hbWVbeXl0eXBlXSk7Ci0gICAgICBZWVNJWkVfVCB5eXNpemUgPSB5
eXNpemUwOwotICAgICAgWVlTSVpFX1QgeXlzaXplMTsKLSAgICAgIGludCB5eXNpemVfb3ZlcmZs
b3cgPSAwOwotICAgICAgZW51bSB7IFlZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU0gPSA1IH07
Ci0gICAgICBjaGFyIGNvbnN0ICp5eWFyZ1tZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNXTsK
LSAgICAgIGludCB5eXg7Ci0KLSMgaWYgMAotICAgICAgLyogVGhpcyBpcyBzbyB4Z2V0dGV4dCBz
ZWVzIHRoZSB0cmFuc2xhdGFibGUgZm9ybWF0cyB0aGF0IGFyZQotICAgICBjb25zdHJ1Y3RlZCBv
biB0aGUgZmx5LiAgKi8KLSAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzIik7
Ci0gICAgICBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIik7
Ci0gICAgICBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9y
ICVzIik7Ci0gICAgICBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5n
ICVzIG9yICVzIG9yICVzIik7Ci0gICAgICBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAl
cywgZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIG9yICVzIik7Ci0jIGVuZGlmCi0gICAgICBjaGFy
ICp5eWZtdDsKLSAgICAgIGNoYXIgY29uc3QgKnl5ZjsKLSAgICAgIHN0YXRpYyBjaGFyIGNvbnN0
IHl5dW5leHBlY3RlZFtdID0gInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcyI7Ci0gICAgICBz
dGF0aWMgY2hhciBjb25zdCB5eWV4cGVjdGluZ1tdID0gIiwgZXhwZWN0aW5nICVzIjsKLSAgICAg
IHN0YXRpYyBjaGFyIGNvbnN0IHl5b3JbXSA9ICIgb3IgJXMiOwotICAgICAgY2hhciB5eWZvcm1h
dFtzaXplb2YgeXl1bmV4cGVjdGVkCi0gICAgICAgICAgICArIHNpemVvZiB5eWV4cGVjdGluZyAt
IDEKLSAgICAgICAgICAgICsgKChZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNIC0gMikKLSAg
ICAgICAgICAgICAgICogKHNpemVvZiB5eW9yIC0gMSkpXTsKLSAgICAgIGNoYXIgY29uc3QgKnl5
cHJlZml4ID0geXlleHBlY3Rpbmc7Ci0KLSAgICAgIC8qIFN0YXJ0IFlZWCBhdCAtWVlOIGlmIG5l
Z2F0aXZlIHRvIGF2b2lkIG5lZ2F0aXZlIGluZGV4ZXMgaW4KLSAgICAgWVlDSEVDSy4gICovCi0g
ICAgICBpbnQgeXl4YmVnaW4gPSB5eW4gPCAwID8gLXl5biA6IDA7Ci0KLSAgICAgIC8qIFN0YXkg
d2l0aGluIGJvdW5kcyBvZiBib3RoIHl5Y2hlY2sgYW5kIHl5dG5hbWUuICAqLwotICAgICAgaW50
IHl5Y2hlY2tsaW0gPSBZWUxBU1QgLSB5eW4gKyAxOwotICAgICAgaW50IHl5eGVuZCA9IHl5Y2hl
Y2tsaW0gPCBZWU5UT0tFTlMgPyB5eWNoZWNrbGltIDogWVlOVE9LRU5TOwotICAgICAgaW50IHl5
Y291bnQgPSAxOwotCi0gICAgICB5eWFyZ1swXSA9IHl5dG5hbWVbeXl0eXBlXTsKLSAgICAgIHl5
Zm10ID0geXlzdHBjcHkgKHl5Zm9ybWF0LCB5eXVuZXhwZWN0ZWQpOwotCi0gICAgICBmb3IgKHl5
eCA9IHl5eGJlZ2luOyB5eXggPCB5eXhlbmQ7ICsreXl4KQotICAgIGlmICh5eWNoZWNrW3l5eCAr
IHl5bl0gPT0geXl4ICYmIHl5eCAhPSBZWVRFUlJPUikKLSAgICAgIHsKLSAgICAgICAgaWYgKHl5
Y291bnQgPT0gWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTSkKLSAgICAgICAgICB7Ci0gICAg
ICAgIHl5Y291bnQgPSAxOwotICAgICAgICB5eXNpemUgPSB5eXNpemUwOwotICAgICAgICB5eWZv
cm1hdFtzaXplb2YgeXl1bmV4cGVjdGVkIC0gMV0gPSAnXDAnOwotICAgICAgICBicmVhazsKLSAg
ICAgICAgICB9Ci0gICAgICAgIHl5YXJnW3l5Y291bnQrK10gPSB5eXRuYW1lW3l5eF07Ci0gICAg
ICAgIHl5c2l6ZTEgPSB5eXNpemUgKyB5eXRuYW1lcnIgKDAsIHl5dG5hbWVbeXl4XSk7Ci0gICAg
ICAgIHl5c2l6ZV9vdmVyZmxvdyB8PSAoeXlzaXplMSA8IHl5c2l6ZSk7Ci0gICAgICAgIHl5c2l6
ZSA9IHl5c2l6ZTE7Ci0gICAgICAgIHl5Zm10ID0geXlzdHBjcHkgKHl5Zm10LCB5eXByZWZpeCk7
Ci0gICAgICAgIHl5cHJlZml4ID0geXlvcjsKLSAgICAgIH0KKyAgIFJldHVybiAwIGlmICpZWU1T
RyB3YXMgc3VjY2Vzc2Z1bGx5IHdyaXR0ZW4uICBSZXR1cm4gMSBpZiAqWVlNU0cgaXMKKyAgIG5v
dCBsYXJnZSBlbm91Z2ggdG8gaG9sZCB0aGUgbWVzc2FnZS4gIEluIHRoYXQgY2FzZSwgYWxzbyBz
ZXQKKyAgICpZWU1TR19BTExPQyB0byB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGJ5dGVzLiAgUmV0
dXJuIDIgaWYgdGhlCisgICByZXF1aXJlZCBudW1iZXIgb2YgYnl0ZXMgaXMgdG9vIGxhcmdlIHRv
IHN0b3JlLiAgKi8KK3N0YXRpYyBpbnQKK3l5c3ludGF4X2Vycm9yIChZWVNJWkVfVCAqeXltc2df
YWxsb2MsIGNoYXIgKip5eW1zZywKKyAgICAgICAgICAgICAgICB5eXR5cGVfaW50MTYgKnl5c3Nw
LCBpbnQgeXl0b2tlbikKK3sKKyAgWVlTSVpFX1QgeXlzaXplMCA9IHl5dG5hbWVyciAoWVlfTlVM
TCwgeXl0bmFtZVt5eXRva2VuXSk7CisgIFlZU0laRV9UIHl5c2l6ZSA9IHl5c2l6ZTA7CisgIGVu
dW0geyBZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNID0gNSB9OworICAvKiBJbnRlcm5hdGlv
bmFsaXplZCBmb3JtYXQgc3RyaW5nLiAqLworICBjb25zdCBjaGFyICp5eWZvcm1hdCA9IFlZX05V
TEw7CisgIC8qIEFyZ3VtZW50cyBvZiB5eWZvcm1hdC4gKi8KKyAgY2hhciBjb25zdCAqeXlhcmdb
WVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTV07CisgIC8qIE51bWJlciBvZiByZXBvcnRlZCB0
b2tlbnMgKG9uZSBmb3IgdGhlICJ1bmV4cGVjdGVkIiwgb25lIHBlcgorICAgICAiZXhwZWN0ZWQi
KS4gKi8KKyAgaW50IHl5Y291bnQgPSAwOworCisgIC8qIFRoZXJlIGFyZSBtYW55IHBvc3NpYmls
aXRpZXMgaGVyZSB0byBjb25zaWRlcjoKKyAgICAgLSBBc3N1bWUgWVlGQUlMIGlzIG5vdCB1c2Vk
LiAgSXQncyB0b28gZmxhd2VkIHRvIGNvbnNpZGVyLiAgU2VlCisgICAgICAgPGh0dHA6Ly9saXN0
cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9iaXNvbi1wYXRjaGVzLzIwMDktMTIvbXNnMDAwMjQuaHRt
bD4KKyAgICAgICBmb3IgZGV0YWlscy4gIFlZRVJST1IgaXMgZmluZSBhcyBpdCBkb2VzIG5vdCBp
bnZva2UgdGhpcworICAgICAgIGZ1bmN0aW9uLgorICAgICAtIElmIHRoaXMgc3RhdGUgaXMgYSBj
b25zaXN0ZW50IHN0YXRlIHdpdGggYSBkZWZhdWx0IGFjdGlvbiwgdGhlbgorICAgICAgIHRoZSBv
bmx5IHdheSB0aGlzIGZ1bmN0aW9uIHdhcyBpbnZva2VkIGlzIGlmIHRoZSBkZWZhdWx0IGFjdGlv
bgorICAgICAgIGlzIGFuIGVycm9yIGFjdGlvbi4gIEluIHRoYXQgY2FzZSwgZG9uJ3QgY2hlY2sg
Zm9yIGV4cGVjdGVkCisgICAgICAgdG9rZW5zIGJlY2F1c2UgdGhlcmUgYXJlIG5vbmUuCisgICAg
IC0gVGhlIG9ubHkgd2F5IHRoZXJlIGNhbiBiZSBubyBsb29rYWhlYWQgcHJlc2VudCAoaW4geXlj
aGFyKSBpcyBpZgorICAgICAgIHRoaXMgc3RhdGUgaXMgYSBjb25zaXN0ZW50IHN0YXRlIHdpdGgg
YSBkZWZhdWx0IGFjdGlvbi4gIFRodXMsCisgICAgICAgZGV0ZWN0aW5nIHRoZSBhYnNlbmNlIG9m
IGEgbG9va2FoZWFkIGlzIHN1ZmZpY2llbnQgdG8gZGV0ZXJtaW5lCisgICAgICAgdGhhdCB0aGVy
ZSBpcyBubyB1bmV4cGVjdGVkIG9yIGV4cGVjdGVkIHRva2VuIHRvIHJlcG9ydC4gIEluIHRoYXQK
KyAgICAgICBjYXNlLCBqdXN0IHJlcG9ydCBhIHNpbXBsZSAic3ludGF4IGVycm9yIi4KKyAgICAg
LSBEb24ndCBhc3N1bWUgdGhlcmUgaXNuJ3QgYSBsb29rYWhlYWQganVzdCBiZWNhdXNlIHRoaXMg
c3RhdGUgaXMgYQorICAgICAgIGNvbnNpc3RlbnQgc3RhdGUgd2l0aCBhIGRlZmF1bHQgYWN0aW9u
LiAgVGhlcmUgbWlnaHQgaGF2ZSBiZWVuIGEKKyAgICAgICBwcmV2aW91cyBpbmNvbnNpc3RlbnQg
c3RhdGUsIGNvbnNpc3RlbnQgc3RhdGUgd2l0aCBhIG5vbi1kZWZhdWx0CisgICAgICAgYWN0aW9u
LCBvciB1c2VyIHNlbWFudGljIGFjdGlvbiB0aGF0IG1hbmlwdWxhdGVkIHl5Y2hhci4KKyAgICAg
LSBPZiBjb3Vyc2UsIHRoZSBleHBlY3RlZCB0b2tlbiBsaXN0IGRlcGVuZHMgb24gc3RhdGVzIHRv
IGhhdmUKKyAgICAgICBjb3JyZWN0IGxvb2thaGVhZCBpbmZvcm1hdGlvbiwgYW5kIGl0IGRlcGVu
ZHMgb24gdGhlIHBhcnNlciBub3QKKyAgICAgICB0byBwZXJmb3JtIGV4dHJhIHJlZHVjdGlvbnMg
YWZ0ZXIgZmV0Y2hpbmcgYSBsb29rYWhlYWQgZnJvbSB0aGUKKyAgICAgICBzY2FubmVyIGFuZCBi
ZWZvcmUgZGV0ZWN0aW5nIGEgc3ludGF4IGVycm9yLiAgVGh1cywgc3RhdGUgbWVyZ2luZworICAg
ICAgIChmcm9tIExBTFIgb3IgSUVMUikgYW5kIGRlZmF1bHQgcmVkdWN0aW9ucyBjb3JydXB0IHRo
ZSBleHBlY3RlZAorICAgICAgIHRva2VuIGxpc3QuICBIb3dldmVyLCB0aGUgbGlzdCBpcyBjb3Jy
ZWN0IGZvciBjYW5vbmljYWwgTFIgd2l0aAorICAgICAgIG9uZSBleGNlcHRpb246IGl0IHdpbGwg
c3RpbGwgY29udGFpbiBhbnkgdG9rZW4gdGhhdCB3aWxsIG5vdCBiZQorICAgICAgIGFjY2VwdGVk
IGR1ZSB0byBhbiBlcnJvciBhY3Rpb24gaW4gYSBsYXRlciBzdGF0ZS4KKyAgKi8KKyAgaWYgKHl5
dG9rZW4gIT0gWVlFTVBUWSkKKyAgICB7CisgICAgICBpbnQgeXluID0geXlwYWN0Wyp5eXNzcF07
CisgICAgICB5eWFyZ1t5eWNvdW50KytdID0geXl0bmFtZVt5eXRva2VuXTsKKyAgICAgIGlmICgh
eXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQgKHl5bikpCisgICAgICAgIHsKKyAgICAgICAgICAvKiBT
dGFydCBZWVggYXQgLVlZTiBpZiBuZWdhdGl2ZSB0byBhdm9pZCBuZWdhdGl2ZSBpbmRleGVzIGlu
CisgICAgICAgICAgICAgWVlDSEVDSy4gIEluIG90aGVyIHdvcmRzLCBza2lwIHRoZSBmaXJzdCAt
WVlOIGFjdGlvbnMgZm9yCisgICAgICAgICAgICAgdGhpcyBzdGF0ZSBiZWNhdXNlIHRoZXkgYXJl
IGRlZmF1bHQgYWN0aW9ucy4gICovCisgICAgICAgICAgaW50IHl5eGJlZ2luID0geXluIDwgMCA/
IC15eW4gOiAwOworICAgICAgICAgIC8qIFN0YXkgd2l0aGluIGJvdW5kcyBvZiBib3RoIHl5Y2hl
Y2sgYW5kIHl5dG5hbWUuICAqLworICAgICAgICAgIGludCB5eWNoZWNrbGltID0gWVlMQVNUIC0g
eXluICsgMTsKKyAgICAgICAgICBpbnQgeXl4ZW5kID0geXljaGVja2xpbSA8IFlZTlRPS0VOUyA/
IHl5Y2hlY2tsaW0gOiBZWU5UT0tFTlM7CisgICAgICAgICAgaW50IHl5eDsKKworICAgICAgICAg
IGZvciAoeXl4ID0geXl4YmVnaW47IHl5eCA8IHl5eGVuZDsgKyt5eXgpCisgICAgICAgICAgICBp
ZiAoeXljaGVja1t5eXggKyB5eW5dID09IHl5eCAmJiB5eXggIT0gWVlURVJST1IKKyAgICAgICAg
ICAgICAgICAmJiAheXl0YWJsZV92YWx1ZV9pc19lcnJvciAoeXl0YWJsZVt5eXggKyB5eW5dKSkK
KyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh5eWNvdW50ID09IFlZRVJST1Jf
VkVSQk9TRV9BUkdTX01BWElNVU0pCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHl5Y291bnQgPSAxOworICAgICAgICAgICAgICAgICAgICB5eXNpemUgPSB5eXNpemUw
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB5eWFyZ1t5eWNvdW50KytdID0geXl0bmFtZVt5eXhdOworICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgIFlZU0laRV9UIHl5c2l6ZTEgPSB5eXNpemUgKyB5eXRu
YW1lcnIgKFlZX05VTEwsIHl5dG5hbWVbeXl4XSk7CisgICAgICAgICAgICAgICAgICBpZiAoISAo
eXlzaXplIDw9IHl5c2l6ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAmJiB5eXNpemUxIDw9
IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAyOwor
ICAgICAgICAgICAgICAgICAgeXlzaXplID0geXlzaXplMTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIAotICAgICAgeXlmID0gWVlfKHl5Zm9y
bWF0KTsKLSAgICAgIHl5c2l6ZTEgPSB5eXNpemUgKyB5eXN0cmxlbiAoeXlmKTsKLSAgICAgIHl5
c2l6ZV9vdmVyZmxvdyB8PSAoeXlzaXplMSA8IHl5c2l6ZSk7Ci0gICAgICB5eXNpemUgPSB5eXNp
emUxOworICBzd2l0Y2ggKHl5Y291bnQpCisgICAgeworIyBkZWZpbmUgWVlDQVNFXyhOLCBTKSAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICBjYXNlIE46ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgeXlmb3JtYXQgPSBTOyAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgYnJlYWsKKyAgICAgIFlZQ0FTRV8oMCwgWVlfKCJzeW50YXggZXJyb3IiKSk7Cisg
ICAgICBZWUNBU0VfKDEsIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzIikpOworICAg
ICAgWVlDQVNFXygyLCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5n
ICVzIikpOworICAgICAgWVlDQVNFXygzLCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAl
cywgZXhwZWN0aW5nICVzIG9yICVzIikpOworICAgICAgWVlDQVNFXyg0LCBZWV8oInN5bnRheCBl
cnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIikpOworICAgICAg
WVlDQVNFXyg1LCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVz
IG9yICVzIG9yICVzIG9yICVzIikpOworIyB1bmRlZiBZWUNBU0VfCisgICAgfQogCi0gICAgICBp
ZiAoeXlzaXplX292ZXJmbG93KQotICAgIHJldHVybiBZWVNJWkVfTUFYSU1VTTsKKyAgeworICAg
IFlZU0laRV9UIHl5c2l6ZTEgPSB5eXNpemUgKyB5eXN0cmxlbiAoeXlmb3JtYXQpOworICAgIGlm
ICghICh5eXNpemUgPD0geXlzaXplMSAmJiB5eXNpemUxIDw9IFlZU1RBQ0tfQUxMT0NfTUFYSU1V
TSkpCisgICAgICByZXR1cm4gMjsKKyAgICB5eXNpemUgPSB5eXNpemUxOworICB9CiAKLSAgICAg
IGlmICh5eXJlc3VsdCkKKyAgaWYgKCp5eW1zZ19hbGxvYyA8IHl5c2l6ZSkKICAgICB7Ci0gICAg
ICAvKiBBdm9pZCBzcHJpbnRmLCBhcyB0aGF0IGluZnJpbmdlcyBvbiB0aGUgdXNlcidzIG5hbWUg
c3BhY2UuCi0gICAgICAgICBEb24ndCBoYXZlIHVuZGVmaW5lZCBiZWhhdmlvciBldmVuIGlmIHRo
ZSB0cmFuc2xhdGlvbgotICAgICAgICAgcHJvZHVjZWQgYSBzdHJpbmcgd2l0aCB0aGUgd3Jvbmcg
bnVtYmVyIG9mICIlcyJzLiAgKi8KLSAgICAgIGNoYXIgKnl5cCA9IHl5cmVzdWx0OwotICAgICAg
aW50IHl5aSA9IDA7Ci0gICAgICB3aGlsZSAoKCp5eXAgPSAqeXlmKSAhPSAnXDAnKQotICAgICAg
ICB7Ci0gICAgICAgICAgaWYgKCp5eXAgPT0gJyUnICYmIHl5ZlsxXSA9PSAncycgJiYgeXlpIDwg
eXljb3VudCkKKyAgICAgICp5eW1zZ19hbGxvYyA9IDIgKiB5eXNpemU7CisgICAgICBpZiAoISAo
eXlzaXplIDw9ICp5eW1zZ19hbGxvYworICAgICAgICAgICAgICYmICp5eW1zZ19hbGxvYyA8PSBZ
WVNUQUNLX0FMTE9DX01BWElNVU0pKQorICAgICAgICAqeXltc2dfYWxsb2MgPSBZWVNUQUNLX0FM
TE9DX01BWElNVU07CisgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgLyogQXZvaWQgc3ByaW50
ZiwgYXMgdGhhdCBpbmZyaW5nZXMgb24gdGhlIHVzZXIncyBuYW1lIHNwYWNlLgorICAgICBEb24n
dCBoYXZlIHVuZGVmaW5lZCBiZWhhdmlvciBldmVuIGlmIHRoZSB0cmFuc2xhdGlvbgorICAgICBw
cm9kdWNlZCBhIHN0cmluZyB3aXRoIHRoZSB3cm9uZyBudW1iZXIgb2YgIiVzInMuICAqLworICB7
CisgICAgY2hhciAqeXlwID0gKnl5bXNnOworICAgIGludCB5eWkgPSAwOworICAgIHdoaWxlICgo
Knl5cCA9ICp5eWZvcm1hdCkgIT0gJ1wwJykKKyAgICAgIGlmICgqeXlwID09ICclJyAmJiB5eWZv
cm1hdFsxXSA9PSAncycgJiYgeXlpIDwgeXljb3VudCkKICAgICAgICAgewogICAgICAgICAgIHl5
cCArPSB5eXRuYW1lcnIgKHl5cCwgeXlhcmdbeXlpKytdKTsKLSAgICAgICAgICB5eWYgKz0gMjsK
KyAgICAgICAgICB5eWZvcm1hdCArPSAyOwogICAgICAgICB9Ci0gICAgICAgICAgZWxzZQorICAg
ICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgeXlwKys7Ci0gICAgICAgICAgeXlmKys7Cisg
ICAgICAgICAgeXlmb3JtYXQrKzsKICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgICAg
cmV0dXJuIHl5c2l6ZTsKLSAgICB9CisgIH0KKyAgcmV0dXJuIDA7CiB9CiAjZW5kaWYgLyogWVlF
UlJPUl9WRVJCT1NFICovCi0MCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0uCiB8IFJlbGVhc2UgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHRvIHRoaXMg
c3ltYm9sLiAgfApAQCAtMTg5MiwyOCArMTkyMiw5IEBAIHl5ZGVzdHJ1Y3QgKHl5bXNnLCB5eXR5
cGUsIHl5dmFsdWVwLCB5eWxvY2F0aW9ucCwgY29udGV4dCkKICAgICB7CiAKICAgICAgIGRlZmF1
bHQ6Ci0gICAgYnJlYWs7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KLQwKLQotLyogUHJldmVu
dCB3YXJuaW5ncyBmcm9tIC1XbWlzc2luZy1wcm90b3R5cGVzLiAgKi8KLQotI2lmZGVmIFlZUEFS
U0VfUEFSQU0KLSNpZiBkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1c3BsdXMKLWlu
dCB5eXBhcnNlICh2b2lkICpZWVBBUlNFX1BBUkFNKTsKLSNlbHNlCi1pbnQgeXlwYXJzZSAoKTsK
LSNlbmRpZgotI2Vsc2UgLyogISBZWVBBUlNFX1BBUkFNICovCi0jaWYgZGVmaW5lZCBfX1NURENf
XyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzCi1pbnQgeXlwYXJzZSAoVFBhcnNlQ29udGV4dCogY29u
dGV4dCk7Ci0jZWxzZQotaW50IHl5cGFyc2UgKCk7Ci0jZW5kaWYKLSNlbmRpZiAvKiAhIFlZUEFS
U0VfUEFSQU0gKi8KLQotCiAKIAogCkBAIC0xOTQ0LDkwICsxOTU1LDExMyBAQCB5eXBhcnNlIChj
b250ZXh0KQogI2VuZGlmCiAjZW5kaWYKIHsKLSAgLyogVGhlIGxvb2stYWhlYWQgc3ltYm9sLiAg
Ki8KKy8qIFRoZSBsb29rYWhlYWQgc3ltYm9sLiAgKi8KIGludCB5eWNoYXI7CiAKLS8qIFRoZSBz
ZW1hbnRpYyB2YWx1ZSBvZiB0aGUgbG9vay1haGVhZCBzeW1ib2wuICAqLwotWVlTVFlQRSB5eWx2
YWw7Ci0KLS8qIE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNvIGZhci4gICovCi1pbnQgeXluZXJy
czsKLS8qIExvY2F0aW9uIGRhdGEgZm9yIHRoZSBsb29rLWFoZWFkIHN5bWJvbC4gICovCi1ZWUxU
WVBFIHl5bGxvYzsKIAotICBpbnQgeXlzdGF0ZTsKLSAgaW50IHl5bjsKLSAgaW50IHl5cmVzdWx0
OwotICAvKiBOdW1iZXIgb2YgdG9rZW5zIHRvIHNoaWZ0IGJlZm9yZSBlcnJvciBtZXNzYWdlcyBl
bmFibGVkLiAgKi8KLSAgaW50IHl5ZXJyc3RhdHVzOwotICAvKiBMb29rLWFoZWFkIHRva2VuIGFz
IGFuIGludGVybmFsICh0cmFuc2xhdGVkKSB0b2tlbiBudW1iZXIuICAqLwotICBpbnQgeXl0b2tl
biA9IDA7Ci0jaWYgWVlFUlJPUl9WRVJCT1NFCi0gIC8qIEJ1ZmZlciBmb3IgZXJyb3IgbWVzc2Fn
ZXMsIGFuZCBpdHMgYWxsb2NhdGVkIHNpemUuICAqLwotICBjaGFyIHl5bXNnYnVmWzEyOF07Ci0g
IGNoYXIgKnl5bXNnID0geXltc2didWY7Ci0gIFlZU0laRV9UIHl5bXNnX2FsbG9jID0gc2l6ZW9m
IHl5bXNnYnVmOworI2lmIGRlZmluZWQgX19HTlVDX18gJiYgNDA3IDw9IF9fR05VQ19fICogMTAw
ICsgX19HTlVDX01JTk9SX18KKy8qIFN1cHByZXNzIGFuIGluY29ycmVjdCBkaWFnbm9zdGljIGFi
b3V0IHl5bHZhbCBiZWluZyB1bmluaXRpYWxpemVkLiAgKi8KKyMgZGVmaW5lIFlZX0lHTk9SRV9N
QVlCRV9VTklOSVRJQUxJWkVEX0JFR0lOIFwKKyAgICBfUHJhZ21hICgiR0NDIGRpYWdub3N0aWMg
cHVzaCIpIFwKKyAgICBfUHJhZ21hICgiR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1XdW5pbml0
aWFsaXplZFwiIilcCisgICAgX1ByYWdtYSAoIkdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV21h
eWJlLXVuaW5pdGlhbGl6ZWRcIiIpCisjIGRlZmluZSBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFM
SVpFRF9FTkQgXAorICAgIF9QcmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBwb3AiKQorI2Vsc2UKKy8q
IERlZmF1bHQgdmFsdWUgdXNlZCBmb3IgaW5pdGlhbGl6YXRpb24sIGZvciBwYWNpZnlpbmcgb2xk
ZXIgR0NDcworICAgb3Igbm9uLUdDQyBjb21waWxlcnMuICAqLworc3RhdGljIFlZU1RZUEUgeXl2
YWxfZGVmYXVsdDsKKyMgZGVmaW5lIFlZX0lOSVRJQUxfVkFMVUUoVmFsdWUpID0gVmFsdWUKKyNl
bmRpZgorc3RhdGljIFlZTFRZUEUgeXlsb2NfZGVmYXVsdAorIyBpZiBkZWZpbmVkIFlZTFRZUEVf
SVNfVFJJVklBTCAmJiBZWUxUWVBFX0lTX1RSSVZJQUwKKyAgPSB7IDEsIDEsIDEsIDEgfQorIyBl
bmRpZgorOworI2lmbmRlZiBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9CRUdJTgorIyBk
ZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfQkVHSU4KKyMgZGVmaW5lIFlZX0lH
Tk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0VORAorI2VuZGlmCisjaWZuZGVmIFlZX0lOSVRJQUxf
VkFMVUUKKyMgZGVmaW5lIFlZX0lOSVRJQUxfVkFMVUUoVmFsdWUpIC8qIE5vdGhpbmcuICovCiAj
ZW5kaWYKIAotICAvKiBUaHJlZSBzdGFja3MgYW5kIHRoZWlyIHRvb2xzOgotICAgICBgeXlzcyc6
IHJlbGF0ZWQgdG8gc3RhdGVzLAotICAgICBgeXl2cyc6IHJlbGF0ZWQgdG8gc2VtYW50aWMgdmFs
dWVzLAotICAgICBgeXlscyc6IHJlbGF0ZWQgdG8gbG9jYXRpb25zLgorLyogVGhlIHNlbWFudGlj
IHZhbHVlIG9mIHRoZSBsb29rYWhlYWQgc3ltYm9sLiAgKi8KK1lZU1RZUEUgeXlsdmFsIFlZX0lO
SVRJQUxfVkFMVUUoeXl2YWxfZGVmYXVsdCk7CiAKLSAgICAgUmVmZXIgdG8gdGhlIHN0YWNrcyB0
aHJ1IHNlcGFyYXRlIHBvaW50ZXJzLCB0byBhbGxvdyB5eW92ZXJmbG93Ci0gICAgIHRvIHJlYWxs
b2NhdGUgdGhlbSBlbHNld2hlcmUuICAqLworLyogTG9jYXRpb24gZGF0YSBmb3IgdGhlIGxvb2th
aGVhZCBzeW1ib2wuICAqLworWVlMVFlQRSB5eWxsb2MgPSB5eWxvY19kZWZhdWx0OwogCi0gIC8q
IFRoZSBzdGF0ZSBzdGFjay4gICovCi0gIHl5dHlwZV9pbnQxNiB5eXNzYVtZWUlOSVRERVBUSF07
Ci0gIHl5dHlwZV9pbnQxNiAqeXlzcyA9IHl5c3NhOwotICB5eXR5cGVfaW50MTYgKnl5c3NwOwog
Ci0gIC8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBzdGFjay4gICovCi0gIFlZU1RZUEUgeXl2c2FbWVlJ
TklUREVQVEhdOwotICBZWVNUWVBFICp5eXZzID0geXl2c2E7Ci0gIFlZU1RZUEUgKnl5dnNwOwor
ICAgIC8qIE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNvIGZhci4gICovCisgICAgaW50IHl5bmVy
cnM7CiAKLSAgLyogVGhlIGxvY2F0aW9uIHN0YWNrLiAgKi8KLSAgWVlMVFlQRSB5eWxzYVtZWUlO
SVRERVBUSF07Ci0gIFlZTFRZUEUgKnl5bHMgPSB5eWxzYTsKLSAgWVlMVFlQRSAqeXlsc3A7Ci0g
IC8qIFRoZSBsb2NhdGlvbnMgd2hlcmUgdGhlIGVycm9yIHN0YXJ0ZWQgYW5kIGVuZGVkLiAgKi8K
LSAgWVlMVFlQRSB5eWVycm9yX3JhbmdlWzJdOworICAgIGludCB5eXN0YXRlOworICAgIC8qIE51
bWJlciBvZiB0b2tlbnMgdG8gc2hpZnQgYmVmb3JlIGVycm9yIG1lc3NhZ2VzIGVuYWJsZWQuICAq
LworICAgIGludCB5eWVycnN0YXR1czsKIAotI2RlZmluZSBZWVBPUFNUQUNLKE4pICAgKHl5dnNw
IC09IChOKSwgeXlzc3AgLT0gKE4pLCB5eWxzcCAtPSAoTikpCisgICAgLyogVGhlIHN0YWNrcyBh
bmQgdGhlaXIgdG9vbHM6CisgICAgICAgYHl5c3MnOiByZWxhdGVkIHRvIHN0YXRlcy4KKyAgICAg
ICBgeXl2cyc6IHJlbGF0ZWQgdG8gc2VtYW50aWMgdmFsdWVzLgorICAgICAgIGB5eWxzJzogcmVs
YXRlZCB0byBsb2NhdGlvbnMuCisKKyAgICAgICBSZWZlciB0byB0aGUgc3RhY2tzIHRocm91Z2gg
c2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFsbG93IHl5b3ZlcmZsb3cKKyAgICAgICB0byByZWFsbG9j
YXRlIHRoZW0gZWxzZXdoZXJlLiAgKi8KKworICAgIC8qIFRoZSBzdGF0ZSBzdGFjay4gICovCisg
ICAgeXl0eXBlX2ludDE2IHl5c3NhW1lZSU5JVERFUFRIXTsKKyAgICB5eXR5cGVfaW50MTYgKnl5
c3M7CisgICAgeXl0eXBlX2ludDE2ICp5eXNzcDsKKworICAgIC8qIFRoZSBzZW1hbnRpYyB2YWx1
ZSBzdGFjay4gICovCisgICAgWVlTVFlQRSB5eXZzYVtZWUlOSVRERVBUSF07CisgICAgWVlTVFlQ
RSAqeXl2czsKKyAgICBZWVNUWVBFICp5eXZzcDsKKworICAgIC8qIFRoZSBsb2NhdGlvbiBzdGFj
ay4gICovCisgICAgWVlMVFlQRSB5eWxzYVtZWUlOSVRERVBUSF07CisgICAgWVlMVFlQRSAqeXls
czsKKyAgICBZWUxUWVBFICp5eWxzcDsKIAotICBZWVNJWkVfVCB5eXN0YWNrc2l6ZSA9IFlZSU5J
VERFUFRIOworICAgIC8qIFRoZSBsb2NhdGlvbnMgd2hlcmUgdGhlIGVycm9yIHN0YXJ0ZWQgYW5k
IGVuZGVkLiAgKi8KKyAgICBZWUxUWVBFIHl5ZXJyb3JfcmFuZ2VbM107CiAKKyAgICBZWVNJWkVf
VCB5eXN0YWNrc2l6ZTsKKworICBpbnQgeXluOworICBpbnQgeXlyZXN1bHQ7CisgIC8qIExvb2th
aGVhZCB0b2tlbiBhcyBhbiBpbnRlcm5hbCAodHJhbnNsYXRlZCkgdG9rZW4gbnVtYmVyLiAgKi8K
KyAgaW50IHl5dG9rZW4gPSAwOwogICAvKiBUaGUgdmFyaWFibGVzIHVzZWQgdG8gcmV0dXJuIHNl
bWFudGljIHZhbHVlIGFuZCBsb2NhdGlvbiBmcm9tIHRoZQogICAgICBhY3Rpb24gcm91dGluZXMu
ICAqLwogICBZWVNUWVBFIHl5dmFsOwogICBZWUxUWVBFIHl5bG9jOwogCisjaWYgWVlFUlJPUl9W
RVJCT1NFCisgIC8qIEJ1ZmZlciBmb3IgZXJyb3IgbWVzc2FnZXMsIGFuZCBpdHMgYWxsb2NhdGVk
IHNpemUuICAqLworICBjaGFyIHl5bXNnYnVmWzEyOF07CisgIGNoYXIgKnl5bXNnID0geXltc2di
dWY7CisgIFlZU0laRV9UIHl5bXNnX2FsbG9jID0gc2l6ZW9mIHl5bXNnYnVmOworI2VuZGlmCisK
KyNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZzcCAtPSAoTiksIHl5c3NwIC09IChOKSwgeXls
c3AgLT0gKE4pKQorCiAgIC8qIFRoZSBudW1iZXIgb2Ygc3ltYm9scyBvbiB0aGUgUkhTIG9mIHRo
ZSByZWR1Y2VkIHJ1bGUuCiAgICAgIEtlZXAgdG8gemVybyB3aGVuIG5vIHN5bWJvbCBzaG91bGQg
YmUgcG9wcGVkLiAgKi8KICAgaW50IHl5bGVuID0gMDsKIAorICB5eXNzcCA9IHl5c3MgPSB5eXNz
YTsKKyAgeXl2c3AgPSB5eXZzID0geXl2c2E7CisgIHl5bHNwID0geXlscyA9IHl5bHNhOworICB5
eXN0YWNrc2l6ZSA9IFlZSU5JVERFUFRIOworCiAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YXJ0
aW5nIHBhcnNlXG4iKSk7CiAKICAgeXlzdGF0ZSA9IDA7CiAgIHl5ZXJyc3RhdHVzID0gMDsKICAg
eXluZXJycyA9IDA7Ci0gIHl5Y2hhciA9IFlZRU1QVFk7ICAgICAgICAvKiBDYXVzZSBhIHRva2Vu
IHRvIGJlIHJlYWQuICAqLwotCi0gIC8qIEluaXRpYWxpemUgc3RhY2sgcG9pbnRlcnMuCi0gICAg
IFdhc3RlIG9uZSBlbGVtZW50IG9mIHZhbHVlIGFuZCBsb2NhdGlvbiBzdGFjawotICAgICBzbyB0
aGF0IHRoZXkgc3RheSBvbiB0aGUgc2FtZSBsZXZlbCBhcyB0aGUgc3RhdGUgc3RhY2suCi0gICAg
IFRoZSB3YXN0ZWQgZWxlbWVudHMgYXJlIG5ldmVyIGluaXRpYWxpemVkLiAgKi8KLQotICB5eXNz
cCA9IHl5c3M7Ci0gIHl5dnNwID0geXl2czsKLSAgeXlsc3AgPSB5eWxzOwotI2lmIGRlZmluZWQg
WVlMVFlQRV9JU19UUklWSUFMICYmIFlZTFRZUEVfSVNfVFJJVklBTAotICAvKiBJbml0aWFsaXpl
IHRoZSBkZWZhdWx0IGxvY2F0aW9uIGJlZm9yZSBwYXJzaW5nIHN0YXJ0cy4gICovCi0gIHl5bGxv
Yy5maXJzdF9saW5lICAgPSB5eWxsb2MubGFzdF9saW5lICAgPSAxOwotICB5eWxsb2MuZmlyc3Rf
Y29sdW1uID0geXlsbG9jLmxhc3RfY29sdW1uID0gMDsKLSNlbmRpZgotCisgIHl5Y2hhciA9IFlZ
RU1QVFk7IC8qIENhdXNlIGEgdG9rZW4gdG8gYmUgcmVhZC4gICovCisgIHl5bHNwWzBdID0geXls
bG9jOwogICBnb3RvIHl5c2V0c3RhdGU7CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgpAQCAtMjA0OCwyNSArMjA4MiwyNiBA
QCBZWUxUWVBFIHl5bGxvYzsKIAogI2lmZGVmIHl5b3ZlcmZsb3cKICAgICAgIHsKLSAgICAvKiBH
aXZlIHVzZXIgYSBjaGFuY2UgdG8gcmVhbGxvY2F0ZSB0aGUgc3RhY2suICBVc2UgY29waWVzIG9m
Ci0gICAgICAgdGhlc2Ugc28gdGhhdCB0aGUgJidzIGRvbid0IGZvcmNlIHRoZSByZWFsIG9uZXMg
aW50bwotICAgICAgIG1lbW9yeS4gICovCi0gICAgWVlTVFlQRSAqeXl2czEgPSB5eXZzOwotICAg
IHl5dHlwZV9pbnQxNiAqeXlzczEgPSB5eXNzOwotICAgIFlZTFRZUEUgKnl5bHMxID0geXlsczsK
LQotICAgIC8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRyZXNzIGlzIGZvbGxvd2VkIGJ5IHRoZSBz
aXplIG9mIHRoZQotICAgICAgIGRhdGEgaW4gdXNlIGluIHRoYXQgc3RhY2ssIGluIGJ5dGVzLiAg
VGhpcyB1c2VkIHRvIGJlIGEKLSAgICAgICBjb25kaXRpb25hbCBhcm91bmQganVzdCB0aGUgdHdv
IGV4dHJhIGFyZ3MsIGJ1dCB0aGF0IG1pZ2h0Ci0gICAgICAgYmUgdW5kZWZpbmVkIGlmIHl5b3Zl
cmZsb3cgaXMgYSBtYWNyby4gICovCi0gICAgeXlvdmVyZmxvdyAoWVlfKCJtZW1vcnkgZXhoYXVz
dGVkIiksCi0gICAgICAgICAgICAmeXlzczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5c3NwKSwKLSAg
ICAgICAgICAgICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2c3ApLAotICAgICAgICAgICAg
Jnl5bHMxLCB5eXNpemUgKiBzaXplb2YgKCp5eWxzcCksCi0gICAgICAgICAgICAmeXlzdGFja3Np
emUpOwotICAgIHl5bHMgPSB5eWxzMTsKLSAgICB5eXNzID0geXlzczE7Ci0gICAgeXl2cyA9IHl5
dnMxOworCS8qIEdpdmUgdXNlciBhIGNoYW5jZSB0byByZWFsbG9jYXRlIHRoZSBzdGFjay4gIFVz
ZSBjb3BpZXMgb2YKKwkgICB0aGVzZSBzbyB0aGF0IHRoZSAmJ3MgZG9uJ3QgZm9yY2UgdGhlIHJl
YWwgb25lcyBpbnRvCisJICAgbWVtb3J5LiAgKi8KKwlZWVNUWVBFICp5eXZzMSA9IHl5dnM7CisJ
eXl0eXBlX2ludDE2ICp5eXNzMSA9IHl5c3M7CisJWVlMVFlQRSAqeXlsczEgPSB5eWxzOworCisJ
LyogRWFjaCBzdGFjayBwb2ludGVyIGFkZHJlc3MgaXMgZm9sbG93ZWQgYnkgdGhlIHNpemUgb2Yg
dGhlCisJICAgZGF0YSBpbiB1c2UgaW4gdGhhdCBzdGFjaywgaW4gYnl0ZXMuICBUaGlzIHVzZWQg
dG8gYmUgYQorCSAgIGNvbmRpdGlvbmFsIGFyb3VuZCBqdXN0IHRoZSB0d28gZXh0cmEgYXJncywg
YnV0IHRoYXQgbWlnaHQKKwkgICBiZSB1bmRlZmluZWQgaWYgeXlvdmVyZmxvdyBpcyBhIG1hY3Jv
LiAgKi8KKwl5eW92ZXJmbG93IChZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSwKKwkJICAgICZ5eXNz
MSwgeXlzaXplICogc2l6ZW9mICgqeXlzc3ApLAorCQkgICAgJnl5dnMxLCB5eXNpemUgKiBzaXpl
b2YgKCp5eXZzcCksCisJCSAgICAmeXlsczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5bHNwKSwKKwkJ
ICAgICZ5eXN0YWNrc2l6ZSk7CisKKwl5eWxzID0geXlsczE7CisJeXlzcyA9IHl5c3MxOworCXl5
dnMgPSB5eXZzMTsKICAgICAgIH0KICNlbHNlIC8qIG5vIHl5b3ZlcmZsb3cgKi8KICMgaWZuZGVm
IFlZU1RBQ0tfUkVMT0NBVEUKQEAgLTIwNzQsMjMgKzIxMDksMjMgQEAgWVlMVFlQRSB5eWxsb2M7
CiAjIGVsc2UKICAgICAgIC8qIEV4dGVuZCB0aGUgc3RhY2sgb3VyIG93biB3YXkuICAqLwogICAg
ICAgaWYgKFlZTUFYREVQVEggPD0geXlzdGFja3NpemUpCi0gICAgZ290byB5eWV4aGF1c3RlZGxh
YjsKKwlnb3RvIHl5ZXhoYXVzdGVkbGFiOwogICAgICAgeXlzdGFja3NpemUgKj0gMjsKICAgICAg
IGlmIChZWU1BWERFUFRIIDwgeXlzdGFja3NpemUpCi0gICAgeXlzdGFja3NpemUgPSBZWU1BWERF
UFRIOworCXl5c3RhY2tzaXplID0gWVlNQVhERVBUSDsKIAogICAgICAgewotICAgIHl5dHlwZV9p
bnQxNiAqeXlzczEgPSB5eXNzOwotICAgIHVuaW9uIHl5YWxsb2MgKnl5cHRyID0KLSAgICAgICh1
bmlvbiB5eWFsbG9jICopIFlZU1RBQ0tfQUxMT0MgKFlZU1RBQ0tfQllURVMgKHl5c3RhY2tzaXpl
KSk7Ci0gICAgaWYgKCEgeXlwdHIpCi0gICAgICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwotICAgIFlZ
U1RBQ0tfUkVMT0NBVEUgKHl5c3MpOwotICAgIFlZU1RBQ0tfUkVMT0NBVEUgKHl5dnMpOwotICAg
IFlZU1RBQ0tfUkVMT0NBVEUgKHl5bHMpOworCXl5dHlwZV9pbnQxNiAqeXlzczEgPSB5eXNzOwor
CXVuaW9uIHl5YWxsb2MgKnl5cHRyID0KKwkgICh1bmlvbiB5eWFsbG9jICopIFlZU1RBQ0tfQUxM
T0MgKFlZU1RBQ0tfQllURVMgKHl5c3RhY2tzaXplKSk7CisJaWYgKCEgeXlwdHIpCisJICBnb3Rv
IHl5ZXhoYXVzdGVkbGFiOworCVlZU1RBQ0tfUkVMT0NBVEUgKHl5c3NfYWxsb2MsIHl5c3MpOwor
CVlZU1RBQ0tfUkVMT0NBVEUgKHl5dnNfYWxsb2MsIHl5dnMpOworCVlZU1RBQ0tfUkVMT0NBVEUg
KHl5bHNfYWxsb2MsIHl5bHMpOwogIyAgdW5kZWYgWVlTVEFDS19SRUxPQ0FURQotICAgIGlmICh5
eXNzMSAhPSB5eXNzYSkKLSAgICAgIFlZU1RBQ0tfRlJFRSAoeXlzczEpOworCWlmICh5eXNzMSAh
PSB5eXNzYSkKKwkgIFlZU1RBQ0tfRlJFRSAoeXlzczEpOwogICAgICAgfQogIyBlbmRpZgogI2Vu
ZGlmIC8qIG5vIHl5b3ZlcmZsb3cgKi8KQEAgLTIxMDAsMTQgKzIxMzUsMTcgQEAgWVlMVFlQRSB5
eWxsb2M7CiAgICAgICB5eWxzcCA9IHl5bHMgKyB5eXNpemUgLSAxOwogCiAgICAgICBZWURQUklO
VEYgKChzdGRlcnIsICJTdGFjayBzaXplIGluY3JlYXNlZCB0byAlbHVcbiIsCi0gICAgICAgICAg
KHVuc2lnbmVkIGxvbmcgaW50KSB5eXN0YWNrc2l6ZSkpOworCQkgICh1bnNpZ25lZCBsb25nIGlu
dCkgeXlzdGFja3NpemUpKTsKIAogICAgICAgaWYgKHl5c3MgKyB5eXN0YWNrc2l6ZSAtIDEgPD0g
eXlzc3ApCi0gICAgWVlBQk9SVDsKKwlZWUFCT1JUOwogICAgIH0KIAogICBZWURQUklOVEYgKChz
dGRlcnIsICJFbnRlcmluZyBzdGF0ZSAlZFxuIiwgeXlzdGF0ZSkpOwogCisgIGlmICh5eXN0YXRl
ID09IFlZRklOQUwpCisgICAgWVlBQ0NFUFQ7CisKICAgZ290byB5eWJhY2t1cDsKIAogLyotLS0t
LS0tLS0tLS4KQEAgLTIxMTYsMTYgKzIxNTQsMTYgQEAgWVlMVFlQRSB5eWxsb2M7CiB5eWJhY2t1
cDoKIAogICAvKiBEbyBhcHByb3ByaWF0ZSBwcm9jZXNzaW5nIGdpdmVuIHRoZSBjdXJyZW50IHN0
YXRlLiAgUmVhZCBhCi0gICAgIGxvb2stYWhlYWQgdG9rZW4gaWYgd2UgbmVlZCBvbmUgYW5kIGRv
bid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLworICAgICBsb29rYWhlYWQgdG9rZW4gaWYgd2UgbmVl
ZCBvbmUgYW5kIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLwogCi0gIC8qIEZpcnN0IHRyeSB0
byBkZWNpZGUgd2hhdCB0byBkbyB3aXRob3V0IHJlZmVyZW5jZSB0byBsb29rLWFoZWFkIHRva2Vu
LiAgKi8KKyAgLyogRmlyc3QgdHJ5IHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGhvdXQgcmVmZXJl
bmNlIHRvIGxvb2thaGVhZCB0b2tlbi4gICovCiAgIHl5biA9IHl5cGFjdFt5eXN0YXRlXTsKLSAg
aWYgKHl5biA9PSBZWVBBQ1RfTklORikKKyAgaWYgKHl5cGFjdF92YWx1ZV9pc19kZWZhdWx0ICh5
eW4pKQogICAgIGdvdG8geXlkZWZhdWx0OwogCi0gIC8qIE5vdCBrbm93biA9PiBnZXQgYSBsb29r
LWFoZWFkIHRva2VuIGlmIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLworICAvKiBOb3Qga25v
d24gPT4gZ2V0IGEgbG9va2FoZWFkIHRva2VuIGlmIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAq
LwogCi0gIC8qIFlZQ0hBUiBpcyBlaXRoZXIgWVlFTVBUWSBvciBZWUVPRiBvciBhIHZhbGlkIGxv
b2stYWhlYWQgc3ltYm9sLiAgKi8KKyAgLyogWVlDSEFSIGlzIGVpdGhlciBZWUVNUFRZIG9yIFlZ
RU9GIG9yIGEgdmFsaWQgbG9va2FoZWFkIHN5bWJvbC4gICovCiAgIGlmICh5eWNoYXIgPT0gWVlF
TVBUWSkKICAgICB7CiAgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJSZWFkaW5nIGEgdG9rZW46
ICIpKTsKQEAgLTIxNTEsMjkgKzIxODksMjcgQEAgeXliYWNrdXA6CiAgIHl5biA9IHl5dGFibGVb
eXluXTsKICAgaWYgKHl5biA8PSAwKQogICAgIHsKLSAgICAgIGlmICh5eW4gPT0gMCB8fCB5eW4g
PT0gWVlUQUJMRV9OSU5GKQotICAgIGdvdG8geXllcnJsYWI7CisgICAgICBpZiAoeXl0YWJsZV92
YWx1ZV9pc19lcnJvciAoeXluKSkKKyAgICAgICAgZ290byB5eWVycmxhYjsKICAgICAgIHl5biA9
IC15eW47CiAgICAgICBnb3RvIHl5cmVkdWNlOwogICAgIH0KIAotICBpZiAoeXluID09IFlZRklO
QUwpCi0gICAgWVlBQ0NFUFQ7Ci0KICAgLyogQ291bnQgdG9rZW5zIHNoaWZ0ZWQgc2luY2UgZXJy
b3I7IGFmdGVyIHRocmVlLCB0dXJuIG9mZiBlcnJvcgogICAgICBzdGF0dXMuICAqLwogICBpZiAo
eXllcnJzdGF0dXMpCiAgICAgeXllcnJzdGF0dXMtLTsKIAotICAvKiBTaGlmdCB0aGUgbG9vay1h
aGVhZCB0b2tlbi4gICovCisgIC8qIFNoaWZ0IHRoZSBsb29rYWhlYWQgdG9rZW4uICAqLwogICBZ
WV9TWU1CT0xfUFJJTlQgKCJTaGlmdGluZyIsIHl5dG9rZW4sICZ5eWx2YWwsICZ5eWxsb2MpOwog
Ci0gIC8qIERpc2NhcmQgdGhlIHNoaWZ0ZWQgdG9rZW4gdW5sZXNzIGl0IGlzIGVvZi4gICovCi0g
IGlmICh5eWNoYXIgIT0gWVlFT0YpCi0gICAgeXljaGFyID0gWVlFTVBUWTsKKyAgLyogRGlzY2Fy
ZCB0aGUgc2hpZnRlZCB0b2tlbi4gICovCisgIHl5Y2hhciA9IFlZRU1QVFk7CiAKICAgeXlzdGF0
ZSA9IHl5bjsKKyAgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfQkVHSU4KICAgKisreXl2
c3AgPSB5eWx2YWw7CisgIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0VORAogICAqKyt5
eWxzcCA9IHl5bGxvYzsKICAgZ290byB5eW5ld3N0YXRlOwogCkBAIC0yMjUxLDMxICsyMjg3LDIz
IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhcmlhYmxlLT5nZXROYW1lKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeXlsc3BbKDEpIC0gKDEpXSkpOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNToKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2
OgogCiAgICAgewotICAgICAgICAvLwotICAgICAgICAvLyBJTlRfVFlQRSBpcyBvbmx5IDE2LWJp
dCBwbHVzIHNpZ24gYml0IGZvciB2ZXJ0ZXgvZnJhZ21lbnQgc2hhZGVycywKLSAgICAgICAgLy8g
Y2hlY2sgZm9yIG92ZXJmbG93IGZvciBjb25zdGFudHMKLSAgICAgICAgLy8KLSAgICAgICAgaWYg
KGFicygoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmkpID49ICgxIDw8IDE2KSkgewotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiIGludGVnZXIgY29uc3RhbnQg
b3ZlcmZsb3ciLCAiIik7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
IH0KICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9u
WzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoKHl5dnNwWygxKSAtICgxKV0ubGV4
KS5pKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygxKSAtICgxKV0pKTsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAogICBjYXNlIDc6CkBAIC0yMjg0LDcgKzIzMTIsNyBAQCB5eXJlZHVj
ZToKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9u
WzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoKHl5dnNwWygxKSAtICgxKV0ubGV4
KS5mKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgODoKQEAgLTIyOTMsMzUgKzIzMjEsMzUgQEAgeXly
ZWR1Y2U6CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRV
bmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KCh5eXZzcFsoMSkgLSAoMSld
LmxleCkuYik7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgOToKIAogICAgIHsKICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMDoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxMToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+YWRkSW5kZXhFeHByZXNzaW9uKCh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMykg
LSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAogICBjYXNlIDEyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEzOgpAQCAtMjQyMCw3ICsyNDQ4LDcg
QEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQog
ICAgICAgICAvLyBkb24ndCBkZWxldGUgJDMuc3RyaW5nLCBpdCdzIGZyb20gdGhlIHBvb2wKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE0OgpAQCAtMjQzNCw3ICsyNDYyLDcg
QEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgMTU6CkBAIC0yNDQ4LDcgKzI0NzYsNyBAQCB5eXJlZHVjZToKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwog
ICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjoKQEAgLTI0
NTcsNyArMjQ4NSw3IEBAIHl5cmVkdWNlOgogICAgICAgICBpZiAoY29udGV4dC0+aW50ZWdlckVy
cm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICJbXSIp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE3OgpAQCAtMjU1OCwx
NCArMjU4NiwxNCBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICBkZWxldGUgZm5DYWxsOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTg6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE5OgpAQCAtMjU3NCwy
MSArMjYwMiwyMSBAQCB5eXJlZHVjZToKICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygz
KSAtICgzKV0pLCAibWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZCIsICIiKTsKICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMykgLSAo
MyldLmludGVybSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMDoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0p
OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjE6CiAKICAgICB7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKTsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDIyOgpAQCAtMjU5Niw3ICsyNjI0LDcgQEAgeXly
ZWR1Y2U6CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFso
MSkgLSAoMildLmludGVybS5mdW5jdGlvbik7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVy
bU5vZGUgPSAwOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjM6CkBAIC0y
NjA0LDcgKzI2MzIsNyBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0p
LmZ1bmN0aW9uID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZ1bmN0aW9uKTsKICAgICAgICAg
KHl5dmFsLmludGVybSkuaW50ZXJtTm9kZSA9IDA7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAyNDoKQEAgLTI2MTQsNyArMjY0Miw3IEBAIHl5cmVkdWNlOgogICAgICAgICAo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5hZGRQYXJhbWV0ZXIocGFyYW0pOwog
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMildLmludGVy
bS5mdW5jdGlvbik7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybU5vZGUgPSAoeXl2c3Bb
KDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAgICBi
cmVhazsKIAogICBjYXNlIDI1OgpAQCAtMjYyNCwxNCArMjY1MiwxNCBAQCB5eXJlZHVjZToKICAg
ICAgICAgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbi0+YWRkUGFyYW1ldGVyKHBh
cmFtKTsKICAgICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rpb24gPSAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0pLmZ1bmN0aW9uOwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1Ob2RlID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtKS5pbnRlcm1Ob2RlLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBj
YXNlIDI2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9uKSA9ICh5eXZz
cFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbik7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAyNzoKQEAgLTI2OTAsNyArMjcxOCw3IEBAIHl5cmVkdWNlOgogICAgICAgICBU
VHlwZSB0eXBlKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKSk7CiAgICAgICAgIFRGdW5j
dGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCZ0ZW1wU3RyaW5nLCB0eXBlLCBvcCk7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gZnVuY3Rpb247Ci0gICAgO30KKyAgICB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyODoKQEAgLTI3MDEsMTQgKzI3MjksMTQgQEAgeXlyZWR1
Y2U6CiAgICAgICAgIFRUeXBlIHR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKICAgICAgICAg
VEZ1bmN0aW9uICpmdW5jdGlvbiA9IG5ldyBURnVuY3Rpb24oKHl5dnNwWygxKSAtICgxKV0ubGV4
KS5zdHJpbmcsIHR5cGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9uKSA9IGZ1bmN0
aW9uOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjk6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMzA6CkBAIC0yNzIyLDcgKzI3NTAsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAg
ICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAzMToKQEAgLTI3MzYsNyAr
Mjc2NCw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgy
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAogICBjYXNlIDMyOgpAQCAtMjc1NywyNyArMjc4NSwyNyBAQCB5eXJlZHVjZToK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDMzOgogCi0gICAgeyAo
eXl2YWwuaW50ZXJtKS5vcCA9IEVPcE51bGw7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9
IEVPcE51bGw7IH0KICAgICBicmVhazsKIAogICBjYXNlIDM0OgogCi0gICAgeyAoeXl2YWwuaW50
ZXJtKS5vcCA9IEVPcE5lZ2F0aXZlOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BO
ZWdhdGl2ZTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMzU6CiAKLSAgICB7ICh5eXZhbC5pbnRl
cm0pLm9wID0gRU9wTG9naWNhbE5vdDsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9w
TG9naWNhbE5vdDsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMzY6CiAKLSAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAog
ICBjYXNlIDM3OgpAQCAtMjc4OSw3ICsyODE3LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAg
ICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMzg6CkBAIC0yODAxLDEy
ICsyODI5LDEyIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAogICBjYXNlIDM5OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30K
KyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA0MDoKQEAg
LTI4MTgsNyArMjg0Niw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDQxOgpAQCAtMjgzMCwxNyArMjg1OCwxNyBAQCB5
eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSA0MjoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNDM6CiAKLSAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAog
ICBjYXNlIDQ0OgpAQCAtMjg1NCw3ICsyODgyLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB1
bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxz
cFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDQ1OgpAQCAtMjg2OCw3ICsyODk2LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB1
bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxz
cFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDQ2OgpAQCAtMjg4Miw3ICsyOTEwLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB1
bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxz
cFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDQ3OgpAQCAtMjg5NiwxMiArMjkyNCwxMiBAQCB5eXJlZHVjZToKICAgICAgICAgICAg
IHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlv
bih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5
bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgNDg6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDQ5OgpAQCAtMjkxNSw3ICsyOTQz
LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2Up
OwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwg
RWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0K
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDUwOgpAQCAtMjkyOSwyNyArMjk1
NywyNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxz
ZSk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAg
fQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNTE6CiAKLSAgICB7ICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsK
IAogICBjYXNlIDUyOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA1MzoKIAotICAgIHsgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgNTQ6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDU1OgpAQCAtMjk2MywxMiArMjk5
MSwxMiBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxz
ZSk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAg
fQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNTY6CiAKLSAgICB7ICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsK
IAogICBjYXNlIDU3OgpAQCAtMjk4MiwxMiArMzAxMCwxMiBAQCB5eXJlZHVjZToKICAgICAgICAg
ICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7CiAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwg
KHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgNTg6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDU5OgpAQCAtMzAwMSwxMiAr
MzAyOSwxMiBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChm
YWxzZSk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRC
b29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAg
ICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjA6CiAKLSAgICB7ICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVh
azsKIAogICBjYXNlIDYxOgpAQCAtMzAyNCwxMiArMzA1MiwxMiBAQCB5eXJlZHVjZToKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
OwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2MjoKIAot
ICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgNjM6CkBAIC0zMDQzLDM5ICszMDcxLDM5IEBAIHl5cmVkdWNl
OgogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNl
IDY0OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEFzc2lnbjsgO30KKyAgICB7ICh5
eXZhbC5pbnRlcm0pLm9wID0gRU9wQXNzaWduOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2NToK
IAotICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BNdWxBc3NpZ247IDt9CisgICAgeyAoeXl2
YWwuaW50ZXJtKS5vcCA9IEVPcE11bEFzc2lnbjsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjY6
CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wRGl2QXNzaWduOyA7fQorICAgIHsgKHl5
dmFsLmludGVybSkub3AgPSBFT3BEaXZBc3NpZ247IH0KICAgICBicmVhazsKIAogICBjYXNlIDY3
OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEFkZEFzc2lnbjsgO30KKyAgICB7ICh5
eXZhbC5pbnRlcm0pLm9wID0gRU9wQWRkQXNzaWduOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2
ODoKIAotICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BTdWJBc3NpZ247IDt9CisgICAgeyAo
eXl2YWwuaW50ZXJtKS5vcCA9IEVPcFN1YkFzc2lnbjsgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
Njk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgNzA6CkBAIC0zMDg3LDcgKzMxMTUsNyBAQCB5eXJlZHVjZToK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA3
MToKQEAgLTMwOTYsNyArMzEyNCw3IEBAIHl5cmVkdWNlOgogICAgICAgICBpZiAoY29udGV4dC0+
Y29uc3RFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA3MjoKQEAgLTMxMjcs
NyArMzE1NSw3IEBAIHl5cmVkdWNlOgogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gcHJvdG90eXBlOwogCiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOwotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNzM6CkBAIC0zMTM2LDcgKzMxNjQsNyBA
QCB5eXJlZHVjZToKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMildLmludGVybSkuaW50ZXJt
QWdncmVnYXRlKQogICAgICAgICAgICAgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5pbnRlcm1B
Z2dyZWdhdGUtPnNldE9wKEVPcERlY2xhcmF0aW9uKTsKICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybSkuaW50ZXJtQWdncmVnYXRlOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNzQ6CkBAIC0zMTUxLDcgKzMxNzks
NyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
fQogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsKLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAogICBjYXNlIDc1OgpAQCAtMzIwNywyMSArMzIzNSwyMSBAQCB5eXJlZHVj
ZToKICAgICAgICAgLy8gV2UncmUgYXQgdGhlIGlubmVyIHNjb3BlIGxldmVsIG9mIHRoZSBmdW5j
dGlvbidzIGFyZ3VtZW50cyBhbmQgYm9keSBzdGF0ZW1lbnQuCiAgICAgICAgIC8vIEFkZCB0aGUg
ZnVuY3Rpb24gcHJvdG90eXBlIHRvIHRoZSBzdXJyb3VuZGluZyBzY29wZSBpbnN0ZWFkLgogICAg
ICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5nZXRPdXRlckxldmVsKCktPmluc2VydCgqKHl5dmFs
LmludGVybSkuZnVuY3Rpb24pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
NzY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLmZ1bmN0aW9uKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDc3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9uKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5mdW5jdGlvbik7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSA3ODoKQEAgLTMyMzMsNyArMzI2MSw3IEBAIHl5cmVkdWNlOgogICAgICAg
ICAgICAgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+YWRkUGFyYW1ldGVyKCh5
eXZzcFsoMikgLSAoMildLmludGVybSkucGFyYW0pOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBkZWxldGUgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5wYXJhbS50eXBlOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNzk6CkBAIC0zMjU1LDcgKzMyODMsNyBAQCB5eXJl
ZHVjZToKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmZ1bmN0aW9uKTsKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5mdW5jdGlvbiktPmFkZFBhcmFtZXRlcigoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pLnBh
cmFtKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgODA6
CkBAIC0zMjc2LDcgKzMzMDQsNyBAQCB5eXJlZHVjZToKICAgICAgICAgKHl5dmFsLmludGVybS5m
dW5jdGlvbikgPSBmdW5jdGlvbjsKICAgICAgICAgCiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRh
YmxlLnB1c2goKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDgxOgpAQCAt
MzI5MCw3ICszMzE4LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7KHl5dnNwWygyKSAtICgyKV0ubGV4KS5z
dHJpbmcsIG5ldyBUVHlwZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkpfTsKICAgICAg
ICAgKHl5dmFsLmludGVybSkucGFyYW0gPSBwYXJhbTsKLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAogICBjYXNlIDgyOgpAQCAtMzMxMSw3ICszMzM5LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAg
IFRUeXBlKiB0eXBlID0gbmV3IFRUeXBlKCh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSk7
CiAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7ICh5eXZzcFsoMikgLSAoNSldLmxleCkuc3Ry
aW5nLCB0eXBlIH07CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnBhcmFtID0gcGFyYW07Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA4MzoKQEAgLTMzMjAsNyArMzM0OCw3IEBA
IHl5cmVkdWNlOgogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMykgLSAoMyldLmlu
dGVybSk7CiAgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5bHNwWygzKSAt
ICgzKV0pLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3Bb
KDIpIC0gKDMpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSA4NDoKQEAgLTMzMzEsNyArMzM1OSw3IEBAIHl5cmVkdWNlOgogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJv
ckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDIp
XS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSA4NToKQEAgLTMzNDAsNyArMzM2OCw3IEBAIHl5cmVkdWNlOgogICAgICAgICAoeXl2YWwu
aW50ZXJtKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybSk7CiAgICAgICAgIGlmIChjb250ZXh0
LT5wYXJhbUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICgzKV0pLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0ucXVhbGlmaWVy
KSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA4NjoKQEAgLTMzNTEs
MzUgKzMzNzksMzUgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgyKV0p
LCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFsaWZpZXIpLCAoeXl2
YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDg3OgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFJbjsKLSAgICA7fQorICAgIH0KICAgICBi
cmVhazsKIAogICBjYXNlIDg4OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxp
ZmllcikgPSBFdnFJbjsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDg5Ogog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFPdXQ7Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA5MDoKIAogICAgIHsKICAgICAgICAgKHl5
dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxSW5PdXQ7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSA5MToKQEAgLTMzODcsMTQgKzM0MTUsMTQgQEAgeXlyZWR1Y2U6CiAgICAg
ewogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAwLCBuZXcgVFR5cGUoKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLnR5cGUpKSB9OwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5wYXJhbSA9IHBh
cmFtOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgOTI6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKTsKLSAgICA7
fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDkzOgpAQCAtMzQyMCw3ICszNDQ4LDcgQEAg
eXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmIChz
eW1ib2wgJiYgdmFyaWFibGUpCiAgICAgICAgICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5n
ZXRVbmlxdWVJZCgpKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDk0OgpA
QCAtMzQ0Miw3ICszNDcwLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBpZiAoY29udGV4dC0+
YXJyYXlFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNSldKSwgKih5eXZzcFsoMykgLSAoNSldLmxl
eCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkKICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAogICBjYXNlIDk1OgpAQCAtMzQ3MCw3ICszNDk4LDcgQEAgeXlyZWR1
Y2U6CiAgICAgICAgICAgICB0eXBlLnNldEFycmF5U2l6ZShzaXplKTsKICAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93
QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoNildLmludGVybSkuaW50ZXJtTm9kZSwgY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZSA/IHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgp
IDogMCwgKih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5nLCB0eXBlLCAoeXlsc3BbKDMpIC0g
KDYpXSkpLCAoeXlsc3BbKDMpIC0gKDYpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSA5NjoKQEAgLTM0OTQsNyArMzUyMiw3IEBAIHl5cmVkdWNlOgog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVy
bSkuaW50ZXJtQWdncmVnYXRlID0gMDsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgOTc6CkBAIC0zNTAyLDcgKzM1MzAsNyBAQCB5eXJlZHVjZToKICAgICB7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0u
dHlwZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1i
b2woMCwgIiIsIFRUeXBlKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKSksICh5eWxzcFso
MSkgLSAoMSldKSksICh5eWxzcFsoMSkgLSAoMSldKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSA5ODoKQEAgLTM1MjQsNyArMzU1Miw3IEBAIHl5cmVkdWNlOgogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAodmFyaWFibGUgJiYgc3ltYm9s
KQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA5OToKQEAgLTM1MzYsNyArMzU2NCw3
IEBAIHl5cmVkdWNlOgogICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0gKDQpXS5sZXgpLnN0cmluZywg
VFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSwgKHl5bHNwWygyKSAtICg0KV0p
KTsKICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXlsc3BbKDIpIC0gKDQpXSkpOwogICAg
ICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUp
OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTAwOgpAQCAtMzU3Miw3ICsz
NjAwLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBpZiAodmFyaWFibGUgJiYgc3ltYm9sKQog
ICAgICAgICAgICAgICAgIHN5bWJvbC0+c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwog
ICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMDE6CkBAIC0z
NTk2LDcgKzM2MjQsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAg
ICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEwMjoKQEAgLTM2MTgs
NyArMzY0Niw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9s
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICgyKV0u
bGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZhbC5pbnRlcm0pLnR5cGUpLCAoeXlsc3BbKDIpIC0gKDIp
XSkpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXlsc3BbKDIpIC0gKDIpXSkp
OwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMDM6CkBA
IC0zNjMxLDcgKzM2NTksNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5zZXRBcnJh
eShmYWxzZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNl
IDEwNDoKQEAgLTM2NTUsMTQgKzM2ODMsMTQgQEAgeXlyZWR1Y2U6CiAgICAgICAgIH0KICAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKTsK
ICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5xdWFsaWZpZXIgPSAoeXl2c3BbKDEpIC0gKDIp
XS5pbnRlcm0udHlwZSkucXVhbGlmaWVyOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMTA1OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidFZvaWQsIEV2cUNvbnN0LCAoeXlsc3BbKDEpIC0gKDEpXSkpOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTA2OgpAQCAtMzY3Miw3ICszNzAwLDcgQEAgeXlyZWR1Y2U6
CiAgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMSld
KSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiYXR0cmlidXRlIikpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQXR0cmlidXRlLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTA3OgpAQCAtMzY4NCw3ICszNzEy
LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidFZvaWQsIEV2cVZhcnlpbmdPdXQsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZx
VmFyeWluZ0luLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgMTA4OgpAQCAtMzY5Niw3ICszNzI0LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZh
cnlpbmdPdXQsICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJpYW50VmFyeWlu
Z0luLCAoeXlsc3BbKDEpIC0gKDIpXSkpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMTA5OgpAQCAtMzcwNSw3ICszNzMzLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIGlmIChj
b250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMSldKSwgY29udGV4dC0+c3lt
Ym9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9ybSIpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZv
aWQsIEV2cVVuaWZvcm0sICh5eWxzcFsoMSkgLSAoMSldKSk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAxMTA6CkBAIC0zNzE5LDcgKzM3NDcsNyBAQCB5eXJlZHVjZToKICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDExMToKQEAgLTM3MjcsMzUg
KzM3NTUsMzUgQEAgeXlyZWR1Y2U6CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
ID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnByZWNpc2lvbiA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5wcmVjaXNpb24pOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTEyOgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtLnByZWNpc2lvbikgPSBFYnBIaWdoOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMTEzOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnBy
ZWNpc2lvbikgPSBFYnBNZWRpdW07Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAxMTQ6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9IEVicExv
dzsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDExNToKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBl
KTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDExNjoKQEAgLTM3NzEsNyAr
Mzc5OSw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAg
ICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDExNzoKQEAgLTM3
NzksNyArMzgwNyw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFs
ID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZx
VGVtcG9yYXJ5OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQs
IHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxMTg6CkBAIC0zNzg3LDcgKzM4MTUsNyBAQCB5eXJlZHVjZToKICAgICB7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDExOToKQEAgLTM3OTUsNyArMzgyMyw3IEBAIHl5
cmVkdWNlOgogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9s
VGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygxKSAt
ICgxKV0pKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEyMDoKQEAgLTM4
MDMsNyArMzgzMSw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFs
ID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZx
VGVtcG9yYXJ5OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEJvb2ws
IHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxMjE6CkBAIC0zODEyLDcgKzM4NDAsNyBAQCB5eXJlZHVjZToKICAgICAgICAgVFF1
YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZx
R2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJh
c2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsK
IAogICBjYXNlIDEyMjoKQEAgLTM4MjEsNyArMzg0OSw3IEBAIHl5cmVkdWNlOgogICAgICAgICBU
UXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBF
dnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgMTIzOgpAQCAtMzgzMCw3ICszODU4LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAg
IFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/
IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxMjQ6CkBAIC0zODM5LDcgKzM4NjcsNyBAQCB5eXJlZHVjZToKICAgICAg
ICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
ID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDIpOwotICAgIDt9CisgICAgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgMTI1OgpAQCAtMzg0OCw3ICszODc2LDcgQEAgeXlyZWR1Y2U6CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKLSAgICA7fQorICAgIH0KICAgICBi
cmVhazsKIAogICBjYXNlIDEyNjoKQEAgLTM4NTcsNyArMzg4NSw3IEBAIHl5cmVkdWNlOgogICAg
ICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAxMjc6CkBAIC0zODY2LDcgKzM4OTQsNyBAQCB5eXJlZHVjZToKICAg
ICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAxMjg6CkBAIC0zODc1LDcgKzM5MDMsNyBAQCB5eXJlZHVjZToKICAg
ICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAxMjk6CkBAIC0zODg0LDcgKzM5MTIsNyBAQCB5eXJlZHVjZToKICAg
ICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAxMzA6CkBAIC0zODkzLDcgKzM5MjEsNyBAQCB5eXJlZHVjZToKICAg
ICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyLCB0cnVlKTsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAogICBjYXNlIDEzMToKQEAgLTM5MDIsNyArMzkzMCw3IEBAIHl5cmVk
dWNlOgogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMsIHRydWUpOwotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTMyOgpAQCAtMzkxMSw3ICszOTM5LDcg
QEAgeXlyZWR1Y2U6CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAt
ICgxKV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCwgdHJ1
ZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzM6CkBAIC0zOTE5LDcg
KzM5NDcsNyBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyMkQs
IHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxMzQ6CkBAIC0zOTI3LDcgKzM5NTUsNyBAQCB5eXJlZHVjZToKICAgICB7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEzNToKQEAgLTM5MzksNyArMzk2Nyw3
IEBAIHl5cmVkdWNlOgogICAgICAgICB9CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJu
YWxPRVMsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxMzY6CkBAIC0zOTUxLDcgKzM5NzksNyBAQCB5eXJlZHVjZToKICAgICAg
ICAgfQogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwgKHl5bHNwWygxKSAt
ICgxKV0pKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEzNzoKQEAgLTM5
NTksNyArMzk4Nyw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKTsKICAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5xdWFsaWZpZXIgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxMzg6CkBAIC0zOTczLDEyICs0MDAxLDEyIEBAIHl5cmVkdWNlOgogICAgICAg
ICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkg
PyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QmFzaWMoRWJ0U3RydWN0LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnVzZXJEZWYgPSAmc3RydWN0dXJlOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTM5OgogCi0gICAgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1
Y3REZWNsYXJhdGlvbigoeXlsc3BbKDIpIC0gKDMpXSksICooeXl2c3BbKDIpIC0gKDMpXS5sZXgp
LnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgO30KKyAgICB7IGlmIChjb250ZXh0LT5lbnRl
clN0cnVjdERlY2xhcmF0aW9uKCh5eWxzcFsoMikgLSAoMyldKSwgKih5eXZzcFsoMikgLSAoMyld
LmxleCkuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAxNDA6CkBAIC0zOTk2LDEyICs0MDI0LDEyIEBAIHl5cmVkdWNlOgogICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5LCAoeXlsc3BbKDEp
IC0gKDYpXSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnVzZXJEZWYgPSBzdHJ1Y3R1
cmU7CiAgICAgICAgIGNvbnRleHQtPmV4aXRTdHJ1Y3REZWNsYXJhdGlvbigpOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTQxOgogCi0gICAgeyBpZiAoY29udGV4dC0+ZW50
ZXJTdHJ1Y3REZWNsYXJhdGlvbigoeXlsc3BbKDIpIC0gKDIpXSksICooeXl2c3BbKDIpIC0gKDIp
XS5sZXgpLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgO30KKyAgICB7IGlmIChjb250ZXh0
LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eWxzcFsoMikgLSAoMildKSwgKih5eXZzcFsoMikg
LSAoMildLmxleCkuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxNDI6CkBAIC00MDExLDE0ICs0MDM5LDE0IEBAIHl5cmVkdWNlOgogICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5LCAoeXls
c3BbKDEpIC0gKDUpXSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnVzZXJEZWYgPSBz
dHJ1Y3R1cmU7CiAgICAgICAgIGNvbnRleHQtPmV4aXRTdHJ1Y3REZWNsYXJhdGlvbigpOwotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTQzOgogCiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uZmllbGRM
aXN0KTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE0NDoKQEAgLTQwMzUs
NyArNDA2Myw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgKHl5dmFs
LmludGVybS5maWVsZExpc3QpLT5wdXNoX2JhY2soZmllbGQpOwogICAgICAgICB9Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNDU6CkBAIC00MDY5LDcgKzQwOTcsNyBAQCB5
eXJlZHVjZToKICAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3ROZXN0aW5nRXJyb3JDaGVj
aygoeXlsc3BbKDEpIC0gKDMpXSksICooKih5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSlbaV0pKQog
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTQ2OgpAQCAtNDA3NywxNCArNDEwNSwxNCBAQCB5
eXJlZHVjZToKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSA9IE5ld1Bv
b2xURmllbGRMaXN0KCk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+cHVzaF9i
YWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5maWVsZCkpOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMTQ3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmZp
ZWxkTGlzdCktPnB1c2hfYmFjaygoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uZmllbGQpKTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE0ODoKQEAgLTQwOTUsNyArNDEyMyw3
IEBAIHl5cmVkdWNlOgogCiAgICAgICAgIFRUeXBlKiB0eXBlID0gbmV3IFRUeXBlKEVidFZvaWQs
IEVicFVuZGVmaW5lZCk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGQpID0gbmV3IFRGaWVs
ZCh0eXBlLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZyk7Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxNDk6CkBAIC00MTExLDY3ICs0MTM5LDY3IEBAIHl5cmVkdWNl
OgogICAgICAgICB0eXBlLT5zZXRBcnJheVNpemUoc2l6ZSk7CiAKICAgICAgICAgKHl5dmFsLmlu
dGVybS5maWVsZCkgPSBuZXcgVEZpZWxkKHR5cGUsICh5eXZzcFsoMSkgLSAoNCldLmxleCkuc3Ry
aW5nKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE1MDoKIAotICAgIHsg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgMTUxOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTUyOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSk7IDt9Cisg
ICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LmludGVybUFnZ3JlZ2F0ZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1MzoKIAotICAgIHsg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1NDoK
IAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBj
YXNlIDE1NToKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVh
azsKIAogICBjYXNlIDE1NjoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0K
ICAgICBicmVhazsKIAogICBjYXNlIDE1NzoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
Tm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1ODoKIAotICAgIHsgKHl5dmFsLmludGVy
bS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30K
KyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1OToKIAotICAgIHsgKHl5
dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gMDsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0u
aW50ZXJtQWdncmVnYXRlKSA9IDA7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE2MDoKIAotICAg
IHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyA7fQorICAgIHsgY29udGV4dC0+c3ltYm9s
VGFibGUucHVzaCgpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjE6CiAKLSAgICB7IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLnBvcCgpOyA7fQorICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9w
KCk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE2MjoKQEAgLTQxODIsNDQgKzQyMTAsNDQgQEAg
eXlyZWR1Y2U6CiAgICAgICAgICAgICAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtQWdn
cmVnYXRlKS0+c2V0TGluZSgoeXlsb2MpKTsKICAgICAgICAgfQogICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtQWdn
cmVnYXRlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE2MzoKIAotICAg
IHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5p
bnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE2
NDoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAog
ICBjYXNlIDE2NToKIAotICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyA7fQorICAg
IHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAx
NjY6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQorICAg
IHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAog
ICBjYXNlIDE2NzoKIAotICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyA7fQorICAg
IHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAx
Njg6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQorICAg
IHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAog
ICBjYXNlIDE2OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9
IDA7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNzA6CkBAIC00MjMwLDMx
ICs0MjU4LDMxIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgKHl5dnNwWygyKSAtICgzKV0uaW50
ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldExpbmUoKHl5bG9jKSk7CiAgICAgICAgIH0KICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMikgLSAoMyldLmludGVybS5p
bnRlcm1BZ2dyZWdhdGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTcx
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0u
aW50ZXJtTm9kZSksICh5eWxvYykpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMTcyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0uaW50ZXJtQWdncmVnYXRlKSwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybU5v
ZGUpLCAoeXlsb2MpKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE3MzoK
IAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IDA7IDt9CisgICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gMDsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTc0OgogCi0g
ICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gc3RhdGljX2Nhc3Q8VEludGVybU5vZGUq
PigoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7IDt9CisgICAgeyAo
eXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gc3RhdGljX2Nhc3Q8VEludGVybU5vZGUqPigoeXl2
c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7IH0KICAgICBicmVhazsKIAog
ICBjYXNlIDE3NToKQEAgLTQyNjMsNyArNDI5MSw3IEBAIHl5cmVkdWNlOgogICAgICAgICBpZiAo
Y29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICg1KV0pLCAoeXl2c3BbKDMpIC0g
KDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkU2VsZWN0aW9uKCh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0ubm9kZVBhaXIpLCAoeXlsc3BbKDEpIC0g
KDUpXSkpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTc2OgpAQCAtNDI3
MSw3ICs0Mjk5LDcgQEAgeXlyZWR1Y2U6CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5v
ZGVQYWlyKS5ub2RlMSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKTsKICAg
ICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTIgPSAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAx
Nzc6CkBAIC00Mjc5LDcgKzQzMDcsNyBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVy
bU5vZGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMiA9IDA7Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNzg6CkBAIC00Mjg4LDcgKzQzMTYsNyBA
QCB5eXJlZHVjZToKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIGlmIChjb250
ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0TGluZSgpLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAxNzk6CkBAIC00MzA2LDEyICs0MzM0LDEyIEBAIHl5cmVkdWNlOgog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gMDsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgMTgwOgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7
ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgO30KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRh
YmxlLnB1c2goKTsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOyB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxODE6CkBAIC00MzIwLDEyICs0MzQ4LDEyIEBAIHl5cmVkdWNlOgogICAgICAgICBj
b250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wV2hpbGUsIDAsICh5eXZz
cFsoNCkgLSAoNildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAwLCAoeXl2c3BbKDYpIC0gKDYp
XS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxzcFsoMSkgLSAoNildKSk7CiAgICAgICAgIC0tY29u
dGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBj
YXNlIDE4MjoKIAotICAgIHsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOyA7fQorICAgIHsg
Kytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxODM6
CkBAIC00MzM2LDEyICs0MzY0LDEyIEBAIHl5cmVkdWNlOgogCiAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcERvV2hp
bGUsIDAsICh5eXZzcFsoNikgLSAoOCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAwLCAoeXl2
c3BbKDMpIC0gKDgpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxzcFsoNCkgLSAoOCldKSk7CiAg
ICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKLSAgICA7fQorICAgIH0KICAgICBi
cmVhazsKIAogICBjYXNlIDE4NDoKIAotICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgp
OyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IDt9CisgICAgeyBjb250ZXh0LT5zeW1ib2xU
YWJsZS5wdXNoKCk7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgMTg1OgpAQCAtNDM1MCwzNSArNDM3OCwzNSBAQCB5eXJlZHVjZToKICAgICAgICAg
Y29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcEZvciwgKHl5dnNwWyg0
KSAtICg3KV0uaW50ZXJtLmludGVybU5vZGUpLCByZWludGVycHJldF9jYXN0PFRJbnRlcm1UeXBl
ZCo+KCh5eXZzcFsoNSkgLSAoNyldLmludGVybS5ub2RlUGFpcikubm9kZTEpLCByZWludGVycHJl
dF9jYXN0PFRJbnRlcm1UeXBlZCo+KCh5eXZzcFsoNSkgLSAoNyldLmludGVybS5ub2RlUGFpciku
bm9kZTIpLCAoeXl2c3BbKDcpIC0gKDcpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxzcFsoMSkg
LSAoNyldKSk7CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE4NjoKIAogICAgIHsKICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2Rl
KTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE4NzoKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS5pbnRlcm1Ob2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE4ODoK
IAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAxODk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IDA7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAx
OTA6CkBAIC00Mzg2LDcgKzQ0MTQsNyBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyID0gMDsK
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE5MToKQEAgLTQzOTQsNyArNDQy
Miw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpciku
bm9kZTEgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAg
ICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTIgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNl
IDE5MjoKQEAgLTQ0MDUsNyArNDQzMyw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcENvbnRpbnVlLCAoeXlsc3Bb
KDEpIC0gKDIpXSkpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTkzOgpA
QCAtNDQxNiw3ICs0NDQ0LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQnJlYWssICh5eWxzcFsoMSkgLSAoMild
KSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxOTQ6CkBAIC00NDI3LDcg
KzQ0NTUsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFso
MSkgLSAoMildKSwgIm5vbi12b2lkIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0
dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICA7
fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE5NToKQEAgLTQ0NDIsNyArNDQ3MCw3IEBA
IHl5cmVkdWNlOgogICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgzKV0p
LCAiZnVuY3Rpb24gcmV0dXJuIGlzIG5vdCBtYXRjaGluZyB0eXBlOiIsICJyZXR1cm4iKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTk2OgpAQCAtNDQ1MCw3ICs0NDc4LDcgQEAgeXlyZWR1Y2U6
CiAgICAgewogICAgICAgICBGUkFHX09OTFkoImRpc2NhcmQiLCAoeXlsc3BbKDEpIC0gKDIpXSkp
OwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEJyYW5jaChFT3BLaWxsLCAoeXlsc3BbKDEpIC0gKDIpXSkpOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTk3OgpAQCAtNDQ1OCw3ICs0NDg2LDcgQEAgeXlyZWR1
Y2U6CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwogICAgICAgICBjb250ZXh0LT50cmVlUm9vdCA9
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxOTg6CkBAIC00NDY2LDIxICs0NDk0LDIxIEBAIHl5cmVkdWNlOgogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5n
cm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5dnNw
WygyKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXlsb2MpKTsKICAgICAgICAgY29udGV4
dC0+dHJlZVJvb3QgPSAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTk5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjAwOgogCiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVy
bU5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjAxOgpAQCAtNDU3
MCw3ICs0NTk4LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIGNvbnRleHQtPmludGVybWVkaWF0ZS5z
ZXRBZ2dyZWdhdGVPcGVyYXRvcihwYXJhbU5vZGVzLCBFT3BQYXJhbWV0ZXJzLCAoeXlsc3BbKDEp
IC0gKDEpXSkpOwogICAgICAgICAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybUFnZ3Jl
Z2F0ZSA9IHBhcmFtTm9kZXM7CiAgICAgICAgIGNvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWwgPSAw
OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjAyOgpAQCAtNDU5NCwxNCAr
NDYyMiwyNCBAQCB5eXJlZHVjZToKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKS0+
Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0RGVidWcoY29udGV4dC0+cHJhZ21hKCkuZGVidWcpOwogCiAg
ICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOwotICAgIDt9CisgICAgfQogICAgIGJy
ZWFrOwogCiAKLS8qIExpbmUgMTI2NyBvZiB5YWNjLmMuICAqLwogCiAgICAgICBkZWZhdWx0OiBi
cmVhazsKICAgICB9CisgIC8qIFVzZXIgc2VtYW50aWMgYWN0aW9ucyBzb21ldGltZXMgYWx0ZXIg
eXljaGFyLCBhbmQgdGhhdCByZXF1aXJlcworICAgICB0aGF0IHl5dG9rZW4gYmUgdXBkYXRlZCB3
aXRoIHRoZSBuZXcgdHJhbnNsYXRpb24uICBXZSB0YWtlIHRoZQorICAgICBhcHByb2FjaCBvZiB0
cmFuc2xhdGluZyBpbW1lZGlhdGVseSBiZWZvcmUgZXZlcnkgdXNlIG9mIHl5dG9rZW4uCisgICAg
IE9uZSBhbHRlcm5hdGl2ZSBpcyB0cmFuc2xhdGluZyBoZXJlIGFmdGVyIGV2ZXJ5IHNlbWFudGlj
IGFjdGlvbiwKKyAgICAgYnV0IHRoYXQgdHJhbnNsYXRpb24gd291bGQgYmUgbWlzc2VkIGlmIHRo
ZSBzZW1hbnRpYyBhY3Rpb24gaW52b2tlcworICAgICBZWUFCT1JULCBZWUFDQ0VQVCwgb3IgWVlF
UlJPUiBpbW1lZGlhdGVseSBhZnRlciBhbHRlcmluZyB5eWNoYXIgb3IKKyAgICAgaWYgaXQgaW52
b2tlcyBZWUJBQ0tVUC4gIEluIHRoZSBjYXNlIG9mIFlZQUJPUlQgb3IgWVlBQ0NFUFQsIGFuCisg
ICAgIGluY29ycmVjdCBkZXN0cnVjdG9yIG1pZ2h0IHRoZW4gYmUgaW52b2tlZCBpbW1lZGlhdGVs
eS4gIEluIHRoZQorICAgICBjYXNlIG9mIFlZRVJST1Igb3IgWVlCQUNLVVAsIHN1YnNlcXVlbnQg
cGFyc2VyIGFjdGlvbnMgbWlnaHQgbGVhZAorICAgICB0byBhbiBpbmNvcnJlY3QgZGVzdHJ1Y3Rv
ciBjYWxsIG9yIHZlcmJvc2Ugc3ludGF4IGVycm9yIG1lc3NhZ2UKKyAgICAgYmVmb3JlIHRoZSBs
b29rYWhlYWQgaXMgdHJhbnNsYXRlZC4gICovCiAgIFlZX1NZTUJPTF9QUklOVCAoIi0+ICQkID0i
LCB5eXIxW3l5bl0sICZ5eXZhbCwgJnl5bG9jKTsKIAogICBZWVBPUFNUQUNLICh5eWxlbik7CkBA
IC00NjMwLDYgKzQ2NjgsMTAgQEAgeXlyZWR1Y2U6CiB8IHl5ZXJybGFiIC0tIGhlcmUgb24gZGV0
ZWN0aW5nIGVycm9yIHwKIGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwog
eXllcnJsYWI6CisgIC8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGxhdGVzdCBsb29rYWhlYWQgdHJhbnNs
YXRpb24uICBTZWUgY29tbWVudHMgYXQKKyAgICAgdXNlciBzZW1hbnRpYyBhY3Rpb25zIGZvciB3
aHkgdGhpcyBpcyBuZWNlc3NhcnkuICAqLworICB5eXRva2VuID0geXljaGFyID09IFlZRU1QVFkg
PyBZWUVNUFRZIDogWVlUUkFOU0xBVEUgKHl5Y2hhcik7CisKICAgLyogSWYgbm90IGFscmVhZHkg
cmVjb3ZlcmluZyBmcm9tIGFuIGVycm9yLCByZXBvcnQgdGhpcyBlcnJvci4gICovCiAgIGlmICgh
eXllcnJzdGF0dXMpCiAgICAgewpAQCAtNDYzNyw2MiArNDY3OSw2MSBAQCB5eWVycmxhYjoKICNp
ZiAhIFlZRVJST1JfVkVSQk9TRQogICAgICAgeXllcnJvciAoJnl5bGxvYywgY29udGV4dCwgWVlf
KCJzeW50YXggZXJyb3IiKSk7CiAjZWxzZQorIyBkZWZpbmUgWVlTWU5UQVhfRVJST1IgeXlzeW50
YXhfZXJyb3IgKCZ5eW1zZ19hbGxvYywgJnl5bXNnLCBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeXlzc3AsIHl5dG9rZW4pCiAgICAgICB7Ci0gICAgWVlTSVpFX1Qg
eXlzaXplID0geXlzeW50YXhfZXJyb3IgKDAsIHl5c3RhdGUsIHl5Y2hhcik7Ci0gICAgaWYgKHl5
bXNnX2FsbG9jIDwgeXlzaXplICYmIHl5bXNnX2FsbG9jIDwgWVlTVEFDS19BTExPQ19NQVhJTVVN
KQotICAgICAgewotICAgICAgICBZWVNJWkVfVCB5eWFsbG9jID0gMiAqIHl5c2l6ZTsKLSAgICAg
ICAgaWYgKCEgKHl5c2l6ZSA8PSB5eWFsbG9jICYmIHl5YWxsb2MgPD0gWVlTVEFDS19BTExPQ19N
QVhJTVVNKSkKLSAgICAgICAgICB5eWFsbG9jID0gWVlTVEFDS19BTExPQ19NQVhJTVVNOwotICAg
ICAgICBpZiAoeXltc2cgIT0geXltc2didWYpCi0gICAgICAgICAgWVlTVEFDS19GUkVFICh5eW1z
Zyk7Ci0gICAgICAgIHl5bXNnID0gKGNoYXIgKikgWVlTVEFDS19BTExPQyAoeXlhbGxvYyk7Ci0g
ICAgICAgIGlmICh5eW1zZykKLSAgICAgICAgICB5eW1zZ19hbGxvYyA9IHl5YWxsb2M7Ci0gICAg
ICAgIGVsc2UKKyAgICAgICAgY2hhciBjb25zdCAqeXltc2dwID0gWVlfKCJzeW50YXggZXJyb3Ii
KTsKKyAgICAgICAgaW50IHl5c3ludGF4X2Vycm9yX3N0YXR1czsKKyAgICAgICAgeXlzeW50YXhf
ZXJyb3Jfc3RhdHVzID0gWVlTWU5UQVhfRVJST1I7CisgICAgICAgIGlmICh5eXN5bnRheF9lcnJv
cl9zdGF0dXMgPT0gMCkKKyAgICAgICAgICB5eW1zZ3AgPSB5eW1zZzsKKyAgICAgICAgZWxzZSBp
ZiAoeXlzeW50YXhfZXJyb3Jfc3RhdHVzID09IDEpCiAgICAgICAgICAgewotICAgICAgICB5eW1z
ZyA9IHl5bXNnYnVmOwotICAgICAgICB5eW1zZ19hbGxvYyA9IHNpemVvZiB5eW1zZ2J1ZjsKKyAg
ICAgICAgICAgIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikKKyAgICAgICAgICAgICAgWVlTVEFDS19G
UkVFICh5eW1zZyk7CisgICAgICAgICAgICB5eW1zZyA9IChjaGFyICopIFlZU1RBQ0tfQUxMT0Mg
KHl5bXNnX2FsbG9jKTsKKyAgICAgICAgICAgIGlmICgheXltc2cpCisgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICB5eW1zZyA9IHl5bXNnYnVmOworICAgICAgICAgICAgICAgIHl5bXNn
X2FsbG9jID0gc2l6ZW9mIHl5bXNnYnVmOworICAgICAgICAgICAgICAgIHl5c3ludGF4X2Vycm9y
X3N0YXR1cyA9IDI7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHl5c3ludGF4X2Vycm9yX3N0YXR1cyA9IFlZU1lOVEFY
X0VSUk9SOworICAgICAgICAgICAgICAgIHl5bXNncCA9IHl5bXNnOworICAgICAgICAgICAgICB9
CiAgICAgICAgICAgfQotICAgICAgfQotCi0gICAgaWYgKDAgPCB5eXNpemUgJiYgeXlzaXplIDw9
IHl5bXNnX2FsbG9jKQotICAgICAgewotICAgICAgICAodm9pZCkgeXlzeW50YXhfZXJyb3IgKHl5
bXNnLCB5eXN0YXRlLCB5eWNoYXIpOwotICAgICAgICB5eWVycm9yICgmeXlsbG9jLCBjb250ZXh0
LCB5eW1zZyk7Ci0gICAgICB9Ci0gICAgZWxzZQotICAgICAgewotICAgICAgICB5eWVycm9yICgm
eXlsbG9jLCBjb250ZXh0LCBZWV8oInN5bnRheCBlcnJvciIpKTsKLSAgICAgICAgaWYgKHl5c2l6
ZSAhPSAwKQorICAgICAgICB5eWVycm9yICgmeXlsbG9jLCBjb250ZXh0LCB5eW1zZ3ApOworICAg
ICAgICBpZiAoeXlzeW50YXhfZXJyb3Jfc3RhdHVzID09IDIpCiAgICAgICAgICAgZ290byB5eWV4
aGF1c3RlZGxhYjsKICAgICAgIH0KLSAgICAgIH0KKyMgdW5kZWYgWVlTWU5UQVhfRVJST1IKICNl
bmRpZgogICAgIH0KIAotICB5eWVycm9yX3JhbmdlWzBdID0geXlsbG9jOworICB5eWVycm9yX3Jh
bmdlWzFdID0geXlsbG9jOwogCiAgIGlmICh5eWVycnN0YXR1cyA9PSAzKQogICAgIHsKLSAgICAg
IC8qIElmIGp1c3QgdHJpZWQgYW5kIGZhaWxlZCB0byByZXVzZSBsb29rLWFoZWFkIHRva2VuIGFm
dGVyIGFuCi0gICAgIGVycm9yLCBkaXNjYXJkIGl0LiAgKi8KKyAgICAgIC8qIElmIGp1c3QgdHJp
ZWQgYW5kIGZhaWxlZCB0byByZXVzZSBsb29rYWhlYWQgdG9rZW4gYWZ0ZXIgYW4KKwkgZXJyb3Is
IGRpc2NhcmQgaXQuICAqLwogCiAgICAgICBpZiAoeXljaGFyIDw9IFlZRU9GKQotICAgIHsKLSAg
ICAgIC8qIFJldHVybiBmYWlsdXJlIGlmIGF0IGVuZCBvZiBpbnB1dC4gICovCi0gICAgICBpZiAo
eXljaGFyID09IFlZRU9GKQotICAgICAgICBZWUFCT1JUOwotICAgIH0KKwl7CisJICAvKiBSZXR1
cm4gZmFpbHVyZSBpZiBhdCBlbmQgb2YgaW5wdXQuICAqLworCSAgaWYgKHl5Y2hhciA9PSBZWUVP
RikKKwkgICAgWVlBQk9SVDsKKwl9CiAgICAgICBlbHNlCi0gICAgewotICAgICAgeXlkZXN0cnVj
dCAoIkVycm9yOiBkaXNjYXJkaW5nIiwKLSAgICAgICAgICAgICAgeXl0b2tlbiwgJnl5bHZhbCwg
Jnl5bGxvYywgY29udGV4dCk7Ci0gICAgICB5eWNoYXIgPSBZWUVNUFRZOwotICAgIH0KKwl7CisJ
ICB5eWRlc3RydWN0ICgiRXJyb3I6IGRpc2NhcmRpbmciLAorCQkgICAgICB5eXRva2VuLCAmeXls
dmFsLCAmeXlsbG9jLCBjb250ZXh0KTsKKwkgIHl5Y2hhciA9IFlZRU1QVFk7CisJfQogICAgIH0K
IAotICAvKiBFbHNlIHdpbGwgdHJ5IHRvIHJldXNlIGxvb2stYWhlYWQgdG9rZW4gYWZ0ZXIgc2hp
ZnRpbmcgdGhlIGVycm9yCisgIC8qIEVsc2Ugd2lsbCB0cnkgdG8gcmV1c2UgbG9va2FoZWFkIHRv
a2VuIGFmdGVyIHNoaWZ0aW5nIHRoZSBlcnJvcgogICAgICB0b2tlbi4gICovCiAgIGdvdG8geXll
cnJsYWIxOwogCkBAIC00NzA4LDcgKzQ3NDksNyBAQCB5eWVycm9ybGFiOgogICBpZiAoLypDT05T
VENPTkQqLyAwKQogICAgICBnb3RvIHl5ZXJyb3JsYWI7CiAKLSAgeXllcnJvcl9yYW5nZVswXSA9
IHl5bHNwWzEteXlsZW5dOworICB5eWVycm9yX3JhbmdlWzFdID0geXlsc3BbMS15eWxlbl07CiAg
IC8qIERvIG5vdCByZWNsYWltIHRoZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdoaWNoIGFjdGlvbiB0
cmlnZ2VyZWQKICAgICAgdGhpcyBZWUVSUk9SLiAgKi8KICAgWVlQT1BTVEFDSyAoeXlsZW4pOwpA
QCAtNDcyMiw0MyArNDc2Myw0MiBAQCB5eWVycm9ybGFiOgogfCB5eWVycmxhYjEgLS0gY29tbW9u
IGNvZGUgZm9yIGJvdGggc3ludGF4IGVycm9yIGFuZCBZWUVSUk9SLiAgfAogYC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogeXll
cnJsYWIxOgotICB5eWVycnN0YXR1cyA9IDM7ICAgIC8qIEVhY2ggcmVhbCB0b2tlbiBzaGlmdGVk
IGRlY3JlbWVudHMgdGhpcy4gICovCisgIHl5ZXJyc3RhdHVzID0gMzsJLyogRWFjaCByZWFsIHRv
a2VuIHNoaWZ0ZWQgZGVjcmVtZW50cyB0aGlzLiAgKi8KIAogICBmb3IgKDs7KQogICAgIHsKICAg
ICAgIHl5biA9IHl5cGFjdFt5eXN0YXRlXTsKLSAgICAgIGlmICh5eW4gIT0gWVlQQUNUX05JTkYp
Ci0gICAgewotICAgICAgeXluICs9IFlZVEVSUk9SOwotICAgICAgaWYgKDAgPD0geXluICYmIHl5
biA8PSBZWUxBU1QgJiYgeXljaGVja1t5eW5dID09IFlZVEVSUk9SKQotICAgICAgICB7Ci0gICAg
ICAgICAgeXluID0geXl0YWJsZVt5eW5dOwotICAgICAgICAgIGlmICgwIDwgeXluKQotICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICAgIGlmICgheXlwYWN0X3ZhbHVlX2lzX2Rl
ZmF1bHQgKHl5bikpCisJeworCSAgeXluICs9IFlZVEVSUk9SOworCSAgaWYgKDAgPD0geXluICYm
IHl5biA8PSBZWUxBU1QgJiYgeXljaGVja1t5eW5dID09IFlZVEVSUk9SKQorCSAgICB7CisJICAg
ICAgeXluID0geXl0YWJsZVt5eW5dOworCSAgICAgIGlmICgwIDwgeXluKQorCQlicmVhazsKKwkg
ICAgfQorCX0KIAogICAgICAgLyogUG9wIHRoZSBjdXJyZW50IHN0YXRlIGJlY2F1c2UgaXQgY2Fu
bm90IGhhbmRsZSB0aGUgZXJyb3IgdG9rZW4uICAqLwogICAgICAgaWYgKHl5c3NwID09IHl5c3Mp
Ci0gICAgWVlBQk9SVDsKKwlZWUFCT1JUOwogCi0gICAgICB5eWVycm9yX3JhbmdlWzBdID0gKnl5
bHNwOworICAgICAgeXllcnJvcl9yYW5nZVsxXSA9ICp5eWxzcDsKICAgICAgIHl5ZGVzdHJ1Y3Qg
KCJFcnJvcjogcG9wcGluZyIsCi0gICAgICAgICAgeXlzdG9zW3l5c3RhdGVdLCB5eXZzcCwgeXls
c3AsIGNvbnRleHQpOworCQkgIHl5c3Rvc1t5eXN0YXRlXSwgeXl2c3AsIHl5bHNwLCBjb250ZXh0
KTsKICAgICAgIFlZUE9QU1RBQ0sgKDEpOwogICAgICAgeXlzdGF0ZSA9ICp5eXNzcDsKICAgICAg
IFlZX1NUQUNLX1BSSU5UICh5eXNzLCB5eXNzcCk7CiAgICAgfQogCi0gIGlmICh5eW4gPT0gWVlG
SU5BTCkKLSAgICBZWUFDQ0VQVDsKLQorICBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9C
RUdJTgogICAqKyt5eXZzcCA9IHl5bHZhbDsKKyAgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTEla
RURfRU5ECiAKLSAgeXllcnJvcl9yYW5nZVsxXSA9IHl5bGxvYzsKKyAgeXllcnJvcl9yYW5nZVsy
XSA9IHl5bGxvYzsKICAgLyogVXNpbmcgWVlMTE9DIGlzIHRlbXB0aW5nLCBidXQgd291bGQgY2hh
bmdlIHRoZSBsb2NhdGlvbiBvZgotICAgICB0aGUgbG9vay1haGVhZC4gIFlZTE9DIGlzIGF2YWls
YWJsZSB0aG91Z2guICAqLwotICBZWUxMT0NfREVGQVVMVCAoeXlsb2MsICh5eWVycm9yX3Jhbmdl
IC0gMSksIDIpOworICAgICB0aGUgbG9va2FoZWFkLiAgWVlMT0MgaXMgYXZhaWxhYmxlIHRob3Vn
aC4gICovCisgIFlZTExPQ19ERUZBVUxUICh5eWxvYywgeXllcnJvcl9yYW5nZSwgMik7CiAgICor
K3l5bHNwID0geXlsb2M7CiAKICAgLyogU2hpZnQgdGhlIGVycm9yIHRva2VuLiAgKi8KQEAgLTQ3
ODIsNyArNDgyMiw3IEBAIHl5YWJvcnRsYWI6CiAgIHl5cmVzdWx0ID0gMTsKICAgZ290byB5eXJl
dHVybjsKIAotI2lmbmRlZiB5eW92ZXJmbG93CisjaWYgIWRlZmluZWQgeXlvdmVyZmxvdyB8fCBZ
WUVSUk9SX1ZFUkJPU0UKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS4KIHwgeXlleGhhdXN0ZWRsYWIgLS0gbWVtb3J5IGV4aGF1c3Rpb24gY29tZXMg
aGVyZS4gIHwKIGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKi8KQEAgLTQ3OTMsOSArNDgzMywxNCBAQCB5eWV4aGF1c3RlZGxhYjoKICNlbmRpZgogCiB5
eXJldHVybjoKLSAgaWYgKHl5Y2hhciAhPSBZWUVPRiAmJiB5eWNoYXIgIT0gWVlFTVBUWSkKLSAg
ICAgeXlkZXN0cnVjdCAoIkNsZWFudXA6IGRpc2NhcmRpbmcgbG9va2FoZWFkIiwKLSAgICAgICAg
IHl5dG9rZW4sICZ5eWx2YWwsICZ5eWxsb2MsIGNvbnRleHQpOworICBpZiAoeXljaGFyICE9IFlZ
RU1QVFkpCisgICAgeworICAgICAgLyogTWFrZSBzdXJlIHdlIGhhdmUgbGF0ZXN0IGxvb2thaGVh
ZCB0cmFuc2xhdGlvbi4gIFNlZSBjb21tZW50cyBhdAorICAgICAgICAgdXNlciBzZW1hbnRpYyBh
Y3Rpb25zIGZvciB3aHkgdGhpcyBpcyBuZWNlc3NhcnkuICAqLworICAgICAgeXl0b2tlbiA9IFlZ
VFJBTlNMQVRFICh5eWNoYXIpOworICAgICAgeXlkZXN0cnVjdCAoIkNsZWFudXA6IGRpc2NhcmRp
bmcgbG9va2FoZWFkIiwKKyAgICAgICAgICAgICAgICAgIHl5dG9rZW4sICZ5eWx2YWwsICZ5eWxs
b2MsIGNvbnRleHQpOworICAgIH0KICAgLyogRG8gbm90IHJlY2xhaW0gdGhlIHN5bWJvbHMgb2Yg
dGhlIHJ1bGUgd2hpY2ggYWN0aW9uIHRyaWdnZXJlZAogICAgICB0aGlzIFlZQUJPUlQgb3IgWVlB
Q0NFUFQuICAqLwogICBZWVBPUFNUQUNLICh5eWxlbik7CkBAIC00ODAzLDcgKzQ4NDgsNyBAQCB5
eXJldHVybjoKICAgd2hpbGUgKHl5c3NwICE9IHl5c3MpCiAgICAgewogICAgICAgeXlkZXN0cnVj
dCAoIkNsZWFudXA6IHBvcHBpbmciLAotICAgICAgICAgIHl5c3Rvc1sqeXlzc3BdLCB5eXZzcCwg
eXlsc3AsIGNvbnRleHQpOworCQkgIHl5c3Rvc1sqeXlzc3BdLCB5eXZzcCwgeXlsc3AsIGNvbnRl
eHQpOwogICAgICAgWVlQT1BTVEFDSyAoMSk7CiAgICAgfQogI2lmbmRlZiB5eW92ZXJmbG93CkBA
IC00ODIyLDEyICs0ODY3LDYgQEAgeXlyZXR1cm46CiAKIAogCi12b2lkIHl5ZXJyb3IoWVlMVFlQ
RSogeXlsbG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pIHsK
LSAgICBjb250ZXh0LT5lcnJvcigqeXlsbG9jLCByZWFzb24sICIiKTsKLSAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7Ci19Ci0KIGludCBnbHNsYW5nX3BhcnNlKFRQYXJzZUNvbnRleHQqIGNvbnRleHQp
IHsKICAgICByZXR1cm4geXlwYXJzZShjb250ZXh0KTsKIH0KLQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuaAppbmRleCAzMDNlMzVhYTkx
YWM2Njg0NTVkZjM5NWQ3ZmNmZTM5NDg2NjAwZmVmLi5hMzViMDIxZmJmZWY0MTdjN2MzZjZhZDJm
NjRjYjY1YzYwZmZjNTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvZ2xzbGFuZ190YWIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvZ2xzbGFuZ190YWIuaApAQCAtMSwyNCArMSwyMyBAQAotLyogQSBCaXNvbiBwYXJz
ZXIsIG1hZGUgYnkgR05VIEJpc29uIDIuMy4gICovCisvKiBBcHBsZSBOb3RlOiBGb3IgdGhlIGF2
b2lkYW5jZSBvZiBkb3VidCwgQXBwbGUgZWxlY3RzIHRvIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQlNEIGxpY2Vuc2UuICovCiAKLS8qIFNrZWxldG9uIGludGVy
ZmFjZSBmb3IgQmlzb24ncyBZYWNjLWxpa2UgcGFyc2VycyBpbiBDCisvKiBBIEJpc29uIHBhcnNl
ciwgbWFkZSBieSBHTlUgQmlzb24gMi43LiAgKi8KIAotICAgQ29weXJpZ2h0IChDKSAxOTg0LCAx
OTg5LCAxOTkwLCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2Ci0gICBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLQotICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy8qIEJpc29u
IGludGVyZmFjZSBmb3IgWWFjYy1saWtlIHBhcnNlcnMgaW4gQworICAgCisgICAgICBDb3B5cmln
aHQgKEMpIDE5ODQsIDE5ODktMTk5MCwgMjAwMC0yMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLgorICAgCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlv
bikKLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotCisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIAogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQorICAg
CiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUKLSAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCi0gICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4gICovCisg
ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v
cmcvbGljZW5zZXMvPi4gICovCiAKIC8qIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkg
Y3JlYXRlIGEgbGFyZ2VyIHdvcmsgdGhhdCBjb250YWlucwogICAgcGFydCBvciBhbGwgb2YgdGhl
IEJpc29uIHBhcnNlciBza2VsZXRvbiBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsKQEAgLTI5LDE0
ICsyOCwyOSBAQAogICAgc3BlY2lhbCBleGNlcHRpb24sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNr
ZWxldG9uIGFuZCB0aGUgcmVzdWx0aW5nCiAgICBCaXNvbiBvdXRwdXQgZmlsZXMgdG8gYmUgbGlj
ZW5zZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwogICAgTGljZW5zZSB3aXRob3V0IHRo
aXMgc3BlY2lhbCBleGNlcHRpb24uCi0KKyAgIAogICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB3
YXMgYWRkZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBpbgogICAgdmVyc2lvbiAy
LjIgb2YgQmlzb24uICAqLwogCisjaWZuZGVmIFlZX1lZX0dMU0xBTkdfVEFCX0hfSU5DTFVERUQK
KyMgZGVmaW5lIFlZX1lZX0dMU0xBTkdfVEFCX0hfSU5DTFVERUQKKy8qIEVuYWJsaW5nIHRyYWNl
cy4gICovCisjaWZuZGVmIFlZREVCVUcKKyMgZGVmaW5lIFlZREVCVUcgMAorI2VuZGlmCisjaWYg
WVlERUJVRworZXh0ZXJuIGludCB5eWRlYnVnOworI2VuZGlmCisvKiAiJWNvZGUgcmVxdWlyZXMi
IGJsb2Nrcy4gICovCisKKwogI2RlZmluZSBZWUxUWVBFIFRTb3VyY2VMb2MKICNkZWZpbmUgWVlM
VFlQRV9JU19ERUNMQVJFRCAxCiAjZGVmaW5lIFNIX01BWF9UT0tFTl9MRU5HVEggMjU2ICAvLyBX
ZWJHTCBzcGVjLgogCisKKworCiAvKiBUb2tlbnMuICAqLwogI2lmbmRlZiBZWVRPS0VOVFlQRQog
IyBkZWZpbmUgWVlUT0tFTlRZUEUKQEAgLTEzNywxMDkgKzE1MSwxMyBAQAogICAgICBRVUVTVElP
TiA9IDM0OQogICAgfTsKICNlbmRpZgotLyogVG9rZW5zLiAgKi8KLSNkZWZpbmUgSU5WQVJJQU5U
IDI1OAotI2RlZmluZSBISUdIX1BSRUNJU0lPTiAyNTkKLSNkZWZpbmUgTUVESVVNX1BSRUNJU0lP
TiAyNjAKLSNkZWZpbmUgTE9XX1BSRUNJU0lPTiAyNjEKLSNkZWZpbmUgUFJFQ0lTSU9OIDI2Mgot
I2RlZmluZSBBVFRSSUJVVEUgMjYzCi0jZGVmaW5lIENPTlNUX1FVQUwgMjY0Ci0jZGVmaW5lIEJP
T0xfVFlQRSAyNjUKLSNkZWZpbmUgRkxPQVRfVFlQRSAyNjYKLSNkZWZpbmUgSU5UX1RZUEUgMjY3
Ci0jZGVmaW5lIEJSRUFLIDI2OAotI2RlZmluZSBDT05USU5VRSAyNjkKLSNkZWZpbmUgRE8gMjcw
Ci0jZGVmaW5lIEVMU0UgMjcxCi0jZGVmaW5lIEZPUiAyNzIKLSNkZWZpbmUgSUYgMjczCi0jZGVm
aW5lIERJU0NBUkQgMjc0Ci0jZGVmaW5lIFJFVFVSTiAyNzUKLSNkZWZpbmUgQlZFQzIgMjc2Ci0j
ZGVmaW5lIEJWRUMzIDI3NwotI2RlZmluZSBCVkVDNCAyNzgKLSNkZWZpbmUgSVZFQzIgMjc5Ci0j
ZGVmaW5lIElWRUMzIDI4MAotI2RlZmluZSBJVkVDNCAyODEKLSNkZWZpbmUgVkVDMiAyODIKLSNk
ZWZpbmUgVkVDMyAyODMKLSNkZWZpbmUgVkVDNCAyODQKLSNkZWZpbmUgTUFUUklYMiAyODUKLSNk
ZWZpbmUgTUFUUklYMyAyODYKLSNkZWZpbmUgTUFUUklYNCAyODcKLSNkZWZpbmUgSU5fUVVBTCAy
ODgKLSNkZWZpbmUgT1VUX1FVQUwgMjg5Ci0jZGVmaW5lIElOT1VUX1FVQUwgMjkwCi0jZGVmaW5l
IFVOSUZPUk0gMjkxCi0jZGVmaW5lIFZBUllJTkcgMjkyCi0jZGVmaW5lIFNUUlVDVCAyOTMKLSNk
ZWZpbmUgVk9JRF9UWVBFIDI5NAotI2RlZmluZSBXSElMRSAyOTUKLSNkZWZpbmUgU0FNUExFUjJE
IDI5NgotI2RlZmluZSBTQU1QTEVSQ1VCRSAyOTcKLSNkZWZpbmUgU0FNUExFUl9FWFRFUk5BTF9P
RVMgMjk4Ci0jZGVmaW5lIFNBTVBMRVIyRFJFQ1QgMjk5Ci0jZGVmaW5lIElERU5USUZJRVIgMzAw
Ci0jZGVmaW5lIFRZUEVfTkFNRSAzMDEKLSNkZWZpbmUgRkxPQVRDT05TVEFOVCAzMDIKLSNkZWZp
bmUgSU5UQ09OU1RBTlQgMzAzCi0jZGVmaW5lIEJPT0xDT05TVEFOVCAzMDQKLSNkZWZpbmUgTEVG
VF9PUCAzMDUKLSNkZWZpbmUgUklHSFRfT1AgMzA2Ci0jZGVmaW5lIElOQ19PUCAzMDcKLSNkZWZp
bmUgREVDX09QIDMwOAotI2RlZmluZSBMRV9PUCAzMDkKLSNkZWZpbmUgR0VfT1AgMzEwCi0jZGVm
aW5lIEVRX09QIDMxMQotI2RlZmluZSBORV9PUCAzMTIKLSNkZWZpbmUgQU5EX09QIDMxMwotI2Rl
ZmluZSBPUl9PUCAzMTQKLSNkZWZpbmUgWE9SX09QIDMxNQotI2RlZmluZSBNVUxfQVNTSUdOIDMx
NgotI2RlZmluZSBESVZfQVNTSUdOIDMxNwotI2RlZmluZSBBRERfQVNTSUdOIDMxOAotI2RlZmlu
ZSBNT0RfQVNTSUdOIDMxOQotI2RlZmluZSBMRUZUX0FTU0lHTiAzMjAKLSNkZWZpbmUgUklHSFRf
QVNTSUdOIDMyMQotI2RlZmluZSBBTkRfQVNTSUdOIDMyMgotI2RlZmluZSBYT1JfQVNTSUdOIDMy
MwotI2RlZmluZSBPUl9BU1NJR04gMzI0Ci0jZGVmaW5lIFNVQl9BU1NJR04gMzI1Ci0jZGVmaW5l
IExFRlRfUEFSRU4gMzI2Ci0jZGVmaW5lIFJJR0hUX1BBUkVOIDMyNwotI2RlZmluZSBMRUZUX0JS
QUNLRVQgMzI4Ci0jZGVmaW5lIFJJR0hUX0JSQUNLRVQgMzI5Ci0jZGVmaW5lIExFRlRfQlJBQ0Ug
MzMwCi0jZGVmaW5lIFJJR0hUX0JSQUNFIDMzMQotI2RlZmluZSBET1QgMzMyCi0jZGVmaW5lIENP
TU1BIDMzMwotI2RlZmluZSBDT0xPTiAzMzQKLSNkZWZpbmUgRVFVQUwgMzM1Ci0jZGVmaW5lIFNF
TUlDT0xPTiAzMzYKLSNkZWZpbmUgQkFORyAzMzcKLSNkZWZpbmUgREFTSCAzMzgKLSNkZWZpbmUg
VElMREUgMzM5Ci0jZGVmaW5lIFBMVVMgMzQwCi0jZGVmaW5lIFNUQVIgMzQxCi0jZGVmaW5lIFNM
QVNIIDM0MgotI2RlZmluZSBQRVJDRU5UIDM0MwotI2RlZmluZSBMRUZUX0FOR0xFIDM0NAotI2Rl
ZmluZSBSSUdIVF9BTkdMRSAzNDUKLSNkZWZpbmUgVkVSVElDQUxfQkFSIDM0NgotI2RlZmluZSBD
QVJFVCAzNDcKLSNkZWZpbmUgQU1QRVJTQU5EIDM0OAotI2RlZmluZSBRVUVTVElPTiAzNDkKLQot
CiAKIAogI2lmICEgZGVmaW5lZCBZWVNUWVBFICYmICEgZGVmaW5lZCBZWVNUWVBFX0lTX0RFQ0xB
UkVECiB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKLQogewotI2RlZmluZSBZWUxUWVBFIFRTb3VyY2VM
b2MKLSNkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCisKKwogICAgIHN0cnVjdCB7CiAgICAg
ICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRTdHJpbmcgKnN0cmluZzsKQEAgLTI2NywxOCArMTg1
LDE1IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogICAgICAgICAgICAgVEZpZWxkTGlzdCogZmll
bGRMaXN0OwogICAgICAgICB9OwogICAgIH0gaW50ZXJtOwotfQotLyogTGluZSAxNTI5IG9mIHlh
Y2MuYy4gICovCiAKLSAgICBZWVNUWVBFOworCisKK30gWVlTVFlQRTsKKyMgZGVmaW5lIFlZU1RZ
UEVfSVNfVFJJVklBTCAxCiAjIGRlZmluZSB5eXN0eXBlIFlZU1RZUEUgLyogb2Jzb2xlc2NlbnQ7
IHdpbGwgYmUgd2l0aGRyYXduICovCiAjIGRlZmluZSBZWVNUWVBFX0lTX0RFQ0xBUkVEIDEKLSMg
ZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAxCi0KICNlbmRpZgogCi0KLQogI2lmICEgZGVmaW5l
ZCBZWUxUWVBFICYmICEgZGVmaW5lZCBZWUxUWVBFX0lTX0RFQ0xBUkVECiB0eXBlZGVmIHN0cnVj
dCBZWUxUWVBFCiB7CkBAIC0yOTMsMyArMjA4LDE4IEBAIHR5cGVkZWYgc3RydWN0IFlZTFRZUEUK
ICNlbmRpZgogCiAKKyNpZmRlZiBZWVBBUlNFX1BBUkFNCisjaWYgZGVmaW5lZCBfX1NURENfXyB8
fCBkZWZpbmVkIF9fY3BsdXNwbHVzCitpbnQgeXlwYXJzZSAodm9pZCAqWVlQQVJTRV9QQVJBTSk7
CisjZWxzZQoraW50IHl5cGFyc2UgKCk7CisjZW5kaWYKKyNlbHNlIC8qICEgWVlQQVJTRV9QQVJB
TSAqLworI2lmIGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cworaW50IHl5
cGFyc2UgKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpOworI2Vsc2UKK2ludCB5eXBhcnNlICgpOwor
I2VuZGlmCisjZW5kaWYgLyogISBZWVBBUlNFX1BBUkFNICovCisKKyNlbmRpZiAvKiAhWVlfWVlf
R0xTTEFOR19UQUJfSF9JTkNMVURFRCAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Np
b25QYXJzZXIuY3BwCmluZGV4IDNjNTFmZmEwNjIxZGQxYjE1N2U4NzBhZmIxOWJkOWNkNjVkMmU3
NTAuLjFmYWUwMDk0NTZhMTlhNmJkYTgwYTIzMDRjMGI4ZWFjNzRiZWRkOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVz
c2lvblBhcnNlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNwcApAQCAtMSwxNCArMSwxNSBAQAotLyog
QSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIDIuMy4gICovCisvKiBBcHBsZSBOb3Rl
OiBGb3IgdGhlIGF2b2lkYW5jZSBvZiBkb3VidCwgQXBwbGUgZWxlY3RzIHRvIGRpc3RyaWJ1dGUg
dGhpcyBmaWxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQlNEIGxpY2Vuc2UuICovCiAKLS8qIFNr
ZWxldG9uIGltcGxlbWVudGF0aW9uIGZvciBCaXNvbidzIFlhY2MtbGlrZSBwYXJzZXJzIGluIEMK
Ky8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNvbiAzLjAuMS4gICovCiAKLSAgIENv
cHlyaWdodCAoQykgMTk4NCwgMTk4OSwgMTk5MCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAw
NCwgMjAwNSwgMjAwNgotICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisvKiBCaXNv
biBpbXBsZW1lbnRhdGlvbiBmb3IgWWFjYy1saWtlIHBhcnNlcnMgaW4gQwogCi0gICBUaGlzIHBy
b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v
ZGlmeQorICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5LTE5OTAsIDIwMDAtMjAxMyBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh
cmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAgIGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
Ci0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAo
YXQgeW91ciBvcHRpb24pCi0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogCiAgICBUaGlzIHByb2dyYW0gaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CkBAIC0xNiw5ICsxNyw3IEBACiAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgogCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAgIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4gICovCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw
Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiAKIC8qIEFzIGEgc3BlY2lhbCBleGNlcHRp
b24sIHlvdSBtYXkgY3JlYXRlIGEgbGFyZ2VyIHdvcmsgdGhhdCBjb250YWlucwogICAgcGFydCBv
ciBhbGwgb2YgdGhlIEJpc29uIHBhcnNlciBza2VsZXRvbiBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdv
cmsKQEAgLTQ3LDcgKzQ2LDcgQEAKICNkZWZpbmUgWVlCSVNPTiAxCiAKIC8qIEJpc29uIHZlcnNp
b24uICAqLwotI2RlZmluZSBZWUJJU09OX1ZFUlNJT04gIjIuMyIKKyNkZWZpbmUgWVlCSVNPTl9W
RVJTSU9OICIzLjAuMSIKIAogLyogU2tlbGV0b24gbmFtZS4gICovCiAjZGVmaW5lIFlZU0tFTEVU
T05fTkFNRSAieWFjYy5jIgpAQCAtNTUsNTAgKzU0LDE5IEBACiAvKiBQdXJlIHBhcnNlcnMuICAq
LwogI2RlZmluZSBZWVBVUkUgMQogCi0vKiBVc2luZyBsb2NhdGlvbnMuICAqLwotI2RlZmluZSBZ
WUxTUF9ORUVERUQgMAotCi0vKiBTdWJzdGl0dXRlIHRoZSB2YXJpYWJsZSBhbmQgZnVuY3Rpb24g
bmFtZXMuICAqLwotI2RlZmluZSB5eXBhcnNlIHBwcGFyc2UKLSNkZWZpbmUgeXlsZXggICBwcGxl
eAotI2RlZmluZSB5eWVycm9yIHBwZXJyb3IKLSNkZWZpbmUgeXlsdmFsICBwcGx2YWwKLSNkZWZp
bmUgeXljaGFyICBwcGNoYXIKLSNkZWZpbmUgeXlkZWJ1ZyBwcGRlYnVnCi0jZGVmaW5lIHl5bmVy
cnMgcHBuZXJycwotCisvKiBQdXNoIHBhcnNlcnMuICAqLworI2RlZmluZSBZWVBVU0ggMAogCi0v
KiBUb2tlbnMuICAqLwotI2lmbmRlZiBZWVRPS0VOVFlQRQotIyBkZWZpbmUgWVlUT0tFTlRZUEUK
LSAgIC8qIFB1dCB0aGUgdG9rZW5zIGludG8gdGhlIHN5bWJvbCB0YWJsZSwgc28gdGhhdCBHREIg
YW5kIG90aGVyIGRlYnVnZ2VycwotICAgICAga25vdyBhYm91dCB0aGVtLiAgKi8KLSAgIGVudW0g
eXl0b2tlbnR5cGUgewotICAgICBUT0tfQ09OU1RfSU5UID0gMjU4LAotICAgICBUT0tfT1BfT1Ig
PSAyNTksCi0gICAgIFRPS19PUF9BTkQgPSAyNjAsCi0gICAgIFRPS19PUF9ORSA9IDI2MSwKLSAg
ICAgVE9LX09QX0VRID0gMjYyLAotICAgICBUT0tfT1BfR0UgPSAyNjMsCi0gICAgIFRPS19PUF9M
RSA9IDI2NCwKLSAgICAgVE9LX09QX1JJR0hUID0gMjY1LAotICAgICBUT0tfT1BfTEVGVCA9IDI2
NiwKLSAgICAgVE9LX1VOQVJZID0gMjY3Ci0gICB9OwotI2VuZGlmCi0vKiBUb2tlbnMuICAqLwot
I2RlZmluZSBUT0tfQ09OU1RfSU5UIDI1OAotI2RlZmluZSBUT0tfT1BfT1IgMjU5Ci0jZGVmaW5l
IFRPS19PUF9BTkQgMjYwCi0jZGVmaW5lIFRPS19PUF9ORSAyNjEKLSNkZWZpbmUgVE9LX09QX0VR
IDI2MgotI2RlZmluZSBUT0tfT1BfR0UgMjYzCi0jZGVmaW5lIFRPS19PUF9MRSAyNjQKLSNkZWZp
bmUgVE9LX09QX1JJR0hUIDI2NQotI2RlZmluZSBUT0tfT1BfTEVGVCAyNjYKLSNkZWZpbmUgVE9L
X1VOQVJZIDI2NworLyogUHVsbCBwYXJzZXJzLiAgKi8KKyNkZWZpbmUgWVlQVUxMIDEKIAogCisv
KiBTdWJzdGl0dXRlIHRoZSB2YXJpYWJsZSBhbmQgZnVuY3Rpb24gbmFtZXMuICAqLworI2RlZmlu
ZSB5eXBhcnNlICAgICAgICAgcHBwYXJzZQorI2RlZmluZSB5eWxleCAgICAgICAgICAgcHBsZXgK
KyNkZWZpbmUgeXllcnJvciAgICAgICAgIHBwZXJyb3IKKyNkZWZpbmUgeXlkZWJ1ZyAgICAgICAg
IHBwZGVidWcKKyNkZWZpbmUgeXluZXJycyAgICAgICAgIHBwbmVycnMKIAogCiAvKiBDb3B5IHRo
ZSBmaXJzdCBwYXJ0IG9mIHVzZXIgZGVjbGFyYXRpb25zLiAgKi8KQEAgLTEyNSw2ICs5MywxMiBA
QAogCiAjaW5jbHVkZSAiRXhwcmVzc2lvblBhcnNlci5oIgogCisjaWYgZGVmaW5lZChfTVNDX1ZF
UikKKyNpbmNsdWRlIDxtYWxsb2MuaD4KKyNlbHNlCisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5k
aWYKKwogI2luY2x1ZGUgPGNhc3NlcnQ+CiAjaW5jbHVkZSA8c3N0cmVhbT4KIApAQCAtMTU4LDEw
ICsxMzIsMTQgQEAgc3RhdGljIGludCB5eWxleChZWVNUWVBFKiBsdmFscCwgQ29udGV4dCogY29u
dGV4dCk7CiBzdGF0aWMgdm9pZCB5eWVycm9yKENvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIq
IHJlYXNvbik7CiAKIAotLyogRW5hYmxpbmcgdHJhY2VzLiAgKi8KLSNpZm5kZWYgWVlERUJVRwot
IyBkZWZpbmUgWVlERUJVRyAwCi0jZW5kaWYKKworIyBpZm5kZWYgWVlfTlVMTFBUUgorIyAgaWYg
ZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiAyMDExMDNMIDw9IF9fY3BsdXNwbHVzCisjICAgZGVmaW5l
IFlZX05VTExQVFIgbnVsbHB0cgorIyAgZWxzZQorIyAgIGRlZmluZSBZWV9OVUxMUFRSIDAKKyMg
IGVuZGlmCisjIGVuZGlmCiAKIC8qIEVuYWJsaW5nIHZlcmJvc2UgZXJyb3IgbWVzc2FnZXMuICAq
LwogI2lmZGVmIFlZRVJST1JfVkVSQk9TRQpAQCAtMTcxLDI0ICsxNDksNDggQEAgc3RhdGljIHZv
aWQgeXllcnJvcihDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pOwogIyBkZWZp
bmUgWVlFUlJPUl9WRVJCT1NFIDAKICNlbmRpZgogCi0vKiBFbmFibGluZyB0aGUgdG9rZW4gdGFi
bGUuICAqLwotI2lmbmRlZiBZWVRPS0VOX1RBQkxFCi0jIGRlZmluZSBZWVRPS0VOX1RBQkxFIDAK
KworLyogRGVidWcgdHJhY2VzLiAgKi8KKyNpZm5kZWYgWVlERUJVRworIyBkZWZpbmUgWVlERUJV
RyAwCisjZW5kaWYKKyNpZiBZWURFQlVHCitleHRlcm4gaW50IHBwZGVidWc7CisjZW5kaWYKKwor
LyogVG9rZW4gdHlwZS4gICovCisjaWZuZGVmIFlZVE9LRU5UWVBFCisjIGRlZmluZSBZWVRPS0VO
VFlQRQorICBlbnVtIHl5dG9rZW50eXBlCisgIHsKKyAgICBUT0tfQ09OU1RfSU5UID0gMjU4LAor
ICAgIFRPS19PUF9PUiA9IDI1OSwKKyAgICBUT0tfT1BfQU5EID0gMjYwLAorICAgIFRPS19PUF9F
USA9IDI2MSwKKyAgICBUT0tfT1BfTkUgPSAyNjIsCisgICAgVE9LX09QX0xFID0gMjYzLAorICAg
IFRPS19PUF9HRSA9IDI2NCwKKyAgICBUT0tfT1BfTEVGVCA9IDI2NSwKKyAgICBUT0tfT1BfUklH
SFQgPSAyNjYsCisgICAgVE9LX1VOQVJZID0gMjY3CisgIH07CiAjZW5kaWYKIAorLyogVmFsdWUg
dHlwZS4gICovCiAjaWYgISBkZWZpbmVkIFlZU1RZUEUgJiYgISBkZWZpbmVkIFlZU1RZUEVfSVNf
REVDTEFSRUQKIHR5cGVkZWYgaW50IFlZU1RZUEU7Ci0jIGRlZmluZSB5eXN0eXBlIFlZU1RZUEUg
Lyogb2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCi0jIGRlZmluZSBZWVNUWVBFX0lT
X0RFQ0xBUkVEIDEKICMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAxCisjIGRlZmluZSBZWVNU
WVBFX0lTX0RFQ0xBUkVEIDEKICNlbmRpZgogCiAKIAotLyogQ29weSB0aGUgc2Vjb25kIHBhcnQg
b2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLworaW50IHBwcGFyc2UgKENvbnRleHQgKmNvbnRleHQp
OworCisKIAorLyogQ29weSB0aGUgc2Vjb25kIHBhcnQgb2YgdXNlciBkZWNsYXJhdGlvbnMuICAq
LwogCi0vKiBMaW5lIDIxNiBvZiB5YWNjLmMuICAqLwogCiAKICNpZmRlZiBzaG9ydApAQCAtMjAz
LDExICsyMDUsOCBAQCB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgeXl0eXBlX3VpbnQ4OwogCiAjaWZk
ZWYgWVlUWVBFX0lOVDgKIHR5cGVkZWYgWVlUWVBFX0lOVDggeXl0eXBlX2ludDg7Ci0jZWxpZiAo
ZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAotICAgICB8fCBkZWZp
bmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCi10eXBlZGVmIHNpZ25lZCBjaGFy
IHl5dHlwZV9pbnQ4OwogI2Vsc2UKLXR5cGVkZWYgc2hvcnQgaW50IHl5dHlwZV9pbnQ4OwordHlw
ZWRlZiBzaWduZWQgY2hhciB5eXR5cGVfaW50ODsKICNlbmRpZgogCiAjaWZkZWYgWVlUWVBFX1VJ
TlQxNgpAQCAtMjI3LDggKzIyNiw3IEBAIHR5cGVkZWYgc2hvcnQgaW50IHl5dHlwZV9pbnQxNjsK
ICMgIGRlZmluZSBZWVNJWkVfVCBfX1NJWkVfVFlQRV9fCiAjIGVsaWYgZGVmaW5lZCBzaXplX3QK
ICMgIGRlZmluZSBZWVNJWkVfVCBzaXplX3QKLSMgZWxpZiAhIGRlZmluZWQgWVlTSVpFX1QgJiYg
KGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVm
aW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorIyBlbGlmICEgZGVmaW5lZCBZ
WVNJWkVfVAogIyAgaW5jbHVkZSA8c3RkZGVmLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUg
U1BBQ0UgKi8KICMgIGRlZmluZSBZWVNJWkVfVCBzaXplX3QKICMgZWxzZQpAQCAtMjQyLDM4ICsy
NDAsNjcgQEAgdHlwZWRlZiBzaG9ydCBpbnQgeXl0eXBlX2ludDE2OwogIyBpZiBkZWZpbmVkIFlZ
RU5BQkxFX05MUyAmJiBZWUVOQUJMRV9OTFMKICMgIGlmIEVOQUJMRV9OTFMKICMgICBpbmNsdWRl
IDxsaWJpbnRsLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KLSMgICBkZWZp
bmUgWVlfKG1zZ2lkKSBkZ2V0dGV4dCAoImJpc29uLXJ1bnRpbWUiLCBtc2dpZCkKKyMgICBkZWZp
bmUgWVlfKE1zZ2lkKSBkZ2V0dGV4dCAoImJpc29uLXJ1bnRpbWUiLCBNc2dpZCkKICMgIGVuZGlm
CiAjIGVuZGlmCiAjIGlmbmRlZiBZWV8KLSMgIGRlZmluZSBZWV8obXNnaWQpIG1zZ2lkCisjICBk
ZWZpbmUgWVlfKE1zZ2lkKSBNc2dpZAorIyBlbmRpZgorI2VuZGlmCisKKyNpZm5kZWYgWVlfQVRU
UklCVVRFCisjIGlmIChkZWZpbmVkIF9fR05VQ19fICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAmJiAoMiA8IF9fR05VQ19fIHx8IChfX0dOVUNf
XyA9PSAyICYmIDk2IDw9IF9fR05VQ19NSU5PUl9fKSkpICBcCisgICAgIHx8IGRlZmluZWQgX19T
VU5QUk9fQyAmJiAweDUxMTAgPD0gX19TVU5QUk9fQworIyAgZGVmaW5lIFlZX0FUVFJJQlVURShT
cGVjKSBfX2F0dHJpYnV0ZV9fKFNwZWMpCisjIGVsc2UKKyMgIGRlZmluZSBZWV9BVFRSSUJVVEUo
U3BlYykgLyogZW1wdHkgKi8KKyMgZW5kaWYKKyNlbmRpZgorCisjaWZuZGVmIFlZX0FUVFJJQlVU
RV9QVVJFCisjIGRlZmluZSBZWV9BVFRSSUJVVEVfUFVSRSAgIFlZX0FUVFJJQlVURSAoKF9fcHVy
ZV9fKSkKKyNlbmRpZgorCisjaWZuZGVmIFlZX0FUVFJJQlVURV9VTlVTRUQKKyMgZGVmaW5lIFlZ
X0FUVFJJQlVURV9VTlVTRUQgWVlfQVRUUklCVVRFICgoX191bnVzZWRfXykpCisjZW5kaWYKKwor
I2lmICFkZWZpbmVkIF9Ob3JldHVybiBcCisgICAgICYmICghZGVmaW5lZCBfX1NURENfVkVSU0lP
Tl9fIHx8IF9fU1REQ19WRVJTSU9OX18gPCAyMDExMTIpCisjIGlmIGRlZmluZWQgX01TQ19WRVIg
JiYgMTIwMCA8PSBfTVNDX1ZFUgorIyAgZGVmaW5lIF9Ob3JldHVybiBfX2RlY2xzcGVjIChub3Jl
dHVybikKKyMgZWxzZQorIyAgZGVmaW5lIF9Ob3JldHVybiBZWV9BVFRSSUJVVEUgKChfX25vcmV0
dXJuX18pKQogIyBlbmRpZgogI2VuZGlmCiAKIC8qIFN1cHByZXNzIHVudXNlZC12YXJpYWJsZSB3
YXJuaW5ncyBieSAidXNpbmciIEUuICAqLwogI2lmICEgZGVmaW5lZCBsaW50IHx8IGRlZmluZWQg
X19HTlVDX18KLSMgZGVmaW5lIFlZVVNFKGUpICgodm9pZCkgKGUpKQorIyBkZWZpbmUgWVlVU0Uo
RSkgKCh2b2lkKSAoRSkpCiAjZWxzZQotIyBkZWZpbmUgWVlVU0UoZSkgLyogZW1wdHkgKi8KKyMg
ZGVmaW5lIFlZVVNFKEUpIC8qIGVtcHR5ICovCiAjZW5kaWYKIAotLyogSWRlbnRpdHkgZnVuY3Rp
b24sIHVzZWQgdG8gc3VwcHJlc3Mgd2FybmluZ3MgYWJvdXQgY29uc3RhbnQgY29uZGl0aW9ucy4g
ICovCi0jaWZuZGVmIGxpbnQKLSMgZGVmaW5lIFlZSUQobikgKG4pCi0jZWxzZQotI2lmIChkZWZp
bmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCi0gICAgIHx8IGRlZmluZWQg
X19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKLXN0YXRpYyBpbnQKLVlZSUQgKGludCBp
KQorI2lmIGRlZmluZWQgX19HTlVDX18gJiYgNDA3IDw9IF9fR05VQ19fICogMTAwICsgX19HTlVD
X01JTk9SX18KKy8qIFN1cHByZXNzIGFuIGluY29ycmVjdCBkaWFnbm9zdGljIGFib3V0IHl5bHZh
bCBiZWluZyB1bmluaXRpYWxpemVkLiAgKi8KKyMgZGVmaW5lIFlZX0lHTk9SRV9NQVlCRV9VTklO
SVRJQUxJWkVEX0JFR0lOIFwKKyAgICBfUHJhZ21hICgiR0NDIGRpYWdub3N0aWMgcHVzaCIpIFwK
KyAgICBfUHJhZ21hICgiR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1XdW5pbml0aWFsaXplZFwi
IilcCisgICAgX1ByYWdtYSAoIkdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV21heWJlLXVuaW5p
dGlhbGl6ZWRcIiIpCisjIGRlZmluZSBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9FTkQg
XAorICAgIF9QcmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBwb3AiKQogI2Vsc2UKLXN0YXRpYyBpbnQK
LVlZSUQgKGkpCi0gICAgaW50IGk7CisjIGRlZmluZSBZWV9JTklUSUFMX1ZBTFVFKFZhbHVlKSBW
YWx1ZQogI2VuZGlmCi17Ci0gIHJldHVybiBpOwotfQorI2lmbmRlZiBZWV9JR05PUkVfTUFZQkVf
VU5JTklUSUFMSVpFRF9CRUdJTgorIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTEla
RURfQkVHSU4KKyMgZGVmaW5lIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0VORAogI2Vu
ZGlmCisjaWZuZGVmIFlZX0lOSVRJQUxfVkFMVUUKKyMgZGVmaW5lIFlZX0lOSVRJQUxfVkFMVUUo
VmFsdWUpIC8qIE5vdGhpbmcuICovCisjZW5kaWYKKwogCiAjaWYgISBkZWZpbmVkIHl5b3ZlcmZs
b3cgfHwgWVlFUlJPUl9WRVJCT1NFCiAKQEAgLTI5MiwxMSArMzE5LDExIEBAIFlZSUQgKGkpCiAj
ICAgIGRlZmluZSBhbGxvY2EgX2FsbG9jYQogIyAgIGVsc2UKICMgICAgZGVmaW5lIFlZU1RBQ0tf
QUxMT0MgYWxsb2NhCi0jICAgIGlmICEgZGVmaW5lZCBfQUxMT0NBX0ggJiYgISBkZWZpbmVkIF9T
VERMSUJfSCAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAot
ICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCisjICAgIGlm
ICEgZGVmaW5lZCBfQUxMT0NBX0ggJiYgISBkZWZpbmVkIEVYSVRfU1VDQ0VTUwogIyAgICAgaW5j
bHVkZSA8c3RkbGliLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KLSMgICAg
IGlmbmRlZiBfU1RETElCX0gKLSMgICAgICBkZWZpbmUgX1NURExJQl9IIDEKKyAgICAgIC8qIFVz
ZSBFWElUX1NVQ0NFU1MgYXMgYSB3aXRuZXNzIGZvciBzdGRsaWIuaC4gICovCisjICAgICBpZm5k
ZWYgRVhJVF9TVUNDRVNTCisjICAgICAgZGVmaW5lIEVYSVRfU1VDQ0VTUyAwCiAjICAgICBlbmRp
ZgogIyAgICBlbmRpZgogIyAgIGVuZGlmCkBAIC0zMDQsOCArMzMxLDggQEAgWVlJRCAoaSkKICMg
ZW5kaWYKIAogIyBpZmRlZiBZWVNUQUNLX0FMTE9DCi0gICAvKiBQYWNpZnkgR0NDJ3MgYGVtcHR5
IGlmLWJvZHknIHdhcm5pbmcuICAqLwotIyAgZGVmaW5lIFlZU1RBQ0tfRlJFRShQdHIpIGRvIHsg
LyogZW1wdHkgKi87IH0gd2hpbGUgKFlZSUQgKDApKQorICAgLyogUGFjaWZ5IEdDQydzICdlbXB0
eSBpZi1ib2R5JyB3YXJuaW5nLiAgKi8KKyMgIGRlZmluZSBZWVNUQUNLX0ZSRUUoUHRyKSBkbyB7
IC8qIGVtcHR5ICovOyB9IHdoaWxlICgwKQogIyAgaWZuZGVmIFlZU1RBQ0tfQUxMT0NfTUFYSU1V
TQogICAgIC8qIFRoZSBPUyBtaWdodCBndWFyYW50ZWUgb25seSBvbmUgZ3VhcmQgcGFnZSBhdCB0
aGUgYm90dG9tIG9mIHRoZSBzdGFjaywKICAgICAgICBhbmQgYSBwYWdlIHNpemUgY2FuIGJlIGFz
IHNtYWxsIGFzIDQwOTYgYnl0ZXMuICBTbyB3ZSBjYW5ub3Qgc2FmZWx5CkBAIC0zMTksMjUgKzM0
NiwyMyBAQCBZWUlEIChpKQogIyAgaWZuZGVmIFlZU1RBQ0tfQUxMT0NfTUFYSU1VTQogIyAgIGRl
ZmluZSBZWVNUQUNLX0FMTE9DX01BWElNVU0gWVlTSVpFX01BWElNVU0KICMgIGVuZGlmCi0jICBp
ZiAoZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiAhIGRlZmluZWQgX1NURExJQl9IIFwKKyMgIGlmIChk
ZWZpbmVkIF9fY3BsdXNwbHVzICYmICEgZGVmaW5lZCBFWElUX1NVQ0NFU1MgXAogICAgICAgICYm
ICEgKChkZWZpbmVkIFlZTUFMTE9DIHx8IGRlZmluZWQgbWFsbG9jKSBcCi0gICAgICAgICAmJiAo
ZGVmaW5lZCBZWUZSRUUgfHwgZGVmaW5lZCBmcmVlKSkpCisgICAgICAgICAgICAgJiYgKGRlZmlu
ZWQgWVlGUkVFIHx8IGRlZmluZWQgZnJlZSkpKQogIyAgIGluY2x1ZGUgPHN0ZGxpYi5oPiAvKiBJ
TkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCi0jICAgaWZuZGVmIF9TVERMSUJfSAotIyAg
ICBkZWZpbmUgX1NURExJQl9IIDEKKyMgICBpZm5kZWYgRVhJVF9TVUNDRVNTCisjICAgIGRlZmlu
ZSBFWElUX1NVQ0NFU1MgMAogIyAgIGVuZGlmCiAjICBlbmRpZgogIyAgaWZuZGVmIFlZTUFMTE9D
CiAjICAgZGVmaW5lIFlZTUFMTE9DIG1hbGxvYwotIyAgIGlmICEgZGVmaW5lZCBtYWxsb2MgJiYg
ISBkZWZpbmVkIF9TVERMSUJfSCAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5
X19GVU5DX18gXAotICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19W
RVIpCisjICAgaWYgISBkZWZpbmVkIG1hbGxvYyAmJiAhIGRlZmluZWQgRVhJVF9TVUNDRVNTCiB2
b2lkICptYWxsb2MgKFlZU0laRV9UKTsgLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAq
LwogIyAgIGVuZGlmCiAjICBlbmRpZgogIyAgaWZuZGVmIFlZRlJFRQogIyAgIGRlZmluZSBZWUZS
RUUgZnJlZQotIyAgIGlmICEgZGVmaW5lZCBmcmVlICYmICEgZGVmaW5lZCBfU1RETElCX0ggJiYg
KGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVm
aW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorIyAgIGlmICEgZGVmaW5lZCBm
cmVlICYmICEgZGVmaW5lZCBFWElUX1NVQ0NFU1MKIHZvaWQgZnJlZSAodm9pZCAqKTsgLyogSU5G
UklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwogIyAgIGVuZGlmCiAjICBlbmRpZgpAQCAtMzQ3
LDE0ICszNzIsMTQgQEAgdm9pZCBmcmVlICh2b2lkICopOyAvKiBJTkZSSU5HRVMgT04gVVNFUiBO
QU1FIFNQQUNFICovCiAKICNpZiAoISBkZWZpbmVkIHl5b3ZlcmZsb3cgXAogICAgICAmJiAoISBk
ZWZpbmVkIF9fY3BsdXNwbHVzIFwKLSAgICAgfHwgKGRlZmluZWQgWVlTVFlQRV9JU19UUklWSUFM
ICYmIFlZU1RZUEVfSVNfVFJJVklBTCkpKQorICAgICAgICAgfHwgKGRlZmluZWQgWVlTVFlQRV9J
U19UUklWSUFMICYmIFlZU1RZUEVfSVNfVFJJVklBTCkpKQogCiAvKiBBIHR5cGUgdGhhdCBpcyBw
cm9wZXJseSBhbGlnbmVkIGZvciBhbnkgc3RhY2sgbWVtYmVyLiAgKi8KIHVuaW9uIHl5YWxsb2MK
IHsKLSAgeXl0eXBlX2ludDE2IHl5c3M7Ci0gIFlZU1RZUEUgeXl2czsKLSAgfTsKKyAgeXl0eXBl
X2ludDE2IHl5c3NfYWxsb2M7CisgIFlZU1RZUEUgeXl2c19hbGxvYzsKK307CiAKIC8qIFRoZSBz
aXplIG9mIHRoZSBtYXhpbXVtIGdhcCBiZXR3ZWVuIG9uZSBhbGlnbmVkIHN0YWNrIGFuZCB0aGUg
bmV4dC4gICovCiAjIGRlZmluZSBZWVNUQUNLX0dBUF9NQVhJTVVNIChzaXplb2YgKHVuaW9uIHl5
YWxsb2MpIC0gMSkKQEAgLTM2NSw0MiArMzkwLDQ2IEBAIHVuaW9uIHl5YWxsb2MKICAgICAgKChO
KSAqIChzaXplb2YgKHl5dHlwZV9pbnQxNikgKyBzaXplb2YgKFlZU1RZUEUpKSBcCiAgICAgICAr
IFlZU1RBQ0tfR0FQX01BWElNVU0pCiAKLS8qIENvcHkgQ09VTlQgb2JqZWN0cyBmcm9tIEZST00g
dG8gVE8uICBUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBkbwotICAgbm90IG92ZXJsYXAuICAq
LwotIyBpZm5kZWYgWVlDT1BZCi0jICBpZiBkZWZpbmVkIF9fR05VQ19fICYmIDEgPCBfX0dOVUNf
XwotIyAgIGRlZmluZSBZWUNPUFkoVG8sIEZyb20sIENvdW50KSBcCi0gICAgICBfX2J1aWx0aW5f
bWVtY3B5IChUbywgRnJvbSwgKENvdW50KSAqIHNpemVvZiAoKihGcm9tKSkpCi0jICBlbHNlCi0j
ICAgZGVmaW5lIFlZQ09QWShUbywgRnJvbSwgQ291bnQpICAgICAgICBcCi0gICAgICBkbyAgICAg
ICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIFlZU0la
RV9UIHl5aTsgICAgICAgICAgICAgICAgXAotICAgICAgZm9yICh5eWkgPSAwOyB5eWkgPCAoQ291
bnQpOyB5eWkrKykgICAgXAotICAgICAgICAoVG8pW3l5aV0gPSAoRnJvbSlbeXlpXTsgICAgICAg
IFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICB3aGlsZSAoWVlJRCAoMCkpCi0j
ICBlbmRpZgotIyBlbmRpZgorIyBkZWZpbmUgWVlDT1BZX05FRURFRCAxCiAKIC8qIFJlbG9jYXRl
IFNUQUNLIGZyb20gaXRzIG9sZCBsb2NhdGlvbiB0byB0aGUgbmV3IG9uZS4gIFRoZQogICAgbG9j
YWwgdmFyaWFibGVzIFlZU0laRSBhbmQgWVlTVEFDS1NJWkUgZ2l2ZSB0aGUgb2xkIGFuZCBuZXcg
bnVtYmVyIG9mCiAgICBlbGVtZW50cyBpbiB0aGUgc3RhY2ssIGFuZCBZWVBUUiBnaXZlcyB0aGUg
bmV3IGxvY2F0aW9uIG9mIHRoZQogICAgc3RhY2suICBBZHZhbmNlIFlZUFRSIHRvIGEgcHJvcGVy
bHkgYWxpZ25lZCBsb2NhdGlvbiBmb3IgdGhlIG5leHQKICAgIHN0YWNrLiAgKi8KLSMgZGVmaW5l
IFlZU1RBQ0tfUkVMT0NBVEUoU3RhY2spICAgICAgICAgICAgICAgICAgICBcCi0gICAgZG8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIFlZU0laRV9UIHl5bmV3Ynl0ZXM7ICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIFlZQ09QWSAoJnl5cHRyLT5TdGFjaywgU3RhY2ssIHl5c2l6
ZSk7ICAgICAgICAgICAgICAgIFwKLSAgICBTdGFjayA9ICZ5eXB0ci0+U3RhY2s7ICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIHl5bmV3Ynl0ZXMgPSB5eXN0YWNrc2l6ZSAqIHNpemVvZiAo
KlN0YWNrKSArIFlZU1RBQ0tfR0FQX01BWElNVU07IFwKLSAgICB5eXB0ciArPSB5eW5ld2J5dGVz
IC8gc2l6ZW9mICgqeXlwdHIpOyAgICAgICAgICAgICAgICBcCi0gICAgICB9ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHdoaWxlIChZWUlEICgwKSkKKyMgZGVmaW5l
IFlZU1RBQ0tfUkVMT0NBVEUoU3RhY2tfYWxsb2MsIFN0YWNrKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBkbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgWVlT
SVpFX1QgeXluZXdieXRlczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgWVlDT1BZICgmeXlwdHItPlN0YWNrX2FsbG9jLCBTdGFjaywgeXlzaXpl
KTsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgU3RhY2sgPSAmeXlwdHItPlN0YWNrX2Fs
bG9jOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgeXluZXdi
eXRlcyA9IHl5c3RhY2tzaXplICogc2l6ZW9mICgqU3RhY2spICsgWVlTVEFDS19HQVBfTUFYSU1V
TTsgXAorICAgICAgICB5eXB0ciArPSB5eW5ld2J5dGVzIC8gc2l6ZW9mICgqeXlwdHIpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHdoaWxlICgwKQog
CiAjZW5kaWYKIAorI2lmIGRlZmluZWQgWVlDT1BZX05FRURFRCAmJiBZWUNPUFlfTkVFREVECisv
KiBDb3B5IENPVU5UIG9iamVjdHMgZnJvbSBTUkMgdG8gRFNULiAgVGhlIHNvdXJjZSBhbmQgZGVz
dGluYXRpb24gZG8KKyAgIG5vdCBvdmVybGFwLiAgKi8KKyMgaWZuZGVmIFlZQ09QWQorIyAgaWYg
ZGVmaW5lZCBfX0dOVUNfXyAmJiAxIDwgX19HTlVDX18KKyMgICBkZWZpbmUgWVlDT1BZKERzdCwg
U3JjLCBDb3VudCkgXAorICAgICAgX19idWlsdGluX21lbWNweSAoRHN0LCBTcmMsIChDb3VudCkg
KiBzaXplb2YgKCooU3JjKSkpCisjICBlbHNlCisjICAgZGVmaW5lIFlZQ09QWShEc3QsIFNyYywg
Q291bnQpICAgICAgICAgICAgICBcCisgICAgICBkbyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgWVlTSVpFX1QgeXlpOyAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgZm9yICh5eWkgPSAwOyB5eWkgPCAoQ291bnQpOyB5eWkrKykgICBcCisg
ICAgICAgICAgICAoRHN0KVt5eWldID0gKFNyYylbeXlpXTsgICAgICAgICAgICBcCisgICAgICAg
IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB3aGlsZSAo
MCkKKyMgIGVuZGlmCisjIGVuZGlmCisjZW5kaWYgLyogIVlZQ09QWV9ORUVERUQgKi8KKwogLyog
WVlGSU5BTCAtLSBTdGF0ZSBudW1iZXIgb2YgdGhlIHRlcm1pbmF0aW9uIHN0YXRlLiAgKi8KICNk
ZWZpbmUgWVlGSU5BTCAgMTQKIC8qIFlZTEFTVCAtLSBMYXN0IGluZGV4IGluIFlZVEFCTEUuICAq
LwpAQCAtNDEyLDE3ICs0NDEsMTkgQEAgdW5pb24geXlhbGxvYwogI2RlZmluZSBZWU5OVFMgIDMK
IC8qIFlZTlJVTEVTIC0tIE51bWJlciBvZiBydWxlcy4gICovCiAjZGVmaW5lIFlZTlJVTEVTICAy
NgotLyogWVlOUlVMRVMgLS0gTnVtYmVyIG9mIHN0YXRlcy4gICovCisvKiBZWU5TVEFURVMgLS0g
TnVtYmVyIG9mIHN0YXRlcy4gICovCiAjZGVmaW5lIFlZTlNUQVRFUyAgNTIKIAotLyogWVlUUkFO
U0xBVEUoWVlMRVgpIC0tIEJpc29uIHN5bWJvbCBudW1iZXIgY29ycmVzcG9uZGluZyB0byBZWUxF
WC4gICovCisvKiBZWVRSQU5TTEFURVtZWVhdIC0tIFN5bWJvbCBudW1iZXIgY29ycmVzcG9uZGlu
ZyB0byBZWVggYXMgcmV0dXJuZWQKKyAgIGJ5IHl5bGV4LCB3aXRoIG91dC1vZi1ib3VuZHMgY2hl
Y2tpbmcuICAqLwogI2RlZmluZSBZWVVOREVGVE9LICAyCiAjZGVmaW5lIFlZTUFYVVRPSyAgIDI2
NwogCi0jZGVmaW5lIFlZVFJBTlNMQVRFKFlZWCkgICAgICAgICAgICAgICAgICAgICAgICBcCisj
ZGVmaW5lIFlZVFJBTlNMQVRFKFlZWCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICgodW5zaWduZWQgaW50KSAoWVlYKSA8PSBZWU1BWFVUT0sgPyB5
eXRyYW5zbGF0ZVtZWVhdIDogWVlVTkRFRlRPSykKIAotLyogWVlUUkFOU0xBVEVbWVlMRVhdIC0t
IEJpc29uIHN5bWJvbCBudW1iZXIgY29ycmVzcG9uZGluZyB0byBZWUxFWC4gICovCisvKiBZWVRS
QU5TTEFURVtUT0tFTi1OVU1dIC0tIFN5bWJvbCBudW1iZXIgY29ycmVzcG9uZGluZyB0byBUT0tF
Ti1OVU0KKyAgIGFzIHJldHVybmVkIGJ5IHl5bGV4LCB3aXRob3V0IG91dC1vZi1ib3VuZHMgY2hl
Y2tpbmcuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXRyYW5zbGF0ZVtdID0KIHsK
ICAgICAgICAwLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLApAQCAtNDU1LDU1ICs0ODYsMzEgQEAgc3RhdGljIGNvbnN0IHl5dHlw
ZV91aW50OCB5eXRyYW5zbGF0ZVtdID0KIH07CiAKICNpZiBZWURFQlVHCi0vKiBZWVBSSFNbWVlO
XSAtLSBJbmRleCBvZiB0aGUgZmlyc3QgUkhTIHN5bWJvbCBvZiBydWxlIG51bWJlciBZWU4gaW4K
LSAgIFlZUkhTLiAgKi8KLXN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlwcmhzW10gPQotewot
ICAgICAgIDAsICAgICAwLCAgICAgMywgICAgIDUsICAgICA3LCAgICAxMSwgICAgMTUsICAgIDE5
LCAgICAyMywgICAgMjcsCi0gICAgICAzMSwgICAgMzUsICAgIDM5LCAgICA0MywgICAgNDcsICAg
IDUxLCAgICA1NSwgICAgNTksICAgIDYzLCAgICA2NywKLSAgICAgIDcxLCAgICA3NSwgICAgNzks
ICAgIDgyLCAgICA4NSwgICAgODgsICAgIDkxCi19OwotCi0vKiBZWVJIUyAtLSBBIGAtMSctc2Vw
YXJhdGVkIGxpc3Qgb2YgdGhlIHJ1bGVzJyBSSFMuICAqLwotc3RhdGljIGNvbnN0IHl5dHlwZV9p
bnQ4IHl5cmhzW10gPQotewotICAgICAgMjgsICAgICAwLCAgICAtMSwgICAgMjksICAgIC0xLCAg
ICAgMywgICAgLTEsICAgIDI5LCAgICAgNCwgICAgMjksCi0gICAgICAtMSwgICAgMjksICAgICA1
LCAgICAyOSwgICAgLTEsICAgIDI5LCAgICAgNiwgICAgMjksICAgIC0xLCAgICAyOSwKLSAgICAg
ICA3LCAgICAyOSwgICAgLTEsICAgIDI5LCAgICAgOCwgICAgMjksICAgIC0xLCAgICAyOSwgICAg
IDksICAgIDI5LAotICAgICAgLTEsICAgIDI5LCAgICAxMCwgICAgMjksICAgIC0xLCAgICAyOSwg
ICAgMTMsICAgIDI5LCAgICAtMSwgICAgMjksCi0gICAgICAxNCwgICAgMjksICAgIC0xLCAgICAy
OSwgICAgMTIsICAgIDI5LCAgICAtMSwgICAgMjksICAgIDExLCAgICAyOSwKLSAgICAgIC0xLCAg
ICAyOSwgICAgMTUsICAgIDI5LCAgICAtMSwgICAgMjksICAgIDE2LCAgICAyOSwgICAgLTEsICAg
IDI5LAotICAgICAgMTgsICAgIDI5LCAgICAtMSwgICAgMjksICAgIDE3LCAgICAyOSwgICAgLTEs
ICAgIDI5LCAgICAyMSwgICAgMjksCi0gICAgICAtMSwgICAgMjksICAgIDIwLCAgICAyOSwgICAg
LTEsICAgIDI5LCAgICAxOSwgICAgMjksICAgIC0xLCAgICAyMywKLSAgICAgIDI5LCAgICAtMSwg
ICAgMjQsICAgIDI5LCAgICAtMSwgICAgMTgsICAgIDI5LCAgICAtMSwgICAgMTcsICAgIDI5LAot
ICAgICAgLTEsICAgIDI1LCAgICAyOSwgICAgMjYsICAgIC0xCi19OwotCi0vKiBZWVJMSU5FW1lZ
Tl0gLS0gc291cmNlIGxpbmUgd2hlcmUgcnVsZSBudW1iZXIgWVlOIHdhcyBkZWZpbmVkLiAgKi8K
KyAgLyogWVlSTElORVtZWU5dIC0tIFNvdXJjZSBsaW5lIHdoZXJlIHJ1bGUgbnVtYmVyIFlZTiB3
YXMgZGVmaW5lZC4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cmxpbmVbXSA9CiB7
Ci0gICAgICAgMCwgICAgOTEsICAgIDkxLCAgICA5OCwgICAgOTksICAgMTAyLCAgIDEwNSwgICAx
MDgsICAgMTExLCAgIDExNCwKLSAgICAgMTE3LCAgIDEyMCwgICAxMjMsICAgMTI2LCAgIDEyOSwg
ICAxMzIsICAgMTM1LCAgIDEzOCwgICAxNDEsICAgMTQ0LAotICAgICAxNTcsICAgMTcwLCAgIDE3
MywgICAxNzYsICAgMTc5LCAgIDE4MiwgICAxODUKKyAgICAgICAwLCAgICA5NywgICAgOTcsICAg
MTA0LCAgIDEwNSwgICAxMDgsICAgMTExLCAgIDExNCwgICAxMTcsICAgMTIwLAorICAgICAxMjMs
ICAgMTI2LCAgIDEyOSwgICAxMzIsICAgMTM1LCAgIDEzOCwgICAxNDEsICAgMTQ0LCAgIDE0Nywg
ICAxNTAsCisgICAgIDE2MywgICAxNzYsICAgMTc5LCAgIDE4MiwgICAxODUsICAgMTg4LCAgIDE5
MQogfTsKICNlbmRpZgogCi0jaWYgWVlERUJVRyB8fCBZWUVSUk9SX1ZFUkJPU0UgfHwgWVlUT0tF
Tl9UQUJMRQorI2lmIFlZREVCVUcgfHwgWVlFUlJPUl9WRVJCT1NFIHx8IDAKIC8qIFlZVE5BTUVb
U1lNQk9MLU5VTV0gLS0gU3RyaW5nIG5hbWUgb2YgdGhlIHN5bWJvbCBTWU1CT0wtTlVNLgogICAg
Rmlyc3QsIHRoZSB0ZXJtaW5hbHMsIHRoZW4sIHN0YXJ0aW5nIGF0IFlZTlRPS0VOUywgbm9udGVy
bWluYWxzLiAgKi8KIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCB5eXRuYW1lW10gPQogewogICAi
JGVuZCIsICJlcnJvciIsICIkdW5kZWZpbmVkIiwgIlRPS19DT05TVF9JTlQiLCAiVE9LX09QX09S
IiwKLSAgIlRPS19PUF9BTkQiLCAiJ3wnIiwgIideJyIsICInJiciLCAiVE9LX09QX05FIiwgIlRP
S19PUF9FUSIsICInPCciLAotICAiJz4nIiwgIlRPS19PUF9HRSIsICJUT0tfT1BfTEUiLCAiVE9L
X09QX1JJR0hUIiwgIlRPS19PUF9MRUZUIiwgIicrJyIsCisgICJUT0tfT1BfQU5EIiwgIid8JyIs
ICInXiciLCAiJyYnIiwgIlRPS19PUF9FUSIsICJUT0tfT1BfTkUiLCAiJzwnIiwKKyAgIic+JyIs
ICJUT0tfT1BfTEUiLCAiVE9LX09QX0dFIiwgIlRPS19PUF9MRUZUIiwgIlRPS19PUF9SSUdIVCIs
ICInKyciLAogICAiJy0nIiwgIicqJyIsICInLyciLCAiJyUnIiwgIlRPS19VTkFSWSIsICInISci
LCAiJ34nIiwgIicoJyIsICInKSciLAotICAiJGFjY2VwdCIsICJpbnB1dCIsICJleHByZXNzaW9u
IiwgMAorICAiJGFjY2VwdCIsICJpbnB1dCIsICJleHByZXNzaW9uIiwgWVlfTlVMTFBUUgogfTsK
ICNlbmRpZgogCiAjIGlmZGVmIFlZUFJJTlQKLS8qIFlZVE9LTlVNW1lZTEVYLU5VTV0gLS0gSW50
ZXJuYWwgdG9rZW4gbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8KLSAgIHRva2VuIFlZTEVYLU5VTS4g
ICovCisvKiBZWVRPS05VTVtOVU1dIC0tIChFeHRlcm5hbCkgdG9rZW4gbnVtYmVyIGNvcnJlc3Bv
bmRpbmcgdG8gdGhlCisgICAoaW50ZXJuYWwpIHN5bWJvbCBudW1iZXIgTlVNICh3aGljaCBtdXN0
IGJlIHRoYXQgb2YgYSB0b2tlbikuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXl0
b2tudW1bXSA9CiB7CiAgICAgICAgMCwgICAyNTYsICAgMjU3LCAgIDI1OCwgICAyNTksICAgMjYw
LCAgIDEyNCwgICAgOTQsICAgIDM4LCAgIDI2MSwKQEAgLTUxMiw0NCArNTE5LDE4IEBAIHN0YXRp
YyBjb25zdCB5eXR5cGVfdWludDE2IHl5dG9rbnVtW10gPQogfTsKICMgZW5kaWYKIAotLyogWVlS
MVtZWU5dIC0tIFN5bWJvbCBudW1iZXIgb2Ygc3ltYm9sIHRoYXQgcnVsZSBZWU4gZGVyaXZlcy4g
ICovCi1zdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cjFbXSA9Ci17Ci0gICAgICAgMCwgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAy
OSwKLSAgICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAg
ICAyOSwgICAgMjksICAgIDI5LAotICAgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5
LCAgICAyOSwgICAgMjkKLX07CisjZGVmaW5lIFlZUEFDVF9OSU5GIC0xMQogCi0vKiBZWVIyW1lZ
Tl0gLS0gTnVtYmVyIG9mIHN5bWJvbHMgY29tcG9zaW5nIHJpZ2h0IGhhbmQgc2lkZSBvZiBydWxl
IFlZTi4gICovCi1zdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cjJbXSA9Ci17Ci0gICAgICAg
MCwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAz
LCAgICAgMywKLSAgICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAg
ICAzLCAgICAgMywgICAgIDMsICAgICAzLAotICAgICAgIDMsICAgICAzLCAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDMKLX07CisjZGVmaW5lIHl5cGFjdF92YWx1ZV9pc19kZWZhdWx0
KFl5c3RhdGUpIFwKKyAgKCEhKChZeXN0YXRlKSA9PSAoLTExKSkpCiAKLS8qIFlZREVGQUNUW1NU
QVRFLU5BTUVdIC0tIERlZmF1bHQgcnVsZSB0byByZWR1Y2Ugd2l0aCBpbiBzdGF0ZQotICAgU1RB
VEUtTlVNIHdoZW4gWVlUQUJMRSBkb2Vzbid0IHNwZWNpZnkgc29tZXRoaW5nIGVsc2UgdG8gZG8u
ICBaZXJvCi0gICBtZWFucyB0aGUgZGVmYXVsdCBpcyBhbiBlcnJvci4gICovCi1zdGF0aWMgY29u
c3QgeXl0eXBlX3VpbnQ4IHl5ZGVmYWN0W10gPQotewotICAgICAgIDAsICAgICAzLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMiwgICAgMjUsCi0gICAgICAy
NCwgICAgMjIsICAgIDIzLCAgICAgMCwgICAgIDEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjYs
ICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksCi0gICAgICAxMCwgICAg
MTQsICAgIDEzLCAgICAxMSwgICAgMTIsICAgIDE1LCAgICAxNiwgICAgMTgsICAgIDE3LCAgICAy
MSwKLSAgICAgIDIwLCAgICAxOQotfTsKKyNkZWZpbmUgWVlUQUJMRV9OSU5GIC0xCiAKLS8qIFlZ
REVGR09UT1tOVEVSTS1OVU1dLiAgKi8KLXN0YXRpYyBjb25zdCB5eXR5cGVfaW50OCB5eWRlZmdv
dG9bXSA9Ci17Ci0gICAgICAtMSwgICAgIDcsICAgICA4Ci19OworI2RlZmluZSB5eXRhYmxlX3Zh
bHVlX2lzX2Vycm9yKFl5dGFibGVfdmFsdWUpIFwKKyAgMAogCi0vKiBZWVBBQ1RbU1RBVEUtTlVN
XSAtLSBJbmRleCBpbiBZWVRBQkxFIG9mIHRoZSBwb3J0aW9uIGRlc2NyaWJpbmcKLSAgIFNUQVRF
LU5VTS4gICovCi0jZGVmaW5lIFlZUEFDVF9OSU5GIC0xMQorICAvKiBZWVBBQ1RbU1RBVEUtTlVN
XSAtLSBJbmRleCBpbiBZWVRBQkxFIG9mIHRoZSBwb3J0aW9uIGRlc2NyaWJpbmcKKyAgICAgU1RB
VEUtTlVNLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlwYWN0W10gPQogewogICAg
ICAgNDYsICAgLTExLCAgICA0NiwgICAgNDYsICAgIDQ2LCAgICA0NiwgICAgNDYsICAgIDEyLCAg
ICA2OCwgICAtMTEsCkBAIC01NjAsMTcgKzU0MSwzNCBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX2lu
dDE2IHl5cGFjdFtdID0KICAgICAgLTExLCAgIC0xMQogfTsKIAotLyogWVlQR09UT1tOVEVSTS1O
VU1dLiAgKi8KKyAgLyogWVlERUZBQ1RbU1RBVEUtTlVNXSAtLSBEZWZhdWx0IHJlZHVjdGlvbiBu
dW1iZXIgaW4gc3RhdGUgU1RBVEUtTlVNLgorICAgICBQZXJmb3JtZWQgd2hlbiBZWVRBQkxFIGRv
ZXMgbm90IHNwZWNpZnkgc29tZXRoaW5nIGVsc2UgdG8gZG8uICBaZXJvCisgICAgIG1lYW5zIHRo
ZSBkZWZhdWx0IGlzIGFuIGVycm9yLiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlk
ZWZhY3RbXSA9Cit7CisgICAgICAgMCwgICAgIDMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAyLCAgICAyNSwKKyAgICAgIDI0LCAgICAyMiwgICAgMjMsICAg
ICAwLCAgICAgMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAyNiwgICAgIDQsICAgICA1LCAgICAg
NiwgICAgIDcsICAgICA4LCAgICAxMCwKKyAgICAgICA5LCAgICAxNCwgICAgMTMsICAgIDEyLCAg
ICAxMSwgICAgMTYsICAgIDE1LCAgICAxOCwgICAgMTcsICAgIDIxLAorICAgICAgMjAsICAgIDE5
Cit9OworCisgIC8qIFlZUEdPVE9bTlRFUk0tTlVNXS4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBl
X2ludDggeXlwZ290b1tdID0KIHsKICAgICAgLTExLCAgIC0xMSwgICAgLTIKIH07CiAKLS8qIFlZ
VEFCTEVbWVlQQUNUW1NUQVRFLU5VTV1dLiAgV2hhdCB0byBkbyBpbiBzdGF0ZSBTVEFURS1OVU0u
ICBJZgotICAgcG9zaXRpdmUsIHNoaWZ0IHRoYXQgdG9rZW4uICBJZiBuZWdhdGl2ZSwgcmVkdWNl
IHRoZSBydWxlIHdoaWNoCi0gICBudW1iZXIgaXMgdGhlIG9wcG9zaXRlLiAgSWYgemVybywgZG8g
d2hhdCBZWURFRkFDVCBzYXlzLgotICAgSWYgWVlUQUJMRV9OSU5GLCBzeW50YXggZXJyb3IuICAq
LwotI2RlZmluZSBZWVRBQkxFX05JTkYgLTEKKyAgLyogWVlERUZHT1RPW05URVJNLU5VTV0uICAq
Lworc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQ4IHl5ZGVmZ290b1tdID0KK3sKKyAgICAgIC0xLCAg
ICAgNywgICAgIDgKK307CisKKyAgLyogWVlUQUJMRVtZWVBBQ1RbU1RBVEUtTlVNXV0gLS0gV2hh
dCB0byBkbyBpbiBzdGF0ZSBTVEFURS1OVU0uICBJZgorICAgICBwb3NpdGl2ZSwgc2hpZnQgdGhh
dCB0b2tlbi4gIElmIG5lZ2F0aXZlLCByZWR1Y2UgdGhlIHJ1bGUgd2hvc2UKKyAgICAgbnVtYmVy
IGlzIHRoZSBvcHBvc2l0ZS4gIElmIFlZVEFCTEVfTklORiwgc3ludGF4IGVycm9yLiAgKi8KIHN0
YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXl0YWJsZVtdID0KIHsKICAgICAgICA5LCAgICAxMCwg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLApA
QCAtNjE1LDggKzYxMyw4IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50OCB5eWNoZWNrW10gPQog
ICAgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMQogfTsKIAotLyogWVlT
VE9TW1NUQVRFLU5VTV0gLS0gVGhlIChpbnRlcm5hbCBudW1iZXIgb2YgdGhlKSBhY2Nlc3NpbmcK
LSAgIHN5bWJvbCBvZiBzdGF0ZSBTVEFURS1OVU0uICAqLworICAvKiBZWVNUT1NbU1RBVEUtTlVN
XSAtLSBUaGUgKGludGVybmFsIG51bWJlciBvZiB0aGUpIGFjY2Vzc2luZworICAgICBzeW1ib2wg
b2Ygc3RhdGUgU1RBVEUtTlVNLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlzdG9z
W10gPQogewogICAgICAgIDAsICAgICAzLCAgICAxNywgICAgMTgsICAgIDIzLCAgICAyNCwgICAg
MjUsICAgIDI4LCAgICAyOSwgICAgMjksCkBAIC02MjcsOTUgKzYyNSw1NyBAQCBzdGF0aWMgY29u
c3QgeXl0eXBlX3VpbnQ4IHl5c3Rvc1tdID0KICAgICAgIDI5LCAgICAyOQogfTsKIAotI2RlZmlu
ZSB5eWVycm9rICAgICAgICAoeXllcnJzdGF0dXMgPSAwKQotI2RlZmluZSB5eWNsZWFyaW4gICAg
KHl5Y2hhciA9IFlZRU1QVFkpCi0jZGVmaW5lIFlZRU1QVFkgICAgICAgICgtMikKLSNkZWZpbmUg
WVlFT0YgICAgICAgIDAKKyAgLyogWVlSMVtZWU5dIC0tIFN5bWJvbCBudW1iZXIgb2Ygc3ltYm9s
IHRoYXQgcnVsZSBZWU4gZGVyaXZlcy4gICovCitzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5
cjFbXSA9Cit7CisgICAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMjksICAgIDI5LCAg
ICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwKKyAgICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5
LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LAorICAgICAgMjksICAg
IDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjkKK307CisKKyAgLyogWVlSMltZ
WU5dIC0tIE51bWJlciBvZiBzeW1ib2xzIG9uIHRoZSByaWdodCBoYW5kIHNpZGUgb2YgcnVsZSBZ
WU4uICAqLworc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXIyW10gPQoreworICAgICAgIDAs
ICAgICAyLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywg
ICAgIDMsCisgICAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAg
MywgICAgIDMsICAgICAzLCAgICAgMywKKyAgICAgICAzLCAgICAgMywgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAzCit9OwogCi0jZGVmaW5lIFlZQUNDRVBUICAgIGdvdG8geXlhY2Nl
cHRsYWIKLSNkZWZpbmUgWVlBQk9SVCAgICAgICAgZ290byB5eWFib3J0bGFiCi0jZGVmaW5lIFlZ
RVJST1IgICAgICAgIGdvdG8geXllcnJvcmxhYgogCisjZGVmaW5lIHl5ZXJyb2sgICAgICAgICAo
eXllcnJzdGF0dXMgPSAwKQorI2RlZmluZSB5eWNsZWFyaW4gICAgICAgKHl5Y2hhciA9IFlZRU1Q
VFkpCisjZGVmaW5lIFlZRU1QVFkgICAgICAgICAoLTIpCisjZGVmaW5lIFlZRU9GICAgICAgICAg
ICAwCiAKLS8qIExpa2UgWVlFUlJPUiBleGNlcHQgZG8gY2FsbCB5eWVycm9yLiAgVGhpcyByZW1h
aW5zIGhlcmUgdGVtcG9yYXJpbHkKLSAgIHRvIGVhc2UgdGhlIHRyYW5zaXRpb24gdG8gdGhlIG5l
dyBtZWFuaW5nIG9mIFlZRVJST1IsIGZvciBHQ0MuCi0gICBPbmNlIEdDQyB2ZXJzaW9uIDIgaGFz
IHN1cHBsYW50ZWQgdmVyc2lvbiAxLCB0aGlzIGNhbiBnby4gICovCisjZGVmaW5lIFlZQUNDRVBU
ICAgICAgICBnb3RvIHl5YWNjZXB0bGFiCisjZGVmaW5lIFlZQUJPUlQgICAgICAgICBnb3RvIHl5
YWJvcnRsYWIKKyNkZWZpbmUgWVlFUlJPUiAgICAgICAgIGdvdG8geXllcnJvcmxhYgogCi0jZGVm
aW5lIFlZRkFJTCAgICAgICAgZ290byB5eWVycmxhYgogCiAjZGVmaW5lIFlZUkVDT1ZFUklORygp
ICAoISF5eWVycnN0YXR1cykKIAotI2RlZmluZSBZWUJBQ0tVUChUb2tlbiwgVmFsdWUpICAgICAg
ICAgICAgICAgICAgICBcCi1kbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBp
ZiAoeXljaGFyID09IFlZRU1QVFkgJiYgeXlsZW4gPT0gMSkgICAgICAgICAgICAgICAgXAotICAg
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHl5Y2hhciA9IChUb2tl
bik7ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgeXlsdmFsID0gKFZhbHVlKTsgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICB5eXRva2VuID0gWVlUUkFOU0xBVEUgKHl5Y2hh
cik7ICAgICAgICAgICAgICAgIFwKLSAgICAgIFlZUE9QU1RBQ0sgKDEpOyAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgIGdvdG8geXliYWNrdXA7ICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZWxzZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyNkZWZpbmUgWVlCQUNLVVAoVG9rZW4sIFZhbHVlKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCitkbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBpZiAoeXljaGFyID09IFlZRU1QVFkpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB5
eWNoYXIgPSAoVG9rZW4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgeXlsdmFsID0gKFZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgIFlZUE9QU1RBQ0sgKHl5bGVuKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICB5eXN0YXRlID0gKnl5c3NwOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgZ290byB5eWJhY2t1cDsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGVs
c2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICAgIHl5ZXJyb3IgKGNvbnRleHQsIFlZXygic3ludGF4IGVycm9y
OiBjYW5ub3QgYmFjayB1cCIpKTsgXAotICAgICAgWVlFUlJPUjsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXdoaWxl
IChZWUlEICgwKSkKLQotCi0jZGVmaW5lIFlZVEVSUk9SICAgIDEKLSNkZWZpbmUgWVlFUlJDT0RF
ICAgIDI1NgotCi0KLS8qIFlZTExPQ19ERUZBVUxUIC0tIFNldCBDVVJSRU5UIHRvIHNwYW4gZnJv
bSBSSFNbMV0gdG8gUkhTW05dLgotICAgSWYgTiBpcyAwLCB0aGVuIHNldCBDVVJSRU5UIHRvIHRo
ZSBlbXB0eSBsb2NhdGlvbiB3aGljaCBlbmRzCi0gICB0aGUgcHJldmlvdXMgc3ltYm9sOiBSSFNb
MF0gKGFsd2F5cyBkZWZpbmVkKS4gICovCi0KLSNkZWZpbmUgWVlSSFNMT0MoUmhzLCBLKSAoKFJo
cylbS10pCi0jaWZuZGVmIFlZTExPQ19ERUZBVUxUCi0jIGRlZmluZSBZWUxMT0NfREVGQVVMVChD
dXJyZW50LCBSaHMsIE4pICAgICAgICAgICAgICAgIFwKLSAgICBkbyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIGlmIChZWUlEIChOKSkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIChDdXJyZW50KS5maXJzdF9saW5lICAgPSBZWVJI
U0xPQyAoUmhzLCAxKS5maXJzdF9saW5lOyAgICBcCi0gICAgICAoQ3VycmVudCkuZmlyc3RfY29s
dW1uID0gWVlSSFNMT0MgKFJocywgMSkuZmlyc3RfY29sdW1uOyAgICBcCi0gICAgICAoQ3VycmVu
dCkubGFzdF9saW5lICAgID0gWVlSSFNMT0MgKFJocywgTikubGFzdF9saW5lOyAgICAgICAgXAot
ICAgICAgKEN1cnJlbnQpLmxhc3RfY29sdW1uICA9IFlZUkhTTE9DIChSaHMsIE4pLmxhc3RfY29s
dW1uOyAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIChDdXJyZW50KS5maXJzdF9saW5lICAgPSAoQ3Vy
cmVudCkubGFzdF9saW5lICAgPSAgICAgICAgXAotICAgICAgICBZWVJIU0xPQyAoUmhzLCAwKS5s
YXN0X2xpbmU7ICAgICAgICAgICAgICAgIFwKLSAgICAgIChDdXJyZW50KS5maXJzdF9jb2x1bW4g
PSAoQ3VycmVudCkubGFzdF9jb2x1bW4gPSAgICAgICAgXAotICAgICAgICBZWVJIU0xPQyAoUmhz
LCAwKS5sYXN0X2NvbHVtbjsgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICB3aGlsZSAoWVlJRCAoMCkpCi0jZW5kaWYKKyAgICAgIFlZ
RVJST1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAord2hpbGUgKDApCiAKKy8qIEVycm9yIHRva2VuIG51bWJlciAqLworI2RlZmlu
ZSBZWVRFUlJPUiAgICAgICAgMQorI2RlZmluZSBZWUVSUkNPREUgICAgICAgMjU2CiAKLS8qIFlZ
X0xPQ0FUSU9OX1BSSU5UIC0tIFByaW50IHRoZSBsb2NhdGlvbiBvbiB0aGUgc3RyZWFtLgotICAg
VGhpcyBtYWNybyB3YXMgbm90IG1hbmRhdGVkIG9yaWdpbmFsbHk6IGRlZmluZSBvbmx5IGlmIHdl
IGtub3cKLSAgIHdlIHdvbid0IGJyZWFrIHVzZXIgY29kZTogd2hlbiB0aGVzZSBhcmUgdGhlIGxv
Y2F0aW9ucyB3ZSBrbm93LiAgKi8KIAotI2lmbmRlZiBZWV9MT0NBVElPTl9QUklOVAotIyBpZiBk
ZWZpbmVkIFlZTFRZUEVfSVNfVFJJVklBTCAmJiBZWUxUWVBFX0lTX1RSSVZJQUwKLSMgIGRlZmlu
ZSBZWV9MT0NBVElPTl9QUklOVChGaWxlLCBMb2MpICAgICAgICAgICAgXAotICAgICBmcHJpbnRm
IChGaWxlLCAiJWQuJWQtJWQuJWQiLCAgICAgICAgICAgIFwKLSAgICAgICAgICAoTG9jKS5maXJz
dF9saW5lLCAoTG9jKS5maXJzdF9jb2x1bW4sICAgIFwKLSAgICAgICAgICAoTG9jKS5sYXN0X2xp
bmUsICAoTG9jKS5sYXN0X2NvbHVtbikKLSMgZWxzZQotIyAgZGVmaW5lIFlZX0xPQ0FUSU9OX1BS
SU5UKEZpbGUsIExvYykgKCh2b2lkKSAwKQotIyBlbmRpZgotI2VuZGlmCi0KLQotLyogWVlMRVgg
LS0gY2FsbGluZyBgeXlsZXgnIHdpdGggdGhlIHJpZ2h0IGFyZ3VtZW50cy4gICovCi0KLSNpZmRl
ZiBZWUxFWF9QQVJBTQotIyBkZWZpbmUgWVlMRVggeXlsZXggKCZ5eWx2YWwsIFlZTEVYX1BBUkFN
KQotI2Vsc2UKLSMgZGVmaW5lIFlZTEVYIHl5bGV4ICgmeXlsdmFsLCBjb250ZXh0KQotI2VuZGlm
CiAKIC8qIEVuYWJsZSBkZWJ1Z2dpbmcgaWYgcmVxdWVzdGVkLiAgKi8KICNpZiBZWURFQlVHCkBA
IC03MjUsNTYgKzY4NSw0NyBAQCB3aGlsZSAoWVlJRCAoMCkpCiAjICBkZWZpbmUgWVlGUFJJTlRG
IGZwcmludGYKICMgZW5kaWYKIAotIyBkZWZpbmUgWVlEUFJJTlRGKEFyZ3MpICAgICAgICAgICAg
XAotZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaWYgKHl5ZGVidWcpICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgWVlGUFJJTlRGIEFyZ3M7ICAgICAgICAgICAgICAgIFwKLX0gd2hp
bGUgKFlZSUQgKDApKQotCi0jIGRlZmluZSBZWV9TWU1CT0xfUFJJTlQoVGl0bGUsIFR5cGUsIFZh
bHVlLCBMb2NhdGlvbikgICAgICAgICAgICAgIFwKLWRvIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyMgZGVmaW5lIFlZRFBSSU5URihBcmdzKSAgICAgICAgICAgICAg
ICAgICAgICAgIFwKK2RvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgaWYgKHl5ZGVidWcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBZWUZQ
UklOVEYgKHN0ZGVyciwgIiVzICIsIFRpdGxlKTsgICAgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgeXlfc3ltYm9sX3ByaW50IChzdGRlcnIsICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgICAgVHlwZSwgVmFsdWUsIGNvbnRleHQpOyBcCi0gICAgICBZWUZQUklOVEYgKHN0ZGVy
ciwgIlxuIik7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotfSB3aGlsZSAoWVlJRCAoMCkpCisgICAgWVlGUFJJ
TlRGIEFyZ3M7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9IHdoaWxlICgwKQogCisv
KiBUaGlzIG1hY3JvIGlzIHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAqLwor
I2lmbmRlZiBZWV9MT0NBVElPTl9QUklOVAorIyBkZWZpbmUgWVlfTE9DQVRJT05fUFJJTlQoRmls
ZSwgTG9jKSAoKHZvaWQpIDApCisjZW5kaWYKIAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS4KLXwgUHJpbnQgdGhpcyBzeW1ib2wgb24gWVlPVVRQVVQuICB8Ci1gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCi0vKkFSR1NVU0VEKi8KLSNpZiAoZGVmaW5lZCBf
X1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAotICAgICB8fCBkZWZpbmVkIF9fY3Bs
dXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCisjIGRlZmluZSBZWV9TWU1CT0xfUFJJTlQoVGl0
bGUsIFR5cGUsIFZhbHVlLCBMb2NhdGlvbikgICAgICAgICAgICAgICAgICAgIFwKK2RvIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICBpZiAoeXlkZWJ1ZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
IFlZRlBSSU5URiAoc3RkZXJyLCAiJXMgIiwgVGl0bGUpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgeXlfc3ltYm9sX3ByaW50IChzdGRlcnIsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICBUeXBl
LCBWYWx1ZSwgY29udGV4dCk7IFwKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiXG4iKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCit9IHdoaWxlICgwKQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS4KK3wgUHJpbnQgdGhpcyBzeW1ib2wncyB2YWx1ZSBvbiBZWU9VVFBVVC4gIHwKK2At
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwogc3RhdGljIHZvaWQK
IHl5X3N5bWJvbF92YWx1ZV9wcmludCAoRklMRSAqeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZ
UEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcCwgQ29udGV4dCAqY29udGV4dCkKLSNlbHNlCi1zdGF0
aWMgdm9pZAoteXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVl
cCwgY29udGV4dCkKLSAgICBGSUxFICp5eW91dHB1dDsKLSAgICBpbnQgeXl0eXBlOwotICAgIFlZ
U1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcDsKLSAgICBDb250ZXh0ICpjb250ZXh0OwotI2Vu
ZGlmCiB7CisgIEZJTEUgKnl5byA9IHl5b3V0cHV0OworICBZWVVTRSAoeXlvKTsKKyAgWVlVU0Ug
KGNvbnRleHQpOwogICBpZiAoIXl5dmFsdWVwKQogICAgIHJldHVybjsKLSAgWVlVU0UgKGNvbnRl
eHQpOwogIyBpZmRlZiBZWVBSSU5UCiAgIGlmICh5eXR5cGUgPCBZWU5UT0tFTlMpCiAgICAgWVlQ
UklOVCAoeXlvdXRwdXQsIHl5dG9rbnVtW3l5dHlwZV0sICp5eXZhbHVlcCk7Ci0jIGVsc2UKLSAg
WVlVU0UgKHl5b3V0cHV0KTsKICMgZW5kaWYKLSAgc3dpdGNoICh5eXR5cGUpCi0gICAgewotICAg
ICAgZGVmYXVsdDoKLSAgICBicmVhazsKLSAgICB9CisgIFlZVVNFICh5eXR5cGUpOwogfQogCiAK
QEAgLTc4MiwyMyArNzMzLDExIEBAIHl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5
dHlwZSwgeXl2YWx1ZXAsIGNvbnRleHQpCiB8IFByaW50IHRoaXMgc3ltYm9sIG9uIFlZT1VUUFVU
LiAgfAogYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAotI2lmIChkZWZpbmVk
IF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCi0gICAgIHx8IGRlZmluZWQgX19j
cGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCiB5eV9zeW1ib2xfcHJp
bnQgKEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2
YWx1ZXAsIENvbnRleHQgKmNvbnRleHQpCi0jZWxzZQotc3RhdGljIHZvaWQKLXl5X3N5bWJvbF9w
cmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1ZXAsIGNvbnRleHQpCi0gICAgRklMRSAqeXlv
dXRwdXQ7Ci0gICAgaW50IHl5dHlwZTsKLSAgICBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1
ZXA7Ci0gICAgQ29udGV4dCAqY29udGV4dDsKLSNlbmRpZgogewotICBpZiAoeXl0eXBlIDwgWVlO
VE9LRU5TKQotICAgIFlZRlBSSU5URiAoeXlvdXRwdXQsICJ0b2tlbiAlcyAoIiwgeXl0bmFtZVt5
eXR5cGVdKTsKLSAgZWxzZQotICAgIFlZRlBSSU5URiAoeXlvdXRwdXQsICJudGVybSAlcyAoIiwg
eXl0bmFtZVt5eXR5cGVdKTsKKyAgWVlGUFJJTlRGICh5eW91dHB1dCwgIiVzICVzICgiLAorICAg
ICAgICAgICAgIHl5dHlwZSA8IFlZTlRPS0VOUyA/ICJ0b2tlbiIgOiAibnRlcm0iLCB5eXRuYW1l
W3l5dHlwZV0pOwogCiAgIHl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwg
eXl2YWx1ZXAsIGNvbnRleHQpOwogICBZWUZQUklOVEYgKHl5b3V0cHV0LCAiKSIpOwpAQCAtODA5
LDY3ICs3NDgsNTQgQEAgeXlfc3ltYm9sX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVl
cCwgY29udGV4dCkKIHwgVE9QIChpbmNsdWRlZCkuICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAogYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKLSNpZiAoZGVmaW5lZCBf
X1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAotICAgICB8fCBkZWZpbmVkIF9fY3Bs
dXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCi1zdGF0aWMgdm9pZAoteXlfc3RhY2tfcHJpbnQg
KHl5dHlwZV9pbnQxNiAqYm90dG9tLCB5eXR5cGVfaW50MTYgKnRvcCkKLSNlbHNlCiBzdGF0aWMg
dm9pZAoteXlfc3RhY2tfcHJpbnQgKGJvdHRvbSwgdG9wKQotICAgIHl5dHlwZV9pbnQxNiAqYm90
dG9tOwotICAgIHl5dHlwZV9pbnQxNiAqdG9wOwotI2VuZGlmCit5eV9zdGFja19wcmludCAoeXl0
eXBlX2ludDE2ICp5eWJvdHRvbSwgeXl0eXBlX2ludDE2ICp5eXRvcCkKIHsKICAgWVlGUFJJTlRG
IChzdGRlcnIsICJTdGFjayBub3ciKTsKLSAgZm9yICg7IGJvdHRvbSA8PSB0b3A7ICsrYm90dG9t
KQotICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiICVkIiwgKmJvdHRvbSk7CisgIGZvciAoOyB5eWJv
dHRvbSA8PSB5eXRvcDsgeXlib3R0b20rKykKKyAgICB7CisgICAgICBpbnQgeXlib3QgPSAqeXli
b3R0b207CisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiAlZCIsIHl5Ym90KTsKKyAgICB9CiAg
IFlZRlBSSU5URiAoc3RkZXJyLCAiXG4iKTsKIH0KIAotIyBkZWZpbmUgWVlfU1RBQ0tfUFJJTlQo
Qm90dG9tLCBUb3ApICAgICAgICAgICAgICAgIFwKLWRvIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgaWYgKHl5ZGVidWcpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICB5eV9zdGFja19wcmludCAoKEJvdHRvbSksIChUb3ApKTsgICAgICAgICAgICAgICAgXAot
fSB3aGlsZSAoWVlJRCAoMCkpCisjIGRlZmluZSBZWV9TVEFDS19QUklOVChCb3R0b20sIFRvcCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZG8geyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgaWYgKHl5ZGVidWcpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeXlf
c3RhY2tfcHJpbnQgKChCb3R0b20pLCAoVG9wKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorfSB3aGlsZSAoMCkKIAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS4KIHwgUmVwb3J0IHRoYXQgdGhlIFlZUlVMRSBpcyBnb2luZyB0byBiZSBy
ZWR1Y2VkLiAgfAogYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSovCiAKLSNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18g
XAotICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCi1zdGF0
aWMgdm9pZAoteXlfcmVkdWNlX3ByaW50IChZWVNUWVBFICp5eXZzcCwgaW50IHl5cnVsZSwgQ29u
dGV4dCAqY29udGV4dCkKLSNlbHNlCiBzdGF0aWMgdm9pZAoteXlfcmVkdWNlX3ByaW50ICh5eXZz
cCwgeXlydWxlLCBjb250ZXh0KQotICAgIFlZU1RZUEUgKnl5dnNwOwotICAgIGludCB5eXJ1bGU7
Ci0gICAgQ29udGV4dCAqY29udGV4dDsKLSNlbmRpZgoreXlfcmVkdWNlX3ByaW50ICh5eXR5cGVf
aW50MTYgKnl5c3NwLCBZWVNUWVBFICp5eXZzcCwgaW50IHl5cnVsZSwgQ29udGV4dCAqY29udGV4
dCkKIHsKKyAgdW5zaWduZWQgbG9uZyBpbnQgeXlsbm8gPSB5eXJsaW5lW3l5cnVsZV07CiAgIGlu
dCB5eW5yaHMgPSB5eXIyW3l5cnVsZV07CiAgIGludCB5eWk7Ci0gIHVuc2lnbmVkIGxvbmcgaW50
IHl5bG5vID0geXlybGluZVt5eXJ1bGVdOwogICBZWUZQUklOVEYgKHN0ZGVyciwgIlJlZHVjaW5n
IHN0YWNrIGJ5IHJ1bGUgJWQgKGxpbmUgJWx1KTpcbiIsCi0gICAgICAgICB5eXJ1bGUgLSAxLCB5
eWxubyk7CisgICAgICAgICAgICAgeXlydWxlIC0gMSwgeXlsbm8pOwogICAvKiBUaGUgc3ltYm9s
cyBiZWluZyByZWR1Y2VkLiAgKi8KICAgZm9yICh5eWkgPSAwOyB5eWkgPCB5eW5yaHM7IHl5aSsr
KQogICAgIHsKLSAgICAgIGZwcmludGYgKHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5aSArIDEpOwot
ICAgICAgeXlfc3ltYm9sX3ByaW50IChzdGRlcnIsIHl5cmhzW3l5cHJoc1t5eXJ1bGVdICsgeXlp
XSwKLSAgICAgICAgICAgICAgICYoeXl2c3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLCBjb250ZXh0KTsKLSAgICAgIGZwcmludGYgKHN0ZGVy
ciwgIlxuIik7CisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5aSArIDEp
OworICAgICAgeXlfc3ltYm9sX3ByaW50IChzdGRlcnIsCisgICAgICAgICAgICAgICAgICAgICAg
IHl5c3Rvc1t5eXNzcFt5eWkgKyAxIC0geXlucmhzXV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICYoeXl2c3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICwgY29udGV4dCk7CisgICAgICBZWUZQUklOVEYgKHN0ZGVy
ciwgIlxuIik7CiAgICAgfQogfQogCi0jIGRlZmluZSBZWV9SRURVQ0VfUFJJTlQoUnVsZSkgICAg
ICAgIFwKLWRvIHsgICAgICAgICAgICAgICAgICAgIFwKLSAgaWYgKHl5ZGVidWcpICAgICAgICAg
ICAgICAgIFwKLSAgICB5eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCBSdWxlLCBjb250ZXh0KTsgXAot
fSB3aGlsZSAoWVlJRCAoMCkpCisjIGRlZmluZSBZWV9SRURVQ0VfUFJJTlQoUnVsZSkgICAgICAg
ICAgXAorZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgaWYgKHl5
ZGVidWcpICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeXlfcmVkdWNlX3ByaW50ICh5
eXNzcCwgeXl2c3AsIFJ1bGUsIGNvbnRleHQpOyBcCit9IHdoaWxlICgwKQogCiAvKiBOb256ZXJv
IG1lYW5zIHByaW50IHBhcnNlIHRyYWNlLiAgSXQgaXMgbGVmdCB1bmluaXRpYWxpemVkIHNvIHRo
YXQKICAgIG11bHRpcGxlIHBhcnNlcnMgY2FuIGNvZXhpc3QuICAqLwpAQCAtODgzLDcgKzgwOSw3
IEBAIGludCB5eWRlYnVnOwogCiAKIC8qIFlZSU5JVERFUFRIIC0tIGluaXRpYWwgc2l6ZSBvZiB0
aGUgcGFyc2VyJ3Mgc3RhY2tzLiAgKi8KLSNpZm5kZWYgICAgWVlJTklUREVQVEgKKyNpZm5kZWYg
WVlJTklUREVQVEgKICMgZGVmaW5lIFlZSU5JVERFUFRIIDIwMAogI2VuZGlmCiAKQEAgLTg5OCw3
ICs4MjQsNiBAQCBpbnQgeXlkZWJ1ZzsKICMgZGVmaW5lIFlZTUFYREVQVEggMTAwMDAKICNlbmRp
ZgogCi0MCiAKICNpZiBZWUVSUk9SX1ZFUkJPU0UKIApAQCAtOTA3LDE1ICs4MzIsOCBAQCBpbnQg
eXlkZWJ1ZzsKICMgICBkZWZpbmUgeXlzdHJsZW4gc3RybGVuCiAjICBlbHNlCiAvKiBSZXR1cm4g
dGhlIGxlbmd0aCBvZiBZWVNUUi4gICovCi0jaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5l
ZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVk
IF9NU0NfVkVSKQogc3RhdGljIFlZU0laRV9UCiB5eXN0cmxlbiAoY29uc3QgY2hhciAqeXlzdHIp
Ci0jZWxzZQotc3RhdGljIFlZU0laRV9UCi15eXN0cmxlbiAoeXlzdHIpCi0gICAgY29uc3QgY2hh
ciAqeXlzdHI7Ci0jZW5kaWYKIHsKICAgWVlTSVpFX1QgeXlsZW47CiAgIGZvciAoeXlsZW4gPSAw
OyB5eXN0clt5eWxlbl07IHl5bGVuKyspCkBAIC05MzEsMTYgKzg0OSw4IEBAIHl5c3RybGVuICh5
eXN0cikKICMgIGVsc2UKIC8qIENvcHkgWVlTUkMgdG8gWVlERVNULCByZXR1cm5pbmcgdGhlIGFk
ZHJlc3Mgb2YgdGhlIHRlcm1pbmF0aW5nICdcMCcgaW4KICAgIFlZREVTVC4gICovCi0jaWYgKGRl
ZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVmaW5l
ZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIGNoYXIgKgogeXlzdHBj
cHkgKGNoYXIgKnl5ZGVzdCwgY29uc3QgY2hhciAqeXlzcmMpCi0jZWxzZQotc3RhdGljIGNoYXIg
KgoteXlzdHBjcHkgKHl5ZGVzdCwgeXlzcmMpCi0gICAgY2hhciAqeXlkZXN0OwotICAgIGNvbnN0
IGNoYXIgKnl5c3JjOwotI2VuZGlmCiB7CiAgIGNoYXIgKnl5ZCA9IHl5ZGVzdDsKICAgY29uc3Qg
Y2hhciAqeXlzID0geXlzcmM7CkBAIC05NzAsMjcgKzg4MCwyNyBAQCB5eXRuYW1lcnIgKGNoYXIg
Knl5cmVzLCBjb25zdCBjaGFyICp5eXN0cikKICAgICAgIGNoYXIgY29uc3QgKnl5cCA9IHl5c3Ry
OwogCiAgICAgICBmb3IgKDs7KQotICAgIHN3aXRjaCAoKisreXlwKQotICAgICAgewotICAgICAg
Y2FzZSAnXCcnOgotICAgICAgY2FzZSAnLCc6Ci0gICAgICAgIGdvdG8gZG9fbm90X3N0cmlwX3F1
b3RlczsKLQotICAgICAgY2FzZSAnXFwnOgotICAgICAgICBpZiAoKisreXlwICE9ICdcXCcpCi0g
ICAgICAgICAgZ290byBkb19ub3Rfc3RyaXBfcXVvdGVzOwotICAgICAgICAvKiBGYWxsIHRocm91
Z2guICAqLwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgaWYgKHl5cmVzKQotICAgICAgICAgIHl5
cmVzW3l5bl0gPSAqeXlwOwotICAgICAgICB5eW4rKzsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAg
IGNhc2UgJyInOgotICAgICAgICBpZiAoeXlyZXMpCi0gICAgICAgICAgeXlyZXNbeXluXSA9ICdc
MCc7Ci0gICAgICAgIHJldHVybiB5eW47Ci0gICAgICB9CisgICAgICAgIHN3aXRjaCAoKisreXlw
KQorICAgICAgICAgIHsKKyAgICAgICAgICBjYXNlICdcJyc6CisgICAgICAgICAgY2FzZSAnLCc6
CisgICAgICAgICAgICBnb3RvIGRvX25vdF9zdHJpcF9xdW90ZXM7CisKKyAgICAgICAgICBjYXNl
ICdcXCc6CisgICAgICAgICAgICBpZiAoKisreXlwICE9ICdcXCcpCisgICAgICAgICAgICAgIGdv
dG8gZG9fbm90X3N0cmlwX3F1b3RlczsKKyAgICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICov
CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmICh5eXJlcykKKyAgICAgICAgICAg
ICAgeXlyZXNbeXluXSA9ICp5eXA7CisgICAgICAgICAgICB5eW4rKzsKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgY2FzZSAnIic6CisgICAgICAgICAgICBpZiAoeXlyZXMpCisgICAg
ICAgICAgICAgIHl5cmVzW3l5bl0gPSAnXDAnOworICAgICAgICAgICAgcmV0dXJuIHl5bjsKKyAg
ICAgICAgICB9CiAgICAgZG9fbm90X3N0cmlwX3F1b3RlczogOwogICAgIH0KIApAQCAtMTAwMSwx
NjcgKzkxMSwxNTkgQEAgeXl0bmFtZXJyIChjaGFyICp5eXJlcywgY29uc3QgY2hhciAqeXlzdHIp
CiB9CiAjIGVuZGlmCiAKLS8qIENvcHkgaW50byBZWVJFU1VMVCBhbiBlcnJvciBtZXNzYWdlIGFi
b3V0IHRoZSB1bmV4cGVjdGVkIHRva2VuCi0gICBZWUNIQVIgd2hpbGUgaW4gc3RhdGUgWVlTVEFU
RS4gIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCwKLSAgIGluY2x1ZGluZyB0aGUg
dGVybWluYXRpbmcgbnVsbCBieXRlLiAgSWYgWVlSRVNVTFQgaXMgbnVsbCwgZG8gbm90Ci0gICBj
b3B5IGFueXRoaW5nOyBqdXN0IHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd291bGQg
YmUKLSAgIGNvcGllZC4gIEFzIGEgc3BlY2lhbCBjYXNlLCByZXR1cm4gMCBpZiBhbiBvcmRpbmFy
eSAic3ludGF4IGVycm9yIgotICAgbWVzc2FnZSB3aWxsIGRvLiAgUmV0dXJuIFlZU0laRV9NQVhJ
TVVNIGlmIG92ZXJmbG93IG9jY3VycyBkdXJpbmcKLSAgIHNpemUgY2FsY3VsYXRpb24uICAqLwot
c3RhdGljIFlZU0laRV9UCi15eXN5bnRheF9lcnJvciAoY2hhciAqeXlyZXN1bHQsIGludCB5eXN0
YXRlLCBpbnQgeXljaGFyKQotewotICBpbnQgeXluID0geXlwYWN0W3l5c3RhdGVdOworLyogQ29w
eSBpbnRvICpZWU1TRywgd2hpY2ggaXMgb2Ygc2l6ZSAqWVlNU0dfQUxMT0MsIGFuIGVycm9yIG1l
c3NhZ2UKKyAgIGFib3V0IHRoZSB1bmV4cGVjdGVkIHRva2VuIFlZVE9LRU4gZm9yIHRoZSBzdGF0
ZSBzdGFjayB3aG9zZSB0b3AgaXMKKyAgIFlZU1NQLgogCi0gIGlmICghIChZWVBBQ1RfTklORiA8
IHl5biAmJiB5eW4gPD0gWVlMQVNUKSkKLSAgICByZXR1cm4gMDsKLSAgZWxzZQorICAgUmV0dXJu
IDAgaWYgKllZTVNHIHdhcyBzdWNjZXNzZnVsbHkgd3JpdHRlbi4gIFJldHVybiAxIGlmICpZWU1T
RyBpcworICAgbm90IGxhcmdlIGVub3VnaCB0byBob2xkIHRoZSBtZXNzYWdlLiAgSW4gdGhhdCBj
YXNlLCBhbHNvIHNldAorICAgKllZTVNHX0FMTE9DIHRvIHRoZSByZXF1aXJlZCBudW1iZXIgb2Yg
Ynl0ZXMuICBSZXR1cm4gMiBpZiB0aGUKKyAgIHJlcXVpcmVkIG51bWJlciBvZiBieXRlcyBpcyB0
b28gbGFyZ2UgdG8gc3RvcmUuICAqLworc3RhdGljIGludAoreXlzeW50YXhfZXJyb3IgKFlZU0la
RV9UICp5eW1zZ19hbGxvYywgY2hhciAqKnl5bXNnLAorICAgICAgICAgICAgICAgIHl5dHlwZV9p
bnQxNiAqeXlzc3AsIGludCB5eXRva2VuKQoreworICBZWVNJWkVfVCB5eXNpemUwID0geXl0bmFt
ZXJyIChZWV9OVUxMUFRSLCB5eXRuYW1lW3l5dG9rZW5dKTsKKyAgWVlTSVpFX1QgeXlzaXplID0g
eXlzaXplMDsKKyAgZW51bSB7IFlZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU0gPSA1IH07Cisg
IC8qIEludGVybmF0aW9uYWxpemVkIGZvcm1hdCBzdHJpbmcuICovCisgIGNvbnN0IGNoYXIgKnl5
Zm9ybWF0ID0gWVlfTlVMTFBUUjsKKyAgLyogQXJndW1lbnRzIG9mIHl5Zm9ybWF0LiAqLworICBj
aGFyIGNvbnN0ICp5eWFyZ1tZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNXTsKKyAgLyogTnVt
YmVyIG9mIHJlcG9ydGVkIHRva2VucyAob25lIGZvciB0aGUgInVuZXhwZWN0ZWQiLCBvbmUgcGVy
CisgICAgICJleHBlY3RlZCIpLiAqLworICBpbnQgeXljb3VudCA9IDA7CisKKyAgLyogVGhlcmUg
YXJlIG1hbnkgcG9zc2liaWxpdGllcyBoZXJlIHRvIGNvbnNpZGVyOgorICAgICAtIElmIHRoaXMg
c3RhdGUgaXMgYSBjb25zaXN0ZW50IHN0YXRlIHdpdGggYSBkZWZhdWx0IGFjdGlvbiwgdGhlbgor
ICAgICAgIHRoZSBvbmx5IHdheSB0aGlzIGZ1bmN0aW9uIHdhcyBpbnZva2VkIGlzIGlmIHRoZSBk
ZWZhdWx0IGFjdGlvbgorICAgICAgIGlzIGFuIGVycm9yIGFjdGlvbi4gIEluIHRoYXQgY2FzZSwg
ZG9uJ3QgY2hlY2sgZm9yIGV4cGVjdGVkCisgICAgICAgdG9rZW5zIGJlY2F1c2UgdGhlcmUgYXJl
IG5vbmUuCisgICAgIC0gVGhlIG9ubHkgd2F5IHRoZXJlIGNhbiBiZSBubyBsb29rYWhlYWQgcHJl
c2VudCAoaW4geXljaGFyKSBpcyBpZgorICAgICAgIHRoaXMgc3RhdGUgaXMgYSBjb25zaXN0ZW50
IHN0YXRlIHdpdGggYSBkZWZhdWx0IGFjdGlvbi4gIFRodXMsCisgICAgICAgZGV0ZWN0aW5nIHRo
ZSBhYnNlbmNlIG9mIGEgbG9va2FoZWFkIGlzIHN1ZmZpY2llbnQgdG8gZGV0ZXJtaW5lCisgICAg
ICAgdGhhdCB0aGVyZSBpcyBubyB1bmV4cGVjdGVkIG9yIGV4cGVjdGVkIHRva2VuIHRvIHJlcG9y
dC4gIEluIHRoYXQKKyAgICAgICBjYXNlLCBqdXN0IHJlcG9ydCBhIHNpbXBsZSAic3ludGF4IGVy
cm9yIi4KKyAgICAgLSBEb24ndCBhc3N1bWUgdGhlcmUgaXNuJ3QgYSBsb29rYWhlYWQganVzdCBi
ZWNhdXNlIHRoaXMgc3RhdGUgaXMgYQorICAgICAgIGNvbnNpc3RlbnQgc3RhdGUgd2l0aCBhIGRl
ZmF1bHQgYWN0aW9uLiAgVGhlcmUgbWlnaHQgaGF2ZSBiZWVuIGEKKyAgICAgICBwcmV2aW91cyBp
bmNvbnNpc3RlbnQgc3RhdGUsIGNvbnNpc3RlbnQgc3RhdGUgd2l0aCBhIG5vbi1kZWZhdWx0Cisg
ICAgICAgYWN0aW9uLCBvciB1c2VyIHNlbWFudGljIGFjdGlvbiB0aGF0IG1hbmlwdWxhdGVkIHl5
Y2hhci4KKyAgICAgLSBPZiBjb3Vyc2UsIHRoZSBleHBlY3RlZCB0b2tlbiBsaXN0IGRlcGVuZHMg
b24gc3RhdGVzIHRvIGhhdmUKKyAgICAgICBjb3JyZWN0IGxvb2thaGVhZCBpbmZvcm1hdGlvbiwg
YW5kIGl0IGRlcGVuZHMgb24gdGhlIHBhcnNlciBub3QKKyAgICAgICB0byBwZXJmb3JtIGV4dHJh
IHJlZHVjdGlvbnMgYWZ0ZXIgZmV0Y2hpbmcgYSBsb29rYWhlYWQgZnJvbSB0aGUKKyAgICAgICBz
Y2FubmVyIGFuZCBiZWZvcmUgZGV0ZWN0aW5nIGEgc3ludGF4IGVycm9yLiAgVGh1cywgc3RhdGUg
bWVyZ2luZworICAgICAgIChmcm9tIExBTFIgb3IgSUVMUikgYW5kIGRlZmF1bHQgcmVkdWN0aW9u
cyBjb3JydXB0IHRoZSBleHBlY3RlZAorICAgICAgIHRva2VuIGxpc3QuICBIb3dldmVyLCB0aGUg
bGlzdCBpcyBjb3JyZWN0IGZvciBjYW5vbmljYWwgTFIgd2l0aAorICAgICAgIG9uZSBleGNlcHRp
b246IGl0IHdpbGwgc3RpbGwgY29udGFpbiBhbnkgdG9rZW4gdGhhdCB3aWxsIG5vdCBiZQorICAg
ICAgIGFjY2VwdGVkIGR1ZSB0byBhbiBlcnJvciBhY3Rpb24gaW4gYSBsYXRlciBzdGF0ZS4KKyAg
Ki8KKyAgaWYgKHl5dG9rZW4gIT0gWVlFTVBUWSkKICAgICB7Ci0gICAgICBpbnQgeXl0eXBlID0g
WVlUUkFOU0xBVEUgKHl5Y2hhcik7Ci0gICAgICBZWVNJWkVfVCB5eXNpemUwID0geXl0bmFtZXJy
ICgwLCB5eXRuYW1lW3l5dHlwZV0pOwotICAgICAgWVlTSVpFX1QgeXlzaXplID0geXlzaXplMDsK
LSAgICAgIFlZU0laRV9UIHl5c2l6ZTE7Ci0gICAgICBpbnQgeXlzaXplX292ZXJmbG93ID0gMDsK
LSAgICAgIGVudW0geyBZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNID0gNSB9OwotICAgICAg
Y2hhciBjb25zdCAqeXlhcmdbWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTV07Ci0gICAgICBp
bnQgeXl4OwotCi0jIGlmIDAKLSAgICAgIC8qIFRoaXMgaXMgc28geGdldHRleHQgc2VlcyB0aGUg
dHJhbnNsYXRhYmxlIGZvcm1hdHMgdGhhdCBhcmUKLSAgICAgY29uc3RydWN0ZWQgb24gdGhlIGZs
eS4gICovCi0gICAgICBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcyIpOwotICAgICAg
WVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyIpOwotICAgICAg
WVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAlcyIpOwot
ICAgICAgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAl
cyBvciAlcyIpOwotICAgICAgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVj
dGluZyAlcyBvciAlcyBvciAlcyBvciAlcyIpOwotIyBlbmRpZgotICAgICAgY2hhciAqeXlmbXQ7
Ci0gICAgICBjaGFyIGNvbnN0ICp5eWY7Ci0gICAgICBzdGF0aWMgY2hhciBjb25zdCB5eXVuZXhw
ZWN0ZWRbXSA9ICJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMiOwotICAgICAgc3RhdGljIGNo
YXIgY29uc3QgeXlleHBlY3RpbmdbXSA9ICIsIGV4cGVjdGluZyAlcyI7Ci0gICAgICBzdGF0aWMg
Y2hhciBjb25zdCB5eW9yW10gPSAiIG9yICVzIjsKLSAgICAgIGNoYXIgeXlmb3JtYXRbc2l6ZW9m
IHl5dW5leHBlY3RlZAotICAgICAgICAgICAgKyBzaXplb2YgeXlleHBlY3RpbmcgLSAxCi0gICAg
ICAgICAgICArICgoWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTSAtIDIpCi0gICAgICAgICAg
ICAgICAqIChzaXplb2YgeXlvciAtIDEpKV07Ci0gICAgICBjaGFyIGNvbnN0ICp5eXByZWZpeCA9
IHl5ZXhwZWN0aW5nOwotCi0gICAgICAvKiBTdGFydCBZWVggYXQgLVlZTiBpZiBuZWdhdGl2ZSB0
byBhdm9pZCBuZWdhdGl2ZSBpbmRleGVzIGluCi0gICAgIFlZQ0hFQ0suICAqLwotICAgICAgaW50
IHl5eGJlZ2luID0geXluIDwgMCA/IC15eW4gOiAwOwotCi0gICAgICAvKiBTdGF5IHdpdGhpbiBi
b3VuZHMgb2YgYm90aCB5eWNoZWNrIGFuZCB5eXRuYW1lLiAgKi8KLSAgICAgIGludCB5eWNoZWNr
bGltID0gWVlMQVNUIC0geXluICsgMTsKLSAgICAgIGludCB5eXhlbmQgPSB5eWNoZWNrbGltIDwg
WVlOVE9LRU5TID8geXljaGVja2xpbSA6IFlZTlRPS0VOUzsKLSAgICAgIGludCB5eWNvdW50ID0g
MTsKLQotICAgICAgeXlhcmdbMF0gPSB5eXRuYW1lW3l5dHlwZV07Ci0gICAgICB5eWZtdCA9IHl5
c3RwY3B5ICh5eWZvcm1hdCwgeXl1bmV4cGVjdGVkKTsKLQotICAgICAgZm9yICh5eXggPSB5eXhi
ZWdpbjsgeXl4IDwgeXl4ZW5kOyArK3l5eCkKLSAgICBpZiAoeXljaGVja1t5eXggKyB5eW5dID09
IHl5eCAmJiB5eXggIT0gWVlURVJST1IpCi0gICAgICB7Ci0gICAgICAgIGlmICh5eWNvdW50ID09
IFlZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU0pCi0gICAgICAgICAgewotICAgICAgICB5eWNv
dW50ID0gMTsKLSAgICAgICAgeXlzaXplID0geXlzaXplMDsKLSAgICAgICAgeXlmb3JtYXRbc2l6
ZW9mIHl5dW5leHBlY3RlZCAtIDFdID0gJ1wwJzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
fQotICAgICAgICB5eWFyZ1t5eWNvdW50KytdID0geXl0bmFtZVt5eXhdOwotICAgICAgICB5eXNp
emUxID0geXlzaXplICsgeXl0bmFtZXJyICgwLCB5eXRuYW1lW3l5eF0pOwotICAgICAgICB5eXNp
emVfb3ZlcmZsb3cgfD0gKHl5c2l6ZTEgPCB5eXNpemUpOwotICAgICAgICB5eXNpemUgPSB5eXNp
emUxOwotICAgICAgICB5eWZtdCA9IHl5c3RwY3B5ICh5eWZtdCwgeXlwcmVmaXgpOwotICAgICAg
ICB5eXByZWZpeCA9IHl5b3I7Ci0gICAgICB9CisgICAgICBpbnQgeXluID0geXlwYWN0Wyp5eXNz
cF07CisgICAgICB5eWFyZ1t5eWNvdW50KytdID0geXl0bmFtZVt5eXRva2VuXTsKKyAgICAgIGlm
ICgheXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQgKHl5bikpCisgICAgICAgIHsKKyAgICAgICAgICAv
KiBTdGFydCBZWVggYXQgLVlZTiBpZiBuZWdhdGl2ZSB0byBhdm9pZCBuZWdhdGl2ZSBpbmRleGVz
IGluCisgICAgICAgICAgICAgWVlDSEVDSy4gIEluIG90aGVyIHdvcmRzLCBza2lwIHRoZSBmaXJz
dCAtWVlOIGFjdGlvbnMgZm9yCisgICAgICAgICAgICAgdGhpcyBzdGF0ZSBiZWNhdXNlIHRoZXkg
YXJlIGRlZmF1bHQgYWN0aW9ucy4gICovCisgICAgICAgICAgaW50IHl5eGJlZ2luID0geXluIDwg
MCA/IC15eW4gOiAwOworICAgICAgICAgIC8qIFN0YXkgd2l0aGluIGJvdW5kcyBvZiBib3RoIHl5
Y2hlY2sgYW5kIHl5dG5hbWUuICAqLworICAgICAgICAgIGludCB5eWNoZWNrbGltID0gWVlMQVNU
IC0geXluICsgMTsKKyAgICAgICAgICBpbnQgeXl4ZW5kID0geXljaGVja2xpbSA8IFlZTlRPS0VO
UyA/IHl5Y2hlY2tsaW0gOiBZWU5UT0tFTlM7CisgICAgICAgICAgaW50IHl5eDsKKworICAgICAg
ICAgIGZvciAoeXl4ID0geXl4YmVnaW47IHl5eCA8IHl5eGVuZDsgKyt5eXgpCisgICAgICAgICAg
ICBpZiAoeXljaGVja1t5eXggKyB5eW5dID09IHl5eCAmJiB5eXggIT0gWVlURVJST1IKKyAgICAg
ICAgICAgICAgICAmJiAheXl0YWJsZV92YWx1ZV9pc19lcnJvciAoeXl0YWJsZVt5eXggKyB5eW5d
KSkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh5eWNvdW50ID09IFlZRVJS
T1JfVkVSQk9TRV9BUkdTX01BWElNVU0pCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHl5Y291bnQgPSAxOworICAgICAgICAgICAgICAgICAgICB5eXNpemUgPSB5eXNp
emUwOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB5eWFyZ1t5eWNvdW50KytdID0geXl0bmFtZVt5eXhdOworICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIFlZU0laRV9UIHl5c2l6ZTEgPSB5eXNpemUgKyB5
eXRuYW1lcnIgKFlZX05VTExQVFIsIHl5dG5hbWVbeXl4XSk7CisgICAgICAgICAgICAgICAgICBp
ZiAoISAoeXlzaXplIDw9IHl5c2l6ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAmJiB5eXNp
emUxIDw9IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAyOworICAgICAgICAgICAgICAgICAgeXlzaXplID0geXlzaXplMTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIAotICAgICAgeXlmID0gWVlf
KHl5Zm9ybWF0KTsKLSAgICAgIHl5c2l6ZTEgPSB5eXNpemUgKyB5eXN0cmxlbiAoeXlmKTsKLSAg
ICAgIHl5c2l6ZV9vdmVyZmxvdyB8PSAoeXlzaXplMSA8IHl5c2l6ZSk7Ci0gICAgICB5eXNpemUg
PSB5eXNpemUxOworICBzd2l0Y2ggKHl5Y291bnQpCisgICAgeworIyBkZWZpbmUgWVlDQVNFXyhO
LCBTKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBjYXNlIE46ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgeXlmb3JtYXQgPSBTOyAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgYnJlYWsKKyAgICAgIFlZQ0FTRV8oMCwgWVlfKCJzeW50YXggZXJyb3Ii
KSk7CisgICAgICBZWUNBU0VfKDEsIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzIikp
OworICAgICAgWVlDQVNFXygyLCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhw
ZWN0aW5nICVzIikpOworICAgICAgWVlDQVNFXygzLCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBl
Y3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIikpOworICAgICAgWVlDQVNFXyg0LCBZWV8oInN5
bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIikpOwor
ICAgICAgWVlDQVNFXyg1LCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0
aW5nICVzIG9yICVzIG9yICVzIG9yICVzIikpOworIyB1bmRlZiBZWUNBU0VfCisgICAgfQogCi0g
ICAgICBpZiAoeXlzaXplX292ZXJmbG93KQotICAgIHJldHVybiBZWVNJWkVfTUFYSU1VTTsKKyAg
eworICAgIFlZU0laRV9UIHl5c2l6ZTEgPSB5eXNpemUgKyB5eXN0cmxlbiAoeXlmb3JtYXQpOwor
ICAgIGlmICghICh5eXNpemUgPD0geXlzaXplMSAmJiB5eXNpemUxIDw9IFlZU1RBQ0tfQUxMT0Nf
TUFYSU1VTSkpCisgICAgICByZXR1cm4gMjsKKyAgICB5eXNpemUgPSB5eXNpemUxOworICB9CiAK
LSAgICAgIGlmICh5eXJlc3VsdCkKKyAgaWYgKCp5eW1zZ19hbGxvYyA8IHl5c2l6ZSkKICAgICB7
Ci0gICAgICAvKiBBdm9pZCBzcHJpbnRmLCBhcyB0aGF0IGluZnJpbmdlcyBvbiB0aGUgdXNlcidz
IG5hbWUgc3BhY2UuCi0gICAgICAgICBEb24ndCBoYXZlIHVuZGVmaW5lZCBiZWhhdmlvciBldmVu
IGlmIHRoZSB0cmFuc2xhdGlvbgotICAgICAgICAgcHJvZHVjZWQgYSBzdHJpbmcgd2l0aCB0aGUg
d3JvbmcgbnVtYmVyIG9mICIlcyJzLiAgKi8KLSAgICAgIGNoYXIgKnl5cCA9IHl5cmVzdWx0Owot
ICAgICAgaW50IHl5aSA9IDA7Ci0gICAgICB3aGlsZSAoKCp5eXAgPSAqeXlmKSAhPSAnXDAnKQot
ICAgICAgICB7Ci0gICAgICAgICAgaWYgKCp5eXAgPT0gJyUnICYmIHl5ZlsxXSA9PSAncycgJiYg
eXlpIDwgeXljb3VudCkKKyAgICAgICp5eW1zZ19hbGxvYyA9IDIgKiB5eXNpemU7CisgICAgICBp
ZiAoISAoeXlzaXplIDw9ICp5eW1zZ19hbGxvYworICAgICAgICAgICAgICYmICp5eW1zZ19hbGxv
YyA8PSBZWVNUQUNLX0FMTE9DX01BWElNVU0pKQorICAgICAgICAqeXltc2dfYWxsb2MgPSBZWVNU
QUNLX0FMTE9DX01BWElNVU07CisgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgLyogQXZvaWQg
c3ByaW50ZiwgYXMgdGhhdCBpbmZyaW5nZXMgb24gdGhlIHVzZXIncyBuYW1lIHNwYWNlLgorICAg
ICBEb24ndCBoYXZlIHVuZGVmaW5lZCBiZWhhdmlvciBldmVuIGlmIHRoZSB0cmFuc2xhdGlvbgor
ICAgICBwcm9kdWNlZCBhIHN0cmluZyB3aXRoIHRoZSB3cm9uZyBudW1iZXIgb2YgIiVzInMuICAq
LworICB7CisgICAgY2hhciAqeXlwID0gKnl5bXNnOworICAgIGludCB5eWkgPSAwOworICAgIHdo
aWxlICgoKnl5cCA9ICp5eWZvcm1hdCkgIT0gJ1wwJykKKyAgICAgIGlmICgqeXlwID09ICclJyAm
JiB5eWZvcm1hdFsxXSA9PSAncycgJiYgeXlpIDwgeXljb3VudCkKICAgICAgICAgewogICAgICAg
ICAgIHl5cCArPSB5eXRuYW1lcnIgKHl5cCwgeXlhcmdbeXlpKytdKTsKLSAgICAgICAgICB5eWYg
Kz0gMjsKKyAgICAgICAgICB5eWZvcm1hdCArPSAyOwogICAgICAgICB9Ci0gICAgICAgICAgZWxz
ZQorICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgeXlwKys7Ci0gICAgICAgICAgeXlm
Kys7CisgICAgICAgICAgeXlmb3JtYXQrKzsKICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
ICAgICAgcmV0dXJuIHl5c2l6ZTsKLSAgICB9CisgIH0KKyAgcmV0dXJuIDA7CiB9CiAjZW5kaWYg
LyogWVlFUlJPUl9WRVJCT1NFICovCi0MCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0uCiB8IFJlbGVhc2UgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHRv
IHRoaXMgc3ltYm9sLiAgfAogYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKi8KIAotLypBUkdTVVNFRCovCi0jaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVm
aW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZp
bmVkIF9NU0NfVkVSKQogc3RhdGljIHZvaWQKIHl5ZGVzdHJ1Y3QgKGNvbnN0IGNoYXIgKnl5bXNn
LCBpbnQgeXl0eXBlLCBZWVNUWVBFICp5eXZhbHVlcCwgQ29udGV4dCAqY29udGV4dCkKLSNlbHNl
Ci1zdGF0aWMgdm9pZAoteXlkZXN0cnVjdCAoeXltc2csIHl5dHlwZSwgeXl2YWx1ZXAsIGNvbnRl
eHQpCi0gICAgY29uc3QgY2hhciAqeXltc2c7Ci0gICAgaW50IHl5dHlwZTsKLSAgICBZWVNUWVBF
ICp5eXZhbHVlcDsKLSAgICBDb250ZXh0ICpjb250ZXh0OwotI2VuZGlmCiB7CiAgIFlZVVNFICh5
eXZhbHVlcCk7CiAgIFlZVVNFIChjb250ZXh0KTsKLQogICBpZiAoIXl5bXNnKQogICAgIHl5bXNn
ID0gIkRlbGV0aW5nIjsKICAgWVlfU1lNQk9MX1BSSU5UICh5eW1zZywgeXl0eXBlLCB5eXZhbHVl
cCwgeXlsb2NhdGlvbnApOwogCi0gIHN3aXRjaCAoeXl0eXBlKQotICAgIHsKLQotICAgICAgZGVm
YXVsdDoKLSAgICBicmVhazsKLSAgICB9CisgIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVE
X0JFR0lOCisgIFlZVVNFICh5eXR5cGUpOworICBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpF
RF9FTkQKIH0KLQwKLQotLyogUHJldmVudCB3YXJuaW5ncyBmcm9tIC1XbWlzc2luZy1wcm90b3R5
cGVzLiAgKi8KLQotI2lmZGVmIFlZUEFSU0VfUEFSQU0KLSNpZiBkZWZpbmVkIF9fU1REQ19fIHx8
IGRlZmluZWQgX19jcGx1c3BsdXMKLWludCB5eXBhcnNlICh2b2lkICpZWVBBUlNFX1BBUkFNKTsK
LSNlbHNlCi1pbnQgeXlwYXJzZSAoKTsKLSNlbmRpZgotI2Vsc2UgLyogISBZWVBBUlNFX1BBUkFN
ICovCi0jaWYgZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzCi1pbnQgeXlw
YXJzZSAoQ29udGV4dCAqY29udGV4dCk7Ci0jZWxzZQotaW50IHl5cGFyc2UgKCk7Ci0jZW5kaWYK
LSNlbmRpZiAvKiAhIFlZUEFSU0VfUEFSQU0gKi8KLQotCiAKIAogCkBAIC0xMTcwLDk5ICsxMDcy
LDc2IEBAIGludCB5eXBhcnNlICgpOwogfCB5eXBhcnNlLiAgfAogYC0tLS0tLS0tLS0qLwogCi0j
aWZkZWYgWVlQQVJTRV9QQVJBTQotI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19D
OTlfX0ZVTkNfXyBcCi0gICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVND
X1ZFUikKLWludAoteXlwYXJzZSAodm9pZCAqWVlQQVJTRV9QQVJBTSkKLSNlbHNlCi1pbnQKLXl5
cGFyc2UgKFlZUEFSU0VfUEFSQU0pCi0gICAgdm9pZCAqWVlQQVJTRV9QQVJBTTsKLSNlbmRpZgot
I2Vsc2UgLyogISBZWVBBUlNFX1BBUkFNICovCi0jaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVm
aW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZp
bmVkIF9NU0NfVkVSKQogaW50CiB5eXBhcnNlIChDb250ZXh0ICpjb250ZXh0KQotI2Vsc2UKLWlu
dAoteXlwYXJzZSAoY29udGV4dCkKLSAgICBDb250ZXh0ICpjb250ZXh0OwotI2VuZGlmCi0jZW5k
aWYKIHsKLSAgLyogVGhlIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KKy8qIFRoZSBsb29rYWhlYWQg
c3ltYm9sLiAgKi8KIGludCB5eWNoYXI7CiAKLS8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBvZiB0aGUg
bG9vay1haGVhZCBzeW1ib2wuICAqLwotWVlTVFlQRSB5eWx2YWw7Ci0KLS8qIE51bWJlciBvZiBz
eW50YXggZXJyb3JzIHNvIGZhci4gICovCi1pbnQgeXluZXJyczsKLQotICBpbnQgeXlzdGF0ZTsK
LSAgaW50IHl5bjsKLSAgaW50IHl5cmVzdWx0OwotICAvKiBOdW1iZXIgb2YgdG9rZW5zIHRvIHNo
aWZ0IGJlZm9yZSBlcnJvciBtZXNzYWdlcyBlbmFibGVkLiAgKi8KLSAgaW50IHl5ZXJyc3RhdHVz
OwotICAvKiBMb29rLWFoZWFkIHRva2VuIGFzIGFuIGludGVybmFsICh0cmFuc2xhdGVkKSB0b2tl
biBudW1iZXIuICAqLwotICBpbnQgeXl0b2tlbiA9IDA7Ci0jaWYgWVlFUlJPUl9WRVJCT1NFCi0g
IC8qIEJ1ZmZlciBmb3IgZXJyb3IgbWVzc2FnZXMsIGFuZCBpdHMgYWxsb2NhdGVkIHNpemUuICAq
LwotICBjaGFyIHl5bXNnYnVmWzEyOF07Ci0gIGNoYXIgKnl5bXNnID0geXltc2didWY7Ci0gIFlZ
U0laRV9UIHl5bXNnX2FsbG9jID0gc2l6ZW9mIHl5bXNnYnVmOwotI2VuZGlmCiAKLSAgLyogVGhy
ZWUgc3RhY2tzIGFuZCB0aGVpciB0b29sczoKLSAgICAgYHl5c3MnOiByZWxhdGVkIHRvIHN0YXRl
cywKLSAgICAgYHl5dnMnOiByZWxhdGVkIHRvIHNlbWFudGljIHZhbHVlcywKLSAgICAgYHl5bHMn
OiByZWxhdGVkIHRvIGxvY2F0aW9ucy4KKy8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBvZiB0aGUgbG9v
a2FoZWFkIHN5bWJvbC4gICovCisvKiBEZWZhdWx0IHZhbHVlIHVzZWQgZm9yIGluaXRpYWxpemF0
aW9uLCBmb3IgcGFjaWZ5aW5nIG9sZGVyIEdDQ3MKKyAgIG9yIG5vbi1HQ0MgY29tcGlsZXJzLiAg
Ki8KK1lZX0lOSVRJQUxfVkFMVUUgKHN0YXRpYyBZWVNUWVBFIHl5dmFsX2RlZmF1bHQ7KQorWVlT
VFlQRSB5eWx2YWwgWVlfSU5JVElBTF9WQUxVRSAoPSB5eXZhbF9kZWZhdWx0KTsKIAotICAgICBS
ZWZlciB0byB0aGUgc3RhY2tzIHRocnUgc2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFsbG93IHl5b3Zl
cmZsb3cKLSAgICAgdG8gcmVhbGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4gICovCisgICAgLyogTnVt
YmVyIG9mIHN5bnRheCBlcnJvcnMgc28gZmFyLiAgKi8KKyAgICBpbnQgeXluZXJyczsKIAotICAv
KiBUaGUgc3RhdGUgc3RhY2suICAqLwotICB5eXR5cGVfaW50MTYgeXlzc2FbWVlJTklUREVQVEhd
OwotICB5eXR5cGVfaW50MTYgKnl5c3MgPSB5eXNzYTsKLSAgeXl0eXBlX2ludDE2ICp5eXNzcDsK
KyAgICBpbnQgeXlzdGF0ZTsKKyAgICAvKiBOdW1iZXIgb2YgdG9rZW5zIHRvIHNoaWZ0IGJlZm9y
ZSBlcnJvciBtZXNzYWdlcyBlbmFibGVkLiAgKi8KKyAgICBpbnQgeXllcnJzdGF0dXM7CiAKLSAg
LyogVGhlIHNlbWFudGljIHZhbHVlIHN0YWNrLiAgKi8KLSAgWVlTVFlQRSB5eXZzYVtZWUlOSVRE
RVBUSF07Ci0gIFlZU1RZUEUgKnl5dnMgPSB5eXZzYTsKLSAgWVlTVFlQRSAqeXl2c3A7CisgICAg
LyogVGhlIHN0YWNrcyBhbmQgdGhlaXIgdG9vbHM6CisgICAgICAgJ3l5c3MnOiByZWxhdGVkIHRv
IHN0YXRlcy4KKyAgICAgICAneXl2cyc6IHJlbGF0ZWQgdG8gc2VtYW50aWMgdmFsdWVzLgogCisg
ICAgICAgUmVmZXIgdG8gdGhlIHN0YWNrcyB0aHJvdWdoIHNlcGFyYXRlIHBvaW50ZXJzLCB0byBh
bGxvdyB5eW92ZXJmbG93CisgICAgICAgdG8gcmVhbGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4gICov
CiAKKyAgICAvKiBUaGUgc3RhdGUgc3RhY2suICAqLworICAgIHl5dHlwZV9pbnQxNiB5eXNzYVtZ
WUlOSVRERVBUSF07CisgICAgeXl0eXBlX2ludDE2ICp5eXNzOworICAgIHl5dHlwZV9pbnQxNiAq
eXlzc3A7CiAKLSNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZzcCAtPSAoTiksIHl5c3NwIC09
IChOKSkKKyAgICAvKiBUaGUgc2VtYW50aWMgdmFsdWUgc3RhY2suICAqLworICAgIFlZU1RZUEUg
eXl2c2FbWVlJTklUREVQVEhdOworICAgIFlZU1RZUEUgKnl5dnM7CisgICAgWVlTVFlQRSAqeXl2
c3A7CiAKLSAgWVlTSVpFX1QgeXlzdGFja3NpemUgPSBZWUlOSVRERVBUSDsKKyAgICBZWVNJWkVf
VCB5eXN0YWNrc2l6ZTsKIAorICBpbnQgeXluOworICBpbnQgeXlyZXN1bHQ7CisgIC8qIExvb2th
aGVhZCB0b2tlbiBhcyBhbiBpbnRlcm5hbCAodHJhbnNsYXRlZCkgdG9rZW4gbnVtYmVyLiAgKi8K
KyAgaW50IHl5dG9rZW4gPSAwOwogICAvKiBUaGUgdmFyaWFibGVzIHVzZWQgdG8gcmV0dXJuIHNl
bWFudGljIHZhbHVlIGFuZCBsb2NhdGlvbiBmcm9tIHRoZQogICAgICBhY3Rpb24gcm91dGluZXMu
ICAqLwogICBZWVNUWVBFIHl5dmFsOwogCisjaWYgWVlFUlJPUl9WRVJCT1NFCisgIC8qIEJ1ZmZl
ciBmb3IgZXJyb3IgbWVzc2FnZXMsIGFuZCBpdHMgYWxsb2NhdGVkIHNpemUuICAqLworICBjaGFy
IHl5bXNnYnVmWzEyOF07CisgIGNoYXIgKnl5bXNnID0geXltc2didWY7CisgIFlZU0laRV9UIHl5
bXNnX2FsbG9jID0gc2l6ZW9mIHl5bXNnYnVmOworI2VuZGlmCisKKyNkZWZpbmUgWVlQT1BTVEFD
SyhOKSAgICh5eXZzcCAtPSAoTiksIHl5c3NwIC09IChOKSkKIAogICAvKiBUaGUgbnVtYmVyIG9m
IHN5bWJvbHMgb24gdGhlIFJIUyBvZiB0aGUgcmVkdWNlZCBydWxlLgogICAgICBLZWVwIHRvIHpl
cm8gd2hlbiBubyBzeW1ib2wgc2hvdWxkIGJlIHBvcHBlZC4gICovCiAgIGludCB5eWxlbiA9IDA7
CiAKKyAgeXlzc3AgPSB5eXNzID0geXlzc2E7CisgIHl5dnNwID0geXl2cyA9IHl5dnNhOworICB5
eXN0YWNrc2l6ZSA9IFlZSU5JVERFUFRIOworCiAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YXJ0
aW5nIHBhcnNlXG4iKSk7CiAKICAgeXlzdGF0ZSA9IDA7CiAgIHl5ZXJyc3RhdHVzID0gMDsKICAg
eXluZXJycyA9IDA7Ci0gIHl5Y2hhciA9IFlZRU1QVFk7ICAgICAgICAvKiBDYXVzZSBhIHRva2Vu
IHRvIGJlIHJlYWQuICAqLwotCi0gIC8qIEluaXRpYWxpemUgc3RhY2sgcG9pbnRlcnMuCi0gICAg
IFdhc3RlIG9uZSBlbGVtZW50IG9mIHZhbHVlIGFuZCBsb2NhdGlvbiBzdGFjawotICAgICBzbyB0
aGF0IHRoZXkgc3RheSBvbiB0aGUgc2FtZSBsZXZlbCBhcyB0aGUgc3RhdGUgc3RhY2suCi0gICAg
IFRoZSB3YXN0ZWQgZWxlbWVudHMgYXJlIG5ldmVyIGluaXRpYWxpemVkLiAgKi8KLQotICB5eXNz
cCA9IHl5c3M7Ci0gIHl5dnNwID0geXl2czsKLQorICB5eWNoYXIgPSBZWUVNUFRZOyAvKiBDYXVz
ZSBhIHRva2VuIHRvIGJlIHJlYWQuICAqLwogICBnb3RvIHl5c2V0c3RhdGU7CiAKIC8qLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgpA
QCAtMTI4MywyNSArMTE2MiwyMyBAQCBpbnQgeXluZXJyczsKIAogI2lmZGVmIHl5b3ZlcmZsb3cK
ICAgICAgIHsKLSAgICAvKiBHaXZlIHVzZXIgYSBjaGFuY2UgdG8gcmVhbGxvY2F0ZSB0aGUgc3Rh
Y2suICBVc2UgY29waWVzIG9mCi0gICAgICAgdGhlc2Ugc28gdGhhdCB0aGUgJidzIGRvbid0IGZv
cmNlIHRoZSByZWFsIG9uZXMgaW50bwotICAgICAgIG1lbW9yeS4gICovCi0gICAgWVlTVFlQRSAq
eXl2czEgPSB5eXZzOwotICAgIHl5dHlwZV9pbnQxNiAqeXlzczEgPSB5eXNzOwotCi0KLSAgICAv
KiBFYWNoIHN0YWNrIHBvaW50ZXIgYWRkcmVzcyBpcyBmb2xsb3dlZCBieSB0aGUgc2l6ZSBvZiB0
aGUKLSAgICAgICBkYXRhIGluIHVzZSBpbiB0aGF0IHN0YWNrLCBpbiBieXRlcy4gIFRoaXMgdXNl
ZCB0byBiZSBhCi0gICAgICAgY29uZGl0aW9uYWwgYXJvdW5kIGp1c3QgdGhlIHR3byBleHRyYSBh
cmdzLCBidXQgdGhhdCBtaWdodAotICAgICAgIGJlIHVuZGVmaW5lZCBpZiB5eW92ZXJmbG93IGlz
IGEgbWFjcm8uICAqLwotICAgIHl5b3ZlcmZsb3cgKFlZXygibWVtb3J5IGV4aGF1c3RlZCIpLAot
ICAgICAgICAgICAgJnl5c3MxLCB5eXNpemUgKiBzaXplb2YgKCp5eXNzcCksCi0gICAgICAgICAg
ICAmeXl2czEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5dnNwKSwKLQotICAgICAgICAgICAgJnl5c3Rh
Y2tzaXplKTsKLQotICAgIHl5c3MgPSB5eXNzMTsKLSAgICB5eXZzID0geXl2czE7CisgICAgICAg
IC8qIEdpdmUgdXNlciBhIGNoYW5jZSB0byByZWFsbG9jYXRlIHRoZSBzdGFjay4gIFVzZSBjb3Bp
ZXMgb2YKKyAgICAgICAgICAgdGhlc2Ugc28gdGhhdCB0aGUgJidzIGRvbid0IGZvcmNlIHRoZSBy
ZWFsIG9uZXMgaW50bworICAgICAgICAgICBtZW1vcnkuICAqLworICAgICAgICBZWVNUWVBFICp5
eXZzMSA9IHl5dnM7CisgICAgICAgIHl5dHlwZV9pbnQxNiAqeXlzczEgPSB5eXNzOworCisgICAg
ICAgIC8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRyZXNzIGlzIGZvbGxvd2VkIGJ5IHRoZSBzaXpl
IG9mIHRoZQorICAgICAgICAgICBkYXRhIGluIHVzZSBpbiB0aGF0IHN0YWNrLCBpbiBieXRlcy4g
IFRoaXMgdXNlZCB0byBiZSBhCisgICAgICAgICAgIGNvbmRpdGlvbmFsIGFyb3VuZCBqdXN0IHRo
ZSB0d28gZXh0cmEgYXJncywgYnV0IHRoYXQgbWlnaHQKKyAgICAgICAgICAgYmUgdW5kZWZpbmVk
IGlmIHl5b3ZlcmZsb3cgaXMgYSBtYWNyby4gICovCisgICAgICAgIHl5b3ZlcmZsb3cgKFlZXygi
bWVtb3J5IGV4aGF1c3RlZCIpLAorICAgICAgICAgICAgICAgICAgICAmeXlzczEsIHl5c2l6ZSAq
IHNpemVvZiAoKnl5c3NwKSwKKyAgICAgICAgICAgICAgICAgICAgJnl5dnMxLCB5eXNpemUgKiBz
aXplb2YgKCp5eXZzcCksCisgICAgICAgICAgICAgICAgICAgICZ5eXN0YWNrc2l6ZSk7CisKKyAg
ICAgICAgeXlzcyA9IHl5c3MxOworICAgICAgICB5eXZzID0geXl2czE7CiAgICAgICB9CiAjZWxz
ZSAvKiBubyB5eW92ZXJmbG93ICovCiAjIGlmbmRlZiBZWVNUQUNLX1JFTE9DQVRFCkBAIC0xMzA5
LDIzICsxMTg2LDIyIEBAIGludCB5eW5lcnJzOwogIyBlbHNlCiAgICAgICAvKiBFeHRlbmQgdGhl
IHN0YWNrIG91ciBvd24gd2F5LiAgKi8KICAgICAgIGlmIChZWU1BWERFUFRIIDw9IHl5c3RhY2tz
aXplKQotICAgIGdvdG8geXlleGhhdXN0ZWRsYWI7CisgICAgICAgIGdvdG8geXlleGhhdXN0ZWRs
YWI7CiAgICAgICB5eXN0YWNrc2l6ZSAqPSAyOwogICAgICAgaWYgKFlZTUFYREVQVEggPCB5eXN0
YWNrc2l6ZSkKLSAgICB5eXN0YWNrc2l6ZSA9IFlZTUFYREVQVEg7CisgICAgICAgIHl5c3RhY2tz
aXplID0gWVlNQVhERVBUSDsKIAogICAgICAgewotICAgIHl5dHlwZV9pbnQxNiAqeXlzczEgPSB5
eXNzOwotICAgIHVuaW9uIHl5YWxsb2MgKnl5cHRyID0KLSAgICAgICh1bmlvbiB5eWFsbG9jICop
IFlZU1RBQ0tfQUxMT0MgKFlZU1RBQ0tfQllURVMgKHl5c3RhY2tzaXplKSk7Ci0gICAgaWYgKCEg
eXlwdHIpCi0gICAgICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwotICAgIFlZU1RBQ0tfUkVMT0NBVEUg
KHl5c3MpOwotICAgIFlZU1RBQ0tfUkVMT0NBVEUgKHl5dnMpOwotCisgICAgICAgIHl5dHlwZV9p
bnQxNiAqeXlzczEgPSB5eXNzOworICAgICAgICB1bmlvbiB5eWFsbG9jICp5eXB0ciA9CisgICAg
ICAgICAgKHVuaW9uIHl5YWxsb2MgKikgWVlTVEFDS19BTExPQyAoWVlTVEFDS19CWVRFUyAoeXlz
dGFja3NpemUpKTsKKyAgICAgICAgaWYgKCEgeXlwdHIpCisgICAgICAgICAgZ290byB5eWV4aGF1
c3RlZGxhYjsKKyAgICAgICAgWVlTVEFDS19SRUxPQ0FURSAoeXlzc19hbGxvYywgeXlzcyk7Cisg
ICAgICAgIFlZU1RBQ0tfUkVMT0NBVEUgKHl5dnNfYWxsb2MsIHl5dnMpOwogIyAgdW5kZWYgWVlT
VEFDS19SRUxPQ0FURQotICAgIGlmICh5eXNzMSAhPSB5eXNzYSkKLSAgICAgIFlZU1RBQ0tfRlJF
RSAoeXlzczEpOworICAgICAgICBpZiAoeXlzczEgIT0geXlzc2EpCisgICAgICAgICAgWVlTVEFD
S19GUkVFICh5eXNzMSk7CiAgICAgICB9CiAjIGVuZGlmCiAjZW5kaWYgLyogbm8geXlvdmVyZmxv
dyAqLwpAQCAtMTMzMywxNiArMTIwOSwxOCBAQCBpbnQgeXluZXJyczsKICAgICAgIHl5c3NwID0g
eXlzcyArIHl5c2l6ZSAtIDE7CiAgICAgICB5eXZzcCA9IHl5dnMgKyB5eXNpemUgLSAxOwogCi0K
ICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YWNrIHNpemUgaW5jcmVhc2VkIHRvICVsdVxu
IiwKLSAgICAgICAgICAodW5zaWduZWQgbG9uZyBpbnQpIHl5c3RhY2tzaXplKSk7CisgICAgICAg
ICAgICAgICAgICAodW5zaWduZWQgbG9uZyBpbnQpIHl5c3RhY2tzaXplKSk7CiAKICAgICAgIGlm
ICh5eXNzICsgeXlzdGFja3NpemUgLSAxIDw9IHl5c3NwKQotICAgIFlZQUJPUlQ7CisgICAgICAg
IFlZQUJPUlQ7CiAgICAgfQogCiAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIkVudGVyaW5nIHN0YXRl
ICVkXG4iLCB5eXN0YXRlKSk7CiAKKyAgaWYgKHl5c3RhdGUgPT0gWVlGSU5BTCkKKyAgICBZWUFD
Q0VQVDsKKwogICBnb3RvIHl5YmFja3VwOwogCiAvKi0tLS0tLS0tLS0tLgpAQCAtMTM1MSwyMCAr
MTIyOSwyMCBAQCBpbnQgeXluZXJyczsKIHl5YmFja3VwOgogCiAgIC8qIERvIGFwcHJvcHJpYXRl
IHByb2Nlc3NpbmcgZ2l2ZW4gdGhlIGN1cnJlbnQgc3RhdGUuICBSZWFkIGEKLSAgICAgbG9vay1h
aGVhZCB0b2tlbiBpZiB3ZSBuZWVkIG9uZSBhbmQgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICov
CisgICAgIGxvb2thaGVhZCB0b2tlbiBpZiB3ZSBuZWVkIG9uZSBhbmQgZG9uJ3QgYWxyZWFkeSBo
YXZlIG9uZS4gICovCiAKLSAgLyogRmlyc3QgdHJ5IHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGhv
dXQgcmVmZXJlbmNlIHRvIGxvb2stYWhlYWQgdG9rZW4uICAqLworICAvKiBGaXJzdCB0cnkgdG8g
ZGVjaWRlIHdoYXQgdG8gZG8gd2l0aG91dCByZWZlcmVuY2UgdG8gbG9va2FoZWFkIHRva2VuLiAg
Ki8KICAgeXluID0geXlwYWN0W3l5c3RhdGVdOwotICBpZiAoeXluID09IFlZUEFDVF9OSU5GKQor
ICBpZiAoeXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQgKHl5bikpCiAgICAgZ290byB5eWRlZmF1bHQ7
CiAKLSAgLyogTm90IGtub3duID0+IGdldCBhIGxvb2stYWhlYWQgdG9rZW4gaWYgZG9uJ3QgYWxy
ZWFkeSBoYXZlIG9uZS4gICovCisgIC8qIE5vdCBrbm93biA9PiBnZXQgYSBsb29rYWhlYWQgdG9r
ZW4gaWYgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCiAKLSAgLyogWVlDSEFSIGlzIGVpdGhl
ciBZWUVNUFRZIG9yIFlZRU9GIG9yIGEgdmFsaWQgbG9vay1haGVhZCBzeW1ib2wuICAqLworICAv
KiBZWUNIQVIgaXMgZWl0aGVyIFlZRU1QVFkgb3IgWVlFT0Ygb3IgYSB2YWxpZCBsb29rYWhlYWQg
c3ltYm9sLiAgKi8KICAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZKQogICAgIHsKICAgICAgIFlZRFBS
SU5URiAoKHN0ZGVyciwgIlJlYWRpbmcgYSB0b2tlbjogIikpOwotICAgICAgeXljaGFyID0gWVlM
RVg7CisgICAgICB5eWNoYXIgPSB5eWxleCAoJnl5bHZhbCwgY29udGV4dCk7CiAgICAgfQogCiAg
IGlmICh5eWNoYXIgPD0gWVlFT0YpCkBAIC0xMzg2LDI5ICsxMjY0LDI3IEBAIHl5YmFja3VwOgog
ICB5eW4gPSB5eXRhYmxlW3l5bl07CiAgIGlmICh5eW4gPD0gMCkKICAgICB7Ci0gICAgICBpZiAo
eXluID09IDAgfHwgeXluID09IFlZVEFCTEVfTklORikKLSAgICBnb3RvIHl5ZXJybGFiOworICAg
ICAgaWYgKHl5dGFibGVfdmFsdWVfaXNfZXJyb3IgKHl5bikpCisgICAgICAgIGdvdG8geXllcnJs
YWI7CiAgICAgICB5eW4gPSAteXluOwogICAgICAgZ290byB5eXJlZHVjZTsKICAgICB9CiAKLSAg
aWYgKHl5biA9PSBZWUZJTkFMKQotICAgIFlZQUNDRVBUOwotCiAgIC8qIENvdW50IHRva2VucyBz
aGlmdGVkIHNpbmNlIGVycm9yOyBhZnRlciB0aHJlZSwgdHVybiBvZmYgZXJyb3IKICAgICAgc3Rh
dHVzLiAgKi8KICAgaWYgKHl5ZXJyc3RhdHVzKQogICAgIHl5ZXJyc3RhdHVzLS07CiAKLSAgLyog
U2hpZnQgdGhlIGxvb2stYWhlYWQgdG9rZW4uICAqLworICAvKiBTaGlmdCB0aGUgbG9va2FoZWFk
IHRva2VuLiAgKi8KICAgWVlfU1lNQk9MX1BSSU5UICgiU2hpZnRpbmciLCB5eXRva2VuLCAmeXls
dmFsLCAmeXlsbG9jKTsKIAotICAvKiBEaXNjYXJkIHRoZSBzaGlmdGVkIHRva2VuIHVubGVzcyBp
dCBpcyBlb2YuICAqLwotICBpZiAoeXljaGFyICE9IFlZRU9GKQotICAgIHl5Y2hhciA9IFlZRU1Q
VFk7CisgIC8qIERpc2NhcmQgdGhlIHNoaWZ0ZWQgdG9rZW4uICAqLworICB5eWNoYXIgPSBZWUVN
UFRZOwogCiAgIHl5c3RhdGUgPSB5eW47CisgIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVE
X0JFR0lOCiAgICorK3l5dnNwID0geXlsdmFsOworICBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFM
SVpFRF9FTkQKIAogICBnb3RvIHl5bmV3c3RhdGU7CiAKQEAgLTE0MzEsNyArMTMwNyw3IEBAIHl5
cmVkdWNlOgogICB5eWxlbiA9IHl5cjJbeXluXTsKIAogICAvKiBJZiBZWUxFTiBpcyBub256ZXJv
LCBpbXBsZW1lbnQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGFjdGlvbjoKLSAgICAgYCQkID0g
JDEnLgorICAgICAnJCQgPSAkMScuCiAKICAgICAgT3RoZXJ3aXNlLCB0aGUgZm9sbG93aW5nIGxp
bmUgc2V0cyBZWVZBTCB0byBnYXJiYWdlLgogICAgICBUaGlzIGJlaGF2aW9yIGlzIHVuZG9jdW1l
bnRlZCBhbmQgQmlzb24KQEAgLTE0NDcsMTk3ICsxMzIzLDIzMSBAQCB5eXJlZHVjZToKICAgICAg
ICAgY2FzZSAyOgogCiAgICAgewotICAgICAgICAqKGNvbnRleHQtPnJlc3VsdCkgPSBzdGF0aWNf
Y2FzdDxpbnQ+KCh5eXZzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICooY29udGV4dC0+cmVzdWx0
KSA9IHN0YXRpY19jYXN0PGludD4oKHl5dnNwWzBdKSk7CiAgICAgICAgIFlZQUNDRVBUOwotICAg
IDt9CisgICAgfQorCiAgICAgYnJlYWs7CiAKICAgY2FzZSA0OgogCiAgICAgewotICAgICAgICAo
eXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIHx8ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7
fQorICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgfHwgKHl5dnNwWzBdKTsKKyAgICB9CisK
ICAgICBicmVhazsKIAogICBjYXNlIDU6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAoeXl2
c3BbKDEpIC0gKDMpXSkgJiYgKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgICAgICh5
eXZhbCkgPSAoeXl2c3BbLTJdKSAmJiAoeXl2c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwog
CiAgIGNhc2UgNjoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyld
KSB8ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0gKHl5dnNw
Wy0yXSkgfCAoeXl2c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgNzoKIAog
ICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSBeICh5eXZzcFsoMykg
LSAoMyldKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgXiAoeXl2c3Bb
MF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgODoKIAogICAgIHsKLSAgICAgICAg
KHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAmICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7
fQorICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgJiAoeXl2c3BbMF0pOworICAgIH0KKwog
ICAgIGJyZWFrOwogCiAgIGNhc2UgOToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZz
cFsoMSkgLSAoMyldKSAhPSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICAgICAgKHl5
dmFsKSA9ICh5eXZzcFstMl0pICE9ICh5eXZzcFswXSk7CisgICAgfQorCiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxMDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyld
KSA9PSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsKSA9ICh5eXZz
cFstMl0pID09ICh5eXZzcFswXSk7CisgICAgfQorCiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMToK
IAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSA+PSAoeXl2c3Bb
KDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pID49ICh5
eXZzcFswXSk7CisgICAgfQorCiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjoKIAogICAgIHsKLSAg
ICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSA8PSAoeXl2c3BbKDMpIC0gKDMpXSk7
Ci0gICAgO30KKyAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pIDw9ICh5eXZzcFswXSk7Cisg
ICAgfQorCiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFs
KSA9ICh5eXZzcFsoMSkgLSAoMyldKSA+ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAg
ICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgPiAoeXl2c3BbMF0pOworICAgIH0KKwogICAgIGJy
ZWFrOwogCiAgIGNhc2UgMTQ6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEp
IC0gKDMpXSkgPCAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsKSA9
ICh5eXZzcFstMl0pIDwgKHl5dnNwWzBdKTsKKyAgICB9CisKICAgICBicmVhazsKIAogICBjYXNl
IDE1OgogCiAgICAgewotICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pID4+ICh5
eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkg
Pj4gKHl5dnNwWzBdKTsKKyAgICB9CisKICAgICBicmVhazsKIAogICBjYXNlIDE2OgogCiAgICAg
ewotICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIDw8ICh5eXZzcFsoMykgLSAo
MyldKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgPDwgKHl5dnNwWzBd
KTsKKyAgICB9CisKICAgICBicmVhazsKIAogICBjYXNlIDE3OgogCiAgICAgewotICAgICAgICAo
eXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIC0gKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9
CisgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbLTJdKSAtICh5eXZzcFswXSk7CisgICAgfQorCiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxODoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZz
cFsoMSkgLSAoMyldKSArICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgICAgICAoeXl2
YWwpID0gKHl5dnNwWy0yXSkgKyAoeXl2c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAg
IGNhc2UgMTk6CiAKICAgICB7Ci0gICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDMpXSkgPT0gMCkg
eworICAgICAgICBpZiAoKHl5dnNwWzBdKSA9PSAwKSB7CiAgICAgICAgICAgICBzdGQ6Om9zdHJp
bmdzdHJlYW0gc3RyZWFtOwotICAgICAgICAgICAgc3RyZWFtIDw8ICh5eXZzcFsoMSkgLSAoMyld
KSA8PCAiICUgIiA8PCAoeXl2c3BbKDMpIC0gKDMpXSk7CisgICAgICAgICAgICBzdHJlYW0gPDwg
KHl5dnNwWy0yXSkgPDwgIiAlICIgPDwgKHl5dnNwWzBdKTsKICAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nIHRleHQgPSBzdHJlYW0uc3RyKCk7CiAgICAgICAgICAgICBjb250ZXh0LT5kaWFnbm9zdGlj
cy0+cmVwb3J0KHBwOjpEaWFnbm9zdGljczo6RElWSVNJT05fQllfWkVSTywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+dG9rZW4tPmxvY2F0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LmNfc3RyKCkpOwog
ICAgICAgICAgICAgWVlBQk9SVDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICh5eXZh
bCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgJSAoeXl2c3BbKDMpIC0gKDMpXSk7CisgICAgICAgICAg
ICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgJSAoeXl2c3BbMF0pOwogICAgICAgICB9Ci0gICAgO30K
KyAgICB9CisKICAgICBicmVhazsKIAogICBjYXNlIDIwOgogCiAgICAgewotICAgICAgICBpZiAo
KHl5dnNwWygzKSAtICgzKV0pID09IDApIHsKKyAgICAgICAgaWYgKCh5eXZzcFswXSkgPT0gMCkg
ewogICAgICAgICAgICAgc3RkOjpvc3RyaW5nc3RyZWFtIHN0cmVhbTsKLSAgICAgICAgICAgIHN0
cmVhbSA8PCAoeXl2c3BbKDEpIC0gKDMpXSkgPDwgIiAvICIgPDwgKHl5dnNwWygzKSAtICgzKV0p
OworICAgICAgICAgICAgc3RyZWFtIDw8ICh5eXZzcFstMl0pIDw8ICIgLyAiIDw8ICh5eXZzcFsw
XSk7CiAgICAgICAgICAgICBzdGQ6OnN0cmluZyB0ZXh0ID0gc3RyZWFtLnN0cigpOwogICAgICAg
ICAgICAgY29udGV4dC0+ZGlhZ25vc3RpY3MtPnJlcG9ydChwcDo6RGlhZ25vc3RpY3M6OkRJVklT
SU9OX0JZX1pFUk8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPnRva2VuLT5sb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGV4dC5jX3N0cigpKTsKICAgICAgICAgICAgIFlZQUJPUlQ7CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIC8gKHl5dnNw
WygzKSAtICgzKV0pOworICAgICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pIC8gKHl5dnNw
WzBdKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQorCiAgICAgYnJlYWs7CiAKICAgY2FzZSAy
MToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAqICh5eXZz
cFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgKiAo
eXl2c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgMjI6CiAKICAgICB7Ci0g
ICAgICAgICh5eXZhbCkgPSAhICh5eXZzcFsoMikgLSAoMildKTsKLSAgICA7fQorICAgICAgICAo
eXl2YWwpID0gISAoeXl2c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgMjM6
CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSB+ICh5eXZzcFsoMikgLSAoMildKTsKLSAgICA7
fQorICAgICAgICAoeXl2YWwpID0gfiAoeXl2c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwog
CiAgIGNhc2UgMjQ6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAtICh5eXZzcFsoMikgLSAo
MildKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0gLSAoeXl2c3BbMF0pOworICAgIH0KKwog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMjU6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSArICh5
eXZzcFsoMikgLSAoMildKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0gKyAoeXl2c3BbMF0p
OworICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgMjY6CiAKICAgICB7Ci0gICAgICAgICh5
eXZhbCkgPSAoeXl2c3BbKDIpIC0gKDMpXSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsKSA9ICh5
eXZzcFstMV0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAKLS8qIExpbmUgMTI2NyBvZiB5YWNj
LmMuICAqLwogCiAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICB9CisgIC8qIFVzZXIgc2VtYW50
aWMgYWN0aW9ucyBzb21ldGltZXMgYWx0ZXIgeXljaGFyLCBhbmQgdGhhdCByZXF1aXJlcworICAg
ICB0aGF0IHl5dG9rZW4gYmUgdXBkYXRlZCB3aXRoIHRoZSBuZXcgdHJhbnNsYXRpb24uICBXZSB0
YWtlIHRoZQorICAgICBhcHByb2FjaCBvZiB0cmFuc2xhdGluZyBpbW1lZGlhdGVseSBiZWZvcmUg
ZXZlcnkgdXNlIG9mIHl5dG9rZW4uCisgICAgIE9uZSBhbHRlcm5hdGl2ZSBpcyB0cmFuc2xhdGlu
ZyBoZXJlIGFmdGVyIGV2ZXJ5IHNlbWFudGljIGFjdGlvbiwKKyAgICAgYnV0IHRoYXQgdHJhbnNs
YXRpb24gd291bGQgYmUgbWlzc2VkIGlmIHRoZSBzZW1hbnRpYyBhY3Rpb24gaW52b2tlcworICAg
ICBZWUFCT1JULCBZWUFDQ0VQVCwgb3IgWVlFUlJPUiBpbW1lZGlhdGVseSBhZnRlciBhbHRlcmlu
ZyB5eWNoYXIgb3IKKyAgICAgaWYgaXQgaW52b2tlcyBZWUJBQ0tVUC4gIEluIHRoZSBjYXNlIG9m
IFlZQUJPUlQgb3IgWVlBQ0NFUFQsIGFuCisgICAgIGluY29ycmVjdCBkZXN0cnVjdG9yIG1pZ2h0
IHRoZW4gYmUgaW52b2tlZCBpbW1lZGlhdGVseS4gIEluIHRoZQorICAgICBjYXNlIG9mIFlZRVJS
T1Igb3IgWVlCQUNLVVAsIHN1YnNlcXVlbnQgcGFyc2VyIGFjdGlvbnMgbWlnaHQgbGVhZAorICAg
ICB0byBhbiBpbmNvcnJlY3QgZGVzdHJ1Y3RvciBjYWxsIG9yIHZlcmJvc2Ugc3ludGF4IGVycm9y
IG1lc3NhZ2UKKyAgICAgYmVmb3JlIHRoZSBsb29rYWhlYWQgaXMgdHJhbnNsYXRlZC4gICovCiAg
IFlZX1NZTUJPTF9QUklOVCAoIi0+ICQkID0iLCB5eXIxW3l5bl0sICZ5eXZhbCwgJnl5bG9jKTsK
IAogICBZWVBPUFNUQUNLICh5eWxlbik7CkBAIC0xNjQ2LDggKzE1NTYsNyBAQCB5eXJlZHVjZToK
IAogICAqKyt5eXZzcCA9IHl5dmFsOwogCi0KLSAgLyogTm93IGBzaGlmdCcgdGhlIHJlc3VsdCBv
ZiB0aGUgcmVkdWN0aW9uLiAgRGV0ZXJtaW5lIHdoYXQgc3RhdGUKKyAgLyogTm93ICdzaGlmdCcg
dGhlIHJlc3VsdCBvZiB0aGUgcmVkdWN0aW9uLiAgRGV0ZXJtaW5lIHdoYXQgc3RhdGUKICAgICAg
dGhhdCBnb2VzIHRvLCBiYXNlZCBvbiB0aGUgc3RhdGUgd2UgcG9wcGVkIGJhY2sgdG8gYW5kIHRo
ZSBydWxlCiAgICAgIG51bWJlciByZWR1Y2VkIGJ5LiAgKi8KIApAQCAtMTY2MiwxMCArMTU3MSwx
NCBAQCB5eXJlZHVjZToKICAgZ290byB5eW5ld3N0YXRlOwogCiAKLS8qLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotfCB5eWVycmxhYiAtLSBoZXJlIG9uIGRldGVjdGluZyBl
cnJvciB8Ci1gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5ZXJybGFiIC0tIGhlcmUgb24g
ZGV0ZWN0aW5nIGVycm9yLiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKi8KIHl5ZXJybGFiOgorICAvKiBNYWtlIHN1cmUgd2UgaGF2ZSBsYXRlc3QgbG9va2FoZWFk
IHRyYW5zbGF0aW9uLiAgU2VlIGNvbW1lbnRzIGF0CisgICAgIHVzZXIgc2VtYW50aWMgYWN0aW9u
cyBmb3Igd2h5IHRoaXMgaXMgbmVjZXNzYXJ5LiAgKi8KKyAgeXl0b2tlbiA9IHl5Y2hhciA9PSBZ
WUVNUFRZID8gWVlFTVBUWSA6IFlZVFJBTlNMQVRFICh5eWNoYXIpOworCiAgIC8qIElmIG5vdCBh
bHJlYWR5IHJlY292ZXJpbmcgZnJvbSBhbiBlcnJvciwgcmVwb3J0IHRoaXMgZXJyb3IuICAqLwog
ICBpZiAoIXl5ZXJyc3RhdHVzKQogICAgIHsKQEAgLTE2NzMsMzcgKzE1ODYsMzYgQEAgeXllcnJs
YWI6CiAjaWYgISBZWUVSUk9SX1ZFUkJPU0UKICAgICAgIHl5ZXJyb3IgKGNvbnRleHQsIFlZXygi
c3ludGF4IGVycm9yIikpOwogI2Vsc2UKKyMgZGVmaW5lIFlZU1lOVEFYX0VSUk9SIHl5c3ludGF4
X2Vycm9yICgmeXltc2dfYWxsb2MsICZ5eW1zZywgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHl5c3NwLCB5eXRva2VuKQogICAgICAgewotICAgIFlZU0laRV9UIHl5
c2l6ZSA9IHl5c3ludGF4X2Vycm9yICgwLCB5eXN0YXRlLCB5eWNoYXIpOwotICAgIGlmICh5eW1z
Z19hbGxvYyA8IHl5c2l6ZSAmJiB5eW1zZ19hbGxvYyA8IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSkK
LSAgICAgIHsKLSAgICAgICAgWVlTSVpFX1QgeXlhbGxvYyA9IDIgKiB5eXNpemU7Ci0gICAgICAg
IGlmICghICh5eXNpemUgPD0geXlhbGxvYyAmJiB5eWFsbG9jIDw9IFlZU1RBQ0tfQUxMT0NfTUFY
SU1VTSkpCi0gICAgICAgICAgeXlhbGxvYyA9IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTTsKLSAgICAg
ICAgaWYgKHl5bXNnICE9IHl5bXNnYnVmKQotICAgICAgICAgIFlZU1RBQ0tfRlJFRSAoeXltc2cp
OwotICAgICAgICB5eW1zZyA9IChjaGFyICopIFlZU1RBQ0tfQUxMT0MgKHl5YWxsb2MpOwotICAg
ICAgICBpZiAoeXltc2cpCi0gICAgICAgICAgeXltc2dfYWxsb2MgPSB5eWFsbG9jOwotICAgICAg
ICBlbHNlCisgICAgICAgIGNoYXIgY29uc3QgKnl5bXNncCA9IFlZXygic3ludGF4IGVycm9yIik7
CisgICAgICAgIGludCB5eXN5bnRheF9lcnJvcl9zdGF0dXM7CisgICAgICAgIHl5c3ludGF4X2Vy
cm9yX3N0YXR1cyA9IFlZU1lOVEFYX0VSUk9SOworICAgICAgICBpZiAoeXlzeW50YXhfZXJyb3Jf
c3RhdHVzID09IDApCisgICAgICAgICAgeXltc2dwID0geXltc2c7CisgICAgICAgIGVsc2UgaWYg
KHl5c3ludGF4X2Vycm9yX3N0YXR1cyA9PSAxKQogICAgICAgICAgIHsKLSAgICAgICAgeXltc2cg
PSB5eW1zZ2J1ZjsKLSAgICAgICAgeXltc2dfYWxsb2MgPSBzaXplb2YgeXltc2didWY7CisgICAg
ICAgICAgICBpZiAoeXltc2cgIT0geXltc2didWYpCisgICAgICAgICAgICAgIFlZU1RBQ0tfRlJF
RSAoeXltc2cpOworICAgICAgICAgICAgeXltc2cgPSAoY2hhciAqKSBZWVNUQUNLX0FMTE9DICh5
eW1zZ19hbGxvYyk7CisgICAgICAgICAgICBpZiAoIXl5bXNnKQorICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgeXltc2cgPSB5eW1zZ2J1ZjsKKyAgICAgICAgICAgICAgICB5eW1zZ19h
bGxvYyA9IHNpemVvZiB5eW1zZ2J1ZjsKKyAgICAgICAgICAgICAgICB5eXN5bnRheF9lcnJvcl9z
dGF0dXMgPSAyOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICB5eXN5bnRheF9lcnJvcl9zdGF0dXMgPSBZWVNZTlRBWF9F
UlJPUjsKKyAgICAgICAgICAgICAgICB5eW1zZ3AgPSB5eW1zZzsKKyAgICAgICAgICAgICAgfQog
ICAgICAgICAgIH0KLSAgICAgIH0KLQotICAgIGlmICgwIDwgeXlzaXplICYmIHl5c2l6ZSA8PSB5
eW1zZ19hbGxvYykKLSAgICAgIHsKLSAgICAgICAgKHZvaWQpIHl5c3ludGF4X2Vycm9yICh5eW1z
ZywgeXlzdGF0ZSwgeXljaGFyKTsKLSAgICAgICAgeXllcnJvciAoY29udGV4dCwgeXltc2cpOwot
ICAgICAgfQotICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgeXllcnJvciAoY29udGV4dCwgWVlf
KCJzeW50YXggZXJyb3IiKSk7Ci0gICAgICAgIGlmICh5eXNpemUgIT0gMCkKKyAgICAgICAgeXll
cnJvciAoY29udGV4dCwgeXltc2dwKTsKKyAgICAgICAgaWYgKHl5c3ludGF4X2Vycm9yX3N0YXR1
cyA9PSAyKQogICAgICAgICAgIGdvdG8geXlleGhhdXN0ZWRsYWI7CiAgICAgICB9Ci0gICAgICB9
CisjIHVuZGVmIFlZU1lOVEFYX0VSUk9SCiAjZW5kaWYKICAgICB9CiAKQEAgLTE3MTEsMjQgKzE2
MjMsMjQgQEAgeXllcnJsYWI6CiAKICAgaWYgKHl5ZXJyc3RhdHVzID09IDMpCiAgICAgewotICAg
ICAgLyogSWYganVzdCB0cmllZCBhbmQgZmFpbGVkIHRvIHJldXNlIGxvb2stYWhlYWQgdG9rZW4g
YWZ0ZXIgYW4KLSAgICAgZXJyb3IsIGRpc2NhcmQgaXQuICAqLworICAgICAgLyogSWYganVzdCB0
cmllZCBhbmQgZmFpbGVkIHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRlciBhbgorICAgICAg
ICAgZXJyb3IsIGRpc2NhcmQgaXQuICAqLwogCiAgICAgICBpZiAoeXljaGFyIDw9IFlZRU9GKQot
ICAgIHsKLSAgICAgIC8qIFJldHVybiBmYWlsdXJlIGlmIGF0IGVuZCBvZiBpbnB1dC4gICovCi0g
ICAgICBpZiAoeXljaGFyID09IFlZRU9GKQotICAgICAgICBZWUFCT1JUOwotICAgIH0KKyAgICAg
ICAgeworICAgICAgICAgIC8qIFJldHVybiBmYWlsdXJlIGlmIGF0IGVuZCBvZiBpbnB1dC4gICov
CisgICAgICAgICAgaWYgKHl5Y2hhciA9PSBZWUVPRikKKyAgICAgICAgICAgIFlZQUJPUlQ7Cisg
ICAgICAgIH0KICAgICAgIGVsc2UKLSAgICB7Ci0gICAgICB5eWRlc3RydWN0ICgiRXJyb3I6IGRp
c2NhcmRpbmciLAotICAgICAgICAgICAgICB5eXRva2VuLCAmeXlsdmFsLCBjb250ZXh0KTsKLSAg
ICAgIHl5Y2hhciA9IFlZRU1QVFk7Ci0gICAgfQorICAgICAgICB7CisgICAgICAgICAgeXlkZXN0
cnVjdCAoIkVycm9yOiBkaXNjYXJkaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICB5eXRva2Vu
LCAmeXlsdmFsLCBjb250ZXh0KTsKKyAgICAgICAgICB5eWNoYXIgPSBZWUVNUFRZOworICAgICAg
ICB9CiAgICAgfQogCi0gIC8qIEVsc2Ugd2lsbCB0cnkgdG8gcmV1c2UgbG9vay1haGVhZCB0b2tl
biBhZnRlciBzaGlmdGluZyB0aGUgZXJyb3IKKyAgLyogRWxzZSB3aWxsIHRyeSB0byByZXVzZSBs
b29rYWhlYWQgdG9rZW4gYWZ0ZXIgc2hpZnRpbmcgdGhlIGVycm9yCiAgICAgIHRva2VuLiAgKi8K
ICAgZ290byB5eWVycmxhYjE7CiAKQEAgLTE3NDQsNyArMTY1Niw3IEBAIHl5ZXJyb3JsYWI6CiAg
IGlmICgvKkNPTlNUQ09ORCovIDApCiAgICAgIGdvdG8geXllcnJvcmxhYjsKIAotICAvKiBEbyBu
b3QgcmVjbGFpbSB0aGUgc3ltYm9scyBvZiB0aGUgcnVsZSB3aGljaCBhY3Rpb24gdHJpZ2dlcmVk
CisgIC8qIERvIG5vdCByZWNsYWltIHRoZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdob3NlIGFjdGlv
biB0cmlnZ2VyZWQKICAgICAgdGhpcyBZWUVSUk9SLiAgKi8KICAgWVlQT1BTVEFDSyAoeXlsZW4p
OwogICB5eWxlbiA9IDA7CkBAIC0xNzU3LDM4ICsxNjY5LDM3IEBAIHl5ZXJyb3JsYWI6CiB8IHl5
ZXJybGFiMSAtLSBjb21tb24gY29kZSBmb3IgYm90aCBzeW50YXggZXJyb3IgYW5kIFlZRVJST1Iu
ICB8CiBgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSovCiB5eWVycmxhYjE6Ci0gIHl5ZXJyc3RhdHVzID0gMzsgICAgLyogRWFjaCBy
ZWFsIHRva2VuIHNoaWZ0ZWQgZGVjcmVtZW50cyB0aGlzLiAgKi8KKyAgeXllcnJzdGF0dXMgPSAz
OyAgICAgIC8qIEVhY2ggcmVhbCB0b2tlbiBzaGlmdGVkIGRlY3JlbWVudHMgdGhpcy4gICovCiAK
ICAgZm9yICg7OykKICAgICB7CiAgICAgICB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07Ci0gICAgICBp
ZiAoeXluICE9IFlZUEFDVF9OSU5GKQotICAgIHsKLSAgICAgIHl5biArPSBZWVRFUlJPUjsKLSAg
ICAgIGlmICgwIDw9IHl5biAmJiB5eW4gPD0gWVlMQVNUICYmIHl5Y2hlY2tbeXluXSA9PSBZWVRF
UlJPUikKKyAgICAgIGlmICgheXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQgKHl5bikpCiAgICAgICAg
IHsKLSAgICAgICAgICB5eW4gPSB5eXRhYmxlW3l5bl07Ci0gICAgICAgICAgaWYgKDAgPCB5eW4p
Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgIHl5biArPSBZWVRFUlJPUjsKKyAgICAgICAgICBp
ZiAoMCA8PSB5eW4gJiYgeXluIDw9IFlZTEFTVCAmJiB5eWNoZWNrW3l5bl0gPT0gWVlURVJST1Ip
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHl5biA9IHl5dGFibGVbeXluXTsKKyAgICAg
ICAgICAgICAgaWYgKDAgPCB5eW4pCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLSAgICB9CiAKICAgICAgIC8qIFBvcCB0aGUgY3VycmVudCBzdGF0ZSBi
ZWNhdXNlIGl0IGNhbm5vdCBoYW5kbGUgdGhlIGVycm9yIHRva2VuLiAgKi8KICAgICAgIGlmICh5
eXNzcCA9PSB5eXNzKQotICAgIFlZQUJPUlQ7CisgICAgICAgIFlZQUJPUlQ7CiAKIAogICAgICAg
eXlkZXN0cnVjdCAoIkVycm9yOiBwb3BwaW5nIiwKLSAgICAgICAgICB5eXN0b3NbeXlzdGF0ZV0s
IHl5dnNwLCBjb250ZXh0KTsKKyAgICAgICAgICAgICAgICAgIHl5c3Rvc1t5eXN0YXRlXSwgeXl2
c3AsIGNvbnRleHQpOwogICAgICAgWVlQT1BTVEFDSyAoMSk7CiAgICAgICB5eXN0YXRlID0gKnl5
c3NwOwogICAgICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKICAgICB9CiAKLSAgaWYg
KHl5biA9PSBZWUZJTkFMKQotICAgIFlZQUNDRVBUOwotCisgIFlZX0lHTk9SRV9NQVlCRV9VTklO
SVRJQUxJWkVEX0JFR0lOCiAgICorK3l5dnNwID0geXlsdmFsOworICBZWV9JR05PUkVfTUFZQkVf
VU5JTklUSUFMSVpFRF9FTkQKIAogCiAgIC8qIFNoaWZ0IHRoZSBlcnJvciB0b2tlbi4gICovCkBA
IC0xODEyLDcgKzE3MjMsNyBAQCB5eWFib3J0bGFiOgogICB5eXJlc3VsdCA9IDE7CiAgIGdvdG8g
eXlyZXR1cm47CiAKLSNpZm5kZWYgeXlvdmVyZmxvdworI2lmICFkZWZpbmVkIHl5b3ZlcmZsb3cg
fHwgWVlFUlJPUl9WRVJCT1NFCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0uCiB8IHl5ZXhoYXVzdGVkbGFiIC0tIG1lbW9yeSBleGhhdXN0aW9uIGNv
bWVzIGhlcmUuICB8CiBgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSovCkBAIC0xODIzLDE3ICsxNzM0LDIyIEBAIHl5ZXhoYXVzdGVkbGFiOgogI2VuZGlm
CiAKIHl5cmV0dXJuOgotICBpZiAoeXljaGFyICE9IFlZRU9GICYmIHl5Y2hhciAhPSBZWUVNUFRZ
KQotICAgICB5eWRlc3RydWN0ICgiQ2xlYW51cDogZGlzY2FyZGluZyBsb29rYWhlYWQiLAotICAg
ICAgICAgeXl0b2tlbiwgJnl5bHZhbCwgY29udGV4dCk7Ci0gIC8qIERvIG5vdCByZWNsYWltIHRo
ZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdoaWNoIGFjdGlvbiB0cmlnZ2VyZWQKKyAgaWYgKHl5Y2hh
ciAhPSBZWUVNUFRZKQorICAgIHsKKyAgICAgIC8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGxhdGVzdCBs
b29rYWhlYWQgdHJhbnNsYXRpb24uICBTZWUgY29tbWVudHMgYXQKKyAgICAgICAgIHVzZXIgc2Vt
YW50aWMgYWN0aW9ucyBmb3Igd2h5IHRoaXMgaXMgbmVjZXNzYXJ5LiAgKi8KKyAgICAgIHl5dG9r
ZW4gPSBZWVRSQU5TTEFURSAoeXljaGFyKTsKKyAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBk
aXNjYXJkaW5nIGxvb2thaGVhZCIsCisgICAgICAgICAgICAgICAgICB5eXRva2VuLCAmeXlsdmFs
LCBjb250ZXh0KTsKKyAgICB9CisgIC8qIERvIG5vdCByZWNsYWltIHRoZSBzeW1ib2xzIG9mIHRo
ZSBydWxlIHdob3NlIGFjdGlvbiB0cmlnZ2VyZWQKICAgICAgdGhpcyBZWUFCT1JUIG9yIFlZQUND
RVBULiAgKi8KICAgWVlQT1BTVEFDSyAoeXlsZW4pOwogICBZWV9TVEFDS19QUklOVCAoeXlzcywg
eXlzc3ApOwogICB3aGlsZSAoeXlzc3AgIT0geXlzcykKICAgICB7CiAgICAgICB5eWRlc3RydWN0
ICgiQ2xlYW51cDogcG9wcGluZyIsCi0gICAgICAgICAgeXlzdG9zWyp5eXNzcF0sIHl5dnNwLCBj
b250ZXh0KTsKKyAgICAgICAgICAgICAgICAgIHl5c3Rvc1sqeXlzc3BdLCB5eXZzcCwgY29udGV4
dCk7CiAgICAgICBZWVBPUFNUQUNLICgxKTsKICAgICB9CiAjaWZuZGVmIHl5b3ZlcmZsb3cKQEAg
LTE4NDQsMTQgKzE3NjAsMTEgQEAgeXlyZXR1cm46CiAgIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikK
ICAgICBZWVNUQUNLX0ZSRUUgKHl5bXNnKTsKICNlbmRpZgotICAvKiBNYWtlIHN1cmUgWVlJRCBp
cyB1c2VkLiAgKi8KLSAgcmV0dXJuIFlZSUQgKHl5cmVzdWx0KTsKKyAgcmV0dXJuIHl5cmVzdWx0
OwogfQogCiAKIAotCi0KIGludCB5eWxleChZWVNUWVBFKiBsdmFscCwgQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBpbnQgdHlwZSA9IDA7CkBAIC0xOTQ2LDQgKzE4NTksMyBAQCBib29sIEV4cHJl
c3Npb25QYXJzZXI6OnBhcnNlKFRva2VuKiB0b2tlbiwgaW50KiByZXN1bHQpCiB9CiAKIH0gIC8v
IG5hbWVzcGFjZSBwcAotCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>