<?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>39135</bug_id>
          
          <creation_ts>2010-05-14 14:01:57 -0700</creation_ts>
          <short_desc>Rename GenericWorkerTask.h to CrossThreadTask.h and move it to dom directory</short_desc>
          <delta_ts>2010-05-20 11:00:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Jian Li">jianli</reporter>
          <assigned_to name="Jian Li">jianli</assigned_to>
          <cc>ap</cc>
    
    <cc>dimich</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>225993</commentid>
    <comment_count>0</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-05-14 14:01:57 -0700</bug_when>
    <thetext>This is the second patch to reposition GenericWorkerTask so that it can be used by more components.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225994</commentid>
    <comment_count>1</comment_count>
      <attachid>56108</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-05-14 14:03:46 -0700</bug_when>
    <thetext>Created attachment 56108
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226010</commentid>
    <comment_count>2</comment_count>
      <attachid>56108</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-05-14 14:49:42 -0700</bug_when>
    <thetext>Comment on attachment 56108
Proposed Patch

It looks good to me except for the fact that WebCore/WebCore.xcodeproj/project.pbxproj isn&apos;t fixed up completely. For example, the files haven&apos;t been moved to the correct new directory.

I think I know how to fix this by hand (look for &quot;children =&quot; in that file), but in general this points out to me that the pbxproj file is tricky to edit by hand. I&apos;d suggest that it would be better to open this file in xcode and delete the file and re-add it (if possible).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226108</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-05-14 19:43:31 -0700</bug_when>
    <thetext>CrossThreadCopier is not something I&apos;d expect to see in &quot;GenericTask&quot;. Is that something you plan to change next?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227596</commentid>
    <comment_count>4</comment_count>
      <attachid>56436</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-05-18 18:10:14 -0700</bug_when>
    <thetext>Created attachment 56436
Proposed Patch

Fixed WebCore.xcodeproj/project.pbxproj. Also changed to rename to CrossThreadTask.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228468</commentid>
    <comment_count>5</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-05-20 11:00:02 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/59849.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56108</attachid>
            <date>2010-05-14 14:03:46 -0700</date>
            <delta_ts>2010-05-18 18:10:14 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>39135</filename>
            <type>text/plain</type>
            <size>56388</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmYyNGVjOS4uODAwMzNhYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0wNS0xNCAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVuYW1lIEdlbmVyaWNXb3JrZXJUYXNrLmggdG8gR2VuZXJpY1Rhc2suaCBh
