<?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>241336</bug_id>
          
          <creation_ts>2022-06-06 07:14:12 -0700</creation_ts>
          <short_desc>REGRESSION(r295278): Causes crashes</short_desc>
          <delta_ts>2022-06-06 07:19:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>240497</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>heycam</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1874294</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-06-06 07:14:12 -0700</bug_when>
    <thetext>https://commits.webkit.org/r295278 introduced a regression:
Causes crashes

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1874296</commentid>
    <comment_count>1</comment_count>
      <attachid>460049</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-06-06 07:14:16 -0700</bug_when>
    <thetext>Created attachment 460049
REVERT of r295278

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

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

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1874298</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-06-06 07:18:36 -0700</bug_when>
    <thetext>Committed r295285 (251331@main): &lt;https://commits.webkit.org/251331@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 460049.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1874299</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-06-06 07:19:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/94435035&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>460049</attachid>
            <date>2022-06-06 07:14:16 -0700</date>
            <delta_ts>2022-06-06 07:18:38 -0700</delta_ts>
            <desc>REVERT of r295278</desc>
            <filename>bug-241336-20220606071415.patch</filename>
            <type>text/plain</type>
            <size>173624</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSAxNjMyMzU1YWY3N2I1MTk3YTEzY2VkNmNkYzBhODIxYzczOWZjNzYyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBNb24sIDYgSnVuIDIwMjIgMDc6MTQ6MTQgLTA3MDAKU3ViamVjdDogW1BBVENIXSBV
