<?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>106148</bug_id>
          
          <creation_ts>2013-01-04 16:31:00 -0800</creation_ts>
          <short_desc>IndexedDB: Stub out async IDBDatabaseBackendInterface::createObjectStore</short_desc>
          <delta_ts>2013-01-08 14:07:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>106377</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alec Flett">alecflett</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>peter+ews</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>800727</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-01-04 16:31:00 -0800</bug_when>
    <thetext>IndexedDB: Stub out async IDBDatabaseBackendInterface::createObjectStore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800730</commentid>
    <comment_count>1</comment_count>
      <attachid>181403</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-01-04 16:34:09 -0800</bug_when>
    <thetext>Created attachment 181403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800768</commentid>
    <comment_count>2</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-01-04 17:21:10 -0800</bug_when>
    <thetext>abarth@ - r?

one more for you - very similar to the previous createIndex/deleteIndex (discovered that I needed both stubbed out at the same time, thought I could stagger the work) TIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800773</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-04 17:23:19 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800777</commentid>
    <comment_count>4</comment_count>
      <attachid>181403</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-04 17:40:33 -0800</bug_when>
    <thetext>Comment on attachment 181403
Patch

Attachment 181403 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15709419</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800788</commentid>
    <comment_count>5</comment_count>
      <attachid>181403</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-01-04 18:03:20 -0800</bug_when>
    <thetext>Comment on attachment 181403
Patch

Attachment 181403 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15703444</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800968</commentid>
    <comment_count>6</comment_count>
      <attachid>181403</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-05 12:47:40 -0800</bug_when>
    <thetext>Comment on attachment 181403
Patch

Looks like you&apos;ve got a compile error to work through.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801400</commentid>
    <comment_count>7</comment_count>
      <attachid>181522</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-01-07 10:33:38 -0800</bug_when>
    <thetext>Created attachment 181522
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801405</commentid>
    <comment_count>8</comment_count>
      <attachid>181524</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-01-07 10:35:39 -0800</bug_when>
    <thetext>Created attachment 181524
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801438</commentid>
    <comment_count>9</comment_count>
      <attachid>181524</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-07 10:55:08 -0800</bug_when>
    <thetext>Comment on attachment 181524
Patch for landing

Clearing flags on attachment: 181524

Committed r138963: &lt;http://trac.webkit.org/changeset/138963&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801439</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-07 10:55:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181403</attachid>
            <date>2013-01-04 16:34:09 -0800</date>
            <delta_ts>2013-01-07 10:33:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106148-20130104163115.patch</filename>
            <type>text/plain</type>
            <size>12275</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhYTMxMmRhMGY1MzA1MWE5ZGYzMGEwMzU4MzczNTEyZTI0ZTFmZjBmLi42
YzEzMGEzNDg0NDU1ZGIxZTc3MjkzZDRmM2NmNWY4OWFkY2ExY2M5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMjEgQEAKIDIwMTMtMDEtMDQgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0u
b3JnPgogCisgICAgICAgIEluZGV4ZWREQjogU3R1YiBvdXQgYXN5bmMgSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlOjpjcmVhdGVPYmplY3RTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlc2UgbWV0aG9kcyBhcmUgYmVjb21pbmcgYXN5bmMg
aW4gbXVsdGlwcm9jZXNzIHBvcnRzLCBzbyBzdHViIG91dAorICAgICAgICB2ZXJzaW9ucyB0aGF0
IGhhdmUgbm8gcmV0dXJuIHZhbHVlcy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZSk6CisKKzIwMTMtMDEtMDQgIEFsZWMgRmxldHQgIDxhbGVjZmxl
dHRAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIEluZGV4ZWREQjogU3R1YiBvdXQgSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlOjpjcmVhdGVJbmRleC9kZWxldGVJbmRleAogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MTE3CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggOTNhM2Q0MGY2NGI3NDVhMTYzZDc3ZmIxMDI0MjRlNzE2ZjRkOWE4
Zi4uNDYyMmNkZjNjMjExZGNiNmZjMjM5NjM0OTIwZWU0NmIzNjc2Yzc3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyOSBAQAogMjAxMy0wMS0wNCAgQWxlYyBGbGV0dCAg
PGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgSW5kZXhlZERCOiBTdHViIG91dCBh
c3luYyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OmNyZWF0ZU9iamVjdFN0b3JlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYxNDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHViIG91dCBXZWJL
aXQgQVBJIGZvciBhc3luYyBjcmVhdGVPYmplY3RTdG9yZS4KKworICAgICAgICAqIHB1YmxpYy9X
ZWJJREJEYXRhYmFzZS5oOgorICAgICAgICAoV2ViSURCRGF0YWJhc2UpOgorICAgICAgICAqIHNy
Yy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkRhdGFi
YXNlQmFja2VuZFByb3h5OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6ZGVsZXRlT2JqZWN0U3Rv
cmUpOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oOgorICAgICAgICAo
SURCRGF0YWJhc2VCYWNrZW5kUHJveHkpOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUlt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFi
YXNlSW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFz
ZUltcGwuaDoKKyAgICAgICAgKFdlYklEQkRhdGFiYXNlSW1wbCk6CisKKzIwMTMtMDEtMDQgIEFs
ZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIEluZGV4ZWREQjog
U3R1YiBvdXQgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpjcmVhdGVJbmRleC9kZWxldGVJ
bmRleAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2
MTE3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCAzNjQ5NjQyYzU0ZDNlOWRkZGRhMDQ4NGRkMzAw
ZDg5NWRkYjI0NWQ0Li45NDRiODMwMGM3ZTMyMjNiZGQzNDRiYjViYTgxZDFjM2IxNGZhMTYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC02MSw3ICs2MSw5IEBAIHB1YmxpYzoKICAgICAvLyBJREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UKICAgICB2aXJ0dWFsIElEQkRhdGFiYXNlTWV0YWRhdGEg
bWV0YWRhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGlkLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0
b0luY3JlbWVudCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVPYmplY3RTdG9yZShpbnQ2NF90LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBpbiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTIzLgogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9u
KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9y
ZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUpOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUcmFu
c2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCB1bnNpZ25lZCBz
aG9ydCBtb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggZTEzOWIxMGY3MzI0
Yjc5MTA2Mjk0NzllMmEwNzJkMmJhYWI2MDlkNC4uNGJiZmJiODZhY2NlMTNiMDgwNzE0MmYxMmFk
YzM2MWY4OGFjZWU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTU2LDcgKzU2
LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgp
IGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0lu
Y3JlbWVudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgPSAwOwogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBt
ZXRob2QgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzkyMy4K
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBj
cmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiYgb2JqZWN0U3RvcmVJZHMsIElEQlRyYW5zYWN0aW9uOjpNb2RlKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0
U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCmluZGV4IDI3NjQyNjNmODcyNjBhMGQ3OWM0
NzM3MDViOWE4ZDQ0NGExMzZjZTYuLjI2NmEzZTNiNGEyMmI1YjM3YzQ1Yjc0YWQ4MWE3YzQzZTRh
ODk4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRh
dGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJh
c2UuaApAQCAtNTgsNyArNTgsOSBAQCBwdWJsaWM6CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVPYmplY3RTdG9yZShsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCwgbG9uZyBsb25nIG9iamVj
dFN0b3JlSWQsIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJv
b2wgYXV0b0luY3JlbWVudCkgPSAwOyAvLyB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShsb25nIGxvbmcgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25D
b2RlJiBlYykgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlT2JqZWN0U3RvcmUobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGxvbmcgbG9uZyBv
YmplY3RTdG9yZUlkKSA9IDA7IC8vIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAg
ICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTIzLgogICAgIHZpcnR1YWwgV2ViSURCVHJhbnNhY3Rpb24q
IGNyZWF0ZVRyYW5zYWN0aW9uKGxvbmcgbG9uZyBpZCwgY29uc3QgV2ViVmVjdG9yPGxvbmcgbG9u
Zz4mLCB1bnNpZ25lZCBzaG9ydCBtb2RlKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
cmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVHJhbnNhY3Rpb24obG9uZyBsb25n
IGlkLCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJWZWN0b3I8
bG9uZyBsb25nPiYsIHVuc2lnbmVkIHNob3J0IG1vZGUpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggYzk3NWQ0YzU3ZGUwODBiZjIxMTExMTEyNWYyNzUx
ZDViY2YzYTMyOC4uNzRiYWUzMDU4MTcxNGI3YTZhZjU1NjJjYTgwMzRlZjQwNTVhZDk0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5LmNwcApAQCAtNzksNiArNzksMTIgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGVPYmplY3QKICAg
ICByZXR1cm4gSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNyZWF0ZShvYmplY3RTdG9yZS5y
ZWxlYXNlKCkpOwogfQogCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGVPYmpl
Y3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNy
ZW1lbnQpCit7CisgICAgaWYgKG1fd2ViSURCRGF0YWJhc2UpCisgICAgICAgIG1fd2ViSURCRGF0
YWJhc2UtPmNyZWF0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uSWQsIG9iamVjdFN0b3JlSWQsIG5h
bWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQpOworfQorCiB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5OjpkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90IG9iamVjdFN0b3JlSWQsIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBw
b2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCkBAIC04Nyw2ICs5
MywxMiBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpkZWxldGVPYmplY3RTdG9yZShp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIElEQlRyYW5zYQogICAgIG1fd2ViSURCRGF0YWJhc2UtPmRl
bGV0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlSWQsICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJ
REJUcmFuc2FjdGlvbigpLCBlYyk7CiB9CiAKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6
OmRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkKQoreworICAgIGlmIChtX3dlYklEQkRhdGFiYXNlKQorICAgICAgICBtX3dlYklEQkRh
dGFiYXNlLT5kZWxldGVPYmplY3RTdG9yZSh0cmFuc2FjdGlvbklkLCBvYmplY3RTdG9yZUlkKTsK
K30KKwogUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFi
YXNlQmFja2VuZFByb3h5OjpjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90IGlkLCBjb25zdCBWZWN0
b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlKQog
ewogICAgIE93blB0cjxXZWJJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBhZG9wdFB0ciht
X3dlYklEQkRhdGFiYXNlLT5jcmVhdGVUcmFuc2FjdGlvbihpZCwgb2JqZWN0U3RvcmVJZHMsIG1v
ZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNl
QmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJh
Y2tlbmRQcm94eS5oCmluZGV4IDA0NGJjMzgyNjg4NjIyNzM2NjA2OTA4ZmVmYjE5NWExYmJjZmZl
NGYuLmJlZjI4OWJmYmU1NmY5OWM3M2U4NmI0OTViNDU5MThmMWVhZGVjNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaApA
QCAtNDUsNyArNDUsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJREJEYXRhYmFz
ZU1ldGFkYXRhIG1ldGFkYXRhKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShp
bnQ2NF90LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmLCBi
b29sIGF1dG9JbmNyZW1lbnQsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2Jq
ZWN0U3RvcmUoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYsIGJvb2wgYXV0b0lu
Y3JlbWVudCk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QsIFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCB0cmFu
c2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwogICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyBtZXRob2QgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
MzkyMy4KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPiBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90LCBjb25zdCBWZWN0b3I8aW50
NjRfdD4mLCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6TW9kZSk7CiAgICAgdmlydHVhbCB2b2lk
IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJh
c2VDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCB1bnNpZ25lZCBzaG9ydCBtb2Rl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNl
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwu
Y3BwCmluZGV4IDk1OTIxZDZmMzRmNjE4MjIzNTk0OTVlZmZiOWRiOTU1ZmUzOGIyMjAuLjM4NTVi
ZTU5MjVjN2JlZjBhMTY0ZWY2NjI4ZjgzN2U2MzRmZTBmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcApAQCAtNzIsMTEgKzcyLDIy
IEBAIFdlYklEQk9iamVjdFN0b3JlKiBXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0
b3JlKGxvbmcgbG9uZyBpZCwgY29uc3QgV2ViCiAgICAgcmV0dXJuIG5ldyBXZWJJREJPYmplY3RT
dG9yZUltcGwob2JqZWN0U3RvcmUpOwogfQogCit2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6Y3Jl
YXRlT2JqZWN0U3RvcmUobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGxvbmcgbG9uZyBvYmplY3RT
dG9yZUlkLCBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBh
dGgsIGJvb2wgYXV0b0luY3JlbWVudCkKK3sKKyAgICBtX2RhdGFiYXNlQmFja2VuZC0+Y3JlYXRl
T2JqZWN0U3RvcmUodHJhbnNhY3Rpb25JZCwgb2JqZWN0U3RvcmVJZCwgbmFtZSwga2V5UGF0aCwg
YXV0b0luY3JlbWVudCk7Cit9CisKIHZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpkZWxldGVPYmpl
Y3RTdG9yZShsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBtX2RhdGFiYXNlQmFj
a2VuZC0+ZGVsZXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZCwgdHJhbnNhY3Rpb24uZ2V0SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKIH0KIAordm9pZCBXZWJJREJEYXRh
YmFzZUltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBsb25n
IGxvbmcgb2JqZWN0U3RvcmVJZCkKK3sKKyAgICBtX2RhdGFiYXNlQmFja2VuZC0+ZGVsZXRlT2Jq
ZWN0U3RvcmUodHJhbnNhY3Rpb25JZCwgb2JqZWN0U3RvcmVJZCk7Cit9CisKKwogLy8gRklYTUU6
IFJlbW92ZSB0aGlzIG1ldGhvZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAzOTIzLgogV2ViSURCVHJhbnNhY3Rpb24qIFdlYklEQkRhdGFiYXNlSW1wbDo6Y3Jl
YXRlVHJhbnNhY3Rpb24obG9uZyBsb25nIGlkLCBjb25zdCBXZWJWZWN0b3I8bG9uZyBsb25nPiYg
b2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCmluZGV4IDVhM2Y5ZDc1NTA5OTNl
MzM1OTlkNDc0YjkzMjBiNDljZDg5YzU0MmUuLjY5ZjAzNDE3N2RjZjRhMDgwMzBiYzE0ODMwZGMz
MjBhZmNmNjljYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkRhdGFiYXNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRh
dGFiYXNlSW1wbC5oCkBAIC01NCw3ICs1NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYklE
Qk1ldGFkYXRhIG1ldGFkYXRhKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0
b3JlKiBjcmVhdGVPYmplY3RTdG9yZShsb25nIGxvbmcsIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwg
Y29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJh
bnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9i
amVjdFN0b3JlKGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJLZXlQYXRoJiwgYm9vbCBhdXRv
SW5jcmVtZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUobG9uZyBsb25n
IG9iamVjdFN0b3JlSWQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShsb25nIGxvbmcgb2JqZWN0
U3RvcmVJZCwgbG9uZyBsb25nIHRyYW5zYWN0aW9uSWQpOwogICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyBtZXRob2QgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
MzkyMy4KICAgICB2aXJ0dWFsIFdlYklEQlRyYW5zYWN0aW9uKiBjcmVhdGVUcmFuc2FjdGlvbihs
b25nIGxvbmcgaWQsIGNvbnN0IFdlYlZlY3Rvcjxsb25nIGxvbmc+JiwgdW5zaWduZWQgc2hvcnQg
bW9kZSk7CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRyYW5zYWN0aW9uKGxvbmcgbG9uZyBpZCwg
V2ViSURCRGF0YWJhc2VDYWxsYmFja3MqLCBjb25zdCBXZWJWZWN0b3I8bG9uZyBsb25nPiYsIHVu
c2lnbmVkIHNob3J0IG1vZGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181522</attachid>
            <date>2013-01-07 10:33:38 -0800</date>
            <delta_ts>2013-01-07 10:35:37 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-106148-20130107103043.patch</filename>
            <type>text/plain</type>
            <size>135654</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4ODc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzU5YTQ3YjNlNjI2YzA0