bmQgbW92ZSBpdCB0byBkb20gZGlyZWN0b3J5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkxMzUKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogZG9tL0dlbmVyaWNUYXNrLmg6IFJlbmFtZWQgZnJvbSBXZWJDb3JlL3dvcmtlcnMv
R2VuZXJpY1dvcmtlclRhc2suaC4KKyAgICAgICAgKiBodG1sL0ZpbGVTdHJlYW1Qcm94eS5jcHA6
CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAq
IHdlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAg
ICAqIHdvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmNwcDoKKwogMjAxMC0wNS0xNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAg
PGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpp
bmRleCBhNmI2YzA5Li41ODUyMzgwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTc5NCw2ICs3OTQsNyBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2UuaCBcCiAJV2ViQ29yZS9k
b20vRXhjZXB0aW9uQ29kZS5jcHAgXAogCVdlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuaCBcCisJ
V2ViQ29yZS9kb20vR2VuZXJpY1Rhc2suaCBcCiAJV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmNw
cCBcCiAJV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmggXAogCVdlYkNvcmUvZG9tL0tleWJvYXJk
RXZlbnQuY3BwIFwKQEAgLTI3MzgsNyArMjczOSw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
V2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaCBcCiAJV2ViQ29yZS93b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAgXAogCVdlYkNvcmUvd29ya2Vycy9EZWRpY2F0
ZWRXb3JrZXJUaHJlYWQuaCBcCi0JV2ViQ29yZS93b3JrZXJzL0dlbmVyaWNXb3JrZXJUYXNrLmgg
XAogCVdlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwIFwKIAlXZWJDb3JlL3dvcmtlcnMvV29ya2Vy
LmggXAogCVdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDk2MDhhYjIu
LjU0YmU5YmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0xMTI2LDYgKzExMjYsNyBAQAogICAgICAgICAgICAgJ2RvbS9FeGNl
cHRpb25CYXNlLmgnLAogICAgICAgICAgICAgJ2RvbS9FeGNlcHRpb25Db2RlLmNwcCcsCiAgICAg
ICAgICAgICAnZG9tL0V4Y2VwdGlvbkNvZGUuaCcsCisgICAgICAgICAgICAnZG9tL0dlbmVyaWNU
YXNrLmgnLAogICAgICAgICAgICAgJ2RvbS9JbnB1dEVsZW1lbnQuY3BwJywKICAgICAgICAgICAg
ICdkb20vSW5wdXRFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9LZXlib2FyZEV2ZW50LmNw
cCcsCkBAIC0zNzI2LDcgKzM3MjcsNiBAQAogICAgICAgICAgICAgJ3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyQ29udGV4dC5oJywKICAgICAgICAgICAgICd3b3JrZXJzL0RlZGljYXRlZFdvcmtlclRo
cmVhZC5jcHAnLAogICAgICAgICAgICAgJ3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgn
LAotICAgICAgICAgICAgJ3dvcmtlcnMvR2VuZXJpY1dvcmtlclRhc2suaCcsCiAgICAgICAgICAg
ICAnd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwJywKICAgICAgICAgICAgICd3b3JrZXJzL1NoYXJl
ZFdvcmtlci5oJywKICAgICAgICAgICAgICd3b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3Bw
JywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDY1Y2VhZDIuLjlhMDUy
NTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjk0NzMsNiArMjk0
NzMsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cZG9tXEdlbmVyaWNUYXNrLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cSW5wdXRFbGVtZW50LmNwcCINCiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCkBAIC0yOTk2OSwxMCArMjk5NzMsNiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlx3b3JrZXJzXEdlbmVyaWNXb3JrZXJUYXNr
LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIu
Llx3b3JrZXJzXFNoYXJlZFdvcmtlci5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyZWZjODdjLi5kYjI0YmNh
IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjQyLDcg
KzY0Miw3IEBACiAJCTJFM0JDMTA4MTE3RDQ3OTgwMEI5NDA5QSAvKiBET01GaWxlRXJyb3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFM0JDMTA2MTE3
RDQ3OTgwMEI5NDA5QSAvKiBET01GaWxlRXJyb3IuaCAqLzsgfTsKIAkJMkUzQkMxMDkxMTdENDc5
ODAwQjk0MDlBIC8qIERPTUZpbGVFcnJvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJFM0JDMTA3MTE3RDQ3OTgwMEI5NDA5QSAvKiBET01GaWxlRXJy
b3IubW0gKi87IH07CiAJCTJFM0JDMTBCMTE3RDQ3QzgwMEI5NDA5QSAvKiBET01GaWxlRXJyb3JJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkUzQkMxMEExMTdENDdDODAwQjk0MDlBIC8qIERPTUZpbGVFcnJvckludGVybmFsLmggKi87IH07
Ci0JCTJFNDM0NjQ0MEY1NDZBODIwMEIwRjFCQSAvKiBHZW5lcmljV29ya2VyVGFzay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzIwRjU0NkE4
MjAwQjBGMUJBIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggKi87IH07CisJCTJFNDM0NjQ0MEY1NDZB
ODIwMEIwRjFCQSAvKiBHZW5lcmljVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzIwRjU0NkE4MjAwQjBGMUJBIC8qIEdlbmVyaWNUYXNr
LmggKi87IH07CiAJCTJFNDM0NjQ1MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzMwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAgKi87IH07CiAJCTJFNDM0NjQ2MEY1NDZBODIwMEIwRjFC
QSAvKiBXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFNDM0NjM0MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCAqLzsgfTsKIAkJMkU0MzQ2
NDgwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzYwRjU0NkE4MjAwQjBGMUJBIC8q
IFdvcmtlckNvbnRleHQuY3BwICovOyB9OwpAQCAtNjEzNCw3ICs2MTM0LDcgQEAKIAkJMkUzQkMx
MDYxMTdENDc5ODAwQjk0MDlBIC8qIERPTUZpbGVFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01GaWxlRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkUzQkMxMDcxMTdENDc5ODAwQjk0MDlBIC8qIERPTUZpbGVFcnJvci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUZpbGVFcnJvci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUzQkMxMEExMTdENDdDODAwQjk0MDlBIC8qIERPTUZpbGVF
cnJvckludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUZpbGVF
cnJvckludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJFNDM0NjMyMEY1
NDZBODIwMEIwRjFCQSAvKiBHZW5lcmljV29ya2VyVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBHZW5lcmljV29ya2VyVGFzay5oOyBwYXRoID0gd29ya2Vycy9HZW5lcmlj
V29ya2VyVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTQzNDYzMjBGNTQ2
QTgyMDBCMEYxQkEgLyogR2VuZXJpY1Rhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR2VuZXJpY1Rhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU0MzQ2
MzMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBXb3JrZXIuY3BwOyBwYXRoID0gd29ya2Vycy9Xb3JrZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzNDBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdvcmtlci5oOyBwYXRoID0g
d29ya2Vycy9Xb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU0MzQ2MzUw
RjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV29y
a2VyLmlkbDsgcGF0aCA9IHdvcmtlcnMvV29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTExMTUyLDcgKzExMTUyLDYgQEAKIAkJCQk0MUEzRDU4RDEwMUMxNTJEMDAzMTZE
MDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmggKi8sCiAJCQkJNDE2N0VCRjMxMDI5NjJCQTAw
M0QyNTJBIC8qIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCAqLywKIAkJCQk0MTY3
RUJGNDEwMjk2MkJBMDAzRDI1MkEgLyogRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCAq
LywKLQkJCQkyRTQzNDYzMjBGNTQ2QTgyMDBCMEYxQkEgLyogR2VuZXJpY1dvcmtlclRhc2suaCAq
LywKIAkJCQk0MUUxQjFDRDBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNwcCAqLywK
IAkJCQk0MUUxQjFDRTBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmggKi8sCiAJCQkJ
NDFFMUIxQ0YwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5pZGwgKi8sCkBAIC0xNjQx
Niw2ICsxNjQxNSw3IEBACiAJCQkJQkM2MEQ4RjEwRDJBMTFFMDAwQjk5MThGIC8qIEV4Y2VwdGlv
bkJhc2UuaCAqLywKIAkJCQk5MzgzMUI1NjBEMDg3RDYwMDBFNUM5ODQgLyogRXhjZXB0aW9uQ29k
ZS5jcHAgKi8sCiAJCQkJOTM1RkJDRjEwOUJBMTQzQjAwRTIzMEIxIC8qIEV4Y2VwdGlvbkNvZGUu
aCAqLywKKwkJCQkyRTQzNDYzMjBGNTQ2QTgyMDBCMEYxQkEgLyogR2VuZXJpY1Rhc2suaCAqLywK
IAkJCQkwODcwMEJFNjBGMDg2QzUzMDA5MTk0MTkgLyogSW5wdXRFbGVtZW50LmNwcCAqLywKIAkJ
CQkwODU5MUFBNDBGMDg1QzRFMDA5QkFDQjEgLyogSW5wdXRFbGVtZW50LmggKi8sCiAJCQkJODUw
MzFCMkQwQTQ0RUZDNzAwRjk5MkUwIC8qIEtleWJvYXJkRXZlbnQuY3BwICovLApAQCAtMTc2OTUs
NyArMTc2OTUsNyBAQAogCQkJCUMwQzA1NENDMTExOEM4RTQwMENFMjYzNiAvKiBnZW5lcmF0ZS1i
aW5kaW5ncy5wbCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjNGMERCMERBRkY0QTQwMDlGREM5MSAv
KiBHZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFMDRDOEEwREFGRjdBMDAw
N0EwRjQxIC8qIEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkU0MzQ2NDQwRjU0NkE4
MjAwQjBGMUJBIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRTQz
NDY0NDBGNTQ2QTgyMDBCMEYxQkEgLyogR2VuZXJpY1Rhc2suaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZFODBEN0M2MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM1NkNCMjIxMEQ1QUM4MDAwQTc3QzY0IC8qIEdlb2xvY2F0aW9uQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1NkNCMjMxMEQ1QUM4MDAwQTc3QzY0IC8qIEdlb2xvY2F0
aW9uQ29udHJvbGxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2RvbS9HZW5lcmljVGFzay5oIGIvV2ViQ29yZS9kb20vR2VuZXJpY1Rhc2suaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDE2YjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9kb20vR2VuZXJpY1Rhc2suaApAQCAtMCwwICsxLDQ3NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOS0yMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5l
cmljVGFza19oCisjZGVmaW5lIEdlbmVyaWNUYXNrX2gKKworI2luY2x1ZGUgIkNyb3NzVGhyZWFk
Q29waWVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUg
PG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1R5cGVUcmFpdHMuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvLyBUcmFpdHMgZm9yIHRoZSBHZW5lcmljVGFzay4KK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBHZW5lcmljVGFza1RyYWl0cyB7CisgICAgdHlwZWRlZiBjb25zdCBUJiBQYXJh
bVR5cGU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY1Rhc2tUcmFp
dHM8VCo+IHsKKyAgICB0eXBlZGVmIFQqIFBhcmFtVHlwZTsKK307CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBHZW5lcmljVGFza1RyYWl0czxQYXNzUmVmUHRyPFQ+ID4geworICAgIHR5
cGVkZWYgUGFzc1JlZlB0cjxUPiBQYXJhbVR5cGU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgR2VuZXJpY1Rhc2tUcmFpdHM8UGFzc093blB0cjxUPiA+IHsKKyAgICB0eXBlZGVm
IFBhc3NPd25QdHI8VD4gUGFyYW1UeXBlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5
cGVuYW1lIE1QMT4KK2NsYXNzIEdlbmVyaWNUYXNrMSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQgKCpNZXRob2QpKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEpOworICAgIHR5cGVkZWYgR2VuZXJpY1Rhc2sxPFAxLCBN
UDE+IEdlbmVyaWNUYXNrOworICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8
UDE+OjpQYXJhbVR5cGUgUGFyYW0xOworCisgICAgc3RhdGljIFBhc3NPd25QdHI8R2VuZXJpY1Rh
c2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBuZXcgR2VuZXJpY1Rhc2sobWV0aG9kLCBwYXJhbWV0ZXIxKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgR2VuZXJpY1Rhc2sxKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0
ZXIxKQorICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjEo
cGFyYW1ldGVyMSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICAoKm1fbWV0
aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNZXRo
b2QgbV9tZXRob2Q7CisgICAgUDEgbV9wYXJhbWV0ZXIxOworfTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMj4KK2NsYXNzIEdl
bmVyaWNUYXNrMiA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIHZvaWQgKCpNZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBN
UDEsIE1QMik7CisgICAgdHlwZWRlZiBHZW5lcmljVGFzazI8UDEsIE1QMSwgUDIsIE1QMj4gR2Vu
ZXJpY1Rhc2s7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMT46OlBh
cmFtVHlwZSBQYXJhbTE7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQ
Mj46OlBhcmFtVHlwZSBQYXJhbTI7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxHZW5lcmljVGFz
az4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1l
dGVyMikKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgR2VuZXJpY1Rhc2sobWV0aG9kLCBwYXJh
bWV0ZXIxLCBwYXJhbWV0ZXIyKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR2VuZXJpY1Rhc2sy
KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMikKKyAg
ICAgICAgOiBtX21ldGhvZChtZXRob2QpCisgICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRl
cjEpCisgICAgICAgICwgbV9wYXJhbWV0ZXIyKHBhcmFtZXRlcjIpCisgICAgeworICAgIH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQorICAgIHsKKyAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9wYXJhbWV0ZXIxLCBt
X3BhcmFtZXRlcjIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNZXRob2QgbV9tZXRob2Q7Cisg
ICAgUDEgbV9wYXJhbWV0ZXIxOworICAgIFAyIG1fcGFyYW1ldGVyMjsKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5
cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDM+CitjbGFzcyBHZW5lcmljVGFzazMgOiBwdWJsaWMgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB2b2lkICgq
TWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMyk7CisgICAgdHlw
ZWRlZiBHZW5lcmljVGFzazM8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMz4gR2VuZXJpY1Rhc2s7
CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQ
YXJhbTE7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMj46OlBhcmFt
VHlwZSBQYXJhbTI7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMz46
OlBhcmFtVHlwZSBQYXJhbTM7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxHZW5lcmljVGFzaz4g
Y3JlYXRlKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVy
MiwgUGFyYW0zIHBhcmFtZXRlcjMpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNU
YXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMyk7CisgICAgfQor
Citwcml2YXRlOgorICAgIEdlbmVyaWNUYXNrMyhNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1l
dGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzKQorICAgICAgICA6IG1f
bWV0aG9kKG1ldGhvZCkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKKyAgICAg
ICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKKyAgICAgICAgLCBtX3BhcmFtZXRlcjMocGFy
YW1ldGVyMykKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICAoKm1fbWV0aG9k
KShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgTWV0aG9kIG1fbWV0aG9kOworICAgIFAxIG1fcGFyYW1ldGVy
MTsKKyAgICBQMiBtX3BhcmFtZXRlcjI7CisgICAgUDMgbV9wYXJhbWV0ZXIzOworfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1Q
MiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QND4K
K2NsYXNzIEdlbmVyaWNUYXNrNCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQgKCpNZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQpOworICAgIHR5cGVkZWYgR2VuZXJpY1Rhc2s0PFAx
LCBNUDEsIFAyLCBNUDIsIFAzLCBNUDMsIFA0LCBNUDQ+IEdlbmVyaWNUYXNrOworICAgIHR5cGVk
ZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDE+OjpQYXJhbVR5cGUgUGFyYW0xOworICAg
IHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDI+OjpQYXJhbVR5cGUgUGFyYW0y
OworICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDM+OjpQYXJhbVR5cGUg
UGFyYW0zOworICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDQ+OjpQYXJh
bVR5cGUgUGFyYW00OworCisgICAgc3RhdGljIFBhc3NPd25QdHI8R2VuZXJpY1Rhc2s+IGNyZWF0
ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBh
cmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCkKKyAgICB7CisgICAgICAgIHJldHVy
biBuZXcgR2VuZXJpY1Rhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0
ZXIzLCBwYXJhbWV0ZXI0KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR2VuZXJpY1Rhc2s0KE1l
dGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0z
IHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0KQorICAgICAgICA6IG1fbWV0aG9kKG1ldGhv
ZCkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKKyAgICAgICAgLCBtX3BhcmFt
ZXRlcjIocGFyYW1ldGVyMikKKyAgICAgICAgLCBtX3BhcmFtZXRlcjMocGFyYW1ldGVyMykKKyAg
ICAgICAgLCBtX3BhcmFtZXRlcjQocGFyYW1ldGVyNCkKKyAgICB7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisg
ICAgeworICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1l
dGVyMiwgbV9wYXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBNZXRob2QgbV9tZXRob2Q7CisgICAgUDEgbV9wYXJhbWV0ZXIxOworICAgIFAyIG1fcGFyYW1l
dGVyMjsKKyAgICBQMyBtX3BhcmFtZXRlcjM7CisgICAgUDQgbV9wYXJhbWV0ZXI0OworfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1l
IE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1Q
NCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNT4KK2NsYXNzIEdlbmVyaWNUYXNrNSA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZv
aWQgKCpNZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQs
IE1QNSk7CisgICAgdHlwZWRlZiBHZW5lcmljVGFzazU8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1Q
MywgUDQsIE1QNCwgUDUsIE1QNT4gR2VuZXJpY1Rhc2s7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBH
ZW5lcmljVGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7CisgICAgdHlwZWRlZiB0eXBl
bmFtZSBHZW5lcmljVGFza1RyYWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7CisgICAgdHlwZWRl
ZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7CisgICAg
dHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQND46OlBhcmFtVHlwZSBQYXJhbTQ7
CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQNT46OlBhcmFtVHlwZSBQ
YXJhbTU7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxHZW5lcmljVGFzaz4gY3JlYXRlKE1ldGhv
ZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBh
cmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBuZXcgR2VuZXJpY1Rhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0
ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1KTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgR2VuZXJpY1Rhc2s1KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQ
YXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQ
YXJhbTUgcGFyYW1ldGVyNSkKKyAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCisgICAgICAgICwg
bV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCisgICAgICAgICwgbV9wYXJhbWV0ZXIyKHBhcmFtZXRl
cjIpCisgICAgICAgICwgbV9wYXJhbWV0ZXIzKHBhcmFtZXRlcjMpCisgICAgICAgICwgbV9wYXJh
bWV0ZXI0KHBhcmFtZXRlcjQpCisgICAgICAgICwgbV9wYXJhbWV0ZXI1KHBhcmFtZXRlcjUpCisg
ICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwg
bV9wYXJhbWV0ZXIxLCBtX3BhcmFtZXRlcjIsIG1fcGFyYW1ldGVyMywgbV9wYXJhbWV0ZXI0LCBt
X3BhcmFtZXRlcjUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNZXRob2QgbV9tZXRob2Q7Cisg
ICAgUDEgbV9wYXJhbWV0ZXIxOworICAgIFAyIG1fcGFyYW1ldGVyMjsKKyAgICBQMyBtX3BhcmFt
ZXRlcjM7CisgICAgUDQgbV9wYXJhbWV0ZXI0OworICAgIFA1IG1fcGFyYW1ldGVyNTsKK307CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFt
ZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBN
UDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDY+
CitjbGFzcyBHZW5lcmljVGFzazYgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB2b2lkICgqTWV0aG9kKShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNik7CisgICAgdHlwZWRlZiBHZW5l
cmljVGFzazY8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQsIE1QNCwgUDUsIE1QNSwgUDYs
IE1QNj4gR2VuZXJpY1Rhc2s7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0
czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFz
a1RyYWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5l
cmljVGFza1RyYWl0czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7CisgICAgdHlwZWRlZiB0eXBlbmFt
ZSBHZW5lcmljVGFza1RyYWl0czxQND46OlBhcmFtVHlwZSBQYXJhbTQ7CisgICAgdHlwZWRlZiB0
eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQNT46OlBhcmFtVHlwZSBQYXJhbTU7CisgICAgdHlw
ZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQNj46OlBhcmFtVHlwZSBQYXJhbTY7CisK
KyAgICBzdGF0aWMgUGFzc093blB0cjxHZW5lcmljVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRob2Qs
IFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMs
IFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSwgUGFyYW02IHBhcmFtZXRlcjYp
CisgICAgeworICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNUYXNrKG1ldGhvZCwgcGFyYW1ldGVy
MSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSwgcGFyYW1l
dGVyNik7CisgICAgfQorCitwcml2YXRlOgorICAgIEdlbmVyaWNUYXNrNihNZXRob2QgbWV0aG9k
LCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIz
LCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2
KQorICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFy
YW1ldGVyMSkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKKyAgICAgICAgLCBt
X3BhcmFtZXRlcjMocGFyYW1ldGVyMykKKyAgICAgICAgLCBtX3BhcmFtZXRlcjQocGFyYW1ldGVy
NCkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjUocGFyYW1ldGVyNSkKKyAgICAgICAgLCBtX3BhcmFt
ZXRlcjYocGFyYW1ldGVyNikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBlcmZv
cm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICAo
Km1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0
ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVyNSwgbV9wYXJhbWV0ZXI2KTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgTWV0aG9kIG1fbWV0aG9kOworICAgIFAxIG1fcGFyYW1ldGVyMTsKKyAg
ICBQMiBtX3BhcmFtZXRlcjI7CisgICAgUDMgbV9wYXJhbWV0ZXIzOworICAgIFA0IG1fcGFyYW1l
dGVyNDsKKyAgICBQNSBtX3BhcmFtZXRlcjU7CisgICAgUDYgbV9wYXJhbWV0ZXI2OworfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1l
IE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1Q
NCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNiwg
dHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNz4KK2NsYXNzIEdlbmVyaWNUYXNrNyA6IHB1YmxpYyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQg
KCpNZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1Q
NSwgTVA2LCBNUDcpOworICAgIHR5cGVkZWYgR2VuZXJpY1Rhc2s3PFAxLCBNUDEsIFAyLCBNUDIs
IFAzLCBNUDMsIFA0LCBNUDQsIFA1LCBNUDUsIFA2LCBNUDYsIFA3LCBNUDc+IEdlbmVyaWNUYXNr
OworICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDE+OjpQYXJhbVR5cGUg
UGFyYW0xOworICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDI+OjpQYXJh
bVR5cGUgUGFyYW0yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDM+
OjpQYXJhbVR5cGUgUGFyYW0zOworICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFp
dHM8UDQ+OjpQYXJhbVR5cGUgUGFyYW00OworICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rh
c2tUcmFpdHM8UDU+OjpQYXJhbVR5cGUgUGFyYW01OworICAgIHR5cGVkZWYgdHlwZW5hbWUgR2Vu
ZXJpY1Rhc2tUcmFpdHM8UDY+OjpQYXJhbVR5cGUgUGFyYW02OworICAgIHR5cGVkZWYgdHlwZW5h
bWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDc+OjpQYXJhbVR5cGUgUGFyYW03OworCisgICAgc3RhdGlj
IFBhc3NPd25QdHI8R2VuZXJpY1Rhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFy
YW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFy
YW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2LCBQYXJhbTcgcGFy
YW1ldGVyNykKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgR2VuZXJpY1Rhc2sobWV0aG9kLCBw
YXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1
LCBwYXJhbWV0ZXI2LCBwYXJhbWV0ZXI3KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR2VuZXJp
Y1Rhc2s3KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVy
MiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVy
NSwgUGFyYW02IHBhcmFtZXRlcjYsIFBhcmFtNyBwYXJhbWV0ZXI3KQorICAgICAgICA6IG1fbWV0
aG9kKG1ldGhvZCkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKKyAgICAgICAg
LCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKKyAgICAgICAgLCBtX3BhcmFtZXRlcjMocGFyYW1l
dGVyMykKKyAgICAgICAgLCBtX3BhcmFtZXRlcjQocGFyYW1ldGVyNCkKKyAgICAgICAgLCBtX3Bh
cmFtZXRlcjUocGFyYW1ldGVyNSkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjYocGFyYW1ldGVyNikK
KyAgICAgICAgLCBtX3BhcmFtZXRlcjcocGFyYW1ldGVyNykKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CisgICAgeworICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFy
YW1ldGVyMiwgbV9wYXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVyNSwgbV9wYXJh
bWV0ZXI2LCBtX3BhcmFtZXRlcjcpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNZXRob2QgbV9t
ZXRob2Q7CisgICAgUDEgbV9wYXJhbWV0ZXIxOworICAgIFAyIG1fcGFyYW1ldGVyMjsKKyAgICBQ
MyBtX3BhcmFtZXRlcjM7CisgICAgUDQgbV9wYXJhbWV0ZXI0OworICAgIFA1IG1fcGFyYW1ldGVy
NTsKKyAgICBQNiBtX3BhcmFtZXRlcjY7CisgICAgUDcgbV9wYXJhbWV0ZXI3OworfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1Q
MiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwg
dHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNiwgdHlw
ZW5hbWUgUDcsIHR5cGVuYW1lIE1QNywgdHlwZW5hbWUgUDgsIHR5cGVuYW1lIE1QOD4KK2NsYXNz
IEdlbmVyaWNUYXNrOCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQgKCpNZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcsIE1QOCk7CisgICAgdHlwZWRlZiBH
ZW5lcmljVGFzazg8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQsIE1QNCwgUDUsIE1QNSwg
UDYsIE1QNiwgUDcsIE1QNywgUDgsIE1QOD4gR2VuZXJpY1Rhc2s7CisgICAgdHlwZWRlZiB0eXBl
bmFtZSBHZW5lcmljVGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7CisgICAgdHlwZWRl
ZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7CisgICAg
dHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7
CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQND46OlBhcmFtVHlwZSBQ
YXJhbTQ7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQNT46OlBhcmFt
VHlwZSBQYXJhbTU7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQNj46
OlBhcmFtVHlwZSBQYXJhbTY7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0
czxQNz46OlBhcmFtVHlwZSBQYXJhbTc7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFz
a1RyYWl0czxQOD46OlBhcmFtVHlwZSBQYXJhbTg7CisgICAgCisgICAgc3RhdGljIFBhc3NPd25Q
dHI8R2VuZXJpY1Rhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwg
UGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwg
UGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2LCBQYXJhbTcgcGFyYW1ldGVyNywg
UGFyYW04IHBhcmFtZXRlcjgpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNUYXNr
KG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCwg
cGFyYW1ldGVyNSwgcGFyYW1ldGVyNiwgcGFyYW1ldGVyNywgcGFyYW1ldGVyOCk7CisgICAgfQor
ICAgIAorcHJpdmF0ZToKKyAgICBHZW5lcmljVGFzazgoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBh
cmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBh
cmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNiwgUGFyYW03IHBh
cmFtZXRlcjcsIFBhcmFtOCBwYXJhbWV0ZXI4KQorICAgIDogbV9tZXRob2QobWV0aG9kKQorICAg
ICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCisgICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVy
MikKKyAgICAsIG1fcGFyYW1ldGVyMyhwYXJhbWV0ZXIzKQorICAgICwgbV9wYXJhbWV0ZXI0KHBh
cmFtZXRlcjQpCisgICAgLCBtX3BhcmFtZXRlcjUocGFyYW1ldGVyNSkKKyAgICAsIG1fcGFyYW1l
dGVyNihwYXJhbWV0ZXI2KQorICAgICwgbV9wYXJhbWV0ZXI3KHBhcmFtZXRlcjcpCisgICAgLCBt
X3BhcmFtZXRlcjgocGFyYW1ldGVyOCkKKyAgICB7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwg
dm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHsK
KyAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9wYXJhbWV0ZXIxLCBtX3BhcmFtZXRlcjIs
IG1fcGFyYW1ldGVyMywgbV9wYXJhbWV0ZXI0LCBtX3BhcmFtZXRlcjUsIG1fcGFyYW1ldGVyNiwg
bV9wYXJhbWV0ZXI3LCBtX3BhcmFtZXRlcjgpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAg
TWV0aG9kIG1fbWV0aG9kOworICAgIFAxIG1fcGFyYW1ldGVyMTsKKyAgICBQMiBtX3BhcmFtZXRl
cjI7CisgICAgUDMgbV9wYXJhbWV0ZXIzOworICAgIFA0IG1fcGFyYW1ldGVyNDsKKyAgICBQNSBt
X3BhcmFtZXRlcjU7CisgICAgUDYgbV9wYXJhbWV0ZXI2OworICAgIFA3IG1fcGFyYW1ldGVyNzsK
KyAgICBQOCBtX3BhcmFtZXRlcjg7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5h
bWUgTVAxPgorUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVD
YWxsYmFja1Rhc2soCisgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IE1QMSksCisgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCit7CisgICAgcmV0dXJuIEdlbmVyaWNU
YXNrMTx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMT46OmNyZWF0ZSgK
KyAgICAgICAgbWV0aG9kLAorICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFy
YW1ldGVyMSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBl
bmFtZSBQMiwgdHlwZW5hbWUgTVAyPgorUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCisgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIE1QMSwgTVAyKSwKKyAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwgY29u
c3QgUDImIHBhcmFtZXRlcjIpCit7CisgICAgcmV0dXJuIEdlbmVyaWNUYXNrMjx0eXBlbmFtZSBD
cm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDI+OjpUeXBlLCBNUDI+OjpjcmVhdGUoCisgICAgICAgIG1ldGhvZCwKKyAgICAgICAgQ3Jv
c3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVhZENvcGllcjxQ
Mj46OmNvcHkocGFyYW1ldGVyMikpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5h
bWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUg
TVAzPgorUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxs
YmFja1Rhc2soCisgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1Q
MSwgTVAyLCBNUDMpLAorICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1l
dGVyMiwgY29uc3QgUDMmIHBhcmFtZXRlcjMpCit7CisgICAgcmV0dXJuIEdlbmVyaWNUYXNrMzx0
eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAz
Pjo6VHlwZSwgTVAzPjo6Y3JlYXRlKAorICAgICAgICBtZXRob2QsCisgICAgICAgIENyb3NzVGhy
ZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpj
b3B5KHBhcmFtZXRlcjIpLAorICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFy
YW1ldGVyMykpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBl
bmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFt
ZSBQNCwgdHlwZW5hbWUgTVA0PgorUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCisgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMsIE1QNCksCisgICAgY29uc3QgUDEmIHBhcmFtZXRl
cjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLCBjb25zdCBQMyYgcGFyYW1ldGVyMywgY29uc3QgUDQm
IHBhcmFtZXRlcjQpCit7CisgICAgcmV0dXJuIEdlbmVyaWNUYXNrNDx0eXBlbmFtZSBDcm9zc1Ro
cmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+
OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAor
ICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QND46OmNyZWF0
ZSgKKyAgICAgICAgICAgIG1ldGhvZCwKKyAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAx
Pjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRl
cjIpLAorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMp
LCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCkpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0
eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBl
bmFtZSBQNSwgdHlwZW5hbWUgTVA1PgorUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCisgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1KSwKKyAgICBjb25zdCBQMSYg
cGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBj
b25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUpCit7CisgICAgcmV0dXJu
IEdlbmVyaWNUYXNrNTx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwg
dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3Nz
VGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAorICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVh
ZENvcGllcjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+OjpU
eXBlLCBNUDU+OjpjcmVhdGUoCisgICAgICAgICAgICBtZXRob2QsCisgICAgICAgICAgICBDcm9z
c1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAy
Pjo6Y29weShwYXJhbWV0ZXIyKSwKKyAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6
Y29weShwYXJhbWV0ZXIzKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQp
LAorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+Ojpjb3B5KHBhcmFtZXRlcjUpKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5
cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVu
YW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1l
IE1QNj4KK1Bhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2Fs
bGJhY2tUYXNrKAorICAgIHZvaWQgKCptZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBN
UDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2KSwKKyAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwg
Y29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQNCYgcGFy
YW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUsIGNvbnN0IFA2JiBwYXJhbWV0ZXI2KQorewor
ICAgIHJldHVybiBHZW5lcmljVGFzazY8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpU
eXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBl
bmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKKyAgICAgICAgdHlwZW5hbWUg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29w
aWVyPFA1Pjo6VHlwZSwgTVA1LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNj46OlR5cGUs
IE1QNj46OmNyZWF0ZSgKKyAgICAgICAgICAgIG1ldGhvZCwKKyAgICAgICAgICAgIENyb3NzVGhy
ZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpj
b3B5KHBhcmFtZXRlcjIpLAorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5
KHBhcmFtZXRlcjMpLCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCisg
ICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQNT46OmNvcHkocGFyYW1ldGVyNSksIENyb3Nz
VGhyZWFkQ29waWVyPFA2Pjo6Y29weShwYXJhbWV0ZXI2KSk7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1l
IFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1
LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDYsIHR5cGVuYW1lIFA3LCB0
eXBlbmFtZSBNUDc+CitQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNy
ZWF0ZUNhbGxiYWNrVGFzaygKKyAgICB2b2lkICgqbWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3KSwKKyAgICBjb25zdCBQMSYg
cGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBj
b25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUsIGNvbnN0IFA2JiBwYXJh
bWV0ZXI2LCBjb25zdCBQNyYgcGFyYW1ldGVyNykKK3sKKyAgICByZXR1cm4gR2VuZXJpY1Rhc2s3
PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9z
c1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDM+OjpUeXBlLCBNUDMsCisgICAgICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6
VHlwZSwgTVA0LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNT46OlR5cGUsIE1QNSwgdHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+OjpUeXBlLCBNUDYsCisgICAgICAgIHR5cGVuYW1l
IENyb3NzVGhyZWFkQ29waWVyPFA3Pjo6VHlwZSwgTVA3Pjo6Y3JlYXRlKAorICAgICAgICAgICAg
bWV0aG9kLAorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRl
cjEpLCBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCisgICAgICAgICAg
ICBDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksIENyb3NzVGhyZWFkQ29w
aWVyPFA0Pjo6Y29weShwYXJhbWV0ZXI0KSwKKyAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVy
PFA1Pjo6Y29weShwYXJhbWV0ZXI1KSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+Ojpjb3B5KHBhcmFt
ZXRlcjYpLAorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+Ojpjb3B5KHBhcmFtZXRl
cjcpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUg
UDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQs
IHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5
cGVuYW1lIE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNywgdHlwZW5hbWUgUDgsIHR5cGVu
YW1lIE1QOD4KK1Bhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRl
Q2FsbGJhY2tUYXNrKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNywgTVA4KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFAxJiBw
YXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3QgUDMmIHBhcmFtZXRlcjMsIGNv
bnN0IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQNSYgcGFyYW1ldGVyNSwgY29uc3QgUDYmIHBhcmFt
ZXRlcjYsIGNvbnN0IFA3JiBwYXJhbWV0ZXI3LCBjb25zdCBQOCYgcGFyYW1ldGVyOCkKK3sKKyAg
ICByZXR1cm4gR2VuZXJpY1Rhc2s4PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlw
ZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5h
bWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDMsCisgICAgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA1
Pjo6VHlwZSwgTVA1LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNj46OlR5cGUsIE1QNiwK
KyAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNz46OlR5cGUsIE1QNywgdHlwZW5hbWUg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDg+OjpUeXBlLCBNUDg+OjpjcmVhdGUoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzVGhy
ZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpj
b3B5KHBhcmFtZXRlcjIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVy
PFA1Pjo6Y29weShwYXJhbWV0ZXI1KSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+Ojpjb3B5KHBhcmFt
ZXRlcjYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFA3Pjo6Y29weShwYXJhbWV0ZXI3KSwgQ3Jvc3NUaHJl
YWRDb3BpZXI8UDg+Ojpjb3B5KHBhcmFtZXRlcjgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gR2VuZXJpY1Rhc2tfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0ZpbGVTdHJlYW1Qcm94eS5jcHAgYi9XZWJDb3JlL2h0bWwvRmlsZVN0cmVhbVByb3h5LmNwcApp
bmRleCA2YjQxZjMyLi5hZDYwNzBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvRmlsZVN0cmVh
bVByb3h5LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvRmlsZVN0cmVhbVByb3h5LmNwcApAQCAtMzgs
NyArMzgsNyBAQAogI2luY2x1ZGUgIkZpbGVTdHJlYW0uaCIKICNpbmNsdWRlICJGaWxlVGhyZWFk
LmgiCiAjaW5jbHVkZSAiRmlsZVRocmVhZFRhc2suaCIKLSNpbmNsdWRlICJHZW5lcmljV29ya2Vy
VGFzay5oIgorI2luY2x1ZGUgIkdlbmVyaWNUYXNrLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMjU4MzQ5OC4uN2E3MmQ0MiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIv
V2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTM0LDcgKzM0LDcg
QEAKIAogI2luY2x1ZGUgIldvcmtlclRocmVhZGFibGVMb2FkZXIuaCIKIAotI2luY2x1ZGUgIkdl
bmVyaWNXb3JrZXJUYXNrLmgiCisjaW5jbHVkZSAiR2VuZXJpY1Rhc2suaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZS5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggZmQ4NjYwNC4uYjQ4OTYyOCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmNwcAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKICNpbmNsdWRlICJXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIgogCi0jaW5jbHVkZSAiR2VuZXJpY1dvcmtlclRhc2su
aCIKKyNpbmNsdWRlICJHZW5lcmljVGFzay5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93
b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCBiL1dlYkNvcmUvd29ya2Vy
cy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKaW5kZXggODhhZWEyZC4uMjJkYjQ2
YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0
b3J5LmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRv
cnkuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkdlbmVyaWNXb3JrZXJUYXNrLmgiCisj
aW5jbHVkZSAiR2VuZXJpY1Rhc2suaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9HZW5lcmljV29ya2VyVGFzay5oIGIvV2ViQ29yZS93
b3JrZXJzL0dlbmVyaWNXb3JrZXJUYXNrLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGFkMTZiNDUuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS93b3JrZXJzL0dlbmVyaWNXb3JrZXJUYXNr
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOS0yMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBHZW5lcmljVGFz
a19oCi0jZGVmaW5lIEdlbmVyaWNUYXNrX2gKLQotI2luY2x1ZGUgIkNyb3NzVGhyZWFkQ29waWVy
LmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgPG1lbW9y
eT4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1R5cGVUcmFpdHMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci0vLyBUcmFpdHMgZm9yIHRoZSBHZW5lcmljVGFzay4KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBHZW5lcmljVGFza1RyYWl0cyB7Ci0gICAgdHlwZWRlZiBjb25zdCBUJiBQYXJhbVR5cGU7
Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY1Rhc2tUcmFpdHM8VCo+
IHsKLSAgICB0eXBlZGVmIFQqIFBhcmFtVHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBHZW5lcmljVGFza1RyYWl0czxQYXNzUmVmUHRyPFQ+ID4gewotICAgIHR5cGVkZWYg
UGFzc1JlZlB0cjxUPiBQYXJhbVR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1
Y3QgR2VuZXJpY1Rhc2tUcmFpdHM8UGFzc093blB0cjxUPiA+IHsKLSAgICB0eXBlZGVmIFBhc3NP
d25QdHI8VD4gUGFyYW1UeXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1l
IE1QMT4KLWNsYXNzIEdlbmVyaWNUYXNrMSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQgKCpNZXRob2QpKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBNUDEpOwotICAgIHR5cGVkZWYgR2VuZXJpY1Rhc2sxPFAxLCBNUDE+IEdl
bmVyaWNUYXNrOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDE+OjpQ
YXJhbVR5cGUgUGFyYW0xOwotCi0gICAgc3RhdGljIFBhc3NPd25QdHI8R2VuZXJpY1Rhc2s+IGNy
ZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBuZXcgR2VuZXJpY1Rhc2sobWV0aG9kLCBwYXJhbWV0ZXIxKTsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgR2VuZXJpY1Rhc2sxKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxKQot
ICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1l
dGVyMSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgewotICAgICAgICAoKm1fbWV0aG9kKShj
b250ZXh0LCBtX3BhcmFtZXRlcjEpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBNZXRob2QgbV9t
ZXRob2Q7Ci0gICAgUDEgbV9wYXJhbWV0ZXIxOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUDEs
IHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMj4KLWNsYXNzIEdlbmVyaWNU
YXNrMiA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKLXB1YmxpYzoKLSAg
ICB0eXBlZGVmIHZvaWQgKCpNZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1Q
Mik7Ci0gICAgdHlwZWRlZiBHZW5lcmljVGFzazI8UDEsIE1QMSwgUDIsIE1QMj4gR2VuZXJpY1Rh
c2s7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMT46OlBhcmFtVHlw
ZSBQYXJhbTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMj46OlBh
cmFtVHlwZSBQYXJhbTI7Ci0KLSAgICBzdGF0aWMgUGFzc093blB0cjxHZW5lcmljVGFzaz4gY3Jl
YXRlKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMikK
LSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgR2VuZXJpY1Rhc2sobWV0aG9kLCBwYXJhbWV0ZXIx
LCBwYXJhbWV0ZXIyKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgR2VuZXJpY1Rhc2syKE1ldGhv
ZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMikKLSAgICAgICAg
OiBtX21ldGhvZChtZXRob2QpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCi0g
ICAgICAgICwgbV9wYXJhbWV0ZXIyKHBhcmFtZXRlcjIpCi0gICAgewotICAgIH0KLQotICAgIHZp
cnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQot
ICAgIHsKLSAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9wYXJhbWV0ZXIxLCBtX3BhcmFt
ZXRlcjIpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBNZXRob2QgbV9tZXRob2Q7Ci0gICAgUDEg
bV9wYXJhbWV0ZXIxOwotICAgIFAyIG1fcGFyYW1ldGVyMjsKLX07Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1l
IFAzLCB0eXBlbmFtZSBNUDM+Ci1jbGFzcyBHZW5lcmljVGFzazMgOiBwdWJsaWMgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lkICgqTWV0aG9k
KShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMyk7Ci0gICAgdHlwZWRlZiBH
ZW5lcmljVGFzazM8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMz4gR2VuZXJpY1Rhc2s7Ci0gICAg
dHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7
Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMj46OlBhcmFtVHlwZSBQ
YXJhbTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMz46OlBhcmFt
VHlwZSBQYXJhbTM7Ci0KLSAgICBzdGF0aWMgUGFzc093blB0cjxHZW5lcmljVGFzaz4gY3JlYXRl
KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFy
YW0zIHBhcmFtZXRlcjMpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNUYXNrKG1l
dGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMyk7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIEdlbmVyaWNUYXNrMyhNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwg
UGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzKQotICAgICAgICA6IG1fbWV0aG9k
KG1ldGhvZCkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKLSAgICAgICAgLCBt
X3BhcmFtZXRlcjIocGFyYW1ldGVyMikKLSAgICAgICAgLCBtX3BhcmFtZXRlcjMocGFyYW1ldGVy
MykKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgewotICAgICAgICAoKm1fbWV0aG9kKShjb250
ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzKTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgTWV0aG9kIG1fbWV0aG9kOwotICAgIFAxIG1fcGFyYW1ldGVyMTsKLSAg
ICBQMiBtX3BhcmFtZXRlcjI7Ci0gICAgUDMgbV9wYXJhbWV0ZXIzOwotfTsKLQotdGVtcGxhdGU8
dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlw
ZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QND4KLWNsYXNz
IEdlbmVyaWNUYXNrNCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKLXB1
YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQgKCpNZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBNUDEsIE1QMiwgTVAzLCBNUDQpOwotICAgIHR5cGVkZWYgR2VuZXJpY1Rhc2s0PFAxLCBNUDEs
IFAyLCBNUDIsIFAzLCBNUDMsIFA0LCBNUDQ+IEdlbmVyaWNUYXNrOwotICAgIHR5cGVkZWYgdHlw
ZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDE+OjpQYXJhbVR5cGUgUGFyYW0xOwotICAgIHR5cGVk
ZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDI+OjpQYXJhbVR5cGUgUGFyYW0yOwotICAg
IHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDM+OjpQYXJhbVR5cGUgUGFyYW0z
OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDQ+OjpQYXJhbVR5cGUg
UGFyYW00OwotCi0gICAgc3RhdGljIFBhc3NPd25QdHI8R2VuZXJpY1Rhc2s+IGNyZWF0ZShNZXRo
b2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBw
YXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcg
R2VuZXJpY1Rhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBw
YXJhbWV0ZXI0KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgR2VuZXJpY1Rhc2s0KE1ldGhvZCBt
ZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFt
ZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0KQotICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKLSAg
ICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjIo
cGFyYW1ldGVyMikKLSAgICAgICAgLCBtX3BhcmFtZXRlcjMocGFyYW1ldGVyMykKLSAgICAgICAg
LCBtX3BhcmFtZXRlcjQocGFyYW1ldGVyNCkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2
b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgewot
ICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwg
bV9wYXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBNZXRo
b2QgbV9tZXRob2Q7Ci0gICAgUDEgbV9wYXJhbWV0ZXIxOwotICAgIFAyIG1fcGFyYW1ldGVyMjsK
LSAgICBQMyBtX3BhcmFtZXRlcjM7Ci0gICAgUDQgbV9wYXJhbWV0ZXI0OwotfTsKLQotdGVtcGxh
dGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwg
dHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlw
ZW5hbWUgUDUsIHR5cGVuYW1lIE1QNT4KLWNsYXNzIEdlbmVyaWNUYXNrNSA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQgKCpN
ZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSk7
Ci0gICAgdHlwZWRlZiBHZW5lcmljVGFzazU8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQs
IE1QNCwgUDUsIE1QNT4gR2VuZXJpY1Rhc2s7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmlj
VGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBH
ZW5lcmljVGFza1RyYWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7Ci0gICAgdHlwZWRlZiB0eXBl
bmFtZSBHZW5lcmljVGFza1RyYWl0czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7Ci0gICAgdHlwZWRl
ZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQND46OlBhcmFtVHlwZSBQYXJhbTQ7Ci0gICAg
dHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQNT46OlBhcmFtVHlwZSBQYXJhbTU7
Ci0KLSAgICBzdGF0aWMgUGFzc093blB0cjxHZW5lcmljVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRo
b2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRl
cjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBuZXcgR2VuZXJpY1Rhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBw
YXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgR2VuZXJpY1Rhc2s1KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIg
cGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUg
cGFyYW1ldGVyNSkKLSAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCi0gICAgICAgICwgbV9wYXJh
bWV0ZXIxKHBhcmFtZXRlcjEpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIyKHBhcmFtZXRlcjIpCi0g
ICAgICAgICwgbV9wYXJhbWV0ZXIzKHBhcmFtZXRlcjMpCi0gICAgICAgICwgbV9wYXJhbWV0ZXI0
KHBhcmFtZXRlcjQpCi0gICAgICAgICwgbV9wYXJhbWV0ZXI1KHBhcmFtZXRlcjUpCi0gICAgewot
ICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9wYXJh
bWV0ZXIxLCBtX3BhcmFtZXRlcjIsIG1fcGFyYW1ldGVyMywgbV9wYXJhbWV0ZXI0LCBtX3BhcmFt
ZXRlcjUpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBNZXRob2QgbV9tZXRob2Q7Ci0gICAgUDEg
bV9wYXJhbWV0ZXIxOwotICAgIFAyIG1fcGFyYW1ldGVyMjsKLSAgICBQMyBtX3BhcmFtZXRlcjM7
Ci0gICAgUDQgbV9wYXJhbWV0ZXI0OwotICAgIFA1IG1fcGFyYW1ldGVyNTsKLX07Ci0KLXRlbXBs
YXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIs
IHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5
cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDY+Ci1jbGFz
cyBHZW5lcmljVGFzazYgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Ci1w
dWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lkICgqTWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNik7Ci0gICAgdHlwZWRlZiBHZW5lcmljVGFz
azY8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQsIE1QNCwgUDUsIE1QNSwgUDYsIE1QNj4g
R2VuZXJpY1Rhc2s7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMT46
OlBhcmFtVHlwZSBQYXJhbTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0
czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFz
a1RyYWl0czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5l
cmljVGFza1RyYWl0czxQND46OlBhcmFtVHlwZSBQYXJhbTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFt
ZSBHZW5lcmljVGFza1RyYWl0czxQNT46OlBhcmFtVHlwZSBQYXJhbTU7Ci0gICAgdHlwZWRlZiB0
eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQNj46OlBhcmFtVHlwZSBQYXJhbTY7Ci0KLSAgICBz
dGF0aWMgUGFzc093blB0cjxHZW5lcmljVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIFBhcmFt
MSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFt
NCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSwgUGFyYW02IHBhcmFtZXRlcjYpCi0gICAg
ewotICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFy
YW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSwgcGFyYW1ldGVyNik7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEdlbmVyaWNUYXNrNihNZXRob2QgbWV0aG9kLCBQYXJh
bTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJh
bTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2KQotICAg
ICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVy
MSkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKLSAgICAgICAgLCBtX3BhcmFt
ZXRlcjMocGFyYW1ldGVyMykKLSAgICAgICAgLCBtX3BhcmFtZXRlcjQocGFyYW1ldGVyNCkKLSAg
ICAgICAgLCBtX3BhcmFtZXRlcjUocGFyYW1ldGVyNSkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjYo
cGFyYW1ldGVyNikKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgewotICAgICAgICAoKm1fbWV0
aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzLCBt
X3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVyNSwgbV9wYXJhbWV0ZXI2KTsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgTWV0aG9kIG1fbWV0aG9kOwotICAgIFAxIG1fcGFyYW1ldGVyMTsKLSAgICBQMiBt
X3BhcmFtZXRlcjI7Ci0gICAgUDMgbV9wYXJhbWV0ZXIzOwotICAgIFA0IG1fcGFyYW1ldGVyNDsK
LSAgICBQNSBtX3BhcmFtZXRlcjU7Ci0gICAgUDYgbV9wYXJhbWV0ZXI2OwotfTsKLQotdGVtcGxh
dGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwg
dHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlw
ZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNiwgdHlwZW5h
bWUgUDcsIHR5cGVuYW1lIE1QNz4KLWNsYXNzIEdlbmVyaWNUYXNrNyA6IHB1YmxpYyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQgKCpNZXRo
b2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2
LCBNUDcpOwotICAgIHR5cGVkZWYgR2VuZXJpY1Rhc2s3PFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBN
UDMsIFA0LCBNUDQsIFA1LCBNUDUsIFA2LCBNUDYsIFA3LCBNUDc+IEdlbmVyaWNUYXNrOwotICAg
IHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDE+OjpQYXJhbVR5cGUgUGFyYW0x
OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDI+OjpQYXJhbVR5cGUg
UGFyYW0yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDM+OjpQYXJh
bVR5cGUgUGFyYW0zOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDQ+
OjpQYXJhbVR5cGUgUGFyYW00OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFp
dHM8UDU+OjpQYXJhbVR5cGUgUGFyYW01OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rh
c2tUcmFpdHM8UDY+OjpQYXJhbVR5cGUgUGFyYW02OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgR2Vu
ZXJpY1Rhc2tUcmFpdHM8UDc+OjpQYXJhbVR5cGUgUGFyYW03OwotCi0gICAgc3RhdGljIFBhc3NP
d25QdHI8R2VuZXJpY1Rhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVy
MSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVy
NCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2LCBQYXJhbTcgcGFyYW1ldGVy
NykKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgR2VuZXJpY1Rhc2sobWV0aG9kLCBwYXJhbWV0
ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1LCBwYXJh
bWV0ZXI2LCBwYXJhbWV0ZXI3KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgR2VuZXJpY1Rhc2s3
KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFy
YW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSwgUGFy
YW02IHBhcmFtZXRlcjYsIFBhcmFtNyBwYXJhbWV0ZXI3KQotICAgICAgICA6IG1fbWV0aG9kKG1l
dGhvZCkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKLSAgICAgICAgLCBtX3Bh
cmFtZXRlcjIocGFyYW1ldGVyMikKLSAgICAgICAgLCBtX3BhcmFtZXRlcjMocGFyYW1ldGVyMykK
LSAgICAgICAgLCBtX3BhcmFtZXRlcjQocGFyYW1ldGVyNCkKLSAgICAgICAgLCBtX3BhcmFtZXRl
cjUocGFyYW1ldGVyNSkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjYocGFyYW1ldGVyNikKLSAgICAg
ICAgLCBtX3BhcmFtZXRlcjcocGFyYW1ldGVyNykKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVh
bCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAg
ewotICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVy
MiwgbV9wYXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVyNSwgbV9wYXJhbWV0ZXI2
LCBtX3BhcmFtZXRlcjcpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBNZXRob2QgbV9tZXRob2Q7
Ci0gICAgUDEgbV9wYXJhbWV0ZXIxOwotICAgIFAyIG1fcGFyYW1ldGVyMjsKLSAgICBQMyBtX3Bh
cmFtZXRlcjM7Ci0gICAgUDQgbV9wYXJhbWV0ZXI0OwotICAgIFA1IG1fcGFyYW1ldGVyNTsKLSAg
ICBQNiBtX3BhcmFtZXRlcjY7Ci0gICAgUDcgbV9wYXJhbWV0ZXI3OwotfTsKLQotdGVtcGxhdGU8
dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlw
ZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5h
bWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNiwgdHlwZW5hbWUg
UDcsIHR5cGVuYW1lIE1QNywgdHlwZW5hbWUgUDgsIHR5cGVuYW1lIE1QOD4KLWNsYXNzIEdlbmVy
aWNUYXNrOCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKLXB1YmxpYzoK
LSAgICB0eXBlZGVmIHZvaWQgKCpNZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEs
IE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcsIE1QOCk7Ci0gICAgdHlwZWRlZiBHZW5lcmlj
VGFzazg8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQsIE1QNCwgUDUsIE1QNSwgUDYsIE1Q
NiwgUDcsIE1QNywgUDgsIE1QOD4gR2VuZXJpY1Rhc2s7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBH
ZW5lcmljVGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7Ci0gICAgdHlwZWRlZiB0eXBl
bmFtZSBHZW5lcmljVGFza1RyYWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7Ci0gICAgdHlwZWRl
ZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7Ci0gICAg
dHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQND46OlBhcmFtVHlwZSBQYXJhbTQ7
Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQNT46OlBhcmFtVHlwZSBQ
YXJhbTU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQNj46OlBhcmFt
VHlwZSBQYXJhbTY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQNz46
OlBhcmFtVHlwZSBQYXJhbTc7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0
czxQOD46OlBhcmFtVHlwZSBQYXJhbTg7Ci0gICAgCi0gICAgc3RhdGljIFBhc3NPd25QdHI8R2Vu
ZXJpY1Rhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0y
IHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01
IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2LCBQYXJhbTcgcGFyYW1ldGVyNywgUGFyYW04
IHBhcmFtZXRlcjgpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNUYXNrKG1ldGhv
ZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCwgcGFyYW1l
dGVyNSwgcGFyYW1ldGVyNiwgcGFyYW1ldGVyNywgcGFyYW1ldGVyOCk7Ci0gICAgfQotICAgIAot
cHJpdmF0ZToKLSAgICBHZW5lcmljVGFzazgoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRl
cjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRl
cjQsIFBhcmFtNSBwYXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNiwgUGFyYW03IHBhcmFtZXRl
cjcsIFBhcmFtOCBwYXJhbWV0ZXI4KQotICAgIDogbV9tZXRob2QobWV0aG9kKQotICAgICwgbV9w
YXJhbWV0ZXIxKHBhcmFtZXRlcjEpCi0gICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKLSAg
ICAsIG1fcGFyYW1ldGVyMyhwYXJhbWV0ZXIzKQotICAgICwgbV9wYXJhbWV0ZXI0KHBhcmFtZXRl
cjQpCi0gICAgLCBtX3BhcmFtZXRlcjUocGFyYW1ldGVyNSkKLSAgICAsIG1fcGFyYW1ldGVyNihw
YXJhbWV0ZXI2KQotICAgICwgbV9wYXJhbWV0ZXI3KHBhcmFtZXRlcjcpCi0gICAgLCBtX3BhcmFt
ZXRlcjgocGFyYW1ldGVyOCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIHZpcnR1YWwgdm9pZCBw
ZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgIHsKLSAgICAg
ICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9wYXJhbWV0ZXIxLCBtX3BhcmFtZXRlcjIsIG1fcGFy
YW1ldGVyMywgbV9wYXJhbWV0ZXI0LCBtX3BhcmFtZXRlcjUsIG1fcGFyYW1ldGVyNiwgbV9wYXJh
bWV0ZXI3LCBtX3BhcmFtZXRlcjgpOwotICAgIH0KLSAgICAKLXByaXZhdGU6Ci0gICAgTWV0aG9k
IG1fbWV0aG9kOwotICAgIFAxIG1fcGFyYW1ldGVyMTsKLSAgICBQMiBtX3BhcmFtZXRlcjI7Ci0g
ICAgUDMgbV9wYXJhbWV0ZXIzOwotICAgIFA0IG1fcGFyYW1ldGVyNDsKLSAgICBQNSBtX3BhcmFt
ZXRlcjU7Ci0gICAgUDYgbV9wYXJhbWV0ZXI2OwotICAgIFA3IG1fcGFyYW1ldGVyNzsKLSAgICBQ
OCBtX3BhcmFtZXRlcjg7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAx
PgotUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFj
a1Rhc2soCi0gICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSks
Ci0gICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCi17Ci0gICAgcmV0dXJuIEdlbmVyaWNUYXNrMTx0
eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMT46OmNyZWF0ZSgKLSAgICAg
ICAgbWV0aG9kLAotICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVy
MSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQ
MiwgdHlwZW5hbWUgTVAyPgotUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PiBjcmVhdGVDYWxsYmFja1Rhc2soCi0gICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIE1QMSwgTVAyKSwKLSAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDIm
IHBhcmFtZXRlcjIpCi17Ci0gICAgcmV0dXJuIEdlbmVyaWNUYXNrMjx0eXBlbmFtZSBDcm9zc1Ro
cmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+
OjpUeXBlLCBNUDI+OjpjcmVhdGUoCi0gICAgICAgIG1ldGhvZCwKLSAgICAgICAgQ3Jvc3NUaHJl
YWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVhZENvcGllcjxQMj46OmNv
cHkocGFyYW1ldGVyMikpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAx
LCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzPgot
UGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rh
c2soCi0gICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAy
LCBNUDMpLAotICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwg
Y29uc3QgUDMmIHBhcmFtZXRlcjMpCi17Ci0gICAgcmV0dXJuIEdlbmVyaWNUYXNrMzx0eXBlbmFt
ZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlw
ZSwgTVAzPjo6Y3JlYXRlKAotICAgICAgICBtZXRob2QsCi0gICAgICAgIENyb3NzVGhyZWFkQ29w
aWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBh
cmFtZXRlcjIpLAotICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVy
MykpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQ
MiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwg
dHlwZW5hbWUgTVA0PgotUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBj
cmVhdGVDYWxsYmFja1Rhc2soCi0gICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIE1QMSwgTVAyLCBNUDMsIE1QNCksCi0gICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsIGNv
bnN0IFAyJiBwYXJhbWV0ZXIyLCBjb25zdCBQMyYgcGFyYW1ldGVyMywgY29uc3QgUDQmIHBhcmFt
ZXRlcjQpCi17Ci0gICAgcmV0dXJuIEdlbmVyaWNUYXNrNDx0eXBlbmFtZSBDcm9zc1RocmVhZENv
cGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBl
LCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAotICAgICAg
ICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QND46OmNyZWF0ZSgKLSAg
ICAgICAgICAgIG1ldGhvZCwKLSAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29w
eShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAot
ICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLCBDcm9z
c1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCkpOwotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFt
ZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQ
NSwgdHlwZW5hbWUgTVA1PgotUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PiBjcmVhdGVDYWxsYmFja1Rhc2soCi0gICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1KSwKLSAgICBjb25zdCBQMSYgcGFyYW1l
dGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQ
NCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUpCi17Ci0gICAgcmV0dXJuIEdlbmVy
aWNUYXNrNTx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5h
bWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFk
Q29waWVyPFAzPjo6VHlwZSwgTVAzLAotICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGll
cjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+OjpUeXBlLCBN
UDU+OjpjcmVhdGUoCi0gICAgICAgICAgICBtZXRob2QsCi0gICAgICAgICAgICBDcm9zc1RocmVh
ZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29w
eShwYXJhbWV0ZXIyKSwKLSAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShw
YXJhbWV0ZXIzKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLAotICAg
ICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+Ojpjb3B5KHBhcmFtZXRlcjUpKTsKLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1l
IE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1Q
NCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNj4K
LVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tU
YXNrKAotICAgIHZvaWQgKCptZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1Q
MiwgTVAzLCBNUDQsIE1QNSwgTVA2KSwKLSAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwgY29uc3Qg
UDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQNCYgcGFyYW1ldGVy
NCwgY29uc3QgUDUmIHBhcmFtZXRlcjUsIGNvbnN0IFA2JiBwYXJhbWV0ZXI2KQotewotICAgIHJl
dHVybiBHZW5lcmljVGFzazY8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBN
UDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBD
cm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKLSAgICAgICAgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA1
Pjo6VHlwZSwgTVA1LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNj46OlR5cGUsIE1QNj46
OmNyZWF0ZSgKLSAgICAgICAgICAgIG1ldGhvZCwKLSAgICAgICAgICAgIENyb3NzVGhyZWFkQ29w
aWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBh
cmFtZXRlcjIpLAotICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFt
ZXRlcjMpLCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCi0gICAgICAg
ICAgICBDcm9zc1RocmVhZENvcGllcjxQNT46OmNvcHkocGFyYW1ldGVyNSksIENyb3NzVGhyZWFk
Q29waWVyPFA2Pjo6Y29weShwYXJhbWV0ZXI2KSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFAx
LCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0
eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBl
bmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDYsIHR5cGVuYW1lIFA3LCB0eXBlbmFt
ZSBNUDc+Ci1QYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNh
bGxiYWNrVGFzaygKLSAgICB2b2lkICgqbWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
TVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3KSwKLSAgICBjb25zdCBQMSYgcGFyYW1l
dGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQ
NCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUsIGNvbnN0IFA2JiBwYXJhbWV0ZXI2
LCBjb25zdCBQNyYgcGFyYW1ldGVyNykKLXsKLSAgICByZXR1cm4gR2VuZXJpY1Rhc2s3PHR5cGVu
YW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVh
ZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpU
eXBlLCBNUDMsCi0gICAgICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6VHlwZSwg
TVA0LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNT46OlR5cGUsIE1QNSwgdHlwZW5hbWUg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDY+OjpUeXBlLCBNUDYsCi0gICAgICAgIHR5cGVuYW1lIENyb3Nz
VGhyZWFkQ29waWVyPFA3Pjo6VHlwZSwgTVA3Pjo6Y3JlYXRlKAotICAgICAgICAgICAgbWV0aG9k
LAotICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBD
cm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCi0gICAgICAgICAgICBDcm9z
c1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksIENyb3NzVGhyZWFkQ29waWVyPFA0
Pjo6Y29weShwYXJhbWV0ZXI0KSwKLSAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFA1Pjo6
Y29weShwYXJhbWV0ZXI1KSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+Ojpjb3B5KHBhcmFtZXRlcjYp
LAotICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+Ojpjb3B5KHBhcmFtZXRlcjcpKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5
cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVu
YW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1l
IE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNywgdHlwZW5hbWUgUDgsIHR5cGVuYW1lIE1Q
OD4KLVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJh
Y2tUYXNrKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwg
TVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNywgTVA4KSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFAxJiBwYXJhbWV0
ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3QgUDMmIHBhcmFtZXRlcjMsIGNvbnN0IFA0
JiBwYXJhbWV0ZXI0LCBjb25zdCBQNSYgcGFyYW1ldGVyNSwgY29uc3QgUDYmIHBhcmFtZXRlcjYs
IGNvbnN0IFA3JiBwYXJhbWV0ZXI3LCBjb25zdCBQOCYgcGFyYW1ldGVyOCkKLXsKLSAgICByZXR1
cm4gR2VuZXJpY1Rhc2s4PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAx
LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jv
c3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDMsCi0gICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDQ+OjpUeXBlLCBNUDQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA1Pjo6VHlw
ZSwgTVA1LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNj46OlR5cGUsIE1QNiwKLSAgICB0
eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNz46OlR5cGUsIE1QNywgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDg+OjpUeXBlLCBNUDg+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29w
aWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBh
cmFtZXRlcjIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFA1Pjo6
Y29weShwYXJhbWV0ZXI1KSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+Ojpjb3B5KHBhcmFtZXRlcjYp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENyb3NzVGhyZWFkQ29waWVyPFA3Pjo6Y29weShwYXJhbWV0ZXI3KSwgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDg+Ojpjb3B5KHBhcmFtZXRlcjgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gR2VuZXJpY1Rhc2tfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5jcHAKaW5kZXggMWIxOTc3NS4uMzRjYzY5OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgot
I2luY2x1ZGUgIkdlbmVyaWNXb3JrZXJUYXNrLmgiCisjaW5jbHVkZSAiR2VuZXJpY1Rhc2suaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCBlZTA3NzFmLi4zNGZiZTc5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSAi
V29ya2VyU2NyaXB0TG9hZGVyLmgiCiAKLSNpbmNsdWRlICJHZW5lcmljV29ya2VyVGFzay5oIgor
I2luY2x1ZGUgIkdlbmVyaWNUYXNrLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCA5NmY5YjkxLi4wMDg5MWMxIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxMC0wNS0xNCAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1l
IEdlbmVyaWNXb3JrZXJUYXNrLmggdG8gR2VuZXJpY1Rhc2suaCBhbmQgbW92ZSBpdCB0byBkb20g
ZGlyZWN0b3J5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzkxMzUKKworICAgICAgICAqIHNyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcDoKKyAgICAg
ICAgKiBzcmMvV2ViV29ya2VyQmFzZS5jcHA6CisgICAgICAgICogc3JjL1dlYldvcmtlckNsaWVu
dEltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJJbXBsLmNwcDoKKwogMjAxMC0wNS0x
NCAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2hhcmVkV29ya2VySW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtl
ckltcGwuY3BwCmluZGV4IDkxNjM2ZDkuLjEyNWE1OGYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckltcGwuaCIKIAotI2luY2x1ZGUgIkdl
bmVyaWNXb3JrZXJUYXNrLmgiCisjaW5jbHVkZSAiR2VuZXJpY1Rhc2suaCIKICNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRD
aGFubmVsLmgiCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2Uu
Y3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcAppbmRleCAyYzRiNGY2
Li5iNTg3MjljIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2Uu
Y3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAKQEAgLTMxLDcg
KzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJXb3JrZXJCYXNlLmgi
CiAKLSNpbmNsdWRlICJHZW5lcmljV29ya2VyVGFzay5oIgorI2luY2x1ZGUgIkdlbmVyaWNUYXNr
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFubmVsLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1N
ZXNzYWdlUG9ydENoYW5uZWwuaCIKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJXb3JrZXJDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xp
ZW50SW1wbC5jcHAKaW5kZXggZDBkZGE4ZS4uN2E0YjhkMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAi
RXJyb3JFdmVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKLSNpbmNsdWRlICJHZW5lcmljV29ya2VyVGFzay5oIgorI2luY2x1ZGUgIkdlbmVy
aWNUYXNrLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBv
cnQuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydENoYW5uZWwuaCIKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViV29ya2VySW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YldvcmtlckltcGwuY3BwCmluZGV4IDViNWUwNTMuLjVhMjg0MDMgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViV29ya2VySW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJXb3JrZXJJbXBsLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiAjaW5jbHVkZSAiRGVkaWNh
dGVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlclRocmVhZC5oIgot
I2luY2x1ZGUgIkdlbmVyaWNXb3JrZXJUYXNrLmgiCisjaW5jbHVkZSAiR2VuZXJpY1Rhc2suaCIK
ICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAi
TWVzc2FnZVBvcnQuaCIK
</data>
<flag name="review"
          id="40453"
          type_id="1"
          status="-"
          setter="levin"
    />
    <flag name="commit-queue"
          id="40454"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56436</attachid>
            <date>2010-05-18 18:10:14 -0700</date>
            <delta_ts>2010-05-20 09:59:50 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>39135_2</filename>
            <type>text/plain</type>
            <size>57216</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWNjZTc3YS4uMGE1M2VkNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0wNS0xOCAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVuYW1lIEdlbmVyaWNXb3JrZXJUYXNrLmggdG8gQ3Jvc3NUaHJlYWRUYXNr