bnJldmlld2VkLCByZXZlcnRpbmcgcjI5NTI3OC4KIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNDEzMzYKCkNhdXNlcyBjcmFzaGVzCgpSZXZlcnRlZCBjaGFuZ2VzZXQ6
CgoiQWRkIGEgbmV3IERyYXdEZWNvbXBvc2VkR2x5cGhzIGRpc3BsYXkgbGlzdCBpdGVtIHRvIGF2
b2lkIHJlcGVhdGVkbHkgc2VuZGluZyBnbHlwaHMgd2hlbiB1c2luZyB0aGUgR2x5cGhEaXNwbGF5
TGlzdENhY2hlIgpodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwNDk3
Cmh0dHBzOi8vY29tbWl0cy53ZWJraXQub3JnL3IyOTUyNzgKLS0tCiBTb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybUhhdmUuaCAgICAgICAgICAgICAgICAgfCAgIDggLS0KIFNvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UgICAgICAgICAgICAgICAgICB8ICAgMiAtCiBTb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIC4uLi9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiB8ICAxOCAtLS0KIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgICAgICAgICAgICAgICB8ICAgOCAtLQogU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmggICAgICAgICAgICAgICAgIHwgICA1IC0KIC4uLi9pbmxpbmUvTGF5b3V0SW50ZWdy
YXRpb25JbmxpbmVDb250ZW50LmNwcCB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvcGFnZS9NZW1v
cnlSZWxlYXNlLmNwcCAgICAgICAgIHwgICAzICstCiAuLi4vZ3JhcGhpY3MvQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dC5jcHAgICAgfCAgIDggKy0KIC4uLi9ncmFwaGljcy9CaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0LmggICAgICB8ICAgMyArLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL0RlY29t
cG9zZWRHbHlwaHMuY3BwICAgIHwgIDU4IC0tLS0tLS0tCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3Mv
RGVjb21wb3NlZEdseXBocy5oICAgICAgfCAgNzEgLS0tLS0tLS0tLQogLi4uL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIHwgIDE1ICstLQogLi4uL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgICAgIHwgICA3IC0KIC4uLi9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaCAgICAgICB8ICAgNyArLQogLi4uL3BsYXRmb3JtL2dyYXBo
aWNzL051bGxHcmFwaGljc0NvbnRleHQuaCAgIHwgICAzICstCiAuLi4vcGxhdGZvcm0vZ3JhcGhp
Y3MvUG9zaXRpb25lZEdseXBocy5jcHAgICAgfCAgNTIgLS0tLS0tLS0KIC4uLi9wbGF0Zm9ybS9n
cmFwaGljcy9Qb3NpdGlvbmVkR2x5cGhzLmggICAgICB8ICA5OCAtLS0tLS0tLS0tLS0tLQogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5jcHAgIHwgIDE4ICstLQogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oICAgIHwgIDU1ICstLS0tLS0t
CiAuLi4vV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuSGFzaC5oICAgfCAgNzkgLS0t
LS0tLS0tLS0KIC4uLi9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgICB8
ICAgOSArLQogLi4uL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmggICAgIHwg
ICAyIC0KIC4uLi9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgICB8ICAx
NSArLS0KIC4uLi9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwICAgICB8ICAg
NCArLQogLi4uL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oICAgICAgIHwgICA4
ICstCiAuLi4vZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgICAgfCAgIDgg
LS0KIC4uLi9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgICAgICB8ICAgNCAt
CiAuLi4vZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaCAgICAgICAgfCAgIDEgLQog
Li4uL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCAgICAgICAgIHwgIDUwICsrKyst
LS0KIC4uLi9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oICB8ICA3OCAr
KysrKy0tLS0tLQogLi4uL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCAgICAg
IHwgIDQwICstLS0tLQogLi4uL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggICAg
ICAgIHwgIDE3ICstLQogLi4uL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5j
cHAgIHwgIDE1ICstLQogLi4uL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5o
ICAgIHwgICA0ICstCiAuLi4vZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwICAg
ICAgfCAgNTAgKystLS0tLQogLi4uL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgg
ICAgICAgIHwgICA4ICstCiAuLi4vZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFw
LmggICAgfCAgMTYgKy0tCiAuLi4vaGFyZmJ1enovRHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enou
Y3BwICAgfCAgIDQgKy0KIC4uLi9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5j
cHAgICB8ICAgOCAtLQogLi4uL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgg
ICAgIHwgICAyIC0KIC4uLi9ncmFwaGljcy93aW4vRHJhd0dseXBoc1JlY29yZGVyV2luLmNwcCAg
ICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RGlyZWN0aW9uLmgg
IHwgIDEzICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5jcHAgICAg
fCAgMTggLS0tCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oICAgICAg
fCAgMTAgKy0KIC4uLi9yZW5kZXJpbmcvR2x5cGhEaXNwbGF5TGlzdENhY2hlLmNwcCAgICAgICB8
IDEyNSAtLS0tLS0tLS0tLS0tLS0tLS0KIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9HbHlwaERpc3Bs
YXlMaXN0Q2FjaGUuaCB8IDExOSArKysrKystLS0tLS0tLS0tLQogLi4uL1dlYkNvcmUvcmVuZGVy
aW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwIHwgICAyICstCiAuLi4vcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAgICAgICAgfCAgIDQgLQogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRCb3hQYWludGVyLmNwcCAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dFBhaW50ZXIuY3BwICAgICAgfCAgMTYgKystCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dFBhaW50ZXIuaCAgICAgICAgfCAgMTYgKy0tCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgICAgICAgICAgfCAgMjggKystLQogU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaCAgICAgICAgICAgIHwgICAzICstCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwgICAgICAgICAgfCAgIDEgLQogLi4uL2dyYXBoaWNzL1F1YWxpZmllZFJl
c291cmNlSGVhcC5oICAgICAgICAgIHwgIDMyICstLS0tCiAuLi4vZ3JhcGhpY3MvUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAgICAgfCAgMjQgLS0tLQogLi4uL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXIuaCAgICAgIHwgICAyIC0KIC4uLi9SZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyLm1lc3NhZ2VzLmluICAgICB8ICAgMSAtCiAuLi4vZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHAgICAgICAgfCAgMTUgKy0tCiAuLi4vZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oICAgICAgICAgfCAgIDIgLQogLi4uL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
bWVzc2FnZXMuaW4gICAgICAgIHwgICAxIC0KIC4uLi9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmNwcCAgICAgICAgICB8ICAxNCArLQogLi4uL0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZS5oIHwgIDExICstCiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5ICAgICAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAgICB8ICAzMCArLS0tLQogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmggIHwgICA2IC0KIC4uLi9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJv
eHkuY3BwICAgICAgICB8ICAxOCArLS0KIC4uLi9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyUHJveHkuaCB8ICAgMiAtCiAuLi4vZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LmNwcCAgfCAgIDUgLQogLi4uL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oICAgIHwgICAxIC0KIC4uLi9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5LmNwcCB8ICAyMiAtLS0KIC4uLi9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5LmggICB8ICAgOCArLQogLi4uL2dseXBoLWRpc3BsYXktbGlzdC1jb2xvci1leHBlY3RlZC50
eHQgICAgIHwgICA1ICstCiAuLi5waC1kaXNwbGF5LWxpc3QtY29sci11bnNoYXJlZC1leHBlY3Rl
ZC50eHQgfCAgIDEgLQogLi4uL2dseXBoLWRpc3BsYXktbGlzdC1jb2xyLXVuc2hhcmVkLmh0bWwg
ICAgIHwgIDQzIC0tLS0tLQogLi4uLWRpc3BsYXktbGlzdC1zY2FsZWQtdW5zaGFyZWQtZXhwZWN0
ZWQudHh0IHwgICAxIC0KIC4uLi9nbHlwaC1kaXNwbGF5LWxpc3Qtc2NhbGVkLXVuc2hhcmVkLmh0
bWwgICB8ICA0MiAtLS0tLS0KIC4uLi1kaXNwbGF5LWxpc3Qtc2hhZG93LXVuc2hhcmVkLWV4cGVj
dGVkLnR4dCB8ICAgMSAtCiAuLi4vZ2x5cGgtZGlzcGxheS1saXN0LXNoYWRvdy11bnNoYXJlZC5o
dG1sICAgfCAgMzggLS0tLS0tCiAuLi4vZ2x5cGgtZGlzcGxheS1saXN0LXNoYXJlZC1leHBlY3Rl
ZC50eHQgICAgfCAgIDEgLQogLi4uL2dseXBoLWRpc3BsYXktbGlzdC1zaGFyZWQuaHRtbCAgICAg
ICAgICAgIHwgIDQ2IC0tLS0tLS0KIC4uLnlwaC1kaXNwbGF5LWxpc3Qtc3ZnLXVuc2hhcmVkLWV4
cGVjdGVkLnR4dCB8ICAgMSAtCiAuLi4vZ2x5cGgtZGlzcGxheS1saXN0LXN2Zy11bnNoYXJlZC5o
dG1sICAgICAgfCAgNDMgLS0tLS0tCiA4NCBmaWxlcyBjaGFuZ2VkLCAyMjAgaW5zZXJ0aW9ucygr
KSwgMTQyOSBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9EZWNvbXBvc2VkR2x5cGhzLmNwcAogZGVsZXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RlY29tcG9zZWRHbHlwaHMuaAogZGVs
ZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bvc2l0aW9u
ZWRHbHlwaHMuY3BwCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUG9zaXRpb25lZEdseXBocy5oCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bkhhc2guaAogZGVsZXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HbHlwaERpc3BsYXlMaXN0Q2FjaGUuY3BwCiBkZWxl
dGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdHMv
Z2x5cGgtZGlzcGxheS1saXN0LWNvbHItdW5zaGFyZWQtZXhwZWN0ZWQudHh0CiBkZWxldGUgbW9k
ZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdHMvZ2x5cGgt
ZGlzcGxheS1saXN0LWNvbHItdW5zaGFyZWQuaHRtbAogZGVsZXRlIG1vZGUgMTAwNjQ0IExheW91
dFRlc3RzL2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3RzL2dseXBoLWRpc3BsYXktbGlzdC1z
Y2FsZWQtdW5zaGFyZWQtZXhwZWN0ZWQudHh0CiBkZWxldGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVz
dHMvZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdHMvZ2x5cGgtZGlzcGxheS1saXN0LXNjYWxl
ZC11bnNoYXJlZC5odG1sCiBkZWxldGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L2dseXBoLWRpc3BsYXktbGlzdHMvZ2x5cGgtZGlzcGxheS1saXN0LXNoYWRvdy11bnNoYXJlZC1l
eHBlY3RlZC50eHQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L3RleHQvZ2x5
cGgtZGlzcGxheS1saXN0cy9nbHlwaC1kaXNwbGF5LWxpc3Qtc2hhZG93LXVuc2hhcmVkLmh0bWwK
IGRlbGV0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1s
aXN0cy9nbHlwaC1kaXNwbGF5LWxpc3Qtc2hhcmVkLWV4cGVjdGVkLnR4dAogZGVsZXRlIG1vZGUg
MTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3RzL2dseXBoLWRp
c3BsYXktbGlzdC1zaGFyZWQuaHRtbAogZGVsZXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zh
c3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3RzL2dseXBoLWRpc3BsYXktbGlzdC1zdmctdW5zaGFy
ZWQtZXhwZWN0ZWQudHh0CiBkZWxldGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L2dseXBoLWRpc3BsYXktbGlzdHMvZ2x5cGgtZGlzcGxheS1saXN0LXN2Zy11bnNoYXJlZC5odG1s
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCBkOGU0NDhiYWFhYzYuLmJhNjQxMTgxNjFlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTEyMDMsMTEgKzEyMDMsMyBAQAogI2lmIChQTEFURk9STShJ
T1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE2MDAwMCkKICNkZWZp
bmUgSEFWRV9ERFJFU1VMVF9ESVNBQkxFX1VSTF9TQ0hFTUVfQ0hFQ0tJTkcgMQogI2VuZGlmCi0K
LSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEzMDAwMCkgXAotICAgIHx8IChQTEFURk9STShNQUNDQVRBTFlTVCkgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTYwMDAwKSBcCi0gICAgfHwgKFBMQVRGT1JNKElPUykg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTYwMDAwKSBcCi0gICAgfHwg
KFBMQVRGT1JNKEFQUExFVFYpICYmIF9fVFZfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxNjAw
MDApIFwKLSAgICB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgX19XQVRDSF9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSA5MDAwMCkKLSNkZWZpbmUgSEFWRV9DT1JFX1RFWFRfRklYX0ZPUl9SQURB
Ul85MzkyNTYyMCAxCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDdiMzRmMmZkOTUwMS4u
M2YxZmZiMzY5ODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE0NjgsNyArMTQ2OCw2IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9Db250ZW50VHlwZVV0aWxpdGllcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGFzaEFycmF5
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaAotICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0RlY29tcG9zZWRHbHlwaHMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGll
bnQuaApAQCAtMTU5NCw3ICsxNTkzLDYgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVmlkZW9NYXRyaXhDb2VmZmlj
aWVudHMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVmlkZW9UcmFja0NvbmZpZ3Vy
YXRpb24uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVmlkZW9UcmFuc2ZlckNoYXJh
Y3RlcmlzdGljcy5oCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvUG9zaXRpb25lZEdseXBocy5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmlu
Z01vZGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyNWU1M2MxYWZmYTEuLmMxMDBiZmEzNzdmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKQEAgLTEsNCArMSw0IEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTctMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIwMzAsNyArMjAzMCw2IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRp
bGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvQ29udGVudFR5cGVVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL0RlY29t
cG9zZWRHbHlwaHMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2Uu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3BwCkBAIC0yMTAyLDcgKzIx
MDEsNiBAQCBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1Bp
eGVsRm9ybWF0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcAot
cGxhdGZvcm0vZ3JhcGhpY3MvUG9zaXRpb25lZEdseXBocy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNz
L1JlZ2lvbi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTIzMTksNyArMjMxNyw2IEBAIHJlbmRlcmluZy9H
cmlkLmNwcAogcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAKIHJlbmRlcmluZy9H
cmlkTGF5b3V0RnVuY3Rpb25zLmNwcAogcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRo
bS5jcHAKLXJlbmRlcmluZy9HbHlwaERpc3BsYXlMaXN0Q2FjaGUuY3BwCiByZW5kZXJpbmcvSGln
aGxpZ2h0RGF0YS5jcHAKIHJlbmRlcmluZy9IaXRUZXN0TG9jYXRpb24uY3BwCiByZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAzMTQ2OTQ5NTY3YWIuLjlhZGVmODg4YWQwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTAxNCw5ICsxMDE0LDYgQEAKIAkJMzFGQjFBNUQxMjBBNUQwNjAwREMwMkEwIC8qIERldmljZU1v
dGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMUZCMUE1NTEyMEE1RDA2MDBEQzAyQTAgLyogRGV2aWNlTW90aW9uRXZlbnQuaCAqLzsgfTsK
IAkJMzFGQjFBNjYxMjBBNUQzRjAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRkIxQTY0MTIwQTVE
M0YwMERDMDJBMCAvKiBKU0RldmljZU1vdGlvbkV2ZW50LmggKi87IH07CiAJCTMxRkU2REZBMTUw
MDRDMkEwMDA0RUJDNCAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRUMxREFDMTRGRjI2RUEw
MEM5NDY2MiAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkzMjExMTFCNzI4M0FFNDQxMDA2
N0QzMDAgLyogVGV4dFJ1bkhhc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMyMTExMUI2MjgzQUU0NDAwMDY3RDMwMCAvKiBUZXh0UnVuSGFzaC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTMyQTcwRDUz
MjgzNjEzNEIwMDgwMDYwQyAvKiBEZWNvbXBvc2VkR2x5cGhzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMkE3MEQ1MjI4MzYxMzRBMDA4MDA2MEMgLyog
RGVjb21wb3NlZEdseXBocy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTMyQTcwRDU4MjgzNjEzOEUwMDgwMDYwQyAvKiBQb3NpdGlvbmVkR2x5cGhz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMkE3MEQ1
NjI4MzYxMzhEMDA4MDA2MEMgLyogUG9zaXRpb25lZEdseXBocy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMzNTAzQzlBMTAxNzlBNzQwMDNCNDdF
MSAvKiBOb3RpZmljYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMzNTAzQzk5MTAxNzlBNzQwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25D
bGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkzMzUwM0NBNDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzNTAzQ0EwMTAxNzlBRDcwMDNC
NDdFMSAvKiBKU05vdGlmaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTMzRDAyMTJEMTMxREIzN0IwMDQwOTFBOCAvKiBDb29raWVTdG9y
YWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTNG
MDFFQTEyNzBFMTBEMDBERkJBNzEgLyogQ29va2llU3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NDkwLDEyICs4NDg3LDYgQEAKIAkJ
MzFGQjFBNTYxMjBBNUQwNjAwREMwMkEwIC8qIERldmljZU1vdGlvbkV2ZW50LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBEZXZpY2VNb3Rpb25FdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTMxRkIxQTYzMTIwQTVEM0YwMERDMDJBMCAvKiBKU0RldmljZU1vdGlvbkV2
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGV2aWNlTW90
aW9uRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUZCMUE2NDEyMEE1
RDNGMDBEQzAyQTAgLyogSlNEZXZpY2VNb3Rpb25FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0RldmljZU1vdGlvbkV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTMyMTExMUI2MjgzQUU0NDAwMDY3RDMwMCAvKiBUZXh0UnVuSGFzaC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0UnVuSGFzaC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkzMkE3MEQ1MjI4MzYxMzRBMDA4MDA2MEMgLyogRGVjb21wb3NlZEds
eXBocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWNvbXBvc2VkR2x5cGhz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMyQTcwRDU0MjgzNjEzNUEwMDgwMDYw
QyAvKiBEZWNvbXBvc2VkR2x5cGhzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlY29tcG9zZWRH
bHlwaHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMkE3MEQ1NTI4MzYxMzhE
MDA4MDA2MEMgLyogUG9zaXRpb25lZEdseXBocy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQb3NpdGlvbmVkR2x5cGhzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMzJBNzBENTYyODM2MTM4RDAwODAwNjBDIC8qIFBvc2l0aW9uZWRHbHlwaHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25lZEdseXBocy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMkIwQjBDRjI4M0M3NDgzMDA2MjE3QzYgLyogR2x5
cGhEaXNwbGF5TGlzdENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdseXBoRGlzcGxheUxp
c3RDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMUZGNjdERTE5N0I1
NzM5M0M0NkE3RiAvKiBSZW5kZXJNYXRoTUxQYWRkZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MUGFkZGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMzMUZGNjdERTE5N0I1NzM5M0M0NkFBNyAvKiBSZW5kZXJNYXRoTUxTcGFjZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxTcGFjZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNGNzA0RTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90
aWZpY2F0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOb3RpZmljYXRpb24uaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkxODEsOCArMjkxNzIsNiBAQAogCQkJCTJE
MkZDMDU1MTQ2MENENkYwMDI2MzYzMyAvKiBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oICovLAog
CQkJCUE4Q0I0MTAyMEU4NUI4QTUwMDMyQzRGMCAvKiBEYXNoQXJyYXkuaCAqLywKIAkJCQk1NTUx
MzAwMDFFN0NDQ0NBMDBBNjlFMzggLyogRGVjb2RpbmdPcHRpb25zLmggKi8sCi0JCQkJMzJBNzBE
NTQyODM2MTM1QTAwODAwNjBDIC8qIERlY29tcG9zZWRHbHlwaHMuY3BwICovLAotCQkJCTMyQTcw
RDUyMjgzNjEzNEEwMDgwMDYwQyAvKiBEZWNvbXBvc2VkR2x5cGhzLmggKi8sCiAJCQkJQkMyQ0NB
MEYyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAgKi8sCiAJCQkJ
QkMyQ0NBMEUyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oICovLAog
CQkJCTQ5RkM3QTRGMTQ0NEFGNUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuY3Bw
ICovLApAQCAtMjkzOTEsOCArMjkzODAsNiBAQAogCQkJCUNEMUY5QUZEMjZGRDM4Q0IwMDYxN0VC
NiAvKiBQbGF0Zm9ybVZpZGVvTWF0cml4Q29lZmZpY2llbnRzLmggKi8sCiAJCQkJQ0REMDhBQzEy
NzdFNTU0RTAwRUEzNzU1IC8qIFBsYXRmb3JtVmlkZW9UcmFja0NvbmZpZ3VyYXRpb24uaCAqLywK
IAkJCQlDRDFGOUFGQzI2RkQzOENBMDA2MTdFQjYgLyogUGxhdGZvcm1WaWRlb1RyYW5zZmVyQ2hh
cmFjdGVyaXN0aWNzLmggKi8sCi0JCQkJMzJBNzBENTUyODM2MTM4RDAwODAwNjBDIC8qIFBvc2l0
aW9uZWRHbHlwaHMuY3BwICovLAotCQkJCTMyQTcwRDU2MjgzNjEzOEQwMDgwMDYwQyAvKiBQb3Np
dGlvbmVkR2x5cGhzLmggKi8sCiAJCQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lv
bi5jcHAgKi8sCiAJCQkJQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovLAog
CQkJCTcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8sCkBAIC0y
OTQxOCw3ICsyOTQwNSw2IEBACiAJCQkJNzIyQUYyRTMyN0UxQ0YxMTAwNzhEOTk3IC8qIFRleHRC
b3hJdGVyYXRvci5oICovLAogCQkJCTM3NkRDQ0UwMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVu
LmNwcCAqLywKIAkJCQlBODI0QjQ2NDBFMkVGMkVBMDA4MUE3QjcgLyogVGV4dFJ1bi5oICovLAot
CQkJCTMyMTExMUI2MjgzQUU0NDAwMDY3RDMwMCAvKiBUZXh0UnVuSGFzaC5oICovLAogCQkJCUNE
MUU3MzQ2MTY3QkM3OEUwMDlBODg1RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAgKi8s
CiAJCQkJQ0REMUU1MjUxNjdCQTU2NDAwQ0U4MjBCIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9u
LmggKi8sCiAJCQkJMUFGODlBNDExNTE4RkRFQTAwRTU0N0I1IC8qIFRpbGVkQmFja2luZy5oICov
LApAQCAtMzIyNjksNyArMzIyNTUsNiBAQAogCQkJCTlBNTI4RTgxMTdEN0Y1MkYwMEFBOTUxOCAv
KiBGbG9hdGluZ09iamVjdHMuY3BwICovLAogCQkJCTlBNTI4RTgyMTdEN0Y1MkYwMEFBOTUxOCAv
KiBGbG9hdGluZ09iamVjdHMuaCAqLywKIAkJCQk5MzVDNDc3NDA5QUM0RDhEMDBBNkFBQjQgLyog
R2FwUmVjdHMuaCAqLywKLQkJCQkzMkIwQjBDRjI4M0M3NDgzMDA2MjE3QzYgLyogR2x5cGhEaXNw
bGF5TGlzdENhY2hlLmNwcCAqLywKIAkJCQk1NTk3RkNDQjIwNzZDMDY4MDBEMzVCQjAgLyogR2x5
cGhEaXNwbGF5TGlzdENhY2hlLmggKi8sCiAJCQkJRTExMkY0NzAxRTNBODVGMjAwRDZDREZEIC8q
IEdyaWQuY3BwICovLAogCQkJCUUxMTJGNDZGMUUzQTg1RDgwMEQ2Q0RGRCAvKiBHcmlkLmggKi8s
CkBAIC0zNDU0Miw3ICszNDUyNyw2IEBACiAJCQkJNzE1QUQ3MjAyMDUwNTEzMjAwRDU5MkRDIC8q
IERlY2xhcmF0aXZlQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEMyMjhBMTExRDU3
MjJFMDBENUE3RDMgLyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTU1MTMwMDExRTdDQ0NDQjAwQTY5RTM4IC8qIERlY29kaW5nT3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMzJBNzBENTMyODM2MTM0QjAwODAwNjBDIC8qIERlY29tcG9zZWRHbHlw
aHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNjJBNDUxMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFBM0Q1OEYxMDFD
MTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkQwNkRGQTYxMzRBNERFRjAwNkY1RDdEIC8qIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzAyOCw3ICszNzAxMiw2IEBACiAJCQkJMzdGNTY3Q0Ux
NjUzNThGNDAwRERFOTJCIC8qIFBvcHVwT3BlbmluZ09ic2VydmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5M0YxOTlERTA4MjQ1RTU5MDAxRTlBQkMgLyogUG9zaXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTk3NDZBRjJDMTRGNERERTYwMDNFN0E3MCAvKiBQb3NpdGlvbkNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLywKLQkJCQkzMkE3MEQ1ODI4MzYxMzhFMDA4MDA2MEMgLyogUG9zaXRpb25lZEds
eXBocy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMzAxNEY0RERFNjAwM0U3QTcwIC8qIFBv
c2l0aW9uRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5MTlDMjQwQjdEMTg4
NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZB
RjMyMTRGNERERTYwMDNFN0E3MCAvKiBQb3NpdGlvbk9wdGlvbnMuaCBpbiBIZWFkZXJzICovLApA
QCAtMzgwODIsNyArMzgwNjUsNiBAQAogCQkJCUY0OEI3RDUzMjVDMzQxRTYwMDlFNzVERCAvKiBU
ZXh0UmVjb2duaXRpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OEY2MDgyNDVF
NTkwMDFFOUFCQyAvKiBUZXh0UmVzb3VyY2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODI0QjQ2NTBFMkVGMkVBMDA4MUE3QjcgLyogVGV4dFJ1bi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MzIxMTExQjcyODNBRTQ0MTAwNjdEMzAwIC8qIFRleHRSdW5IYXNoLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0NDhCMUI3QTBGM0EyRjlCMDA0N0E5RTIgLyogVGV4dFNpemVBZGp1c3RtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NzU5RTk0MDE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRDFGOUIyMTI3MDI1NjVFMDA2MTdFQjYgLyogVGV4dFRyYWNr
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGVlY2Jh
OTYwZmRlYS4uZWE1MDBmZDljYTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTkxLDcg
KzkxLDYgQEAKICNpbmNsdWRlICJGdWxsc2NyZWVuTWFuYWdlci5oIgogI2luY2x1ZGUgIkdDUmVh
Y2hhYmxlUmVmLmgiCiAjaW5jbHVkZSAiR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCi0j
aW5jbHVkZSAiR2x5cGhEaXNwbGF5TGlzdENhY2hlLmgiCiAjaW5jbHVkZSAiSFRNTEFsbENvbGxl
Y3Rpb24uaCIKICNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxB
dHRhY2htZW50RWxlbWVudC5oIgpAQCAtOTE3NywxMyArOTE3Niw2IEBAIGJvb2wgRG9jdW1lbnQ6
OmlzU2FtZVNpdGVGb3JDb29raWVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIHJldHVybiBk
b21haW4ubWF0Y2hlcyh1cmwpOwogfQogCi1HbHlwaERpc3BsYXlMaXN0Q2FjaGUmIERvY3VtZW50
OjpnbHlwaERpc3BsYXlMaXN0Q2FjaGUoKQotewotICAgIGlmICghbV9nbHlwaERpc3BsYXlMaXN0
Q2FjaGUpCi0gICAgICAgIG1fZ2x5cGhEaXNwbGF5TGlzdENhY2hlID0gbWFrZVVuaXF1ZTxHbHlw
aERpc3BsYXlMaXN0Q2FjaGU+KCk7Ci0gICAgcmV0dXJuICptX2dseXBoRGlzcGxheUxpc3RDYWNo
ZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjdW5kZWYgRE9DVU1FTlRfUkVMRUFT
RV9MT0cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMzdlNDA3MjA2MzFhLi42NDE5N2VkZGQwYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xNDUsNyArMTQ1LDYgQEAgY2xhc3MgRnJhbWU7CiBj
bGFzcyBGcmFtZVNlbGVjdGlvbjsKIGNsYXNzIEZyYW1lVmlldzsKIGNsYXNzIEZ1bGxzY3JlZW5N
YW5hZ2VyOwotY2xhc3MgR2x5cGhEaXNwbGF5TGlzdENhY2hlOwogY2xhc3MgR1BVQ2FudmFzQ29u
dGV4dDsKIGNsYXNzIEhUTUxBbGxDb2xsZWN0aW9uOwogY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVt
ZW50OwpAQCAtMTY4NCw4ICsxNjgzLDYgQEAgcHVibGljOgogCiAgICAgc3RkOjpvcHRpb25hbDxQ
QUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKCkgY29uc3QgZmluYWw7CiAKLSAgICBHbHlwaERpc3Bs
YXlMaXN0Q2FjaGUmIGdseXBoRGlzcGxheUxpc3RDYWNoZSgpOwotCiBwcm90ZWN0ZWQ6CiAgICAg
ZW51bSBDb25zdHJ1Y3Rpb25GbGFncyB7IFN5bnRoZXNpemVkID0gMSwgTm9uUmVuZGVyZWRQbGFj
ZWhvbGRlciA9IDEgPDwgMSB9OwogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50KEZyYW1lKiwg
Y29uc3QgU2V0dGluZ3MmLCBjb25zdCBVUkwmLCBEb2N1bWVudENsYXNzZXMgPSB7IH0sIHVuc2ln
bmVkIGNvbnN0cnVjdGlvbkZsYWdzID0gMCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIgPSB7IH0pOwpAQCAtMjI3OCw4ICsyMjc1LDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8RnVu
Y3Rpb248dm9pZCgpPj4gbV93aGVuSXNWaXNpYmxlSGFuZGxlcnM7CiAKICAgICBXZWFrSGFzaFNl
dDxFbGVtZW50PiBtX2VsZW1lbnRzV2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRl
czsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaERpc3BsYXlMaXN0Q2FjaGU+IG1fZ2x5cGhE
aXNwbGF5TGlzdENhY2hlOwogfTsKIAogRWxlbWVudCogZXZlbnRUYXJnZXRFbGVtZW50Rm9yRG9j
dW1lbnQoRG9jdW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25Jbmxp
bmVDb250ZW50LmNwcAppbmRleCBhMzg5ZjcyZmQ2YzguLmY2YzAwNWZmYWM2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3Jh
dGlvbklubGluZUNvbnRlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmNwcApAQCAtODcsNyAr
ODcsNyBAQCBJdGVyYXRvclJhbmdlPGNvbnN0IElubGluZURpc3BsYXk6OkJveCo+IElubGluZUNv
bnRlbnQ6OmJveGVzRm9yUmVjdChjb25zdCBMYXlvdQogSW5saW5lQ29udGVudDo6fklubGluZUNv
bnRlbnQoKQogewogICAgIGZvciAoYXV0byYgYm94IDogYm94ZXMpCi0gICAgICAgIFRleHRQYWlu
dGVyOjpyZW1vdmVHbHlwaERpc3BsYXlMaXN0KHJlbmRlcmVyRm9yTGF5b3V0Qm94KGJveC5sYXlv
dXRCb3goKSkuZG9jdW1lbnQoKSwgYm94KTsKKyAgICAgICAgVGV4dFBhaW50ZXI6OnJlbW92ZUds
eXBoRGlzcGxheUxpc3QoYm94KTsKIH0KIAogY29uc3QgUmVuZGVyT2JqZWN0JiBJbmxpbmVDb250
ZW50OjpyZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94KSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKaW5kZXggMmI5MDMxMWMzMTE5
Li5jMjMzZmJhODkzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVs
ZWFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcApAQCAt
NzQsOSArNzQsMTAgQEAgc3RhdGljIHZvaWQgcmVsZWFzZU5vbmNyaXRpY2FsTWVtb3J5KE1haW50
YWluTWVtb3J5Q2FjaGUgbWFpbnRhaW5NZW1vcnlDYWNoZSkKICAgICBGb250Q2FjaGU6OmZvckN1
cnJlbnRUaHJlYWQoKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKICAgICBGb250Q2FjaGU6OmZv
ckN1cnJlbnRUaHJlYWQoKS5jbGVhcldpZHRoQ2FjaGVzKCk7CiAKKyAgICBUZXh0UGFpbnRlcjo6
Y2xlYXJHbHlwaERpc3BsYXlMaXN0cygpOworCiAgICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERv
Y3VtZW50OjphbGxEb2N1bWVudHMoKSkgewogICAgICAgICBkb2N1bWVudC0+Y2xlYXJTZWxlY3Rv
clF1ZXJ5Q2FjaGUoKTsKLSAgICAgICAgZG9jdW1lbnQtPmdseXBoRGlzcGxheUxpc3RDYWNoZSgp
LmNsZWFyKCk7CiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKICAgICAg
ICAgaWYgKGF1dG8qIHJlbmRlclZpZXcgPSBkb2N1bWVudC0+cmVuZGVyVmlldygpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNz
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVk
R3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA5NmExYjdkMTBiN2UuLmFjZDA4NmYyMmEyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBo
aWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlm
dXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzg3LDEyICszODcsNiBAQCB2b2lkIEJpZnVyY2F0
ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5
cGhCdWZmZXJHbAogICAgIG1fc2Vjb25kYXJ5Q29udGV4dC5kcmF3R2x5cGhzKGZvbnQsIGdseXBo
cywgYWR2YW5jZXMsIG51bUdseXBocywgcG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKIH0KIAot
dm9pZCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3RGVjb21wb3NlZEdseXBocyhjb25z
dCBGb250JiBmb250LCBjb25zdCBEZWNvbXBvc2VkR2x5cGhzJiBkZWNvbXBvc2VkR2x5cGhzKQot
ewotICAgIG1fcHJpbWFyeUNvbnRleHQuZHJhd0RlY29tcG9zZWRHbHlwaHMoZm9udCwgZGVjb21w
b3NlZEdseXBocyk7Ci0gICAgbV9zZWNvbmRhcnlDb250ZXh0LmRyYXdEZWNvbXBvc2VkR2x5cGhz
KGZvbnQsIGRlY29tcG9zZWRHbHlwaHMpOwotfQotCiB2b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHQ6OmRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiBjYXNjYWRlLCBjb25z
dCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCB1bnNpZ25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykKIHsKICAg
ICBtX3ByaW1hcnlDb250ZXh0LmRyYXdFbXBoYXNpc01hcmtzKGNhc2NhZGUsIHJ1biwgbWFyaywg
cG9pbnQsIGZyb20sIHRvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaAppbmRleCA4ODI4NWFhMzFh
OTcuLmEzZjBkMTk4NmZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMjksNyArMTI5LDYg
QEAgcHVibGljOgogCiAgICAgRmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwg
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGZpbmFsOwogICAgIHZvaWQg
ZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEds
eXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYs
IEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKLSAgICB2b2lkIGRyYXdEZWNvbXBvc2VkR2x5cGhz
KGNvbnN0IEZvbnQmLCBjb25zdCBEZWNvbXBvc2VkR2x5cGhzJikgZmluYWw7CiAgICAgdm9pZCBk
cmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25z
dCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAs
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBmaW5hbDsKICAgICB2
b2lkIGRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25z
dCBGbG9hdFBvaW50JiwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEZv
bnRDYXNjYWRlOjpEb05vdFBhaW50SWZGb250Tm90UmVhZHkpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZWNvbXBvc2VkR2x5cGhzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RlY29tcG9zZWRHbHlwaHMuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDU3ZTQzZDJiODEuLjAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZWNvbXBvc2VkR2x5cGhzLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGVj
b21wb3NlZEdseXBocy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLURlY29tcG9zZWRHbHlw
aHM6On5EZWNvbXBvc2VkR2x5cGhzKCkgPSBkZWZhdWx0OwotCi1SZWY8RGVjb21wb3NlZEdseXBo
cz4gRGVjb21wb3NlZEdseXBoczo6Y3JlYXRlKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBo
QnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywg
dW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3Ro
aW5nTW9kZSBtb2RlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlY29tcG9zZWRHbHlw
aHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgY291bnQsIGxvY2FsQW5jaG9yLCBtb2RlLCByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKTsKLX0KLQotUmVmPERlY29tcG9zZWRHbHlwaHM+IERl
Y29tcG9zZWRHbHlwaHM6OmNyZWF0ZShQb3NpdGlvbmVkR2x5cGhzJiYgcG9zaXRpb25lZEdseXBo
cywgY29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGVjb21wb3NlZEdseXBocyhXVEZNb3ZlKHBvc2l0aW9uZWRHbHlwaHMpLCBib3VuZHMsIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikpOwotfQotCi1EZWNvbXBvc2VkR2x5cGhzOjpEZWNvbXBv
c2VkR2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBo
cywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgY291bnQsIGNv
bnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBtb2RlLCBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotICAg
IDogbV9wb3NpdGlvbmVkR2x5cGhzKHsgZ2x5cGhzLCBjb3VudCB9LCB7IGFkdmFuY2VzLCBjb3Vu
dCB9LCBsb2NhbEFuY2hvciwgbW9kZSkKLSAgICAsIG1fYm91bmRzKG1fcG9zaXRpb25lZEdseXBo
cy5jb21wdXRlQm91bmRzKGZvbnQpKQotICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotewotfQotCi1EZWNvbXBvc2VkR2x5cGhz
OjpEZWNvbXBvc2VkR2x5cGhzKFBvc2l0aW9uZWRHbHlwaHMmJiBwb3NpdGlvbmVkR2x5cGhzLCBj
b25zdCBGbG9hdFJlY3QmIGJvdW5kcywgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICA6IG1fcG9zaXRpb25lZEdseXBocyhXVEZNb3Zl
KHBvc2l0aW9uZWRHbHlwaHMpKQotICAgICwgbV9ib3VuZHMoYm91bmRzKQotICAgICwgbV9yZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotewot
ICAgIEFTU0VSVChtX3Bvc2l0aW9uZWRHbHlwaHMuZ2x5cGhzLnNpemUoKSA9PSBtX3Bvc2l0aW9u
ZWRHbHlwaHMuYWR2YW5jZXMuc2l6ZSgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb21wb3NlZEds
eXBocy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb21wb3NlZEdseXBo
cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTg4ZGZiMGY1MmQuLjAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZWNvbXBvc2VkR2x5
cGhzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKLSNpbmNsdWRlICJQb3NpdGlvbmVkR2x5cGhzLmgiCi0jaW5jbHVkZSAiUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBGb250OwotCi1jbGFzcyBEZWNvbXBvc2VkR2x5cGhzIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPERlY29tcG9zZWRHbHlwaHMsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1h
aW4+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGVjb21wb3NlZEdseXBocz4gewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIGNsYXNzIE9ic2VydmVyIHsKLSAgICBw
dWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgPSBkZWZhdWx0OwotICAgICAgICB2
aXJ0dWFsIHZvaWQgcmVsZWFzZURlY29tcG9zZWRHbHlwaHMoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSA9IDA7Ci0gICAgcHJvdGVjdGVkOgotICAgICAgICBPYnNlcnZlcigpID0gZGVmYXVs
dDsKLSAgICB9OwotCi0gICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIFJlZjxEZWNvbXBvc2VkR2x5
cGhzPiBjcmVhdGUoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBH
bHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9j
YWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
PSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpOwotICAgIHN0YXRpYyBX
RUJDT1JFX0VYUE9SVCBSZWY8RGVjb21wb3NlZEdseXBocz4gY3JlYXRlKFBvc2l0aW9uZWRHbHlw
aHMmJiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgfkRlY29tcG9zZWRHbHlwaHMoKTsKLQotICAgIGNvbnN0
IFBvc2l0aW9uZWRHbHlwaHMmIHBvc2l0aW9uZWRHbHlwaHMoKSBjb25zdCB7IHJldHVybiBtX3Bv
c2l0aW9uZWRHbHlwaHM7IH0KLSAgICBjb25zdCBGbG9hdFJlY3QmIGJvdW5kcygpIGNvbnN0IHsg
cmV0dXJuIG1fYm91bmRzOyB9Ci0KLSAgICB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVyJiBvYnNl
cnZlcikgeyBtX29ic2VydmVycy5hZGQoJm9ic2VydmVyKTsgfQotICAgIHZvaWQgcmVtb3ZlT2Jz
ZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXJzLnJlbW92ZSgmb2JzZXJ2ZXIp
OyB9Ci0KLSAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7
IH0KLQotcHJpdmF0ZToKLSAgICBEZWNvbXBvc2VkR2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBH
bHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291
bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSwgUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICBEZWNvbXBvc2VkR2x5cGhzKFBvc2l0aW9u
ZWRHbHlwaHMmJiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7Ci0KLSAgICBQb3NpdGlvbmVkR2x5cGhzIG1fcG9zaXRpb25lZEdseXBoczsKLSAg
ICBGbG9hdFJlY3QgbV9ib3VuZHM7Ci0gICAgSGFzaFNldDxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJz
OwotICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA1Nzg3MGMwMDM0MGEu
LjI0NjM4OTU0OWU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlLmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBM
YXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtv
aXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVl
bGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMDAs
NyArMjAwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlM
aXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXgKIHsKICAgICBBU1NFUlQoIWNvbnRl
eHQucGFpbnRpbmdEaXNhYmxlZCgpKTsKICAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZh
bHVlX29yKHJ1bi5sZW5ndGgoKSk7Ci0KKyAgICAKICAgICAvLyBGSVhNRTogVXNlIHRoZSBmYXN0
IGNvZGUgcGF0aCBvbmNlIGl0IGhhbmRsZXMgcGFydGlhbCBydW5zIHdpdGgga2VybmluZyBhbmQg
bGlnYXR1cmVzLiBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDAwNTAKICAgICBDb2RlUGF0aCBj
b2RlUGF0aFRvVXNlID0gY29kZVBhdGgocnVuKTsKICAgICBpZiAoY29kZVBhdGhUb1VzZSAhPSBD
b2RlUGF0aDo6Q29tcGxleCAmJiAoZW5hYmxlS2VybmluZygpIHx8IHJlcXVpcmVzU2hhcGluZygp
KSAmJiAoZnJvbSB8fCBkZXN0aW5hdGlvbiAhPSBydW4ubGVuZ3RoKCkpKQpAQCAtMjExLDE4ICsy
MTEsMTcgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0
PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXgKIAogICAgIGlmIChnbHlwaEJ1ZmZlci5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotCisgICAgCiAgICAgc3RkOjp1bmlx
dWVfcHRyPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdCA9IG1h
a2VVbmlxdWU8RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3Q+KCk7Ci0gICAgRGlzcGxh
eUxpc3Q6OlJlY29yZGVySW1wbCByZWNvcmRpbmdDb250ZXh0KCpkaXNwbGF5TGlzdCwgY29udGV4
dC5zdGF0ZSgpLmNsb25lRm9yUmVjb3JkaW5nKCksIHsgfSwgY29udGV4dC5nZXRDVE0oR3JhcGhp
Y3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKSwgRGlzcGxheUxpc3Q6OlJl
Y29yZGVyOjpEcmF3R2x5cGhzTW9kZTo6RGVjb25zdHJ1Y3RVc2luZ0RyYXdEZWNvbXBvc2VkR2x5
cGhzQ29tbWFuZHMpOwotCisgICAgRGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbCByZWNvcmRpbmdD
b250ZXh0KCpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLmNsb25lRm9yUmVjb3JkaW5nKCks
IHsgfSwgeyB9KTsKKyAgICAKICAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQgPSB0b0Zsb2F0UG9p
bnQoV2ViQ29yZTo6c2l6ZShnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSk7CiAgICAgZHJh
d0dseXBoQnVmZmVyKHJlY29yZGluZ0NvbnRleHQsIGdseXBoQnVmZmVyLCBzdGFydFBvaW50LCBj
dXN0b21Gb250Tm90UmVhZHlBY3Rpb24pOwotCisgICAgCiAgICAgZGlzcGxheUxpc3QtPnNocmlu
a1RvRml0KCk7Ci0KICAgICByZXR1cm4gZGlzcGxheUxpc3Q7CiB9Ci0KKyAgICAKIGZsb2F0IEZv
bnRDYXNjYWRlOjp3aWR0aE9mVGV4dFJhbmdlKGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQg
ZnJvbSwgdW5zaWduZWQgdG8sIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzLCBm
bG9hdCogb3V0V2lkdGhCZWZvcmVSYW5nZSwgZmxvYXQqIG91dFdpZHRoQWZ0ZXJSYW5nZSkgY29u
c3QKIHsKICAgICBBU1NFUlQoZnJvbSA8PSB0byk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAxZjAxM2MzY2M2NTcu
LmY2YjUwM2YwMTgxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCiAKICNpbmNsdWRlICJCaWRpUmVzb2x2ZXIuaCIKLSNpbmNsdWRlICJE
ZWNvbXBvc2VkR2x5cGhzLmgiCiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiRmlsdGVy
SW1hZ2UuaCIKICNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCkBAIC0xMzUsMTIgKzEzNCw2
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNv
bnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBoCiAgICAgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMo
KnRoaXMsIGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgcG9pbnQsIGZvbnRTbW9v
dGhpbmdNb2RlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdEZWNvbXBvc2VkR2x5
cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IERlY29tcG9zZWRHbHlwaHMmIGRlY29tcG9zZWRH
bHlwaHMpCi17Ci0gICAgYXV0byBwb3NpdGlvbmVkR2x5cGhzID0gZGVjb21wb3NlZEdseXBocy5w
b3NpdGlvbmVkR2x5cGhzKCk7Ci0gICAgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoKnRoaXMsIGZv
bnQsIHBvc2l0aW9uZWRHbHlwaHMuZ2x5cGhzLmRhdGEoKSwgcG9zaXRpb25lZEdseXBocy5hZHZh
bmNlcy5kYXRhKCksIHBvc2l0aW9uZWRHbHlwaHMuZ2x5cGhzLnNpemUoKSwgcG9zaXRpb25lZEds
eXBocy5sb2NhbEFuY2hvciwgcG9zaXRpb25lZEdseXBocy5zbW9vdGhpbmdNb2RlKTsKLX0KLQog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRl
JiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiB0bykKIHsKICAgICBmb250LmRyYXdFbXBoYXNpc01hcmtzKCp0aGlzLCBydW4sIG1hcmssIHBv
aW50LCBmcm9tLCB0byk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDE4YzU5M2VmZjZjMi4uZjRjN2E4N2VjMWRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aApAQCAtNDUsNyArNDUsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBZmZpbmVU
cmFuc2Zvcm07Ci1jbGFzcyBEZWNvbXBvc2VkR2x5cGhzOwogY2xhc3MgRmlsdGVyOwogY2xhc3Mg
RmlsdGVyUmVzdWx0czsKIGNsYXNzIEZsb2F0Um91bmRlZFJlY3Q7CkBAIC0yODQsMTcgKzI4Mywx
NSBAQCBwdWJsaWM6CiAgICAgLy8gVGV4dAogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBG
bG9hdFNpemUgZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29u
c3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiB0byA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRy
YXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlw
aEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBG
b250U21vb3RoaW5nTW9kZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdF
bXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0
b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBU
ZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVh
ZHlBY3Rpb24gPSBGb250Q2FzY2FkZTo6RG9Ob3RQYWludElmRm9udE5vdFJlYWR5KTsKIAotICAg
IHZpcnR1YWwgdm9pZCBkcmF3R2x5cGhzQW5kQ2FjaGVSZXNvdXJjZXMoY29uc3QgRm9udCYgZm9u
dCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nTW9kZSkKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhd0dseXBoc0FuZENhY2hlRm9udChjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZl
ckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2ln
bmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2Rl
IGZvbnRTbW9vdGhpbmdNb2RlKQogICAgIHsKICAgICAgICAgZHJhd0dseXBocyhmb250LCBnbHlw
aHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7CiAgICAg
fQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9u
dCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1
bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdEZWNvbXBvc2VkR2x5cGhzKGNv
bnN0IEZvbnQmLCBjb25zdCBEZWNvbXBvc2VkR2x5cGhzJik7Ci0KICAgICBXRUJDT1JFX0VYUE9S
VCBGbG9hdFJlY3QgY29tcHV0ZVVuZGVybGluZUJvdW5kc0ZvclRleHQoY29uc3QgRmxvYXRSZWN0
JiwgYm9vbCBwcmludGluZyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TGluZUZvclRl
eHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmludGluZywgYm9vbCBkb3VibGVMaW5lcyA9IGZh
bHNlLCBTdHJva2VTdHlsZSA9IFNvbGlkU3Ryb2tlKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xp
bmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgdGhpY2tuZXNzLCBjb25zdCBEYXNo
QXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywgYm9vbCBkb3VibGVMaW5lcyA9IGZhbHNlLCBT
dHJva2VTdHlsZSA9IFNvbGlkU3Ryb2tlKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggYTg5ZDc2NzNl
YzRjLi5jYmZlNzVkNjMyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTExLDcgKzExMSw2IEBAIHByaXZhdGU6
CiAgICAgRmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+ID0gc3RkOjpudWxsb3B0KSBmaW5hbCB7IHJldHVybiB7IH07IH0KIAogICAgIHZvaWQgZHJh
d0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBo
QnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGlu
Z01vZGUpIGZpbmFsIHsgfQotICAgIHZvaWQgZHJhd0RlY29tcG9zZWRHbHlwaHMoY29uc3QgRm9u
dCYsIGNvbnN0IERlY29tcG9zZWRHbHlwaHMmKSBmaW5hbCB7IH0KIAogICAgIHZvaWQgZHJhd0Vt
cGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRv
bVN0cmluZyYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCA9IDAsIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+ID0gc3RkOjpudWxsb3B0KSBmaW5hbCB7IH0KICAgICB2b2lkIGRyYXdCaWRpVGV4
dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50Jiwg
Rm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNjYWRlOjpEb05v
dFBhaW50SWZGb250Tm90UmVhZHkpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUG9zaXRpb25lZEdseXBocy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Qb3NpdGlvbmVkR2x5cGhzLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMTkxYmJhOTI5OWQ0Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUG9zaXRpb25lZEdseXBocy5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBvc2l0aW9uZWRHbHlwaHMu
aCIKLQotI2luY2x1ZGUgIkZvbnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1GbG9hdFJl
Y3QgUG9zaXRpb25lZEdseXBoczo6Y29tcHV0ZUJvdW5kcyhjb25zdCBGb250JiBmb250KSBjb25z
dAotewotICAgIEZsb2F0UmVjdCBib3VuZHM7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGRv
ZXNuJ3QgYWN0dWFsbHkgdGFrZSB0aGUgZXh0ZW50cyBvZiB0aGUgZ2x5cGhzIGludG8gY29uc2lk
ZXJhdGlvbi4gSXQgYXNzdW1lcyB0aGF0Ci0gICAgLy8gdGhlIGdseXBoIGxpZXMgZW50aXJlbHkg
d2l0aGluIGl0cyBbKGFzY2VudCArIGRlc2NlbnQpLCBhZHZhbmNlXSByZWN0LgotICAgIGZsb2F0
IGFzY2VudCA9IGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpOwotICAgIGZsb2F0IGRl
c2NlbnQgPSBmb250LmZvbnRNZXRyaWNzKCkuZmxvYXREZXNjZW50KCk7Ci0gICAgRmxvYXRQb2lu
dCBjdXJyZW50ID0gbG9jYWxBbmNob3I7Ci0gICAgZm9yIChhdXRvJiBhZHZhbmNlIDogYWR2YW5j
ZXMpIHsKLSAgICAgICAgRmxvYXRSZWN0IGdseXBoUmVjdCA9IEZsb2F0UmVjdChjdXJyZW50Lngo
KSwgY3VycmVudC55KCkgLSBhc2NlbnQsIHdpZHRoKGFkdmFuY2UpLCBhc2NlbnQgKyBkZXNjZW50
KTsKLSAgICAgICAgYm91bmRzLnVuaXRlKGdseXBoUmVjdCk7Ci0KLSAgICAgICAgY3VycmVudC5t
b3ZlKHdpZHRoKGFkdmFuY2UpLCBoZWlnaHQoYWR2YW5jZSkpOwotICAgIH0KLQotICAgIHJldHVy
biBib3VuZHM7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bvc2l0aW9uZWRHbHlwaHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bvc2l0aW9uZWRHbHlwaHMuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTk2NWU1ZDg3NDJmLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUG9zaXRpb25lZEdseXBocy5oCisrKyAvZGV2L251
bGwKQEAgLTEsOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiR2x5cGhCdWZmZXJNZW1iZXJzLmgi
Ci0jaW5jbHVkZSAiVGV4dEZsYWdzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
Rm9udDsKLQotc3RydWN0IFBvc2l0aW9uZWRHbHlwaHMgewotICAgIFBvc2l0aW9uZWRHbHlwaHMo
VmVjdG9yPEdseXBoQnVmZmVyR2x5cGg+JiYsIFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2U+JiYs
IGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSk7Ci0gICAgUG9zaXRpb25lZEds
eXBocyhjb25zdCBQb3NpdGlvbmVkR2x5cGhzJikgPSBkZWZhdWx0OwotICAgIFBvc2l0aW9uZWRH
bHlwaHMoUG9zaXRpb25lZEdseXBocyYmKSA9IGRlZmF1bHQ7Ci0gICAgUG9zaXRpb25lZEdseXBo
cyYgb3BlcmF0b3I9KGNvbnN0IFBvc2l0aW9uZWRHbHlwaHMmKSA9IGRlZmF1bHQ7Ci0KLSAgICBW
ZWN0b3I8R2x5cGhCdWZmZXJHbHlwaD4gZ2x5cGhzOwotICAgIFZlY3RvcjxHbHlwaEJ1ZmZlckFk
dmFuY2U+IGFkdmFuY2VzOwotICAgIEZsb2F0UG9pbnQgbG9jYWxBbmNob3I7Ci0gICAgRm9udFNt
b290aGluZ01vZGUgc21vb3RoaW5nTW9kZTsKLQotICAgIEZsb2F0UmVjdCBjb21wdXRlQm91bmRz
KGNvbnN0IEZvbnQmKSBjb25zdDsKLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxQb3NpdGlvbmVkR2x5cGhzPiBkZWNvZGUoRGVjb2RlciYpOwotfTsK
LQotaW5saW5lIFBvc2l0aW9uZWRHbHlwaHM6OlBvc2l0aW9uZWRHbHlwaHMoVmVjdG9yPEdseXBo
QnVmZmVyR2x5cGg+JiYgZ2x5cGhzLCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlPiYmIGFkdmFu
Y2VzLCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUgc21v
b3RoaW5nTW9kZSkKLSAgICA6IGdseXBocyhXVEZNb3ZlKGdseXBocykpCi0gICAgLCBhZHZhbmNl
cyhXVEZNb3ZlKGFkdmFuY2VzKSkKLSAgICAsIGxvY2FsQW5jaG9yKGxvY2FsQW5jaG9yKQotICAg
ICwgc21vb3RoaW5nTW9kZShzbW9vdGhpbmdNb2RlKQotewotfQotCi10ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgotdm9pZCBQb3NpdGlvbmVkR2x5cGhzOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IGdseXBoczsKLSAgICBlbmNvZGVyIDw8IGFkdmFuY2Vz
OwotICAgIGVuY29kZXIgPDwgbG9jYWxBbmNob3I7Ci0gICAgZW5jb2RlciA8PCBzbW9vdGhpbmdN
b2RlOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotc3RkOjpvcHRpb25hbDxQb3NpdGlv
bmVkR2x5cGhzPiBQb3NpdGlvbmVkR2x5cGhzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsK
LSAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoPj4gZ2x5cGhzOwotICAg
IGRlY29kZXIgPj4gZ2x5cGhzOwotICAgIGlmICghZ2x5cGhzKQotICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotCi0gICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNl
Pj4gYWR2YW5jZXM7Ci0gICAgZGVjb2RlciA+PiBhZHZhbmNlczsKLSAgICBpZiAoIWFkdmFuY2Vz
KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgaWYgKGdseXBocy0+c2l6ZSgp
ICE9IGFkdmFuY2VzLT5zaXplKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAg
ICBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxvY2FsQW5jaG9yOwotICAgIGRlY29kZXIgPj4g
bG9jYWxBbmNob3I7Ci0gICAgaWYgKCFsb2NhbEFuY2hvcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLQotICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFNtb290aGluZ01vZGU+IHNtb290aGlu
Z01vZGU7Ci0gICAgZGVjb2RlciA+PiBzbW9vdGhpbmdNb2RlOwotICAgIGlmICghc21vb3RoaW5n
TW9kZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHJldHVybiB7IHsgV1RG
TW92ZSgqZ2x5cGhzKSwgV1RGTW92ZSgqYWR2YW5jZXMpLCAqbG9jYWxBbmNob3IsICpzbW9vdGhp
bmdNb2RlIH0gfTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmNwcAppbmRleCA3NmRiMGNlYTI1NGYuLmZmMmY1
YzMwM2ZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4
dFJ1bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0LCAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQwLDIwICs0MCw0IEBAIHN0cnVjdCBFeHBlY3RlZFRleHRSdW5TaXpl
IHsKIAogc3RhdGljX2Fzc2VydChzaXplb2YoVGV4dFJ1bikgPT0gc2l6ZW9mKEV4cGVjdGVkVGV4
dFJ1blNpemUpLCAiVGV4dFJ1biBzaG91bGQgYmUgc21hbGwiKTsKIAotVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVGV4dFJ1biYgdGV4dFJ1bikKLXsKLSAgICB0
cy5kdW1wUHJvcGVydHkoInRleHQiLCB0ZXh0UnVuLnRleHQoKSk7Ci0gICAgdHMuZHVtcFByb3Bl
cnR5KCJ0YWItc2l6ZSIsIHRleHRSdW4udGFiU2l6ZSgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHko
IngtcG9zIiwgdGV4dFJ1bi54UG9zKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiaG9yaXpvbnRh
bC1nbHlwaC1zdHJlYXRjaCIsIHRleHRSdW4uaG9yaXpvbnRhbEdseXBoU3RyZXRjaCgpKTsKLSAg
ICB0cy5kdW1wUHJvcGVydHkoImV4cGFuc2lvbiIsIHRleHRSdW4uZXhwYW5zaW9uKCkpOwotICAg
IHRzLmR1bXBQcm9wZXJ0eSgiZXhwYW5zaW9uLWJlaGF2aW9yIiwgdGV4dFJ1bi5leHBhbnNpb25C
ZWhhdmlvcigpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImFsbG93LXRhYnMiLCB0ZXh0UnVuLmFs
bG93VGFicygpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImRpcmVjdGlvbiIsIHRleHRSdW4uZGly
ZWN0aW9uKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGlyZWN0aW9uYWwtb3ZlcnJpZGUiLCB0
ZXh0UnVuLmRpcmVjdGlvbmFsT3ZlcnJpZGUoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjaGFy
YWN0ZXItc2Nhbi1mb3ItY29kZS1wYXRoIiwgdGV4dFJ1bi5jaGFyYWN0ZXJTY2FuRm9yQ29kZVBh
dGgoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJzcGFjaW5nLWRpc2FibGVkIiwgdGV4dFJ1bi5z
cGFjaW5nRGlzYWJsZWQoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKaW5kZXggMzMyNmQwMTE3ZjBhLi5kYTU2MmM0
YjI2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRS
dW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKQEAg
LTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2Rl
Lm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2Rl
Lm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9y
ZykKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsNyArMjEsOCBAQAogICoKICAqLwog
Ci0jcHJhZ21hIG9uY2UKKyNpZm5kZWYgVGV4dFJ1bl9oCisjZGVmaW5lIFRleHRSdW5faAogCiAj
aW5jbHVkZSAiVGFiU2l6ZS5oIgogI2luY2x1ZGUgIlRleHRGbGFncy5oIgpAQCAtNDEsNyArNDIs
NiBAQCBzdHJ1Y3QgR2x5cGhEYXRhOwogCiBjbGFzcyBUZXh0UnVuIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLSAgICBmcmllbmQgdm9pZCBhZGQoSGFzaGVyJiwgY29uc3QgVGV4dFJ1
biYpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFRleHRSdW4oY29uc3QgU3RyaW5nJiB0ZXh0LCBm
bG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9uID0gMCwgRXhwYW5zaW9uQmVoYXZpb3IgZXhw
YW5zaW9uQmVoYXZpb3IgPSBFeHBhbnNpb25CZWhhdmlvcjo6ZGVmYXVsdEJlaGF2aW9yKCksIFRl
eHREaXJlY3Rpb24gZGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSLCBib29sIGRpcmVjdGlv
bmFsT3ZlcnJpZGUgPSBmYWxzZSwgYm9vbCBjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGggPSB0cnVl
KQogICAgICAgICA6IG1fdGV4dCh0ZXh0KQpAQCAtNjQsNDMgKzY0LDYgQEAgcHVibGljOgogICAg
IHsKICAgICB9CiAKLSAgICBleHBsaWNpdCBUZXh0UnVuKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZh
bHVlVHlwZSkKLSAgICAgICAgOiBtX3RleHQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCi0g
ICAgICAgICwgbV90YWJTaXplKDApCi0gICAgICAgICwgbV94cG9zKDApCi0gICAgICAgICwgbV9o
b3Jpem9udGFsR2x5cGhTdHJldGNoKDApCi0gICAgICAgICwgbV9leHBhbnNpb24oMCkKLSAgICAg
ICAgLCBtX2V4cGFuc2lvbkJlaGF2aW9yKEV4cGFuc2lvbkJlaGF2aW9yOjpkZWZhdWx0QmVoYXZp
b3IoKSkKLSAgICAgICAgLCBtX2FsbG93VGFicygwKQotICAgICAgICAsIG1fZGlyZWN0aW9uKDAp
Ci0gICAgICAgICwgbV9kaXJlY3Rpb25hbE92ZXJyaWRlKDApCi0gICAgICAgICwgbV9jaGFyYWN0
ZXJTY2FuRm9yQ29kZVBhdGgoMCkKLSAgICAgICAgLCBtX2Rpc2FibGVTcGFjaW5nKDApCi0gICAg
ewotICAgIH0KLQotICAgIGV4cGxpY2l0IFRleHRSdW4oV1RGOjpIYXNoVGFibGVFbXB0eVZhbHVl
VHlwZSkKLSAgICAgICAgOiBtX3RleHQoKQotICAgICAgICAsIG1fdGFiU2l6ZSgwKQotICAgICAg
ICAsIG1feHBvcygwKQotICAgICAgICAsIG1faG9yaXpvbnRhbEdseXBoU3RyZXRjaCgwKQotICAg
ICAgICAsIG1fZXhwYW5zaW9uKDApCi0gICAgICAgICwgbV9leHBhbnNpb25CZWhhdmlvcihFeHBh
bnNpb25CZWhhdmlvcjo6ZGVmYXVsdEJlaGF2aW9yKCkpCi0gICAgICAgICwgbV9hbGxvd1RhYnMo
MCkKLSAgICAgICAgLCBtX2RpcmVjdGlvbigwKQotICAgICAgICAsIG1fZGlyZWN0aW9uYWxPdmVy
cmlkZSgwKQotICAgICAgICAsIG1fY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKDApCi0gICAgICAg
ICwgbV9kaXNhYmxlU3BhY2luZygwKQotICAgIHsKLSAgICB9Ci0KLSAgICBUZXh0UnVuKGNvbnN0
IFRleHRSdW4mKSA9IGRlZmF1bHQ7Ci0gICAgVGV4dFJ1biYgb3BlcmF0b3I9KGNvbnN0IFRleHRS
dW4mKSA9IGRlZmF1bHQ7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRSdW4mKSBjb25z
dDsKLQotICAgIGJvb2wgaXNIYXNoVGFibGVFbXB0eVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV90
ZXh0LmlzTnVsbCgpOyB9Ci0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4dC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Ci0KICAgICBUZXh0
UnVuIHN1YlJ1bih1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAog
ICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oKHN0YXJ0T2Zm
c2V0ICsgbGVuZ3RoKSA8PSBtX3RleHQubGVuZ3RoKCkpOwpAQCAtMTUyLDggKzExNSw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldENoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aChib29sIHNjYW4pIHsg
bV9jaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGggPSBzY2FuOyB9CiAgICAgU3RyaW5nVmlldyB0ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0OyB9CiAKLSAgICBUZXh0UnVuIGlzb2xhdGVkQ29weSgp
IGNvbnN0OwotCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3RleHQ7CiAKQEAgLTE4MSwxNCArMTQy
LDYgQEAgaW5saW5lIHZvaWQgVGV4dFJ1bjo6c2V0VGFiU2l6ZShib29sIGFsbG93LCBjb25zdCBU
YWJTaXplJiBzaXplKQogICAgIG1fdGFiU2l6ZSA9IHNpemU7CiB9CiAKLWlubGluZSBUZXh0UnVu
IFRleHRSdW46Omlzb2xhdGVkQ29weSgpIGNvbnN0Ci17Ci0gICAgVGV4dFJ1biBjbG9uZSA9ICp0
aGlzOwotICAgIGlmIChtX3RleHQuaW1wbCgpICYmIG1fdGV4dC5pbXBsKCktPmlzRXh0ZXJuYWwo
KSkKLSAgICAgICAgY2xvbmUubV90ZXh0ID0gbV90ZXh0Lmlzb2xhdGVkQ29weSgpOwotICAgIHJl
dHVybiBjbG9uZTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29u
c3QgVGV4dFJ1biYpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW5IYXNoLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuSGFzaC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2MzNjYjE5ZDRhOGYuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuSGFzaC5oCisrKyAvZGV2L251bGwKQEAg
LTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiVGV4dFJ1bi5oIgotI2luY2x1ZGUgPHd0Zi9I
YXNoRnVuY3Rpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KLSNpbmNsdWRlIDx3
dGYvSGFzaGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotaW5saW5lIHZvaWQgYWRkKEhh
c2hlciYgaGFzaGVyLCBjb25zdCBFeHBhbnNpb25CZWhhdmlvciYgZXhwYW5zaW9uQmVoYXZpb3Ip
Ci17Ci0gICAgYWRkKGhhc2hlciwgZXhwYW5zaW9uQmVoYXZpb3IubGVmdCwgZXhwYW5zaW9uQmVo
YXZpb3IucmlnaHQpOwotfQotCi1pbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0
IFRleHRSdW4mIHRleHRSdW4pCi17Ci0gICAgYWRkKGhhc2hlciwgdGV4dFJ1bi5tX3RleHQsIHRl
eHRSdW4ubV90YWJTaXplLCB0ZXh0UnVuLm1feHBvcywgdGV4dFJ1bi5tX2hvcml6b250YWxHbHlw
aFN0cmV0Y2gsIHRleHRSdW4ubV9leHBhbnNpb24sIHRleHRSdW4ubV9leHBhbnNpb25CZWhhdmlv
ciwgdGV4dFJ1bi5tX2FsbG93VGFicywgdGV4dFJ1bi5tX2RpcmVjdGlvbiwgdGV4dFJ1bi5tX2Rp
cmVjdGlvbmFsT3ZlcnJpZGUsIHRleHRSdW4ubV9jaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgsIHRl
eHRSdW4ubV9kaXNhYmxlU3BhY2luZyk7Ci19Ci0KLWlubGluZSBib29sIFRleHRSdW46Om9wZXJh
dG9yPT0oY29uc3QgVGV4dFJ1biYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdGV4dCA9
PSBvdGhlci5tX3RleHQKLSAgICAgICAgJiYgbV90YWJTaXplID09IG90aGVyLm1fdGFiU2l6ZQot
ICAgICAgICAmJiBtX3hwb3MgPT0gb3RoZXIubV94cG9zCi0gICAgICAgICYmIG1faG9yaXpvbnRh
bEdseXBoU3RyZXRjaCA9PSBvdGhlci5tX2hvcml6b250YWxHbHlwaFN0cmV0Y2gKLSAgICAgICAg
JiYgbV9leHBhbnNpb24gPT0gb3RoZXIubV9leHBhbnNpb24KLSAgICAgICAgJiYgbV9leHBhbnNp
b25CZWhhdmlvciA9PSBvdGhlci5tX2V4cGFuc2lvbkJlaGF2aW9yCi0gICAgICAgICYmIG1fYWxs
b3dUYWJzID09IG90aGVyLm1fYWxsb3dUYWJzCi0gICAgICAgICYmIG1fZGlyZWN0aW9uID09IG90
aGVyLm1fZGlyZWN0aW9uCi0gICAgICAgICYmIG1fZGlyZWN0aW9uYWxPdmVycmlkZSA9PSBvdGhl
ci5tX2RpcmVjdGlvbmFsT3ZlcnJpZGUKLSAgICAgICAgJiYgbV9jaGFyYWN0ZXJTY2FuRm9yQ29k
ZVBhdGggPT0gb3RoZXIubV9jaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgKLSAgICAgICAgJiYgbV9k
aXNhYmxlU3BhY2luZyA9PSBvdGhlci5tX2Rpc2FibGVTcGFjaW5nOwotfQotCi1zdHJ1Y3QgVGV4
dFJ1bkhhc2ggewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFRleHRSdW4mIHRleHRS
dW4pIHsgcmV0dXJuIGNvbXB1dGVIYXNoKHRleHRSdW4pOyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1
YWwoY29uc3QgVGV4dFJ1biYgYSwgY29uc3QgVGV4dFJ1biYgYikgeyByZXR1cm4gYSA9PSBiOyB9
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVk
ID0gZmFsc2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYg
ewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpUZXh0UnVuPiA6IFdl
YkNvcmU6OlRleHRSdW5IYXNoIHsgfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxX
ZWJDb3JlOjpUZXh0UnVuPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlRleHRSdW4+IHsK
LSAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpUZXh0UnVuJiB2
YWx1ZSkgeyByZXR1cm4gdmFsdWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQotICAgIHN0
YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBXZWJDb3JlOjpUZXh0UnVuJiB2YWx1ZSkgeyBy
ZXR1cm4gdmFsdWUuaXNIYXNoVGFibGVFbXB0eVZhbHVlKCk7IH0KLSAgICBzdGF0aWMgdm9pZCBj
b25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6VGV4dFJ1biYgc2xvdCkgeyBuZXcgKE5vdE51
bGwsICZzbG90KSBXZWJDb3JlOjpUZXh0UnVuKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsg
fQotICAgIHN0YXRpYyBXZWJDb3JlOjpUZXh0UnVuIGVtcHR5VmFsdWUoKSB7IHJldHVybiBXZWJD
b3JlOjpUZXh0UnVuKFdURjo6SGFzaFRhYmxlRW1wdHlWYWx1ZSk7IH0KLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGVkZDJiMTVmNjQw
Ny4uMjYyZjBkNjAyYjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIyIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9r
ZXIuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3
ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCkBAIC0zNyw3ICsz
Nyw2IEBACiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJDYWlyb09w
ZXJhdGlvbnMuaCIKLSNpbmNsdWRlICJEZWNvbXBvc2VkR2x5cGhzLmgiCiAjaW5jbHVkZSAiRmxv
YXRSZWN0LmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkdyYWRp
ZW50LmgiCkBAIC00MzgsMTIgKzQzNyw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRy
YXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCoKICAgICAg
ICAgZm9udFNtb290aGluZyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdE
ZWNvbXBvc2VkR2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IERlY29tcG9zZWRHbHlwaHMm
IGRlY29tcG9zZWRHbHlwaHMpCi17Ci0gICAgYXV0byBwb3NpdGlvbmVkR2x5cGhzID0gZGVjb21w
b3NlZEdseXBocy5wb3NpdGlvbmVkR2x5cGhzKCk7Ci0gICAgcmV0dXJuIGRyYXdHbHlwaHMoZm9u
dCwgcG9zaXRpb25lZEdseXBocy5nbHlwaHMuZGF0YSgpLCBwb3NpdGlvbmVkR2x5cGhzLmFkdmFu
Y2VzLmRhdGEoKSwgcG9zaXRpb25lZEdseXBocy5nbHlwaHMuc2l6ZSgpLCBwb3NpdGlvbmVkR2x5
cGhzLmxvY2FsQW5jaG9yLCBwb3NpdGlvbmVkR2x5cGhzLnNtb290aGluZ01vZGUpOwotfQotCiBj
YWlyb190KiBHcmFwaGljc0NvbnRleHRDYWlybzo6Y3IoKSBjb25zdAogewogICAgIHJldHVybiBt
X2NyLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmgKaW5kZXggYmI0ODVjMDhhZWUxLi43
MzIxNDcwZmM0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaApAQCAtMSw3ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KICAqIENv
cHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLgotICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTcxLDcgKzcwLDYgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0IEZs
b2F0UmVjdCYpIGZpbmFsOwogCiAgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25z
dCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsOwot
ICAgIHZvaWQgZHJhd0RlY29tcG9zZWRHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IERlY29tcG9z
ZWRHbHlwaHMmKSBmaW5hbDsKIAogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKICAgICB2b2lkIGRyYXdQYXR0ZXJu
KE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmlu
ZGV4IDQwYmI2NmE2ZThjYy4uMjZhNzUxNWY5Y2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0ds
eXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBAIC04MiwxMiArODIsNyBAQCBVbmlxdWVSZWY8R3Jh
cGhpY3NDb250ZXh0PiBEcmF3R2x5cGhzUmVjb3JkZXI6OmNyZWF0ZUludGVybmFsQ29udGV4dCgp
CiAgICAgQ0dDb250ZXh0RGVsZWdhdGVTZXRDYWxsYmFjayhjb250ZXh0RGVsZWdhdGUuZ2V0KCks
IGRlRW5kTGF5ZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0dDb250ZXh0RGVsZWdhdGVDYWxsYmFjaz4o
JmVuZExheWVyKSk7CiAgICAgQ0dDb250ZXh0RGVsZWdhdGVTZXRDYWxsYmFjayhjb250ZXh0RGVs
ZWdhdGUuZ2V0KCksIGRlRHJhd0dseXBocywgcmVpbnRlcnByZXRfY2FzdDxDR0NvbnRleHREZWxl
Z2F0ZUNhbGxiYWNrPigmV2ViQ29yZTo6ZHJhd0dseXBocykpOwogICAgIENHQ29udGV4dERlbGVn
YXRlU2V0Q2FsbGJhY2soY29udGV4dERlbGVnYXRlLmdldCgpLCBkZURyYXdJbWFnZSwgcmVpbnRl
cnByZXRfY2FzdDxDR0NvbnRleHREZWxlZ2F0ZUNhbGxiYWNrPigmZHJhd0ltYWdlKSk7Ci0jaWYg
SEFWRShDT1JFX1RFWFRfRklYX0ZPUl9SQURBUl85MzkyNTYyMCkKLSAgICBhdXRvIGNvbnRleHRU
eXBlID0ga0NHQ29udGV4dFR5cGVVbmtub3duOwotI2Vsc2UKLSAgICBhdXRvIGNvbnRleHRUeXBl
ID0ga0NHQ29udGV4dFR5cGVXaW5kb3c7Ci0jZW5kaWYKLSAgICBhdXRvIGNvbnRleHQgPSBhZG9w
dENGKENHQ29udGV4dENyZWF0ZVdpdGhEZWxlZ2F0ZShjb250ZXh0RGVsZWdhdGUuZ2V0KCksIGNv
bnRleHRUeXBlLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRD
RihDR0NvbnRleHRDcmVhdGVXaXRoRGVsZWdhdGUoY29udGV4dERlbGVnYXRlLmdldCgpLCBrQ0dD
b250ZXh0VHlwZVVua25vd24sIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICByZXR1cm4gbWFrZVVu
aXF1ZVJlZjxHcmFwaGljc0NvbnRleHRDRz4oY29udGV4dC5nZXQoKSk7CiB9CiAKQEAgLTE5Niwx
MSArMTkxLDcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUNUTShjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGN0bSkKIHsKICAgICBpZiAobV9vd25lci5nZXRDVE0oKSA9PSBjdG0pCiAg
ICAgICAgIHJldHVybjsKLSAgICAvLyBJbnN0ZWFkIG9mIHJlY29yZGluZyBhIFNldENUTSBjb21t
YW5kLCB3ZSBjb21wdXRlIHRoZSB0cmFuc2Zvcm0gbmVlZGVkCi0gICAgLy8gdG8gY2hhbmdlIHRo
ZSBjdXJyZW50IENUTSB0byBgY3RtYC4gVGhpcyBhbGxvd3MgdGhlIHJlY29yZGVkIGNvbWFtbmRz
Ci0gICAgLy8gdG8gYmUgcmUtdXNlZCBieSBlbGVtZW50cyBkcmF3aW5nIHRoZSBzYW1lIHRleHQg
aW4gZGlmZmVyZW50IGxvY2F0aW9ucy4KLSAgICBpZiAoYXV0byBpbnZlcnNlT2ZDdXJyZW50Q1RN
ID0gbV9vd25lci5nZXRDVE0oKS5pbnZlcnNlKCkpCi0gICAgICAgIG1fb3duZXIuY29uY2F0Q1RN
KCppbnZlcnNlT2ZDdXJyZW50Q1RNICogY3RtKTsKKyAgICBtX293bmVyLnNldENUTShjdG0pOwog
fQogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU2hhZG93KGNvbnN0IERyb3BTaGFk
b3cmIGRyb3BTaGFkb3csIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKQpAQCAtMzEyLDcgKzMwMyw3IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpyZWNv
cmREcmF3R2x5cGhzKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmIGdzdGF0CiAgICAg
ICAgIGluaXRpYWxQZW5Qb3NpdGlvbi5tb3ZlKDAsIC1hc2NlbnREZWx0YSk7CiAgICAgfQogCi0g
ICAgbV9vd25lci5kcmF3R2x5cGhzQW5kQ2FjaGVSZXNvdXJjZXMoZm9udCwgZ2x5cGhzLCBjb21w
dXRlQWR2YW5jZXNGcm9tUG9zaXRpb25zKHBvc2l0aW9ucywgY291bnQsIHRleHRNYXRyaXgpLmRh
dGEoKSwgY291bnQsIGluaXRpYWxQZW5Qb3NpdGlvbiwgbV9zbW9vdGhpbmdNb2RlKTsKKyAgICBt
X293bmVyLmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoZm9udCwgZ2x5cGhzLCBjb21wdXRlQWR2YW5j
ZXNGcm9tUG9zaXRpb25zKHBvc2l0aW9ucywgY291bnQsIHRleHRNYXRyaXgpLmRhdGEoKSwgY291
bnQsIGluaXRpYWxQZW5Qb3NpdGlvbiwgbV9zbW9vdGhpbmdNb2RlKTsKIAogICAgIG1fb3duZXIu
Y29uY2F0Q1RNKGludmVyc2VDVE1GaXh1cCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApp
bmRleCBiMjU5MzVmMTdlMDkuLmE0OTk3YzY1ZDZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
Y3BwCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBDU3RyaW5nIERp
c3BsYXlMaXN0OjpkZXNjcmlwdGlvbigpIGNvbnN0CiB7CiAgICAgVGV4dFN0cmVhbSB0czsKLSAg
ICBkdW1wKHRzKTsKKyAgICB0cyA8PCAqdGhpczsKICAgICByZXR1cm4gdHMucmVsZWFzZSgpLnV0
ZjgoKTsKIH0KIApAQCAtMjQ4LDggKzI0OCw2IEBAIHZvaWQgRGlzcGxheUxpc3Q6OmFwcGVuZChJ
dGVtSGFuZGxlIGl0ZW0pCiAgICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0ZpbHRlcmVkSW1hZ2VC
dWZmZXI+KGl0ZW0uZ2V0PERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyPigpKTsKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3R2x5cGhzOgogICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdHbHlwaHM+KGl0
ZW0uZ2V0PERyYXdHbHlwaHM+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEZWNvbXBvc2Vk
R2x5cGhzOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdEZWNvbXBvc2VkR2x5cGhzPihpdGVt
LmdldDxEcmF3RGVjb21wb3NlZEdseXBocz4oKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0lt
YWdlQnVmZmVyOgogICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdJbWFnZUJ1ZmZlcj4oaXRlbS5n
ZXQ8RHJhd0ltYWdlQnVmZmVyPigpKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1h
Z2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDg0ZTFjZmFmYjlmZS4uOWEyY2YwZTY1MzQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJEZWNvbXBvc2VkR2x5cGhzLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtVHlwZS5oIgogI2luY2x1
ZGUgIkRpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmgiCkBAIC0xMTksMTEgKzExOCw2IEBAIHByaXZh
dGU6CiAgICAgICAgIG1fcmVzb3VyY2VIZWFwLmFkZChmb250LnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpLCBSZWYgeyBmb250IH0pOwogICAgIH0KIAotICAgIHZvaWQgY2FjaGVEZWNvbXBv
c2VkR2x5cGhzKFdlYkNvcmU6OkRlY29tcG9zZWRHbHlwaHMmIGRlY29tcG9zZWRHbHlwaHMpCi0g
ICAgewotICAgICAgICBtX3Jlc291cmNlSGVhcC5hZGQoZGVjb21wb3NlZEdseXBocy5yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgUmVmIHsgZGVjb21wb3NlZEdseXBocyB9KTsKLSAgICB9
Ci0KICAgICBzdGF0aWMgYm9vbCBzaG91bGREdW1wRm9yRmxhZ3MoT3B0aW9uU2V0PEFzVGV4dEZs
YWc+LCBJdGVtSGFuZGxlKTsKIAogICAgIExvY2FsUmVzb3VyY2VIZWFwIG1fcmVzb3VyY2VIZWFw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA3NDM3
OGY4NTA3NjcuLmE2MzBiMDI1MDY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAKQEAgLTExNSw5ICsxMTUsNiBAQCB2b2lkIEl0ZW1IYW5kbGU6OmFwcGx5
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhz
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdEZWNvbXBvc2VkR2x5cGhzOgotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1
ZmZlcjoKICAgICAgICAgZ2V0PERyYXdJbWFnZUJ1ZmZlcj4oKS5hcHBseShjb250ZXh0KTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjY0LDkgKzI2MSw2IEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJv
eSgpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKICAgICAgICAgZ2V0PERyYXdHbHlw
aHM+KCkufkRyYXdHbHlwaHMoKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdEZWNvbXBvc2VkR2x5cGhzOgotICAgICAgICBnZXQ8RHJhd0RlY29tcG9zZWRHbHlwaHM+
KCkufkRyYXdEZWNvbXBvc2VkR2x5cGhzKCk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6CiAgICAgICAgIGdldDxEcmF3TGluZXNGb3JUZXh0Pigp
Ln5EcmF3TGluZXNGb3JUZXh0KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ4OSw4ICs0ODMsNiBA
QCBib29sIEl0ZW1IYW5kbGU6OnNhZmVDb3B5KEl0ZW1UeXBlIGl0ZW1UeXBlLCBJdGVtSGFuZGxl
IGRlc3RpbmF0aW9uKSBjb25zdAogICAgICAgICByZXR1cm4gY29weUludG88RHJhd0ZvY3VzUmlu
Z1JlY3RzPihpdGVtT2Zmc2V0LCAqdGhpcyk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBo
czoKICAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdHbHlwaHM+KGl0ZW1PZmZzZXQsICp0aGlz
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RGVjb21wb3NlZEdseXBoczoKLSAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPERyYXdEZWNvbXBvc2VkR2x5cGhzPihpdGVtT2Zmc2V0LCAqdGhpcyk7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgogICAgICAgICByZXR1cm4gY29weUlu
dG88RHJhd0ltYWdlQnVmZmVyPihpdGVtT2Zmc2V0LCAqdGhpcyk7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd0xpbmVzRm9yVGV4dDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBl
LmNwcAppbmRleCBlMmU2MGRmMGZjYjYuLjliMzYxYmEwZTc1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcApAQCAtODAsOCArODAsNiBAQCBzdGF0aWMgc2l6ZV90
IHNpemVPZkl0ZW1JbkJ5dGVzKEl0ZW1UeXBlIHR5cGUpCiAgICAgICAgIHJldHVybiBzaXplb2Yo
RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6
CiAgICAgICAgIHJldHVybiBzaXplb2YoRHJhd0dseXBocyk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0RlY29tcG9zZWRHbHlwaHM6Ci0gICAgICAgIHJldHVybiBzaXplb2YoRHJhd0RlY29tcG9z
ZWRHbHlwaHMpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKICAgICAgICAg
cmV0dXJuIHNpemVvZihEcmF3SW1hZ2VCdWZmZXIpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdO
YXRpdmVJbWFnZToKQEAgLTIxMiw3ICsyMTAsNiBAQCBib29sIGlzRHJhd2luZ0l0ZW0oSXRlbVR5
cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ds
eXBoczoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RGVjb21wb3NlZEdseXBoczoKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKQEAgLTMxNCw3ICszMTEsNiBA
QCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0RlY29tcG9zZWRHbHlwaHM6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0lt
YWdlQnVmZmVyOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlw
ZS5oCmluZGV4IDk0MmM2ZTdmMzdjNC4uMzYxNGEzNzVmNThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlw
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmgKQEAgLTU3LDcgKzU3LDYgQEAgZW51bSBjbGFzcyBJdGVtVHlw
ZSA6IHVpbnQ4X3QgewogICAgIENsaXBQYXRoLAogICAgIERyYXdGaWx0ZXJlZEltYWdlQnVmZmVy
LAogICAgIERyYXdHbHlwaHMsCi0gICAgRHJhd0RlY29tcG9zZWRHbHlwaHMsCiAgICAgRHJhd0lt
YWdlQnVmZmVyLAogICAgIERyYXdOYXRpdmVJbWFnZSwKICAgICBEcmF3U3lzdGVtSW1hZ2UsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggYzg5NjYwMzZhMzQ5Li42YjJm
ZjAwNGRlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTI2LDcg
KzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1z
LmgiCiAKLSNpbmNsdWRlICJEZWNvbXBvc2VkR2x5cGhzLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxp
c3RSZXBsYXllci5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRl
LmgiCkBAIC0xNzcsMjggKzE3Niw1MCBAQCB2b2lkIERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyOjph
cHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdlQnVmZmVyKiBzb3VyYwogICAgIGNv
bnRleHQuZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIG1fc291cmNlSW1hZ2VS
ZWN0LCBtX2ZpbHRlciwgcmVzdWx0cyk7CiB9CiAKLURyYXdHbHlwaHM6OkRyYXdHbHlwaHMoUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZvbnRJZGVudGlmaWVyLCBQb3NpdGlvbmVkR2x5cGhz
JiYgcG9zaXRpb25lZEdseXBocywgY29uc3QgRmxvYXRSZWN0JiBib3VuZHMpCitEcmF3R2x5cGhz
OjpEcmF3R2x5cGhzKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmb250SWRlbnRpZmllciwg
VmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mJiBnbHlwaHMsIFZlY3RvcjxHbHlwaEJ1ZmZl
ckFkdmFuY2UsIDEyOD4mJiBhZHZhbmNlcywgY29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIGNvbnN0
IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2Rl
KQogICAgIDogbV9mb250SWRlbnRpZmllcihmb250SWRlbnRpZmllcikKLSAgICAsIG1fcG9zaXRp
b25lZEdseXBocyhXVEZNb3ZlKHBvc2l0aW9uZWRHbHlwaHMpKQorICAgICwgbV9nbHlwaHMoV1RG
TW92ZShnbHlwaHMpKQorICAgICwgbV9hZHZhbmNlcyhXVEZNb3ZlKGFkdmFuY2VzKSkKICAgICAs
IG1fYm91bmRzKGJvdW5kcykKKyAgICAsIG1fbG9jYWxBbmNob3IobG9jYWxBbmNob3IpCisgICAg
LCBtX3Ntb290aGluZ01vZGUoc21vb3RoaW5nTW9kZSkKIHsKIH0KIAogRHJhd0dseXBoczo6RHJh
d0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMs
IGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIGNvdW50LCBjb25z
dCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9k
ZSkKICAgICA6IG1fZm9udElkZW50aWZpZXIoZm9udC5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKSkKLSAgICAsIG1fcG9zaXRpb25lZEdseXBocyB7IHsgZ2x5cGhzLCBjb3VudCB9LCB7IGFk
dmFuY2VzLCBjb3VudCB9LCBsb2NhbEFuY2hvciwgc21vb3RoaW5nTW9kZSB9Ci0gICAgLCBtX2Jv
dW5kcyhtX3Bvc2l0aW9uZWRHbHlwaHMuY29tcHV0ZUJvdW5kcyhmb250KSkKKyAgICAsIG1fbG9j
YWxBbmNob3IobG9jYWxBbmNob3IpCisgICAgLCBtX3Ntb290aGluZ01vZGUoc21vb3RoaW5nTW9k
ZSkKIHsKKyAgICBtX2dseXBocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKKyAgICBt
X2FkdmFuY2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIG1fZ2x5cGhzLnVuY2hlY2tlZEFw
cGVuZChnbHlwaHNbaV0pOworICAgICAgICBtX2FkdmFuY2VzLnVuY2hlY2tlZEFwcGVuZChhZHZh
bmNlc1tpXSk7CisgICAgfQorICAgIGNvbXB1dGVCb3VuZHMoZm9udCk7CiB9CiAKIHZvaWQgRHJh
d0dseXBoczo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250
KSBjb25zdAogewotICAgIHJldHVybiBjb250ZXh0LmRyYXdHbHlwaHMoZm9udCwgbV9wb3NpdGlv
bmVkR2x5cGhzLmdseXBocy5kYXRhKCksIG1fcG9zaXRpb25lZEdseXBocy5hZHZhbmNlcy5kYXRh
KCksIG1fcG9zaXRpb25lZEdseXBocy5nbHlwaHMuc2l6ZSgpLCBhbmNob3JQb2ludCgpLCBtX3Bv
c2l0aW9uZWRHbHlwaHMuc21vb3RoaW5nTW9kZSk7CisgICAgY29udGV4dC5kcmF3R2x5cGhzKGZv
bnQsIG1fZ2x5cGhzLmRhdGEoKSwgbV9hZHZhbmNlcy5kYXRhKCksIG1fZ2x5cGhzLnNpemUoKSwg
YW5jaG9yUG9pbnQoKSwgbV9zbW9vdGhpbmdNb2RlKTsKIH0KIAotdm9pZCBEcmF3RGVjb21wb3Nl
ZEdseXBoczo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250
LCBjb25zdCBEZWNvbXBvc2VkR2x5cGhzJiBkZWNvbXBvc2VkR2x5cGhzKSBjb25zdAordm9pZCBE
cmF3R2x5cGhzOjpjb21wdXRlQm91bmRzKGNvbnN0IEZvbnQmIGZvbnQpCiB7Ci0gICAgcmV0dXJu
IGNvbnRleHQuZHJhd0RlY29tcG9zZWRHbHlwaHMoZm9udCwgZGVjb21wb3NlZEdseXBocyk7Cisg
ICAgLy8gRklYTUU6IFRoaXMgY29kZSBkb2Vzbid0IGFjdHVhbGx5IHRha2UgdGhlIGV4dGVudHMg
b2YgdGhlIGdseXBocyBpbnRvIGNvbnNpZGVyYXRpb24uIEl0IGFzc3VtZXMgdGhhdAorICAgIC8v
IHRoZSBnbHlwaCBsaWVzIGVudGlyZWx5IHdpdGhpbiBpdHMgWyhhc2NlbnQgKyBkZXNjZW50KSwg
YWR2YW5jZV0gcmVjdC4KKyAgICBmbG9hdCBhc2NlbnQgPSBmb250LmZvbnRNZXRyaWNzKCkuZmxv
YXRBc2NlbnQoKTsKKyAgICBmbG9hdCBkZXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0
RGVzY2VudCgpOworICAgIEZsb2F0UG9pbnQgY3VycmVudCA9IGxvY2FsQW5jaG9yKCk7CisgICAg
c2l6ZV90IG51bUdseXBocyA9IG1fZ2x5cGhzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bUdseXBoczsgKytpKSB7CisgICAgICAgIEdseXBoQnVmZmVyQWR2YW5jZSBhZHZh
bmNlID0gbV9hZHZhbmNlc1tpXTsKKyAgICAgICAgRmxvYXRSZWN0IGdseXBoUmVjdCA9IEZsb2F0
UmVjdChjdXJyZW50LngoKSwgY3VycmVudC55KCkgLSBhc2NlbnQsIHdpZHRoKGFkdmFuY2UpLCBh
c2NlbnQgKyBkZXNjZW50KTsKKyAgICAgICAgbV9ib3VuZHMudW5pdGUoZ2x5cGhSZWN0KTsKKwor
ICAgICAgICBjdXJyZW50Lm1vdmUod2lkdGgoYWR2YW5jZSksIGhlaWdodChhZHZhbmNlKSk7Cisg
ICAgfQogfQogCiBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIERyYXdJbWFnZUJ1ZmZlcjo6
YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3QKQEAgLTU5MSw3ICs2MTIsNyBAQCB2b2lkIEFw
cGx5RGV2aWNlU2NhbGVGYWN0b3I6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29u
c3QKIH0KIAogI2lmICFMT0dfRElTQUJMRUQKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIEl0ZW1UeXBlIHR5cGUpCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgSXRlbVR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpTYXZlOiB0cyA8PCAic2F2ZSI7IGJyZWFrOwpAQCAtNjE2LDcgKzYz
Nyw2IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1UeXBlIHR5
cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6IHRzIDw8ICJjbGlwLXBhdGgiOyBicmVh
azsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcjogdHMgPDwgImRy
YXctZmlsdGVyZWQtaW1hZ2UtYnVmZmVyIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0dseXBoczogdHMgPDwgImRyYXctZ2x5cGhzIjsgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0RlY29tcG9zZWRHbHlwaHM6IHRzIDw8ICJkcmF3LWRlY29tcG9zZWQtZ2x5cGhzIjsgYnJl
YWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOiB0cyA8PCAiZHJhdy1pbWFn
ZS1idWZmZXIiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6IHRz
IDw8ICJkcmF3LW5hdGl2ZS1pbWFnZSI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdT
eXN0ZW1JbWFnZTogdHMgPDwgImRyYXctc3lzdGVtLWltYWdlIjsgYnJlYWs7CkBAIC03NzYsMTQg
Kzc5Niw3IEBAIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdHbHlwaHMm
IGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKICAgICB0cy5kdW1wUHJvcGVydHkoImxvY2Fs
LWFuY2hvciIsIGl0ZW0ubG9jYWxBbmNob3IoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJhbmNo
b3ItcG9pbnQiLCBpdGVtLmFuY2hvclBvaW50KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgibGVu
Z3RoIiwgaXRlbS5nbHlwaHMoKS5zaXplKCkpOwotfQogCi12b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mIHRzLCBjb25zdCBEcmF3RGVjb21wb3NlZEdseXBocyYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4
dEZsYWc+IGZsYWdzKQotewotICAgIGlmIChmbGFncy5jb250YWlucyhBc1RleHRGbGFnOjpJbmNs
dWRlUmVzb3VyY2VJZGVudGlmaWVycykpIHsKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJmb250
LWlkZW50aWZpZXIiLCBpdGVtLmZvbnRJZGVudGlmaWVyKCkpOwotICAgICAgICB0cy5kdW1wUHJv
cGVydHkoImRyYXctZ2x5cGhzLWRhdGEtaWRlbnRpZmllciIsIGl0ZW0uZGVjb21wb3NlZEdseXBo
c0lkZW50aWZpZXIoKSk7Ci0gICAgfQogfQogCiB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRz
LCBjb25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPiBmbGFn
cykKQEAgLTEwNzQsOSArMTA4Nyw2IEBAIHZvaWQgZHVtcEl0ZW1IYW5kbGUoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IEl0ZW1IYW5kbGUmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnCiAgICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKICAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERy
YXdHbHlwaHM+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0RlY29tcG9zZWRHbHlwaHM6Ci0gICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxEcmF3
RGVjb21wb3NlZEdseXBocz4oKSwgZmxhZ3MpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CiAgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxE
cmF3SW1hZ2VCdWZmZXI+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaAppbmRleCAxNTBhZDkzZmZlOTguLjE2ZjI0ZmY2OWY3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAi
TWVkaWFQbGF5ZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgogI2luY2x1ZGUg
IlBpeGVsQnVmZmVyLmgiCi0jaW5jbHVkZSAiUG9zaXRpb25lZEdseXBocy5oIgogI2luY2x1ZGUg
IlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgIlN5c3RlbUltYWdlLmgiCkBAIC01ODQsMTUgKzU4MywxNSBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSB0cnVlOwogCiAgICAg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZvbnRJZGVudGlmaWVyKCkgeyByZXR1cm4gbV9m
b250SWRlbnRpZmllcjsgfQotICAgIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yKCkgY29u
c3QgeyByZXR1cm4gbV9wb3NpdGlvbmVkR2x5cGhzLmxvY2FsQW5jaG9yOyB9Ci0gICAgRmxvYXRQ
b2ludCBhbmNob3JQb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb25lZEdseXBocy5sb2Nh
bEFuY2hvcjsgfQotICAgIGNvbnN0IFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoPiYgZ2x5cGhzKCkg
Y29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbmVkR2x5cGhzLmdseXBoczsgfQorICAgIGNvbnN0IEZs
b2F0UG9pbnQmIGxvY2FsQW5jaG9yKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEFuY2hvcjsgfQor
ICAgIEZsb2F0UG9pbnQgYW5jaG9yUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsQW5jaG9y
OyB9CisgICAgY29uc3QgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDE2PiYgZ2x5cGhzKCkgY29u
c3QgeyByZXR1cm4gbV9nbHlwaHM7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxEcmF3R2x5cGhzPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgRHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJH
bHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBG
bG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpOwotICAgIFdFQkNPUkVf
RVhQT1JUIERyYXdHbHlwaHMoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBQb3NpdGlvbmVk
R2x5cGhzJiYsIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYXdHbHlw
aHMoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwg
MTI4PiYmLCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAxMjg+JiYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZv
bnQmKSBjb25zdDsKIApAQCAtNjAwLDE3ICs1OTksMjUgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dCB7IHJldHVybiBtX2JvdW5kczsgfQogCiBwcml2YXRlOgorICAgIHZvaWQgY29tcHV0ZUJvdW5k
cyhjb25zdCBGb250Jik7CisKICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9mb250
SWRlbnRpZmllcjsKLSAgICBQb3NpdGlvbmVkR2x5cGhzIG1fcG9zaXRpb25lZEdseXBoczsKKyAg
ICBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTY+IG1fZ2x5cGhzOworICAgIFZlY3RvcjxHbHlw
aEJ1ZmZlckFkdmFuY2UsIDE2PiBtX2FkdmFuY2VzOwogICAgIEZsb2F0UmVjdCBtX2JvdW5kczsK
KyAgICBGbG9hdFBvaW50IG1fbG9jYWxBbmNob3I7CisgICAgRm9udFNtb290aGluZ01vZGUgbV9z
bW9vdGhpbmdNb2RlOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgRHJhd0ds
eXBoczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBt
X2ZvbnRJZGVudGlmaWVyOwotICAgIGVuY29kZXIgPDwgbV9wb3NpdGlvbmVkR2x5cGhzOworICAg
IGVuY29kZXIgPDwgbV9nbHlwaHM7CisgICAgZW5jb2RlciA8PCBtX2FkdmFuY2VzOwogICAgIGVu
Y29kZXIgPDwgbV9ib3VuZHM7CisgICAgZW5jb2RlciA8PCBtX2xvY2FsQW5jaG9yOworICAgIGVu
Y29kZXIgPDwgbV9zbW9vdGhpbmdNb2RlOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpA
QCAtNjIxLDkgKzYyOCwxNyBAQCBzdGQ6Om9wdGlvbmFsPERyYXdHbHlwaHM+IERyYXdHbHlwaHM6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZm9udElkZW50aWZpZXIpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFBvc2l0aW9uZWRH
bHlwaHM+IHBvc2l0aW9uZWRHbHlwaHM7Ci0gICAgZGVjb2RlciA+PiBwb3NpdGlvbmVkR2x5cGhz
OwotICAgIGlmICghcG9zaXRpb25lZEdseXBocykKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxH
bHlwaEJ1ZmZlckdseXBoLCAxMjg+PiBnbHlwaHM7CisgICAgZGVjb2RlciA+PiBnbHlwaHM7Cisg
ICAgaWYgKCFnbHlwaHMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2UsIDEyOD4+IGFkdmFuY2VzOworICAg
IGRlY29kZXIgPj4gYWR2YW5jZXM7CisgICAgaWYgKCFhZHZhbmNlcykKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIGlmIChnbHlwaHMtPnNpemUoKSAhPSBhZHZhbmNlcy0+c2l6
ZSgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IGJvdW5kczsKQEAgLTYzMSwzNSArNjQ2LDE4IEBAIHN0ZDo6b3B0aW9uYWw8RHJh
d0dseXBocz4gRHJhd0dseXBoczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFi
b3VuZHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4geyB7ICpm
b250SWRlbnRpZmllciwgV1RGTW92ZSgqcG9zaXRpb25lZEdseXBocyksICpib3VuZHMgfSB9Owot
fQotCi1jbGFzcyBEcmF3RGVjb21wb3NlZEdseXBocyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpEcmF3RGVjb21wb3NlZEdseXBo
czsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gdHJ1ZTsKLSAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IHRydWU7Ci0KLSAgICBEcmF3RGVj
b21wb3NlZEdseXBocyhSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZm9udElkZW50aWZpZXIs
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZWNvbXBvc2VkR2x5cGhzSWRlbnRpZmllciwg
Y29uc3QgRmxvYXRSZWN0JiBib3VuZHMpCi0gICAgICAgIDogbV9mb250SWRlbnRpZmllcihmb250
SWRlbnRpZmllcikKLSAgICAgICAgLCBtX2RlY29tcG9zZWRHbHlwaHNJZGVudGlmaWVyKGRlY29t
cG9zZWRHbHlwaHNJZGVudGlmaWVyKQotICAgICAgICAsIG1fYm91bmRzKGJvdW5kcykKLSAgICB7
Ci0gICAgfQotCi0gICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZvbnRJZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9mb250SWRlbnRpZmllcjsgfQotICAgIFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBkZWNvbXBvc2VkR2x5cGhzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1fZGVjb21wb3NlZEdseXBoc0lkZW50aWZpZXI7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRm9udCYsIGNvbnN0IERlY29tcG9zZWRH
bHlwaHMmKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxvY2FsQW5jaG9y
OworICAgIGRlY29kZXIgPj4gbG9jYWxBbmNob3I7CisgICAgaWYgKCFsb2NhbEFuY2hvcikKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAgICBzdGQ6
Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3QgeyByZXR1cm4gbV9ib3VuZHM7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRTbW9vdGhp
bmdNb2RlPiBzbW9vdGhpbmdNb2RlOworICAgIGRlY29kZXIgPj4gc21vb3RoaW5nTW9kZTsKKyAg
ICBpZiAoIXNtb290aGluZ01vZGUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLXBy
aXZhdGU6Ci0gICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fZm9udElkZW50aWZpZXI7
Ci0gICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fZGVjb21wb3NlZEdseXBoc0lkZW50
aWZpZXI7Ci0gICAgRmxvYXRSZWN0IG1fYm91bmRzOwotfTsKKyAgICByZXR1cm4ge3sgKmZvbnRJ
ZGVudGlmaWVyLCBXVEZNb3ZlKCpnbHlwaHMpLCBXVEZNb3ZlKCphZHZhbmNlcyksICpib3VuZHMs
ICpsb2NhbEFuY2hvciwgKnNtb290aGluZ01vZGUgfX07Cit9CiAKIGNsYXNzIERyYXdJbWFnZUJ1
ZmZlciB7CiBwdWJsaWM6CkBAIC0xOTk0LDcgKzE5OTIsNiBAQCB1c2luZyBEaXNwbGF5TGlzdEl0
ZW0gPSBzdGQ6OnZhcmlhbnQKICAgICAsIERyYXdGb2N1c1JpbmdQYXRoCiAgICAgLCBEcmF3Rm9j
dXNSaW5nUmVjdHMKICAgICAsIERyYXdHbHlwaHMKLSAgICAsIERyYXdEZWNvbXBvc2VkR2x5cGhz
CiAgICAgLCBEcmF3SW1hZ2VCdWZmZXIKICAgICAsIERyYXdMaW5lCiAgICAgLCBEcmF3TGluZXNG
b3JUZXh0CkBAIC0yMDc1LDcgKzIwNzIsNiBAQCBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVt
KFRleHRTdHJlYW0mLCBjb25zdCBDbGlwT3V0VG9QYXRoJiwgT3B0aW9uU2V0PEFzVGV4dAogV0VC
Q09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgQ2xpcFBhdGgmLCBP
cHRpb25TZXQ8QXNUZXh0RmxhZz4pOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0
U3RyZWFtJiwgY29uc3QgRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXImLCBPcHRpb25TZXQ8QXNUZXh0
RmxhZz4pOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3Qg
RHJhd0dseXBocyYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7Ci1XRUJDT1JFX0VYUE9SVCB2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3RGVjb21wb3NlZEdseXBocyYsIE9wdGlv
blNldDxBc1RleHRGbGFnPik7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mLCBjb25zdCBEcmF3SW1hZ2VCdWZmZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOwogV0VC
Q09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd05hdGl2ZUlt
YWdlJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0
ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdTeXN0ZW1JbWFnZSYsIE9wdGlvblNldDxBc1RleHRG
bGFnPik7CkBAIC0yMTMwLDkgKzIxMjYsNiBAQCBpbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbUhhbmRsZSYgaXRlbUhhbmRsZSkKICAgICBkdW1w
SXRlbUhhbmRsZSh0cywgaXRlbUhhbmRsZSwgeyBBc1RleHRGbGFnOjpJbmNsdWRlUGxhdGZvcm1P
cGVyYXRpb25zLCBBc1RleHRGbGFnOjpJbmNsdWRlUmVzb3VyY2VJZGVudGlmaWVycyB9KTsKICAg
ICByZXR1cm4gdHM7CiB9Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIEl0
ZW1UeXBlKTsKLQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CkBAIC0yMTY1
LDcgKzIxNTgsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
Q2xpcE91dFRvUGF0aCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBQ
YXRoLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0dseXBocywKLSAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdEZWNvbXBvc2VkR2x5cGhzLAog
ICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyLAogICAg
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlLAogICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1N5c3RlbUltYWdlLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGZlMzg4YmU2NDk1Yi4uZWVkNDQ0
ZWUzYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC00
NiwxMCArNDYsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlz
dCB7CiAKLVJlY29yZGVyOjpSZWNvcmRlcihjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3Rh
dGUsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
aW5pdGlhbENUTSwgRHJhd0dseXBoc01vZGUgZHJhd0dseXBoc01vZGUpCitSZWNvcmRlcjo6UmVj
b3JkZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3Qm
IGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIERlY29uc3Ry
dWN0RHJhd0dseXBocyBkZWNvbnN0cnVjdERyYXdHbHlwaHMpCiAgICAgOiBHcmFwaGljc0NvbnRl
eHQoc3RhdGUpCiAgICAgLCBtX2luaXRpYWxTY2FsZShpbml0aWFsQ1RNLnhTY2FsZSgpKQotICAg
ICwgbV9kcmF3R2x5cGhzTW9kZShkcmF3R2x5cGhzTW9kZSkKKyAgICAsIG1fZGVjb25zdHJ1Y3RE
cmF3R2x5cGhzKGRlY29uc3RydWN0RHJhd0dseXBocykKIHsKICAgICBBU1NFUlQoIXN0YXRlLmNo
YW5nZXMoKSk7CiAgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RNLCBp
bml0aWFsQ1RNLm1hcFJlY3QoaW5pdGlhbENsaXApIH0pOwpAQCAtMTYxLDUxICsxNjEsMjMgQEAg
dm9pZCBSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIHNvdXJj
ZUltYWdlLCBjb25zdCBGbG9hdFJlY3QKICAgICByZWNvcmREcmF3RmlsdGVyZWRJbWFnZUJ1ZmZl
cihzb3VyY2VJbWFnZSwgc291cmNlSW1hZ2VSZWN0LCBmaWx0ZXIpOwogfQogCi1ib29sIFJlY29y
ZGVyOjpzaG91bGREZWNvbnN0cnVjdERyYXdHbHlwaHMoKSBjb25zdAotewotICAgIHN3aXRjaCAo
bV9kcmF3R2x5cGhzTW9kZSkgewotICAgIGNhc2UgRHJhd0dseXBoc01vZGU6Ok5vcm1hbDoKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgRHJhd0dseXBoc01vZGU6OkRlY29uc3RydWN0
VXNpbmdEcmF3R2x5cGhzQ29tbWFuZHM6Ci0gICAgY2FzZSBEcmF3R2x5cGhzTW9kZTo6RGVjb25z
dHJ1Y3RVc2luZ0RyYXdEZWNvbXBvc2VkR2x5cGhzQ29tbWFuZHM6Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KIHZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFu
Y2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZv
bnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7Ci0gICAgaWYgKHNob3VsZERlY29uc3Ry
dWN0RHJhd0dseXBocygpKSB7CisgICAgaWYgKG1fZGVjb25zdHJ1Y3REcmF3R2x5cGhzID09IERl
Y29uc3RydWN0RHJhd0dseXBoczo6WWVzKSB7CiAgICAgICAgIGlmICghbV9kcmF3R2x5cGhzUmVj
b3JkZXIpCiAgICAgICAgICAgICBtX2RyYXdHbHlwaHNSZWNvcmRlciA9IG1ha2VVbmlxdWU8RHJh
d0dseXBoc1JlY29yZGVyPigqdGhpcywgbV9pbml0aWFsU2NhbGUpOworCiAgICAgICAgIG1fZHJh
d0dseXBoc1JlY29yZGVyLT5kcmF3R2x5cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUds
eXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBkcmF3R2x5cGhzQW5kQ2FjaGVSZXNvdXJjZXMoZm9udCwgZ2x5cGhzLCBhZHZhbmNl
cywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKLX0KLQotdm9pZCBSZWNv
cmRlcjo6ZHJhd0RlY29tcG9zZWRHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgRGVjb21w
b3NlZEdseXBocyYgZGVjb21wb3NlZEdseXBocykKLXsKLSAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0
ZW1JZk5lY2Vzc2FyeSgpOwotICAgIHJlY29yZFJlc291cmNlVXNlKGNvbnN0X2Nhc3Q8Rm9udCY+
KGZvbnQpKTsKLSAgICByZWNvcmRSZXNvdXJjZVVzZShjb25zdF9jYXN0PERlY29tcG9zZWRHbHlw
aHMmPihkZWNvbXBvc2VkR2x5cGhzKSk7Ci0gICAgcmVjb3JkRHJhd0RlY29tcG9zZWRHbHlwaHMo
Zm9udCwgZGVjb21wb3NlZEdseXBocyk7CisgICAgZHJhd0dseXBoc0FuZENhY2hlRm9udChmb250
LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUp
OwogfQogCi12b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzQW5kQ2FjaGVSZXNvdXJjZXMoY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1
ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9p
bnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQordm9pZCBS
ZWNvcmRlcjo6ZHJhd0dseXBoc0FuZENhY2hlRm9udChjb25zdCBGb250JiBmb250LCBjb25zdCBH
bHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5j
ZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZv
bnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7CiAgICAgYXBwZW5kU3RhdGVDaGFuZ2VJ
dGVtSWZOZWNlc3NhcnkoKTsKICAgICByZWNvcmRSZXNvdXJjZVVzZShjb25zdF9jYXN0PEZvbnQm
Pihmb250KSk7Ci0KLSAgICBpZiAobV9kcmF3R2x5cGhzTW9kZSA9PSBEcmF3R2x5cGhzTW9kZTo6
RGVjb25zdHJ1Y3RVc2luZ0RyYXdEZWNvbXBvc2VkR2x5cGhzQ29tbWFuZHMpIHsKLSAgICAgICAg
YXV0byBkZWNvbXBvc2VkR2x5cGhzID0gRGVjb21wb3NlZEdseXBoczo6Y3JlYXRlKGZvbnQsIGds
eXBocywgYWR2YW5jZXMsIG51bUdseXBocywgbG9jYWxBbmNob3IsIHNtb290aGluZ01vZGUpOwot
ICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShkZWNvbXBvc2VkR2x5cGhzLmdldCgpKTsKLSAgICAg
ICAgcmVjb3JkRHJhd0RlY29tcG9zZWRHbHlwaHMoZm9udCwgZGVjb21wb3NlZEdseXBocy5nZXQo
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICByZWNvcmREcmF3R2x5cGhzKGZvbnQs
IGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgbG9jYWxBbmNob3IsIHNtb290aGluZ01vZGUp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCA2MzE0OTI0
ZjFhN2IuLjYwMDQ4MzM2YTdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oCkBAIC01MSwxMyArNTEsOSBAQCBjbGFzcyBSZWNvcmRlciA6IHB1YmxpYyBHcmFwaGljc0Nv
bnRleHQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFJlY29yZGVyKTsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIERyYXdHbHlwaHNNb2Rl
IHsKLSAgICAgICAgTm9ybWFsLAotICAgICAgICBEZWNvbnN0cnVjdFVzaW5nRHJhd0dseXBoc0Nv
bW1hbmRzLAotICAgICAgICBEZWNvbnN0cnVjdFVzaW5nRHJhd0RlY29tcG9zZWRHbHlwaHNDb21t
YW5kcywKLSAgICB9OworICAgIGVudW0gY2xhc3MgRGVjb25zdHJ1Y3REcmF3R2x5cGhzIDogYm9v
bCB7IE5vLCBZZXMgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiwgRHJhd0dseXBoc01vZGUgPSBEcmF3R2x5cGhzTW9kZTo6Tm9ybWFsKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcihjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYs
IGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIERl
Y29uc3RydWN0RHJhd0dseXBocyA9IERlY29uc3RydWN0RHJhd0dseXBoczo6Tm8pOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgflJlY29yZGVyKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29u
dmVydFRvTHVtaW5hbmNlTWFzaygpID0gMDsKQEAgLTg3LDcgKzgzLDYgQEAgcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgdm9pZCByZWNvcmRDbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXIqLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgRmlsdGVyJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlw
aEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQs
IGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3RGVjb21wb3NlZEdseXBocyhjb25zdCBGb250Jiwg
Y29uc3QgRGVjb21wb3NlZEdseXBocyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJh
d0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd05hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3
U3lzdGVtSW1hZ2UoU3lzdGVtSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7CkBAIC0xMzks
NyArMTM0LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCByZWNvcmRSZXNvdXJjZVVz
ZShJbWFnZUJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVjb3JkUmVzb3VyY2VVc2Uo
Y29uc3QgU291cmNlSW1hZ2UmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlY29yZFJlc291cmNl
VXNlKEZvbnQmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlY29yZFJlc291cmNlVXNlKERlY29t
cG9zZWRHbHlwaHMmKSA9IDA7CiAKICAgICBzdHJ1Y3QgQ29udGV4dFN0YXRlIHsKICAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGUgc3RhdGU7CkBAIC0yMTksOCArMjEzLDcgQEAgcHJpdmF0ZToK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyKiBzb3VyY2VJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIEZpbHRl
ciYsIEZpbHRlclJlc3VsdHMmKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJh
d0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBo
QnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5j
aG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRyYXdEZWNvbXBvc2VkR2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBEZWNvbXBvc2VkR2x5
cGhzJikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3R2x5cGhzQW5kQ2Fj
aGVSZXNvdXJjZXMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBH
bHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9j
YWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVy
R2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3Qg
RmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3
TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOwpAQCAtMjc3LDEyICsyNzAsMTAgQEAgcHJpdmF0
ZToKIAogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgY3RtKCkgY29uc3Q7CiAKLSAgICBib29s
IHNob3VsZERlY29uc3RydWN0RHJhd0dseXBocygpIGNvbnN0OwotCiAgICAgVmVjdG9yPENvbnRl
eHRTdGF0ZSwgND4gbV9zdGF0ZVN0YWNrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEcmF3R2x5cGhz
UmVjb3JkZXI+IG1fZHJhd0dseXBoc1JlY29yZGVyOwogICAgIGZsb2F0IG1faW5pdGlhbFNjYWxl
IHsgMSB9OwotICAgIGNvbnN0IERyYXdHbHlwaHNNb2RlIG1fZHJhd0dseXBoc01vZGUgeyBEcmF3
R2x5cGhzTW9kZTo6Tm9ybWFsIH07CisgICAgY29uc3QgRGVjb25zdHJ1Y3REcmF3R2x5cGhzIG1f
ZGVjb25zdHJ1Y3REcmF3R2x5cGhzIHsgRGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpObyB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlckltcGwuY3BwCmluZGV4IDY2ZDBiOWZiMWZkMy4uM2RkMTE4ODcyMWZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKQEAgLTQy
LDggKzQyLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7
CiAKLVJlY29yZGVySW1wbDo6UmVjb3JkZXJJbXBsKERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRp
YWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIERyYXdHbHlwaHNNb2Rl
IGRyYXdHbHlwaHNNb2RlKQotICAgIDogUmVjb3JkZXIoc3RhdGUsIGluaXRpYWxDbGlwLCBpbml0
aWFsQ1RNLCBkcmF3R2x5cGhzTW9kZSkKK1JlY29yZGVySW1wbDo6UmVjb3JkZXJJbXBsKERpc3Bs
YXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBj
b25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRp
YWxDVE0sIERlY29uc3RydWN0RHJhd0dseXBocyBkZWNvbnN0cnVjdERyYXdHbHlwaHMpCisgICAg
OiBSZWNvcmRlcihzdGF0ZSwgaW5pdGlhbENsaXAsIGluaXRpYWxDVE0sIGRlY29uc3RydWN0RHJh
d0dseXBocykKICAgICAsIG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCiB7CiAgICAgTE9HX1dJ
VEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJcblJlY29yZGluZyB3aXRoIGNsaXAg
IiA8PCBpbml0aWFsQ2xpcCk7CkBAIC0xNzIsMTEgKzE3Miw2IEBAIHZvaWQgUmVjb3JkZXJJbXBs
OjpyZWNvcmREcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5
cGgqIGdsCiAgICAgYXBwZW5kPERyYXdHbHlwaHM+KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIGNv
dW50LCBsb2NhbEFuY2hvciwgbW9kZSk7CiB9CiAKLXZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRE
cmF3RGVjb21wb3NlZEdseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBEZWNvbXBvc2VkR2x5
cGhzJiBkZWNvbXBvc2VkR2x5cGhzKQotewotICAgIGFwcGVuZDxEcmF3RGVjb21wb3NlZEdseXBo
cz4oZm9udC5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVjb21wb3NlZEdseXBocy5y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVjb21wb3NlZEdseXBocy5ib3VuZHMoKSk7
Ci19Ci0KIHZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CkBAIC00MTAsMTIgKzQwNSw2
IEBAIGJvb2wgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShGb250JiBmb250KQogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VVc2Uo
RGVjb21wb3NlZEdseXBocyYgZGVjb21wb3NlZEdseXBocykKLXsKLSAgICBtX2Rpc3BsYXlMaXN0
LmNhY2hlRGVjb21wb3NlZEdseXBocyhkZWNvbXBvc2VkR2x5cGhzKTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQogLy8gRklYTUU6IHNoYXJlIHdpdGggU2hhZG93RGF0YQogc3RhdGljIGlubGluZSBm
bG9hdCBzaGFkb3dQYWludGluZ0V4dGVudChmbG9hdCBibHVyUmFkaXVzKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaAppbmRleCBkNzdkMGU0NjAzZDkuLjQy
NmFiMDNmNGIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBs
LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUmVjb3JkZXJJbXBsIDogcHVibGljIFJlY29yZGVy
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShSZWNvcmRlckltcGwpOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVySW1w
bChEaXNwbGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRS
ZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgRHJhd0dseXBoc01vZGUg
PSBEcmF3R2x5cGhzTW9kZTo6Tm9ybWFsKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcklt
cGwoRGlzcGxheUxpc3QmLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0
UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIERlY29uc3RydWN0RHJh
d0dseXBocyA9IERlY29uc3RydWN0RHJhd0dseXBoczo6Tm8pOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgflJlY29yZGVySW1wbCgpOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9kaXNwbGF5TGlzdC5pc0VtcHR5KCk7IH0KQEAgLTY3LDcgKzY3LDYgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlY29yZENsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgZmluYWw7
CiAgICAgdm9pZCByZWNvcmREcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIGNv
bnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBGaWx0ZXImKSBmaW5hbDsKICAgICB2b2lk
IHJlY29yZERyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBj
b25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2lu
dCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKLSAgICB2b2lkIHJlY29y
ZERyYXdEZWNvbXBvc2VkR2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBEZWNvbXBvc2VkR2x5cGhz
JikgZmluYWw7CiAgICAgdm9pZCByZWNvcmREcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CiAgICAgdm9pZCByZWNvcmREcmF3TmF0aXZl
SW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmllciwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKICAg
ICB2b2lkIHJlY29yZERyYXdTeXN0ZW1JbWFnZShTeXN0ZW1JbWFnZSYsIGNvbnN0IEZsb2F0UmVj
dCYpIGZpbmFsOwpAQCAtMTE5LDcgKzExOCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWNvcmRS
ZXNvdXJjZVVzZShJbWFnZUJ1ZmZlciYpIGZpbmFsOwogICAgIGJvb2wgcmVjb3JkUmVzb3VyY2VV
c2UoY29uc3QgU291cmNlSW1hZ2UmKSBmaW5hbDsKICAgICBib29sIHJlY29yZFJlc291cmNlVXNl
KEZvbnQmKSBmaW5hbDsKLSAgICBib29sIHJlY29yZFJlc291cmNlVXNlKERlY29tcG9zZWRHbHlw
aHMmKSBmaW5hbDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+CiAg
ICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZXBsYXllci5jcHAKaW5kZXggNzA0ZjUyN2M4YTRjLi45N2UxMWNiODYwZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTExNyw2OCArMTE3LDQ1IEBA
IGlubGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+
IGFwcGx5RHJhd0dseXBocyhHcmFwaGljCiAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsK
IH0KIAotaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gYXBwbHlEcmF3RGVjb21wb3NlZEdseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IFJlc291cmNlSGVhcCYgcmVzb3VyY2VIZWFwLCBEcmF3RGVjb21wb3NlZEdseXBocyYg
ZHJhd0RlY29tcG9zZWRHbHlwaHNJdGVtKQotewotICAgIGF1dG8gZm9udElkZW50aWZpZXIgPSBk
cmF3RGVjb21wb3NlZEdseXBoc0l0ZW0uZm9udElkZW50aWZpZXIoKTsKLSAgICBhdXRvKiBmb250
ID0gcmVzb3VyY2VIZWFwLmdldEZvbnQoZm9udElkZW50aWZpZXIpOwotICAgIGlmICghZm9udCkK
LSAgICAgICAgcmV0dXJuIGZvbnRJZGVudGlmaWVyOwotCi0gICAgYXV0byBkcmF3R2x5cGhzSWRl
bnRpZmllciA9IGRyYXdEZWNvbXBvc2VkR2x5cGhzSXRlbS5kZWNvbXBvc2VkR2x5cGhzSWRlbnRp
ZmllcigpOwotICAgIGF1dG8qIGRlY29tcG9zZWRHbHlwaHMgPSByZXNvdXJjZUhlYXAuZ2V0RGVj
b21wb3NlZEdseXBocyhkcmF3R2x5cGhzSWRlbnRpZmllcik7Ci0gICAgaWYgKCFkZWNvbXBvc2Vk
R2x5cGhzKQotICAgICAgICByZXR1cm4gZHJhd0dseXBoc0lkZW50aWZpZXI7Ci0KLSAgICBkcmF3
RGVjb21wb3NlZEdseXBoc0l0ZW0uYXBwbHkoY29udGV4dCwgKmZvbnQsICpkZWNvbXBvc2VkR2x5
cGhzKTsKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi1hdXRvIFJlcGxheWVyOjphcHBs
eUl0ZW0oSXRlbUhhbmRsZSBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQKK3N0ZDo6cGFpcjxzdGQ6
Om9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4+IFJlcGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQogewog
ICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFn
ZUJ1ZmZlcjoKICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmll
ciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdlQnVmZmVyPihtX2NvbnRleHQsIG1f
cmVzb3VyY2VIZWFwLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFz
b246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJ
ZGVudGlmaWVyKSB9OwotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4geyBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogCi0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBo
czogeworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CiAgICAgICAgIGlmIChhdXRvIG1p
c3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseURyYXdHbHlwaHMobV9jb250ZXh0
LCBtX3Jlc291cmNlSGVhcCwgaXRlbS5nZXQ8RHJhd0dseXBocz4oKSkpCiAgICAgICAgICAgICBy
ZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUo
bWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKLSAgICAgICAgcmV0dXJuIHsgfTsK
LSAgICB9Ci0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RGVjb21wb3NlZEdseXBoczogewotICAg
ICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlEcmF3
RGVjb21wb3NlZEdseXBocyhtX2NvbnRleHQsIG1fcmVzb3VyY2VIZWFwLCBpdGVtLmdldDxEcmF3
RGVjb21wb3NlZEdseXBocz4oKSkpCi0gICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVh
c29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNl
SWRlbnRpZmllcikgfTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9CisgICAgICAgIHJldHVy
biB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3SW1hZ2VCdWZmZXI6CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlk
ZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KG1fY29udGV4
dCwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxh
eVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNv
dXJjZUlkZW50aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiB7
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
TmF0aXZlSW1hZ2U6CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50
aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3TmF0aXZlSW1hZ2U+KG1fY29udGV4dCwg
bV9yZXNvdXJjZUhlYXAsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJl
YXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiB7IHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0
dGVybjoKICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9
IGFwcGx5U291cmNlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihtX2NvbnRleHQsIG1fcmVzb3VyY2VI
ZWFwLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3Np
bmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
KSB9OwotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCB9OwogCiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6CiAgICAgICAg
IGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseVNldFN0YXRl
SXRlbShtX2NvbnRleHQsIG1fcmVzb3VyY2VIZWFwLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVy
biB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNz
aW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwotICAgICAgICByZXR1cm4geyB9OworICAg
ICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogCiAgICAgZGVmYXVs
dDoKICAgICAgICAgaXRlbS5hcHBseShtX2NvbnRleHQpOwotICAgICAgICByZXR1cm4geyB9Owor
ICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAot
ICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQg
fTsKIH0KIAogUmVwbGF5UmVzdWx0IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBp
bml0aWFsQ2xpcCwgYm9vbCB0cmFja1JlcGxheUxpc3QpCkBAIC0yMTAsMTAgKzE4Nyw5IEBAIFJl
cGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAs
IGJvb2wgdHJhY2tSZXBsYXlMaXN0CiAKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlM
aXN0cywgc3RyZWFtIDw8ICJhcHBseWluZyAiIDw8IGkrKyA8PCAiICIgPDwgaXRlbSk7CiAKLSAg
ICAgICAgYXV0byBhcHBseVJlc3VsdCA9IGFwcGx5SXRlbShpdGVtKTsKLSAgICAgICAgaWYgKGFw
cGx5UmVzdWx0LnN0b3BSZWFzb24pIHsKLSAgICAgICAgICAgIHJlc3VsdC5yZWFzb25Gb3JTdG9w
cGluZyA9ICphcHBseVJlc3VsdC5zdG9wUmVhc29uOwotICAgICAgICAgICAgcmVzdWx0Lm1pc3Np
bmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBXVEZNb3ZlKGFwcGx5UmVzdWx0LnJlc291cmNl
SWRlbnRpZmllcik7CisgICAgICAgIGlmIChhdXRvIFtyZWFzb25Gb3JTdG9wcGluZywgbWlzc2lu
Z0NhY2hlZFJlc291cmNlSWRlbnRpZmllcl0gPSBhcHBseUl0ZW0oaXRlbSk7IHJlYXNvbkZvclN0
b3BwaW5nKSB7CisgICAgICAgICAgICByZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPSAqcmVhc29u
Rm9yU3RvcHBpbmc7CisgICAgICAgICAgICByZXN1bHQubWlzc2luZ0NhY2hlZFJlc291cmNlSWRl
bnRpZmllciA9IFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuaAppbmRleCBkZWY1NTY4MWJkMGYuLjI1ODRhNTM5ZmMwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW5NZW1vcnlEaXNw
bGF5TGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpAQCAtMzMsNiArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGbG9hdFJlY3Q7CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAKIG5hbWVzcGFjZSBE
aXNwbGF5TGlzdCB7CiAKQEAgLTYxLDExICs2MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBSZXBsYXlSZXN1bHQgcmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAgPSB7
IH0sIGJvb2wgdHJhY2tSZXBsYXlMaXN0ID0gZmFsc2UpOwogCiBwcml2YXRlOgotICAgIHN0cnVj
dCBBcHBseUl0ZW1SZXN1bHQgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0b3BSZXBsYXlSZWFz
b24+IHN0b3BSZWFzb247Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyPiByZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAgfTsKLSAgICBBcHBseUl0ZW1SZXN1
bHQgYXBwbHlJdGVtKEl0ZW1IYW5kbGUpOworICAgIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFN0
b3BSZXBsYXlSZWFzb24+LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4+IGFwcGx5SXRlbShJdGVtSGFuZGxlKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250
ZXh0OwogICAgIGNvbnN0IERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVzb3VyY2VIZWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaAppbmRleCA1ZTQyN2Q3OGI0MmQuLmNmYmI2
YmVkY2NlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkRlY29tcG9zZWRHbHlw
aHMuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNs
dWRlICJOYXRpdmVJbWFnZS5oIgpAQCAtNDUsNyArNDQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBOYXRpdmVJbWFnZSogZ2V0TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFNvdXJjZUltYWdlPiBnZXRT
b3VyY2VJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIEZvbnQqIGdldEZvbnQoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBEZWNvbXBvc2VkR2x5cGhzKiBnZXREZWNvbXBvc2VkR2x5cGhzKFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QgPSAwOwogfTsKIAogY2xhc3MgTG9jYWxS
ZXNvdXJjZUhlYXAgOiBwdWJsaWMgUmVzb3VyY2VIZWFwIHsKQEAgLTY1LDExICs2Myw2IEBAIHB1
YmxpYzoKICAgICAgICAgbV9yZXNvdXJjZXMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgV1RGTW92ZShmb250KSk7CiAgICAgfQogCi0gICAgdm9pZCBhZGQoUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPERlY29tcG9zZWRH
bHlwaHM+JiYgZGVjb21wb3NlZEdseXBocykKLSAgICB7Ci0gICAgICAgIG1fcmVzb3VyY2VzLmFk
ZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoZGVjb21wb3NlZEdseXBocykp
OwotICAgIH0KLQogICAgIEltYWdlQnVmZmVyKiBnZXRJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdCBmaW5hbAog
ICAgIHsKICAgICAgICAgcmV0dXJuIGdldDxJbWFnZUJ1ZmZlcj4ocmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKQEAgLTk5LDExICs5Miw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdl
dDxGb250PihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIERlY29t
cG9zZWRHbHlwaHMqIGdldERlY29tcG9zZWRHbHlwaHMoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QgZmluYWwKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBnZXQ8RGVjb21wb3NlZEdseXBocz4ocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKLSAgICB9Ci0KICAgICB2b2lkIGNsZWFyKCkKICAgICB7CiAgICAgICAgIG1fcmVzb3Vy
Y2VzLmNsZWFyKCk7CkBAIC0xMjAsNyArMTA4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IHN0ZDo6Z2V0PFJlZjxUPj4oaXRlcmF0b3ItPnZhbHVlKS5wdHIoKTsKICAgICB9CiAKLSAgICB1
c2luZyBSZXNvdXJjZSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om1vbm9zdGF0ZSwgUmVmPEltYWdlQnVm
ZmVyPiwgUmVmPE5hdGl2ZUltYWdlPiwgUmVmPEZvbnQ+LCBSZWY8RGVjb21wb3NlZEdseXBocz4+
OworICAgIHVzaW5nIFJlc291cmNlID0gc3RkOjp2YXJpYW50PHN0ZDo6bW9ub3N0YXRlLCBSZWY8
SW1hZ2VCdWZmZXI+LCBSZWY8TmF0aXZlSW1hZ2U+LCBSZWY8Rm9udD4+OwogICAgIEhhc2hNYXA8
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZXNvdXJjZT4gbV9yZXNvdXJjZXM7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9E
cmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9oYXJmYnV6ei9EcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAKaW5kZXggMDVk
Yzk3ZDFhMDQyLi5jMzI4YjhmYjY2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2hhcmZidXp6L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9EcmF3R2x5cGhzUmVj
b3JkZXJIYXJmQnV6ei5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDIwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw3ICs0MCw3IEBAIERyYXdHbHlwaHNSZWNvcmRlcjo6
RHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgb3duZXIsIGZsb2F0LCBEZXJpdmVG
b250CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZh
bmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFy
dFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewotICAgIG1fb3duZXIu
ZHJhd0dseXBoc0FuZENhY2hlUmVzb3VyY2VzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUds
eXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CisgICAgbV9vd25lci5kcmF3R2x5cGhz
QW5kQ2FjaGVGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2lu
dCwgc21vb3RoaW5nTW9kZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5k
ZXggMGRmY2EyMzMzNzRhLi5lN2U2ZTZhMjczMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC0xLDcgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxOCBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgogICogQ29w
eXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zMSw3ICszMCw2IEBACiAjaW5jbHVkZSAiTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuaCIKIAogI2luY2x1ZGUgIkNhaXJvT3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgIkRlY29tcG9z
ZWRHbHlwaHMuaCIKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJGaWx0ZXJSZXN1bHRz
LmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgpAQCAtNTQyLDEyICs1NDAsNiBAQCB2
b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgR2x5cGhCdWZmZXJHbHlwaAogICAgICAgICBzdGF0ZS5zdHJva2VUaGlja25lc3MoKSwg
c3RhdGUuZHJvcFNoYWRvdygpLm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdygpLmNvbG9yLCBmb250
U21vb3RoaW5nKSk7CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0RlY29t
cG9zZWRHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgRGVjb21wb3NlZEdseXBocyYgZGVj
b21wb3NlZEdseXBocykKLXsKLSAgICBhdXRvIHBvc2l0aW9uZWRHbHlwaHMgPSBkZWNvbXBvc2Vk
R2x5cGhzLnBvc2l0aW9uZWRHbHlwaHMoKTsKLSAgICByZXR1cm4gZHJhd0dseXBocyhmb250LCBw
b3NpdGlvbmVkR2x5cGhzLmdseXBocy5kYXRhKCksIHBvc2l0aW9uZWRHbHlwaHMuYWR2YW5jZXMu
ZGF0YSgpLCBwb3NpdGlvbmVkR2x5cGhzLmdseXBocy5zaXplKCksIHBvc2l0aW9uZWRHbHlwaHMu
bG9jYWxBbmNob3IsIHBvc2l0aW9uZWRHbHlwaHMuc21vb3RoaW5nTW9kZSk7Ci19Ci0KIHZvaWQg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc3RydWN0IERyYXdJ
bWFnZUJ1ZmZlciBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+LCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwgSW1hZ2VQYWludGluZ09w
dGlvbnMsIGZsb2F0LCBDYWlybzo6U2hhZG93U3RhdGU+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0
aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAppbmRleCBkMjBmMGU1ODNlNzgu
LmQ2NTI3YzQ3ZDYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJv
T3BlcmF0aW9uUmVjb3JkZXIuaApAQCAtMSw3ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTggTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KICAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2Fs
aWEgUy5MLgotICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsNyArNjMsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IFdlYkNvcmU6OkZvbnQmLCBjb25z
dCBXZWJDb3JlOjpHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgV2ViQ29yZTo6R2x5cGhCdWZmZXJB
ZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jiwg
V2ViQ29yZTo6Rm9udFNtb290aGluZ01vZGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0RlY29t
cG9zZWRHbHlwaHMoY29uc3QgV2ViQ29yZTo6Rm9udCYsIGNvbnN0IFdlYkNvcmU6OkRlY29tcG9z
ZWRHbHlwaHMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6
OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRp
bmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihX
ZWJDb3JlOjpJbWFnZUJ1ZmZlciosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIFdlYkNvcmU6
OkZpbHRlciYsIFdlYkNvcmU6OkZpbHRlclJlc3VsdHMmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EcmF3R2x5cGhzUmVjb3JkZXJX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RyYXdHbHlwaHNS
ZWNvcmRlcldpbi5jcHAKaW5kZXggYjEzM2FiYmYwN2Y5Li5hZDRiYTFkNjQxN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EcmF3R2x5cGhzUmVjb3Jk
ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EcmF3
R2x5cGhzUmVjb3JkZXJXaW4uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNyArNDAsNyBAQCBEcmF3R2x5cGhzUmVjb3Jk
ZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIG93bmVyLCBmbG9hdCwgRGVy
aXZlRm9udAogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250
JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVy
QWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYg
c3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKLSAgICBtX293
bmVyLmRyYXdHbHlwaHNBbmRDYWNoZVJlc291cmNlcyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBu
dW1HbHlwaHMsIHN0YXJ0UG9pbnQsIG1fc21vb3RoaW5nTW9kZSk7CisgICAgbV9vd25lci5kcmF3
R2x5cGhzQW5kQ2FjaGVGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3Rh
cnRQb2ludCwgbV9zbW9vdGhpbmdNb2RlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RGlyZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHREaXJlY3Rpb24uaAppbmRleCA4YzFi
NzQ2NTgyYjUuLjg1ZmU5N2RlYTBhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0RGlyZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0RGlyZWN0aW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDIwLCAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51
bSBjbGFzcyBUZXh0RGlyZWN0aW9uIDogYm9vbCB7IExUUiwgUlRMIH07CkBAIC0zNiwxMyArMzQs
NCBAQCBpbmxpbmUgYm9vbCBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKFRleHREaXJlY3Rpb24gZGly
ZWN0aW9uKQogICAgIHJldHVybiBkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSOwogfQog
Ci1pbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVGV4dERpcmVj
dGlvbiB0ZXh0RGlyZWN0aW9uKQotewotICAgIHN3aXRjaCAodGV4dERpcmVjdGlvbikgewotICAg
IGNhc2UgVGV4dERpcmVjdGlvbjo6TFRSOiB0cyA8PCAibHRyIjsgYnJlYWs7Ci0gICAgY2FzZSBU
ZXh0RGlyZWN0aW9uOjpSVEw6IHRzIDw8ICJydGwiOyBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJu
IHRzOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRGbGFncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5jcHAK
aW5kZXggYzk3MTFhOGMyMGFkLi5jNTQzZWViZGQ1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRGbGFncy5jcHAKQEAgLTMwLDI0ICszMCw2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBF
eHBhbnNpb25CZWhhdmlvcjo6QmVoYXZpb3IgYmVoYXZpb3IpCi17Ci0gICAgc3dpdGNoIChiZWhh
dmlvcikgewotICAgIGNhc2UgRXhwYW5zaW9uQmVoYXZpb3I6OkJlaGF2aW9yOjpGb3JiaWQ6IHRz
IDw8ICJmb3JiaWQiOyBicmVhazsKLSAgICBjYXNlIEV4cGFuc2lvbkJlaGF2aW9yOjpCZWhhdmlv
cjo6QWxsb3c6IHRzIDw8ICJhbGxvdyI7IGJyZWFrOwotICAgIGNhc2UgRXhwYW5zaW9uQmVoYXZp
b3I6OkJlaGF2aW9yOjpGb3JjZTogdHMgPDwgImZvcmNlIjsgYnJlYWs7Ci0gICAgfQotICAgIHJl
dHVybiB0czsKLX0KLQotV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvcikKLXsKLSAgICB0cyA8PCBleHBh
bnNpb25CZWhhdmlvci5sZWZ0OwotICAgIHRzIDw8ICcgJzsKLSAgICB0cyA8PCBleHBhbnNpb25C
ZWhhdmlvci5yaWdodDsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIFdURjo6VGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgS2VybmluZyBrZXJuaW5nKQogewogICAgIHN3aXRjaCAo
a2VybmluZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
RmxhZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgKaW5kZXgg
NWVkNTkyM2U2NzAzLi5jMDgwMGNkNzkxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dEZsYWdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0RmxhZ3MuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDYsIDIwMTcsIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAxNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03OCwxMSArNzgsNiBAQCBz
dHJ1Y3QgRXhwYW5zaW9uQmVoYXZpb3IgewogICAgIHsKICAgICB9CiAKLSAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgRXhwYW5zaW9uQmVoYXZpb3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGxlZnQgPT0gb3RoZXIubGVmdCAmJiByaWdodCA9PSBvdGhlci5yaWdodDsKLSAg
ICB9Ci0KICAgICBzdGF0aWMgRXhwYW5zaW9uQmVoYXZpb3IgZGVmYXVsdEJlaGF2aW9yKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMTMsOSArMTA4LDYgQEAgc3RydWN0IEV4cGFu
c2lvbkJlaGF2aW9yIHsKICAgICBCZWhhdmlvciByaWdodCA6IGJpdHNPZktpbmQ7CiB9OwogCi1X
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgRXhwYW5zaW9uQmVo
YXZpb3I6OkJlaGF2aW9yKTsKLVdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBFeHBhbnNpb25CZWhhdmlvcik7Ci0KIGVudW0gRm9udFN5bnRoZXNpc1ZhbHVlcyB7
CiAgICAgRm9udFN5bnRoZXNpc05vbmUgPSAweDAsCiAgICAgRm9udFN5bnRoZXNpc1dlaWdodCA9
IDB4MSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HbHlwaERpc3BsYXlM
aXN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dseXBoRGlzcGxheUxpc3RD
YWNoZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkODc1YmFjYmU1Mi4uMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HbHlwaERpc3BsYXlMaXN0
Q2FjaGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiR2x5cGhEaXNwbGF5TGlzdENhY2hlLmgiCi0KLSNpbmNsdWRlICJEaXNwbGF5TGlzdEl0
ZW1zLmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVyYXRvci5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLXN0YXRpYyBib29sIGNhblNoYXJlRGlzcGxheUxpc3RXaXRoSXRlbShEaXNwbGF5
TGlzdDo6SXRlbVR5cGUgaXRlbVR5cGUpCi17Ci0gICAgdXNpbmcgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOwotCi0gICAgc3dpdGNoIChpdGVtVHlwZSkgewotICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5z
bGF0ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpDb25j
YXRlbmF0ZUNUTToKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RGVjb21wb3NlZEdseXBoczoKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d05hdGl2ZUltYWdlOgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVz
dG9yZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0
Q1RNOgotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjoKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJv
a2VUaGlja25lc3M6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0TGluZUNhcDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxp
bWl0OgotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXA6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAg
IGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGaWx0ZXJl
ZEltYWdlQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdTeXN0ZW1JbWFnZToKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJu
OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdM
aW5lOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
RWxsaXBzZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVj
dHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmls
bFJlY3RXaXRoQ29sb3I6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsTGluZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsQXJjOgotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxRdWFkQ3VydmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbEJlemllckN1cnZlOgot
I2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RmlsbEVsbGlwc2U6Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50
RnJhbWVGb3JNZWRpYToKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFU
QSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VBcmM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ry
b2tlUXVhZEN1cnZlOgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUJlemllckN1cnZlOgotI2Vu
ZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
dHJva2VFbGxpcHNlOgotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoKLSNpZiBVU0UoQ0cp
Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgotICAgIGNhc2UgSXRlbVR5
cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURl
dmljZVNjYWxlRmFjdG9yOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBHbHlwaERpc3Bs
YXlMaXN0Q2FjaGU6OmNhblNoYXJlRGlzcGxheUxpc3QoY29uc3QgRGlzcGxheUxpc3Q6OkluTWVt
b3J5RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQotewotICAgIGZvciAoYXV0byBkaXNwbGF5TGlz
dEl0ZW0gOiBkaXNwbGF5TGlzdCkgewotICAgICAgICBpZiAoIWNhblNoYXJlRGlzcGxheUxpc3RX
aXRoSXRlbShkaXNwbGF5TGlzdEl0ZW0udmFsdWUoKS5pdGVtLnR5cGUoKSkpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2x5cGhE
aXNwbGF5TGlzdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2x5cGhEaXNwbGF5
TGlzdENhY2hlLmgKaW5kZXggYzkzYTliOThmOTEzLi42ZjIyNjQ2ZWM2NWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HbHlwaERpc3BsYXlMaXN0Q2FjaGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2x5cGhEaXNwbGF5TGlzdENhY2hlLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwx
MiArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJEaXNwbGF5TGlzdC5oIgog
I2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiSW5NZW1vcnlEaXNwbGF5TGlzdC5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJUZXh0UnVuLmgiCi0jaW5jbHVkZSAi
VGV4dFJ1bkhhc2guaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9N
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
QEAgLTQzLDExMSArNDEsNjggQEAgbmFtZXNwYWNlIElubGluZURpc3BsYXkgewogc3RydWN0IEJv
eDsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgTGF5b3V0UnVuPgogY2xhc3MgR2x5cGhEaXNwbGF5
TGlzdENhY2hlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBH
bHlwaERpc3BsYXlMaXN0Q2FjaGUoKSA9IGRlZmF1bHQ7CiAKLSAgICBEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QqIGdldChjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94JiBydW4sIGNvbnN0IEZvbnRD
YXNjYWRlJiBmb250LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHRl
eHRSdW4pIHsgcmV0dXJuIGdldCgmcnVuLCBmb250LCBjb250ZXh0LCB0ZXh0UnVuKTsgfQotICAg
IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCogZ2V0KGNvbnN0IElubGluZURpc3BsYXk6OkJveCYg
cnVuLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBUZXh0UnVuJiB0ZXh0UnVuKSB7IHJldHVybiBnZXQoJnJ1biwgZm9udCwgY29udGV4dCwg
dGV4dFJ1bik7IH0KLQotICAgIERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCogZ2V0SWZFeGlzdHMo
Y29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCYgcnVuKSB7IHJldHVybiBnZXRJZkV4aXN0cygmcnVu
KTsgfQotICAgIERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCogZ2V0SWZFeGlzdHMoY29uc3QgSW5s
aW5lRGlzcGxheTo6Qm94JiBydW4pIHsgcmV0dXJuIGdldElmRXhpc3RzKCZydW4pOyB9Ci0KLSAg
ICB2b2lkIHJlbW92ZShjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94JiBydW4pIHsgcmVtb3ZlKCZy
dW4pOyB9Ci0gICAgdm9pZCByZW1vdmUoY29uc3QgSW5saW5lRGlzcGxheTo6Qm94JiBydW4pIHsg
cmVtb3ZlKCZydW4pOyB9Ci0KLSAgICB2b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIG1fZW50
cmllc0ZvckxheW91dFJ1bi5jbGVhcigpOwotICAgICAgICBtX2VudHJpZXNGb3JUZXh0UnVuLmNs
ZWFyKCk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0CisgICAgc3RhdGljIEds
eXBoRGlzcGxheUxpc3RDYWNoZSYgc2luZ2xldG9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBt
X2VudHJpZXNGb3JUZXh0UnVuLnNpemUoKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3NhbWVfdjxMYXlvdXRSdW4sIExlZ2FjeUlubGluZVRleHRCb3g+IHx8IHN0ZDo6aXNfc2FtZV92
PExheW91dFJ1biwgSW5saW5lRGlzcGxheTo6Qm94Pik7CisgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxHbHlwaERpc3BsYXlMaXN0Q2FjaGU+IGNhY2hlOworICAgICAgICByZXR1cm4gY2Fj
aGU7CiAgICAgfQogCi0gICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBt
X2VudHJpZXNGb3JUZXh0UnVuKQotICAgICAgICAgICAgc2l6ZUluQnl0ZXMgKz0gZW50cnkudmFs
dWUtPmRpc3BsYXlMaXN0KCkuc2l6ZUluQnl0ZXMoKTsKLSAgICAgICAgcmV0dXJuIHNpemVJbkJ5
dGVzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBjbGFzcyBFbnRyeSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEVudHJ5PiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEVudHJ5PiB7Ci0gICAgICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxFbnRy
eT4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZv
bnQsIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4mJiBk
aXNwbGF5TGlzdCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RW50cnkoY29udGV4dCwgZm9udCwgV1RGTW92ZShkaXNwbGF5TGlzdCkpKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCgp
IHsgcmV0dXJuICptX2Rpc3BsYXlMaXN0LmdldCgpOyB9Ci0gICAgICAgIGJvb2wgY2FuVXNlU2hh
cmVkRGlzcGxheUxpc3QoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2Fk
ZSYgZm9udCkgY29uc3QgeyByZXR1cm4gZm9udCA9PSBtX2ZvbnQgJiYgY29udGV4dC5zY2FsZUZh
Y3RvcigpID09IG1fc2NhbGVGYWN0b3IgJiYgbV9zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udCA9
PSBjb250ZXh0LnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cygpOyB9Ci0KLSAgICBwcml2YXRl
OgotICAgICAgICBFbnRyeShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNj
YWRlJiBmb250LCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxp
c3Q+JiYgZGlzcGxheUxpc3QpCi0gICAgICAgICAgICA6IG1fZGlzcGxheUxpc3QoV1RGTW92ZShk
aXNwbGF5TGlzdCkpCi0gICAgICAgICAgICAsIG1fZm9udChmb250KQotICAgICAgICAgICAgLCBt
X3NjYWxlRmFjdG9yKGNvbnRleHQuc2NhbGVGYWN0b3IoKSkKLSAgICAgICAgICAgICwgbV9zaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udChjb250ZXh0LnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250
cygpKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQobV9kaXNwbGF5TGlzdC5nZXQoKSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkluTWVt
b3J5RGlzcGxheUxpc3Q+IG1fZGlzcGxheUxpc3Q7Ci0gICAgICAgIEZvbnRDYXNjYWRlIG1fZm9u
dDsKLSAgICAgICAgRmxvYXRTaXplIG1fc2NhbGVGYWN0b3I7Ci0gICAgICAgIGJvb2wgbV9zaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udDsKLSAgICB9OwotCi0gICAgRGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0KiBnZXQoY29uc3Qgdm9pZCogcnVuLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiB0ZXh0UnVuKQorICAgIERpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdCogZ2V0KGNvbnN0IExheW91dFJ1biYgcnVuLCBjb25zdCBGb250
Q2FzY2FkZSYgZm9udCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiB0
ZXh0UnVuKQogICAgIHsKICAgICAgICAgaWYgKE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xl
dG9uKCkuaXNVbmRlck1lbW9yeVByZXNzdXJlKCkpIHsKLSAgICAgICAgICAgIGlmICghbV9lbnRy
aWVzRm9yVGV4dFJ1bi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGlmICghbV9nbHlwaFJ1bk1h
cC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBMT0coTWVtb3J5UHJlc3N1cmUsICJHbHlw
aERpc3BsYXlMaXN0Q2FjaGU6OiVzIC0gVW5kZXIgbWVtb3J5IHByZXNzdXJlIC0gc2l6ZTogJWQg
LSBzaXplSW5CeXRlczogJWxkIiwgX19GVU5DVElPTl9fLCBzaXplKCksIHNpemVJbkJ5dGVzKCkp
OwogICAgICAgICAgICAgICAgIGNsZWFyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChhdXRvIGVudHJ5ID0gbV9l
bnRyaWVzRm9yTGF5b3V0UnVuLmdldChydW4pKQotICAgICAgICAgICAgcmV0dXJuICZlbnRyeS0+
ZGlzcGxheUxpc3QoKTsKKyAgICAgICAgaWYgKGF1dG8gZGlzcGxheUxpc3QgPSBtX2dseXBoUnVu
TWFwLmdldCgmcnVuKSkKKyAgICAgICAgICAgIHJldHVybiBkaXNwbGF5TGlzdDsKIAotICAgICAg
ICBpZiAoYXV0byBlbnRyeSA9IG1fZW50cmllc0ZvclRleHRSdW4uZ2V0KHRleHRSdW4pKSB7Ci0g
ICAgICAgICAgICBpZiAoZW50cnktPmNhblVzZVNoYXJlZERpc3BsYXlMaXN0KGNvbnRleHQsIGZv
bnQpKQotICAgICAgICAgICAgICAgIHJldHVybiAmbV9lbnRyaWVzRm9yTGF5b3V0UnVuLmFkZChy
dW4sIFJlZiB7ICplbnRyeSB9KS5pdGVyYXRvci0+dmFsdWUtPmRpc3BsYXlMaXN0KCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoYXV0byBkaXNwbGF5TGlzdCA9IGZvbnQuZGlzcGxheUxpc3RG
b3JUZXh0UnVuKGNvbnRleHQsIHRleHRSdW4pKSB7Ci0gICAgICAgICAgICBhdXRvIGVudHJ5ID0g
RW50cnk6OmNyZWF0ZShjb250ZXh0LCBmb250LCBXVEZNb3ZlKGRpc3BsYXlMaXN0KSk7Ci0gICAg
ICAgICAgICBpZiAoY2FuU2hhcmVEaXNwbGF5TGlzdChlbnRyeS0+ZGlzcGxheUxpc3QoKSkpCi0g
ICAgICAgICAgICAgICAgbV9lbnRyaWVzRm9yVGV4dFJ1bi5hZGQodGV4dFJ1bi5pc29sYXRlZENv
cHkoKSwgZW50cnkpOwotICAgICAgICAgICAgcmV0dXJuICZtX2VudHJpZXNGb3JMYXlvdXRSdW4u
YWRkKHJ1biwgV1RGTW92ZShlbnRyeSkpLml0ZXJhdG9yLT52YWx1ZS0+ZGlzcGxheUxpc3QoKTsK
LSAgICAgICAgfQorICAgICAgICBpZiAoYXV0byBkaXNwbGF5TGlzdCA9IGZvbnQuZGlzcGxheUxp
c3RGb3JUZXh0UnVuKGNvbnRleHQsIHRleHRSdW4pKQorICAgICAgICAgICAgcmV0dXJuIG1fZ2x5
cGhSdW5NYXAuYWRkKCZydW4sIFdURk1vdmUoZGlzcGxheUxpc3QpKS5pdGVyYXRvci0+dmFsdWUu
Z2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgRGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0KiBnZXRJZkV4aXN0cyhjb25zdCB2b2lkKiBydW4pCisgICAgRGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0KiBnZXRJZkV4aXN0cyhjb25zdCBMYXlvdXRSdW4mIHJ1bikKICAg
ICB7Ci0gICAgICAgIGlmIChhdXRvIGVudHJ5ID0gbV9lbnRyaWVzRm9yTGF5b3V0UnVuLmdldChy
dW4pKQotICAgICAgICAgICAgcmV0dXJuICZlbnRyeS0+ZGlzcGxheUxpc3QoKTsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBtX2dseXBoUnVuTWFwLmdldCgmcnVuKTsK
ICAgICB9CiAKLSAgICB2b2lkIHJlbW92ZShjb25zdCB2b2lkKiBydW4pCisgICAgdm9pZCByZW1v
dmUoY29uc3QgTGF5b3V0UnVuJiBydW4pCiAgICAgewotICAgICAgICBtX2VudHJpZXNGb3JMYXlv
dXRSdW4ucmVtb3ZlKCZydW4pOworICAgICAgICBtX2dseXBoUnVuTWFwLnJlbW92ZSgmcnVuKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBjYW5TaGFyZURpc3BsYXlMaXN0KGNvbnN0IERpc3Bs
YXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0Jik7CisgICAgdm9pZCBjbGVhcigpCisgICAgewor
ICAgICAgICBtX2dseXBoUnVuTWFwLmNsZWFyKCk7CisgICAgfQogCi0gICAgSGFzaE1hcDxUZXh0
UnVuLCBXZWFrUHRyPEVudHJ5Pj4gbV9lbnRyaWVzRm9yVGV4dFJ1bjsKLSAgICBIYXNoTWFwPGNv
bnN0IHZvaWQqLCBSZWY8RW50cnk+PiBtX2VudHJpZXNGb3JMYXlvdXRSdW47CisgICAgdW5zaWdu
ZWQgc2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9nbHlwaFJ1bk1hcC5zaXpl
KCk7CisgICAgfQorICAgIAorICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0CisgICAgewor
ICAgICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSAwOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IGVudHJ5IDogbV9nbHlwaFJ1bk1hcCkKKyAgICAgICAgICAgIHNpemVJbkJ5dGVzICs9IGVudHJ5
LnZhbHVlLT5zaXplSW5CeXRlcygpOworICAgICAgICByZXR1cm4gc2l6ZUluQnl0ZXM7CisgICAg
fQorICAgIAorcHJpdmF0ZToKKyAgICB1c2luZyBHbHlwaFJ1bk1hcCA9IEhhc2hNYXA8Y29uc3Qg
TGF5b3V0UnVuKiwgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlM
aXN0Pj47CisgICAgR2x5cGhSdW5NYXAgbV9nbHlwaFJ1bk1hcDsKIH07Ci0KKyAgICAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcAppbmRl
eCBmNmQ3OGZlNDc5YTAuLmRiZTI3MzBiNWY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcApAQCAtODMsNyArODMsNyBAQCBMZWdhY3lJ
bmxpbmVUZXh0Qm94Ojp+TGVnYWN5SW5saW5lVGV4dEJveCgpCiB7CiAgICAgaWYgKCFrbm93blRv
SGF2ZU5vT3ZlcmZsb3coKSAmJiBnVGV4dEJveGVzV2l0aE92ZXJmbG93KQogICAgICAgICBnVGV4
dEJveGVzV2l0aE92ZXJmbG93LT5yZW1vdmUodGhpcyk7Ci0gICAgVGV4dFBhaW50ZXI6OnJlbW92
ZUdseXBoRGlzcGxheUxpc3QocmVuZGVyZXIoKS5kb2N1bWVudCgpLCAqdGhpcyk7CisgICAgVGV4
dFBhaW50ZXI6OnJlbW92ZUdseXBoRGlzcGxheUxpc3QoKnRoaXMpOwogfQogCiBib29sIExlZ2Fj
eUlubGluZVRleHRCb3g6Omhhc1RleHRDb250ZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggZDRmODIwZjMw
N2MwLi41ZDY2MDUzYjhhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC04NSwxMCArODUsNiBAQAogI2luY2x1ZGUgIlJl
bmRlclRyZWVBc1RleHQuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCi0j
aW5jbHVkZSAiUmVuZGVyTW9kZWwuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKDNEX1RSQU5TRk9S
TVMpCiAvLyBUaGlzIHN5bWJvbCBpcyB1c2VkIHRvIGRldGVybWluZSBmcm9tIGEgc2NyaXB0IHdo
ZXRoZXIgM0QgcmVuZGVyaW5nIGlzIGVuYWJsZWQgKHZpYSAnbm0nKS4KIFdFQkNPUkVfRVhQT1JU
IGJvb2wgV2ViQ29yZUhhczNEUmVuZGVyaW5nID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCmluZGV4IGM3NmJhNTMxMWEwYS4uOTA3ZjFiMWUxMmMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAKQEAgLTQw
MywxMCArNDAzLDEwIEBAIHZvaWQgVGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpwYWludEZv
cmVncm91bmQoY29uc3QgU3R5bGVkTWFya2VkVGV4dCYgbWFya2VkCiAgICAgdXBkYXRlR3JhcGhp
Y3NDb250ZXh0KGNvbnRleHQsIG1hcmtlZFRleHQuc3R5bGUudGV4dFN0eWxlcyk7CiAKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PFRleHRCb3hQYXRoLCBJbmxpbmVJdGVyYXRvcjo6
Qm94TGVnYWN5UGF0aD4pCi0gICAgICAgIHRleHRQYWludGVyLnNldEdseXBoRGlzcGxheUxpc3RJ
Zk5lZWRlZChjb25zdF9jYXN0PERvY3VtZW50Jj4obV9kb2N1bWVudCksIGRvd25jYXN0PExlZ2Fj
eUlubGluZVRleHRCb3g+KCp0ZXh0Qm94KCkubGVnYWN5SW5saW5lQm94KCkpLCBtX3BhaW50SW5m
bywgbV9wYWludFRleHRSdW4pOworICAgICAgICB0ZXh0UGFpbnRlci5zZXRHbHlwaERpc3BsYXlM
aXN0SWZOZWVkZWQoZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4oKnRleHRCb3goKS5sZWdh
Y3lJbmxpbmVCb3goKSksIG1fcGFpbnRJbmZvLCBtX3BhaW50VGV4dFJ1bik7CiAjaWYgRU5BQkxF
KExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAgICAgZWxzZQotICAgICAgICB0ZXh0UGFpbnRl
ci5zZXRHbHlwaERpc3BsYXlMaXN0SWZOZWVkZWQoY29uc3RfY2FzdDxEb2N1bWVudCY+KG1fZG9j
dW1lbnQpLCB0ZXh0Qm94KCkuYm94KCksIG1fcGFpbnRJbmZvLCBtX3BhaW50VGV4dFJ1bik7Cisg
ICAgICAgIHRleHRQYWludGVyLnNldEdseXBoRGlzcGxheUxpc3RJZk5lZWRlZCh0ZXh0Qm94KCku
Ym94KCksIG1fcGFpbnRJbmZvLCBtX3BhaW50VGV4dFJ1bik7CiAjZW5kaWYKIAogICAgIC8vIFRl
eHRQYWludGVyIHdhbnRzIHRoZSBib3ggcmVjdGFuZ2xlIGFuZCB0ZXh0IG9yaWdpbiBvZiB0aGUg
ZW50aXJlIGxpbmUgYm94LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAK
aW5kZXggZjk0YjM5N2E2NDgwLi40ZjMzNDJmYTM5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRQYWludGVyLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAoQykgMTk5OSBMYXJz
IEtub2xsIChrbm9sbEBrZGUub3JnKQogICogKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVy
QGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDcgKzIzLDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRlci5oIgogCi0jaW5jbHVkZSAi
RGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVy
LmgiCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgpAQCAtMjE5LDYgKzIxOCwxNSBAQCB2b2lkIFRleHRQYWludGVyOjpwYWludFJhbmdl
KGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgYwogICAg
IHBhaW50VGV4dEFuZEVtcGhhc2lzTWFya3NJZk5lZWRlZCh0ZXh0UnVuLCBib3hSZWN0LCB0ZXh0
T3JpZ2luLCBzdGFydCwgZW5kLCBtX3N0eWxlLCBtX3NoYWRvdywgbV9zaGFkb3dDb2xvckZpbHRl
cik7CiB9CiAKK3ZvaWQgVGV4dFBhaW50ZXI6OmNsZWFyR2x5cGhEaXNwbGF5TGlzdHMoKQorewor
ICAgIEdseXBoRGlzcGxheUxpc3RDYWNoZTxMZWdhY3lJbmxpbmVUZXh0Qm94Pjo6c2luZ2xldG9u
KCkuY2xlYXIoKTsKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKyAgICBp
ZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5pbmxpbmVGb3JtYXR0
aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCgpKQorICAgICAgICBHbHlwaERpc3BsYXlMaXN0
Q2FjaGU8SW5saW5lRGlzcGxheTo6Qm94Pjo6c2luZ2xldG9uKCkuY2xlYXIoKTsKKyNlbmRpZgor
fQorCiBzdGF0aWMgYm9vbCBmb3JjZVVzZUdseXBoRGlzcGxheUxpc3RGb3JUZXN0aW5nID0gZmFs
c2U7CiAKIGJvb2wgVGV4dFBhaW50ZXI6OnNob3VsZFVzZUdseXBoRGlzcGxheUxpc3QoY29uc3Qg
UGFpbnRJbmZvJiBwYWludEluZm8pCkBAIC0yNDEsMTAgKzI0OSwxMCBAQCBTdHJpbmcgVGV4dFBh
aW50ZXI6OmNhY2hlZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGVBc1RleHQoVGV4dCYgdGV4
dE5vZGUsIE9wdAogICAgIGZvciAoYXV0byB0ZXh0Qm94IDogSW5saW5lSXRlcmF0b3I6OnRleHRC
b3hlc0ZvcigqdGV4dE5vZGUucmVuZGVyZXIoKSkpIHsKICAgICAgICAgRGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0KiBkaXNwbGF5TGlzdCA9IG51bGxwdHI7CiAgICAgICAgIGlmIChhdXRvKiBsZWdh
Y3lJbmxpbmVCb3ggPSB0ZXh0Qm94LmxlZ2FjeUlubGluZUJveCgpKQotICAgICAgICAgICAgZGlz
cGxheUxpc3QgPSBUZXh0UGFpbnRlcjo6Z2x5cGhEaXNwbGF5TGlzdElmRXhpc3RzKHRleHROb2Rl
LnJlbmRlcmVyKCktPmRvY3VtZW50KCksICpsZWdhY3lJbmxpbmVCb3gpOworICAgICAgICAgICAg
ZGlzcGxheUxpc3QgPSBUZXh0UGFpbnRlcjo6Z2x5cGhEaXNwbGF5TGlzdElmRXhpc3RzKCpsZWdh
Y3lJbmxpbmVCb3gpOwogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBkaXNwbGF5TGlzdCA9IFRleHRQYWludGVyOjpnbHlwaERp
c3BsYXlMaXN0SWZFeGlzdHModGV4dE5vZGUucmVuZGVyZXIoKS0+ZG9jdW1lbnQoKSwgKnRleHRC
b3guaW5saW5lQm94KCkpOworICAgICAgICAgICAgZGlzcGxheUxpc3QgPSBUZXh0UGFpbnRlcjo6
Z2x5cGhEaXNwbGF5TGlzdElmRXhpc3RzKCp0ZXh0Qm94LmlubGluZUJveCgpKTsKICNlbmRpZgog
ICAgICAgICBpZiAoZGlzcGxheUxpc3QpIHsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRp
c3BsYXlMaXN0LT5hc1RleHQoZmxhZ3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0UGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWlu
dGVyLmgKaW5kZXggZWNlNjY0ZjNiYzliLi5iZjdiMzAxYTEyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0UGFpbnRlci5oCkBAIC02MSwyOSArNjEsMjcgQEAgcHVibGljOgogICAgIHZv
aWQgcGFpbnRSYW5nZShjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LCBj
b25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5k
KTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheW91dFJ1bj4KLSAgICB2b2lkIHNldEdseXBo
RGlzcGxheUxpc3RJZk5lZWRlZChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IExheW91dFJ1biYg
cnVuLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgVGV4dFJ1biYgdGV4dFJ1bikK
KyAgICB2b2lkIHNldEdseXBoRGlzcGxheUxpc3RJZk5lZWRlZChjb25zdCBMYXlvdXRSdW4mIHJ1
biwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IFRleHRSdW4mIHRleHRSdW4pCiAg
ICAgewogICAgICAgICBpZiAoIVRleHRQYWludGVyOjpzaG91bGRVc2VHbHlwaERpc3BsYXlMaXN0
KHBhaW50SW5mbykpCi0gICAgICAgICAgICBUZXh0UGFpbnRlcjo6cmVtb3ZlR2x5cGhEaXNwbGF5
TGlzdChkb2N1bWVudCwgcnVuKTsKKyAgICAgICAgICAgIFRleHRQYWludGVyOjpyZW1vdmVHbHlw
aERpc3BsYXlMaXN0KHJ1bik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZ2x5cGhEaXNw
bGF5TGlzdCA9IGRvY3VtZW50LmdseXBoRGlzcGxheUxpc3RDYWNoZSgpLmdldChydW4sIG1fZm9u
dCwgbV9jb250ZXh0LCB0ZXh0UnVuKTsKKyAgICAgICAgICAgIG1fZ2x5cGhEaXNwbGF5TGlzdCA9
IEdseXBoRGlzcGxheUxpc3RDYWNoZTxMYXlvdXRSdW4+OjpzaW5nbGV0b24oKS5nZXQocnVuLCBt
X2ZvbnQsIG1fY29udGV4dCwgdGV4dFJ1bik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgTGF5b3V0UnVuPgotICAgIHN0YXRpYyB2b2lkIHJlbW92ZUdseXBoRGlzcGxheUxpc3QoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBMYXlvdXRSdW4mIHJ1bikKLSAgICB7Ci0gICAgICAgIGRv
Y3VtZW50LmdseXBoRGlzcGxheUxpc3RDYWNoZSgpLnJlbW92ZShydW4pOwotICAgIH0KKyAgICBz
dGF0aWMgdm9pZCByZW1vdmVHbHlwaERpc3BsYXlMaXN0KGNvbnN0IExheW91dFJ1biYgcnVuKSB7
IEdseXBoRGlzcGxheUxpc3RDYWNoZTxMYXlvdXRSdW4+OjpzaW5nbGV0b24oKS5yZW1vdmUocnVu
KTsgfQogCisgICAgc3RhdGljIHZvaWQgY2xlYXJHbHlwaERpc3BsYXlMaXN0cygpOwogICAgIHN0
YXRpYyBib29sIHNob3VsZFVzZUdseXBoRGlzcGxheUxpc3QoY29uc3QgUGFpbnRJbmZvJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0Rm9yY2VVc2VHbHlwaERpc3BsYXlMaXN0
Rm9yVGVzdGluZyhib29sKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGNhY2hl
ZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGVBc1RleHQoVGV4dCYsIE9wdGlvblNldDxEaXNw
bGF5TGlzdDo6QXNUZXh0RmxhZz4pOwogCiBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IExheW91dFJ1bj4KLSAgICBzdGF0aWMgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0KiBnbHlwaERp
c3BsYXlMaXN0SWZFeGlzdHMoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBMYXlvdXRSdW4mIHJ1
bikKKyAgICBzdGF0aWMgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0KiBnbHlwaERpc3BsYXlMaXN0
SWZFeGlzdHMoY29uc3QgTGF5b3V0UnVuJiBydW4pCiAgICAgewotICAgICAgICByZXR1cm4gZG9j
dW1lbnQuZ2x5cGhEaXNwbGF5TGlzdENhY2hlKCkuZ2V0SWZFeGlzdHMocnVuKTsKKyAgICAgICAg
cmV0dXJuIEdseXBoRGlzcGxheUxpc3RDYWNoZTxMYXlvdXRSdW4+OjpzaW5nbGV0b24oKS5nZXRJ
ZkV4aXN0cyhydW4pOwogICAgIH0KIAogICAgIHZvaWQgcGFpbnRUZXh0T3JFbXBoYXNpc01hcmtz
KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21TdHJpbmcmIGVt
cGhhc2lzTWFyaywgZmxvYXQgZW1waGFzaXNNYXJrT2Zmc2V0LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCmluZGV4IGU3MjUxMmE5MTZmZi4uODA3YWYwNjJlMjQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0zMjA0LDE2ICszMjA0LDYgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRFbGVtZW50VHJhY2tzRGlzcGxheUxpc3RSZXBsYXkoRWxl
bWVudCYgZWxlbWVudCwKICAgICByZXR1cm4geyB9OwogfQogCi1zdGF0aWMgT3B0aW9uU2V0PERp
c3BsYXlMaXN0OjpBc1RleHRGbGFnPiB0b0Rpc3BsYXlMaXN0RmxhZ3ModW5zaWduZWQgc2hvcnQg
ZmxhZ3MpCi17Ci0gICAgT3B0aW9uU2V0PERpc3BsYXlMaXN0OjpBc1RleHRGbGFnPiBkaXNwbGF5
TGlzdEZsYWdzOwotICAgIGlmIChmbGFncyAmIEludGVybmFsczo6RElTUExBWV9MSVNUX0lOQ0xV
REVfUExBVEZPUk1fT1BFUkFUSU9OUykKLSAgICAgICAgZGlzcGxheUxpc3RGbGFncy5hZGQoRGlz
cGxheUxpc3Q6OkFzVGV4dEZsYWc6OkluY2x1ZGVQbGF0Zm9ybU9wZXJhdGlvbnMpOwotICAgIGlm
IChmbGFncyAmIEludGVybmFsczo6RElTUExBWV9MSVNUX0lOQ0xVREVfUkVTT1VSQ0VfSURFTlRJ
RklFUlMpCi0gICAgICAgIGRpc3BsYXlMaXN0RmxhZ3MuYWRkKERpc3BsYXlMaXN0OjpBc1RleHRG
bGFnOjpJbmNsdWRlUmVzb3VyY2VJZGVudGlmaWVycyk7Ci0gICAgcmV0dXJuIGRpc3BsYXlMaXN0
RmxhZ3M7Ci19Ci0KIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJuYWxzOjpkaXNwbGF5TGlzdEZv
ckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgdW5zaWduZWQgc2hvcnQgZmxhZ3MpCiB7CiAgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CkBAIC0zMjI1LDYgKzMyMTUs
MTAgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6OmRpc3BsYXlMaXN0Rm9yRWxlbWVu
dChFbGVtZW50JiBlbGVtZW50LCB1bnNpZ25lZAogICAgIGlmICghZWxlbWVudC5yZW5kZXJlcigp
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAKKyAg
ICBPcHRpb25TZXQ8RGlzcGxheUxpc3Q6OkFzVGV4dEZsYWc+IGRpc3BsYXlMaXN0RmxhZ3M7Cisg
ICAgaWYgKGZsYWdzICYgRElTUExBWV9MSVNUX0lOQ0xVREVfUExBVEZPUk1fT1BFUkFUSU9OUykK
KyAgICAgICAgZGlzcGxheUxpc3RGbGFncy5hZGQoRGlzcGxheUxpc3Q6OkFzVGV4dEZsYWc6Oklu
Y2x1ZGVQbGF0Zm9ybU9wZXJhdGlvbnMpOworCiAgICAgaWYgKCFlbGVtZW50LnJlbmRlcmVyKCkt
Pmhhc0xheWVyKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJy
b3IgfTsKIApAQCAtMzIzMiw3ICszMjI2LDcgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5h
bHM6OmRpc3BsYXlMaXN0Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCB1bnNpZ25lZAogICAg
IGlmICghbGF5ZXItPmlzQ29tcG9zaXRlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZEFjY2Vzc0Vycm9yIH07CiAKLSAgICByZXR1cm4gbGF5ZXItPmJhY2tpbmcoKS0+ZGlz
cGxheUxpc3RBc1RleHQodG9EaXNwbGF5TGlzdEZsYWdzKGZsYWdzKSk7CisgICAgcmV0dXJuIGxh
eWVyLT5iYWNraW5nKCktPmRpc3BsYXlMaXN0QXNUZXh0KGRpc3BsYXlMaXN0RmxhZ3MpOwogfQog
CiBFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6cmVwbGF5RGlzcGxheUxpc3RGb3JFbGVt
ZW50KEVsZW1lbnQmIGVsZW1lbnQsIHVuc2lnbmVkIHNob3J0IGZsYWdzKQpAQCAtMzI0Niw2ICsz
MjQwLDEwIEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJuYWxzOjpyZXBsYXlEaXNwbGF5TGlz
dEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgdW5zCiAgICAgaWYgKCFlbGVtZW50LnJlbmRl
cmVyKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsK
IAorICAgIE9wdGlvblNldDxEaXNwbGF5TGlzdDo6QXNUZXh0RmxhZz4gZGlzcGxheUxpc3RGbGFn
czsKKyAgICBpZiAoZmxhZ3MgJiBESVNQTEFZX0xJU1RfSU5DTFVERV9QTEFURk9STV9PUEVSQVRJ
T05TKQorICAgICAgICBkaXNwbGF5TGlzdEZsYWdzLmFkZChEaXNwbGF5TGlzdDo6QXNUZXh0Rmxh
Zzo6SW5jbHVkZVBsYXRmb3JtT3BlcmF0aW9ucyk7CisKICAgICBpZiAoIWVsZW1lbnQucmVuZGVy
ZXIoKS0+aGFzTGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nl
c3NFcnJvciB9OwogCkBAIC0zMjUzLDcgKzMyNTEsNyBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IElu
dGVybmFsczo6cmVwbGF5RGlzcGxheUxpc3RGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIHVu
cwogICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAKLSAgICByZXR1cm4gbGF5ZXItPmJhY2tpbmco
KS0+cmVwbGF5RGlzcGxheUxpc3RBc1RleHQodG9EaXNwbGF5TGlzdEZsYWdzKGZsYWdzKSk7Cisg
ICAgcmV0dXJuIGxheWVyLT5iYWNraW5nKCktPnJlcGxheURpc3BsYXlMaXN0QXNUZXh0KGRpc3Bs
YXlMaXN0RmxhZ3MpOwogfQogCiB2b2lkIEludGVybmFsczo6c2V0Rm9yY2VVc2VHbHlwaERpc3Bs
YXlMaXN0Rm9yVGVzdGluZyhib29sIGVuYWJsZWQpCkBAIC0zMjc1LDcgKzMyNzMsMTEgQEAgRXhj
ZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6OmNhY2hlZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4
dE5vZGUoTm9kZSYgbm9kZSwgdW4KICAgICBpZiAoIW5vZGUucmVuZGVyZXIoKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwogCi0gICAgcmV0dXJuIFRl
eHRQYWludGVyOjpjYWNoZWRHbHlwaERpc3BsYXlMaXN0c0ZvclRleHROb2RlQXNUZXh0KGRvd25j
YXN0PFRleHQ+KG5vZGUpLCB0b0Rpc3BsYXlMaXN0RmxhZ3MoZmxhZ3MpKTsKKyAgICBPcHRpb25T
ZXQ8RGlzcGxheUxpc3Q6OkFzVGV4dEZsYWc+IGRpc3BsYXlMaXN0RmxhZ3M7CisgICAgaWYgKGZs
YWdzICYgRElTUExBWV9MSVNUX0lOQ0xVREVfUExBVEZPUk1fT1BFUkFUSU9OUykKKyAgICAgICAg
ZGlzcGxheUxpc3RGbGFncy5hZGQoRGlzcGxheUxpc3Q6OkFzVGV4dEZsYWc6OkluY2x1ZGVQbGF0
Zm9ybU9wZXJhdGlvbnMpOworCisgICAgcmV0dXJuIFRleHRQYWludGVyOjpjYWNoZWRHbHlwaERp
c3BsYXlMaXN0c0ZvclRleHROb2RlQXNUZXh0KGRvd25jYXN0PFRleHQ+KG5vZGUpLCBkaXNwbGF5
TGlzdEZsYWdzKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpnYXJiYWdlQ29s
bGVjdERvY3VtZW50UmVzb3VyY2VzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CmluZGV4IDJlMTE0N2U5ZDY3My4uMTM3YmExNWRhN2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQ4MSw3ICs0ODEsNiBAQCBwdWJsaWM6CiAgICAgZW51bSB7CiAgICAgICAg
IC8vIFZhbHVlcyBuZWVkIHRvIGJlIGtlcHQgaW4gc3luYyB3aXRoIEludGVybmFscy5pZGwuCiAg
ICAgICAgIERJU1BMQVlfTElTVF9JTkNMVURFX1BMQVRGT1JNX09QRVJBVElPTlMgPSAxLAotICAg
ICAgICBESVNQTEFZX0xJU1RfSU5DTFVERV9SRVNPVVJDRV9JREVOVElGSUVSUyA9IDIsCiAgICAg
fTsKICAgICBFeGNlcHRpb25PcjxTdHJpbmc+IGRpc3BsYXlMaXN0Rm9yRWxlbWVudChFbGVtZW50
JiwgdW5zaWduZWQgc2hvcnQgZmxhZ3MpOwogICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gcmVwbGF5
RGlzcGxheUxpc3RGb3JFbGVtZW50KEVsZW1lbnQmLCB1bnNpZ25lZCBzaG9ydCBmbGFncyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggYjQ1ZDZmZWI1YmE2Li4xMjgyYjFi
ZDM2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTYxMCw3ICs2MTAs
NiBAQCB0eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNwb25zZSkgRmV0Y2hPYmplY3Q7
CiAKICAgICAvLyBGbGFncyBmb3IgZGlzcGxheUxpc3RGb3JFbGVtZW50LgogICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IERJU1BMQVlfTElTVF9JTkNMVURFX1BMQVRGT1JNX09QRVJBVElPTlMgPSAx
OwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IERJU1BMQVlfTElTVF9JTkNMVURFX1JFU09VUkNF
X0lERU5USUZJRVJTID0gMjsKICAgICAvLyBSZXR1cm5zIHRoZSByZWNvcmRlZCBkaXNwbGF5IGxp
c3QuCiAgICAgRE9NU3RyaW5nIGRpc3BsYXlMaXN0Rm9yRWxlbWVudChFbGVtZW50IGVsZW1lbnQs
IG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IGZsYWdzID0gMCk7CiAgICAgLy8gUmV0dXJucyB0aGUg
ZGlzcGxheSBsaXN0IHRoYXQgd2FzIGFjdHVhbGx5IHBhaW50ZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmgK
aW5kZXggYTgyZjNjMTEzMWNjLi41ZjUxYzQ1Yjk4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJjZUhlYXAuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01
OSwxMSArNTksNiBAQCBwdWJsaWM6CiAgICAgICAgIGFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIFdURk1vdmUoZm9udCksIG1fZm9udENvdW50KTsKICAgICB9CiAKLSAgICB2b2lkIGFk
ZChRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6RGVjb21wb3NlZEdseXBocz4mJiBkZWNvbXBvc2VkR2x5
cGhzKQotICAgIHsKLSAgICAgICAgYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV1RG
TW92ZShkZWNvbXBvc2VkR2x5cGhzKSwgbV9kZWNvbXBvc2VkR2x5cGhzQ291bnQpOwotICAgIH0K
LQogICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBnZXRJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25z
dCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIGdldDxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4o
eyByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfSk7
CkBAIC04NCwxMSArNzksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBnZXQ8V2ViQ29yZTo6
Rm9udD4oeyByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIG1fd2ViUHJvY2Vzc0lkZW50aWZp
ZXIgfSk7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6RGVjb21wb3NlZEdseXBocyogZ2V0RGVjb21w
b3NlZEdseXBocyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdCBmaW5hbAotICAgIHsKLSAgICAgICAgcmV0dXJuIGdl
dDxXZWJDb3JlOjpEZWNvbXBvc2VkR2x5cGhzPih7IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciB9KTsKLSAgICB9Ci0KICAgICBXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciogZ2V0SW1hZ2VCdWZmZXIoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiBnZXQ8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CkBAIC0xMTgsMTEgKzEwOCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdldDxXZWJD
b3JlOjpGb250PihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIFdl
YkNvcmU6OkRlY29tcG9zZWRHbHlwaHMqIGdldERlY29tcG9zZWRHbHlwaHMoUXVhbGlmaWVkUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBnZXQ8V2ViQ29yZTo6RGVjb21wb3NlZEdseXBocz4o
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICB9Ci0KICAgICBib29sIHJlbW92ZUlt
YWdlQnVmZmVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgewogICAgICAgICByZXR1cm4gcmVtb3ZlPFdlYkNvcmU6
OkltYWdlQnVmZmVyPihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIG1faW1hZ2VCdWZmZXJD
b3VudCk7CkBAIC0xMzgsMTEgKzEyMyw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlbW92
ZTxXZWJDb3JlOjpGb250PihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIG1fZm9udENvdW50
KTsKICAgICB9CiAKLSAgICBib29sIHJlbW92ZURlY29tcG9zZWRHbHlwaHMoUXVhbGlmaWVkUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAg
ICB7Ci0gICAgICAgIHJldHVybiByZW1vdmU8V2ViQ29yZTo6RGVjb21wb3NlZEdseXBocz4ocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX2RlY29tcG9zZWRHbHlwaHNDb3VudCk7Ci0gICAg
fQotCiAgICAgdm9pZCBkZWxldGVBbGxGb250cygpCiAgICAgewogICAgICAgICBjaGVja0ludmFy
aWFudHMoKTsKQEAgLTIxMyw3ICsxOTMsNiBAQCBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBp
bWFnZUJ1ZmZlckNvdW50ID0gMDsKICAgICAgICAgdW5zaWduZWQgbmF0aXZlSW1hZ2VDb3VudCA9
IDA7CiAgICAgICAgIHVuc2lnbmVkIGZvbnRDb3VudCA9IDA7Ci0gICAgICAgIHVuc2lnbmVkIGRl
Y29tcG9zZWRHbHlwaHNDb3VudCA9IDA7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6
IG1fcmVzb3VyY2VzKSB7CiAgICAgICAgICAgICBXVEY6OnN3aXRjaE9uKHBhaXIudmFsdWUsIFsm
XSAoc3RkOjptb25vc3RhdGUpIHsKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTIyMywyNSArMjAyLDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgKytuYXRp
dmVJbWFnZUNvdW50OwogICAgICAgICAgICAgfSwgWyZdIChjb25zdCBSZWY8V2ViQ29yZTo6Rm9u
dD4mKSB7CiAgICAgICAgICAgICAgICAgKytmb250Q291bnQ7Ci0gICAgICAgICAgICB9LCBbJl0g
KGNvbnN0IFJlZjxXZWJDb3JlOjpEZWNvbXBvc2VkR2x5cGhzPiYpIHsKLSAgICAgICAgICAgICAg
ICArK2RlY29tcG9zZWRHbHlwaHNDb3VudDsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAg
ICAgICAgIEFTU0VSVChpbWFnZUJ1ZmZlckNvdW50ID09IG1faW1hZ2VCdWZmZXJDb3VudCk7CiAg
ICAgICAgIEFTU0VSVChuYXRpdmVJbWFnZUNvdW50ID09IG1fbmF0aXZlSW1hZ2VDb3VudCk7CiAg
ICAgICAgIEFTU0VSVChmb250Q291bnQgPT0gbV9mb250Q291bnQpOwotICAgICAgICBBU1NFUlQo
ZGVjb21wb3NlZEdseXBoc0NvdW50ID09IG1fZGVjb21wb3NlZEdseXBoc0NvdW50KTsKLSAgICAg
ICAgQVNTRVJUKG1fcmVzb3VyY2VzLnNpemUoKSA9PSBtX2ltYWdlQnVmZmVyQ291bnQgKyBtX25h
dGl2ZUltYWdlQ291bnQgKyBtX2ZvbnRDb3VudCArIG1fZGVjb21wb3NlZEdseXBoc0NvdW50KTsK
KyAgICAgICAgQVNTRVJUKG1fcmVzb3VyY2VzLnNpemUoKSA9PSBtX2ltYWdlQnVmZmVyQ291bnQg
KyBtX25hdGl2ZUltYWdlQ291bnQgKyBtX2ZvbnRDb3VudCk7CiAjZW5kaWYKICAgICB9CiAKLSAg
ICB1c2luZyBSZXNvdXJjZSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om1vbm9zdGF0ZSwgUmVmPFdlYkNv
cmU6OkltYWdlQnVmZmVyPiwgUmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiwgUmVmPFdlYkNvcmU6
OkZvbnQ+LCBSZWY8V2ViQ29yZTo6RGVjb21wb3NlZEdseXBocz4+OworICAgIHVzaW5nIFJlc291
cmNlID0gc3RkOjp2YXJpYW50PHN0ZDo6bW9ub3N0YXRlLCBSZWY8V2ViQ29yZTo6SW1hZ2VCdWZm
ZXI+LCBSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+LCBSZWY8V2ViQ29yZTo6Rm9udD4+OwogICAg
IEhhc2hNYXA8UXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZXNvdXJjZT4g
bV9yZXNvdXJjZXM7CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNz
SWRlbnRpZmllcjsKICAgICB1bnNpZ25lZCBtX2ltYWdlQnVmZmVyQ291bnQgeyAwIH07CiAgICAg
dW5zaWduZWQgbV9uYXRpdmVJbWFnZUNvdW50IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fZm9udENv
dW50IHsgMCB9OwotICAgIHVuc2lnbmVkIG1fZGVjb21wb3NlZEdseXBoc0NvdW50IHsgMCB9Owor
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNw
cAppbmRleCBhMzAzYTVkNDBiNWIuLmM3Yzk1YjkyOWI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcApAQCAtMjU3LDMwICsyNTcsNiBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXI6OmRyYXdHbHlwaHNXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihEaXNwbGF5TGlzdDo6RAog
ICAgIGhhbmRsZUl0ZW0oV1RGTW92ZShpdGVtKSwgKmZvbnQpOwogfQogCi12b2lkIFJlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdEZWNvbXBvc2VkR2x5cGhzKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBmb250SWRlbnRpZmllciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRl
Y29tcG9zZWRHbHlwaHNJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kcykKLXsKLSAg
ICAvLyBJbW1lZGlhdGVseSB0dXJuIHRoZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgKHdo
aWNoIGlzIGVycm9yLXByb25lKSB0byBhIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciwKLSAgICAvLyBhbmQgdXNlIGEgaGVscGVyIGZ1bmN0aW9uIHRvIG1ha2Ugc3VyZSB0aGF0
IGRvbid0IGFjY2lkZW50YWxseSB1c2UgdGhlIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciAo
YmVjYXVzZSB0aGUgaGVscGVyIGZ1bmN0aW9uIGNhbid0IHNlZSBpdCkuCi0gICAgZHJhd0RlY29t
cG9zZWRHbHlwaHNXaXRoUXVhbGlmaWVkSWRlbnRpZmllcnMoeyBmb250SWRlbnRpZmllciwgbV93
ZWJQcm9jZXNzSWRlbnRpZmllciB9LCB7IGRlY29tcG9zZWRHbHlwaHNJZGVudGlmaWVyLCBtX3dl
YlByb2Nlc3NJZGVudGlmaWVyIH0sIGJvdW5kcyk7Ci19Ci0KLXZvaWQgUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlcjo6ZHJhd0RlY29tcG9zZWRHbHlwaHNXaXRoUXVhbGlmaWVkSWRlbnRpZmllcnMo
UXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZvbnRJZGVudGlmaWVyLCBRdWFs
aWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVjb21wb3NlZEdseXBoc0lkZW50aWZp
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzKQotewotICAgIFJlZlB0ciBmb250ID0gcmVzb3Vy
Y2VDYWNoZSgpLmNhY2hlZEZvbnQoZm9udElkZW50aWZpZXIpOwotICAgIGlmICghZm9udCkgewot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIFJlZlB0ciBkZWNvbXBvc2VkR2x5cGhzID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZERlY29t
cG9zZWRHbHlwaHMoZGVjb21wb3NlZEdseXBoc0lkZW50aWZpZXIpOwotICAgIGlmICghZGVjb21w
b3NlZEdseXBoc0lkZW50aWZpZXIpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBoYW5kbGVJdGVtKERpc3BsYXlMaXN0OjpEcmF3
RGVjb21wb3NlZEdseXBocyhmb250SWRlbnRpZmllci5vYmplY3QoKSwgZGVjb21wb3NlZEdseXBo
c0lkZW50aWZpZXIub2JqZWN0KCksIGJvdW5kcyksICpmb250LCAqZGVjb21wb3NlZEdseXBocyk7
Ci19Ci0KIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb25SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIEltbWVkaWF0ZWx5IHR1
cm4gdGhlIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciAod2hpY2ggaXMgZXJyb3ItcHJvbmUp
IHRvIGEgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyLmgKaW5kZXggNTk3OThmYmUwZDMzLi4zYzQ3MjQ5ZGJmNmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXIuaApAQCAtODAsNyArODAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGlw
T3V0VG9QYXRoKGNvbnN0IFdlYkNvcmU6OlBhdGgmKTsKICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0
IFdlYkNvcmU6OlBhdGgmLCBXZWJDb3JlOjpXaW5kUnVsZSk7CiAgICAgdm9pZCBkcmF3R2x5cGhz
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzJiYpOwotICAgIHZvaWQgZHJhd0RlY29t
cG9zZWRHbHlwaHMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZvbnRJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVjb21wb3NlZEds
eXBoc0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRzKTsKICAgICB2
b2lkIGRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiBzb3VyY2VJbWFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBJUEM6OkZpbHRlclJlZmVyZW5jZSk7CiAg
ICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0
aW5hdGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2Vi
Q29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKTsKICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJD
b3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwpAQCAtMTM2LDcgKzEzNSw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXRTdGF0ZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVycyhXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6U2V0U3RhdGUmJiwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjbGlwVG9J
bWFnZUJ1ZmZlcldpdGhRdWFsaWZpZWRJZGVudGlmaWVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3Qp
OwogICAgIHZvaWQgZHJhd0dseXBoc1dpdGhRdWFsaWZpZWRJZGVudGlmaWVyKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3R2x5cGhzJiYsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciBmb250SWRlbnRpZmllcik7Ci0gICAgdm9pZCBkcmF3RGVjb21wb3NlZEdseXBoc1dpdGhR
dWFsaWZpZWRJZGVudGlmaWVycyhRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
Zm9udElkZW50aWZpZXIsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZWNv
bXBvc2VkR2x5cGhzSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZHMp
OwogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyV2l0aFF1YWxpZmllZElkZW50aWZpZXIoUXVhbGlm
aWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKTsK
ICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVyKFF1YWxpZmll
ZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6Oklt
YWdlUGFpbnRpbmdPcHRpb25zJik7CiAgICAgdm9pZCBkcmF3UGF0dGVybldpdGhRdWFsaWZpZWRJ
ZGVudGlmaWVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
ci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyLm1lc3NhZ2VzLmluCmluZGV4IDZlMjBkYTRiMWM0OS4uMjgwMmZm
ZThmODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5tZXNzYWdlcy5pbgpA
QCAtNDUsNyArNDUsNiBAQCBtZXNzYWdlcyAtPiBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyIE5v
dFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICBDbGlwT3V0VG9QYXRoKFdlYkNvcmU6OlBhdGggcGF0
aCkKICAgICBDbGlwUGF0aChXZWJDb3JlOjpQYXRoIHBhdGgsIGVudW06dWludDhfdCBXZWJDb3Jl
OjpXaW5kUnVsZSB3aW5kUnVsZSkKICAgICBEcmF3R2x5cGhzKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3R2x5cGhzIGl0ZW0pCi0gICAgRHJhd0RlY29tcG9zZWRHbHlwaHMoV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZvbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgZGVjb21wb3NlZEdseXBoc0lkZW50aWZpZXIsIFdlYkNvcmU6
OkZsb2F0UmVjdCBib3VuZHMpCiAgICAgRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHNvdXJjZUltYWdlSWRl
bnRpZmllciwgV2ViQ29yZTo6RmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCwgSVBDOjpGaWx0ZXJS
ZWZlcmVuY2UgZmlsdGVyKQogICAgIERyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGbG9hdFJl
Y3QgZGVzdGluYXRpb25SZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3Qgc3JjUmVjdCwgc3RydWN0IFdl
YkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMpCiAgICAgRHJhd05hdGl2ZUltYWdl
KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIsIFdl
YkNvcmU6OkZsb2F0U2l6ZSBpbWFnZVNpemUsIFdlYkNvcmU6OkZsb2F0UmVjdCBkZXN0UmVjdCwg
V2ViQ29yZTo6RmxvYXRSZWN0IHNyY1JlY3QsIHN0cnVjdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5n
T3B0aW9ucyBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGJmNGY4NzM0Y2Y3
ZS4uNTI0NDMxMTQ3ZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0zNjksMjEgKzM2
OSw4IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVGb250KFJlZjxGb250PiYm
IGZvbnQpCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udFdpdGhRdWFsaWZp
ZWRJZGVudGlmaWVyKFJlZjxGb250PiYmIGZvbnQsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBmb250UmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwotICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZUZvbnQoV1RGTW92
ZShmb250KSwgZm9udFJlc291cmNlSWRlbnRpZmllcik7Ci19Ci0KLXZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Y2FjaGVEZWNvbXBvc2VkR2x5cGhzKFJlZjxEZWNvbXBvc2VkR2x5cGhzPiYm
IGRlY29tcG9zZWRHbHlwaHMpCi17Ci0gICAgLy8gSW1tZWRpYXRlbHkgdHVybiB0aGUgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyICh3aGljaCBpcyBlcnJvci1wcm9uZSkgdG8gYSBRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsCi0gICAgLy8gYW5kIHVzZSBhIGhlbHBlciBm
dW5jdGlvbiB0byBtYWtlIHN1cmUgdGhhdCBkb24ndCBhY2NpZGVudGFsbHkgdXNlIHRoZSBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgKGJlY2F1c2UgdGhlIGhlbHBlciBmdW5jdGlvbiBjYW4n
dCBzZWUgaXQpLgotICAgIGF1dG8gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0gZGVjb21w
b3NlZEdseXBocy0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7Ci0gICAgY2FjaGVEZWNv
bXBvc2VkR2x5cGhzV2l0aFF1YWxpZmllZElkZW50aWZpZXIoV1RGTW92ZShkZWNvbXBvc2VkR2x5
cGhzKSwgeyByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy0+d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9KTsKLX0KIAotdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpjYWNoZURlY29tcG9zZWRHbHlwaHNXaXRoUXVhbGlmaWVkSWRlbnRpZmll
cihSZWY8RGVjb21wb3NlZEdseXBocz4mJiBkZWNvbXBvc2VkR2x5cGhzLCBRdWFsaWZpZWRSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVjb21wb3NlZEdseXBoc0lkZW50aWZpZXIpCi17Ci0g
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hl
LmNhY2hlRGVjb21wb3NlZEdseXBocyhXVEZNb3ZlKGRlY29tcG9zZWRHbHlwaHMpLCBkZWNvbXBv
c2VkR2x5cGhzSWRlbnRpZmllcik7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlRm9u
dChXVEZNb3ZlKGZvbnQpLCBmb250UmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpkZWxldGVBbGxGb250cygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApp
bmRleCA1NGUwODFhZjczMzMuLjcwZDg1YTQyN2FmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBA
IC0xMTksNyArMTE5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFNoYXJlYWJsZUJpdG1hcEZv
ckltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2ViQ29y
ZTo6UHJlc2VydmVSZXNvbHV0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJiYpPiYmKTsKICAgICB2b2lkIGdldEZpbHRlcmVkSW1hZ2VGb3JJbWFnZUJ1
ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIElQQzo6RmlsdGVyUmVm
ZXJlbmNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUm
Jik+JiYpOwogICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9p
ZCBjYWNoZURlY29tcG9zZWRHbHlwaHMoUmVmPFdlYkNvcmU6OkRlY29tcG9zZWRHbHlwaHM+JiYp
OwogICAgIHZvaWQgY2FjaGVGb250KFJlZjxXZWJDb3JlOjpGb250PiYmKTsKICAgICB2b2lkIGRl
bGV0ZUFsbEZvbnRzKCk7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTEzMyw3ICsxMzIsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgZ2V0RGF0YUZvckltYWdlQnVmZmVyV2l0aFF1YWxpZmllZElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFF1
YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8dWludDhfdD4mJik+JiYpOwogICAgIHZvaWQgZ2V0U2hhcmVhYmxlQml0bWFwRm9y
SW1hZ2VCdWZmZXJXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYmKT4mJik7CiAgICAgdm9pZCBjYWNo
ZU5hdGl2ZUltYWdlV2l0aFF1YWxpZmllZElkZW50aWZpZXIoY29uc3QgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUmLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZv
aWQgY2FjaGVEZWNvbXBvc2VkR2x5cGhzV2l0aFF1YWxpZmllZElkZW50aWZpZXIoUmVmPFdlYkNv
cmU6OkRlY29tcG9zZWRHbHlwaHM+JiYsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2VXaXRoUXVhbGlmaWVkSWRlbnRp
ZmllcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY2Fj
aGVGb250V2l0aFF1YWxpZmllZElkZW50aWZpZXIoUmVmPFdlYkNvcmU6OkZvbnQ+JiYsIFF1YWxp
ZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQubWVzc2FnZXMuaW4KaW5kZXggMmQ4M2VhNTEwMTc4Li43MTdhZmE4NWY5ZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0zNCw3ICszNCw2IEBAIG1l
c3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCBTdHJlYW0gewog
ICAgIEdldEZpbHRlcmVkSW1hZ2VGb3JJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIsIElQQzo6RmlsdGVyUmVmZXJlbmNlIGZpbHRlcikg
LT4gKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlKSBTeW5jaHJvbm91cyBO
b3RTdHJlYW1FbmNvZGFibGVSZXBseQogICAgIENhY2hlTmF0aXZlSW1hZ2UoV2ViS2l0OjpTaGFy
ZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIE5vdFN0cmVhbUVuY29kYWJsZQog
ICAgIENhY2hlRm9udChJUEM6OkZvbnRSZWZlcmVuY2UgZm9udCkgTm90U3RyZWFtRW5jb2RhYmxl
Ci0gICAgQ2FjaGVEZWNvbXBvc2VkR2x5cGhzKFJlZjxXZWJDb3JlOjpEZWNvbXBvc2VkR2x5cGhz
PiBkZWNvbXBvc2VkR2x5cGhzKSBOb3RTdHJlYW1FbmNvZGFibGUKICAgICBEZWxldGVBbGxGb250
cygpCiAgICAgUmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNw
cAppbmRleCBmOWQwZjA2ZWMyNGYuLjAxZjNkMTM4ZTMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApA
QCAtNTMsMTIgKzUzLDYgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZUlt
YWdlKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgUXVhbGlmaWVkUmUKICAgICBtX3Jlc291cmNl
SGVhcC5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlKSk7CiB9
CiAKLXZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVEZWNvbXBvc2VkR2x5cGhzKFJlZjxE
ZWNvbXBvc2VkR2x5cGhzPiYmIGRlY29tcG9zZWRHbHlwaHMsIFF1YWxpZmllZFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi17Ci0gICAgQVNT
RVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSA9PSBkZWNvbXBvc2VkR2x5
cGhzLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7Ci0gICAgbV9yZXNvdXJjZUhlYXAu
YWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV1RGTW92ZShkZWNvbXBvc2VkR2x5cGhz
KSk7Ci19Ci0KIE5hdGl2ZUltYWdlKiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWROYXRpdmVJ
bWFnZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKSBjb25zdAogewogICAgIHJldHVybiBtX3Jlc291cmNlSGVhcC5nZXROYXRp
dmVJbWFnZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtODAsMTEgKzc0LDYgQEAg
Rm9udCogUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkRm9udChRdWFsaWZpZWRSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGUKICAgICByZXR1cm4gbV9yZXNvdXJjZUhlYXAuZ2V0Rm9u
dChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCi1EZWNvbXBvc2VkR2x5cGhzKiBS
ZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWREZWNvbXBvc2VkR2x5cGhzKFF1YWxpZmllZFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcmVzb3VyY2VIZWFwLmdldERlY29tcG9zZWRHbHlwaHMocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLX0KLQogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpk
ZWxldGVBbGxGb250cygpCiB7CiAgICAgbV9yZXNvdXJjZUhlYXAuZGVsZXRlQWxsRm9udHMoKTsK
QEAgLTk0LDggKzgzLDcgQEAgYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3Rl
UmVzb3VyY2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGkKIHsKICAgICBpZiAobV9y
ZXNvdXJjZUhlYXAucmVtb3ZlSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQogICAgICAgICB8fCBtX3Jlc291cmNlSGVhcC5yZW1vdmVOYXRpdmVJbWFnZShyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgICAgIHx8IG1fcmVzb3VyY2VIZWFwLnJlbW92ZUZvbnQo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotICAgICAgICB8fCBtX3Jlc291cmNlSGVhcC5y
ZW1vdmVEZWNvbXBvc2VkR2x5cGhzKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAg
ICAgIHx8IG1fcmVzb3VyY2VIZWFwLnJlbW92ZUZvbnQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBDYWNoaW5nIHRoZSByZW1vdGUg
cmVzb3VyY2Ugc2hvdWxkIGhhdmUgaGFwcGVuZWQgYmVmb3JlIHJlbGVhc2luZyBpdC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZS5oCmluZGV4IGIwN2JkYTM0MGQxMS4uZjhiZDQ4NGZjZjI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgK
QEAgLTQwLDE3ICs0MCwxMiBAQCBwdWJsaWM6CiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZShXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcik7CiAKICAgICB2b2lk
IGNhY2hlSW1hZ2VCdWZmZXIoUmVmPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmLCBRdWFsaWZpZWRS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShS
ZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7Ci0gICAgdm9pZCBjYWNoZUZvbnQoUmVmPFdlYkNvcmU6OkZvbnQ+JiYsIFF1YWxp
ZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBjYWNoZURlY29tcG9z
ZWRHbHlwaHMoUmVmPFdlYkNvcmU6OkRlY29tcG9zZWRHbHlwaHM+JiYsIFF1YWxpZmllZFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0KICAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogY2Fj
aGVkSW1hZ2VCdWZmZXIoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25z
dDsKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoUmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiYm
LCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIFdlYkNvcmU6Ok5h
dGl2ZUltYWdlKiBjYWNoZWROYXRpdmVJbWFnZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpIGNvbnN0OwotICAgIFdlYkNvcmU6OkZvbnQqIGNhY2hlZEZvbnQoUXVhbGlmaWVk
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdDsKLSAgICBXZWJDb3JlOjpEZWNvbXBv
c2VkR2x5cGhzKiBjYWNoZWREZWNvbXBvc2VkR2x5cGhzKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikgY29uc3Q7Ci0KICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNvdXJj
ZUltYWdlPiBjYWNoZWRTb3VyY2VJbWFnZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpIGNvbnN0OwotCisgICAgdm9pZCBjYWNoZUZvbnQoUmVmPFdlYkNvcmU6OkZvbnQ+JiYs
IFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgV2ViQ29yZTo6Rm9u
dCogY2FjaGVkRm9udChRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0
OwogICAgIHZvaWQgZGVsZXRlQWxsRm9udHMoKTsKICAgICBib29sIHJlbGVhc2VSZW1vdGVSZXNv
dXJjZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAzYjlkYWZjNmU4MzIuLjExN2Q1MTlk
MWI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0xLDQg
KzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNDRlNmNmNTllYjFiLi5k
MzM1ODVlYzRjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRE9NQ2FjaGVFbmdpbmUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RhdGFiYXNlRGV0YWlscy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGVjb21wb3NlZEdseXBocy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0RpY3Rpb25hcnlQb3B1cEluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlM
aXN0SXRlbXMuaD4KQEAgLTExMjMsMzMgKzExMjIsNiBAQCBzdGQ6Om9wdGlvbmFsPFJlZjxGb250
Pj4gQXJndW1lbnRDb2RlcjxGb250Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgcmV0
dXJuIEZvbnQ6OmNyZWF0ZShwbGF0Zm9ybURhdGEudmFsdWUoKSwgb3JpZ2luLnZhbHVlKCksIGlz
SW50ZXJzdGl0aWFsLnZhbHVlKCksIHZpc2liaWxpdHkudmFsdWUoKSwgaXNUZXh0T3JpZW50YXRp
b25GYWxsYmFjay52YWx1ZSgpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCi12
b2lkIEFyZ3VtZW50Q29kZXI8RGVjb21wb3NlZEdseXBocz46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBEZWNvbXBvc2VkR2x5cGhzJiBkZWNvbXBvc2VkR2x5cGhzKQotewotICAgIGVu
Y29kZXIgPDwgZGVjb21wb3NlZEdseXBocy5wb3NpdGlvbmVkR2x5cGhzKCk7Ci0gICAgZW5jb2Rl
ciA8PCBkZWNvbXBvc2VkR2x5cGhzLmJvdW5kcygpOwotICAgIGVuY29kZXIgPDwgZGVjb21wb3Nl
ZEdseXBocy5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKLX0KLQotc3RkOjpvcHRpb25h
bDxSZWY8RGVjb21wb3NlZEdseXBocz4+IEFyZ3VtZW50Q29kZXI8RGVjb21wb3NlZEdseXBocz46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIHN0ZDo6b3B0aW9uYWw8UG9zaXRpb25l
ZEdseXBocz4gcG9zaXRpb25lZEdseXBoczsKLSAgICBkZWNvZGVyID4+IHBvc2l0aW9uZWRHbHlw
aHM7Ci0gICAgaWYgKCFwb3NpdGlvbmVkR2x5cGhzKQotICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotCi0gICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGJvdW5kczsKLSAgICBkZWNvZGVy
ID4+IGJvdW5kczsKLSAgICBpZiAoIWJvdW5kcykKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLQotICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAgZGVjb2RlciA+PiByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXI7Ci0gICAgaWYgKCFyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gRGVjb21wb3NlZEdseXBoczo6
Y3JlYXRlKFdURk1vdmUoKnBvc2l0aW9uZWRHbHlwaHMpLCAqYm91bmRzLCAqcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKLX0KLQogdm9pZCBBcmd1bWVudENvZGVyPEN1cnNvcj46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDdXJzb3ImIGN1cnNvcikKIHsKICAgICBlbmNvZGVy
IDw8IGN1cnNvci50eXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCmluZGV4IDAxYWVlOWViMjZlMi4uMzdmMjhkYTA3ZDMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTI4LDcgKzEyOCw2IEBA
IGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CiBjbGFzcyBE
YXRhYmFzZURldGFpbHM7CiBjbGFzcyBEcmFnRGF0YTsKLWNsYXNzIERlY29tcG9zZWRHbHlwaHM7
CiBjbGFzcyBGaWxlOwogY2xhc3MgRmlsdGVyT3BlcmF0aW9uOwogY2xhc3MgRmlsdGVyT3BlcmF0
aW9uczsKQEAgLTQwNiwxMSArNDA1LDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpGb250PiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YT4gZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImKTsKIH07CiAKLXRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RGVjb21wb3NlZEdseXBocz4gewot
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6RGVjb21wb3Nl
ZEdseXBocyYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpEZWNvbXBv
c2VkR2x5cGhzPj4gZGVjb2RlKERlY29kZXImKTsKLX07Ci0KIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiB7CiAgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclBy
b3h5LmNwcAppbmRleCA5N2NkYThhN2U3YzYuLjE0ZjM2ODY3MmI4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcApAQCAtNDUsNyArNDUsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyUHJveHk6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eShJbWFnZUJ1
ZmZlciYgaW1hZ2VCdWZmZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVuZGVyaW5n
QmFja2VuZCwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBpbml0aWFsQ1RNKQotICAgIDogRGlzcGxheUxpc3Q6OlJlY29yZGVyKHsgfSwgaW5pdGlh
bENsaXAsIGluaXRpYWxDVE0sIERyYXdHbHlwaHNNb2RlOjpEZWNvbnN0cnVjdFVzaW5nRHJhd0ds
eXBoc0NvbW1hbmRzKQorICAgIDogRGlzcGxheUxpc3Q6OlJlY29yZGVyKHsgfSwgaW5pdGlhbENs
aXAsIGluaXRpYWxDVE0sIERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzKQogICAgICwgbV9kZXN0
aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIoaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKCkpCiAgICAgLCBtX2ltYWdlQnVmZmVyKGltYWdlQnVmZmVyKQogICAgICwgbV9yZW5k
ZXJpbmdCYWNrZW5kKHJlbmRlcmluZ0JhY2tlbmQpCkBAIC0xODUsMTEgKzE4NSw2IEBAIHZvaWQg
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmREcmF3R2x5cGhzKGNvbnN0IEZv
bnQmIGZvbnQsIGNvbnN0IEdsCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlcjo6RHJhd0dseXBocyhEaXNwbGF5TGlzdDo6RHJhd0dseXBocyB7IGZvbnQsIGdseXBo
cywgYWR2YW5jZXMsIGNvdW50LCBsb2NhbEFuY2hvciwgbW9kZSB9KSk7CiB9CiAKLXZvaWQgUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmREcmF3RGVjb21wb3NlZEdseXBocyhj
b25zdCBGb250JiBmb250LCBjb25zdCBEZWNvbXBvc2VkR2x5cGhzJiBkZWNvbXBvc2VkR2x5cGhz
KQotewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OkRyYXdE
ZWNvbXBvc2VkR2x5cGhzKGZvbnQucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGRlY29t
cG9zZWRHbHlwaHMucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGRlY29tcG9zZWRHbHlw
aHMuYm91bmRzKCkpKTsKLX0KLQogdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6
OnJlY29yZERyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlcjo6RHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOwpAQCAtNDM5
LDE3ICs0MzQsNiBAQCBib29sIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3Jk
UmVzb3VyY2VVc2UoRm9udCYgZm9udCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFJlc291cmNlVXNlKERlY29tcG9zZWRH
bHlwaHMmIGRlY29tcG9zZWRHbHlwaHMpCi17Ci0gICAgaWYgKFVOTElLRUxZKCFtX3JlbmRlcmlu
Z0JhY2tlbmQpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgbV9yZW5kZXJpbmdCYWNrZW5kLT5yZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkoKS5yZWNvcmREZWNvbXBvc2VkR2x5cGhzVXNlKGRlY29tcG9zZWRHbHlwaHMp
OwotICAgIHJldHVybiB0cnVlOwotfQotCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQ
cm94eTo6Zmx1c2hDb250ZXh0KEdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllciBpZGVudGlm
aWVyKQogewogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OkZs
dXNoQ29udGV4dChpZGVudGlmaWVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyUHJveHkuaAppbmRleCA1ZDM0MTY3NmQ5MDkuLmRlNjVkZTY5MDQzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCkBAIC04NCw3ICs4NCw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCByZWNvcmRDbGlwUGF0aChjb25zdCBXZWJDb3JlOjpQYXRoJiwgV2ViQ29y
ZTo6V2luZFJ1bGUpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkRHJhd0ZpbHRlcmVkSW1hZ2VCdWZm
ZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXIqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNvdXJj
ZUltYWdlUmVjdCwgV2ViQ29yZTo6RmlsdGVyJikgZmluYWw7CiAgICAgdm9pZCByZWNvcmREcmF3
R2x5cGhzKGNvbnN0IFdlYkNvcmU6OkZvbnQmLCBjb25zdCBXZWJDb3JlOjpHbHlwaEJ1ZmZlckds
eXBoKiwgY29uc3QgV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBXZWJDb3JlOjpGb250U21v
b3RoaW5nTW9kZSkgZmluYWw7Ci0gICAgdm9pZCByZWNvcmREcmF3RGVjb21wb3NlZEdseXBocyhj
b25zdCBXZWJDb3JlOjpGb250JiwgY29uc3QgV2ViQ29yZTo6RGVjb21wb3NlZEdseXBocyYpIGZp
bmFsOwogICAgIHZvaWQgcmVjb3JkRHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVy
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZp
bmFsOwogICAgIHZvaWQgcmVjb3JkRHJhd05hdGl2ZUltYWdlKFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdP
cHRpb25zJikgZmluYWw7CiAgICAgdm9pZCByZWNvcmREcmF3U3lzdGVtSW1hZ2UoV2ViQ29yZTo6
U3lzdGVtSW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKQEAgLTEzNCw3ICsxMzMs
NiBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVjb3JkUmVzb3VyY2VVc2UoV2ViQ29yZTo6SW1hZ2VC
dWZmZXImKSBmaW5hbDsKICAgICBib29sIHJlY29yZFJlc291cmNlVXNlKGNvbnN0IFdlYkNvcmU6
OlNvdXJjZUltYWdlJikgZmluYWw7CiAgICAgYm9vbCByZWNvcmRSZXNvdXJjZVVzZShXZWJDb3Jl
OjpGb250JikgZmluYWw7Ci0gICAgYm9vbCByZWNvcmRSZXNvdXJjZVVzZShXZWJDb3JlOjpEZWNv
bXBvc2VkR2x5cGhzJikgZmluYWw7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+
IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdNb2RlPiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpS
ZW5kZXJpbmdNZXRob2Q+KSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VC
dWZmZXI+IGNyZWF0ZUFsaWduZWRJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
LCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlJlbmRlcmluZ01ldGhvZD4pIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IGI3NDMyZTBiNTE0OS4uMTg3ZDg0YTQ3YTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC0yNjEsMTEgKzI2
MSw2IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZUZvbnQoUmVmPEZv
bnQ+JiYgZm9udCkKICAgICBzZW5kVG9TdHJlYW0oTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OkNhY2hlRm9udChXVEZNb3ZlKGZvbnQpKSk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpjYWNoZURlY29tcG9zZWRHbHlwaHMoUmVmPERlY29tcG9zZWRHbHlw
aHM+JiYgZGVjb21wb3NlZEdseXBocykKLXsKLSAgICBzZW5kVG9TdHJlYW0oTWVzc2FnZXM6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNhY2hlRGVjb21wb3NlZEdseXBocyhXVEZNb3ZlKGRlY29t
cG9zZWRHbHlwaHMpKSk7Ci19Ci0KIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpk
ZWxldGVBbGxGb250cygpCiB7CiAgICAgc2VuZFRvU3RyZWFtKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpEZWxldGVBbGxGb250cygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oCmluZGV4IDAyZDE1YjliYzNiNS4uOGNlMThhZTA0ZGU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTkzLDcgKzkzLDYgQEAgcHVibGljOgog
ICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gZ2V0RmlsdGVyZWRJbWFnZShXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbHRlciYpOwogICAgIHZvaWQgY2Fj
aGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNoZUZvbnQoUmVmPFdlYkNv
cmU6OkZvbnQ+JiYpOwotICAgIHZvaWQgY2FjaGVEZWNvbXBvc2VkR2x5cGhzKFJlZjxXZWJDb3Jl
OjpEZWNvbXBvc2VkR2x5cGhzPiYmKTsKICAgICB2b2lkIGRlbGV0ZUFsbEZvbnRzKCk7CiAgICAg
dm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKICAgICB2b2lkIG1hcmtTdXJmYWNlc1ZvbGF0aWxlKFZlY3RvcjxXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCBtYWRlQWxsVm9sYXRpbGUpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNw
cAppbmRleCBhYWYwN2QxNzU5MmEuLmU5MTVjMjk4MjZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5LmNwcApAQCAtNDMsNyArNDMsNiBAQCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHk6On5SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKQogewogICAgIGNsZWFyTmF0aXZlSW1hZ2VN
YXAoKTsKICAgICBjbGVhckltYWdlQnVmZmVyQmFja2VuZHMoKTsKLSAgICBjbGVhckRlY29tcG9z
ZWRHbHlwaHNNYXAoKTsKIH0KIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hl
SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKQpAQCAtMTMzLDE0
ICsxMzIsNiBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVjb3JkRm9udFVzZShG
b250JiBmb250KQogICAgIH0KIH0KIAotdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJl
Y29yZERlY29tcG9zZWRHbHlwaHNVc2UoRGVjb21wb3NlZEdseXBocyYgZGVjb21wb3NlZEdseXBo
cykKLXsKLSAgICBpZiAobV9kZWNvbXBvc2VkR2x5cGhzLmFkZChkZWNvbXBvc2VkR2x5cGhzLnJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZWNvbXBvc2VkR2x5cGhzKS5pc05ld0VudHJ5
KSB7Ci0gICAgICAgIGRlY29tcG9zZWRHbHlwaHMuYWRkT2JzZXJ2ZXIoKnRoaXMpOwotICAgICAg
ICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jYWNoZURlY29tcG9zZWRHbHlwaHMoZGVj
b21wb3NlZEdseXBocyk7Ci0gICAgfQotfQotCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eTo6cmVsZWFzZU5hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fbmF0aXZlSW1h
Z2VzLmZpbmQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTE2NCwxMyArMTU1LDYg
QEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnByZXBhcmVGb3JOZXh0UmVuZGVyaW5n
VXBkYXRlKCkKICAgICBtX251bWJlck9mRm9udHNVc2VkSW5DdXJyZW50UmVuZGVyaW5nVXBkYXRl
ID0gMDsKIH0KIAotdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VEZWNvbXBv
c2VkR2x5cGhzKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpCi17Ci0gICAgYm9vbCByZW1vdmVkID0gbV9kZWNvbXBvc2VkR2x5cGhzLnJlbW92
ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIFJFTEVBU0VfQVNTRVJUKHJlbW92
ZWQpOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNv
dXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotfQotCiB2b2lkIFJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eTo6cmVsZWFzZUFsbFJlbW90ZUZvbnRzKCkKIHsKICAgICBmb3IgKGF1dG8m
IGZvbnRTdGF0ZSA6IG1fZm9udHMpCkBAIC0xOTQsMTEgKzE3OCw2IEBAIHZvaWQgUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OjpjbGVhckltYWdlQnVmZmVyQmFja2VuZHMoKQogICAgIH0KIH0KIAot
dm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNsZWFyRGVjb21wb3NlZEdseXBoc01hcCgp
Ci17Ci0gICAgbV9kZWNvbXBvc2VkR2x5cGhzLmNsZWFyKCk7Ci19Ci0KIHZvaWQgUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZvckZvbnRzKCkKIHsKICAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1pbmltdW1SZW5kZXJpbmdVcGRhdGVDb3VudFRv
S2VlcEZvbnRBbGl2ZSA9IDQ7CkBAIC0yMzMsNyArMjEyLDYgQEAgdm9pZCBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk6OnJlbW90ZVJlc291cmNlQ2FjaGVXYXNEZXN0cm95ZWQoKQogICAgIGNsZWFy
TmF0aXZlSW1hZ2VNYXAoKTsKICAgICBjbGVhckZvbnRNYXAoKTsKICAgICBjbGVhckltYWdlQnVm
ZmVyQmFja2VuZHMoKTsKLSAgICBjbGVhckRlY29tcG9zZWRHbHlwaHNNYXAoKTsKIAogICAgIGZv
ciAoYXV0byYgaW1hZ2VCdWZmZXIgOiBtX2ltYWdlQnVmZmVycy52YWx1ZXMoKSkgewogICAgICAg
ICBpZiAoIWltYWdlQnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKaW5kZXgg
NmRhNmVlOGJhZDZiLi5hZjJkNmQyYmI1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuaApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1
ZGUgIlJlbmRlcmluZ1VwZGF0ZUlELmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9EZWNvbXBvc2VkR2x5
cGhzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KQEAgLTQyLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTsKIAotY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IDog
cHVibGljIFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpPYnNlcnZlciwgcHVibGljIFdlYkNvcmU6OkRl
Y29tcG9zZWRHbHlwaHM6Ok9ic2VydmVyIHsKK2NsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eSA6IHB1YmxpYyBXZWJDb3JlOjpOYXRpdmVJbWFnZTo6T2JzZXJ2ZXIgewogcHVibGljOgogICAg
IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmKTsK
ICAgICB+UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCk7CkBAIC01NCw3ICs1Myw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlY29yZE5hdGl2ZUltYWdlVXNlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJik7
CiAgICAgdm9pZCByZWNvcmRGb250VXNlKFdlYkNvcmU6OkZvbnQmKTsKICAgICB2b2lkIHJlY29y
ZEltYWdlQnVmZmVyVXNlKFdlYkNvcmU6OkltYWdlQnVmZmVyJik7Ci0gICAgdm9pZCByZWNvcmRE
ZWNvbXBvc2VkR2x5cGhzVXNlKFdlYkNvcmU6OkRlY29tcG9zZWRHbHlwaHMmKTsKIAogICAgIHZv
aWQgZmluYWxpemVSZW5kZXJpbmdVcGRhdGUoKTsKIApAQCAtNjgsMTIgKzY2LDkgQEAgcHJpdmF0
ZToKICAgICB1c2luZyBJbWFnZUJ1ZmZlckhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2Vha1B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4+Owog
ICAgIHVzaW5nIE5hdGl2ZUltYWdlSGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCBXZWFrUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPj47CiAgICAg
dXNpbmcgRm9udEhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgUmVuZGVyaW5nVXBkYXRlSUQ+OwotICAgIHVzaW5nIERlY29tcG9zZWRHbHlwaHNI
YXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdl
YWtQdHI8V2ViQ29yZTo6RGVjb21wb3NlZEdseXBocz4+OwogICAgIAogICAgIHZvaWQgcmVsZWFz
ZU5hdGl2ZUltYWdlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCByZWxlYXNlRGVjb21wb3NlZEdseXBocyhXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJOYXRpdmVJbWFnZU1h
cCgpOwotICAgIHZvaWQgY2xlYXJEZWNvbXBvc2VkR2x5cGhzTWFwKCk7CiAKICAgICB2b2lkIGZp
bmFsaXplUmVuZGVyaW5nVXBkYXRlRm9yRm9udHMoKTsKICAgICB2b2lkIHByZXBhcmVGb3JOZXh0
UmVuZGVyaW5nVXBkYXRlKCk7CkBAIC04Myw3ICs3OCw2IEBAIHByaXZhdGU6CiAgICAgSW1hZ2VC
dWZmZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOwogICAgIE5hdGl2ZUltYWdlSGFzaE1hcCBtX25h
dGl2ZUltYWdlczsKICAgICBGb250SGFzaE1hcCBtX2ZvbnRzOwotICAgIERlY29tcG9zZWRHbHlw
aHNIYXNoTWFwIG1fZGVjb21wb3NlZEdseXBoczsKIAogICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZG
b250c1VzZWRJbkN1cnJlbnRSZW5kZXJpbmdVcGRhdGUgeyAwIH07CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3RzL2dseXBoLWRpc3BsYXktbGlz
dC1jb2xvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZ2x5cGgtZGlzcGxh
eS1saXN0cy9nbHlwaC1kaXNwbGF5LWxpc3QtY29sb3ItZXhwZWN0ZWQudHh0CmluZGV4IGM1YzZm
ZDE5MTMxNC4uODk5Yjk5YjUwY2M3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQv
Z2x5cGgtZGlzcGxheS1saXN0cy9nbHlwaC1kaXNwbGF5LWxpc3QtY29sb3ItZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3RzL2dseXBoLWRp
c3BsYXktbGlzdC1jb2xvci1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw2IEBACiAKLShkcmF3LWRl
Y29tcG9zZWQtZ2x5cGhzIGV4dGVudCBhdCAoMCwwKSBzaXplIDB4MCkKKyhkcmF3LWdseXBocwor
ICAobG9jYWwtYW5jaG9yICgwLDApKQorICAoYW5jaG9yLXBvaW50ICgwLDApKQorICAobGVuZ3Ro
IDkpIGV4dGVudCBhdCAoMCwwKSBzaXplIDB4MCkKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdHMvZ2x5cGgtZGlzcGxheS1saXN0LWNvbHItdW5z
aGFyZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2dseXBoLWRpc3BsYXkt
bGlzdHMvZ2x5cGgtZGlzcGxheS1saXN0LWNvbHItdW5zaGFyZWQtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmFhNmE0ZTAyMDYuLjAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0cy9nbHlwaC1kaXNwbGF5
LWxpc3QtY29sci11bnNoYXJlZC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSArMCww
IEBACi1QQVNTOiBEaXNwbGF5IGxpc3RzIGRvIG5vdCBtYXRjaC4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3RzL2dseXBoLWRpc3BsYXktbGlzdC1j
b2xyLXVuc2hhcmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1s
aXN0cy9nbHlwaC1kaXNwbGF5LWxpc3QtY29sci11bnNoYXJlZC5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkNWRhMTVjOWQ3NDUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0cy9nbHlwaC1kaXNwbGF5LWxpc3QtY29s
ci11bnNoYXJlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08bWV0YSBjaGFyc2V0PXV0Zi04PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1
bm5lcikgewotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwotfQotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgaW50ZXJuYWxzLnNl
dEZvcmNlVXNlR2x5cGhEaXNwbGF5TGlzdEZvclRlc3RpbmcodHJ1ZSk7Ci08L3NjcmlwdD4KLTxi
b2R5IG9ubG9hZD0icnVuKCkiPgotPHN0eWxlPgotQGZvbnQtZmFjZSB7Ci0gICAgZm9udC1mYW1p
bHk6ICJBaGVtIENPTFIiOwotICAgIHNyYzogdXJsKCIuLi9yZXNvdXJjZXMvQWhlbS1DT0xSLnR0
ZiIpIGZvcm1hdCgidHJ1ZXR5cGUiKTsKLX0KLXNwYW4geyBmb250OiA0OHB4IEFoZW0gQ09MUjsg
fQotPC9zdHlsZT4KLTxkaXYgaWQ9Y29udGFpbmVyPgotICAgIDxzcGFuIGlkPWZpcnN0PkE8L3Nw
YW4+Ci0gICAgPHNwYW4gaWQ9c2Vjb25kPkE8L3NwYW4+Ci08L2Rpdj4KLTxwcmUgaWQ9bG9nPjwv
cHJlPgotPHNjcmlwdD4KLWZ1bmN0aW9uIHJ1bigpIHsKLSAgICByZXF1ZXN0QW5pbWF0aW9uRnJh
bWUoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICAgICAg
bGV0IGZpcnN0RGlzcGxheUxpc3RXaXRoUmVzb3VyY2VJRHMgPSBpbnRlcm5hbHMuY2FjaGVkR2x5
cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZShmaXJzdC5maXJzdENoaWxkLCBpbnRlcm5hbHMuRElT
UExBWV9MSVNUX0lOQ0xVREVfUkVTT1VSQ0VfSURFTlRJRklFUlMpOwotICAgICAgICAgICAgICAg
IGxldCBzZWNvbmREaXNwbGF5TGlzdFdpdGhSZXNvdXJjZUlEcyA9IGludGVybmFscy5jYWNoZWRH
bHlwaERpc3BsYXlMaXN0c0ZvclRleHROb2RlKHNlY29uZC5maXJzdENoaWxkLCBpbnRlcm5hbHMu
RElTUExBWV9MSVNUX0lOQ0xVREVfUkVTT1VSQ0VfSURFTlRJRklFUlMpOwotICAgICAgICAgICAg
ICAgIGlmIChmaXJzdERpc3BsYXlMaXN0V2l0aFJlc291cmNlSURzID09IHNlY29uZERpc3BsYXlM
aXN0V2l0aFJlc291cmNlSURzKQotICAgICAgICAgICAgICAgICAgICBsb2cudGV4dENvbnRlbnQg
PSAiRkFJTDogRGlzcGxheSBsaXN0cyBtYXRjaCBidXQgc2hvdWxkbid0LlxuIiArIGludGVybmFs
cy5jYWNoZWRHbHlwaERpc3BsYXlMaXN0c0ZvclRleHROb2RlKGZpcnN0LmZpcnN0Q2hpbGQpOwot
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbG9nLnRleHRDb250ZW50
ID0gIlBBU1M6IERpc3BsYXkgbGlzdHMgZG8gbm90IG1hdGNoLiI7Ci0gICAgICAgICAgICAgICAg
aW50ZXJuYWxzLnNldEZvcmNlVXNlR2x5cGhEaXNwbGF5TGlzdEZvclRlc3RpbmcoZmFsc2UpOwot
ICAgICAgICAgICAgICAgIGNvbnRhaW5lci5yZW1vdmUoKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci08L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3RzL2dseXBoLWRp
c3BsYXktbGlzdC1zY2FsZWQtdW5zaGFyZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdHMvZ2x5cGgtZGlzcGxheS1saXN0LXNjYWxlZC11bnNo
YXJlZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2YWE2YTRl
MDIwNi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9nbHlwaC1kaXNw
bGF5LWxpc3RzL2dseXBoLWRpc3BsYXktbGlzdC1zY2FsZWQtdW5zaGFyZWQtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotUEFTUzogRGlzcGxheSBsaXN0cyBkbyBub3Qg
bWF0Y2guCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1s
aXN0cy9nbHlwaC1kaXNwbGF5LWxpc3Qtc2NhbGVkLXVuc2hhcmVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0cy9nbHlwaC1kaXNwbGF5LWxpc3Qtc2NhbGVk
LXVuc2hhcmVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmNjU2ODM0Mzcz
NC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5
LWxpc3RzL2dseXBoLWRpc3BsYXktbGlzdC1zY2FsZWQtdW5zaGFyZWQuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDQyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYt
OD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLX0KLWlmICh3aW5k
b3cuaW50ZXJuYWxzKQotICAgIGludGVybmFscy5zZXRGb3JjZVVzZUdseXBoRGlzcGxheUxpc3RG
b3JUZXN0aW5nKHRydWUpOwotPC9zY3JpcHQ+Ci08Ym9keSBvbmxvYWQ9InJ1bigpIj4KLTxzdHls
ZT4KLSNjb250YWluZXIgeyBtYXJnaW46IDNlbTsgfQotI2NvbnRhaW5lciA+IHNwYW4geyBwb3Np
dGlvbjogYWJzb2x1dGU7IHBhZGRpbmc6IDNlbTsgfQotI2ZpcnN0IHsgdHJhbnNmb3JtOiBzY2Fs
ZSgxLjUpOyB9Ci0jc2Vjb25kIHsgdHJhbnNmb3JtOiBzY2FsZSgyKTsgfQotPC9zdHlsZT4KLTxk
aXYgaWQ9Y29udGFpbmVyPgotICAgIDxzcGFuIGlkPWZpcnN0PlNvbWUg8J+YgCB0ZXh0PC9zcGFu
PgotICAgIDxzcGFuIGlkPXNlY29uZD5Tb21lIPCfmIAgdGV4dDwvc3Bhbj4KLTwvZGl2PgotPHBy
ZSBpZD1sb2c+PC9wcmU+Ci08c2NyaXB0PgotZnVuY3Rpb24gcnVuKCkgewotICAgIHJlcXVlc3RB
bmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKLSAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1l
KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAg
ICAgICAgICAgICBsZXQgZmlyc3REaXNwbGF5TGlzdFdpdGhSZXNvdXJjZUlEcyA9IGludGVybmFs
cy5jYWNoZWRHbHlwaERpc3BsYXlMaXN0c0ZvclRleHROb2RlKGZpcnN0LmZpcnN0Q2hpbGQsIGlu
dGVybmFscy5ESVNQTEFZX0xJU1RfSU5DTFVERV9SRVNPVVJDRV9JREVOVElGSUVSUyk7Ci0gICAg
ICAgICAgICAgICAgbGV0IHNlY29uZERpc3BsYXlMaXN0V2l0aFJlc291cmNlSURzID0gaW50ZXJu
YWxzLmNhY2hlZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGUoc2Vjb25kLmZpcnN0Q2hpbGQs
IGludGVybmFscy5ESVNQTEFZX0xJU1RfSU5DTFVERV9SRVNPVVJDRV9JREVOVElGSUVSUyk7Ci0g
ICAgICAgICAgICAgICAgaWYgKGZpcnN0RGlzcGxheUxpc3RXaXRoUmVzb3VyY2VJRHMgPT0gc2Vj
b25kRGlzcGxheUxpc3RXaXRoUmVzb3VyY2VJRHMpCi0gICAgICAgICAgICAgICAgICAgIGxvZy50
ZXh0Q29udGVudCA9ICJGQUlMOiBEaXNwbGF5IGxpc3RzIG1hdGNoIGJ1dCBzaG91bGRuJ3QuXG4i
ICsgaW50ZXJuYWxzLmNhY2hlZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGUoZmlyc3QuZmly
c3RDaGlsZCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBsb2cu
dGV4dENvbnRlbnQgPSAiUEFTUzogRGlzcGxheSBsaXN0cyBkbyBub3QgbWF0Y2guIjsKLSAgICAg
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0Rm9yY2VVc2VHbHlwaERpc3BsYXlMaXN0Rm9yVGVzdGlu
ZyhmYWxzZSk7Ci0gICAgICAgICAgICAgICAgY29udGFpbmVyLnJlbW92ZSgpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLTwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlz
dHMvZ2x5cGgtZGlzcGxheS1saXN0LXNoYWRvdy11bnNoYXJlZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0cy9nbHlwaC1kaXNwbGF5LWxpc3Qt
c2hhZG93LXVuc2hhcmVkLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggODZhYTZhNGUwMjA2Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L2dseXBoLWRpc3BsYXktbGlzdHMvZ2x5cGgtZGlzcGxheS1saXN0LXNoYWRvdy11bnNoYXJlZC1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1QQVNTOiBEaXNwbGF5IGxp
c3RzIGRvIG5vdCBtYXRjaC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9nbHlw
aC1kaXNwbGF5LWxpc3RzL2dseXBoLWRpc3BsYXktbGlzdC1zaGFkb3ctdW5zaGFyZWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3RzL2dseXBoLWRpc3BsYXkt
bGlzdC1zaGFkb3ctdW5zaGFyZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTRiNGJiZWZjM2Y5Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ds
eXBoLWRpc3BsYXktbGlzdHMvZ2x5cGgtZGlzcGxheS1saXN0LXNoYWRvdy11bnNoYXJlZC5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08c2NyaXB0
PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci1pZiAod2luZG93LmludGVybmFs
cykKLSAgICBpbnRlcm5hbHMuc2V0Rm9yY2VVc2VHbHlwaERpc3BsYXlMaXN0Rm9yVGVzdGluZyh0
cnVlKTsKLTwvc2NyaXB0PgotPGJvZHkgb25sb2FkPSJydW4oKSI+Ci08c3R5bGU+Ci0jZmlyc3Qs
ICNzZWNvbmQgeyB0ZXh0LXNoZGFvdzogNXB4IDVweCBibHVlOyB9Ci08L3N0eWxlPgotPGRpdiBp
ZD1jb250YWluZXI+Ci0gICAgPHNwYW4gaWQ9Zmlyc3Q+U29tZSB0ZXh0PC9zcGFuPgotICAgIDxz
cGFuIGlkPXNlY29uZD5Tb21lIHRleHQ8L3NwYW4+Ci08L2Rpdj4KLTxwcmUgaWQ9bG9nPjwvcHJl
PgotPHNjcmlwdD4KLWZ1bmN0aW9uIHJ1bigpIHsKLSAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICAgICAgbGV0
IGZpcnN0RGlzcGxheUxpc3RXaXRoUmVzb3VyY2VJRHMgPSBpbnRlcm5hbHMuY2FjaGVkR2x5cGhE
aXNwbGF5TGlzdHNGb3JUZXh0Tm9kZShmaXJzdC5maXJzdENoaWxkLCBpbnRlcm5hbHMuRElTUExB
WV9MSVNUX0lOQ0xVREVfUkVTT1VSQ0VfSURFTlRJRklFUlMpOwotICAgICAgICAgICAgICAgIGxl
dCBzZWNvbmREaXNwbGF5TGlzdFdpdGhSZXNvdXJjZUlEcyA9IGludGVybmFscy5jYWNoZWRHbHlw
aERpc3BsYXlMaXN0c0ZvclRleHROb2RlKHNlY29uZC5maXJzdENoaWxkLCBpbnRlcm5hbHMuRElT
UExBWV9MSVNUX0lOQ0xVREVfUkVTT1VSQ0VfSURFTlRJRklFUlMpOwotICAgICAgICAgICAgICAg
IGlmIChmaXJzdERpc3BsYXlMaXN0V2l0aFJlc291cmNlSURzID09IHNlY29uZERpc3BsYXlMaXN0
V2l0aFJlc291cmNlSURzKQotICAgICAgICAgICAgICAgICAgICBsb2cudGV4dENvbnRlbnQgPSAi
RkFJTDogRGlzcGxheSBsaXN0cyBtYXRjaCBidXQgc2hvdWxkbid0LlxuIiArIGludGVybmFscy5j
YWNoZWRHbHlwaERpc3BsYXlMaXN0c0ZvclRleHROb2RlKGZpcnN0LmZpcnN0Q2hpbGQpOwotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbG9nLnRleHRDb250ZW50ID0g
IlBBU1M6IERpc3BsYXkgbGlzdHMgZG8gbm90IG1hdGNoLiI7Ci0gICAgICAgICAgICAgICAgaW50
ZXJuYWxzLnNldEZvcmNlVXNlR2x5cGhEaXNwbGF5TGlzdEZvclRlc3RpbmcoZmFsc2UpOwotICAg
ICAgICAgICAgICAgIGNvbnRhaW5lci5yZW1vdmUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci08L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3RzL2dseXBoLWRpc3Bs
YXktbGlzdC1zaGFyZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2dseXBo
LWRpc3BsYXktbGlzdHMvZ2x5cGgtZGlzcGxheS1saXN0LXNoYXJlZC1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyNDcyZGE3ZDAzMC4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3RzL2dseXBoLWRpc3Bs
YXktbGlzdC1zaGFyZWQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAot
QWxsIGRpc3BsYXkgbGlzdHMgbWF0Y2guCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Rl
eHQvZ2x5cGgtZGlzcGxheS1saXN0cy9nbHlwaC1kaXNwbGF5LWxpc3Qtc2hhcmVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0cy9nbHlwaC1kaXNwbGF5LWxp
c3Qtc2hhcmVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiOTY2Y2JkYThl
ZS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5
LWxpc3RzL2dseXBoLWRpc3BsYXktbGlzdC1zaGFyZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDQ2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1
bm5lcikgewotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwotfQotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgaW50ZXJuYWxzLnNl
dEZvcmNlVXNlR2x5cGhEaXNwbGF5TGlzdEZvclRlc3RpbmcodHJ1ZSk7Ci08L3NjcmlwdD4KLTxi
b2R5IG9ubG9hZD0icnVuKCkiPgotPGRpdiBpZD1jb250YWluZXI+Ci0gICAgPHAgc3R5bGU9ImNv
bG9yOiByZWQ7Ij5Tb21lIHRleHQ8L3A+Ci0gICAgPHAgc3R5bGU9ImNvbG9yOiBvcmFuZ2U7Ij5T
b21lIHRleHQ8L3A+Ci0gICAgPHAgc3R5bGU9ImNvbG9yOiB5ZWxsb3c7Ij5Tb21lIHRleHQ8L3A+
Ci0gICAgPHAgc3R5bGU9ImNvbG9yOiBncmVlbjsiPlNvbWUgdGV4dDwvcD4KLSAgICA8cCBzdHls
ZT0iY29sb3I6IGJsdWU7Ij5Tb21lIHRleHQ8L3A+Ci0gICAgPHAgc3R5bGU9ImNvbG9yOiBpbmRp
Z287Ij5Tb21lIHRleHQ8L3A+Ci0gICAgPHAgc3R5bGU9ImNvbG9yOiB2aW9sZXQ7Ij5Tb21lIHRl
eHQ8L3A+Ci08L2Rpdj4KLTxwcmUgaWQ9bG9nPjwvcHJlPgotPHNjcmlwdD4KLWZ1bmN0aW9uIHJ1
bigpIHsKLSAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJl
cXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICAgICAgbGV0IHBzID0gY29udGFpbmVyLnF1ZXJ5U2Vs
ZWN0b3JBbGwoInAiKTsKLSAgICAgICAgICAgICAgICBsZXQgZGlzcGxheUxpc3QgPSBpbnRlcm5h
bHMuY2FjaGVkR2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZShwc1swXS5maXJzdENoaWxkKTsK
LSAgICAgICAgICAgICAgICBsZXQgZGlzcGxheUxpc3RXaXRoUmVzb3VyY2VJRHMgPSBpbnRlcm5h
bHMuY2FjaGVkR2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZShwc1swXS5maXJzdENoaWxkLCBp
bnRlcm5hbHMuRElTUExBWV9MSVNUX0lOQ0xVREVfUkVTT1VSQ0VfSURFTlRJRklFUlMpOwotICAg
ICAgICAgICAgICAgIGxldCBtaXNtYXRjaCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGZvciAo
bGV0IGkgPSAxOyBpIDwgcHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGludGVybmFscy5jYWNoZWRHbHlwaERpc3BsYXlMaXN0c0ZvclRleHROb2RlKHBzW2ldLmZpcnN0
Q2hpbGQsIGludGVybmFscy5ESVNQTEFZX0xJU1RfSU5DTFVERV9SRVNPVVJDRV9JREVOVElGSUVS
UykgIT0gZGlzcGxheUxpc3RXaXRoUmVzb3VyY2VJRHMpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxvZy50ZXh0Q29udGVudCArPSBgRGlzcGxheSBsaXN0IGZvciBwc1ske2l9XSBkb2VzIG5v
dCBtYXRjaC5cbmA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtaXNtYXRjaCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
aWYgKCFtaXNtYXRjaCkKLSAgICAgICAgICAgICAgICAgICAgbG9nLnRleHRDb250ZW50ICs9ICJB
bGwgZGlzcGxheSBsaXN0cyBtYXRjaC4iOwotICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRG
b3JjZVVzZUdseXBoRGlzcGxheUxpc3RGb3JUZXN0aW5nKGZhbHNlKTsKLSAgICAgICAgICAgICAg
ICBjb250YWluZXIucmVtb3ZlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0cy9nbHlwaC1kaXNwbGF5LWxpc3Qtc3Zn
LXVuc2hhcmVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9nbHlwaC1kaXNw
bGF5LWxpc3RzL2dseXBoLWRpc3BsYXktbGlzdC1zdmctdW5zaGFyZWQtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmFhNmE0ZTAyMDYuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0cy9nbHlwaC1kaXNw
bGF5LWxpc3Qtc3ZnLXVuc2hhcmVkLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xICsw
LDAgQEAKLVBBU1M6IERpc3BsYXkgbGlzdHMgZG8gbm90IG1hdGNoLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdHMvZ2x5cGgtZGlzcGxheS1saXN0
LXN2Zy11bnNoYXJlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2dseXBoLWRpc3BsYXkt
bGlzdHMvZ2x5cGgtZGlzcGxheS1saXN0LXN2Zy11bnNoYXJlZC5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5YWM3NDBiMTM4ZGMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0cy9nbHlwaC1kaXNwbGF5LWxpc3Qtc3Zn
LXVuc2hhcmVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7Ci19Ci1pZiAod2luZG93LmludGVybmFscykKLSAgICBpbnRlcm5hbHMuc2V0
Rm9yY2VVc2VHbHlwaERpc3BsYXlMaXN0Rm9yVGVzdGluZyh0cnVlKTsKLTwvc2NyaXB0PgotPGJv
ZHkgb25sb2FkPSJydW4oKSI+Ci08c3R5bGU+Ci1AZm9udC1mYWNlIHsKLSAgICBmb250LWZhbWls
eTogIkFoZW0gU1ZHIjsKLSAgICBzcmM6IHVybCgiLi4vcmVzb3VyY2VzL0FoZW0tU1ZHLnR0ZiIp
IGZvcm1hdCgidHJ1ZXR5cGUiKTsKLX0KLXNwYW4geyBmb250OiA0OHB4IEFoZW0gU1ZHOyB9Ci08
L3N0eWxlPgotPGRpdiBpZD1jb250YWluZXI+Ci0gICAgPHNwYW4gaWQ9Zmlyc3Q+QTwvc3Bhbj4K
LSAgICA8c3BhbiBpZD1zZWNvbmQ+QTwvc3Bhbj4KLTwvZGl2PgotPHByZSBpZD1sb2c+PC9wcmU+
Ci08c2NyaXB0PgotZnVuY3Rpb24gcnVuKCkgewotICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShm
dW5jdGlvbigpIHsKLSAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAgICAgICAgICBsZXQg
Zmlyc3REaXNwbGF5TGlzdFdpdGhSZXNvdXJjZUlEcyA9IGludGVybmFscy5jYWNoZWRHbHlwaERp
c3BsYXlMaXN0c0ZvclRleHROb2RlKGZpcnN0LmZpcnN0Q2hpbGQsIGludGVybmFscy5ESVNQTEFZ
X0xJU1RfSU5DTFVERV9SRVNPVVJDRV9JREVOVElGSUVSUyk7Ci0gICAgICAgICAgICAgICAgbGV0
IHNlY29uZERpc3BsYXlMaXN0V2l0aFJlc291cmNlSURzID0gaW50ZXJuYWxzLmNhY2hlZEdseXBo
RGlzcGxheUxpc3RzRm9yVGV4dE5vZGUoc2Vjb25kLmZpcnN0Q2hpbGQsIGludGVybmFscy5ESVNQ
TEFZX0xJU1RfSU5DTFVERV9SRVNPVVJDRV9JREVOVElGSUVSUyk7Ci0gICAgICAgICAgICAgICAg
aWYgKGZpcnN0RGlzcGxheUxpc3RXaXRoUmVzb3VyY2VJRHMgPT0gc2Vjb25kRGlzcGxheUxpc3RX
aXRoUmVzb3VyY2VJRHMpCi0gICAgICAgICAgICAgICAgICAgIGxvZy50ZXh0Q29udGVudCA9ICJG
QUlMOiBEaXNwbGF5IGxpc3RzIG1hdGNoIGJ1dCBzaG91bGRuJ3QuXG4iICsgaW50ZXJuYWxzLmNh
Y2hlZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGUoZmlyc3QuZmlyc3RDaGlsZCk7Ci0gICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBsb2cudGV4dENvbnRlbnQgPSAi
UEFTUzogRGlzcGxheSBsaXN0cyBkbyBub3QgbWF0Y2guIjsKLSAgICAgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0Rm9yY2VVc2VHbHlwaERpc3BsYXlMaXN0Rm9yVGVzdGluZyhmYWxzZSk7Ci0gICAg
ICAgICAgICAgICAgY29udGFpbmVyLnJlbW92ZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLTwvc2NyaXB0PgotLSAKMi4zNi4w
Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>