MzMxZmNhMWE1MDhlODMxMzliOTdiMjYxMi4uODRkMmZiYTg0ODUzZGUyNmVhNzRmMzllOWQ5ODhi
Y2E1ZmNiM2RkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2MyBAQAorMjAxMy0wMS0wNCAgQWxl
YyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBT
dHViIG91dCBhc3luYyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OmNyZWF0ZU9iamVjdFN0
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYx
NDgKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRoZXNlIG1l
dGhvZHMgYXJlIGJlY29taW5nIGFzeW5jIGluIG11bHRpcHJvY2VzcyBwb3J0cywgc28gc3R1YiBv
dXQKKyAgICAgICAgdmVyc2lvbnMgdGhhdCBoYXZlIG5vIHJldHVybiB2YWx1ZXMuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9y
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlLmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UpOgorCisyMDEzLTAx
LTA0ICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRl
eGVkREI6IFN0dWIgb3V0IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Y3JlYXRlSW5kZXgv
ZGVsZXRlSW5kZXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNjExNworCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLCB0aGVzZSBhcmUganVzdCBzdHVicyBmb3IgcmVmYWN0b3JpbmcuCisKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleCk6CisgICAg
ICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZSk6CisKKzIwMTMtMDEtMDMgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogTWlncmF0ZSBiYWNrZW5kIE9iamVjdFN0
b3JlIGNhbGxzIHRvIHVzZSB0cmFuc2FjdGlvbiBpZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNzQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9u
eSBDaGFuZy4KKworICAgICAgICBGdWxseSBtaWdyYXRlIDggY29yZSBkYXRhIGNhbGxzIChnZXQs
IHB1dCwgc2V0SW5kZXhLZXlzLCBzZXRJbmRleGVzUmVhZHksCisgICAgICAgIG9wZW5DdXJzb3Is
IGNvdW50LCBkZWxldGVSYW5nZSwgYW5kIGNsZWFyKSBpbnRvIElEQkRhdGFiYXNlQmFja2VuZElt
cGwsCisgICAgICAgIGNvbWJpbmluZyBjb21tb24gY29kZSBmcm9tIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwgYW5kIElEQkluZGV4QmFja2VuZEltcGwKKyAgICAgICAgaW4gb3JkZXIgdG8gc2lt
cGxpZnkgdGhlIGJhY2tlbmQgaW50ZXJmYWNlLiBUaGVzZSBjYWxscyBhcmUgbm93CisgICAgICAg
IGltcGxlbWVudGVkIGluIHRlcm1zIG9mIGFuIGludDY0X3QtYmFzZWQgdHJhbnNhY3Rpb25JZCBy
YXRoZXIgdGhhbgorICAgICAgICBhbiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UsIHdo
aWNoIHNpbXBsaWZpZXMgdGhlIG93bmVyc2hpcCBtb2RlbAorICAgICAgICBiZXR3ZWVuIHRoZSBm
cm9udGVuZCBhbmQgdGhlIGJhY2tlbmQuCisKKyAgICAgICAgSW4gYWRkaXRpb24sIHJlbW92ZSBy
ZWZlcmVuY2VzIHRvIElEQk9iamVjdFN0b3JlQmFja2VuZCogZnJvbSBJREJJbmRleCwKKyAgICAg
ICAgYXMgaXQgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KKworICAgICAgICBBIGZldyBkdXBsaWNhdGUg
SURCX1RSQUNFIG1ldGhvZHMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB3cmFwcGVyIG1ldGhvZHMK
KyAgICAgICAgdGhhdCBjYWxsIGFub3RoZXIgbWV0aG9kIHRoYXQgYWxyZWFkeSBoYXZlIElEQl9U
UkFDRSdzLgorCisgICAgICAgIEZpbmFsbHksIElEQkN1cnNvckJhY2tlbmRJbXBsIG5vdyBubyBs
b25nZXIgaG9sZHMgb250byBhbiAKKyAgICAgICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCos
IHNvIGl0cyBkZXN0cnVjdGlvbiBhbmQgbWVtYmVyIHZhcmlhYmxlcyBhcmUKKyAgICAgICAgc2lt
cGxpZmllZCwgYW5kIHJlb3JkZXJlZCB0byBtYXRjaCBwcm9wZXIgZGVzdHJ1Y3Rpb24gb3JkZXIu
CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHA6
IFJlb3JkZXJlZCB0byBhY2NvdW50IGZvciBwcm9wZXIgZGVzdHJ1Y3Rpb24uCisgICAgICAgIChX
ZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6SURCQ3Vyc29yQmFja2VuZEltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6On5JREJDdXJzb3JCYWNrZW5kSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rp
b24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmg6
CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y3JlYXRlKToKKyAgICAg
ICAgKElEQkN1cnNvckJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmJhY2tlbmQpOgor
ICAgICAgICAoSURCRGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoR2V0T3BlcmF0aW9uKTogQ29tYmluZWQg
ZnJvbSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsL0lEQkluZGV4QmFja2VuZEltcGw6OipSZXRy
aWV2YWxPcGVyYXRpb24KKyAgICAgICAgKFdlYkNvcmU6OkdldE9wZXJhdGlvbjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdldE9wZXJhdGlvbjo6R2V0T3BlcmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoUHV0T3BlcmF0aW9uKTogQ29tYmluZWQgZnJvbSBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsL0lEQkluZGV4QmFja2VuZEltcGw6OipTdG9yYWdlT3BlcmF0aW9u
LgorICAgICAgICAoV2ViQ29yZTo6UHV0T3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UHV0T3BlcmF0aW9uOjpQdXRPcGVyYXRpb24pOgorICAgICAgICAoU2V0SW5kZXhlc1Jl
YWR5T3BlcmF0aW9uKTogTW92ZWQgZnJvbSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJbmRl
eGVzUmVhZHlPcGVyYXRpb24KKyAgICAgICAgKFdlYkNvcmU6OlNldEluZGV4ZXNSZWFkeU9wZXJh
dGlvbjo6Y3JlYXRlKTogCisgICAgICAgIChXZWJDb3JlOjpTZXRJbmRleGVzUmVhZHlPcGVyYXRp
b246OlNldEluZGV4ZXNSZWFkeU9wZXJhdGlvbik6CisgICAgICAgIChPcGVuQ3Vyc29yT3BlcmF0
aW9uKTogQ29tYmluZWQgZnJvbSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsL0lEQkluZGV4QmFj
a2VuZEltcGw6Ok9wZW4qQ3Vyc29yT3BlcmF0aW9uCisgICAgICAgIChXZWJDb3JlOjpPcGVuQ3Vy
c29yT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlbkN1cnNvck9wZXJh
dGlvbjo6T3BlbkN1cnNvck9wZXJhdGlvbik6CisgICAgICAgIChDb3VudE9wZXJhdGlvbik6IENv
bWJpbmVkIGZyb20gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC9JREJJbmRleEJhY2tlbmRJbXBs
OjpDb3VudE9wZXJhdGlvbgorICAgICAgICAoV2ViQ29yZTo6Q291bnRPcGVyYXRpb246OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3VudE9wZXJhdGlvbjo6Q291bnRPcGVyYXRpb24pOgor
ICAgICAgICAoRGVsZXRlUmFuZ2VPcGVyYXRpb24pOiBNb3ZlZCBmcm9tIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OkRlbGV0ZU9wZXJhdGlvbgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlUmFu
Z2VPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVSYW5nZU9wZXJh
dGlvbjo6RGVsZXRlUmFuZ2VPcGVyYXRpb24pOgorICAgICAgICAoQ2xlYXJPcGVyYXRpb24pOiBN
b3ZlZCBmcm9tIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OkNsZWFyT3BlcmF0aW9uCisgICAg
ICAgIChXZWJDb3JlOjpDbGVhck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNsZWFyT3BlcmF0aW9uOjpDbGVhck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpnZXQpOiBDb21iaW5lZCBmcm9tIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwvSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0KgorICAgICAgICAoV2ViQ29yZTo6R2V0
T3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OnB1dCk6IE1vdmVkIGZyb20gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0Cisg
ICAgICAgIChXZWJDb3JlOjpQdXRPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKTogTW92ZWQgZnJvbSBJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleEtleXMKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnNldEluZGV4ZXNSZWFkeSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXRJbmRleGVzUmVhZHlPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDb3VudE9w
ZXJhdGlvbjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpkZWxldGVSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVSYW5nZU9wZXJhdGlv
bjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpj
bGVhcik6CisgICAgICAgIChXZWJDb3JlOjpDbGVhck9wZXJhdGlvbjo6cGVyZm9ybSk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuQ3Vyc29yT3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6SURCSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5DdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkluZGV4OjpvcGVuS2V5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpnZXQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmdldEtleSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJJbmRleDo6YmFja2VuZERCKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6
Y3JlYXRlKToKKyAgICAgICAgKElEQkluZGV4KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFj
a2VuZEltcGw6OklEQkluZGV4QmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFj
a2VuZEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBs
OjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmNv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6Om9wZW5LZXlDdXJz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmdldEtleSk6CisgICAgICAgIChJREJJ
bmRleEJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Z2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZTo6aW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Om9wZW5DdXJz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNvdW50KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpiYWNrZW5kREIpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZTo6aWQpOgorICAgICAgICAoSURCT2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6bG9hZEluZGV4ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2VuZXJhdGVLZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6dXBkYXRlS2V5R2VuZXJhdG9y
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldEluZGV4S2V5cyk6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleGVz
UmVhZHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3Bl
bkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpj
b3VudCk6CisgICAgICAgIChJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpkYXRhYmFzZSk6CisgICAgICAgIChJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKToKKwogMjAxMy0wMS0wNCAgUnlvc3VrZSBOaXdhICA8
cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBDaHJvbWl1bSB3aW5kb3dzIGNvbXBpbGUgZmFp
bHMgYmVjYXVzZSBvZiB0aGUgYXNzZXJ0aW9uIGluIE5vZGVSYXJlRGF0YQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCAxNmRmYWVlZTE1OGE4NGIwOTc2OWU5YjIxMGIyMzVjOWM0NGI4OGIx
Li4xYzc5MWNiOTU2NGQ1YmYzZGJmMTU3ZGJlOGVmYzFiZmIxODUxOTlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEzLTAxLTA0ICBBbGVjIEZsZXR0ICA8
YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFN0dWIgb3V0IGFz
eW5jIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Y3JlYXRlT2JqZWN0U3RvcmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjE0OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgU3R1YiBvdXQgV2ViS2l0IEFQ
SSBmb3IgYXN5bmMgY3JlYXRlT2JqZWN0U3RvcmUuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSURC
RGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYklEQkRhdGFiYXNlKToKKyAgICAgICAgKiBzcmMvSURC
RGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJh
Y2tlbmRQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmRlbGV0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKElEQkRh
dGFiYXNlQmFja2VuZFByb3h5KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOjpjcmVhdGVPYmplY3RTdG9y
ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUlt
cGw6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBs
Lmg6CisgICAgICAgIChXZWJJREJEYXRhYmFzZUltcGwpOgorCisyMDEzLTAxLTA0ICBBbGVjIEZs
ZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFN0dWIg
b3V0IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Y3JlYXRlSW5kZXgvZGVsZXRlSW5kZXgK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjExNwor
CisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgU3R1YnMgZm9yIG1p
Z3JhdGlvbiBmcm9tIFdlYklEQk9iamVjdFN0b3JlLgorCisgICAgICAgICogcHVibGljL1dlYklE
QkRhdGFiYXNlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpjcmVhdGVJbmRl
eCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpkZWxldGVJbmRleCk6CisgICAg
ICAgIChXZWJJREJEYXRhYmFzZSk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0
ZUluZGV4KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OklEQkRhdGFiYXNl
QmFja2VuZFByb3h5OjpkZWxldGVJbmRleCk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFj
a2VuZFByb3h5Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRQcm94eSk6CisgICAgICAg
ICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRh
dGFiYXNlSW1wbDo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOjpkZWxldGVJbmRleCk6CisgICAgICAgICogc3JjL1dl
YklEQkRhdGFiYXNlSW1wbC5oOgorICAgICAgICAoV2ViSURCRGF0YWJhc2VJbXBsKToKKyAgICAg
ICAgKiB0ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcDoKKworMjAxMy0wMS0wMyAgQWxl
YyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBN
aWdyYXRlIGJhY2tlbmQgT2JqZWN0U3RvcmUgY2FsbHMgdG8gdXNlIHRyYW5zYWN0aW9uIGlkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI3NDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgIEZpeCBhIGJ1ZyB3aGVy
ZSBhbiBhcnJheSB3YXMgaW5pdGlhbGl6ZWQgd2l0aCBhIGxhcmdlIGVtcHR5IGJ1ZmZlciwKKyAg
ICAgICAgY2xlYW4gdXAgd2hpdGVzcGFjZSwgYW5kIHVwZGF0ZSB0byBtYXRjaCBzaWduYXR1cmVz
IHRoYXQgY2hhbmdlZAorICAgICAgICBpbiBXZWJDb3JlLgorCisgICAgICAgICogcHVibGljL1dl
YklEQkRhdGFiYXNlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpjbGVhcik6
CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkRhdGFiYXNlSW1wbDo6cHV0KToKKyAgICAgICAgKiBzcmMvV2ViSURCSW5kZXhJbXBs
LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcDoKKwogMjAx
My0wMS0wNCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtjaHJvbWl1bV0gUmVtb3ZlIFdlYldpZGdldDo6bGF5ZXJUcmVlVmlldygpLCBvd25lcnNoaXAg
aXMgdGhlIG90aGVyIHdheSBhcm91bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAppbmRleCBkYTdhZGNmODk1
NWQwMzMyYmEyNzRlZjA2MmQ2NzI4NjUxMjdiMmIzLi5mZWFiNWM1ZTNhMzY0NWYwOTk0NDAwOWIw
M2M5ZmNkNjA0ZGM2YjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCkBAIC0xMDEsMTIgKzEwMSwxMyBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwogfTsKIAot
SURCQ3Vyc29yQmFja2VuZEltcGw6OklEQkN1cnNvckJhY2tlbmRJbXBsKFBhc3NSZWZQdHI8SURC
QmFja2luZ1N0b3JlOjpDdXJzb3I+IGN1cnNvciwgQ3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCog
b2JqZWN0U3RvcmUpCi0gICAgOiBtX2N1cnNvcihjdXJzb3IpCi0gICAgLCBtX3Rhc2tUeXBlKHRh
c2tUeXBlKQorSURCQ3Vyc29yQmFja2VuZEltcGw6OklEQkN1cnNvckJhY2tlbmRJbXBsKFBhc3NS
ZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGN1cnNvciwgQ3Vyc29yVHlwZSBjdXJzb3JU
eXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkKQorICAgIDogbV90YXNrVHlwZSh0YXNrVHlwZSkKICAgICAsIG1fY3Vyc29yVHlwZShjdXJz
b3JUeXBlKQorICAgICwgbV9kYXRhYmFzZSh0cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKSkKICAgICAs
IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCi0gICAgLCBtX29iamVjdFN0b3JlKG9iamVjdFN0
b3JlKQorICAgICwgbV9vYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpCisgICAgLCBtX2N1cnNv
cihjdXJzb3IpCiAgICAgLCBtX2Nsb3NlZChmYWxzZSkKIHsKICAgICBtX3RyYW5zYWN0aW9uLT5y
ZWdpc3Rlck9wZW5DdXJzb3IodGhpcyk7CkBAIC0xMTUsMTEgKzExNiw2IEBAIElEQkN1cnNvckJh
Y2tlbmRJbXBsOjpJREJDdXJzb3JCYWNrZW5kSW1wbChQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZTo6Q3Vyc29yPiBjCiBJREJDdXJzb3JCYWNrZW5kSW1wbDo6fklEQkN1cnNvckJhY2tlbmRJbXBs
KCkKIHsKICAgICBtX3RyYW5zYWN0aW9uLT51bnJlZ2lzdGVyT3BlbkN1cnNvcih0aGlzKTsKLSAg
ICAvLyBPcmRlciBpcyBpbXBvcnRhbnQsIHRoZSBjdXJzb3JzIGhhdmUgdG8gYmUgZGVzdHJ1Y3Rl
ZCBiZWZvcmUgdGhlIG9iamVjdFN0b3JlLgotICAgIG1fY3Vyc29yLmNsZWFyKCk7Ci0gICAgbV9z
YXZlZEN1cnNvci5jbGVhcigpOwotCi0gICAgbV9vYmplY3RTdG9yZS5jbGVhcigpOwogfQogCiAK
QEAgLTE3MCw4ICsxNjYsNyBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGVGdW5j
dGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLAogICAgIFJlZlB0cjxJ
REJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShtX2N1cnNvci0+cHJpbWFy
eUtleSgpLCBlYyk7CiAgICAgQVNTRVJUKCFlYyk7CiAKLSAgICBtX29iamVjdFN0b3JlLT5kZWxl
dGVGdW5jdGlvbihrZXlSYW5nZS5yZWxlYXNlKCksIHBycENhbGxiYWNrcywgbV90cmFuc2FjdGlv
bi5nZXQoKSwgZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIG1fZGF0YWJhc2UtPmRlbGV0ZVJh
bmdlKG1fdHJhbnNhY3Rpb24tPmlkKCksIG1fb2JqZWN0U3RvcmVJZCwga2V5UmFuZ2UucmVsZWFz
ZSgpLCBwcnBDYWxsYmFja3MpOwogfQogCiB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVm
ZXRjaENvbnRpbnVlKGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
cHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCmluZGV4IGIwYzc5ZjIx
NGZjYWM2NzIyZWM1NDQyM2U5ZDk5YjhmZmI1MWQ2MzQuLjk2NjhkZmQzYTQ2MzFlMzM4ZjQ3ZTM1
NDc2MzcxZjE2MTY2ZmMzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaApAQCAtNDcsMTMgKzQ3LDEzIEBAIGNs
YXNzIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw7CiAKIGNsYXNzIElEQkN1cnNvckJhY2tlbmRJ
bXBsIDogcHVibGljIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjcmVhdGUoUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmU6OkN1cnNvcj4gY3Vyc29yLCBDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uLCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsKiBvYmplY3RTdG9yZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNr
ZW5kSW1wbD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGN1cnNv
ciwgQ3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFu
c2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJREJDdXJzb3JCYWNrZW5kSW1wbChjdXJzb3IsIGN1cnNvclR5cGUsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywgdHJhbnNhY3Rpb24sIG9iamVj
dFN0b3JlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQ3Vyc29yQmFja2VuZElt
cGwoY3Vyc29yLCBjdXJzb3JUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U6Ok5v
cm1hbFRhc2ssIHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkKSk7CiAgICAgfQotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJC
YWNraW5nU3RvcmU6OkN1cnNvcj4gY3Vyc29yLCBDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uLCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBv
YmplY3RTdG9yZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4g
Y3JlYXRlKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGN1cnNvciwgQ3Vyc29y
VHlwZSBjdXJzb3JUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBl
IHRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBvYmplY3RTdG9yZUlkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJD
dXJzb3JCYWNrZW5kSW1wbChjdXJzb3IsIGN1cnNvclR5cGUsIHRhc2tUeXBlLCB0cmFuc2FjdGlv
biwgb2JqZWN0U3RvcmUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJDdXJzb3JC
YWNrZW5kSW1wbChjdXJzb3IsIGN1cnNvclR5cGUsIHRhc2tUeXBlLCB0cmFuc2FjdGlvbiwgb2Jq
ZWN0U3RvcmVJZCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5JREJDdXJzb3JCYWNrZW5kSW1wbCgp
OwogCkBAIC03MSwxOCArNzEsMjAgQEAgcHVibGljOgogICAgIHZvaWQgY2xvc2UoKTsKIAogcHJp
dmF0ZToKLSAgICBJREJDdXJzb3JCYWNrZW5kSW1wbChQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZTo6Q3Vyc29yPiwgQ3Vyc29yVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOjpU
YXNrVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCosIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwqKTsKKyAgICBJREJDdXJzb3JCYWNrZW5kSW1wbChQYXNzUmVmUHRyPElEQkJhY2tpbmdT
dG9yZTo6Q3Vyc29yPiwgQ3Vyc29yVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
OjpUYXNrVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCosIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCk7CiAKICAgICBjbGFzcyBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb247CiAgICAgY2xhc3Mg
Q3Vyc29yQWR2YW5jZU9wZXJhdGlvbjsKICAgICBjbGFzcyBDdXJzb3JQcmVmZXRjaEl0ZXJhdGlv
bk9wZXJhdGlvbjsKIAotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gbV9jdXJz
b3I7Ci0gICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBtX3NhdmVkQ3Vyc29yOwog
ICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgbV90YXNrVHlwZTsK
ICAgICBDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4gbV90cmFuc2FjdGlvbjsKLSAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbD4gbV9vYmplY3RTdG9yZTsKKyAgICBjb25zdCBSZWZQdHI8SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbD4gbV9kYXRhYmFzZTsKKyAgICBjb25zdCBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbD4gbV90cmFuc2FjdGlvbjsKKyAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJ
ZDsKKworICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gbV9jdXJzb3I7IC8vIE11
c3QgYmUgZGVzdHJveWVkIGJlZm9yZSBtX3RyYW5zYWN0aW9uLgorICAgIFJlZlB0cjxJREJCYWNr
aW5nU3RvcmU6OkN1cnNvcj4gbV9zYXZlZEN1cnNvcjsgLy8gTXVzdCBiZSBkZXN0cm95ZWQgYmVm
b3JlIG1fdHJhbnNhY3Rpb24uCiAKICAgICBib29sIG1fY2xvc2VkOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCmluZGV4IGRkYzE4OWEwYjQy
OGRiNDhlZWY0ZGI2MDc2NGUxMmYzNjViNTBlZGIuLmY5OWI1ZTQ4NjcyZGM4NTZiN2RkM2Y0MzEx
MmU3OGI2MzY1NWMwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuaApAQCAtMTAzLDYgKzEwMyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGZpbmRPYmplY3RTdG9yZUlkKG5hbWUpICE9IElEQk9iamVjdFN0b3JlTWV0YWRhdGE6OkludmFs
aWRJZDsKICAgICB9CiAKKyAgICBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UqIGJhY2tlbmQo
KSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7IH0KKwogICAgIHN0YXRpYyBpbnQ2NF90
IG5leHRUcmFuc2FjdGlvbklkKCk7CiAKICAgICB1c2luZyBSZWZDb3VudGVkPElEQkRhdGFiYXNl
Pjo6cmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCBjZDhhZTc3ODczMDc2NDI5OGFjYmVl
OWVjYzlmZjNkZjRjY2Y5NzNhLi5mMDZjYjdlZGVhMzc1M2JjNjMxOWE2ZTg0NjdjNmM2Nzg3ZjYw
MDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMjksOCArMjksMTAgQEAKICNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgorI2lu
Y2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNl
cHRpb24uaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEltcGwuaCIKKyNpbmNsdWRlICJJ
REJJbmRleEJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bC5oIgogI2luY2x1ZGUgIklEQlRyYWNpbmcuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmgiCkBAIC0xNTQsNiArMTU2LDE5MCBAQCBwcml2YXRlOgogICAgIGludDY0X3Qg
bV9wcmV2aW91c0ludFZlcnNpb247CiB9OwogCitjbGFzcyBHZXRPcGVyYXRpb24gOiBwdWJsaWMg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6T3BlcmF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpPcGVyYXRpb24+IGNyZWF0
ZShQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBjb25zdCBJREJEYXRh
YmFzZU1ldGFkYXRhJiBtZXRhZGF0YSwgaW50NjQgb2JqZWN0U3RvcmVJZCwgaW50NjQgaW5kZXhJ
ZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIElEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2U6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgR2V0T3BlcmF0aW9u
KGJhY2tpbmdTdG9yZSwgbWV0YWRhdGEsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdl
LCBjdXJzb3JUeXBlLCBjYWxsYmFja3MpKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIHBlcmZv
cm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCopOworcHJpdmF0ZToKKyAgICBHZXRPcGVyYXRp
b24oUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSwgY29uc3QgSURCRGF0
YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBp
bmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSURCQ3Vyc29yQmFja2Vu
ZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzKQorICAgICAgICA6IG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKKyAg
ICAgICAgLCBtX2RhdGFiYXNlSWQobWV0YWRhdGEuaWQpCisgICAgICAgICwgbV9vYmplY3RTdG9y
ZUlkKG9iamVjdFN0b3JlSWQpCisgICAgICAgICwgbV9pbmRleElkKGluZGV4SWQpCisgICAgICAg
ICwgbV9rZXlQYXRoKG1ldGFkYXRhLm9iamVjdFN0b3Jlcy5nZXQob2JqZWN0U3RvcmVJZCkua2V5
UGF0aCkKKyAgICAgICAgLCBtX2F1dG9JbmNyZW1lbnQobWV0YWRhdGEub2JqZWN0U3RvcmVzLmdl
dChvYmplY3RTdG9yZUlkKS5hdXRvSW5jcmVtZW50KQorICAgICAgICAsIG1fa2V5UmFuZ2Uoa2V5
UmFuZ2UpCisgICAgICAgICwgbV9jdXJzb3JUeXBlKGN1cnNvclR5cGUpCisgICAgICAgICwgbV9j
YWxsYmFja3MoY2FsbGJhY2tzKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1ldGFkYXRhLm9iamVj
dFN0b3Jlcy5nZXQob2JqZWN0U3RvcmVJZCkuaWQgPT0gb2JqZWN0U3RvcmVJZCk7CisgICAgfQor
CisgICAgY29uc3QgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gbV9iYWNraW5nU3RvcmU7CisgICAg
Y29uc3QgaW50NjRfdCBtX2RhdGFiYXNlSWQ7CisgICAgY29uc3QgaW50NjRfdCBtX29iamVjdFN0
b3JlSWQ7CisgICAgY29uc3QgaW50NjRfdCBtX2luZGV4SWQ7CisgICAgY29uc3QgSURCS2V5UGF0
aCBtX2tleVBhdGg7CisgICAgY29uc3QgYm9vbCBtX2F1dG9JbmNyZW1lbnQ7CisgICAgY29uc3Qg
UmVmUHRyPElEQktleVJhbmdlPiBtX2tleVJhbmdlOworICAgIGNvbnN0IElEQkN1cnNvckJhY2tl
bmRJbnRlcmZhY2U6OkN1cnNvclR5cGUgbV9jdXJzb3JUeXBlOworICAgIGNvbnN0IFJlZlB0cjxJ
REJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworfTsKKworY2xhc3MgUHV0T3BlcmF0aW9uIDogcHVi
bGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6T3BlcmF0aW9uPiBj
cmVhdGUoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSwgaW50NjRfdCBk
YXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZSwgVmVj
dG9yPHVpbnQ4X3Q+JiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlOjpQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3Rv
cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OkluZGV4S2V5cz4mIGluZGV4S2V5cykKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUHV0T3BlcmF0aW9uKGJhY2tpbmdTdG9y
ZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmUsIHZhbHVlLCBrZXksIHB1dE1vZGUsIGNhbGxiYWNr
cywgaW5kZXhJZHMsIGluZGV4S2V5cykpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9y
bShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKik7Citwcml2YXRlOgorICAgIFB1dE9wZXJhdGlv
bihQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlLCBWZWN0b3I8
dWludDhfdD4mIHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2U6OlB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcywgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQorICAgICAg
ICA6IG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKKyAgICAgICAgLCBtX2RhdGFiYXNlSWQo
ZGF0YWJhc2VJZCkKKyAgICAgICAgLCBtX29iamVjdFN0b3JlKG9iamVjdFN0b3JlKQorICAgICAg
ICAsIG1fa2V5KGtleSkKKyAgICAgICAgLCBtX3B1dE1vZGUocHV0TW9kZSkKKyAgICAgICAgLCBt
X2NhbGxiYWNrcyhjYWxsYmFja3MpCisgICAgICAgICwgbV9pbmRleElkcyhpbmRleElkcykKKyAg
ICAgICAgLCBtX2luZGV4S2V5cyhpbmRleEtleXMpCisgICAgeworICAgICAgICBtX3ZhbHVlLnN3
YXAodmFsdWUpOworICAgIH0KKworICAgIGNvbnN0IFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IG1f
YmFja2luZ1N0b3JlOworICAgIGNvbnN0IGludDY0X3QgbV9kYXRhYmFzZUlkOworICAgIGNvbnN0
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgbV9vYmplY3RTdG9yZTsKKyAgICBWZWN0b3I8dWludDhf
dD4gbV92YWx1ZTsKKyAgICBjb25zdCBSZWZQdHI8SURCS2V5PiBtX2tleTsKKyAgICBjb25zdCBJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlB1dE1vZGUgbV9wdXRNb2RlOworICAgIGNvbnN0
IFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworICAgIGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiBtX2luZGV4SWRzOworICAgIGNvbnN0IFZlY3RvcjxJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U6OkluZGV4S2V5cz4gbV9pbmRleEtleXM7Cit9OworCitjbGFzcyBTZXRJbmRleGVzUmVh
ZHlPcGVyYXRpb24gOiBwdWJsaWMgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6T3BlcmF0aW9u
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsOjpPcGVyYXRpb24+IGNyZWF0ZShzaXplX3QgaW5kZXhDb3VudCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgU2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uKGluZGV4Q291bnQp
KTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbCopOworcHJpdmF0ZToKKyAgICBTZXRJbmRleGVzUmVhZHlPcGVyYXRpb24oc2l6ZV90IGlu
ZGV4Q291bnQpCisgICAgICAgIDogbV9pbmRleENvdW50KGluZGV4Q291bnQpCisgICAgeworICAg
IH0KKworICAgIGNvbnN0IHNpemVfdCBtX2luZGV4Q291bnQ7Cit9OworCitjbGFzcyBPcGVuQ3Vy
c29yT3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlv
biB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbDo6T3BlcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tp
bmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2lnbmVkIHNo
b3J0IGRpcmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJz
b3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBPcGVuQ3Vyc29yT3BlcmF0aW9uKGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwgY3Vyc29yVHlw
ZSwgdGFza1R5cGUsIGNhbGxiYWNrcykpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9y
bShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKik7Citwcml2YXRlOgorICAgIE9wZW5DdXJzb3JP
cGVyYXRpb24oUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwg
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzKQorICAgICAgICA6IG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9y
ZSkKKyAgICAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKKyAgICAgICAgLCBtX29iamVj
dFN0b3JlSWQob2JqZWN0U3RvcmVJZCkKKyAgICAgICAgLCBtX2luZGV4SWQoaW5kZXhJZCkKKyAg
ICAgICAgLCBtX2tleVJhbmdlKGtleVJhbmdlKQorICAgICAgICAsIG1fZGlyZWN0aW9uKGRpcmVj
dGlvbikKKyAgICAgICAgLCBtX2N1cnNvclR5cGUoY3Vyc29yVHlwZSkKKyAgICAgICAgLCBtX3Rh
c2tUeXBlKHRhc2tUeXBlKQorICAgICAgICAsIG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKKyAgICB7
CisgICAgfQorCisgICAgY29uc3QgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gbV9iYWNraW5nU3Rv
cmU7CisgICAgY29uc3QgaW50NjRfdCBtX2RhdGFiYXNlSWQ7CisgICAgY29uc3QgaW50NjRfdCBt
X29iamVjdFN0b3JlSWQ7CisgICAgY29uc3QgaW50NjRfdCBtX2luZGV4SWQ7CisgICAgY29uc3Qg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gbV9rZXlSYW5nZTsKKyAgICBjb25zdCB1bnNpZ25lZCBz
aG9ydCBtX2RpcmVjdGlvbjsKKyAgICBjb25zdCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpD
dXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKKyAgICBjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U6OlRhc2tUeXBlIG1fdGFza1R5cGU7CisgICAgY29uc3QgUmVmUHRyPElEQkNhbGxiYWNr
cz4gbV9jYWxsYmFja3M7Cit9OworCitjbGFzcyBDb3VudE9wZXJhdGlvbiA6IHB1YmxpYyBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpPcGVyYXRpb24geworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbj4gY3JlYXRlKFBh
c3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb3VudE9wZXJhdGlvbihiYWNraW5n
U3RvcmUsIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBjYWxs
YmFja3MpKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbCopOworcHJpdmF0ZToKKyAgICBDb3VudE9wZXJhdGlvbihQYXNzUmVmUHRyPElE
QkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBr
ZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICAgICAgOiBt
X2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCisgICAgICAgICwgbV9kYXRhYmFzZUlkKGRhdGFi
YXNlSWQpCisgICAgICAgICwgbV9vYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpCisgICAgICAg
ICwgbV9pbmRleElkKGluZGV4SWQpCisgICAgICAgICwgbV9rZXlSYW5nZShrZXlSYW5nZSkKKyAg
ICAgICAgLCBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCisgICAgeworICAgIH0KKworICAgIGNvbnN0
IFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlOworICAgIGNvbnN0IGludDY0
X3QgbV9kYXRhYmFzZUlkOworICAgIGNvbnN0IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOworICAg
IGNvbnN0IGludDY0X3QgbV9pbmRleElkOworICAgIGNvbnN0IFJlZlB0cjxJREJLZXlSYW5nZT4g
bV9rZXlSYW5nZTsKKyAgICBjb25zdCBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsK
K307CisKK2NsYXNzIERlbGV0ZVJhbmdlT3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6Ok9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6T3BlcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBEZWxldGVSYW5nZU9wZXJhdGlvbihiYWNraW5nU3RvcmUsIGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIGtleVJhbmdlLCBjYWxsYmFja3MpKTsKKyAgICB9CisgICAgdmlydHVhbCB2
b2lkIHBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCopOworcHJpdmF0ZToKKyAgICBE
ZWxldGVSYW5nZU9wZXJhdGlvbihQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0
b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCisgICAgICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQorICAgICAgICAsIG1f
ZGF0YWJhc2VJZChkYXRhYmFzZUlkKQorICAgICAgICAsIG1fb2JqZWN0U3RvcmVJZChvYmplY3RT
dG9yZUlkKQorICAgICAgICAsIG1fa2V5UmFuZ2Uoa2V5UmFuZ2UpCisgICAgICAgICwgbV9jYWxs
YmFja3MoY2FsbGJhY2tzKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBSZWZQdHI8SURCQmFj
a2luZ1N0b3JlPiBtX2JhY2tpbmdTdG9yZTsKKyAgICBjb25zdCBpbnQ2NF90IG1fZGF0YWJhc2VJ
ZDsKKyAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsKKyAgICBjb25zdCBSZWZQdHI8
SURCS2V5UmFuZ2U+IG1fa2V5UmFuZ2U7CisgICAgY29uc3QgUmVmUHRyPElEQkNhbGxiYWNrcz4g
bV9jYWxsYmFja3M7Cit9OworCitjbGFzcyBDbGVhck9wZXJhdGlvbiA6IHB1YmxpYyBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsOjpPcGVyYXRpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
T3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbj4gY3JlYXRlKFBhc3NS
ZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDbGVhck9wZXJhdGlvbihiYWNr
aW5nU3RvcmUsIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGNhbGxiYWNrcykpOworICAgIH0K
KyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKik7Citw
cml2YXRlOgorICAgIENsZWFyT3BlcmF0aW9uKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBi
YWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgICAgICA6IG1fYmFja2luZ1N0
b3JlKGJhY2tpbmdTdG9yZSkKKyAgICAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKKyAg
ICAgICAgLCBtX29iamVjdFN0b3JlSWQob2JqZWN0U3RvcmVJZCkKKyAgICAgICAgLCBtX2NhbGxi
YWNrcyhjYWxsYmFja3MpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IFJlZlB0cjxJREJCYWNr
aW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlOworICAgIGNvbnN0IGludDY0X3QgbV9kYXRhYmFzZUlk
OworICAgIGNvbnN0IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOworICAgIGNvbnN0IFJlZlB0cjxJ
REJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworfTsKIAogY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6UGVuZGluZ09wZW5DYWxsIHsKIHB1YmxpYzoKQEAgLTMxNiw0NCArNTAyLDM3NCBAQCB2
b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmFib3J0KGludDY0X3QgdHJhbnNhY3Rpb25JZCkK
ICAgICBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCktPmFib3J0KCk7CiB9CiAKLXZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Z2V0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+LCBib29sIGtleU9ubHksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikKK3ZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6Z2V0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJh
bmdlLCBib29sIGtleU9ubHksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgSURCX1RSQUNFKCJJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpnZXQiKTsKKyAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnModHJh
bnNhY3Rpb25JZCkpOworICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9u
ID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOworCisgICAgdHJhbnNhY3Rpb24t
PnNjaGVkdWxlVGFzayhHZXRPcGVyYXRpb246OmNyZWF0ZShtX2JhY2tpbmdTdG9yZSwgbWV0YWRh
dGEoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGtleU9ubHkgPyBJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5IDogSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6
S2V5QW5kVmFsdWUsIGNhbGxiYWNrcykpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZElt
cGw6OnB1dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgVmVj
dG9yPHVpbnQ4X3Q+KiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+LCBQdXRNb2RlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0
IFZlY3RvcjxJbmRleEtleXM+JikKK3ZvaWQgR2V0T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIElEQl9UUkFDRSgiR2V0T3BlcmF0aW9uIik7CisKKyAgICBSZWZQdHI8SURCS2V5
PiBrZXk7CisKKyAgICBpZiAobV9rZXlSYW5nZS0+aXNPbmx5S2V5KCkpCisgICAgICAgIGtleSA9
IG1fa2V5UmFuZ2UtPmxvd2VyKCk7CisgICAgZWxzZSB7CisgICAgICAgIFJlZlB0cjxJREJCYWNr
aW5nU3RvcmU6OkN1cnNvcj4gYmFja2luZ1N0b3JlQ3Vyc29yOworICAgICAgICBpZiAobV9pbmRl
eElkID09IElEQkluZGV4TWV0YWRhdGE6OkludmFsaWRJZCkgeworICAgICAgICAgICAgQVNTRVJU
KG1fY3Vyc29yVHlwZSAhPSBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5KTsKKyAg
ICAgICAgICAgIC8vIE9iamVjdFN0b3JlIFJldHJpZXZhbCBPcGVyYXRpb24KKyAgICAgICAgICAg
IGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuT2JqZWN0U3RvcmVDdXJz
b3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwg
bV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBJREJDdXJzb3I6Ok5FWFQpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5KQorICAgICAgICAgICAgICAgIC8vIEluZGV4IFZhbHVl
IFJldHJpZXZhbCBPcGVyYXRpb24KKyAgICAgICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3Ig
PSBtX2JhY2tpbmdTdG9yZS0+b3BlbkluZGV4S2V5Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5n
U3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRl
eElkLCBtX2tleVJhbmdlLmdldCgpLCBJREJDdXJzb3I6Ok5FWFQpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIC8vIEluZGV4IFJlZmVyZW5jZWQgVmFsdWUgUmV0cmlldmFsIE9w
ZXJhdGlvbgorICAgICAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0
b3JlLT5vcGVuSW5kZXhDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
KCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2Uu
Z2V0KCksIElEQkN1cnNvcjo6TkVYVCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWJhY2tp
bmdTdG9yZUN1cnNvcikgeworICAgICAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcygpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAga2V5ID0gYmFja2luZ1N0
b3JlQ3Vyc29yLT5rZXkoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5
OworICAgIGJvb2wgb2s7CisgICAgaWYgKG1faW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJ
bnZhbGlkSWQpIHsKKyAgICAgICAgLy8gT2JqZWN0IFN0b3JlIFJldHJpZXZhbCBPcGVyYXRpb24K
KyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlOworICAgICAgICBvayA9IG1fYmFja2luZ1N0
b3JlLT5nZXRSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1f
ZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCAqa2V5LCB2YWx1ZSk7CisgICAgICAgIGlmICgh
b2spIHsKKyAgICAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJy
b3IgaW4gZ2V0UmVjb3JkLiIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fY2FsbGJhY2tzLT5v
blN1Y2Nlc3MoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChtX2F1dG9JbmNyZW1lbnQgJiYgIW1fa2V5UGF0aC5pc051bGwoKSkgeworICAgICAgICAgICAg
bV9jYWxsYmFja3MtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21X
aXJlQnl0ZXModmFsdWUpLCBrZXksIG1fa2V5UGF0aCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyh2YWx1ZSkpOworICAgICAgICByZXR1cm47CisK
KyAgICB9CisKKyAgICAvLyBGcm9tIGhlcmUgd2UgYXJlIGRlYWxpbmcgb25seSB3aXRoIGluZGV4
ZXMuCisgICAgb2sgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0UHJpbWFyeUtleVZpYUluZGV4KHRyYW5z
YWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0
U3RvcmVJZCwgbV9pbmRleElkLCAqa2V5LCBwcmltYXJ5S2V5KTsKKyAgICBpZiAoIW9rKSB7Cisg
ICAgICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgaW4gZ2V0UHJp
bWFyeUtleVZpYUluZGV4LiIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9j
dXJzb3JUeXBlID09IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHkpIHsKKyAgICAg
ICAgLy8gSW5kZXggVmFsdWUgUmV0cmlldmFsIE9wZXJhdGlvbgorICAgICAgICBtX2NhbGxiYWNr
cy0+b25TdWNjZXNzKHByaW1hcnlLZXkuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgLy8gSW5kZXggUmVmZXJlbmNlZCBWYWx1ZSBSZXRyaWV2YWwgT3BlcmF0aW9uCisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHZhbHVlOworICAgIG9rID0gbV9iYWNraW5nU3RvcmUtPmdldFJlY29y
ZCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBt
X29iamVjdFN0b3JlSWQsICpwcmltYXJ5S2V5LCB2YWx1ZSk7CisgICAgaWYgKCFvaykgeworICAg
ICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yIGluIGdldFJlY29y
ZC4iKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAodmFsdWUuaXNFbXB0eSgp
KSB7CisgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBpZiAobV9hdXRvSW5jcmVtZW50ICYmICFtX2tleVBhdGguaXNOdWxsKCkpIHsK
KyAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZUZyb21XaXJlQnl0ZXModmFsdWUpLCBwcmltYXJ5S2V5LCBtX2tleVBhdGgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHZhbHVlKSk7CiB9CiAKLXZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgY29u
c3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKQor
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwdXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIFZlY3Rvcjx1aW50OF90PiogdmFsdWUsIFBhc3NSZWZQdHI8
SURCS2V5PiBrZXksIFB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcywgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPElu
ZGV4S2V5cz4mIGluZGV4S2V5cykKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBJ
REJfVFJBQ0UoIklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnB1dCIpOworCisgICAgQVNTRVJUKG1f
dHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKTsKKyAgICBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlv
bklkKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6
UkVBRF9PTkxZKTsKKworICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3Rv
cmVNZXRhZGF0YSA9IG1ldGFkYXRhKCkub2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsK
KworICAgIEFTU0VSVChvYmplY3RTdG9yZU1ldGFkYXRhLmF1dG9JbmNyZW1lbnQgfHwga2V5Lmdl
dCgpKTsKKworICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soUHV0T3BlcmF0aW9uOjpjcmVh
dGUobV9iYWNraW5nU3RvcmUsIGlkKCksIG9iamVjdFN0b3JlTWV0YWRhdGEsICp2YWx1ZSwga2V5
LCBwdXRNb2RlLCBjYWxsYmFja3MsIGluZGV4SWRzLCBpbmRleEtleXMpKTsKK30KKwordm9pZCBQ
dXRPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rp
b24pCit7CisgICAgSURCX1RSQUNFKCJQdXRPcGVyYXRpb24iKTsKKyAgICBBU1NFUlQodHJhbnNh
Y3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKKyAgICBBU1NFUlQo
bV9pbmRleElkcy5zaXplKCkgPT0gbV9pbmRleEtleXMuc2l6ZSgpKTsKKyAgICBib29sIGtleVdh
c0dlbmVyYXRlZCA9IGZhbHNlOworCisgICAgUmVmUHRyPElEQktleT4ga2V5OworICAgIGlmICht
X3B1dE1vZGUgIT0gSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JVcGRhdGUgJiYg
bV9vYmplY3RTdG9yZS5hdXRvSW5jcmVtZW50ICYmICFtX2tleSkgeworICAgICAgICBSZWZQdHI8
SURCS2V5PiBhdXRvSW5jS2V5ID0gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2VuZXJhdGVL
ZXkobV9iYWNraW5nU3RvcmUsIHRyYW5zYWN0aW9uLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3Rv
cmUuaWQpOworICAgICAgICBrZXlXYXNHZW5lcmF0ZWQgPSB0cnVlOworICAgICAgICBpZiAoIWF1
dG9JbmNLZXktPmlzVmFsaWQoKSkgeworICAgICAgICAgICAgbV9jYWxsYmFja3MtPm9uRXJyb3Io
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50
RXJyb3IsICJNYXhpbXVtIGtleSBnZW5lcmF0b3IgdmFsdWUgcmVhY2hlZC4iKSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAga2V5ID0gYXV0b0luY0tleTsKKyAgICB9
IGVsc2UKKyAgICAgICAga2V5ID0gbV9rZXk7CisKKyAgICBBU1NFUlQoa2V5ICYmIGtleS0+aXNW
YWxpZCgpKTsKKworICAgIElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllciByZWNvcmRJ
ZGVudGlmaWVyOworICAgIGlmIChtX3B1dE1vZGUgPT0gSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlOjpBZGRPbmx5KSB7CisgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgYm9v
bCBvayA9IG1fYmFja2luZ1N0b3JlLT5rZXlFeGlzdHNJbk9iamVjdFN0b3JlKHRyYW5zYWN0aW9u
LT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmUu
aWQsICprZXksICZyZWNvcmRJZGVudGlmaWVyLCBmb3VuZCk7CisgICAgICAgIGlmICghb2spIHsK
KyAgICAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgY2hl
Y2tpbmcga2V5IGV4aXN0ZW5jZS4iKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGZvdW5kKSB7CisgICAgICAgICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihJ
REJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNvbnN0cmFpbnRF
cnJvciwgIktleSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgb2JqZWN0IHN0b3JlLiIpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIFZlY3RvcjxPd25QdHI8SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SW5kZXhXcml0ZXI+ID4gaW5kZXhXcml0ZXJzOworICAg
IFN0cmluZyBlcnJvck1lc3NhZ2U7CisgICAgYm9vbCBvYmV5c0NvbnN0cmFpbnRzID0gZmFsc2U7
CisgICAgYm9vbCBiYWNraW5nU3RvcmVTdWNjZXNzID0gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6bWFrZUluZGV4V3JpdGVycyh0cmFuc2FjdGlvbiwgbV9iYWNraW5nU3RvcmUuZ2V0KCksIG1f
ZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZSwga2V5LCBrZXlXYXNHZW5lcmF0ZWQsIG1faW5kZXhJ
ZHMsIG1faW5kZXhLZXlzLCAmaW5kZXhXcml0ZXJzLCAmZXJyb3JNZXNzYWdlLCBvYmV5c0NvbnN0
cmFpbnRzKTsKKyAgICBpZiAoIWJhY2tpbmdTdG9yZVN1Y2Nlc3MpIHsKKyAgICAgICAgbV9jYWxs
YmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvcjogYmFja2luZyBzdG9yZSBlcnJvciB1
cGRhdGluZyBpbmRleCBrZXlzLiIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
IW9iZXlzQ29uc3RyYWludHMpIHsKKyAgICAgICAgbV9jYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3Is
IGVycm9yTWVzc2FnZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQmVmb3Jl
IHRoaXMgcG9pbnQsIGRvbid0IGRvIGFueSBtdXRhdGlvbi4gQWZ0ZXIgdGhpcyBwb2ludCwgcm9s
bGJhY2sgdGhlIHRyYW5zYWN0aW9uIGluIGNhc2Ugb2YgZXJyb3IuCisgICAgYmFja2luZ1N0b3Jl
U3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5wdXRSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZS5pZCwgKmtleSwg
bV92YWx1ZSwgJnJlY29yZElkZW50aWZpZXIpOworICAgIGlmICghYmFja2luZ1N0b3JlU3VjY2Vz
cykgeworICAgICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVh
dGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yOiBi
YWNraW5nIHN0b3JlIGVycm9yIHBlcmZvcm1pbmcgcHV0L2FkZC4iKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluZGV4V3JpdGVycy5zaXpl
KCk7ICsraSkgeworICAgICAgICBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJbmRleFdyaXRl
ciogaW5kZXhXcml0ZXIgPSBpbmRleFdyaXRlcnNbaV0uZ2V0KCk7CisgICAgICAgIGluZGV4V3Jp
dGVyLT53cml0ZUluZGV4S2V5cyhyZWNvcmRJZGVudGlmaWVyLCAqbV9iYWNraW5nU3RvcmUsIHRy
YW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2Jq
ZWN0U3RvcmUuaWQpOworICAgIH0KKworICAgIGlmIChtX29iamVjdFN0b3JlLmF1dG9JbmNyZW1l
bnQgJiYgbV9wdXRNb2RlICE9IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVXBk
YXRlICYmIGtleS0+dHlwZSgpID09IElEQktleTo6TnVtYmVyVHlwZSkgeworICAgICAgICBib29s
IG9rID0gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6dXBkYXRlS2V5R2VuZXJhdG9yKG1fYmFj
a2luZ1N0b3JlLCB0cmFuc2FjdGlvbiwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlLmlkLCBr
ZXkuZ2V0KCksICFrZXlXYXNHZW5lcmF0ZWQpOworICAgICAgICBpZiAoIW9rKSB7CisgICAgICAg
ICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yIHVwZGF0aW5nIGtl
eSBnZW5lcmF0b3IuIikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQor
CisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhrZXkucmVsZWFzZSgpKTsKK30KKworCit2b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9u
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlL
ZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtl
eXM+JiBpbmRleEtleXMpCit7CisgICAgSURCX1RSQUNFKCJJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpzZXRJbmRleEtleXMiKTsKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5z
YWN0aW9uSWQpKQorICAgICAgICByZXR1cm47CisKKyAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKKyAg
ICBpZiAodHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
UmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9IHBycFByaW1hcnlLZXk7CisgICAgUmVmUHRyPElE
QkJhY2tpbmdTdG9yZT4gc3RvcmUgPSBiYWNraW5nU3RvcmUoKTsKKyAgICAvLyBGSVhNRTogVGhp
cyBtZXRob2QgY291bGQgYmUgYXN5bmNocm9ub3VzLCBidXQgd2UgbmVlZCB0byBldmFsdWF0ZSBp
ZiBpdCdzIHdvcnRoIHRoZSBleHRyYSBjb21wbGV4aXR5LgorICAgIElEQkJhY2tpbmdTdG9yZTo6
UmVjb3JkSWRlbnRpZmllciByZWNvcmRJZGVudGlmaWVyOworICAgIGJvb2wgZm91bmQgPSBmYWxz
ZTsKKyAgICBib29sIG9rID0gc3RvcmUtPmtleUV4aXN0c0luT2JqZWN0U3RvcmUodHJhbnNhY3Rp
b24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fbWV0YWRhdGEuaWQsIG9iamVjdFN0b3Jl
SWQsICpwcmltYXJ5S2V5LCAmcmVjb3JkSWRlbnRpZmllciwgZm91bmQpOworICAgIGlmICghb2sp
IHsKKyAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3Igc2V0dGlu
ZyBpbmRleCBrZXlzLiIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWZvdW5k
KSB7CisgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBTdHJpbmc6
OmZvcm1hdCgiSW50ZXJuYWwgZXJyb3Igc2V0dGluZyBpbmRleCBrZXlzIGZvciBvYmplY3Qgc3Rv
cmUuIikpOworICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoZXJyb3IucmVsZWFzZSgpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZlY3RvcjxPd25QdHI8SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6SW5kZXhXcml0ZXI+ID4gaW5kZXhXcml0ZXJzOworICAgIFN0cmluZyBlcnJv
ck1lc3NhZ2U7CisgICAgYm9vbCBvYmV5c0NvbnN0cmFpbnRzID0gZmFsc2U7CisgICAgQVNTRVJU
KG1ldGFkYXRhKCkub2JqZWN0U3RvcmVzLmNvbnRhaW5zKG9iamVjdFN0b3JlSWQpKTsKKyAgICBj
b25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhID0gbWV0YWRh
dGEoKS5vYmplY3RTdG9yZXMuZ2V0KG9iamVjdFN0b3JlSWQpOworICAgIGJvb2wgYmFja2luZ1N0
b3JlU3VjY2VzcyA9IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om1ha2VJbmRleFdyaXRlcnMo
dHJhbnNhY3Rpb24sIHN0b3JlLmdldCgpLCBpZCgpLCBvYmplY3RTdG9yZU1ldGFkYXRhLCBwcmlt
YXJ5S2V5LCBmYWxzZSwgaW5kZXhJZHMsIGluZGV4S2V5cywgJmluZGV4V3JpdGVycywgJmVycm9y
TWVzc2FnZSwgb2JleXNDb25zdHJhaW50cyk7CisgICAgaWYgKCFiYWNraW5nU3RvcmVTdWNjZXNz
KSB7CisgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydChJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUo
SURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yOiBiYWNr
aW5nIHN0b3JlIGVycm9yIHVwZGF0aW5nIGluZGV4IGtleXMuIikpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmICghb2JleXNDb25zdHJhaW50cykgeworICAgICAgICB0cmFuc2FjdGlv
bi0+YWJvcnQoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpD
b25zdHJhaW50RXJyb3IsIGVycm9yTWVzc2FnZSkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmRleFdyaXRlcnMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SW5kZXhXcml0ZXIqIGluZGV4V3Jp
dGVyID0gaW5kZXhXcml0ZXJzW2ldLmdldCgpOworICAgICAgICBpbmRleFdyaXRlci0+d3JpdGVJ
bmRleEtleXMocmVjb3JkSWRlbnRpZmllciwgKnN0b3JlLmdldCgpLCB0cmFuc2FjdGlvbi0+YmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgaWQoKSwgb2JqZWN0U3RvcmVJZCk7CisgICAgfQogfQog
CiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldEluZGV4ZXNSZWFkeShpbnQ2NF90IHRy
YW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+
JiBpbmRleElkcykKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBJREJfVFJBQ0Uo
IklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldEluZGV4ZXNSZWFkeSIpOworCisgICAgaWYg
KCFtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbklkKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5z
YWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5pc0Zpbmlz
aGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxl
VGFzayhJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U6OlByZWVtcHRpdmVUYXNrLCBTZXRJ
bmRleGVzUmVhZHlPcGVyYXRpb246OmNyZWF0ZShpbmRleElkcy5zaXplKCkpKSkKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgU2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9u
OjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQoreworICAg
IElEQl9UUkFDRSgiU2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uIik7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2luZGV4Q291bnQ7ICsraSkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmRpZENv
bXBsZXRlUHJlZW1wdGl2ZUV2ZW50KCk7CiB9CiAKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6b3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgdW5z
aWduZWQgc2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlIHRhc2tUeXBlLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIElEQl9UUkFDRSgiSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkN1cnNv
ciIpOworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbklkKSk7
CisgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0
aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CisKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNr
KE9wZW5DdXJzb3JPcGVyYXRpb246OmNyZWF0ZShtX2JhY2tpbmdTdG9yZSwgaWQoKSwgb2JqZWN0
U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwga2V5T25seSA/IElEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHkgOiBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpL
ZXlBbmRWYWx1ZSwgdGFza1R5cGUsIGNhbGxiYWNrcykpOwogfQogCi12b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmNvdW50KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4pCit2b2lkIE9wZW5DdXJzb3JPcGVyYXRpb246OnBlcmZvcm0oSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiB7Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgSURCX1RSQUNFKCJPcGVuQ3Vyc29yT3BlcmF0aW9uIik7CisKKyAgICAv
LyBUaGUgZnJvbnRlbmQgaGFzIGJlZ3VuIGluZGV4aW5nLCBzbyB0aGlzIHBhdXNlcyB0aGUgdHJh
bnNhY3Rpb24KKyAgICAvLyB1bnRpbCB0aGUgaW5kZXhpbmcgaXMgY29tcGxldGUuIFRoaXMgY2Fu
J3QgaGFwcGVuIGFueSBlYXJsaWVyCisgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIHN3
aXRjaCB0byBlYXJseSBtb2RlIGluIGNhc2UgbXVsdGlwbGUKKyAgICAvLyBpbmRleGVzIGFyZSBi
ZWluZyBjcmVhdGVkIGluIGEgcm93LCB3aXRoIHB1dCgpJ3MgaW4gYmV0d2Vlbi4KKyAgICBpZiAo
bV90YXNrVHlwZSA9PSBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlByZWVtcHRpdmVUYXNr
KQorICAgICAgICB0cmFuc2FjdGlvbi0+YWRkUHJlZW1wdGl2ZUV2ZW50KCk7CisKKyAgICBJREJD
dXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBzdGF0aWNfY2FzdDxJREJDdXJzb3I6OkRpcmVj
dGlvbj4obV9kaXJlY3Rpb24pOworICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4g
YmFja2luZ1N0b3JlQ3Vyc29yOworICAgIGlmIChtX2luZGV4SWQgPT0gSURCSW5kZXhNZXRhZGF0
YTo6SW52YWxpZElkKSB7CisgICAgICAgIEFTU0VSVChtX2N1cnNvclR5cGUgIT0gSURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZTo6S2V5T25seSk7CisgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9
IG1fYmFja2luZ1N0b3JlLT5vcGVuT2JqZWN0U3RvcmVDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tl
eVJhbmdlLmdldCgpLCBkaXJlY3Rpb24pOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVCht
X3Rhc2tUeXBlID09IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzayk7Cisg
ICAgICAgIGlmIChtX2N1cnNvclR5cGUgPT0gSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5
T25seSkKKyAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5v
cGVuSW5kZXhLZXlDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCks
IG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0
KCksIGRpcmVjdGlvbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJhY2tpbmdTdG9yZUN1
cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2lu
ZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIGRpcmVjdGlvbik7CisgICAgfQorCisgICAgaWYgKCFi
YWNraW5nU3RvcmVDdXJzb3IpIHsKKyAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzdGF0
aWNfY2FzdDxTZXJpYWxpemVkU2NyaXB0VmFsdWUqPigwKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tU
eXBlKHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGU+
KG1fdGFza1R5cGUpKTsKKyAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGN1cnNvciA9
IElEQkN1cnNvckJhY2tlbmRJbXBsOjpjcmVhdGUoYmFja2luZ1N0b3JlQ3Vyc29yLmdldCgpLCBt
X2N1cnNvclR5cGUsIHRhc2tUeXBlLCB0cmFuc2FjdGlvbiwgbV9vYmplY3RTdG9yZUlkKTsKKyAg
ICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKGN1cnNvciwgY3Vyc29yLT5rZXkoKSwgY3Vyc29yLT5w
cmltYXJ5S2V5KCksIGN1cnNvci0+dmFsdWUoKSk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6ZGVsZXRlUmFuZ2UoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4pCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNvdW50KGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
KQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIElEQl9UUkFDRSgiSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6Y291bnQiKTsKKyAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFp
bnModHJhbnNhY3Rpb25JZCkpOworICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5z
YWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOworICAgIEFTU0VSVCht
ZXRhZGF0YSgpLm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlkKSk7CisgICAgdHJh
bnNhY3Rpb24tPnNjaGVkdWxlVGFzayhDb3VudE9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0
b3JlLCBpZCgpLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSk7
CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xlYXIoaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikK
K3ZvaWQgQ291bnRPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCog
dHJhbnNhY3Rpb24pCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgSURCX1RSQUNF
KCJDb3VudE9wZXJhdGlvbiIpOworICAgIHVpbnQzMl90IGNvdW50ID0gMDsKKyAgICBSZWZQdHI8
SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvcjsKKworICAgIGlmICht
X2luZGV4SWQgPT0gSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElkKQorICAgICAgICBiYWNraW5n
U3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKHRy
YW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2Jq
ZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKKyAgICBlbHNl
CisgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhL
ZXlDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJh
c2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIElEQkN1
cnNvcjo6TkVYVCk7CisgICAgaWYgKCFiYWNraW5nU3RvcmVDdXJzb3IpIHsKKyAgICAgICAgbV9j
YWxsYmFja3MtPm9uU3VjY2Vzcyhjb3VudCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBkbyB7CisgICAgICAgICsrY291bnQ7CisgICAgfSB3aGlsZSAoYmFja2luZ1N0b3JlQ3Vyc29y
LT5jb250aW51ZUZ1bmN0aW9uKDApKTsKKworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoY291
bnQpOworfQorCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZVJhbmdlKGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3sK
KyAgICBJREJfVFJBQ0UoIklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZVJhbmdlIik7CisK
KyAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb25JZCkpOworICAg
IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMu
Z2V0KHRyYW5zYWN0aW9uSWQpOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElE
QlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOworCisgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFz
ayhEZWxldGVSYW5nZU9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBpZCgpLCBvYmpl
Y3RTdG9yZUlkLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSk7Cit9CisKK3ZvaWQgRGVsZXRlUmFuZ2VP
cGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24p
Cit7CisgICAgSURCX1RSQUNFKCJEZWxldGVSYW5nZU9wZXJhdGlvbiIpOworCisgICAgUmVmUHRy
PElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdT
dG9yZS0+b3Blbk9iamVjdFN0b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFu
c2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQo
KSwgSURCQ3Vyc29yOjpORVhUKTsKKyAgICBpZiAoYmFja2luZ1N0b3JlQ3Vyc29yKSB7CisgICAg
ICAgIGRvIHsKKyAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5kZWxldGVSZWNvcmQodHJhbnNh
Y3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RT
dG9yZUlkLCBiYWNraW5nU3RvcmVDdXJzb3ItPnJlY29yZElkZW50aWZpZXIoKSk7CisgICAgICAg
IH0gd2hpbGUgKGJhY2tpbmdTdG9yZUN1cnNvci0+Y29udGludWVGdW5jdGlvbigwKSk7CisgICAg
fQorCisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcygpOworfQorCit2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmNsZWFyKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQoreworICAgIElEQl9U
UkFDRSgiSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xlYXIiKTsKKworICAgIEFTU0VSVChtX3Ry
YW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbklkKSk7CisgICAgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25J
ZCk7CisgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlJF
QURfT05MWSk7CisKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKENsZWFyT3BlcmF0aW9u
OjpjcmVhdGUobV9iYWNraW5nU3RvcmUsIGlkKCksIG9iamVjdFN0b3JlSWQsIGNhbGxiYWNrcykp
OworfQorCit2b2lkIENsZWFyT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGwqIHRyYW5zYWN0aW9uKQoreworICAgIElEQl9UUkFDRSgiT2JqZWN0U3RvcmVDbGVhck9w
ZXJhdGlvbiIpOworICAgIG1fYmFja2luZ1N0b3JlLT5jbGVhck9iamVjdFN0b3JlKHRyYW5zYWN0
aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3Rv
cmVJZCk7CisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcygpOwogfQogCiB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OkRlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4
IDEwOTUxMzU0M2RmYWRjOGNjY2M3Mjg1Y2FlZDU0NGNkYWEyNmJlZWQuLjk0NGI4MzAwYzdlMzIy
M2JkZDM0NGJiNWJhODFkMWMzYjE0ZmExNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTYxLDcg
KzYxLDkgQEAgcHVibGljOgogICAgIC8vIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZQogICAg
IHZpcnR1YWwgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVj
dFN0b3JlKGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYs
IGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50KSB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QsIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICAvLyBGSVhNRTog
UmVtb3ZlIHRoaXMgbWV0aG9kIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDM5MjMuCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4gY3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklkLCBjb25z
dCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6TW9kZSk7
CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25J
ZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90
PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpOwpAQCAtNzAsNiArNzIsOSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdChpbnQ2NF90IHRyYW5zYWN0aW9uSWQp
OwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydChpbnQ2NF90IHRyYW5zYWN0aW9uSWQpOwogCisgICAg
dmlydHVhbCB2b2lkIGNyZWF0ZUluZGV4KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
SURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpIHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQorCiAgICAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsPiBvYmplY3RTdG9yZShpbnQ2NF90IGlkKTsKICAgICBJREJUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yKiB0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlv
bkNvb3JkaW5hdG9yLmdldCgpOyB9CiAgICAgdm9pZCB0cmFuc2FjdGlvblN0YXJ0ZWQoUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZS5oCmluZGV4IGQ1MWI1NTFlNGJiY2I5NDg5ODQxMzVlMTdjNzg3NzEzOTAxNGUzMzkuLjRiYmZi
Yjg2YWNjZTEzYjA4MDcxNDJmMTJhZGMzNjFmODhhY2VlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZS5oCkBAIC01Niw3ICs1Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElEQkRhdGFi
YXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2
NF90LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNy
ZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElE
QktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwg
RXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUo
aW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpID0gMDsKICAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDM5MjMuCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4gY3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlv
bklkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJREJUcmFuc2FjdGlv
bjo6TW9kZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBjb25zdCBW
ZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9ydCBtb2RlKSA9IDA7
CkBAIC02Niw2ICs2OCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0KGludDY0
X3QgdHJhbnNhY3Rpb25JZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydChpbnQ2NF90IHRy
YW5zYWN0aW9uSWQpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJbmRleChpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBt
dWx0aUVudHJ5KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpID0gMDsK
KwogICAgIGVudW0gVGFza1R5cGUgewogICAgICAgICBOb3JtYWxUYXNrID0gMCwKICAgICAgICAg
UHJlZW1wdGl2ZVRhc2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4LmNwcAppbmRleCA3NjI2NDg4ZWEwZmQzZTcwZDc0NjQ0NDJmMmVjODVkN2E0ZjU5YjAwLi5h
OGMxOTYwNjAzYTYwZTJmYjhiYzk2ZTQ2MjAzMGFiOGVjOTkxM2QxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC00MywxNiArNDMsMTUgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGVmYXVs
dERpcmVjdGlvbiA9IElEQkN1cnNvcjo6TkVYVDsKIAotSURCSW5kZXg6OklEQkluZGV4KGNvbnN0
IElEQkluZGV4TWV0YWRhdGEmIG1ldGFkYXRhLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZElu
dGVyZmFjZT4gYmFja2VuZCwgSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlLCBJREJUcmFuc2Fj
dGlvbiogdHJhbnNhY3Rpb24pCitJREJJbmRleDo6SURCSW5kZXgoY29uc3QgSURCSW5kZXhNZXRh
ZGF0YSYgbWV0YWRhdGEsIElEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZSwgSURCVHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uKQogICAgIDogbV9tZXRhZGF0YShtZXRhZGF0YSkKLSAgICAsIG1fYmFj
a2VuZChiYWNrZW5kKQogICAgICwgbV9vYmplY3RTdG9yZShvYmplY3RTdG9yZSkKICAgICAsIG1f
dHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCiAgICAgLCBtX2RlbGV0ZWQoZmFsc2UpCiB7Ci0gICAg
QVNTRVJUKG1fYmFja2VuZCk7CiAgICAgQVNTRVJUKG1fb2JqZWN0U3RvcmUpOwogICAgIEFTU0VS
VChtX3RyYW5zYWN0aW9uKTsKKyAgICBBU1NFUlQobV9tZXRhZGF0YS5pZCAhPSBJREJJbmRleE1l
dGFkYXRhOjpJbnZhbGlkSWQpOwogfQogCiBJREJJbmRleDo6fklEQkluZGV4KCkKQEAgLTc2LDgg
Kzc1LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXMKIAogICAgIFJlZlB0cjxJREJSZXF1ZXN0
PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRo
aXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICByZXF1ZXN0LT5zZXRDdXJzb3JEZXRhaWxz
KElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleUFuZFZhbHVlLCBkaXJlY3Rpb24pOwotICAg
IG1fYmFja2VuZC0+b3BlbkN1cnNvcihrZXlSYW5nZSwgZGlyZWN0aW9uLCByZXF1ZXN0LCBtX3Ry
YW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBiYWNrZW5k
REIoKS0+b3BlbkN1cnNvcihtX3RyYW5zYWN0aW9uLT5pZCgpLCBtX29iamVjdFN0b3JlLT5pZCgp
LCBtX21ldGFkYXRhLmlkLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBmYWxzZSwgSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNrLCByZXF1ZXN0KTsKICAgICByZXR1cm4gcmVxdWVz
dDsKIH0KIApAQCAtMTAyLDggKzEwMCw4IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5k
ZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQCiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElE
QlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2Fj
dGlvbi5nZXQoKSk7Ci0gICAgbV9iYWNrZW5kLT5jb3VudChrZXlSYW5nZSwgcmVxdWVzdCwgbV90
cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgSURCRGF0
YWJhc2VNZXRhZGF0YSBtZXRhZGF0YShtX3RyYW5zYWN0aW9uLT5kYigpLT5tZXRhZGF0YSgpKTsK
KyAgICBiYWNrZW5kREIoKS0+Y291bnQobV90cmFuc2FjdGlvbi0+aWQoKSwgbV9vYmplY3RTdG9y
ZS0+aWQoKSwgbV9tZXRhZGF0YS5pZCwga2V5UmFuZ2UsIHJlcXVlc3QpOwogICAgIHJldHVybiBy
ZXF1ZXN0OwogfQogCkBAIC0xMzMsOCArMTMxLDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJJbmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAog
CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29u
dGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIHJl
cXVlc3QtPnNldEN1cnNvckRldGFpbHMoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5T25s
eSwgZGlyZWN0aW9uKTsKLSAgICBtX2JhY2tlbmQtPm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UsIGRp
cmVjdGlvbiwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7Ci0gICAgQVNT
RVJUKCFlYyk7CisgICAgYmFja2VuZERCKCktPm9wZW5DdXJzb3IobV90cmFuc2FjdGlvbi0+aWQo
KSwgbV9vYmplY3RTdG9yZS0+aWQoKSwgbV9tZXRhZGF0YS5pZCwga2V5UmFuZ2UsIGRpcmVjdGlv
biwgdHJ1ZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNrLCByZXF1ZXN0
KTsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIApAQCAtMTczLDggKzE3MCw3IEBAIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmVmUHRyCiAgICAgfQogCiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3Qg
PSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJh
bnNhY3Rpb24uZ2V0KCkpOwotICAgIG1fYmFja2VuZC0+Z2V0KGtleVJhbmdlLCByZXF1ZXN0LCBt
X3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBiYWNr
ZW5kREIoKS0+Z2V0KG1fdHJhbnNhY3Rpb24tPmlkKCksIG1fb2JqZWN0U3RvcmUtPmlkKCksIG1f
bWV0YWRhdGEuaWQsIGtleVJhbmdlLCBmYWxzZSwgcmVxdWVzdCk7CiAgICAgcmV0dXJuIHJlcXVl
c3Q7CiB9CiAKQEAgLTIwNSwxMSArMjAxLDE1IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
SW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmCiAg
ICAgfQogCiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVh
dGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwot
ICAgIG1fYmFja2VuZC0+Z2V0S2V5KGtleVJhbmdlLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5i
YWNrZW5kKCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBiYWNrZW5kREIoKS0+Z2V0KG1f
dHJhbnNhY3Rpb24tPmlkKCksIG1fb2JqZWN0U3RvcmUtPmlkKCksIG1fbWV0YWRhdGEuaWQsIGtl
eVJhbmdlLCB0cnVlLCByZXF1ZXN0KTsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAorSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlKiBJREJJbmRleDo6YmFja2VuZERCKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV90cmFuc2FjdGlvbi0+YmFja2VuZERCKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKaW5kZXggY2Y0ZjFjZjMzYzg0MTEy
Zjk1ZTQwOThmMjE2ODMwNDYyNTIzMTBhMy4uMzA3MmYxNWI5ODEyMmY4MWQ0NDRkNDk1MWQyOTIw
N2I3MmVlODZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRl
eC5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIElEQkluZGV4X2gKIAogI2luY2x1ZGUgIklE
QkN1cnNvci5oIgotI2luY2x1ZGUgIklEQkluZGV4QmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1
ZGUgIklEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklE
QktleVJhbmdlLmgiCiAjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKQEAgLTQ1LDkgKzQ1LDkgQEAg
Y2xhc3MgSURCT2JqZWN0U3RvcmU7CiAKIGNsYXNzIElEQkluZGV4IDogcHVibGljIFNjcmlwdFdy
YXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8SURCSW5kZXg+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRlKGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIG1l
dGFkYXRhLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURC
T2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0ZShjb25zdCBJREJJbmRleE1ldGFk
YXRhJiBtZXRhZGF0YSwgSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQklu
ZGV4KG1ldGFkYXRhLCBiYWNrZW5kLCBvYmplY3RTdG9yZSwgdHJhbnNhY3Rpb24pKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJbmRleChtZXRhZGF0YSwgb2JqZWN0U3RvcmUsIHRy
YW5zYWN0aW9uKSk7CiAgICAgfQogICAgIH5JREJJbmRleCgpOwogCkBAIC04MywxMSArODMsMTIg
QEAgcHVibGljOgogCiAgICAgdm9pZCBtYXJrRGVsZXRlZCgpIHsgbV9kZWxldGVkID0gdHJ1ZTsg
fQogCisgICAgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKiBiYWNrZW5kREIoKSBjb25zdDsK
KwogcHJpdmF0ZToKLSAgICBJREJJbmRleChjb25zdCBJREJJbmRleE1ldGFkYXRhJiwgUGFzc1Jl
ZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+LCBJREJPYmplY3RTdG9yZSosIElEQlRyYW5z
YWN0aW9uKik7CisgICAgSURCSW5kZXgoY29uc3QgSURCSW5kZXhNZXRhZGF0YSYsIElEQk9iamVj
dFN0b3JlKiwgSURCVHJhbnNhY3Rpb24qKTsKIAogICAgIElEQkluZGV4TWV0YWRhdGEgbV9tZXRh
ZGF0YTsKLSAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBtX2JhY2tlbmQ7CiAg
ICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBtX29iamVjdFN0b3JlOwogICAgIFJlZlB0cjxJREJU
cmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKICAgICBib29sIG1fZGVsZXRlZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1w
bC5jcHAKaW5kZXggZTkyMzQ0NzQ5MzFiYzY3MGJlN2Y5MGIzZjFjMzVjMjkxYzEzODAyYS4uODk0
MGM1ZTdlMThiYmE0YTgwNTU2NGU0YmU4NDZmOTMyNDczYjgxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAK
QEAgLTQyLDk0ICs0Miw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSURCSW5k
ZXhCYWNrZW5kSW1wbDo6T3BlbkluZGV4Q3Vyc29yT3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NP
d25QdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6T3BlcmF0aW9uPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
a2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZTo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBPcGVuSW5kZXhDdXJz
b3JPcGVyYXRpb24oaW5kZXgsIGtleVJhbmdlLCBkaXJlY3Rpb24sIGN1cnNvclR5cGUsIGNhbGxi
YWNrcykpOwotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybShJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsKik7Ci1wcml2YXRlOgotICAgIE9wZW5JbmRleEN1cnNvck9wZXJhdGlvbihQYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4LCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCi0gICAgICAgIDogbV9pbmRleChpbmRleCkKLSAgICAgICAgLCBtX2tleVJhbmdl
KGtleVJhbmdlKQotICAgICAgICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKLSAgICAgICAgLCBt
X2N1cnNvclR5cGUoY3Vyc29yVHlwZSkKLSAgICAgICAgLCBtX2NhbGxiYWNrcyhjYWxsYmFja3Mp
Ci0gICAgewotICAgIH0KLQotICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBtX2luZGV4
OwotICAgIFJlZlB0cjxJREJLZXlSYW5nZT4gbV9rZXlSYW5nZTsKLSAgICB1bnNpZ25lZCBzaG9y
dCBtX2RpcmVjdGlvbjsKLSAgICBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBl
IG1fY3Vyc29yVHlwZTsKLSAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKLX07
Ci0KLWNsYXNzIElEQkluZGV4QmFja2VuZEltcGw6OkluZGV4Q291bnRPcGVyYXRpb24gOiBwdWJs
aWMgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6T3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpPcGVyYXRpb24+IGNy
ZWF0ZShQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4LCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5kZXhDb3VudE9wZXJhdGlvbihp
bmRleCwga2V5UmFuZ2UsIGNhbGxiYWNrcykpOwotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgcGVy
Zm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKik7Ci1wcml2YXRlOgotICAgIEluZGV4Q291
bnRPcGVyYXRpb24oUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCi0gICAgICAgIDogbV9pbmRleChpbmRleCkKLSAgICAgICAgLCBtX2tleVJhbmdlKGtl
eVJhbmdlKQotICAgICAgICAsIG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKLSAgICB7Ci0gICAgfQot
Ci0gICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IG1faW5kZXg7Ci0gICAgUmVmUHRyPElE
QktleVJhbmdlPiBtX2tleVJhbmdlOwotICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJh
Y2tzOwotfTsKLQotY2xhc3MgSURCSW5kZXhCYWNrZW5kSW1wbDo6SW5kZXhSZWZlcmVuY2VkVmFs
dWVSZXRyaWV2YWxPcGVyYXRpb24gOiBwdWJsaWMgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6
T3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsOjpPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkluZGV4QmFja2Vu
ZEltcGw+IGluZGV4LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgSW5kZXhSZWZlcmVuY2VkVmFsdWVSZXRyaWV2YWxPcGVyYXRpb24oaW5kZXgsIGtleVJh
bmdlLCBjYWxsYmFja3MpKTsKLSAgICB9Ci0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbCopOwotcHJpdmF0ZToKLSAgICBJbmRleFJlZmVyZW5jZWRWYWx1
ZVJldHJpZXZhbE9wZXJhdGlvbihQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcykKLSAgICAgICAgOiBtX2luZGV4KGluZGV4KQotICAgICAgICAsIG1fa2V5
UmFuZ2Uoa2V5UmFuZ2UpCi0gICAgICAgICwgbV9jYWxsYmFja3MoY2FsbGJhY2tzKQotICAgIHsK
LSAgICB9Ci0KLSAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gbV9pbmRleDsKLSAgICBS
ZWZQdHI8SURCS2V5UmFuZ2U+IG1fa2V5UmFuZ2U7Ci0gICAgUmVmUHRyPElEQkNhbGxiYWNrcz4g
bV9jYWxsYmFja3M7Ci19OwotCi1jbGFzcyBJREJJbmRleEJhY2tlbmRJbXBsOjpJbmRleFZhbHVl
UmV0cmlldmFsT3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9w
ZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbDo6T3BlcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJ
bXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IEluZGV4VmFsdWVSZXRyaWV2YWxPcGVyYXRpb24oaW5kZXgsIGtleVJhbmdlLCBjYWxsYmFj
a3MpKTsKLSAgICB9Ci0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbCopOwotcHJpdmF0ZToKLSAgICBJbmRleFZhbHVlUmV0cmlldmFsT3BlcmF0aW9uKFBh
c3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQotICAgICAg
ICA6IG1faW5kZXgoaW5kZXgpCi0gICAgICAgICwgbV9rZXlSYW5nZShrZXlSYW5nZSkKLSAgICAg
ICAgLCBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCi0gICAgewotICAgIH0KLQotICAgIFJlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbXBsPiBtX2luZGV4OwotICAgIFJlZlB0cjxJREJLZXlSYW5nZT4gbV9r
ZXlSYW5nZTsKLSAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKLX07Ci0KLQot
SURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1wbChjb25zdCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0
U3RvcmVCYWNrZW5kLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBtZXRhZGF0YSkKK0lEQkluZGV4
QmFja2VuZEltcGw6OklEQkluZGV4QmFja2VuZEltcGwoY29uc3QgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbCogZGF0YWJhc2UsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIG1ldGFkYXRhKQogICAgIDog
bV9kYXRhYmFzZShkYXRhYmFzZSkKLSAgICAsIG1fb2JqZWN0U3RvcmVCYWNrZW5kKG9iamVjdFN0
b3JlQmFja2VuZCkKICAgICAsIG1fbWV0YWRhdGEobWV0YWRhdGEpCiB7CiB9CkBAIC0xMzgsMTU5
ICs1Miw2IEBAIElEQkluZGV4QmFja2VuZEltcGw6On5JREJJbmRleEJhY2tlbmRJbXBsKCkKIHsK
IH0KIAotdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpPcGVuSW5kZXhDdXJzb3JPcGVyYXRpb246
OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCi17Ci0gICAg
SURCX1RSQUNFKCJPcGVuSW5kZXhDdXJzb3JPcGVyYXRpb24iKTsKLSAgICBJREJDdXJzb3I6OkRp
cmVjdGlvbiBkaXJlY3Rpb24gPSBzdGF0aWNfY2FzdDxJREJDdXJzb3I6OkRpcmVjdGlvbj4obV9k
aXJlY3Rpb24pOwotCi0gICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5n
U3RvcmVDdXJzb3I7Ci0KLSAgICBzd2l0Y2ggKG1fY3Vyc29yVHlwZSkgewotICAgIGNhc2UgSURC
Q3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5T25seToKLSAgICAgICAgYmFja2luZ1N0b3JlQ3Vy
c29yID0gbV9pbmRleC0+YmFja2luZ1N0b3JlKCktPm9wZW5JbmRleEtleUN1cnNvcih0cmFuc2Fj
dGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9pbmRleC0+ZGF0YWJhc2VJZCgpLCBt
X2luZGV4LT5tX29iamVjdFN0b3JlQmFja2VuZC0+aWQoKSwgbV9pbmRleC0+aWQoKSwgbV9rZXlS
YW5nZS5nZXQoKSwgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlBbmRWYWx1ZToKLSAgICAgICAgYmFja2luZ1N0b3JlQ3Vy
c29yID0gbV9pbmRleC0+YmFja2luZ1N0b3JlKCktPm9wZW5JbmRleEN1cnNvcih0cmFuc2FjdGlv
bi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9pbmRleC0+ZGF0YWJhc2VJZCgpLCBtX2lu
ZGV4LT5tX29iamVjdFN0b3JlQmFja2VuZC0+aWQoKSwgbV9pbmRleC0+aWQoKSwgbV9rZXlSYW5n
ZS5nZXQoKSwgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgaWYgKCFiYWNraW5nU3RvcmVD
dXJzb3IpIHsKLSAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzdGF0aWNfY2FzdDxTZXJp
YWxpemVkU2NyaXB0VmFsdWUqPigwKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBS
ZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGN1cnNvciA9IElEQkN1cnNvckJhY2tlbmRJbXBs
OjpjcmVhdGUoYmFja2luZ1N0b3JlQ3Vyc29yLmdldCgpLCBtX2N1cnNvclR5cGUsIHRyYW5zYWN0
aW9uLCBtX2luZGV4LT5tX29iamVjdFN0b3JlQmFja2VuZCk7Ci0gICAgbV9jYWxsYmFja3MtPm9u
U3VjY2VzcyhjdXJzb3IsIGN1cnNvci0+a2V5KCksIGN1cnNvci0+cHJpbWFyeUtleSgpLCBjdXJz
b3ItPnZhbHVlKCkpOwotfQotCi12b2lkIElEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3Io
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlv
biwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYpCi17Ci0gICAg
SURCX1RSQUNFKCJJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yIik7Ci0gICAgUmVmUHRy
PElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwotICAgIFJlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwotICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRh
c2soT3BlbkluZGV4Q3Vyc29yT3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGRpcmVj
dGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5QW5kVmFsdWUsIGNhbGxiYWNrcykp
OwotfQotCi12b2lkIElEQkluZGV4QmFja2VuZEltcGw6Om9wZW5LZXlDdXJzb3IoUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYpCi17Ci0gICAgSURCX1RSQUNF
KCJJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yIik7Ci0gICAgUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwotICAgIFJlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6
OmZyb20odHJhbnNhY3Rpb25QdHIpOwotICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT3Bl
bkluZGV4Q3Vyc29yT3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGRpcmVjdGlvbiwg
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5T25seSwgY2FsbGJhY2tzKSk7Ci19Ci0KLXZv
aWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6SW5kZXhDb3VudE9wZXJhdGlvbjo6cGVyZm9ybShJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKLXsKLSAgICBJREJfVFJBQ0UoIklu
ZGV4Q291bnRPcGVyYXRpb24iKTsKLSAgICB1aW50MzJfdCBjb3VudCA9IDA7Ci0KLSAgICBSZWZQ
dHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvciA9IG1faW5kZXgt
PmJhY2tpbmdTdG9yZSgpLT5vcGVuSW5kZXhLZXlDdXJzb3IodHJhbnNhY3Rpb24tPmJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uKCksIG1faW5kZXgtPmRhdGFiYXNlSWQoKSwgbV9pbmRleC0+bV9vYmpl
Y3RTdG9yZUJhY2tlbmQtPmlkKCksIG1faW5kZXgtPmlkKCksIG1fa2V5UmFuZ2UuZ2V0KCksIElE
QkN1cnNvcjo6TkVYVCk7Ci0gICAgaWYgKCFiYWNraW5nU3RvcmVDdXJzb3IpIHsKLSAgICAgICAg
bV9jYWxsYmFja3MtPm9uU3VjY2Vzcyhjb3VudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBkbyB7Ci0gICAgICAgICsrY291bnQ7Ci0gICAgfSB3aGlsZSAoYmFja2luZ1N0b3JlQ3Vy
c29yLT5jb250aW51ZUZ1bmN0aW9uKDApKTsKLQotICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Mo
Y291bnQpOwotfQotCi12b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmNvdW50KFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tz
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRp
b25Db2RlJikKLXsKLSAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2VuZEltcGw6OmNvdW50Iik7
Ci0gICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwotICAg
IFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwotICAgIHRyYW5zYWN0aW9u
LT5zY2hlZHVsZVRhc2soSW5kZXhDb3VudE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHJhbmdlLCBj
YWxsYmFja3MpKTsKLX0KLQotdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpJbmRleFJlZmVyZW5j
ZWRWYWx1ZVJldHJpZXZhbE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsKiB0cmFuc2FjdGlvbikKLXsKLSAgICBJREJfVFJBQ0UoIkluZGV4UmVmZXJlbmNlZFZhbHVl
UmV0cmlldmFsT3BlcmF0aW9uIik7Ci0KLSAgICBSZWZQdHI8SURCS2V5PiBrZXk7Ci0KLSAgICBp
ZiAobV9rZXlSYW5nZS0+aXNPbmx5S2V5KCkpCi0gICAgICAgIGtleSA9IG1fa2V5UmFuZ2UtPmxv
d2VyKCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNv
cj4gYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9pbmRleC0+YmFja2luZ1N0b3JlKCktPm9wZW5JbmRl
eEN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9pbmRleC0+
ZGF0YWJhc2VJZCgpLCBtX2luZGV4LT5tX29iamVjdFN0b3JlQmFja2VuZC0+aWQoKSwgbV9pbmRl
eC0+aWQoKSwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKLQotICAgICAgICBp
ZiAoIWJhY2tpbmdTdG9yZUN1cnNvcikgewotICAgICAgICAgICAgbV9jYWxsYmFja3MtPm9uU3Vj
Y2VzcygpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGtleSA9IGJh
Y2tpbmdTdG9yZUN1cnNvci0+a2V5KCk7Ci0gICAgfQotCi0gICAgUmVmUHRyPElEQktleT4gcHJp
bWFyeUtleTsKLSAgICBib29sIG9rID0gbV9pbmRleC0+YmFja2luZ1N0b3JlKCktPmdldFByaW1h
cnlLZXlWaWFJbmRleCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9p
bmRleC0+ZGF0YWJhc2VJZCgpLCBtX2luZGV4LT5tX29iamVjdFN0b3JlQmFja2VuZC0+aWQoKSwg
bV9pbmRleC0+aWQoKSwgKmtleSwgcHJpbWFyeUtleSk7Ci0gICAgaWYgKCFvaykgewotICAgICAg
ICBtX2NhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJh
c2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yIGluIGdldFByaW1hcnlL
ZXlWaWFJbmRleC4iKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBWZWN0b3I8dWlu
dDhfdD4gdmFsdWU7Ci0gICAgb2sgPSBtX2luZGV4LT5iYWNraW5nU3RvcmUoKS0+Z2V0UmVjb3Jk
KHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2luZGV4LT5kYXRhYmFz
ZUlkKCksIG1faW5kZXgtPm1fb2JqZWN0U3RvcmVCYWNrZW5kLT5pZCgpLCAqcHJpbWFyeUtleSwg
dmFsdWUpOwotICAgIGlmICghb2spIHsKLSAgICAgICAgbV9jYWxsYmFja3MtPm9uRXJyb3IoSURC
RGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3Is
ICJJbnRlcm5hbCBlcnJvciBpbiBnZXRSZWNvcmQuIikpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkgewotICAgICAgICBtX2NhbGxiYWNrcy0+b25T
dWNjZXNzKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG1faW5kZXgtPm1fb2Jq
ZWN0U3RvcmVCYWNrZW5kLT5hdXRvSW5jcmVtZW50KCkgJiYgIW1faW5kZXgtPm1fb2JqZWN0U3Rv
cmVCYWNrZW5kLT5rZXlQYXRoKCkuaXNOdWxsKCkpIHsKLSAgICAgICAgbV9jYWxsYmFja3MtPm9u
U3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXModmFsdWUp
LCBwcmltYXJ5S2V5LCBtX2luZGV4LT5tX29iamVjdFN0b3JlQmFja2VuZC0+a2V5UGF0aCgpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyh2YWx1ZSkpOwotfQotCi0KLXZv
aWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6SW5kZXhWYWx1ZVJldHJpZXZhbE9wZXJhdGlvbjo6cGVy
Zm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKLXsKLSAgICBJREJf
VFJBQ0UoIkluZGV4VmFsdWVSZXRyaWV2YWxPcGVyYXRpb24iKTsKLQotICAgIFJlZlB0cjxJREJC
YWNraW5nU3RvcmU6OkN1cnNvcj4gYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9pbmRleC0+YmFja2lu
Z1N0b3JlKCktPm9wZW5JbmRleEtleUN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgbV9pbmRleC0+ZGF0YWJhc2VJZCgpLCBtX2luZGV4LT5tX29iamVjdFN0b3Jl
QmFja2VuZC0+aWQoKSwgbV9pbmRleC0+aWQoKSwgbV9rZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29y
OjpORVhUKTsKLQotICAgIGlmICghYmFja2luZ1N0b3JlQ3Vyc29yKSB7Ci0gICAgICAgIG1fY2Fs
bGJhY2tzLT5vblN1Y2Nlc3Moc3RhdGljX2Nhc3Q8SURCS2V5Kj4oMCkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgUmVmUHRyPElEQktleT4ga2V5UmVzdWx0OwotICAgIGJvb2wgb2sg
PSBtX2luZGV4LT5iYWNraW5nU3RvcmUoKS0+Z2V0UHJpbWFyeUtleVZpYUluZGV4KHRyYW5zYWN0
aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2luZGV4LT5kYXRhYmFzZUlkKCksIG1f
aW5kZXgtPm1fb2JqZWN0U3RvcmVCYWNrZW5kLT5pZCgpLCBtX2luZGV4LT5pZCgpLCAqYmFja2lu
Z1N0b3JlQ3Vyc29yLT5rZXkoKSwga2V5UmVzdWx0KTsKLSAgICBpZiAoIW9rKSB7Ci0gICAgICAg
IG1fY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgaW4gZ2V0UHJpbWFyeUtl
eVZpYUluZGV4LiIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIWtleVJlc3Vs
dCkgewotICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHN0YXRpY19jYXN0PElEQktleSo+
KDApKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNz
KGtleVJlc3VsdC5nZXQoKSk7Ci19Ci0KLXZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0KFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
cHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9u
UHRyLCBFeGNlcHRpb25Db2RlJikKLXsKLSAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2VuZElt
cGw6OmdldCIpOwotICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxi
YWNrczsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24g
PSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKLSAgICB0
cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEluZGV4UmVmZXJlbmNlZFZhbHVlUmV0cmlldmFsT3Bl
cmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGNhbGxiYWNrcykpOwotfQotCi12b2lkIElE
QkluZGV4QmFja2VuZEltcGw6OmdldEtleShQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5n
ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYpCi17Ci0gICAg
SURCX1RSQUNFKCJJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRLZXkiKTsKLSAgICBSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAgUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7Ci0gICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhJ
bmRleFZhbHVlUmV0cmlldmFsT3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGNhbGxi
YWNrcykpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaAppbmRleCAwY2Q3ZmUxYWQ4ODQwMWE2YjI0OWIy
ZmI4ZGEzYjc1ZmE4ZjNlY2JkLi4xYTkzOTk5ZTE2MzNkNGY3ZmE3MWU5YjY4NzRkZTE4MTAxYzIw
ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRl
eEJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
SW5kZXhCYWNrZW5kSW1wbC5oCkBAIC00Miw5ICs0Miw5IEBAIGNsYXNzIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw7CiAKIGNsYXNzIElEQkluZGV4QmFja2VuZEltcGwgOiBwdWJsaWMgSURCSW5k
ZXhCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJ
bmRleEJhY2tlbmRJbXBsPiBjcmVhdGUoY29uc3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0
YWJhc2UsIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgY29u
c3QgSURCSW5kZXhNZXRhZGF0YSYgbWV0YWRhdGEpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
SW5kZXhCYWNrZW5kSW1wbD4gY3JlYXRlKGNvbnN0IElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRh
dGFiYXNlLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBtZXRhZGF0YSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSURCSW5kZXhCYWNrZW5kSW1wbChkYXRhYmFzZSwgb2JqZWN0
U3RvcmVCYWNrZW5kLCBtZXRhZGF0YSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElE
QkluZGV4QmFja2VuZEltcGwoZGF0YWJhc2UsIG1ldGFkYXRhKSk7CiAgICAgfQogICAgIHZpcnR1
YWwgfklEQkluZGV4QmFja2VuZEltcGwoKTsKIApAQCAtNTUsMTEgKzU1LDExIEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICAvLyBJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UKLSAgICB2aXJ0dWFsIHZv
aWQgb3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGly
ZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgY291bnQoUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBv
cGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJl
Y3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBnZXQoUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRL
ZXkoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1
YWwgdm9pZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9y
dCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgY291bnQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0
aW9uQ29kZSYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb3Bl
bktleUN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0
aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmly
dHVhbCB2b2lkIGdldChQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRLZXkoUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KIAogICAgIElEQkluZGV4TWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiBt
X21ldGFkYXRhOyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9tZXRhZGF0
YS5uYW1lOyB9CkBAIC02OCwxMiArNjgsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgYm9vbCYgbXVs
dGlFbnRyeSgpIHsgcmV0dXJuIG1fbWV0YWRhdGEubXVsdGlFbnRyeTsgfQogCiBwcml2YXRlOgot
ICAgIElEQkluZGV4QmFja2VuZEltcGwoY29uc3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCosIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwqLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJik7Ci0KLSAg
ICBjbGFzcyBPcGVuSW5kZXhDdXJzb3JPcGVyYXRpb247Ci0gICAgY2xhc3MgSW5kZXhDb3VudE9w
ZXJhdGlvbjsKLSAgICBjbGFzcyBJbmRleFJlZmVyZW5jZWRWYWx1ZVJldHJpZXZhbE9wZXJhdGlv
bjsKLSAgICBjbGFzcyBJbmRleFZhbHVlUmV0cmlldmFsT3BlcmF0aW9uOworICAgIElEQkluZGV4
QmFja2VuZEltcGwoY29uc3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCosIGNvbnN0IElEQkluZGV4
TWV0YWRhdGEmKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IEludmFsaWRJZCA9IDA7CiAK
QEAgLTgyLDggKzc3LDYgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IElEQkRhdGFiYXNlQmFja2Vu
ZEltcGwqIG1fZGF0YWJhc2U7CiAKLSAgICBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBtX29i
amVjdFN0b3JlQmFja2VuZDsKLQogICAgIElEQkluZGV4TWV0YWRhdGEgbV9tZXRhZGF0YTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmNwcAppbmRleCBmMWQxNzZjNGUzODg3YWVjY2JmNWRlMDNiMTA0ZGVkMDE3M2FlZjBhLi44
OTEyNTNkOWUwNGM5MWU5NWFlZWIyMzA0NTQ1ZjI0NjZhMDI3MjVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC04Nywx
NCArODcsMTIgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3MKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRl
KGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKLSAg
ICBtX2JhY2tlbmQtPmdldChrZXlSYW5nZSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2Vu
ZCgpLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgYmFja2VuZERCKCktPmdldChtX3RyYW5z
YWN0aW9uLT5pZCgpLCBpZCgpLCBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQsIGtleVJhbmdl
LCBmYWxzZSwgcmVxdWVzdCk7CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogCiBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6Z2V0Iik7CiAgICAgUmVmUHRy
PElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5KGtleSwgZWMpOwogICAg
IGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMTQsOCArMjEyLDggQEAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KElEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZTo6UHV0TW8KICAgICB9CiAKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9
IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBzb3VyY2UsIG1fdHJhbnNhY3Rpb24uZ2V0KCkp
OwotICAgIG1fYmFja2VuZC0+cHV0KHNlcmlhbGl6ZWRWYWx1ZS5yZWxlYXNlKCksIGtleS5yZWxl
YXNlKCksIHB1dE1vZGUsIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgaW5kZXhJ
ZHMsIGluZGV4S2V5cyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZh
bHVlQnl0ZXMgPSBzZXJpYWxpemVkVmFsdWUtPnRvV2lyZUJ5dGVzKCk7CisgICAgYmFja2VuZERC
KCktPnB1dChtX3RyYW5zYWN0aW9uLT5pZCgpLCBpZCgpLCAmdmFsdWVCeXRlcywga2V5LnJlbGVh
c2UoKSwgc3RhdGljX2Nhc3Q8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpQdXRNb2RlPihw
dXRNb2RlKSwgcmVxdWVzdCwgaW5kZXhJZHMsIGluZGV4S2V5cyk7CiAgICAgcmV0dXJuIHJlcXVl
c3QucmVsZWFzZSgpOwogfQogCkBAIC0yNDAsMTQgKzIzOCwxMiBAQCBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjbwogICAgIH0KIAogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVx
dWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9u
LmdldCgpKTsKLSAgICBtX2JhY2tlbmQtPmRlbGV0ZUZ1bmN0aW9uKGtleVJhbmdlLCByZXF1ZXN0
LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBi
YWNrZW5kREIoKS0+ZGVsZXRlUmFuZ2UobV90cmFuc2FjdGlvbi0+aWQoKSwgaWQoKSwga2V5UmFu
Z2UsIHJlcXVlc3QpOwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAogUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7Ci0gICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6ZGVsZXRlIik7CiAg
ICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5KGtleSwg
ZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNzEsOCArMjY3LDcgQEAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y2xlYXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgRXgKICAgICB9CiAKICAgICBSZWZQdHI8SURCUmVxdWVzdD4g
cmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlz
KSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7Ci0gICAgbV9iYWNrZW5kLT5jbGVhcihyZXF1ZXN0LCBt
X3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBiYWNr
ZW5kREIoKS0+Y2xlYXIobV90cmFuc2FjdGlvbi0+aWQoKSwgaWQoKSwgcmVxdWVzdCk7CiAgICAg
cmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogCkBAIC0yODQsOSArMjc5LDkgQEAgbmFtZXNw
YWNlIHsKIC8vIGN1cnNvciBzdWNjZXNzIGhhbmRsZXJzIGFyZSBrZXB0IGFsaXZlLgogY2xhc3Mg
SW5kZXhQb3B1bGF0b3IgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5kZXhQb3B1bGF0b3I+IGNyZWF0ZShQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uLCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHJl
cXVlc3QsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5kZXhQb3B1bGF0b3I+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluZGV4UG9wdWxhdG9yKGJhY2tlbmQs
IHRyYW5zYWN0aW9uLCBpbmRleE1ldGFkYXRhKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSW5kZXhQb3B1bGF0b3IoYmFja2VuZCwgdHJhbnNhY3Rpb25JZCwgb2JqZWN0U3RvcmVJZCwg
aW5kZXhNZXRhZGF0YSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKQpAQCAtMjk1LDEyICsyOTAsMTEgQEAgcHVibGljOgog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICBJbmRleFBvcHVsYXRvcihQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwKLSAgICAgICAgICAgICAgICAgICBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24sCi0gICAg
ICAgICAgICAgICAgICAgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkKKyAg
ICBJbmRleFBvcHVsYXRvcihQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4g
YmFja2VuZCwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCiAgICAgICAgIDogRXZlbnRMaXN0
ZW5lcihDUFBFdmVudExpc3RlbmVyVHlwZSkKLSAgICAgICAgLCBtX29iamVjdFN0b3JlQmFja2Vu
ZChiYWNrZW5kKQotICAgICAgICAsIG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCisgICAgICAg
ICwgbV9kYXRhYmFzZUJhY2tlbmQoYmFja2VuZCkKKyAgICAgICAgLCBtX3RyYW5zYWN0aW9uSWQo
dHJhbnNhY3Rpb25JZCkKKyAgICAgICAgLCBtX29iamVjdFN0b3JlSWQob2JqZWN0U3RvcmVJZCkK
ICAgICAgICAgLCBtX2luZGV4TWV0YWRhdGEoaW5kZXhNZXRhZGF0YSkKICAgICB7CiAgICAgfQpA
QCAtMzMzLDIxICszMjcsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFZlY3RvcjxJREJPYmpl
Y3RTdG9yZTo6SW5kZXhLZXlzLCAxPiBpbmRleEtleXNMaXN0OwogICAgICAgICAgICAgaW5kZXhL
ZXlzTGlzdC5hcHBlbmQoaW5kZXhLZXlzKTsKIAotICAgICAgICAgICAgbV9vYmplY3RTdG9yZUJh
Y2tlbmQtPnNldEluZGV4S2V5cyhwcmltYXJ5S2V5LCBpbmRleElkcywgaW5kZXhLZXlzTGlzdCwg
bV90cmFuc2FjdGlvbi5nZXQoKSk7Ci0KKyAgICAgICAgICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5z
ZXRJbmRleEtleXMobV90cmFuc2FjdGlvbklkLCBtX29iamVjdFN0b3JlSWQsIHByaW1hcnlLZXks
IGluZGV4SWRzLCBpbmRleEtleXNMaXN0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IC8vIE5vdyB0aGF0IHdlIGFyZSBkb25lIGluZGV4aW5nLCB0ZWxsIHRoZSBiYWNrZW5kIHRvIGdv
CiAgICAgICAgICAgICAvLyBiYWNrIHRvIHByb2Nlc3NpbmcgdGFza3Mgb2YgdHlwZSBOb3JtYWxU
YXNrLgotICAgICAgICAgICAgbV9vYmplY3RTdG9yZUJhY2tlbmQtPnNldEluZGV4ZXNSZWFkeShp
bmRleElkcywgbV90cmFuc2FjdGlvbi5nZXQoKSk7Ci0gICAgICAgICAgICBtX29iamVjdFN0b3Jl
QmFja2VuZC5jbGVhcigpOwotICAgICAgICAgICAgbV90cmFuc2FjdGlvbi5jbGVhcigpOworICAg
ICAgICAgICAgbV9kYXRhYmFzZUJhY2tlbmQtPnNldEluZGV4ZXNSZWFkeShtX3RyYW5zYWN0aW9u
SWQsIG1fb2JqZWN0U3RvcmVJZCwgaW5kZXhJZHMpOworICAgICAgICAgICAgbV9kYXRhYmFzZUJh
Y2tlbmQuY2xlYXIoKTsKICAgICAgICAgfQogCiAgICAgfQogCi0gICAgUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEludGVyZmFjZT4gbV9vYmplY3RTdG9yZUJhY2tlbmQ7Ci0gICAgUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV90cmFuc2FjdGlvbjsKLSAgICBJREJJ
bmRleE1ldGFkYXRhIG1faW5kZXhNZXRhZGF0YTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlPiBtX2RhdGFiYXNlQmFja2VuZDsKKyAgICBjb25zdCBpbnQ2NF90IG1fdHJh
bnNhY3Rpb25JZDsKKyAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsKKyAgICBjb25z
dCBJREJJbmRleE1ldGFkYXRhIG1faW5kZXhNZXRhZGF0YTsKIH07CiB9CiAKQEAgLTM5MiwxNSAr
Mzg1LDE0IEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRl
eChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0CiAgICAgfQogCiAgICAgaW50NjRfdCBp
bmRleElkID0gbV9tZXRhZGF0YS5tYXhJbmRleElkICsgMTsKLSAgICBSZWZQdHI8SURCSW5kZXhC
YWNrZW5kSW50ZXJmYWNlPiBpbmRleEJhY2tlbmQgPSBtX2JhY2tlbmQtPmNyZWF0ZUluZGV4KGlu
ZGV4SWQsIG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSwgbV90cmFuc2FjdGlvbi0+
YmFja2VuZCgpLCBlYyk7Ci0gICAgQVNTRVJUKCFpbmRleEJhY2tlbmQgIT0gIWVjKTsgLy8gSWYg
d2UgZGlkbid0IGdldCBhbiBpbmRleCwgd2Ugc2hvdWxkIGhhdmUgZ290dGVuIGFuIGV4Y2VwdGlv
biBjb2RlLiBBbmQgdmljZSB2ZXJzYS4KKyAgICBtX2JhY2tlbmQtPmNyZWF0ZUluZGV4KGluZGV4
SWQsIG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSwgbV90cmFuc2FjdGlvbi0+YmFj
a2VuZCgpLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAogICAgICsrbV9t
ZXRhZGF0YS5tYXhJbmRleElkOwogCiAgICAgSURCSW5kZXhNZXRhZGF0YSBtZXRhZGF0YShuYW1l
LCBpbmRleElkLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnkpOwotICAgIFJlZlB0cjxJREJJ
bmRleD4gaW5kZXggPSBJREJJbmRleDo6Y3JlYXRlKG1ldGFkYXRhLCBpbmRleEJhY2tlbmQucmVs
ZWFzZSgpLCB0aGlzLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKKyAgICBSZWZQdHI8SURCSW5kZXg+
IGluZGV4ID0gSURCSW5kZXg6OmNyZWF0ZShtZXRhZGF0YSwgdGhpcywgbV90cmFuc2FjdGlvbi5n
ZXQoKSk7CiAgICAgbV9pbmRleE1hcC5zZXQobmFtZSwgaW5kZXgpOwogICAgIG1fbWV0YWRhdGEu
aW5kZXhlcy5zZXQoaW5kZXhJZCwgbWV0YWRhdGEpOwogCkBAIC00MTUsNyArNDA3LDcgQEAgUGFz
c1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQKICAgICBpbmRleFJlcXVlc3QtPnByZXZlbnRQcm9wYWdhdGlv
bigpOwogCiAgICAgLy8gVGhpcyBpcyBrZXB0IGFsaXZlIGJ5IGJlaW5nIHRoZSBzdWNjZXNzIGhh
bmRsZXIgb2YgdGhlIHJlcXVlc3QsIHdoaWNoIGlzIGluIHR1cm4ga2VwdCBhbGl2ZSBieSB0aGUg
b3duaW5nIHRyYW5zYWN0aW9uLgotICAgIFJlZlB0cjxJbmRleFBvcHVsYXRvcj4gaW5kZXhQb3B1
bGF0b3IgPSBJbmRleFBvcHVsYXRvcjo6Y3JlYXRlKG1fYmFja2VuZCwgbV90cmFuc2FjdGlvbi0+
YmFja2VuZCgpLCBpbmRleFJlcXVlc3QsIG1ldGFkYXRhKTsKKyAgICBSZWZQdHI8SW5kZXhQb3B1
bGF0b3I+IGluZGV4UG9wdWxhdG9yID0gSW5kZXhQb3B1bGF0b3I6OmNyZWF0ZShiYWNrZW5kREIo
KSwgbV90cmFuc2FjdGlvbi0+aWQoKSwgaWQoKSwgbWV0YWRhdGEpOwogICAgIGluZGV4UmVxdWVz
dC0+c2V0T25zdWNjZXNzKGluZGV4UG9wdWxhdG9yKTsKIAogICAgIHJldHVybiBpbmRleC5yZWxl
YXNlKCk7CkBAIC00NDMsOSArNDM1LDYgQEAgUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0
U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFj
ZT4gaW5kZXhCYWNrZW5kID0gbV9iYWNrZW5kLT5pbmRleChpbmRleElkKTsKLSAgICBBU1NFUlQo
IWVjICYmIGluZGV4QmFja2VuZCk7Ci0KICAgICBjb25zdCBJREJJbmRleE1ldGFkYXRhKiBpbmRl
eE1ldGFkYXRhKDApOwogICAgIGZvciAoSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW5kZXhNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9tZXRhZGF0YS5pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG1f
bWV0YWRhdGEuaW5kZXhlcy5lbmQoKTsgKytpdCkgewogICAgICAgICBpZiAoaXQtPnZhbHVlLm5h
bWUgPT0gbmFtZSkgewpAQCAtNDU0LDggKzQ0Myw5IEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+IElE
Qk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVj
CiAgICAgICAgIH0KICAgICB9CiAgICAgQVNTRVJUKGluZGV4TWV0YWRhdGEpOworICAgIEFTU0VS
VChpbmRleE1ldGFkYXRhLT5pZCAhPSBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpOwogCi0g
ICAgUmVmUHRyPElEQkluZGV4PiBpbmRleCA9IElEQkluZGV4OjpjcmVhdGUoKmluZGV4TWV0YWRh
dGEsIGluZGV4QmFja2VuZC5yZWxlYXNlKCksIHRoaXMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwor
ICAgIFJlZlB0cjxJREJJbmRleD4gaW5kZXggPSBJREJJbmRleDo6Y3JlYXRlKCppbmRleE1ldGFk
YXRhLCB0aGlzLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX2luZGV4TWFwLnNldChuYW1l
LCBpbmRleCk7CiAgICAgcmV0dXJuIGluZGV4LnJlbGVhc2UoKTsKIH0KQEAgLTUwNCwxNCArNDk0
LDEzIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiAKICAgICBSZWZQdHI8SURCUmVxdWVzdD4g
cmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlz
KSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgcmVxdWVzdC0+c2V0Q3Vyc29yRGV0YWlscyhJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlBbmRWYWx1ZSwgZGlyZWN0aW9uKTsKLSAgICBt
X2JhY2tlbmQtPm9wZW5DdXJzb3IocmFuZ2UsIGRpcmVjdGlvbiwgcmVxdWVzdCwgdGFza1R5cGUs
IG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwotICAgIEFTU0VSVCghZWMpOworCisgICAg
YmFja2VuZERCKCktPm9wZW5DdXJzb3IobV90cmFuc2FjdGlvbi0+aWQoKSwgaWQoKSwgSURCSW5k
ZXhNZXRhZGF0YTo6SW52YWxpZElkLCByYW5nZSwgZGlyZWN0aW9uLCBmYWxzZSwgc3RhdGljX2Nh
c3Q8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZT4odGFza1R5cGUpLCByZXF1
ZXN0KTsKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rp
b24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6
Om9wZW5DdXJzb3IiKTsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5
UmFuZ2U6Om9ubHkoa2V5LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKQEAg
LTUzMCwxNCArNTE5LDEyIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6
OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhCiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6
OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQo
KSk7Ci0gICAgbV9iYWNrZW5kLT5jb3VudChyYW5nZSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+
YmFja2VuZCgpLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgYmFja2VuZERCKCktPmNvdW50
KG1fdHJhbnNhY3Rpb24tPmlkKCksIGlkKCksIElEQkluZGV4TWV0YWRhdGE6OkludmFsaWRJZCwg
cmFuZ2UsIHJlcXVlc3QpOwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAogUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6Y291bnQiKTsKICAgICBSZWZQ
dHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoa2V5LCBlYyk7CiAg
ICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKQEAgLTU2Myw2ICs1NTAsMTEgQEAgaW50NjRf
dCBJREJPYmplY3RTdG9yZTo6ZmluZEluZGV4SWQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAog
ICAgIHJldHVybiBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQ7CiB9CiAKK0lEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZSogSURCT2JqZWN0U3RvcmU6OmJhY2tlbmREQigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmREQigpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCmluZGV4IGZj
YjQzNzlhZWVkNzc2MzhkNzBjZjY5MjA4NzgzNTgwM2ZiNjlmZWQuLjdlMmY3MmZhZWE4NTE5M2Mz
MDkzZWQ2M2Q4NWFhMmE1MDJmM2MwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
IkRpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJJREJDdXJzb3IuaCIKICNpbmNsdWRlICJJREJJbmRl
eC5oIgorI2luY2x1ZGUgIklEQkluZGV4QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklE
QktleS5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCiAjaW5jbHVkZSAiSURCTWV0YWRhdGEu
aCIKQEAgLTU4LDYgKzU5LDcgQEAgcHVibGljOgogICAgIH5JREJPYmplY3RTdG9yZSgpIHsgfQog
CiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREJPYmplY3RTdG9yZSBJREwKKyAgICBpbnQ2NF90IGlk
KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5pZDsgfQogICAgIGNvbnN0IFN0cmluZyBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5uYW1lOyB9CiAgICAgUGFzc1JlZlB0cjxJREJB
bnk+IGtleVBhdGhBbnkoKSBjb25zdCB7IHJldHVybiBJREJBbnk6OmNyZWF0ZShtX21ldGFkYXRh
LmtleVBhdGgpOyB9CiAgICAgY29uc3QgSURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3QgeyByZXR1
cm4gbV9tZXRhZGF0YS5rZXlQYXRoOyB9CkBAIC0xMDQsNiArMTA2LDggQEAgcHVibGljOgogICAg
IHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4gSW5kZXhLZXlzOwogICAgIHR5cGVkZWYg
SGFzaE1hcDxTdHJpbmcsIEluZGV4S2V5cz4gSW5kZXhLZXlNYXA7CiAKKyAgICBJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2UqIGJhY2tlbmREQigpIGNvbnN0OworCiBwcml2YXRlOgogICAgIElE
Qk9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4sIElEQlRyYW5zYWN0aW9uKik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggM2MyZDliNzA3MzA4ZDk4YmMzOTk0YTBjMGVkNmI4
MWE0OWVlMzk5NC4uZTZjZTgzYzM1YjM4YzA0ZWNlYWZhNzhhOWFhZDU1ZmY4MGFmYjdiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTQ0LDExMCArNDQsNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9iamVjdFN0
b3JlUmV0cmlldmFsT3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6
Ok9wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6T3BlcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFu
Z2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IE9iamVjdFN0b3JlUmV0cmlldmFsT3BlcmF0aW9uKG9iamVjdFN0
b3JlLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSk7Ci0gICAgfQotICAgIHZpcnR1YWwgdm9pZCBwZXJm
b3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqKTsKLXByaXZhdGU6Ci0gICAgT2JqZWN0U3Rv
cmVSZXRyaWV2YWxPcGVyYXRpb24oUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
PiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi0gICAgICAgIDogbV9vYmplY3RTdG9yZShvYmpl
Y3RTdG9yZSkKLSAgICAgICAgLCBtX2tleVJhbmdlKGtleVJhbmdlKQotICAgICAgICAsIG1fY2Fs
bGJhY2tzKGNhbGxiYWNrcykKLSAgICB7Ci0gICAgfQotCi0gICAgUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw+IG1fb2JqZWN0U3RvcmU7Ci0gICAgUmVmUHRyPElEQktleVJhbmdlPiBt
X2tleVJhbmdlOwotICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwotfTsKLQot
Y2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6T2JqZWN0U3RvcmVTdG9yYWdlT3BlcmF0
aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbiB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6T3Bl
cmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmpl
Y3RTdG9yZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBQYXNzUmVm
UHRyPElEQktleT4ga2V5LCBQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MsIFBhc3NPd25QdHI8VmVjdG9yPGludDY0X3Q+ID4gcG9wSW5kZXhJZHMsIFBh
c3NPd25QdHI8VmVjdG9yPEluZGV4S2V5cz4gPiBwb3BJbmRleEtleXMpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IE9iamVjdFN0b3JlU3RvcmFnZU9wZXJhdGlvbihvYmplY3RT
dG9yZSwgdmFsdWUsIGtleSwgcHV0TW9kZSwgY2FsbGJhY2tzLCBwb3BJbmRleElkcywgcG9wSW5k
ZXhLZXlzKSk7Ci0gICAgfQotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwqKTsKLXByaXZhdGU6Ci0gICAgT2JqZWN0U3RvcmVTdG9yYWdlT3BlcmF0aW9u
KFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtl
eSwgUHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQ
YXNzT3duUHRyPFZlY3RvcjxpbnQ2NF90PiA+IHBvcEluZGV4SWRzLCBQYXNzT3duUHRyPFZlY3Rv
cjxJbmRleEtleXM+ID4gcG9wSW5kZXhLZXlzKQotICAgICAgICA6IG1fb2JqZWN0U3RvcmUob2Jq
ZWN0U3RvcmUpCi0gICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKLSAgICAgICAgLCBtX2tleShrZXkp
Ci0gICAgICAgICwgbV9wdXRNb2RlKHB1dE1vZGUpCi0gICAgICAgICwgbV9jYWxsYmFja3MoY2Fs
bGJhY2tzKQotICAgICAgICAsIG1fcG9wSW5kZXhJZHMocG9wSW5kZXhJZHMpCi0gICAgICAgICwg
bV9wb3BJbmRleEtleXMocG9wSW5kZXhLZXlzKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWZQdHI8
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gbV9vYmplY3RTdG9yZTsKLSAgICBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBtX3ZhbHVlOwotICAgIFJlZlB0cjxJREJLZXk+IG1fa2V5Owot
ICAgIFB1dE1vZGUgbV9wdXRNb2RlOwotICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJh
Y2tzOwotICAgIE93blB0cjxWZWN0b3I8aW50NjRfdD4gPiBtX3BvcEluZGV4SWRzOwotICAgIE93
blB0cjxWZWN0b3I8SW5kZXhLZXlzPiA+IG1fcG9wSW5kZXhLZXlzOwotfTsKLQotY2xhc3MgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6T2JqZWN0U3RvcmVJbmRleGVzUmVhZHlPcGVyYXRpb24g
OiBwdWJsaWMgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6T3BlcmF0aW9uIHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpPcGVyYXRp
b24+IGNyZWF0ZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0
b3JlLCBQYXNzT3duUHRyPFZlY3RvcjxpbnQ2NF90PiA+IHBvcEluZGV4SWRzKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBPYmplY3RTdG9yZUluZGV4ZXNSZWFkeU9wZXJhdGlv
bihvYmplY3RTdG9yZSwgcG9wSW5kZXhJZHMpKTsKLSAgICB9Ci0gICAgdmlydHVhbCB2b2lkIHBl
cmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCopOwotcHJpdmF0ZToKLSAgICBPYmplY3RT
dG9yZUluZGV4ZXNSZWFkeU9wZXJhdGlvbihQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzT3duUHRyPFZlY3RvcjxpbnQ2NF90PiA+IHBvcEluZGV4
SWRzKQotICAgICAgICA6IG1fb2JqZWN0U3RvcmUob2JqZWN0U3RvcmUpCi0gICAgICAgICwgbV9w
b3BJbmRleElkcyhwb3BJbmRleElkcykKLSAgICB7Ci0gICAgfQotCi0gICAgUmVmUHRyPElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw+IG1fb2JqZWN0U3RvcmU7Ci0gICAgT3duUHRyPFZlY3Rvcjxp
bnQ2NF90PiA+IG1fcG9wSW5kZXhJZHM7Ci19OwotCi1jbGFzcyBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpPYmplY3RTdG9yZURlbGV0aW9uT3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25Q
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6T3BlcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE9iamVjdFN0b3JlRGVsZXRpb25PcGVy
YXRpb24ob2JqZWN0U3RvcmUsIGtleVJhbmdlLCBjYWxsYmFja3MpKTsKLSAgICB9Ci0gICAgdmly
dHVhbCB2b2lkIHBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCopOwotcHJpdmF0ZToK
LSAgICBPYmplY3RTdG9yZURlbGV0aW9uT3BlcmF0aW9uKFBhc3NSZWZQdHI8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJh
bmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQotICAgICAgICA6IG1fb2Jq
ZWN0U3RvcmUob2JqZWN0U3RvcmUpCi0gICAgICAgICwgbV9rZXlSYW5nZShrZXlSYW5nZSkKLSAg
ICAgICAgLCBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCi0gICAgewotICAgIH0KLQotICAgIFJlZlB0
cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBtX29iamVjdFN0b3JlOwotICAgIFJlZlB0cjxJ
REJLZXlSYW5nZT4gbV9rZXlSYW5nZTsKLSAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxi
YWNrczsKLX07Ci0KLWNsYXNzIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9iamVjdFN0b3Jl
Q2xlYXJPcGVyYXRpb24gOiBwdWJsaWMgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6T3BlcmF0
aW9uIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsOjpPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBPYmplY3RTdG9yZUNsZWFyT3BlcmF0
aW9uKG9iamVjdFN0b3JlLCBjYWxsYmFja3MpKTsKLSAgICB9Ci0gICAgdmlydHVhbCB2b2lkIHBl
cmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCopOwotcHJpdmF0ZToKLSAgICBPYmplY3RT
dG9yZUNsZWFyT3BlcmF0aW9uKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4g
b2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi0gICAgICAg
IDogbV9vYmplY3RTdG9yZShvYmplY3RTdG9yZSkKLSAgICAgICAgLCBtX2NhbGxiYWNrcyhjYWxs
YmFja3MpCi0gICAgewotICAgIH0KLQotICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsPiBtX29iamVjdFN0b3JlOwotICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tz
OwotfTsKLQogY2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Q3JlYXRlSW5kZXhPcGVy
YXRpb24gOiBwdWJsaWMgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6T3BlcmF0aW9uIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpP
cGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9i
amVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4KQpAQCAtMTg0
LDUwICs4MCw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IG1f
aW5kZXg7CiB9OwogCi1jbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpPcGVuT2JqZWN0
U3RvcmVDdXJzb3JPcGVyYXRpb24gOiBwdWJsaWMgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6
T3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsOjpPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwg
SURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tU
eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBPcGVuT2JqZWN0U3RvcmVD
dXJzb3JPcGVyYXRpb24ob2JqZWN0U3RvcmUsIHJhbmdlLCBkaXJlY3Rpb24sIGNhbGxiYWNrcywg
dGFza1R5cGUpKTsKLSAgICB9Ci0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbCopOwotcHJpdmF0ZToKLSAgICBPcGVuT2JqZWN0U3RvcmVDdXJzb3JPcGVy
YXRpb24oUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVj
dGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSkKLSAgICAgICAgOiBtX29iamVjdFN0
b3JlKG9iamVjdFN0b3JlKQotICAgICAgICAsIG1fcmFuZ2UocmFuZ2UpCi0gICAgICAgICwgbV9k
aXJlY3Rpb24oZGlyZWN0aW9uKQotICAgICAgICAsIG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKLSAg
ICAgICAgLCBtX3Rhc2tUeXBlKHRhc2tUeXBlKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWZQdHI8
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gbV9vYmplY3RTdG9yZTsKLSAgICBSZWZQdHI8SURC
S2V5UmFuZ2U+IG1fcmFuZ2U7Ci0gICAgSURCQ3Vyc29yOjpEaXJlY3Rpb24gbV9kaXJlY3Rpb247
Ci0gICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7Ci0gICAgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSBtX3Rhc2tUeXBlOwotfTsKLQotY2xhc3MgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6T2JqZWN0U3RvcmVDb3VudE9wZXJhdGlvbiA6IHB1Ymxp
YyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpPcGVyYXRpb24gewotcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbj4gY3Jl
YXRlKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBPYmplY3RTdG9yZUNv
dW50T3BlcmF0aW9uKG9iamVjdFN0b3JlLCByYW5nZSwgY2FsbGJhY2tzKSk7Ci0gICAgfQotICAg
IHZpcnR1YWwgdm9pZCBwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqKTsKLXByaXZh
dGU6Ci0gICAgT2JqZWN0U3RvcmVDb3VudE9wZXJhdGlvbihQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5n
ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKLSAgICAgICAgOiBtX29iamVj
dFN0b3JlKG9iamVjdFN0b3JlKQotICAgICAgICAsIG1fcmFuZ2UocmFuZ2UpCi0gICAgICAgICwg
bV9jYWxsYmFja3MoY2FsbGJhY2tzKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWZQdHI8SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbD4gbV9vYmplY3RTdG9yZTsKLSAgICBSZWZQdHI8SURCS2V5UmFu
Z2U+IG1fcmFuZ2U7Ci0gICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7Ci19Owot
CiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpDcmVhdGVJbmRleEFib3J0T3BlcmF0
aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbiB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6T3Bl
cmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmpl
Y3RTdG9yZSwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCkKQEAgLTI4NCw2
MyArMTM2LDYgQEAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjptZXRhZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1ldGFkYXRhOwogfQogCi12b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlS
YW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYpCi17Ci0g
ICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXQiKTsKLSAgICBSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAgUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7Ci0gICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxl
VGFzayhPYmplY3RTdG9yZVJldHJpZXZhbE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGtleVJhbmdl
LCBjYWxsYmFja3MpKTsKLX0KLQotdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpPYmpl
Y3RTdG9yZVJldHJpZXZhbE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsKiB0cmFuc2FjdGlvbikKLXsKLSAgICBJREJfVFJBQ0UoIk9iamVjdFN0b3JlUmV0cmlldmFs
T3BlcmF0aW9uIik7Ci0gICAgUmVmUHRyPElEQktleT4ga2V5OwotICAgIGlmIChtX2tleVJhbmdl
LT5pc09ubHlLZXkoKSkKLSAgICAgICAga2V5ID0gbV9rZXlSYW5nZS0+bG93ZXIoKTsKLSAgICBl
bHNlIHsKLSAgICAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5nU3Rv
cmVDdXJzb3IgPSBtX29iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+b3Blbk9iamVjdFN0b3Jl
Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX29iamVjdFN0
b3JlLT5kYXRhYmFzZUlkKCksIG1fb2JqZWN0U3RvcmUtPmlkKCksIG1fa2V5UmFuZ2UuZ2V0KCks
IElEQkN1cnNvcjo6TkVYVCk7Ci0gICAgICAgIGlmICghYmFja2luZ1N0b3JlQ3Vyc29yKSB7Ci0g
ICAgICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAga2V5ID0gYmFja2luZ1N0b3JlQ3Vyc29yLT5rZXkoKTsKLSAg
ICB9Ci0KLSAgICBWZWN0b3I8dWludDhfdD4gd2lyZURhdGE7Ci0gICAgYm9vbCBvayA9IG1fb2Jq
ZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5nZXRSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uKCksIG1fb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgbV9vYmplY3RT
dG9yZS0+aWQoKSwgKmtleSwgd2lyZURhdGEpOwotICAgIGlmICghb2spIHsKLSAgICAgICAgbV9j
YWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvciBpbiBnZXRSZWNvcmQuIikpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICh3aXJlRGF0YS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKG1fb2JqZWN0U3RvcmUtPmF1dG9JbmNyZW1lbnQoKSAmJiAhbV9vYmplY3RTdG9y
ZS0+a2V5UGF0aCgpLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Mo
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHdpcmVEYXRhKSwga2V5
LCBtX29iamVjdFN0b3JlLT5rZXlQYXRoKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9t
V2lyZUJ5dGVzKHdpcmVEYXRhKSk7Ci19Ci0KLXZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6cHV0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0
cjxJREJLZXk+IGtleSwgUHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
cHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9u
UHRyLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhL
ZXlzPiYgaW5kZXhLZXlzKQotewotICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6cHV0Iik7Ci0KLSAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBD
YWxsYmFja3M7Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0
aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7Ci0g
ICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05M
WSk7Ci0KLSAgICBPd25QdHI8VmVjdG9yPGludDY0X3Q+ID4gbmV3SW5kZXhJZHMgPSBhZG9wdFB0
cihuZXcgVmVjdG9yPGludDY0X3Q+KGluZGV4SWRzKSk7Ci0gICAgT3duUHRyPFZlY3RvcjxJbmRl
eEtleXM+ID4gbmV3SW5kZXhLZXlzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxJbmRleEtleXM+KGlu
ZGV4S2V5cykpOwotCi0gICAgQVNTRVJUKGF1dG9JbmNyZW1lbnQoKSB8fCBrZXkuZ2V0KCkpOwot
Ci0gICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPYmplY3RTdG9yZVN0b3JhZ2VPcGVyYXRp
b246OmNyZWF0ZSh0aGlzLCB2YWx1ZSwga2V5LCBwdXRNb2RlLCBjYWxsYmFja3MsIG5ld0luZGV4
SWRzLnJlbGVhc2UoKSwgbmV3SW5kZXhLZXlzLnJlbGVhc2UoKSkpOwotfQotCiBib29sIElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OkluZGV4V3JpdGVyOjp2ZXJpZnlJbmRleEtleXMoSURCQmFj
a2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRy
YW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50
NjRfdCBpbmRleElkLCBib29sJiBjYW5BZGRLZXlzLCBjb25zdCBJREJLZXkqIHByaW1hcnlLZXks
IFN0cmluZyogZXJyb3JNZXNzYWdlKSBjb25zdAogewogICAgIGNhbkFkZEtleXMgPSBmYWxzZTsK
QEAgLTQxNywxODggKzIxMiwxMSBAQCBib29sIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om1h
a2VJbmRleFdyaXRlcnMoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbgogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldEluZGV4S2V5
cyhQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPGludDY0X3Q+
JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mIGluZGV4S2V5cywgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0cikKLXsKLSAgICBJREJfVFJBQ0Uo
IklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldEluZGV4S2V5cyIpOwotICAgIFJlZlB0cjxJ
REJLZXk+IHByaW1hcnlLZXkgPSBwcnBQcmltYXJ5S2V5OwotICAgIFJlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6
OmZyb20odHJhbnNhY3Rpb25QdHIpOwotICAgIGlmICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBtZXRob2QgY291bGQgYmUg
YXN5bmNocm9ub3VzLCBidXQgd2UgbmVlZCB0byBldmFsdWF0ZSBpZiBpdCdzIHdvcnRoIHRoZSBl
eHRyYSBjb21wbGV4aXR5LgotICAgIElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllciBy
ZWNvcmRJZGVudGlmaWVyOwotICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICBib29sIG9rID0g
YmFja2luZ1N0b3JlKCktPmtleUV4aXN0c0luT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlSWQoKSwgaWQoKSwgKnByaW1hcnlLZXksICZy
ZWNvcmRJZGVudGlmaWVyLCBmb3VuZCk7Ci0gICAgaWYgKCFvaykgewotICAgICAgICBMT0dfRVJS
T1IoImtleUV4aXN0c0luT2JqZWN0U3RvcmUgcmVwb3J0ZWQgYW4gZXJyb3IiKTsKLSAgICAgICAg
dHJhbnNhY3Rpb24tPmFib3J0KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3Igc2V0dGluZyBpbmRleCBrZXlz
LiIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIWZvdW5kKSB7Ci0gICAgICAg
IFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBTdHJpbmc6OmZvcm1hdCgiSW50
ZXJuYWwgZXJyb3Igc2V0dGluZyBpbmRleCBrZXlzIGZvciBvYmplY3Qgc3RvcmUgJyVzJy4iLCBu
YW1lKCkudXRmOCgpLmRhdGEoKSkpOwotICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoZXJyb3Iu
cmVsZWFzZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFZlY3RvcjxPd25QdHI8
SW5kZXhXcml0ZXI+ID4gaW5kZXhXcml0ZXJzOwotICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7Ci0g
ICAgYm9vbCBvYmV5c0NvbnN0cmFpbnRzID0gZmFsc2U7Ci0gICAgUmVmUHRyPElEQkJhY2tpbmdT
dG9yZT4gc3RvcmUgPSBiYWNraW5nU3RvcmUoKTsKLSAgICBib29sIGJhY2tpbmdTdG9yZVN1Y2Nl
c3MgPSBtYWtlSW5kZXhXcml0ZXJzKHRyYW5zYWN0aW9uLCBzdG9yZS5nZXQoKSwgZGF0YWJhc2VJ
ZCgpLCBtZXRhZGF0YSgpLCBwcmltYXJ5S2V5LCBmYWxzZSwgaW5kZXhJZHMsIGluZGV4S2V5cywg
JmluZGV4V3JpdGVycywgJmVycm9yTWVzc2FnZSwgb2JleXNDb25zdHJhaW50cyk7Ci0gICAgaWYg
KCFiYWNraW5nU3RvcmVTdWNjZXNzKSB7Ci0gICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydChJREJE
YXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwg
IkludGVybmFsIGVycm9yOiBiYWNraW5nIHN0b3JlIGVycm9yIHVwZGF0aW5nIGluZGV4IGtleXMu
IikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghb2JleXNDb25zdHJhaW50cykg
ewotICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3IsIGVycm9yTWVzc2FnZSkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmRleFdy
aXRlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgSW5kZXhXcml0ZXIqIGluZGV4V3JpdGVyID0g
aW5kZXhXcml0ZXJzW2ldLmdldCgpOwotICAgICAgICBpbmRleFdyaXRlci0+d3JpdGVJbmRleEtl
eXMocmVjb3JkSWRlbnRpZmllciwgKmJhY2tpbmdTdG9yZSgpLCB0cmFuc2FjdGlvbi0+YmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJZCgpLCBtX21ldGFkYXRhLmlkKTsKLSAgICB9
Ci19Ci0KLXZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhlc1JlYWR5KGNv
bnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSogdHJhbnNhY3Rpb25JbnRlcmZhY2UpCi17Ci0gICAgSURCX1RSQUNFKCJJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleGVzUmVhZHkiKTsKLQotICAgIE93blB0cjxWZWN0b3I8
aW50NjRfdD4gPiBuZXdJbmRleElkcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8aW50NjRfdD4oaW5k
ZXhJZHMpKTsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rp
b24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uSW50ZXJmYWNl
KTsKLSAgICBpZiAodHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZTo6UHJlZW1wdGl2ZVRhc2ssIE9iamVjdFN0b3JlSW5kZXhlc1JlYWR5T3BlcmF0
aW9uOjpjcmVhdGUodGhpcywgbmV3SW5kZXhJZHMucmVsZWFzZSgpKSkpCi0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9i
amVjdFN0b3JlSW5kZXhlc1JlYWR5T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGwqIHRyYW5zYWN0aW9uKQotewotICAgIElEQl9UUkFDRSgiT2JqZWN0U3RvcmVJbmRl
eGVzUmVhZHlPcGVyYXRpb24iKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcG9wSW5k
ZXhJZHMtPnNpemUoKTsgKytpKQotICAgICAgICB0cmFuc2FjdGlvbi0+ZGlkQ29tcGxldGVQcmVl
bXB0aXZlRXZlbnQoKTsKLX0KLQotdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpPYmpl
Y3RTdG9yZVN0b3JhZ2VPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bCogdHJhbnNhY3Rpb24pCi17Ci0gICAgSURCX1RSQUNFKCJPYmplY3RTdG9yZVN0b3JhZ2VPcGVy
YXRpb24iKTsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlv
bjo6UkVBRF9PTkxZKTsKLSAgICBBU1NFUlQobV9wb3BJbmRleElkcyAmJiBtX3BvcEluZGV4S2V5
cyAmJiBtX3BvcEluZGV4SWRzLT5zaXplKCkgPT0gbV9wb3BJbmRleEtleXMtPnNpemUoKSk7Ci0g
ICAgY29uc3QgYm9vbCBhdXRvSW5jcmVtZW50ID0gbV9vYmplY3RTdG9yZS0+YXV0b0luY3JlbWVu
dCgpOwotICAgIGJvb2wga2V5V2FzR2VuZXJhdGVkID0gZmFsc2U7Ci0KLSAgICBpZiAobV9wdXRN
b2RlICE9IEN1cnNvclVwZGF0ZSAmJiBhdXRvSW5jcmVtZW50ICYmICFtX2tleSkgewotICAgICAg
ICBSZWZQdHI8SURCS2V5PiBhdXRvSW5jS2V5ID0gbV9vYmplY3RTdG9yZS0+Z2VuZXJhdGVLZXko
dHJhbnNhY3Rpb24pOwotICAgICAgICBrZXlXYXNHZW5lcmF0ZWQgPSB0cnVlOwotICAgICAgICBp
ZiAoIWF1dG9JbmNLZXktPmlzVmFsaWQoKSkgewotICAgICAgICAgICAgbV9jYWxsYmFja3MtPm9u
RXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25z
dHJhaW50RXJyb3IsICJNYXhpbXVtIGtleSBnZW5lcmF0b3IgdmFsdWUgcmVhY2hlZC4iKSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9rZXkgPSBhdXRvSW5jS2V5
OwotICAgIH0KLQotICAgIEFTU0VSVChtX2tleSAmJiBtX2tleS0+aXNWYWxpZCgpKTsKLQotICAg
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmVNZXRhZGF0YSA9IG1fb2JqZWN0U3Rv
cmUtPm1ldGFkYXRhKCk7Ci0gICAgSURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyIHJl
Y29yZElkZW50aWZpZXI7Ci0gICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3Jl
ID0gbV9vYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCk7Ci0gICAgaWYgKG1fcHV0TW9kZSA9PSBB
ZGRPbmx5KSB7Ci0gICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICAgICAgYm9vbCBvayA9
IGJhY2tpbmdTdG9yZS0+a2V5RXhpc3RzSW5PYmplY3RTdG9yZSh0cmFuc2FjdGlvbi0+YmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9vYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBtX29iamVj
dFN0b3JlLT5pZCgpLCAqbV9rZXksICZyZWNvcmRJZGVudGlmaWVyLCBmb3VuZCk7Ci0gICAgICAg
IGlmICghb2spIHsKLSAgICAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJu
YWwgZXJyb3IgY2hlY2tpbmcga2V5IGV4aXN0ZW5jZS4iKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGZvdW5kKSB7Ci0gICAgICAgICAgICBtX2NhbGxiYWNr
cy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OkNvbnN0cmFpbnRFcnJvciwgIktleSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgb2JqZWN0IHN0b3Jl
LiIpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFZlY3Rv
cjxPd25QdHI8SW5kZXhXcml0ZXI+ID4gaW5kZXhXcml0ZXJzOwotICAgIFN0cmluZyBlcnJvck1l
c3NhZ2U7Ci0gICAgYm9vbCBvYmV5c0NvbnN0cmFpbnRzID0gZmFsc2U7Ci0gICAgYm9vbCBiYWNr
aW5nU3RvcmVTdWNjZXNzID0gbWFrZUluZGV4V3JpdGVycyh0cmFuc2FjdGlvbiwgYmFja2luZ1N0
b3JlLmdldCgpLCBtX29iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlTWV0YWRh
dGEsIG1fa2V5LCBrZXlXYXNHZW5lcmF0ZWQsICptX3BvcEluZGV4SWRzLCAqbV9wb3BJbmRleEtl
eXMsICZpbmRleFdyaXRlcnMsICZlcnJvck1lc3NhZ2UsIG9iZXlzQ29uc3RyYWludHMpOwotICAg
IGlmICghYmFja2luZ1N0b3JlU3VjY2VzcykgewotICAgICAgICBtX2NhbGxiYWNrcy0+b25FcnJv
cihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25F
cnJvciwgIkludGVybmFsIGVycm9yOiBiYWNraW5nIHN0b3JlIGVycm9yIHVwZGF0aW5nIGluZGV4
IGtleXMuIikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghb2JleXNDb25zdHJh
aW50cykgewotICAgICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNvbnN0cmFpbnRFcnJvciwgZXJyb3JNZXNzYWdl
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBCZWZvcmUgdGhpcyBwb2ludCwg
ZG9uJ3QgZG8gYW55IG11dGF0aW9uLiAgQWZ0ZXIgdGhpcyBwb2ludCwgcm9sbGJhY2sgdGhlIHRy
YW5zYWN0aW9uIGluIGNhc2Ugb2YgZXJyb3IuCi0KLSAgICBiYWNraW5nU3RvcmVTdWNjZXNzID0g
bV9vYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCktPnB1dFJlY29yZCh0cmFuc2FjdGlvbi0+YmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9vYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBtX29i
amVjdFN0b3JlLT5pZCgpLCAqbV9rZXksIG1fdmFsdWUtPnRvV2lyZUJ5dGVzKCksICZyZWNvcmRJ
ZGVudGlmaWVyKTsKLSAgICBpZiAoIWJhY2tpbmdTdG9yZVN1Y2Nlc3MpIHsKLSAgICAgICAgbV9j
YWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvcjogYmFja2luZyBzdG9yZSBlcnJv
ciBwZXJmb3JtaW5nIHB1dC9hZGQuIikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmRleFdyaXRlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgSW5kZXhXcml0ZXIqIGluZGV4V3JpdGVyID0gaW5kZXhXcml0ZXJzW2ldLmdldCgpOwotICAg
ICAgICBpbmRleFdyaXRlci0+d3JpdGVJbmRleEtleXMocmVjb3JkSWRlbnRpZmllciwgKm1fb2Jq
ZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLCB0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24oKSwgbV9vYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBtX29iamVjdFN0b3JlLT5tX21l
dGFkYXRhLmlkKTsKLSAgICB9Ci0KLSAgICBpZiAoYXV0b0luY3JlbWVudCAmJiBtX3B1dE1vZGUg
IT0gQ3Vyc29yVXBkYXRlICYmIG1fa2V5LT50eXBlKCkgPT0gSURCS2V5OjpOdW1iZXJUeXBlKSB7
Ci0gICAgICAgIGJvb2wgb2sgPSBtX29iamVjdFN0b3JlLT51cGRhdGVLZXlHZW5lcmF0b3IodHJh
bnNhY3Rpb24sIG1fa2V5LmdldCgpLCAha2V5V2FzR2VuZXJhdGVkKTsKLSAgICAgICAgaWYgKCFv
aykgewotICAgICAgICAgICAgbV9jYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJv
ciB1cGRhdGluZyBrZXkgZ2VuZXJhdG9yLiIpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MobV9rZXkucmVsZWFzZSgp
KTsKLX0KLQotdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0
ciwgRXhjZXB0aW9uQ29kZSYpCi17Ci0gICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpkZWxldGUiKTsKLQotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
PiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rp
b25QdHIpOwotICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9u
OjpSRUFEX09OTFkpOwotICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT2JqZWN0U3RvcmVE
ZWxldGlvbk9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGtleVJhbmdlLCBjYWxsYmFja3MpKTsKLX0K
LQotdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpPYmplY3RTdG9yZURlbGV0aW9uT3Bl
cmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQot
ewotICAgIElEQl9UUkFDRSgiT2JqZWN0U3RvcmVEZWxldGlvbk9wZXJhdGlvbiIpOwotCi0gICAg
UmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX29i
amVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+b3Blbk9iamVjdFN0b3JlQ3Vyc29yKHRyYW5zYWN0
aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX29iamVjdFN0b3JlLT5kYXRhYmFzZUlk
KCksIG1fb2JqZWN0U3RvcmUtPmlkKCksIG1fa2V5UmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVY
VCk7Ci0gICAgaWYgKGJhY2tpbmdTdG9yZUN1cnNvcikgewotCi0gICAgICAgIGRvIHsKLSAgICAg
ICAgICAgIG1fb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5kZWxldGVSZWNvcmQodHJhbnNh
Y3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fb2JqZWN0U3RvcmUtPmRhdGFiYXNl
SWQoKSwgbV9vYmplY3RTdG9yZS0+aWQoKSwgYmFja2luZ1N0b3JlQ3Vyc29yLT5yZWNvcmRJZGVu
dGlmaWVyKCkpOwotCi0gICAgICAgIH0gd2hpbGUgKGJhY2tpbmdTdG9yZUN1cnNvci0+Y29udGlu
dWVGdW5jdGlvbigwKSk7Ci0gICAgfQotCi0gICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcygpOwot
fQotCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNsZWFyKFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJh
bnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQotewotICAgIElEQl9UUkFDRSgiSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXIiKTsKLQotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20o
dHJhbnNhY3Rpb25QdHIpOwotICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRy
YW5zYWN0aW9uOjpSRUFEX09OTFkpOwotICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT2Jq
ZWN0U3RvcmVDbGVhck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGNhbGxiYWNrcykpOwotfQotCi12
b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9iamVjdFN0b3JlQ2xlYXJPcGVyYXRpb246
OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCi17Ci0gICAg
SURCX1RSQUNFKCJPYmplY3RTdG9yZUNsZWFyT3BlcmF0aW9uIik7Ci0gICAgbV9vYmplY3RTdG9y
ZS0+YmFja2luZ1N0b3JlKCktPmNsZWFyT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uKCksIG1fb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgbV9vYmplY3RT
dG9yZS0+aWQoKSk7Ci0gICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcygpOwotfQotCiBQYXNzUmVm
UHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
Y3JlYXRlSW5kZXgoaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2luZGV4ZXMuY29udGFpbnMoaWQpLCAiSW5kZXhl
cyBhbHJlYWR5IGNvbnRhaW4gJyVzJyIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQ
dHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXggPSBJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVh
dGUobV9kYXRhYmFzZSwgdGhpcywgSURCSW5kZXhNZXRhZGF0YShuYW1lLCBpZCwga2V5UGF0aCwg
dW5pcXVlLCBtdWx0aUVudHJ5KSk7CisgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGlu
ZGV4ID0gSURCSW5kZXhCYWNrZW5kSW1wbDo6Y3JlYXRlKG1fZGF0YWJhc2UsIElEQkluZGV4TWV0
YWRhdGEobmFtZSwgaWQsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSkpOwogICAgIEFTU0VS
VChpbmRleC0+bmFtZSgpID09IG5hbWUpOwogCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0
cmFuc2FjdGlvblB0cik7CkBAIC02NTIsNjUgKzI3MCwxMiBAQCB2b2lkIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OkRlbGV0ZUluZGV4T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9u
QmFjawogICAgIG1fb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5kZWxldGVJbmRleCh0cmFu
c2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9vYmplY3RTdG9yZS0+ZGF0YWJh
c2VJZCgpLCBtX29iamVjdFN0b3JlLT5pZCgpLCBtX2luZGV4LT5pZCgpKTsKIH0KIAotdm9pZCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+IHJhbmdlLCBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTo6
VGFza1R5cGUgdGFza1R5cGUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNh
Y3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQotewotICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvciIpOwotICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcyA9IHBycENhbGxiYWNrczsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5z
YWN0aW9uUHRyKTsKLSAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9wZW5PYmplY3RTdG9y
ZUN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHJhbmdlLCBkaXJlY3Rpb24sIGNhbGxiYWNr
cywgdGFza1R5cGUpKTsKLX0KLQotdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpPcGVu
T2JqZWN0U3RvcmVDdXJzb3JPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbCogdHJhbnNhY3Rpb24pCi17Ci0gICAgSURCX1RSQUNFKCJPcGVuT2JqZWN0U3RvcmVDdXJz
b3IiKTsKLQotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gYmFja2luZ1N0b3Jl
Q3Vyc29yID0gbV9vYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCktPm9wZW5PYmplY3RTdG9yZUN1
cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9vYmplY3RTdG9y
ZS0+ZGF0YWJhc2VJZCgpLCBtX29iamVjdFN0b3JlLT5pZCgpLCBtX3JhbmdlLmdldCgpLCBtX2Rp
cmVjdGlvbik7Ci0gICAgLy8gVGhlIGZyb250ZW5kIGhhcyBiZWd1biBpbmRleGluZywgc28gdGhp
cyBwYXVzZXMgdGhlIHRyYW5zYWN0aW9uCi0gICAgLy8gdW50aWwgdGhlIGluZGV4aW5nIGlzIGNv
bXBsZXRlLiBUaGlzIGNhbid0IGhhcHBlbiBhbnkgZWFybGllcgotICAgIC8vIGJlY2F1c2Ugd2Ug
ZG9uJ3Qgd2FudCB0byBzd2l0Y2ggdG8gZWFybHkgbW9kZSBpbiBjYXNlIG11bHRpcGxlCi0gICAg
Ly8gaW5kZXhlcyBhcmUgYmVpbmcgY3JlYXRlZCBpbiBhIHJvdywgd2l0aCBwdXQoKSdzIGluIGJl
dHdlZW4uCi0gICAgaWYgKG1fdGFza1R5cGUgPT0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlOjpQcmVlbXB0aXZlVGFzaykKLSAgICAgICAgdHJhbnNhY3Rpb24tPmFkZFByZWVtcHRpdmVF
dmVudCgpOwotICAgIGlmICghYmFja2luZ1N0b3JlQ3Vyc29yKSB7Ci0gICAgICAgIG1fY2FsbGJh
Y2tzLT5vblN1Y2Nlc3Moc3RhdGljX2Nhc3Q8U2VyaWFsaXplZFNjcmlwdFZhbHVlKj4oMCkpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBs
PiBjdXJzb3IgPSBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y3JlYXRlKGJhY2tpbmdTdG9yZUN1cnNv
ci5yZWxlYXNlKCksIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleUFuZFZhbHVlLCBtX3Rh
c2tUeXBlLCB0cmFuc2FjdGlvbiwgbV9vYmplY3RTdG9yZS5nZXQoKSk7Ci0gICAgbV9jYWxsYmFj
a3MtPm9uU3VjY2VzcyhjdXJzb3IsIGN1cnNvci0+a2V5KCksIGN1cnNvci0+cHJpbWFyeUtleSgp
LCBjdXJzb3ItPnZhbHVlKCkpOwotfQotCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmNvdW50KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5z
YWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKLXsKLSAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OmNvdW50Iik7Ci0gICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJh
Y2tzID0gcHJwQ2FsbGJhY2tzOwotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
PiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rp
b25QdHIpOwotICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT2JqZWN0U3RvcmVDb3VudE9w
ZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHJhbmdlLCBjYWxsYmFja3MpKTsKLX0KLQotdm9pZCBJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpPYmplY3RTdG9yZUNvdW50T3BlcmF0aW9uOjpwZXJmb3Jt
KElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQotewotICAgIElEQl9UUkFD
RSgiT2JqZWN0U3RvcmVDb3VudE9wZXJhdGlvbiIpOwotICAgIHVpbnQzMl90IGNvdW50ID0gMDsK
LSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvciA9
IG1fb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5vcGVuT2JqZWN0U3RvcmVLZXlDdXJzb3Io
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fb2JqZWN0U3RvcmUtPmRh
dGFiYXNlSWQoKSwgbV9vYmplY3RTdG9yZS0+aWQoKSwgbV9yYW5nZS5nZXQoKSwgSURCQ3Vyc29y
OjpORVhUKTsKLSAgICBpZiAoIWJhY2tpbmdTdG9yZUN1cnNvcikgewotICAgICAgICBtX2NhbGxi
YWNrcy0+b25TdWNjZXNzKGNvdW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGRv
IHsKLSAgICAgICAgKytjb3VudDsKLSAgICB9IHdoaWxlIChiYWNraW5nU3RvcmVDdXJzb3ItPmNv
bnRpbnVlRnVuY3Rpb24oMCkpOwotCi0gICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vzcyhjb3VudCk7
Ci19Ci0KIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6bG9hZEluZGV4ZXMoKQogewog
ICAgIFZlY3RvcjxJREJJbmRleE1ldGFkYXRhPiBpbmRleGVzID0gYmFja2luZ1N0b3JlKCktPmdl
dEluZGV4ZXMoZGF0YWJhc2VJZCgpLCBtX21ldGFkYXRhLmlkKTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaW5kZXhlcy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9pbmRleGVzLnNldChp
bmRleGVzW2ldLmlkLCBJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVhdGUobV9kYXRhYmFzZSwgdGhp
cywgaW5kZXhlc1tpXSkpOworICAgICAgICBtX2luZGV4ZXMuc2V0KGluZGV4ZXNbaV0uaWQsIElE
QkluZGV4QmFja2VuZEltcGw6OmNyZWF0ZShtX2RhdGFiYXNlLCBpbmRleGVzW2ldKSk7CiB9CiAK
IHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Q3JlYXRlSW5kZXhBYm9ydE9wZXJhdGlv
bjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKQEAgLTcy
NywxMSArMjkyLDExIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6RGVsZXRlSW5k
ZXhBYm9ydE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvCiAgICAgbV9vYmplY3RTdG9y
ZS0+bV9pbmRleGVzLnNldChtX2luZGV4LT5pZCgpLCBtX2luZGV4KTsKIH0KIAotUGFzc1JlZlB0
cjxJREJLZXk+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdlbmVyYXRlS2V5KFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCitQYXNzUmVmUHRyPElE
QktleT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2VuZXJhdGVLZXkoUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsPiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQpCiB7CiAgICAgY29uc3QgaW50NjRfdCBtYXhHZW5lcmF0b3JWYWx1ZSA9IDkwMDcx
OTkyNTQ3NDA5OTJMTDsgLy8gTWF4aW11bSBpbnRlZ2VyIHN0b3JhYmxlIGFzIEVDTUFTY3JpcHQg
bnVtYmVyLgogICAgIGludDY0X3QgY3VycmVudE51bWJlcjsKLSAgICBib29sIG9rID0gYmFja2lu
Z1N0b3JlKCktPmdldEtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIodHJhbnNhY3Rpb24tPmJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlSWQoKSwgaWQoKSwgY3VycmVudE51bWJlcik7
CisgICAgYm9vbCBvayA9IGJhY2tpbmdTdG9yZS0+Z2V0S2V5R2VuZXJhdG9yQ3VycmVudE51bWJl
cih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJZCwgb2Jq
ZWN0U3RvcmVJZCwgY3VycmVudE51bWJlcik7CiAgICAgaWYgKCFvaykgewogICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBnZXRLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyIik7CiAgICAgICAg
IHJldHVybiBJREJLZXk6OmNyZWF0ZUludmFsaWQoKTsKQEAgLTc0MiwxMCArMzA3LDEwIEBAIFBh
c3NSZWZQdHI8SURCS2V5PiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZW5lcmF0ZUtleShQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0CiAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlTnVtYmVyKGN1
cnJlbnROdW1iZXIpOwogfQogCi1ib29sIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnVwZGF0
ZUtleUdlbmVyYXRvcihQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5z
YWN0aW9uLCBjb25zdCBJREJLZXkqIGtleSwgYm9vbCBjaGVja0N1cnJlbnQpCitib29sIElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OnVwZGF0ZUtleUdlbmVyYXRvcihQYXNzUmVmUHRyPElEQkJh
Y2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw+IHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgSURCS2V5KiBrZXksIGJvb2wgY2hlY2tDdXJyZW50KQogewogICAgIEFTU0VS
VChrZXkgJiYga2V5LT50eXBlKCkgPT0gSURCS2V5OjpOdW1iZXJUeXBlKTsKLSAgICByZXR1cm4g
YmFja2luZ1N0b3JlKCktPm1heWJlVXBkYXRlS2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcih0cmFu
c2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJZCgpLCBpZCgpLCBz
dGF0aWNfY2FzdDxpbnQ2NF90PihmbG9vcihrZXktPm51bWJlcigpKSkgKyAxLCBjaGVja0N1cnJl
bnQpOworICAgIHJldHVybiBiYWNraW5nU3RvcmUtPm1heWJlVXBkYXRlS2V5R2VuZXJhdG9yQ3Vy
cmVudE51bWJlcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oZmxvb3Ioa2V5LT5udW1i
ZXIoKSkpICsgMSwgY2hlY2tDdXJyZW50KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbC5oCmluZGV4IGRjZjcwMTllMWJiYmRlYzcwODA2OTEwNGY0Yjkw
YmVlN2QwZWFlZjcuLmIzZTJlNTUwMTZlMTMxMmYzMzkwYTAxNzZkZWU3ODE2OWE5ODJiZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKQEAgLTYyLDI2ICs2MiwyMyBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgLy8gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlCi0gICAgdmlydHVhbCB2
b2lkIGdldChQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
dmlydHVhbCB2b2lkIHB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NS
ZWZQdHI8SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBjb25zdCBW
ZWN0b3I8SW5kZXhLZXlzPiYpOworICAgIHZpcnR1YWwgdm9pZCBnZXQoUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcHV0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFz
c1JlZlB0cjxJREJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIGNvbnN0
IFZlY3RvcjxJbmRleEtleXM+JikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IEV4Y2VwdGlvbkNvZGUmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2
b2lkIGNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUlu
ZGV4KGludDY0X3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wg
dW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhLZXlzKFBhc3NSZWZQ
dHI8SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBjb25zdCBW
ZWN0b3I8SW5kZXhLZXlzPiYsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRJbmRleGVzUmVhZHkoY29uc3QgVmVjdG9yPGludDY0X3Q+JiwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CisgICAgdmlydHVhbCB2b2lkIHNldEluZGV4
S2V5cyhQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPGludDY0
X3Q+JiwgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHNldElu
ZGV4ZXNSZWFkeShjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXgoaW50NjRfdCk7CiAgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZUluZGV4KGludDY0X3QsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+LCBJREJDdXJzb3I6OkRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlLCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVh
bCB2b2lkIGNvdW50KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgSURC
Q3Vyc29yOjpEaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiwgRXhjZXB0aW9uQ29kZSYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgY291bnQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYp
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIHN0YXRpYyBib29sIHBvcHVsYXRlSW5k
ZXgoSURCQmFja2luZ1N0b3JlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4pOwogCi0gICAgY29uc3QgSW5k
ZXhNYXA6Oml0ZXJhdG9yIGl0ZXJJbmRleGVzQmVnaW4oKSB7IHJldHVybiBtX2luZGV4ZXMuYmVn
aW4oKTsgfTsKLSAgICBjb25zdCBJbmRleE1hcDo6aXRlcmF0b3IgaXRlckluZGV4ZXNFbmQoKSB7
IHJldHVybiBtX2luZGV4ZXMuZW5kKCk7IH07Ci0KICAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRh
IG1ldGFkYXRhKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9t
ZXRhZGF0YS5uYW1lOyB9CiAgICAgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fbWV0YWRhdGEua2V5UGF0aDsgfQpAQCAtMTE0LDIyICsxMTEsMTYgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIGJvb2wgbWFrZUluZGV4V3JpdGVycyhQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGw+LCBJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFy
eUtleSwgYm9vbCBrZXlXYXNHZW5lcmF0ZWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJ
ZHMsIGNvbnN0IFZlY3RvcjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OkluZGV4S2V5
cz4mLCBWZWN0b3I8T3duUHRyPEluZGV4V3JpdGVyPiA+KiBpbmRleFdyaXRlcnMsIFN0cmluZyog
ZXJyb3JNZXNzYWdlLCBib29sJiBjb21wbGV0ZWQpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIAorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gZ2VuZXJhdGVLZXkoUGFzc1JlZlB0cjxJREJCYWNr
aW5nU3RvcmU+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+LCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7CisgICAgc3RhdGljIGJvb2wgdXBk
YXRlS2V5R2VuZXJhdG9yKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiwgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IElEQktleSosIGJvb2wgY2hlY2tDdXJyZW50KTsKKwogcHJpdmF0
ZToKICAgICBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKGNvbnN0IElEQkRhdGFiYXNlQmFja2Vu
ZEltcGwqLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJik7CiAKICAgICB2b2lkIGxvYWRJ
bmRleGVzKCk7Ci0gICAgUGFzc1JlZlB0cjxJREJLZXk+IGdlbmVyYXRlS2V5KFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwotICAgIGJvb2wgdXBkYXRlS2V5R2VuZXJhdG9y
KFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4sIGNvbnN0IElEQktleSosIGJv
b2wgY2hlY2tDdXJyZW50KTsKLQotICAgIGNsYXNzIE9iamVjdFN0b3JlUmV0cmlldmFsT3BlcmF0
aW9uOwotICAgIGNsYXNzIE9iamVjdFN0b3JlU3RvcmFnZU9wZXJhdGlvbjsKLSAgICBjbGFzcyBP
YmplY3RTdG9yZUluZGV4ZXNSZWFkeU9wZXJhdGlvbjsKLSAgICBjbGFzcyBPYmplY3RTdG9yZURl
bGV0aW9uT3BlcmF0aW9uOwotICAgIGNsYXNzIE9iamVjdFN0b3JlQ2xlYXJPcGVyYXRpb247CisK
ICAgICBjbGFzcyBDcmVhdGVJbmRleE9wZXJhdGlvbjsKICAgICBjbGFzcyBEZWxldGVJbmRleE9w
ZXJhdGlvbjsKLSAgICBjbGFzcyBPcGVuT2JqZWN0U3RvcmVDdXJzb3JPcGVyYXRpb247Ci0gICAg
Y2xhc3MgT2JqZWN0U3RvcmVDb3VudE9wZXJhdGlvbjsKIAogICAgIC8vIFdoZW4gYSAidmVyc2lv
bmNoYW5nZSIgdHJhbnNhY3Rpb24gYWJvcnRzLCB0aGVzZSByZXN0b3JlIHRoZSBiYWNrLWVuZCBv
YmplY3QgaGllcmFyY2h5LgogICAgIGNsYXNzIENyZWF0ZUluZGV4QWJvcnRPcGVyYXRpb247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5j
cHAKaW5kZXggMDQ1MjVlYjY1ZWUwYzVlMjhjZWRjYzA2ZTc4M2M3MTViY2YwODdiMy4uYWZhNDVl
MjRiMDQxZWY4MjVjNjU3YTYxMTk1MTQwZDE0NTc0MTJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtNDYzLDYgKzQ2
MywxMSBAQCBFdmVudFRhcmdldERhdGEqIElEQlRyYW5zYWN0aW9uOjplbnN1cmVFdmVudFRhcmdl
dERhdGEoKQogICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7CiB9CiAKK0lEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZSogSURCVHJhbnNhY3Rpb246OmJhY2tlbmREQigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGRiKCktPmJhY2tlbmQoKTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uaAppbmRleCBlMTI3NWI4NGE5NDU3NGNkNGI5OTNjNTEwYzQ4M2NiZDU3
MTFkYjQ3Li5kZjQxYmJiMGVmNTMzODFjMGNlMjcxYjdkZDQ1NmZkYmY5ZWUwNDA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAg
LTQ3LDYgKzQ3LDcgQEAgY2xhc3MgSURCRGF0YWJhc2U7CiBjbGFzcyBJREJPYmplY3RTdG9yZTsK
IGNsYXNzIElEQk9wZW5EQlJlcXVlc3Q7CiBjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U7CitjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U7CiBzdHJ1Y3QgSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YTsKIAogY2xhc3MgSURCVHJhbnNhY3Rpb24gOiBwdWJsaWMgU2NyaXB0
V3JhcHBhYmxlLCBwdWJsaWMgSURCVHJhbnNhY3Rpb25DYWxsYmFja3MsIHB1YmxpYyBFdmVudFRh
cmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CkBAIC03MSw2ICs3Miw4IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlVG9TdHJpbmcoTW9kZSwgRXhjZXB0
aW9uQ29kZSYpOwogCiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiBiYWNrZW5k
KCkgY29uc3Q7CisgICAgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKiBiYWNrZW5kREIoKSBj
b25zdDsKKwogICAgIGludDY0X3QgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgYm9v
bCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gQWN0aXZlOyB9CiAgICAgYm9v
bCBpc0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBGaW5pc2hlZDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbC5oCmluZGV4IDFlMjJiNzE3MGYyNTU1OTY4YzM3ODkxZWJjZGVlYTlh
MWVjNmMxMTIuLmM3OWRlZmY0ODg0ODA0ZjdmMzdhZjAzMjM1NDA3ODkyNzM5MWEzYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsLmgKQEAgLTc3LDYgKzc3LDggQEAgcHVibGljOgogICAgIElEQkJh
Y2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIGJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCkgeyByZXR1
cm4gJm1fdHJhbnNhY3Rpb247IH0KICAgICBpbnQ2NF90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9p
ZDsgfQogCisgICAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGFiYXNlLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbChpbnQ2NF90IGlkLCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBvYmplY3RTdG9y
ZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2Uu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKaW5kZXgg
ZTYyNGZlNThkODE0Y2MyM2MyNmM3NTNmMTY3NzhhODA3NWI3NTg3OS4uNTE2YTIxZGQ5NDJjZWNl
N2ZiYzQwZTAxMGE1YzljNmI0ZGNjYTNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCkBAIC01OCw3ICs1OCw5IEBAIHB1YmxpYzoKICAgICAg
ICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGxvbmcgbG9uZyB0cmFuc2FjdGlv
bklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25z
dCBXZWJJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50KSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShsb25nIGxv
bmcgb2JqZWN0U3RvcmVJZCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBX
ZWJFeGNlcHRpb25Db2RlJiBlYykgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQs
IGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtZXRob2QgaW4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzkyMy4KICAgICB2aXJ0dWFsIFdlYklEQlRyYW5zYWN0
aW9uKiBjcmVhdGVUcmFuc2FjdGlvbihsb25nIGxvbmcgaWQsIGNvbnN0IFdlYlZlY3Rvcjxsb25n
IGxvbmc+JiwgdW5zaWduZWQgc2hvcnQgbW9kZSkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRyYW5zYWN0aW9uKGxvbmcg
bG9uZyBpZCwgV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViVmVj
dG9yPGxvbmcgbG9uZz4mLCB1bnNpZ25lZCBzaG9ydCBtb2RlKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQpAQCAtNjgsNiArNzAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGFib3J0KGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21taXQobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQp
IHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgY3Jl
YXRlSW5kZXgobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGxvbmcgbG9uZyBvYmplY3RTdG9yZUlk
LCBsb25nIGxvbmcgaW5kZXhJZCwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJL
ZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSkgeyBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgobG9uZyBsb25nIHRy
YW5zYWN0aW9uSWQsIGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkLCBsb25nIGxvbmcgaW5kZXhJZCkg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKwogICAgIGVudW0gVGFza1R5cGUgewog
ICAgICAgICBOb3JtYWxUYXNrID0gMCwKICAgICAgICAgUHJlZW1wdGl2ZVRhc2sKQEAgLTg5LDcg
Kzk0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKGxvbmcgbG9uZyB0
cmFuc2FjdGlvbklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgbG9uZyBsb25nIGluZGV4SWQs
IGNvbnN0IFdlYklEQktleVJhbmdlJiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBib29sIGtl
eU9ubHksIFRhc2tUeXBlLCBXZWJJREJDYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBjb3VudChsb25nIGxvbmcgdHJhbnNhY3Rpb25J
ZCwgbG9uZyBsb25nIG9iamVjdFN0b3JlSWQsIGxvbmcgbG9uZyBpbmRleElkLCBjb25zdCBXZWJJ
REJLZXlSYW5nZSYsIFdlYklEQkNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJhbmdlKGxvbmcgbG9uZyB0cmFuc2FjdGlv
bklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgY29uc3QgV2ViSURCS2V5UmFuZ2UmLCBXZWJJ
REJDYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1
YWwgdm9pZCBjbGVhcihsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCwgbG9uZyBsb25nIG9iamVjdFN0
b3JlSWQsIFdlYklEQkNhbGxiYWNrcyopICB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBjbGVhcihsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCwgbG9uZyBs
b25nIG9iamVjdFN0b3JlSWQsIFdlYklEQkNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CiAKIHByb3RlY3RlZDoKICAgICBXZWJJREJEYXRhYmFzZSgpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkuY3BwCmluZGV4IDgyMDUxNDQ3OTg4YTJkN2Y0YThiMjk0YWM5MjIzYTA0ODE3MjVmYTUuLjc0
YmFlMzA1ODE3MTRiN2E2YWY1NTYyY2E4MDM0ZWY0MDU1YWQ5NDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKQEAg
LTc5LDYgKzc5LDEyIEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
PiBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlT2JqZWN0CiAgICAgcmV0dXJuIElEQk9i
amVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGUob2JqZWN0U3RvcmUucmVsZWFzZSgpKTsKIH0K
IAordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRf
dCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQoreworICAg
IGlmIChtX3dlYklEQkRhdGFiYXNlKQorICAgICAgICBtX3dlYklEQkRhdGFiYXNlLT5jcmVhdGVP
YmplY3RTdG9yZSh0cmFuc2FjdGlvbklkLCBvYmplY3RTdG9yZUlkLCBuYW1lLCBrZXlQYXRoLCBh
dXRvSW5jcmVtZW50KTsKK30KKwogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6ZGVsZXRl
T2JqZWN0U3RvcmUoaW50NjRfdCBvYmplY3RTdG9yZUlkLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBUaGUg
dHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgcG9pbnRlciB0byBhIHBy
b3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLApAQCAtODcsNiArOTMsMTIgQEAgdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRQcm94eTo6ZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBJREJUcmFuc2EKICAgICBtX3dlYklEQkRhdGFiYXNlLT5kZWxldGVPYmplY3RTdG9y
ZShvYmplY3RTdG9yZUlkLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24o
KSwgZWMpOwogfQogCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpkZWxldGVPYmplY3RT
dG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKK3sKKyAg
ICBpZiAobV93ZWJJREJEYXRhYmFzZSkKKyAgICAgICAgbV93ZWJJREJEYXRhYmFzZS0+ZGVsZXRl
T2JqZWN0U3RvcmUodHJhbnNhY3Rpb25JZCwgb2JqZWN0U3RvcmVJZCk7Cit9CisKIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRQcm94
eTo6Y3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCBpZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBv
YmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSkKIHsKICAgICBPd25QdHI8
V2ViSURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gYWRvcHRQdHIobV93ZWJJREJEYXRhYmFz
ZS0+Y3JlYXRlVHJhbnNhY3Rpb24oaWQsIG9iamVjdFN0b3JlSWRzLCBtb2RlKSk7CkBAIC0xNjEs
NiArMTczLDE4IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNsZWFyKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkCiAgICAgICAgIG1fd2ViSURCRGF0
YWJhc2UtPmNsZWFyKHRyYW5zYWN0aW9uSWQsIG9iamVjdFN0b3JlSWQsIG5ldyBXZWJJREJDYWxs
YmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQogCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5
OjpjcmVhdGVJbmRleChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OklE
QktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCit7CisgICAg
aWYgKG1fd2ViSURCRGF0YWJhc2UpCisgICAgICAgIG1fd2ViSURCRGF0YWJhc2UtPmNyZWF0ZUlu
ZGV4KHRyYW5zYWN0aW9uSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIG5hbWUsIGtleVBhdGgs
IHVuaXF1ZSwgbXVsdGlFbnRyeSk7Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6
OmRlbGV0ZUluZGV4KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IGluZGV4SWQpCit7CisgICAgaWYgKG1fd2ViSURCRGF0YWJhc2UpCisgICAgICAg
IG1fd2ViSURCRGF0YWJhc2UtPmRlbGV0ZUluZGV4KHRyYW5zYWN0aW9uSWQsIG9iamVjdFN0b3Jl
SWQsIGluZGV4SWQpOworfQorCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjbG9zZShQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPikKIHsKICAgICBtX3dlYklEQkRhdGFiYXNl
LT5jbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0
YWJhc2VCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFi
YXNlQmFja2VuZFByb3h5LmgKaW5kZXggZmQ3YmEzMThlN2MyNDYzNjdiN2QxZWM5NDVlMjRiYzY5
MzJjMmZiMy4uYmVmMjg5YmZiZTU2Zjk5YzczZTg2YjQ5NWI0NTkxOGYxZWFkZWM1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94
eS5oCkBAIC00NSw3ICs0NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYkNvcmU6OklEQkRh
dGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0
b3JlKGludDY0X3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0
aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBjcmVh
dGVPYmplY3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJiwgYm9vbCBh
dXRvSW5jcmVtZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRf
dCwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7CiAgICAgLy8gRklYTUU6IFJl
bW92ZSB0aGlzIG1ldGhvZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAzOTIzLgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QsIGNvbnN0IFZlY3Rv
cjxpbnQ2NF90PiYsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpNb2RlKTsKICAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJE
YXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIHVuc2lnbmVkIHNob3J0
IG1vZGUpOwpAQCAtNjMsNiArNjUsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZVJhbmdlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxs
YmFja3M+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2Fs
bGJhY2tzPikgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW5kZXgoaW50NjRf
dCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJiwgYm9vbCB1bmlx
dWUsIGJvb2wgbXVsdGlFbnRyeSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUlu
ZGV4KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQpIE9WRVJSSURFOworCiBwcml2YXRlOgogICAgIElEQkRhdGFiYXNlQmFja2VuZFBy
b3h5KFBhc3NPd25QdHI8V2ViSURCRGF0YWJhc2U+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggYjA1YzUxN2M0MzE4YTE5
NzEzZGI5NWZjYzA3ZTYxM2Q5ZTU2YmI0My4uMzg1NWJlNTkyNWM3YmVmMGExNjRlZjY2MjhmODM3
ZTYzNGZlMGZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJE
YXRhYmFzZUltcGwuY3BwCkBAIC03MiwxMSArNzIsMjIgQEAgV2ViSURCT2JqZWN0U3RvcmUqIFdl
YklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUobG9uZyBsb25nIGlkLCBjb25zdCBX
ZWIKICAgICByZXR1cm4gbmV3IFdlYklEQk9iamVjdFN0b3JlSW1wbChvYmplY3RTdG9yZSk7CiB9
CiAKK3ZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpjcmVhdGVPYmplY3RTdG9yZShsb25nIGxvbmcg
dHJhbnNhY3Rpb25JZCwgbG9uZyBsb25nIG9iamVjdFN0b3JlSWQsIGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQor
eworICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5jcmVhdGVPYmplY3RTdG9yZSh0cmFuc2FjdGlvbklk
LCBvYmplY3RTdG9yZUlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KTsKK30KKwogdm9p
ZCBXZWJJREJEYXRhYmFzZUltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKGxvbmcgbG9uZyBvYmplY3RT
dG9yZUlkLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5kZWxldGVPYmplY3RTdG9yZShv
YmplY3RTdG9yZUlkLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UoKSwgZWMpOwogfQogCit2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6ZGVsZXRlT2JqZWN0U3Rv
cmUobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkKQorewor
ICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5kZWxldGVPYmplY3RTdG9yZSh0cmFuc2FjdGlvbklkLCBv
YmplY3RTdG9yZUlkKTsKK30KKworCiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kIGluIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM5MjMuCiBXZWJJREJUcmFu
c2FjdGlvbiogV2ViSURCRGF0YWJhc2VJbXBsOjpjcmVhdGVUcmFuc2FjdGlvbihsb25nIGxvbmcg
aWQsIGNvbnN0IFdlYlZlY3Rvcjxsb25nIGxvbmc+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQg
c2hvcnQgbW9kZSkKIHsKQEAgLTE2NCw3ICsxNzUsNyBAQCB2b2lkIFdlYklEQkRhdGFiYXNlSW1w
bDo6cHV0KGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwg
VwogICAgICAgICBpbmRleEtleXNbaV0gPSBpbmRleEtleUxpc3Q7CiAgICAgfQogCi0gICAgVmVj
dG9yPHVpbnQ4X3Q+IHZhbHVlQnVmZmVyKHZhbHVlLT5zaXplKCkpOworICAgIFZlY3Rvcjx1aW50
OF90PiB2YWx1ZUJ1ZmZlcjsKICAgICB2YWx1ZUJ1ZmZlci5hcHBlbmQodmFsdWUtPmRhdGEoKSwg
dmFsdWUtPnNpemUoKSk7CiAgICAgbV9kYXRhYmFzZUJhY2tlbmQtPnB1dCh0cmFuc2FjdGlvbklk
LCBvYmplY3RTdG9yZUlkLCAmdmFsdWVCdWZmZXIsIGtleSwgc3RhdGljX2Nhc3Q8SURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlOjpQdXRNb2RlPihwdXRNb2RlKSwgSURCQ2FsbGJhY2tzUHJveHk6
OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgaW5kZXhJZHMsIGluZGV4S2V5cyk7CiB9CkBA
IC0yMTEsNiArMjIyLDE4IEBAIHZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpjbGVhcihsb25nIGxv
bmcgdHJhbnNhY3Rpb25JZCwgbG9uZyBsb25nIG9iamVjdFN0b3JlSWQsCiAgICAgICAgIG1fZGF0
YWJhc2VCYWNrZW5kLT5jbGVhcih0cmFuc2FjdGlvbklkLCBvYmplY3RTdG9yZUlkLCBJREJDYWxs
YmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpKTsKIH0KIAordm9pZCBXZWJJ
REJEYXRhYmFzZUltcGw6OmNyZWF0ZUluZGV4KGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBsb25n
IGxvbmcgb2JqZWN0U3RvcmVJZCwgbG9uZyBsb25nIGluZGV4SWQsIGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVs
dGlFbnRyeSkKK3sKKyAgICBpZiAobV9kYXRhYmFzZUJhY2tlbmQpCisgICAgICAgIG1fZGF0YWJh
c2VCYWNrZW5kLT5jcmVhdGVJbmRleCh0cmFuc2FjdGlvbklkLCBvYmplY3RTdG9yZUlkLCBpbmRl
eElkLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnkpOworfQorCit2b2lkIFdlYklE
QkRhdGFiYXNlSW1wbDo6ZGVsZXRlSW5kZXgobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGxvbmcg
bG9uZyBvYmplY3RTdG9yZUlkLCBsb25nIGxvbmcgaW5kZXhJZCkKK3sKKyAgICBpZiAobV9kYXRh
YmFzZUJhY2tlbmQpCisgICAgICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5kZWxldGVJbmRleCh0cmFu
c2FjdGlvbklkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXggZTQ2NDNmNDRj
N2M3YWNjOTMyY2RmNmU1MDkyYjE5NmI3OWRkZjc3Yi4uYWNlNTIwYWRiMDJiYzk3M2JhNjY2Yzlj
NjE0YmY1MDhlYTY3NmU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCRGF0YWJhc2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRGF0YWJhc2VJbXBsLmgKQEAgLTU0LDcgKzU0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
V2ViSURCTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgV2ViSURCT2Jq
ZWN0U3RvcmUqIGNyZWF0ZU9iamVjdFN0b3JlKGxvbmcgbG9uZywgY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBjb25zdCBXZWJJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBjb25zdCBXZWJJ
REJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY3Jl
YXRlT2JqZWN0U3RvcmUobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGxvbmcgbG9uZyBvYmplY3RT
dG9yZUlkLCBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29s
IGF1dG9JbmNyZW1lbnQpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShsb25n
IGxvbmcgb2JqZWN0U3RvcmVJZCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRp
b25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGxvbmcgbG9uZyBv
YmplY3RTdG9yZUlkLCBsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCk7CiAgICAgLy8gRklYTUU6IFJl
bW92ZSB0aGlzIG1ldGhvZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAzOTIzLgogICAgIHZpcnR1YWwgV2ViSURCVHJhbnNhY3Rpb24qIGNyZWF0ZVRyYW5zYWN0
aW9uKGxvbmcgbG9uZyBpZCwgY29uc3QgV2ViVmVjdG9yPGxvbmcgbG9uZz4mLCB1bnNpZ25lZCBz
aG9ydCBtb2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVHJhbnNhY3Rpb24obG9uZyBsb25n
IGlkLCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyosIGNvbnN0IFdlYlZlY3Rvcjxsb25nIGxvbmc+
JiwgdW5zaWduZWQgc2hvcnQgbW9kZSk7CkBAIC03Miw2ICs3NCw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlUmFuZ2UobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGxvbmcgbG9u
ZyBvYmplY3RTdG9yZUlkLCBjb25zdCBXZWJJREJLZXlSYW5nZSYsIFdlYklEQkNhbGxiYWNrcyop
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihsb25nIGxvbmcgdHJhbnNhY3Rpb25J
ZCwgbG9uZyBsb25nIG9iamVjdFN0b3JlSWQsIFdlYklEQkNhbGxiYWNrcyopIE9WRVJSSURFOwog
CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUluZGV4KGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBs
b25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgbG9uZyBsb25nIGluZGV4SWQsIGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50
cnkpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChsb25nIGxvbmcgdHJhbnNhY3Rpb25J
ZCwgbG9uZyBsb25nIG9iamVjdFN0b3JlSWQsIGxvbmcgbG9uZyBpbmRleElkKTsKIHByaXZhdGU6
CiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBt
X2RhdGFiYXNlQmFja2VuZDsKICAgICBXVEY6OlJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc1By
b3h5PiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkluZGV4SW1wbC5jcHAKaW5kZXggOWIxZDY4Y2ZmN2Q3ZTQyYTViNzA4M2NlNWY3ZTI4
MjYxOTM3Y2VmMS4uYjA4Zjg1NGYzNWY1ODcyMmRiZjUwODgyZDM0NjQ1YWY5MjFlZDQ4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJJREJDYWxsYmFja3NQcm94eS5oIgogI2luY2x1ZGUg
IklEQkluZGV4LmgiCisjaW5jbHVkZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5j
bHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3MuaCIKICNpbmNs
dWRlICJXZWJJREJLZXkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCmluZGV4IGVlNDg3YTFjNjIxZjE5MmEyMDY3
YjQyZjMyMDEyZDMwZjA1OWE1MjEuLjZlZjg1YzNkOTM0Njg0MTQ0ODk0MjZjZWY2ZTVkOTQzYjA1
YWE3MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJh
c2VCYWNrZW5kVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJE
YXRhYmFzZUJhY2tlbmRUZXN0LmNwcApAQCAtNjIsNyArNjIsNyBAQCBURVNUKElEQkRhdGFiYXNl
QmFja2VuZFRlc3QsIEJhY2tpbmdTdG9yZVJldGVudGlvbikKIAogICAgIGNvbnN0IGJvb2wgdW5p
cXVlID0gZmFsc2U7CiAgICAgY29uc3QgYm9vbCBtdWx0aUVudHJ5ID0gZmFsc2U7Ci0gICAgUmVm
UHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4ID0gSURCSW5kZXhCYWNrZW5kSW1wbDo6Y3Jl
YXRlKGRiLmdldCgpLCBzdG9yZS5nZXQoKSwgSURCSW5kZXhNZXRhZGF0YSgiaW5kZXgiLCAtMSwg
SURCS2V5UGF0aCgia2V5UGF0aCIpLCB1bmlxdWUsIG11bHRpRW50cnkpKTsKKyAgICBSZWZQdHI8
SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXggPSBJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVhdGUo
ZGIuZ2V0KCksIElEQkluZGV4TWV0YWRhdGEoImluZGV4IiwgLTEsIElEQktleVBhdGgoImtleVBh
dGgiKSwgdW5pcXVlLCBtdWx0aUVudHJ5KSk7CiAgICAgRVhQRUNUX0dUKGJhY2tpbmdTdG9yZS0+
cmVmQ291bnQoKSwgMSk7CiAKICAgICBkYi5jbGVhcigpOwpAQCAtMTUxLDkgKzE1MSwxMCBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRh
KCkgY29uc3QgeyByZXR1cm4gSURCRGF0YWJhc2VNZXRhZGF0YSgpOyB9Ci0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3Rv
cmUoaW50NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBh
dXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25D
b2RlJikgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShj
b25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2Vw
dGlvbkNvZGUmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRf
dCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpIHsgfQor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNy
ZWF0ZU9iamVjdFN0b3JlKGludDY0X3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5
UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0
b0luY3JlbWVudCkgT1ZFUlJJREUgeyB9OworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RT
dG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJ
REUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERSB7IH0K
ICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kIGluIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM5MjMuCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gY3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCwgY29u
c3QgVmVjdG9yPGludDY0X3Q+JiwgSURCVHJhbnNhY3Rpb246Ok1vZGUpIE9WRVJSSURFIHsgcmV0
dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCwgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIHVu
c2lnbmVkIHNob3J0IG1vZGUpIE9WRVJSSURFIHsgfQpAQCAtMTc2LDYgKzE3Nyw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmFuZ2UoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4pIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihpbnQ2
NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+KSBPVkVSUklERSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJbmRleChp
bnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwg
Ym9vbCBtdWx0aUVudHJ5KSBPVkVSUklERSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpIE9WRVJSSURFIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KKwogcHJpdmF0ZToKICAgICBNb2NrSURCRGF0YWJhc2VCYWNrZW5kUHJveHkoV2Vi
SURCRGF0YWJhc2VJbXBsJiB3ZWJEYXRhYmFzZSkKICAgICAgICAgOiBtX3dhc0Nsb3NlQ2FsbGVk
KGZhbHNlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDlkNjk4OThmNTNmZDdmOTM4OGY3YzgxNmM0OGM5YTI2OTUzMDBlMzEu
LjQ3NDgyZmEzNjM1ZDRkZDY3YzBhNTMxNGNkOWJiNjQ4YmY2YjExMzggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMCBAQAorMjAxMy0wMS0wMyAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgSW5kZXhlZERCOiBNaWdyYXRlIGJhY2tlbmQgT2JqZWN0U3RvcmUgY2FsbHMg
dG8gdXNlIHRyYW5zYWN0aW9uIGlkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDI3NDEKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgor
CisgICAgICAgIEFkZCBhZGRpdGlvbmFsIGNvdW50KCkgdGVzdHMgZm9yIG11bHRpLWVudHJ5IGlu
ZGV4ZXMsIG5vdCBwcmV2aW91c2x5CisgICAgICAgIGNvdmVyZWQuCisKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9pbmRleC1tdWx0aWVudHJ5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtbXVsdGllbnRyeS5qczoKKyAgICAgICAg
KC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlKToKKyAgICAgICAgKHZlcmlmeUNvdW50LnJlcXVlc3Qu
b25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHZlcmlmeUNvdW50LnJlcXVl
c3Qub25zdWNjZXNzKToKKyAgICAgICAgKHZlcmlmeUNvdW50KToKKwogMjAxMy0wMS0wNCAgVGVy
cnkgQW5kZXJzb24gIDx0ZGFuZGVyc29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkIGdhcmRlbmluZy4gVGVzdCBpcyBmbGFreSBvbiBMaW51eCBhbmQgTWFjLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtbXVsdGllbnRyeS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1tdWx0aWVudHJ5LWV4
cGVjdGVkLnR4dAppbmRleCBmMWQ2OTc3ZTdmOGYzMTBiM2QxODM2Yzk3MmM4N2M3NmVjOWM3ZmRk
Li45YzJkZWY4YjkxNzQwMzQzMmRlNjBjZWExZWZiYWY5MDlmOWVjY2Q0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1tdWx0aWVudHJ5LWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1tdWx0aWVudHJ5LWV4
cGVjdGVkLnR4dApAQCAtODIsNiArODIsMTIgQEAgUEFTUyBjdXJzb3IudmFsdWUueSBpcyAiZCIK
IGN1cnNvci5jb250aW51ZSgpCiBjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CiBQQVNTIGV4
cGVjdGVkLmxlbmd0aCBpcyAwCit0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUn
XSkKK3RyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCdpbmRleCcpCitpbmRl
eC5jb3VudCgpCitQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgOQoraW5kZXguY291bnQoNykK
K1BBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyAxCiAKIFZlcmlmeWluZyB1bmlxdWUgY29uc3Ry
YWludCBvbiBtdWx0aUVudHJ5IGluZGV4CiB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsn
c3RvcmUtdW5pcXVlJ10sICdyZWFkd3JpdGUnKQpAQCAtMTYyLDYgKzE2OCwxMiBAQCBQQVNTIGN1
cnNvci52YWx1ZS55IGlzICJkIgogY3Vyc29yLmNvbnRpbnVlKCkKIGN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQKIFBBU1MgZXhwZWN0ZWQubGVuZ3RoIGlzIDAKK3RyYW5zYWN0aW9uID0gZGIu
dHJhbnNhY3Rpb24oWydzdG9yZSddKQordHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJyku
aW5kZXgoJ2luZGV4JykKK2luZGV4LmNvdW50KCkKK1BBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdCBp
cyA5CitpbmRleC5jb3VudCg3KQorUEFTUyBldmVudC50YXJnZXQucmVzdWx0IGlzIDEKIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LW11bHRpZW50cnku
anMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtbXVsdGll
bnRyeS5qcwppbmRleCA3ZGY1ZjU5MmNmY2MzZjE1NmI3MzQzMzgyOTNmMTZmZWEyZGVjNGMwLi5i
MGI1NWU4YWJmZWIwNDhiY2I1NjViNTRkMmFhYmY4M2I2MTE3MjM4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtbXVsdGllbnRyeS5qcwor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtbXVsdGll
bnRyeS5qcwpAQCAtNDUsNyArNDUsNyBAQCBmdW5jdGlvbiB2ZXJpZnlJbmRleGVzKGluZGV4TmFt
ZSwgY2FsbGJhY2spCiAgICAgZGVidWcoIlZlcmlmeWluZyBpbmRleDogIiArIGluZGV4TmFtZSk7
CiAgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0
aW9uKFsnc3RvcmUnXSwgJ3JlYWRvbmx5JykiKTsKICAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGNh
bGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbigpIHsgdmVyaWZ5
Q291bnQoY2FsbGJhY2spOyB9OwogCiAgICAgZXhwZWN0ZWQgPSBbCiAgICAgICAgIHsga2V5OiAx
LCBwcmltYXJ5S2V5OiAnZm9vJywgeTogJ2EnIH0sCkBAIC0xMDQsNiArMTA0LDI2IEBAIGZ1bmN0
aW9uIHZlcmlmeVVuaXF1ZUNvbnN0cmFpbnQoKQogICAgIH07CiB9CiAKK2Z1bmN0aW9uIHZlcmlm
eUNvdW50KGNhbGxiYWNrKSB7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFu
c2FjdGlvbihbJ3N0b3JlJ10pIik7CisKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGNhbGxiYWNr
OworCisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3Rv
cmUnKS5pbmRleCgnaW5kZXgnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleC5j
b3VudCgpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworCisg
ICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIjkiKTsKKworICAgICAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXguY291bnQoNykiKTsKKyAgICAgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQiLCAiMSIpOworICAgICAgICB9OworICAgIH07CisKK30KKwogZnVuY3Rp
b24gY3JlYXRlSW5kZXhPblN0b3JlV2l0aERhdGEoKQogewogICAgIGRlYnVnKCIiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181524</attachid>
            <date>2013-01-07 10:35:39 -0800</date>
            <delta_ts>2013-01-07 10:55:08 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-106148-20130107103244.patch</filename>
            <type>text/plain</type>
            <size>14105</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4ODc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGU5MDllNDNjYTAyZmU4