LmggYW5kIG1vdmUgaXQgdG8gZG9tIGRpcmVjdG9yeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MTM1CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5h
bToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGRvbS9Dcm9zc1RocmVhZFRhc2suaDogUmVuYW1lZCBmcm9tIFdlYkNvcmUv
d29ya2Vycy9HZW5lcmljV29ya2VyVGFzay5oLgorICAgICAgICAqIGh0bWwvRmlsZVN0cmVhbVBy
b3h5LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6Cisg
ICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6
CisgICAgICAgICogd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHA6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorCiAyMDEwLTA1LTE4ICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KaW5kZXggMzYxZGEwNC4uYzM4NGRlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC03NjIsNiArNzYyLDcgQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBcCiAJV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5oIFwKIAlXZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxn
b3JpdGhtcy5oIFwKKwlXZWJDb3JlL2RvbS9Dcm9zc1RocmVhZFRhc2suaCBcCiAJV2ViQ29yZS9k
b20vQ3VzdG9tRXZlbnQuY3BwIFwKIAlXZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oIFwKIAlXZWJD
b3JlL2RvbS9ET01Db3JlRXhjZXB0aW9uLmggXApAQCAtMjc3MCw3ICsyNzcxLDYgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5o
IFwKIAlXZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCBcCiAJV2ViQ29y
ZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oIFwKLQlXZWJDb3JlL3dvcmtlcnMvR2Vu
ZXJpY1dvcmtlclRhc2suaCBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgXAogCVdlYkNv
cmUvd29ya2Vycy9Xb3JrZXIuaCBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3Bw
IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggOWFiNzA3OS4uYTMzMThmOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEwOTYsNiArMTA5Niw3IEBACiAgICAg
ICAgICAgICAnZG9tL0NvbnRhaW5lck5vZGUuY3BwJywKICAgICAgICAgICAgICdkb20vQ29udGFp
bmVyTm9kZS5oJywKICAgICAgICAgICAgICdkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCcs
CisgICAgICAgICAgICAnZG9tL0Nyb3NzVGhyZWFkVGFzay5oJywKICAgICAgICAgICAgICdkb20v
Q3VzdG9tRXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vQ3VzdG9tRXZlbnQuaCcsCiAgICAg
ICAgICAgICAnZG9tL0RPTUNvcmVFeGNlcHRpb24uaCcsCkBAIC0zNzQ4LDcgKzM3NDksNiBAQAog
ICAgICAgICAgICAgJ3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oJywKICAgICAgICAg
ICAgICd3b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAnLAogICAgICAgICAgICAgJ3dv
cmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgnLAotICAgICAgICAgICAgJ3dvcmtlcnMvR2Vu
ZXJpY1dvcmtlclRhc2suaCcsCiAgICAgICAgICAgICAnd29ya2Vycy9TaGFyZWRXb3JrZXIuY3Bw
JywKICAgICAgICAgICAgICd3b3JrZXJzL1NoYXJlZFdvcmtlci5oJywKICAgICAgICAgICAgICd3
b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCmluZGV4IDEwNzMwM2IuLjcxMTFmM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagpAQCAtMjkzODksNiArMjkzODksMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxl
Pg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXENyb3NzVGhyZWFkVGFzay5o
Ig0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
ZG9tXENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uLmNwcCINCiAJCQkJPg0KIAkJCTwvRmls
ZT4NCkBAIC0zMDAzMywxMCArMzAwMzcsNiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZp
bGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlx3b3JrZXJzXEdlbmVyaWNXb3JrZXJUYXNrLmgiDQot
CQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlx3b3Jr
ZXJzXFNoYXJlZFdvcmtlci5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyZDU3NmQ2Li5kNmNjNTIxIDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjQyLDcgKzY0Miw3
IEBACiAJCTJFM0JDMTA4MTE3RDQ3OTgwMEI5NDA5QSAvKiBET01GaWxlRXJyb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFM0JDMTA2MTE3RDQ3OTgw
MEI5NDA5QSAvKiBET01GaWxlRXJyb3IuaCAqLzsgfTsKIAkJMkUzQkMxMDkxMTdENDc5ODAwQjk0
MDlBIC8qIERPTUZpbGVFcnJvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJFM0JDMTA3MTE3RDQ3OTgwMEI5NDA5QSAvKiBET01GaWxlRXJyb3IubW0g
Ki87IH07CiAJCTJFM0JDMTBCMTE3RDQ3QzgwMEI5NDA5QSAvKiBET01GaWxlRXJyb3JJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUzQkMx
MEExMTdENDdDODAwQjk0MDlBIC8qIERPTUZpbGVFcnJvckludGVybmFsLmggKi87IH07Ci0JCTJF
NDM0NjQ0MEY1NDZBODIwMEIwRjFCQSAvKiBHZW5lcmljV29ya2VyVGFzay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzIwRjU0NkE4MjAwQjBG
MUJBIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggKi87IH07CisJCTJFM0ZBQTA5MTFBMzZCRjEwMDU3
NjYyNCAvKiBDcm9zc1RocmVhZFRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJFM0ZBQTA4MTFBMzZCRjEwMDU3NjYyNCAvKiBDcm9zc1RocmVhZFRh
c2suaCAqLzsgfTsKIAkJMkU0MzQ2NDUwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzMzBGNTQ2
QTgyMDBCMEYxQkEgLyogV29ya2VyLmNwcCAqLzsgfTsKIAkJMkU0MzQ2NDYwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkU0MzQ2MzQwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5oICovOyB9OwogCQkyRTQz
NDY0ODBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzNjBGNTQ2QTgyMDBCMEYxQkEg
LyogV29ya2VyQ29udGV4dC5jcHAgKi87IH07CkBAIC02MTYxLDcgKzYxNjEsNyBAQAogCQkyRTNC
QzEwNjExN0Q0Nzk4MDBCOTQwOUEgLyogRE9NRmlsZUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTUZpbGVFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRTNCQzEwNzExN0Q0Nzk4MDBCOTQwOUEgLyogRE9NRmlsZUVycm9yLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRmlsZUVycm9yLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRTNCQzEwQTExN0Q0N0M4MDBCOTQwOUEgLyogRE9NRmls
ZUVycm9ySW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRmls
ZUVycm9ySW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkU0MzQ2MzIw
RjU0NkE4MjAwQjBGMUJBIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEdlbmVyaWNXb3JrZXJUYXNrLmg7IHBhdGggPSB3b3JrZXJzL0dlbmVy
aWNXb3JrZXJUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFM0ZBQTA4MTFB
MzZCRjEwMDU3NjYyNCAvKiBDcm9zc1RocmVhZFRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ3Jvc3NUaHJlYWRUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJFNDM0NjMzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV29ya2VyLmNwcDsgcGF0aCA9IHdvcmtlcnMvV29ya2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU0MzQ2MzQwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXb3JrZXIu
aDsgcGF0aCA9IHdvcmtlcnMvV29ya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJFNDM0NjM1MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
bmFtZSA9IFdvcmtlci5pZGw7IHBhdGggPSB3b3JrZXJzL1dvcmtlci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMTIyNCw3ICsxMTIyNCw2IEBACiAJCQkJNDFBM0Q1OEQxMDFD
MTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oICovLAogCQkJCTQxNjdFQkYz
MTAyOTYyQkEwMDNEMjUyQSAvKiBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAgKi8s
CiAJCQkJNDE2N0VCRjQxMDI5NjJCQTAwM0QyNTJBIC8qIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBv
c2l0b3J5LmggKi8sCi0JCQkJMkU0MzQ2MzIwRjU0NkE4MjAwQjBGMUJBIC8qIEdlbmVyaWNXb3Jr
ZXJUYXNrLmggKi8sCiAJCQkJNDFFMUIxQ0QwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtl
ci5jcHAgKi8sCiAJCQkJNDFFMUIxQ0UwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5o
ICovLAogCQkJCTQxRTFCMUNGMEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuaWRsICov
LApAQCAtMTY0NTcsNiArMTY0NTYsNyBAQAogCQkJCUE4MTg3MjE0MDk3N0QzQzAwMDU4MjZEOSAv
KiBDb250YWluZXJOb2RlLmNwcCAqLywKIAkJCQlBODE4NzIxMTA5NzdEM0MwMDA1ODI2RDkgLyog
Q29udGFpbmVyTm9kZS5oICovLAogCQkJCUUxQTE0NzA3MTExMDJCMTUwMEVFQzBGMyAvKiBDb250
YWluZXJOb2RlQWxnb3JpdGhtcy5oICovLAorCQkJCTJFM0ZBQTA4MTFBMzZCRjEwMDU3NjYyNCAv
KiBDcm9zc1RocmVhZFRhc2suaCAqLywKIAkJCQlBOEM0QTdGODA5RDU2MzI3MDAwM0FDOEQgLyog
Q1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24uY3BwICovLAogCQkJCUE4QzRBN0Y3MDlENTYz
MjcwMDAzQUM4RCAvKiBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbi5oICovLAogCQkJCTYy
Q0QzMjU2MTE1N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVudC5jcHAgKi8sCkBAIC0xNzc4OCw3
ICsxNzc4OCw2IEBACiAJCQkJQzBDMDU0Q0MxMTE4QzhFNDAwQ0UyNjM2IC8qIGdlbmVyYXRlLWJp
bmRpbmdzLnBsIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyM0YwREIwREFGRjRBNDAwOUZEQzkxIC8q
IEdlbmVyYXRlZEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0UwNEM4QTBEQUZGN0EwMDA3
QTBGNDEgLyogR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQkyRTQzNDY0NDBGNTQ2QTgy
MDBCMEYxQkEgLyogR2VuZXJpY1dvcmtlclRhc2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZFODBE
N0M2MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM1NkNCMjIxMEQ1QUM4MDAwQTc3QzY0IC8qIEdlb2xvY2F0aW9uQ29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM1NkNCMjMxMEQ1QUM4MDAwQTc3QzY0IC8qIEdlb2xvY2F0aW9uQ29u
dHJvbGxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xOTI3MCw2ICsxOTI2OSw3IEBACiAJ
CQkJOTdFOEIzNTcxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUw1TGV4ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk3RThCM0MzMTFBMjg5MDgwMDE2OTQwOSAvKiBIVE1MNVRva2VuLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODcxMDM4QjExQTI5NDcwMDBEQkQ1MEUgLyogSFRNTDVUb2tlbml6ZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTJFM0ZBQTA5MTFBMzZCRjEwMDU3NjYyNCAvKiBDcm9zc1RocmVh
ZFRhc2suaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vQ3Jvc3NUaHJl
YWRUYXNrLmggYi9XZWJDb3JlL2RvbS9Dcm9zc1RocmVhZFRhc2suaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi40MjI3OWNmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9k
b20vQ3Jvc3NUaHJlYWRUYXNrLmgKQEAgLTAsMCArMSw0NzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ3Jvc3NU
aHJlYWRUYXNrX2gKKyNkZWZpbmUgQ3Jvc3NUaHJlYWRUYXNrX2gKKworI2luY2x1ZGUgIkNyb3Nz
VGhyZWFkQ29waWVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2lu
Y2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1R5cGVUcmFpdHMuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisvLyBUcmFpdHMgZm9yIHRoZSBHZW5lcmljVGFzay4KK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljVGFza1RyYWl0cyB7CisgICAgdHlwZWRlZiBjb25zdCBU
JiBQYXJhbVR5cGU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY1Rh
c2tUcmFpdHM8VCo+IHsKKyAgICB0eXBlZGVmIFQqIFBhcmFtVHlwZTsKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljVGFza1RyYWl0czxQYXNzUmVmUHRyPFQ+ID4gewor
ICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxUPiBQYXJhbVR5cGU7Cit9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY1Rhc2tUcmFpdHM8UGFzc093blB0cjxUPiA+IHsKKyAgICB0
eXBlZGVmIFBhc3NPd25QdHI8VD4gUGFyYW1UeXBlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
UDEsIHR5cGVuYW1lIE1QMT4KK2NsYXNzIEdlbmVyaWNUYXNrMSA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQgKCpNZXRob2Qp
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEpOworICAgIHR5cGVkZWYgR2VuZXJpY1Rhc2sx
PFAxLCBNUDE+IEdlbmVyaWNUYXNrOworICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tU
cmFpdHM8UDE+OjpQYXJhbVR5cGUgUGFyYW0xOworCisgICAgc3RhdGljIFBhc3NPd25QdHI8R2Vu
ZXJpY1Rhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSkKKyAgICB7
CisgICAgICAgIHJldHVybiBuZXcgR2VuZXJpY1Rhc2sobWV0aG9kLCBwYXJhbWV0ZXIxKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgR2VuZXJpY1Rhc2sxKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBw
YXJhbWV0ZXIxKQorICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKKyAgICAgICAgLCBtX3BhcmFt
ZXRlcjEocGFyYW1ldGVyMSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBlcmZv
cm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICAo
Km1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBNZXRob2QgbV9tZXRob2Q7CisgICAgUDEgbV9wYXJhbWV0ZXIxOworfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMj4KK2Ns
YXNzIEdlbmVyaWNUYXNrMiA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQgKCpNZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBNUDEsIE1QMik7CisgICAgdHlwZWRlZiBHZW5lcmljVGFzazI8UDEsIE1QMSwgUDIsIE1Q
Mj4gR2VuZXJpY1Rhc2s7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQ
MT46OlBhcmFtVHlwZSBQYXJhbTE7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1Ry
YWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxHZW5l
cmljVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIg
cGFyYW1ldGVyMikKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgR2VuZXJpY1Rhc2sobWV0aG9k
LCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR2VuZXJp
Y1Rhc2syKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVy
MikKKyAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCisgICAgICAgICwgbV9wYXJhbWV0ZXIxKHBh
cmFtZXRlcjEpCisgICAgICAgICwgbV9wYXJhbWV0ZXIyKHBhcmFtZXRlcjIpCisgICAgeworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9wYXJhbWV0
ZXIxLCBtX3BhcmFtZXRlcjIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNZXRob2QgbV9tZXRo
b2Q7CisgICAgUDEgbV9wYXJhbWV0ZXIxOworICAgIFAyIG1fcGFyYW1ldGVyMjsKK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBN
UDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDM+CitjbGFzcyBHZW5lcmljVGFzazMgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB2
b2lkICgqTWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMyk7Cisg
ICAgdHlwZWRlZiBHZW5lcmljVGFzazM8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMz4gR2VuZXJp
Y1Rhc2s7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMT46OlBhcmFt
VHlwZSBQYXJhbTE7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMj46
OlBhcmFtVHlwZSBQYXJhbTI7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0
czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxHZW5lcmlj
VGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFy
YW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IEdl
bmVyaWNUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMyk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIEdlbmVyaWNUYXNrMyhNZXRob2QgbWV0aG9kLCBQYXJhbTEg
cGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzKQorICAgICAg
ICA6IG1fbWV0aG9kKG1ldGhvZCkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkK
KyAgICAgICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKKyAgICAgICAgLCBtX3BhcmFtZXRl
cjMocGFyYW1ldGVyMykKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1U
YXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICAoKm1f
bWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIz
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTWV0aG9kIG1fbWV0aG9kOworICAgIFAxIG1fcGFy
YW1ldGVyMTsKKyAgICBQMiBtX3BhcmFtZXRlcjI7CisgICAgUDMgbV9wYXJhbWV0ZXIzOworfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVu
YW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1l
IE1QND4KK2NsYXNzIEdlbmVyaWNUYXNrNCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQgKCpNZXRob2QpKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQpOworICAgIHR5cGVkZWYgR2VuZXJpY1Rh
c2s0PFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBNUDMsIFA0LCBNUDQ+IEdlbmVyaWNUYXNrOworICAg
IHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDE+OjpQYXJhbVR5cGUgUGFyYW0x
OworICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDI+OjpQYXJhbVR5cGUg
UGFyYW0yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDM+OjpQYXJh
bVR5cGUgUGFyYW0zOworICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDQ+
OjpQYXJhbVR5cGUgUGFyYW00OworCisgICAgc3RhdGljIFBhc3NPd25QdHI8R2VuZXJpY1Rhc2s+
IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRl
cjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCkKKyAgICB7CisgICAgICAg
IHJldHVybiBuZXcgR2VuZXJpY1Rhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBw
YXJhbWV0ZXIzLCBwYXJhbWV0ZXI0KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR2VuZXJpY1Rh
c2s0KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwg
UGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0KQorICAgICAgICA6IG1fbWV0aG9k
KG1ldGhvZCkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKKyAgICAgICAgLCBt
X3BhcmFtZXRlcjIocGFyYW1ldGVyMikKKyAgICAgICAgLCBtX3BhcmFtZXRlcjMocGFyYW1ldGVy
MykKKyAgICAgICAgLCBtX3BhcmFtZXRlcjQocGFyYW1ldGVyNCkKKyAgICB7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCisgICAgeworICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1f
cGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBNZXRob2QgbV9tZXRob2Q7CisgICAgUDEgbV9wYXJhbWV0ZXIxOworICAgIFAyIG1f
cGFyYW1ldGVyMjsKKyAgICBQMyBtX3BhcmFtZXRlcjM7CisgICAgUDQgbV9wYXJhbWV0ZXI0Owor
fTsKKwordGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5
cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVu
YW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNT4KK2NsYXNzIEdlbmVyaWNUYXNrNSA6
IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIHZvaWQgKCpNZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAz
LCBNUDQsIE1QNSk7CisgICAgdHlwZWRlZiBHZW5lcmljVGFzazU8UDEsIE1QMSwgUDIsIE1QMiwg
UDMsIE1QMywgUDQsIE1QNCwgUDUsIE1QNT4gR2VuZXJpY1Rhc2s7CisgICAgdHlwZWRlZiB0eXBl
bmFtZSBHZW5lcmljVGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7CisgICAgdHlwZWRl
ZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7CisgICAg
dHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7
CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQND46OlBhcmFtVHlwZSBQ
YXJhbTQ7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQNT46OlBhcmFt
VHlwZSBQYXJhbTU7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxHZW5lcmljVGFzaz4gY3JlYXRl
KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFy
YW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBuZXcgR2VuZXJpY1Rhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBw
YXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1KTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgR2VuZXJpY1Rhc2s1KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0
ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0
ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSkKKyAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCisgICAg
ICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCisgICAgICAgICwgbV9wYXJhbWV0ZXIyKHBh
cmFtZXRlcjIpCisgICAgICAgICwgbV9wYXJhbWV0ZXIzKHBhcmFtZXRlcjMpCisgICAgICAgICwg
bV9wYXJhbWV0ZXI0KHBhcmFtZXRlcjQpCisgICAgICAgICwgbV9wYXJhbWV0ZXI1KHBhcmFtZXRl
cjUpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgKCptX21ldGhvZCkoY29u
dGV4dCwgbV9wYXJhbWV0ZXIxLCBtX3BhcmFtZXRlcjIsIG1fcGFyYW1ldGVyMywgbV9wYXJhbWV0
ZXI0LCBtX3BhcmFtZXRlcjUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNZXRob2QgbV9tZXRo
b2Q7CisgICAgUDEgbV9wYXJhbWV0ZXIxOworICAgIFAyIG1fcGFyYW1ldGVyMjsKKyAgICBQMyBt
X3BhcmFtZXRlcjM7CisgICAgUDQgbV9wYXJhbWV0ZXI0OworICAgIFA1IG1fcGFyYW1ldGVyNTsK
K307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0
eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBl
bmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFt
ZSBNUDY+CitjbGFzcyBHZW5lcmljVGFzazYgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzayB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB2b2lkICgqTWV0aG9kKShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNik7CisgICAgdHlwZWRl
ZiBHZW5lcmljVGFzazY8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQsIE1QNCwgUDUsIE1Q
NSwgUDYsIE1QNj4gR2VuZXJpY1Rhc2s7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFz
a1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5l
cmljVGFza1RyYWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7CisgICAgdHlwZWRlZiB0eXBlbmFt
ZSBHZW5lcmljVGFza1RyYWl0czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7CisgICAgdHlwZWRlZiB0
eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQND46OlBhcmFtVHlwZSBQYXJhbTQ7CisgICAgdHlw
ZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQNT46OlBhcmFtVHlwZSBQYXJhbTU7Cisg
ICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQNj46OlBhcmFtVHlwZSBQYXJh
bTY7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxHZW5lcmljVGFzaz4gY3JlYXRlKE1ldGhvZCBt
ZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFt
ZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSwgUGFyYW02IHBhcmFt
ZXRlcjYpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNUYXNrKG1ldGhvZCwgcGFy
YW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSwg
cGFyYW1ldGVyNik7CisgICAgfQorCitwcml2YXRlOgorICAgIEdlbmVyaWNUYXNrNihNZXRob2Qg
bWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJh
bWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJh
bWV0ZXI2KQorICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKKyAgICAgICAgLCBtX3BhcmFtZXRl
cjEocGFyYW1ldGVyMSkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKKyAgICAg
ICAgLCBtX3BhcmFtZXRlcjMocGFyYW1ldGVyMykKKyAgICAgICAgLCBtX3BhcmFtZXRlcjQocGFy
YW1ldGVyNCkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjUocGFyYW1ldGVyNSkKKyAgICAgICAgLCBt
X3BhcmFtZXRlcjYocGFyYW1ldGVyNikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAg
ICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9w
YXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVyNSwgbV9wYXJhbWV0ZXI2KTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgTWV0aG9kIG1fbWV0aG9kOworICAgIFAxIG1fcGFyYW1ldGVy
MTsKKyAgICBQMiBtX3BhcmFtZXRlcjI7CisgICAgUDMgbV9wYXJhbWV0ZXIzOworICAgIFA0IG1f
cGFyYW1ldGVyNDsKKyAgICBQNSBtX3BhcmFtZXRlcjU7CisgICAgUDYgbV9wYXJhbWV0ZXI2Owor
fTsKKwordGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5
cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVu
YW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1l
IE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNz4KK2NsYXNzIEdlbmVyaWNUYXNrNyA6IHB1
YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IHZvaWQgKCpNZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBN
UDQsIE1QNSwgTVA2LCBNUDcpOworICAgIHR5cGVkZWYgR2VuZXJpY1Rhc2s3PFAxLCBNUDEsIFAy
LCBNUDIsIFAzLCBNUDMsIFA0LCBNUDQsIFA1LCBNUDUsIFA2LCBNUDYsIFA3LCBNUDc+IEdlbmVy
aWNUYXNrOworICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDE+OjpQYXJh
bVR5cGUgUGFyYW0xOworICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDI+
OjpQYXJhbVR5cGUgUGFyYW0yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFp
dHM8UDM+OjpQYXJhbVR5cGUgUGFyYW0zOworICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rh
c2tUcmFpdHM8UDQ+OjpQYXJhbVR5cGUgUGFyYW00OworICAgIHR5cGVkZWYgdHlwZW5hbWUgR2Vu
ZXJpY1Rhc2tUcmFpdHM8UDU+OjpQYXJhbVR5cGUgUGFyYW01OworICAgIHR5cGVkZWYgdHlwZW5h
bWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDY+OjpQYXJhbVR5cGUgUGFyYW02OworICAgIHR5cGVkZWYg
dHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDc+OjpQYXJhbVR5cGUgUGFyYW03OworCisgICAg
c3RhdGljIFBhc3NPd25QdHI8R2VuZXJpY1Rhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJh
bTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJh
bTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2LCBQYXJh
bTcgcGFyYW1ldGVyNykKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgR2VuZXJpY1Rhc2sobWV0
aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJh
bWV0ZXI1LCBwYXJhbWV0ZXI2LCBwYXJhbWV0ZXI3KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
R2VuZXJpY1Rhc2s3KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFy
YW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFy
YW1ldGVyNSwgUGFyYW02IHBhcmFtZXRlcjYsIFBhcmFtNyBwYXJhbWV0ZXI3KQorICAgICAgICA6
IG1fbWV0aG9kKG1ldGhvZCkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKKyAg
ICAgICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKKyAgICAgICAgLCBtX3BhcmFtZXRlcjMo
cGFyYW1ldGVyMykKKyAgICAgICAgLCBtX3BhcmFtZXRlcjQocGFyYW1ldGVyNCkKKyAgICAgICAg
LCBtX3BhcmFtZXRlcjUocGFyYW1ldGVyNSkKKyAgICAgICAgLCBtX3BhcmFtZXRlcjYocGFyYW1l
dGVyNikKKyAgICAgICAgLCBtX3BhcmFtZXRlcjcocGFyYW1ldGVyNykKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCisgICAgeworICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEs
IG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVyNSwg
bV9wYXJhbWV0ZXI2LCBtX3BhcmFtZXRlcjcpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNZXRo
b2QgbV9tZXRob2Q7CisgICAgUDEgbV9wYXJhbWV0ZXIxOworICAgIFAyIG1fcGFyYW1ldGVyMjsK
KyAgICBQMyBtX3BhcmFtZXRlcjM7CisgICAgUDQgbV9wYXJhbWV0ZXI0OworICAgIFA1IG1fcGFy
YW1ldGVyNTsKKyAgICBQNiBtX3BhcmFtZXRlcjY7CisgICAgUDcgbV9wYXJhbWV0ZXI3OworfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVu
YW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1l
IE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1Q
NiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNywgdHlwZW5hbWUgUDgsIHR5cGVuYW1lIE1QOD4K
K2NsYXNzIEdlbmVyaWNUYXNrOCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQgKCpNZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcsIE1QOCk7CisgICAgdHlw
ZWRlZiBHZW5lcmljVGFzazg8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQsIE1QNCwgUDUs
IE1QNSwgUDYsIE1QNiwgUDcsIE1QNywgUDgsIE1QOD4gR2VuZXJpY1Rhc2s7CisgICAgdHlwZWRl
ZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7CisgICAg
dHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7
CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMz46OlBhcmFtVHlwZSBQ
YXJhbTM7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQND46OlBhcmFt
VHlwZSBQYXJhbTQ7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQNT46
OlBhcmFtVHlwZSBQYXJhbTU7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0
czxQNj46OlBhcmFtVHlwZSBQYXJhbTY7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFz
a1RyYWl0czxQNz46OlBhcmFtVHlwZSBQYXJhbTc7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5l
cmljVGFza1RyYWl0czxQOD46OlBhcmFtVHlwZSBQYXJhbTg7CisgICAgCisgICAgc3RhdGljIFBh
c3NPd25QdHI8R2VuZXJpY1Rhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1l
dGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1l
dGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2LCBQYXJhbTcgcGFyYW1l
dGVyNywgUGFyYW04IHBhcmFtZXRlcjgpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IEdlbmVy
aWNUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1l
dGVyNCwgcGFyYW1ldGVyNSwgcGFyYW1ldGVyNiwgcGFyYW1ldGVyNywgcGFyYW1ldGVyOCk7Cisg
ICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBHZW5lcmljVGFzazgoTWV0aG9kIG1ldGhvZCwgUGFy
YW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFy
YW00IHBhcmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNiwgUGFy
YW03IHBhcmFtZXRlcjcsIFBhcmFtOCBwYXJhbWV0ZXI4KQorICAgIDogbV9tZXRob2QobWV0aG9k
KQorICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCisgICAgLCBtX3BhcmFtZXRlcjIocGFy
YW1ldGVyMikKKyAgICAsIG1fcGFyYW1ldGVyMyhwYXJhbWV0ZXIzKQorICAgICwgbV9wYXJhbWV0
ZXI0KHBhcmFtZXRlcjQpCisgICAgLCBtX3BhcmFtZXRlcjUocGFyYW1ldGVyNSkKKyAgICAsIG1f
cGFyYW1ldGVyNihwYXJhbWV0ZXI2KQorICAgICwgbV9wYXJhbWV0ZXI3KHBhcmFtZXRlcjcpCisg
ICAgLCBtX3BhcmFtZXRlcjgocGFyYW1ldGVyOCkKKyAgICB7CisgICAgfQorICAgIAorICAgIHZp
cnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQor
ICAgIHsKKyAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9wYXJhbWV0ZXIxLCBtX3BhcmFt
ZXRlcjIsIG1fcGFyYW1ldGVyMywgbV9wYXJhbWV0ZXI0LCBtX3BhcmFtZXRlcjUsIG1fcGFyYW1l
dGVyNiwgbV9wYXJhbWV0ZXI3LCBtX3BhcmFtZXRlcjgpOworICAgIH0KKyAgICAKK3ByaXZhdGU6
CisgICAgTWV0aG9kIG1fbWV0aG9kOworICAgIFAxIG1fcGFyYW1ldGVyMTsKKyAgICBQMiBtX3Bh
cmFtZXRlcjI7CisgICAgUDMgbV9wYXJhbWV0ZXIzOworICAgIFA0IG1fcGFyYW1ldGVyNDsKKyAg
ICBQNSBtX3BhcmFtZXRlcjU7CisgICAgUDYgbV9wYXJhbWV0ZXI2OworICAgIFA3IG1fcGFyYW1l
dGVyNzsKKyAgICBQOCBtX3BhcmFtZXRlcjg7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwg
dHlwZW5hbWUgTVAxPgorUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBj
cmVhdGVDYWxsYmFja1Rhc2soCisgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIE1QMSksCisgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCit7CisgICAgcmV0dXJuIEdl
bmVyaWNUYXNrMTx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMT46OmNy
ZWF0ZSgKKyAgICAgICAgbWV0aG9kLAorICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNv
cHkocGFyYW1ldGVyMSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAx
LCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyPgorUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCisgICAgdm9pZCAoKm1ldGhvZCkoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyKSwKKyAgICBjb25zdCBQMSYgcGFyYW1ldGVy
MSwgY29uc3QgUDImIHBhcmFtZXRlcjIpCit7CisgICAgcmV0dXJuIEdlbmVyaWNUYXNrMjx0eXBl
bmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJl
YWRDb3BpZXI8UDI+OjpUeXBlLCBNUDI+OjpjcmVhdGUoCisgICAgICAgIG1ldGhvZCwKKyAgICAg
ICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVhZENv
cGllcjxQMj46OmNvcHkocGFyYW1ldGVyMikpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwg
dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlw
ZW5hbWUgTVAzPgorUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVh
dGVDYWxsYmFja1Rhc2soCisgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIE1QMSwgTVAyLCBNUDMpLAorICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYg
cGFyYW1ldGVyMiwgY29uc3QgUDMmIHBhcmFtZXRlcjMpCit7CisgICAgcmV0dXJuIEdlbmVyaWNU
YXNrMzx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29w
aWVyPFAzPjo6VHlwZSwgTVAzPjo6Y3JlYXRlKAorICAgICAgICBtZXRob2QsCisgICAgICAgIENy
b3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAorICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMz46OmNv
cHkocGFyYW1ldGVyMykpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAx
LCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0
eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0PgorUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCisgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMsIE1QNCksCisgICAgY29uc3QgUDEmIHBh
cmFtZXRlcjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLCBjb25zdCBQMyYgcGFyYW1ldGVyMywgY29u
c3QgUDQmIHBhcmFtZXRlcjQpCit7CisgICAgcmV0dXJuIEdlbmVyaWNUYXNrNDx0eXBlbmFtZSBD
cm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwg
TVAzLAorICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QND46
OmNyZWF0ZSgKKyAgICAgICAgICAgIG1ldGhvZCwKKyAgICAgICAgICAgIENyb3NzVGhyZWFkQ29w
aWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBh
cmFtZXRlcjIpLAorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFt
ZXRlcjMpLCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCkpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUg
TVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0
LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1PgorUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCisgICAgdm9pZCAoKm1ldGhvZCkoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1KSwKKyAgICBjb25z
dCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0
ZXIzLCBjb25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUpCit7CisgICAg
cmV0dXJuIEdlbmVyaWNUYXNrNTx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUs
IE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1l
IENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAorICAgICAgICB0eXBlbmFtZSBDcm9z
c1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDU+OjpUeXBlLCBNUDU+OjpjcmVhdGUoCisgICAgICAgICAgICBtZXRob2QsCisgICAgICAgICAg
ICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29w
aWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKKyAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVy
PFAzPjo6Y29weShwYXJhbWV0ZXIzKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFt
ZXRlcjQpLAorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+Ojpjb3B5KHBhcmFtZXRl
cjUpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUg
UDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQs
IHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5
cGVuYW1lIE1QNj4KK1Bhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3Jl
YXRlQ2FsbGJhY2tUYXNrKAorICAgIHZvaWQgKCptZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2KSwKKyAgICBjb25zdCBQMSYgcGFyYW1l
dGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQ
NCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUsIGNvbnN0IFA2JiBwYXJhbWV0ZXI2
KQoreworICAgIHJldHVybiBHZW5lcmljVGFzazY8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAy
LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKKyAgICAgICAgdHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQsIHR5cGVuYW1lIENyb3NzVGhy
ZWFkQ29waWVyPFA1Pjo6VHlwZSwgTVA1LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNj46
OlR5cGUsIE1QNj46OmNyZWF0ZSgKKyAgICAgICAgICAgIG1ldGhvZCwKKyAgICAgICAgICAgIENy
b3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+
Ojpjb3B5KHBhcmFtZXRlcjMpLCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVy
NCksCisgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQNT46OmNvcHkocGFyYW1ldGVyNSks
IENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6Y29weShwYXJhbWV0ZXI2KSk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5
cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVu
YW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDYsIHR5cGVuYW1l
IFA3LCB0eXBlbmFtZSBNUDc+CitQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKKyAgICB2b2lkICgqbWV0aG9kKShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3KSwKKyAgICBjb25z
dCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0
ZXIzLCBjb25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUsIGNvbnN0IFA2
JiBwYXJhbWV0ZXI2LCBjb25zdCBQNyYgcGFyYW1ldGVyNykKK3sKKyAgICByZXR1cm4gR2VuZXJp
Y1Rhc2s3PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFt
ZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDM+OjpUeXBlLCBNUDMsCisgICAgICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVy
PFA0Pjo6VHlwZSwgTVA0LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNT46OlR5cGUsIE1Q
NSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+OjpUeXBlLCBNUDYsCisgICAgICAgIHR5
cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA3Pjo6VHlwZSwgTVA3Pjo6Y3JlYXRlKAorICAgICAg
ICAgICAgbWV0aG9kLAorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBh
cmFtZXRlcjEpLCBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCisgICAg
ICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksIENyb3NzVGhy
ZWFkQ29waWVyPFA0Pjo6Y29weShwYXJhbWV0ZXI0KSwKKyAgICAgICAgICAgIENyb3NzVGhyZWFk
Q29waWVyPFA1Pjo6Y29weShwYXJhbWV0ZXI1KSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+Ojpjb3B5
KHBhcmFtZXRlcjYpLAorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+Ojpjb3B5KHBh
cmFtZXRlcjcpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlw
ZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5h
bWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUg
UDYsIHR5cGVuYW1lIE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNywgdHlwZW5hbWUgUDgs
IHR5cGVuYW1lIE1QOD4KK1Bhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4g
Y3JlYXRlQ2FsbGJhY2tUYXNrKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNywgTVA4KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3QgUDMmIHBhcmFtZXRl
cjMsIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQNSYgcGFyYW1ldGVyNSwgY29uc3QgUDYm
IHBhcmFtZXRlcjYsIGNvbnN0IFA3JiBwYXJhbWV0ZXI3LCBjb25zdCBQOCYgcGFyYW1ldGVyOCkK
K3sKKyAgICByZXR1cm4gR2VuZXJpY1Rhc2s4PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAx
Pjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwg
dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDMsCisgICAgdHlwZW5hbWUg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29w
aWVyPFA1Pjo6VHlwZSwgTVA1LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNj46OlR5cGUs
IE1QNiwKKyAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNz46OlR5cGUsIE1QNywgdHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDg+OjpUeXBlLCBNUDg+OjpjcmVhdGUoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENy
b3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0
ZXIzKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzVGhyZWFk
Q29waWVyPFA1Pjo6Y29weShwYXJhbWV0ZXI1KSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+Ojpjb3B5
KHBhcmFtZXRlcjYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFA3Pjo6Y29weShwYXJhbWV0ZXI3KSwgQ3Jv
c3NUaHJlYWRDb3BpZXI8UDg+Ojpjb3B5KHBhcmFtZXRlcjgpKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ3Jvc3NUaHJlYWRUYXNrX2gKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9GaWxlU3RyZWFtUHJveHkuY3BwIGIvV2ViQ29yZS9odG1sL0ZpbGVTdHJlYW1Q
cm94eS5jcHAKaW5kZXggNmI0MWYzMi4uZWI5OWNmMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0ZpbGVTdHJlYW1Qcm94eS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0ZpbGVTdHJlYW1Qcm94eS5j
cHAKQEAgLTM1LDEwICszNSwxMCBAQAogI2luY2x1ZGUgIkZpbGVTdHJlYW1Qcm94eS5oIgogCiAj
aW5jbHVkZSAiQmxvYi5oIgorI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1ZGUg
IkZpbGVTdHJlYW0uaCIKICNpbmNsdWRlICJGaWxlVGhyZWFkLmgiCiAjaW5jbHVkZSAiRmlsZVRo
cmVhZFRhc2suaCIKLSNpbmNsdWRlICJHZW5lcmljV29ya2VyVGFzay5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1dl
YkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDI1ODM0OTguLjQ3
ODlhMDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIu
Y3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0z
NCw3ICszNCw3IEBACiAKICNpbmNsdWRlICJXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgiCiAKLSNp
bmNsdWRlICJHZW5lcmljV29ya2VyVGFzay5oIgorI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5o
IgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3Qu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dl
YnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvV2ViQ29yZS93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBmZDg2
NjA0Li5mOGQxMjMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogI2luY2x1
ZGUgIldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgiCiAKLSNpbmNsdWRlICJHZW5l
cmljV29ya2VyVGFzay5oIgorI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgog
I2luY2x1ZGUgIlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oIgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNw
cCBiL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKaW5k
ZXggODhhZWEyZC4uODE4NmYzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRT
aGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNo
YXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCkBAIC0zNSw4ICszNSw4IEBACiAjaW5jbHVkZSAiRGVm
YXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgorI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
Ci0jaW5jbHVkZSAiR2VuZXJpY1dvcmtlclRhc2suaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBv
cnQuaCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9HZW5lcmljV29ya2VyVGFzay5oIGIv
V2ViQ29yZS93b3JrZXJzL0dlbmVyaWNXb3JrZXJUYXNrLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGFkMTZiNDUuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS93b3JrZXJzL0dlbmVyaWNX
b3JrZXJUYXNrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NzcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOS0yMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBH
ZW5lcmljVGFza19oCi0jZGVmaW5lIEdlbmVyaWNUYXNrX2gKLQotI2luY2x1ZGUgIkNyb3NzVGhy
ZWFkQ29waWVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1
ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1R5cGVUcmFpdHMuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi0vLyBUcmFpdHMgZm9yIHRoZSBHZW5lcmljVGFzay4KLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBHZW5lcmljVGFza1RyYWl0cyB7Ci0gICAgdHlwZWRlZiBjb25zdCBUJiBQ
YXJhbVR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY1Rhc2tU
cmFpdHM8VCo+IHsKLSAgICB0eXBlZGVmIFQqIFBhcmFtVHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljVGFza1RyYWl0czxQYXNzUmVmUHRyPFQ+ID4gewotICAg
IHR5cGVkZWYgUGFzc1JlZlB0cjxUPiBQYXJhbVR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgR2VuZXJpY1Rhc2tUcmFpdHM8UGFzc093blB0cjxUPiA+IHsKLSAgICB0eXBl
ZGVmIFBhc3NPd25QdHI8VD4gUGFyYW1UeXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUDEs
IHR5cGVuYW1lIE1QMT4KLWNsYXNzIEdlbmVyaWNUYXNrMSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQgKCpNZXRob2QpKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEpOwotICAgIHR5cGVkZWYgR2VuZXJpY1Rhc2sxPFAx
LCBNUDE+IEdlbmVyaWNUYXNrOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFp
dHM8UDE+OjpQYXJhbVR5cGUgUGFyYW0xOwotCi0gICAgc3RhdGljIFBhc3NPd25QdHI8R2VuZXJp
Y1Rhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBuZXcgR2VuZXJpY1Rhc2sobWV0aG9kLCBwYXJhbWV0ZXIxKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgR2VuZXJpY1Rhc2sxKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJh
bWV0ZXIxKQotICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKLSAgICAgICAgLCBtX3BhcmFtZXRl
cjEocGFyYW1ldGVyMSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1U
YXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgewotICAgICAgICAoKm1f
bWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBN
ZXRob2QgbV9tZXRob2Q7Ci0gICAgUDEgbV9wYXJhbWV0ZXIxOwotfTsKLQotdGVtcGxhdGU8dHlw
ZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMj4KLWNsYXNz
IEdlbmVyaWNUYXNrMiA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKLXB1
YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQgKCpNZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBNUDEsIE1QMik7Ci0gICAgdHlwZWRlZiBHZW5lcmljVGFzazI8UDEsIE1QMSwgUDIsIE1QMj4g
R2VuZXJpY1Rhc2s7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMT46
OlBhcmFtVHlwZSBQYXJhbTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0
czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7Ci0KLSAgICBzdGF0aWMgUGFzc093blB0cjxHZW5lcmlj
VGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFy
YW1ldGVyMikKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgR2VuZXJpY1Rhc2sobWV0aG9kLCBw
YXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgR2VuZXJpY1Rh
c2syKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMikK
LSAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFt
ZXRlcjEpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIyKHBhcmFtZXRlcjIpCi0gICAgewotICAgIH0K
LQotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQotICAgIHsKLSAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9wYXJhbWV0ZXIx
LCBtX3BhcmFtZXRlcjIpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBNZXRob2QgbV9tZXRob2Q7
Ci0gICAgUDEgbV9wYXJhbWV0ZXIxOwotICAgIFAyIG1fcGFyYW1ldGVyMjsKLX07Ci0KLXRlbXBs
YXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIs
IHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDM+Ci1jbGFzcyBHZW5lcmljVGFzazMgOiBwdWJsaWMg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lk
ICgqTWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMyk7Ci0gICAg
dHlwZWRlZiBHZW5lcmljVGFzazM8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMz4gR2VuZXJpY1Rh
c2s7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMT46OlBhcmFtVHlw
ZSBQYXJhbTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMj46OlBh
cmFtVHlwZSBQYXJhbTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQ
Mz46OlBhcmFtVHlwZSBQYXJhbTM7Ci0KLSAgICBzdGF0aWMgUGFzc093blB0cjxHZW5lcmljVGFz
az4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1l
dGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IEdlbmVy
aWNUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMyk7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIEdlbmVyaWNUYXNrMyhNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFy
YW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzKQotICAgICAgICA6
IG1fbWV0aG9kKG1ldGhvZCkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKLSAg
ICAgICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKLSAgICAgICAgLCBtX3BhcmFtZXRlcjMo
cGFyYW1ldGVyMykKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgewotICAgICAgICAoKm1fbWV0
aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzKTsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgTWV0aG9kIG1fbWV0aG9kOwotICAgIFAxIG1fcGFyYW1l
dGVyMTsKLSAgICBQMiBtX3BhcmFtZXRlcjI7Ci0gICAgUDMgbV9wYXJhbWV0ZXIzOwotfTsKLQot
dGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1l
IE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1Q
ND4KLWNsYXNzIEdlbmVyaWNUYXNrNCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQgKCpNZXRob2QpKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQpOwotICAgIHR5cGVkZWYgR2VuZXJpY1Rhc2s0
PFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBNUDMsIFA0LCBNUDQ+IEdlbmVyaWNUYXNrOwotICAgIHR5
cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDE+OjpQYXJhbVR5cGUgUGFyYW0xOwot
ICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDI+OjpQYXJhbVR5cGUgUGFy
YW0yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDM+OjpQYXJhbVR5
cGUgUGFyYW0zOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDQ+OjpQ
YXJhbVR5cGUgUGFyYW00OwotCi0gICAgc3RhdGljIFBhc3NPd25QdHI8R2VuZXJpY1Rhc2s+IGNy
ZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIs
IFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBuZXcgR2VuZXJpY1Rhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJh
bWV0ZXIzLCBwYXJhbWV0ZXI0KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgR2VuZXJpY1Rhc2s0
KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFy
YW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0KQotICAgICAgICA6IG1fbWV0aG9kKG1l
dGhvZCkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKLSAgICAgICAgLCBtX3Bh
cmFtZXRlcjIocGFyYW1ldGVyMikKLSAgICAgICAgLCBtX3BhcmFtZXRlcjMocGFyYW1ldGVyMykK
LSAgICAgICAgLCBtX3BhcmFtZXRlcjQocGFyYW1ldGVyNCkKLSAgICB7Ci0gICAgfQotCi0gICAg
dmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
Ci0gICAgewotICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFy
YW1ldGVyMiwgbV9wYXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQpOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBNZXRob2QgbV9tZXRob2Q7Ci0gICAgUDEgbV9wYXJhbWV0ZXIxOwotICAgIFAyIG1fcGFy
YW1ldGVyMjsKLSAgICBQMyBtX3BhcmFtZXRlcjM7Ci0gICAgUDQgbV9wYXJhbWV0ZXI0OwotfTsK
LQotdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVu
YW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1l
IE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNT4KLWNsYXNzIEdlbmVyaWNUYXNrNSA6IHB1
YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVm
IHZvaWQgKCpNZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBN
UDQsIE1QNSk7Ci0gICAgdHlwZWRlZiBHZW5lcmljVGFzazU8UDEsIE1QMSwgUDIsIE1QMiwgUDMs
IE1QMywgUDQsIE1QNCwgUDUsIE1QNT4gR2VuZXJpY1Rhc2s7Ci0gICAgdHlwZWRlZiB0eXBlbmFt
ZSBHZW5lcmljVGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7Ci0gICAgdHlwZWRlZiB0
eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7Ci0gICAgdHlw
ZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7Ci0g
ICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQND46OlBhcmFtVHlwZSBQYXJh
bTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQNT46OlBhcmFtVHlw
ZSBQYXJhbTU7Ci0KLSAgICBzdGF0aWMgUGFzc093blB0cjxHZW5lcmljVGFzaz4gY3JlYXRlKE1l
dGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0z
IHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBuZXcgR2VuZXJpY1Rhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJh
bWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1KTsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgR2VuZXJpY1Rhc2s1KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIx
LCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0
LCBQYXJhbTUgcGFyYW1ldGVyNSkKLSAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCi0gICAgICAg
ICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIyKHBhcmFt
ZXRlcjIpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIzKHBhcmFtZXRlcjMpCi0gICAgICAgICwgbV9w
YXJhbWV0ZXI0KHBhcmFtZXRlcjQpCi0gICAgICAgICwgbV9wYXJhbWV0ZXI1KHBhcmFtZXRlcjUp
Ci0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgKCptX21ldGhvZCkoY29udGV4
dCwgbV9wYXJhbWV0ZXIxLCBtX3BhcmFtZXRlcjIsIG1fcGFyYW1ldGVyMywgbV9wYXJhbWV0ZXI0
LCBtX3BhcmFtZXRlcjUpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBNZXRob2QgbV9tZXRob2Q7
Ci0gICAgUDEgbV9wYXJhbWV0ZXIxOwotICAgIFAyIG1fcGFyYW1ldGVyMjsKLSAgICBQMyBtX3Bh
cmFtZXRlcjM7Ci0gICAgUDQgbV9wYXJhbWV0ZXI0OwotICAgIFA1IG1fcGFyYW1ldGVyNTsKLX07
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBl
bmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFt
ZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBN
UDY+Ci1jbGFzcyBHZW5lcmljVGFzazYgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lkICgqTWV0aG9kKShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNik7Ci0gICAgdHlwZWRlZiBH
ZW5lcmljVGFzazY8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQsIE1QNCwgUDUsIE1QNSwg
UDYsIE1QNj4gR2VuZXJpY1Rhc2s7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1Ry
YWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmlj
VGFza1RyYWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBH
ZW5lcmljVGFza1RyYWl0czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7Ci0gICAgdHlwZWRlZiB0eXBl
bmFtZSBHZW5lcmljVGFza1RyYWl0czxQND46OlBhcmFtVHlwZSBQYXJhbTQ7Ci0gICAgdHlwZWRl
ZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQNT46OlBhcmFtVHlwZSBQYXJhbTU7Ci0gICAg
dHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQNj46OlBhcmFtVHlwZSBQYXJhbTY7
Ci0KLSAgICBzdGF0aWMgUGFzc093blB0cjxHZW5lcmljVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRo
b2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRl
cjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSwgUGFyYW02IHBhcmFtZXRl
cjYpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNUYXNrKG1ldGhvZCwgcGFyYW1l
dGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSwgcGFy
YW1ldGVyNik7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEdlbmVyaWNUYXNrNihNZXRob2QgbWV0
aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0
ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0
ZXI2KQotICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjEo
cGFyYW1ldGVyMSkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKLSAgICAgICAg
LCBtX3BhcmFtZXRlcjMocGFyYW1ldGVyMykKLSAgICAgICAgLCBtX3BhcmFtZXRlcjQocGFyYW1l
dGVyNCkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjUocGFyYW1ldGVyNSkKLSAgICAgICAgLCBtX3Bh
cmFtZXRlcjYocGFyYW1ldGVyNikKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHBl
cmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgewotICAgICAg
ICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJh
bWV0ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVyNSwgbV9wYXJhbWV0ZXI2KTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgTWV0aG9kIG1fbWV0aG9kOwotICAgIFAxIG1fcGFyYW1ldGVyMTsK
LSAgICBQMiBtX3BhcmFtZXRlcjI7Ci0gICAgUDMgbV9wYXJhbWV0ZXIzOwotICAgIFA0IG1fcGFy
YW1ldGVyNDsKLSAgICBQNSBtX3BhcmFtZXRlcjU7Ci0gICAgUDYgbV9wYXJhbWV0ZXI2OwotfTsK
LQotdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVu
YW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1l
IE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1Q
NiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNz4KLWNsYXNzIEdlbmVyaWNUYXNrNyA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHZv
aWQgKCpNZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQs
IE1QNSwgTVA2LCBNUDcpOwotICAgIHR5cGVkZWYgR2VuZXJpY1Rhc2s3PFAxLCBNUDEsIFAyLCBN
UDIsIFAzLCBNUDMsIFA0LCBNUDQsIFA1LCBNUDUsIFA2LCBNUDYsIFA3LCBNUDc+IEdlbmVyaWNU
YXNrOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDE+OjpQYXJhbVR5
cGUgUGFyYW0xOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDI+OjpQ
YXJhbVR5cGUgUGFyYW0yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8
UDM+OjpQYXJhbVR5cGUgUGFyYW0zOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY1Rhc2tU
cmFpdHM8UDQ+OjpQYXJhbVR5cGUgUGFyYW00OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJp
Y1Rhc2tUcmFpdHM8UDU+OjpQYXJhbVR5cGUgUGFyYW01OwotICAgIHR5cGVkZWYgdHlwZW5hbWUg
R2VuZXJpY1Rhc2tUcmFpdHM8UDY+OjpQYXJhbVR5cGUgUGFyYW02OwotICAgIHR5cGVkZWYgdHlw
ZW5hbWUgR2VuZXJpY1Rhc2tUcmFpdHM8UDc+OjpQYXJhbVR5cGUgUGFyYW03OwotCi0gICAgc3Rh
dGljIFBhc3NPd25QdHI8R2VuZXJpY1Rhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEg
cGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQg
cGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2LCBQYXJhbTcg
cGFyYW1ldGVyNykKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgR2VuZXJpY1Rhc2sobWV0aG9k
LCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0
ZXI1LCBwYXJhbWV0ZXI2LCBwYXJhbWV0ZXI3KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgR2Vu
ZXJpY1Rhc2s3KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1l
dGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1l
dGVyNSwgUGFyYW02IHBhcmFtZXRlcjYsIFBhcmFtNyBwYXJhbWV0ZXI3KQotICAgICAgICA6IG1f
bWV0aG9kKG1ldGhvZCkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKLSAgICAg
ICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKLSAgICAgICAgLCBtX3BhcmFtZXRlcjMocGFy
YW1ldGVyMykKLSAgICAgICAgLCBtX3BhcmFtZXRlcjQocGFyYW1ldGVyNCkKLSAgICAgICAgLCBt
X3BhcmFtZXRlcjUocGFyYW1ldGVyNSkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjYocGFyYW1ldGVy
NikKLSAgICAgICAgLCBtX3BhcmFtZXRlcjcocGFyYW1ldGVyNykKLSAgICB7Ci0gICAgfQotCi0g
ICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCi0gICAgewotICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1f
cGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVyNSwgbV9w
YXJhbWV0ZXI2LCBtX3BhcmFtZXRlcjcpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBNZXRob2Qg
bV9tZXRob2Q7Ci0gICAgUDEgbV9wYXJhbWV0ZXIxOwotICAgIFAyIG1fcGFyYW1ldGVyMjsKLSAg
ICBQMyBtX3BhcmFtZXRlcjM7Ci0gICAgUDQgbV9wYXJhbWV0ZXI0OwotICAgIFA1IG1fcGFyYW1l
dGVyNTsKLSAgICBQNiBtX3BhcmFtZXRlcjY7Ci0gICAgUDcgbV9wYXJhbWV0ZXI3OwotfTsKLQot
dGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1l
IE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1Q
NCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNiwg
dHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNywgdHlwZW5hbWUgUDgsIHR5cGVuYW1lIE1QOD4KLWNs
YXNzIEdlbmVyaWNUYXNrOCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsK
LXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQgKCpNZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcsIE1QOCk7Ci0gICAgdHlwZWRl
ZiBHZW5lcmljVGFzazg8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQsIE1QNCwgUDUsIE1Q
NSwgUDYsIE1QNiwgUDcsIE1QNywgUDgsIE1QOD4gR2VuZXJpY1Rhc2s7Ci0gICAgdHlwZWRlZiB0
eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7Ci0gICAgdHlw
ZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7Ci0g
ICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQMz46OlBhcmFtVHlwZSBQYXJh
bTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQND46OlBhcmFtVHlw
ZSBQYXJhbTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQNT46OlBh
cmFtVHlwZSBQYXJhbTU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1RyYWl0czxQ
Nj46OlBhcmFtVHlwZSBQYXJhbTY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljVGFza1Ry
YWl0czxQNz46OlBhcmFtVHlwZSBQYXJhbTc7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmlj
VGFza1RyYWl0czxQOD46OlBhcmFtVHlwZSBQYXJhbTg7Ci0gICAgCi0gICAgc3RhdGljIFBhc3NP
d25QdHI8R2VuZXJpY1Rhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVy
MSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVy
NCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2LCBQYXJhbTcgcGFyYW1ldGVy
NywgUGFyYW04IHBhcmFtZXRlcjgpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNU
YXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVy
NCwgcGFyYW1ldGVyNSwgcGFyYW1ldGVyNiwgcGFyYW1ldGVyNywgcGFyYW1ldGVyOCk7Ci0gICAg
fQotICAgIAotcHJpdmF0ZToKLSAgICBHZW5lcmljVGFzazgoTWV0aG9kIG1ldGhvZCwgUGFyYW0x
IHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00
IHBhcmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNiwgUGFyYW03
IHBhcmFtZXRlcjcsIFBhcmFtOCBwYXJhbWV0ZXI4KQotICAgIDogbV9tZXRob2QobWV0aG9kKQot
ICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCi0gICAgLCBtX3BhcmFtZXRlcjIocGFyYW1l
dGVyMikKLSAgICAsIG1fcGFyYW1ldGVyMyhwYXJhbWV0ZXIzKQotICAgICwgbV9wYXJhbWV0ZXI0
KHBhcmFtZXRlcjQpCi0gICAgLCBtX3BhcmFtZXRlcjUocGFyYW1ldGVyNSkKLSAgICAsIG1fcGFy
YW1ldGVyNihwYXJhbWV0ZXI2KQotICAgICwgbV9wYXJhbWV0ZXI3KHBhcmFtZXRlcjcpCi0gICAg
LCBtX3BhcmFtZXRlcjgocGFyYW1ldGVyOCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAg
IHsKLSAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9wYXJhbWV0ZXIxLCBtX3BhcmFtZXRl
cjIsIG1fcGFyYW1ldGVyMywgbV9wYXJhbWV0ZXI0LCBtX3BhcmFtZXRlcjUsIG1fcGFyYW1ldGVy
NiwgbV9wYXJhbWV0ZXI3LCBtX3BhcmFtZXRlcjgpOwotICAgIH0KLSAgICAKLXByaXZhdGU6Ci0g
ICAgTWV0aG9kIG1fbWV0aG9kOwotICAgIFAxIG1fcGFyYW1ldGVyMTsKLSAgICBQMiBtX3BhcmFt
ZXRlcjI7Ci0gICAgUDMgbV9wYXJhbWV0ZXIzOwotICAgIFA0IG1fcGFyYW1ldGVyNDsKLSAgICBQ
NSBtX3BhcmFtZXRlcjU7Ci0gICAgUDYgbV9wYXJhbWV0ZXI2OwotICAgIFA3IG1fcGFyYW1ldGVy
NzsKLSAgICBQOCBtX3BhcmFtZXRlcjg7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlw
ZW5hbWUgTVAxPgotUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVh
dGVDYWxsYmFja1Rhc2soCi0gICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIE1QMSksCi0gICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCi17Ci0gICAgcmV0dXJuIEdlbmVy
aWNUYXNrMTx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMT46OmNyZWF0
ZSgKLSAgICAgICAgbWV0aG9kLAotICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHko
cGFyYW1ldGVyMSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0
eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyPgotUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCi0gICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyKSwKLSAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwg
Y29uc3QgUDImIHBhcmFtZXRlcjIpCi17Ci0gICAgcmV0dXJuIEdlbmVyaWNUYXNrMjx0eXBlbmFt
ZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDI+OjpUeXBlLCBNUDI+OjpjcmVhdGUoCi0gICAgICAgIG1ldGhvZCwKLSAgICAgICAg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVhZENvcGll
cjxQMj46OmNvcHkocGFyYW1ldGVyMikpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlw
ZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5h
bWUgTVAzPgotUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVD
YWxsYmFja1Rhc2soCi0gICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IE1QMSwgTVAyLCBNUDMpLAotICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFy
YW1ldGVyMiwgY29uc3QgUDMmIHBhcmFtZXRlcjMpCi17Ci0gICAgcmV0dXJuIEdlbmVyaWNUYXNr
Mzx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jv
c3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVy
PFAzPjo6VHlwZSwgTVAzPjo6Y3JlYXRlKAotICAgICAgICBtZXRob2QsCi0gICAgICAgIENyb3Nz
VGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+
Ojpjb3B5KHBhcmFtZXRlcjIpLAotICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHko
cGFyYW1ldGVyMykpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0
eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBl
bmFtZSBQNCwgdHlwZW5hbWUgTVA0PgotUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCi0gICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMsIE1QNCksCi0gICAgY29uc3QgUDEmIHBhcmFt
ZXRlcjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLCBjb25zdCBQMyYgcGFyYW1ldGVyMywgY29uc3Qg
UDQmIHBhcmFtZXRlcjQpCi17Ci0gICAgcmV0dXJuIEdlbmVyaWNUYXNrNDx0eXBlbmFtZSBDcm9z
c1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAz
LAotICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QND46OmNy
ZWF0ZSgKLSAgICAgICAgICAgIG1ldGhvZCwKLSAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVy
PFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFt
ZXRlcjIpLAotICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRl
cjMpLCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCkpOwotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAy
LCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0
eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1PgotUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCi0gICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1KSwKLSAgICBjb25zdCBQ
MSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIz
LCBjb25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUpCi17Ci0gICAgcmV0
dXJuIEdlbmVyaWNUYXNrNTx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1Q
MSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENy
b3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAotICAgICAgICB0eXBlbmFtZSBDcm9zc1Ro
cmVhZENvcGllcjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+
OjpUeXBlLCBNUDU+OjpjcmVhdGUoCi0gICAgICAgICAgICBtZXRob2QsCi0gICAgICAgICAgICBD
cm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVy
PFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKLSAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAz
Pjo6Y29weShwYXJhbWV0ZXIzKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRl
cjQpLAotICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+Ojpjb3B5KHBhcmFtZXRlcjUp
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIs
IHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5
cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVu
YW1lIE1QNj4KLVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRl
Q2FsbGJhY2tUYXNrKAotICAgIHZvaWQgKCptZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2KSwKLSAgICBjb25zdCBQMSYgcGFyYW1ldGVy
MSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQNCYg
cGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUsIGNvbnN0IFA2JiBwYXJhbWV0ZXI2KQot
ewotICAgIHJldHVybiBHZW5lcmljVGFzazY8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+
OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0
eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKLSAgICAgICAgdHlwZW5h
bWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQsIHR5cGVuYW1lIENyb3NzVGhyZWFk
Q29waWVyPFA1Pjo6VHlwZSwgTVA1LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNj46OlR5
cGUsIE1QNj46OmNyZWF0ZSgKLSAgICAgICAgICAgIG1ldGhvZCwKLSAgICAgICAgICAgIENyb3Nz
VGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+
Ojpjb3B5KHBhcmFtZXRlcjIpLAotICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpj
b3B5KHBhcmFtZXRlcjMpLCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCks
Ci0gICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQNT46OmNvcHkocGFyYW1ldGVyNSksIENy
b3NzVGhyZWFkQ29waWVyPFA2Pjo6Y29weShwYXJhbWV0ZXI2KSk7Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVu
YW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1l
IFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDYsIHR5cGVuYW1lIFA3
LCB0eXBlbmFtZSBNUDc+Ci1QYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
IGNyZWF0ZUNhbGxiYWNrVGFzaygKLSAgICB2b2lkICgqbWV0aG9kKShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3KSwKLSAgICBjb25zdCBQ
MSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIz
LCBjb25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUsIGNvbnN0IFA2JiBw
YXJhbWV0ZXI2LCBjb25zdCBQNyYgcGFyYW1ldGVyNykKLXsKLSAgICByZXR1cm4gR2VuZXJpY1Rh
c2s3PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBD
cm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDM+OjpUeXBlLCBNUDMsCi0gICAgICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA0
Pjo6VHlwZSwgTVA0LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNT46OlR5cGUsIE1QNSwg
dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+OjpUeXBlLCBNUDYsCi0gICAgICAgIHR5cGVu
YW1lIENyb3NzVGhyZWFkQ29waWVyPFA3Pjo6VHlwZSwgTVA3Pjo6Y3JlYXRlKAotICAgICAgICAg
ICAgbWV0aG9kLAotICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFt
ZXRlcjEpLCBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCi0gICAgICAg
ICAgICBDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksIENyb3NzVGhyZWFk
Q29waWVyPFA0Pjo6Y29weShwYXJhbWV0ZXI0KSwKLSAgICAgICAgICAgIENyb3NzVGhyZWFkQ29w
aWVyPFA1Pjo6Y29weShwYXJhbWV0ZXI1KSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+Ojpjb3B5KHBh
cmFtZXRlcjYpLAotICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+Ojpjb3B5KHBhcmFt
ZXRlcjcpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5h
bWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUg
UDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYs
IHR5cGVuYW1lIE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNywgdHlwZW5hbWUgUDgsIHR5
cGVuYW1lIE1QOD4KLVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3Jl
YXRlQ2FsbGJhY2tUYXNrKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNywgTVA4KSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFAx
JiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3QgUDMmIHBhcmFtZXRlcjMs
IGNvbnN0IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQNSYgcGFyYW1ldGVyNSwgY29uc3QgUDYmIHBh
cmFtZXRlcjYsIGNvbnN0IFA3JiBwYXJhbWV0ZXI3LCBjb25zdCBQOCYgcGFyYW1ldGVyOCkKLXsK
LSAgICByZXR1cm4gR2VuZXJpY1Rhc2s4PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6
VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDMsCi0gICAgdHlwZW5hbWUgQ3Jv
c3NUaHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVy
PFA1Pjo6VHlwZSwgTVA1LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNj46OlR5cGUsIE1Q
NiwKLSAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNz46OlR5cGUsIE1QNywgdHlwZW5h
bWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDg+OjpUeXBlLCBNUDg+OjpjcmVhdGUoCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyb3Nz
VGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+
Ojpjb3B5KHBhcmFtZXRlcjIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIz
KSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29w
aWVyPFA1Pjo6Y29weShwYXJhbWV0ZXI1KSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+Ojpjb3B5KHBh
cmFtZXRlcjYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFA3Pjo6Y29weShwYXJhbWV0ZXI3KSwgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDg+Ojpjb3B5KHBhcmFtZXRlcjgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gR2VuZXJpY1Rhc2tfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggMWIxOTc3NS4uMjE4MGRkNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0zMSwxMyArMzEsMTMgQEAKIAogI2luY2x1
ZGUgIldvcmtlck1lc3NhZ2luZ1Byb3h5LmgiCiAKKyNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2su
aCIKICNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGVkaWNh
dGVkV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgotI2luY2x1ZGUgIkdlbmVyaWNXb3JrZXJUYXNrLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAK
aW5kZXggZWUwNzcxZi4uMTc4NmI4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5o
IgogCi0jaW5jbHVkZSAiR2VuZXJpY1dvcmtlclRhc2suaCIKKyNpbmNsdWRlICJDcm9zc1RocmVh
ZFRhc2suaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDZlZmM4ZTUuLjYxNWU2NDUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDEwLTA1LTE4ICBKaWFuIExpICA8amlhbmxpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgR2VuZXJpY1dvcmtlclRh
c2suaCB0byBDcm9zc1RocmVhZFRhc2suaCBhbmQgbW92ZSBpdCB0byBkb20gZGlyZWN0b3J5Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkxMzUKKwor
ICAgICAgICAqIHNyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2Vi
V29ya2VyQmFzZS5jcHA6CisgICAgICAgICogc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwOgor
ICAgICAgICAqIHNyYy9XZWJXb3JrZXJJbXBsLmNwcDoKKwogMjAxMC0wNS0xNiAgTWlrZSBCZWxz
aGUgIDxtYmVsc2hlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJp
IEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtl
ckltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcApp
bmRleCA5MTYzNmQ5Li41MWJiZjFiIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNoYXJlZFdvcmtlckltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVk
V29ya2VySW1wbC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJTaGFyZWRXb3JrZXJJbXBsLmgiCiAKLSNpbmNsdWRlICJHZW5lcmljV29ya2Vy
VGFzay5oIgorI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgIktVUkwuaCIK
ICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydENoYW5uZWwu
aCIKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuY3BwCmluZGV4IDFmZWRlYjIuLjI0NGNj
ZWIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcApAQCAtMzEsOCArMzEsOCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYldvcmtlckJhc2UuaCIKIAorI2lu
Y2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGFzay5oIgotI2lu
Y2x1ZGUgIkdlbmVyaWNXb3JrZXJUYXNrLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFubmVs
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCIKIApkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAKaW5kZXggZDBkZGE4ZS4uMTNiN2Zl
NiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNw
cAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCkBAIC0z
MywxMSArMzMsMTEgQEAKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogCisjaW5jbHVkZSAiQ3Jvc3NU
aHJlYWRUYXNrLmgiCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVk
ZSAiRXJyb3JFdmVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXJDbGllbnQuaCIKLSNpbmNsdWRlICJHZW5lcmljV29ya2VyVGFzay5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVBvcnRDaGFubmVsLmgiCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtl
ckltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBsLmNwcAppbmRleCA1
YjVlMDUzLi44NTdjNTBmIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtl
ckltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VySW1wbC5jcHAKQEAg
LTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJXb3JrZXJJ
bXBsLmgiCiAKKyNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKICNpbmNsdWRlICJEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgiCi0j
aW5jbHVkZSAiR2VuZXJpY1dvcmtlclRhc2suaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIK
</data>
<flag name="review"
          id="40853"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="40854"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
      

    </bug>

</bugzilla>