MDNlN2IxMzI2NmYyOWUxYmYxODNmM2JkYi4uODRkMmZiYTg0ODUzZGUyNmVhNzRmMzllOWQ5ODhi
Y2E1ZmNiM2RkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIxIEBACiAyMDEzLTAxLTA0ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KIAorICAgICAgICBJbmRleGVkREI6IFN0
dWIgb3V0IGFzeW5jIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Y3JlYXRlT2JqZWN0U3Rv
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjE0
OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgVGhlc2UgbWV0
aG9kcyBhcmUgYmVjb21pbmcgYXN5bmMgaW4gbXVsdGlwcm9jZXNzIHBvcnRzLCBzbyBzdHViIG91
dAorICAgICAgICB2ZXJzaW9ucyB0aGF0IGhhdmUgbm8gcmV0dXJuIHZhbHVlcy4KKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2UuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSk6CisKKzIwMTMtMDEt
MDQgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIEluZGV4
ZWREQjogU3R1YiBvdXQgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpjcmVhdGVJbmRleC9k
ZWxldGVJbmRleAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA2MTE3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOGRhOGY3YzgwZDAzZTY5
NWFiMzc3ODVlYTYwOTVhODJmODE1ZDA4MS4uMWM3OTFjYjk1NjRkNWJmM2RiZjE1N2RiZThlZmMx
YmZiMTg1MTk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyOSBAQAog
MjAxMy0wMS0wNCAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CiAKKyAgICAg
ICAgSW5kZXhlZERCOiBTdHViIG91dCBhc3luYyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6
OmNyZWF0ZU9iamVjdFN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDYxNDgKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisg
ICAgICAgIFN0dWIgb3V0IFdlYktpdCBBUEkgZm9yIGFzeW5jIGNyZWF0ZU9iamVjdFN0b3JlLgor
CisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNlLmg6CisgICAgICAgIChXZWJJREJEYXRh
YmFzZSk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OklEQkRhdGFiYXNlQmFja2VuZFBy
b3h5OjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRQcm94eSk6CisgICAgICAgICog
c3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFi
YXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAg
ICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oOgorICAgICAgICAoV2ViSURCRGF0YWJhc2VJbXBs
KToKKworMjAxMy0wMS0wNCAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisK
ICAgICAgICAgSW5kZXhlZERCOiBTdHViIG91dCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6
OmNyZWF0ZUluZGV4L2RlbGV0ZUluZGV4CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDYxMTcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IDM2NDk2NDJj
NTRkM2U5ZGRkZGEwNDg0ZGQzMDBkODk1ZGRiMjQ1ZDQuLjk0NGI4MzAwYzdlMzIyM2JkZDM0NGJi
NWJhODFkMWMzYjE0ZmExNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTYxLDcgKzYxLDkgQEAg
cHVibGljOgogICAgIC8vIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZQogICAgIHZpcnR1YWwg
SURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGlu
dDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0
b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0
aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJ
REJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICAvLyBGSVhNRTogUmVtb3ZlIHRo
aXMgbWV0aG9kIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM5
MjMuCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZT4gY3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklkLCBjb25zdCBWZWN0b3I8
aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6TW9kZSk7CiAgICAgdmly
dHVhbCB2b2lkIGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0
U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2Uu
aAppbmRleCBlMTM5YjEwZjczMjRiNzkxMDYyOTQ3OWUyYTA3MmQyYmFhYjYwOWQ0Li40YmJmYmI4
NmFjY2UxM2IwODA3MTQyZjEyYWRjMzYxZjg4YWNlZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2UuaApAQCAtNTYsNyArNTYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJREJEYXRhYmFz
ZU1ldGFkYXRhIG1ldGFkYXRhKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRf
dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVt
ZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0aW9u
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJL
ZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZU9iamVjdFN0b3JlKGludDY0X3QsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4
Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSA9IDA7CiAgICAgLy8g
RklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAzOTIzLgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25J
ZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246
Ok1vZGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCB0
cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgY29uc3QgVmVj
dG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hvcnQgbW9kZSkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2Uu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKaW5kZXgg
Mjc2NDI2M2Y4NzI2MGEwZDc5YzQ3MzcwNWI5YThkNDQ0YTEzNmNlNi4uNTE2YTIxZGQ5NDJjZWNl
N2ZiYzQwZTAxMGE1YzljNmI0ZGNjYTNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCkBAIC01OCw3ICs1OCw5IEBAIHB1YmxpYzoKICAgICAg
ICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGxvbmcgbG9uZyB0cmFuc2FjdGlv
bklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25z
dCBXZWJJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50KSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShsb25nIGxv
bmcgb2JqZWN0U3RvcmVJZCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBX
ZWJFeGNlcHRpb25Db2RlJiBlYykgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQs
IGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtZXRob2QgaW4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzkyMy4KICAgICB2aXJ0dWFsIFdlYklEQlRyYW5zYWN0
aW9uKiBjcmVhdGVUcmFuc2FjdGlvbihsb25nIGxvbmcgaWQsIGNvbnN0IFdlYlZlY3Rvcjxsb25n
IGxvbmc+JiwgdW5zaWduZWQgc2hvcnQgbW9kZSkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRyYW5zYWN0aW9uKGxvbmcg
bG9uZyBpZCwgV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViVmVj
dG9yPGxvbmcgbG9uZz4mLCB1bnNpZ25lZCBzaG9ydCBtb2RlKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCmluZGV4IGM5NzVkNGM1N2RlMDgwYmYyMTExMTExMjVm
Mjc1MWQ1YmNmM2EzMjguLjc0YmFlMzA1ODE3MTRiN2E2YWY1NTYyY2E4MDM0ZWY0MDU1YWQ5NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJh
Y2tlbmRQcm94eS5jcHAKQEAgLTc5LDYgKzc5LDEyIEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlT2JqZWN0
CiAgICAgcmV0dXJuIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGUob2JqZWN0U3Rv
cmUucmVsZWFzZSgpKTsKIH0KIAordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRl
T2JqZWN0U3RvcmUoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRv
SW5jcmVtZW50KQoreworICAgIGlmIChtX3dlYklEQkRhdGFiYXNlKQorICAgICAgICBtX3dlYklE
QkRhdGFiYXNlLT5jcmVhdGVPYmplY3RTdG9yZSh0cmFuc2FjdGlvbklkLCBvYmplY3RTdG9yZUlk
LCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KTsKK30KKwogdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRQcm94eTo6ZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCBvYmplY3RTdG9yZUlkLCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJl
IGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLApAQCAtODcs
NiArOTMsMTIgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6ZGVsZXRlT2JqZWN0U3Rv
cmUoaW50NjRfdCBvYmplY3RTdG9yZUlkLCBJREJUcmFuc2EKICAgICBtX3dlYklEQkRhdGFiYXNl
LT5kZWxldGVPYmplY3RTdG9yZShvYmplY3RTdG9yZUlkLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0
V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMpOwogfQogCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZFBy
b3h5OjpkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCkKK3sKKyAgICBpZiAobV93ZWJJREJEYXRhYmFzZSkKKyAgICAgICAgbV93ZWJJ
REJEYXRhYmFzZS0+ZGVsZXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rpb25JZCwgb2JqZWN0U3RvcmVJ
ZCk7Cit9CisKIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJE
YXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCBpZCwgY29uc3Qg
VmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9k
ZSkKIHsKICAgICBPd25QdHI8V2ViSURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gYWRvcHRQ
dHIobV93ZWJJREJEYXRhYmFzZS0+Y3JlYXRlVHJhbnNhY3Rpb24oaWQsIG9iamVjdFN0b3JlSWRz
LCBtb2RlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJh
c2VCYWNrZW5kUHJveHkuaAppbmRleCAwNDRiYzM4MjY4ODYyMjczNjYwNjkwOGZlZmIxOTVhMWJi
Y2ZmZTRmLi5iZWYyODliZmJlNTZmOTljNzNlODZiNDk1YjQ1OTE4ZjFlYWRlYzUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5
LmgKQEAgLTQ1LDcgKzQ1LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6SURCRGF0
YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3Rv
cmUoaW50NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRo
JiwgYm9vbCBhdXRvSW5jcmVtZW50LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0
ZU9iamVjdFN0b3JlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1
dG9JbmNyZW1lbnQpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90
LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKTsKICAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoaXMgbWV0aG9kIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDM5MjMuCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4gY3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCwgY29uc3QgVmVjdG9y
PGludDY0X3Q+JiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Ok1vZGUpOwogICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRh
dGFiYXNlQ2FsbGJhY2tzPiwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiwgdW5zaWduZWQgc2hvcnQg
bW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRh
YmFzZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJ
bXBsLmNwcAppbmRleCA5NTkyMWQ2ZjM0ZjYxODIyMzU5NDk1ZWZmYjlkYjk1NWZlMzhiMjIwLi4z
ODU1YmU1OTI1YzdiZWYwYTE2NGVmNjYyOGY4MzdlNjM0ZmUwZmQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTcyLDExICs3
MiwyMiBAQCBXZWJJREJPYmplY3RTdG9yZSogV2ViSURCRGF0YWJhc2VJbXBsOjpjcmVhdGVPYmpl
Y3RTdG9yZShsb25nIGxvbmcgaWQsIGNvbnN0IFdlYgogICAgIHJldHVybiBuZXcgV2ViSURCT2Jq
ZWN0U3RvcmVJbXBsKG9iamVjdFN0b3JlKTsKIH0KIAordm9pZCBXZWJJREJEYXRhYmFzZUltcGw6
OmNyZWF0ZU9iamVjdFN0b3JlKGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBsb25nIGxvbmcgb2Jq
ZWN0U3RvcmVJZCwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJLZXlQYXRoJiBr
ZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCit7CisgICAgbV9kYXRhYmFzZUJhY2tlbmQtPmNy
ZWF0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uSWQsIG9iamVjdFN0b3JlSWQsIG5hbWUsIGtleVBh
dGgsIGF1dG9JbmNyZW1lbnQpOworfQorCiB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6ZGVsZXRl
T2JqZWN0U3RvcmUobG9uZyBsb25nIG9iamVjdFN0b3JlSWQsIGNvbnN0IFdlYklEQlRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgbV9kYXRhYmFz
ZUJhY2tlbmQtPmRlbGV0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlSWQsIHRyYW5zYWN0aW9uLmdl
dElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CiB9CiAKK3ZvaWQgV2ViSURC
RGF0YWJhc2VJbXBsOjpkZWxldGVPYmplY3RTdG9yZShsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCwg
bG9uZyBsb25nIG9iamVjdFN0b3JlSWQpCit7CisgICAgbV9kYXRhYmFzZUJhY2tlbmQtPmRlbGV0
ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uSWQsIG9iamVjdFN0b3JlSWQpOworfQorCisKIC8vIEZJ
WE1FOiBSZW1vdmUgdGhpcyBtZXRob2QgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzkyMy4KIFdlYklEQlRyYW5zYWN0aW9uKiBXZWJJREJEYXRhYmFzZUltcGw6
OmNyZWF0ZVRyYW5zYWN0aW9uKGxvbmcgbG9uZyBpZCwgY29uc3QgV2ViVmVjdG9yPGxvbmcgbG9u
Zz4mIG9iamVjdFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9ydCBtb2RlKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAppbmRleCA1YzU1ZmZhZTc0
MTIzNjkzNDlhODEwMjY2MzUzMjJlNTkxNWU0NTU1Li5hY2U1MjBhZGIwMmJjOTczYmE2NjZjOWM2
MTRiZjUwOGVhNjc2ZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJEYXRhYmFzZUltcGwuaApAQCAtNTQsNyArNTQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBX
ZWJJREJNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBXZWJJREJPYmpl
Y3RTdG9yZSogY3JlYXRlT2JqZWN0U3RvcmUobG9uZyBsb25nLCBjb25zdCBXZWJTdHJpbmcmIG5h
bWUsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklE
QlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBjcmVh
dGVPYmplY3RTdG9yZShsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCwgbG9uZyBsb25nIG9iamVjdFN0
b3JlSWQsIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wg
YXV0b0luY3JlbWVudCk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGxvbmcg
bG9uZyBvYmplY3RTdG9yZUlkLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlv
bkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUobG9uZyBsb25nIG9i
amVjdFN0b3JlSWQsIGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkKTsKICAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoaXMgbWV0aG9kIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDM5MjMuCiAgICAgdmlydHVhbCBXZWJJREJUcmFuc2FjdGlvbiogY3JlYXRlVHJhbnNhY3Rp
b24obG9uZyBsb25nIGlkLCBjb25zdCBXZWJWZWN0b3I8bG9uZyBsb25nPiYsIHVuc2lnbmVkIHNo
b3J0IG1vZGUpOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUcmFuc2FjdGlvbihsb25nIGxvbmcg
aWQsIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzKiwgY29uc3QgV2ViVmVjdG9yPGxvbmcgbG9uZz4m
LCB1bnNpZ25lZCBzaG9ydCBtb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCmluZGV4IDRmZjRkMTc1MjQ2M2Jk
NjE4MTBhOTU0N2FkMzVjZDA5Y2QxZmMwMjIuLjZlZjg1YzNkOTM0Njg0MTQ0ODk0MjZjZWY2ZTVk
OTQzYjA1YWE3MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURC
RGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcApAQCAtMTUxLDkgKzE1MSwxMCBAQCBwdWJsaWM6
CiAgICAgfQogCiAgICAgdmlydHVhbCBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKCkgY29u
c3QgeyByZXR1cm4gSURCRGF0YWJhc2VNZXRhZGF0YSgpOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoaW50
NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5j
cmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikg
eyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBT
dHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNv
ZGUmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpIHsgfQorICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9i
amVjdFN0b3JlKGludDY0X3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYs
IGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhj
ZXB0aW9uQ29kZSYpIE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY3Jl
YXRlT2JqZWN0U3RvcmUoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3Jl
bWVudCkgT1ZFUlJJREUgeyB9OworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShp
bnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERSB7IH0KICAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDM5MjMuCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4gY3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCwgY29uc3QgVmVj
dG9yPGludDY0X3Q+JiwgSURCVHJhbnNhY3Rpb246Ok1vZGUpIE9WRVJSSURFIHsgcmV0dXJuIDA7
IH0KICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCwgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIHVuc2lnbmVk
IHNob3J0IG1vZGUpIE9WRVJSSURFIHsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>