<?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>215991</bug_id>
          
          <creation_ts>2020-08-30 15:38:57 -0700</creation_ts>
          <short_desc>Remove unused editable image code</short_desc>
          <delta_ts>2020-08-30 20:27:18 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1684038</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-08-30 15:38:57 -0700</bug_when>
    <thetext>Remove unused editable image code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684040</commentid>
    <comment_count>1</comment_count>
      <attachid>407575</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-08-30 15:41:27 -0700</bug_when>
    <thetext>Created attachment 407575
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684043</commentid>
    <comment_count>2</comment_count>
      <attachid>407577</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-08-30 16:01:04 -0700</bug_when>
    <thetext>Created attachment 407577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684054</commentid>
    <comment_count>3</comment_count>
      <attachid>407581</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-08-30 16:55:10 -0700</bug_when>
    <thetext>Created attachment 407581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684070</commentid>
    <comment_count>4</comment_count>
      <attachid>407583</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-08-30 18:45:15 -0700</bug_when>
    <thetext>Created attachment 407583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684074</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-30 20:26:29 -0700</bug_when>
    <thetext>Committed r266342: &lt;https://trac.webkit.org/changeset/266342&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407583.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684075</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-30 20:27:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/68049595&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407575</attachid>
            <date>2020-08-30 15:41:27 -0700</date>
            <delta_ts>2020-08-30 16:01:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215991-20200830154126.patch</filename>
            <type>text/plain</type>
            <size>211650</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU1ODAyYWQ5OTE4OTJi
MjhkMTc5ZjcyNWYxY2Y1ZGFlMjRiMTVjZi4uNzJjNjc5ZWMxMjEzNTc2ZDc5ODdlNzBkYWRlYzQ0
MjUxZTFiMzZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIwLTA4LTMwICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVz
ZWQgZWRpdGFibGUgaW1hZ2UgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE1OTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRpdGluZy9FZGl0QWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnVuZG9SZWRvTGFiZWwpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdEFj
dGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6aW5zZXJ0RWRpdGFibGVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGlu
Zy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlQ29tbWFuZE1hcCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRl
SW5zZXJ0RWRpdGFibGVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjplbmFibGVk
SW5SaWNobHlFZGl0YWJsZVRleHRXaXRoRWRpdGFibGVJbWFnZXNFbmFibGVkKTogRGVsZXRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL0luc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBlZGl0aW5nL0luc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmg6IFJlbW92
ZWQuCisgICAgICAgICogZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczoKKyAgICAgICAgKiBo
dG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5j
ZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6cmVtb3ZlZEZyb21B
bmNlc3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojpjb3B5Tm9uQXR0
cmlidXRlUHJvcGVydGllc0Zyb21FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFn
ZUVsZW1lbnQ6OnN1cHBvcnRzRm9jdXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEltYWdlRWxlbWVudDo6aXNGb2N1c2FibGUgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpoYXNFZGl0YWJsZUlt
YWdlQXR0cmlidXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFn
ZUVsZW1lbnQ6OmVkaXRhYmxlSW1hZ2VWaWV3SUQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6dXBkYXRlRWRpdGFibGVJbWFnZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAg
KiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50Ojph
c3NvY2lhdGVFZGl0YWJsZUltYWdlV2l0aEF0dGFjaG1lbnQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpkaWRDcmVhdGVFZGl0YWJsZUltYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6ZGlkRGVzdHJveUVkaXRhYmxlSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRWRpdGFibGVJbWFnZVJlZmVyZW5jZS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogcGFnZS9FZGl0YWJsZUltYWdlUmVmZXJlbmNlLmg6IFJlbW92ZWQu
CisgICAgICAgICogcGFnZS9TZXR0aW5ncy55YW1sOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
bmV4dEVtYmVkZGVkVmlld0lEKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpzZXRD
b250ZW50c1RvU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpz
ZXRDb250ZW50c1RvRW1iZWRkZWRWaWV3KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXJGb3JFbWJlZGRlZFZpZXcpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvRW1iZWRk
ZWRWaWV3KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6ZW1iZWRkZWRWaWV3SUQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6aXNFZGl0YWJsZUltYWdlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpyZXF1aXJlc0xheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNo
b3VsZEJlTm9ybWFsRmxvd09ubHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6
OnVwZGF0ZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
ZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc093bkJhY2tpbmdTdG9yZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYXNvbnNGb3JDb21wb3NpdGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVz
Q29tcG9zaXRpbmdGb3JFZGl0YWJsZUltYWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisKIDIwMjAtMDgtMjkgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV3cml0ZSBtYWluIHRo
cmVhZCBzY3JvbGwgbGF0Y2hpbmcgbG9naWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNWUyNTdmODZjYmY2MzUxNTQz
NWE1NmFhODY4Yjc0OTM5MTdmMjRhZC4uNzUzZWE3MDJjOTQwOWIyYjYzMTdmMGFhZjQyZWZkNWUw
MzYyYjdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDQgQEAKKzIwMjAtMDgtMzAgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBl
ZGl0YWJsZSBpbWFnZSBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTU5OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogUGxhdGZvcm0vc3Bp
L2lvcy9QZW5jaWxLaXRTUEkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvRm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZvY3VzZWRFbGVtZW50SW5m
b3JtYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkZvY3VzZWRFbGVtZW50
SW5mb3JtYXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0ZvY3VzZWRFbGVtZW50SW5m
b3JtYXRpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
QmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6ZHJhd0luQ29udGV4dCk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllczo6TGF5ZXJDcmVh
dGlvblByb3BlcnRpZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGll
czo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldHVwUGFnZUNvbmZpZ3VyYXRpb246
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9u
Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIGluaXRdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgICgtW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gX3NldEVkaXRhYmxlSW1hZ2VzRW5hYmxlZDpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfZWRpdGFibGVJbWFnZXNFbmFi
bGVkXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdD
b25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2Vi
Vmlld0lPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXR1cFNjcm9sbEFuZENvbnRlbnRWaWV3c10pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3N0eWx1c1RhcEdlc3R1cmVTaG91bGRDcmVhdGVFZGl0YWJsZUlt
YWdlXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudDo6Y3JlYXRlRHJhd2luZ1ZpZXcpOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5t
bToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bGF5ZXJXaWxsQmVSZW1v
dmVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y2xlYXJMYXllcnMp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjpjcmVhdGVFbWJlZGRlZFZpZXcp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90
ZUxheWVyVHJlZVZpZXdzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW06CisgICAgICAgICgtW1dLRW1iZWRkZWRWaWV3IGlu
aXRXaXRoRW1iZWRkZWRWaWV3SUQ6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQXR0YWNo
VG9SdW5uaW5nUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRT
dGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2lsbFVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIpOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVy
Lm1lc3NhZ2VzLmluOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvRWRpdGFibGVJ
bWFnZUNvbnRyb2xsZXIubW06IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nVmll
dyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QZW5jaWxLaXRTb2Z0TGluay5o
OiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGVuY2lsS2l0U29mdExpbmsubW06
IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXRVcEludGVyYWN0aW9uXSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgY2xlYW5VcEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX3JlbW92ZURlZmF1bHRHZXN0dXJlUmVjb2duaXplcnNdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfYWRkRGVmYXVsdEdlc3R1cmVSZWNvZ25pemVyc10pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGdlc3R1cmVSZWNvZ25pemVyU2hvdWxkQmVnaW46XSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX2VsZW1lbnREaWRGb2N1czp1c2VySXNJbnRlcmFjdGluZzpibHVy
UHJldmlvdXNOb2RlOmFjdGl2aXR5U3RhdGVDaGFuZ2VzOnVzZXJPYmplY3Q6XSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX2VsZW1lbnREaWRCbHVyXSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX3N0eWx1c1NpbmdsZVRhcFJlY29nbml6ZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgX2RyYXdpbmdDb29yZGluYXRvcl0pOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nQ29vcmRpbmF0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLRHJhd2luZ0Nvb3JkaW5hdG9yLm1tOiBSZW1vdmVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpoYW5kbGVTdHlsdXNTaW5nbGVUYXBBdFBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbToK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNsaWVudElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojphc3NvY2lhdGVFZGl0YWJsZUltYWdlV2l0aEF0
dGFjaG1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmRp
ZENyZWF0ZUVkaXRhYmxlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJv
bWVDbGllbnQ6OmRpZERlc3Ryb3lFZGl0YWJsZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkdyYXBoaWNzTGF5ZXJDQVJlbW90ZTo6Y3JlYXRlUGxhdGZv
cm1DQUxheWVyRm9yRW1iZWRkZWRWaWV3KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVt
b3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGVG
b3JFbWJlZGRlZFZpZXcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU6OmVtYmVkZGVkVmlld0lEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlQ29udGV4dDo6
bGF5ZXJEaWRFbnRlckNvbnRleHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAg
ICAoV2ViS2l0Ojppc0Fzc2lzdGFibGVFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6Z2V0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQpOiBEZWxldGVkLgorCiAyMDIwLTA4LTI4
ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFNpdGVz
IGJ1aWx0IHdpdGggZmxhbWJlLmpzIGRvbid0IHdvcmsgd2l0aCB0cmFja3BhZCBvbiBpUGFkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IDRjYmMyNzllZjI5YjA4NjA2MGQ2ZWQwMWUxNmY0OWI3MWY3MWYzN2Uu
LjBhODQ2Yzc4MTNiMmIzZDUxNzExZGJjZDM4ZDZhNWMzZGRkNGNmZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CkBAIC0xMDAyLDcgKzEwMDIsNiBAQCBlZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKIGVk
aXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCiBlZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHAKIGVk
aXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCi1lZGl0aW5nL0luc2VydEVkaXRhYmxlSW1h
Z2VDb21tYW5kLmNwcAogZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNwcAogZWRp
dGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAogZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFu
ZC5jcHAKQEAgLTE1ODgsNyArMTU4Nyw2IEBAIHBhZ2UvRGV2aWNlQ29udHJvbGxlci5jcHAKIHBh
Z2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcAogcGFnZS9EaXNhYmxlZEFkYXB0YXRpb25zLmNw
cAogcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKLXBhZ2UvRWRpdGFibGVJbWFnZVJlZmVyZW5jZS5j
cHAKIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcAogcGFnZS9FdmVudFNvdXJjZS5jcHAKIHBhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDZmNjc5MTBhOGE2NjdlNmJlMmNkMzdkMWMxNThiOTJiYWJk
ODM4NjYuLjNlYTA1OGFkNzRhMDNjNjU3YTUwMWRlZjM4ZDc3MWQ1MGFlZjIxZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcy
Nyw3ICs3MjcsNiBAQAogCQkyRDI5RUNDODE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJl
c2hNb25pdG9yTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkQyOUVDQzQxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkyRDI5RUNDQTE5MkYxRjFEMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9ySU9T
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDI5RUND
OTE5MkYxRjFEMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLmggKi87IH07CiAJ
CTJEMkJFQjMxMjIzNEEzMzUwMDU1NDRDQSAvKiBFbGVtZW50SWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyQkVCMkYyMjM0QTMzNDAw
NTU0NENBIC8qIEVsZW1lbnRJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMkQyRTM0QUMyMUE0RTE5MjAwNDU5OEI1IC8qIEVkaXRh
YmxlSW1hZ2VSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJEMkUzNEE5MjFBNEUxOTEwMDQ1OThCNSAvKiBFZGl0YWJsZUltYWdlUmVmZXJl
bmNlLmggKi87IH07CiAJCTJEM0EwRTM2MTNBN0Q3NjEwMEU4NUFGMCAvKiBTVkdQYXJzaW5nRXJy
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEM0Ew
RTM1MTNBN0Q3NjEwMEU4NUFGMCAvKiBTVkdQYXJzaW5nRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDNFRjQ0ODE5MTc5MTVDMDAwMzQx
ODQgLyogV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDNFRjQ0NDE5MTc5MTVDMDAwMzQxODQg
LyogV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQzRUY0NEExOTE3OTE1QzAwMDM0MTg0
IC8qIFdlYkNvcmVDQUxheWVyRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRDNFRjQ0NjE5MTc5MTVDMDAwMzQxODQgLyogV2ViQ29yZUNBTGF5
ZXJFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNzUxLDcgKzc1MCw2IEBACiAJCTJENzZCQjgyMTk0NTYzMjQwMENGRDI5QSAvKiBSdW5M
b29wT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJENzZCQjgwMTk0NTYzMjQwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDdEQTBGMjI0MzVF
QjE5MDBGMDQ4RDEgLyogV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ3REEwRUYyNDM1RUIx
NzAwRjA0OEQxIC8qIFdlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDdFRDBBQjFCQUU5
OTE3MDA0M0IzRTUgLyogVGltZXJFdmVudEJhc2VkTW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ3RUQwQTkxQkFFOTkxNzAwNDNCM0U1IC8qIFRp
bWVyRXZlbnRCYXNlZE1vY2suaCAqLzsgfTsKLQkJMkQ4MUUxQ0YyMUE3OENDMjAwQTMyQ0Y0IC8q
IEluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRDgxRTFDRDIxQTc4Q0MyMDBBMzJDRjQgLyogSW5zZXJ0RWRp
dGFibGVJbWFnZUNvbW1hbmQuaCAqLzsgfTsKIAkJMkQ4Mjg3RjcxNkU0QTAzODAwODZCRDAwIC8q
IEhpdFRlc3RMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkQ4Mjg3RjUxNkU0QTAzODAwODZCRDAwIC8qIEhpdFRlc3RMb2NhdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEOEI5MkNF
MjAzRDEzRTEwMDlDODY4RiAvKiBVbmlmaWVkU291cmNlNDgxLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNUY4NEFEMUZBMUE0OEIwMDZEQjYzQiAv
KiBVbmlmaWVkU291cmNlNDgxLmNwcCAqLzsgfTsKIAkJMkQ4QjkyQ0YyMDNEMTNFMTAwOUM4NjhG
IC8qIFVuaWZpZWRTb3VyY2U0ODIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gREU1Rjg0QzgxRkExQTRBNDAwNkRCNjNCIC8qIFVuaWZpZWRTb3VyY2U0
ODIuY3BwICovOyB9OwpAQCAtNjkwNiw4ICs2OTA0LDYgQEAKIAkJMkQyOUVDQzQxOTJFQ0M4MzAw
OTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRDI5RUNDOTE5MkYxRjFEMDA5ODRCNzggLyogRGlzcGxh
eVJlZnJlc2hNb25pdG9ySU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERp
c3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
RDJCRUIyRjIyMzRBMzM0MDA1NTQ0Q0EgLyogRWxlbWVudElkZW50aWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWxlbWVudElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMkQyRTM0QTkyMUE0RTE5MTAwNDU5OEI1IC8qIEVkaXRhYmxlSW1h
Z2VSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGFibGVJ
bWFnZVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyRDJFMzRBQjIx
QTRFMTkyMDA0NTk4QjUgLyogRWRpdGFibGVJbWFnZVJlZmVyZW5jZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFZGl0YWJsZUltYWdlUmVmZXJlbmNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyRkMwNTQxNDYwQ0Q2RjAwMjYzNjMzIC8qIENy
b3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkQyRkMwNTUxNDYwQ0Q2RjAwMjYzNjMzIC8qIENyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMkZDMDU2MTQ2MENENkYw
MDI2MzYzMyAvKiBHcmFkaWVudEltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdyYWRpZW50SW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNjk1Miw4ICs2OTQ4LDYgQEAKIAkJMkQ3REEwRUYyNDM1RUIxNzAwRjA0OEQxIC8qIFdlYlZp
ZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRDdEQTBGMTI0MzVFQjE4MDBGMDQ4RDEgLyogV2ViVmlld1Zp
c3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEN0VEMEE5MUJBRTk5MTcwMDQzQjNFNSAvKiBUaW1l
ckV2ZW50QmFzZWRNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRpbWVy
RXZlbnRCYXNlZE1vY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkQ4MUUxQ0Iy
MUE3OENDMTAwQTMyQ0Y0IC8qIEluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5k
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkQ4MUUxQ0QyMUE3OENDMjAwQTMy
Q0Y0IC8qIEluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJEODI4N0Y0MTZFNEEwMzgwMDg2QkQwMCAvKiBIaXRUZXN0TG9jYXRp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGl0VGVzdExvY2F0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ4Mjg3RjUxNkU0QTAzODAw
ODZCRDAwIC8qIEhpdFRlc3RMb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBIaXRUZXN0TG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ4
RDNCRUIyMzg0N0FDOTAwNjU3MDc1IC8qIGdlc3R1cmUtcmVjb2duaXplci5qcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNj
cmlwdDsgcGF0aCA9ICJnZXN0dXJlLXJlY29nbml6ZXIuanMiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjEzODYsOCArMjEzODAsNiBAQAogCQkJCUE3Q0E1OTVDMEIyN0JEOUUwMEZB
MDIxRCAvKiBEcmFnQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJQTdDQTU5NUIwQjI3QkQ5RTAwRkEw
MjFEIC8qIERyYWdDb250cm9sbGVyLmggKi8sCiAJCQkJODFGNjVGRjUxMzc4OEZBQTAwRkY2RjJE
IC8qIERyYWdTdGF0ZS5oICovLAotCQkJCTJEMkUzNEFCMjFBNEUxOTIwMDQ1OThCNSAvKiBFZGl0
YWJsZUltYWdlUmVmZXJlbmNlLmNwcCAqLywKLQkJCQkyRDJFMzRBOTIxQTRFMTkxMDA0NTk4QjUg
LyogRWRpdGFibGVJbWFnZVJlZmVyZW5jZS5oICovLAogCQkJCTFBRjMyNjc3MEQ3OEI5NDQwMDY4
RjBDNCAvKiBFZGl0b3JDbGllbnQuaCAqLywKIAkJCQk5M0MwOUE4MDBCMDY0RjAwMDA1QUJENEQg
LyogRXZlbnRIYW5kbGVyLmNwcCAqLywKIAkJCQk5M0MwOUE1MjBCMDY0REIzMDA1QUJENEQgLyog
RXZlbnRIYW5kbGVyLmggKi8sCkBAIC0yMjM5Miw4ICsyMjM4NCw2IEBACiAJCQkJOTMzMDlEOTcw
OTlFNjQ5MTAwNTZFNTgxIC8qIEhUTUxJbnRlcmNoYW5nZS5oICovLAogCQkJCURCMjNDMkM5MEE1
MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAgKi8sCiAJCQkJREIyM0My
Q0EwQTUwOEQyOTAwMjQ4OUVCIC8qIEluZGVudE91dGRlbnRDb21tYW5kLmggKi8sCi0JCQkJMkQ4
MUUxQ0IyMUE3OENDMTAwQTMyQ0Y0IC8qIEluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmNwcCAq
LywKLQkJCQkyRDgxRTFDRDIxQTc4Q0MyMDBBMzJDRjQgLyogSW5zZXJ0RWRpdGFibGVJbWFnZUNv
bW1hbmQuaCAqLywKIAkJCQk5MzMwOUQ5QTA5OUU2NDkxMDA1NkU1ODEgLyogSW5zZXJ0SW50b1Rl
eHROb2RlQ29tbWFuZC5jcHAgKi8sCiAJCQkJOTMzMDlEOUIwOTlFNjQ5MTAwNTZFNTgxIC8qIElu
c2VydEludG9UZXh0Tm9kZUNvbW1hbmQuaCAqLywKIAkJCQk5MzMwOUQ5QzA5OUU2NDkxMDA1NkU1
ODEgLyogSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAgKi8sCkBAIC0zMDIwNSw3ICszMDE5NSw2
IEBACiAJCQkJNjNCRDRBNUYxRjc3OEU5RjAwNDM4NzIyIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTYzMTUyRDE5MUY5NTMxRUUwMDdBNUU0QiAvKiBBcHBsaWNh
dGlvbk1hbmlmZXN0TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MzU0RjRDOTFGN0FGQzk0
MDBEODlERjMgLyogQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJREZDNjEwQTYyNEZCMkE3RDAwNjI1NEM4IC8qIEVuY29kaW5nVGFibGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5QjQxNzA2NDEyNTY2MkIzMDA2QjI4RkMgLyogQXBwbHlCbG9ja0VsZW1lbnRD
b21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUREOTA5OUU2NDkyMDA1NkU1ODEgLyog
QXBwbHlTdHlsZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkREOEY2MEQ5MUU2QUYw
MDBGODlFRSAvKiBBcmNoaXZlLmggaW4gSGVhZGVycyAqLywKQEAgLTMxMDAwLDcgKzMwOTg5LDYg
QEAKIAkJCQlGRDUzNzM1NzEzN0I2NTNCMDAwMDhEQ0UgLyogRHluYW1pY3NDb21wcmVzc29yS2Vy
bmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDZFRDJDNDEzNkI4RTQyMDAzQ0YwNzIgLyogRHlu
YW1pY3NDb21wcmVzc29yTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM3QzBCNzYyNERCMzg1
MDAwNUQ1OTU5IC8qIER5bmFtaWNzQ29tcHJlc3Nvck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAot
CQkJCTJEMkUzNEFDMjFBNEUxOTIwMDQ1OThCNSAvKiBFZGl0YWJsZUltYWdlUmVmZXJlbmNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURFMjA5OUU2NDkyMDA1NkU1ODEgLyogRWRpdEFjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERTQwOTlFNjQ5MjAwNTZFNTgxIC8qIEVkaXRD
b21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURFODA5OUU2NDkyMDA1NkU1ODEgLyog
RWRpdGluZy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTAzMiw2ICszMTAyMCw3IEBACiAJCQkJNDE0
REVERTcxRjlGRTkxRTAwNDdDNDBEIC8qIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxNUJFMTkwMUQ1NEY1RkIwMEREN0M2OCAvKiBFbXB0eUdhbWVwYWRQcm92
aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM4NDlDMUYyNEJFNDA0QjAwNDQ4RDVBIC8qIEVt
cHR5U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJREZDNjEwQTYy
NEZCMkE3RDAwNjI1NEM4IC8qIEVuY29kaW5nVGFibGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
Qzc3QzNENzFERUY4NTBBMDBBNTBCRkEgLyogRW5kaW5nVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRjQwM0U3ODcyMzYzQjU4QzAwMDQ0NTUwIC8qIEVudGVyS2V5SGludC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUQyRjhFMDQyMzQ0NzUxNjAwOTkzQjY4IC8qIEVudGVyUGljdHVyZUluUGljdHVy
ZUV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMxNTkzLDcgKzMxNTgyLDYgQEAKIAkJCQlFNTJF
RkRGNDIxMTI4NzVBMDBBRDI4MkEgLyogSW5wdXRNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
N0UzNTI0RDEyNDUwQzY2MDBCQUY1RDkgLyogSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDMzQ4NjEyNDE1RkRFMjFFMDA3QTFDQzkgLyogSW5wdXRUeXBlTmFtZXMuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTJEODFFMUNGMjFBNzhDQzIwMEEzMkNGNCAvKiBJbnNlcnRFZGl0YWJsZUltYWdl
Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERUEwOTlFNjQ5MjAwNTZFNTgxIC8q
IEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REVD
MDk5RTY0OTIwMDU2RTU4MSAvKiBJbnNlcnRMaW5lQnJlYWtDb21tYW5kLmggaW4gSGVhZGVycyAq
LywKIAkJCQlEMDdERUFCQTBBMzY1NTRBMDBDQTMwRjggLyogSW5zZXJ0TGlzdENvbW1hbmQuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdEFjdGlvbi5jcHAKaW5kZXggZmJh
ZWY1ODdjOTcwMGQ4NjBiNWQ3NDZjZDc1Njk3NmI4OWZkZjM3YS4uMjg4MmVhNDQzMDUzMjJjYzY4
MGZlZWUzNzBlODViMTgyYWZlNGIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0QWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRBY3Rpb24u
Y3BwCkBAIC0xNDIsOCArMTQyLDYgQEAgU3RyaW5nIHVuZG9SZWRvTGFiZWwoRWRpdEFjdGlvbiBl
ZGl0QWN0aW9uKQogICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoIkNvbnZlcnQgdG8g
T3JkZXJlZCBMaXN0IiwgIkNvbnZlcnQgdG8gT3JkZXJlZCBMaXN0IChVbmRvIGFjdGlvbiBuYW1l
KSIsICJVbmRvIGFjdGlvbiBuYW1lIik7CiAgICAgY2FzZSBFZGl0QWN0aW9uOjpDb252ZXJ0VG9V
bm9yZGVyZWRMaXN0OgogICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoIkNvbnZlcnQg
dG8gVW5vcmRlcmVkIExpc3QiLCAiQ29udmVydCB0byBVbm9yZGVyZWQgTGlzdCAoVW5kbyBhY3Rp
b24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIpOwotICAgIGNhc2UgRWRpdEFjdGlvbjo6SW5z
ZXJ0RWRpdGFibGVJbWFnZToKLSAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdfS0VZKCJJbnNl
cnQgRHJhd2luZyIsICJJbnNlcnQgRHJhd2luZyAoVW5kbyBhY3Rpb24gbmFtZSkiLCAiVW5kbyBh
Y3Rpb24gbmFtZSIpOwogICAgIH0KICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRBY3Rpb24uaAppbmRleCAyMTY4ZWIwMjg2MWMxYTJkYTY3MDdlMjg4Y2Y3YjdjZDVkYzZj
MjAzLi5jNjBjNmJjYzgwNTU1NTY3YTNjYmRmNjFiODg3ZDQ0YzJlMjFkYWY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRBY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRBY3Rpb24uaApAQCAtOTMsOCArOTMsNyBAQCBlbnVtIGNsYXNzIEVkaXRB
Y3Rpb24gOiB1aW50OF90IHsKICAgICBDb252ZXJ0VG9PcmRlcmVkTGlzdCwKICAgICBDb252ZXJ0
VG9Vbm9yZGVyZWRMaXN0LAogICAgIEluZGVudCwKLSAgICBPdXRkZW50LAotICAgIEluc2VydEVk
aXRhYmxlSW1hZ2UKKyAgICBPdXRkZW50CiB9OwogCiBXVEY6OlN0cmluZyB1bmRvUmVkb0xhYmVs
KEVkaXRBY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDA5NDY2YWYxOGRh
MjUwZGM0MDU2OWRhMTU5ZmNiMmIxMmJkMTU3M2EuLmMxMDY5ODFiM2ZiMWI4ZWE1ZTViMTk2Zjlh
ZGM3Mzk0YWE2OTE2YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTc1LDcgKzc1
LDYgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5kZW50T3V0ZGVu
dENvbW1hbmQuaCIKICNpbmNsdWRlICJJbnB1dEV2ZW50LmgiCi0jaW5jbHVkZSAiSW5zZXJ0RWRp
dGFibGVJbWFnZUNvbW1hbmQuaCIKICNpbmNsdWRlICJJbnNlcnRMaXN0Q29tbWFuZC5oIgogI2lu
Y2x1ZGUgIkluc2VydFRleHRDb21tYW5kLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgpA
QCAtNDMxOSwxMSArNDMxOCw2IEBAIGNvbnN0IEZvbnQqIEVkaXRvcjo6Zm9udEZvclNlbGVjdGlv
bihib29sJiBoYXNNdWx0aXBsZUZvbnRzKSBjb25zdAogICAgIHJldHVybiBmb250OwogfQogCi1S
ZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gRWRpdG9yOjppbnNlcnRFZGl0YWJsZUltYWdlKCkKLXsK
LSAgICByZXR1cm4gSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQ6Omluc2VydEVkaXRhYmxlSW1h
Z2UoZG9jdW1lbnQoKSk7Ci19Ci0KIGJvb2wgRWRpdG9yOjpjYW5Db3B5RXhjbHVkaW5nU3RhbmRh
bG9uZUltYWdlcygpIGNvbnN0CiB7CiAgICAgYXV0byYgc2VsZWN0aW9uID0gbV9kb2N1bWVudC5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGE5ZTQ4
ZjNmODMzNjRmYjk3MjZiZjA5YzYxMjI5ZDVhMDE2ZmY0YzcuLmEwOTJkZmY4NWY2MjAwYTA4Y2Fm
ZmU5Yjk1YThhMjM2MzIzNjJiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNTcwLDgg
KzU3MCw2IEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlmCiAKLSAgICBXRUJDT1JFX0VYUE9SVCBS
ZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gaW5zZXJ0RWRpdGFibGVJbWFnZSgpOwotCiAgICAgV0VC
Q09SRV9FWFBPUlQgUmVmUHRyPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+IGluc2VydFRleHRQbGFj
ZWhvbGRlcihjb25zdCBJbnRTaXplJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVU
ZXh0UGxhY2Vob2xkZXIoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCA1MmM1ODBhZmZiNGIyODc1N2NjZWQ0ODNm
NmJjZDI0ZTI1NzdjMDY0Li4yZDNlOTVkMGZjMTY0ZWJmNjExZmI0ZTRjMDAxOTljMDBhNTU4NmMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTQ2LDcgKzQ2
LDYgQEAKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSW5kZW50T3V0ZGVudENvbW1hbmQuaCIKLSNpbmNsdWRlICJJbnNlcnRF
ZGl0YWJsZUltYWdlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydExpc3RDb21tYW5kLmgiCiAj
aW5jbHVkZSAiSW5zZXJ0TmVzdGVkTGlzdENvbW1hbmQuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBA
IC00NzIsMTMgKzQ3MSw2IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRJbWFnZShGcmFtZSYg
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QKICAgICByZXR1cm4gZXhl
Y3V0ZUluc2VydE5vZGUoZnJhbWUsIFdURk1vdmUoaW1hZ2UpKTsKIH0KIAotc3RhdGljIGJvb2wg
ZXhlY3V0ZUluc2VydEVkaXRhYmxlSW1hZ2UoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCi17Ci0gICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50
KCkpOwotICAgIEluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kOjpjcmVhdGUoKmZyYW1lLmRvY3Vt
ZW50KCkpLT5hcHBseSgpOwotICAgIHJldHVybiB0cnVlOwotfQotCiBzdGF0aWMgYm9vbCBleGVj
dXRlSW5zZXJ0TGluZUJyZWFrKEZyYW1lJiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JDb21t
YW5kU291cmNlIHNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkg
ewpAQCAtMTQyNSwxMyArMTQxNyw2IEBAIHN0YXRpYyBib29sIGVuYWJsZWRVbmRvKEZyYW1lJiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogICAgIHJldHVybiBmcmFtZS5lZGl0
b3IoKS5jYW5VbmRvKCk7CiB9CiAKLXN0YXRpYyBib29sIGVuYWJsZWRJblJpY2hseUVkaXRhYmxl
VGV4dFdpdGhFZGl0YWJsZUltYWdlc0VuYWJsZWQoRnJhbWUmIGZyYW1lLCBFdmVudCogZXZlbnQs
IEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlKQotewotICAgIGlmICghZnJhbWUuc2V0dGluZ3Mo
KS5lZGl0YWJsZUltYWdlc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiBlbmFibGVkSW5SaWNobHlFZGl0YWJsZVRleHQoZnJhbWUsIGV2ZW50LCBzb3VyY2UpOwot
fQotCiAvLyBTdGF0ZSBmdW5jdGlvbnMKIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlTm9uZShGcmFt
ZSYsIEV2ZW50KikKQEAgLTE2NTEsNyArMTYzNiw2IEBAIHN0YXRpYyBjb25zdCBDb21tYW5kTWFw
JiBjcmVhdGVDb21tYW5kTWFwKCkKICAgICAgICAgeyAiSWdub3JlU3BlbGxpbmciLCB7IGV4ZWN1
dGVJZ25vcmVTcGVsbGluZywgc3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRJ
bkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRv
Tm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAogICAgICAgICB7ICJJbmRlbnQiLCB7
IGV4ZWN1dGVJbmRlbnQsIHN1cHBvcnRlZCwgZW5hYmxlZEluUmljaGx5RWRpdGFibGVUZXh0LCBz
dGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlv
bldoZW5EaXNhYmxlZCB9IH0sCiAgICAgICAgIHsgIkluc2VydEJhY2t0YWIiLCB7IGV4ZWN1dGVJ
bnNlcnRCYWNrdGFiLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZEluRWRp
dGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgaXNUZXh0SW5zZXJ0aW9uLCBkb05vdEFs
bG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKLSAgICAgICAgeyAiSW5zZXJ0RWRpdGFibGVJ
bWFnZSIsIHsgZXhlY3V0ZUluc2VydEVkaXRhYmxlSW1hZ2UsIHN1cHBvcnRlZCwgZW5hYmxlZElu
UmljaGx5RWRpdGFibGVUZXh0V2l0aEVkaXRhYmxlSW1hZ2VzRW5hYmxlZCwgc3RhdGVOb25lLCB2
YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJs
ZWQgfSB9LAogICAgICAgICB7ICJJbnNlcnRIVE1MIiwgeyBleGVjdXRlSW5zZXJ0SFRNTCwgc3Vw
cG9ydGVkLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RU
ZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICAgICAg
ICAgeyAiSW5zZXJ0SG9yaXpvbnRhbFJ1bGUiLCB7IGV4ZWN1dGVJbnNlcnRIb3Jpem9udGFsUnVs
ZSwgc3VwcG9ydGVkLCBlbmFibGVkSW5SaWNobHlFZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFs
dWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVk
IH0gfSwKICAgICAgICAgeyAiSW5zZXJ0SW1hZ2UiLCB7IGV4ZWN1dGVJbnNlcnRJbWFnZSwgc3Vw
cG9ydGVkLCBlbmFibGVkSW5SaWNobHlFZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxs
LCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0RWRpdGFibGVJbWFnZUNv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRFZGl0YWJsZUltYWdlQ29t
bWFuZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyZDRkNmZmNzRjMjA1ZGFh
NWFiOTg1NmZmNGE2MjJiYWI4MDI1ODkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRFZGl0YWJsZUltYWdl
Q29tbWFuZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5oIgotCi0jaW5jbHVkZSAiRWRpdGlu
Zy5oIgotI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1SZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQ6
Omluc2VydEVkaXRhYmxlSW1hZ2UoRG9jdW1lbnQmIGRvY3VtZW50KQotewotICAgIFJlZlB0cjxJ
bnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZD4gaW5zZXJ0Q29tbWFuZCA9IGNyZWF0ZShkb2N1bWVu
dCk7Ci0gICAgaW5zZXJ0Q29tbWFuZC0+YXBwbHkoKTsKLSAgICByZXR1cm4gaW5zZXJ0Q29tbWFu
ZC0+bV9pbWFnZUVsZW1lbnQ7Ci19Ci0KLUluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kOjpJbnNl
cnRFZGl0YWJsZUltYWdlQ29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBDb21wb3Np
dGVFZGl0Q29tbWFuZChkb2N1bWVudCkKLXsKLX0KLQotdm9pZCBJbnNlcnRFZGl0YWJsZUltYWdl
Q29tbWFuZDo6ZG9BcHBseSgpCi17Ci0gICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLmlzTm9uZSgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2ltYWdlRWxlbWVudCA9IEhUTUxJbWFnZUVsZW1l
bnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKLSAgICBtX2ltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnhfYXBwbGVfZWRpdGFibGVfaW1hZ2VB
dHRyLCBlbXB0eUF0b20oKSk7Ci0gICAgbV9pbWFnZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21TdHJpbmcoIjEwMCUi
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIG1faW1hZ2VFbGVtZW50
LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6aGVpZ2h0QXR0
ciwgQXRvbVN0cmluZygiMzAwcHgiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OwotICAgIG1faW1hZ2VFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KEhUTUxOYW1lczo6c3R5bGVBdHRyLCBBdG9tU3RyaW5nKCJkaXNwbGF5OiBibG9jayIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0KLSAgICBpbnNlcnROb2RlQXQoKm1faW1h
Z2VFbGVtZW50LCBlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpKTsKLSAgICBzZXRFbmRpbmdTZWxl
Y3Rpb24odmlzaWJsZVBvc2l0aW9uQWZ0ZXJOb2RlKCptX2ltYWdlRWxlbWVudCkpOwotfQotCi19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEVkaXRhYmxlSW1hZ2VD
b21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEVkaXRhYmxlSW1hZ2VDb21t
YW5kLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5ZDE5ZTlkN2Q2NTYyNDMxY2Qx
NGMzOTllMjNlMGUzZTc4NjBlMGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRFZGl0YWJsZUltYWdlQ29t
bWFuZC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkNv
bXBvc2l0ZUVkaXRDb21tYW5kLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW5z
ZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQgOiBwdWJsaWMgQ29tcG9zaXRlRWRpdENvbW1hbmQgewot
cHVibGljOgotICAgIHN0YXRpYyBSZWY8SW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQ+IGNyZWF0
ZShEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZChkb2N1bWVudCkpOwotICAgIH0KLQotICAgIHN0
YXRpYyBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gaW5zZXJ0RWRpdGFibGVJbWFnZShEb2N1bWVu
dCYpOwotCi1wcml2YXRlOgotICAgIEluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kKERvY3VtZW50
Jik7Ci0KLSAgICB2b2lkIGRvQXBwbHkoKSBvdmVycmlkZTsKLSAgICBFZGl0QWN0aW9uIGVkaXRp
bmdBY3Rpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBFZGl0QWN0aW9uOjpJbnNlcnRFZGl0YWJs
ZUltYWdlOyB9Ci0KLSAgICBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gbV9pbWFnZUVsZW1lbnQ7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ov
TG9jYWxpemFibGUuc3RyaW5ncwppbmRleCA1ODYwMjkwYTk1ZWJlMTY5MDIzZmNhZjJiZmY4Y2Rk
MDk3Y2QwNjE3Li4wYjgwYTI4MGFkNmY1MzlmMWYzM2FjM2UxOGY4OTU3NzdiZWNjMmVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKQEAgLTQxMiw5ICs0
MTIsNiBAQAogLyogVW5kbyBhY3Rpb24gbmFtZSAqLwogIkluZGVudCAoVW5kbyBhY3Rpb24gbmFt
ZSkiID0gIkluZGVudCI7CiAKLS8qIFVuZG8gYWN0aW9uIG5hbWUgKi8KLSJJbnNlcnQgRHJhd2lu
ZyAoVW5kbyBhY3Rpb24gbmFtZSkiID0gIkluc2VydCBEcmF3aW5nIjsKLQogLyogVW5kbyBhY3Rp
b24gbmFtZSAqLwogIkluc2VydCBMaXN0IChVbmRvIGFjdGlvbiBuYW1lKSIgPSAiSW5zZXJ0IExp
c3QiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1l
cy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4IGNi
MzA0OTA0MDg5M2M0Y2VjMTRmYzUxYzRiYzUwYzQzODBjZDkzOGUuLmQyY2Y3YmI5OGVlNTExMjNl
YmIyOTY3MjZlY2VlOTJlYWE0NGU0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJp
YnV0ZU5hbWVzLmluCkBAIC00MzYsNSArNDM2LDMgQEAgeC1hcHBsZS1kYXRhLWRldGVjdG9ycy10
eXBlCiB4LWFwcGxlLWRhdGEtZGV0ZWN0b3JzLXJlc3VsdAogCiB4LWFwcGxlLXBkZi1hbm5vdGF0
aW9uCi0KLXgtYXBwbGUtZWRpdGFibGUtaW1hZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwCmluZGV4IGU4MTMyNGI4MWU5NTNkYmQ5Y2ZlYzNmYWM1YTAwNWM2MDExZjdk
NTMuLjY3M2U5MDY0YmNhZjMxMDYzNjBiMTAxMzcxOTA4MzZmNjAwYWRhODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1
ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21l
Q2xpZW50LmgiCi0jaW5jbHVkZSAiRWRpdGFibGVJbWFnZVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IkVkaXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKQEAgLTI4Nyw5ICsyODYsNyBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogICAg
ICAgICBtX2V4cGVyaW1lbnRhbEltYWdlTWVudUVuYWJsZWQgPSAhdmFsdWUuaXNOdWxsKCk7CiAg
ICAgICAgIHVwZGF0ZUltYWdlQ29udHJvbHMoKTsKICNlbmRpZgotICAgIH0gZWxzZSBpZiAobmFt
ZSA9PSB4X2FwcGxlX2VkaXRhYmxlX2ltYWdlQXR0cikKLSAgICAgICAgdXBkYXRlRWRpdGFibGVJ
bWFnZSgpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gbG9hZGluZ0F0dHIpIHsKKyAgICB9IGVsc2Ug
aWYgKG5hbWUgPT0gbG9hZGluZ0F0dHIpIHsKICAgICAgICAgLy8gTm8gYWN0aW9uIG5lZWRlZCBm
b3IgZWFnZXIgdG8gbGF6eSB0cmFuc2l0aW9uLgogICAgICAgICBpZiAoIWhhc0xhenlMb2FkYWJs
ZUF0dHJpYnV0ZVZhbHVlKHZhbHVlKSkKICAgICAgICAgICAgIGxvYWREZWZlcnJlZEltYWdlKCk7
CkBAIC0zNDUsMjAgKzM0Miw2IEBAIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6Y2FuU3RhcnRTZWxl
Y3Rpb24oKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBIVE1MSW1hZ2VFbGVt
ZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29uc3QKLXsKLSAgICBpZiAoaGFzRWRpdGFibGVJbWFnZUF0
dHJpYnV0ZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gSFRNTEVsZW1lbnQ6
OnN1cHBvcnRzRm9jdXMoKTsKLX0KLQotYm9vbCBIVE1MSW1hZ2VFbGVtZW50Ojppc0ZvY3VzYWJs
ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKGhhc0VkaXRhYmxlSW1hZ2VBdHRyaWJ1dGUoKSkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIEhUTUxFbGVtZW50Ojppc0ZvY3VzYWJsZSgpOwot
fQotCiBib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmlzSW50ZXJhY3RpdmVDb250ZW50KCkgY29uc3QK
IHsKICAgICByZXR1cm4gaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih1c2VtYXBB
dHRyKTsKQEAgLTQxMCw5ICszOTMsNiBAQCBOb2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJlc3Vs
dCBIVE1MSW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpbwogICAgIC8v
IGluIGNhbGxiYWNrcyBiYWNrIHRvIHRoaXMgbm9kZS4KICAgICBOb2RlOjpJbnNlcnRlZEludG9B
bmNlc3RvclJlc3VsdCBpbnNlcnROb3RpZmljYXRpb25SZXF1ZXN0ID0gSFRNTEVsZW1lbnQ6Omlu
c2VydGVkSW50b0FuY2VzdG9yKGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsK
IAotICAgIGlmIChpbnNlcnRpb25UeXBlLmNvbm5lY3RlZFRvRG9jdW1lbnQgJiYgaGFzRWRpdGFi
bGVJbWFnZUF0dHJpYnV0ZSgpKQotICAgICAgICBpbnNlcnROb3RpZmljYXRpb25SZXF1ZXN0ID0g
SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQ6Ok5lZWRzUG9zdEluc2VydGlvbkNhbGxiYWNrOwot
CiAgICAgaWYgKGluc2VydGlvblR5cGUudHJlZVNjb3BlQ2hhbmdlZCAmJiAhbV9wYXJzZWRVc2Vt
YXAuaXNOdWxsKCkpCiAgICAgICAgIHRyZWVTY29wZSgpLmFkZEltYWdlRWxlbWVudEJ5VXNlbWFw
KCptX3BhcnNlZFVzZW1hcC5pbXBsKCksICp0aGlzKTsKIApAQCAtNDM3LDEyICs0MTcsNiBAQCBO
b2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBIVE1MSW1hZ2VFbGVtZW50OjppbnNlcnRl
ZEludG9BbmNlc3RvcihJbnNlcnRpbwogICAgIHJldHVybiBpbnNlcnROb3RpZmljYXRpb25SZXF1
ZXN0OwogfQogCi12b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmRpZEZpbmlzaEluc2VydGluZ05vZGUo
KQotewotICAgIGlmIChoYXNFZGl0YWJsZUltYWdlQXR0cmlidXRlKCkpCi0gICAgICAgIHVwZGF0
ZUVkaXRhYmxlSW1hZ2UoKTsKLX0KLQogdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpyZW1vdmVkRnJv
bUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXJl
bnRPZlJlbW92ZWRUcmVlKQogewogICAgIGlmIChtX2Zvcm0pCkBAIC00NTYsNjkgKzQzMCwxMCBA
QCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUg
cmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZAogICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVG
cm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcihSZWxldmFudE11dGF0aW9uOjpZZXMpOwog
ICAgIH0KIAotICAgIGlmIChyZW1vdmFsVHlwZS5kaXNjb25uZWN0ZWRGcm9tRG9jdW1lbnQpCi0g
ICAgICAgIHVwZGF0ZUVkaXRhYmxlSW1hZ2UoKTsKLQogICAgIG1fZm9ybSA9IG51bGxwdHI7CiAg
ICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5cGUsIG9sZFBhcmVu
dE9mUmVtb3ZlZFRyZWUpOwogfQogCi1ib29sIEhUTUxJbWFnZUVsZW1lbnQ6Omhhc0VkaXRhYmxl
SW1hZ2VBdHRyaWJ1dGUoKSBjb25zdAotewotICAgIGlmICghZG9jdW1lbnQoKS5zZXR0aW5ncygp
LmVkaXRhYmxlSW1hZ2VzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIGhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oeF9hcHBsZV9lZGl0YWJsZV9p
bWFnZUF0dHIpOwotfQotCi1HcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBIVE1MSW1hZ2VF
bGVtZW50OjplZGl0YWJsZUltYWdlVmlld0lEKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZWRpdGFi
bGVJbWFnZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1fZWRpdGFibGVJbWFnZS0+
ZW1iZWRkZWRWaWV3SUQoKTsKLX0KLQotdm9pZCBIVE1MSW1hZ2VFbGVtZW50Ojp1cGRhdGVFZGl0
YWJsZUltYWdlKCkKLXsKLSAgICBpZiAoIWRvY3VtZW50KCkuc2V0dGluZ3MoKS5lZGl0YWJsZUlt
YWdlc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byogcGFnZSA9IGRvY3Vt
ZW50KCkucGFnZSgpOwotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYm9v
bCBoYXNFZGl0YWJsZUF0dHJpYnV0ZSA9IGhhc0VkaXRhYmxlSW1hZ2VBdHRyaWJ1dGUoKTsKLSAg
ICBib29sIGlzQ3VycmVudGx5RWRpdGFibGUgPSAhIW1fZWRpdGFibGVJbWFnZTsKLSAgICBib29s
IHNob3VsZEJlRWRpdGFibGUgPSBpc0Nvbm5lY3RlZCgpICYmIGhhc0VkaXRhYmxlQXR0cmlidXRl
OwotCi0jaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICAvLyBDcmVhdGUgdGhlIGlu
bmVyIGF0dGFjaG1lbnQgZm9yIGVkaXRhYmxlIGltYWdlcywgb3Igbm9uLWVkaXRhYmxlCi0gICAg
Ly8gaW1hZ2VzIHRoYXQgd2VyZSBjbG9uZWQgZnJvbSBlZGl0YWJsZSBpbWFnZSBzb3VyY2VzLgot
ICAgIGlmICghYXR0YWNobWVudEVsZW1lbnQoKSAmJiAoc2hvdWxkQmVFZGl0YWJsZSB8fCAhbV9w
ZW5kaW5nQ2xvbmVkQXR0YWNobWVudElELmlzRW1wdHkoKSkpIHsKLSAgICAgICAgYXV0byBhdHRh
Y2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2ht
ZW50VGFnLCBkb2N1bWVudCgpKTsKLSAgICAgICAgaWYgKCFtX3BlbmRpbmdDbG9uZWRBdHRhY2ht
ZW50SUQuaXNFbXB0eSgpKQotICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0VW5pcXVlSWRlbnRp
ZmllcihXVEZNb3ZlKG1fcGVuZGluZ0Nsb25lZEF0dGFjaG1lbnRJRCkpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBhdHRhY2htZW50LT5lbnN1cmVVbmlxdWVJZGVudGlmaWVyKCk7Ci0gICAg
ICAgIHNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0YWNobWVudCkpOwotICAgIH0KLSNl
bmRpZgotCi0gICAgaWYgKHNob3VsZEJlRWRpdGFibGUgPT0gaXNDdXJyZW50bHlFZGl0YWJsZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFoYXNFZGl0YWJsZUF0dHJpYnV0ZSkgewotICAg
ICAgICBtX2VkaXRhYmxlSW1hZ2UgPSBudWxscHRyOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKCFtX2VkaXRhYmxlSW1hZ2UpCi0gICAgICAgIG1fZWRpdGFibGVJbWFnZSA9IEVk
aXRhYmxlSW1hZ2VSZWZlcmVuY2U6OmNyZWF0ZShkb2N1bWVudCgpKTsKLQotI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgbV9lZGl0YWJsZUltYWdlLT5hc3NvY2lhdGVXaXRoQXR0
YWNobWVudChhdHRhY2htZW50RWxlbWVudCgpLT51bmlxdWVJZGVudGlmaWVyKCkpOwotI2VuZGlm
Ci19Ci0KIEhUTUxQaWN0dXJlRWxlbWVudCogSFRNTEltYWdlRWxlbWVudDo6cGljdHVyZUVsZW1l
bnQoKSBjb25zdAogewogICAgIHJldHVybiBtX3BpY3R1cmVFbGVtZW50LmdldCgpOwpAQCAtOTAw
LDIwICs4MTUsOSBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmNvcHlOb25BdHRyaWJ1dGVQcm9w
ZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYgc291cgogI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCiAgICAgbV9wZW5kaW5nQ2xvbmVkQXR0YWNobWVudElEID0gIXNvdXJjZUlt
YWdlLm1fcGVuZGluZ0Nsb25lZEF0dGFjaG1lbnRJRC5pc0VtcHR5KCkgPyBzb3VyY2VJbWFnZS5t
X3BlbmRpbmdDbG9uZWRBdHRhY2htZW50SUQgOiBzb3VyY2VJbWFnZS5hdHRhY2htZW50SWRlbnRp
ZmllcigpOwogI2VuZGlmCi0gICAgbV9lZGl0YWJsZUltYWdlID0gc291cmNlSW1hZ2UubV9lZGl0
YWJsZUltYWdlOwogICAgIEVsZW1lbnQ6OmNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVs
ZW1lbnQoc291cmNlKTsKIH0KIAotdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50JiBldmVudCkKLXsKLSAgICBpZiAoaGFzRWRpdGFibGVJbWFnZUF0dHJpYnV0
ZSgpICYmIGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgJiYgaXM8
TW91c2VFdmVudD4oZXZlbnQpICYmIGRvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KS5idXR0b24o
KSA9PSBMZWZ0QnV0dG9uKSB7Ci0gICAgICAgIGZvY3VzKCk7Ci0gICAgICAgIGV2ZW50LnNldERl
ZmF1bHRIYW5kbGVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgSFRNTEVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwotfQotCiBDYWNoZWRJbWFnZSogSFRNTEltYWdl
RWxlbWVudDo6Y2FjaGVkSW1hZ2UoKSBjb25zdAogewogICAgIHJldHVybiBtX2ltYWdlTG9hZGVy
LT5pbWFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCA2ODNj
Mzc0OGYzMzNlMjllNzBkZmZjOTU0MzZiODIwOWM0NjE3NTZhLi45OTZmODc1MDZjYzhkMTU0ZGQ4
ZWJmYjYyYTkxMGEwMTczMTBkZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuaApAQCAtMzUsNyArMzUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hl
ZEltYWdlOwogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwotY2xhc3MgRWRpdGFibGVJbWFnZVJlZmVy
ZW5jZTsKIGNsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVudDsKIGNsYXNzIEhUTUxGb3JtRWxlbWVu
dDsKIGNsYXNzIEhUTUxJbWFnZUxvYWRlcjsKQEAgLTYyLDkgKzYxLDYgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIGludCBuYXR1cmFsSGVpZ2h0KCkgY29uc3Q7CiAgICAgY29uc3QgQXRv
bVN0cmluZyYgY3VycmVudFNyYygpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFNyYzsgfQogCi0g
ICAgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0ZvY3Vz
YWJsZSgpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgYm9vbCBpc1NlcnZlck1hcCgpIGNvbnN0Owog
CiAgICAgY29uc3QgQXRvbVN0cmluZyYgYWx0VGV4dCgpIGNvbnN0OwpAQCAtMTI1LDExICsxMjEs
NiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1N5c3RlbVByZXZpZXdJbWFn
ZSgpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0xheWVyOjpF
bWJlZGRlZFZpZXdJRCBlZGl0YWJsZUltYWdlVmlld0lEKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBoYXNFZGl0YWJsZUltYWdlQXR0cmlidXRlKCkgY29uc3Q7Ci0KLSAgICB2b2lk
IGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmKSBmaW5hbDsKLQogICAgIHZvaWQgbG9hZERlZmVy
cmVkSW1hZ2UoKTsKIAogICAgIGNvbnN0IEF0b21TdHJpbmcmIGxvYWRpbmdGb3JCaW5kaW5ncygp
IGNvbnN0OwpAQCAtMTc1LDcgKzE2Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0
aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkRmluaXNoSW5z
ZXJ0aW5nTm9kZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1v
dmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc0Zvcm1Bc3Nv
Y2lhdGVkRWxlbWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xODksOCAr
MTc5LDYgQEAgcHJpdmF0ZToKIAogICAgIEltYWdlQ2FuZGlkYXRlIGJlc3RGaXRTb3VyY2VGcm9t
UGljdHVyZUVsZW1lbnQoKTsKIAotICAgIHZvaWQgdXBkYXRlRWRpdGFibGVJbWFnZSgpOwotCiAg
ICAgdm9pZCBjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1l
bnQmKSBmaW5hbDsKIAogICAgIGZsb2F0IGVmZmVjdGl2ZUltYWdlRGV2aWNlUGl4ZWxSYXRpbygp
IGNvbnN0OwpAQCAtMjE2LDcgKzIwNCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhZE5hbWVC
ZWZvcmVBdHRyaWJ1dGVDaGFuZ2VkIHsgZmFsc2UgfTsgLy8gRklYTUU6IFdlIG9ubHkgbmVlZCB0
aGlzIGJlY2F1c2UgcGFyc2VBdHRyaWJ1dGUoKSBjYW4ndCBzZWUgdGhlIG9sZCB2YWx1ZS4KICAg
ICBib29sIG1faXNEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlciB7IGZhbHNlIH07CiAKLSAgICBSZWZQ
dHI8RWRpdGFibGVJbWFnZVJlZmVyZW5jZT4gbV9lZGl0YWJsZUltYWdlOwogICAgIFdlYWtQdHI8
SFRNTFBpY3R1cmVFbGVtZW50PiBtX3BpY3R1cmVFbGVtZW50OwogICAgIE1lZGlhUXVlcnlEeW5h
bWljUmVzdWx0cyBtX21lZGlhUXVlcnlEeW5hbWljUmVzdWx0czsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgKaW5kZXggMmY5YmU0ZDJhZWZmMDRmMzc5NjAzMjYyMWQ1NjA4YThlNDk0MTU4
My4uZGE4Y2Y2NzJhMTAxZDRjZWNmMjcxMzAxMWEyMTEwZmE4MjNkNmJlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oCkBAIC01MjUsMTAgKzUyNSw2IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJikgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsg
fQogCi0gICAgdmlydHVhbCB2b2lkIGFzc29jaWF0ZUVkaXRhYmxlSW1hZ2VXaXRoQXR0YWNobWVu
dChHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCwgY29uc3QgU3RyaW5nJikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZUVkaXRhYmxlSW1hZ2UoR3JhcGhpY3NMYXllcjo6RW1iZWRk
ZWRWaWV3SUQpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95RWRpdGFibGVJbWFnZShH
cmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCkgeyB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgY29u
ZmlndXJlTG9nZ2luZ0NoYW5uZWwoY29uc3QgU3RyaW5nJiwgV1RGTG9nQ2hhbm5lbFN0YXRlLCBX
VEZMb2dMZXZlbCkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgdXNlcklzSW50ZXJhY3RpbmcoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
ZGl0YWJsZUltYWdlUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdGFibGVJ
bWFnZVJlZmVyZW5jZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmMmJiZTQw
MTk0YWZiZDlhNzE5MTQyYTMyYjMyZWMzYjQ1NDk1MjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0YWJsZUltYWdl
UmVmZXJlbmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUwotICogSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECi0gKiBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEKLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRWRp
dGFibGVJbWFnZVJlZmVyZW5jZS5oIgotCi0jaW5jbHVkZSAiQ2hyb21lLmgiCi0jaW5jbHVkZSAi
Q2hyb21lQ2xpZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRWRpdGFibGVJbWFnZVJl
ZmVyZW5jZTo6RWRpdGFibGVJbWFnZVJlZmVyZW5jZShEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAg
OiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50KSkKLSAgICAsIG1fZW1iZWRkZWRWaWV3
SUQoR3JhcGhpY3NMYXllcjo6bmV4dEVtYmVkZGVkVmlld0lEKCkpCi17Ci0gICAgaWYgKGF1dG8q
IHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgp
LmRpZENyZWF0ZUVkaXRhYmxlSW1hZ2UobV9lbWJlZGRlZFZpZXdJRCk7Ci19Ci0KLUVkaXRhYmxl
SW1hZ2VSZWZlcmVuY2U6On5FZGl0YWJsZUltYWdlUmVmZXJlbmNlKCkKLXsKLSAgICBpZiAoIW1f
ZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoYXV0byogcGFnZSA9IG1fZG9jdW1l
bnQtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuZGlkRGVzdHJveUVk
aXRhYmxlSW1hZ2UobV9lbWJlZGRlZFZpZXdJRCk7Ci19Ci0KLXZvaWQgRWRpdGFibGVJbWFnZVJl
ZmVyZW5jZTo6YXNzb2NpYXRlV2l0aEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBhdHRhY2htZW50
SUQpCi17Ci0gICAgaWYgKCFtX2RvY3VtZW50KQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKGF1
dG8qIHBhZ2UgPSBtX2RvY3VtZW50LT5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmNocm9tZSgpLmNs
aWVudCgpLmFzc29jaWF0ZUVkaXRhYmxlSW1hZ2VXaXRoQXR0YWNobWVudChtX2VtYmVkZGVkVmll
d0lELCBhdHRhY2htZW50SUQpOwotfQotCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdGFibGVJbWFnZVJlZmVyZW5jZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FZGl0YWJsZUltYWdlUmVmZXJlbmNlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDgyMTVlNDEwODU3YzM5M2E1MTk2MjBkNzY4MTg1YThmNjZlZmUzN2Qu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FZGl0YWJsZUltYWdlUmVmZXJlbmNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlLCBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKLSAq
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRAotICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIEhPTERFUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIERvY3VtZW50OwotCi1jbGFzcyBFZGl0YWJsZUltYWdlUmVmZXJlbmNlIDogcHVibGljIFJl
ZkNvdW50ZWQ8RWRpdGFibGVJbWFnZVJlZmVyZW5jZT4gewotcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8RWRpdGFibGVJbWFnZVJlZmVyZW5jZT4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2Uo
ZG9jdW1lbnQpKTsKLSAgICB9Ci0KLSAgICB+RWRpdGFibGVJbWFnZVJlZmVyZW5jZSgpOwotCi0g
ICAgR3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQoKSBjb25zdCB7
IHJldHVybiBtX2VtYmVkZGVkVmlld0lEOyB9Ci0KLSAgICB2b2lkIGFzc29jaWF0ZVdpdGhBdHRh
Y2htZW50KGNvbnN0IFN0cmluZyYgYXR0YWNobWVudElEKTsKLQotcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBFZGl0YWJsZUltYWdlUmVmZXJlbmNlKERvY3VtZW50Jik7Ci0KLSAgICBXZWFrUHRyPERv
Y3VtZW50PiBtX2RvY3VtZW50OwotICAgIEdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIG1f
ZW1iZWRkZWRWaWV3SUQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLnlhbWwKaW5kZXggNWFlYzA4NWJjOGNlMjI3NGU5ODlmOWJkZjI1YWZlZjRkNDFk
NTMwYS4uMWUwNDM1OWVmZWVmZTkzMDQyZGNjZTA0ZTRiMGY3YmE0OWY5ZTBjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtODg5LDkgKzg4OSw2IEBAIHZpZGVvUXVhbGl0eUluY2x1
ZGVzRGlzcGxheUNvbXBvc2l0aW5nRW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UKICAgY29uZGl0
aW9uYWw6IFZJREVPCiAKLWVkaXRhYmxlSW1hZ2VzRW5hYmxlZDoKLSAgaW5pdGlhbDogZmFsc2UK
LQogYWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAppbmRl
eCAyMzQxM2Q4Y2NiMGVkMzNmNzdmMmQ4NWYwMzYyOGQ4NTVlMzI3MzA3Li4zZTY1OTVlYWJlZTFm
Y2Q4OTY0YTE0ZmU0NjAzMTI2NmM5MGViNmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtODMxLDEyICs4MzEsNiBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXI6OnRyYXZlcnNlKEdyYXBoaWNzTGF5ZXImIGxheWVyLCBjb25zdCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKEdyYQogICAgICAgICB0cmF2ZXJzZSgqbWFza0xheWVyLCB0cmF2
ZXJzYWxGdW5jKTsKIH0KIAotR3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgR3JhcGhpY3NM
YXllcjo6bmV4dEVtYmVkZGVkVmlld0lEKCkKLXsKLSAgICBzdGF0aWMgR3JhcGhpY3NMYXllcjo6
RW1iZWRkZWRWaWV3SUQgbmV4dEVtYmVkZGVkVmlld0lEOwotICAgIHJldHVybiArK25leHRFbWJl
ZGRlZFZpZXdJRDsKLX0KLQogdm9pZCBHcmFwaGljc0xheWVyOjpkdW1wTGF5ZXIoVGV4dFN0cmVh
bSYgdHMsIExheWVyVHJlZUFzVGV4dEJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAogewogICAgIHRz
IDw8IGluZGVudCA8PCAiKCIgPDwgIkdyYXBoaWNzTGF5ZXIiOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDhmMGZjMzY2NDdiZTU4
OTI0YzgwNDljZWY2YmE4YjYwZjIzMzViMjcuLjdlNGZlM2ZkMDBjYTU5ZDliNzgyYThhMDQwZjRk
NWI3OTE4MDlmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmgKQEAgLTQ5OSwyMSArNDk5LDExIEBAIHB1YmxpYzoKICAgICAgICAgTWVk
aWEsCiAgICAgICAgIENhbnZhcywKICAgICAgICAgQmFja2dyb3VuZENvbG9yLAotICAgICAgICBQ
bHVnaW4sCi0gICAgICAgIEVtYmVkZGVkVmlldworICAgICAgICBQbHVnaW4KICAgICB9OwogCi0g
ICAgZW51bSBjbGFzcyBDb250ZW50c0xheWVyRW1iZWRkZWRWaWV3VHlwZSA6IHVpbnQ4X3Qgewot
ICAgICAgICBOb25lID0gMCwKLSAgICAgICAgRWRpdGFibGVJbWFnZSwKLSAgICB9OwotCi0gICAg
dXNpbmcgRW1iZWRkZWRWaWV3SUQgPSB1aW50NjRfdDsKLSAgICBzdGF0aWMgRW1iZWRkZWRWaWV3
SUQgbmV4dEVtYmVkZGVkVmlld0lEKCk7Ci0KICAgICAvLyBQYXNzIGFuIGludmFsaWQgY29sb3Ig
dG8gcmVtb3ZlIHRoZSBjb250ZW50cyBsYXllci4KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVu
dHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGVudHNUb0VtYmVkZGVkVmlldyhHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyRW1iZWRkZWRW
aWV3VHlwZSwgRW1iZWRkZWRWaWV3SUQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50
c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIHsg
fQogICAgIHZpcnR1YWwgYm9vbCB1c2VzQ29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDhhZjMxNTNlMTI5YTI5NzI5MTIyNmMwZjNkMTNk
NTE3ZTA5ZDc1MjQuLjc4MzI0YWVjODZkZGEzMGMwOGVlYzgyZGRmMWIxNjkzMzYxZDNmOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcApAQCAtMzgwLDExICszODAsNiBAQCBSZWY8UGxhdGZvcm1DQUxheWVyPiBH
cmFwaGljc0xheWVyQ0E6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0
ZgogI2VuZGlmCiB9CiAKLVJlZjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6Y3Jl
YXRlUGxhdGZvcm1DQUxheWVyRm9yRW1iZWRkZWRWaWV3KFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlIGxheWVyVHlwZSwgR3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQsIFBsYXRmb3JtQ0FM
YXllckNsaWVudCogb3duZXIpCi17Ci0gICAgcmV0dXJuIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRl
UGxhdGZvcm1DQUxheWVyKGxheWVyVHlwZSwgb3duZXIpOwotfQotCiBSZWY8UGxhdGZvcm1DQUFu
aW1hdGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRm
b3JtQ0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
KQogewogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTE4NSwzOSArMTE4MCw2IEBAIHZvaWQgR3Jh
cGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogICAgIG5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c0ltYWdlQ2hhbmdlZCk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvRW1iZWRkZWRWaWV3KEdyYXBoaWNzTGF5ZXI6OkNv
bnRlbnRzTGF5ZXJFbWJlZGRlZFZpZXdUeXBlIGxheWVyVHlwZSwgR3JhcGhpY3NMYXllcjo6RW1i
ZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQpCi17Ci0gICAgYm9vbCBjb250ZW50c0xheWVyQ2hh
bmdlZCA9IGZhbHNlOwotCi0gICAgaWYgKGxheWVyVHlwZSAhPSBHcmFwaGljc0xheWVyOjpDb250
ZW50c0xheWVyRW1iZWRkZWRWaWV3VHlwZTo6Tm9uZSkgewotICAgICAgICBtX2NvbnRlbnRzTGF5
ZXJQdXJwb3NlID0gQ29udGVudHNMYXllclB1cnBvc2U6OkVtYmVkZGVkVmlldzsKLQotICAgICAg
ICBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBwbGF0Zm9ybVR5cGU7Ci0gICAgICAgIHN3aXRj
aCAobGF5ZXJUeXBlKSB7Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXll
ckVtYmVkZGVkVmlld1R5cGU6OkVkaXRhYmxlSW1hZ2U6Ci0gICAgICAgICAgICBwbGF0Zm9ybVR5
cGUgPSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUVkaXRhYmxlSW1hZ2VMYXllcjsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICBwbGF0Zm9ybVR5cGUgPSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZUxheWVyOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoIW1fY29udGVudHNMYXllciB8fCBtX2NvbnRlbnRzTGF5ZXItPmxheWVyVHlwZSgpICE9IHBs
YXRmb3JtVHlwZSB8fCBtX2NvbnRlbnRzTGF5ZXItPmVtYmVkZGVkVmlld0lEKCkgIT0gZW1iZWRk
ZWRWaWV3SUQpIHsKLSAgICAgICAgICAgIG1fY29udGVudHNMYXllciA9IGNyZWF0ZVBsYXRmb3Jt
Q0FMYXllckZvckVtYmVkZGVkVmlldyhwbGF0Zm9ybVR5cGUsIGVtYmVkZGVkVmlld0lELCB0aGlz
KTsKLSAgICAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2lu
dDNEKCkpOwotICAgICAgICAgICAgY29udGVudHNMYXllckNoYW5nZWQgPSB0cnVlOwotICAgICAg
ICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IENvbnRl
bnRzTGF5ZXJQdXJwb3NlOjpOb25lOwotICAgICAgICBjb250ZW50c0xheWVyQ2hhbmdlZCA9IG1f
Y29udGVudHNMYXllcjsKLSAgICAgICAgbV9jb250ZW50c0xheWVyID0gbnVsbHB0cjsKLSAgICB9
Ci0KLSAgICBpZiAoY29udGVudHNMYXllckNoYW5nZWQpCi0gICAgICAgIG5vdGVTdWJsYXllcnND
aGFuZ2VkKCk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvUGxhdGZv
cm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDb250ZW50c0xheWVyUHVycG9z
ZSBwdXJwb3NlKQogewogICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYgcGxhdGZvcm1MYXllciA9
PSBtX2NvbnRlbnRzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggZTdlMjUz
NDYwZmVkZGI1M2UxZWU4NWUyN2ViOTcxZDAwZTNiNDAwZS4uZmU3ZGM1NmE0N2YzZmJlNzhkMTMx
YWFhNmRjMjk2NDZlMGVjMzJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTEzOSw3ICsxMzksNiBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVBbmltYXRpb24oY29uc3QgU3RyaW5n
JiBhbmltYXRpb25OYW1lKSBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q29udGVudHNUb0ltYWdlKEltYWdlKikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRDb250ZW50c1RvRW1iZWRkZWRWaWV3KEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJF
bWJlZGRlZFZpZXdUeXBlLCBHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCkgb3ZlcnJpZGU7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUxh
eWVyKiBjb250ZW50c0xheWVyRm9yTWVkaWEoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgpAQCAt
MjM1LDcgKzIzNCw2IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFJlZjxQbGF0Zm9ybUNBTGF5
ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgUGxh
dGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7CiAgICAgdmlydHVhbCBSZWY8UGxhdGZvcm1DQUxh
eWVyPiBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1MYXllciosIFBsYXRmb3JtQ0FMYXll
ckNsaWVudCogb3duZXIpOwotICAgIHZpcnR1YWwgUmVmPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRl
UGxhdGZvcm1DQUxheWVyRm9yRW1iZWRkZWRWaWV3KFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
LCBHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBv
d25lcik7CiAgICAgdmlydHVhbCBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlUGxhdGZv
cm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgpOwogCiAgICAgUGxhdGZvcm1DQUxheWVyKiBwcmltYXJ5TGF5ZXIoKSBj
b25zdCB7IHJldHVybiBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0dXJhbExheWVy
LmdldCgpIDogbV9sYXllci5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKaW5kZXggMzViMDQ4OGY2MmMw
MGE4MTFkMGE4YjU5YzUyYjhiOTM3ZGFmNzliOS4uNmQ0MWQ5ODFhMmIwMWM3MThjZDA5NWU0NmJh
YWQzMTc0YmVkOGVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCkBAIC0yMjEsOSArMjIxLDYgQEAgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGUgbGF5ZXJUeXBlKQogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVSb290TGF5
ZXI6CiAgICAgICAgIHRzIDw8ICJyb290LWxheWVyIjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUVkaXRhYmxlSW1hZ2VMYXllcjoKLSAgICAgICAg
dHMgPDwgImVkaXRhYmxlLWltYWdlIjsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZUJhY2tkcm9wTGF5ZXI6CiAgICAgICAgIHRzIDw8ICJiYWNrZHJv
cC1sYXllciI7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCAxNjA5NGMzNTFlNjdkM2Zj
NzBmMzk3N2I1NDk3NGRkOGYzMTc2MzlkLi41MDRiMDFjMjQ0NGU5ZTk1OWMxOGMzNDZjYjVlYjdi
ZWNhMGQ2Mzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaApAQCAtNzYsNyArNzYsNiBAQCBwdWJsaWM6CiAgICAgICAg
IExheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ryb3BMYXllciwKICAgICAgICAgTGF5ZXJUeXBlRGFy
a1N5c3RlbUJhY2tkcm9wTGF5ZXIsCiAgICAgICAgIExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxh
eWVyLAotICAgICAgICBMYXllclR5cGVFZGl0YWJsZUltYWdlTGF5ZXIsCiAgICAgICAgIExheWVy
VHlwZUN1c3RvbSwKICAgICB9OwogICAgIGVudW0gRmlsdGVyVHlwZSB7IExpbmVhciwgTmVhcmVz
dCwgVHJpbGluZWFyIH07CkBAIC0yNDcsOCArMjQ2LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
R3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSBjdXN0b21BcHBlYXJhbmNlKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDdXN0b21BcHBlYXJhbmNlKEdyYXBoaWNzTGF5
ZXI6OkN1c3RvbUFwcGVhcmFuY2UpID0gMDsKIAotICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllcjo6
RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQoKSBjb25zdCA9IDA7Ci0KICAgICB2aXJ0dWFs
IFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nKCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRy
YXdUZXh0QXRQb2ludChDR0NvbnRleHRSZWYsIENHRmxvYXQgeCwgQ0dGbG9hdCB5LCBDR1NpemUg
c2NhbGUsIENHRmxvYXQgZm9udFNpemUsIGNvbnN0IGNoYXIqIHRleHQsIHNpemVfdCBsZW5ndGgs
IENHRmxvYXQgc3Ryb2tlV2lkdGhBc1BlcmNlbnRhZ2VPZkZvbnRTaXplID0gMCwgQ29sb3Igc3Ry
b2tlQ29sb3IgPSBDb2xvcigpKSBjb25zdDsKQEAgLTM0NSw3ICszNDIsNiBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlPiB7
CiAgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlOjpMYXllclR5cGVM
aWdodFN5c3RlbUJhY2tkcm9wTGF5ZXIsCiAgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlOjpMYXllclR5cGVEYXJrU3lzdGVtQmFja2Ryb3BMYXllciwKICAgICAgICAg
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGU6OkxheWVyVHlwZVNjcm9sbENvbnRh
aW5lckxheWVyLAotICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZTo6
TGF5ZXJUeXBlRWRpdGFibGVJbWFnZUxheWVyLAogICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZTo6TGF5ZXJUeXBlQ3VzdG9tCiAgICAgPjsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5
ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EuaAppbmRleCA3OWYwNDFmMmIzZGY1MDAxMzRiZmUyNWFjZDEwZjQ3
YmU1NmIyN2MxLi45OTIyZjQ4ZmI3MGQwOWNlMDhmNjJmNGQxYTM3YjM4NDk1OTE4ZWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKQEAgLTE3Niw4ICsxNzYsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRTY3JvbGxpbmdOb2RlSUQoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkgb3Zl
cnJpZGUgeyBtX3Njcm9sbGluZ05vZGVJRCA9IG5vZGVJRDsgfQogI2VuZGlmCiAKLSAgICBHcmFw
aGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCgpIGNvbnN0IG92ZXJyaWRl
OwotCiAgICAgVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSBvdmVycmlkZTsKIAogICAgIFJl
ZjxQbGF0Zm9ybUNBTGF5ZXI+IGNsb25lKFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpIGNv
bnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRleCA4OGM1
YTMzZDg2N2M5ZTY2NTMwYWJmNjM0YzUwYmI2NGZkZTFhMWRlLi4yODg0NmY2YjkxNTYxMWI5MmVm
NzQwZDkzYTk4MWQwMDAzYTViNjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5t
bQpAQCAtMjM0LDcgKzIzNCw2IEBAIFBsYXRmb3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDCiAgICAgY2FzZSBM
YXllclR5cGVTY3JvbGxDb250YWluZXJMYXllcjoKICAgICAgICAgLy8gU2Nyb2xsIGNvbnRhaW5l
ciBsYXllcnMgb25seSBoYXZlIHNwZWNpYWwgYmVoYXZpb3Igd2l0aCBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGUuCiAgICAgICAgIC8vIGZhbGx0aHJvdWdoCi0gICAgY2FzZSBMYXllclR5cGVFZGl0YWJs
ZUltYWdlTGF5ZXI6CiAgICAgY2FzZSBMYXllclR5cGVXZWJMYXllcjoKICAgICAgICAgbGF5ZXJD
bGFzcyA9IFtXZWJMYXllciBjbGFzc107CiAgICAgICAgIGJyZWFrOwpAQCAtMTAzOSwxMiArMTAz
OCw2IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldEV2ZW50UmVnaW9uKGNvbnN0IEV2
ZW50UmVnaW9uJiBldmVudFJlZ2lvbikKICAgICBtX2V2ZW50UmVnaW9uID0gZXZlbnRSZWdpb247
CiB9CiAKLUdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIFBsYXRmb3JtQ0FMYXllckNvY29h
OjplbWJlZGRlZFZpZXdJRCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBOU1N0cmluZyAqbGF5ZXJDb250ZW50c0Zvcm1hdChi
b29sIGFjY2VsZXJhdGVzRHJhd2luZywgYm9vbCB3YW50c0RlZXBDb2xvciwgYm9vbCBzdXBwb3J0
c1N1YnBpeGVsQW50aWFsaWFzZWRGb250cykKIHsKICNpZiBIQVZFKElPU1VSRkFDRV9SR0IxMCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDQxMDQ5YzJkNzdi
YmQ2NWE2ZGRiOTlhYzNjOTg2NTYyMWE0YTNiODUuLmUxNmE4MWU3ZWUzN2RkM2I3MzQ0MDM5N2I5
ODQzMTQ2MmE3YzljZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cApAQCAtMjEyLDI0ICsyMTIsNiBAQCBJbWFnZVNpemVDaGFuZ2VUeXBlIFJlbmRlckltYWdlOjpz
ZXRJbWFnZVNpemVGb3JBbHRUZXh0KENhY2hlZEltYWdlKiBuZXdJbWFnZSAvKgogICAgIHJldHVy
biBJbWFnZVNpemVDaGFuZ2VGb3JBbHRUZXh0OwogfQogCi1ib29sIFJlbmRlckltYWdlOjppc0Vk
aXRhYmxlSW1hZ2UoKSBjb25zdAotewotICAgIGlmICghZWxlbWVudCgpIHx8ICFpczxIVE1MSW1h
Z2VFbGVtZW50PihlbGVtZW50KCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSktPmhhc0VkaXRhYmxlSW1hZ2VB
dHRyaWJ1dGUoKTsKLX0KLSAgICAKLWJvb2wgUmVuZGVySW1hZ2U6OnJlcXVpcmVzTGF5ZXIoKSBj
b25zdAotewotICAgIGlmIChSZW5kZXJSZXBsYWNlZDo6cmVxdWlyZXNMYXllcigpKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAKLSAgICBpZiAoaXNFZGl0YWJsZUltYWdlKCkpCi0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIAotICAgIHJldHVybiBmYWxzZTsKLX0KLQogdm9pZCBSZW5kZXJJ
bWFnZTo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJT
dHlsZSYgbmV3U3R5bGUpCiB7CiAgICAgaWYgKCFoYXNJbml0aWFsaXplZFN0eWxlKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IDUxYjA3YjA0YTcxYTU0ZjM2Njll
MjM3OWIxMzU4YWE3MmYxMDM2OTEuLjlkMjc5YTU3MGQxZjQ4ZDcyNThlZDk0MzkwMmJlMjkxMTg4
NzYzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCkBAIC03OCw4ICs3
OCw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzTm9uQml0bWFwSW1hZ2UoKSBjb25zdDsKIAot
ICAgIGJvb2wgaXNFZGl0YWJsZUltYWdlKCkgY29uc3Q7Ci0KIHByb3RlY3RlZDoKICAgICB2b2lk
IHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCkBAIC0xMDksOCArMTA3LDYgQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgaXNJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
ICAgICBib29sIGlzUmVuZGVySW1hZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgCi0gICAgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsK
ICAgICB2b2lkIHBhaW50SW5jb21wbGV0ZUltYWdlT3V0bGluZShQYWludEluZm8mLCBMYXlvdXRQ
b2ludCwgTGF5b3V0VW5pdCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAppbmRleCA5OWU4MjRkMTM1NzA2MzllM2U0ZDQ0M2M5NjVmMTQ0ZTlkNDhmNDQ2Li5m
ZDAyYjUxYTEyNmEwMzAyOTI3MmYzZmQxOGE4NTFmMjBlYmQwODg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTYwNyw3ICs2MDcsNiBAQCBib29sIFJlbmRl
ckxheWVyOjpzaG91bGRCZU5vcm1hbEZsb3dPbmx5KCkgY29uc3QKICAgICAgICAgfHwgcmVuZGVy
ZXIoKS5pc1ZpZGVvKCkKICAgICAgICAgfHwgcmVuZGVyZXIoKS5pc0VtYmVkZGVkT2JqZWN0KCkK
ICAgICAgICAgfHwgcmVuZGVyZXIoKS5pc1JlbmRlcklGcmFtZSgpCi0gICAgICAgIHx8IChyZW5k
ZXJlcigpLmlzUmVuZGVySW1hZ2UoKSAmJiBkb3duY2FzdDxSZW5kZXJJbWFnZT4ocmVuZGVyZXIo
KSkuaXNFZGl0YWJsZUltYWdlKCkpCiAgICAgICAgIHx8IChyZW5kZXJlcigpLnN0eWxlKCkuc3Bl
Y2lmaWVzQ29sdW1ucygpICYmICFpc1JlbmRlclZpZXdMYXllcigpKQogICAgICAgICB8fCByZW5k
ZXJlcigpLmlzSW5GbG93UmVuZGVyRnJhZ21lbnRlZEZsb3coKTsKIH0KQEAgLTY1MTYsNyArNjUx
NSw2IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNob3VsZEJlU2VsZlBhaW50aW5nTGF5ZXIoKSBjb25z
dAogICAgICAgICB8fCByZW5kZXJlcigpLmlzQ2FudmFzKCkKICAgICAgICAgfHwgcmVuZGVyZXIo
KS5pc1ZpZGVvKCkKICAgICAgICAgfHwgcmVuZGVyZXIoKS5pc0VtYmVkZGVkT2JqZWN0KCkKLSAg
ICAgICAgfHwgKHJlbmRlcmVyKCkuaXNSZW5kZXJJbWFnZSgpICYmIGRvd25jYXN0PFJlbmRlcklt
YWdlPihyZW5kZXJlcigpKS5pc0VkaXRhYmxlSW1hZ2UoKSkKICAgICAgICAgfHwgcmVuZGVyZXIo
KS5pc1JlbmRlcklGcmFtZSgpCiAgICAgICAgIHx8IHJlbmRlcmVyKCkuaXNJbkZsb3dSZW5kZXJG
cmFnbWVudGVkRmxvdygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcAppbmRleCAyMTI4OGY2ZDg4ZWNjZGJkYTk1NjgxMmFmMmM4MGE4OTQw
ZmZlMzIxLi5lY2ZmNWQyNDM1MWUyOTM1ODI3MWI1OTY0MzA0N2E5MThkZDk4MDlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTA2
OSwxNCArMTA2OSw2IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGluZ0FuY2VzCiAgICAgICAgIHVwZGF0ZUNv
bnRlbnRzUmVjdHMoKTsKICAgICB9CiAKLSAgICBpZiAoaXM8UmVuZGVySW1hZ2U+KHJlbmRlcmVy
KCkpICYmIGRvd25jYXN0PFJlbmRlckltYWdlPihyZW5kZXJlcigpKS5pc0VkaXRhYmxlSW1hZ2Uo
KSkgewotICAgICAgICBhdXRvIGVsZW1lbnQgPSByZW5kZXJlcigpLmVsZW1lbnQoKTsKLSAgICAg
ICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBtX2dy
YXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9FbWJlZGRlZFZpZXcoR3JhcGhpY3NMYXllcjo6Q29u
dGVudHNMYXllckVtYmVkZGVkVmlld1R5cGU6OkVkaXRhYmxlSW1hZ2UsIGRvd25jYXN0PEhUTUxJ
bWFnZUVsZW1lbnQ+KGVsZW1lbnQpLT5lZGl0YWJsZUltYWdlVmlld0lEKCkpOwotICAgICAgICAg
ICAgbGF5ZXJDb25maWdDaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIGlm
IChsYXllckNvbmZpZ0NoYW5nZWQpCiAgICAgICAgIHVwZGF0ZVBhaW50aW5nUGhhc2VzKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKaW5kZXggYTJiNThlNjY2OTA2ODVmY2U2YjFhODgzNDljN2ZmM2NlNjg1MjI2YS4uY2U5YWRk
Zjg4MDM3NzVhZTk2NTJmYjgyYjNhMjczODg0NTMwYWNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTI0MzgsNyArMjQz
OCw2IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nTGF5
ZXIoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyLCBSCiAgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9z
aXRpbmdGb3JWaWRlbyhyZW5kZXJlcikKICAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0Zv
ckZyYW1lKHJlbmRlcmVyLCBxdWVyeURhdGEpCiAgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRp
bmdGb3JQbHVnaW4ocmVuZGVyZXIsIHF1ZXJ5RGF0YSkKLSAgICAgICAgfHwgcmVxdWlyZXNDb21w
b3NpdGluZ0ZvckVkaXRhYmxlSW1hZ2UocmVuZGVyZXIpCiAgICAgICAgIHx8IHJlcXVpcmVzQ29t
cG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbGluZygqcmVuZGVyZXIubGF5ZXIoKSwgcXVlcnlEYXRh
KTsKIH0KIApAQCAtMjQ5OSw3ICsyNDk4LDYgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnJlcXVpcmVzT3duQmFja2luZ1N0b3JlKGNvbnN0IFJlbmRlckxheWVyJiBsYXllciwgY28KICAg
ICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclZpZGVvKHJlbmRlcmVyKQogICAgICAgICB8
fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yRnJhbWUocmVuZGVyZXIsIHF1ZXJ5RGF0YSkKICAgICAg
ICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclBsdWdpbihyZW5kZXJlciwgcXVlcnlEYXRhKQot
ICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yRWRpdGFibGVJbWFnZShyZW5kZXJlcikK
ICAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsaW5nKGxheWVy
LCBxdWVyeURhdGEpCiAgICAgICAgIHx8IG5lZWRzQ29udGVudHNDb21wb3NpdGluZ0xheWVyKGxh
eWVyKQogICAgICAgICB8fCByZW5kZXJlci5pc1RyYW5zcGFyZW50KCkKQEAgLTI1NTEsOCArMjU0
OSw2IEBAIE9wdGlvblNldDxDb21wb3NpdGluZ1JlYXNvbj4gUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpyZWFzb25zRm9yQ29tcG9zaXRpbmcoY29uc3QKICAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9z
aXRpbmdSZWFzb246OlBsdWdpbik7CiAgICAgZWxzZSBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0Zv
ckZyYW1lKHJlbmRlcmVyLCBxdWVyeURhdGEpKQogICAgICAgICByZWFzb25zLmFkZChDb21wb3Np
dGluZ1JlYXNvbjo6SUZyYW1lKTsKLSAgICBlbHNlIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9y
RWRpdGFibGVJbWFnZShyZW5kZXJlcikpCi0gICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5n
UmVhc29uOjpFbWJlZGRlZFZpZXcpOwogCiAgICAgaWYgKChjYW5SZW5kZXIzRFRyYW5zZm9ybXMo
KSAmJiByZW5kZXJlci5zdHlsZSgpLmJhY2tmYWNlVmlzaWJpbGl0eSgpID09IEJhY2tmYWNlVmlz
aWJpbGl0eTo6SGlkZGVuKSkKICAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246
OkJhY2tmYWNlVmlzaWJpbGl0eUhpZGRlbik7CkBAIC0zMDM3LDE4ICszMDMzLDYgQEAgYm9vbCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQbHVnaW4oUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCYKICAgICByZXR1cm4gKGNvbnRlbnRCb3guaGVpZ2h0KCkgKiBjb250
ZW50Qm94LndpZHRoKCkgPiAxKTsKIH0KICAgICAKLWJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yRWRpdGFibGVJbWFnZShSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0JiByZW5kZXJlcikgY29uc3QKLXsKLSAgICBpZiAoIXJlbmRlcmVyLmlzUmVuZGVySW1hZ2Uo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byYgaW1hZ2UgPSBkb3duY2FzdDxS
ZW5kZXJJbWFnZT4ocmVuZGVyZXIpOwotICAgIGlmICghaW1hZ2UuaXNFZGl0YWJsZUltYWdlKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCiBib29sIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZyYW1lKFJlbmRlckxh
eWVyTW9kZWxPYmplY3QmIHJlbmRlcmVyLCBSZXF1aXJlc0NvbXBvc2l0aW5nRGF0YSYgcXVlcnlE
YXRhKSBjb25zdAogewogICAgIGlmICghaXM8UmVuZGVyV2lkZ2V0PihyZW5kZXJlcikpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXgg
N2E4NWIyNjk2YzY4YWE0MGQ0MjgxZjNiYzIyYzZiY2Q2Yjg4MDA1YS4uMzRlYTU4NzU3YmY3YzVi
ZmM5OTdjMDQxYzg4ZTVjMzhiODc1MTU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtODMsNyArODMsNiBAQCBlbnVtIGNsYXNz
IENvbXBvc2l0aW5nUmVhc29uIHsKICAgICBXaWxsQ2hhbmdlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDEgPDwgMjQsCiAgICAgUm9vdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAxIDw8IDI1LAogICAgIElzb2xhdGVzQ29tcG9zaXRlZEJsZW5kaW5nRGVzY2VuZGFu
dHMgID0gMSA8PCAyNiwKLSAgICBFbWJlZGRlZFZpZXcgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDEgPDwgMjcsCiB9OwogCiBlbnVtIGNsYXNzIFNjcm9sbENvb3JkaW5hdGlvblJvbGUgewpA
QCAtNDk4LDcgKzQ5Nyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5n
Rm9yU2Nyb2xsYWJsZUZyYW1lKFJlcXVpcmVzQ29tcG9zaXRpbmdEYXRhJikgY29uc3Q7CiAgICAg
Ym9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24oUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCYsIGNvbnN0IFJlbmRlckxheWVyJiwgUmVxdWlyZXNDb21wb3NpdGluZ0RhdGEmKSBjb25zdDsK
ICAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbGluZyhjb25zdCBS
ZW5kZXJMYXllciYsIFJlcXVpcmVzQ29tcG9zaXRpbmdEYXRhJikgY29uc3Q7Ci0gICAgYm9vbCBy
ZXF1aXJlc0NvbXBvc2l0aW5nRm9yRWRpdGFibGVJbWFnZShSZW5kZXJMYXllck1vZGVsT2JqZWN0
JikgY29uc3Q7CiAgICAgSW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbiBjb21wdXRlSW5kaXJlY3RD
b21wb3NpdGluZ1JlYXNvbihjb25zdCBSZW5kZXJMYXllciYsIGJvb2wgaGFzQ29tcG9zaXRlZERl
c2NlbmRhbnRzLCBib29sIGhhczNEVHJhbnNmb3JtZWREZXNjZW5kYW50cywgYm9vbCBwYWludHNJ
bnRvUHJvdmlkZWRCYWNraW5nKSBjb25zdDsKIAogICAgIHN0YXRpYyBTY3JvbGxQb3NpdGlvbmlu
Z0JlaGF2aW9yIGxheWVyU2Nyb2xsQmVoYWhhdmlvclJlbGF0aXZlVG9Db21wb3NpdGVkQW5jZXN0
b3IoY29uc3QgUmVuZGVyTGF5ZXImLCBjb25zdCBSZW5kZXJMYXllciYgY29tcG9zaXRlZEFuY2Vz
dG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA3NTA5NzdhOGQ0Yjg5YzIwM2I0
ZDM0MzM4MDQ4ZWEzYmEwYjZmZThkLi4yNDhhNmQ2Y2MzMTA0YTg3ZTczOGI4ZDM5Zjg3YmE2ZDAy
ZWQyOTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNTAsNyArMTUwLDYgQEAg
TUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJVUlQcm9jZXNzL1dlYlBhZ2VQcm94eSBcCiAJVUlQcm9j
ZXNzL1Zpc2l0ZWRMaW5rU3RvcmUgXAogCVVJUHJvY2Vzcy9pb3MvV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlclByb3h5IFwKLQlVSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250
cm9sbGVyIFwKIAlVSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgXAog
CVVJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eSBcCiAJVUlQcm9jZXNzL1dlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3Bp
L2lvcy9QZW5jaWxLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9QZW5j
aWxLaXRTUEkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M0NDkxY2VhNTU3YTk3
NTdhN2RkNGUxODM3OWM4OWI1NjEzMWQ3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvUGVuY2lsS2l0
U1BJLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEhB
VkUoUEVOQ0lMS0lUKQotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotI2ltcG9ydCA8
UGVuY2lsS2l0L1BlbmNpbEtpdC5oPgotI2ltcG9ydCA8UGVuY2lsS2l0L1BLQ2FudmFzVmlld19Q
cml2YXRlLmg+Ci0jaW1wb3J0IDxQZW5jaWxLaXQvUEtEcmF3aW5nX1ByaXZhdGUuaD4KLSNpbXBv
cnQgPFBlbmNpbEtpdC9QS0ltYWdlUmVuZGVyZXIuaD4KLSNpbXBvcnQgPFBlbmNpbEtpdC9QS1N0
cm9rZS5oPgotCi0jZWxzZQotCi0jaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgotCi1AY2xhc3MgUEtD
YW52YXNWaWV3OwotQGNsYXNzIFBLRHJhd2luZzsKLUBjbGFzcyBQS0luazsKLUBjbGFzcyBQS0lu
bGluZUlua1BpY2tlcjsKLQotdHlwZWRlZiBOU1N0cmluZyAqIFBLSW5rSWRlbnRpZmllcjsKLQot
QHByb3RvY29sIFBLQ2FudmFzVmlld0RlbGVnYXRlCi1Ab3B0aW9uYWwKLS0gKHZvaWQpZHJhd2lu
Z0RpZENoYW5nZTooUEtDYW52YXNWaWV3ICopY2FudmFzVmlldzsKLUBlbmQKLQotQHByb3RvY29s
IFBLSW5saW5lSW5rUGlja2VyRGVsZWdhdGUgPE5TT2JqZWN0PgotQG9wdGlvbmFsCi0tICh2b2lk
KWlubGluZUlua1BpY2tlcjooUEtJbmxpbmVJbmtQaWNrZXIgKilpbmxpbmVJbmtQaWNrZXIgZGlk
U2VsZWN0VG9vbDooUEtJbmtJZGVudGlmaWVyKWlkZW50aWZlcjsKLS0gKHZvaWQpaW5saW5lSW5r
UGlja2VyRGlkVG9nZ2xlUnVsZXI6KFBLSW5saW5lSW5rUGlja2VyICopaW5saW5lSW5rUGlja2Vy
OwotLSAodm9pZClpbmxpbmVJbmtQaWNrZXI6KFBLSW5saW5lSW5rUGlja2VyICopaW5saW5lSW5r
UGlja2VyIGRpZFNlbGVjdENvbG9yOihVSUNvbG9yICopY29sb3I7Ci0tIChVSVZpZXdDb250cm9s
bGVyICopdmlld0NvbnRyb2xsZXJGb3JQb3BvdmVyUHJlc2VudGF0aW9uRnJvbUlubGluZUlua1Bp
Y2tlcjooUEtJbmxpbmVJbmtQaWNrZXIgKilpbmxpbmVJbmtQaWNrZXI7Ci1AZW5kCi0KLUBpbnRl
cmZhY2UgUEtDYW52YXNWaWV3IDogVUlWaWV3Ci0KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0
ZXI9aXNGaW5nZXJEcmF3aW5nRW5hYmxlZCkgQk9PTCBmaW5nZXJEcmF3aW5nRW5hYmxlZDsKLUBw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHJ1bGVyRW5hYmxlZDsKLUBwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5KSBQS0RyYXdpbmcgKmRyYXdpbmc7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgc3Ry
b25nKSBQS0luayAqaW5rOwotQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIE5TT2JqZWN0PFBL
Q2FudmFzVmlld0RlbGVnYXRlPiAqZHJhd2luZ0RlbGVnYXRlOwotCi1AZW5kCi0KLUBpbnRlcmZh
Y2UgUEtJbmxpbmVJbmtQaWNrZXIgOiBVSUNvbnRyb2wKLQotQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHkpIFBLSW5rICpzZWxlY3RlZEluazsKLS0gKHZvaWQpc2V0U2VsZWN0ZWRJbms6KFBLSW5r
ICopc2VsZWN0ZWRJbmsgYW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQ7Ci1AcHJvcGVydHkgKG5vbmF0
b21pYywgd2VhaykgaWQ8UEtJbmxpbmVJbmtQaWNrZXJEZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0KLUBl
bmQKLQotQGludGVyZmFjZSBQS0RyYXdpbmcgOiBOU09iamVjdAotCi0tIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhIGVycm9yOihOU0Vycm9yICoqKWVycm9yOwotLSAo
TlNEYXRhICopc2VyaWFsaXplOwotCi1AZW5kCi0KLUBpbnRlcmZhY2UgUEtJbWFnZVJlbmRlcmVy
IDogTlNPYmplY3QKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU2l6ZTooQ0dTaXplKXNpemUg
c2NhbGU6KENHRmxvYXQpc2NhbGUgcmVuZGVyUXVldWU6KGRpc3BhdGNoX3F1ZXVlX3QpcmVuZGVy
UXVldWU7Ci0tICh2b2lkKXJlbmRlckRyYXdpbmc6KFBLRHJhd2luZyAqKWRyYXdpbmcgY29tcGxl
dGlvbjoodm9pZCheKShVSUltYWdlICppbWFnZSkpY29tcGxldGlvbkJsb2NrOwotCi1AZW5kCi0K
LSNlbmRpZgotCi0jZW5kaWYgLy8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Gb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uY3BwCmluZGV4IDI0N2VhYWI5NTZm
YzkzNWE2YjNjNTBlMTZkNmE1NTBkOWUxYTQ0ZWYuLjk4NjNiMmRkZjJkOTcwZWFkMjYyMDYyNjQ0
MWY3ZWIyNTVjYzExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb24uY3BwCkBAIC05OCw3ICs5OCw2IEBAIHZvaWQgRm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbjo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBl
bmNvZGVyIDw8IHBsYWNlaG9sZGVyOwogICAgIGVuY29kZXIgPDwgbGFiZWw7CiAgICAgZW5jb2Rl
ciA8PCBhcmlhTGFiZWw7Ci0gICAgZW5jb2RlciA8PCBlbWJlZGRlZFZpZXdJRDsKICAgICBlbmNv
ZGVyIDw8IGZvY3VzZWRFbGVtZW50SWRlbnRpZmllcjsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxF
TUVOVCkKICAgICBlbmNvZGVyIDw8IGhhc1N1Z2dlc3Rpb25zOwpAQCAtMjIwLDkgKzIxOSw2IEBA
IGJvb2wgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwgRm9jdXNlZEVsZW1lbnRJbmZvCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
YXJpYUxhYmVsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQuZW1iZWRkZWRWaWV3SUQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5mb2N1c2VkRWxlbWVudElkZW50aWZpZXIpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24uaAppbmRleCA0M2IzZTc2NGQzZDlkMWU3MTg3NjdjYmQ0MDdl
YTQ0MTJiYzc1N2JiLi5lZjNmY2IwYjIxYzhjOTZiMzEzN2YyZWVlMWJlYWViNjlmNzBjNWY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Gb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5o
CkBAIC0xMzMsNyArMTMzLDYgQEAgc3RydWN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24gewog
ICAgIFN0cmluZyBwbGFjZWhvbGRlcjsKICAgICBTdHJpbmcgbGFiZWw7CiAgICAgU3RyaW5nIGFy
aWFMYWJlbDsKLSAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJl
ZGRlZFZpZXdJRDsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICBib29sIGhhc1N1
Z2dlc3Rpb25zIHsgZmFsc2UgfTsKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJh
Y2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRleCAzN2E5NWMxNTMwZjkwMTEyZjVlZWIzODE3ZmE0
MzMzMWE5N2M3MmIxLi4wMTBjYTJjNWFiNTJkYWRjOTUzMGU1NTI4NWNiZGQzNWMxYTAzMGM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0zNTIsNyArMzUyLDYgQEAgdm9pZCBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIEMKICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGVTaGFwZUxheWVyOgogICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXllcjoKLSAgICBjYXNlIFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlRWRpdGFibGVJbWFnZUxheWVyOgogICAgIGNhc2Ug
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uLmgKaW5kZXggZGZiZmFiMjRhNDAwYzhjMThmN2IyODNjZmNiNjcxZmM5ZjViYWY2MC4u
MDEyNDk0ZWJmMjUwM2Y2M2UwZDVhNzNlYWVlMmEwNDNiZjI3YTE0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLmgKQEAgLTEwNSw4ICsxMDUsNiBAQCBwdWJsaWM6CiAgICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklEOwogICAgICAg
ICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSB0eXBlOwogCi0gICAgICAgIFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEOwotCiAg
ICAgICAgIHVpbnQzMl90IGhvc3RpbmdDb250ZXh0SUQ7CiAgICAgICAgIGZsb2F0IGhvc3RpbmdE
ZXZpY2VTY2FsZUZhY3RvcjsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
Lm1tCmluZGV4IDFlNzdhNzcxNjM3ZTA3NWYzOWE3Zjk2YTAxYWNiMzQ0OGY5ZTk2N2UuLmRjOTlj
ZDE2OWUxNDQ3YTA0MzkyMzU2OTBhMTUyNjZiNjFhOTBhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24ubW0KQEAgLTQ1LDcgKzQ1LDYgQEAgUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb24mIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpvcGVyYXRvcj0oUmVtb3RlTGF5ZXJU
cmUKIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllczo6
TGF5ZXJDcmVhdGlvblByb3BlcnRpZXMoKQogICAgIDogbGF5ZXJJRCgwKQogICAgICwgdHlwZShX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyKQotICAgICwgZW1iZWRkZWRW
aWV3SUQoMCkKICAgICAsIGhvc3RpbmdDb250ZXh0SUQoMCkKICAgICAsIGhvc3RpbmdEZXZpY2VT
Y2FsZUZhY3RvcigxKQogewpAQCAtNTUsNyArNTQsNiBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllczo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZQogewogICAgIGVuY29kZXIgPDwgbGF5ZXJJRDsKICAgICBlbmNvZGVyIDw8IHR5cGU7Ci0gICAg
ZW5jb2RlciA8PCBlbWJlZGRlZFZpZXdJRDsKICAgICBlbmNvZGVyIDw8IGhvc3RpbmdDb250ZXh0
SUQ7CiAgICAgZW5jb2RlciA8PCBob3N0aW5nRGV2aWNlU2NhbGVGYWN0b3I7CiB9CkBAIC02OSw5
ICs2Nyw2IEBAIGF1dG8gUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Q
cm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQudHlwZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5lbWJlZGRlZFZpZXdJRCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5ob3N0aW5nQ29u
dGV4dElEKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggNDQ4YmM5MjFiNjQyMGEyYmIwYjM0NGYzN2Zk
MTAxZGM0ODRmMDYwOS4uMTVmNTAwMDk3OGU1OGRjMjc1ZDg5MDRjYWExNjk0NGZlNjZmZWE3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC0xMzMwLDEwICsx
MzMwLDYgQEAgVmlkZW9RdWFsaXR5SW5jbHVkZXNEaXNwbGF5Q29tcG9zaXRpbmdFbmFibGVkOgog
ICBkZWZhdWx0VmFsdWU6IGZhbHNlCiAgIGNvbmRpdGlvbjogRU5BQkxFKFZJREVPKQogCi1FZGl0
YWJsZUltYWdlc0VuYWJsZWQ6Ci0gIHR5cGU6IGJvb2wKLSAgZGVmYXVsdFZhbHVlOiBmYWxzZQot
CiBTaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldzoKICAgZGVm
YXVsdFZhbHVlOiBmYWxzZQogICB0eXBlOiBib29sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
NTZmNDU2OWRiMWQzYmI0MjBkZDFmZDVjZjFmYjMzNjAzNjQ3ZjU0ZS4uMjNlZDRmMDJjYjgxNzgy
YWMxZTNhMWVmYTU0ZjM2NDIwMmE3MGRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNDQy
LDEwICs0NDIsOCBAQCBVSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlcklPUy5tbQogCiBVSVByb2Nlc3MvaW9zL0FwcEtpdFNvZnRMaW5rLm1tCiBVSVBy
b2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQotVUlQcm9jZXNzL2lvcy9FZGl0
YWJsZUltYWdlQ29udHJvbGxlci5tbQogVUlQcm9jZXNzL2lvcy9JbnB1dFZpZXdVcGRhdGVEZWZl
cnJlci5tbQogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQotVUlQcm9jZXNzL2lv
cy9QZW5jaWxLaXRTb2Z0TGluay5tbQogVUlQcm9jZXNzL2lvcy9Qcm9jZXNzQXNzZXJ0aW9uSU9T
Lm1tCiBVSVByb2Nlc3MvaW9zL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFn
ZUlPUy5tbQogVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tCkBA
IC00NjAsOCArNDU4LDYgQEAgVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2lu
Z1ZpZXcubW0KIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBAbm8tdW5pZnkKIFVJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIEBuby11bmlmeQogVUlQcm9jZXNz
L2lvcy9XS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLm1tCi1VSVByb2Nlc3MvaW9zL1dLRHJh
d2luZ0Nvb3JkaW5hdG9yLm1tCi1VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ1ZpZXcubW0KIFVJUHJv
Y2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCiBVSVByb2Nlc3MvaW9zL1dLR2Vv
bG9jYXRpb25Qcm92aWRlcklPU09iakNTZWN1cml0eU9yaWdpbi5tbQogVUlQcm9jZXNzL2lvcy9X
S0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLm1tCkBAIC02NTcsNyArNjUzLDYg
QEAgV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5tbSBAbm8tdW5pZnkKIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0KIAogLy8gRGVyaXZlZCBTb3VyY2VzCi1FZGl0
YWJsZUltYWdlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAKIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiBHUFVQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAKIEdQVVByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGIxZDQxMjQx
YjU5YjgxZDQ5YWQ2MzZlMTM1MzZmZjdiYjU0NzgzODQuLmNlNTE0YjkyMTFjNDhhNjI4YmE3YzZi
NmNmZDU1MjBlNTk4YTYyZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQpAQCAtNTE0LDcgKzUxNCw2IEBAIC0gKHZvaWQpX3NldHVwUGFnZUNv
bmZpZ3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYpcGFnZUNvbmZpZ3VyYXRp
b24KIAogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRDb2xvckZpbHRl
ckVuYWJsZWQoISFbX2NvbmZpZ3VyYXRpb24gX2NvbG9yRmlsdGVyRW5hYmxlZF0pOwogCi0gICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEVkaXRhYmxlSW1hZ2VzRW5hYmxl
ZCghIVtfY29uZmlndXJhdGlvbiBfZWRpdGFibGVJbWFnZXNFbmFibGVkXSk7CiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFVuZG9NYW5hZ2VyQVBJRW5hYmxlZCghIVtf
Y29uZmlndXJhdGlvbiBfdW5kb01hbmFnZXJBUElFbmFibGVkXSk7CiAKICNpZiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggNDlhZWU2ZWI0
NjNmOGNmNjhhMDZhNjllNjc4OTRhNzlhMTJhODBiMS4uODM2OTNjYmZmNDY5MWM0MTAyZGVlNjIz
NWNlMTU2ZTA1ZGZiYzg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTE3Myw3ICsxNzMs
NiBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3Q29uZmlndXJhdGlvbiB7CiAgICAgQk9PTCBf
aW5jb21wbGV0ZUltYWdlQm9yZGVyRW5hYmxlZDsKICAgICBCT09MIF9zaG91bGREZWZlckFzeW5j
aHJvbm91c1NjcmlwdHNVbnRpbEFmdGVyRG9jdW1lbnRMb2FkOwogICAgIEJPT0wgX2RyYXdzQmFj
a2dyb3VuZDsKLSAgICBCT09MIF9lZGl0YWJsZUltYWdlc0VuYWJsZWQ7CiAgICAgQk9PTCBfdW5k
b01hbmFnZXJBUElFbmFibGVkOwogCiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfbWVkaWFDb250
ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7CkBAIC0yNjksNyArMjY4LDYgQEAgLSAo
aW5zdGFuY2V0eXBlKWluaXQKICAgICBfc2hvdWxkRGVmZXJBc3luY2hyb25vdXNTY3JpcHRzVW50
aWxBZnRlckRvY3VtZW50TG9hZCA9IFlFUzsKICAgICBfZHJhd3NCYWNrZ3JvdW5kID0gWUVTOwog
Ci0gICAgX2VkaXRhYmxlSW1hZ2VzRW5hYmxlZCA9IE5POwogICAgIF91bmRvTWFuYWdlckFQSUVu
YWJsZWQgPSBOTzsKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCkBAIC00NDYsNyArNDQ0LDYgQEAg
LSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCiAgICAgY29uZmlndXJhdGlvbi0+X3No
b3VsZERlZmVyQXN5bmNocm9ub3VzU2NyaXB0c1VudGlsQWZ0ZXJEb2N1bWVudExvYWQgPSBzZWxm
LT5fc2hvdWxkRGVmZXJBc3luY2hyb25vdXNTY3JpcHRzVW50aWxBZnRlckRvY3VtZW50TG9hZDsK
ICAgICBjb25maWd1cmF0aW9uLT5fZHJhd3NCYWNrZ3JvdW5kID0gc2VsZi0+X2RyYXdzQmFja2dy
b3VuZDsKIAotICAgIGNvbmZpZ3VyYXRpb24tPl9lZGl0YWJsZUltYWdlc0VuYWJsZWQgPSBzZWxm
LT5fZWRpdGFibGVJbWFnZXNFbmFibGVkOwogICAgIGNvbmZpZ3VyYXRpb24tPl91bmRvTWFuYWdl
ckFQSUVuYWJsZWQgPSBzZWxmLT5fdW5kb01hbmFnZXJBUElFbmFibGVkOwogCiAgICAgcmV0dXJu
IGNvbmZpZ3VyYXRpb247CkBAIC0xMTg4LDE2ICsxMTg1LDYgQEAgLSAoQk9PTClfYWxsb3dNZWRp
YUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2sKICAgICByZXR1
cm4gX2FsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxi
YWNrOwogfQogCi0tICh2b2lkKV9zZXRFZGl0YWJsZUltYWdlc0VuYWJsZWQ6KEJPT0wpZW5hYmxl
ZAotewotICAgIF9lZGl0YWJsZUltYWdlc0VuYWJsZWQgPSBlbmFibGVkOwotfQotCi0tIChCT09M
KV9lZGl0YWJsZUltYWdlc0VuYWJsZWQKLXsKLSAgICByZXR1cm4gX2VkaXRhYmxlSW1hZ2VzRW5h
YmxlZDsKLX0KLQogLSAodm9pZClfc2V0VW5kb01hbmFnZXJBUElFbmFibGVkOihCT09MKWVuYWJs
ZWQKIHsKICAgICBfdW5kb01hbmFnZXJBUElFbmFibGVkID0gZW5hYmxlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9u
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb25Qcml2YXRlLmgKaW5kZXggNDc4YWZiMGU1YWY2YmI4OGE4MWQ5OWY3NWU1MmY4
YWQzMjU4ZWUwZi4uOTk1ZTIxZDhmZTUyNWY2MjJjNzEyN2MxZWQ5NTkyYzlhY2U0ZTdlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb25Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKQEAgLTEyMiw3ICsxMjIsNiBAQCB0eXBl
ZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1dLV2ViVmlld0NhdGVnb3J5KSB7CiAvLyBUaGUgaW5w
dXQgb2YgdGhpcyBTUEkgaXMgYW4gYXJyYXkgb2YgaW1hZ2UgVVRJIChVbmlmb3JtIFR5cGUgSWRl
bnRpZmllcikuCiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9zZXRBZGRpdGlv
bmFsU3VwcG9ydGVkSW1hZ2VUeXBlczopIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hZGRpdGlvbmFs
U3VwcG9ydGVkSW1hZ2VUeXBlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3Mo
MTIuMikpOwogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRFZGl0YWJsZUltYWdl
c0VuYWJsZWQ6KSBCT09MIF9lZGl0YWJsZUltYWdlc0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9
X3NldFVuZG9NYW5hZ2VyQVBJRW5hYmxlZDopIEJPT0wgX3VuZG9NYW5hZ2VyQVBJRW5hYmxlZCBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBzZXR0ZXI9X3NldFdlYlZpZXdDYXRlZ29yeTopIF9XS1dlYlZpZXdDYXRlZ29yeSBf
d2ViVmlld0NhdGVnb3J5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRJZ25vcmVzQXBw
Qm91bmREb21haW5zOikgQk9PTCBfaWdub3Jlc0FwcEJvdW5kRG9tYWlucyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLmgKaW5kZXggYmI5OGQ4MWY0NDZiODRm
ODJiNzMzZGNjMmFjMWU2NzhlODczOTJlMi4uZjdlMmUzMzFkMWEyNGFkMTZmYWJhODJjNzc4MmIz
OGIxZWY0OTk1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9X
S1dlYlZpZXdJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2Vi
Vmlld0lPUy5oCkBAIC0xMzEsNyArMTMxLDYgQEAKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBCT09MIF9pc0JhY2tncm91bmQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIEJPT0wgX2FsbG93c0RvdWJsZVRhcEdlc3R1cmVzOwotQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBCT09MIF9zdHlsdXNUYXBHZXN0dXJlU2hvdWxkQ3JlYXRlRWRpdGFibGVJbWFn
ZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfaGF2ZVNldE9ic2N1cmVk
SW5zZXRzOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBVSUVkZ2VJbnNldHMgX2Nv
bXB1dGVkT2JzY3VyZWRJbnNldDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlF
ZGdlSW5zZXRzIF9jb21wdXRlZFVub2JzY3VyZWRTYWZlQXJlYUluc2V0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQppbmRleCBiODc4NDQ2MGI0
OGI3YjBlYWIwZjlhOTNkZGM0MzU3YWZmNDM4MjNhLi41MTNkOGRjNDczZmEzMTA4NDM1OWI0NTI3
ZWYyNzM3NDFlYjJhYjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
aW9zL1dLV2ViVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld0lPUy5tbQpAQCAtMTQ0LDkgKzE0NCw2IEBAIC0gKHZvaWQpX3NldHVwU2Nyb2xs
QW5kQ29udGVudFZpZXdzCiAgICAgICAgIFtfc2Nyb2xsVmlldyBfc2V0QXZvaWRzSnVtcE9uSW50
ZXJydXB0ZWRCb3VuY2U6WUVTXTsKICAgICB9CiAKLSAgICBpZiAoW19jb25maWd1cmF0aW9uIF9l
ZGl0YWJsZUltYWdlc0VuYWJsZWRdKQotICAgICAgICBbX3Njcm9sbFZpZXcgcGFuR2VzdHVyZVJl
Y29nbml6ZXJdLmFsbG93ZWRUb3VjaFR5cGVzID0gQFsgQChVSVRvdWNoVHlwZURpcmVjdCkgXTsK
LQogICAgIFtzZWxmIF91cGRhdGVTY3JvbGxWaWV3SW5zZXRBZGp1c3RtZW50QmVoYXZpb3JdOwog
CiAgICAgW3NlbGYgYWRkU3Vidmlldzpfc2Nyb2xsVmlldy5nZXQoKV07CkBAIC0xNDYwLDExICsx
NDU3LDYgQEAgLSAoQk9PTClfYWxsb3dzRG91YmxlVGFwR2VzdHVyZXMKICAgICByZXR1cm4gIVdU
Rjo6YXJlRXNzZW50aWFsbHlFcXVhbDxmbG9hdD4oY29udGVudFpvb21TY2FsZShzZWxmKSwgX2lu
aXRpYWxTY2FsZUZhY3Rvcik7CiB9CiAKLS0gKEJPT0wpX3N0eWx1c1RhcEdlc3R1cmVTaG91bGRD
cmVhdGVFZGl0YWJsZUltYWdlCi17Ci0gICAgcmV0dXJuIFtfY29uZmlndXJhdGlvbiBfZWRpdGFi
bGVJbWFnZXNFbmFibGVkXTsKLX0KLQogI3ByYWdtYSBtYXJrIFVJU2Nyb2xsVmlld0RlbGVnYXRl
CiAKIC0gKEJPT0wpdXNlc1N0YW5kYXJkQ29udGVudFZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaAppbmRleCA4ZjAxMWFjZmY0MzhiOWJjMjEwYmRiNTE3NTFiNDVlNjc4NTVkZjZm
Li4yOTkzMDc4NWZlZmYzMzZjMjVmZTk5MmYwMWYxYWI1ZTA1ZjUyMmI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC01Nyw3ICs1Nyw2IEBAIE9CSkNfQ0xBU1MgTlNNZW51
OwogT0JKQ19DTEFTUyBOU1NldDsKIE9CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogT0JK
Q19DTEFTUyBVSUdlc3R1cmVSZWNvZ25pemVyOwotT0JKQ19DTEFTUyBXS0RyYXdpbmdWaWV3Owog
T0JKQ19DTEFTUyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKIAogI2lmIFVTRShBUFBLSVQpCkBA
IC01MzcsMTAgKzUzNiw2IEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBIQVZFKFBF
TkNJTEtJVCkKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxXS0RyYXdpbmdWaWV3PiBjcmVhdGVEcmF3
aW5nVmlldyhXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCkgeyByZXR1cm4g
bnVsbHB0cjsgfQotI2VuZGlmCi0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsUG9pbnRlcnNGb3JHZXN0dXJlUmVjb2duaXplcihVSUdlc3R1cmVSZWNvZ25pemVy
KikgeyB9CiAgICAgdmlydHVhbCBXVEY6Ok9wdGlvbmFsPHVuc2lnbmVkPiBhY3RpdmVUb3VjaElk
ZW50aWZpZXJGb3JHZXN0dXJlUmVjb2duaXplcihVSUdlc3R1cmVSZWNvZ25pemVyKikgeyByZXR1
cm4gV1RGOjpudWxsb3B0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QuaAppbmRleCBhOGUxZTA4
NTNiYTk2MjJhOGQ4Yzc4ZDYzMDIxYTM2ODFlNmY4NGRiLi5lOGEzMDc4ZTQ4MGQyMTJkNDZjZDYz
OGUyOGRkOTVkMjVmOGY4MjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0LmgKQEAgLTMzLDcg
KzMzLDYgQEAKIAogT0JKQ19DTEFTUyBDQUFuaW1hdGlvbjsKIE9CSkNfQ0xBU1MgV0tBbmltYXRp
b25EZWxlZ2F0ZTsKLU9CSkNfQ0xBU1MgV0tFbWJlZGRlZFZpZXc7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCkBAIC04MCwxNiArNzksMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUxheWVy
KGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGll
cyYpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBtYWtlTm9kZShj
b25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXMm
KTsKIAotICAgIFJldGFpblB0cjxXS0VtYmVkZGVkVmlldz4gY3JlYXRlRW1iZWRkZWRWaWV3KGNv
bnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllcyYp
OwotCiAgICAgdm9pZCBsYXllcldpbGxCZVJlbW92ZWQoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
UGxhdGZvcm1MYXllcklEKTsKIAogICAgIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkq
IG1fZHJhd2luZ0FyZWEgeyBudWxscHRyIH07CiAgICAgUmVtb3RlTGF5ZXJUcmVlTm9kZSogbV9y
b290Tm9kZSB7IG51bGxwdHIgfTsKICAgICBIYXNoTWFwPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6
OlBsYXRmb3JtTGF5ZXJJRCwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+PiBt
X25vZGVzOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXll
cklELCBSZXRhaW5QdHI8V0tBbmltYXRpb25EZWxlZ2F0ZT4+IG1fYW5pbWF0aW9uRGVsZWdhdGVz
OwotICAgIEhhc2hNYXA8V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQsIFJl
dGFpblB0cjxXS0VtYmVkZGVkVmlldz4+IG1fZW1iZWRkZWRWaWV3czsKLSAgICBIYXNoTWFwPFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCwgV2ViQ29yZTo6R3JhcGhpY3NM
YXllcjo6RW1iZWRkZWRWaWV3SUQ+IG1fbGF5ZXJUb0VtYmVkZGVkVmlld01hcDsKICAgICBib29s
IG1faXNEZWJ1Z0xheWVyVHJlZUhvc3QgeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3Qu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlSG9zdC5tbQppbmRleCA3MjE1ZmU3NzkyMzNkZjc4ZmEzOWI3NzQ2YzY4ZDJlOWVkNGRlZjYx
Li5lMjRhOGZmZTRmMzA1YmNkNDA3MGEzMTZmMmVjYzljOTQ4NzhjNjEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9z
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlSG9zdC5tbQpAQCAtMTUwLDEyICsxNTAsNiBAQCB2b2lkIFJlbW90ZUxheWVyVHJl
ZUhvc3Q6OmxheWVyV2lsbEJlUmVtb3ZlZChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9y
bUxheQogICAgICAgICBtX2FuaW1hdGlvbkRlbGVnYXRlcy5yZW1vdmUoYW5pbWF0aW9uRGVsZWdh
dGVJdGVyKTsKICAgICB9CiAKLSAgICBhdXRvIGVtYmVkZGVkVmlld0l0ZXIgPSBtX2xheWVyVG9F
bWJlZGRlZFZpZXdNYXAuZmluZChsYXllcklEKTsKLSAgICBpZiAoZW1iZWRkZWRWaWV3SXRlciAh
PSBtX2xheWVyVG9FbWJlZGRlZFZpZXdNYXAuZW5kKCkpIHsKLSAgICAgICAgbV9lbWJlZGRlZFZp
ZXdzLnJlbW92ZShlbWJlZGRlZFZpZXdJdGVyLT52YWx1ZSk7Ci0gICAgICAgIG1fbGF5ZXJUb0Vt
YmVkZGVkVmlld01hcC5yZW1vdmUoZW1iZWRkZWRWaWV3SXRlcik7Ci0gICAgfQotCiAgICAgbV9u
b2Rlcy5yZW1vdmUobGF5ZXJJRCk7CiB9CiAKQEAgLTIxNCw4ICsyMDgsNiBAQCB2b2lkIFJlbW90
ZUxheWVyVHJlZUhvc3Q6OmNsZWFyTGF5ZXJzKCkKICAgICB9CiAKICAgICBtX25vZGVzLmNsZWFy
KCk7Ci0gICAgbV9lbWJlZGRlZFZpZXdzLmNsZWFyKCk7Ci0gICAgbV9sYXllclRvRW1iZWRkZWRW
aWV3TWFwLmNsZWFyKCk7CiAgICAgbV9yb290Tm9kZSA9IG51bGxwdHI7CiB9CiAKQEAgLTI2Nyw3
ICsyNTksNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5
ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogICAgIGNhc2UgUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVQYWdlVGlsZWRCYWNraW5nTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllcjoKICAgICBjYXNlIFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVyTGF5ZXI6Ci0gICAgY2FzZSBQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZUVkaXRhYmxlSW1hZ2VMYXllcjoKICAgICAgICAgcmV0dXJuIFJl
bW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKHByb3BlcnRpZXMubGF5ZXJJ
RCk7CiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9z
L1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXggNGI4ZjA4OThi
ZDY1ZTQ3OWJjYmFiY2NlZjE2YzMwN2UzYTQwNDI3NC4uZTQ4MDg1ZDIyNWQyMjk5ZDUyYjc0OWRi
ZTdhZjM2MDM1M2RlMDVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElP
Uy5tbQpAQCAtMjgsMTEgKzI4LDkgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLSNp
bXBvcnQgIkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVWaWV3cy5oIgog
I2ltcG9ydCAiVUlLaXRTUEkuaCIKLSNpbXBvcnQgIldLRHJhd2luZ1ZpZXcuaCIKICNpbXBvcnQg
IldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCA8VUlLaXQvVUlTY3JvbGxWaWV3Lmg+CiAjaW1wb3J0
IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KQEAgLTk3LDM5ICs5NSwxMiBAQCBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFr
ZU5vZGUoY29uc3QgUmVtb3RlTAogICAgICAgICAvLyBUaGUgZGVidWcgaW5kaWNhdG9yIHBhcmVu
dHMgdmlld3MgdW5kZXIgbGF5ZXJzLCB3aGljaCBjYW4gY2F1c2UgY3Jhc2hlcyB3aXRoIFVJU2Ny
b2xsVmlldy4KICAgICAgICAgcmV0dXJuIG1ha2VBZG9wdGluZ1ZpZXcoW1tVSVZpZXcgYWxsb2Nd
IGluaXRdKTsKIAotICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVFZGl0YWJsZUlt
YWdlTGF5ZXI6Ci0gICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoY3JlYXRlRW1iZWRkZWRWaWV3
KHByb3BlcnRpZXMpKTsKLQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiB9CiAKLVJldGFpblB0cjxXS0Vt
YmVkZGVkVmlldz4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlRW1iZWRkZWRWaWV3KGNvbnN0
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllcyYgcHJv
cGVydGllcykKLXsKLSAgICBpZiAobV9pc0RlYnVnTGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgcmV0
dXJuIGFkb3B0TlMoW1tVSVZpZXcgYWxsb2NdIGluaXRdKTsKLQotICAgIGF1dG8gcmVzdWx0ID0g
bV9lbWJlZGRlZFZpZXdzLmVuc3VyZShwcm9wZXJ0aWVzLmVtYmVkZGVkVmlld0lELCBbJl0oKSAt
PiBSZXRhaW5QdHI8VUlWaWV3PiB7Ci0gICAgICAgIHN3aXRjaCAocHJvcGVydGllcy50eXBlKSB7
Ci0jaWYgSEFWRShQRU5DSUxLSVQpCi0gICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVFZGl0YWJsZUltYWdlTGF5ZXI6IHsKLSAgICAgICAgICAgIGF1dG8gZWRpdGFibGVJbWFn
ZSA9IG1fZHJhd2luZ0FyZWEtPnBhZ2UoKS5lZGl0YWJsZUltYWdlQ29udHJvbGxlcigpLmVkaXRh
YmxlSW1hZ2UocHJvcGVydGllcy5lbWJlZGRlZFZpZXdJRCk7Ci0gICAgICAgICAgICByZXR1cm4g
ZWRpdGFibGVJbWFnZSA/IGVkaXRhYmxlSW1hZ2UtPmRyYXdpbmdWaWV3IDogbmlsOwotICAgICAg
ICB9Ci0jZW5kaWYKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBhZG9wdE5T
KFtbVUlWaWV3IGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICBhdXRvIHZp
ZXcgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkp
Ci0gICAgICAgIG1fbGF5ZXJUb0VtYmVkZGVkVmlld01hcC5yZW1vdmUoUmVtb3RlTGF5ZXJUcmVl
Tm9kZTo6bGF5ZXJJRChbdmlldyBsYXllcl0pKTsKLSAgICBtX2xheWVyVG9FbWJlZGRlZFZpZXdN
YXAuc2V0KHByb3BlcnRpZXMubGF5ZXJJRCwgcHJvcGVydGllcy5lbWJlZGRlZFZpZXdJRCk7Ci0g
ICAgcmV0dXJuIHZpZXc7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MuaApp
bmRleCAwNmZjY2U5Njc4MjVkNzFkZWYyNmVlZTFkYTAyYWFlZWE4YjJhN2E4Li4zM2ExNDYxMGI4
YWZiY2M5NjZmOTgyNmU3YjQ1MzYzN2E2YjlkNTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXll
clRyZWVWaWV3cy5oCkBAIC02NiwxNCArNjYsNiBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBAaW50
ZXJmYWNlIFdLQ2hpbGRTY3JvbGxWaWV3IDogVUlTY3JvbGxWaWV3IDxXS0NvbnRlbnRDb250cm9s
bGVkPgogQGVuZAogCi1AaW50ZXJmYWNlIFdLRW1iZWRkZWRWaWV3IDogVUlWaWV3IDxXS0NvbnRl
bnRDb250cm9sbGVkPgotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhFbWJlZGRlZFZpZXdJRDoo
V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpZW1iZWRkZWRWaWV3SUQ7Ci0K
LUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgYXNzaWduKSBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRDsKLQotQGVuZAotCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogT3B0aW9uU2V0PFdlYkNvcmU6OlRvdWNoQWN0aW9uPiB0b3VjaEFjdGlv
bnNGb3JQb2ludChVSVZpZXcgKnJvb3RWaWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9S
ZW1vdGVMYXllclRyZWVWaWV3cy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0KaW5kZXggNjk2NGE3NWQ3NjNiODVi
MDgxNjhiZGVmMTVjYzk2OGRlYWFmYTI0OC4uMTFiYjAxYjM3MmNlNjk3YjZlNjNhNDNlNmE0NmRm
ODI0M2NhZGMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tCkBAIC0z
Myw3ICszMyw2IEBACiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVOb2RlLmgiCiAjaW1wb3J0ICJV
SUtpdFNQSS5oIgogI2ltcG9ydCAiV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplci5oIgotI2lt
cG9ydCAiV0tEcmF3aW5nVmlldy5oIgogI2ltcG9ydCA8V2ViQ29yZS9SZWdpb24uaD4KICNpbXBv
cnQgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
Q29yZUNBTGF5ZXJFeHRyYXMuaD4KQEAgLTQyNiwxOSArNDI1LDQgQEAgLSAoQk9PTClnZXN0dXJl
UmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyIHNob3Vs
ZEJlUmVxdWkKIAogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gV0tFbWJlZGRlZFZpZXcKLQotLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRW1iZWRkZWRWaWV3SUQ6KFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXI6OkVtYmVkZGVkVmlld0lEKWVtYmVkZGVkVmlld0lECi17Ci0gICAgc2VsZiA9IFtzdXBlciBp
bml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfZW1iZWRk
ZWRWaWV3SUQgPSBlbWJlZGRlZFZpZXdJRDsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi1AZW5k
Ci0KICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggN2QzYzkzOWQ4NmQ1MDY4Zjc0NmRkYTUwYTQxNWIxNDRi
ZDdlMzcyMS4uNWUwMjQzMmI0NzllNmMyNjliYzA3ZWY4NjA4MzUxMzFkODBmZTE3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNjYsMTAgKzI2Niw2IEBA
CiAjaW5jbHVkZSAiU2VjS2V5UHJveHlTdG9yZS5oIgogI2VuZGlmCiAKLSNpZiBIQVZFKFBFTkNJ
TEtJVCkKLSNpbmNsdWRlICJFZGl0YWJsZUltYWdlQ29udHJvbGxlci5oIgotI2VuZGlmCi0KICNp
ZiBIQVZFKEFQUF9TU08pCiAjaW5jbHVkZSAiU09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IuaCIK
ICNlbmRpZgpAQCAtOTk0LDExICs5OTAsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQXR0YWNo
VG9SdW5uaW5nUHJvY2VzcygpCiAgICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IG1ha2VVbmlx
dWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNlbmRpZgogCi0j
aWYgSEFWRShQRU5DSUxLSVQpCi0gICAgQVNTRVJUKCFtX2VkaXRhYmxlSW1hZ2VDb250cm9sbGVy
KTsKLSAgICBtX2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxFZGl0YWJsZUlt
YWdlQ29udHJvbGxlcj4oKnRoaXMpOwotI2VuZGlmCi0gICAgCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKICAgICBBU1NFUlQoIW1fd2ViRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5KTsKICAgICBtX3dlYkRldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eSA9IG1ha2VVbmlxdWU8V2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlclByb3h5PigqdGhpcyk7CkBAIC03NjQwLDEwICs3NjMxLDYgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0YXRlUmVh
c29uKQogICAgIG1fY3JlZGVudGlhbHNNZXNzZW5nZXIgPSBudWxscHRyOwogI2VuZGlmCiAKLSNp
ZiBIQVZFKFBFTkNJTEtJVCkKLSAgICBtX2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyID0gbnVsbHB0
cjsKLSNlbmRpZgotICAgIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShERVZJ
Q0VfT1JJRU5UQVRJT04pCiAgICAgbV93ZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
UHJveHkgPSBudWxscHRyOwogI2VuZGlmCkBAIC05NzMwLDExICs5NzE3LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEludmFsaWRhdGVEYXRhRm9yQXR0YWNobWVudChBUEk6OkF0dGFjaG1lbnQm
IGF0dGFjaG1lbnQpCiAKIFdlYlBhZ2VQcm94eTo6U2hvdWxkVXBkYXRlQXR0YWNobWVudEF0dHJp
YnV0ZXMgV2ViUGFnZVByb3h5Ojp3aWxsVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3Qg
QVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50KQogewotI2lmIEhBVkUoUEVOQ0lMS0lUKQotICAg
IHJldHVybiBtX2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLT53aWxsVXBkYXRlQXR0YWNobWVudEF0
dHJpYnV0ZXMoYXR0YWNobWVudCk7Ci0jZWxzZQogICAgIHJldHVybiBTaG91bGRVcGRhdGVBdHRh
Y2htZW50QXR0cmlidXRlczo6WWVzOwotI2VuZGlmCiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0Ep
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDkwNjQ3ZTEzYjFmMDNh
NjZhYzE0YjAzMGM3MDVlYWQ4ODNjMDQwYTAuLmYzZDNjYjJiMjQzYTU2YzA4NDY5MGQwZThjZTkw
NWQ0ODk4NGEwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0y
OTMsNyArMjkzLDYgQEAgdHlwZWRlZiBIV05EIFBsYXRmb3JtVmlld1dpZGdldDsKIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTsKIGNs
YXNzIERyYXdpbmdBcmVhUHJveHk7Ci1jbGFzcyBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjsKIGNs
YXNzIEdhbWVwYWREYXRhOwogY2xhc3MgTWVkaWFVc2FnZU1hbmFnZXI7CiBjbGFzcyBOYXRpdmVX
ZWJHZXN0dXJlRXZlbnQ7CkBAIC04MTgsNyArODE3LDYgQEAgcHVibGljOgogICAgIHZvaWQgY29u
dGVudFNpemVDYXRlZ29yeURpZENoYW5nZShjb25zdCBTdHJpbmcmIGNvbnRlbnRTaXplQ2F0ZWdv
cnkpOwogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwogICAgIHZvaWQgaGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4sIHVp
bnQ2NF90IHJlcXVlc3RJRCk7Ci0gICAgdm9pZCBoYW5kbGVTdHlsdXNTaW5nbGVUYXBBdFBvaW50
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2b2lk
IHNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGJvb2wpOwogICAgIGJvb2wgZm9yY2VBbHdheXNV
c2VyU2NhbGFibGUoKSBjb25zdCB7IHJldHVybiBtX2ZvcmNlQWx3YXlzVXNlclNjYWxhYmxlOyB9
CiAgICAgZG91YmxlIGxheW91dFNpemVTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmll
d3BvcnRDb25maWd1cmF0aW9uTGF5b3V0U2l6ZVNjYWxlRmFjdG9yOyB9CkBAIC0xNjY0LDEwICsx
NjYyLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVDdXJyZW50TW9kaWZpZXJTdGF0ZSgp
OwogCi0jaWYgSEFWRShQRU5DSUxLSVQpCi0gICAgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXImIGVk
aXRhYmxlSW1hZ2VDb250cm9sbGVyKCkgeyByZXR1cm4gKm1fZWRpdGFibGVJbWFnZUNvbnRyb2xs
ZXI7IH0KLSNlbmRpZgotCiAgICAgUHJvdmlzaW9uYWxQYWdlUHJveHkqIHByb3Zpc2lvbmFsUGFn
ZVByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9wcm92aXNpb25hbFBhZ2UuZ2V0KCk7IH0KICAgICB2
b2lkIGNvbW1pdFByb3Zpc2lvbmFsUGFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1l
SW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQ
cm92aWRlciwgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNh
dGVJbmZvJiwgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQs
IE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVD
b250ZW50LCBXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5LCBjb25zdCBVc2VyRGF0YSYpOwogCkBA
IC0yODE2LDEwICsyODEwLDYgQEAgcHJpdmF0ZToKIAogICAgIFRleHRNYW5pcHVsYXRpb25JdGVt
Q2FsbGJhY2sgbV90ZXh0TWFuaXB1bGF0aW9uSXRlbUNhbGxiYWNrOwogCi0jaWYgSEFWRShQRU5D
SUxLSVQpCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyPiBtX2Vk
aXRhYmxlSW1hZ2VDb250cm9sbGVyOwotI2VuZGlmCi0KICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJP
UEFHQVRJT05fVklFVykKICAgICBMYXllckhvc3RpbmdDb250ZXh0SUQgbV9jb250ZXh0SURGb3JW
aXNpYmlsaXR5UHJvcGFnYXRpb24geyAwIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDUxNGVjYTY4OWI2NTFjY2RmZWQ2MTE4NTBkMmIxNGJjMmY0YzU5
ODguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBI
QVZFKFBFTkNJTEtJVCkKLQotI2luY2x1ZGUgIkFQSUF0dGFjaG1lbnQuaCIKLSNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNp
bmNsdWRlIDx3dGYvV2Vha09iakNQdHIuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1PQkpDX0NMQVNTIFdLRHJhd2luZ1ZpZXc7
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgRWRpdGFibGVJbWFnZSB7Ci0gICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgIFJldGFpblB0cjxXS0RyYXdpbmdWaWV3
PiBkcmF3aW5nVmlldzsKLSAgICBTdHJpbmcgYXR0YWNobWVudElEOwotfTsKLQotY2xhc3MgRWRp
dGFibGVJbWFnZUNvbnRyb2xsZXIgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKLSAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFZGl0
YWJsZUltYWdlQ29udHJvbGxlcik7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgRWRpdGFibGVJbWFn
ZUNvbnRyb2xsZXIoV2ViUGFnZVByb3h5Jik7Ci0gICAgfkVkaXRhYmxlSW1hZ2VDb250cm9sbGVy
KCk7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KLSAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotCi0gICAg
RWRpdGFibGVJbWFnZSogZWRpdGFibGVJbWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJl
ZGRlZFZpZXdJRCk7Ci0gICAgRWRpdGFibGVJbWFnZSYgZW5zdXJlRWRpdGFibGVJbWFnZShXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCk7Ci0KLSAgICB2b2lkIGludmFsaWRh
dGVBdHRhY2htZW50Rm9yRWRpdGFibGVJbWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJl
ZGRlZFZpZXdJRCk7Ci0KLSAgICBXZWJQYWdlUHJveHk6OlNob3VsZFVwZGF0ZUF0dGFjaG1lbnRB
dHRyaWJ1dGVzIHdpbGxVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0dGFj
aG1lbnQmKTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIGRpZENyZWF0ZUVkaXRhYmxlSW1hZ2UoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpOwotICAgIHZvaWQgZGlkRGVzdHJv
eUVkaXRhYmxlSW1hZ2UoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpOwot
Ci0gICAgdm9pZCBhc3NvY2lhdGVXaXRoQXR0YWNobWVudChXZWJDb3JlOjpHcmFwaGljc0xheWVy
OjpFbWJlZGRlZFZpZXdJRCwgY29uc3QgU3RyaW5nJiBhdHRhY2htZW50SUQpOwotCi0gICAgdm9p
ZCBsb2FkU3Ryb2tlc0Zyb21BdHRhY2htZW50KEVkaXRhYmxlSW1hZ2UmLCBjb25zdCBBUEk6OkF0
dGFjaG1lbnQmKTsKLQotICAgIFdlYWtQdHI8V2ViUGFnZVByb3h5PiBtX3dlYlBhZ2VQcm94eTsK
LQotICAgIEhhc2hNYXA8V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQsIHN0
ZDo6dW5pcXVlX3B0cjxFZGl0YWJsZUltYWdlPj4gbV9lZGl0YWJsZUltYWdlczsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNv
bnRyb2xsZXIubWVzc2FnZXMuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliMWFl
YmYxNTcxZTExM2NkZjkxMTYxYTJkMWY2MzRlMjIwNjQ1MTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0Vk
aXRhYmxlSW1hZ2VDb250cm9sbGVyLm1lc3NhZ2VzLmluCisrKyAvZGV2L251bGwKQEAgLTEsMzEg
KzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAot
IyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0jaWYgSEFW
RShQRU5DSUxLSVQpCi0KLW1lc3NhZ2VzIC0+IEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyIHsKLSAg
ICBEaWRDcmVhdGVFZGl0YWJsZUltYWdlKHVpbnQ2NF90IGVkaXRhYmxlSW1hZ2VJRCkKLSAgICBE
aWREZXN0cm95RWRpdGFibGVJbWFnZSh1aW50NjRfdCBlZGl0YWJsZUltYWdlSUQpCi0gICAgQXNz
b2NpYXRlV2l0aEF0dGFjaG1lbnQodWludDY0X3QgZWRpdGFibGVJbWFnZUlELCBTdHJpbmcgYXR0
YWNobWVudElEKQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTUzYTNhY2JkNTY1NzI5YjYzOWQ4MjUwMDEwNDYxMjlhM2MxOGQ1YS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0KKysrIC9kZXYvbnVsbApAQCAt
MSwxNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAi
RWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaCIKLQotI2lmIEhBVkUoUEVOQ0lMS0lUKQotCi0jaW1w
b3J0ICJBUElBdHRhY2htZW50LmgiCi0jaW1wb3J0ICJFZGl0YWJsZUltYWdlQ29udHJvbGxlck1l
c3NhZ2VzLmgiCi0jaW1wb3J0ICJQYWdlQ2xpZW50SW1wbElPUy5oIgotI2ltcG9ydCAiUGVuY2ls
S2l0U1BJLmgiCi0jaW1wb3J0ICJXS0RyYXdpbmdWaWV3LmgiCi0jaW1wb3J0ICJXZWJQYWdlUHJv
eHkuaCIKLSNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgotI2ltcG9ydCA8V2ViQ29yZS9HcmFw
aGljc0xheWVyLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0KLSNkZWZpbmUgTUVTU0FH
RV9DSEVDS19WSUVXSUQoZW1iZWRkZWRWaWV3SUQpIE1FU1NBR0VfQ0hFQ0tfQkFTRShtX2VkaXRh
YmxlSW1hZ2VzLmlzVmFsaWRLZXkoZW1iZWRkZWRWaWV3SUQpLCBtX3dlYlBhZ2VQcm94eS0+cHJv
Y2VzcygpLmNvbm5lY3Rpb24oKSkKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLUVkaXRhYmxlSW1h
Z2VDb250cm9sbGVyOjpFZGl0YWJsZUltYWdlQ29udHJvbGxlcihXZWJQYWdlUHJveHkmIHdlYlBh
Z2VQcm94eSkKLSAgICA6IG1fd2ViUGFnZVByb3h5KG1ha2VXZWFrUHRyKHdlYlBhZ2VQcm94eSkp
Ci17Ci0gICAgaWYgKGF1dG8qIHdlYlBhZ2VQcm94eSA9IG1fd2ViUGFnZVByb3h5LmdldCgpKQot
ICAgICAgICB3ZWJQYWdlUHJveHktPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHdlYlBh
Z2VQcm94eS0+d2ViUGFnZUlEKCksICp0aGlzKTsKLX0KLQotRWRpdGFibGVJbWFnZUNvbnRyb2xs
ZXI6On5FZGl0YWJsZUltYWdlQ29udHJvbGxlcigpCi17Ci0gICAgaWYgKGF1dG8qIHdlYlBhZ2VQ
cm94eSA9IG1fd2ViUGFnZVByb3h5LmdldCgpKQotICAgICAgICB3ZWJQYWdlUHJveHktPnByb2Nl
c3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkVkaXRhYmxlSW1hZ2VDb250cm9s
bGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHdlYlBhZ2VQcm94eS0+d2ViUGFnZUlEKCkpOwot
fQotCi1FZGl0YWJsZUltYWdlJiBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6ZW5zdXJlRWRpdGFi
bGVJbWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZp
ZXdJRCkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fZWRpdGFibGVJbWFnZXMuZW5zdXJlKGVtYmVk
ZGVkVmlld0lELCBbJl0gewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RWRpdGFibGVJbWFnZT4g
aW1hZ2UgPSBtYWtlVW5pcXVlPEVkaXRhYmxlSW1hZ2U+KCk7Ci0gICAgICAgIGltYWdlLT5kcmF3
aW5nVmlldyA9IG1fd2ViUGFnZVByb3h5LT5wYWdlQ2xpZW50KCkuY3JlYXRlRHJhd2luZ1ZpZXco
ZW1iZWRkZWRWaWV3SUQpOwotICAgICAgICByZXR1cm4gaW1hZ2U7Ci0gICAgfSk7Ci0gICAgcmV0
dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotfQotCi1FZGl0YWJsZUltYWdlKiBFZGl0YWJs
ZUltYWdlQ29udHJvbGxlcjo6ZWRpdGFibGVJbWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpF
bWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCkKLXsKLSAgICBhdXRvIGRyYXdpbmdWaWV3SXRl
ciA9IG1fZWRpdGFibGVJbWFnZXMuZmluZChlbWJlZGRlZFZpZXdJRCk7Ci0gICAgaWYgKGRyYXdp
bmdWaWV3SXRlciA9PSBtX2VkaXRhYmxlSW1hZ2VzLmVuZCgpKQotICAgICAgICByZXR1cm4gbmls
OwotICAgIHJldHVybiBkcmF3aW5nVmlld0l0ZXItPnZhbHVlLmdldCgpOwotfQotCi12b2lkIEVk
aXRhYmxlSW1hZ2VDb250cm9sbGVyOjpkaWRDcmVhdGVFZGl0YWJsZUltYWdlKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEKQotewotICAgIE1FU1NB
R0VfQ0hFQ0tfVklFV0lEKGVtYmVkZGVkVmlld0lEKTsKLSAgICBlbnN1cmVFZGl0YWJsZUltYWdl
KGVtYmVkZGVkVmlld0lEKTsKLX0KLQotdm9pZCBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6ZGlk
RGVzdHJveUVkaXRhYmxlSW1hZ2UoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3
SUQgZW1iZWRkZWRWaWV3SUQpCi17Ci0gICAgTUVTU0FHRV9DSEVDS19WSUVXSUQoZW1iZWRkZWRW
aWV3SUQpOwotICAgIG1fZWRpdGFibGVJbWFnZXMucmVtb3ZlKGVtYmVkZGVkVmlld0lEKTsKLX0K
LQotdm9pZCBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6YXNzb2NpYXRlV2l0aEF0dGFjaG1lbnQo
V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQsIGNv
bnN0IFN0cmluZyYgYXR0YWNobWVudElEKQotewotICAgIGlmICghbV93ZWJQYWdlUHJveHkpCi0g
ICAgICAgIHJldHVybjsKLSAgICBhdXRvJiBwYWdlID0gKm1fd2ViUGFnZVByb3h5OwotCi0gICAg
TUVTU0FHRV9DSEVDS19WSUVXSUQoZW1iZWRkZWRWaWV3SUQpOwotICAgIHBhZ2UucmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihhdHRhY2htZW50SUQpOwotICAgIGF1dG8mIGF0dGFjaG1lbnQg
PSAqcGFnZS5hdHRhY2htZW50Rm9ySWRlbnRpZmllcihhdHRhY2htZW50SUQpOwotCi0gICAgYXV0
byYgZWRpdGFibGVJbWFnZSA9IGVuc3VyZUVkaXRhYmxlSW1hZ2UoZW1iZWRkZWRWaWV3SUQpOwot
ICAgIFdlYWtPYmpDUHRyPFdLRHJhd2luZ1ZpZXc+IGRyYXdpbmdWaWV3ID0gZWRpdGFibGVJbWFn
ZS5kcmF3aW5nVmlldy5nZXQoKTsKLSAgICBlZGl0YWJsZUltYWdlLmF0dGFjaG1lbnRJRCA9IGF0
dGFjaG1lbnRJRDsKLQotICAgIGxvYWRTdHJva2VzRnJvbUF0dGFjaG1lbnQoZWRpdGFibGVJbWFn
ZSwgYXR0YWNobWVudCk7Ci0KLSAgICBhdHRhY2htZW50LnNldEZpbGVXcmFwcGVyR2VuZXJhdG9y
KFtkcmF3aW5nVmlld10oKSAtPiBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gewotICAgICAgICBp
ZiAoIWRyYXdpbmdWaWV3KQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgTlNEYXRh
ICpkYXRhID0gW2RyYXdpbmdWaWV3IFBOR1JlcHJlc2VudGF0aW9uXTsKLSAgICAgICAgaWYgKCFk
YXRhKQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgUmV0YWluUHRyPE5TRmlsZVdy
YXBwZXI+IGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRS
ZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhXSk7Ci0gICAgICAgIFtmaWxlV3JhcHBlciBzZXRQ
cmVmZXJyZWRGaWxlbmFtZTpAImRyYXdpbmcucG5nIl07Ci0gICAgICAgIHJldHVybiBmaWxlV3Jh
cHBlcjsKLSAgICB9KTsKLSAgICBhdHRhY2htZW50LnNldENvbnRlbnRUeXBlKCJwdWJsaWMucG5n
Iik7Ci19Ci0KLXZvaWQgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6OmxvYWRTdHJva2VzRnJvbUF0
dGFjaG1lbnQoRWRpdGFibGVJbWFnZSYgZWRpdGFibGVJbWFnZSwgY29uc3QgQVBJOjpBdHRhY2ht
ZW50JiBhdHRhY2htZW50KQotewotICAgIEFTU0VSVChhdHRhY2htZW50LmlkZW50aWZpZXIoKSA9
PSBlZGl0YWJsZUltYWdlLmF0dGFjaG1lbnRJRCk7Ci0gICAgTlNGaWxlV3JhcHBlciAqZmlsZVdy
YXBwZXIgPSBhdHRhY2htZW50LmZpbGVXcmFwcGVyKCk7Ci0gICAgaWYgKCFmaWxlV3JhcHBlci5p
c1JlZ3VsYXJGaWxlKQotICAgICAgICByZXR1cm47Ci0gICAgW2VkaXRhYmxlSW1hZ2UuZHJhd2lu
Z1ZpZXcgbG9hZERyYXdpbmdGcm9tUE5HUmVwcmVzZW50YXRpb246ZmlsZVdyYXBwZXIucmVndWxh
ckZpbGVDb250ZW50c107Ci19Ci0KLXZvaWQgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6OmludmFs
aWRhdGVBdHRhY2htZW50Rm9yRWRpdGFibGVJbWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpF
bWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCkKLXsKLSAgICBpZiAoIW1fd2ViUGFnZVByb3h5
KQotICAgICAgICByZXR1cm47Ci0gICAgYXV0byYgcGFnZSA9ICptX3dlYlBhZ2VQcm94eTsKLQot
ICAgIGF1dG8gZWRpdGFibGVJbWFnZSA9IHRoaXMtPmVkaXRhYmxlSW1hZ2UoZW1iZWRkZWRWaWV3
SUQpOwotICAgIGlmICghZWRpdGFibGVJbWFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0
byBhdHRhY2htZW50ID0gcGFnZS5hdHRhY2htZW50Rm9ySWRlbnRpZmllcihlZGl0YWJsZUltYWdl
LT5hdHRhY2htZW50SUQpOwotICAgIGlmICghYXR0YWNobWVudCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgYXR0YWNobWVudC0+aW52YWxpZGF0ZUdlbmVyYXRlZEZpbGVXcmFwcGVyKCk7Ci19Ci0K
LVdlYlBhZ2VQcm94eTo6U2hvdWxkVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMgRWRpdGFibGVJ
bWFnZUNvbnRyb2xsZXI6OndpbGxVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6
OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCi17Ci0gICAgZm9yIChhdXRvJiBlZGl0YWJsZUltYWdl
IDogbV9lZGl0YWJsZUltYWdlcy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoZWRpdGFibGVJbWFn
ZS0+YXR0YWNobWVudElEICE9IGF0dGFjaG1lbnQuaWRlbnRpZmllcigpKQotICAgICAgICAgICAg
Y29udGludWU7Ci0KLSAgICAgICAgbG9hZFN0cm9rZXNGcm9tQXR0YWNobWVudCgqZWRpdGFibGVJ
bWFnZSwgYXR0YWNobWVudCk7Ci0gICAgICAgIHJldHVybiBXZWJQYWdlUHJveHk6OlNob3VsZFVw
ZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzOjpObzsKLSAgICB9Ci0KLSAgICByZXR1cm4gV2ViUGFn
ZVByb3h5OjpTaG91bGRVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlczo6WWVzOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQotI3VuZGVmIE1FU1NBR0VfQ0hFQ0tfVklFV0lECi0KLSNlbmRp
ZiAvLyBIQVZFKFBFTkNJTEtJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmgKaW5kZXggMjcyNWM4Yjc5M2NkN2NjZTc0OTk1N2UyZjBkZDFkZDE4
YjE4YTVmYy4uMjEzNjlhZmU2N2M2OWU4YmZjNzAxZGU1MTE5NjMwMDM4N2FkMzAyYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTI2
MCwxMCArMjYwLDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0TW91c2VFdmVudFBvbGljeShX
ZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5KSBmaW5hbDsKIAotI2lmIEhBVkUoUEVOQ0lMS0lUKQot
ICAgIFJldGFpblB0cjxXS0RyYXdpbmdWaWV3PiBjcmVhdGVEcmF3aW5nVmlldyhXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCkgb3ZlcnJpZGU7Ci0jZW5kaWYKLQogI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCB3cml0ZVByb21pc2VkQXR0YWNobWVu
dFRvUGFzdGVib2FyZChXZWJDb3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZvJiYpIGZpbmFsOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0KaW5kZXggMGJhODVkZjc1MTk4NTAxYTkwYjk2OWIyMDliZDg5NzlkZjY1ZWY5ZC4uYjNk
MWIzODkxZDgxOWQ0ZDFkNGYyYWM5MWIyYzQ5NTE5MDQ0MzViOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtNDYsNyArNDYsNiBA
QAogI2ltcG9ydCAiVmlld1NuYXBzaG90U3RvcmUuaCIKICNpbXBvcnQgIldLQ29udGVudFZpZXcu
aCIKICNpbXBvcnQgIldLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIgotI2ltcG9ydCAiV0tEcmF3
aW5nVmlldy5oIgogI2ltcG9ydCAiV0tFZGl0Q29tbWFuZC5oIgogI2ltcG9ydCAiV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TLmgiCiAjaW1wb3J0ICJXS1Bhc3N3b3JkVmlldy5oIgpAQCAtOTE3LDEz
ICs5MTYsNiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsCiAgICAgW21fY29udGVudFZpZXcgX3Jl
cXVlc3RET01QYXN0ZUFjY2Vzc1dpdGhFbGVtZW50UmVjdDplbGVtZW50UmVjdCBvcmlnaW5JZGVu
dGlmaWVyOm9yaWdpbklkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6V1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildOwogfQogCi0jaWYgSEFWRShQRU5DSUxLSVQpCi1SZXRhaW5QdHI8V0tEcmF3
aW5nVmlldz4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdWaWV3KFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEKQotewotICAgIHJldHVybiBh
ZG9wdE5TKFtbV0tEcmF3aW5nVmlldyBhbGxvY10gaW5pdFdpdGhFbWJlZGRlZFZpZXdJRDplbWJl
ZGRlZFZpZXdJRCBjb250ZW50VmlldzptX2NvbnRlbnRWaWV3LmdldEF1dG9yZWxlYXNlZCgpXSk7
Ci19Ci0jZW5kaWYKLQogdm9pZCBQYWdlQ2xpZW50SW1wbDo6Y2FuY2VsUG9pbnRlcnNGb3JHZXN0
dXJlUmVjb2duaXplcihVSUdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplcikKIHsK
ICAgICBbbV9jb250ZW50VmlldyBjYW5jZWxQb2ludGVyc0Zvckdlc3R1cmVSZWNvZ25pemVyOmdl
c3R1cmVSZWNvZ25pemVyXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QZW5jaWxLaXRTb2Z0TGluay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BlbmNp
bEtpdFNvZnRMaW5rLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkM2M1ZjliOWMy
MDg0NTBlZmYwODY2MjliNjE1OTAzOGM3Y2ZiNjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BlbmNpbEtp
dFNvZnRMaW5rLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBIQVZFKFBFTkNJTEtJVCkKLQotI2ltcG9ydCAiUGVuY2lsS2l0
U1BJLmgiCi0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KLQotU09GVF9MSU5LX0ZSQU1FV09S
S19GT1JfSEVBREVSKFdlYktpdCwgUGVuY2lsS2l0KTsKLVNPRlRfTElOS19DTEFTU19GT1JfSEVB
REVSKFdlYktpdCwgUEtDYW52YXNWaWV3KTsKLVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdl
YktpdCwgUEtEcmF3aW5nKTsKLVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdlYktpdCwgUEtJ
bWFnZVJlbmRlcmVyKTsKLQotI2VuZGlmIC8vIEhBVkUoUEVOQ0lMS0lUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BlbmNpbEtpdFNvZnRMaW5rLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BlbmNpbEtpdFNvZnRMaW5rLm1tCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMmFmZWVmMWFkODFmYmY1ZDdkN2ZkMjg1NjFkODViZjY1N2M5NDIw
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QZW5jaWxLaXRTb2Z0TGluay5tbQorKysgL2Rldi9udWxsCkBA
IC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIEhB
VkUoUEVOQ0lMS0lUKQotCi0jaW1wb3J0ICJQZW5jaWxLaXRTUEkuaCIKLSNpbXBvcnQgPHd0Zi9T
b2Z0TGlua2luZy5oPgotCi1TT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRShX
ZWJLaXQsIFBlbmNpbEtpdCk7Ci1TT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShXZWJLaXQsIFBl
bmNpbEtpdCwgUEtDYW52YXNWaWV3KTsKLVNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKFdlYktp
dCwgUGVuY2lsS2l0LCBQS0RyYXdpbmcpOwotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoV2Vi
S2l0LCBQZW5jaWxLaXQsIFBLSW1hZ2VSZW5kZXJlcik7Ci0KLSNlbmRpZiAvLyBIQVZFKFBFTkNJ
TEtJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaAppbmRleCBlMjkyZDkwOTJmMWNmNzdhZDczZjI2MjgxYzZjNWJkZDVk
NjllYzVkLi43ZWExMDE3ZGM1ZDA0Nzk0ZGMzMGUzZWEwY2M5NzM5M2NmMTNkZmYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oCkBAIC0xMDIsNyArMTAyLDYgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogQGNsYXNzIFdL
QWN0aW9uU2hlZXRBc3Npc3RhbnQ7CiBAY2xhc3MgV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvOwog
QGNsYXNzIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2w7Ci1AY2xhc3MgV0tEcmF3aW5nQ29vcmRpbmF0
b3I7CiBAY2xhc3MgV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3OwogQGNsYXNzIFdLRm9ybUlucHV0
U2Vzc2lvbjsKIEBjbGFzcyBXS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyOwpA
QCAtMjI4LDcgKzIyNyw2IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAgICAgUmV0
YWluUHRyPFVJVGFwR2VzdHVyZVJlY29nbml6ZXI+IF9kb3VibGVUYXBHZXN0dXJlUmVjb2duaXpl
ckZvckRvdWJsZUNsaWNrOwogICAgIFJldGFpblB0cjxVSVRhcEdlc3R1cmVSZWNvZ25pemVyPiBf
dHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXI7CiAgICAgUmV0YWluUHRyPFVJVGFw
R2VzdHVyZVJlY29nbml6ZXI+IF90d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplcjsK
LSAgICBSZXRhaW5QdHI8VUlUYXBHZXN0dXJlUmVjb2duaXplcj4gX3N0eWx1c1NpbmdsZVRhcEdl
c3R1cmVSZWNvZ25pemVyOwogICAgIFJldGFpblB0cjxXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0
dXJlUmVjb2duaXplcj4gX2luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplcjsKIAog
ICAgIFJldGFpblB0cjxXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXI+IF90b3VjaEFjdGlv
bkdlc3R1cmVSZWNvZ25pemVyOwpAQCAtMzM5LDEwICszMzcsNiBAQCBzdHJ1Y3QgV0tBdXRvQ29y
cmVjdGlvbkRhdGEgewogICAgIFJldGFpblB0cjxOU0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4+
IF9kYXRhTGlzdFRleHRTdWdnZXN0aW9uczsKICNlbmRpZgogCi0jaWYgSEFWRShQRU5DSUxLSVQp
Ci0gICAgUmV0YWluUHRyPFdLRHJhd2luZ0Nvb3JkaW5hdG9yPiBfZHJhd2luZ0Nvb3JkaW5hdG9y
OwotI2VuZGlmCi0KICAgICBCT09MIF9pc0VkaXRhYmxlOwogICAgIEJPT0wgX3Nob3dpbmdUZXh0
U3R5bGVPcHRpb25zOwogICAgIEJPT0wgX2hhc1ZhbGlkUG9zaXRpb25JbmZvcm1hdGlvbjsKQEAg
LTU4MywxMCArNTc3LDYgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihE
RUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIC0gKHZvaWQpdXBkYXRl
VGV4dFN1Z2dlc3Rpb25zRm9ySW5wdXREZWxlZ2F0ZTsKICNlbmRpZgogCi0jaWYgSEFWRShQRU5D
SUxLSVQpCi0tIChXS0RyYXdpbmdDb29yZGluYXRvciAqKV9kcmF3aW5nQ29vcmRpbmF0b3I7Ci0j
ZW5kaWYKLQogLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3Qp
cmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxfV0tUZXh0SW5wdXRDb250
ZXh0ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClfZm9jdXNUZXh0SW5wdXRDb250
ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dCBwbGFjZUNhcmV0QXQ6KENHUG9pbnQp
cG9pbnQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJUmVzcG9uZGVyPFVJVGV4dElucHV0
PiAqKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX3dpbGxCZWdpblRleHRJbnRlcmFjdGlv
bkluVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKWNvbnRleHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQppbmRleCA1YzM4MDNjYTVkNDE0ODgxZjkyYjE3MmFhNjA2YzIyYjcyMDA0NTliLi4w
OGRiZjNhZDg3OTlhOTUxNGFjZjZiZDMxMmY5ZmYxYzc3MjUyNjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
QEAgLTMxLDcgKzMxLDYgQEAKICNpbXBvcnQgIkFQSVVJQ2xpZW50LmgiCiAjaW1wb3J0ICJDb21w
bGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJEb2N1bWVudEVkaXRpbmdDb250
ZXh0LmgiCi0jaW1wb3J0ICJFZGl0YWJsZUltYWdlQ29udHJvbGxlci5oIgogI2ltcG9ydCAiSW5w
dXRWaWV3VXBkYXRlRGVmZXJyZXIuaCIKICNpbXBvcnQgIkluc2VydFRleHRPcHRpb25zLmgiCiAj
aW1wb3J0ICJMb2dnaW5nLmgiCkBAIC01MSw3ICs1MCw2IEBACiAjaW1wb3J0ICJXS0NvbnRleHRN
ZW51RWxlbWVudEluZm9Qcml2YXRlLmgiCiAjaW1wb3J0ICJXS0RhdGVQaWNrZXJWaWV3Q29udHJv
bGxlci5oIgogI2ltcG9ydCAiV0tEYXRlVGltZUlucHV0Q29udHJvbC5oIgotI2ltcG9ydCAiV0tE
cmF3aW5nQ29vcmRpbmF0b3IuaCIKICNpbXBvcnQgIldLRXJyb3IuaCIKICNpbXBvcnQgIldLRm9j
dXNlZEZvcm1Db250cm9sVmlldy5oIgogI2ltcG9ydCAiV0tGb3JtU2VsZWN0Q29udHJvbC5oIgpA
QCAtODUwLDEyICs4NDgsNiBAQCAtICh2b2lkKXNldFVwSW50ZXJhY3Rpb24KICAgICBbX3R3b0Zp
bmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldEVuYWJsZWQ6IXNlbGYud2ViVmlldy5f
ZWRpdGFibGVdOwogICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJTaW5n
bGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAKLSAgICBfc3R5bHVzU2luZ2xlVGFwR2Vz
dHVyZVJlY29nbml6ZXIgPSBhZG9wdE5TKFtbVUlUYXBHZXN0dXJlUmVjb2duaXplciBhbGxvY10g
aW5pdFdpdGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKF9zdHlsdXNTaW5nbGVUYXBSZWNv
Z25pemVkOildKTsKLSAgICBbX3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldE51
bWJlck9mVGFwc1JlcXVpcmVkOjFdOwotICAgIFtfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29n
bml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgW19zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVj
b2duaXplciBzZXRBbGxvd2VkVG91Y2hUeXBlczpAWyBAKFVJVG91Y2hUeXBlUGVuY2lsKSBdXTsK
LSAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJl
Y29nbml6ZXIuZ2V0KCldOwotCiAgICAgX3RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIgPSBh
ZG9wdE5TKFtbV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFRv
dWNoQWN0aW9uRGVsZWdhdGU6c2VsZl0pOwogICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVy
Ol90b3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIApAQCAtOTkyLDkgKzk4NCw2
IEBAIC0gKHZvaWQpY2xlYW5VcEludGVyYWN0aW9uCiAgICAgW190d29GaW5nZXJTaW5nbGVUYXBH
ZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpuaWxdOwogICAgIFtzZWxmIHJlbW92ZUdlc3R1
cmVSZWNvZ25pemVyOl90d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07
CiAKLSAgICBbX3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOm5p
bF07Ci0gICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X3N0eWx1c1NpbmdsZVRhcEdl
c3R1cmVSZWNvZ25pemVyLmdldCgpXTsKLQogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25p
emVyOl90b3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICAgICBbc2VsZiByZW1v
dmVHZXN0dXJlUmVjb2duaXplcjpfdG91Y2hBY3Rpb25MZWZ0U3dpcGVHZXN0dXJlUmVjb2duaXpl
ci5nZXQoKV07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X3RvdWNoQWN0aW9u
UmlnaHRTd2lwZUdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKQEAgLTEwNDgsMTAgKzEwMzcsNiBA
QCAtICh2b2lkKWNsZWFuVXBJbnRlcmFjdGlvbgogICAgIFtfa2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvciBpbnZhbGlkYXRlXTsKICAgICBfa2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciA9IG5pbDsK
IAotI2lmIEhBVkUoUEVOQ0lMS0lUKQotICAgIF9kcmF3aW5nQ29vcmRpbmF0b3IgPSBuaWw7Ci0j
ZW5kaWYKLQogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIF9kYXRhTGlzdFRleHRT
dWdnZXN0aW9uc0lucHV0VmlldyA9IG5pbDsKICAgICBfZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnMg
PSBuaWw7CkBAIC0xMDk0LDcgKzEwNzksNiBAQCAtICh2b2lkKV9yZW1vdmVEZWZhdWx0R2VzdHVy
ZVJlY29nbml6ZXJzCiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X2RvdWJsZVRh
cEdlc3R1cmVSZWNvZ25pemVyRm9yRG91YmxlQ2xpY2suZ2V0KCldOwogICAgIFtzZWxmIHJlbW92
ZUdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5n
ZXQoKV07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlclNpbmds
ZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKLSAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVj
b2duaXplcjpfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogI2lmIEhB
VkUoVUlLSVRfV0lUSF9NT1VTRV9TVVBQT1JUKQogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNv
Z25pemVyOl9tb3VzZUdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICNlbmRpZgpAQCAtMTEyMiw3
ICsxMTA2LDYgQEAgLSAodm9pZClfYWRkRGVmYXVsdEdlc3R1cmVSZWNvZ25pemVycwogICAgIFtz
ZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9kb3VibGVUYXBHZXN0dXJlUmVjb2duaXplckZvckRv
dWJsZUNsaWNrLmdldCgpXTsKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfdHdvRmlu
Z2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogICAgIFtzZWxmIGFkZEdlc3R1
cmVSZWNvZ25pemVyOl90d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07
Ci0gICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVS
ZWNvZ25pemVyLmdldCgpXTsKICNpZiBIQVZFKFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9SVCkKICAg
ICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfbW91c2VHZXN0dXJlUmVjb2duaXplci5nZXQo
KV07CiAjZW5kaWYKQEAgLTI0MTIsOSArMjM5NSw2IEBAIC0gKEJPT0wpZ2VzdHVyZVJlY29nbml6
ZXJTaG91bGRCZWdpbjooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7
CiAgICAgQ0dQb2ludCBwb2ludCA9IFtnZXN0dXJlUmVjb2duaXplciBsb2NhdGlvbkluVmlldzpz
ZWxmXTsKIAotICAgIGlmIChnZXN0dXJlUmVjb2duaXplciA9PSBfc3R5bHVzU2luZ2xlVGFwR2Vz
dHVyZVJlY29nbml6ZXIpCi0gICAgICAgIHJldHVybiBzZWxmLndlYlZpZXcuX3N0eWx1c1RhcEdl
c3R1cmVTaG91bGRDcmVhdGVFZGl0YWJsZUltYWdlOwotCiAgICAgYXV0byBpc0ludGVycnVwdGlu
Z0RlY2VsZXJhdGlvbkZvclNjcm9sbFZpZXdPckFuY2VzdG9yID0gWyZdIChVSVNjcm9sbFZpZXcg
KnNjcm9sbFZpZXcpIHsKICAgICAgICAgVUlTY3JvbGxWaWV3ICptYWluU2Nyb2xsZXIgPSBzZWxm
LndlYlZpZXcuc2Nyb2xsVmlldzsKICAgICAgICAgVUlWaWV3ICp2aWV3ID0gc2Nyb2xsVmlldyA/
OiBtYWluU2Nyb2xsZXI7CkBAIC0yNzA3LDEzICsyNjg3LDYgQEAgLSAodm9pZClfdHdvRmluZ2Vy
U2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0
dXJlUmUKICAgICBfcGFnZS0+aGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChXZWJDb3JlOjpyb3Vu
ZGVkSW50UG9pbnQoZ2VzdHVyZVJlY29nbml6ZXIuY2VudHJvaWQpLCBXZWJLaXQ6OndlYkV2ZW50
TW9kaWZpZXJGbGFncyhnZXN0dXJlUmVjb2duaXplck1vZGlmaWVyRmxhZ3MoZ2VzdHVyZVJlY29n
bml6ZXIpIHwgVUlLZXlNb2RpZmllckNvbW1hbmQpLCArK19sYXRlc3RUYXBJRCk7CiB9CiAKLS0g
KHZvaWQpX3N0eWx1c1NpbmdsZVRhcFJlY29nbml6ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIg
KilnZXN0dXJlUmVjb2duaXplcgotewotICAgIEFTU0VSVChzZWxmLndlYlZpZXcuX3N0eWx1c1Rh
cEdlc3R1cmVTaG91bGRDcmVhdGVFZGl0YWJsZUltYWdlKTsKLSAgICBBU1NFUlQoZ2VzdHVyZVJl
Y29nbml6ZXIgPT0gX3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyKTsKLSAgICBfcGFn
ZS0+aGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQo
Z2VzdHVyZVJlY29nbml6ZXIubG9jYXRpb24pLCArK19sYXRlc3RUYXBJRCk7Ci19Ci0KIC0gKHZv
aWQpX2xvbmdQcmVzc1JlY29nbml6ZWQ6KFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgKiln
ZXN0dXJlUmVjb2duaXplcgogewogICAgIEFTU0VSVChnZXN0dXJlUmVjb2duaXplciA9PSBfbG9u
Z1ByZXNzR2VzdHVyZVJlY29nbml6ZXIpOwpAQCAtNTk4MywxMSArNTk1Niw2IEBAIC0gKHZvaWQp
X2VsZW1lbnREaWRGb2N1czooY29uc3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
JilpbmZvcm1hdGlvbiB1CiAgICAgICAgIFtzZWxmIF9lbGVtZW50RGlkQmx1cl07CiAgICAgfQog
Ci0jaWYgSEFWRShQRU5DSUxLSVQpCi0gICAgaWYgKGluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID09
IFdlYktpdDo6SW5wdXRUeXBlOjpEcmF3aW5nKQotICAgICAgICBbX2RyYXdpbmdDb29yZGluYXRv
ciBpbnN0YWxsSW5rUGlja2VyRm9yRHJhd2luZzppbmZvcm1hdGlvbi5lbWJlZGRlZFZpZXdJRF07
Ci0jZW5kaWYKLQogICAgIGlmICghc2hvdWxkU2hvd0lucHV0VmlldyB8fCBpbmZvcm1hdGlvbi5l
bGVtZW50VHlwZSA9PSBXZWJLaXQ6OklucHV0VHlwZTo6Tm9uZSkgewogICAgICAgICBfcGFnZS0+
c2V0SXNTaG93aW5nSW5wdXRWaWV3Rm9yRm9jdXNlZEVsZW1lbnQoZmFsc2UpOwogICAgICAgICBy
ZXR1cm47CkBAIC02MDkzLDEwICs2MDYxLDYgQEAgLSAodm9pZClfZWxlbWVudERpZEJsdXIKIHsK
ICAgICBTZXRGb3JTY29wZTxCT09MPiBpc0JsdXJyaW5nRm9jdXNlZEVsZW1lbnRGb3JTY29wZSB7
IF9pc0JsdXJyaW5nRm9jdXNlZEVsZW1lbnQsIFlFUyB9OwogCi0jaWYgSEFWRShQRU5DSUxLSVQp
Ci0gICAgW19kcmF3aW5nQ29vcmRpbmF0b3IgdW5pbnN0YWxsSW5rUGlja2VyXTsKLSNlbmRpZgot
CiAjaWYgVVNFKFVJS0lUX0tFWUJPQVJEX0FERElUSU9OUykKICAgICBbc2VsZiBfZW5kRWRpdGlu
Z107CiAjZW5kaWYKQEAgLTg2MDEsMTUgKzg1NjUsNiBAQCAtICh2b2lkKV9sb29rdXBHZXN0dXJl
UmVjb2duaXplZDooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB9CiAj
ZW5kaWYKIAotI2lmIEhBVkUoUEVOQ0lMS0lUKQotLSAoV0tEcmF3aW5nQ29vcmRpbmF0b3IgKilf
ZHJhd2luZ0Nvb3JkaW5hdG9yCi17Ci0gICAgaWYgKCFfZHJhd2luZ0Nvb3JkaW5hdG9yKQotICAg
ICAgICBfZHJhd2luZ0Nvb3JkaW5hdG9yID0gYWRvcHROUyhbW1dLRHJhd2luZ0Nvb3JkaW5hdG9y
IGFsbG9jXSBpbml0V2l0aENvbnRlbnRWaWV3OnNlbGZdKTsKLSAgICByZXR1cm4gX2RyYXdpbmdD
b29yZGluYXRvci5nZXQoKTsKLX0KLSNlbmRpZiAvLyBIQVZFKFBFTkNJTEtJVCkKLQogLSAodm9p
ZClzZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAogewogICAg
IGlmIChXZWJLaXQ6OlRleHRDaGVja2VyOjpzZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQoZW5hYmxlZCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tE
cmF3aW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdp
bmdDb29yZGluYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTdiNTc0NTI1
NGExMDMzOTRhOWY2Y2JhYWJkZjE0MGY0YmVjN2NhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdp
bmdDb29yZGluYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZiBIQVZFKFBFTkNJTEtJVCkKLQotI2ltcG9ydCAiUGVuY2lsS2l0U1BJLmgiCi0jaW1w
b3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KLQotT0JKQ19DTEFTUyBQS0luazsKLU9CSkNf
Q0xBU1MgV0tDb250ZW50VmlldzsKLQotQGludGVyZmFjZSBXS0RyYXdpbmdDb29yZGluYXRvciA6
IE5TT2JqZWN0IDxQS1J1bGVySG9zdGluZ0RlbGVnYXRlPgotCi0tIChpbnN0YW5jZXR5cGUpaW5p
dCBOU19VTkFWQUlMQUJMRTsKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRlbnRWaWV3OihX
S0NvbnRlbnRWaWV3ICopY29udGVudFZpZXc7Ci0KLS0gKHZvaWQpaW5zdGFsbElua1BpY2tlckZv
ckRyYXdpbmc6KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKWVtYmVkZGVk
Vmlld0lEOwotLSAodm9pZCl1bmluc3RhbGxJbmtQaWNrZXI7Ci0KLUBwcm9wZXJ0eSAobm9uYXRv
bWljKSBCT09MIHJ1bGVyRW5hYmxlZDsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwg
cmV0YWluKSBQS0luayAqY3VycmVudEluazsKLQotQGVuZAotCi0KLSNlbmRpZiAvLyBIQVZFKFBF
TkNJTEtJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdp
bmdDb29yZGluYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdD
b29yZGluYXRvci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQwYzcyMzlkNDI2
NjI4MDkyZGYzNmYxOWM3NTNlZWMwNmRhZjAyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tEcmF3aW5n
Q29vcmRpbmF0b3IubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV0tEcmF3aW5nQ29vcmRpbmF0b3IuaCIK
LQotI2lmIEhBVkUoUEVOQ0lMS0lUKQotCi0jaW1wb3J0ICJFZGl0YWJsZUltYWdlQ29udHJvbGxl
ci5oIgotI2ltcG9ydCAiV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCi0jaW1wb3J0ICJXS0Ry
YXdpbmdWaWV3LmgiCi0jaW1wb3J0ICJXS1dlYlZpZXcuaCIKLSNpbXBvcnQgPFdlYktpdEFkZGl0
aW9ucy9XS0RyYXdpbmdDb29yZGluYXRvckFkZGl0aW9ucy5tbT4KLSNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KLQotI2ltcG9ydCAiUGVuY2lsS2l0U29mdExpbmsuaCIKLQotQGludGVyZmFjZSBX
S0RyYXdpbmdDb29yZGluYXRvciAoKSA8V0tJbmtQaWNrZXJEZWxlZ2F0ZT4KLUBlbmQKLQotQGlt
cGxlbWVudGF0aW9uIFdLRHJhd2luZ0Nvb3JkaW5hdG9yIHsKLSAgICBfX3dlYWsgV0tDb250ZW50
VmlldyAqX2NvbnRlbnRWaWV3OwotCi0gICAgUmV0YWluUHRyPFdLSW5rUGlja2VyPiBfaW5rUGlj
a2VyOwotCi0gICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgX2ZvY3Vz
ZWRFbWJlZGRlZFZpZXdJRDsKLX0KLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29udGVudFZp
ZXc6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldwotewotICAgIHNlbGYgPSBbc3VwZXIgaW5p
dF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX2NvbnRlbnRW
aWV3ID0gY29udGVudFZpZXc7Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAoUEtJbmsgKilj
dXJyZW50SW5rCi17Ci0gICAgcmV0dXJuIFtfaW5rUGlja2VyIGN1cnJlbnRJbmtdOwotfQotCi0t
IChVSVZpZXcgKilydWxlckhvc3RpbmdWaWV3Ci17Ci0gICAgcmV0dXJuIF9jb250ZW50VmlldzsK
LX0KLQotLSAoQk9PTClydWxlckhvc3RXYW50c1NoYXJlZFJ1bGVyCi17Ci0gICAgcmV0dXJuIFlF
UzsKLX0KLQotLSAoV0tEcmF3aW5nVmlldyAqKV9mb2N1c2VkRHJhd2luZ1ZpZXcKLXsKLSAgICBX
ZWJLaXQ6OkVkaXRhYmxlSW1hZ2UgKmZvY3VzZWRFZGl0YWJsZUltYWdlID0gX2NvbnRlbnRWaWV3
LnBhZ2UtPmVkaXRhYmxlSW1hZ2VDb250cm9sbGVyKCkuZWRpdGFibGVJbWFnZShfZm9jdXNlZEVt
YmVkZGVkVmlld0lEKTsKLSAgICBpZiAoIWZvY3VzZWRFZGl0YWJsZUltYWdlKQotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIHJldHVybiBmb2N1c2VkRWRpdGFibGVJbWFnZS0+ZHJhd2luZ1ZpZXcu
Z2V0KCk7Ci19Ci0KLS0gKE5TVW5kb01hbmFnZXIgKil1bmRvTWFuYWdlckZvcklua1BpY2tlcjoo
V0tJbmtQaWNrZXIgKilpbmtQaWNrZXIKLXsKLSAgICByZXR1cm4gW19jb250ZW50VmlldyB1bmRv
TWFuYWdlcl07Ci19Ci0KLS0gKFVJVmlldyAqKWNvbnRhaW5pbmdWaWV3Rm9ySW5rUGlja2VyOihX
S0lua1BpY2tlciAqKWlua1BpY2tlcgotewotICAgIHJldHVybiBfY29udGVudFZpZXc7Ci19Ci0K
LS0gKHZvaWQpaW5rUGlja2VyRGlkVG9nZ2xlUnVsZXI6KFdLSW5rUGlja2VyICopaW5rUGlja2Vy
Ci17Ci0gICAgX3J1bGVyRW5hYmxlZCA9ICFfcnVsZXJFbmFibGVkOwotICAgIFtzZWxmLl9mb2N1
c2VkRHJhd2luZ1ZpZXcgZGlkQ2hhbmdlUnVsZXJTdGF0ZTpfcnVsZXJFbmFibGVkXTsKLX0KLQot
LSAodm9pZClpbmtQaWNrZXJEaWRDaGFuZ2VJbms6KFdLSW5rUGlja2VyICopaW5rUGlja2VyCi17
Ci0gICAgW3NlbGYuX2ZvY3VzZWREcmF3aW5nVmlldyBkaWRDaGFuZ2VJbms6c2VsZi5jdXJyZW50
SW5rXTsKLX0KLQotLSAodm9pZClpbnN0YWxsSW5rUGlja2VyRm9yRHJhd2luZzooV2ViQ29yZTo6
R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpZW1iZWRkZWRWaWV3SUQKLXsKLSAgICBfZm9j
dXNlZEVtYmVkZGVkVmlld0lEID0gZW1iZWRkZWRWaWV3SUQ7Ci0KLSAgICBpZiAoIV9pbmtQaWNr
ZXIpCi0gICAgICAgIF9pbmtQaWNrZXIgPSBhZG9wdE5TKFtbV0tJbmtQaWNrZXIgYWxsb2NdIGlu
aXRXaXRoRGVsZWdhdGU6c2VsZl0pOwotICAgIFtfaW5rUGlja2VyIHNob3ddOwotCi0gICAgLy8g
V2hlbiBmb2N1c2VkLCBwdXNoIHRoZSBydWxlciBzdGF0ZSBkb3duIHRvIHRoZSBjYW52YXMgc28g
dGhhdCBpdCBkb2Vzbid0IGdldCBvdXQgb2Ygc3luYwotICAgIC8vIGFuZCBlYXJseS1yZXR1cm4g
ZnJvbSBsYXRlciBjaGFuZ2VzLgotICAgIFtzZWxmLl9mb2N1c2VkRHJhd2luZ1ZpZXcgZGlkQ2hh
bmdlUnVsZXJTdGF0ZTpfcnVsZXJFbmFibGVkXTsKLX0KLQotLSAodm9pZCl1bmluc3RhbGxJbmtQ
aWNrZXIKLXsKLSAgICBbX2lua1BpY2tlciBoaWRlXTsKLSAgICBbc2VsZi5fZm9jdXNlZERyYXdp
bmdWaWV3IGRpZENoYW5nZVJ1bGVyU3RhdGU6Tk9dOwotICAgIF9mb2N1c2VkRW1iZWRkZWRWaWV3
SUQgPSAwOwotfQotCi1AZW5kCi0KLSNlbmRpZiAvLyBIQVZFKFBFTkNJTEtJVCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5ZDgxYjIwM2I0NDBiODUzZDFiYzM1ODMwZTEwMmE4ODhlOTc5OTAyLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmIEhBVkUoUEVOQ0lMS0lUKQotCi0jaW1wb3J0ICJSZW1vdGVM
YXllclRyZWVIb3N0LmgiCi0jaW1wb3J0ICJSZW1vdGVMYXllclRyZWVWaWV3cy5oIgotCi1PQkpD
X0NMQVNTIFBLSW5rOwotT0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3OwotCi1AaW50ZXJmYWNlIFdL
RHJhd2luZ1ZpZXcgOiBXS0VtYmVkZGVkVmlldyA8V0tOYXRpdmVseUludGVyYWN0aWJsZT4KLQot
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRW1iZWRkZWRWaWV3SUQ6KFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXI6OkVtYmVkZGVkVmlld0lEKWVtYmVkZGVkVmlld0lEIGNvbnRlbnRWaWV3OihXS0NvbnRl
bnRWaWV3ICopY29udGVudFZpZXc7Ci0KLS0gKE5TRGF0YSAqKVBOR1JlcHJlc2VudGF0aW9uOwot
LSAodm9pZClsb2FkRHJhd2luZ0Zyb21QTkdSZXByZXNlbnRhdGlvbjooTlNEYXRhICopUE5HRGF0
YTsKLQotLSAodm9pZClkaWRDaGFuZ2VSdWxlclN0YXRlOihCT09MKXJ1bGVyRW5hYmxlZDsKLS0g
KHZvaWQpZGlkQ2hhbmdlSW5rOihQS0luayAqKWluazsKLQotQGVuZAotCi0KLSNlbmRpZiAvLyBI
QVZFKFBFTkNJTEtJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0RyYXdpbmdWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ1Zp
ZXcubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiZWQxMDM3MzM5MDQ4N2RmN2Nk
ZDU1ZmZjYTQxOGRiNDViYmU4ZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ1ZpZXcubW0K
KysrIC9kZXYvbnVsbApAQCAtMSwyMDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNv
bmZpZy5oIgotI2ltcG9ydCAiV0tEcmF3aW5nVmlldy5oIgotCi0jaWYgSEFWRShQRU5DSUxLSVQp
Ci0KLSNpbXBvcnQgIkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmgiCi0jaW1wb3J0ICJXS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24uaCIKLSNpbXBvcnQgIldLRHJhd2luZ0Nvb3JkaW5hdG9yLmgiCi0j
aW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQot
I2ltcG9ydCAiUGVuY2lsS2l0U29mdExpbmsuaCIKLQotQGludGVyZmFjZSBXS0RyYXdpbmdWaWV3
ICgpIDxQS0NhbnZhc1ZpZXdEZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdLRHJh
d2luZ1ZpZXcgewotICAgIFJldGFpblB0cjxQS0NhbnZhc1ZpZXc+IF9wZW5jaWxWaWV3OwotCi0j
aWYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQotICAgIE9TT2JqZWN0UHRyPGRpc3Bh
dGNoX3F1ZXVlX3Q+IF9yZW5kZXJRdWV1ZTsKLSAgICBSZXRhaW5QdHI8UEtJbWFnZVJlbmRlcmVy
PiBfcmVuZGVyZXI7Ci0jZW5kaWYKLQotICAgIF9fd2VhayBXS0NvbnRlbnRWaWV3ICpfY29udGVu
dFZpZXc7Ci19Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEVtYmVkZGVkVmlld0lEOihXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCllbWJlZGRlZFZpZXdJRCBjb250ZW50
VmlldzooV0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBp
bml0V2l0aEVtYmVkZGVkVmlld0lEOmVtYmVkZGVkVmlld0lEXTsKLSAgICBpZiAoIXNlbGYpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfY29udGVudFZpZXcgPSBjb250ZW50VmlldzsKLQot
ICAgIF9wZW5jaWxWaWV3ID0gYWRvcHROUyhbV2ViS2l0OjphbGxvY1BLQ2FudmFzVmlld0luc3Rh
bmNlKCkgaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvXSk7Ci0KLSAgICBbX3BlbmNpbFZpZXcgc2V0
RmluZ2VyRHJhd2luZ0VuYWJsZWQ6Tk9dOwotICAgIFtfcGVuY2lsVmlldyBzZXRVc2VySW50ZXJh
Y3Rpb25FbmFibGVkOllFU107Ci0gICAgW19wZW5jaWxWaWV3IHNldE9wYXF1ZTpOT107Ci0gICAg
W19wZW5jaWxWaWV3IHNldERlbGVnYXRlOnNlbGZdOwotICAgIFtfcGVuY2lsVmlldyBzZXRSdWxl
ckhvc3RpbmdEZWxlZ2F0ZTpfY29udGVudFZpZXcuX2RyYXdpbmdDb29yZGluYXRvcl07Ci0KLSAg
ICBbc2VsZiBhZGRTdWJ2aWV3Ol9wZW5jaWxWaWV3LmdldCgpXTsKLQotICAgIHJldHVybiBzZWxm
OwotfQotCi0tICh2b2lkKWxheW91dFN1YnZpZXdzCi17Ci0gICAgaWYgKCFDR1JlY3RFcXVhbFRv
UmVjdChbX3BlbmNpbFZpZXcgZnJhbWVdLCBzZWxmLmJvdW5kcykpIHsKLSAgICAgICAgW19wZW5j
aWxWaWV3IHNldEZyYW1lOnNlbGYuYm91bmRzXTsKLQotI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
X1NJTVVMQVRPUikKLSAgICAgICAgLy8gVGhlIHJlbmRlcmVyIGlzIGluc3RhbnRpYXRlZCBmb3Ig
YSBwYXJ0aWN1bGFyIHNpemUgb3V0cHV0OyBpZgotICAgICAgICAvLyB0aGUgc2l6ZSBjaGFuZ2Vz
LCB3ZSBuZWVkIHRvIHJlLWNyZWF0ZSB0aGUgcmVuZGVyZXIuCi0gICAgICAgIF9yZW5kZXJlciA9
IG5pbDsKLSNlbmRpZgotCi0gICAgICAgIFtzZWxmIGludmFsaWRhdGVBdHRhY2htZW50XTsKLSAg
ICB9Ci19Ci0KLXN0YXRpYyBVSUltYWdlICplbXB0eUltYWdlKCkKLXsKLSAgICBVSUdyYXBoaWNz
QmVnaW5JbWFnZUNvbnRleHQoQ0dTaXplTWFrZSgxLCAxKSk7Ci0gICAgQ0dDb250ZXh0Q2xlYXJS
ZWN0KFVJR3JhcGhpY3NHZXRDdXJyZW50Q29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIDEsIDEp
KTsKLSAgICBVSUltYWdlICpyZXN1bHRJbWFnZSA9IFVJR3JhcGhpY3NHZXRJbWFnZUZyb21DdXJy
ZW50SW1hZ2VDb250ZXh0KCk7Ci0gICAgVUlHcmFwaGljc0VuZEltYWdlQ29udGV4dCgpOwotCi0g
ICAgcmV0dXJuIHJlc3VsdEltYWdlOwotfQotCi0tIChVSUltYWdlICopcmVuZGVyZWREcmF3aW5n
Ci17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCi0gICAgLy8gUEtJbWFnZVJl
bmRlcmVyIGN1cnJlbnRseSBkb2Vzbid0IHdvcmsgaW4gdGhlIHNpbXVsYXRvci4gSW4gb3JkZXIg
dG8KLSAgICAvLyBhbGxvdyBzdHJva2VzIHRvIHBlcnNpc3QgcmVnYXJkbGVzcyAobW9zdGx5IGZv
ciB0ZXN0aW5nKSwgd2UnbGwKLSAgICAvLyBzeW50aGVzaXplIGFuIGVtcHR5IDF4MSBpbWFnZS4K
LSAgICByZXR1cm4gZW1wdHlJbWFnZSgpOwotI2Vsc2UKLSAgICBpZiAoIXNlbGYuYm91bmRzLnNp
emUud2lkdGggfHwgIXNlbGYuYm91bmRzLnNpemUuaGVpZ2h0IHx8ICFzZWxmLndpbmRvdy5zY3Jl
ZW4uc2NhbGUpCi0gICAgICAgIHJldHVybiBlbXB0eUltYWdlKCk7Ci0KLSAgICBpZiAoIV9yZW5k
ZXJRdWV1ZSkKLSAgICAgICAgX3JlbmRlclF1ZXVlID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9x
dWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV0tEcmF3aW5nVmlldy5SZW5kZXJpbmciLCBE
SVNQQVRDSF9RVUVVRV9TRVJJQUwpKTsKLQotICAgIGlmICghX3JlbmRlcmVyKQotICAgICAgICBf
cmVuZGVyZXIgPSBhZG9wdE5TKFtXZWJLaXQ6OmFsbG9jUEtJbWFnZVJlbmRlcmVySW5zdGFuY2Uo
KSBpbml0V2l0aFNpemU6c2VsZi5ib3VuZHMuc2l6ZSBzY2FsZTpzZWxmLndpbmRvdy5zY3JlZW4u
c2NhbGUgcmVuZGVyUXVldWU6X3JlbmRlclF1ZXVlLmdldCgpXSk7Ci0KLSAgICBfX2Jsb2NrIFJl
dGFpblB0cjxVSUltYWdlPiByZXN1bHRJbWFnZTsKLQotICAgIFtfcmVuZGVyZXIgcmVuZGVyRHJh
d2luZzpbX3BlbmNpbFZpZXcgbm9uTnVsbERyYXdpbmddIGNvbXBsZXRpb246XihVSUltYWdlICpp
bWFnZSkgewotICAgICAgICByZXN1bHRJbWFnZSA9IGltYWdlOwotICAgIH1dOwotCi0gICAgLy8g
RklYTUU6IElkZWFsbHkgd2Ugd291bGQgbm90IHN5bmNocm9ub3VzbHkgd2FpdCBmb3IgdGhpcyBy
ZW5kZXJpbmcsCi0gICAgLy8gYnV0IE5TRmlsZVdyYXBwZXIgcmVxdWlyZXMgZGF0YSBzeW5jaHJv
bm91c2x5LCBhbmQgb3VyIGNsaWVudHMgZXhwZWN0Ci0gICAgLy8gYW4gTlNGaWxlV3JhcHBlciB0
byBiZSBhdmFpbGFibGUgc3luY2hyb25vdXNseS4KLSAgICBkaXNwYXRjaF9zeW5jKF9yZW5kZXJR
dWV1ZS5nZXQoKSwgXnsgfSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0SW1hZ2UuYXV0b3JlbGVhc2Uo
KTsKLSNlbmRpZgotfQotCi0tIChOU0RhdGEgKilQTkdSZXByZXNlbnRhdGlvbgotewotICAgIFJl
dGFpblB0cjxVSUltYWdlPiBpbWFnZSA9IFtzZWxmIHJlbmRlcmVkRHJhd2luZ107Ci0gICAgUmV0
YWluUHRyPE5TTXV0YWJsZURhdGE+IFBOR0RhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBh
bGxvY10gaW5pdF0pOwotICAgIFJldGFpblB0cjxDR0ltYWdlRGVzdGluYXRpb25SZWY+IGltYWdl
RGVzdGluYXRpb24gPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhKChf
X2JyaWRnZSBDRk11dGFibGVEYXRhUmVmKVBOR0RhdGEuZ2V0KCksIGtVVFR5cGVQTkcsIDEsIG5p
bCkpOwotICAgIE5TU3RyaW5nICpiYXNlNjREcmF3aW5nID0gW1tbX3BlbmNpbFZpZXcgbm9uTnVs
bERyYXdpbmddIHNlcmlhbGl6ZV0gYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBdOwot
ICAgIE5TRGljdGlvbmFyeSAqcHJvcGVydGllcyA9IG5pbDsKLSAgICBpZiAoYmFzZTY0RHJhd2lu
ZykgewotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHB1dCB0aGlzIHNvbWV3aGVyZSBsZXNz
IHVzZXItZmFjaW5nIHRoYW4gdGhlIEVYSUYgVXNlciBDb21tZW50IGZpZWxkLgotICAgICAgICBw
cm9wZXJ0aWVzID0gQHsKLSAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDR0ltYWdl
UHJvcGVydHlFeGlmRGljdGlvbmFyeSA6IEB7Ci0gICAgICAgICAgICAgICAgKF9fYnJpZGdlIE5T
U3RyaW5nICopa0NHSW1hZ2VQcm9wZXJ0eUV4aWZVc2VyQ29tbWVudCA6IGJhc2U2NERyYXdpbmcK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICB9Ci0gICAgQ0dJbWFnZURlc3RpbmF0aW9u
U2V0UHJvcGVydGllcyhpbWFnZURlc3RpbmF0aW9uLmdldCgpLCAoX19icmlkZ2UgQ0ZEaWN0aW9u
YXJ5UmVmKXByb3BlcnRpZXMpOwotICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGltYWdl
RGVzdGluYXRpb24uZ2V0KCksIFtpbWFnZSBDR0ltYWdlXSwgKF9fYnJpZGdlIENGRGljdGlvbmFy
eVJlZilwcm9wZXJ0aWVzKTsKLSAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShpbWFnZURl
c3RpbmF0aW9uLmdldCgpKTsKLQotICAgIHJldHVybiBQTkdEYXRhLmF1dG9yZWxlYXNlKCk7Ci19
Ci0KLS0gKHZvaWQpbG9hZERyYXdpbmdGcm9tUE5HUmVwcmVzZW50YXRpb246KE5TRGF0YSAqKVBO
R0RhdGEKLXsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVNvdXJjZVJlZj4gaW1hZ2VTb3VyY2UgPSBh
ZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVXaXRoRGF0YSgoX19icmlkZ2UgQ0ZEYXRhUmVmKVBO
R0RhdGEsIG51bGxwdHIpKTsKLSAgICBpZiAoIWltYWdlU291cmNlKQotICAgICAgICByZXR1cm47
Ci0gICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gcHJvcGVydGllcyA9IGFkb3B0TlMoKF9fYnJp
ZGdlIE5TRGljdGlvbmFyeSAqKUNHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgoaW1h
Z2VTb3VyY2UuZ2V0KCksIDAsIG5pbCkpOwotICAgIE5TU3RyaW5nICpiYXNlNjREcmF3aW5nID0g
W1twcm9wZXJ0aWVzIG9iamVjdEZvcktleTooTlNTdHJpbmcgKilrQ0dJbWFnZVByb3BlcnR5RXhp
ZkRpY3Rpb25hcnldIG9iamVjdEZvcktleTooTlNTdHJpbmcgKilrQ0dJbWFnZVByb3BlcnR5RXhp
ZlVzZXJDb21tZW50XTsKLSAgICBpZiAoIWJhc2U2NERyYXdpbmcpCi0gICAgICAgIHJldHVybjsK
LSAgICBSZXRhaW5QdHI8TlNEYXRhPiBkcmF3aW5nRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxs
b2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzpiYXNlNjREcmF3aW5nIG9wdGlvbnM6MF0p
OwotICAgIFJldGFpblB0cjxQS0RyYXdpbmc+IGRyYXdpbmcgPSBhZG9wdE5TKFtXZWJLaXQ6OmFs
bG9jUEtEcmF3aW5nSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZHJhd2luZ0RhdGEuZ2V0KCkgZXJy
b3I6bmlsXSk7Ci0gICAgW19wZW5jaWxWaWV3IHNldE5vbk51bGxEcmF3aW5nOmRyYXdpbmcuZ2V0
KCldOwotfQotCi0tICh2b2lkKWNhbnZhc1ZpZXdEcmF3aW5nRGlkQ2hhbmdlOihQS0NhbnZhc1Zp
ZXcgKiljYW52YXNWaWV3Ci17Ci0gICAgW3NlbGYgaW52YWxpZGF0ZUF0dGFjaG1lbnRdOwotfQot
Ci0tICh2b2lkKV9jYW52YXNWaWV3V2lsbEJlZ2luRHJhd2luZzooUEtDYW52YXNWaWV3ICopY2Fu
dmFzVmlldwotewotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBbX3Bl
bmNpbFZpZXcgc2V0SW5rOl9jb250ZW50Vmlldy5fZHJhd2luZ0Nvb3JkaW5hdG9yLmN1cnJlbnRJ
bmtdOwotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi19Ci0KLS0gKHZvaWQpaW52
YWxpZGF0ZUF0dGFjaG1lbnQKLXsKLSAgICBpZiAoIV9jb250ZW50Vmlldy5wYWdlKQotICAgICAg
ICByZXR1cm47Ci0gICAgYXV0byYgcGFnZSA9ICpfY29udGVudFZpZXcucGFnZTsKLQotICAgIHBh
Z2UuZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIoKS5pbnZhbGlkYXRlQXR0YWNobWVudEZvckVkaXRh
YmxlSW1hZ2Uoc2VsZi5lbWJlZGRlZFZpZXdJRCk7Ci19Ci0KLS0gKHZvaWQpZGlkQ2hhbmdlUnVs
ZXJTdGF0ZTooQk9PTClydWxlckVuYWJsZWQKLXsKLSAgICBbX3BlbmNpbFZpZXcgc2V0UnVsZXJF
bmFibGVkOnJ1bGVyRW5hYmxlZF07Ci19Ci0KLS0gKHZvaWQpZGlkQ2hhbmdlSW5rOihQS0luayAq
KWluawotewotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBbX3BlbmNp
bFZpZXcgc2V0SW5rOmlua107Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLX0K
LQotQGVuZAotCi0jZW5kaWYgLy8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA0NWMwYmQ0OTU3MGE1ZWUzYmUx
Yjg5M2VjYWVhY2I4MzVkZDliMjVlLi4zN2Y1Y2FiM2JiNjk1ZmU1NTEzYjg1ZDZkMTg0NzMwMTE0
NWMyNjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0KQEAgLTYyNSwxMSArNjI1LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVR3b0Zp
bmdlclRhcEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBPcHQKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KHBvaW50LCBt
b2RpZmllcnMsIHJlcXVlc3RJRCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlU3R5
bHVzU2luZ2xlVGFwQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQ2
NF90IHJlcXVlc3RJRCkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVTdHls
dXNTaW5nbGVUYXBBdFBvaW50KHBvaW50LCByZXF1ZXN0SUQpKTsKLX0KLQogdm9pZCBXZWJQYWdl
UHJveHk6OnNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IGZyb20s
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHRvLCBHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgR2Vz
dHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIEZ1bmN0aW9uPHZvaWQoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgT3B0
aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tG
dW5jdGlvbikKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVl
bi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCmluZGV4IDY4OTk0M2I0ZjZmODNh
YTM1MjMyZmZjZmIxMjRmYjg4YTQxNTExMTIuLjkyYTQyYjRjYTU2YjM3YzE4NDJhOGNiMTFkYTVl
Y2EwZDJhMjdlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxs
c2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
cklPUy5tbQpAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAiV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlcklPUy5oIgogCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgorI2ltcG9ydCAiVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxl
ci5oIgogI2ltcG9ydCAiV0tGdWxsc2NyZWVuU3RhY2tWaWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZp
ZXcuaCIKQEAgLTQ0LDYgKzQ1LDggQEAKICNpbXBvcnQgPFdlYkNvcmUvR2VvbWV0cnlVdGlsaXRp
ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW50UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2Nh
bGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1ZpZGVvRnVsbHNjcmVlbk1vZGVsLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NG
TmV0d29ya1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1N0cmluZ1NQSS5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTIz
OTZmNWZhMGQyYTc2N2UyNTA4MmNlNmFlMzY4N2UyMWM1ZThiNC4uMDM2ZGI2YWNmODBmNDFkOWM0
NDcyNjQ2NjkyMzAwNzk1NjE4MWM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MzcsMTEgKzYzNyw5IEBACiAJCTJENTRDMzE5MjEy
RjNCMzMwMDQ5QzE3NCAvKiBVbmlmaWVkU291cmNlNjItbW0ubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDU0QzMwNTIxMkYzQjMzMDA0OUMxNzQgLyog
VW5pZmllZFNvdXJjZTYyLW1tLm1tICovOyB9OwogCQkyRDU0QzMxQTIxMkYzQjMzMDA0OUMxNzQg
LyogVW5pZmllZFNvdXJjZTYxLW1tLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkQ1NEMzMDYyMTJGM0IzMzAwNDlDMTc0IC8qIFVuaWZpZWRTb3VyY2U2
MS1tbS5tbSAqLzsgfTsKIAkJMkQ1NEMzMUIyMTJGNERBNjAwNDlDMTc0IC8qIFByb2Nlc3NMYXVu
Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QUUxMTdGNTExREJCMzA5MDA5ODE2MTUgLyogUHJvY2Vzc0xhdW5jaGVyLmNwcCAqLzsgfTsKLQkJ
MkQ1ODc1QkYyMTlCNTMxNTAwNzBCOUFBIC8qIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDU4NzVCRDIxOUI1
MzE1MDA3MEI5QUEgLyogRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJMkQ1QzlE
MDYxOUM4MUQ4RjAwQjNDNUMxIC8qIFdlYlBhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDVDOUQwNDE5QzgxRDhGMDBCM0M1QzEgLyog
V2ViUGFnZU92ZXJsYXkuaCAqLzsgfTsKIAkJMkQ2QUI1NDExOTJCMUM0QTAwM0E5RkQxIC8qIFdL
UERGUGFnZU51bWJlckluZGljYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkQ2QUI1M0YxOTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJl
ckluZGljYXRvci5oICovOyB9OwogCQkyRDZCMzcxQjE4QTk2N0FEMDA0MkFFODAgLyogX1dLVGh1
bWJuYWlsVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQ2QjM3MTkxOEE5NjdBRDAwNDJBRTgwIC8qIF9XS1RodW1ibmFpbFZpZXcuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkyRDZCRjEyNDIxQUY1
NkUxMDAxRTc5QzkgLyogUGVuY2lsS2l0U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENkJGMTIyMjFBRjU2RTEwMDFFNzlDOSAvKiBQZW5j
aWxLaXRTb2Z0TGluay5oICovOyB9OwogCQkyRDZDRDExOTE4OTA1OEE1MDBFNUE0QTAgLyogVmll
d1NuYXBzaG90U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJENkNEMTE3MTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZS5oICov
OyB9OwogCQkyRDcyQTFGQTIxMkJGNDZFMDA1MTdBMjAgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QUIxNkFEQjE2NDg1OTg0MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0g
Ki87IH07CiAJCTJENzMwMzc5MUE3QzJCNzUwMEY4RjQ4NyAvKiBXS1BhZ2VOYXZpZ2F0aW9uQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDcz
MDM3ODFBN0MyQjc1MDBGOEY0ODcgLyogV0tQYWdlTmF2aWdhdGlvbkNsaWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NDMsOCArNzQxLDYg
QEAKIAkJMkRCOTQyOTkyMzRFN0E3RjAwRTc3NkFEIC8qIFdLTW91c2VHZXN0dXJlUmVjb2duaXpl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRCOTQy
OTcyMzRFN0E3RjAwRTc3NkFEIC8qIFdLTW91c2VHZXN0dXJlUmVjb2duaXplci5oICovOyB9Owog
CQkyREI5NjA1MzIzOTg4NkMxMDAxMDI3OTEgLyogY29tLmFwcGxlLldlYktpdC5HUFUuc2IgaW4g
Q29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQjk2MDUyMjM5
ODg2QjkwMDEwMjc5MSAvKiBjb20uYXBwbGUuV2ViS2l0LkdQVS5zYiAqLzsgfTsKIAkJMkRDMTgx
MjQ1QjU0OTM0M0JDOTgxNjRDIC8qIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRDMTg1NUVEQkZCODUw
QkEwQjZEMDZEIC8qIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwICovOyB9OwotCQkyREMx
OEZBRDIxODkxMDQ5MDAyNUE4OEQgLyogV0tEcmF3aW5nVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRDMThGQUIyMTg5MTA0ODAwMjVBODhEIC8q
IFdLRHJhd2luZ1ZpZXcuaCAqLzsgfTsKLQkJMkRDMThGQjAyMTg5MTI2NDAwMjVBODhEIC8qIFBl
bmNpbEtpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkRDMThGQUYyMTg5MTI2NDAwMjVBODhEIC8qIFBlbmNpbEtpdFNQSS5oICovOyB9OwogCQky
REMxOEZCMzIxOEE2RTlFMDAyNUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQzE4RkIxMjE4QTZFOUUw
MDI1QTg4RCAvKiBSZW1vdGVMYXllclRyZWVWaWV3cy5oICovOyB9OwogCQkyREMxOEZCNDIxOEE2
RTlFMDAyNUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREMxOEZCMjIxOEE2RTlFMDAyNUE4OEQgLyog
UmVtb3RlTGF5ZXJUcmVlVmlld3MubW0gKi87IH07CiAJCTJEQzE4RkVCRjMzN0I5NjcxQzg4RTND
RCAvKiBTaGFyZWRCdWZmZXJDb3B5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEQzE4MDAxRDkwREREMTVGQzY5OTFBOSAvKiBTaGFyZWRCdWZmZXJD
b3B5LmNwcCAqLzsgfTsKQEAgLTI4NDMsOCArMjgzOSw2IEBACiAJCTJEMUI1RDVDMTg1ODY5Qzgw
MDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkyRDFFODIyMTIxNkZGRjUw
MDBBMTUyNjUgLyogV0tXZWJFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXS1dlYkV2ZW50Lmg7IHBhdGggPSBpb3MvV0tXZWJFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyRDFFODIyMjIxNkZGRjUxMDBBMTUyNjUgLyogV0tXZWJFdmVudC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLV2ViRXZlbnQubW07IHBh
dGggPSBpb3MvV0tXZWJFdmVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkQy
MUE0NTgyMURFRDQ5QjAwMjQ4N0U3IC8qIFdLRHJhd2luZ0Nvb3JkaW5hdG9yLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gV0tEcmF3aW5nQ29vcmRpbmF0b3IubW07IHBhdGggPSBpb3MvV0tEcmF3
aW5nQ29vcmRpbmF0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJEMjFBNDU5
MjFERUQ0OUIwMDI0ODdFNyAvKiBXS0RyYXdpbmdDb29yZGluYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXS0RyYXdpbmdDb29yZGluYXRvci5oOyBwYXRoID0gaW9zL1dLRHJhd2luZ0Nvb3JkaW5hdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMjhBNDk1MUFGOTY1QTEwMEYxOTBD
OSAvKiBXS1ZpZXdMYXlvdXRTdHJhdGVneS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS1ZpZXdMYXlvdXRTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRDI4QTQ5NjFBRjk2NUExMDBGMTkwQzkgLyogV0tWaWV3TGF5b3V0U3RyYXRlZ3kubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1ZpZXdMYXlvdXRTdHJhdGVn
eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyOEYzRTAxODg1Q0NDMTAwNEI5
RUFFIC8qIFdlYkNocm9tZUNsaWVudElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFdlYkNocm9tZUNsaWVudElPUy5tbTsgcGF0aCA9IGlvcy9XZWJDaHJvbWVD
bGllbnRJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTAwLDE3ICsyODk0
LDEyIEBACiAJCTJENTRDMzA0MjEyRjNCMzMwMDQ5QzE3NCAvKiBVbmlmaWVkU291cmNlNzEtbW0u
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSAiVW5pZmllZFNvdXJjZTcxLW1tLm1tIjsgcGF0aCA9
ICJEZXJpdmVkU291cmNlcy9XZWJLaXQyL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlNzEt
bW0ubW0iOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkyRDU0QzMwNTIx
MkYzQjMzMDA0OUMxNzQgLyogVW5pZmllZFNvdXJjZTYyLW1tLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gIlVuaWZpZWRTb3VyY2U2Mi1tbS5tbSI7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTYyLW1tLm1tIjsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMkQ1NEMzMDYyMTJGM0IzMzAwNDlDMTc0IC8qIFVu
aWZpZWRTb3VyY2U2MS1tbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9ICJVbmlmaWVkU291cmNl
NjEtbW0ubW0iOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL1dlYktpdDIvdW5pZmllZC1zb3VyY2Vz
L1VuaWZpZWRTb3VyY2U2MS1tbS5tbSI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07Ci0JCTJENTg3NUJCMjE5QjI4QTUwMDcwQjlBQSAvKiBFZGl0YWJsZUltYWdlQ29udHJvbGxl
ci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBFZGl0YWJsZUltYWdlQ29udHJv
bGxlci5tZXNzYWdlcy5pbjsgcGF0aCA9IGlvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkQ1ODc1QkQyMTlCNTMxNTAw
NzBCOUFBIC8qIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmg7IHBhdGggPSBpb3MvRWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkQ1ODc1
QkUyMTlCNTMxNTAwNzBCOUFBIC8qIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIu
bW07IHBhdGggPSBpb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJENUM5RDAzMTlDODFEOEYwMEIzQzVDMSAvKiBXZWJQYWdlT3Zlcmxh
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYWdlT3Zlcmxh
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENUM5RDA0MTlDODFEOEYwMEIz
QzVDMSAvKiBXZWJQYWdlT3ZlcmxheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJQYWdlT3ZlcmxheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDZBQjUz
RjE5MkIxQzRBMDAzQTlGRDEgLyogV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUERGUGFnZU51bWJlckluZGljYXRvci5oOyBwYXRo
ID0gaW9zL1dLUERGUGFnZU51bWJlckluZGljYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRDZBQjU0MDE5MkIxQzRBMDAzQTlGRDEgLyogV0tQREZQYWdlTnVtYmVySW5kaWNh
dG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tQREZQYWdl
TnVtYmVySW5kaWNhdG9yLm1tOyBwYXRoID0gaW9zL1dLUERGUGFnZU51bWJlckluZGljYXRvci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2QjM3MTkxOEE5NjdBRDAwNDJBRTgw
IC8qIF9XS1RodW1ibmFpbFZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
X1dLVGh1bWJuYWlsVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDZCMzcx
QTE4QTk2N0FEMDA0MkFFODAgLyogX1dLVGh1bWJuYWlsVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1RodW1ibmFpbFZpZXcubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTJENkJGMTIxMjFBRjU2RTEwMDFFNzlDOSAvKiBQZW5jaWxLaXRT
b2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBlbmNp
bEtpdFNvZnRMaW5rLm1tOyBwYXRoID0gaW9zL1BlbmNpbEtpdFNvZnRMaW5rLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkyRDZCRjEyMjIxQUY1NkUxMDAxRTc5QzkgLyogUGVuY2ls
S2l0U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGVuY2lsS2l0
U29mdExpbmsuaDsgcGF0aCA9IGlvcy9QZW5jaWxLaXRTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRDZDRDExNzE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90
U3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlld1NuYXBzaG90U3Rv
cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2Q0QxMTgxODkwNThBNTAwRTVB
NEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gVmlld1NuYXBzaG90U3RvcmVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJENkNEMTFBMTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9y
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWV3U25hcHNob3RT
dG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTYwLDkgKzMxNDksNiBA
QAogCQkyREMxODAwMUQ5MERERDE1RkM2OTkxQTkgLyogU2hhcmVkQnVmZmVyQ29weS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRCdWZmZXJDb3B5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRDMTg1NUVEQkZCODUwQkEwQjZEMDZEIC8q
IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJEQzE4ODFBQ0JDQUI1RDU3QzVDNkVGMCAvKiBTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRDMThG
QUIyMTg5MTA0ODAwMjVBODhEIC8qIFdLRHJhd2luZ1ZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gV0tEcmF3aW5nVmlldy5oOyBwYXRoID0gaW9zL1dLRHJhd2luZ1ZpZXcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRDMThGQUMyMTg5MTA0ODAwMjVBODhE
IC8qIFdLRHJhd2luZ1ZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBXS0RyYXdpbmdWaWV3Lm1tOyBwYXRoID0gaW9zL1dLRHJhd2luZ1ZpZXcubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJEQzE4RkFGMjE4OTEyNjQwMDI1QTg4RCAvKiBQZW5j
aWxLaXRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVuY2lsS2l0U1BJ
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQzE4RkIxMjE4QTZFOUUwMDI1QTg4
RCAvKiBSZW1vdGVMYXllclRyZWVWaWV3cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVMYXllclRyZWVWaWV3cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyREMxOEZCMjIxOEE2RTlFMDAyNUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVMYXllclRyZWVWaWV3
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRDNENGN0ExRDJERTI0QjAwRUND
Qzk0IC8qIFdlYlBhZ2VDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlBhZ2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcw
MTQsMTcgKzcwMDAsMTIgQEAKIAkJCQkxQUQ0QzE5MDFCMzlGMzMyMDBBQkMyOEUgLyogQXBwbGlj
YXRpb25TdGF0ZVRyYWNrZXIubW0gKi8sCiAJCQkJRjQ5NkE0MkYxRjU4QTI3MjAwNEMxNzU3IC8q
IERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oICovLAogCQkJCUY0OTZBNDMwMUY1OEEyNzIwMDRD
MTc1NyAvKiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0gKi8sCi0JCQkJMkQ1ODc1QkQyMTlC
NTMxNTAwNzBCOUFBIC8qIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmggKi8sCi0JCQkJMkQ1ODc1
QkIyMTlCMjhBNTAwNzBCOUFBIC8qIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1lc3NhZ2VzLmlu
ICovLAotCQkJCTJENTg3NUJFMjE5QjUzMTUwMDcwQjlBQSAvKiBFZGl0YWJsZUltYWdlQ29udHJv
bGxlci5tbSAqLywKIAkJCQlDRENEQzk5QjI0OEZFOERBMDBBNjk1MjIgLyogRW5kb3dtZW50U3Rh
dGVUcmFja2VyLmggKi8sCiAJCQkJQ0RDREM5OUMyNDhGRThEQTAwQTY5NTIyIC8qIEVuZG93bWVu
dFN0YXRlVHJhY2tlci5tbSAqLywKIAkJCQkyREQ0NUFEQzFFNUY4OTcyMDA2QzM1NUYgLyogSW5w
dXRWaWV3VXBkYXRlRGVmZXJyZXIuaCAqLywKIAkJCQkyREQ0NUFERDFFNUY4OTcyMDA2QzM1NUYg
LyogSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIubW0gKi8sCiAJCQkJMEZDQjRFMzYxOEJCRTA0NDAw
MEZDRkM5IC8qIFBhZ2VDbGllbnRJbXBsSU9TLmggKi8sCiAJCQkJMEZDQjRFMzcxOEJCRTA0NDAw
MEZDRkM5IC8qIFBhZ2VDbGllbnRJbXBsSU9TLm1tICovLAotCQkJCTJENkJGMTIyMjFBRjU2RTEw
MDFFNzlDOSAvKiBQZW5jaWxLaXRTb2Z0TGluay5oICovLAotCQkJCTJENkJGMTIxMjFBRjU2RTEw
MDFFNzlDOSAvKiBQZW5jaWxLaXRTb2Z0TGluay5tbSAqLywKIAkJCQk4NkY5NTM2MjE4RkY1NTBC
MDAxREIyRUYgLyogUHJvY2Vzc0Fzc2VydGlvbklPUy5tbSAqLywKIAkJCQk1MUU2QzE1RjFGMjkz
NTUxMDBGRDM0MzcgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlSU9T
Lm1tICovLAogCQkJCTJEQUYwNkQ0MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyLmggKi8sCkBAIC03MDUxLDEwICs3MDMyLDYgQEAKIAkJCQkwRkNCNEU2QjE4
QkJGMjZBMDAwRkNGQzkgLyogV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tICovLAogCQkJCUY0
NDgxNTYyMjM4NzgyMDAwMDk4MjY1NyAvKiBXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLmgg
Ki8sCiAJCQkJRjQ0ODE1NjMyMzg3ODIwMDAwOTgyNjU3IC8qIFdLRGVmZXJyaW5nR2VzdHVyZVJl
Y29nbml6ZXIubW0gKi8sCi0JCQkJMkQyMUE0NTkyMURFRDQ5QjAwMjQ4N0U3IC8qIFdLRHJhd2lu
Z0Nvb3JkaW5hdG9yLmggKi8sCi0JCQkJMkQyMUE0NTgyMURFRDQ5QjAwMjQ4N0U3IC8qIFdLRHJh
d2luZ0Nvb3JkaW5hdG9yLm1tICovLAotCQkJCTJEQzE4RkFCMjE4OTEwNDgwMDI1QTg4RCAvKiBX
S0RyYXdpbmdWaWV3LmggKi8sCi0JCQkJMkRDMThGQUMyMTg5MTA0ODAwMjVBODhEIC8qIFdLRHJh
d2luZ1ZpZXcubW0gKi8sCiAJCQkJMEZDQjRFM0YxOEJCRTA0NDAwMEZDRkM5IC8qIFdLR2VvbG9j
YXRpb25Qcm92aWRlcklPUy5oICovLAogCQkJCTBGQ0I0RTQwMThCQkUwNDQwMDBGQ0ZDOSAvKiBX
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0gKi8sCiAJCQkJMEZDQjRFNDExOEJCRTA0NDAwMEZD
RkM5IC8qIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPU09iakNTZWN1cml0eU9yaWdpbi5tbSAqLywK
QEAgLTEwNDQyLDcgKzEwNDE5LDYgQEAKIAkJCQkyRDRBRjA4ODIwNDRDM0M0MDA2Qzg4MTcgLyog
RnJvbnRCb2FyZFNlcnZpY2VzU1BJLmggKi8sCiAJCQkJQTEzQjNEQTEyMDdGMzlERTAwOTBDNThE
IC8qIE1vYmlsZVdpRmlTUEkuaCAqLywKIAkJCQkzMTc4QUY5NzIwRTJBN0Y4MDA3NERFOTQgLyog
UERGS2l0U1BJLmggKi8sCi0JCQkJMkRDMThGQUYyMTg5MTI2NDAwMjVBODhEIC8qIFBlbmNpbEtp
dFNQSS5oICovLAogCQkJCTQ2RjM4RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRT
ZXJ2aWNlc1NQSS5oICovLAogCQkJCUNFMUEwQkQwMUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEku
aCAqLywKIAkJCQlDRTFBMEJEMTFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggKi8s
CkBAIC0xMDg0NSw3ICsxMDgyMSw2IEBACiAJCQkJQkMyNjUyMTcxMTgyNjA4MTAwMjQzRTEyIC8q
IERyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNjQyMzA5MTJERDA5RUIw
MENBQUUyQyAvKiBEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJEQTY3MzFBMjBDNzU0QjEwMDNDQjQwMSAvKiBEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQkyRDU4NzVCRjIxOUI1MzE1MDA3MEI5QUEgLyogRWRpdGFibGVJ
bWFnZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMDVGRTU0MThEN0I5REUwMDhG
NTdBOCAvKiBFZGl0aW5nUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTQxQUI1MTJDMDJF
QzQwMDJCRTY3QiAvKiBFZGl0b3JTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJEQTgx
MEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTEwMzMsOCAr
MTEwMDgsNiBAQAogCQkJCUExNzk4QjQzMjIyRDk4REYwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMUUxMjNCQTIwQTEx
NTczMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxOTU4
MkQzMTUzQ0JGRDcwMEI2MDg3NSAvKiBQREZLaXRJbXBvcnRzLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkyRDZCRjEyNDIxQUY1NkUxMDAxRTc5QzkgLyogUGVuY2lsS2l0U29mdExpbmsuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTJEQzE4RkIwMjE4OTEyNjQwMDI1QTg4RCAvKiBQZW5jaWxLaXRTUEkuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDMjk4REEwMUMzREYwMjEwMDQ3MEFGRSAvKiBQZW5kaW5nRG93
bmxvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMkVEMThDMUUyRkUxNTcwMDZCQTY0QSAvKiBQ
ZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUZC
RDM2RjIxRTU0NkY4MDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMTU5Niw3ICsxMTU2OSw2IEBACiAJCQkJMUFCN0Q3OEQxMjg4Q0Q5QTAwQ0ZEMDhDIC8q
IFdLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTYzNzI4MUEyMjFBREM3NDQwMDlFMERF
NiAvKiBXS0Rvd25sb2FkUHJvZ3Jlc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0MDlCQTE4MUU2
RTY0QkMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMkRDMThGQUQyMTg5MTA0OTAwMjVBODhEIC8qIFdLRHJhd2luZ1ZpZXcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJFQ0Y2NkNFMjFENkI3N0UwMDlFNUMzRiAvKiBXS0VkaXRDb21tYW5kLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUY0NTkyRjE5NDY0QjIwMDBGOUQ0QTIgLyogV0tFcnJvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGRDU0OEMxMzJEODI2ODAwNTVEODE2IC8qIFdLRXJyb3JD
Ri5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZjBlOGU0ZTNjOTEwYjc1
MGUwMzI2NGRmODk1MmYzNjI3OTJlYWFlMi4uOWJmYmM4MmUxOWFjYzRhOWMyNGQzYzc5NzgyOWFk
MmFlMTQ2ZDhlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTg0LDEwICsxODQsNiBAQCBwcml2
YXRlOgogCiAgICAgU2Vjb25kcyBldmVudFRocm90dGxpbmdEZWxheSgpIGZpbmFsOwogCi0gICAg
dm9pZCBhc3NvY2lhdGVFZGl0YWJsZUltYWdlV2l0aEF0dGFjaG1lbnQoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6RW1iZWRkZWRWaWV3SUQsIGNvbnN0IFN0cmluZyYgYXR0YWNobWVudElEKSBmaW5h
bDsKLSAgICB2b2lkIGRpZENyZWF0ZUVkaXRhYmxlSW1hZ2UoV2ViQ29yZTo6R3JhcGhpY3NMYXll
cjo6RW1iZWRkZWRWaWV3SUQpIGZpbmFsOwotICAgIHZvaWQgZGlkRGVzdHJveUVkaXRhYmxlSW1h
Z2UoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpIGZpbmFsOwotCiAgICAg
Ym9vbCBzaG91bGRVc2VNb3VzZUV2ZW50Rm9yU2VsZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlBsYXRm
b3JtTW91c2VFdmVudCYpIGZpbmFsOwogCiAgICAgYm9vbCBzaG93RGF0YURldGVjdG9yc1VJRm9y
RWxlbWVudChjb25zdCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6RXZlbnQmKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJvbWVDbGllbnRJT1MubW0KaW5kZXggZmVmYTVhNmU3OTM1
ZjVjMzViZWFiZWU1ODdmMzZmYTYzYzY3ZjY0ZC4uNDFlODFjMmJhY2U3NmJmNjk4YmE2NDg2NWNm
MjA3MjI4MGM5ZmI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJDaHJvbWVDbGllbnRJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJvbWVDbGllbnRJT1MubW0KQEAgLTI5
LDcgKzI5LDYgQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJEcmF3aW5n
QXJlYS5oIgotI2ltcG9ydCAiRWRpdGFibGVJbWFnZUNvbnRyb2xsZXJNZXNzYWdlcy5oIgogI2lt
cG9ydCAiSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCIKICNpbXBvcnQgIkludGVy
YWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgpAQCAtMTYx
LDM0ICsxNjAsNiBAQCBSZWZQdHI8SWNvbj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJY29uRm9y
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcwogICAgIHJldHVybiBJY29uOjpj
cmVhdGVJY29uRm9ySW1hZ2UoaWNvbkZvckZpbGUodXJsKS5nZXQoKS5DR0ltYWdlKTsKIH0KIAot
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OmFzc29jaWF0ZUVkaXRhYmxlSW1hZ2VXaXRoQXR0YWNobWVu
dChHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCwgY29uc3QgU3Ry
aW5nJiBhdHRhY2htZW50SUQpCi17Ci0jaWYgSEFWRShQRU5DSUxLSVQpCi0gICAgbV9wYWdlLnNl
bmQoTWVzc2FnZXM6OkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjpBc3NvY2lhdGVXaXRoQXR0YWNo
bWVudChlbWJlZGRlZFZpZXdJRCwgYXR0YWNobWVudElEKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShlbWJlZGRlZFZpZXdJRCk7Ci0gICAgVU5VU0VEX1BBUkFNKGF0dGFjaG1lbnRJRCk7Ci0j
ZW5kaWYKLX0KLQotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRpZENyZWF0ZUVkaXRhYmxlSW1hZ2Uo
R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQpCi17Ci0jaWYgSEFW
RShQRU5DSUxLSVQpCi0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OkVkaXRhYmxlSW1hZ2VDb250
cm9sbGVyOjpEaWRDcmVhdGVFZGl0YWJsZUltYWdlKGVtYmVkZGVkVmlld0lEKSk7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShlbWJlZGRlZFZpZXdJRCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OmRpZERlc3Ryb3lFZGl0YWJsZUltYWdlKEdyYXBoaWNzTGF5ZXI6OkVtYmVk
ZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEKQotewotI2lmIEhBVkUoUEVOQ0lMS0lUKQotICAgIG1f
cGFnZS5zZW5kKE1lc3NhZ2VzOjpFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6RGlkRGVzdHJveUVk
aXRhYmxlSW1hZ2UoZW1iZWRkZWRWaWV3SUQpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGVt
YmVkZGVkVmlld0lEKTsKLSNlbmRpZgotfQotCiBib29sIFdlYkNocm9tZUNsaWVudDo6c2hvdWxk
VXNlTW91c2VFdmVudEZvclNlbGVjdGlvbihjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2ZW50KQogewogICAgIC8vIEluIGlQYWRPUyBhbmQgbWFjQ2F0YWx5c3QsIGRlc3BpdGUg
Z2V0dGluZyBtb3VzZSBldmVudHMsIHdlIHN0aWxsIHdhbnQgVUlUZXh0SW50ZXJhY3Rpb24gYW5k
IGZyaWVuZHMgdG8gb3duIHNlbGVjdGlvbiBnZXN0dXJlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9HcmFwaGljc0xheWVyQ0FS
ZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHAKaW5kZXggOGMyMWQxNTNjMmU4NTE1OWFjNWRj
NjNhNTM5ZjNiZDBjNGI5YTA5Yy4uOTRhZThmZGY0NTM4MmRiNGEzYjA0NjA3YWY2NjBhYzJiYjYx
Y2VhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5j
cHAKQEAgLTY3LDExICs2Nyw2IEBAIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJD
QVJlbW90ZTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIqCiAgICAgcmV0dXJu
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlKHBsYXRmb3JtTGF5ZXIsIG93bmVyLCAqbV9j
b250ZXh0KTsKIH0KIAotUmVmPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBUmVtb3Rl
OjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXJGb3JFbWJlZGRlZFZpZXcoUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRl
ZFZpZXdJRCwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikKLXsKLSAgICByZXR1cm4gUGxh
dGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGVGb3JFbWJlZGRlZFZpZXcobGF5ZXJUeXBlLCBlbWJl
ZGRlZFZpZXdJRCwgb3duZXIsICptX2NvbnRleHQpOwotfQotCiBSZWY8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gR3JhcGhpY3NMYXllckNBUmVtb3RlOjpjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBs
YXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoKQogewogICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpjcmVhdGUodHlw
ZSwga2V5UGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvR3JhcGhpY3NMYXllckNBUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvR3JhcGhpY3NMYXllckNBUmVtb3Rl
LmgKaW5kZXggNWMxMTg4MTQ3MDYyYzM1OWRhNDBlMWQzOWQ1NjY4MzdjMWU4ZTVkOS4uMjM5Nzdm
MjM4ODQ3YjRhNzQxOTYwMzRkMmUzYWU0NmJjZTNiYTllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL0dyYXBoaWNzTGF5ZXJDQVJl
bW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9HcmFwaGljc0xheWVyQ0FSZW1vdGUuaApAQCAtNDcsNyArNDcsNiBAQCBwcml2YXRlOgog
CiAgICAgUmVmPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVy
KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBXZWJDb3JlOjpQbGF0Zm9ybUNB
TGF5ZXJDbGllbnQqIG93bmVyKSBvdmVycmlkZTsKICAgICBSZWY8V2ViQ29yZTo6UGxhdGZvcm1D
QUxheWVyPiBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1MYXllciosIFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpIG92ZXJyaWRlOwotICAgIFJlZjxXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllckZvckVtYmVkZGVkVmlldyhXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgR3JhcGhpY3NMYXllcjo6RW1iZWRkZWRW
aWV3SUQsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpIG92ZXJyaWRlOwog
ICAgIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVQbGF0Zm9ybUNBQW5p
bWF0aW9uKFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUsIGNvbnN0
IFN0cmluZyYga2V5UGF0aCkgb3ZlcnJpZGU7CiAKICAgICAvLyBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUgY2FuJ3QgY3VycmVudGx5IHByb3h5IGRpcmVjdGx5IGNvbXBvc2l0ZWQgaW1hZ2UgY29udGVu
dHMsIHNvIG9wdCBvdXQgb2YgdGhpcyBvcHRpbWl6YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDU5YjdmNTE1YzQ3NGJkNWM2NjZh
NmZhMjljZWQ5MmM3ZjEyNmE0N2MuLmE1OTE3MTliZGE5MGEzOWNkYTQwYmE0MTk4OWVkYTJkNGUw
NjMwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
Y3BwCkBAIC02MywxMyArNjMsNiBAQCBSZWY8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShQbGF0Zm9ybUxheWVyICpwbGF0Zm9ybQogICAgIHJldHVy
biBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNyZWF0ZShwbGF0Zm9ybUxheWVyLCBvd25l
ciwgY29udGV4dCk7CiB9CiAKLVJlZjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6Y3JlYXRlRm9yRW1iZWRkZWRWaWV3KExheWVyVHlwZSBsYXllclR5cGUsIEdy
YXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lELCBQbGF0Zm9ybUNBTGF5
ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KQotewotICAg
IFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IGxheWVyID0gYWRvcHRSZWYobmV3IFBsYXRm
b3JtQ0FMYXllclJlbW90ZShsYXllclR5cGUsIGVtYmVkZGVkVmlld0lELCBvd25lciwgY29udGV4
dCkpOwotICAgIGNvbnRleHQubGF5ZXJEaWRFbnRlckNvbnRleHQoKmxheWVyLCBsYXllclR5cGUp
OwotICAgIHJldHVybiBsYXllci5yZWxlYXNlTm9uTnVsbCgpOwotfQotCiBSZWY8UGxhdGZvcm1D
QUxheWVyUmVtb3RlPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShjb25zdCBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUmIG90aGVyLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93
bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KQogewogICAgIGF1dG8gbGF5ZXIg
PSBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FMYXllclJlbW90ZShvdGhlciwgb3duZXIsIGNvbnRl
eHQpKTsKQEAgLTg5LDEyICs4Miw2IEBAIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6UGxhdGZvcm1D
QUxheWVyUmVtb3RlKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllCiAgICAgfQog
fQogCi1QbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OlBsYXRmb3JtQ0FMYXllclJlbW90ZShMYXllclR5
cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJ
RCwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYg
Y29udGV4dCkKLSAgICA6IFBsYXRmb3JtQ0FMYXllclJlbW90ZShsYXllclR5cGUsIG93bmVyLCBj
b250ZXh0KQotewotICAgIG1fZW1iZWRkZWRWaWV3SUQgPSBlbWJlZGRlZFZpZXdJRDsKLX0KLQog
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUoY29uc3QgUGxhdGZv
cm1DQUxheWVyUmVtb3RlJiBvdGhlciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVt
b3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKICAgICA6IFBsYXRmb3JtQ0FMYXllcihvdGhl
ci5sYXllclR5cGUoKSwgb3duZXIpCiAgICAgLCBtX2FjY2VsZXJhdGVzRHJhd2luZyhvdGhlci5h
Y2NlbGVyYXRlc0RyYXdpbmcoKSkKQEAgLTg4MSwxMSArODY4LDYgQEAgdm9pZCBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OnNldEV2ZW50UmVnaW9uKGNvbnN0IFdlYkNvcmU6OkV2ZW50UmVnaW9uJiBl
dmVudFJlZ2kKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpFdmVudFJlZ2lvbkNoYW5nZWQpOwogfQogCi1HcmFwaGljc0xh
eWVyOjpFbWJlZGRlZFZpZXdJRCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVtYmVkZGVkVmlld0lE
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9lbWJlZGRlZFZpZXdJRDsKLX0KLQogUmVmPFBsYXRm
b3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGVDb21wYXRpYmxlTGF5ZXIo
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQqIGNsaWVudCkgY29uc3QKIHsKICAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpj
cmVhdGUobGF5ZXJUeXBlLCBjbGllbnQsICptX2NvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCmluZGV4IDA4MzE5NTUzNWZhZWZkMThkODk5OTgw
YjU2YjhjZTNhOWM0YzhmZGIuLjBjMGEwODJiZThmOWI4YmM3NWYwMzhiMDdlNzVkOTlhOTNlYTI2
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKQEAg
LTQyLDcgKzQyLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1DQUxheWVyUmVt
b3RlPiBjcmVhdGUoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNsaWVudCosIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmKTsKICAgICBz
dGF0aWMgUmVmPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXIgKiwg
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYp
OwogICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBjcmVhdGUoY29uc3QgUGxh
dGZvcm1DQUxheWVyUmVtb3RlJiwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiwgUmVt
b3RlTGF5ZXJUcmVlQ29udGV4dCYpOwotICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1DQUxheWVyUmVt
b3RlPiBjcmVhdGVGb3JFbWJlZGRlZFZpZXcoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGUsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lELCBXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDbGllbnQqLCBSZW1vdGVMYXllclRyZWVDb250ZXh0Jik7CiAKICAgICB2
aXJ0dWFsIH5QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUoKTsKIApAQCAtMTc2LDggKzE3NSw2IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0RXZlbnRSZWdpb24oY29uc3QgV2ViQ29yZTo6RXZlbnRSZWdp
b24mKSBvdmVycmlkZTsKIAotICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmll
d0lEIGVtYmVkZGVkVmlld0lEKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICBXZWJDb3JlOjpUaWxl
ZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KIAog
ICAgIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IGNsb25lKFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllckNsaWVudCogb3duZXIpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMjAzLDcgKzIwMCw2IEBA
IHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZShXZWJDb3Jl
OjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xp
ZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYpOwotICAgIFBsYXRmb3JtQ0FMYXll
clJlbW90ZShXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVu
dCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmKTsKICAgICBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGUoY29uc3QgUGxhdGZvcm1DQUxheWVyUmVtb3RlJiwgV2ViQ29yZTo6UGxhdGZvcm1DQUxh
eWVyQ2xpZW50KiwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYpOwogCiAgICAgdm9pZCB1cGRhdGVD
bG9uZWRMYXllclByb3BlcnRpZXMoUGxhdGZvcm1DQUxheWVyUmVtb3RlJiBjbG9uZSwgYm9vbCBj
b3B5Q29udGVudHMgPSB0cnVlKSBjb25zdDsKQEAgLTIyNCw4ICsyMjAsNiBAQCBwcml2YXRlOgog
ICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZSogbV9tYXNrTGF5ZXIgeyBudWxscHRyIH07CiAgICAg
SGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uPj4gbV9h
bmltYXRpb25zOwogCi0gICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQg
bV9lbWJlZGRlZFZpZXdJRDsKLQogICAgIGJvb2wgbV9hY2NlbGVyYXRlc0RyYXdpbmcgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV93YW50c0RlZXBDb2xvckJhY2tpbmdTdG9yZSB7IGZhbHNlIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVDb250ZXh0Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNvbnRleHQubW0KaW5kZXgg
ZjQyNWQxMTYxOTM1ZjQwM2MwYzFhNGI2YWFlYTdkNWQ4MzU3NTkwNS4uNTIyMDU1ZTJkOTU2N2M2
ZGUzMTY4NzM1YWIzODdiMDZmYWQ1NzBkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNvbnRleHQubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZUNvbnRleHQubW0KQEAgLTkyLDcgKzkyLDYgQEAgdm9pZCBSZW1vdGVMYXll
clRyZWVDb250ZXh0OjpsYXllckRpZEVudGVyQ29udGV4dChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUm
IGxheWVyLAogICAgIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJv
cGVydGllcyBjcmVhdGlvblByb3BlcnRpZXM7CiAgICAgY3JlYXRpb25Qcm9wZXJ0aWVzLmxheWVy
SUQgPSBsYXllcklEOwogICAgIGNyZWF0aW9uUHJvcGVydGllcy50eXBlID0gdHlwZTsKLSAgICBj
cmVhdGlvblByb3BlcnRpZXMuZW1iZWRkZWRWaWV3SUQgPSBsYXllci5lbWJlZGRlZFZpZXdJRCgp
OwogCiAgICAgaWYgKGxheWVyLmlzUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKCkpIHsKICAg
ICAgICAgY3JlYXRpb25Qcm9wZXJ0aWVzLmhvc3RpbmdDb250ZXh0SUQgPSBsYXllci5ob3N0aW5n
Q29udGV4dElEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
aW5kZXggMTI4ZWJkNTNlZmNhYzI4ODgxZWE0MzM2MDBlNzIzYjFlZmE2MDg1Yi4uMzQzZGQxZTRh
YjRmY2I1NTMzZjhmZTA1NTVmM2QwNzM2Njg0ZGZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNzM1LDcgKzczNSw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIHVwZGF0ZVNlbGVjdGlvbkFwcGVhcmFuY2UoKTsKICAgICB2b2lkIGdldFNlbGVjdGlvbkNv
bnRleHQoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlm
aWVyPiwgdWludDY0X3QgcmVxdWVzdElEKTsKLSAgICB2b2lkIGhhbmRsZVN0eWx1c1NpbmdsZVRh
cEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50NjRfdCByZXF1ZXN0SUQpOwog
ICAgIHZvaWQgZ2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29y
ZTo6VGV4dEdyYW51bGFyaXR5LCBpbnQzMl90LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFJl
Y3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90LCBjb25zdCBTdHJpbmcmLCBDYWxs
YmFja0lEKTsKICAgICB2b2lkIHN0b3JlU2VsZWN0aW9uRm9yQWNjZXNzaWJpbGl0eShib29sKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCmluZGV4IGIyYWE2MWUzNGM0ZjRhZTQ5NDIzMzhjYjI5YmQ0Y2IzNzQ3YmQ3NTkuLmZi
NWZiMGNhYzU4YWNkODdhZDUyZDlmOTc0YzQ1ZTgxYjQyMGI2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMTA3
LDcgKzEwNyw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEdl
dFNlbGVjdGlvbkNvbnRleHQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2V0
QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGJvb2wgYWxsb3dzKQogICAgIEhhbmRs
ZVR3b0ZpbmdlclRhcEF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIE9wdGlvblNldDxX
ZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4gbW9kaWZpZXJzLCB1aW50NjRfdCByZXF1ZXN0SUQp
Ci0gICAgSGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2lu
dCwgdWludDY0X3QgcmVxdWVzdElEKQogICAgIFNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGJv
b2wgdXNlclNjYWxhYmxlKQogICAgIEdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9u
T2Zmc2V0KGVudW06dWludDhfdCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHks
IGludDMyX3Qgb2Zmc2V0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRS
ZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIFN0cmluZyB0ZXh0
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggZjIxMmY4NzFhMmJiN2Yz
YjQ1M2ZiYTE2NWUwOTU4NWYzY2JmOTgwZS4uZTRhZGUxNWJkMzE5ZGE1YTQ5NjJmMzRmNzQzZTlh
ZWFjYzdjYjJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KQEAgLTExMDgsMzggKzExMDgsNiBAQCB2b2lkIFdlYlBhZ2U6Omhh
bmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBP
cHRpb25TZQogICAgIGNvbXBsZXRlU3ludGhldGljQ2xpY2soKm5vZGVSZXNwb25kaW5nVG9DbGlj
aywgYWRqdXN0ZWRQb2ludCwgbW9kaWZpZXJzLCBXZWJDb3JlOjpUd29GaW5nZXJUYXApOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvaW50LCB1aW50NjRfdCByZXF1ZXN0SUQpCi17Ci0gICAgU2V0Rm9yU2Nv
cGU8Ym9vbD4gdXNlcklzSW50ZXJhY3RpbmdDaGFuZ2UgeyBtX3VzZXJJc0ludGVyYWN0aW5nLCB0
cnVlIH07Ci0KLSAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9j
dXNlZE9yTWFpbkZyYW1lKCk7Ci0KLSAgICBhdXRvIHBvaW50SW5Eb2N1bWVudCA9IGZyYW1lLnZp
ZXcoKS0+cm9vdFZpZXdUb0NvbnRlbnRzKHBvaW50KTsKLSAgICBjb25zdGV4cHIgT3B0aW9uU2V0
PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpS
ZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Vmlz
aWJsZUNoaWxkRnJhbWVDb250ZW50T25seSB9OwotICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdCA9
IGZyYW1lLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50SW5Eb2N1bWVu
dCwgaGl0VHlwZSk7Ci0KLSAgICBOb2RlKiBub2RlID0gaGl0VGVzdC5pbm5lck5vblNoYXJlZE5v
ZGUoKTsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRvIHJlbmRlcmVy
ID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAocmVuZGVyZXItPmlzUmVwbGFjZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgYXV0byBwb3NpdGlvbiA9IHJlbmRlcmVyLT5wb3NpdGlvbkZvclBvaW50KGhpdFRlc3QubG9j
YWxQb2ludCgpLCBudWxscHRyKTsKLSAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCi0gICAgICAg
IHBvc2l0aW9uID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpOwotICAgIGF1dG8g
cmFuZ2UgPSBtYWtlU2ltcGxlUmFuZ2UocG9zaXRpb24pOwotICAgIGlmICghcmFuZ2UpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoKnJh
bmdlLCBwb3NpdGlvbi5hZmZpbml0eSgpLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxk
Q2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7Ci0gICAgYXV0byBpbWFnZSA9IGZyYW1l
LmVkaXRvcigpLmluc2VydEVkaXRhYmxlSW1hZ2UoKTsKLSAgICBmcmFtZS5kb2N1bWVudCgpLT5z
ZXRGb2N1c2VkRWxlbWVudChpbWFnZS5nZXQoKSk7Ci19Ci0KIHZvaWQgV2ViUGFnZTo6cG90ZW50
aWFsVGFwQXRQb3NpdGlvbih1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmIHBvc2l0aW9uLCBib29sIHNob3VsZFJlcXVlc3RNYWduaWZpY2F0aW9uSW5mb3JtYXRp
b24pCiB7CiAgICAgbV9wb3RlbnRpYWxUYXBOb2RlID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ub2Rl
UmVzcG9uZGluZ1RvQ2xpY2tFdmVudHMocG9zaXRpb24sIG1fcG90ZW50aWFsVGFwTG9jYXRpb24s
IG1fcG90ZW50aWFsVGFwU2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwpAQCAtMjU0Miw4ICsyNTEwLDYg
QEAgc3RhdGljIGlubGluZSBib29sIGlzQXNzaXN0YWJsZUVsZW1lbnQoRWxlbWVudCYgZWxlbWVu
dCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+
KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoaXM8SFRNTEltYWdlRWxl
bWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkuaGFz
RWRpdGFibGVJbWFnZUF0dHJpYnV0ZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAo
aXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkpIHsKICAgICAgICAgSFRNTElucHV0RWxlbWVu
dCYgaW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCk7CiAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGxhdW5kcnkgbGlzdCBvZiB0eXBlcyBpcyBub3QgYSBnb29k
IHdheSB0byBmYWN0b3IgdGhpcy4gTmVlZCBhIHN1aXRhYmxlIGZ1bmN0aW9uIG9uIEhUTUxJbnB1
dEVsZW1lbnQgaXRzZWxmLgpAQCAtMzIxOCw5ICszMTg0LDYgQEAgdm9pZCBXZWJQYWdlOjpnZXRG
b2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mIGluZm9y
bWF0aW8KICAgICAgICAgaW5mb3JtYXRpb24udmFsdWUgPSBlbGVtZW50LnZhbHVlKCk7CiAgICAg
ICAgIGluZm9ybWF0aW9uLnZhbHVlQXNOdW1iZXIgPSBlbGVtZW50LnZhbHVlQXNOdW1iZXIoKTsK
ICAgICAgICAgaW5mb3JtYXRpb24uYXV0b2ZpbGxGaWVsZE5hbWUgPSBXZWJDb3JlOjp0b0F1dG9m
aWxsRmllbGROYW1lKGVsZW1lbnQuYXV0b2ZpbGxEYXRhKCkuZmllbGROYW1lKTsKLSAgICB9IGVs
c2UgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KCpmb2N1c2VkRWxlbWVudCkgJiYgZG93bmNhc3Q8
SFRNTEltYWdlRWxlbWVudD4oKmZvY3VzZWRFbGVtZW50KS5oYXNFZGl0YWJsZUltYWdlQXR0cmli
dXRlKCkpIHsKLSAgICAgICAgaW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPSBJbnB1dFR5cGU6OkRy
YXdpbmc7Ci0gICAgICAgIGluZm9ybWF0aW9uLmVtYmVkZGVkVmlld0lEID0gZG93bmNhc3Q8SFRN
TEltYWdlRWxlbWVudD4oKmZvY3VzZWRFbGVtZW50KS5lZGl0YWJsZUltYWdlVmlld0lEKCk7CiAg
ICAgfSBlbHNlIGlmIChmb2N1c2VkRWxlbWVudC0+aGFzRWRpdGFibGVTdHlsZSgpKSB7CiAgICAg
ICAgIGluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID0gSW5wdXRUeXBlOjpDb250ZW50RWRpdGFibGU7
CiAgICAgICAgIGlmIChpczxIVE1MRWxlbWVudD4oKmZvY3VzZWRFbGVtZW50KSkgewpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY3MzlhMzdjMjAy
NGMyZWUyNmU5NTM2YzEwOTE5NWExZTE4MmRjNzguLjgyNDAyOTVhNDViYTFkMmFjZWExODc0NGVj
Yjc3ZjQyM2E0NzdkZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAyMC0wOC0zMCAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdW51c2VkIGVkaXRhYmxlIGlt
YWdlIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNTk5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250
cm9sbGVyLmlkbDoKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9V
SVNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpk
cmF3U3F1YXJlSW5FZGl0YWJsZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VUlTY3Jp
cHRDb250cm9sbGVyOjpudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UpOiBEZWxldGVkLgor
ICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvc3BpL1BlbmNpbEtpdFRlc3RTUEkuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
QXR0YWNobWVudFRlc3RzLm1tOgorICAgICAgICAod2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50
cyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpmb3JFYWNoVmlld0luSGllcmFyY2h5KTogRGVs
ZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmZpbmRFZGl0YWJsZUltYWdlQ2FudmFzKTog
RGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRyYXdTcXVhcmVJbkVkaXRhYmxlSW1h
Z2UpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL1BlbmNpbEtpdFRlc3RT
UEkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdUUjo6dXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhlYWRlcik6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oOgorICAgICAgICAoV1RSOjpU
ZXN0T3B0aW9uczo6aGFzU2FtZUluaXRpYWxpemF0aW9uT3B0aW9ucyBjb25zdCk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNv
Y29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJW
aWV3KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJ
T1MuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJ
T1MubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6ZmluZEVkaXRhYmxl
SW1hZ2VDYW52YXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRy
b2xsZXJJT1M6OmRyYXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAo
V1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6Om51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFn
ZSk6IERlbGV0ZWQuCisKIDIwMjAtMDgtMjggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgU2l0ZXMgYnVpbHQgd2l0aCBmbGFtYmUuanMgZG9uJ3Qgd29y
ayB3aXRoIHRyYWNrcGFkIG9uIGlQYWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFy
ZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwgYi9Ub29s
cy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRy
b2xsZXIuaWRsCmluZGV4IDg0NmE2NDBlNjU5YWQ1MzkxYjZmNzBiYzU0NjY3NjczYzQ5YmIwM2Mu
LjFkNTMwYzI4ZjM3ZDg3MzQzOGQzYzY0OWZkODE2YWFiNTg2ZDMwOTggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29u
dHJvbGxlci5pZGwKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQv
QmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbApAQCAtMzQ3LDkgKzM0Nyw2IEBAIGludGVy
ZmFjZSBVSVNjcmlwdENvbnRyb2xsZXIgewogCiAgICAgb2JqZWN0IGF0dGFjaG1lbnRJbmZvKERP
TVN0cmluZyBhdHRhY2htZW50SWRlbnRpZmllcik7CiAKLSAgICAvLyBFZGl0aW5nCi0gICAgdW5k
ZWZpbmVkIGRyYXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2UoKTsKLSAgICByZWFkb25seSBhdHRyaWJ1
dGUgbG9uZyBudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2U7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyBsYXN0VW5kb0xhYmVsOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgZmlyc3RSZWRvTGFiZWw7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmggYi9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAppbmRleCAy
NjUyNzUwMWZmYTVkMzk5MTEyNzcwODI5MDkzMWY5ZTgxMjE4M2Y1Li42YmQ4MWY0Y2FjZWJjMmQ0
NjFjNjQwMTEyYzk5MTRmNzMzZjM4ZTMwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hh
cmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaApAQCAtMjY2
LDExICsyNjYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNpbXVsYXRlUm90YXRpb24o
RGV2aWNlT3JpZW50YXRpb24qLCBKU1ZhbHVlUmVmKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2ltdWxhdGVSb3RhdGlvbkxpa2VTYWZhcmkoRGV2aWNlT3JpZW50YXRp
b24qLCBKU1ZhbHVlUmVmKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KIAotICAgIC8vIEVkaXRhYmxl
IEltYWdlcwotCi0gICAgdmlydHVhbCB2b2lkIGRyYXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2UoKSB7
IG5vdEltcGxlbWVudGVkKCk7IH0KLSAgICB2aXJ0dWFsIGxvbmcgbnVtYmVyT2ZTdHJva2VzSW5F
ZGl0YWJsZUltYWdlKCkgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gMDsgfQotCiAgICAgLy8g
VW5kby9SZWRvCiAKICAgICB2aXJ0dWFsIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBsYXN0VW5k
b0xhYmVsKCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gbnVsbHB0cjsgfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9zcGkvUGVuY2lsS2l0VGVzdFNQSS5oIGIv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9zcGkvUGVuY2lsS2l0VGVzdFNQSS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1ZTk4ZDllZjFkOWQ0MDQxNWVkMjRjYTA3OTI1NWM2M2ZiZTM4
OTk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xz
L1Rlc3RSdW5uZXJTaGFyZWQvc3BpL1BlbmNpbEtpdFRlc3RTUEkuaAorKysgL2Rldi9udWxsCkBA
IC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDx3dGYvUGxhdGZvcm0uaD4KLQot
I2lmIEhBVkUoUEVOQ0lMS0lUKQotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotI2lt
cG9ydCA8UGVuY2lsS2l0L1BlbmNpbEtpdC5oPgotCi0jaW1wb3J0IDxQZW5jaWxLaXQvUEtEcmF3
aW5nX1ByaXZhdGUuaD4KLSNpbXBvcnQgPFBlbmNpbEtpdC9QS0lua19Qcml2YXRlLmg+Ci0jaW1w
b3J0IDxQZW5jaWxLaXQvUEtTdHJva2VfUHJpdmF0ZS5oPgotCi0jZWxzZQotCi10eXBlZGVmIE5T
SW50ZWdlciBQS0lua1R5cGU7Ci0KLUBpbnRlcmZhY2UgUEtJbmsgOiBOU09iamVjdAotKyAoUEtJ
bmsgKilpbmtXaXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKil0eXBlIGNvbG9yOihVSUNvbG9yICop
Y29sb3Igd2VpZ2h0OihDR0Zsb2F0KXdlaWdodDsKLUBlbmQKLQotQGludGVyZmFjZSBQS1N0cm9r
ZSA6IE5TT2JqZWN0Ci0tIChpZClfaW5pdFdpdGhQYXRoOihDR1BhdGhSZWYpcGF0aCBpbms6KFBL
SW5rICopaW5rIGlucHV0U2NhbGU6KENHRmxvYXQpaW5wdXRTY2FsZTsKLUBlbmQKLQotQGludGVy
ZmFjZSBQS0RyYXdpbmcgOiBOU09iamVjdAotLSAoUEtTdHJva2UgKilfYWRkU3Ryb2tlOihQS1N0
cm9rZSAqKXN0cm9rZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheTxQ
S1N0cm9rZSAqPiAqX2FsbFN0cm9rZXM7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgUEtDYW52YXNWaWV3
IDogVUlWaWV3Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgUEtEcmF3aW5nICpkcmF3aW5n
OwotQGVuZAotCi0jZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotI2VuZGlmIC8v
IEhBVkUoUEVOQ0lMS0lUKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNjEzODFjMjU4MTg0
YzUzZmUzMWI5ZmYwNWU2ZGNmN2I3NzlhMTc1Li5kZTVmYzRlNWRkM2MwMWYyZjMxNWE1MWVjOWY3
NGYyYzlkMjU1ZjA5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgxNiw3ICsxODE2LDYg
QEAKIAkJMkQ0Q0Y4QkMxRDgzNjBDQzAwMDFDRThEIC8qIFdLVGh1bWJuYWlsVmlldy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVGh1bWJuYWlsVmlldy5tbTsg
cGF0aCA9IFdlYktpdC9XS1RodW1ibmFpbFZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJENTFBMEM1MUM4QkYwMDQwMDc2NUM0NSAvKiBET01IVE1MVmlkZW9FbGVtZW50V3Jh
cHBlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxW
aWRlb0VsZW1lbnRXcmFwcGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDUy
MDYzNDI0NUE2MDNDMDAzMzhGODggLyogVmlld0V4cG9zZWRSZWN0Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlld0V4cG9zZWRSZWN0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkyRDYxRUMzMDIxQjBCNzVDMDBBN0QxQ0IgLyogUGVuY2lsS2l0
VGVzdFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZW5jaWxLaXRUZXN0U1BJLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJENjQwQjU0MTc4NzVERkYwMEJGQUY5OSAvKiBTY3JvbGxQaW5u
aW5nQmVoYXZpb3JzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNj
cm9sbFBpbm5pbmdCZWhhdmlvcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
RDcwMDU5NTIxRURBMEM2MDAzNDYzQ0IgLyogVGFiT3V0T2ZXZWJWaWV3Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGFiT3V0T2ZXZWJWaWV3Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRDcwMDU5NzIxRURBNEQwMDAzNDYzQ0IgLyogT2Zmc2Ny
ZWVuV2luZG93Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gT2Zm
c2NyZWVuV2luZG93Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQxNyw3ICsz
NDE2LDYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUY0RDRGM0I0MUU0RTJCQ0IwMEJCMjc2NyAv
KiBEcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbSAqLywKIAkJCQkyRTc3NjVDQzE2QzREODBBMDBC
QTJCQjEgLyogbWFpbklPUy5tbSAqLywKLQkJCQkyRDYxRUMzMDIxQjBCNzVDMDBBN0QxQ0IgLyog
UGVuY2lsS2l0VGVzdFNQSS5oICovLAogCQkJCUY0OEQ2QzBGMjI0QjM3NzAwMEUzRTJGQiAvKiBQ
cmVmZXJyZWRDb250ZW50TW9kZS5tbSAqLywKIAkJCQlGNDUxN0I2NTIwNTRDNDk1MDBDMjY3MjEg
LyogVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIuaCAqLywKIAkJCQlGNDUxN0I2NjIwNTRDNDk1MDBD
MjY3MjEgLyogVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIubW0gKi8sCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5t
bQppbmRleCA4NDBmNDVmZjgwZWZkMzcyZTc3ZWZmOWYwMWE5YWZjMTRmNjAyOTI0Li4zYjNmNmRl
ZDFhODQ4OWFhYWY5ZGIwNWMxNDczNjM2MTM4YmQzYTAxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0K
QEAgLTI5LDcgKzI5LDYgQEAKIAogI2ltcG9ydCAiRHJhZ0FuZERyb3BTaW11bGF0b3IuaCIKICNp
bXBvcnQgIk5TSXRlbVByb3ZpZGVyQWRkaXRpb25zLmgiCi0jaW1wb3J0ICJQZW5jaWxLaXRUZXN0
U1BJLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdE5hdmln
YXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgpAQCAtMjAxLDcgKzIw
MCw2IEBAIHN0YXRpYyBOU1N0cmluZyAqYXR0YWNobWVudEVkaXRpbmdUZXN0TWFya3VwID0gQCI8
bWV0YSBuYW1lPSd2aWV3cG9ydCcgY29udGVudD0nCiBzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dl
YlZpZXc+IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoQ0dTaXplIHdlYlZpZXdTaXplLCBX
S1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uKQogewogICAgIGNvbmZpZ3VyYXRp
b24uX2F0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCA9IFlFUzsKLSAgICBjb25maWd1cmF0aW9uLl9l
ZGl0YWJsZUltYWdlc0VuYWJsZWQgPSBZRVM7CiAgICAgV0tQcmVmZXJlbmNlc1NldEN1c3RvbVBh
c3RlYm9hcmREYXRhRW5hYmxlZCgoX19icmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilbY29uZmlndXJh
dGlvbiBwcmVmZXJlbmNlc10sIFlFUyk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHdlYlZp
ZXdTaXplLndpZHRoLCB3ZWJWaWV3U2l6ZS5oZWlnaHQpIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbl0pOwpAQCAtMjIyNiw3NiArMjIyNCw2IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHNJT1Ms
IENvcHlBdHRhY2htZW50VXNpbmdFbGVtZW50QWN0aW9uKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CiB9CiAKLSNpZiBIQVZFKFBFTkNJTEtJVCkKLXN0YXRpYyBCT09MIGZv
ckVhY2hWaWV3SW5IaWVyYXJjaHkoVUlWaWV3ICp2aWV3LCB2b2lkKF5tYXBGdW5jdGlvbikoVUlW
aWV3ICpzdWJ2aWV3LCBCT09MICpzdG9wKSkKLXsKLSAgICBCT09MIHN0b3AgPSBOTzsKLSAgICBt
YXBGdW5jdGlvbih2aWV3LCAmc3RvcCk7Ci0gICAgaWYgKHN0b3ApCi0gICAgICAgIHJldHVybiBZ
RVM7Ci0KLSAgICBmb3IgKFVJVmlldyAqc3VidmlldyBpbiB2aWV3LnN1YnZpZXdzKSB7Ci0gICAg
ICAgIHN0b3AgPSBmb3JFYWNoVmlld0luSGllcmFyY2h5KHN1YnZpZXcsIG1hcEZ1bmN0aW9uKTsK
LSAgICAgICAgaWYgKHN0b3ApCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJu
IHN0b3A7Ci19Ci0KLXN0YXRpYyBQS0NhbnZhc1ZpZXcgKmZpbmRFZGl0YWJsZUltYWdlQ2FudmFz
KFdLV2ViVmlldyAqd2ViVmlldykKLXsKLSAgICBDbGFzcyBwa0NhbnZhc1ZpZXdDbGFzcyA9IE5T
Q2xhc3NGcm9tU3RyaW5nKEAiUEtDYW52YXNWaWV3Iik7Ci0gICAgX19ibG9jayBQS0NhbnZhc1Zp
ZXcgKmNhbnZhc1ZpZXcgPSBuaWw7Ci0gICAgZm9yRWFjaFZpZXdJbkhpZXJhcmNoeSh3ZWJWaWV3
LndpbmRvdywgXihVSVZpZXcgKnN1YnZpZXcsIEJPT0wgKnN0b3ApIHsKLSAgICAgICAgaWYgKCFb
c3VidmlldyBpc0tpbmRPZkNsYXNzOnBrQ2FudmFzVmlld0NsYXNzXSkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBjYW52YXNWaWV3ID0gKFBLQ2FudmFzVmlldyAqKXN1YnZpZXc7Ci0g
ICAgICAgICpzdG9wID0gWUVTOwotICAgIH0pOwotICAgIHJldHVybiBjYW52YXNWaWV3OwotfQot
Ci1zdGF0aWMgdm9pZCBkcmF3U3F1YXJlSW5FZGl0YWJsZUltYWdlKFdLV2ViVmlldyAqd2ViVmll
dykKLXsKLSAgICBDbGFzcyBwa0RyYXdpbmdDbGFzcyA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAiUEtE
cmF3aW5nIik7Ci0gICAgQ2xhc3MgcGtJbmtDbGFzcyA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAiUEtJ
bmsiKTsKLSAgICBDbGFzcyBwa1N0cm9rZUNsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJQS1N0
cm9rZSIpOwotCi0gICAgUEtDYW52YXNWaWV3ICpjYW52YXNWaWV3ID0gZmluZEVkaXRhYmxlSW1h
Z2VDYW52YXMod2ViVmlldyk7Ci0gICAgUmV0YWluUHRyPFBLRHJhd2luZz4gZHJhd2luZyA9IGNh
bnZhc1ZpZXcuZHJhd2luZyA/OiBhZG9wdE5TKFtbcGtEcmF3aW5nQ2xhc3MgYWxsb2NdIGluaXRd
KTsKLSAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiBwYXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVX
aXRoUmVjdChDR1JlY3RNYWtlKDAsIDAsIDUwLCA1MCksIE5VTEwpKTsKLSAgICBSZXRhaW5QdHI8
UEtJbms+IGluayA9IFtwa0lua0NsYXNzIGlua1dpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLmlu
ay5wZW4iIGNvbG9yOlVJQ29sb3IuZ3JlZW5Db2xvciB3ZWlnaHQ6MTAwLjBdOwotICAgIFJldGFp
blB0cjxQS1N0cm9rZT4gc3Ryb2tlID0gYWRvcHROUyhbW3BrU3Ryb2tlQ2xhc3MgYWxsb2NdIF9p
bml0V2l0aFBhdGg6cGF0aC5nZXQoKSBpbms6aW5rLmdldCgpIGlucHV0U2NhbGU6MV0pOwotICAg
IFtkcmF3aW5nIF9hZGRTdHJva2U6c3Ryb2tlLmdldCgpXTsKLQotICAgIFtjYW52YXNWaWV3IHNl
dERyYXdpbmc6ZHJhd2luZy5nZXQoKV07Ci19Ci0KLVRFU1QoV0tBdHRhY2htZW50VGVzdHNJT1Ms
IEVkaXRhYmxlSW1hZ2VBdHRhY2htZW50RGF0YUludmFsaWRhdGlvbikKLXsKLSAgICBhdXRvIHdl
YlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7Ci0KLSAgICBSZXRhaW5QdHI8
X1dLQXR0YWNobWVudD4gYXR0YWNobWVudDsKLQotICAgIHsKLSAgICAgICAgT2JzZXJ2ZUF0dGFj
aG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Ci0gICAgICAgIEVY
UEVDVF9UUlVFKFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiSW5z
ZXJ0RWRpdGFibGVJbWFnZSIgYXJndW1lbnQ6bmlsXSk7Ci0gICAgICAgIEVYUEVDVF9FUShvYnNl
cnZlci5vYnNlcnZlcigpLmluc2VydGVkLmNvdW50LCAxTFUpOwotICAgICAgICBhdHRhY2htZW50
ID0gb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRlZC5maXJzdE9iamVjdDsKLSAgICB9Ci0KLSAg
ICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07Ci0KLSAgICB7Ci0gICAg
ICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0
KCkpOwotICAgICAgICBkcmF3U3F1YXJlSW5FZGl0YWJsZUltYWdlKHdlYlZpZXcuZ2V0KCkpOwot
ICAgICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50SW52YWxpZGF0aW9uKEBbIGF0dGFjaG1l
bnQuZ2V0KCkgXSk7Ci0gICAgfQotfQotCi0jZW5kaWYgLy8gSEFWRShQRU5DSUxLSVQpCi0KICNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QZW5jaWxLaXRUZXN0U1BJ
LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QZW5jaWxLaXRUZXN0U1BJLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0YTQ0Mzk1NzliYzE4OGJiMjUxYWU5ODJmNjA4OTE4Yjlm
NmE1ZGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9pb3MvUGVuY2lsS2l0VGVzdFNQSS5oCisrKyAvZGV2L251bGwKQEAg
LTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPHd0Zi9QbGF0Zm9ybS5oPgotCi0j
aWYgSEFWRShQRU5DSUxLSVQpCi0KLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotCi0jaW1w
b3J0IDxQZW5jaWxLaXQvUGVuY2lsS2l0Lmg+Ci0KLSNpbXBvcnQgPFBlbmNpbEtpdC9QS0RyYXdp
bmdfUHJpdmF0ZS5oPgotI2ltcG9ydCA8UGVuY2lsS2l0L1BLSW5rX1ByaXZhdGUuaD4KLSNpbXBv
cnQgPFBlbmNpbEtpdC9QS1N0cm9rZV9Qcml2YXRlLmg+Ci0KLSNlbHNlCi0KLXR5cGVkZWYgTlNJ
bnRlZ2VyIFBLSW5rVHlwZTsKLQotQGludGVyZmFjZSBQS0luayA6IE5TT2JqZWN0Ci0rIChQS0lu
ayAqKWlua1dpdGhUeXBlOihQS0lua1R5cGUpdHlwZSBjb2xvcjooVUlDb2xvciAqKWNvbG9yIHdl
aWdodDooQ0dGbG9hdCl3ZWlnaHQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgUEtTdHJva2UgOiBOU09i
amVjdAotLSAoaWQpX2luaXRXaXRoUGF0aDooQ0dQYXRoUmVmKXBhdGggaW5rOihQS0luayAqKWlu
ayBpbnB1dFNjYWxlOihDR0Zsb2F0KWlucHV0U2NhbGU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgUEtE
cmF3aW5nIDogTlNPYmplY3QKLS0gKFBLU3Ryb2tlICopX2FkZFN0cm9rZTooUEtTdHJva2UgKilz
dHJva2U7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXk8UEtTdHJva2Ug
Kj4gKl9hbGxTdHJva2VzOwotQGVuZAotCi1AaW50ZXJmYWNlIFBLQ2FudmFzVmlldyA6IFVJVmll
dwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIFBLRHJhd2luZyAqZHJhd2luZzsKLUBlbmQK
LQotI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0KLSNlbmRpZiAvLyBIQVZFKFBF
TkNJTEtJVCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXgg
MWFjNzFmNzEyMjkzNWZkYTU3MWU1NDg1MTViMzRjYTM3ZTlkZDg0Ny4uMjEzZWZlMWZhMTEwYWIy
ZmY0YTIyMTM4YmMxNzk1NGQ0YTA4YzQxNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAKQEAgLTE1MzMsOCArMTUzMyw2IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVRl
c3RPcHRpb25zRnJvbVRlc3RIZWFkZXIoVGVzdE9wdGlvbnMmIHRlc3RPcHRpb25zLCBjb25zdCBz
dGQ6CiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy5zaG91bGRTaG93U3BlbGxDaGVja2luZ0RvdHMg
PSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwogICAgICAgICBlbHNlIGlmIChr
ZXkgPT0gImVuYWJsZVNlcnZpY2VDb250cm9scyIpCiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy5l
bmFibGVTZXJ2aWNlQ29udHJvbHMgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUp
OwotICAgICAgICBlbHNlIGlmIChrZXkgPT0gImVuYWJsZUVkaXRhYmxlSW1hZ2VzIikKLSAgICAg
ICAgICAgIHRlc3RPcHRpb25zLmVuYWJsZUVkaXRhYmxlSW1hZ2VzID0gcGFyc2VCb29sZWFuVGVz
dEhlYWRlclZhbHVlKHZhbHVlKTsKICAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlZGl0YWJsZSIp
CiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy5lZGl0YWJsZSA9IHBhcnNlQm9vbGVhblRlc3RIZWFk
ZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgKGtleSA9PSAic2hvdWxkSGFuZGxlUnVu
T3BlblBhbmVsIikKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlv
bnMuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaAppbmRleCAwZjg1ZDli
ODNlZGJjZmEwMmEyMjg4OWNjMjUxMDQ3YTk0MzlkMzFlLi44ZTBlODczZjY4ZmM5MWI0MTIyOWM2
MDljMzVhZmM3NjVlZmQwODAyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RPcHRpb25zLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oCkBA
IC05MSw3ICs5MSw2IEBAIHN0cnVjdCBUZXN0T3B0aW9ucyB7CiAgICAgYm9vbCBzaG91bGRJZ25v
cmVNZXRhVmlld3BvcnQgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkU2hvd1NwZWxsQ2hlY2tp
bmdEb3RzIHsgZmFsc2UgfTsKICAgICBib29sIGVuYWJsZVNlcnZpY2VDb250cm9scyB7IGZhbHNl
IH07Ci0gICAgYm9vbCBlbmFibGVFZGl0YWJsZUltYWdlcyB7IGZhbHNlIH07CiAgICAgYm9vbCBl
ZGl0YWJsZSB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRIYW5kbGVSdW5PcGVuUGFuZWwgeyB0
cnVlIH07CiAgICAgYm9vbCBzaG91bGRQcmVzZW50UG9wb3ZlcnMgeyB0cnVlIH07CkBAIC0xNTgs
NyArMTU3LDYgQEAgc3RydWN0IFRlc3RPcHRpb25zIHsKICAgICAgICAgICAgIHx8IHNob3VsZFNo
b3dTcGVsbENoZWNraW5nRG90cyAhPSBvcHRpb25zLnNob3VsZFNob3dTcGVsbENoZWNraW5nRG90
cwogICAgICAgICAgICAgfHwgZW5hYmxlU2VydmljZUNvbnRyb2xzICE9IG9wdGlvbnMuZW5hYmxl
U2VydmljZUNvbnRyb2xzCiAgICAgICAgICAgICB8fCBzaG91bGRJZ25vcmVNZXRhVmlld3BvcnQg
IT0gb3B0aW9ucy5zaG91bGRJZ25vcmVNZXRhVmlld3BvcnQKLSAgICAgICAgICAgIHx8IGVuYWJs
ZUVkaXRhYmxlSW1hZ2VzICE9IG9wdGlvbnMuZW5hYmxlRWRpdGFibGVJbWFnZXMKICAgICAgICAg
ICAgIHx8IGVkaXRhYmxlICE9IG9wdGlvbnMuZWRpdGFibGUKICAgICAgICAgICAgIHx8IHNob3Vs
ZEhhbmRsZVJ1bk9wZW5QYW5lbCAhPSBvcHRpb25zLnNob3VsZEhhbmRsZVJ1bk9wZW5QYW5lbAog
ICAgICAgICAgICAgfHwgc2hvdWxkUHJlc2VudFBvcG92ZXJzICE9IG9wdGlvbnMuc2hvdWxkUHJl
c2VudFBvcG92ZXJzCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRl
c3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUxMTlj
ZDNhNGYzMjIyZmRhZDI0NzI3NmI0OWNmODFlMzVhMTYyOTguLmU2NGM2NDA2NThjMmYxNzljMGJk
MmIwYWZkN2MwYzQxNzAwYTQyOTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
V2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yODAsNyArMjgwLDYgQEAKIAkJMkQwNThFMDgyMkUyRUUyMjAwRTRDMTQ1IC8qIFVJU2Ny
aXB0Q29udHJvbGxlckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVJ
U2NyaXB0Q29udHJvbGxlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJE
MDU4RTBBMjJFMkVGNkQwMEU0QzE0NSAvKiBVSVNjcmlwdENvbnRyb2xsZXJNYWMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVUlTY3JpcHRDb250cm9sbGVyTWFjLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMEJFRTE3MjJFQUQxMzYwMDkyQjczOCAvKiBVSVNj
cmlwdENvbnRyb2xsZXJJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVUlTY3JpcHRDb250cm9sbGVySU9T
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJEMEZGMTRBMjE5MkM3ODMwMEM5NzVE
NiAvKiBQZW5jaWxLaXRUZXN0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBlbmNpbEtpdFRlc3RTUEku
aDsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFyZWQvc3BpL1BlbmNpbEtpdFRlc3RTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRCNjE4N0QxRDdENThENDAwOTc4RDE5IC8qIENv
cmVHcmFwaGljc1Rlc3RTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29y
ZUdyYXBoaWNzVGVzdFNQSS5oOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9zcGkvQ29yZUdy
YXBoaWNzVGVzdFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRENFMkNEMTFC
ODQ1MjQ1MDBDN0Y4MzIgLyogVGVzdENvbnRyb2xsZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRlc3RDb250cm9sbGVyQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERDRDNDk4MUQ2RTdEM0IwMDA3Mzc5QyAvKiBFdmVudFNl
cmlhbGl6ZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRXZlbnRTZXJp
YWxpemVyTWFjLmg7IHBhdGggPSBtYWMvRXZlbnRTZXJpYWxpemVyTWFjLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02NDIsNyArNjQxLDYgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJMkRCNjE4N0QxRDdENThENDAwOTc4RDE5IC8qIENvcmVHcmFw
aGljc1Rlc3RTUEkuaCAqLywKLQkJCQkyRDBGRjE0QTIxOTJDNzgzMDBDOTc1RDYgLyogUGVuY2ls
S2l0VGVzdFNQSS5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBzcGk7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29u
dHJvbGxlckNvY29hLm1tCmluZGV4IGY3NTg3NjY5ZmZlYThjNzRkN2JkNjAzZDdhYjIyYmI4ZTQ4
OTc5ZDkuLjNlNTFmMjk2ZWRhMTNmZmFlNWM2ZjgxNjU1ZDEyY2JiYTkzNWZjODIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0K
QEAgLTE2Myw5ICsxNjMsNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdl
YlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdAogICAgIGlmIChvcHRp
b25zLmVuYWJsZUNvbG9yRmlsdGVyKQogICAgICAgICBbY29waWVkQ29uZmlndXJhdGlvbiBfc2V0
Q29sb3JGaWx0ZXJFbmFibGVkOllFU107CiAKLSAgICBpZiAob3B0aW9ucy5lbmFibGVFZGl0YWJs
ZUltYWdlcykKLSAgICAgICAgW2NvcGllZENvbmZpZ3VyYXRpb24gX3NldEVkaXRhYmxlSW1hZ2Vz
RW5hYmxlZDpZRVNdOwotCiAgICAgW2NvcGllZENvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFT
dG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopd2Vic2l0ZURhdGFTdG9yZSgpXTsKIAogICAgIFtj
b3BpZWRDb25maWd1cmF0aW9uIF9zZXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzOm9wdGlv
bnMuYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMc107CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5oCmluZGV4IDE3YmFhOGZkMTQ4MzE2
ZjkzYzBlNzBmNmY2ZTg2MjNlMjBhMjI0NjAuLjI4ZDA2MGM2ZGZjNDcxYTkwNTQ5MDY4Mzk1YzNk
NDBmNmE5YzA5NmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2Ny
aXB0Q29udHJvbGxlcklPUy5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2Ny
aXB0Q29udHJvbGxlcklPUy5oCkBAIC0zMCwxMCArMzAsNiBAQAogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAotI2lmIEhBVkUoUEVOQ0lMS0lUKQotQGNsYXNzIFBLQ2FudmFzVmlldzsKLSNl
bmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRmxv
YXRSZWN0OwpAQCAtMTMyLDggKzEyOCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBsZXRlQmFj
a1N3aXBlKEpTVmFsdWVSZWYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNTaG93aW5nRGF0YUxpc3RT
dWdnZXN0aW9ucygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgYWN0aXZhdGVEYXRhTGlzdFN1
Z2dlc3Rpb24odW5zaWduZWQsIEpTVmFsdWVSZWYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1Nx
dWFyZUluRWRpdGFibGVJbWFnZSgpIG92ZXJyaWRlOwotICAgIGxvbmcgbnVtYmVyT2ZTdHJva2Vz
SW5FZGl0YWJsZUltYWdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRLZXlib2FyZElucHV0TW9k
ZUlkZW50aWZpZXIoSlNTdHJpbmdSZWYpIG92ZXJyaWRlOwogICAgIHZvaWQgdG9nZ2xlQ2Fwc0xv
Y2soSlNWYWx1ZVJlZikgb3ZlcnJpZGU7CiAgICAgYm9vbCBrZXlib2FyZElzQXV0b21hdGljYWxs
eVNoaWZ0ZWQoKSBjb25zdCBvdmVycmlkZTsKQEAgLTE2Nyw5ICsxNjEsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgd2FpdEZvclNpbmdsZVRhcFRvUmVzZXQoKSBjb25zdDsKICAgICBXZWJDb3JlOjpG
bG9hdFJlY3QgcmVjdEZvck1lbnVBY3Rpb24oQ0ZTdHJpbmdSZWYpIGNvbnN0OwogICAgIHZvaWQg
c2luZ2xlVGFwQXRQb2ludFdpdGhNb2RpZmllcnMoV2ViQ29yZTo6RmxvYXRQb2ludCBsb2NhdGlv
biwgVmVjdG9yPFN0cmluZz4mJiBtb2RpZmllckZsYWdzLCBCbG9ja1B0cjx2b2lkKCk+JiYpOwot
I2lmIEhBVkUoUEVOQ0lMS0lUKQotICAgIFBLQ2FudmFzVmlldyAqZmluZEVkaXRhYmxlSW1hZ2VD
YW52YXMoKSBjb25zdDsKLSNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IDJiYThmMjM2ZjA3M2Q0
ZjVjOTk3Y2I5MjA1NjQ2YjA0NTYyYzg0ZGYuLjEzMGM0OTdjMjQwZDgzOGJiNGFmZmZkMjA3MzE0
MTc1YTgzZGJiMjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2Ny
aXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNj
cmlwdENvbnRyb2xsZXJJT1MubW0KQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogCiAjaW1wb3J0ICJISURFdmVudEdlbmVyYXRvci5oIgotI2ltcG9ydCAiUGVuY2ls
S2l0VGVzdFNQSS5oIgogI2ltcG9ydCAiUGxhdGZvcm1WaWV3SGVscGVycy5oIgogI2ltcG9ydCAi
UGxhdGZvcm1XZWJWaWV3LmgiCiAjaW1wb3J0ICJTdHJpbmdGdW5jdGlvbnMuaCIKQEAgLTExNTYs
NTIgKzExNTUsNiBAQCBib29sIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6aXNTaG93aW5nRGF0YUxp
c3RTdWdnZXN0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIGZvdW5kRGF0YUxpc3RTdWdnZXN0aW9u
c1BpY2tlclZpZXc7CiB9CiAKLSNpZiBIQVZFKFBFTkNJTEtJVCkKLQotUEtDYW52YXNWaWV3ICpV
SVNjcmlwdENvbnRyb2xsZXJJT1M6OmZpbmRFZGl0YWJsZUltYWdlQ2FudmFzKCkgY29uc3QKLXsK
LSAgICBDbGFzcyBwa0NhbnZhc1ZpZXdDbGFzcyA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAiUEtDYW52
YXNWaWV3Iik7Ci0gICAgX19ibG9jayBQS0NhbnZhc1ZpZXcgKmNhbnZhc1ZpZXcgPSBuaWw7Ci0g
ICAgZm9yRWFjaFZpZXdJbkhpZXJhcmNoeSh3ZWJWaWV3KCkud2luZG93LCBeKFVJVmlldyAqc3Vi
dmlldywgQk9PTCAqc3RvcCkgewotICAgICAgICBpZiAoIVtzdWJ2aWV3IGlzS2luZE9mQ2xhc3M6
cGtDYW52YXNWaWV3Q2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNhbnZh
c1ZpZXcgPSAoUEtDYW52YXNWaWV3ICopc3VidmlldzsKLSAgICAgICAgKnN0b3AgPSBZRVM7Ci0g
ICAgfSk7Ci0gICAgcmV0dXJuIGNhbnZhc1ZpZXc7Ci19Ci0KLSNlbmRpZiAvLyBIQVZFKFBFTkNJ
TEtJVCkKLQotdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OmRyYXdTcXVhcmVJbkVkaXRhYmxl
SW1hZ2UoKQotewotI2lmIEhBVkUoUEVOQ0lMS0lUKQotICAgIENsYXNzIHBrRHJhd2luZ0NsYXNz
ID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJQS0RyYXdpbmciKTsKLSAgICBDbGFzcyBwa0lua0NsYXNz
ID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJQS0luayIpOwotICAgIENsYXNzIHBrU3Ryb2tlQ2xhc3Mg
PSBOU0NsYXNzRnJvbVN0cmluZyhAIlBLU3Ryb2tlIik7Ci0KLSAgICBQS0NhbnZhc1ZpZXcgKmNh
bnZhc1ZpZXcgPSBmaW5kRWRpdGFibGVJbWFnZUNhbnZhcygpOwotICAgIFJldGFpblB0cjxQS0Ry
YXdpbmc+IGRyYXdpbmcgPSBjYW52YXNWaWV3LmRyYXdpbmcgPzogYWRvcHROUyhbW3BrRHJhd2lu
Z0NsYXNzIGFsbG9jXSBpbml0XSk7Ci0gICAgUmV0YWluUHRyPENHUGF0aFJlZj4gcGF0aCA9IGFk
b3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJlY3QoQ0dSZWN0TWFrZSgwLCAwLCA1MCwgNTApLCBOVUxM
KSk7Ci0gICAgUmV0YWluUHRyPFBLSW5rPiBpbmsgPSBbcGtJbmtDbGFzcyBpbmtXaXRoSWRlbnRp
ZmllcjpAImNvbS5hcHBsZS5pbmsucGVuIiBjb2xvcjpVSUNvbG9yLmdyZWVuQ29sb3Igd2VpZ2h0
OjEwMC4wXTsKLSAgICBSZXRhaW5QdHI8UEtTdHJva2U+IHN0cm9rZSA9IGFkb3B0TlMoW1twa1N0
cm9rZUNsYXNzIGFsbG9jXSBfaW5pdFdpdGhQYXRoOnBhdGguZ2V0KCkgaW5rOmluay5nZXQoKSBp
bnB1dFNjYWxlOjFdKTsKLSAgICBbZHJhd2luZyBfYWRkU3Ryb2tlOnN0cm9rZS5nZXQoKV07Ci0K
LSAgICBbY2FudmFzVmlldyBzZXREcmF3aW5nOmRyYXdpbmcuZ2V0KCldOwotI2VuZGlmCi19Ci0K
LWxvbmcgVUlTY3JpcHRDb250cm9sbGVySU9TOjpudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1h
Z2UoKQotewotI2lmIEhBVkUoUEVOQ0lMS0lUKQotICAgIFBLQ2FudmFzVmlldyAqY2FudmFzVmll
dyA9IGZpbmRFZGl0YWJsZUltYWdlQ2FudmFzKCk7Ci0gICAgcmV0dXJuIGNhbnZhc1ZpZXcuZHJh
d2luZy5fYWxsU3Ryb2tlcy5jb3VudDsKLSNlbHNlCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0K
LQogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNldEtleWJvYXJkSW5wdXRNb2RlSWRlbnRp
ZmllcihKU1N0cmluZ1JlZiBpZGVudGlmaWVyKQogewogICAgIFRlc3RDb250cm9sbGVyOjpzaW5n
bGV0b24oKS5zZXRLZXlib2FyZElucHV0TW9kZUlkZW50aWZpZXIodG9XVEZTdHJpbmcodG9XSyhp
ZGVudGlmaWVyKSkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDkzMzIwZTMzZmFmZjhhNjI5MDg2YWUyOWNkZjEyY2E1NzM5
NzdlNzguLmU3ZWI4MjU4ZjI4NGRkZGRlMTliYmQ3NzczMTdlMDE0YTNmYmQyYjQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMCBAQAorMjAyMC0wOC0zMCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFw
cGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdW51c2VkIGVkaXRhYmxlIGltYWdlIGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTk5MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZWRpdGluZy9p
bWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIGVkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLWZyb20tZXhlY0NvbW1hbmQt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGVkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVk
aXRhYmxlLWltYWdlLWZyb20tZXhlY0NvbW1hbmQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBl
ZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1pbWFnZS13aXRoLWdlc3R1cmUtZXhwZWN0ZWQu
dHh0OiBSZW1vdmVkLgorICAgICAgICAqIGVkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWlt
YWdlLXdpdGgtZ2VzdHVyZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGVkaXRpbmcvaW1hZ2Vz
L2Jhc2ljLWVkaXRhYmxlLWltYWdlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZWRpdGluZy9p
bWFnZXMvZWRpdGFibGUtaW1hZ2UtY3JlYXRlcy1hdHRhY2htZW50LWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL2ltYWdlcy9lZGl0YWJsZS1pbWFnZS1jcmVhdGVzLWF0
dGFjaG1lbnQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL2ltYWdlcy9wYXN0ZS1l
ZGl0YWJsZS1pbWFnZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZWRpdGluZy9p
bWFnZXMvcGFzdGUtZWRpdGFibGUtaW1hZ2UuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBlZGl0
aW5nL2ltYWdlcy9yZWRvLWluc2VydC1lZGl0YWJsZS1pbWFnZS1tYWludGFpbnMtc3Ryb2tlcy1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZWRpdGluZy9pbWFnZXMvcmVkby1pbnNl
cnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9rZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL2ltYWdlcy9yZXBhcmVudC1lZGl0YWJsZS1pbWFnZS1tYWludGFpbnMtc3Ry
b2tlcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZWRpdGluZy9pbWFnZXMvcmVw
YXJlbnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9rZXMuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBlZGl0aW5nL2ltYWdlcy91bmRvLWluc2VydC1lZGl0YWJsZS1pbWFnZS1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZWRpdGluZy9pbWFnZXMvdW5kby1pbnNlcnQtZWRp
dGFibGUtaW1hZ2UuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiByZXNvdXJjZXMvdWktaGVscGVy
LmpzOgorICAgICAgICAod2luZG93LlVJSGVscGVyLmRyYXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAod2luZG93LlVJSGVscGVyLm51bWJlck9mU3Ryb2tlc0luRWRp
dGFibGVJbWFnZSk6IERlbGV0ZWQuCisKIDIwMjAtMDgtMzAgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBVbnJldmlld2VkIHRl
c3QgZ2FyZGVuaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9iYXNp
Yy1lZGl0YWJsZS1pbWFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdl
cy9iYXNpYy1lZGl0YWJsZS1pbWFnZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDY0MjRiZjFkODQyMTZiMmIzM2IzNDI4YmI5MjQ3ZjJlYmEzNTg2YTQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMyArMCwwIEBACi1IYWQgMCBzdHJva2VzIGluIGVkaXRhYmxlIGltYWdlIGJlZm9y
ZSBkcmF3aW5nLgotSGFkIDEgc3Ryb2tlIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRyYXdpbmcu
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxl
LWltYWdlLWZyb20tZXhlY0NvbW1hbmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UtZnJvbS1leGVjQ29tbWFuZC1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxMDExNTlhZDBiZjlkN2QxNjMxYjMy
M2FmNWI5OGFlYTViNDQ2NjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2Ut
ZnJvbS1leGVjQ29tbWFuZC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAg
QEAKLQotSGFkIDAgc3Ryb2tlcyBpbiBlZGl0YWJsZSBpbWFnZSBiZWZvcmUgZHJhd2luZy4KLUhh
ZCAxIHN0cm9rZSBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciBkcmF3aW5nLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UtZnJvbS1leGVj
Q29tbWFuZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUt
aW1hZ2UtZnJvbS1leGVjQ29tbWFuZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0MGVhYWM4OTU1ODkxMjVlYTAyZjIyYzMyMjE4MzUyMmQxNDNkMDJmLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1h
Z2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLWZyb20tZXhlY0NvbW1hbmQuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDIzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVu
bmVyIFsgZW5hYmxlRWRpdGFibGVJbWFnZXM9dHJ1ZSBdIC0tPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWFkZEV2ZW50TGlzdGVuZXIoImxvYWQi
LCBhc3luYyAoKSA9PiB7Ci0gICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGRv
Y3VtZW50LmJvZHksIDApOwotICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRFZGl0YWJs
ZUltYWdlIik7Ci0gICAgY29uc3QgaW5pdGlhbE51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFn
ZSA9IChhd2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7Ci0g
ICAgYXdhaXQgVUlIZWxwZXIuZHJhd1NxdWFyZUluRWRpdGFibGVJbWFnZSgpOwotICAgIGNvbnN0
IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyRHJhd2luZyA9IChhd2FpdCBVSUhl
bHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7Ci0gICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCA9IGBIYWQgJHtpbml0aWFsTnVtYmVyT2ZTdHJv
a2VzSW5FZGl0YWJsZUltYWdlfSBzdHJva2VzIGluIGVkaXRhYmxlIGltYWdlIGJlZm9yZSBkcmF3
aW5nLjxici8+SGFkICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJEcmF3aW5n
fSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJhd2luZy5gOwotICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGNvbnRlbnRl
ZGl0YWJsZT4KLTxkaXYgaWQ9ImxvZyI+PC9kaXY+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1pbWFnZS13aXRoLWdlc3R1cmUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUt
aW1hZ2Utd2l0aC1nZXN0dXJlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOTEwMTE1OWFkMGJmOWQ3ZDE2MzFiMzIzYWY1Yjk4YWVhNWI0NDY2NC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1pbWFnZS13aXRoLWdlc3R1cmUtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLUhhZCAwIHN0cm9rZXMgaW4gZWRpdGFibGUg
aW1hZ2UgYmVmb3JlIGRyYXdpbmcuCi1IYWQgMSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0
ZXIgZHJhd2luZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2lj
LWVkaXRhYmxlLWltYWdlLXdpdGgtZ2VzdHVyZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9p
bWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2Utd2l0aC1nZXN0dXJlLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDcwYzE2ZWMzZDQyYjc4YzY1NjVkZmUxNjIzNWUxMmI0OGZlNWE5
MGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2Utd2l0aC1nZXN0dXJlLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD48IS0tIHdl
YmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUVkaXRhYmxlSW1hZ2VzPXRydWUgXSAtLT4KLTxoZWFk
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1hZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IFVJSGVscGVyLnN0eWx1c1Rh
cEF0KDAsIDApOwotICAgIGNvbnN0IGluaXRpYWxOdW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1h
Z2UgPSAoYXdhaXQgVUlIZWxwZXIubnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlKCkpOwot
ICAgIGF3YWl0IFVJSGVscGVyLmRyYXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2UoKTsKLSAgICBjb25z
dCBudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRlckRyYXdpbmcgPSAoYXdhaXQgVUlI
ZWxwZXIubnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlKCkpOwotICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgPSBgSGFkICR7aW5pdGlhbE51bWJlck9mU3Ry
b2tlc0luRWRpdGFibGVJbWFnZX0gc3Ryb2tlcyBpbiBlZGl0YWJsZSBpbWFnZSBiZWZvcmUgZHJh
d2luZy48YnIvPkhhZCAke251bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyRHJhd2lu
Z30gc3Ryb2tlIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRyYXdpbmcuYDsKLSAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBjb250ZW50
ZWRpdGFibGU+Ci08ZGl2IGlkPSJsb2ciPjwvZGl2PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UuaHRtbCBiL0xheW91
dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2YmNhZjE2Y2NlYTMxYTFlMGQ1ZGVjZDIyOWZmOWJmOGY1
YjNkN2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDIyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3Qt
cnVubmVyIFsgZW5hYmxlRWRpdGFibGVJbWFnZXM9dHJ1ZSBdIC0tPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0g
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWFkZEV2ZW50TGlzdGVuZXIoImxv
YWQiLCBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgaW5pdGlhbE51bWJlck9mU3Ryb2tlc0luRWRp
dGFibGVJbWFnZSA9IChhd2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1h
Z2UoKSk7Ci0gICAgYXdhaXQgVUlIZWxwZXIuZHJhd1NxdWFyZUluRWRpdGFibGVJbWFnZSgpOwot
ICAgIGNvbnN0IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyRHJhd2luZyA9IChh
d2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7Ci0gICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCA9IGBIYWQgJHtpbml0aWFsTnVt
YmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlfSBzdHJva2VzIGluIGVkaXRhYmxlIGltYWdlIGJl
Zm9yZSBkcmF3aW5nLjxici8+SGFkICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0
ZXJEcmF3aW5nfSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJhd2luZy5gOwotICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotPGRpdiBpZD0ibG9nIj48L2Rpdj4KLTxpbWcgeC1hcHBsZS1lZGl0YWJsZS1pbWFnZT0idHJ1
ZSIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9pbWFnZXMvZWRpdGFibGUtaW1hZ2UtY3JlYXRlcy1hdHRhY2htZW50LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2VkaXRhYmxlLWltYWdlLWNy
ZWF0ZXMtYXR0YWNobWVudC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDllYjRhOTZiMWUxMTMyYjk1ODlkNThlMmRkY2EzMWIyOTY2MmY0ZjguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9p
bWFnZXMvZWRpdGFibGUtaW1hZ2UtY3JlYXRlcy1hdHRhY2htZW50LWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotSGFzIGF0dGFjaG1lbnQgaW5zaWRlIGVkaXRhYmxl
IGltYWdlOiB0cnVlLgotQXR0YWNobWVudCB0eXBlIGFmdGVyIGRyYXdpbmcgb24gZWRpdGFibGUg
aW1hZ2U6IGltYWdlL3BuZy4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFn
ZXMvZWRpdGFibGUtaW1hZ2UtY3JlYXRlcy1hdHRhY2htZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2ltYWdlcy9lZGl0YWJsZS1pbWFnZS1jcmVhdGVzLWF0dGFjaG1lbnQuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUxMmY0ZTJiOWFiZDMxNzI3ZDQ1MzVmYmM2NGFj
ZGRiNzIzNGQ3Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9lZGl0YWJsZS1pbWFnZS1jcmVhdGVzLWF0dGFj
aG1lbnQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlRWRpdGFibGVJbWFnZXM9dHJ1ZSBlbmFi
bGVBdHRhY2htZW50RWxlbWVudD10cnVlIF0gLS0+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGFzeW5j
ICgpID0+IHsKLSAgICBjb25zdCBhdHRhY2htZW50SWRlbnRpZmllciA9IEhUTUxBdHRhY2htZW50
RWxlbWVudC5nZXRBdHRhY2htZW50SWRlbnRpZmllcihkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJp
bWciKSk7Ci0gICAgY29uc3QgaGFzQXR0YWNobWVudCA9ICEhYXR0YWNobWVudElkZW50aWZpZXIu
bGVuZ3RoOwotICAgIGF3YWl0IFVJSGVscGVyLmRyYXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2UoKTsK
LSAgICBjb25zdCBhdHRhY2htZW50SW5mbyA9IChhd2FpdCBVSUhlbHBlci5hdHRhY2htZW50SW5m
byhhdHRhY2htZW50SWRlbnRpZmllcikpOwotICAgIGNvbnN0IGF0dGFjaG1lbnRUeXBlID0gYXR0
YWNobWVudEluZm8uY29udGVudFR5cGU7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxv
ZyIpLmlubmVySFRNTCA9IGBIYXMgYXR0YWNobWVudCBpbnNpZGUgZWRpdGFibGUgaW1hZ2U6ICR7
aGFzQXR0YWNobWVudH0uPGJyLz5BdHRhY2htZW50IHR5cGUgYWZ0ZXIgZHJhd2luZyBvbiBlZGl0
YWJsZSBpbWFnZTogJHthdHRhY2htZW50VHlwZX0uYDsKLSAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9ImxvZyI+PC9k
aXY+Ci08aW1nIHgtYXBwbGUtZWRpdGFibGUtaW1hZ2Ugd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAi
PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcGFzdGUt
ZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMv
cGFzdGUtZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMWRmODYxYjIwNzRhYTdkN2QyZjJmNTZjZjBjNzY3YTYzOWNlZTE1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRp
bmcvaW1hZ2VzL3Bhc3RlLWVkaXRhYmxlLWltYWdlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDYgKzAsMCBAQAotSGFkIDEgc3Ryb2tlIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRy
YXdpbmcuCi1IYWQgMSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgY29weWluZyBhbmQg
cGFzdGluZy4KLUhhZCAyIHN0cm9rZXMgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJhd2luZyBv
biBwYXN0ZWQgaW1hZ2UuCi1QYXN0ZWQgaW1hZ2UgZ290IGEgbmV3IGF0dGFjaG1lbnQgSUQ6IHll
cy4KLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9wYXN0ZS1lZGl0
YWJsZS1pbWFnZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcGFzdGUtZWRpdGFi
bGUtaW1hZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmMyNjZkZWEzMzhj
ZjBhMzZkNTRiOGFhODRkNmI5NGFkNDM2YjllYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9wYXN0ZS1lZGl0
YWJsZS1pbWFnZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVFZGl0YWJsZUltYWdlcz10cnVl
IGVuYWJsZUF0dGFjaG1lbnRFbGVtZW50PXRydWUgXSAtLT4KLTxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3
aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwg
YXN5bmMgKCkgPT4gewotICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
ZXN0Iik7Ci0KLSAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Ci0K
LSAgICBzZWxlY3Rpb24uc2V0UG9zaXRpb24oZGl2LCAwKTsKLSAgICB0ZXN0UnVubmVyLmV4ZWND
b21tYW5kKCJJbnNlcnRFZGl0YWJsZUltYWdlIik7Ci0KLSAgICBhd2FpdCBVSUhlbHBlci5kcmF3
U3F1YXJlSW5FZGl0YWJsZUltYWdlKCk7Ci0gICAgY29uc3QgbnVtYmVyT2ZTdHJva2VzSW5FZGl0
YWJsZUltYWdlQWZ0ZXJEcmF3aW5nID0gKGF3YWl0IFVJSGVscGVyLm51bWJlck9mU3Ryb2tlc0lu
RWRpdGFibGVJbWFnZSgpKTsKLSAgICBjb25zdCBmaXJzdEltYWdlID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigiaW1nIik7Ci0gICAgY29uc3QgaW5pdGlhbEF0dGFjaG1lbnRJRCA9IEhUTUxBdHRh
Y2htZW50RWxlbWVudC5nZXRBdHRhY2htZW50SWRlbnRpZmllcihmaXJzdEltYWdlKTsKLQotICAg
IC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGNhbnZhcyBnZXRzIGEgbm9uLXplcm8g
c2l6ZSBiZWZvcmUgdHJ5aW5nIHRvIHNlcmlhbGl6ZSBpdC4KLSAgICBhd2FpdCBVSUhlbHBlci5l
bnN1cmVQcmVzZW50YXRpb25VcGRhdGUoKTsKLQotICAgIHNlbGVjdGlvbi5zZXRCYXNlQW5kRXh0
ZW50KGRpdi5maXJzdENoaWxkLCAwLCBkaXYuZmlyc3RDaGlsZCwgMSk7Ci0gICAgdGVzdFJ1bm5l
ci5leGVjQ29tbWFuZCgiQ29weSIpOwotCi0gICAgc2VsZWN0aW9uLmNvbGxhcHNlVG9FbmQoKTsK
LSAgICB0ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCJQYXN0ZSIpOwotCi0gICAgZmlyc3RJbWFnZS5w
YXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKGZpcnN0SW1hZ2UpOwotCi0gICAgY29uc3QgbnVtYmVy
T2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJQYXN0aW5nID0gKGF3YWl0IFVJSGVscGVyLm51
bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSgpKTsKLQotICAgIGF3YWl0IFVJSGVscGVyLmRy
YXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2UoKTsKLSAgICBjb25zdCBudW1iZXJPZlN0cm9rZXNJbkVk
aXRhYmxlSW1hZ2VBZnRlclNlY29uZERyYXdpbmcgPSAoYXdhaXQgVUlIZWxwZXIubnVtYmVyT2ZT
dHJva2VzSW5FZGl0YWJsZUltYWdlKCkpOwotICAgIGNvbnN0IHBhc3RlZEF0dGFjaG1lbnRJRCA9
IEhUTUxBdHRhY2htZW50RWxlbWVudC5nZXRBdHRhY2htZW50SWRlbnRpZmllcihkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCJpbWciKSk7Ci0KLSAgICBjb25zdCBhdHRhY2htZW50SURzQXJlRGlmZmVy
ZW50ID0gKGluaXRpYWxBdHRhY2htZW50SUQgIT0gcGFzdGVkQXR0YWNobWVudElEKSA/ICJ5ZXMi
IDogIm5vIjsKLQotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwg
PSBgSGFkICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJEcmF3aW5nfSBzdHJv
a2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJhd2luZy48YnIvPkhhZCAke251bWJlck9mU3Ry
b2tlc0luRWRpdGFibGVJbWFnZUFmdGVyUGFzdGluZ30gc3Ryb2tlIGluIGVkaXRhYmxlIGltYWdl
IGFmdGVyIGNvcHlpbmcgYW5kIHBhc3RpbmcuPGJyLz5IYWQgJHtudW1iZXJPZlN0cm9rZXNJbkVk
aXRhYmxlSW1hZ2VBZnRlclNlY29uZERyYXdpbmd9IHN0cm9rZXMgaW4gZWRpdGFibGUgaW1hZ2Ug
YWZ0ZXIgZHJhd2luZyBvbiBwYXN0ZWQgaW1hZ2UuPGJyLz5QYXN0ZWQgaW1hZ2UgZ290IGEgbmV3
IGF0dGFjaG1lbnQgSUQ6ICR7YXR0YWNobWVudElEc0FyZURpZmZlcmVudH0uYDsKLSAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBjb250
ZW50ZWRpdGFibGU+PGRpdiBpZD0ibG9nIj48YnIvPjwvZGl2PjxkaXYgaWQ9InRlc3QiPjxici8+
PC9kaXY+PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcmVk
by1pbnNlcnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9rZXMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcmVkby1pbnNlcnQtZWRpdGFibGUtaW1hZ2UtbWFp
bnRhaW5zLXN0cm9rZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA2YTczODYyYzYxMTM2NjRmZDllZWM0NDdmNDc0Y2I1ZjFjY2VjNDIyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1h
Z2VzL3JlZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLW1haW50YWlucy1zdHJva2VzLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotCi1IYWQgMCBzdHJva2VzIGluIGVk
aXRhYmxlIGltYWdlIGJlZm9yZSBkcmF3aW5nLgotSGFkIDEgc3Ryb2tlIGluIGVkaXRhYmxlIGlt
YWdlIGFmdGVyIGRyYXdpbmcuCi1IYWQgMCBzdHJva2VzIGluIGVkaXRhYmxlIGltYWdlIGFmdGVy
IHVuZG8uCi1IYWQgMSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgcmVkby4KLUhhZCAy
IHN0cm9rZXMgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJhd2luZyBhZ2Fpbi4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3JlZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdl
LW1haW50YWlucy1zdHJva2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9yZWRv
LWluc2VydC1lZGl0YWJsZS1pbWFnZS1tYWludGFpbnMtc3Ryb2tlcy5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2NjlhZGM0ODIzNzg5OTJkZDRhYzJlNWZkYzIwYjk5MGFiN2Jh
ZGM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3JlZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLW1haW50YWlu
cy1zdHJva2VzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUVkaXRhYmxlSW1hZ2VzPXRydWUg
XSAtLT4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQot
Ci1hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4gewotICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LCAwKTsKLSAgICBkb2N1bWVudC5l
eGVjQ29tbWFuZCgiSW5zZXJ0RWRpdGFibGVJbWFnZSIpOwotICAgIGNvbnN0IGluaXRpYWxOdW1i
ZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UgPSAoYXdhaXQgVUlIZWxwZXIubnVtYmVyT2ZTdHJv
a2VzSW5FZGl0YWJsZUltYWdlKCkpOwotICAgIGF3YWl0IFVJSGVscGVyLmRyYXdTcXVhcmVJbkVk
aXRhYmxlSW1hZ2UoKTsKLSAgICBjb25zdCBudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VB
ZnRlckRyYXdpbmcgPSAoYXdhaXQgVUlIZWxwZXIubnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUlt
YWdlKCkpOwotICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCd1bmRvJywgZmFsc2UsIG51bGwpOwot
ICAgIGNvbnN0IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyVW5kbyA9IChhd2Fp
dCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7Ci0gICAgZG9jdW1l
bnQuZXhlY0NvbW1hbmQoJ3JlZG8nLCBmYWxzZSwgbnVsbCk7Ci0gICAgY29uc3QgbnVtYmVyT2ZT
dHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJSZWRvID0gKGF3YWl0IFVJSGVscGVyLm51bWJlck9m
U3Ryb2tlc0luRWRpdGFibGVJbWFnZSgpKTsKLSAgICBhd2FpdCBVSUhlbHBlci5kcmF3U3F1YXJl
SW5FZGl0YWJsZUltYWdlKCk7Ci0gICAgY29uc3QgbnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUlt
YWdlQWZ0ZXJTZWNvbmREcmF3aW5nID0gKGF3YWl0IFVJSGVscGVyLm51bWJlck9mU3Ryb2tlc0lu
RWRpdGFibGVJbWFnZSgpKTsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5u
ZXJIVE1MID0gYEhhZCAke2luaXRpYWxOdW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2V9IHN0
cm9rZXMgaW4gZWRpdGFibGUgaW1hZ2UgYmVmb3JlIGRyYXdpbmcuPGJyLz5IYWQgJHtudW1iZXJP
ZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRlckRyYXdpbmd9IHN0cm9rZSBpbiBlZGl0YWJsZSBp
bWFnZSBhZnRlciBkcmF3aW5nLjxici8+SGFkICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUlt
YWdlQWZ0ZXJVbmRvfSBzdHJva2VzIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIHVuZG8uPGJyLz5I
YWQgJHtudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRlclJlZG99IHN0cm9rZSBpbiBl
ZGl0YWJsZSBpbWFnZSBhZnRlciByZWRvLjxici8+SGFkICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0
YWJsZUltYWdlQWZ0ZXJTZWNvbmREcmF3aW5nfSBzdHJva2VzIGluIGVkaXRhYmxlIGltYWdlIGFm
dGVyIGRyYXdpbmcgYWdhaW4uYDsKLSAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwot
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBjb250ZW50ZWRpdGFibGU+Ci08ZGl2IGlkPSJsb2ci
PjwvZGl2PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMv
cmVwYXJlbnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9rZXMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcmVwYXJlbnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRh
aW5zLXN0cm9rZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
OTY4N2ZkMzJhZDk0OWIyZjkxOWZmOTEyY2U4NWRhNmI0NjZiNzYxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2Vz
L3JlcGFyZW50LWVkaXRhYmxlLWltYWdlLW1haW50YWlucy1zdHJva2VzLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotSGFkIDEgc3Ryb2tlIGluIGVkaXRhYmxlIGlt
YWdlIGFmdGVyIGRyYXdpbmcuCi1IYWQgMSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIg
cmVwYXJlbnRpbmcgaXQgdW5kZXIgYW5vdGhlciBlbGVtZW50LgotIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcmVwYXJlbnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5z
LXN0cm9rZXMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3JlcGFyZW50LWVkaXRh
YmxlLWltYWdlLW1haW50YWlucy1zdHJva2VzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDFmZGYwMGYyY2VkOTJhNjBkMzJiNjk0NTNiOGRkNjI0NjM0NjAyMGEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9pbWFnZXMvcmVwYXJlbnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9rZXMuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0
LXRlc3QtcnVubmVyIFsgZW5hYmxlRWRpdGFibGVJbWFnZXM9dHJ1ZSBdIC0tPgotPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWFkZEV2ZW50TGlzdGVu
ZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgVUlIZWxwZXIuZHJhd1NxdWFyZUlu
RWRpdGFibGVJbWFnZSgpOwotICAgIGNvbnN0IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFn
ZUFmdGVyRHJhd2luZyA9IChhd2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxl
SW1hZ2UoKSk7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm90aGVyIikuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXRhYmxlSW1hZ2UiKSk7Ci0gICAgY29uc3Qg
bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJSZXBhcmVudGluZyA9IChhd2FpdCBV
SUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7Ci0KLSAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MID0gYEhhZCAke251bWJlck9mU3Ryb2tl
c0luRWRpdGFibGVJbWFnZUFmdGVyRHJhd2luZ30gc3Ryb2tlIGluIGVkaXRhYmxlIGltYWdlIGFm
dGVyIGRyYXdpbmcuPGJyLz5IYWQgJHtudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRl
clJlcGFyZW50aW5nfSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgcmVwYXJlbnRpbmcg
aXQgdW5kZXIgYW5vdGhlciBlbGVtZW50LmA7Ci0gICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci19KTsKLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2IGlkPSJsb2ciPjwvZGl2Pgot
PGltZyBpZD0iZWRpdGFibGVJbWFnZSIgeC1hcHBsZS1lZGl0YWJsZS1pbWFnZT0idHJ1ZSIgd2lk
dGg9IjMwMCIgaGVpZ2h0PSIzMDAiPgotPGRpdiBpZD0ib3RoZXIiPjwvZGl2PgotPC9ib2R5Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvdW5kby1pbnNlcnQtZWRpdGFi
bGUtaW1hZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvdW5kby1p
bnNlcnQtZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlZDI3MDhlMmJmZGNjZjA5ZmQ0NDczNzI5MDIyOTJlY2NkY2U3OWJlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRp
bmcvaW1hZ2VzL3VuZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVRoaXMgdGVzdCBpbnNlcnRzIGEgZWRpdGFibGUgaW1h
Z2UsIHBlcmZvcm1zIGFuIHVuZG8sIHRoZW4gYSByZWRvLCBlbnN1cmluZyB0aGF0IHRoZSBzZWxl
Y3Rpb24gcmVtYWlucyBhZnRlciB0aGUgaW1hZ2Ugd2hlbiByZS1kb25lLgotCi1iZWZvcmUgdW5k
bzoKLXwgIkhlbGxvLCB3b3JsZCEiCi18IDxpbWc+Ci18ICAgaGVpZ2h0PSIzMDBweCIKLXwgICBz
dHlsZT0iZGlzcGxheTogYmxvY2siCi18ICAgd2lkdGg9IjEwMCUiCi18ICAgeC1hcHBsZS1lZGl0
YWJsZS1pbWFnZT0iIgotfCAgIDxzaGFkb3c6cm9vdD4KLXwgICAgIDxhdHRhY2htZW50PgotfCAg
ICAgICBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyIKLXwgPCNzZWxlY3Rpb24tY2Fy
ZXQ+Ci0KLWFmdGVyIHVuZG86Ci18ICJIZWxsbywgd29ybGQhPCNzZWxlY3Rpb24tY2FyZXQ+Igot
Ci1hZnRlciByZWRvOgotfCAiSGVsbG8sIHdvcmxkISIKLXwgPGltZz4KLXwgICBoZWlnaHQ9IjMw
MHB4IgotfCAgIHN0eWxlPSJkaXNwbGF5OiBibG9jayIKLXwgICB3aWR0aD0iMTAwJSIKLXwgICB4
LWFwcGxlLWVkaXRhYmxlLWltYWdlPSIiCi18ICAgPHNoYWRvdzpyb290PgotfCAgICAgPGF0dGFj
aG1lbnQ+Ci18ICAgICAgIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IgotfCA8I3Nl
bGVjdGlvbi1jYXJldD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3Vu
ZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdl
cy91bmRvLWluc2VydC1lZGl0YWJsZS1pbWFnZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyYmYxNjU1MWMxNGQ1N2VkYjEzZjM2M2ZkMmM2YjRkYTYxYjJlN2NjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRp
bmcvaW1hZ2VzL3VuZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwyMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBb
IGVuYWJsZUVkaXRhYmxlSW1hZ2VzPXRydWUgXSAtLT4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGNvbnRlbnRlZGl0YWJsZT4KLTxkaXYgaWQ9InRlc3Qi
PkhlbGxvLCB3b3JsZCE8L2Rpdj4KLTxzY3JpcHQ+Ci1jb25zdCBkaXYgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGVzdCIpOwotCi13aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24o
ZGl2LCAxMyk7Ci1kb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0RWRpdGFibGVJbWFnZSIpOwot
Ci1NYXJrdXAuZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBpbnNlcnRzIGEgZWRpdGFibGUgaW1hZ2Us
IHBlcmZvcm1zIGFuIHVuZG8sIHRoZW4gYSByZWRvLCBlbnN1cmluZyB0aGF0IHRoZSBzZWxlY3Rp
b24gcmVtYWlucyBhZnRlciB0aGUgaW1hZ2Ugd2hlbiByZS1kb25lLiIpCi1NYXJrdXAuZHVtcChk
aXYsICJiZWZvcmUgdW5kbyIpOwotZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ3VuZG8nLCBmYWxzZSwg
bnVsbCk7Ci1NYXJrdXAuZHVtcChkaXYsICJhZnRlciB1bmRvIik7Ci1kb2N1bWVudC5leGVjQ29t
bWFuZCgncmVkbycsIGZhbHNlLCBudWxsKTsKLU1hcmt1cC5kdW1wKGRpdiwgImFmdGVyIHJlZG8i
KTsKLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2Vz
L3VpLWhlbHBlci5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKaW5kZXgg
ZDgxNGJkZWE1ZTRhMWMwMjdkYWMzOGM3NWExZTVjODk4NWRmNGE2YS4uYWY0MjRjYjQxYTkzNDU3
ZDM5NTQxMWZmNWU0YWEzNTg4Y2QzNWE3OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3Vy
Y2VzL3VpLWhlbHBlci5qcworKysgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpz
CkBAIC05NjYsMTQgKzk2Niw2IEBAIHdpbmRvdy5VSUhlbHBlciA9IGNsYXNzIFVJSGVscGVyIHsK
ICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIGRyYXdTcXVhcmVJbkVkaXRhYmxlSW1h
Z2UoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpKQotICAgICAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotCi0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYHVpQ29udHJvbGxlci5kcmF3U3F1YXJl
SW5FZGl0YWJsZUltYWdlKClgLCByZXNvbHZlKSk7Ci0gICAgfQotCiAgICAgc3RhdGljIHN0eWx1
c1RhcEF0KHgsIHksIG1vZGlmaWVycz1bXSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5pc1dl
YktpdDIoKSkKQEAgLTk4NywxOCArOTc5LDYgQEAgd2luZG93LlVJSGVscGVyID0gY2xhc3MgVUlI
ZWxwZXIgewogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgbnVtYmVyT2ZTdHJva2Vz
SW5FZGl0YWJsZUltYWdlKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSkK
LSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLQotICAgICAgICByZXR1cm4g
bmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2Ny
aXB0KGAoKCkgPT4gewotICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBs
ZXRlKHVpQ29udHJvbGxlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UpOwotICAgICAg
ICAgICAgfSkoKWAsIG51bWJlckFzU3RyaW5nID0+IHJlc29sdmUocGFyc2VJbnQobnVtYmVyQXNT
dHJpbmcsIDEwKSkpCi0gICAgICAgIH0pOwotICAgIH0KLQogICAgIHN0YXRpYyBhdHRhY2htZW50
SW5mbyhhdHRhY2htZW50SWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5pc1dl
YktpdDIoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407577</attachid>
            <date>2020-08-30 16:01:04 -0700</date>
            <delta_ts>2020-08-30 16:55:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215991-20200830160103.patch</filename>
            <type>text/plain</type>
            <size>212220</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU1ODAyYWQ5OTE4OTJi
MjhkMTc5ZjcyNWYxY2Y1ZGFlMjRiMTVjZi4uMjhmNDY4NzgwYjg5ZDVmNjY1ODY0ZWFhZjIyMTc4
YmY1ZGEwZWZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIwLTA4LTMwICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVz
ZWQgZWRpdGFibGUgaW1hZ2UgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE1OTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGVkaXRpbmcvRWRpdEFjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp1bmRvUmVkb0xhYmVsKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRBY3Rp
b24uaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6Omluc2VydEVkaXRhYmxlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIGVkaXRpbmcv
RWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUNvbW1hbmRNYXApOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUlu
c2VydEVkaXRhYmxlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZElu
UmljaGx5RWRpdGFibGVUZXh0V2l0aEVkaXRhYmxlSW1hZ2VzRW5hYmxlZCk6IERlbGV0ZWQuCisg
ICAgICAgICogZWRpdGluZy9JbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogZWRpdGluZy9JbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5oOiBSZW1vdmVk
LgorICAgICAgICAqIGVuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M6CisgICAgICAgICogaHRt
bC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2Vz
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5j
ZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6Y29weU5vbkF0dHJp
YnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VF
bGVtZW50OjpzdXBwb3J0c0ZvY3VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbWFnZUVsZW1lbnQ6OmlzRm9jdXNhYmxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmRpZEZpbmlzaEluc2VydGluZ05vZGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6aGFzRWRpdGFibGVJbWFn
ZUF0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VF
bGVtZW50OjplZGl0YWJsZUltYWdlVmlld0lEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnVwZGF0ZUVkaXRhYmxlSW1hZ2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6
IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICog
cGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6YXNz
b2NpYXRlRWRpdGFibGVJbWFnZVdpdGhBdHRhY2htZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudDo6ZGlkQ3JlYXRlRWRpdGFibGVJbWFnZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmRpZERlc3Ryb3lFZGl0YWJsZUltYWdlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0VkaXRhYmxlSW1hZ2VSZWZlcmVuY2UuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIHBhZ2UvRWRpdGFibGVJbWFnZVJlZmVyZW5jZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHBhZ2UvU2V0dGluZ3MueWFtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6Om5l
eHRFbWJlZGRlZFZpZXdJRCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0Q29u
dGVudHNUb1NvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0
Q29udGVudHNUb0VtYmVkZGVkVmlldyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyRm9yRW1iZWRkZWRWaWV3KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0VtYmVkZGVk
Vmlldyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmVtYmVkZGVkVmlld0lEIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2U6OmlzRWRpdGFibGVJbWFnZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cmVxdWlyZXNMYXllciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzaG91
bGRCZU5vcm1hbEZsb3dPbmx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpjYWxjdWxhdGVDbGlwUmVjdHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVx
dWlyZXNDb21wb3NpdGluZ0xheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNPd25CYWNraW5nU3RvcmUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWFzb25zRm9yQ29tcG9zaXRpbmcgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0Nv
bXBvc2l0aW5nRm9yRWRpdGFibGVJbWFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorCiAyMDIwLTA4LTI5ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJld3JpdGUgbWFpbiB0aHJl
YWQgc2Nyb2xsIGxhdGNoaW5nIGxvZ2ljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVlMjU3Zjg2Y2JmNjM1MTU0MzVh
NTZhYTg2OGI3NDkzOTE3ZjI0YWQuLmQ1YTBkZDE1NGM4MTU5NTBjNjEyYzBjMWUxZDcyZDY5MThm
NzAyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA0IEBACisyMDIwLTA4LTMwICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQgZWRp
dGFibGUgaW1hZ2UgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE1OTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9z
L1BlbmNpbEtpdFNQSS5oOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9Gb2N1c2VkRWxlbWVu
dEluZm9ybWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpk
cmF3SW5Db250ZXh0KToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzOjpMYXllckNyZWF0aW9u
UHJvcGVydGllcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpMYXllckNyZWF0aW9uUHJvcGVydGllczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorICAgICAgICAq
IFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0dXBQYWdlQ29uZmlndXJhdGlvbjpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06
CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gaW5pdF0pOgorICAgICAgICAoLVtX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGNvcHlXaXRoWm9uZTpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBfc2V0RWRpdGFibGVJbWFnZXNFbmFibGVkOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9lZGl0YWJsZUltYWdlc0VuYWJsZWRd
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb25Qcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
SU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3NldHVwU2Nyb2xsQW5kQ29udGVudFZpZXdzXSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfc3R5bHVzVGFwR2VzdHVyZVNob3VsZENyZWF0ZUVkaXRhYmxlSW1hZ2Vd
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50OjpjcmVhdGVEcmF3aW5nVmlldyk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjpsYXllcldpbGxCZVJlbW92ZWQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjpjbGVhckxheWVycyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6OmNyZWF0ZUVtYmVkZGVkVmlldyk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5
ZXJUcmVlVmlld3MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9S
ZW1vdGVMYXllclRyZWVWaWV3cy5tbToKKyAgICAgICAgKC1bV0tFbWJlZGRlZFZpZXcgaW5pdFdp
dGhFbWJlZGRlZFZpZXdJRDpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1
bm5pbmdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3aWxsVXBkYXRlQXR0YWNobWVudEF0
dHJpYnV0ZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjplZGl0YWJsZUltYWdlQ29udHJvbGxlcik6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5oOiBSZW1v
dmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubWVz
c2FnZXMuaW46IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdl
Q29udHJvbGxlci5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdWaWV3KTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BlbmNpbEtpdFNvZnRMaW5rLmg6IFJl
bW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QZW5jaWxLaXRTb2Z0TGluay5tbTogUmVt
b3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldFVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBjbGVhblVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBfcmVtb3ZlRGVmYXVsdEdlc3R1cmVSZWNvZ25pemVyc10pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzXSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgZ2VzdHVyZVJlY29nbml6ZXJTaG91bGRCZWdpbjpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfZWxlbWVudERpZEZvY3VzOnVzZXJJc0ludGVyYWN0aW5nOmJsdXJQcmV2
aW91c05vZGU6YWN0aXZpdHlTdGF0ZUNoYW5nZXM6dXNlck9iamVjdDpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfZWxlbWVudERpZEJsdXJdKToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBfc3R5bHVzU2luZ2xlVGFwUmVjb2duaXplZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfZHJhd2luZ0Nvb3JkaW5hdG9yXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0RyYXdpbmdDb29yZGluYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tEcmF3aW5nQ29vcmRpbmF0b3IubW06IFJlbW92ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0RyYXdpbmdWaWV3Lm1tOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhh
bmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tOgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmFzc29jaWF0ZUVkaXRhYmxlSW1hZ2VXaXRoQXR0YWNo
bWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZGlkQ3Jl
YXRlRWRpdGFibGVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNs
aWVudDo6ZGlkRGVzdHJveUVkaXRhYmxlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvR3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6R3JhcGhpY3NMYXllckNBUmVtb3RlOjpjcmVhdGVQbGF0Zm9ybUNB
TGF5ZXJGb3JFbWJlZGRlZFZpZXcpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvR3JhcGhpY3NMYXllckNBUmVtb3RlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZUZvckVt
YmVkZGVkVmlldyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6ZW1iZWRkZWRWaWV3SUQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVD
b250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVDb250ZXh0OjpsYXll
ckRpZEVudGVyQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChX
ZWJLaXQ6OmlzQXNzaXN0YWJsZUVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpn
ZXRGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
aGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludCk6IERlbGV0ZWQuCisKIDIwMjAtMDgtMjggIFRp
bSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU2l0ZXMgYnVp
bHQgd2l0aCBmbGFtYmUuanMgZG9uJ3Qgd29yayB3aXRoIHRyYWNrcGFkIG9uIGlQYWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKaW5kZXggNGNiYzI3OWVmMjliMDg2MDYwZDZlZDAxZTE2ZjQ5YjcxZjcxZjM3ZS4uMGE4
NDZjNzgxM2IyYjNkNTE3MTFkYmNkMzhkNmE1YzNkZGQ0Y2ZlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAg
LTEwMDIsNyArMTAwMiw2IEBAIGVkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcAogZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHAKIGVkaXRpbmcvSFRNTEludGVyY2hhbmdlLmNwcAogZWRpdGlu
Zy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKLWVkaXRpbmcvSW5zZXJ0RWRpdGFibGVJbWFnZUNv
bW1hbmQuY3BwCiBlZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwCiBlZGl0aW5n
L0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCiBlZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNw
cApAQCAtMTU4OCw3ICsxNTg3LDYgQEAgcGFnZS9EZXZpY2VDb250cm9sbGVyLmNwcAogcGFnZS9E
aWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwCiBwYWdlL0Rpc2FibGVkQWRhcHRhdGlvbnMuY3BwCiBw
YWdlL0RyYWdDb250cm9sbGVyLmNwcAotcGFnZS9FZGl0YWJsZUltYWdlUmVmZXJlbmNlLmNwcAog
cGFnZS9FdmVudEhhbmRsZXIuY3BwCiBwYWdlL0V2ZW50U291cmNlLmNwcAogcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNmY2NzkxMGE4YTY2N2U2YmUyY2QzN2QxYzE1OGI5MmJhYmQ4Mzg2
Ni4uM2VhMDU4YWQ3NGEwM2M2NTdhNTAxZGVmMzhkNzcxZDUwYWVmMjFmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzI3LDcg
KzcyNyw2IEBACiAJCTJEMjlFQ0M4MTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDI5RUNDNDE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFu
YWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTJEMjlFQ0NBMTkyRjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjlFQ0M5MTky
RjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaCAqLzsgfTsKIAkJMkQy
QkVCMzEyMjM0QTMzNTAwNTU0NENBIC8qIEVsZW1lbnRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDJCRUIyRjIyMzRBMzM0MDA1NTQ0
Q0EgLyogRWxlbWVudElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQkyRDJFMzRBQzIxQTRFMTkyMDA0NTk4QjUgLyogRWRpdGFibGVJ
bWFnZVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkQyRTM0QTkyMUE0RTE5MTAwNDU5OEI1IC8qIEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2Uu
aCAqLzsgfTsKIAkJMkQzQTBFMzYxM0E3RDc2MTAwRTg1QUYwIC8qIFNWR1BhcnNpbmdFcnJvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQzQTBFMzUx
M0E3RDc2MTAwRTg1QUYwIC8qIFNWR1BhcnNpbmdFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEM0VGNDQ4MTkxNzkxNUMwMDAzNDE4NCAv
KiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEM0VGNDQ0MTkxNzkxNUMwMDAzNDE4NCAvKiBX
ZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDNFRjQ0QTE5MTc5MTVDMDAwMzQxODQgLyog
V2ViQ29yZUNBTGF5ZXJFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEM0VGNDQ2MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJDb3JlQ0FMYXllckV4
dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC03NTEsNyArNzUwLDYgQEAKIAkJMkQ3NkJCODIxOTQ1NjMyNDAwQ0ZEMjlBIC8qIFJ1bkxvb3BP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkQ3NkJCODAxOTQ1NjMyNDAwQ0ZEMjlBIC8qIFJ1bkxvb3BPYnNlcnZlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEN0RBMEYyMjQzNUVCMTkw
MEYwNDhEMSAvKiBXZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDdEQTBFRjI0MzVFQjE3MDBG
MDQ4RDEgLyogV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEN0VEMEFCMUJBRTk5MTcw
MDQzQjNFNSAvKiBUaW1lckV2ZW50QmFzZWRNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDdFRDBBOTFCQUU5OTE3MDA0M0IzRTUgLyogVGltZXJF
dmVudEJhc2VkTW9jay5oICovOyB9OwotCQkyRDgxRTFDRjIxQTc4Q0MyMDBBMzJDRjQgLyogSW5z
ZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEODFFMUNEMjFBNzhDQzIwMEEzMkNGNCAvKiBJbnNlcnRFZGl0YWJs
ZUltYWdlQ29tbWFuZC5oICovOyB9OwogCQkyRDgyODdGNzE2RTRBMDM4MDA4NkJEMDAgLyogSGl0
VGVzdExvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDgyODdGNTE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQ4QjkyQ0UyMDNE
MTNFMTAwOUM4NjhGIC8qIFVuaWZpZWRTb3VyY2U0ODEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREU1Rjg0QUQxRkExQTQ4QjAwNkRCNjNCIC8qIFVu
aWZpZWRTb3VyY2U0ODEuY3BwICovOyB9OwogCQkyRDhCOTJDRjIwM0QxM0UxMDA5Qzg2OEYgLyog
VW5pZmllZFNvdXJjZTQ4Mi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBERTVGODRDODFGQTFBNEE0MDA2REI2M0IgLyogVW5pZmllZFNvdXJjZTQ4Mi5j
cHAgKi87IH07CkBAIC02OTA2LDggKzY5MDQsNiBAQAogCQkyRDI5RUNDNDE5MkVDQzgzMDA5ODRC
NzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJEMjlFQ0M5MTkyRjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5UmVm
cmVzaE1vbml0b3JJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxh
eVJlZnJlc2hNb25pdG9ySU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMkJF
QjJGMjIzNEEzMzQwMDU1NDRDQSAvKiBFbGVtZW50SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFbGVtZW50SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkyRDJFMzRBOTIxQTRFMTkxMDA0NTk4QjUgLyogRWRpdGFibGVJbWFnZVJl
ZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0YWJsZUltYWdl
UmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJEMkUzNEFCMjFBNEUx
OTIwMDQ1OThCNSAvKiBFZGl0YWJsZUltYWdlUmVmZXJlbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRDJGQzA1NDE0NjBDRDZGMDAyNjM2MzMgLyogQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDJGQzA1NTE0NjBDRDZGMDAyNjM2MzMgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyRkMwNTYxNDYwQ0Q2RjAwMjYz
NjMzIC8qIEdyYWRpZW50SW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR3JhZGllbnRJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
OTUyLDggKzY5NDgsNiBAQAogCQkyRDdEQTBFRjI0MzVFQjE3MDBGMDQ4RDEgLyogV2ViVmlld1Zp
c3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJEN0RBMEYxMjQzNUVCMTgwMEYwNDhEMSAvKiBXZWJWaWV3VmlzdWFs
SWRlbnRpZmljYXRpb25PdmVybGF5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ3RUQwQTkxQkFFOTkxNzAwNDNCM0U1IC8qIFRpbWVyRXZl
bnRCYXNlZE1vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGltZXJFdmVu
dEJhc2VkTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyRDgxRTFDQjIxQTc4
Q0MxMDBBMzJDRjQgLyogSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyRDgxRTFDRDIxQTc4Q0MyMDBBMzJDRjQg
LyogSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkQ4Mjg3RjQxNkU0QTAzODAwODZCRDAwIC8qIEhpdFRlc3RMb2NhdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaXRUZXN0TG9jYXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDgyODdGNTE2RTRBMDM4MDA4NkJE
MDAgLyogSGl0VGVzdExvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEhpdFRlc3RMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDhEM0JF
QjIzODQ3QUM5MDA2NTcwNzUgLyogZ2VzdHVyZS1yZWNvZ25pemVyLmpzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBwYXRoID0gImdlc3R1cmUtcmVjb2duaXplci5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMTM4Niw4ICsyMTM4MCw2IEBACiAJCQkJQTdDQTU5NUMwQjI3QkQ5RTAwRkEwMjFE
IC8qIERyYWdDb250cm9sbGVyLmNwcCAqLywKIAkJCQlBN0NBNTk1QjBCMjdCRDlFMDBGQTAyMUQg
LyogRHJhZ0NvbnRyb2xsZXIuaCAqLywKIAkJCQk4MUY2NUZGNTEzNzg4RkFBMDBGRjZGMkQgLyog
RHJhZ1N0YXRlLmggKi8sCi0JCQkJMkQyRTM0QUIyMUE0RTE5MjAwNDU5OEI1IC8qIEVkaXRhYmxl
SW1hZ2VSZWZlcmVuY2UuY3BwICovLAotCQkJCTJEMkUzNEE5MjFBNEUxOTEwMDQ1OThCNSAvKiBF
ZGl0YWJsZUltYWdlUmVmZXJlbmNlLmggKi8sCiAJCQkJMUFGMzI2NzcwRDc4Qjk0NDAwNjhGMEM0
IC8qIEVkaXRvckNsaWVudC5oICovLAogCQkJCTkzQzA5QTgwMEIwNjRGMDAwMDVBQkQ0RCAvKiBF
dmVudEhhbmRsZXIuY3BwICovLAogCQkJCTkzQzA5QTUyMEIwNjREQjMwMDVBQkQ0RCAvKiBFdmVu
dEhhbmRsZXIuaCAqLywKQEAgLTIyMzkyLDggKzIyMzg0LDYgQEAKIAkJCQk5MzMwOUQ5NzA5OUU2
NDkxMDA1NkU1ODEgLyogSFRNTEludGVyY2hhbmdlLmggKi8sCiAJCQkJREIyM0MyQzkwQTUwOEQy
OTAwMjQ4OUVCIC8qIEluZGVudE91dGRlbnRDb21tYW5kLmNwcCAqLywKIAkJCQlEQjIzQzJDQTBB
NTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCAqLywKLQkJCQkyRDgxRTFD
QjIxQTc4Q0MxMDBBMzJDRjQgLyogSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuY3BwICovLAot
CQkJCTJEODFFMUNEMjFBNzhDQzIwMEEzMkNGNCAvKiBJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFu
ZC5oICovLAogCQkJCTkzMzA5RDlBMDk5RTY0OTEwMDU2RTU4MSAvKiBJbnNlcnRJbnRvVGV4dE5v
ZGVDb21tYW5kLmNwcCAqLywKIAkJCQk5MzMwOUQ5QjA5OUU2NDkxMDA1NkU1ODEgLyogSW5zZXJ0
SW50b1RleHROb2RlQ29tbWFuZC5oICovLAogCQkJCTkzMzA5RDlDMDk5RTY0OTEwMDU2RTU4MSAv
KiBJbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcCAqLywKQEAgLTMwMjA1LDcgKzMwMTk1LDYgQEAK
IAkJCQk2M0JENEE1RjFGNzc4RTlGMDA0Mzg3MjIgLyogQXBwbGljYXRpb25NYW5pZmVzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjMxNTJEMTkxRjk1MzFFRTAwN0E1RTRCIC8qIEFwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTYzNTRGNEM5MUY3QUZDOTQwMEQ4
OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlE
RkM2MTBBNjI0RkIyQTdEMDA2MjU0QzggLyogRW5jb2RpbmdUYWJsZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTlCNDE3MDY0MTI1NjYyQjMwMDZCMjhGQyAvKiBBcHBseUJsb2NrRWxlbWVudENvbW1h
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REQ5MDk5RTY0OTIwMDU2RTU4MSAvKiBBcHBs
eVN0eWxlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4RjYwRDkxRTZBRjAwMEY4
OUVFIC8qIEFyY2hpdmUuaCBpbiBIZWFkZXJzICovLApAQCAtMzEwMDAsNyArMzA5ODksNiBAQAog
CQkJCUZENTM3MzU3MTM3QjY1M0IwMDAwOERDRSAvKiBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZENkVEMkM0MTM2QjhFNDIwMDNDRjA3MiAvKiBEeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzdDMEI3NjI0REIzODUwMDA1
RDU5NTkgLyogRHluYW1pY3NDb21wcmVzc29yT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MkQyRTM0QUMyMUE0RTE5MjAwNDU5OEI1IC8qIEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzMzA5REUyMDk5RTY0OTIwMDU2RTU4MSAvKiBFZGl0QWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURFNDA5OUU2NDkyMDA1NkU1ODEgLyogRWRpdENvbW1h
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REU4MDk5RTY0OTIwMDU2RTU4MSAvKiBFZGl0
aW5nLmggaW4gSGVhZGVycyAqLywKQEAgLTMxMDMyLDYgKzMxMDIwLDcgQEAKIAkJCQk0MTRERURF
NzFGOUZFOTFFMDA0N0M0MEQgLyogRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE1QkUxOTAxRDU0RjVGQjAwREQ3QzY4IC8qIEVtcHR5R2FtZXBhZFByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzg0OUMxRjI0QkU0MDRCMDA0NDhENUEgLyogRW1wdHlT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQlERkM2MTBBNjI0RkIy
QTdEMDA2MjU0QzggLyogRW5jb2RpbmdUYWJsZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNzdD
M0Q3MURFRjg1MEEwMEE1MEJGQSAvKiBFbmRpbmdUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NDAzRTc4NzIzNjNCNThDMDAwNDQ1NTAgLyogRW50ZXJLZXlIaW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxRDJGOEUwNDIzNDQ3NTE2MDA5OTNCNjggLyogRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZl
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzE1OTMsNyArMzE1ODIsNiBAQAogCQkJCUU1MkVGREY0
MjExMjg3NUEwMEFEMjgyQSAvKiBJbnB1dE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RTM1
MjREMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMz
NDg2MTI0MTVGREUyMUUwMDdBMUNDOSAvKiBJbnB1dFR5cGVOYW1lcy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMkQ4MUUxQ0YyMUE3OENDMjAwQTMyQ0Y0IC8qIEluc2VydEVkaXRhYmxlSW1hZ2VDb21t
YW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURFQTA5OUU2NDkyMDA1NkU1ODEgLyogSW5z
ZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERUMwOTlF
NjQ5MjAwNTZFNTgxIC8qIEluc2VydExpbmVCcmVha0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUQwN0RFQUJBMEEzNjU1NEEwMENBMzBGOCAvKiBJbnNlcnRMaXN0Q29tbWFuZC5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRBY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0aW9uLmNwcAppbmRleCBmYmFlZjU4
N2M5NzAwZDg2MGI1ZDc0NmNkNzU2OTc2Yjg5ZmRmMzdhLi4yODgyZWE0NDMwNTMyMmNjNjgwZmVl
ZTM3MGU4NWIxODJhZmU0YjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdEFjdGlvbi5jcHAK
QEAgLTE0Miw4ICsxNDIsNiBAQCBTdHJpbmcgdW5kb1JlZG9MYWJlbChFZGl0QWN0aW9uIGVkaXRB
Y3Rpb24pCiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWSgiQ29udmVydCB0byBPcmRl
cmVkIExpc3QiLCAiQ29udmVydCB0byBPcmRlcmVkIExpc3QgKFVuZG8gYWN0aW9uIG5hbWUpIiwg
IlVuZG8gYWN0aW9uIG5hbWUiKTsKICAgICBjYXNlIEVkaXRBY3Rpb246OkNvbnZlcnRUb1Vub3Jk
ZXJlZExpc3Q6CiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWSgiQ29udmVydCB0byBV
bm9yZGVyZWQgTGlzdCIsICJDb252ZXJ0IHRvIFVub3JkZXJlZCBMaXN0IChVbmRvIGFjdGlvbiBu
YW1lKSIsICJVbmRvIGFjdGlvbiBuYW1lIik7Ci0gICAgY2FzZSBFZGl0QWN0aW9uOjpJbnNlcnRF
ZGl0YWJsZUltYWdlOgotICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoIkluc2VydCBE
cmF3aW5nIiwgIkluc2VydCBEcmF3aW5nIChVbmRvIGFjdGlvbiBuYW1lKSIsICJVbmRvIGFjdGlv
biBuYW1lIik7CiAgICAgfQogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRBY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dEFjdGlvbi5oCmluZGV4IDIxNjhlYjAyODYxYzFhMmRhNjcwN2UyODhjZjdiN2NkNWRjNmMyMDMu
LmM2MGM2YmNjODA1NTU1NjdhM2NiZGY2MWI4ODdkNDRjMmUyMWRhZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdEFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdEFjdGlvbi5oCkBAIC05Myw4ICs5Myw3IEBAIGVudW0gY2xhc3MgRWRpdEFjdGlv
biA6IHVpbnQ4X3QgewogICAgIENvbnZlcnRUb09yZGVyZWRMaXN0LAogICAgIENvbnZlcnRUb1Vu
b3JkZXJlZExpc3QsCiAgICAgSW5kZW50LAotICAgIE91dGRlbnQsCi0gICAgSW5zZXJ0RWRpdGFi
bGVJbWFnZQorICAgIE91dGRlbnQKIH07CiAKIFdURjo6U3RyaW5nIHVuZG9SZWRvTGFiZWwoRWRp
dEFjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMDk0NjZhZjE4ZGEyNTBk
YzQwNTY5ZGExNTlmY2IyYjEyYmQxNTczYS4uYzEwNjk4MWIzZmIxYjhlYTVlNWIxOTZmOWFkYzcz
OTRhYTY5MTZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNzUsNyArNzUsNiBA
QAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbmRlbnRPdXRkZW50Q29t
bWFuZC5oIgogI2luY2x1ZGUgIklucHV0RXZlbnQuaCIKLSNpbmNsdWRlICJJbnNlcnRFZGl0YWJs
ZUltYWdlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydExpc3RDb21tYW5kLmgiCiAjaW5jbHVk
ZSAiSW5zZXJ0VGV4dENvbW1hbmQuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCkBAIC00
MzE5LDExICs0MzE4LDYgQEAgY29uc3QgRm9udCogRWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKGJv
b2wmIGhhc011bHRpcGxlRm9udHMpIGNvbnN0CiAgICAgcmV0dXJuIGZvbnQ7CiB9CiAKLVJlZlB0
cjxIVE1MSW1hZ2VFbGVtZW50PiBFZGl0b3I6Omluc2VydEVkaXRhYmxlSW1hZ2UoKQotewotICAg
IHJldHVybiBJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZDo6aW5zZXJ0RWRpdGFibGVJbWFnZShk
b2N1bWVudCgpKTsKLX0KLQogYm9vbCBFZGl0b3I6OmNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25l
SW1hZ2VzKCkgY29uc3QKIHsKICAgICBhdXRvJiBzZWxlY3Rpb24gPSBtX2RvY3VtZW50LnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggYTllNDhmM2Y4
MzM2NGZiOTcyNmJmMDljNjEyMjlkNWEwMTZmZjRjNy4uYTA5MmRmZjg1ZjYyMDBhMDhjYWZmZTli
OTVhOGEyMzYzMjM2MmIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01NzAsOCArNTcw
LDYgQEAgcHVibGljOgogI2VuZGlmCiAjZW5kaWYKIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxIVE1MSW1hZ2VFbGVtZW50PiBpbnNlcnRFZGl0YWJsZUltYWdlKCk7Ci0KICAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4gaW5zZXJ0VGV4dFBsYWNlaG9s
ZGVyKGNvbnN0IEludFNpemUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVRleHRQ
bGFjZWhvbGRlcihUZXh0UGxhY2Vob2xkZXJFbGVtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDUyYzU4MGFmZmI0YjI4NzU3Y2NlZDQ4M2Y2YmNk
MjRlMjU3N2MwNjQuLjJkM2U5NWQwZmMxNjRlYmY2MTFmYjRlNGMwMDE5OWMwMGE1NTg2YzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApAQCAtNDYsNyArNDYsNiBA
QAogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJJbmRlbnRPdXRkZW50Q29tbWFuZC5oIgotI2luY2x1ZGUgIkluc2VydEVkaXRh
YmxlSW1hZ2VDb21tYW5kLmgiCiAjaW5jbHVkZSAiSW5zZXJ0TGlzdENvbW1hbmQuaCIKICNpbmNs
dWRlICJJbnNlcnROZXN0ZWRMaXN0Q29tbWFuZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTQ3
MiwxMyArNDcxLDYgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydEltYWdlKEZyYW1lJiBmcmFt
ZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdAogICAgIHJldHVybiBleGVjdXRl
SW5zZXJ0Tm9kZShmcmFtZSwgV1RGTW92ZShpbWFnZSkpOwogfQogCi1zdGF0aWMgYm9vbCBleGVj
dXRlSW5zZXJ0RWRpdGFibGVJbWFnZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKLXsKLSAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7
Ci0gICAgSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQ6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQo
KSktPmFwcGx5KCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHN0YXRpYyBib29sIGV4ZWN1dGVJ
bnNlcnRMaW5lQnJlYWsoRnJhbWUmIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRT
b3VyY2Ugc291cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIHN3aXRjaCAoc291cmNlKSB7CkBA
IC0xNDI1LDEzICsxNDE3LDYgQEAgc3RhdGljIGJvb2wgZW5hYmxlZFVuZG8oRnJhbWUmIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UpCiAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigp
LmNhblVuZG8oKTsKIH0KIAotc3RhdGljIGJvb2wgZW5hYmxlZEluUmljaGx5RWRpdGFibGVUZXh0
V2l0aEVkaXRhYmxlSW1hZ2VzRW5hYmxlZChGcmFtZSYgZnJhbWUsIEV2ZW50KiBldmVudCwgRWRp
dG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UpCi17Ci0gICAgaWYgKCFmcmFtZS5zZXR0aW5ncygpLmVk
aXRhYmxlSW1hZ2VzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IGVuYWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dChmcmFtZSwgZXZlbnQsIHNvdXJjZSk7Ci19Ci0K
IC8vIFN0YXRlIGZ1bmN0aW9ucwogCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVOb25lKEZyYW1lJiwg
RXZlbnQqKQpAQCAtMTY1MSw3ICsxNjM2LDYgQEAgc3RhdGljIGNvbnN0IENvbW1hbmRNYXAmIGNy
ZWF0ZUNvbW1hbmRNYXAoKQogICAgICAgICB7ICJJZ25vcmVTcGVsbGluZyIsIHsgZXhlY3V0ZUln
bm9yZVNwZWxsaW5nLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZEluRWRp
dGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RB
bGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCiAgICAgICAgIHsgIkluZGVudCIsIHsgZXhl
Y3V0ZUluZGVudCwgc3VwcG9ydGVkLCBlbmFibGVkSW5SaWNobHlFZGl0YWJsZVRleHQsIHN0YXRl
Tm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hl
bkRpc2FibGVkIH0gfSwKICAgICAgICAgeyAiSW5zZXJ0QmFja3RhYiIsIHsgZXhlY3V0ZUluc2Vy
dEJhY2t0YWIsIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkSW5FZGl0YWJs
ZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBpc1RleHRJbnNlcnRpb24sIGRvTm90QWxsb3dF
eGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAotICAgICAgICB7ICJJbnNlcnRFZGl0YWJsZUltYWdl
IiwgeyBleGVjdXRlSW5zZXJ0RWRpdGFibGVJbWFnZSwgc3VwcG9ydGVkLCBlbmFibGVkSW5SaWNo
bHlFZGl0YWJsZVRleHRXaXRoRWRpdGFibGVJbWFnZXNFbmFibGVkLCBzdGF0ZU5vbmUsIHZhbHVl
TnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9
IH0sCiAgICAgICAgIHsgIkluc2VydEhUTUwiLCB7IGV4ZWN1dGVJbnNlcnRIVE1MLCBzdXBwb3J0
ZWQsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJ
bnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAogICAgICAgICB7
ICJJbnNlcnRIb3Jpem9udGFsUnVsZSIsIHsgZXhlY3V0ZUluc2VydEhvcml6b250YWxSdWxlLCBz
dXBwb3J0ZWQsIGVuYWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51
bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9
LAogICAgICAgICB7ICJJbnNlcnRJbWFnZSIsIHsgZXhlY3V0ZUluc2VydEltYWdlLCBzdXBwb3J0
ZWQsIGVuYWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5v
dFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5k
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJkNGQ2ZmY3NGMyMDVkYWE1YWI5
ODU2ZmY0YTYyMmJhYjgwMjU4OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEVkaXRhYmxlSW1hZ2VDb21t
YW5kLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmgiCi0KLSNpbmNsdWRlICJFZGl0aW5nLmgi
Ci0jaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZDo6aW5z
ZXJ0RWRpdGFibGVJbWFnZShEb2N1bWVudCYgZG9jdW1lbnQpCi17Ci0gICAgUmVmUHRyPEluc2Vy
dEVkaXRhYmxlSW1hZ2VDb21tYW5kPiBpbnNlcnRDb21tYW5kID0gY3JlYXRlKGRvY3VtZW50KTsK
LSAgICBpbnNlcnRDb21tYW5kLT5hcHBseSgpOwotICAgIHJldHVybiBpbnNlcnRDb21tYW5kLT5t
X2ltYWdlRWxlbWVudDsKLX0KLQotSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQ6Okluc2VydEVk
aXRhYmxlSW1hZ2VDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IENvbXBvc2l0ZUVk
aXRDb21tYW5kKGRvY3VtZW50KQotewotfQotCi12b2lkIEluc2VydEVkaXRhYmxlSW1hZ2VDb21t
YW5kOjpkb0FwcGx5KCkKLXsKLSAgICBpZiAoZW5kaW5nU2VsZWN0aW9uKCkuaXNOb25lKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1faW1hZ2VFbGVtZW50ID0gSFRNTEltYWdlRWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KCkpOwotICAgIG1faW1hZ2VFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6eF9hcHBsZV9lZGl0YWJsZV9pbWFnZUF0dHIs
IGVtcHR5QXRvbSgpKTsKLSAgICBtX2ltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndpZHRoQXR0ciwgQXRvbVN0cmluZygiMTAwJSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgbV9pbWFnZUVsZW1lbnQtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpoZWlnaHRBdHRyLCBB
dG9tU3RyaW5nKCIzMDBweCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0g
ICAgbV9pbWFnZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRN
TE5hbWVzOjpzdHlsZUF0dHIsIEF0b21TdHJpbmcoImRpc3BsYXk6IGJsb2NrIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLQotICAgIGluc2VydE5vZGVBdCgqbV9pbWFnZUVs
ZW1lbnQsIGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkpOwotICAgIHNldEVuZGluZ1NlbGVjdGlv
bih2aXNpYmxlUG9zaXRpb25BZnRlck5vZGUoKm1faW1hZ2VFbGVtZW50KSk7Ci19Ci0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1h
bmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzlkMTllOWQ3ZDY1NjI0MzFjZDE0YzM5
OWUyM2UwZTNlNzg2MGUwZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5k
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ29tcG9z
aXRlRWRpdENvbW1hbmQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJbnNlcnRF
ZGl0YWJsZUltYWdlQ29tbWFuZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZD4gY3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElu
c2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kKGRvY3VtZW50KSk7Ci0gICAgfQotCi0gICAgc3RhdGlj
IFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBpbnNlcnRFZGl0YWJsZUltYWdlKERvY3VtZW50Jik7
Ci0KLXByaXZhdGU6Ci0gICAgSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQoRG9jdW1lbnQmKTsK
LQotICAgIHZvaWQgZG9BcHBseSgpIG92ZXJyaWRlOwotICAgIEVkaXRBY3Rpb24gZWRpdGluZ0Fj
dGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEVkaXRBY3Rpb246Okluc2VydEVkaXRhYmxlSW1h
Z2U7IH0KLQotICAgIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBtX2ltYWdlRWxlbWVudDsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vu
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2Nh
bGl6YWJsZS5zdHJpbmdzCmluZGV4IDU4NjAyOTBhOTVlYmUxNjkwMjNmY2FmMmJmZjhjZGQwOTdj
ZDA2MTcuLjBiODBhMjgwYWQ2ZjUzOWYxZjMzYWMzZTE4Zjg5NTc3N2JlY2MyZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKKysrIGIvU291
cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpAQCAtNDEyLDkgKzQxMiw2
IEBACiAvKiBVbmRvIGFjdGlvbiBuYW1lICovCiAiSW5kZW50IChVbmRvIGFjdGlvbiBuYW1lKSIg
PSAiSW5kZW50IjsKIAotLyogVW5kbyBhY3Rpb24gbmFtZSAqLwotIkluc2VydCBEcmF3aW5nIChV
bmRvIGFjdGlvbiBuYW1lKSIgPSAiSW5zZXJ0IERyYXdpbmciOwotCiAvKiBVbmRvIGFjdGlvbiBu
YW1lICovCiAiSW5zZXJ0IExpc3QgKFVuZG8gYWN0aW9uIG5hbWUpIiA9ICJJbnNlcnQgTGlzdCI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmlu
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggY2IzMDQ5
MDQwODkzYzRjZWMxNGZjNTFjNGJjNTBjNDM4MGNkOTM4ZS4uZDJjZjdiYjk4ZWU1MTEyM2ViYjI5
NjcyNmVjZWU5MmVhYTQ0ZTRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0cmlidXRlTmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRl
TmFtZXMuaW4KQEAgLTQzNiw1ICs0MzYsMyBAQCB4LWFwcGxlLWRhdGEtZGV0ZWN0b3JzLXR5cGUK
IHgtYXBwbGUtZGF0YS1kZXRlY3RvcnMtcmVzdWx0CiAKIHgtYXBwbGUtcGRmLWFubm90YXRpb24K
LQoteC1hcHBsZS1lZGl0YWJsZS1pbWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHAKaW5kZXggZTgxMzI0YjgxZTk1M2RiZDljZmVjM2ZhYzVhMDA1YzYwMTFmN2Q1My4u
NjczZTkwNjRiY2FmMzEwNjM2MGIxMDEzNzE5MDgzNmY2MDBhZGE4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAi
Q2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGll
bnQuaCIKLSNpbmNsdWRlICJFZGl0YWJsZUltYWdlUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRWRp
dG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgpAQCAtMjg3LDkgKzI4Niw3IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluCiAgICAgICAg
IG1fZXhwZXJpbWVudGFsSW1hZ2VNZW51RW5hYmxlZCA9ICF2YWx1ZS5pc051bGwoKTsKICAgICAg
ICAgdXBkYXRlSW1hZ2VDb250cm9scygpOwogI2VuZGlmCi0gICAgfSBlbHNlIGlmIChuYW1lID09
IHhfYXBwbGVfZWRpdGFibGVfaW1hZ2VBdHRyKQotICAgICAgICB1cGRhdGVFZGl0YWJsZUltYWdl
KCk7Ci0gICAgZWxzZSBpZiAobmFtZSA9PSBsb2FkaW5nQXR0cikgeworICAgIH0gZWxzZSBpZiAo
bmFtZSA9PSBsb2FkaW5nQXR0cikgewogICAgICAgICAvLyBObyBhY3Rpb24gbmVlZGVkIGZvciBl
YWdlciB0byBsYXp5IHRyYW5zaXRpb24uCiAgICAgICAgIGlmICghaGFzTGF6eUxvYWRhYmxlQXR0
cmlidXRlVmFsdWUodmFsdWUpKQogICAgICAgICAgICAgbG9hZERlZmVycmVkSW1hZ2UoKTsKQEAg
LTM0NSwyMCArMzQyLDYgQEAgYm9vbCBIVE1MSW1hZ2VFbGVtZW50OjpjYW5TdGFydFNlbGVjdGlv
bigpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEhUTUxJbWFnZUVsZW1lbnQ6
OnN1cHBvcnRzRm9jdXMoKSBjb25zdAotewotICAgIGlmIChoYXNFZGl0YWJsZUltYWdlQXR0cmli
dXRlKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBIVE1MRWxlbWVudDo6c3Vw
cG9ydHNGb2N1cygpOwotfQotCi1ib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkg
Y29uc3QKLXsKLSAgICBpZiAoaGFzRWRpdGFibGVJbWFnZUF0dHJpYnV0ZSgpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmlzRm9jdXNhYmxlKCk7Ci19Ci0K
IGJvb2wgSFRNTEltYWdlRWxlbWVudDo6aXNJbnRlcmFjdGl2ZUNvbnRlbnQoKSBjb25zdAogewog
ICAgIHJldHVybiBoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHVzZW1hcEF0dHIp
OwpAQCAtNDEwLDkgKzM5Myw2IEBAIE5vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IEhU
TUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvCiAgICAgLy8gaW4g
Y2FsbGJhY2tzIGJhY2sgdG8gdGhpcyBub2RlLgogICAgIE5vZGU6Okluc2VydGVkSW50b0FuY2Vz
dG9yUmVzdWx0IGluc2VydE5vdGlmaWNhdGlvblJlcXVlc3QgPSBIVE1MRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOwogCi0g
ICAgaWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCAmJiBoYXNFZGl0YWJsZUlt
YWdlQXR0cmlidXRlKCkpCi0gICAgICAgIGluc2VydE5vdGlmaWNhdGlvblJlcXVlc3QgPSBJbnNl
cnRlZEludG9BbmNlc3RvclJlc3VsdDo6TmVlZHNQb3N0SW5zZXJ0aW9uQ2FsbGJhY2s7Ci0KICAg
ICBpZiAoaW5zZXJ0aW9uVHlwZS50cmVlU2NvcGVDaGFuZ2VkICYmICFtX3BhcnNlZFVzZW1hcC5p
c051bGwoKSkKICAgICAgICAgdHJlZVNjb3BlKCkuYWRkSW1hZ2VFbGVtZW50QnlVc2VtYXAoKm1f
cGFyc2VkVXNlbWFwLmltcGwoKSwgKnRoaXMpOwogCkBAIC00MzcsMTIgKzQxNyw2IEBAIE5vZGU6
Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IEhUTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50
b0FuY2VzdG9yKEluc2VydGlvCiAgICAgcmV0dXJuIGluc2VydE5vdGlmaWNhdGlvblJlcXVlc3Q7
CiB9CiAKLXZvaWQgSFRNTEltYWdlRWxlbWVudDo6ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgpCi17
Ci0gICAgaWYgKGhhc0VkaXRhYmxlSW1hZ2VBdHRyaWJ1dGUoKSkKLSAgICAgICAgdXBkYXRlRWRp
dGFibGVJbWFnZSgpOwotfQotCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5j
ZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9m
UmVtb3ZlZFRyZWUpCiB7CiAgICAgaWYgKG1fZm9ybSkKQEAgLTQ1Niw2OSArNDMwLDEwIEBAIHZv
aWQgSFRNTEltYWdlRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1v
dmFsVHlwZSwgQ29udGFpbmVyTm9kCiAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21F
bGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKFJlbGV2YW50TXV0YXRpb246Olllcyk7CiAgICAg
fQogCi0gICAgaWYgKHJlbW92YWxUeXBlLmRpc2Nvbm5lY3RlZEZyb21Eb2N1bWVudCkKLSAgICAg
ICAgdXBkYXRlRWRpdGFibGVJbWFnZSgpOwotCiAgICAgbV9mb3JtID0gbnVsbHB0cjsKICAgICBI
VE1MRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihyZW1vdmFsVHlwZSwgb2xkUGFyZW50T2ZS
ZW1vdmVkVHJlZSk7CiB9CiAKLWJvb2wgSFRNTEltYWdlRWxlbWVudDo6aGFzRWRpdGFibGVJbWFn
ZUF0dHJpYnV0ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdzKCkuZWRp
dGFibGVJbWFnZXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4g
aGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih4X2FwcGxlX2VkaXRhYmxlX2ltYWdl
QXR0cik7Ci19Ci0KLUdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIEhUTUxJbWFnZUVsZW1l
bnQ6OmVkaXRhYmxlSW1hZ2VWaWV3SUQoKSBjb25zdAotewotICAgIGlmICghbV9lZGl0YWJsZUlt
YWdlKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbV9lZGl0YWJsZUltYWdlLT5lbWJl
ZGRlZFZpZXdJRCgpOwotfQotCi12b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnVwZGF0ZUVkaXRhYmxl
SW1hZ2UoKQotewotICAgIGlmICghZG9jdW1lbnQoKS5zZXR0aW5ncygpLmVkaXRhYmxlSW1hZ2Vz
RW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQo
KS5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBib29sIGhh
c0VkaXRhYmxlQXR0cmlidXRlID0gaGFzRWRpdGFibGVJbWFnZUF0dHJpYnV0ZSgpOwotICAgIGJv
b2wgaXNDdXJyZW50bHlFZGl0YWJsZSA9ICEhbV9lZGl0YWJsZUltYWdlOwotICAgIGJvb2wgc2hv
dWxkQmVFZGl0YWJsZSA9IGlzQ29ubmVjdGVkKCkgJiYgaGFzRWRpdGFibGVBdHRyaWJ1dGU7Ci0K
LSNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIC8vIENyZWF0ZSB0aGUgaW5uZXIg
YXR0YWNobWVudCBmb3IgZWRpdGFibGUgaW1hZ2VzLCBvciBub24tZWRpdGFibGUKLSAgICAvLyBp
bWFnZXMgdGhhdCB3ZXJlIGNsb25lZCBmcm9tIGVkaXRhYmxlIGltYWdlIHNvdXJjZXMuCi0gICAg
aWYgKCFhdHRhY2htZW50RWxlbWVudCgpICYmIChzaG91bGRCZUVkaXRhYmxlIHx8ICFtX3BlbmRp
bmdDbG9uZWRBdHRhY2htZW50SUQuaXNFbXB0eSgpKSkgewotICAgICAgICBhdXRvIGF0dGFjaG1l
bnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRU
YWcsIGRvY3VtZW50KCkpOwotICAgICAgICBpZiAoIW1fcGVuZGluZ0Nsb25lZEF0dGFjaG1lbnRJ
RC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhdHRhY2htZW50LT5zZXRVbmlxdWVJZGVudGlmaWVy
KFdURk1vdmUobV9wZW5kaW5nQ2xvbmVkQXR0YWNobWVudElEKSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKTsKLSAgICAgICAg
c2V0QXR0YWNobWVudEVsZW1lbnQoV1RGTW92ZShhdHRhY2htZW50KSk7Ci0gICAgfQotI2VuZGlm
Ci0KLSAgICBpZiAoc2hvdWxkQmVFZGl0YWJsZSA9PSBpc0N1cnJlbnRseUVkaXRhYmxlKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWhhc0VkaXRhYmxlQXR0cmlidXRlKSB7Ci0gICAgICAg
IG1fZWRpdGFibGVJbWFnZSA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoIW1fZWRpdGFibGVJbWFnZSkKLSAgICAgICAgbV9lZGl0YWJsZUltYWdlID0gRWRpdGFi
bGVJbWFnZVJlZmVyZW5jZTo6Y3JlYXRlKGRvY3VtZW50KCkpOwotCi0jaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKLSAgICBtX2VkaXRhYmxlSW1hZ2UtPmFzc29jaWF0ZVdpdGhBdHRhY2ht
ZW50KGF0dGFjaG1lbnRFbGVtZW50KCktPnVuaXF1ZUlkZW50aWZpZXIoKSk7Ci0jZW5kaWYKLX0K
LQogSFRNTFBpY3R1cmVFbGVtZW50KiBIVE1MSW1hZ2VFbGVtZW50OjpwaWN0dXJlRWxlbWVudCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGljdHVyZUVsZW1lbnQuZ2V0KCk7CkBAIC05MDAsMjAg
KzgxNSw5IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6Y29weU5vbkF0dHJpYnV0ZVByb3BlcnRp
ZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JiBzb3VyCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKICAgICBtX3BlbmRpbmdDbG9uZWRBdHRhY2htZW50SUQgPSAhc291cmNlSW1hZ2Uu
bV9wZW5kaW5nQ2xvbmVkQXR0YWNobWVudElELmlzRW1wdHkoKSA/IHNvdXJjZUltYWdlLm1fcGVu
ZGluZ0Nsb25lZEF0dGFjaG1lbnRJRCA6IHNvdXJjZUltYWdlLmF0dGFjaG1lbnRJZGVudGlmaWVy
KCk7CiAjZW5kaWYKLSAgICBtX2VkaXRhYmxlSW1hZ2UgPSBzb3VyY2VJbWFnZS5tX2VkaXRhYmxl
SW1hZ2U7CiAgICAgRWxlbWVudDo6Y29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVu
dChzb3VyY2UpOwogfQogCi12b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQmIGV2ZW50KQotewotICAgIGlmIChoYXNFZGl0YWJsZUltYWdlQXR0cmlidXRlKCkg
JiYgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiBpczxNb3Vz
ZUV2ZW50PihldmVudCkgJiYgZG93bmNhc3Q8TW91c2VFdmVudD4oZXZlbnQpLmJ1dHRvbigpID09
IExlZnRCdXR0b24pIHsKLSAgICAgICAgZm9jdXMoKTsKLSAgICAgICAgZXZlbnQuc2V0RGVmYXVs
dEhhbmRsZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBIVE1MRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihldmVudCk7Ci19Ci0KIENhY2hlZEltYWdlKiBIVE1MSW1hZ2VFbGVt
ZW50OjpjYWNoZWRJbWFnZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1hZ2VMb2FkZXItPmlt
YWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IDY4M2MzNzQ4
ZjMzM2UyOWU3MGRmZmM5NTQzNmI4MjA5YzQ2MTc1NmEuLjk5NmY4NzUwNmNjOGQxNTRkZDhlYmZi
NjJhOTEwYTAxNzMxMGRlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5o
CkBAIC0zNSw3ICszNSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkSW1h
Z2U7CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7Ci1jbGFzcyBFZGl0YWJsZUltYWdlUmVmZXJlbmNl
OwogY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50OwogY2xhc3MgSFRNTEZvcm1FbGVtZW50Owog
Y2xhc3MgSFRNTEltYWdlTG9hZGVyOwpAQCAtNjIsOSArNjEsNiBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgaW50IG5hdHVyYWxIZWlnaHQoKSBjb25zdDsKICAgICBjb25zdCBBdG9tU3Ry
aW5nJiBjdXJyZW50U3JjKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50U3JjOyB9CiAKLSAgICBi
b29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzRm9jdXNhYmxl
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICBib29sIGlzU2VydmVyTWFwKCkgY29uc3Q7CiAKICAg
ICBjb25zdCBBdG9tU3RyaW5nJiBhbHRUZXh0KCkgY29uc3Q7CkBAIC0xMjUsMTEgKzEyMSw2IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzU3lzdGVtUHJldmlld0ltYWdlKCkg
Y29uc3Q7CiAjZW5kaWYKIAotICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXI6OkVtYmVk
ZGVkVmlld0lEIGVkaXRhYmxlSW1hZ2VWaWV3SUQoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGhhc0VkaXRhYmxlSW1hZ2VBdHRyaWJ1dGUoKSBjb25zdDsKLQotICAgIHZvaWQgZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCYpIGZpbmFsOwotCiAgICAgdm9pZCBsb2FkRGVmZXJyZWRJ
bWFnZSgpOwogCiAgICAgY29uc3QgQXRvbVN0cmluZyYgbG9hZGluZ0ZvckJpbmRpbmdzKCkgY29u
c3Q7CkBAIC0xNzUsNyArMTY2LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFN1YnJlc291cmNl
QXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBJ
bnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25U
eXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRGaW5pc2hJbnNlcnRp
bmdOb2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxU
eXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzRm9ybUFzc29jaWF0
ZWRFbGVtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE4OSw4ICsxNzks
NiBAQCBwcml2YXRlOgogCiAgICAgSW1hZ2VDYW5kaWRhdGUgYmVzdEZpdFNvdXJjZUZyb21QaWN0
dXJlRWxlbWVudCgpOwogCi0gICAgdm9pZCB1cGRhdGVFZGl0YWJsZUltYWdlKCk7Ci0KICAgICB2
b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYp
IGZpbmFsOwogCiAgICAgZmxvYXQgZWZmZWN0aXZlSW1hZ2VEZXZpY2VQaXhlbFJhdGlvKCkgY29u
c3Q7CkBAIC0yMTYsNyArMjA0LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFkTmFtZUJlZm9y
ZUF0dHJpYnV0ZUNoYW5nZWQgeyBmYWxzZSB9OyAvLyBGSVhNRTogV2Ugb25seSBuZWVkIHRoaXMg
YmVjYXVzZSBwYXJzZUF0dHJpYnV0ZSgpIGNhbid0IHNlZSB0aGUgb2xkIHZhbHVlLgogICAgIGJv
b2wgbV9pc0Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyIHsgZmFsc2UgfTsKIAotICAgIFJlZlB0cjxF
ZGl0YWJsZUltYWdlUmVmZXJlbmNlPiBtX2VkaXRhYmxlSW1hZ2U7CiAgICAgV2Vha1B0cjxIVE1M
UGljdHVyZUVsZW1lbnQ+IG1fcGljdHVyZUVsZW1lbnQ7CiAgICAgTWVkaWFRdWVyeUR5bmFtaWNS
ZXN1bHRzIG1fbWVkaWFRdWVyeUR5bmFtaWNSZXN1bHRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAppbmRleCAyZjliZTRkMmFlZmYwNGYzNzk2MDMyNjIxZDU2MDhhOGU0OTQxNTgzLi5k
YThjZjY3MmExMDFkNGNlY2YyNzEzMDExYTIxMTBmYTgyM2Q2YmU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgKQEAgLTUyNSwxMCArNTI1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYXNzb2NpYXRlRWRpdGFibGVJbWFnZVdpdGhBdHRhY2htZW50KEdy
YXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lELCBjb25zdCBTdHJpbmcmKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRWRpdGFibGVJbWFnZShHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZp
ZXdJRCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lFZGl0YWJsZUltYWdlKEdyYXBo
aWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKSB7IH0KLQogICAgIHZpcnR1YWwgdm9pZCBjb25maWd1
cmVMb2dnaW5nQ2hhbm5lbChjb25zdCBTdHJpbmcmLCBXVEZMb2dDaGFubmVsU3RhdGUsIFdURkxv
Z0xldmVsKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCB1c2VySXNJbnRlcmFjdGluZygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRh
YmxlSW1hZ2VSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0YWJsZUltYWdl
UmVmZXJlbmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWYyYmJlNDAxOTRh
ZmJkOWE3MTkxNDJhMzJiMzJlYzNiNDU0OTUyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRhYmxlSW1hZ2VSZWZl
cmVuY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCi0gKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKLSAqIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQot
ICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJFZGl0YWJs
ZUltYWdlUmVmZXJlbmNlLmgiCi0KLSNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJDaHJv
bWVDbGllbnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1FZGl0YWJsZUltYWdlUmVmZXJl
bmNlOjpFZGl0YWJsZUltYWdlUmVmZXJlbmNlKERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IG1f
ZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQotICAgICwgbV9lbWJlZGRlZFZpZXdJRChH
cmFwaGljc0xheWVyOjpuZXh0RW1iZWRkZWRWaWV3SUQoKSkKLXsKLSAgICBpZiAoYXV0byogcGFn
ZSA9IGRvY3VtZW50LnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuZGlk
Q3JlYXRlRWRpdGFibGVJbWFnZShtX2VtYmVkZGVkVmlld0lEKTsKLX0KLQotRWRpdGFibGVJbWFn
ZVJlZmVyZW5jZTo6fkVkaXRhYmxlSW1hZ2VSZWZlcmVuY2UoKQotewotICAgIGlmICghbV9kb2N1
bWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChhdXRvKiBwYWdlID0gbV9kb2N1bWVudC0+
cGFnZSgpKQotICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5kaWREZXN0cm95RWRpdGFi
bGVJbWFnZShtX2VtYmVkZGVkVmlld0lEKTsKLX0KLQotdm9pZCBFZGl0YWJsZUltYWdlUmVmZXJl
bmNlOjphc3NvY2lhdGVXaXRoQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCkK
LXsKLSAgICBpZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoYXV0byog
cGFnZSA9IG1fZG9jdW1lbnQtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50
KCkuYXNzb2NpYXRlRWRpdGFibGVJbWFnZVdpdGhBdHRhY2htZW50KG1fZW1iZWRkZWRWaWV3SUQs
IGF0dGFjaG1lbnRJRCk7Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0YWJsZUltYWdlUmVmZXJlbmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0VkaXRhYmxlSW1hZ2VSZWZlcmVuY2UuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODIxNWU0MTA4NTdjMzkzYTUxOTYyMGQ3NjgxODVhOGY2NmVmZTM3ZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRhYmxlSW1hZ2VSZWZlcmVuY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUwotICogSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVECi0gKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEKLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogSE9MREVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
RG9jdW1lbnQ7Ci0KLWNsYXNzIEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxFZGl0YWJsZUltYWdlUmVmZXJlbmNlPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxF
ZGl0YWJsZUltYWdlUmVmZXJlbmNlPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRWRpdGFibGVJbWFnZVJlZmVyZW5jZShkb2N1
bWVudCkpOwotICAgIH0KLQotICAgIH5FZGl0YWJsZUltYWdlUmVmZXJlbmNlKCk7Ci0KLSAgICBH
cmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fZW1iZWRkZWRWaWV3SUQ7IH0KLQotICAgIHZvaWQgYXNzb2NpYXRlV2l0aEF0dGFjaG1l
bnQoY29uc3QgU3RyaW5nJiBhdHRhY2htZW50SUQpOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0
IEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2UoRG9jdW1lbnQmKTsKLQotICAgIFdlYWtQdHI8RG9jdW1l
bnQ+IG1fZG9jdW1lbnQ7Ci0gICAgR3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgbV9lbWJl
ZGRlZFZpZXdJRDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MueWFtbAppbmRleCA1YWVjMDg1YmM4Y2UyMjc0ZTk4OWY5YmRmMjVhZmVmNGQ0MWQ1MzBh
Li4xZTA0MzU5ZWZlZWZlOTMwNDJkY2NlMDRlNGIwZjdiYTQ5ZjllMGMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy55YW1sCkBAIC04ODksOSArODg5LDYgQEAgdmlkZW9RdWFsaXR5SW5jbHVkZXNE
aXNwbGF5Q29tcG9zaXRpbmdFbmFibGVkOgogICBpbml0aWFsOiBmYWxzZQogICBjb25kaXRpb25h
bDogVklERU8KIAotZWRpdGFibGVJbWFnZXNFbmFibGVkOgotICBpbml0aWFsOiBmYWxzZQotCiBh
ZENsaWNrQXR0cmlidXRpb25FbmFibGVkOgogICBpbml0aWFsOiBmYWxzZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDIz
NDEzZDhjY2IwZWQzM2Y3N2YyZDg1ZjAzNjI4ZDg1NWUzMjczMDcuLjNlNjU5NWVhYmVlMWZjZDg5
NjRhMTRmZTQ2MDMxMjY2YzkwZWI2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC04MzEsMTIgKzgzMSw2IEBAIHZvaWQg
R3JhcGhpY3NMYXllcjo6dHJhdmVyc2UoR3JhcGhpY3NMYXllciYgbGF5ZXIsIGNvbnN0IFdURjo6
RnVuY3Rpb248dm9pZCAoR3JhCiAgICAgICAgIHRyYXZlcnNlKCptYXNrTGF5ZXIsIHRyYXZlcnNh
bEZ1bmMpOwogfQogCi1HcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBHcmFwaGljc0xheWVy
OjpuZXh0RW1iZWRkZWRWaWV3SUQoKQotewotICAgIHN0YXRpYyBHcmFwaGljc0xheWVyOjpFbWJl
ZGRlZFZpZXdJRCBuZXh0RW1iZWRkZWRWaWV3SUQ7Ci0gICAgcmV0dXJuICsrbmV4dEVtYmVkZGVk
Vmlld0lEOwotfQotCiB2b2lkIEdyYXBoaWNzTGF5ZXI6OmR1bXBMYXllcihUZXh0U3RyZWFtJiB0
cywgTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgdHMgPDwg
aW5kZW50IDw8ICIoIiA8PCAiR3JhcGhpY3NMYXllciI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggOGYwZmMzNjY0N2JlNTg5MjRj
ODA0OWNlZjZiYThiNjBmMjMzNWIyNy4uN2U0ZmUzZmQwMGNhNTlkOWI3ODJhOGEwNDBmNGQ1Yjc5
MTgwOWZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuaApAQCAtNDk5LDIxICs0OTksMTEgQEAgcHVibGljOgogICAgICAgICBNZWRpYSwK
ICAgICAgICAgQ2FudmFzLAogICAgICAgICBCYWNrZ3JvdW5kQ29sb3IsCi0gICAgICAgIFBsdWdp
biwKLSAgICAgICAgRW1iZWRkZWRWaWV3CisgICAgICAgIFBsdWdpbgogICAgIH07CiAKLSAgICBl
bnVtIGNsYXNzIENvbnRlbnRzTGF5ZXJFbWJlZGRlZFZpZXdUeXBlIDogdWludDhfdCB7Ci0gICAg
ICAgIE5vbmUgPSAwLAotICAgICAgICBFZGl0YWJsZUltYWdlLAotICAgIH07Ci0KLSAgICB1c2lu
ZyBFbWJlZGRlZFZpZXdJRCA9IHVpbnQ2NF90OwotICAgIHN0YXRpYyBFbWJlZGRlZFZpZXdJRCBu
ZXh0RW1iZWRkZWRWaWV3SUQoKTsKLQogICAgIC8vIFBhc3MgYW4gaW52YWxpZCBjb2xvciB0byBy
ZW1vdmUgdGhlIGNvbnRlbnRzIGxheWVyLgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1Rv
U29saWRDb2xvcihjb25zdCBDb2xvciYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50
c1RvRW1iZWRkZWRWaWV3KEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJFbWJlZGRlZFZpZXdU
eXBlLCBFbWJlZGRlZFZpZXdJRCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Q
bGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkgeyB9CiAg
ICAgdmlydHVhbCBib29sIHVzZXNDb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggOGFmMzE1M2UxMjlhMjk3MjkxMjI2YzBmM2QxM2Q1MTdl
MDlkNzUyNC4uNzgzMjRhZWM4NmRkYTMwYzA4ZWVjODJkZGYxYjE2OTMzNjFkM2Y4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwCkBAIC0zODAsMTEgKzM4MCw2IEBAIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBo
aWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmCiAj
ZW5kaWYKIH0KIAotUmVmPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVQ
bGF0Zm9ybUNBTGF5ZXJGb3JFbWJlZGRlZFZpZXcoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUg
bGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCwgUGxhdGZvcm1DQUxheWVy
Q2xpZW50KiBvd25lcikKLXsKLSAgICByZXR1cm4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVQbGF0
Zm9ybUNBTGF5ZXIobGF5ZXJUeXBlLCBvd25lcik7Ci19Ci0KIFJlZjxQbGF0Zm9ybUNBQW5pbWF0
aW9uPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1D
QUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xMTg1LDM5ICsxMTgwLDYgQEAgdm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgbm90ZUxheWVy
UHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzSW1hZ2VDaGFuZ2VkKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnNldENvbnRlbnRzVG9FbWJlZGRlZFZpZXcoR3JhcGhpY3NMYXllcjo6Q29udGVu
dHNMYXllckVtYmVkZGVkVmlld1R5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyOjpFbWJlZGRl
ZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCkKLXsKLSAgICBib29sIGNvbnRlbnRzTGF5ZXJDaGFuZ2Vk
ID0gZmFsc2U7Ci0KLSAgICBpZiAobGF5ZXJUeXBlICE9IEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRz
TGF5ZXJFbWJlZGRlZFZpZXdUeXBlOjpOb25lKSB7Ci0gICAgICAgIG1fY29udGVudHNMYXllclB1
cnBvc2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6RW1iZWRkZWRWaWV3OwotCi0gICAgICAgIFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIHBsYXRmb3JtVHlwZTsKLSAgICAgICAgc3dpdGNoIChs
YXllclR5cGUpIHsKLSAgICAgICAgY2FzZSBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyRW1i
ZWRkZWRWaWV3VHlwZTo6RWRpdGFibGVJbWFnZToKLSAgICAgICAgICAgIHBsYXRmb3JtVHlwZSA9
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlRWRpdGFibGVJbWFnZUxheWVyOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIHBsYXRmb3JtVHlwZSA9IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlTGF5ZXI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgh
bV9jb250ZW50c0xheWVyIHx8IG1fY29udGVudHNMYXllci0+bGF5ZXJUeXBlKCkgIT0gcGxhdGZv
cm1UeXBlIHx8IG1fY29udGVudHNMYXllci0+ZW1iZWRkZWRWaWV3SUQoKSAhPSBlbWJlZGRlZFZp
ZXdJRCkgewotICAgICAgICAgICAgbV9jb250ZW50c0xheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxh
eWVyRm9yRW1iZWRkZWRWaWV3KHBsYXRmb3JtVHlwZSwgZW1iZWRkZWRWaWV3SUQsIHRoaXMpOwot
ICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0Qo
KSk7Ci0gICAgICAgICAgICBjb250ZW50c0xheWVyQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAgIH0K
LSAgICB9IGVsc2UgewotICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNM
YXllclB1cnBvc2U6Ok5vbmU7Ci0gICAgICAgIGNvbnRlbnRzTGF5ZXJDaGFuZ2VkID0gbV9jb250
ZW50c0xheWVyOwotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOwotICAgIH0KLQot
ICAgIGlmIChjb250ZW50c0xheWVyQ2hhbmdlZCkKLSAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5n
ZWQoKTsKLX0KLQogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxh
eWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1
cnBvc2UpCiB7CiAgICAgaWYgKG1fY29udGVudHNMYXllciAmJiBwbGF0Zm9ybUxheWVyID09IG1f
Y29udGVudHNMYXllci0+cGxhdGZvcm1MYXllcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCBlN2UyNTM0NjBm
ZWRkYjUzZTFlZTg1ZTI3ZWI5NzFkMDBlM2I0MDBlLi5mZTdkYzU2YTQ3ZjNmYmU3OGQxMzFhYWE2
ZGMyOTY0NmUwZWMzMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtMTM5LDcgKzEzOSw2IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFu
aW1hdGlvbk5hbWUpIG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250
ZW50c1RvSW1hZ2UoSW1hZ2UqKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENvbnRlbnRzVG9FbWJlZGRlZFZpZXcoR3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXllckVtYmVk
ZGVkVmlld1R5cGUsIEdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKSBvdmVycmlkZTsKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIq
IGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCkBAIC0yMzUs
NyArMjM0LDYgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgUmVmPFBsYXRmb3JtQ0FMYXllcj4g
Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBQbGF0Zm9y
bUNBTGF5ZXJDbGllbnQqIG93bmVyKTsKICAgICB2aXJ0dWFsIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+
IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUxheWVyKiwgUGxhdGZvcm1DQUxheWVyQ2xp
ZW50KiBvd25lcik7Ci0gICAgdmlydHVhbCBSZWY8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVQbGF0
Zm9ybUNBTGF5ZXJGb3JFbWJlZGRlZFZpZXcoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIEdy
YXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lELCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVy
KTsKICAgICB2aXJ0dWFsIFJlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVQbGF0Zm9ybUNB
QW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCk7CiAKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIHByaW1hcnlMYXllcigpIGNvbnN0
IHsgcmV0dXJuIG1fc3RydWN0dXJhbExheWVyLmdldCgpID8gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0
KCkgOiBtX2xheWVyLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAppbmRleCAzNWIwNDg4ZjYyYzAwYTgx
MWQwYThiNTljNTJiOGI5MzdkYWY3OWI5Li42ZDQxZDk4MWEyYjAxYzcxOGNkMDk1ZTQ2YmFhZDMx
NzRiZWQ4ZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKQEAgLTIyMSw5ICsyMjEsNiBAQCBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBs
YXllclR5cGUpCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVJvb3RMYXllcjoK
ICAgICAgICAgdHMgPDwgInJvb3QtbGF5ZXIiOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlRWRpdGFibGVJbWFnZUxheWVyOgotICAgICAgICB0cyA8
PCAiZWRpdGFibGUtaW1hZ2UiOwotICAgICAgICBicmVhazsKICAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQmFja2Ryb3BMYXllcjoKICAgICAgICAgdHMgPDwgImJhY2tkcm9wLWxh
eWVyIjsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCmluZGV4IDE2MDk0YzM1MWU2N2QzZmM3MGYz
OTc3YjU0OTc0ZGQ4ZjMxNzYzOWQuLjUwNGIwMWMyNDQ0ZTllOTU5YzE4YzM0NmNiNWViN2JlY2Ew
ZDYzNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oCkBAIC03Niw3ICs3Niw2IEBAIHB1YmxpYzoKICAgICAgICAgTGF5
ZXJUeXBlTGlnaHRTeXN0ZW1CYWNrZHJvcExheWVyLAogICAgICAgICBMYXllclR5cGVEYXJrU3lz
dGVtQmFja2Ryb3BMYXllciwKICAgICAgICAgTGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVyTGF5ZXIs
Ci0gICAgICAgIExheWVyVHlwZUVkaXRhYmxlSW1hZ2VMYXllciwKICAgICAgICAgTGF5ZXJUeXBl
Q3VzdG9tLAogICAgIH07CiAgICAgZW51bSBGaWx0ZXJUeXBlIHsgTGluZWFyLCBOZWFyZXN0LCBU
cmlsaW5lYXIgfTsKQEAgLTI0Nyw4ICsyNDYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHcmFw
aGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlIGN1c3RvbUFwcGVhcmFuY2UoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUN1c3RvbUFwcGVhcmFuY2UoR3JhcGhpY3NMYXllcjo6
Q3VzdG9tQXBwZWFyYW5jZSkgPSAwOwogCi0gICAgdmlydHVhbCBHcmFwaGljc0xheWVyOjpFbWJl
ZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCgpIGNvbnN0ID0gMDsKLQogICAgIHZpcnR1YWwgVGls
ZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1Rl
eHRBdFBvaW50KENHQ29udGV4dFJlZiwgQ0dGbG9hdCB4LCBDR0Zsb2F0IHksIENHU2l6ZSBzY2Fs
ZSwgQ0dGbG9hdCBmb250U2l6ZSwgY29uc3QgY2hhciogdGV4dCwgc2l6ZV90IGxlbmd0aCwgQ0dG
bG9hdCBzdHJva2VXaWR0aEFzUGVyY2VudGFnZU9mRm9udFNpemUgPSAwLCBDb2xvciBzdHJva2VD
b2xvciA9IENvbG9yKCkpIGNvbnN0OwpAQCAtMzQ1LDcgKzM0Miw2IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGU+IHsKICAg
ICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGU6OkxheWVyVHlwZUxpZ2h0
U3lzdGVtQmFja2Ryb3BMYXllciwKICAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGU6OkxheWVyVHlwZURhcmtTeXN0ZW1CYWNrZHJvcExheWVyLAogICAgICAgICBXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZTo6TGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVy
TGF5ZXIsCi0gICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlOjpMYXll
clR5cGVFZGl0YWJsZUltYWdlTGF5ZXIsCiAgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlOjpMYXllclR5cGVDdXN0b20KICAgICA+OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNv
Y29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5oCmluZGV4IDc5ZjA0MWYyYjNkZjUwMDEzNGJmZTI1YWNkMTBmNDdiZTU2
YjI3YzEuLjk5MjJmNDhmYjcwZDA5Y2UwOGY2MmY0ZDFhMzdiMzg0OTU5MThlZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaApAQCAtMTc2LDggKzE3Niw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFNjcm9sbGluZ05vZGVJRChTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKSBvdmVycmlk
ZSB7IG1fc2Nyb2xsaW5nTm9kZUlEID0gbm9kZUlEOyB9CiAjZW5kaWYKIAotICAgIEdyYXBoaWNz
TGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEKCkgY29uc3Qgb3ZlcnJpZGU7Ci0K
ICAgICBUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIG92ZXJyaWRlOwogCiAgICAgUmVmPFBs
YXRmb3JtQ0FMYXllcj4gY2xvbmUoUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCmluZGV4IDg4YzVhMzNk
ODY3YzllNjY1MzBhYmY2MzRjNTBiYjY0ZmRlMWExZGUuLjI4ODQ2ZjZiOTE1NjExYjkyZWY3NDBk
OTNhOTgxZDAwMDNhNWI2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBA
IC0yMzQsNyArMjM0LDYgQEAgUGxhdGZvcm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNv
Y29hKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckMKICAgICBjYXNlIExheWVy
VHlwZVNjcm9sbENvbnRhaW5lckxheWVyOgogICAgICAgICAvLyBTY3JvbGwgY29udGFpbmVyIGxh
eWVycyBvbmx5IGhhdmUgc3BlY2lhbCBiZWhhdmlvciB3aXRoIFBsYXRmb3JtQ0FMYXllclJlbW90
ZS4KICAgICAgICAgLy8gZmFsbHRocm91Z2gKLSAgICBjYXNlIExheWVyVHlwZUVkaXRhYmxlSW1h
Z2VMYXllcjoKICAgICBjYXNlIExheWVyVHlwZVdlYkxheWVyOgogICAgICAgICBsYXllckNsYXNz
ID0gW1dlYkxheWVyIGNsYXNzXTsKICAgICAgICAgYnJlYWs7CkBAIC0xMDM5LDEyICsxMDM4LDYg
QEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0RXZlbnRSZWdpb24oY29uc3QgRXZlbnRS
ZWdpb24mIGV2ZW50UmVnaW9uKQogICAgIG1fZXZlbnRSZWdpb24gPSBldmVudFJlZ2lvbjsKIH0K
IAotR3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmVt
YmVkZGVkVmlld0lEKCkgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gMDsKLX0KLQogc3RhdGljIE5TU3RyaW5nICpsYXllckNvbnRlbnRzRm9ybWF0KGJvb2wg
YWNjZWxlcmF0ZXNEcmF3aW5nLCBib29sIHdhbnRzRGVlcENvbG9yLCBib29sIHN1cHBvcnRzU3Vi
cGl4ZWxBbnRpYWxpYXNlZEZvbnRzKQogewogI2lmIEhBVkUoSU9TVVJGQUNFX1JHQjEwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggNDEwNDljMmQ3N2JiZDY1
YTZkZGI5OWFjM2M5ODY1NjIxYTRhM2I4NS4uZTE2YTgxZTdlZTM3ZGQzYjczNDQwMzk3Yjk4NDMx
NDYyYTdjOWNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBA
IC0yMTIsMjQgKzIxMiw2IEBAIEltYWdlU2l6ZUNoYW5nZVR5cGUgUmVuZGVySW1hZ2U6OnNldElt
YWdlU2l6ZUZvckFsdFRleHQoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlIC8qCiAgICAgcmV0dXJuIElt
YWdlU2l6ZUNoYW5nZUZvckFsdFRleHQ7CiB9CiAKLWJvb2wgUmVuZGVySW1hZ2U6OmlzRWRpdGFi
bGVJbWFnZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFlbGVtZW50KCkgfHwgIWlzPEhUTUxJbWFnZUVs
ZW1lbnQ+KGVsZW1lbnQoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZG93
bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKS0+aGFzRWRpdGFibGVJbWFnZUF0dHJp
YnV0ZSgpOwotfQotICAgIAotYm9vbCBSZW5kZXJJbWFnZTo6cmVxdWlyZXNMYXllcigpIGNvbnN0
Ci17Ci0gICAgaWYgKFJlbmRlclJlcGxhY2VkOjpyZXF1aXJlc0xheWVyKCkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIAotICAgIGlmIChpc0VkaXRhYmxlSW1hZ2UoKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIFJlbmRlckltYWdl
OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxl
JiBuZXdTdHlsZSkKIHsKICAgICBpZiAoIWhhc0luaXRpYWxpemVkU3R5bGUoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggNTFiMDdiMDRhNzFhNTRmMzY2OWUyMzc5
YjEzNThhYTcyZjEwMzY5MS4uOWQyNzlhNTcwZDFmNDhkNzI1OGVkOTQzOTAyYmUyOTExODg3NjMx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTc4LDggKzc4LDYg
QEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNOb25CaXRtYXBJbWFnZSgpIGNvbnN0OwogCi0gICAg
Ym9vbCBpc0VkaXRhYmxlSW1hZ2UoKSBjb25zdDsKLQogcHJvdGVjdGVkOgogICAgIHZvaWQgd2ls
bEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKQEAgLTEwOSw4ICsxMDcsNiBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBpc0ltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IGJvb2wgaXNSZW5kZXJJbWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICAK
LSAgICBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgcGFp
bnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogICAg
IHZvaWQgcGFpbnRJbmNvbXBsZXRlSW1hZ2VPdXRsaW5lKFBhaW50SW5mbyYsIExheW91dFBvaW50
LCBMYXlvdXRVbml0KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCmluZGV4IDk5ZTgyNGQxMzU3MDYzOWUzZTRkNDQzYzk2NWYxNDRlOWQ0OGY0NDYuLmZkMDJi
NTFhMTI2YTAzMDI5MjcyZjNmZDE4YTg1MWYyMGViZDA4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNjA3LDcgKzYwNyw2IEBAIGJvb2wgUmVuZGVyTGF5
ZXI6OnNob3VsZEJlTm9ybWFsRmxvd09ubHkoKSBjb25zdAogICAgICAgICB8fCByZW5kZXJlcigp
LmlzVmlkZW8oKQogICAgICAgICB8fCByZW5kZXJlcigpLmlzRW1iZWRkZWRPYmplY3QoKQogICAg
ICAgICB8fCByZW5kZXJlcigpLmlzUmVuZGVySUZyYW1lKCkKLSAgICAgICAgfHwgKHJlbmRlcmVy
KCkuaXNSZW5kZXJJbWFnZSgpICYmIGRvd25jYXN0PFJlbmRlckltYWdlPihyZW5kZXJlcigpKS5p
c0VkaXRhYmxlSW1hZ2UoKSkKICAgICAgICAgfHwgKHJlbmRlcmVyKCkuc3R5bGUoKS5zcGVjaWZp
ZXNDb2x1bW5zKCkgJiYgIWlzUmVuZGVyVmlld0xheWVyKCkpCiAgICAgICAgIHx8IHJlbmRlcmVy
KCkuaXNJbkZsb3dSZW5kZXJGcmFnbWVudGVkRmxvdygpOwogfQpAQCAtNjUxNiw3ICs2NTE1LDYg
QEAgYm9vbCBSZW5kZXJMYXllcjo6c2hvdWxkQmVTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0CiAg
ICAgICAgIHx8IHJlbmRlcmVyKCkuaXNDYW52YXMoKQogICAgICAgICB8fCByZW5kZXJlcigpLmlz
VmlkZW8oKQogICAgICAgICB8fCByZW5kZXJlcigpLmlzRW1iZWRkZWRPYmplY3QoKQotICAgICAg
ICB8fCAocmVuZGVyZXIoKS5pc1JlbmRlckltYWdlKCkgJiYgZG93bmNhc3Q8UmVuZGVySW1hZ2U+
KHJlbmRlcmVyKCkpLmlzRWRpdGFibGVJbWFnZSgpKQogICAgICAgICB8fCByZW5kZXJlcigpLmlz
UmVuZGVySUZyYW1lKCkKICAgICAgICAgfHwgcmVuZGVyZXIoKS5pc0luRmxvd1JlbmRlckZyYWdt
ZW50ZWRGbG93KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCmluZGV4IDIxMjg4ZjZkODhlY2NkYmRhOTU2ODEyYWYyYzgwYTg5NDBmZmUz
MjEuLmVjZmY1ZDI0MzUxZTI5MzU4MjcxYjU5NjQzMDQ3YTkxOGRkOTgwOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xMDY5LDE0
ICsxMDY5LDYgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24o
Y29uc3QgUmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5jZXMKICAgICAgICAgdXBkYXRlQ29udGVu
dHNSZWN0cygpOwogICAgIH0KIAotICAgIGlmIChpczxSZW5kZXJJbWFnZT4ocmVuZGVyZXIoKSkg
JiYgZG93bmNhc3Q8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKCkpLmlzRWRpdGFibGVJbWFnZSgpKSB7
Ci0gICAgICAgIGF1dG8gZWxlbWVudCA9IHJlbmRlcmVyKCkuZWxlbWVudCgpOwotICAgICAgICBp
ZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkpIHsKLSAgICAgICAgICAgIG1fZ3JhcGhp
Y3NMYXllci0+c2V0Q29udGVudHNUb0VtYmVkZGVkVmlldyhHcmFwaGljc0xheWVyOjpDb250ZW50
c0xheWVyRW1iZWRkZWRWaWV3VHlwZTo6RWRpdGFibGVJbWFnZSwgZG93bmNhc3Q8SFRNTEltYWdl
RWxlbWVudD4oZWxlbWVudCktPmVkaXRhYmxlSW1hZ2VWaWV3SUQoKSk7Ci0gICAgICAgICAgICBs
YXllckNvbmZpZ0NoYW5nZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgaWYgKGxh
eWVyQ29uZmlnQ2hhbmdlZCkKICAgICAgICAgdXBkYXRlUGFpbnRpbmdQaGFzZXMoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApp
bmRleCBhMmI1OGU2NjY5MDY4NWZjZTZiMWE4ODM0OWM3ZmYzY2U2ODUyMjZhLi5jZTlhZGRmODgw
Mzc3NWFlOTY1MmZiODJiM2EyNzM4ODQ1MzBhY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMjQzOCw3ICsyNDM4LDYg
QEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcihj
b25zdCBSZW5kZXJMYXllciYgbGF5ZXIsIFIKICAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGlu
Z0ZvclZpZGVvKHJlbmRlcmVyKQogICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yRnJh
bWUocmVuZGVyZXIsIHF1ZXJ5RGF0YSkKICAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0Zv
clBsdWdpbihyZW5kZXJlciwgcXVlcnlEYXRhKQotICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0
aW5nRm9yRWRpdGFibGVJbWFnZShyZW5kZXJlcikKICAgICAgICAgfHwgcmVxdWlyZXNDb21wb3Np
dGluZ0Zvck92ZXJmbG93U2Nyb2xsaW5nKCpyZW5kZXJlci5sYXllcigpLCBxdWVyeURhdGEpOwog
fQogCkBAIC0yNDk5LDcgKzI0OTgsNiBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVx
dWlyZXNPd25CYWNraW5nU3RvcmUoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyLCBjbwogICAgICAg
ICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yVmlkZW8ocmVuZGVyZXIpCiAgICAgICAgIHx8IHJl
cXVpcmVzQ29tcG9zaXRpbmdGb3JGcmFtZShyZW5kZXJlciwgcXVlcnlEYXRhKQogICAgICAgICB8
fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yUGx1Z2luKHJlbmRlcmVyLCBxdWVyeURhdGEpCi0gICAg
ICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JFZGl0YWJsZUltYWdlKHJlbmRlcmVyKQogICAg
ICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxpbmcobGF5ZXIsIHF1
ZXJ5RGF0YSkKICAgICAgICAgfHwgbmVlZHNDb250ZW50c0NvbXBvc2l0aW5nTGF5ZXIobGF5ZXIp
CiAgICAgICAgIHx8IHJlbmRlcmVyLmlzVHJhbnNwYXJlbnQoKQpAQCAtMjU1MSw4ICsyNTQ5LDYg
QEAgT3B0aW9uU2V0PENvbXBvc2l0aW5nUmVhc29uPiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJl
YXNvbnNGb3JDb21wb3NpdGluZyhjb25zdAogICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGlu
Z1JlYXNvbjo6UGx1Z2luKTsKICAgICBlbHNlIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yRnJh
bWUocmVuZGVyZXIsIHF1ZXJ5RGF0YSkpCiAgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5n
UmVhc29uOjpJRnJhbWUpOwotICAgIGVsc2UgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JFZGl0
YWJsZUltYWdlKHJlbmRlcmVyKSkKLSAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFz
b246OkVtYmVkZGVkVmlldyk7CiAKICAgICBpZiAoKGNhblJlbmRlcjNEVHJhbnNmb3JtcygpICYm
IHJlbmRlcmVyLnN0eWxlKCkuYmFja2ZhY2VWaXNpYmlsaXR5KCkgPT0gQmFja2ZhY2VWaXNpYmls
aXR5OjpIaWRkZW4pKQogICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6QmFj
a2ZhY2VWaXNpYmlsaXR5SGlkZGVuKTsKQEAgLTMwMzcsMTggKzMwMzMsNiBAQCBib29sIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBsdWdpbihSZW5kZXJMYXll
ck1vZGVsT2JqZWN0JgogICAgIHJldHVybiAoY29udGVudEJveC5oZWlnaHQoKSAqIGNvbnRlbnRC
b3gud2lkdGgoKSA+IDEpOwogfQogICAgIAotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJl
cXVpcmVzQ29tcG9zaXRpbmdGb3JFZGl0YWJsZUltYWdlKFJlbmRlckxheWVyTW9kZWxPYmplY3Qm
IHJlbmRlcmVyKSBjb25zdAotewotICAgIGlmICghcmVuZGVyZXIuaXNSZW5kZXJJbWFnZSgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiBpbWFnZSA9IGRvd25jYXN0PFJlbmRl
ckltYWdlPihyZW5kZXJlcik7Ci0gICAgaWYgKCFpbWFnZS5pc0VkaXRhYmxlSW1hZ2UoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGJvb2wgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yRnJhbWUoUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCYgcmVuZGVyZXIsIFJlcXVpcmVzQ29tcG9zaXRpbmdEYXRhJiBxdWVyeURhdGEp
IGNvbnN0CiB7CiAgICAgaWYgKCFpczxSZW5kZXJXaWRnZXQ+KHJlbmRlcmVyKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAppbmRleCA3YTg1
YjI2OTZjNjhhYTQwZDQyODFmM2JjMjJjNmJjZDZiODgwMDVhLi4zNGVhNTg3NTdiZjdjNWJmYzk5
N2MwNDFjODhlNWMzOGI4NzUxNTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC04Myw3ICs4Myw2IEBAIGVudW0gY2xhc3MgQ29t
cG9zaXRpbmdSZWFzb24gewogICAgIFdpbGxDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMSA8PCAyNCwKICAgICBSb290ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDEgPDwgMjUsCiAgICAgSXNvbGF0ZXNDb21wb3NpdGVkQmxlbmRpbmdEZXNjZW5kYW50cyAg
PSAxIDw8IDI2LAotICAgIEVtYmVkZGVkVmlldyAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
MSA8PCAyNywKIH07CiAKIGVudW0gY2xhc3MgU2Nyb2xsQ29vcmRpbmF0aW9uUm9sZSB7CkBAIC00
OTgsNyArNDk3LDYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JT
Y3JvbGxhYmxlRnJhbWUoUmVxdWlyZXNDb21wb3NpdGluZ0RhdGEmKSBjb25zdDsKICAgICBib29s
IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihSZW5kZXJMYXllck1vZGVsT2JqZWN0Jiwg
Y29uc3QgUmVuZGVyTGF5ZXImLCBSZXF1aXJlc0NvbXBvc2l0aW5nRGF0YSYpIGNvbnN0OwogICAg
IGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsaW5nKGNvbnN0IFJlbmRl
ckxheWVyJiwgUmVxdWlyZXNDb21wb3NpdGluZ0RhdGEmKSBjb25zdDsKLSAgICBib29sIHJlcXVp
cmVzQ29tcG9zaXRpbmdGb3JFZGl0YWJsZUltYWdlKFJlbmRlckxheWVyTW9kZWxPYmplY3QmKSBj
b25zdDsKICAgICBJbmRpcmVjdENvbXBvc2l0aW5nUmVhc29uIGNvbXB1dGVJbmRpcmVjdENvbXBv
c2l0aW5nUmVhc29uKGNvbnN0IFJlbmRlckxheWVyJiwgYm9vbCBoYXNDb21wb3NpdGVkRGVzY2Vu
ZGFudHMsIGJvb2wgaGFzM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnRzLCBib29sIHBhaW50c0ludG9Q
cm92aWRlZEJhY2tpbmcpIGNvbnN0OwogCiAgICAgc3RhdGljIFNjcm9sbFBvc2l0aW9uaW5nQmVo
YXZpb3IgbGF5ZXJTY3JvbGxCZWhhaGF2aW9yUmVsYXRpdmVUb0NvbXBvc2l0ZWRBbmNlc3Rvcihj
b25zdCBSZW5kZXJMYXllciYsIGNvbnN0IFJlbmRlckxheWVyJiBjb21wb3NpdGVkQW5jZXN0b3Ip
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDc1MDk3N2E4ZDRiODljMjAzYjRkMzQz
MzgwNDhlYTNiYTBiNmZlOGQuLjI0OGE2ZDZjYzMxMDRhODdlNzM4YjhkMzlmODdiYTZkMDJlZDI5
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE1MCw3ICsxNTAsNiBAQCBNRVNT
QUdFX1JFQ0VJVkVSUyA9IFwKIAlVSVByb2Nlc3MvV2ViUGFnZVByb3h5IFwKIAlVSVByb2Nlc3Mv
VmlzaXRlZExpbmtTdG9yZSBcCiAJVUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVw
ZGF0ZVByb3ZpZGVyUHJveHkgXAotCVVJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xs
ZXIgXAogCVVJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciBcCiAJVUlQ
cm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5IFwKIAlVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9z
L1BlbmNpbEtpdFNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1BlbmNpbEtp
dFNQSS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzQ0OTFjZWE1NTdhOTc1N2E3
ZGQ0ZTE4Mzc5Yzg5YjU2MTMxZDdjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9QZW5jaWxLaXRTUEku
aAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgSEFWRShQ
RU5DSUxLSVQpCi0KLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotCi0jaW1wb3J0IDxQZW5j
aWxLaXQvUGVuY2lsS2l0Lmg+Ci0jaW1wb3J0IDxQZW5jaWxLaXQvUEtDYW52YXNWaWV3X1ByaXZh
dGUuaD4KLSNpbXBvcnQgPFBlbmNpbEtpdC9QS0RyYXdpbmdfUHJpdmF0ZS5oPgotI2ltcG9ydCA8
UGVuY2lsS2l0L1BLSW1hZ2VSZW5kZXJlci5oPgotI2ltcG9ydCA8UGVuY2lsS2l0L1BLU3Ryb2tl
Lmg+Ci0KLSNlbHNlCi0KLSNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+Ci0KLUBjbGFzcyBQS0NhbnZh
c1ZpZXc7Ci1AY2xhc3MgUEtEcmF3aW5nOwotQGNsYXNzIFBLSW5rOwotQGNsYXNzIFBLSW5saW5l
SW5rUGlja2VyOwotCi10eXBlZGVmIE5TU3RyaW5nICogUEtJbmtJZGVudGlmaWVyOwotCi1AcHJv
dG9jb2wgUEtDYW52YXNWaWV3RGVsZWdhdGUKLUBvcHRpb25hbAotLSAodm9pZClkcmF3aW5nRGlk
Q2hhbmdlOihQS0NhbnZhc1ZpZXcgKiljYW52YXNWaWV3OwotQGVuZAotCi1AcHJvdG9jb2wgUEtJ
bmxpbmVJbmtQaWNrZXJEZWxlZ2F0ZSA8TlNPYmplY3Q+Ci1Ab3B0aW9uYWwKLS0gKHZvaWQpaW5s
aW5lSW5rUGlja2VyOihQS0lubGluZUlua1BpY2tlciAqKWlubGluZUlua1BpY2tlciBkaWRTZWxl
Y3RUb29sOihQS0lua0lkZW50aWZpZXIpaWRlbnRpZmVyOwotLSAodm9pZClpbmxpbmVJbmtQaWNr
ZXJEaWRUb2dnbGVSdWxlcjooUEtJbmxpbmVJbmtQaWNrZXIgKilpbmxpbmVJbmtQaWNrZXI7Ci0t
ICh2b2lkKWlubGluZUlua1BpY2tlcjooUEtJbmxpbmVJbmtQaWNrZXIgKilpbmxpbmVJbmtQaWNr
ZXIgZGlkU2VsZWN0Q29sb3I6KFVJQ29sb3IgKiljb2xvcjsKLS0gKFVJVmlld0NvbnRyb2xsZXIg
Kil2aWV3Q29udHJvbGxlckZvclBvcG92ZXJQcmVzZW50YXRpb25Gcm9tSW5saW5lSW5rUGlja2Vy
OihQS0lubGluZUlua1BpY2tlciAqKWlubGluZUlua1BpY2tlcjsKLUBlbmQKLQotQGludGVyZmFj
ZSBQS0NhbnZhc1ZpZXcgOiBVSVZpZXcKLQotQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1p
c0ZpbmdlckRyYXdpbmdFbmFibGVkKSBCT09MIGZpbmdlckRyYXdpbmdFbmFibGVkOwotQHByb3Bl
cnR5IChub25hdG9taWMpIEJPT0wgcnVsZXJFbmFibGVkOwotQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHkpIFBLRHJhd2luZyAqZHJhd2luZzsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcp
IFBLSW5rICppbms7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgTlNPYmplY3Q8UEtDYW52
YXNWaWV3RGVsZWdhdGU+ICpkcmF3aW5nRGVsZWdhdGU7Ci0KLUBlbmQKLQotQGludGVyZmFjZSBQ
S0lubGluZUlua1BpY2tlciA6IFVJQ29udHJvbAotCi1AcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSkgUEtJbmsgKnNlbGVjdGVkSW5rOwotLSAodm9pZClzZXRTZWxlY3RlZEluazooUEtJbmsgKilz
ZWxlY3RlZEluayBhbmltYXRlZDooQk9PTClhbmltYXRlZDsKLUBwcm9wZXJ0eSAobm9uYXRvbWlj
LCB3ZWFrKSBpZDxQS0lubGluZUlua1BpY2tlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKLQotQGVuZAot
Ci1AaW50ZXJmYWNlIFBLRHJhd2luZyA6IE5TT2JqZWN0Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0
V2l0aERhdGE6KE5TRGF0YSAqKWRhdGEgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3I7Ci0tIChOU0Rh
dGEgKilzZXJpYWxpemU7Ci0KLUBlbmQKLQotQGludGVyZmFjZSBQS0ltYWdlUmVuZGVyZXIgOiBO
U09iamVjdAotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTaXplOihDR1NpemUpc2l6ZSBzY2Fs
ZTooQ0dGbG9hdClzY2FsZSByZW5kZXJRdWV1ZTooZGlzcGF0Y2hfcXVldWVfdClyZW5kZXJRdWV1
ZTsKLS0gKHZvaWQpcmVuZGVyRHJhd2luZzooUEtEcmF3aW5nICopZHJhd2luZyBjb21wbGV0aW9u
Oih2b2lkKF4pKFVJSW1hZ2UgKmltYWdlKSljb21wbGV0aW9uQmxvY2s7Ci0KLUBlbmQKLQotI2Vu
ZGlmCi0KLSNlbmRpZiAvLyBIQVZFKFBFTkNJTEtJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5jcHAKaW5kZXggMjQ3ZWFhYjk1NmZjOTM1
YTZiM2M1MGUxNmQ2YTU1MGQ5ZTFhNDRlZi4uOTg2M2IyZGRmMmQ5NzBlYWQyNjIwNjI2NDQxZjdl
YjI1NWNjMTE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbi5jcHAKQEAgLTk4LDcgKzk4LDYgQEAgdm9pZCBGb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29k
ZXIgPDwgcGxhY2Vob2xkZXI7CiAgICAgZW5jb2RlciA8PCBsYWJlbDsKICAgICBlbmNvZGVyIDw8
IGFyaWFMYWJlbDsKLSAgICBlbmNvZGVyIDw8IGVtYmVkZGVkVmlld0lEOwogICAgIGVuY29kZXIg
PDwgZm9jdXNlZEVsZW1lbnRJZGVudGlmaWVyOwogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5U
KQogICAgIGVuY29kZXIgPDwgaGFzU3VnZ2VzdGlvbnM7CkBAIC0yMjAsOSArMjE5LDYgQEAgYm9v
bCBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBGb2N1c2VkRWxlbWVudEluZm8KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5hcmlh
TGFiZWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5lbWJlZGRlZFZpZXdJRCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmZvY3VzZWRFbGVtZW50SWRlbnRpZmllcikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbi5oCmluZGV4IDQzYjNlNzY0ZDNkOWQxZTcxODc2N2NiZDQwN2VhNDQx
MmJjNzU3YmIuLmVmM2ZjYjBiMjFjOGM5NmIzMTM3ZjJlZWUxYmVhZWI2OWY3MGM1ZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Gb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmgKQEAg
LTEzMyw3ICsxMzMsNiBAQCBzdHJ1Y3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiB7CiAgICAg
U3RyaW5nIHBsYWNlaG9sZGVyOwogICAgIFN0cmluZyBsYWJlbDsKICAgICBTdHJpbmcgYXJpYUxh
YmVsOwotICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVk
Vmlld0lEOwogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIGJvb2wgaGFzU3VnZ2Vz
dGlvbnMgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDM3YTk1YzE1MzBmOTAxMTJmNWVlYjM4MTdmYTQzMzMx
YTk3YzcyYjEuLjAxMGNhMmM1YWI1MmRhZGM5NTMwZTU1Mjg1Y2JkZDM1YzFhMDMwYzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJh
Y2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTM1Miw3ICszNTIsNiBAQCB2b2lkIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgQwogICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZVNoYXBlTGF5ZXI6CiAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZVNjcm9sbENvbnRhaW5lckxheWVyOgotICAgIGNhc2UgV2ViQ29yZTo6UGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVFZGl0YWJsZUltYWdlTGF5ZXI6CiAgICAgY2FzZSBXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24uaAppbmRleCBkZmJmYWIyNGE0MDBjOGMxOGY3YjI4M2NmY2I2NzFmYzlmNWJhZjYwLi4wMTI0
OTRlYmYyNTAzZjYzZTBkNWE3M2VhZWUyYTA0M2JmMjdhMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24uaApAQCAtMTA1LDggKzEwNSw2IEBAIHB1YmxpYzoKICAgICAgICAgV2Vi
Q29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVySUQ7CiAgICAgICAgIFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIHR5cGU7CiAKLSAgICAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQ7Ci0KICAgICAg
ICAgdWludDMyX3QgaG9zdGluZ0NvbnRleHRJRDsKICAgICAgICAgZmxvYXQgaG9zdGluZ0Rldmlj
ZVNjYWxlRmFjdG9yOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0K
aW5kZXggMWU3N2E3NzE2MzdlMDc1ZjM5YTdmOTZhMDFhY2IzNDQ4ZjllOTY3ZS4uZGM5OWNkMTY5
ZTE0NDdhMDQzOTIzNTY5MGExNTI2NmI2MWE5MGFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5tbQpAQCAtNDUsNyArNDUsNiBAQCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
biYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Om9wZXJhdG9yPShSZW1vdGVMYXllclRyZQog
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzOjpMYXll
ckNyZWF0aW9uUHJvcGVydGllcygpCiAgICAgOiBsYXllcklEKDApCiAgICAgLCB0eXBlKFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXIpCi0gICAgLCBlbWJlZGRlZFZpZXdJ
RCgwKQogICAgICwgaG9zdGluZ0NvbnRleHRJRCgwKQogICAgICwgaG9zdGluZ0RldmljZVNjYWxl
RmFjdG9yKDEpCiB7CkBAIC01NSw3ICs1NCw2IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlCiB7
CiAgICAgZW5jb2RlciA8PCBsYXllcklEOwogICAgIGVuY29kZXIgPDwgdHlwZTsKLSAgICBlbmNv
ZGVyIDw8IGVtYmVkZGVkVmlld0lEOwogICAgIGVuY29kZXIgPDwgaG9zdGluZ0NvbnRleHRJRDsK
ICAgICBlbmNvZGVyIDw8IGhvc3RpbmdEZXZpY2VTY2FsZUZhY3RvcjsKIH0KQEAgLTY5LDkgKzY3
LDYgQEAgYXV0byBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3Bl
cnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC50eXBlKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LmVtYmVkZGVkVmlld0lEKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmhvc3RpbmdDb250ZXh0
SUQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCA0NDhiYzkyMWI2NDIwYTJiYjBiMzQ0ZjM3ZmQxMDFk
YzQ4NGYwNjA5Li4xNWY1MDAwOTc4ZTU4ZGMyNzVkODkwNGNhYTE2OTQ0ZmU2NmZlYTcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTEzMzAsMTAgKzEzMzAs
NiBAQCBWaWRlb1F1YWxpdHlJbmNsdWRlc0Rpc3BsYXlDb21wb3NpdGluZ0VuYWJsZWQ6CiAgIGRl
ZmF1bHRWYWx1ZTogZmFsc2UKICAgY29uZGl0aW9uOiBFTkFCTEUoVklERU8pCiAKLUVkaXRhYmxl
SW1hZ2VzRW5hYmxlZDoKLSAgdHlwZTogYm9vbAotICBkZWZhdWx0VmFsdWU6IGZhbHNlCi0KIFNo
b3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3OgogICBkZWZhdWx0
VmFsdWU6IGZhbHNlCiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA1NmY0
NTY5ZGIxZDNiYjQyMGRkMWZkNWNmMWZiMzM2MDM2NDdmNTRlLi4yM2VkNGYwMmNiODE3ODJhYzFl
M2ExZWZhNTRmMzY0MjAyYTcwZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00NDIsMTAg
KzQ0Miw4IEBAIFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVySU9TLm1tCiAKIFVJUHJvY2Vzcy9pb3MvQXBwS2l0U29mdExpbmsubW0KIFVJUHJvY2Vz
cy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCi1VSVByb2Nlc3MvaW9zL0VkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvaW9zL0lucHV0Vmlld1VwZGF0ZURlZmVycmVy
Lm1tCiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCi1VSVByb2Nlc3MvaW9zL1Bl
bmNpbEtpdFNvZnRMaW5rLm1tCiBVSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0K
IFVJUHJvY2Vzcy9pb3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlSU9T
Lm1tCiBVSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0KQEAgLTQ2
MCw4ICs0NTgsNiBAQCBVSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmll
dy5tbQogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tIEBuby11bmlmeQogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gQG5vLXVuaWZ5CiBVSVByb2Nlc3MvaW9z
L1dLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIubW0KLVVJUHJvY2Vzcy9pb3MvV0tEcmF3aW5n
Q29vcmRpbmF0b3IubW0KLVVJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5tbQogVUlQcm9jZXNz
L2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TT2JqQ1NlY3VyaXR5T3JpZ2luLm1tCiBVSVByb2Nlc3MvaW9zL1dLSGln
aGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIubW0KQEAgLTY1Nyw3ICs2NTMsNiBAQCBX
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLm1tIEBuby11bmlmeQogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvci5tbQogCiAvLyBEZXJpdmVkIFNvdXJjZXMKLUVkaXRhYmxl
SW1hZ2VDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcAogR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKIEdQVVByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcAogR1BVUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYjFkNDEyNDFiNTli
ODFkNDlhZDYzNmUxMzUzNmZmN2JiNTQ3ODM4NC4uY2U1MTRiOTIxMWM0OGE2MjhiYTdjNmI2Y2Zk
NTUyMGU1OThhNjJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCkBAIC01MTQsNyArNTE0LDYgQEAgLSAodm9pZClfc2V0dXBQYWdlQ29uZmln
dXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JilwYWdlQ29uZmlndXJhdGlvbgog
CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldENvbG9yRmlsdGVyRW5h
YmxlZCghIVtfY29uZmlndXJhdGlvbiBfY29sb3JGaWx0ZXJFbmFibGVkXSk7CiAKLSAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0RWRpdGFibGVJbWFnZXNFbmFibGVkKCEh
W19jb25maWd1cmF0aW9uIF9lZGl0YWJsZUltYWdlc0VuYWJsZWRdKTsKICAgICBwYWdlQ29uZmln
dXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0VW5kb01hbmFnZXJBUElFbmFibGVkKCEhW19jb25m
aWd1cmF0aW9uIF91bmRvTWFuYWdlckFQSUVuYWJsZWRdKTsKIAogI2lmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCA0OWFlZTZlYjQ2M2Y4
Y2Y2OGEwNmE2OWU2Nzg5NGE3OWExMmE4MGIxLi44MzY5M2NiZmY0NjkxYzQxMDJkZWU2MjM1Y2Ux
NTZlMDVkZmJjODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtMTczLDcgKzE3Myw2IEBA
IEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXdDb25maWd1cmF0aW9uIHsKICAgICBCT09MIF9pbmNv
bXBsZXRlSW1hZ2VCb3JkZXJFbmFibGVkOwogICAgIEJPT0wgX3Nob3VsZERlZmVyQXN5bmNocm9u
b3VzU2NyaXB0c1VudGlsQWZ0ZXJEb2N1bWVudExvYWQ7CiAgICAgQk9PTCBfZHJhd3NCYWNrZ3Jv
dW5kOwotICAgIEJPT0wgX2VkaXRhYmxlSW1hZ2VzRW5hYmxlZDsKICAgICBCT09MIF91bmRvTWFu
YWdlckFQSUVuYWJsZWQ7CiAKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9tZWRpYUNvbnRlbnRU
eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDsKQEAgLTI2OSw3ICsyNjgsNiBAQCAtIChpbnN0
YW5jZXR5cGUpaW5pdAogICAgIF9zaG91bGREZWZlckFzeW5jaHJvbm91c1NjcmlwdHNVbnRpbEFm
dGVyRG9jdW1lbnRMb2FkID0gWUVTOwogICAgIF9kcmF3c0JhY2tncm91bmQgPSBZRVM7CiAKLSAg
ICBfZWRpdGFibGVJbWFnZXNFbmFibGVkID0gTk87CiAgICAgX3VuZG9NYW5hZ2VyQVBJRW5hYmxl
ZCA9IE5POwogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKQEAgLTQ0Niw3ICs0NDQsNiBAQCAtIChp
ZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKICAgICBjb25maWd1cmF0aW9uLT5fc2hvdWxk
RGVmZXJBc3luY2hyb25vdXNTY3JpcHRzVW50aWxBZnRlckRvY3VtZW50TG9hZCA9IHNlbGYtPl9z
aG91bGREZWZlckFzeW5jaHJvbm91c1NjcmlwdHNVbnRpbEFmdGVyRG9jdW1lbnRMb2FkOwogICAg
IGNvbmZpZ3VyYXRpb24tPl9kcmF3c0JhY2tncm91bmQgPSBzZWxmLT5fZHJhd3NCYWNrZ3JvdW5k
OwogCi0gICAgY29uZmlndXJhdGlvbi0+X2VkaXRhYmxlSW1hZ2VzRW5hYmxlZCA9IHNlbGYtPl9l
ZGl0YWJsZUltYWdlc0VuYWJsZWQ7CiAgICAgY29uZmlndXJhdGlvbi0+X3VuZG9NYW5hZ2VyQVBJ
RW5hYmxlZCA9IHNlbGYtPl91bmRvTWFuYWdlckFQSUVuYWJsZWQ7CiAKICAgICByZXR1cm4gY29u
ZmlndXJhdGlvbjsKQEAgLTExODgsMTYgKzExODUsNiBAQCAtIChCT09MKV9hbGxvd01lZGlhQ29u
dGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjawogICAgIHJldHVybiBf
YWxsb3dNZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2s7
CiB9CiAKLS0gKHZvaWQpX3NldEVkaXRhYmxlSW1hZ2VzRW5hYmxlZDooQk9PTCllbmFibGVkCi17
Ci0gICAgX2VkaXRhYmxlSW1hZ2VzRW5hYmxlZCA9IGVuYWJsZWQ7Ci19Ci0KLS0gKEJPT0wpX2Vk
aXRhYmxlSW1hZ2VzRW5hYmxlZAotewotICAgIHJldHVybiBfZWRpdGFibGVJbWFnZXNFbmFibGVk
OwotfQotCiAtICh2b2lkKV9zZXRVbmRvTWFuYWdlckFQSUVuYWJsZWQ6KEJPT0wpZW5hYmxlZAog
ewogICAgIF91bmRvTWFuYWdlckFQSUVuYWJsZWQgPSBlbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvblByaXZhdGUuaAppbmRleCA0NzhhZmIwZTVhZjZiYjg4YTgxZDk5Zjc1ZTUyZjhhZDMy
NThlZTBmLi45OTVlMjFkOGZlNTI1ZjYyMmM3MTI3YzFlZDk1OTJjOWFjZTRlN2VjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvblByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaApAQCAtMTIyLDcgKzEyMiw2IEBAIHR5cGVkZWYg
TlNfRU5VTShOU1VJbnRlZ2VyLCBfV0tXZWJWaWV3Q2F0ZWdvcnkpIHsKIC8vIFRoZSBpbnB1dCBv
ZiB0aGlzIFNQSSBpcyBhbiBhcnJheSBvZiBpbWFnZSBVVEkgKFVuaWZvcm0gVHlwZSBJZGVudGlm
aWVyKS4KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldEFkZGl0aW9uYWxT
dXBwb3J0ZWRJbWFnZVR5cGVzOikgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FkZGl0aW9uYWxTdXBw
b3J0ZWRJbWFnZVR5cGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4y
KSk7CiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEVkaXRhYmxlSW1hZ2VzRW5h
YmxlZDopIEJPT0wgX2VkaXRhYmxlSW1hZ2VzRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjE0LjQpLCBpb3MoMTIuMikpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0
VW5kb01hbmFnZXJBUElFbmFibGVkOikgQk9PTCBfdW5kb01hbmFnZXJBUElFbmFibGVkIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHNldHRlcj1fc2V0V2ViVmlld0NhdGVnb3J5OikgX1dLV2ViVmlld0NhdGVnb3J5IF93ZWJW
aWV3Q2F0ZWdvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldElnbm9yZXNBcHBCb3Vu
ZERvbWFpbnM6KSBCT09MIF9pZ25vcmVzQXBwQm91bmREb21haW5zIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MuaAppbmRleCBiYjk4ZDgxZjQ0NmI4NGY4MmI3
MzNkY2MyYWMxZTY3OGU4NzM5MmUyLi5mN2UyZTMzMWQxYTI0YWQxNmZhYmE4MmM3NzgyYjM4YjFl
ZjQ5OTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2Vi
Vmlld0lPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
SU9TLmgKQEAgLTEzMSw3ICsxMzEsNiBAQAogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIEJPT0wgX2lzQmFja2dyb3VuZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
Qk9PTCBfYWxsb3dzRG91YmxlVGFwR2VzdHVyZXM7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIEJPT0wgX3N0eWx1c1RhcEdlc3R1cmVTaG91bGRDcmVhdGVFZGl0YWJsZUltYWdlOwog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9oYXZlU2V0T2JzY3VyZWRJbnNl
dHM7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJRWRnZUluc2V0cyBfY29tcHV0
ZWRPYnNjdXJlZEluc2V0OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBVSUVkZ2VJ
bnNldHMgX2NvbXB1dGVkVW5vYnNjdXJlZFNhZmVBcmVhSW5zZXQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IGI4Nzg0NDYwYjQ4Yjdi
MGVhYjBmOWE5M2RkYzQzNTdhZmY0MzgyM2EuLjUxM2Q4ZGM0NzNmYTMxMDg0MzU5YjQ1MjdlZjI3
Mzc0MWViMmFiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3SU9TLm1tCkBAIC0xNDQsOSArMTQ0LDYgQEAgLSAodm9pZClfc2V0dXBTY3JvbGxBbmRD
b250ZW50Vmlld3MKICAgICAgICAgW19zY3JvbGxWaWV3IF9zZXRBdm9pZHNKdW1wT25JbnRlcnJ1
cHRlZEJvdW5jZTpZRVNdOwogICAgIH0KIAotICAgIGlmIChbX2NvbmZpZ3VyYXRpb24gX2VkaXRh
YmxlSW1hZ2VzRW5hYmxlZF0pCi0gICAgICAgIFtfc2Nyb2xsVmlldyBwYW5HZXN0dXJlUmVjb2du
aXplcl0uYWxsb3dlZFRvdWNoVHlwZXMgPSBAWyBAKFVJVG91Y2hUeXBlRGlyZWN0KSBdOwotCiAg
ICAgW3NlbGYgX3VwZGF0ZVNjcm9sbFZpZXdJbnNldEFkanVzdG1lbnRCZWhhdmlvcl07CiAKICAg
ICBbc2VsZiBhZGRTdWJ2aWV3Ol9zY3JvbGxWaWV3LmdldCgpXTsKQEAgLTE0NjAsMTEgKzE0NTcs
NiBAQCAtIChCT09MKV9hbGxvd3NEb3VibGVUYXBHZXN0dXJlcwogICAgIHJldHVybiAhV1RGOjph
cmVFc3NlbnRpYWxseUVxdWFsPGZsb2F0Pihjb250ZW50Wm9vbVNjYWxlKHNlbGYpLCBfaW5pdGlh
bFNjYWxlRmFjdG9yKTsKIH0KIAotLSAoQk9PTClfc3R5bHVzVGFwR2VzdHVyZVNob3VsZENyZWF0
ZUVkaXRhYmxlSW1hZ2UKLXsKLSAgICByZXR1cm4gW19jb25maWd1cmF0aW9uIF9lZGl0YWJsZUlt
YWdlc0VuYWJsZWRdOwotfQotCiAjcHJhZ21hIG1hcmsgVUlTY3JvbGxWaWV3RGVsZWdhdGUKIAog
LSAoQk9PTCl1c2VzU3RhbmRhcmRDb250ZW50VmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCmluZGV4IDhmMDExYWNmZjQzOGI5YmMyMTBiZGI1MTc1MWI0NWU2Nzg1NWRmNmYuLjI5
OTMwNzg1ZmVmZjMzNmMyNWZlOTkyZjAxZjFhYjVlMDVmNTIyYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTU3LDcgKzU3LDYgQEAgT0JKQ19DTEFTUyBOU01lbnU7CiBP
QkpDX0NMQVNTIE5TU2V0OwogT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiBPQkpDX0NM
QVNTIFVJR2VzdHVyZVJlY29nbml6ZXI7Ci1PQkpDX0NMQVNTIFdLRHJhd2luZ1ZpZXc7CiBPQkpD
X0NMQVNTIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogCiAjaWYgVVNFKEFQUEtJVCkKQEAgLTUz
NywxMCArNTM2LDYgQEAgcHVibGljOgogI2VuZGlmCiAjZW5kaWYKIAotI2lmIEhBVkUoUEVOQ0lM
S0lUKQotICAgIHZpcnR1YWwgUmV0YWluUHRyPFdLRHJhd2luZ1ZpZXc+IGNyZWF0ZURyYXdpbmdW
aWV3KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKSB7IHJldHVybiBudWxs
cHRyOyB9Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBj
YW5jZWxQb2ludGVyc0Zvckdlc3R1cmVSZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6ZXIqKSB7
IH0KICAgICB2aXJ0dWFsIFdURjo6T3B0aW9uYWw8dW5zaWduZWQ+IGFjdGl2ZVRvdWNoSWRlbnRp
ZmllckZvckdlc3R1cmVSZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6ZXIqKSB7IHJldHVybiBX
VEY6Om51bGxvcHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGE4ZTFlMDg1M2Jh
OTYyMmE4ZDhjNzhkNjMwMjFhMzY4MWU2Zjg0ZGIuLmU4YTMwNzhlNDgwZDIxMmQ0NmNkNjM4ZTI4
ZGQ5NWQyNWY4ZjgyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QuaApAQCAtMzMsNyArMzMs
NiBAQAogCiBPQkpDX0NMQVNTIENBQW5pbWF0aW9uOwogT0JKQ19DTEFTUyBXS0FuaW1hdGlvbkRl
bGVnYXRlOwotT0JKQ19DTEFTUyBXS0VtYmVkZGVkVmlldzsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKQEAgLTgwLDE2ICs3OSwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlTGF5ZXIoY29u
c3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJik7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IG1ha2VOb2RlKGNvbnN0
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllcyYpOwog
Ci0gICAgUmV0YWluUHRyPFdLRW1iZWRkZWRWaWV3PiBjcmVhdGVFbWJlZGRlZFZpZXcoY29uc3Qg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJik7Ci0K
ICAgICB2b2lkIGxheWVyV2lsbEJlUmVtb3ZlZChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0
Zm9ybUxheWVySUQpOwogCiAgICAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSogbV9k
cmF3aW5nQXJlYSB7IG51bGxwdHIgfTsKICAgICBSZW1vdGVMYXllclRyZWVOb2RlKiBtX3Jvb3RO
b2RlIHsgbnVsbHB0ciB9OwogICAgIEhhc2hNYXA8V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxh
dGZvcm1MYXllcklELCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4+IG1fbm9k
ZXM7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQs
IFJldGFpblB0cjxXS0FuaW1hdGlvbkRlbGVnYXRlPj4gbV9hbmltYXRpb25EZWxlZ2F0ZXM7Ci0g
ICAgSGFzaE1hcDxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCwgUmV0YWlu
UHRyPFdLRW1iZWRkZWRWaWV3Pj4gbV9lbWJlZGRlZFZpZXdzOwotICAgIEhhc2hNYXA8V2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklELCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
OjpFbWJlZGRlZFZpZXdJRD4gbV9sYXllclRvRW1iZWRkZWRWaWV3TWFwOwogICAgIGJvb2wgbV9p
c0RlYnVnTGF5ZXJUcmVlSG9zdCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVI
b3N0Lm1tCmluZGV4IDcyMTVmZTc3OTIzM2RmNzhmYTM5Yjc3NDZjNjhkMmU5ZWQ0ZGVmNjEuLmUy
NGE4ZmZlNGYzMDViY2Q0MDcwYTMxNmYyZWNjOWM5NDg3OGM2MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVIb3N0Lm1tCkBAIC0xNTAsMTIgKzE1MCw2IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlSG9z
dDo6bGF5ZXJXaWxsQmVSZW1vdmVkKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5
CiAgICAgICAgIG1fYW5pbWF0aW9uRGVsZWdhdGVzLnJlbW92ZShhbmltYXRpb25EZWxlZ2F0ZUl0
ZXIpOwogICAgIH0KIAotICAgIGF1dG8gZW1iZWRkZWRWaWV3SXRlciA9IG1fbGF5ZXJUb0VtYmVk
ZGVkVmlld01hcC5maW5kKGxheWVySUQpOwotICAgIGlmIChlbWJlZGRlZFZpZXdJdGVyICE9IG1f
bGF5ZXJUb0VtYmVkZGVkVmlld01hcC5lbmQoKSkgewotICAgICAgICBtX2VtYmVkZGVkVmlld3Mu
cmVtb3ZlKGVtYmVkZGVkVmlld0l0ZXItPnZhbHVlKTsKLSAgICAgICAgbV9sYXllclRvRW1iZWRk
ZWRWaWV3TWFwLnJlbW92ZShlbWJlZGRlZFZpZXdJdGVyKTsKLSAgICB9Ci0KICAgICBtX25vZGVz
LnJlbW92ZShsYXllcklEKTsKIH0KIApAQCAtMjE0LDggKzIwOCw2IEBAIHZvaWQgUmVtb3RlTGF5
ZXJUcmVlSG9zdDo6Y2xlYXJMYXllcnMoKQogICAgIH0KIAogICAgIG1fbm9kZXMuY2xlYXIoKTsK
LSAgICBtX2VtYmVkZGVkVmlld3MuY2xlYXIoKTsKLSAgICBtX2xheWVyVG9FbWJlZGRlZFZpZXdN
YXAuY2xlYXIoKTsKICAgICBtX3Jvb3ROb2RlID0gbnVsbHB0cjsKIH0KIApAQCAtMjY3LDcgKzI1
OSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRy
ZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZVBhZ2VUaWxlZEJhY2tpbmdMYXllcjoKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXllcjoKLSAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlRWRpdGFibGVJbWFnZUxheWVyOgogICAgICAgICByZXR1cm4gUmVtb3Rl
TGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIocHJvcGVydGllcy5sYXllcklEKTsK
IAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVt
b3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQppbmRleCA0YjhmMDg5OGJkNjVl
NDc5YmNiYWJjY2VmMTZjMzA3ZTNhNDA0Mjc0Li5lNDgwODVkMjI1ZDIyOTlkNTJiNzQ5ZGJlN2Fm
MzYwMzUzZGUwNWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1t
CkBAIC0yOCwxMSArMjgsOSBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotI2ltcG9y
dCAiRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHkuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVZpZXdzLmgiCiAjaW1w
b3J0ICJVSUtpdFNQSS5oIgotI2ltcG9ydCAiV0tEcmF3aW5nVmlldy5oIgogI2ltcG9ydCAiV2Vi
UGFnZVByb3h5LmgiCiAjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbFZpZXcuaD4KICNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgpAQCAtOTcsMzkgKzk1LDEyIEBAIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9k
ZShjb25zdCBSZW1vdGVMCiAgICAgICAgIC8vIFRoZSBkZWJ1ZyBpbmRpY2F0b3IgcGFyZW50cyB2
aWV3cyB1bmRlciBsYXllcnMsIHdoaWNoIGNhbiBjYXVzZSBjcmFzaGVzIHdpdGggVUlTY3JvbGxW
aWV3LgogICAgICAgICByZXR1cm4gbWFrZUFkb3B0aW5nVmlldyhbW1VJVmlldyBhbGxvY10gaW5p
dF0pOwogCi0gICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUVkaXRhYmxlSW1hZ2VM
YXllcjoKLSAgICAgICAgcmV0dXJuIG1ha2VXaXRoVmlldyhjcmVhdGVFbWJlZGRlZFZpZXcocHJv
cGVydGllcykpOwotCiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIH0KIAotUmV0YWluUHRyPFdLRW1iZWRk
ZWRWaWV3PiBSZW1vdGVMYXllclRyZWVIb3N0OjpjcmVhdGVFbWJlZGRlZFZpZXcoY29uc3QgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJiBwcm9wZXJ0
aWVzKQotewotICAgIGlmIChtX2lzRGVidWdMYXllclRyZWVIb3N0KQotICAgICAgICByZXR1cm4g
YWRvcHROUyhbW1VJVmlldyBhbGxvY10gaW5pdF0pOwotCi0gICAgYXV0byByZXN1bHQgPSBtX2Vt
YmVkZGVkVmlld3MuZW5zdXJlKHByb3BlcnRpZXMuZW1iZWRkZWRWaWV3SUQsIFsmXSgpIC0+IFJl
dGFpblB0cjxVSVZpZXc+IHsKLSAgICAgICAgc3dpdGNoIChwcm9wZXJ0aWVzLnR5cGUpIHsKLSNp
ZiBIQVZFKFBFTkNJTEtJVCkKLSAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZUVkaXRhYmxlSW1hZ2VMYXllcjogewotICAgICAgICAgICAgYXV0byBlZGl0YWJsZUltYWdlID0g
bV9kcmF3aW5nQXJlYS0+cGFnZSgpLmVkaXRhYmxlSW1hZ2VDb250cm9sbGVyKCkuZWRpdGFibGVJ
bWFnZShwcm9wZXJ0aWVzLmVtYmVkZGVkVmlld0lEKTsKLSAgICAgICAgICAgIHJldHVybiBlZGl0
YWJsZUltYWdlID8gZWRpdGFibGVJbWFnZS0+ZHJhd2luZ1ZpZXcgOiBuaWw7Ci0gICAgICAgIH0K
LSNlbmRpZgotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tV
SVZpZXcgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgfQotICAgIH0pOwotICAgIGF1dG8gdmlldyA9
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKLSAg
ICAgICAgbV9sYXllclRvRW1iZWRkZWRWaWV3TWFwLnJlbW92ZShSZW1vdGVMYXllclRyZWVOb2Rl
OjpsYXllcklEKFt2aWV3IGxheWVyXSkpOwotICAgIG1fbGF5ZXJUb0VtYmVkZGVkVmlld01hcC5z
ZXQocHJvcGVydGllcy5sYXllcklELCBwcm9wZXJ0aWVzLmVtYmVkZGVkVmlld0lEKTsKLSAgICBy
ZXR1cm4gdmlldzsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5oCmluZGV4
IDA2ZmNjZTk2NzgyNWQ3MWRlZjI2ZWVlMWRhMDJhYWVlYThiMmE3YTguLjMzYTE0NjEwYjhhZmJj
Yzk2NmY5ODI2ZTdiNDUzNjM3YTZiOWQ1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJl
ZVZpZXdzLmgKQEAgLTY2LDE0ICs2Niw2IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIEBpbnRlcmZh
Y2UgV0tDaGlsZFNjcm9sbFZpZXcgOiBVSVNjcm9sbFZpZXcgPFdLQ29udGVudENvbnRyb2xsZWQ+
CiBAZW5kCiAKLUBpbnRlcmZhY2UgV0tFbWJlZGRlZFZpZXcgOiBVSVZpZXcgPFdLQ29udGVudENv
bnRyb2xsZWQ+Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEVtYmVkZGVkVmlld0lEOihXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCllbWJlZGRlZFZpZXdJRDsKLQotQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBhc3NpZ24pIFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEOwotCi1AZW5kCi0KIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBPcHRpb25TZXQ8V2ViQ29yZTo6VG91Y2hBY3Rpb24+IHRvdWNoQWN0aW9uc0Zv
clBvaW50KFVJVmlldyAqcm9vdFZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90
ZUxheWVyVHJlZVZpZXdzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbQppbmRleCA2OTY0YTc1ZDc2M2I4NWIwODE2
OGJkZWYxNWNjOTY4ZGVhYWZhMjQ4Li4xMWJiMDFiMzcyY2U2OTdiNmU2M2E0M2U2YTQ2ZGY4MjQz
Y2FkYzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0KQEAgLTMzLDcg
KzMzLDYgQEAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZU5vZGUuaCIKICNpbXBvcnQgIlVJS2l0
U1BJLmgiCiAjaW1wb3J0ICJXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLmgiCi0jaW1wb3J0
ICJXS0RyYXdpbmdWaWV3LmgiCiAjaW1wb3J0IDxXZWJDb3JlL1JlZ2lvbi5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
Q0FMYXllckV4dHJhcy5oPgpAQCAtNDI2LDE5ICs0MjUsNCBAQCAtIChCT09MKWdlc3R1cmVSZWNv
Z25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIgc2hvdWxkQmVS
ZXF1aQogCiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBXS0VtYmVkZGVkVmlldwotCi0tIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhFbWJlZGRlZFZpZXdJRDooV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
RW1iZWRkZWRWaWV3SUQpZW1iZWRkZWRWaWV3SUQKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRd
OwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9lbWJlZGRlZFZp
ZXdJRCA9IGVtYmVkZGVkVmlld0lEOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLUBlbmQKLQog
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCA3ZDNjOTM5ZDg2ZDUwNjhmNzQ2ZGRhNTBhNDE1YjE0NGJkN2Uz
NzIxLi41ZTAyNDMyYjQ3OWU2YzI2OWJjMDdlZjg2MDgzNTEzMWQ4MGZlMTdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI2NiwxMCArMjY2LDYgQEAKICNp
bmNsdWRlICJTZWNLZXlQcm94eVN0b3JlLmgiCiAjZW5kaWYKIAotI2lmIEhBVkUoUEVOQ0lMS0lU
KQotI2luY2x1ZGUgIkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmgiCi0jZW5kaWYKLQogI2lmIEhB
VkUoQVBQX1NTTykKICNpbmNsdWRlICJTT0F1dGhvcml6YXRpb25Db29yZGluYXRvci5oIgogI2Vu
ZGlmCkBAIC05OTQsMTEgKzk5MCw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1
bm5pbmdQcm9jZXNzKCkKICAgICBtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyID0gbWFrZVVuaXF1ZTxX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogI2VuZGlmCiAKLSNpZiBI
QVZFKFBFTkNJTEtJVCkKLSAgICBBU1NFUlQoIW1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIpOwot
ICAgIG1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEVkaXRhYmxlSW1hZ2VD
b250cm9sbGVyPigqdGhpcyk7Ci0jZW5kaWYKLSAgICAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogICAgIEFTU0VSVCghbV93ZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkpOwogICAgIG1fd2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlclByb3h5ID0gbWFrZVVuaXF1ZTxXZWJEZXZpY2VPcmllbnRhdGlvblVw
ZGF0ZVByb3ZpZGVyUHJveHk+KCp0aGlzKTsKQEAgLTc2NDAsMTAgKzc2MzEsNiBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0U3RhdGVSZWFzb24p
CiAgICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IG51bGxwdHI7CiAjZW5kaWYKIAotI2lmIEhB
VkUoUEVOQ0lMS0lUKQotICAgIG1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgPSBudWxscHRyOwot
I2VuZGlmCi0gICAgCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERFVklDRV9P
UklFTlRBVElPTikKICAgICBtX3dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94
eSA9IG51bGxwdHI7CiAjZW5kaWYKQEAgLTk3MzAsMTEgKzk3MTcsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkSW52YWxpZGF0ZURhdGFGb3JBdHRhY2htZW50KEFQSTo6QXR0YWNobWVudCYgYXR0
YWNobWVudCkKIAogV2ViUGFnZVByb3h5OjpTaG91bGRVcGRhdGVBdHRhY2htZW50QXR0cmlidXRl
cyBXZWJQYWdlUHJveHk6OndpbGxVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6
OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiB7Ci0jaWYgSEFWRShQRU5DSUxLSVQpCi0gICAgcmV0
dXJuIG1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXItPndpbGxVcGRhdGVBdHRhY2htZW50QXR0cmli
dXRlcyhhdHRhY2htZW50KTsKLSNlbHNlCiAgICAgcmV0dXJuIFNob3VsZFVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzOjpZZXM7Ci0jZW5kaWYKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOTA2NDdlMTNiMWYwM2E2NmFj
MTRiMDMwYzcwNWVhZDg4M2MwNDBhMC4uZjNkM2NiMmIyNDNhNTZjMDg0NjkwZDBlOGNlOTA1ZDQ4
OTg0YTA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI5Myw3
ICsyOTMsNiBAQCB0eXBlZGVmIEhXTkQgUGxhdGZvcm1WaWV3V2lkZ2V0OwogbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5OwogY2xhc3Mg
RHJhd2luZ0FyZWFQcm94eTsKLWNsYXNzIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOwogY2xhc3Mg
R2FtZXBhZERhdGE7CiBjbGFzcyBNZWRpYVVzYWdlTWFuYWdlcjsKIGNsYXNzIE5hdGl2ZVdlYkdl
c3R1cmVFdmVudDsKQEAgLTgxOCw3ICs4MTcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb250ZW50
U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnN0IFN0cmluZyYgY29udGVudFNpemVDYXRlZ29yeSk7
CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJik7CiAgICAgdm9pZCBoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgdWludDY0
X3QgcmVxdWVzdElEKTsKLSAgICB2b2lkIGhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZvaWQgc2V0
Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoYm9vbCk7CiAgICAgYm9vbCBmb3JjZUFsd2F5c1VzZXJT
Y2FsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2VBbHdheXNVc2VyU2NhbGFibGU7IH0KICAg
ICBkb3VibGUgbGF5b3V0U2l6ZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9y
dENvbmZpZ3VyYXRpb25MYXlvdXRTaXplU2NhbGVGYWN0b3I7IH0KQEAgLTE2NjQsMTAgKzE2NjIs
NiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUN1cnJlbnRNb2RpZmllclN0YXRlKCk7CiAK
LSNpZiBIQVZFKFBFTkNJTEtJVCkKLSAgICBFZGl0YWJsZUltYWdlQ29udHJvbGxlciYgZWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXIoKSB7IHJldHVybiAqbV9lZGl0YWJsZUltYWdlQ29udHJvbGxlcjsg
fQotI2VuZGlmCi0KICAgICBQcm92aXNpb25hbFBhZ2VQcm94eSogcHJvdmlzaW9uYWxQYWdlUHJv
eHkoKSBjb25zdCB7IHJldHVybiBtX3Byb3Zpc2lvbmFsUGFnZS5nZXQoKTsgfQogICAgIHZvaWQg
Y29tbWl0UHJvdmlzaW9uYWxQYWdlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZv
RGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3Zp
ZGVyLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUlu
Zm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0
aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRl
bnQsIFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3ksIGNvbnN0IFVzZXJEYXRhJik7CiAKQEAgLTI4
MTYsMTAgKzI4MTAsNiBAQCBwcml2YXRlOgogCiAgICAgVGV4dE1hbmlwdWxhdGlvbkl0ZW1DYWxs
YmFjayBtX3RleHRNYW5pcHVsYXRpb25JdGVtQ2FsbGJhY2s7CiAKLSNpZiBIQVZFKFBFTkNJTEtJ
VCkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI+IG1fZWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXI7Ci0jZW5kaWYKLQogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdB
VElPTl9WSUVXKQogICAgIExheWVySG9zdGluZ0NvbnRleHRJRCBtX2NvbnRleHRJREZvclZpc2li
aWxpdHlQcm9wYWdhdGlvbiB7IDAgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNTE0ZWNhNjg5YjY1MWNjZGZlZDYxMTg1MGQyYjE0YmMyZjRjNTk4OC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEhBVkUo
UEVOQ0lMS0lUKQotCi0jaW5jbHVkZSAiQVBJQXR0YWNobWVudC5oIgotI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgotI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvR3JhcGhpY3NMYXllci5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1
ZGUgPHd0Zi9XZWFrT2JqQ1B0ci5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLU9CSkNfQ0xBU1MgV0tEcmF3aW5nVmlldzsKLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBFZGl0YWJsZUltYWdlIHsKLSAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0gICAgUmV0YWluUHRyPFdLRHJhd2luZ1ZpZXc+IGRy
YXdpbmdWaWV3OwotICAgIFN0cmluZyBhdHRhY2htZW50SUQ7Ci19OwotCi1jbGFzcyBFZGl0YWJs
ZUltYWdlQ29udHJvbGxlciA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEVkaXRhYmxl
SW1hZ2VDb250cm9sbGVyKTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBFZGl0YWJsZUltYWdlQ29u
dHJvbGxlcihXZWJQYWdlUHJveHkmKTsKLSAgICB+RWRpdGFibGVJbWFnZUNvbnRyb2xsZXIoKTsK
LQotICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0KLSAgICBFZGl0
YWJsZUltYWdlKiBlZGl0YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVk
Vmlld0lEKTsKLSAgICBFZGl0YWJsZUltYWdlJiBlbnN1cmVFZGl0YWJsZUltYWdlKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKTsKLQotICAgIHZvaWQgaW52YWxpZGF0ZUF0
dGFjaG1lbnRGb3JFZGl0YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVk
Vmlld0lEKTsKLQotICAgIFdlYlBhZ2VQcm94eTo6U2hvdWxkVXBkYXRlQXR0YWNobWVudEF0dHJp
YnV0ZXMgd2lsbFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVu
dCYpOwotCi1wcml2YXRlOgotICAgIHZvaWQgZGlkQ3JlYXRlRWRpdGFibGVJbWFnZShXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCk7Ci0gICAgdm9pZCBkaWREZXN0cm95RWRp
dGFibGVJbWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCk7Ci0KLSAg
ICB2b2lkIGFzc29jaWF0ZVdpdGhBdHRhY2htZW50KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVt
YmVkZGVkVmlld0lELCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCk7Ci0KLSAgICB2b2lkIGxv
YWRTdHJva2VzRnJvbUF0dGFjaG1lbnQoRWRpdGFibGVJbWFnZSYsIGNvbnN0IEFQSTo6QXR0YWNo
bWVudCYpOwotCi0gICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+IG1fd2ViUGFnZVByb3h5OwotCi0g
ICAgSGFzaE1hcDxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCwgc3RkOjp1
bmlxdWVfcHRyPEVkaXRhYmxlSW1hZ2U+PiBtX2VkaXRhYmxlSW1hZ2VzOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBIQVZFKFBFTkNJTEtJVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJv
bGxlci5tZXNzYWdlcy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWIxYWViZjE1
NzFlMTEzY2RmOTExNjFhMmQxZjYzNGUyMjA2NDUxNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCww
IEBACi0jIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSNpZiBIQVZFKFBF
TkNJTEtJVCkKLQotbWVzc2FnZXMgLT4gRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgewotICAgIERp
ZENyZWF0ZUVkaXRhYmxlSW1hZ2UodWludDY0X3QgZWRpdGFibGVJbWFnZUlEKQotICAgIERpZERl
c3Ryb3lFZGl0YWJsZUltYWdlKHVpbnQ2NF90IGVkaXRhYmxlSW1hZ2VJRCkKLSAgICBBc3NvY2lh
dGVXaXRoQXR0YWNobWVudCh1aW50NjRfdCBlZGl0YWJsZUltYWdlSUQsIFN0cmluZyBhdHRhY2ht
ZW50SUQpCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA1NTNhM2FjYmQ1NjU3MjliNjM5ZDgyNTAwMTA0NjEyOWEzYzE4ZDVhLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE2
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJFZGl0
YWJsZUltYWdlQ29udHJvbGxlci5oIgotCi0jaWYgSEFWRShQRU5DSUxLSVQpCi0KLSNpbXBvcnQg
IkFQSUF0dGFjaG1lbnQuaCIKLSNpbXBvcnQgIkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyTWVzc2Fn
ZXMuaCIKLSNpbXBvcnQgIlBhZ2VDbGllbnRJbXBsSU9TLmgiCi0jaW1wb3J0ICJQZW5jaWxLaXRT
UEkuaCIKLSNpbXBvcnQgIldLRHJhd2luZ1ZpZXcuaCIKLSNpbXBvcnQgIldlYlBhZ2VQcm94eS5o
IgotI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNz
TGF5ZXIuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2RlZmluZSBNRVNTQUdFX0NI
RUNLX1ZJRVdJRChlbWJlZGRlZFZpZXdJRCkgTUVTU0FHRV9DSEVDS19CQVNFKG1fZWRpdGFibGVJ
bWFnZXMuaXNWYWxpZEtleShlbWJlZGRlZFZpZXdJRCksIG1fd2ViUGFnZVByb3h5LT5wcm9jZXNz
KCkuY29ubmVjdGlvbigpKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotRWRpdGFibGVJbWFnZUNv
bnRyb2xsZXI6OkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVBy
b3h5KQotICAgIDogbV93ZWJQYWdlUHJveHkobWFrZVdlYWtQdHIod2ViUGFnZVByb3h5KSkKLXsK
LSAgICBpZiAoYXV0byogd2ViUGFnZVByb3h5ID0gbV93ZWJQYWdlUHJveHkuZ2V0KCkpCi0gICAg
ICAgIHdlYlBhZ2VQcm94eS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgd2ViUGFnZVBy
b3h5LT53ZWJQYWdlSUQoKSwgKnRoaXMpOwotfQotCi1FZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6
fkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyKCkKLXsKLSAgICBpZiAoYXV0byogd2ViUGFnZVByb3h5
ID0gbV93ZWJQYWdlUHJveHkuZ2V0KCkpCi0gICAgICAgIHdlYlBhZ2VQcm94eS0+cHJvY2Vzcygp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgd2ViUGFnZVByb3h5LT53ZWJQYWdlSUQoKSk7Ci19Ci0K
LUVkaXRhYmxlSW1hZ2UmIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjplbnN1cmVFZGl0YWJsZUlt
YWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lE
KQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9lZGl0YWJsZUltYWdlcy5lbnN1cmUoZW1iZWRkZWRW
aWV3SUQsIFsmXSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFZGl0YWJsZUltYWdlPiBpbWFn
ZSA9IG1ha2VVbmlxdWU8RWRpdGFibGVJbWFnZT4oKTsKLSAgICAgICAgaW1hZ2UtPmRyYXdpbmdW
aWV3ID0gbV93ZWJQYWdlUHJveHktPnBhZ2VDbGllbnQoKS5jcmVhdGVEcmF3aW5nVmlldyhlbWJl
ZGRlZFZpZXdJRCk7Ci0gICAgICAgIHJldHVybiBpbWFnZTsKLSAgICB9KTsKLSAgICByZXR1cm4g
KnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci19Ci0KLUVkaXRhYmxlSW1hZ2UqIEVkaXRhYmxlSW1h
Z2VDb250cm9sbGVyOjplZGl0YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVk
ZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEKQotewotICAgIGF1dG8gZHJhd2luZ1ZpZXdJdGVyID0g
bV9lZGl0YWJsZUltYWdlcy5maW5kKGVtYmVkZGVkVmlld0lEKTsKLSAgICBpZiAoZHJhd2luZ1Zp
ZXdJdGVyID09IG1fZWRpdGFibGVJbWFnZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgcmV0dXJuIGRyYXdpbmdWaWV3SXRlci0+dmFsdWUuZ2V0KCk7Ci19Ci0KLXZvaWQgRWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXI6OmRpZENyZWF0ZUVkaXRhYmxlSW1hZ2UoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQpCi17Ci0gICAgTUVTU0FHRV9D
SEVDS19WSUVXSUQoZW1iZWRkZWRWaWV3SUQpOwotICAgIGVuc3VyZUVkaXRhYmxlSW1hZ2UoZW1i
ZWRkZWRWaWV3SUQpOwotfQotCi12b2lkIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjpkaWREZXN0
cm95RWRpdGFibGVJbWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBl
bWJlZGRlZFZpZXdJRCkKLXsKLSAgICBNRVNTQUdFX0NIRUNLX1ZJRVdJRChlbWJlZGRlZFZpZXdJ
RCk7Ci0gICAgbV9lZGl0YWJsZUltYWdlcy5yZW1vdmUoZW1iZWRkZWRWaWV3SUQpOwotfQotCi12
b2lkIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjphc3NvY2lhdGVXaXRoQXR0YWNobWVudChXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCwgY29uc3Qg
U3RyaW5nJiBhdHRhY2htZW50SUQpCi17Ci0gICAgaWYgKCFtX3dlYlBhZ2VQcm94eSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIGF1dG8mIHBhZ2UgPSAqbV93ZWJQYWdlUHJveHk7Ci0KLSAgICBNRVNT
QUdFX0NIRUNLX1ZJRVdJRChlbWJlZGRlZFZpZXdJRCk7Ci0gICAgcGFnZS5yZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyKGF0dGFjaG1lbnRJRCk7Ci0gICAgYXV0byYgYXR0YWNobWVudCA9ICpw
YWdlLmF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGF0dGFjaG1lbnRJRCk7Ci0KLSAgICBhdXRvJiBl
ZGl0YWJsZUltYWdlID0gZW5zdXJlRWRpdGFibGVJbWFnZShlbWJlZGRlZFZpZXdJRCk7Ci0gICAg
V2Vha09iakNQdHI8V0tEcmF3aW5nVmlldz4gZHJhd2luZ1ZpZXcgPSBlZGl0YWJsZUltYWdlLmRy
YXdpbmdWaWV3LmdldCgpOwotICAgIGVkaXRhYmxlSW1hZ2UuYXR0YWNobWVudElEID0gYXR0YWNo
bWVudElEOwotCi0gICAgbG9hZFN0cm9rZXNGcm9tQXR0YWNobWVudChlZGl0YWJsZUltYWdlLCBh
dHRhY2htZW50KTsKLQotICAgIGF0dGFjaG1lbnQuc2V0RmlsZVdyYXBwZXJHZW5lcmF0b3IoW2Ry
YXdpbmdWaWV3XSgpIC0+IFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiB7Ci0gICAgICAgIGlmICgh
ZHJhd2luZ1ZpZXcpCi0gICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICBOU0RhdGEgKmRh
dGEgPSBbZHJhd2luZ1ZpZXcgUE5HUmVwcmVzZW50YXRpb25dOwotICAgICAgICBpZiAoIWRhdGEp
Ci0gICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICBSZXRhaW5QdHI8TlNGaWxlV3JhcHBl
cj4gZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOmRhdGFdKTsKLSAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZl
cnJlZEZpbGVuYW1lOkAiZHJhd2luZy5wbmciXTsKLSAgICAgICAgcmV0dXJuIGZpbGVXcmFwcGVy
OwotICAgIH0pOwotICAgIGF0dGFjaG1lbnQuc2V0Q29udGVudFR5cGUoInB1YmxpYy5wbmciKTsK
LX0KLQotdm9pZCBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6bG9hZFN0cm9rZXNGcm9tQXR0YWNo
bWVudChFZGl0YWJsZUltYWdlJiBlZGl0YWJsZUltYWdlLCBjb25zdCBBUEk6OkF0dGFjaG1lbnQm
IGF0dGFjaG1lbnQpCi17Ci0gICAgQVNTRVJUKGF0dGFjaG1lbnQuaWRlbnRpZmllcigpID09IGVk
aXRhYmxlSW1hZ2UuYXR0YWNobWVudElEKTsKLSAgICBOU0ZpbGVXcmFwcGVyICpmaWxlV3JhcHBl
ciA9IGF0dGFjaG1lbnQuZmlsZVdyYXBwZXIoKTsKLSAgICBpZiAoIWZpbGVXcmFwcGVyLmlzUmVn
dWxhckZpbGUpCi0gICAgICAgIHJldHVybjsKLSAgICBbZWRpdGFibGVJbWFnZS5kcmF3aW5nVmll
dyBsb2FkRHJhd2luZ0Zyb21QTkdSZXByZXNlbnRhdGlvbjpmaWxlV3JhcHBlci5yZWd1bGFyRmls
ZUNvbnRlbnRzXTsKLX0KLQotdm9pZCBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6aW52YWxpZGF0
ZUF0dGFjaG1lbnRGb3JFZGl0YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVk
ZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEKQotewotICAgIGlmICghbV93ZWJQYWdlUHJveHkpCi0g
ICAgICAgIHJldHVybjsKLSAgICBhdXRvJiBwYWdlID0gKm1fd2ViUGFnZVByb3h5OwotCi0gICAg
YXV0byBlZGl0YWJsZUltYWdlID0gdGhpcy0+ZWRpdGFibGVJbWFnZShlbWJlZGRlZFZpZXdJRCk7
Ci0gICAgaWYgKCFlZGl0YWJsZUltYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGF0
dGFjaG1lbnQgPSBwYWdlLmF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGVkaXRhYmxlSW1hZ2UtPmF0
dGFjaG1lbnRJRCk7Ci0gICAgaWYgKCFhdHRhY2htZW50KQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBhdHRhY2htZW50LT5pbnZhbGlkYXRlR2VuZXJhdGVkRmlsZVdyYXBwZXIoKTsKLX0KLQotV2Vi
UGFnZVByb3h5OjpTaG91bGRVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyBFZGl0YWJsZUltYWdl
Q29udHJvbGxlcjo6d2lsbFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0
YWNobWVudCYgYXR0YWNobWVudCkKLXsKLSAgICBmb3IgKGF1dG8mIGVkaXRhYmxlSW1hZ2UgOiBt
X2VkaXRhYmxlSW1hZ2VzLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChlZGl0YWJsZUltYWdlLT5h
dHRhY2htZW50SUQgIT0gYXR0YWNobWVudC5pZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICBsb2FkU3Ryb2tlc0Zyb21BdHRhY2htZW50KCplZGl0YWJsZUltYWdl
LCBhdHRhY2htZW50KTsKLSAgICAgICAgcmV0dXJuIFdlYlBhZ2VQcm94eTo6U2hvdWxkVXBkYXRl
QXR0YWNobWVudEF0dHJpYnV0ZXM6Ok5vOwotICAgIH0KLQotICAgIHJldHVybiBXZWJQYWdlUHJv
eHk6OlNob3VsZFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzOjpZZXM7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jdW5kZWYgTUVTU0FHRV9DSEVDS19WSUVXSUQKLQotI2VuZGlmIC8v
IEhBVkUoUEVOQ0lMS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaAppbmRleCAyNzI1YzhiNzkzY2Q3Y2NlNzQ5OTU3ZTJmMGRkMWRkMThiMThh
NWZjLi4yMTM2OWFmZTY3YzY5ZThiZmM3MDFkZTUxMTk2MzAwMzg3YWQzMDJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMjYwLDEw
ICsyNjAsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRNb3VzZUV2ZW50UG9saWN5KFdlYkNv
cmU6Ok1vdXNlRXZlbnRQb2xpY3kpIGZpbmFsOwogCi0jaWYgSEFWRShQRU5DSUxLSVQpCi0gICAg
UmV0YWluUHRyPFdLRHJhd2luZ1ZpZXc+IGNyZWF0ZURyYXdpbmdWaWV3KFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKSBvdmVycmlkZTsKLSNlbmRpZgotCiAjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIHdyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9Q
YXN0ZWJvYXJkKFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8mJikgZmluYWw7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bQppbmRleCAwYmE4NWRmNzUxOTg1MDFhOTBiOTY5YjIwOWJkODk3OWRmNjVlZjlkLi5iM2QxYjM4
OTFkODE5ZDRkMWQ0ZjJhYzkxYjJjNDk1MTkwNDQzNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC00Niw3ICs0Niw2IEBACiAj
aW1wb3J0ICJWaWV3U25hcHNob3RTdG9yZS5oIgogI2ltcG9ydCAiV0tDb250ZW50Vmlldy5oIgog
I2ltcG9ydCAiV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCi0jaW1wb3J0ICJXS0RyYXdpbmdW
aWV3LmgiCiAjaW1wb3J0ICJXS0VkaXRDb21tYW5kLmgiCiAjaW1wb3J0ICJXS0dlb2xvY2F0aW9u
UHJvdmlkZXJJT1MuaCIKICNpbXBvcnQgIldLUGFzc3dvcmRWaWV3LmgiCkBAIC05MTcsMTMgKzkx
Niw2IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwKICAgICBbbV9jb250ZW50VmlldyBfcmVxdWVz
dERPTVBhc3RlQWNjZXNzV2l0aEVsZW1lbnRSZWN0OmVsZW1lbnRSZWN0IG9yaWdpbklkZW50aWZp
ZXI6b3JpZ2luSWRlbnRpZmllciBjb21wbGV0aW9uSGFuZGxlcjpXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV07CiB9CiAKLSNpZiBIQVZFKFBFTkNJTEtJVCkKLVJldGFpblB0cjxXS0RyYXdpbmdW
aWV3PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ1ZpZXcoV2ViQ29yZTo6R3JhcGhpY3NM
YXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQpCi17Ci0gICAgcmV0dXJuIGFkb3B0
TlMoW1tXS0RyYXdpbmdWaWV3IGFsbG9jXSBpbml0V2l0aEVtYmVkZGVkVmlld0lEOmVtYmVkZGVk
Vmlld0lEIGNvbnRlbnRWaWV3Om1fY29udGVudFZpZXcuZ2V0QXV0b3JlbGVhc2VkKCldKTsKLX0K
LSNlbmRpZgotCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpjYW5jZWxQb2ludGVyc0Zvckdlc3R1cmVS
ZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyKQogewogICAg
IFttX2NvbnRlbnRWaWV3IGNhbmNlbFBvaW50ZXJzRm9yR2VzdHVyZVJlY29nbml6ZXI6Z2VzdHVy
ZVJlY29nbml6ZXJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bl
bmNpbEtpdFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGVuY2lsS2l0
U29mdExpbmsuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQzYzVmOWI5YzIwODQ1
MGVmZjA4NjYyOWI2MTU5MDM4YzdjZmI2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGVuY2lsS2l0U29m
dExpbmsuaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEhBVkUoUEVOQ0lMS0lUKQotCi0jaW1wb3J0ICJQZW5jaWxLaXRTUEku
aCIKLSNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1TT0ZUX0xJTktfRlJBTUVXT1JLX0ZP
Ul9IRUFERVIoV2ViS2l0LCBQZW5jaWxLaXQpOwotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIo
V2ViS2l0LCBQS0NhbnZhc1ZpZXcpOwotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoV2ViS2l0
LCBQS0RyYXdpbmcpOwotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoV2ViS2l0LCBQS0ltYWdl
UmVuZGVyZXIpOwotCi0jZW5kaWYgLy8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGVuY2lsS2l0U29mdExpbmsubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGVuY2lsS2l0U29mdExpbmsubW0KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAyYWZlZWYxYWQ4MWZiZjVkN2Q3ZmQyODU2MWQ4NWJmNjU3Yzk0MjAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BlbmNpbEtpdFNvZnRMaW5rLm1tCisrKyAvZGV2L251bGwKQEAgLTEs
MzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotCi0jaWYgSEFWRShQ
RU5DSUxLSVQpCi0KLSNpbXBvcnQgIlBlbmNpbEtpdFNQSS5oIgotI2ltcG9ydCA8d3RmL1NvZnRM
aW5raW5nLmg+Ci0KLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19GT1JfU09VUkNFKFdlYktp
dCwgUGVuY2lsS2l0KTsKLVNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKFdlYktpdCwgUGVuY2ls
S2l0LCBQS0NhbnZhc1ZpZXcpOwotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoV2ViS2l0LCBQ
ZW5jaWxLaXQsIFBLRHJhd2luZyk7Ci1TT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShXZWJLaXQs
IFBlbmNpbEtpdCwgUEtJbWFnZVJlbmRlcmVyKTsKLQotI2VuZGlmIC8vIEhBVkUoUEVOQ0lMS0lU
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oCmluZGV4IGUyOTJkOTA5MmYxY2Y3N2FkNzNmMjYyODFjNmM1YmRkNWQ2OWVj
NWQuLjdlYTEwMTdkYzVkMDQ3OTRkYzMwZTNlYTBjYzk3MzkzY2YxM2RmZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
LmgKQEAgLTEwMiw3ICsxMDIsNiBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBAY2xhc3MgV0tBY3Rp
b25TaGVldEFzc2lzdGFudDsKIEBjbGFzcyBXS0NvbnRleHRNZW51RWxlbWVudEluZm87CiBAY2xh
c3MgV0tEYXRlVGltZUlucHV0Q29udHJvbDsKLUBjbGFzcyBXS0RyYXdpbmdDb29yZGluYXRvcjsK
IEBjbGFzcyBXS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXc7CiBAY2xhc3MgV0tGb3JtSW5wdXRTZXNz
aW9uOwogQGNsYXNzIFdLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXI7CkBAIC0y
MjgsNyArMjI3LDYgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBSZXRhaW5Q
dHI8VUlUYXBHZXN0dXJlUmVjb2duaXplcj4gX2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyRm9y
RG91YmxlQ2xpY2s7CiAgICAgUmV0YWluUHRyPFVJVGFwR2VzdHVyZVJlY29nbml6ZXI+IF90d29G
aW5nZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8VUlUYXBHZXN0
dXJlUmVjb2duaXplcj4gX3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyOwotICAg
IFJldGFpblB0cjxVSVRhcEdlc3R1cmVSZWNvZ25pemVyPiBfc3R5bHVzU2luZ2xlVGFwR2VzdHVy
ZVJlY29nbml6ZXI7CiAgICAgUmV0YWluUHRyPFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVS
ZWNvZ25pemVyPiBfaW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyOwogCiAgICAg
UmV0YWluUHRyPFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplcj4gX3RvdWNoQWN0aW9uR2Vz
dHVyZVJlY29nbml6ZXI7CkBAIC0zMzksMTAgKzMzNyw2IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0
aW9uRGF0YSB7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAqPj4gX2Rh
dGFMaXN0VGV4dFN1Z2dlc3Rpb25zOwogI2VuZGlmCiAKLSNpZiBIQVZFKFBFTkNJTEtJVCkKLSAg
ICBSZXRhaW5QdHI8V0tEcmF3aW5nQ29vcmRpbmF0b3I+IF9kcmF3aW5nQ29vcmRpbmF0b3I7Ci0j
ZW5kaWYKLQogICAgIEJPT0wgX2lzRWRpdGFibGU7CiAgICAgQk9PTCBfc2hvd2luZ1RleHRTdHls
ZU9wdGlvbnM7CiAgICAgQk9PTCBfaGFzVmFsaWRQb3NpdGlvbkluZm9ybWF0aW9uOwpAQCAtNTgz
LDEwICs1NzcsNiBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xB
UkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQogLSAodm9pZCl1cGRhdGVUZXh0
U3VnZ2VzdGlvbnNGb3JJbnB1dERlbGVnYXRlOwogI2VuZGlmCiAKLSNpZiBIQVZFKFBFTkNJTEtJ
VCkKLS0gKFdLRHJhd2luZ0Nvb3JkaW5hdG9yICopX2RyYXdpbmdDb29yZGluYXRvcjsKLSNlbmRp
ZgotCiAtICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQg
Kj4gKikpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6
KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0IHBsYWNlQ2FyZXRBdDooQ0dQb2ludClwb2lu
dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlSZXNwb25kZXI8VUlUZXh0SW5wdXQ+ICop
KWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClfd2lsbEJlZ2luVGV4dEludGVyYWN0aW9uSW5U
ZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCmluZGV4IDVjMzgwM2NhNWQ0MTQ4ODFmOTJiMTcyYWE2MDZjMjJiNzIwMDQ1OWIuLjA4ZGJm
M2FkODc5OWE5NTE0YWNmNmJkMzEyZjlmZjFjNzcyNTI2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAt
MzEsNyArMzEsNiBAQAogI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKICNpbXBvcnQgIkNvbXBsZXRp
b25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKICNpbXBvcnQgIkRvY3VtZW50RWRpdGluZ0NvbnRleHQu
aCIKLSNpbXBvcnQgIkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJJbnB1dFZp
ZXdVcGRhdGVEZWZlcnJlci5oIgogI2ltcG9ydCAiSW5zZXJ0VGV4dE9wdGlvbnMuaCIKICNpbXBv
cnQgIkxvZ2dpbmcuaCIKQEAgLTUxLDcgKzUwLDYgQEAKICNpbXBvcnQgIldLQ29udGV4dE1lbnVF
bGVtZW50SW5mb1ByaXZhdGUuaCIKICNpbXBvcnQgIldLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVy
LmgiCiAjaW1wb3J0ICJXS0RhdGVUaW1lSW5wdXRDb250cm9sLmgiCi0jaW1wb3J0ICJXS0RyYXdp
bmdDb29yZGluYXRvci5oIgogI2ltcG9ydCAiV0tFcnJvci5oIgogI2ltcG9ydCAiV0tGb2N1c2Vk
Rm9ybUNvbnRyb2xWaWV3LmgiCiAjaW1wb3J0ICJXS0Zvcm1TZWxlY3RDb250cm9sLmgiCkBAIC04
NTAsMTIgKzg0OCw2IEBAIC0gKHZvaWQpc2V0VXBJbnRlcmFjdGlvbgogICAgIFtfdHdvRmluZ2Vy
U2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RW5hYmxlZDohc2VsZi53ZWJWaWV3Ll9lZGl0
YWJsZV07CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlclNpbmdsZVRh
cEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIAotICAgIF9zdHlsdXNTaW5nbGVUYXBHZXN0dXJl
UmVjb2duaXplciA9IGFkb3B0TlMoW1tVSVRhcEdlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0
V2l0aFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX3N0eWx1c1NpbmdsZVRhcFJlY29nbml6
ZWQ6KV0pOwotICAgIFtfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0TnVtYmVy
T2ZUYXBzUmVxdWlyZWQ6MV07Ci0gICAgW19zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXpl
ciBzZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICBbX3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25p
emVyIHNldEFsbG93ZWRUb3VjaFR5cGVzOkBbIEAoVUlUb3VjaFR5cGVQZW5jaWwpIF1dOwotICAg
IFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVjb2du
aXplci5nZXQoKV07Ci0KICAgICBfdG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplciA9IGFkb3B0
TlMoW1tXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVG91Y2hB
Y3Rpb25EZWxlZ2F0ZTpzZWxmXSk7CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3Rv
dWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogCkBAIC05OTIsOSArOTg0LDYgQEAg
LSAodm9pZCljbGVhblVwSW50ZXJhY3Rpb24KICAgICBbX3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1
cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOm5pbF07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJl
Y29nbml6ZXI6X3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIAot
ICAgIFtfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6bmlsXTsK
LSAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfc3R5bHVzU2luZ2xlVGFwR2VzdHVy
ZVJlY29nbml6ZXIuZ2V0KCldOwotCiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6
X3RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogICAgIFtzZWxmIHJlbW92ZUdl
c3R1cmVSZWNvZ25pemVyOl90b3VjaEFjdGlvbkxlZnRTd2lwZUdlc3R1cmVSZWNvZ25pemVyLmdl
dCgpXTsKICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfdG91Y2hBY3Rpb25SaWdo
dFN3aXBlR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwpAQCAtMTA0OCwxMCArMTAzNyw2IEBAIC0g
KHZvaWQpY2xlYW5VcEludGVyYWN0aW9uCiAgICAgW19rZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9y
IGludmFsaWRhdGVdOwogICAgIF9rZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yID0gbmlsOwogCi0j
aWYgSEFWRShQRU5DSUxLSVQpCi0gICAgX2RyYXdpbmdDb29yZGluYXRvciA9IG5pbDsKLSNlbmRp
ZgotCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgX2RhdGFMaXN0VGV4dFN1Z2dl
c3Rpb25zSW5wdXRWaWV3ID0gbmlsOwogICAgIF9kYXRhTGlzdFRleHRTdWdnZXN0aW9ucyA9IG5p
bDsKQEAgLTEwOTQsNyArMTA3OSw2IEBAIC0gKHZvaWQpX3JlbW92ZURlZmF1bHRHZXN0dXJlUmVj
b2duaXplcnMKICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfZG91YmxlVGFwR2Vz
dHVyZVJlY29nbml6ZXJGb3JEb3VibGVDbGljay5nZXQoKV07CiAgICAgW3NlbGYgcmVtb3ZlR2Vz
dHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgp
XTsKICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfdHdvRmluZ2VyU2luZ2xlVGFw
R2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwotICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25p
emVyOl9zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAjaWYgSEFWRShV
SUtJVF9XSVRIX01PVVNFX1NVUFBPUlQpCiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6
ZXI6X21vdXNlR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogI2VuZGlmCkBAIC0xMTIyLDcgKzEx
MDYsNiBAQCAtICh2b2lkKV9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzCiAgICAgW3NlbGYg
YWRkR2VzdHVyZVJlY29nbml6ZXI6X2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyRm9yRG91Ymxl
Q2xpY2suZ2V0KCldOwogICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJE
b3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJl
Y29nbml6ZXI6X3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKLSAg
ICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29n
bml6ZXIuZ2V0KCldOwogI2lmIEhBVkUoVUlLSVRfV0lUSF9NT1VTRV9TVVBQT1JUKQogICAgIFtz
ZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9tb3VzZUdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsK
ICNlbmRpZgpAQCAtMjQxMiw5ICsyMzk1LDYgQEAgLSAoQk9PTClnZXN0dXJlUmVjb2duaXplclNo
b3VsZEJlZ2luOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIHsKICAg
ICBDR1BvaW50IHBvaW50ID0gW2dlc3R1cmVSZWNvZ25pemVyIGxvY2F0aW9uSW5WaWV3OnNlbGZd
OwogCi0gICAgaWYgKGdlc3R1cmVSZWNvZ25pemVyID09IF9zdHlsdXNTaW5nbGVUYXBHZXN0dXJl
UmVjb2duaXplcikKLSAgICAgICAgcmV0dXJuIHNlbGYud2ViVmlldy5fc3R5bHVzVGFwR2VzdHVy
ZVNob3VsZENyZWF0ZUVkaXRhYmxlSW1hZ2U7Ci0KICAgICBhdXRvIGlzSW50ZXJydXB0aW5nRGVj
ZWxlcmF0aW9uRm9yU2Nyb2xsVmlld09yQW5jZXN0b3IgPSBbJl0gKFVJU2Nyb2xsVmlldyAqc2Ny
b2xsVmlldykgewogICAgICAgICBVSVNjcm9sbFZpZXcgKm1haW5TY3JvbGxlciA9IHNlbGYud2Vi
Vmlldy5zY3JvbGxWaWV3OwogICAgICAgICBVSVZpZXcgKnZpZXcgPSBzY3JvbGxWaWV3ID86IG1h
aW5TY3JvbGxlcjsKQEAgLTI3MDcsMTMgKzI2ODcsNiBAQCAtICh2b2lkKV90d29GaW5nZXJTaW5n
bGVUYXBHZXN0dXJlUmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVS
ZQogICAgIF9wYWdlLT5oYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KFdlYkNvcmU6OnJvdW5kZWRJ
bnRQb2ludChnZXN0dXJlUmVjb2duaXplci5jZW50cm9pZCksIFdlYktpdDo6d2ViRXZlbnRNb2Rp
ZmllckZsYWdzKGdlc3R1cmVSZWNvZ25pemVyTW9kaWZpZXJGbGFncyhnZXN0dXJlUmVjb2duaXpl
cikgfCBVSUtleU1vZGlmaWVyQ29tbWFuZCksICsrX2xhdGVzdFRhcElEKTsKIH0KIAotLSAodm9p
ZClfc3R5bHVzU2luZ2xlVGFwUmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdl
c3R1cmVSZWNvZ25pemVyCi17Ci0gICAgQVNTRVJUKHNlbGYud2ViVmlldy5fc3R5bHVzVGFwR2Vz
dHVyZVNob3VsZENyZWF0ZUVkaXRhYmxlSW1hZ2UpOwotICAgIEFTU0VSVChnZXN0dXJlUmVjb2du
aXplciA9PSBfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIpOwotICAgIF9wYWdlLT5o
YW5kbGVTdHlsdXNTaW5nbGVUYXBBdFBvaW50KFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnZXN0
dXJlUmVjb2duaXplci5sb2NhdGlvbiksICsrX2xhdGVzdFRhcElEKTsKLX0KLQogLSAodm9pZClf
bG9uZ1ByZXNzUmVjb2duaXplZDooVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1
cmVSZWNvZ25pemVyCiB7CiAgICAgQVNTRVJUKGdlc3R1cmVSZWNvZ25pemVyID09IF9sb25nUHJl
c3NHZXN0dXJlUmVjb2duaXplcik7CkBAIC01OTgzLDExICs1OTU2LDYgQEAgLSAodm9pZClfZWxl
bWVudERpZEZvY3VzOihjb25zdCBXZWJLaXQ6OkZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mKWlu
Zm9ybWF0aW9uIHUKICAgICAgICAgW3NlbGYgX2VsZW1lbnREaWRCbHVyXTsKICAgICB9CiAKLSNp
ZiBIQVZFKFBFTkNJTEtJVCkKLSAgICBpZiAoaW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gV2Vi
S2l0OjpJbnB1dFR5cGU6OkRyYXdpbmcpCi0gICAgICAgIFtfZHJhd2luZ0Nvb3JkaW5hdG9yIGlu
c3RhbGxJbmtQaWNrZXJGb3JEcmF3aW5nOmluZm9ybWF0aW9uLmVtYmVkZGVkVmlld0lEXTsKLSNl
bmRpZgotCiAgICAgaWYgKCFzaG91bGRTaG93SW5wdXRWaWV3IHx8IGluZm9ybWF0aW9uLmVsZW1l
bnRUeXBlID09IFdlYktpdDo6SW5wdXRUeXBlOjpOb25lKSB7CiAgICAgICAgIF9wYWdlLT5zZXRJ
c1Nob3dpbmdJbnB1dFZpZXdGb3JGb2N1c2VkRWxlbWVudChmYWxzZSk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTYwOTMsMTAgKzYwNjEsNiBAQCAtICh2b2lkKV9lbGVtZW50RGlkQmx1cgogewogICAg
IFNldEZvclNjb3BlPEJPT0w+IGlzQmx1cnJpbmdGb2N1c2VkRWxlbWVudEZvclNjb3BlIHsgX2lz
Qmx1cnJpbmdGb2N1c2VkRWxlbWVudCwgWUVTIH07CiAKLSNpZiBIQVZFKFBFTkNJTEtJVCkKLSAg
ICBbX2RyYXdpbmdDb29yZGluYXRvciB1bmluc3RhbGxJbmtQaWNrZXJdOwotI2VuZGlmCi0KICNp
ZiBVU0UoVUlLSVRfS0VZQk9BUkRfQURESVRJT05TKQogICAgIFtzZWxmIF9lbmRFZGl0aW5nXTsK
ICNlbmRpZgpAQCAtODYwMSwxNSArODU2NSw2IEBAIC0gKHZvaWQpX2xvb2t1cEdlc3R1cmVSZWNv
Z25pemVkOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIH0KICNlbmRp
ZgogCi0jaWYgSEFWRShQRU5DSUxLSVQpCi0tIChXS0RyYXdpbmdDb29yZGluYXRvciAqKV9kcmF3
aW5nQ29vcmRpbmF0b3IKLXsKLSAgICBpZiAoIV9kcmF3aW5nQ29vcmRpbmF0b3IpCi0gICAgICAg
IF9kcmF3aW5nQ29vcmRpbmF0b3IgPSBhZG9wdE5TKFtbV0tEcmF3aW5nQ29vcmRpbmF0b3IgYWxs
b2NdIGluaXRXaXRoQ29udGVudFZpZXc6c2VsZl0pOwotICAgIHJldHVybiBfZHJhd2luZ0Nvb3Jk
aW5hdG9yLmdldCgpOwotfQotI2VuZGlmIC8vIEhBVkUoUEVOQ0lMS0lUKQotCiAtICh2b2lkKXNl
dENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZDooQk9PTCllbmFibGVkCiB7CiAgICAgaWYg
KFdlYktpdDo6VGV4dENoZWNrZXI6OnNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZChl
bmFibGVkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdp
bmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ0Nv
b3JkaW5hdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5N2I1NzQ1MjU0YTEw
MzM5NGE5ZjZjYmFhYmRmMTQwZjRiZWM3Y2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ0Nv
b3JkaW5hdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmIEhBVkUoUEVOQ0lMS0lUKQotCi0jaW1wb3J0ICJQZW5jaWxLaXRTUEkuaCIKLSNpbXBvcnQg
PFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgotCi1PQkpDX0NMQVNTIFBLSW5rOwotT0JKQ19DTEFT
UyBXS0NvbnRlbnRWaWV3OwotCi1AaW50ZXJmYWNlIFdLRHJhd2luZ0Nvb3JkaW5hdG9yIDogTlNP
YmplY3QgPFBLUnVsZXJIb3N0aW5nRGVsZWdhdGU+Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0IE5T
X1VOQVZBSUxBQkxFOwotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29udGVudFZpZXc6KFdLQ29u
dGVudFZpZXcgKiljb250ZW50VmlldzsKLQotLSAodm9pZClpbnN0YWxsSW5rUGlja2VyRm9yRHJh
d2luZzooV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpZW1iZWRkZWRWaWV3
SUQ7Ci0tICh2b2lkKXVuaW5zdGFsbElua1BpY2tlcjsKLQotQHByb3BlcnR5IChub25hdG9taWMp
IEJPT0wgcnVsZXJFbmFibGVkOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCByZXRh
aW4pIFBLSW5rICpjdXJyZW50SW5rOwotCi1AZW5kCi0KLQotI2VuZGlmIC8vIEhBVkUoUEVOQ0lM
S0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ0Nv
b3JkaW5hdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ0Nvb3Jk
aW5hdG9yLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDBjNzIzOWQ0MjY2Mjgw
OTJkZjM2ZjE5Yzc1M2VlYzA2ZGFmMDI0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdDb29y
ZGluYXRvci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXS0RyYXdpbmdDb29yZGluYXRvci5oIgotCi0j
aWYgSEFWRShQRU5DSUxLSVQpCi0KLSNpbXBvcnQgIkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmgi
Ci0jaW1wb3J0ICJXS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCIKLSNpbXBvcnQgIldLRHJhd2lu
Z1ZpZXcuaCIKLSNpbXBvcnQgIldLV2ViVmlldy5oIgotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25z
L1dLRHJhd2luZ0Nvb3JkaW5hdG9yQWRkaXRpb25zLm1tPgotI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgotCi0jaW1wb3J0ICJQZW5jaWxLaXRTb2Z0TGluay5oIgotCi1AaW50ZXJmYWNlIFdLRHJh
d2luZ0Nvb3JkaW5hdG9yICgpIDxXS0lua1BpY2tlckRlbGVnYXRlPgotQGVuZAotCi1AaW1wbGVt
ZW50YXRpb24gV0tEcmF3aW5nQ29vcmRpbmF0b3IgewotICAgIF9fd2VhayBXS0NvbnRlbnRWaWV3
ICpfY29udGVudFZpZXc7Ci0KLSAgICBSZXRhaW5QdHI8V0tJbmtQaWNrZXI+IF9pbmtQaWNrZXI7
Ci0KLSAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBfZm9jdXNlZEVt
YmVkZGVkVmlld0lEOwotfQotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb250ZW50Vmlldzoo
V0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsK
LSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfY29udGVudFZpZXcg
PSBjb250ZW50VmlldzsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tIChQS0luayAqKWN1cnJl
bnRJbmsKLXsKLSAgICByZXR1cm4gW19pbmtQaWNrZXIgY3VycmVudElua107Ci19Ci0KLS0gKFVJ
VmlldyAqKXJ1bGVySG9zdGluZ1ZpZXcKLXsKLSAgICByZXR1cm4gX2NvbnRlbnRWaWV3OwotfQot
Ci0tIChCT09MKXJ1bGVySG9zdFdhbnRzU2hhcmVkUnVsZXIKLXsKLSAgICByZXR1cm4gWUVTOwot
fQotCi0tIChXS0RyYXdpbmdWaWV3ICopX2ZvY3VzZWREcmF3aW5nVmlldwotewotICAgIFdlYktp
dDo6RWRpdGFibGVJbWFnZSAqZm9jdXNlZEVkaXRhYmxlSW1hZ2UgPSBfY29udGVudFZpZXcucGFn
ZS0+ZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIoKS5lZGl0YWJsZUltYWdlKF9mb2N1c2VkRW1iZWRk
ZWRWaWV3SUQpOwotICAgIGlmICghZm9jdXNlZEVkaXRhYmxlSW1hZ2UpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0gICAgcmV0dXJuIGZvY3VzZWRFZGl0YWJsZUltYWdlLT5kcmF3aW5nVmlldy5nZXQo
KTsKLX0KLQotLSAoTlNVbmRvTWFuYWdlciAqKXVuZG9NYW5hZ2VyRm9ySW5rUGlja2VyOihXS0lu
a1BpY2tlciAqKWlua1BpY2tlcgotewotICAgIHJldHVybiBbX2NvbnRlbnRWaWV3IHVuZG9NYW5h
Z2VyXTsKLX0KLQotLSAoVUlWaWV3ICopY29udGFpbmluZ1ZpZXdGb3JJbmtQaWNrZXI6KFdLSW5r
UGlja2VyICopaW5rUGlja2VyCi17Ci0gICAgcmV0dXJuIF9jb250ZW50VmlldzsKLX0KLQotLSAo
dm9pZClpbmtQaWNrZXJEaWRUb2dnbGVSdWxlcjooV0tJbmtQaWNrZXIgKilpbmtQaWNrZXIKLXsK
LSAgICBfcnVsZXJFbmFibGVkID0gIV9ydWxlckVuYWJsZWQ7Ci0gICAgW3NlbGYuX2ZvY3VzZWRE
cmF3aW5nVmlldyBkaWRDaGFuZ2VSdWxlclN0YXRlOl9ydWxlckVuYWJsZWRdOwotfQotCi0tICh2
b2lkKWlua1BpY2tlckRpZENoYW5nZUluazooV0tJbmtQaWNrZXIgKilpbmtQaWNrZXIKLXsKLSAg
ICBbc2VsZi5fZm9jdXNlZERyYXdpbmdWaWV3IGRpZENoYW5nZUluazpzZWxmLmN1cnJlbnRJbmtd
OwotfQotCi0tICh2b2lkKWluc3RhbGxJbmtQaWNrZXJGb3JEcmF3aW5nOihXZWJDb3JlOjpHcmFw
aGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCllbWJlZGRlZFZpZXdJRAotewotICAgIF9mb2N1c2Vk
RW1iZWRkZWRWaWV3SUQgPSBlbWJlZGRlZFZpZXdJRDsKLQotICAgIGlmICghX2lua1BpY2tlcikK
LSAgICAgICAgX2lua1BpY2tlciA9IGFkb3B0TlMoW1tXS0lua1BpY2tlciBhbGxvY10gaW5pdFdp
dGhEZWxlZ2F0ZTpzZWxmXSk7Ci0gICAgW19pbmtQaWNrZXIgc2hvd107Ci0KLSAgICAvLyBXaGVu
IGZvY3VzZWQsIHB1c2ggdGhlIHJ1bGVyIHN0YXRlIGRvd24gdG8gdGhlIGNhbnZhcyBzbyB0aGF0
IGl0IGRvZXNuJ3QgZ2V0IG91dCBvZiBzeW5jCi0gICAgLy8gYW5kIGVhcmx5LXJldHVybiBmcm9t
IGxhdGVyIGNoYW5nZXMuCi0gICAgW3NlbGYuX2ZvY3VzZWREcmF3aW5nVmlldyBkaWRDaGFuZ2VS
dWxlclN0YXRlOl9ydWxlckVuYWJsZWRdOwotfQotCi0tICh2b2lkKXVuaW5zdGFsbElua1BpY2tl
cgotewotICAgIFtfaW5rUGlja2VyIGhpZGVdOwotICAgIFtzZWxmLl9mb2N1c2VkRHJhd2luZ1Zp
ZXcgZGlkQ2hhbmdlUnVsZXJTdGF0ZTpOT107Ci0gICAgX2ZvY3VzZWRFbWJlZGRlZFZpZXdJRCA9
IDA7Ci19Ci0KLUBlbmQKLQotI2VuZGlmIC8vIEhBVkUoUEVOQ0lMS0lUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ1ZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDlkODFiMjAzYjQ0MGI4NTNkMWJjMzU4MzBlMTAyYTg4OGU5Nzk5MDIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLRHJhd2luZ1ZpZXcuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWYgSEFWRShQRU5DSUxLSVQpCi0KLSNpbXBvcnQgIlJlbW90ZUxheWVy
VHJlZUhvc3QuaCIKLSNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVZpZXdzLmgiCi0KLU9CSkNfQ0xB
U1MgUEtJbms7Ci1PQkpDX0NMQVNTIFdLQ29udGVudFZpZXc7Ci0KLUBpbnRlcmZhY2UgV0tEcmF3
aW5nVmlldyA6IFdLRW1iZWRkZWRWaWV3IDxXS05hdGl2ZWx5SW50ZXJhY3RpYmxlPgotCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhFbWJlZGRlZFZpZXdJRDooV2ViQ29yZTo6R3JhcGhpY3NMYXll
cjo6RW1iZWRkZWRWaWV3SUQpZW1iZWRkZWRWaWV3SUQgY29udGVudFZpZXc6KFdLQ29udGVudFZp
ZXcgKiljb250ZW50VmlldzsKLQotLSAoTlNEYXRhICopUE5HUmVwcmVzZW50YXRpb247Ci0tICh2
b2lkKWxvYWREcmF3aW5nRnJvbVBOR1JlcHJlc2VudGF0aW9uOihOU0RhdGEgKilQTkdEYXRhOwot
Ci0tICh2b2lkKWRpZENoYW5nZVJ1bGVyU3RhdGU6KEJPT0wpcnVsZXJFbmFibGVkOwotLSAodm9p
ZClkaWRDaGFuZ2VJbms6KFBLSW5rICopaW5rOwotCi1AZW5kCi0KLQotI2VuZGlmIC8vIEhBVkUo
UEVOQ0lMS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJh
d2luZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5t
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJlZDEwMzczMzkwNDg3ZGY3Y2RkNTVm
ZmNhNDE4ZGI0NWJiZThkMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5tbQorKysg
L2Rldi9udWxsCkBAIC0xLDIwMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJXS0RyYXdpbmdWaWV3LmgiCi0KLSNpZiBIQVZFKFBFTkNJTEtJVCkKLQot
I2ltcG9ydCAiRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaCIKLSNpbXBvcnQgIldLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5oIgotI2ltcG9ydCAiV0tEcmF3aW5nQ29vcmRpbmF0b3IuaCIKLSNpbXBv
cnQgPHd0Zi9PU09iamVjdFB0ci5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotCi0jaW1w
b3J0ICJQZW5jaWxLaXRTb2Z0TGluay5oIgotCi1AaW50ZXJmYWNlIFdLRHJhd2luZ1ZpZXcgKCkg
PFBLQ2FudmFzVmlld0RlbGVnYXRlPgotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tEcmF3aW5n
VmlldyB7Ci0gICAgUmV0YWluUHRyPFBLQ2FudmFzVmlldz4gX3BlbmNpbFZpZXc7Ci0KLSNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCi0gICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hf
cXVldWVfdD4gX3JlbmRlclF1ZXVlOwotICAgIFJldGFpblB0cjxQS0ltYWdlUmVuZGVyZXI+IF9y
ZW5kZXJlcjsKLSNlbmRpZgotCi0gICAgX193ZWFrIFdLQ29udGVudFZpZXcgKl9jb250ZW50Vmll
dzsKLX0KLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRW1iZWRkZWRWaWV3SUQ6KFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKWVtYmVkZGVkVmlld0lEIGNvbnRlbnRWaWV3
OihXS0NvbnRlbnRWaWV3ICopY29udGVudFZpZXcKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRX
aXRoRW1iZWRkZWRWaWV3SUQ6ZW1iZWRkZWRWaWV3SURdOwotICAgIGlmICghc2VsZikKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLQotICAgIF9jb250ZW50VmlldyA9IGNvbnRlbnRWaWV3OwotCi0gICAg
X3BlbmNpbFZpZXcgPSBhZG9wdE5TKFtXZWJLaXQ6OmFsbG9jUEtDYW52YXNWaWV3SW5zdGFuY2Uo
KSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm9dKTsKLQotICAgIFtfcGVuY2lsVmlldyBzZXRGaW5n
ZXJEcmF3aW5nRW5hYmxlZDpOT107Ci0gICAgW19wZW5jaWxWaWV3IHNldFVzZXJJbnRlcmFjdGlv
bkVuYWJsZWQ6WUVTXTsKLSAgICBbX3BlbmNpbFZpZXcgc2V0T3BhcXVlOk5PXTsKLSAgICBbX3Bl
bmNpbFZpZXcgc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgW19wZW5jaWxWaWV3IHNldFJ1bGVySG9z
dGluZ0RlbGVnYXRlOl9jb250ZW50Vmlldy5fZHJhd2luZ0Nvb3JkaW5hdG9yXTsKLQotICAgIFtz
ZWxmIGFkZFN1YnZpZXc6X3BlbmNpbFZpZXcuZ2V0KCldOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19
Ci0KLS0gKHZvaWQpbGF5b3V0U3Vidmlld3MKLXsKLSAgICBpZiAoIUNHUmVjdEVxdWFsVG9SZWN0
KFtfcGVuY2lsVmlldyBmcmFtZV0sIHNlbGYuYm91bmRzKSkgewotICAgICAgICBbX3BlbmNpbFZp
ZXcgc2V0RnJhbWU6c2VsZi5ib3VuZHNdOwotCi0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lN
VUxBVE9SKQotICAgICAgICAvLyBUaGUgcmVuZGVyZXIgaXMgaW5zdGFudGlhdGVkIGZvciBhIHBh
cnRpY3VsYXIgc2l6ZSBvdXRwdXQ7IGlmCi0gICAgICAgIC8vIHRoZSBzaXplIGNoYW5nZXMsIHdl
IG5lZWQgdG8gcmUtY3JlYXRlIHRoZSByZW5kZXJlci4KLSAgICAgICAgX3JlbmRlcmVyID0gbmls
OwotI2VuZGlmCi0KLSAgICAgICAgW3NlbGYgaW52YWxpZGF0ZUF0dGFjaG1lbnRdOwotICAgIH0K
LX0KLQotc3RhdGljIFVJSW1hZ2UgKmVtcHR5SW1hZ2UoKQotewotICAgIFVJR3JhcGhpY3NCZWdp
bkltYWdlQ29udGV4dChDR1NpemVNYWtlKDEsIDEpKTsKLSAgICBDR0NvbnRleHRDbGVhclJlY3Qo
VUlHcmFwaGljc0dldEN1cnJlbnRDb250ZXh0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSkpOwot
ICAgIFVJSW1hZ2UgKnJlc3VsdEltYWdlID0gVUlHcmFwaGljc0dldEltYWdlRnJvbUN1cnJlbnRJ
bWFnZUNvbnRleHQoKTsKLSAgICBVSUdyYXBoaWNzRW5kSW1hZ2VDb250ZXh0KCk7Ci0KLSAgICBy
ZXR1cm4gcmVzdWx0SW1hZ2U7Ci19Ci0KLS0gKFVJSW1hZ2UgKilyZW5kZXJlZERyYXdpbmcKLXsK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKLSAgICAvLyBQS0ltYWdlUmVuZGVy
ZXIgY3VycmVudGx5IGRvZXNuJ3Qgd29yayBpbiB0aGUgc2ltdWxhdG9yLiBJbiBvcmRlciB0bwot
ICAgIC8vIGFsbG93IHN0cm9rZXMgdG8gcGVyc2lzdCByZWdhcmRsZXNzIChtb3N0bHkgZm9yIHRl
c3RpbmcpLCB3ZSdsbAotICAgIC8vIHN5bnRoZXNpemUgYW4gZW1wdHkgMXgxIGltYWdlLgotICAg
IHJldHVybiBlbXB0eUltYWdlKCk7Ci0jZWxzZQotICAgIGlmICghc2VsZi5ib3VuZHMuc2l6ZS53
aWR0aCB8fCAhc2VsZi5ib3VuZHMuc2l6ZS5oZWlnaHQgfHwgIXNlbGYud2luZG93LnNjcmVlbi5z
Y2FsZSkKLSAgICAgICAgcmV0dXJuIGVtcHR5SW1hZ2UoKTsKLQotICAgIGlmICghX3JlbmRlclF1
ZXVlKQotICAgICAgICBfcmVuZGVyUXVldWUgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVl
X2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5XS0RyYXdpbmdWaWV3LlJlbmRlcmluZyIsIERJU1BB
VENIX1FVRVVFX1NFUklBTCkpOwotCi0gICAgaWYgKCFfcmVuZGVyZXIpCi0gICAgICAgIF9yZW5k
ZXJlciA9IGFkb3B0TlMoW1dlYktpdDo6YWxsb2NQS0ltYWdlUmVuZGVyZXJJbnN0YW5jZSgpIGlu
aXRXaXRoU2l6ZTpzZWxmLmJvdW5kcy5zaXplIHNjYWxlOnNlbGYud2luZG93LnNjcmVlbi5zY2Fs
ZSByZW5kZXJRdWV1ZTpfcmVuZGVyUXVldWUuZ2V0KCldKTsKLQotICAgIF9fYmxvY2sgUmV0YWlu
UHRyPFVJSW1hZ2U+IHJlc3VsdEltYWdlOwotCi0gICAgW19yZW5kZXJlciByZW5kZXJEcmF3aW5n
OltfcGVuY2lsVmlldyBub25OdWxsRHJhd2luZ10gY29tcGxldGlvbjpeKFVJSW1hZ2UgKmltYWdl
KSB7Ci0gICAgICAgIHJlc3VsdEltYWdlID0gaW1hZ2U7Ci0gICAgfV07Ci0KLSAgICAvLyBGSVhN
RTogSWRlYWxseSB3ZSB3b3VsZCBub3Qgc3luY2hyb25vdXNseSB3YWl0IGZvciB0aGlzIHJlbmRl
cmluZywKLSAgICAvLyBidXQgTlNGaWxlV3JhcHBlciByZXF1aXJlcyBkYXRhIHN5bmNocm9ub3Vz
bHksIGFuZCBvdXIgY2xpZW50cyBleHBlY3QKLSAgICAvLyBhbiBOU0ZpbGVXcmFwcGVyIHRvIGJl
IGF2YWlsYWJsZSBzeW5jaHJvbm91c2x5LgotICAgIGRpc3BhdGNoX3N5bmMoX3JlbmRlclF1ZXVl
LmdldCgpLCBeeyB9KTsKLQotICAgIHJldHVybiByZXN1bHRJbWFnZS5hdXRvcmVsZWFzZSgpOwot
I2VuZGlmCi19Ci0KLS0gKE5TRGF0YSAqKVBOR1JlcHJlc2VudGF0aW9uCi17Ci0gICAgUmV0YWlu
UHRyPFVJSW1hZ2U+IGltYWdlID0gW3NlbGYgcmVuZGVyZWREcmF3aW5nXTsKLSAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlRGF0YT4gUE5HRGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9j
XSBpbml0XSk7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VEZXN0aW5hdGlvblJlZj4gaW1hZ2VEZXN0
aW5hdGlvbiA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoKF9fYnJp
ZGdlIENGTXV0YWJsZURhdGFSZWYpUE5HRGF0YS5nZXQoKSwga1VUVHlwZVBORywgMSwgbmlsKSk7
Ci0gICAgTlNTdHJpbmcgKmJhc2U2NERyYXdpbmcgPSBbW1tfcGVuY2lsVmlldyBub25OdWxsRHJh
d2luZ10gc2VyaWFsaXplXSBiYXNlNjRFbmNvZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF07Ci0gICAg
TlNEaWN0aW9uYXJ5ICpwcm9wZXJ0aWVzID0gbmlsOwotICAgIGlmIChiYXNlNjREcmF3aW5nKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcHV0IHRoaXMgc29tZXdoZXJlIGxlc3MgdXNl
ci1mYWNpbmcgdGhhbiB0aGUgRVhJRiBVc2VyIENvbW1lbnQgZmllbGQuCi0gICAgICAgIHByb3Bl
cnRpZXMgPSBAewotICAgICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NHSW1hZ2VQcm9w
ZXJ0eUV4aWZEaWN0aW9uYXJ5IDogQHsKLSAgICAgICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJp
bmcgKilrQ0dJbWFnZVByb3BlcnR5RXhpZlVzZXJDb21tZW50IDogYmFzZTY0RHJhd2luZwotICAg
ICAgICAgICAgfQotICAgICAgICB9OwotICAgIH0KLSAgICBDR0ltYWdlRGVzdGluYXRpb25TZXRQ
cm9wZXJ0aWVzKGltYWdlRGVzdGluYXRpb24uZ2V0KCksIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlS
ZWYpcHJvcGVydGllcyk7Ci0gICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoaW1hZ2VEZXN0
aW5hdGlvbi5nZXQoKSwgW2ltYWdlIENHSW1hZ2VdLCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVm
KXByb3BlcnRpZXMpOwotICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGltYWdlRGVzdGlu
YXRpb24uZ2V0KCkpOwotCi0gICAgcmV0dXJuIFBOR0RhdGEuYXV0b3JlbGVhc2UoKTsKLX0KLQot
LSAodm9pZClsb2FkRHJhd2luZ0Zyb21QTkdSZXByZXNlbnRhdGlvbjooTlNEYXRhICopUE5HRGF0
YQotewotICAgIFJldGFpblB0cjxDR0ltYWdlU291cmNlUmVmPiBpbWFnZVNvdXJjZSA9IGFkb3B0
Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZVdpdGhEYXRhKChfX2JyaWRnZSBDRkRhdGFSZWYpUE5HRGF0
YSwgbnVsbHB0cikpOwotICAgIGlmICghaW1hZ2VTb3VyY2UpCi0gICAgICAgIHJldHVybjsKLSAg
ICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBwcm9wZXJ0aWVzID0gYWRvcHROUygoX19icmlkZ2Ug
TlNEaWN0aW9uYXJ5ICopQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChpbWFnZVNv
dXJjZS5nZXQoKSwgMCwgbmlsKSk7Ci0gICAgTlNTdHJpbmcgKmJhc2U2NERyYXdpbmcgPSBbW3By
b3BlcnRpZXMgb2JqZWN0Rm9yS2V5OihOU1N0cmluZyAqKWtDR0ltYWdlUHJvcGVydHlFeGlmRGlj
dGlvbmFyeV0gb2JqZWN0Rm9yS2V5OihOU1N0cmluZyAqKWtDR0ltYWdlUHJvcGVydHlFeGlmVXNl
ckNvbW1lbnRdOwotICAgIGlmICghYmFzZTY0RHJhd2luZykKLSAgICAgICAgcmV0dXJuOwotICAg
IFJldGFpblB0cjxOU0RhdGE+IGRyYXdpbmdEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10g
aW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmJhc2U2NERyYXdpbmcgb3B0aW9uczowXSk7Ci0g
ICAgUmV0YWluUHRyPFBLRHJhd2luZz4gZHJhd2luZyA9IGFkb3B0TlMoW1dlYktpdDo6YWxsb2NQ
S0RyYXdpbmdJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkcmF3aW5nRGF0YS5nZXQoKSBlcnJvcjpu
aWxdKTsKLSAgICBbX3BlbmNpbFZpZXcgc2V0Tm9uTnVsbERyYXdpbmc6ZHJhd2luZy5nZXQoKV07
Ci19Ci0KLS0gKHZvaWQpY2FudmFzVmlld0RyYXdpbmdEaWRDaGFuZ2U6KFBLQ2FudmFzVmlldyAq
KWNhbnZhc1ZpZXcKLXsKLSAgICBbc2VsZiBpbnZhbGlkYXRlQXR0YWNobWVudF07Ci19Ci0KLS0g
KHZvaWQpX2NhbnZhc1ZpZXdXaWxsQmVnaW5EcmF3aW5nOihQS0NhbnZhc1ZpZXcgKiljYW52YXNW
aWV3Ci17Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIFtfcGVuY2ls
VmlldyBzZXRJbms6X2NvbnRlbnRWaWV3Ll9kcmF3aW5nQ29vcmRpbmF0b3IuY3VycmVudElua107
Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLX0KLQotLSAodm9pZClpbnZhbGlk
YXRlQXR0YWNobWVudAotewotICAgIGlmICghX2NvbnRlbnRWaWV3LnBhZ2UpCi0gICAgICAgIHJl
dHVybjsKLSAgICBhdXRvJiBwYWdlID0gKl9jb250ZW50Vmlldy5wYWdlOwotCi0gICAgcGFnZS5l
ZGl0YWJsZUltYWdlQ29udHJvbGxlcigpLmludmFsaWRhdGVBdHRhY2htZW50Rm9yRWRpdGFibGVJ
bWFnZShzZWxmLmVtYmVkZGVkVmlld0lEKTsKLX0KLQotLSAodm9pZClkaWRDaGFuZ2VSdWxlclN0
YXRlOihCT09MKXJ1bGVyRW5hYmxlZAotewotICAgIFtfcGVuY2lsVmlldyBzZXRSdWxlckVuYWJs
ZWQ6cnVsZXJFbmFibGVkXTsKLX0KLQotLSAodm9pZClkaWRDaGFuZ2VJbms6KFBLSW5rICopaW5r
Ci17Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIFtfcGVuY2lsVmll
dyBzZXRJbms6aW5rXTsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotfQotCi1A
ZW5kCi0KLSNlbmRpZiAvLyBIQVZFKFBFTkNJTEtJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDQ1YzBiZDQ5NTcwYTVlZTNiZTFiODkz
ZWNhZWFjYjgzNWRkOWIyNWUuLjM3ZjVjYWIzYmI2OTVmZTU1MTNiODVkNmQxODQ3MzAxMTQ1YzI2
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQpAQCAtNjI1LDExICs2MjUsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVHdvRmluZ2Vy
VGFwQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIE9wdAogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQocG9pbnQsIG1vZGlm
aWVycywgcmVxdWVzdElEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVTdHlsdXNT
aW5nbGVUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDY0X3Qg
cmVxdWVzdElEKQotewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZVN0eWx1c1Np
bmdsZVRhcEF0UG9pbnQocG9pbnQsIHJlcXVlc3RJRCkpOwotfQotCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQgdG8sIEdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBHZXN0dXJl
UmVjb2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBPcHRpb25T
ZXQ8U2VsZWN0aW9uRmxhZ3M+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KaW5kZXggNjg5OTQzYjRmNmY4M2FhMzUy
MzJmZmNmYjEyNGZiODhhNDE1MTExMi4uOTJhNDJiNGNhNTZiMzdjMTg0MmE4Y2IxMWRhNWVjYTBk
MmEyN2U4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3Jl
ZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9T
Lm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVySU9TLmgiCiAKICNpbXBvcnQgIlVJS2l0U1BJLmgiCisjaW1wb3J0ICJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkuaCIKICNpbXBvcnQgIldLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLmgi
CiAjaW1wb3J0ICJXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmlldy5o
IgpAQCAtNDQsNiArNDUsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9HZW9tZXRyeVV0aWxpdGllcy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXpl
ZFN0cmluZ3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVmlkZW9GdWxsc2NyZWVuTW9kZWwuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3
b3JrU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TU3RyaW5nU1BJLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1t
CmluZGV4IGJmMjkyZGJlZDllZjM4ZGQ1M2NkODk2M2RhYmE4NDc1YzcxZGVmNTguLjVhZDg4N2Ix
M2ZiNDEyMjQzODNlNDAwMTRiNDg5MTBjYmUyZTdkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCkBAIC00Myw2ICs0
Myw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU01lbnVTUEkuaD4KICNpbXBvcnQgPHBhbC9z
cGkvbWFjL05TU2hhcmluZ1NlcnZpY2VQaWNrZXJTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFj
L05TV2luZG93U1BJLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KIAogQGludGVyZmFjZSBXS1VzZXJEYXRhV3JhcHBlciA6IE5TT2JqZWN0IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDEyMzk2ZjVmYTBkMmE3NjdlMjUwODJjZTZhZTM2ODdlMjFjNWU4YjQuLjAzNmRiNmFjZjgwZjQx
ZDljNDQ3MjY0NjY5MjMwMDc5NTYxODFjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjM3LDExICs2MzcsOSBAQAogCQkyRDU0QzMx
OTIxMkYzQjMzMDA0OUMxNzQgLyogVW5pZmllZFNvdXJjZTYyLW1tLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1NEMzMDUyMTJGM0IzMzAwNDlDMTc0
IC8qIFVuaWZpZWRTb3VyY2U2Mi1tbS5tbSAqLzsgfTsKIAkJMkQ1NEMzMUEyMTJGM0IzMzAwNDlD
MTc0IC8qIFVuaWZpZWRTb3VyY2U2MS1tbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJENTRDMzA2MjEyRjNCMzMwMDQ5QzE3NCAvKiBVbmlmaWVkU291
cmNlNjEtbW0ubW0gKi87IH07CiAJCTJENTRDMzFCMjEyRjREQTYwMDQ5QzE3NCAvKiBQcm9jZXNz
TGF1bmNoZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUFFMTE3RjUxMURCQjMwOTAwOTgxNjE1IC8qIFByb2Nlc3NMYXVuY2hlci5jcHAgKi87IH07
Ci0JCTJENTg3NUJGMjE5QjUzMTUwMDcwQjlBQSAvKiBFZGl0YWJsZUltYWdlQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1ODc1QkQy
MTlCNTMxNTAwNzBCOUFBIC8qIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmggKi87IH07CiAJCTJE
NUM5RDA2MTlDODFEOEYwMEIzQzVDMSAvKiBXZWJQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1QzlEMDQxOUM4MUQ4RjAwQjNDNUMx
IC8qIFdlYlBhZ2VPdmVybGF5LmggKi87IH07CiAJCTJENkFCNTQxMTkyQjFDNEEwMDNBOUZEMSAv
KiBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJENkFCNTNGMTkyQjFDNEEwMDNBOUZEMSAvKiBXS1BERlBhZ2VO
dW1iZXJJbmRpY2F0b3IuaCAqLzsgfTsKIAkJMkQ2QjM3MUIxOEE5NjdBRDAwNDJBRTgwIC8qIF9X
S1RodW1ibmFpbFZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJENkIzNzE5MThBOTY3QUQwMDQyQUU4MCAvKiBfV0tUaHVtYm5haWxWaWV3LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMkQ2QkYxMjQy
MUFGNTZFMTAwMUU3OUM5IC8qIFBlbmNpbEtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZCRjEyMjIxQUY1NkUxMDAxRTc5QzkgLyog
UGVuY2lsS2l0U29mdExpbmsuaCAqLzsgfTsKIAkJMkQ2Q0QxMTkxODkwNThBNTAwRTVBNEEwIC8q
IFZpZXdTbmFwc2hvdFN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRDZDRDExNzE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUu
aCAqLzsgfTsKIAkJMkQ3MkExRkEyMTJCRjQ2RTAwNTE3QTIwIC8qIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUFCMTZBREIxNjQ4NTk4NDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
Lm1tICovOyB9OwogCQkyRDczMDM3OTFBN0MyQjc1MDBGOEY0ODcgLyogV0tQYWdlTmF2aWdhdGlv
bkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkQ3MzAzNzgxQTdDMkI3NTAwRjhGNDg3IC8qIFdLUGFnZU5hdmlnYXRpb25DbGllbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzQzLDggKzc0
MSw2IEBACiAJCTJEQjk0Mjk5MjM0RTdBN0YwMEU3NzZBRCAvKiBXS01vdXNlR2VzdHVyZVJlY29n
bml6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
Qjk0Mjk3MjM0RTdBN0YwMEU3NzZBRCAvKiBXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIuaCAqLzsg
fTsKIAkJMkRCOTYwNTMyMzk4ODZDMTAwMTAyNzkxIC8qIGNvbS5hcHBsZS5XZWJLaXQuR1BVLnNi
IGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREI5NjA1
MjIzOTg4NkI5MDAxMDI3OTEgLyogY29tLmFwcGxlLldlYktpdC5HUFUuc2IgKi87IH07CiAJCTJE
QzE4MTI0NUI1NDkzNDNCQzk4MTY0QyAvKiBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQzE4NTVFREJG
Qjg1MEJBMEI2RDA2RCAvKiBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcCAqLzsgfTsKLQkJ
MkRDMThGQUQyMTg5MTA0OTAwMjVBODhEIC8qIFdLRHJhd2luZ1ZpZXcuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQzE4RkFCMjE4OTEwNDgwMDI1QTg4
RCAvKiBXS0RyYXdpbmdWaWV3LmggKi87IH07Ci0JCTJEQzE4RkIwMjE4OTEyNjQwMDI1QTg4RCAv
KiBQZW5jaWxLaXRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJEQzE4RkFGMjE4OTEyNjQwMDI1QTg4RCAvKiBQZW5jaWxLaXRTUEkuaCAqLzsgfTsK
IAkJMkRDMThGQjMyMThBNkU5RTAwMjVBODhEIC8qIFJlbW90ZUxheWVyVHJlZVZpZXdzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREMxOEZCMTIxOEE2
RTlFMDAyNUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCAqLzsgfTsKIAkJMkRDMThGQjQy
MThBNkU5RTAwMjVBODhEIC8qIFJlbW90ZUxheWVyVHJlZVZpZXdzLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRDMThGQjIyMThBNkU5RTAwMjVBODhE
IC8qIFJlbW90ZUxheWVyVHJlZVZpZXdzLm1tICovOyB9OwogCQkyREMxOEZFQkYzMzdCOTY3MUM4
OEUzQ0QgLyogU2hhcmVkQnVmZmVyQ29weS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyREMxODAwMUQ5MERERDE1RkM2OTkxQTkgLyogU2hhcmVkQnVm
ZmVyQ29weS5jcHAgKi87IH07CkBAIC0yODQzLDggKzI4MzksNiBAQAogCQkyRDFCNUQ1QzE4NTg2
OUM4MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2Fn
ZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMkQxRTgyMjEyMTZG
RkY1MDAwQTE1MjY1IC8qIFdLV2ViRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV0tXZWJFdmVudC5oOyBwYXRoID0gaW9zL1dLV2ViRXZlbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkQxRTgyMjIyMTZGRkY1MTAwQTE1MjY1IC8qIFdLV2ViRXZlbnQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1dlYkV2ZW50Lm1t
OyBwYXRoID0gaW9zL1dLV2ViRXZlbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTJEMjFBNDU4MjFERUQ0OUIwMDI0ODdFNyAvKiBXS0RyYXdpbmdDb29yZGluYXRvci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFdLRHJhd2luZ0Nvb3JkaW5hdG9yLm1tOyBwYXRoID0gaW9zL1dL
RHJhd2luZ0Nvb3JkaW5hdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyRDIx
QTQ1OTIxREVENDlCMDAyNDg3RTcgLyogV0tEcmF3aW5nQ29vcmRpbmF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV0tEcmF3aW5nQ29vcmRpbmF0b3IuaDsgcGF0aCA9IGlvcy9XS0RyYXdpbmdDb29yZGlu
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDI4QTQ5NTFBRjk2NUExMDBG
MTkwQzkgLyogV0tWaWV3TGF5b3V0U3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tWaWV3TGF5b3V0U3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkQyOEE0OTYxQUY5NjVBMTAwRjE5MEM5IC8qIFdLVmlld0xheW91dFN0cmF0ZWd5Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tWaWV3TGF5b3V0U3Ry
YXRlZ3kubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMjhGM0UwMTg4NUNDQzEw
MDRCOUVBRSAvKiBXZWJDaHJvbWVDbGllbnRJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBXZWJDaHJvbWVDbGllbnRJT1MubW07IHBhdGggPSBpb3MvV2ViQ2hy
b21lQ2xpZW50SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkwMCwxNyAr
Mjg5NCwxMiBAQAogCQkyRDU0QzMwNDIxMkYzQjMzMDA0OUMxNzQgLyogVW5pZmllZFNvdXJjZTcx
LW1tLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gIlVuaWZpZWRTb3VyY2U3MS1tbS5tbSI7IHBh
dGggPSAiRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJj
ZTcxLW1tLm1tIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMkQ1NEMz
MDUyMTJGM0IzMzAwNDlDMTc0IC8qIFVuaWZpZWRTb3VyY2U2Mi1tbS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9ICJVbmlmaWVkU291cmNlNjItbW0ubW0iOyBwYXRoID0gIkRlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U2Mi1tbS5tbSI7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTJENTRDMzA2MjEyRjNCMzMwMDQ5QzE3NCAv
KiBVbmlmaWVkU291cmNlNjEtbW0ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSAiVW5pZmllZFNv
dXJjZTYxLW1tLm1tIjsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9XZWJLaXQyL3VuaWZpZWQtc291
cmNlcy9VbmlmaWVkU291cmNlNjEtbW0ubW0iOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwotCQkyRDU4NzVCQjIxOUIyOEE1MDA3MEI5QUEgLyogRWRpdGFibGVJbWFnZUNvbnRy
b2xsZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRWRpdGFibGVJbWFnZUNv
bnRyb2xsZXIubWVzc2FnZXMuaW47IHBhdGggPSBpb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIu
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJENTg3NUJEMjE5QjUz
MTUwMDcwQjlBQSAvKiBFZGl0YWJsZUltYWdlQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBFZGl0YWJsZUltYWdlQ29udHJvbGxlci5oOyBwYXRoID0gaW9zL0Vk
aXRhYmxlSW1hZ2VDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJE
NTg3NUJFMjE5QjUzMTUwMDcwQjlBQSAvKiBFZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEVkaXRhYmxlSW1hZ2VDb250cm9s
bGVyLm1tOyBwYXRoID0gaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRDVDOUQwMzE5QzgxRDhGMDBCM0M1QzEgLyogV2ViUGFnZU92
ZXJsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUGFnZU92
ZXJsYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDVDOUQwNDE5QzgxRDhG
MDBCM0M1QzEgLyogV2ViUGFnZU92ZXJsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViUGFnZU92ZXJsYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2
QUI1M0YxOTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGljYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IuaDsg
cGF0aCA9IGlvcy9XS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkQ2QUI1NDAxOTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJlcklu
ZGljYXRvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLUERG
UGFnZU51bWJlckluZGljYXRvci5tbTsgcGF0aCA9IGlvcy9XS1BERlBhZ2VOdW1iZXJJbmRpY2F0
b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENkIzNzE5MThBOTY3QUQwMDQy
QUU4MCAvKiBfV0tUaHVtYm5haWxWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS1RodW1ibmFpbFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2
QjM3MUExOEE5NjdBRDAwNDJBRTgwIC8qIF9XS1RodW1ibmFpbFZpZXcubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tUaHVtYm5haWxWaWV3Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkyRDZCRjEyMTIxQUY1NkUxMDAxRTc5QzkgLyogUGVuY2ls
S2l0U29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBQ
ZW5jaWxLaXRTb2Z0TGluay5tbTsgcGF0aCA9IGlvcy9QZW5jaWxLaXRTb2Z0TGluay5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkQ2QkYxMjIyMUFGNTZFMTAwMUU3OUM5IC8qIFBl
bmNpbEtpdFNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBlbmNp
bEtpdFNvZnRMaW5rLmg7IHBhdGggPSBpb3MvUGVuY2lsS2l0U29mdExpbmsuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2Q0QxMTcxODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFw
c2hvdFN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZXdTbmFwc2hv
dFN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENkNEMTE4MTg5MDU4QTUw
MEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFZpZXdTbmFwc2hvdFN0b3JlTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRDZDRDExQTE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90
U3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlld1NuYXBz
aG90U3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzE2MCw5ICszMTQ5
LDYgQEAKIAkJMkRDMTgwMDFEOTBEREQxNUZDNjk5MUE5IC8qIFNoYXJlZEJ1ZmZlckNvcHkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkQnVmZmVyQ29weS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQzE4NTVFREJGQjg1MEJBMEI2RDA2
RCAvKiBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyREMxODgxQUNCQ0FCNUQ1N0M1QzZFRjAgLyogU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJE
QzE4RkFCMjE4OTEwNDgwMDI1QTg4RCAvKiBXS0RyYXdpbmdWaWV3LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFdLRHJhd2luZ1ZpZXcuaDsgcGF0aCA9IGlvcy9XS0RyYXdpbmdW
aWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJEQzE4RkFDMjE4OTEwNDgwMDI1
QTg4RCAvKiBXS0RyYXdpbmdWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gV0tEcmF3aW5nVmlldy5tbTsgcGF0aCA9IGlvcy9XS0RyYXdpbmdWaWV3Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyREMxOEZBRjIxODkxMjY0MDAyNUE4OEQgLyog
UGVuY2lsS2l0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlbmNpbEtp
dFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREMxOEZCMTIxOEE2RTlFMDAy
NUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlVmlld3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkRDMThGQjIyMThBNkU5RTAwMjVBODhEIC8qIFJlbW90ZUxheWVyVHJlZVZpZXdzLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVl
Vmlld3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQzRDRjdBMUQyREUyNEIw
MEVDQ0M5NCAvKiBXZWJQYWdlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJQYWdlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03MDE0LDE3ICs3MDAwLDEyIEBACiAJCQkJMUFENEMxOTAxQjM5RjMzMjAwQUJDMjhFIC8qIEFw
cGxpY2F0aW9uU3RhdGVUcmFja2VyLm1tICovLAogCQkJCUY0OTZBNDJGMUY1OEEyNzIwMDRDMTc1
NyAvKiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaCAqLywKIAkJCQlGNDk2QTQzMDFGNThBMjcy
MDA0QzE3NTcgLyogRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tICovLAotCQkJCTJENTg3NUJE
MjE5QjUzMTUwMDcwQjlBQSAvKiBFZGl0YWJsZUltYWdlQ29udHJvbGxlci5oICovLAotCQkJCTJE
NTg3NUJCMjE5QjI4QTUwMDcwQjlBQSAvKiBFZGl0YWJsZUltYWdlQ29udHJvbGxlci5tZXNzYWdl
cy5pbiAqLywKLQkJCQkyRDU4NzVCRTIxOUI1MzE1MDA3MEI5QUEgLyogRWRpdGFibGVJbWFnZUNv
bnRyb2xsZXIubW0gKi8sCiAJCQkJQ0RDREM5OUIyNDhGRThEQTAwQTY5NTIyIC8qIEVuZG93bWVu
dFN0YXRlVHJhY2tlci5oICovLAogCQkJCUNEQ0RDOTlDMjQ4RkU4REEwMEE2OTUyMiAvKiBFbmRv
d21lbnRTdGF0ZVRyYWNrZXIubW0gKi8sCiAJCQkJMkRENDVBREMxRTVGODk3MjAwNkMzNTVGIC8q
IElucHV0Vmlld1VwZGF0ZURlZmVycmVyLmggKi8sCiAJCQkJMkRENDVBREQxRTVGODk3MjAwNkMz
NTVGIC8qIElucHV0Vmlld1VwZGF0ZURlZmVycmVyLm1tICovLAogCQkJCTBGQ0I0RTM2MThCQkUw
NDQwMDBGQ0ZDOSAvKiBQYWdlQ2xpZW50SW1wbElPUy5oICovLAogCQkJCTBGQ0I0RTM3MThCQkUw
NDQwMDBGQ0ZDOSAvKiBQYWdlQ2xpZW50SW1wbElPUy5tbSAqLywKLQkJCQkyRDZCRjEyMjIxQUY1
NkUxMDAxRTc5QzkgLyogUGVuY2lsS2l0U29mdExpbmsuaCAqLywKLQkJCQkyRDZCRjEyMTIxQUY1
NkUxMDAxRTc5QzkgLyogUGVuY2lsS2l0U29mdExpbmsubW0gKi8sCiAJCQkJODZGOTUzNjIxOEZG
NTUwQjAwMURCMkVGIC8qIFByb2Nlc3NBc3NlcnRpb25JT1MubW0gKi8sCiAJCQkJNTFFNkMxNUYx
RjI5MzU1MTAwRkQzNDM3IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFn
ZUlPUy5tbSAqLywKIAkJCQkyREFGMDZENDE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlci5oICovLApAQCAtNzA1MSwxMCArNzAzMiw2IEBACiAJCQkJMEZDQjRF
NkIxOEJCRjI2QTAwMEZDRkM5IC8qIFdLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSAqLywKIAkJ
CQlGNDQ4MTU2MjIzODc4MjAwMDA5ODI2NTcgLyogV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXpl
ci5oICovLAogCQkJCUY0NDgxNTYzMjM4NzgyMDAwMDk4MjY1NyAvKiBXS0RlZmVycmluZ0dlc3R1
cmVSZWNvZ25pemVyLm1tICovLAotCQkJCTJEMjFBNDU5MjFERUQ0OUIwMDI0ODdFNyAvKiBXS0Ry
YXdpbmdDb29yZGluYXRvci5oICovLAotCQkJCTJEMjFBNDU4MjFERUQ0OUIwMDI0ODdFNyAvKiBX
S0RyYXdpbmdDb29yZGluYXRvci5tbSAqLywKLQkJCQkyREMxOEZBQjIxODkxMDQ4MDAyNUE4OEQg
LyogV0tEcmF3aW5nVmlldy5oICovLAotCQkJCTJEQzE4RkFDMjE4OTEwNDgwMDI1QTg4RCAvKiBX
S0RyYXdpbmdWaWV3Lm1tICovLAogCQkJCTBGQ0I0RTNGMThCQkUwNDQwMDBGQ0ZDOSAvKiBXS0dl
b2xvY2F0aW9uUHJvdmlkZXJJT1MuaCAqLywKIAkJCQkwRkNCNEU0MDE4QkJFMDQ0MDAwRkNGQzkg
LyogV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tICovLAogCQkJCTBGQ0I0RTQxMThCQkUwNDQw
MDBGQ0ZDOSAvKiBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1NPYmpDU2VjdXJpdHlPcmlnaW4ubW0g
Ki8sCkBAIC0xMDQ0Miw3ICsxMDQxOSw2IEBACiAJCQkJMkQ0QUYwODgyMDQ0QzNDNDAwNkM4ODE3
IC8qIEZyb250Qm9hcmRTZXJ2aWNlc1NQSS5oICovLAogCQkJCUExM0IzREExMjA3RjM5REUwMDkw
QzU4RCAvKiBNb2JpbGVXaUZpU1BJLmggKi8sCiAJCQkJMzE3OEFGOTcyMEUyQTdGODAwNzRERTk0
IC8qIFBERktpdFNQSS5oICovLAotCQkJCTJEQzE4RkFGMjE4OTEyNjQwMDI1QTg4RCAvKiBQZW5j
aWxLaXRTUEkuaCAqLywKIAkJCQk0NkYzOEU4QjI0MTZFNjZEMDA1OTM3NUEgLyogUnVubmluZ0Jv
YXJkU2VydmljZXNTUEkuaCAqLywKIAkJCQlDRTFBMEJEMDFBNDhFNkM2MDA1NEVGNzQgLyogVEND
U1BJLmggKi8sCiAJCQkJQ0UxQTBCRDExQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5o
ICovLApAQCAtMTA4NDUsNyArMTA4MjEsNiBAQAogCQkJCUJDMjY1MjE3MTE4MjYwODEwMDI0M0Ux
MiAvKiBEcmF3aW5nQXJlYVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTY0MjMwOTEyREQw
OUVCMDBDQUFFMkMgLyogRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyREE2NzMxQTIwQzc1NEIxMDAzQ0I0MDEgLyogRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkQ1ODc1QkYyMTlCNTMxNTAwNzBCOUFBIC8qIEVkaXRh
YmxlSW1hZ2VDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTA1RkU1NDE4RDdCOURF
MDA4RjU3QTggLyogRWRpdGluZ1JhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE0MUFCNTEy
QzAyRUM0MDAyQkU2N0IgLyogRWRpdG9yU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMy
REE4MTBGNDM3RDEwMDU4QzE1QSAvKiBFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTExMDMz
LDggKzExMDA4LDYgQEAKIAkJCQlBMTc5OEI0MzIyMkQ5OERGMDAwNzY0QkQgLyogUGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzFFMTIzQkEy
MEExMTU3MzAwMjY0NkY0IC8qIFBERkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MTk1ODJEMzE1M0NCRkQ3MDBCNjA4NzUgLyogUERGS2l0SW1wb3J0cy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMkQ2QkYxMjQyMUFGNTZFMTAwMUU3OUM5IC8qIFBlbmNpbEtpdFNvZnRMaW5rLmggaW4g
SGVhZGVycyAqLywKLQkJCQkyREMxOEZCMDIxODkxMjY0MDAyNUE4OEQgLyogUGVuY2lsS2l0U1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzI5OERBMDFDM0RGMDIxMDA0NzBBRkUgLyogUGVuZGlu
Z0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzJFRDE4QzFFMkZFMTU3MDA2QkE2NEEg
LyogUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0FGQkQzNkYyMUU1NDZGODAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTE1OTYsNyArMTE1NjksNiBAQAogCQkJCTFBQjdENzhEMTI4OENEOUEwMENGRDA4
QyAvKiBXS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MzcyODFBMjIxQURDNzQ0MDA5
RTBERTYgLyogV0tEb3dubG9hZFByb2dyZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDA5QkEx
ODFFNkU2NEJDMDA5REEyOEUgLyogV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAotCQkJCTJEQzE4RkFEMjE4OTEwNDkwMDI1QTg4RCAvKiBXS0RyYXdpbmdWaWV3LmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRUNGNjZDRTIxRDZCNzdFMDA5RTVDM0YgLyogV0tFZGl0Q29tbWFu
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGNDU5MkYxOTQ2NEIyMDAwRjlENEEyIC8qIFdLRXJy
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkQ1NDhDMTMyRDgyNjgwMDU1RDgxNiAvKiBXS0Vy
cm9yQ0YuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGYwZThlNGUzYzkx
MGI3NTBlMDMyNjRkZjg5NTJmMzYyNzkyZWFhZTIuLjliZmJjODJlMTlhY2M0YTljMjRkM2M3OTc4
MjlhZDJhZTE0NmQ4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE4NCwxMCArMTg0LDYgQEAg
cHJpdmF0ZToKIAogICAgIFNlY29uZHMgZXZlbnRUaHJvdHRsaW5nRGVsYXkoKSBmaW5hbDsKIAot
ICAgIHZvaWQgYXNzb2NpYXRlRWRpdGFibGVJbWFnZVdpdGhBdHRhY2htZW50KFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lELCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCkg
ZmluYWw7Ci0gICAgdm9pZCBkaWRDcmVhdGVFZGl0YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXI6OkVtYmVkZGVkVmlld0lEKSBmaW5hbDsKLSAgICB2b2lkIGRpZERlc3Ryb3lFZGl0YWJs
ZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKSBmaW5hbDsKLQog
ICAgIGJvb2wgc2hvdWxkVXNlTW91c2VFdmVudEZvclNlbGVjdGlvbihjb25zdCBXZWJDb3JlOjpQ
bGF0Zm9ybU1vdXNlRXZlbnQmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvd0RhdGFEZXRlY3RvcnNV
SUZvckVsZW1lbnQoY29uc3QgV2ViQ29yZTo6RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OkV2ZW50
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvaW9zL1dlYkNocm9tZUNsaWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCmluZGV4IGZlZmE1YTZl
NzkzNWY1YzM1YmVhYmVlNTg3ZjM2ZmE2M2M2N2Y2NGQuLjQxZTgxYzJiYWNlNzZiZjY5OGJhNjQ4
NjVjZjIwNzIyODBjOWZiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCkBA
IC0yOSw3ICsyOSw2IEBACiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiRHJh
d2luZ0FyZWEuaCIKLSNpbXBvcnQgIkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyTWVzc2FnZXMuaCIK
ICNpbXBvcnQgIkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmgiCiAjaW1wb3J0ICJJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKQEAg
LTE2MSwzNCArMTYwLDYgQEAgUmVmUHRyPEljb24+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSWNv
bkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMKICAgICByZXR1cm4gSWNv
bjo6Y3JlYXRlSWNvbkZvckltYWdlKGljb25Gb3JGaWxlKHVybCkuZ2V0KCkuQ0dJbWFnZSk7CiB9
CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50Ojphc3NvY2lhdGVFZGl0YWJsZUltYWdlV2l0aEF0dGFj
aG1lbnQoR3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQsIGNvbnN0
IFN0cmluZyYgYXR0YWNobWVudElEKQotewotI2lmIEhBVkUoUEVOQ0lMS0lUKQotICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6QXNzb2NpYXRlV2l0aEF0
dGFjaG1lbnQoZW1iZWRkZWRWaWV3SUQsIGF0dGFjaG1lbnRJRCkpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oZW1iZWRkZWRWaWV3SUQpOwotICAgIFVOVVNFRF9QQVJBTShhdHRhY2htZW50SUQp
OwotI2VuZGlmCi19Ci0KLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkaWRDcmVhdGVFZGl0YWJsZUlt
YWdlKEdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEKQotewotI2lm
IEhBVkUoUEVOQ0lMS0lUKQotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpFZGl0YWJsZUltYWdl
Q29udHJvbGxlcjo6RGlkQ3JlYXRlRWRpdGFibGVJbWFnZShlbWJlZGRlZFZpZXdJRCkpOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oZW1iZWRkZWRWaWV3SUQpOwotI2VuZGlmCi19Ci0KLXZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpkaWREZXN0cm95RWRpdGFibGVJbWFnZShHcmFwaGljc0xheWVyOjpF
bWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCkKLXsKLSNpZiBIQVZFKFBFTkNJTEtJVCkKLSAg
ICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6OkRpZERlc3Ry
b3lFZGl0YWJsZUltYWdlKGVtYmVkZGVkVmlld0lEKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShlbWJlZGRlZFZpZXdJRCk7Ci0jZW5kaWYKLX0KLQogYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnNo
b3VsZFVzZU1vdXNlRXZlbnRGb3JTZWxlY3Rpb24oY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCkKIHsKICAgICAvLyBJbiBpUGFkT1MgYW5kIG1hY0NhdGFseXN0LCBkZXNw
aXRlIGdldHRpbmcgbW91c2UgZXZlbnRzLCB3ZSBzdGlsbCB3YW50IFVJVGV4dEludGVyYWN0aW9u
IGFuZCBmcmllbmRzIHRvIG93biBzZWxlY3Rpb24gZ2VzdHVyZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvR3JhcGhpY3NMYXll
ckNBUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9HcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwCmluZGV4IDhjMjFkMTUzYzJlODUxNTlh
YzVkYzYzYTUzOWYzYmQwYzRiOWEwOWMuLjk0YWU4ZmRmNDUzODJkYjRhM2IwNDYwN2FmNjYwYWMy
YmI2MWNlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9HcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9HcmFwaGljc0xheWVyQ0FSZW1v
dGUuY3BwCkBAIC02NywxMSArNjcsNiBAQCBSZWY8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xh
eWVyQ0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUxheWVyKgogICAgIHJl
dHVybiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShwbGF0Zm9ybUxheWVyLCBvd25lciwg
Km1fY29udGV4dCk7CiB9CiAKLVJlZjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQVJl
bW90ZTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyRm9yRW1iZWRkZWRWaWV3KFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlIGxheWVyVHlwZSwgR3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgZW1i
ZWRkZWRWaWV3SUQsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCi17Ci0gICAgcmV0dXJu
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlRm9yRW1iZWRkZWRWaWV3KGxheWVyVHlwZSwg
ZW1iZWRkZWRWaWV3SUQsIG93bmVyLCAqbV9jb250ZXh0KTsKLX0KLQogUmVmPFBsYXRmb3JtQ0FB
bmltYXRpb24+IEdyYXBoaWNzTGF5ZXJDQVJlbW90ZTo6Y3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlv
bihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCkKIHsKICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6Y3JlYXRl
KHR5cGUsIGtleVBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL0dyYXBoaWNzTGF5ZXJDQVJl
bW90ZS5oCmluZGV4IDVjMTE4ODE0NzA2MmMzNTlkYTQwZTFkMzlkNTY2ODM3YzFlOGU1ZDkuLjIz
OTc3ZjIzODg0N2I0YTc0MTk2MDM0ZDJlM2FlNDZiY2UzYmE5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9HcmFwaGljc0xheWVy
Q0FSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvR3JhcGhpY3NMYXllckNBUmVtb3RlLmgKQEAgLTQ3LDcgKzQ3LDYgQEAgcHJpdmF0
ZToKIAogICAgIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FM
YXllcihXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyQ2xpZW50KiBvd25lcikgb3ZlcnJpZGU7CiAgICAgUmVmPFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXZWJDb3Jl
OjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKSBvdmVycmlkZTsKLSAgICBSZWY8V2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXJGb3JFbWJlZGRlZFZpZXco
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIEdyYXBoaWNzTGF5ZXI6OkVtYmVk
ZGVkVmlld0lELCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKSBvdmVycmlk
ZTsKICAgICBSZWY8V2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlUGxhdGZvcm1D
QUFuaW1hdGlvbihXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgpIG92ZXJyaWRlOwogCiAgICAgLy8gUGxhdGZvcm1DQUxheWVy
UmVtb3RlIGNhbid0IGN1cnJlbnRseSBwcm94eSBkaXJlY3RseSBjb21wb3NpdGVkIGltYWdlIGNv
bnRlbnRzLCBzbyBvcHQgb3V0IG9mIHRoaXMgb3B0aW1pemF0aW9uLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FM
YXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCA1OWI3ZjUxNWM0NzRiZDVj
NjY2YTZmYTI5Y2VkOTJjN2YxMjZhNDdjLi5hNTkxNzE5YmRhOTBhMzljZGE0MGJhNDE5ODllZGEy
ZDRlMDYzMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVt
b3RlLmNwcApAQCAtNjMsMTMgKzYzLDYgQEAgUmVmPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gUGxh
dGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUoUGxhdGZvcm1MYXllciAqcGxhdGZvcm0KICAgICBy
ZXR1cm4gUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjcmVhdGUocGxhdGZvcm1MYXllciwg
b3duZXIsIGNvbnRleHQpOwogfQogCi1SZWY8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZUZvckVtYmVkZGVkVmlldyhMYXllclR5cGUgbGF5ZXJUeXBl
LCBHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCwgUGxhdGZvcm1D
QUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKLXsK
LSAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBsYXllciA9IGFkb3B0UmVmKG5ldyBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUobGF5ZXJUeXBlLCBlbWJlZGRlZFZpZXdJRCwgb3duZXIsIGNv
bnRleHQpKTsKLSAgICBjb250ZXh0LmxheWVyRGlkRW50ZXJDb250ZXh0KCpsYXllciwgbGF5ZXJU
eXBlKTsKLSAgICByZXR1cm4gbGF5ZXIucmVsZWFzZU5vbk51bGwoKTsKLX0KLQogUmVmPFBsYXRm
b3JtQ0FMYXllclJlbW90ZT4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUoY29uc3QgUGxh
dGZvcm1DQUxheWVyUmVtb3RlJiBvdGhlciwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50
KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBhdXRvIGxh
eWVyID0gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUob3RoZXIsIG93bmVyLCBj
b250ZXh0KSk7CkBAIC04OSwxMiArODIsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OlBsYXRm
b3JtQ0FMYXllclJlbW90ZShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZQogICAg
IH0KIH0KIAotUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUoTGF5
ZXJUeXBlIGxheWVyVHlwZSwgR3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRW
aWV3SUQsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRl
eHQmIGNvbnRleHQpCi0gICAgOiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUobGF5ZXJUeXBlLCBvd25l
ciwgY29udGV4dCkKLXsKLSAgICBtX2VtYmVkZGVkVmlld0lEID0gZW1iZWRkZWRWaWV3SUQ7Ci19
Ci0KIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6UGxhdGZvcm1DQUxheWVyUmVtb3RlKGNvbnN0IFBs
YXRmb3JtQ0FMYXllclJlbW90ZSYgb3RoZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIs
IFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCiAgICAgOiBQbGF0Zm9ybUNBTGF5ZXIo
b3RoZXIubGF5ZXJUeXBlKCksIG93bmVyKQogICAgICwgbV9hY2NlbGVyYXRlc0RyYXdpbmcob3Ro
ZXIuYWNjZWxlcmF0ZXNEcmF3aW5nKCkpCkBAIC04ODEsMTEgKzg2OCw2IEBAIHZvaWQgUGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpzZXRFdmVudFJlZ2lvbihjb25zdCBXZWJDb3JlOjpFdmVudFJlZ2lv
biYgZXZlbnRSZWdpCiAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6RXZlbnRSZWdpb25DaGFuZ2VkKTsKIH0KIAotR3JhcGhp
Y3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjplbWJlZGRlZFZp
ZXdJRCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZW1iZWRkZWRWaWV3SUQ7Ci19Ci0KIFJlZjxQ
bGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlQ29tcGF0aWJsZUxh
eWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVy
Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6Y3JlYXRlKGxheWVyVHlwZSwgY2xpZW50LCAqbV9jb250ZXh0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAppbmRleCAwODMxOTU1MzVmYWVmZDE4ZDg5
OTk4MGI1NmI4Y2UzYTljNGM4ZmRiLi4wYzBhMDgyYmU4ZjliOGJjNzVmMDM4YjA3ZTc1ZDk5YTkz
ZWEyNjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5o
CkBAIC00Miw3ICs0Miw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFBsYXRmb3JtQ0FMYXll
clJlbW90ZT4gY3JlYXRlKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqLCBSZW1vdGVMYXllclRyZWVDb250ZXh0Jik7CiAg
ICAgc3RhdGljIFJlZjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IGNyZWF0ZShQbGF0Zm9ybUxheWVy
ICosIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCosIFJlbW90ZUxheWVyVHJlZUNvbnRl
eHQmKTsKICAgICBzdGF0aWMgUmVmPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gY3JlYXRlKGNvbnN0
IFBsYXRmb3JtQ0FMYXllclJlbW90ZSYsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCos
IFJlbW90ZUxheWVyVHJlZUNvbnRleHQmKTsKLSAgICBzdGF0aWMgUmVmPFBsYXRmb3JtQ0FMYXll
clJlbW90ZT4gY3JlYXRlRm9yRW1iZWRkZWRWaWV3KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCwgV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYpOwogCiAg
ICAgdmlydHVhbCB+UGxhdGZvcm1DQUxheWVyUmVtb3RlKCk7CiAKQEAgLTE3Niw4ICsxNzUsNiBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEV2ZW50UmVnaW9uKGNvbnN0IFdlYkNvcmU6OkV2ZW50
UmVnaW9uJikgb3ZlcnJpZGU7CiAKLSAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRl
ZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCgpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgV2ViQ29yZTo6
VGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9
CiAKICAgICBSZWY8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyPiBjbG9uZShXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKSBjb25zdCBvdmVycmlkZTsKQEAgLTIwMyw3ICsyMDAs
NiBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
ckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmKTsKLSAgICBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lELCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJD
bGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0Jik7CiAgICAgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlKGNvbnN0IFBsYXRmb3JtQ0FMYXllclJlbW90ZSYsIFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllckNsaWVudCosIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmKTsKIAogICAgIHZvaWQgdXBk
YXRlQ2xvbmVkTGF5ZXJQcm9wZXJ0aWVzKFBsYXRmb3JtQ0FMYXllclJlbW90ZSYgY2xvbmUsIGJv
b2wgY29weUNvbnRlbnRzID0gdHJ1ZSkgY29uc3Q7CkBAIC0yMjQsOCArMjIwLDYgQEAgcHJpdmF0
ZToKICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUqIG1fbWFza0xheWVyIHsgbnVsbHB0ciB9Owog
ICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbj4+
IG1fYW5pbWF0aW9uczsKIAotICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmll
d0lEIG1fZW1iZWRkZWRWaWV3SUQ7Ci0KICAgICBib29sIG1fYWNjZWxlcmF0ZXNEcmF3aW5nIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fd2FudHNEZWVwQ29sb3JCYWNraW5nU3RvcmUgeyBmYWxzZSB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVDb250ZXh0Lm1tCmlu
ZGV4IGY0MjVkMTE2MTkzNWY0MDNjMGMxYTRiNmFhZWE3ZDVkODM1NzU5MDUuLjUyMjA1NWUyZDk1
NjdjNmRlMzE2ODczNWFiMzg3YjA2ZmFkNTcwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVDb250ZXh0
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVDb250ZXh0Lm1tCkBAIC05Miw3ICs5Miw2IEBAIHZvaWQgUmVtb3Rl
TGF5ZXJUcmVlQ29udGV4dDo6bGF5ZXJEaWRFbnRlckNvbnRleHQoUGxhdGZvcm1DQUxheWVyUmVt
b3RlJiBsYXllciwKICAgICBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlv
blByb3BlcnRpZXMgY3JlYXRpb25Qcm9wZXJ0aWVzOwogICAgIGNyZWF0aW9uUHJvcGVydGllcy5s
YXllcklEID0gbGF5ZXJJRDsKICAgICBjcmVhdGlvblByb3BlcnRpZXMudHlwZSA9IHR5cGU7Ci0g
ICAgY3JlYXRpb25Qcm9wZXJ0aWVzLmVtYmVkZGVkVmlld0lEID0gbGF5ZXIuZW1iZWRkZWRWaWV3
SUQoKTsKIAogICAgIGlmIChsYXllci5pc1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbSgpKSB7
CiAgICAgICAgIGNyZWF0aW9uUHJvcGVydGllcy5ob3N0aW5nQ29udGV4dElEID0gbGF5ZXIuaG9z
dGluZ0NvbnRleHRJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IDEyOGViZDUzZWZjYWMyODg4MWVhNDMzNjAwZTcyM2IxZWZhNjA4NWIuLjM0M2Rk
MWU0YWI0ZmNiNTUzM2Y4ZmUwNTU1ZjNkMDczNjY4NGRmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTczNSw3ICs3MzUsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25BcHBlYXJhbmNlKCk7CiAgICAgdm9pZCBnZXRTZWxlY3Rp
b25Db250ZXh0KENhbGxiYWNrSUQpOwogICAgIHZvaWQgaGFuZGxlVHdvRmluZ2VyVGFwQXRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpN
b2RpZmllcj4sIHVpbnQ2NF90IHJlcXVlc3RJRCk7Ci0gICAgdm9pZCBoYW5kbGVTdHlsdXNTaW5n
bGVUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDY0X3QgcmVxdWVzdElE
KTsKICAgICB2b2lkIGdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdl
YkNvcmU6OlRleHRHcmFudWxhcml0eSwgaW50MzJfdCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBn
ZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCwgY29uc3QgU3RyaW5nJiwg
Q2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzdG9yZVNlbGVjdGlvbkZvckFjY2Vzc2liaWxpdHkoYm9v
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgppbmRleCBiMmFhNjFlMzRjNGY0YWU0OTQyMzM4Y2IyOWJkNGNiMzc0N2JkNzU5
Li5mYjVmYjBjYWM1OGFjZDg3YWQ1MmQ5Zjk3NGM0NWU4MWI0MjBiNmFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAg
LTEwNyw3ICsxMDcsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBHZXRTZWxlY3Rpb25Db250ZXh0KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAg
IFNldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayhib29sIGFsbG93cykKICAgICBI
YW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBPcHRpb25T
ZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+IG1vZGlmaWVycywgdWludDY0X3QgcmVxdWVz
dElEKQotICAgIEhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQg
cG9pbnQsIHVpbnQ2NF90IHJlcXVlc3RJRCkKICAgICBTZXRGb3JjZUFsd2F5c1VzZXJTY2FsYWJs
ZShib29sIHVzZXJTY2FsYWJsZSkKICAgICBHZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVj
dGlvbk9mZnNldChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5LCBpbnQzMl90IG9mZnNldCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAg
R2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBTdHJpbmcg
dGV4dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGYyMTJmODcxYTJi
YjdmM2I0NTNmYmExNjVlMDk1ODVmM2NiZjk4MGUuLmU0YWRlMTViZDMxOWRhNWE0OTYyZjM0Zjc0
M2U5YWVhY2M3Y2IyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xMTA4LDM4ICsxMTA4LDYgQEAgdm9pZCBXZWJQYWdl
OjpoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2lu
dCwgT3B0aW9uU2UKICAgICBjb21wbGV0ZVN5bnRoZXRpY0NsaWNrKCpub2RlUmVzcG9uZGluZ1Rv
Q2xpY2ssIGFkanVzdGVkUG9pbnQsIG1vZGlmaWVycywgV2ViQ29yZTo6VHdvRmluZ2VyVGFwKTsK
IH0KIAotdm9pZCBXZWJQYWdlOjpoYW5kbGVTdHlsdXNTaW5nbGVUYXBBdFBvaW50KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDY0X3QgcmVxdWVzdElEKQotewotICAgIFNldEZv
clNjb3BlPGJvb2w+IHVzZXJJc0ludGVyYWN0aW5nQ2hhbmdlIHsgbV91c2VySXNJbnRlcmFjdGlu
ZywgdHJ1ZSB9OwotCi0gICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpOwotCi0gICAgYXV0byBwb2ludEluRG9jdW1lbnQgPSBmcmFt
ZS52aWV3KCktPnJvb3RWaWV3VG9Db250ZW50cyhwb2ludCk7Ci0gICAgY29uc3RleHByIE9wdGlv
blNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpBbGxv
d1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHkgfTsKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRl
c3QgPSBmcmFtZS5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludEluRG9j
dW1lbnQsIGhpdFR5cGUpOwotCi0gICAgTm9kZSogbm9kZSA9IGhpdFRlc3QuaW5uZXJOb25TaGFy
ZWROb2RlKCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm47Ci0gICAgYXV0byByZW5k
ZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKHJlbmRlcmVyLT5pc1JlcGxhY2VkKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGF1dG8gcG9zaXRpb24gPSByZW5kZXJlci0+cG9zaXRpb25Gb3JQb2ludChoaXRUZXN0
LmxvY2FsUG9pbnQoKSwgbnVsbHB0cik7Ci0gICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQotICAg
ICAgICBwb3NpdGlvbiA9IGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShub2RlKTsKLSAgICBh
dXRvIHJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHBvc2l0aW9uKTsKLSAgICBpZiAoIXJhbmdlKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdl
KCpyYW5nZSwgcG9zaXRpb24uYWZmaW5pdHkoKSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNo
b3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOwotICAgIGF1dG8gaW1hZ2UgPSBm
cmFtZS5lZGl0b3IoKS5pbnNlcnRFZGl0YWJsZUltYWdlKCk7Ci0gICAgZnJhbWUuZG9jdW1lbnQo
KS0+c2V0Rm9jdXNlZEVsZW1lbnQoaW1hZ2UuZ2V0KCkpOwotfQotCiB2b2lkIFdlYlBhZ2U6OnBv
dGVudGlhbFRhcEF0UG9zaXRpb24odWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JiBwb3NpdGlvbiwgYm9vbCBzaG91bGRSZXF1ZXN0TWFnbmlmaWNhdGlvbkluZm9y
bWF0aW9uKQogewogICAgIG1fcG90ZW50aWFsVGFwTm9kZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCku
bm9kZVJlc3BvbmRpbmdUb0NsaWNrRXZlbnRzKHBvc2l0aW9uLCBtX3BvdGVudGlhbFRhcExvY2F0
aW9uLCBtX3BvdGVudGlhbFRhcFNlY3VyaXR5T3JpZ2luLmdldCgpKTsKQEAgLTI1NDIsOCArMjUx
MCw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0Fzc2lzdGFibGVFbGVtZW50KEVsZW1lbnQmIGVs
ZW1lbnQpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChpczxIVE1MVGV4dEFyZWFFbGVt
ZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGlzPEhUTUxJbWFn
ZUVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQp
Lmhhc0VkaXRhYmxlSW1hZ2VBdHRyaWJ1dGUoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
aWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgIEhUTUxJbnB1dEVs
ZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQp
OwogICAgICAgICAvLyBGSVhNRTogVGhpcyBsYXVuZHJ5IGxpc3Qgb2YgdHlwZXMgaXMgbm90IGEg
Z29vZCB3YXkgdG8gZmFjdG9yIHRoaXMuIE5lZWQgYSBzdWl0YWJsZSBmdW5jdGlvbiBvbiBIVE1M
SW5wdXRFbGVtZW50IGl0c2VsZi4KQEAgLTMyMTgsOSArMzE4NCw2IEBAIHZvaWQgV2ViUGFnZTo6
Z2V0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJiBp
bmZvcm1hdGlvCiAgICAgICAgIGluZm9ybWF0aW9uLnZhbHVlID0gZWxlbWVudC52YWx1ZSgpOwog
ICAgICAgICBpbmZvcm1hdGlvbi52YWx1ZUFzTnVtYmVyID0gZWxlbWVudC52YWx1ZUFzTnVtYmVy
KCk7CiAgICAgICAgIGluZm9ybWF0aW9uLmF1dG9maWxsRmllbGROYW1lID0gV2ViQ29yZTo6dG9B
dXRvZmlsbEZpZWxkTmFtZShlbGVtZW50LmF1dG9maWxsRGF0YSgpLmZpZWxkTmFtZSk7Ci0gICAg
fSBlbHNlIGlmIChpczxIVE1MSW1hZ2VFbGVtZW50PigqZm9jdXNlZEVsZW1lbnQpICYmIGRvd25j
YXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCpmb2N1c2VkRWxlbWVudCkuaGFzRWRpdGFibGVJbWFnZUF0
dHJpYnV0ZSgpKSB7Ci0gICAgICAgIGluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID0gSW5wdXRUeXBl
OjpEcmF3aW5nOwotICAgICAgICBpbmZvcm1hdGlvbi5lbWJlZGRlZFZpZXdJRCA9IGRvd25jYXN0
PEhUTUxJbWFnZUVsZW1lbnQ+KCpmb2N1c2VkRWxlbWVudCkuZWRpdGFibGVJbWFnZVZpZXdJRCgp
OwogICAgIH0gZWxzZSBpZiAoZm9jdXNlZEVsZW1lbnQtPmhhc0VkaXRhYmxlU3R5bGUoKSkgewog
ICAgICAgICBpbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9IElucHV0VHlwZTo6Q29udGVudEVkaXRh
YmxlOwogICAgICAgICBpZiAoaXM8SFRNTEVsZW1lbnQ+KCpmb2N1c2VkRWxlbWVudCkpIHsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NzM5YTM3
YzIwMjRjMmVlMjZlOTUzNmMxMDkxOTVhMWUxODJkYzc4Li5hOTkwNTFhNDRkNGYxNDU4MTE1ODI5
OGY3YWRhOWQ1OTA2NTY5MmY2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjAtMDgtMzAgIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBlZGl0YWJs
ZSBpbWFnZSBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTU5OTEKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAg
ICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENv
bnRyb2xsZXIuaWRsOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L1VJU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6
OmRyYXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpVSVNj
cmlwdENvbnRyb2xsZXI6Om51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSk6IERlbGV0ZWQu
CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9zcGkvUGVuY2lsS2l0VGVzdFNQSS5oOiBSZW1v
dmVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tBdHRhY2htZW50VGVzdHMubW06CisgICAgICAgICh3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1l
bnRzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmZvckVhY2hWaWV3SW5IaWVyYXJjaHkpOiBE
ZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZmluZEVkaXRhYmxlSW1hZ2VDYW52YXMp
OiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZHJhd1NxdWFyZUluRWRpdGFibGVJ
bWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvUGVuY2lsS2l0VGVz
dFNQSS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV1RSOjp1cGRhdGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVyKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmg6CisgICAgICAgIChXVFI6
OlRlc3RPcHRpb25zOjpoYXNTYW1lSW5pdGlhbGl6YXRpb25PcHRpb25zIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVy
Q29jb2EubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdl
YlZpZXcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpmaW5kRWRpdGFi
bGVJbWFnZUNhbnZhcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29u
dHJvbGxlcklPUzo6ZHJhd1NxdWFyZUluRWRpdGFibGVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAg
IChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUlt
YWdlKTogRGVsZXRlZC4KKwogMjAyMC0wOC0yOCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KIAogICAgICAgICBTaXRlcyBidWlsdCB3aXRoIGZsYW1iZS5qcyBkb24ndCB3
b3JrIHdpdGggdHJhY2twYWQgb24gaVBhZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbCBiL1Rv
b2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29u
dHJvbGxlci5pZGwKaW5kZXggODQ2YTY0MGU2NTlhZDUzOTFiNmY3MGJjNTQ2Njc2NzNjNDliYjAz
Yy4uMWQ1MzBjMjhmMzdkODczNDM4ZDNjNjQ5ZmQ4MTZhYWI1ODZkMzA5OCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRD
b250cm9sbGVyLmlkbAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4
dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCkBAIC0zNDcsOSArMzQ3LDYgQEAgaW50
ZXJmYWNlIFVJU2NyaXB0Q29udHJvbGxlciB7CiAKICAgICBvYmplY3QgYXR0YWNobWVudEluZm8o
RE9NU3RyaW5nIGF0dGFjaG1lbnRJZGVudGlmaWVyKTsKIAotICAgIC8vIEVkaXRpbmcKLSAgICB1
bmRlZmluZWQgZHJhd1NxdWFyZUluRWRpdGFibGVJbWFnZSgpOwotICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBsb25nIG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZTsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGxhc3RVbmRvTGFiZWw7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyBmaXJzdFJlZG9MYWJlbDsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVu
bmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCmluZGV4
IDI2NTI3NTAxZmZhNWQzOTkxMTI3NzA4MjkwOTMxZjllODEyMTgzZjUuLjZiZDgxZjRjYWNlYmMy
ZDQ2MWM2NDAxMTJjOTkxNGY3MzNmMzhlMzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJT
aGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCkBAIC0y
NjYsMTEgKzI2Niw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2ltdWxhdGVSb3RhdGlv
bihEZXZpY2VPcmllbnRhdGlvbiosIEpTVmFsdWVSZWYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzaW11bGF0ZVJvdGF0aW9uTGlrZVNhZmFyaShEZXZpY2VPcmllbnRh
dGlvbiosIEpTVmFsdWVSZWYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogCi0gICAgLy8gRWRpdGFi
bGUgSW1hZ2VzCi0KLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1NxdWFyZUluRWRpdGFibGVJbWFnZSgp
IHsgbm90SW1wbGVtZW50ZWQoKTsgfQotICAgIHZpcnR1YWwgbG9uZyBudW1iZXJPZlN0cm9rZXNJ
bkVkaXRhYmxlSW1hZ2UoKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiAwOyB9Ci0KICAgICAv
LyBVbmRvL1JlZG8KIAogICAgIHZpcnR1YWwgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGxhc3RV
bmRvTGFiZWwoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBudWxscHRyOyB9CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL3NwaS9QZW5jaWxLaXRUZXN0U1BJLmgg
Yi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL3NwaS9QZW5jaWxLaXRUZXN0U1BJLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlOThkOWVmMWQ5ZDQwNDE1ZWQyNGNhMDc5MjU1YzYzZmJl
Mzg5OTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9v
bHMvVGVzdFJ1bm5lclNoYXJlZC9zcGkvUGVuY2lsS2l0VGVzdFNQSS5oCisrKyAvZGV2L251bGwK
QEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPHd0Zi9QbGF0Zm9ybS5oPgot
Ci0jaWYgSEFWRShQRU5DSUxLSVQpCi0KLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotCi0j
aW1wb3J0IDxQZW5jaWxLaXQvUGVuY2lsS2l0Lmg+Ci0KLSNpbXBvcnQgPFBlbmNpbEtpdC9QS0Ry
YXdpbmdfUHJpdmF0ZS5oPgotI2ltcG9ydCA8UGVuY2lsS2l0L1BLSW5rX1ByaXZhdGUuaD4KLSNp
bXBvcnQgPFBlbmNpbEtpdC9QS1N0cm9rZV9Qcml2YXRlLmg+Ci0KLSNlbHNlCi0KLXR5cGVkZWYg
TlNJbnRlZ2VyIFBLSW5rVHlwZTsKLQotQGludGVyZmFjZSBQS0luayA6IE5TT2JqZWN0Ci0rIChQ
S0luayAqKWlua1dpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKXR5cGUgY29sb3I6KFVJQ29sb3Ig
Kiljb2xvciB3ZWlnaHQ6KENHRmxvYXQpd2VpZ2h0OwotQGVuZAotCi1AaW50ZXJmYWNlIFBLU3Ry
b2tlIDogTlNPYmplY3QKLS0gKGlkKV9pbml0V2l0aFBhdGg6KENHUGF0aFJlZilwYXRoIGluazoo
UEtJbmsgKilpbmsgaW5wdXRTY2FsZTooQ0dGbG9hdClpbnB1dFNjYWxlOwotQGVuZAotCi1AaW50
ZXJmYWNlIFBLRHJhd2luZyA6IE5TT2JqZWN0Ci0tIChQS1N0cm9rZSAqKV9hZGRTdHJva2U6KFBL
U3Ryb2tlICopc3Ryb2tlOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5
PFBLU3Ryb2tlICo+ICpfYWxsU3Ryb2tlczsKLUBlbmQKLQotQGludGVyZmFjZSBQS0NhbnZhc1Zp
ZXcgOiBVSVZpZXcKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBQS0RyYXdpbmcgKmRyYXdp
bmc7Ci1AZW5kCi0KLSNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotCi0jZW5kaWYg
Ly8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE2MTM4MWMyNTgx
ODRjNTNmZTMxYjlmZjA1ZTZkY2Y3Yjc3OWExNzUuLmRlNWZjNGU1ZGQzYzAxZjJmMzE1YTUxZWM5
Zjc0ZjJjOWQyNTVmMDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODE2LDcgKzE4MTYs
NiBAQAogCQkyRDRDRjhCQzFEODM2MENDMDAwMUNFOEQgLyogV0tUaHVtYm5haWxWaWV3Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tUaHVtYm5haWxWaWV3Lm1t
OyBwYXRoID0gV2ViS2l0L1dLVGh1bWJuYWlsVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkQ1MUEwQzUxQzhCRjAwNDAwNzY1QzQ1IC8qIERPTUhUTUxWaWRlb0VsZW1lbnRX
cmFwcGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRN
TFZpZGVvRWxlbWVudFdyYXBwZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJE
NTIwNjM0MjQ1QTYwM0MwMDMzOEY4OCAvKiBWaWV3RXhwb3NlZFJlY3QubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWV3RXhwb3NlZFJlY3QubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJENjFFQzMwMjFCMEI3NUMwMEE3RDFDQiAvKiBQZW5jaWxL
aXRUZXN0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlbmNpbEtpdFRlc3RTUEkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2NDBCNTQxNzg3NURGRjAwQkZBRjk5IC8qIFNjcm9sbFBp
bm5pbmdCZWhhdmlvcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2Nyb2xsUGlubmluZ0JlaGF2aW9ycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJENzAwNTk1MjFFREEwQzYwMDM0NjNDQiAvKiBUYWJPdXRPZldlYlZpZXcubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUYWJPdXRPZldlYlZpZXcubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENzAwNTk3MjFFREE0RDAwMDM0NjNDQiAvKiBPZmZz
Y3JlZW5XaW5kb3cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBP
ZmZzY3JlZW5XaW5kb3cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDE3LDcg
KzM0MTYsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRjRENEYzQjQxRTRFMkJDQjAwQkIyNzY3
IC8qIERyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tICovLAogCQkJCTJFNzc2NUNDMTZDNEQ4MEEw
MEJBMkJCMSAvKiBtYWluSU9TLm1tICovLAotCQkJCTJENjFFQzMwMjFCMEI3NUMwMEE3RDFDQiAv
KiBQZW5jaWxLaXRUZXN0U1BJLmggKi8sCiAJCQkJRjQ4RDZDMEYyMjRCMzc3MDAwRTNFMkZCIC8q
IFByZWZlcnJlZENvbnRlbnRNb2RlLm1tICovLAogCQkJCUY0NTE3QjY1MjA1NEM0OTUwMEMyNjcy
MSAvKiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5oICovLAogCQkJCUY0NTE3QjY2MjA1NEM0OTUw
MEMyNjcyMSAvKiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbSAqLywKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3Rz
Lm1tCmluZGV4IDg0MGY0NWZmODBlZmQzNzJlNzdlZmY5ZjAxYTlhZmMxNGY2MDI5MjQuLjNiM2Y2
ZGVkMWE4NDg5YWFhZjlkYjA1YzE0NzM2MzYxMzhiZDNhMDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5t
bQpAQCAtMjksNyArMjksNiBAQAogCiAjaW1wb3J0ICJEcmFnQW5kRHJvcFNpbXVsYXRvci5oIgog
I2ltcG9ydCAiTlNJdGVtUHJvdmlkZXJBZGRpdGlvbnMuaCIKLSNpbXBvcnQgIlBlbmNpbEtpdFRl
c3RTUEkuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0TmF2
aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCkBAIC0yMDEsNyAr
MjAwLDYgQEAgc3RhdGljIE5TU3RyaW5nICphdHRhY2htZW50RWRpdGluZ1Rlc3RNYXJrdXAgPSBA
IjxtZXRhIG5hbWU9J3ZpZXdwb3J0JyBjb250ZW50PScKIHN0YXRpYyBSZXRhaW5QdHI8VGVzdFdL
V2ViVmlldz4gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cyhDR1NpemUgd2ViVmlld1NpemUs
IFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pCiB7CiAgICAgY29uZmlndXJh
dGlvbi5fYXR0YWNobWVudEVsZW1lbnRFbmFibGVkID0gWUVTOwotICAgIGNvbmZpZ3VyYXRpb24u
X2VkaXRhYmxlSW1hZ2VzRW5hYmxlZCA9IFlFUzsKICAgICBXS1ByZWZlcmVuY2VzU2V0Q3VzdG9t
UGFzdGVib2FyZERhdGFFbmFibGVkKChfX2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVmKVtjb25maWd1
cmF0aW9uIHByZWZlcmVuY2VzXSwgWUVTKTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgd2Vi
Vmlld1NpemUud2lkdGgsIHdlYlZpZXdTaXplLmhlaWdodCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uXSk7CkBAIC0yMjI2LDc2ICsyMjI0LDYgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lP
UywgQ29weUF0dGFjaG1lbnRVc2luZ0VsZW1lbnRBY3Rpb24pCiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKIH0KIAotI2lmIEhBVkUoUEVOQ0lMS0lUKQotc3RhdGljIEJPT0wg
Zm9yRWFjaFZpZXdJbkhpZXJhcmNoeShVSVZpZXcgKnZpZXcsIHZvaWQoXm1hcEZ1bmN0aW9uKShV
SVZpZXcgKnN1YnZpZXcsIEJPT0wgKnN0b3ApKQotewotICAgIEJPT0wgc3RvcCA9IE5POwotICAg
IG1hcEZ1bmN0aW9uKHZpZXcsICZzdG9wKTsKLSAgICBpZiAoc3RvcCkKLSAgICAgICAgcmV0dXJu
IFlFUzsKLQotICAgIGZvciAoVUlWaWV3ICpzdWJ2aWV3IGluIHZpZXcuc3Vidmlld3MpIHsKLSAg
ICAgICAgc3RvcCA9IGZvckVhY2hWaWV3SW5IaWVyYXJjaHkoc3VidmlldywgbWFwRnVuY3Rpb24p
OwotICAgICAgICBpZiAoc3RvcCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1
cm4gc3RvcDsKLX0KLQotc3RhdGljIFBLQ2FudmFzVmlldyAqZmluZEVkaXRhYmxlSW1hZ2VDYW52
YXMoV0tXZWJWaWV3ICp3ZWJWaWV3KQotewotICAgIENsYXNzIHBrQ2FudmFzVmlld0NsYXNzID0g
TlNDbGFzc0Zyb21TdHJpbmcoQCJQS0NhbnZhc1ZpZXciKTsKLSAgICBfX2Jsb2NrIFBLQ2FudmFz
VmlldyAqY2FudmFzVmlldyA9IG5pbDsKLSAgICBmb3JFYWNoVmlld0luSGllcmFyY2h5KHdlYlZp
ZXcud2luZG93LCBeKFVJVmlldyAqc3VidmlldywgQk9PTCAqc3RvcCkgewotICAgICAgICBpZiAo
IVtzdWJ2aWV3IGlzS2luZE9mQ2xhc3M6cGtDYW52YXNWaWV3Q2xhc3NdKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIGNhbnZhc1ZpZXcgPSAoUEtDYW52YXNWaWV3ICopc3VidmlldzsK
LSAgICAgICAgKnN0b3AgPSBZRVM7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGNhbnZhc1ZpZXc7Ci19
Ci0KLXN0YXRpYyB2b2lkIGRyYXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2UoV0tXZWJWaWV3ICp3ZWJW
aWV3KQotewotICAgIENsYXNzIHBrRHJhd2luZ0NsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJQ
S0RyYXdpbmciKTsKLSAgICBDbGFzcyBwa0lua0NsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJQ
S0luayIpOwotICAgIENsYXNzIHBrU3Ryb2tlQ2xhc3MgPSBOU0NsYXNzRnJvbVN0cmluZyhAIlBL
U3Ryb2tlIik7Ci0KLSAgICBQS0NhbnZhc1ZpZXcgKmNhbnZhc1ZpZXcgPSBmaW5kRWRpdGFibGVJ
bWFnZUNhbnZhcyh3ZWJWaWV3KTsKLSAgICBSZXRhaW5QdHI8UEtEcmF3aW5nPiBkcmF3aW5nID0g
Y2FudmFzVmlldy5kcmF3aW5nID86IGFkb3B0TlMoW1twa0RyYXdpbmdDbGFzcyBhbGxvY10gaW5p
dF0pOwotICAgIFJldGFpblB0cjxDR1BhdGhSZWY+IHBhdGggPSBhZG9wdENGKENHUGF0aENyZWF0
ZVdpdGhSZWN0KENHUmVjdE1ha2UoMCwgMCwgNTAsIDUwKSwgTlVMTCkpOwotICAgIFJldGFpblB0
cjxQS0luaz4gaW5rID0gW3BrSW5rQ2xhc3MgaW5rV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUu
aW5rLnBlbiIgY29sb3I6VUlDb2xvci5ncmVlbkNvbG9yIHdlaWdodDoxMDAuMF07Ci0gICAgUmV0
YWluUHRyPFBLU3Ryb2tlPiBzdHJva2UgPSBhZG9wdE5TKFtbcGtTdHJva2VDbGFzcyBhbGxvY10g
X2luaXRXaXRoUGF0aDpwYXRoLmdldCgpIGluazppbmsuZ2V0KCkgaW5wdXRTY2FsZToxXSk7Ci0g
ICAgW2RyYXdpbmcgX2FkZFN0cm9rZTpzdHJva2UuZ2V0KCldOwotCi0gICAgW2NhbnZhc1ZpZXcg
c2V0RHJhd2luZzpkcmF3aW5nLmdldCgpXTsKLX0KLQotVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lP
UywgRWRpdGFibGVJbWFnZUF0dGFjaG1lbnREYXRhSW52YWxpZGF0aW9uKQotewotICAgIGF1dG8g
d2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsKLQotICAgIFJldGFpblB0
cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50OwotCi0gICAgewotICAgICAgICBPYnNlcnZlQXR0
YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKLSAgICAgICAg
RVhQRUNUX1RSVUUoW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJJ
bnNlcnRFZGl0YWJsZUltYWdlIiBhcmd1bWVudDpuaWxdKTsKLSAgICAgICAgRVhQRUNUX0VRKG9i
c2VydmVyLm9ic2VydmVyKCkuaW5zZXJ0ZWQuY291bnQsIDFMVSk7Ci0gICAgICAgIGF0dGFjaG1l
bnQgPSBvYnNlcnZlci5vYnNlcnZlcigpLmluc2VydGVkLmZpcnN0T2JqZWN0OwotICAgIH0KLQot
ICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKLQotICAgIHsKLSAg
ICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5n
ZXQoKSk7Ci0gICAgICAgIGRyYXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2Uod2ViVmlldy5nZXQoKSk7
Ci0gICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRJbnZhbGlkYXRpb24oQFsgYXR0YWNo
bWVudC5nZXQoKSBdKTsKLSAgICB9Ci19Ci0KLSNlbmRpZiAvLyBIQVZFKFBFTkNJTEtJVCkKLQog
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1BlbmNpbEtpdFRlc3RT
UEkuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1BlbmNpbEtpdFRlc3RTUEkuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRhNDQzOTU3OWJjMTg4YmIyNTFhZTk4MmY2MDg5MThi
OWY2YTVkZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL2lvcy9QZW5jaWxLaXRUZXN0U1BJLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCA8d3RmL1BsYXRmb3JtLmg+Ci0K
LSNpZiBIQVZFKFBFTkNJTEtJVCkKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0KLSNp
bXBvcnQgPFBlbmNpbEtpdC9QZW5jaWxLaXQuaD4KLQotI2ltcG9ydCA8UGVuY2lsS2l0L1BLRHJh
d2luZ19Qcml2YXRlLmg+Ci0jaW1wb3J0IDxQZW5jaWxLaXQvUEtJbmtfUHJpdmF0ZS5oPgotI2lt
cG9ydCA8UGVuY2lsS2l0L1BLU3Ryb2tlX1ByaXZhdGUuaD4KLQotI2Vsc2UKLQotdHlwZWRlZiBO
U0ludGVnZXIgUEtJbmtUeXBlOwotCi1AaW50ZXJmYWNlIFBLSW5rIDogTlNPYmplY3QKLSsgKFBL
SW5rICopaW5rV2l0aFR5cGU6KFBLSW5rVHlwZSl0eXBlIGNvbG9yOihVSUNvbG9yICopY29sb3Ig
d2VpZ2h0OihDR0Zsb2F0KXdlaWdodDsKLUBlbmQKLQotQGludGVyZmFjZSBQS1N0cm9rZSA6IE5T
T2JqZWN0Ci0tIChpZClfaW5pdFdpdGhQYXRoOihDR1BhdGhSZWYpcGF0aCBpbms6KFBLSW5rICop
aW5rIGlucHV0U2NhbGU6KENHRmxvYXQpaW5wdXRTY2FsZTsKLUBlbmQKLQotQGludGVyZmFjZSBQ
S0RyYXdpbmcgOiBOU09iamVjdAotLSAoUEtTdHJva2UgKilfYWRkU3Ryb2tlOihQS1N0cm9rZSAq
KXN0cm9rZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheTxQS1N0cm9r
ZSAqPiAqX2FsbFN0cm9rZXM7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgUEtDYW52YXNWaWV3IDogVUlW
aWV3Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgUEtEcmF3aW5nICpkcmF3aW5nOwotQGVu
ZAotCi0jZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotI2VuZGlmIC8vIEhBVkUo
UEVOQ0lMS0lUKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRl
eCAxYWM3MWY3MTIyOTM1ZmRhNTcxZTU0ODUxNWIzNGNhMzdlOWRkODQ3Li4yMTNlZmUxZmExMTBh
YjJmZjRhMjIxMzhiYzE3OTU0ZDRhMDhjNDE1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcApAQCAtMTUzMyw4ICsxNTMzLDYgQEAgc3RhdGljIHZvaWQgdXBkYXRl
VGVzdE9wdGlvbnNGcm9tVGVzdEhlYWRlcihUZXN0T3B0aW9ucyYgdGVzdE9wdGlvbnMsIGNvbnN0
IHN0ZDoKICAgICAgICAgICAgIHRlc3RPcHRpb25zLnNob3VsZFNob3dTcGVsbENoZWNraW5nRG90
cyA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYg
KGtleSA9PSAiZW5hYmxlU2VydmljZUNvbnRyb2xzIikKICAgICAgICAgICAgIHRlc3RPcHRpb25z
LmVuYWJsZVNlcnZpY2VDb250cm9scyA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1
ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlRWRpdGFibGVJbWFnZXMiKQotICAg
ICAgICAgICAgdGVzdE9wdGlvbnMuZW5hYmxlRWRpdGFibGVJbWFnZXMgPSBwYXJzZUJvb2xlYW5U
ZXN0SGVhZGVyVmFsdWUodmFsdWUpOwogICAgICAgICBlbHNlIGlmIChrZXkgPT0gImVkaXRhYmxl
IikKICAgICAgICAgICAgIHRlc3RPcHRpb25zLmVkaXRhYmxlID0gcGFyc2VCb29sZWFuVGVzdEhl
YWRlclZhbHVlKHZhbHVlKTsKICAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJzaG91bGRIYW5kbGVS
dW5PcGVuUGFuZWwiKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0
aW9ucy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oCmluZGV4IDBmODVk
OWI4M2VkYmNmYTAyYTIyODg5Y2MyNTEwNDdhOTQzOWQzMWUuLjhlMGU4NzNmNjhmYzkxYjQxMjI5
YzYwOWMzNWFmYzc2NWVmZDA4MDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdE9wdGlvbnMuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmgK
QEAgLTkxLDcgKzkxLDYgQEAgc3RydWN0IFRlc3RPcHRpb25zIHsKICAgICBib29sIHNob3VsZEln
bm9yZU1ldGFWaWV3cG9ydCB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRTaG93U3BlbGxDaGVj
a2luZ0RvdHMgeyBmYWxzZSB9OwogICAgIGJvb2wgZW5hYmxlU2VydmljZUNvbnRyb2xzIHsgZmFs
c2UgfTsKLSAgICBib29sIGVuYWJsZUVkaXRhYmxlSW1hZ2VzIHsgZmFsc2UgfTsKICAgICBib29s
IGVkaXRhYmxlIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZEhhbmRsZVJ1bk9wZW5QYW5lbCB7
IHRydWUgfTsKICAgICBib29sIHNob3VsZFByZXNlbnRQb3BvdmVycyB7IHRydWUgfTsKQEAgLTE1
OCw3ICsxNTcsNiBAQCBzdHJ1Y3QgVGVzdE9wdGlvbnMgewogICAgICAgICAgICAgfHwgc2hvdWxk
U2hvd1NwZWxsQ2hlY2tpbmdEb3RzICE9IG9wdGlvbnMuc2hvdWxkU2hvd1NwZWxsQ2hlY2tpbmdE
b3RzCiAgICAgICAgICAgICB8fCBlbmFibGVTZXJ2aWNlQ29udHJvbHMgIT0gb3B0aW9ucy5lbmFi
bGVTZXJ2aWNlQ29udHJvbHMKICAgICAgICAgICAgIHx8IHNob3VsZElnbm9yZU1ldGFWaWV3cG9y
dCAhPSBvcHRpb25zLnNob3VsZElnbm9yZU1ldGFWaWV3cG9ydAotICAgICAgICAgICAgfHwgZW5h
YmxlRWRpdGFibGVJbWFnZXMgIT0gb3B0aW9ucy5lbmFibGVFZGl0YWJsZUltYWdlcwogICAgICAg
ICAgICAgfHwgZWRpdGFibGUgIT0gb3B0aW9ucy5lZGl0YWJsZQogICAgICAgICAgICAgfHwgc2hv
dWxkSGFuZGxlUnVuT3BlblBhbmVsICE9IG9wdGlvbnMuc2hvdWxkSGFuZGxlUnVuT3BlblBhbmVs
CiAgICAgICAgICAgICB8fCBzaG91bGRQcmVzZW50UG9wb3ZlcnMgIT0gb3B0aW9ucy5zaG91bGRQ
cmVzZW50UG9wb3ZlcnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0
VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTEx
OWNkM2E0ZjMyMjJmZGFkMjQ3Mjc2YjQ5Y2Y4MWUzNWExNjI5OC4uZTY0YzY0MDY1OGMyZjE3OWMw
YmQyYjBhZmQ3YzBjNDE3MDBhNDI5MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTI4MCw3ICsyODAsNiBAQAogCQkyRDA1OEUwODIyRTJFRTIyMDBFNEMxNDUgLyogVUlT
Y3JpcHRDb250cm9sbGVyQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VUlTY3JpcHRDb250cm9sbGVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkQwNThFMEEyMkUyRUY2RDAwRTRDMTQ1IC8qIFVJU2NyaXB0Q29udHJvbGxlck1hYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVSVNjcmlwdENvbnRyb2xsZXJNYWMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQwQkVFMTcyMkVBRDEzNjAwOTJCNzM4IC8qIFVJ
U2NyaXB0Q29udHJvbGxlcklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVSVNjcmlwdENvbnRyb2xsZXJJ
T1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkQwRkYxNEEyMTkyQzc4MzAwQzk3
NUQ2IC8qIFBlbmNpbEtpdFRlc3RTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGVuY2lsS2l0VGVzdFNQ
SS5oOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9zcGkvUGVuY2lsS2l0VGVzdFNQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREI2MTg3RDFEN0Q1OEQ0MDA5NzhEMTkgLyog
Q29yZUdyYXBoaWNzVGVzdFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBD
b3JlR3JhcGhpY3NUZXN0U1BJLmg7IHBhdGggPSAuLi9UZXN0UnVubmVyU2hhcmVkL3NwaS9Db3Jl
R3JhcGhpY3NUZXN0U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQ0UyQ0Qx
MUI4NDUyNDUwMEM3RjgzMiAvKiBUZXN0Q29udHJvbGxlckNvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGVzdENvbnRyb2xsZXJDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRENEM0OTgxRDZFN0QzQjAwMDczNzlDIC8qIEV2ZW50
U2VyaWFsaXplck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBFdmVudFNl
cmlhbGl6ZXJNYWMuaDsgcGF0aCA9IG1hYy9FdmVudFNlcmlhbGl6ZXJNYWMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0Miw3ICs2NDEsNiBAQAogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyREI2MTg3RDFEN0Q1OEQ0MDA5NzhEMTkgLyogQ29yZUdy
YXBoaWNzVGVzdFNQSS5oICovLAotCQkJCTJEMEZGMTRBMjE5MkM3ODMwMEM5NzVENiAvKiBQZW5j
aWxLaXRUZXN0U1BJLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IHNwaTsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rl
c3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RD
b250cm9sbGVyQ29jb2EubW0KaW5kZXggZjc1ODc2NjlmZmVhOGM3NGQ3YmQ2MDNkN2FiMjJiYjhl
NDg5NzlkOS4uM2U1MWYyOTZlZGExM2ZmYWU1YzZmODE2NTVkMTJjYmJhOTM1ZmM4MiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1t
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5t
bQpAQCAtMTYzLDkgKzE2Myw2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRl
V2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmLCBjb25zdCBUZXN0T3B0CiAgICAgaWYgKG9w
dGlvbnMuZW5hYmxlQ29sb3JGaWx0ZXIpCiAgICAgICAgIFtjb3BpZWRDb25maWd1cmF0aW9uIF9z
ZXRDb2xvckZpbHRlckVuYWJsZWQ6WUVTXTsKIAotICAgIGlmIChvcHRpb25zLmVuYWJsZUVkaXRh
YmxlSW1hZ2VzKQotICAgICAgICBbY29waWVkQ29uZmlndXJhdGlvbiBfc2V0RWRpdGFibGVJbWFn
ZXNFbmFibGVkOllFU107Ci0KICAgICBbY29waWVkQ29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0
YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKil3ZWJzaXRlRGF0YVN0b3JlKCldOwogCiAgICAg
W2NvcGllZENvbmZpZ3VyYXRpb24gX3NldEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHM6b3B0
aW9ucy5hbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLmgKaW5kZXggMTdiYWE4ZmQxNDgz
MTZmOTNjMGU3MGY2ZjZlODYyM2UyMGEyMjQ2MC4uMjhkMDYwYzZkZmM0NzFhOTA1NDkwNjgzOTVj
M2Q0MGY2YTljMDk2YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlT
Y3JpcHRDb250cm9sbGVySU9TLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlT
Y3JpcHRDb250cm9sbGVySU9TLmgKQEAgLTMwLDEwICszMCw2IEBACiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCi0jaWYgSEFWRShQRU5DSUxLSVQpCi1AY2xhc3MgUEtDYW52YXNWaWV3Owot
I2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBG
bG9hdFJlY3Q7CkBAIC0xMzIsOCArMTI4LDYgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGxldGVC
YWNrU3dpcGUoSlNWYWx1ZVJlZikgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1Nob3dpbmdEYXRhTGlz
dFN1Z2dlc3Rpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY3RpdmF0ZURhdGFMaXN0
U3VnZ2VzdGlvbih1bnNpZ25lZCwgSlNWYWx1ZVJlZikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3
U3F1YXJlSW5FZGl0YWJsZUltYWdlKCkgb3ZlcnJpZGU7Ci0gICAgbG9uZyBudW1iZXJPZlN0cm9r
ZXNJbkVkaXRhYmxlSW1hZ2UoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEtleWJvYXJkSW5wdXRN
b2RlSWRlbnRpZmllcihKU1N0cmluZ1JlZikgb3ZlcnJpZGU7CiAgICAgdm9pZCB0b2dnbGVDYXBz
TG9jayhKU1ZhbHVlUmVmKSBvdmVycmlkZTsKICAgICBib29sIGtleWJvYXJkSXNBdXRvbWF0aWNh
bGx5U2hpZnRlZCgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTY3LDkgKzE2MSw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB3YWl0Rm9yU2luZ2xlVGFwVG9SZXNldCgpIGNvbnN0OwogICAgIFdlYkNvcmU6
OkZsb2F0UmVjdCByZWN0Rm9yTWVudUFjdGlvbihDRlN0cmluZ1JlZikgY29uc3Q7CiAgICAgdm9p
ZCBzaW5nbGVUYXBBdFBvaW50V2l0aE1vZGlmaWVycyhXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0
aW9uLCBWZWN0b3I8U3RyaW5nPiYmIG1vZGlmaWVyRmxhZ3MsIEJsb2NrUHRyPHZvaWQoKT4mJik7
Ci0jaWYgSEFWRShQRU5DSUxLSVQpCi0gICAgUEtDYW52YXNWaWV3ICpmaW5kRWRpdGFibGVJbWFn
ZUNhbnZhcygpIGNvbnN0OwotI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggMmJhOGYyMzZmMDcz
ZDRmNWM5OTdjYjkyMDU2NDZiMDQ1NjJjODRkZi4uMTMwYzQ5N2MyNDBkODM4YmI0YWZmZmQyMDcz
MTQxNzVhODNkYmIyNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlT
Y3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJ
U2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtMjksNyArMjksNiBAQAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKICNpbXBvcnQgIkhJREV2ZW50R2VuZXJhdG9yLmgiCi0jaW1wb3J0ICJQZW5j
aWxLaXRUZXN0U1BJLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVZpZXdIZWxwZXJzLmgiCiAjaW1wb3J0
ICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbXBvcnQgIlN0cmluZ0Z1bmN0aW9ucy5oIgpAQCAtMTE1
Niw1MiArMTE1NSw2IEBAIGJvb2wgVUlTY3JpcHRDb250cm9sbGVySU9TOjppc1Nob3dpbmdEYXRh
TGlzdFN1Z2dlc3Rpb25zKCkgY29uc3QKICAgICByZXR1cm4gZm91bmREYXRhTGlzdFN1Z2dlc3Rp
b25zUGlja2VyVmlldzsKIH0KIAotI2lmIEhBVkUoUEVOQ0lMS0lUKQotCi1QS0NhbnZhc1ZpZXcg
KlVJU2NyaXB0Q29udHJvbGxlcklPUzo6ZmluZEVkaXRhYmxlSW1hZ2VDYW52YXMoKSBjb25zdAot
ewotICAgIENsYXNzIHBrQ2FudmFzVmlld0NsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJQS0Nh
bnZhc1ZpZXciKTsKLSAgICBfX2Jsb2NrIFBLQ2FudmFzVmlldyAqY2FudmFzVmlldyA9IG5pbDsK
LSAgICBmb3JFYWNoVmlld0luSGllcmFyY2h5KHdlYlZpZXcoKS53aW5kb3csIF4oVUlWaWV3ICpz
dWJ2aWV3LCBCT09MICpzdG9wKSB7Ci0gICAgICAgIGlmICghW3N1YnZpZXcgaXNLaW5kT2ZDbGFz
czpwa0NhbnZhc1ZpZXdDbGFzc10pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgY2Fu
dmFzVmlldyA9IChQS0NhbnZhc1ZpZXcgKilzdWJ2aWV3OwotICAgICAgICAqc3RvcCA9IFlFUzsK
LSAgICB9KTsKLSAgICByZXR1cm4gY2FudmFzVmlldzsKLX0KLQotI2VuZGlmIC8vIEhBVkUoUEVO
Q0lMS0lUKQotCi12b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6ZHJhd1NxdWFyZUluRWRpdGFi
bGVJbWFnZSgpCi17Ci0jaWYgSEFWRShQRU5DSUxLSVQpCi0gICAgQ2xhc3MgcGtEcmF3aW5nQ2xh
c3MgPSBOU0NsYXNzRnJvbVN0cmluZyhAIlBLRHJhd2luZyIpOwotICAgIENsYXNzIHBrSW5rQ2xh
c3MgPSBOU0NsYXNzRnJvbVN0cmluZyhAIlBLSW5rIik7Ci0gICAgQ2xhc3MgcGtTdHJva2VDbGFz
cyA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAiUEtTdHJva2UiKTsKLQotICAgIFBLQ2FudmFzVmlldyAq
Y2FudmFzVmlldyA9IGZpbmRFZGl0YWJsZUltYWdlQ2FudmFzKCk7Ci0gICAgUmV0YWluUHRyPFBL
RHJhd2luZz4gZHJhd2luZyA9IGNhbnZhc1ZpZXcuZHJhd2luZyA/OiBhZG9wdE5TKFtbcGtEcmF3
aW5nQ2xhc3MgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiBwYXRoID0g
YWRvcHRDRihDR1BhdGhDcmVhdGVXaXRoUmVjdChDR1JlY3RNYWtlKDAsIDAsIDUwLCA1MCksIE5V
TEwpKTsKLSAgICBSZXRhaW5QdHI8UEtJbms+IGluayA9IFtwa0lua0NsYXNzIGlua1dpdGhJZGVu
dGlmaWVyOkAiY29tLmFwcGxlLmluay5wZW4iIGNvbG9yOlVJQ29sb3IuZ3JlZW5Db2xvciB3ZWln
aHQ6MTAwLjBdOwotICAgIFJldGFpblB0cjxQS1N0cm9rZT4gc3Ryb2tlID0gYWRvcHROUyhbW3Br
U3Ryb2tlQ2xhc3MgYWxsb2NdIF9pbml0V2l0aFBhdGg6cGF0aC5nZXQoKSBpbms6aW5rLmdldCgp
IGlucHV0U2NhbGU6MV0pOwotICAgIFtkcmF3aW5nIF9hZGRTdHJva2U6c3Ryb2tlLmdldCgpXTsK
LQotICAgIFtjYW52YXNWaWV3IHNldERyYXdpbmc6ZHJhd2luZy5nZXQoKV07Ci0jZW5kaWYKLX0K
LQotbG9uZyBVSVNjcmlwdENvbnRyb2xsZXJJT1M6Om51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJ
bWFnZSgpCi17Ci0jaWYgSEFWRShQRU5DSUxLSVQpCi0gICAgUEtDYW52YXNWaWV3ICpjYW52YXNW
aWV3ID0gZmluZEVkaXRhYmxlSW1hZ2VDYW52YXMoKTsKLSAgICByZXR1cm4gY2FudmFzVmlldy5k
cmF3aW5nLl9hbGxTdHJva2VzLmNvdW50OwotI2Vsc2UKLSAgICByZXR1cm4gMDsKLSNlbmRpZgot
fQotCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2V0S2V5Ym9hcmRJbnB1dE1vZGVJZGVu
dGlmaWVyKEpTU3RyaW5nUmVmIGlkZW50aWZpZXIpCiB7CiAgICAgVGVzdENvbnRyb2xsZXI6OnNp
bmdsZXRvbigpLnNldEtleWJvYXJkSW5wdXRNb2RlSWRlbnRpZmllcih0b1dURlN0cmluZyh0b1dL
KGlkZW50aWZpZXIpKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTMzMjBlMzNmYWZmOGE2MjkwODZhZTI5Y2RmMTJjYTU3
Mzk3N2U3OC4uNmI3ZTI2NTVjZTMzMjk5YjRlYzU0Y2JmZjRiYThjYzQxOWRlYTM5YiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMwIEBACisyMDIwLTA4LTMwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQgZWRpdGFibGUgaW1hZ2UgY29kZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1OTkxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgICogZWRpdGluZy9p
bWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIGVkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLWZyb20tZXhlY0NvbW1hbmQt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGVkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVk
aXRhYmxlLWltYWdlLWZyb20tZXhlY0NvbW1hbmQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBl
ZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1pbWFnZS13aXRoLWdlc3R1cmUtZXhwZWN0ZWQu
dHh0OiBSZW1vdmVkLgorICAgICAgICAqIGVkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWlt
YWdlLXdpdGgtZ2VzdHVyZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGVkaXRpbmcvaW1hZ2Vz
L2Jhc2ljLWVkaXRhYmxlLWltYWdlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZWRpdGluZy9p
bWFnZXMvZWRpdGFibGUtaW1hZ2UtY3JlYXRlcy1hdHRhY2htZW50LWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL2ltYWdlcy9lZGl0YWJsZS1pbWFnZS1jcmVhdGVzLWF0
dGFjaG1lbnQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL2ltYWdlcy9wYXN0ZS1l
ZGl0YWJsZS1pbWFnZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZWRpdGluZy9p
bWFnZXMvcGFzdGUtZWRpdGFibGUtaW1hZ2UuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBlZGl0
aW5nL2ltYWdlcy9yZWRvLWluc2VydC1lZGl0YWJsZS1pbWFnZS1tYWludGFpbnMtc3Ryb2tlcy1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZWRpdGluZy9pbWFnZXMvcmVkby1pbnNl
cnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9rZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL2ltYWdlcy9yZXBhcmVudC1lZGl0YWJsZS1pbWFnZS1tYWludGFpbnMtc3Ry
b2tlcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZWRpdGluZy9pbWFnZXMvcmVw
YXJlbnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9rZXMuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBlZGl0aW5nL2ltYWdlcy91bmRvLWluc2VydC1lZGl0YWJsZS1pbWFnZS1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZWRpdGluZy9pbWFnZXMvdW5kby1pbnNlcnQtZWRp
dGFibGUtaW1hZ2UuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiByZXNvdXJjZXMvdWktaGVscGVy
LmpzOgorICAgICAgICAod2luZG93LlVJSGVscGVyLmRyYXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAod2luZG93LlVJSGVscGVyLm51bWJlck9mU3Ryb2tlc0luRWRp
dGFibGVJbWFnZSk6IERlbGV0ZWQuCisKIDIwMjAtMDgtMzAgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBVbnJldmlld2VkIHRl
c3QgZ2FyZGVuaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9iYXNp
Yy1lZGl0YWJsZS1pbWFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdl
cy9iYXNpYy1lZGl0YWJsZS1pbWFnZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDY0MjRiZjFkODQyMTZiMmIzM2IzNDI4YmI5MjQ3ZjJlYmEzNTg2YTQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMyArMCwwIEBACi1IYWQgMCBzdHJva2VzIGluIGVkaXRhYmxlIGltYWdlIGJlZm9y
ZSBkcmF3aW5nLgotSGFkIDEgc3Ryb2tlIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRyYXdpbmcu
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxl
LWltYWdlLWZyb20tZXhlY0NvbW1hbmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UtZnJvbS1leGVjQ29tbWFuZC1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxMDExNTlhZDBiZjlkN2QxNjMxYjMy
M2FmNWI5OGFlYTViNDQ2NjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2Ut
ZnJvbS1leGVjQ29tbWFuZC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAg
QEAKLQotSGFkIDAgc3Ryb2tlcyBpbiBlZGl0YWJsZSBpbWFnZSBiZWZvcmUgZHJhd2luZy4KLUhh
ZCAxIHN0cm9rZSBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciBkcmF3aW5nLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UtZnJvbS1leGVj
Q29tbWFuZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUt
aW1hZ2UtZnJvbS1leGVjQ29tbWFuZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0MGVhYWM4OTU1ODkxMjVlYTAyZjIyYzMyMjE4MzUyMmQxNDNkMDJmLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1h
Z2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLWZyb20tZXhlY0NvbW1hbmQuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDIzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVu
bmVyIFsgZW5hYmxlRWRpdGFibGVJbWFnZXM9dHJ1ZSBdIC0tPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWFkZEV2ZW50TGlzdGVuZXIoImxvYWQi
LCBhc3luYyAoKSA9PiB7Ci0gICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGRv
Y3VtZW50LmJvZHksIDApOwotICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRFZGl0YWJs
ZUltYWdlIik7Ci0gICAgY29uc3QgaW5pdGlhbE51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFn
ZSA9IChhd2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7Ci0g
ICAgYXdhaXQgVUlIZWxwZXIuZHJhd1NxdWFyZUluRWRpdGFibGVJbWFnZSgpOwotICAgIGNvbnN0
IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyRHJhd2luZyA9IChhd2FpdCBVSUhl
bHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7Ci0gICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCA9IGBIYWQgJHtpbml0aWFsTnVtYmVyT2ZTdHJv
a2VzSW5FZGl0YWJsZUltYWdlfSBzdHJva2VzIGluIGVkaXRhYmxlIGltYWdlIGJlZm9yZSBkcmF3
aW5nLjxici8+SGFkICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJEcmF3aW5n
fSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJhd2luZy5gOwotICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGNvbnRlbnRl
ZGl0YWJsZT4KLTxkaXYgaWQ9ImxvZyI+PC9kaXY+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1pbWFnZS13aXRoLWdlc3R1cmUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUt
aW1hZ2Utd2l0aC1nZXN0dXJlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOTEwMTE1OWFkMGJmOWQ3ZDE2MzFiMzIzYWY1Yjk4YWVhNWI0NDY2NC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1pbWFnZS13aXRoLWdlc3R1cmUtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLUhhZCAwIHN0cm9rZXMgaW4gZWRpdGFibGUg
aW1hZ2UgYmVmb3JlIGRyYXdpbmcuCi1IYWQgMSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0
ZXIgZHJhd2luZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2lj
LWVkaXRhYmxlLWltYWdlLXdpdGgtZ2VzdHVyZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9p
bWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2Utd2l0aC1nZXN0dXJlLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDcwYzE2ZWMzZDQyYjc4YzY1NjVkZmUxNjIzNWUxMmI0OGZlNWE5
MGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2Utd2l0aC1nZXN0dXJlLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD48IS0tIHdl
YmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUVkaXRhYmxlSW1hZ2VzPXRydWUgXSAtLT4KLTxoZWFk
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1hZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IFVJSGVscGVyLnN0eWx1c1Rh
cEF0KDAsIDApOwotICAgIGNvbnN0IGluaXRpYWxOdW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1h
Z2UgPSAoYXdhaXQgVUlIZWxwZXIubnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlKCkpOwot
ICAgIGF3YWl0IFVJSGVscGVyLmRyYXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2UoKTsKLSAgICBjb25z
dCBudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRlckRyYXdpbmcgPSAoYXdhaXQgVUlI
ZWxwZXIubnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlKCkpOwotICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgPSBgSGFkICR7aW5pdGlhbE51bWJlck9mU3Ry
b2tlc0luRWRpdGFibGVJbWFnZX0gc3Ryb2tlcyBpbiBlZGl0YWJsZSBpbWFnZSBiZWZvcmUgZHJh
d2luZy48YnIvPkhhZCAke251bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyRHJhd2lu
Z30gc3Ryb2tlIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRyYXdpbmcuYDsKLSAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBjb250ZW50
ZWRpdGFibGU+Ci08ZGl2IGlkPSJsb2ciPjwvZGl2PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UuaHRtbCBiL0xheW91
dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2YmNhZjE2Y2NlYTMxYTFlMGQ1ZGVjZDIyOWZmOWJmOGY1
YjNkN2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDIyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3Qt
cnVubmVyIFsgZW5hYmxlRWRpdGFibGVJbWFnZXM9dHJ1ZSBdIC0tPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0g
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWFkZEV2ZW50TGlzdGVuZXIoImxv
YWQiLCBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgaW5pdGlhbE51bWJlck9mU3Ryb2tlc0luRWRp
dGFibGVJbWFnZSA9IChhd2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1h
Z2UoKSk7Ci0gICAgYXdhaXQgVUlIZWxwZXIuZHJhd1NxdWFyZUluRWRpdGFibGVJbWFnZSgpOwot
ICAgIGNvbnN0IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyRHJhd2luZyA9IChh
d2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7Ci0gICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCA9IGBIYWQgJHtpbml0aWFsTnVt
YmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlfSBzdHJva2VzIGluIGVkaXRhYmxlIGltYWdlIGJl
Zm9yZSBkcmF3aW5nLjxici8+SGFkICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0
ZXJEcmF3aW5nfSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJhd2luZy5gOwotICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotPGRpdiBpZD0ibG9nIj48L2Rpdj4KLTxpbWcgeC1hcHBsZS1lZGl0YWJsZS1pbWFnZT0idHJ1
ZSIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9pbWFnZXMvZWRpdGFibGUtaW1hZ2UtY3JlYXRlcy1hdHRhY2htZW50LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2VkaXRhYmxlLWltYWdlLWNy
ZWF0ZXMtYXR0YWNobWVudC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDllYjRhOTZiMWUxMTMyYjk1ODlkNThlMmRkY2EzMWIyOTY2MmY0ZjguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9p
bWFnZXMvZWRpdGFibGUtaW1hZ2UtY3JlYXRlcy1hdHRhY2htZW50LWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotSGFzIGF0dGFjaG1lbnQgaW5zaWRlIGVkaXRhYmxl
IGltYWdlOiB0cnVlLgotQXR0YWNobWVudCB0eXBlIGFmdGVyIGRyYXdpbmcgb24gZWRpdGFibGUg
aW1hZ2U6IGltYWdlL3BuZy4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFn
ZXMvZWRpdGFibGUtaW1hZ2UtY3JlYXRlcy1hdHRhY2htZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2ltYWdlcy9lZGl0YWJsZS1pbWFnZS1jcmVhdGVzLWF0dGFjaG1lbnQuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUxMmY0ZTJiOWFiZDMxNzI3ZDQ1MzVmYmM2NGFj
ZGRiNzIzNGQ3Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9lZGl0YWJsZS1pbWFnZS1jcmVhdGVzLWF0dGFj
aG1lbnQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlRWRpdGFibGVJbWFnZXM9dHJ1ZSBlbmFi
bGVBdHRhY2htZW50RWxlbWVudD10cnVlIF0gLS0+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGFzeW5j
ICgpID0+IHsKLSAgICBjb25zdCBhdHRhY2htZW50SWRlbnRpZmllciA9IEhUTUxBdHRhY2htZW50
RWxlbWVudC5nZXRBdHRhY2htZW50SWRlbnRpZmllcihkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJp
bWciKSk7Ci0gICAgY29uc3QgaGFzQXR0YWNobWVudCA9ICEhYXR0YWNobWVudElkZW50aWZpZXIu
bGVuZ3RoOwotICAgIGF3YWl0IFVJSGVscGVyLmRyYXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2UoKTsK
LSAgICBjb25zdCBhdHRhY2htZW50SW5mbyA9IChhd2FpdCBVSUhlbHBlci5hdHRhY2htZW50SW5m
byhhdHRhY2htZW50SWRlbnRpZmllcikpOwotICAgIGNvbnN0IGF0dGFjaG1lbnRUeXBlID0gYXR0
YWNobWVudEluZm8uY29udGVudFR5cGU7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxv
ZyIpLmlubmVySFRNTCA9IGBIYXMgYXR0YWNobWVudCBpbnNpZGUgZWRpdGFibGUgaW1hZ2U6ICR7
aGFzQXR0YWNobWVudH0uPGJyLz5BdHRhY2htZW50IHR5cGUgYWZ0ZXIgZHJhd2luZyBvbiBlZGl0
YWJsZSBpbWFnZTogJHthdHRhY2htZW50VHlwZX0uYDsKLSAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9ImxvZyI+PC9k
aXY+Ci08aW1nIHgtYXBwbGUtZWRpdGFibGUtaW1hZ2Ugd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAi
PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcGFzdGUt
ZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMv
cGFzdGUtZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMWRmODYxYjIwNzRhYTdkN2QyZjJmNTZjZjBjNzY3YTYzOWNlZTE1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRp
bmcvaW1hZ2VzL3Bhc3RlLWVkaXRhYmxlLWltYWdlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDYgKzAsMCBAQAotSGFkIDEgc3Ryb2tlIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRy
YXdpbmcuCi1IYWQgMSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgY29weWluZyBhbmQg
cGFzdGluZy4KLUhhZCAyIHN0cm9rZXMgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJhd2luZyBv
biBwYXN0ZWQgaW1hZ2UuCi1QYXN0ZWQgaW1hZ2UgZ290IGEgbmV3IGF0dGFjaG1lbnQgSUQ6IHll
cy4KLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9wYXN0ZS1lZGl0
YWJsZS1pbWFnZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcGFzdGUtZWRpdGFi
bGUtaW1hZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmMyNjZkZWEzMzhj
ZjBhMzZkNTRiOGFhODRkNmI5NGFkNDM2YjllYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9wYXN0ZS1lZGl0
YWJsZS1pbWFnZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVFZGl0YWJsZUltYWdlcz10cnVl
IGVuYWJsZUF0dGFjaG1lbnRFbGVtZW50PXRydWUgXSAtLT4KLTxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3
aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwg
YXN5bmMgKCkgPT4gewotICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
ZXN0Iik7Ci0KLSAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Ci0K
LSAgICBzZWxlY3Rpb24uc2V0UG9zaXRpb24oZGl2LCAwKTsKLSAgICB0ZXN0UnVubmVyLmV4ZWND
b21tYW5kKCJJbnNlcnRFZGl0YWJsZUltYWdlIik7Ci0KLSAgICBhd2FpdCBVSUhlbHBlci5kcmF3
U3F1YXJlSW5FZGl0YWJsZUltYWdlKCk7Ci0gICAgY29uc3QgbnVtYmVyT2ZTdHJva2VzSW5FZGl0
YWJsZUltYWdlQWZ0ZXJEcmF3aW5nID0gKGF3YWl0IFVJSGVscGVyLm51bWJlck9mU3Ryb2tlc0lu
RWRpdGFibGVJbWFnZSgpKTsKLSAgICBjb25zdCBmaXJzdEltYWdlID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigiaW1nIik7Ci0gICAgY29uc3QgaW5pdGlhbEF0dGFjaG1lbnRJRCA9IEhUTUxBdHRh
Y2htZW50RWxlbWVudC5nZXRBdHRhY2htZW50SWRlbnRpZmllcihmaXJzdEltYWdlKTsKLQotICAg
IC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGNhbnZhcyBnZXRzIGEgbm9uLXplcm8g
c2l6ZSBiZWZvcmUgdHJ5aW5nIHRvIHNlcmlhbGl6ZSBpdC4KLSAgICBhd2FpdCBVSUhlbHBlci5l
bnN1cmVQcmVzZW50YXRpb25VcGRhdGUoKTsKLQotICAgIHNlbGVjdGlvbi5zZXRCYXNlQW5kRXh0
ZW50KGRpdi5maXJzdENoaWxkLCAwLCBkaXYuZmlyc3RDaGlsZCwgMSk7Ci0gICAgdGVzdFJ1bm5l
ci5leGVjQ29tbWFuZCgiQ29weSIpOwotCi0gICAgc2VsZWN0aW9uLmNvbGxhcHNlVG9FbmQoKTsK
LSAgICB0ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCJQYXN0ZSIpOwotCi0gICAgZmlyc3RJbWFnZS5w
YXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKGZpcnN0SW1hZ2UpOwotCi0gICAgY29uc3QgbnVtYmVy
T2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJQYXN0aW5nID0gKGF3YWl0IFVJSGVscGVyLm51
bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSgpKTsKLQotICAgIGF3YWl0IFVJSGVscGVyLmRy
YXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2UoKTsKLSAgICBjb25zdCBudW1iZXJPZlN0cm9rZXNJbkVk
aXRhYmxlSW1hZ2VBZnRlclNlY29uZERyYXdpbmcgPSAoYXdhaXQgVUlIZWxwZXIubnVtYmVyT2ZT
dHJva2VzSW5FZGl0YWJsZUltYWdlKCkpOwotICAgIGNvbnN0IHBhc3RlZEF0dGFjaG1lbnRJRCA9
IEhUTUxBdHRhY2htZW50RWxlbWVudC5nZXRBdHRhY2htZW50SWRlbnRpZmllcihkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCJpbWciKSk7Ci0KLSAgICBjb25zdCBhdHRhY2htZW50SURzQXJlRGlmZmVy
ZW50ID0gKGluaXRpYWxBdHRhY2htZW50SUQgIT0gcGFzdGVkQXR0YWNobWVudElEKSA/ICJ5ZXMi
IDogIm5vIjsKLQotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwg
PSBgSGFkICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJEcmF3aW5nfSBzdHJv
a2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJhd2luZy48YnIvPkhhZCAke251bWJlck9mU3Ry
b2tlc0luRWRpdGFibGVJbWFnZUFmdGVyUGFzdGluZ30gc3Ryb2tlIGluIGVkaXRhYmxlIGltYWdl
IGFmdGVyIGNvcHlpbmcgYW5kIHBhc3RpbmcuPGJyLz5IYWQgJHtudW1iZXJPZlN0cm9rZXNJbkVk
aXRhYmxlSW1hZ2VBZnRlclNlY29uZERyYXdpbmd9IHN0cm9rZXMgaW4gZWRpdGFibGUgaW1hZ2Ug
YWZ0ZXIgZHJhd2luZyBvbiBwYXN0ZWQgaW1hZ2UuPGJyLz5QYXN0ZWQgaW1hZ2UgZ290IGEgbmV3
IGF0dGFjaG1lbnQgSUQ6ICR7YXR0YWNobWVudElEc0FyZURpZmZlcmVudH0uYDsKLSAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBjb250
ZW50ZWRpdGFibGU+PGRpdiBpZD0ibG9nIj48YnIvPjwvZGl2PjxkaXYgaWQ9InRlc3QiPjxici8+
PC9kaXY+PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcmVk
by1pbnNlcnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9rZXMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcmVkby1pbnNlcnQtZWRpdGFibGUtaW1hZ2UtbWFp
bnRhaW5zLXN0cm9rZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA2YTczODYyYzYxMTM2NjRmZDllZWM0NDdmNDc0Y2I1ZjFjY2VjNDIyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1h
Z2VzL3JlZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLW1haW50YWlucy1zdHJva2VzLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotCi1IYWQgMCBzdHJva2VzIGluIGVk
aXRhYmxlIGltYWdlIGJlZm9yZSBkcmF3aW5nLgotSGFkIDEgc3Ryb2tlIGluIGVkaXRhYmxlIGlt
YWdlIGFmdGVyIGRyYXdpbmcuCi1IYWQgMCBzdHJva2VzIGluIGVkaXRhYmxlIGltYWdlIGFmdGVy
IHVuZG8uCi1IYWQgMSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgcmVkby4KLUhhZCAy
IHN0cm9rZXMgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJhd2luZyBhZ2Fpbi4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3JlZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdl
LW1haW50YWlucy1zdHJva2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9yZWRv
LWluc2VydC1lZGl0YWJsZS1pbWFnZS1tYWludGFpbnMtc3Ryb2tlcy5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2NjlhZGM0ODIzNzg5OTJkZDRhYzJlNWZkYzIwYjk5MGFiN2Jh
ZGM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3JlZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLW1haW50YWlu
cy1zdHJva2VzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUVkaXRhYmxlSW1hZ2VzPXRydWUg
XSAtLT4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQot
Ci1hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4gewotICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LCAwKTsKLSAgICBkb2N1bWVudC5l
eGVjQ29tbWFuZCgiSW5zZXJ0RWRpdGFibGVJbWFnZSIpOwotICAgIGNvbnN0IGluaXRpYWxOdW1i
ZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UgPSAoYXdhaXQgVUlIZWxwZXIubnVtYmVyT2ZTdHJv
a2VzSW5FZGl0YWJsZUltYWdlKCkpOwotICAgIGF3YWl0IFVJSGVscGVyLmRyYXdTcXVhcmVJbkVk
aXRhYmxlSW1hZ2UoKTsKLSAgICBjb25zdCBudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VB
ZnRlckRyYXdpbmcgPSAoYXdhaXQgVUlIZWxwZXIubnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUlt
YWdlKCkpOwotICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCd1bmRvJywgZmFsc2UsIG51bGwpOwot
ICAgIGNvbnN0IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyVW5kbyA9IChhd2Fp
dCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7Ci0gICAgZG9jdW1l
bnQuZXhlY0NvbW1hbmQoJ3JlZG8nLCBmYWxzZSwgbnVsbCk7Ci0gICAgY29uc3QgbnVtYmVyT2ZT
dHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJSZWRvID0gKGF3YWl0IFVJSGVscGVyLm51bWJlck9m
U3Ryb2tlc0luRWRpdGFibGVJbWFnZSgpKTsKLSAgICBhd2FpdCBVSUhlbHBlci5kcmF3U3F1YXJl
SW5FZGl0YWJsZUltYWdlKCk7Ci0gICAgY29uc3QgbnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUlt
YWdlQWZ0ZXJTZWNvbmREcmF3aW5nID0gKGF3YWl0IFVJSGVscGVyLm51bWJlck9mU3Ryb2tlc0lu
RWRpdGFibGVJbWFnZSgpKTsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5u
ZXJIVE1MID0gYEhhZCAke2luaXRpYWxOdW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2V9IHN0
cm9rZXMgaW4gZWRpdGFibGUgaW1hZ2UgYmVmb3JlIGRyYXdpbmcuPGJyLz5IYWQgJHtudW1iZXJP
ZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRlckRyYXdpbmd9IHN0cm9rZSBpbiBlZGl0YWJsZSBp
bWFnZSBhZnRlciBkcmF3aW5nLjxici8+SGFkICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUlt
YWdlQWZ0ZXJVbmRvfSBzdHJva2VzIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIHVuZG8uPGJyLz5I
YWQgJHtudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRlclJlZG99IHN0cm9rZSBpbiBl
ZGl0YWJsZSBpbWFnZSBhZnRlciByZWRvLjxici8+SGFkICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0
YWJsZUltYWdlQWZ0ZXJTZWNvbmREcmF3aW5nfSBzdHJva2VzIGluIGVkaXRhYmxlIGltYWdlIGFm
dGVyIGRyYXdpbmcgYWdhaW4uYDsKLSAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwot
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBjb250ZW50ZWRpdGFibGU+Ci08ZGl2IGlkPSJsb2ci
PjwvZGl2PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMv
cmVwYXJlbnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9rZXMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcmVwYXJlbnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRh
aW5zLXN0cm9rZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
OTY4N2ZkMzJhZDk0OWIyZjkxOWZmOTEyY2U4NWRhNmI0NjZiNzYxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2Vz
L3JlcGFyZW50LWVkaXRhYmxlLWltYWdlLW1haW50YWlucy1zdHJva2VzLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotSGFkIDEgc3Ryb2tlIGluIGVkaXRhYmxlIGlt
YWdlIGFmdGVyIGRyYXdpbmcuCi1IYWQgMSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIg
cmVwYXJlbnRpbmcgaXQgdW5kZXIgYW5vdGhlciBlbGVtZW50LgotIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcmVwYXJlbnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5z
LXN0cm9rZXMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3JlcGFyZW50LWVkaXRh
YmxlLWltYWdlLW1haW50YWlucy1zdHJva2VzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDFmZGYwMGYyY2VkOTJhNjBkMzJiNjk0NTNiOGRkNjI0NjM0NjAyMGEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9pbWFnZXMvcmVwYXJlbnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9rZXMuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0
LXRlc3QtcnVubmVyIFsgZW5hYmxlRWRpdGFibGVJbWFnZXM9dHJ1ZSBdIC0tPgotPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWFkZEV2ZW50TGlzdGVu
ZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgVUlIZWxwZXIuZHJhd1NxdWFyZUlu
RWRpdGFibGVJbWFnZSgpOwotICAgIGNvbnN0IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFn
ZUFmdGVyRHJhd2luZyA9IChhd2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxl
SW1hZ2UoKSk7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm90aGVyIikuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXRhYmxlSW1hZ2UiKSk7Ci0gICAgY29uc3Qg
bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJSZXBhcmVudGluZyA9IChhd2FpdCBV
SUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7Ci0KLSAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MID0gYEhhZCAke251bWJlck9mU3Ryb2tl
c0luRWRpdGFibGVJbWFnZUFmdGVyRHJhd2luZ30gc3Ryb2tlIGluIGVkaXRhYmxlIGltYWdlIGFm
dGVyIGRyYXdpbmcuPGJyLz5IYWQgJHtudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRl
clJlcGFyZW50aW5nfSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgcmVwYXJlbnRpbmcg
aXQgdW5kZXIgYW5vdGhlciBlbGVtZW50LmA7Ci0gICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci19KTsKLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2IGlkPSJsb2ciPjwvZGl2Pgot
PGltZyBpZD0iZWRpdGFibGVJbWFnZSIgeC1hcHBsZS1lZGl0YWJsZS1pbWFnZT0idHJ1ZSIgd2lk
dGg9IjMwMCIgaGVpZ2h0PSIzMDAiPgotPGRpdiBpZD0ib3RoZXIiPjwvZGl2PgotPC9ib2R5Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvdW5kby1pbnNlcnQtZWRpdGFi
bGUtaW1hZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvdW5kby1p
bnNlcnQtZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlZDI3MDhlMmJmZGNjZjA5ZmQ0NDczNzI5MDIyOTJlY2NkY2U3OWJlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRp
bmcvaW1hZ2VzL3VuZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVRoaXMgdGVzdCBpbnNlcnRzIGEgZWRpdGFibGUgaW1h
Z2UsIHBlcmZvcm1zIGFuIHVuZG8sIHRoZW4gYSByZWRvLCBlbnN1cmluZyB0aGF0IHRoZSBzZWxl
Y3Rpb24gcmVtYWlucyBhZnRlciB0aGUgaW1hZ2Ugd2hlbiByZS1kb25lLgotCi1iZWZvcmUgdW5k
bzoKLXwgIkhlbGxvLCB3b3JsZCEiCi18IDxpbWc+Ci18ICAgaGVpZ2h0PSIzMDBweCIKLXwgICBz
dHlsZT0iZGlzcGxheTogYmxvY2siCi18ICAgd2lkdGg9IjEwMCUiCi18ICAgeC1hcHBsZS1lZGl0
YWJsZS1pbWFnZT0iIgotfCAgIDxzaGFkb3c6cm9vdD4KLXwgICAgIDxhdHRhY2htZW50PgotfCAg
ICAgICBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyIKLXwgPCNzZWxlY3Rpb24tY2Fy
ZXQ+Ci0KLWFmdGVyIHVuZG86Ci18ICJIZWxsbywgd29ybGQhPCNzZWxlY3Rpb24tY2FyZXQ+Igot
Ci1hZnRlciByZWRvOgotfCAiSGVsbG8sIHdvcmxkISIKLXwgPGltZz4KLXwgICBoZWlnaHQ9IjMw
MHB4IgotfCAgIHN0eWxlPSJkaXNwbGF5OiBibG9jayIKLXwgICB3aWR0aD0iMTAwJSIKLXwgICB4
LWFwcGxlLWVkaXRhYmxlLWltYWdlPSIiCi18ICAgPHNoYWRvdzpyb290PgotfCAgICAgPGF0dGFj
aG1lbnQ+Ci18ICAgICAgIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IgotfCA8I3Nl
bGVjdGlvbi1jYXJldD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3Vu
ZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdl
cy91bmRvLWluc2VydC1lZGl0YWJsZS1pbWFnZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyYmYxNjU1MWMxNGQ1N2VkYjEzZjM2M2ZkMmM2YjRkYTYxYjJlN2NjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRp
bmcvaW1hZ2VzL3VuZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwyMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBb
IGVuYWJsZUVkaXRhYmxlSW1hZ2VzPXRydWUgXSAtLT4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGNvbnRlbnRlZGl0YWJsZT4KLTxkaXYgaWQ9InRlc3Qi
PkhlbGxvLCB3b3JsZCE8L2Rpdj4KLTxzY3JpcHQ+Ci1jb25zdCBkaXYgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGVzdCIpOwotCi13aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24o
ZGl2LCAxMyk7Ci1kb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0RWRpdGFibGVJbWFnZSIpOwot
Ci1NYXJrdXAuZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBpbnNlcnRzIGEgZWRpdGFibGUgaW1hZ2Us
IHBlcmZvcm1zIGFuIHVuZG8sIHRoZW4gYSByZWRvLCBlbnN1cmluZyB0aGF0IHRoZSBzZWxlY3Rp
b24gcmVtYWlucyBhZnRlciB0aGUgaW1hZ2Ugd2hlbiByZS1kb25lLiIpCi1NYXJrdXAuZHVtcChk
aXYsICJiZWZvcmUgdW5kbyIpOwotZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ3VuZG8nLCBmYWxzZSwg
bnVsbCk7Ci1NYXJrdXAuZHVtcChkaXYsICJhZnRlciB1bmRvIik7Ci1kb2N1bWVudC5leGVjQ29t
bWFuZCgncmVkbycsIGZhbHNlLCBudWxsKTsKLU1hcmt1cC5kdW1wKGRpdiwgImFmdGVyIHJlZG8i
KTsKLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2Vz
L3VpLWhlbHBlci5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKaW5kZXgg
ZDgxNGJkZWE1ZTRhMWMwMjdkYWMzOGM3NWExZTVjODk4NWRmNGE2YS4uYWY0MjRjYjQxYTkzNDU3
ZDM5NTQxMWZmNWU0YWEzNTg4Y2QzNWE3OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3Vy
Y2VzL3VpLWhlbHBlci5qcworKysgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpz
CkBAIC05NjYsMTQgKzk2Niw2IEBAIHdpbmRvdy5VSUhlbHBlciA9IGNsYXNzIFVJSGVscGVyIHsK
ICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIGRyYXdTcXVhcmVJbkVkaXRhYmxlSW1h
Z2UoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpKQotICAgICAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotCi0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYHVpQ29udHJvbGxlci5kcmF3U3F1YXJl
SW5FZGl0YWJsZUltYWdlKClgLCByZXNvbHZlKSk7Ci0gICAgfQotCiAgICAgc3RhdGljIHN0eWx1
c1RhcEF0KHgsIHksIG1vZGlmaWVycz1bXSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5pc1dl
YktpdDIoKSkKQEAgLTk4NywxOCArOTc5LDYgQEAgd2luZG93LlVJSGVscGVyID0gY2xhc3MgVUlI
ZWxwZXIgewogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgbnVtYmVyT2ZTdHJva2Vz
SW5FZGl0YWJsZUltYWdlKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSkK
LSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLQotICAgICAgICByZXR1cm4g
bmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2Ny
aXB0KGAoKCkgPT4gewotICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBs
ZXRlKHVpQ29udHJvbGxlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UpOwotICAgICAg
ICAgICAgfSkoKWAsIG51bWJlckFzU3RyaW5nID0+IHJlc29sdmUocGFyc2VJbnQobnVtYmVyQXNT
dHJpbmcsIDEwKSkpCi0gICAgICAgIH0pOwotICAgIH0KLQogICAgIHN0YXRpYyBhdHRhY2htZW50
SW5mbyhhdHRhY2htZW50SWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5pc1dl
YktpdDIoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407581</attachid>
            <date>2020-08-30 16:55:10 -0700</date>
            <delta_ts>2020-08-30 18:45:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215991-20200830165509.patch</filename>
            <type>text/plain</type>
            <size>212811</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU1ODAyYWQ5OTE4OTJi
MjhkMTc5ZjcyNWYxY2Y1ZGFlMjRiMTVjZi4uMjhmNDY4NzgwYjg5ZDVmNjY1ODY0ZWFhZjIyMTc4
YmY1ZGEwZWZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIwLTA4LTMwICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVz
ZWQgZWRpdGFibGUgaW1hZ2UgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE1OTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGVkaXRpbmcvRWRpdEFjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp1bmRvUmVkb0xhYmVsKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRBY3Rp
b24uaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6Omluc2VydEVkaXRhYmxlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIGVkaXRpbmcv
RWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUNvbW1hbmRNYXApOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUlu
c2VydEVkaXRhYmxlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZElu
UmljaGx5RWRpdGFibGVUZXh0V2l0aEVkaXRhYmxlSW1hZ2VzRW5hYmxlZCk6IERlbGV0ZWQuCisg
ICAgICAgICogZWRpdGluZy9JbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogZWRpdGluZy9JbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5oOiBSZW1vdmVk
LgorICAgICAgICAqIGVuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M6CisgICAgICAgICogaHRt
bC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2Vz
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5j
ZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6Y29weU5vbkF0dHJp
YnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VF
bGVtZW50OjpzdXBwb3J0c0ZvY3VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbWFnZUVsZW1lbnQ6OmlzRm9jdXNhYmxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmRpZEZpbmlzaEluc2VydGluZ05vZGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6aGFzRWRpdGFibGVJbWFn
ZUF0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VF
bGVtZW50OjplZGl0YWJsZUltYWdlVmlld0lEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnVwZGF0ZUVkaXRhYmxlSW1hZ2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6
IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICog
cGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6YXNz
b2NpYXRlRWRpdGFibGVJbWFnZVdpdGhBdHRhY2htZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudDo6ZGlkQ3JlYXRlRWRpdGFibGVJbWFnZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmRpZERlc3Ryb3lFZGl0YWJsZUltYWdlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0VkaXRhYmxlSW1hZ2VSZWZlcmVuY2UuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIHBhZ2UvRWRpdGFibGVJbWFnZVJlZmVyZW5jZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHBhZ2UvU2V0dGluZ3MueWFtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6Om5l
eHRFbWJlZGRlZFZpZXdJRCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0Q29u
dGVudHNUb1NvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0
Q29udGVudHNUb0VtYmVkZGVkVmlldyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyRm9yRW1iZWRkZWRWaWV3KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0VtYmVkZGVk
Vmlldyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmVtYmVkZGVkVmlld0lEIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2U6OmlzRWRpdGFibGVJbWFnZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cmVxdWlyZXNMYXllciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzaG91
bGRCZU5vcm1hbEZsb3dPbmx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpjYWxjdWxhdGVDbGlwUmVjdHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVx
dWlyZXNDb21wb3NpdGluZ0xheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNPd25CYWNraW5nU3RvcmUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWFzb25zRm9yQ29tcG9zaXRpbmcgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0Nv
bXBvc2l0aW5nRm9yRWRpdGFibGVJbWFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorCiAyMDIwLTA4LTI5ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJld3JpdGUgbWFpbiB0aHJl
YWQgc2Nyb2xsIGxhdGNoaW5nIGxvZ2ljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVlMjU3Zjg2Y2JmNjM1MTU0MzVh
NTZhYTg2OGI3NDkzOTE3ZjI0YWQuLmQ1YTBkZDE1NGM4MTU5NTBjNjEyYzBjMWUxZDcyZDY5MThm
NzAyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA0IEBACisyMDIwLTA4LTMwICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQgZWRp
dGFibGUgaW1hZ2UgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE1OTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9z
L1BlbmNpbEtpdFNQSS5oOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9Gb2N1c2VkRWxlbWVu
dEluZm9ybWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpk
cmF3SW5Db250ZXh0KToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzOjpMYXllckNyZWF0aW9u
UHJvcGVydGllcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpMYXllckNyZWF0aW9uUHJvcGVydGllczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorICAgICAgICAq
IFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0dXBQYWdlQ29uZmlndXJhdGlvbjpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06
CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gaW5pdF0pOgorICAgICAgICAoLVtX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGNvcHlXaXRoWm9uZTpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBfc2V0RWRpdGFibGVJbWFnZXNFbmFibGVkOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9lZGl0YWJsZUltYWdlc0VuYWJsZWRd
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb25Qcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
SU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3NldHVwU2Nyb2xsQW5kQ29udGVudFZpZXdzXSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfc3R5bHVzVGFwR2VzdHVyZVNob3VsZENyZWF0ZUVkaXRhYmxlSW1hZ2Vd
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50OjpjcmVhdGVEcmF3aW5nVmlldyk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjpsYXllcldpbGxCZVJlbW92ZWQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjpjbGVhckxheWVycyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6OmNyZWF0ZUVtYmVkZGVkVmlldyk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5
ZXJUcmVlVmlld3MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9S
ZW1vdGVMYXllclRyZWVWaWV3cy5tbToKKyAgICAgICAgKC1bV0tFbWJlZGRlZFZpZXcgaW5pdFdp
dGhFbWJlZGRlZFZpZXdJRDpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1
bm5pbmdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3aWxsVXBkYXRlQXR0YWNobWVudEF0
dHJpYnV0ZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjplZGl0YWJsZUltYWdlQ29udHJvbGxlcik6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5oOiBSZW1v
dmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubWVz
c2FnZXMuaW46IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdl
Q29udHJvbGxlci5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdWaWV3KTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BlbmNpbEtpdFNvZnRMaW5rLmg6IFJl
bW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QZW5jaWxLaXRTb2Z0TGluay5tbTogUmVt
b3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldFVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBjbGVhblVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBfcmVtb3ZlRGVmYXVsdEdlc3R1cmVSZWNvZ25pemVyc10pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzXSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgZ2VzdHVyZVJlY29nbml6ZXJTaG91bGRCZWdpbjpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfZWxlbWVudERpZEZvY3VzOnVzZXJJc0ludGVyYWN0aW5nOmJsdXJQcmV2
aW91c05vZGU6YWN0aXZpdHlTdGF0ZUNoYW5nZXM6dXNlck9iamVjdDpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfZWxlbWVudERpZEJsdXJdKToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBfc3R5bHVzU2luZ2xlVGFwUmVjb2duaXplZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfZHJhd2luZ0Nvb3JkaW5hdG9yXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0RyYXdpbmdDb29yZGluYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tEcmF3aW5nQ29vcmRpbmF0b3IubW06IFJlbW92ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0RyYXdpbmdWaWV3Lm1tOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhh
bmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tOgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmFzc29jaWF0ZUVkaXRhYmxlSW1hZ2VXaXRoQXR0YWNo
bWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZGlkQ3Jl
YXRlRWRpdGFibGVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNs
aWVudDo6ZGlkRGVzdHJveUVkaXRhYmxlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvR3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6R3JhcGhpY3NMYXllckNBUmVtb3RlOjpjcmVhdGVQbGF0Zm9ybUNB
TGF5ZXJGb3JFbWJlZGRlZFZpZXcpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvR3JhcGhpY3NMYXllckNBUmVtb3RlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZUZvckVt
YmVkZGVkVmlldyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6ZW1iZWRkZWRWaWV3SUQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVD
b250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVDb250ZXh0OjpsYXll
ckRpZEVudGVyQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChX
ZWJLaXQ6OmlzQXNzaXN0YWJsZUVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpn
ZXRGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
aGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludCk6IERlbGV0ZWQuCisKIDIwMjAtMDgtMjggIFRp
bSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU2l0ZXMgYnVp
bHQgd2l0aCBmbGFtYmUuanMgZG9uJ3Qgd29yayB3aXRoIHRyYWNrcGFkIG9uIGlQYWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKaW5kZXggNGNiYzI3OWVmMjliMDg2MDYwZDZlZDAxZTE2ZjQ5YjcxZjcxZjM3ZS4uMGE4
NDZjNzgxM2IyYjNkNTE3MTFkYmNkMzhkNmE1YzNkZGQ0Y2ZlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAg
LTEwMDIsNyArMTAwMiw2IEBAIGVkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcAogZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHAKIGVkaXRpbmcvSFRNTEludGVyY2hhbmdlLmNwcAogZWRpdGlu
Zy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKLWVkaXRpbmcvSW5zZXJ0RWRpdGFibGVJbWFnZUNv
bW1hbmQuY3BwCiBlZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwCiBlZGl0aW5n
L0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCiBlZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNw
cApAQCAtMTU4OCw3ICsxNTg3LDYgQEAgcGFnZS9EZXZpY2VDb250cm9sbGVyLmNwcAogcGFnZS9E
aWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwCiBwYWdlL0Rpc2FibGVkQWRhcHRhdGlvbnMuY3BwCiBw
YWdlL0RyYWdDb250cm9sbGVyLmNwcAotcGFnZS9FZGl0YWJsZUltYWdlUmVmZXJlbmNlLmNwcAog
cGFnZS9FdmVudEhhbmRsZXIuY3BwCiBwYWdlL0V2ZW50U291cmNlLmNwcAogcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNmY2NzkxMGE4YTY2N2U2YmUyY2QzN2QxYzE1OGI5MmJhYmQ4Mzg2
Ni4uM2VhMDU4YWQ3NGEwM2M2NTdhNTAxZGVmMzhkNzcxZDUwYWVmMjFmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzI3LDcg
KzcyNyw2IEBACiAJCTJEMjlFQ0M4MTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDI5RUNDNDE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFu
YWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTJEMjlFQ0NBMTkyRjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjlFQ0M5MTky
RjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaCAqLzsgfTsKIAkJMkQy
QkVCMzEyMjM0QTMzNTAwNTU0NENBIC8qIEVsZW1lbnRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDJCRUIyRjIyMzRBMzM0MDA1NTQ0
Q0EgLyogRWxlbWVudElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQkyRDJFMzRBQzIxQTRFMTkyMDA0NTk4QjUgLyogRWRpdGFibGVJ
bWFnZVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkQyRTM0QTkyMUE0RTE5MTAwNDU5OEI1IC8qIEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2Uu
aCAqLzsgfTsKIAkJMkQzQTBFMzYxM0E3RDc2MTAwRTg1QUYwIC8qIFNWR1BhcnNpbmdFcnJvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQzQTBFMzUx
M0E3RDc2MTAwRTg1QUYwIC8qIFNWR1BhcnNpbmdFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEM0VGNDQ4MTkxNzkxNUMwMDAzNDE4NCAv
KiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEM0VGNDQ0MTkxNzkxNUMwMDAzNDE4NCAvKiBX
ZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDNFRjQ0QTE5MTc5MTVDMDAwMzQxODQgLyog
V2ViQ29yZUNBTGF5ZXJFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEM0VGNDQ2MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJDb3JlQ0FMYXllckV4
dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC03NTEsNyArNzUwLDYgQEAKIAkJMkQ3NkJCODIxOTQ1NjMyNDAwQ0ZEMjlBIC8qIFJ1bkxvb3BP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkQ3NkJCODAxOTQ1NjMyNDAwQ0ZEMjlBIC8qIFJ1bkxvb3BPYnNlcnZlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEN0RBMEYyMjQzNUVCMTkw
MEYwNDhEMSAvKiBXZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDdEQTBFRjI0MzVFQjE3MDBG
MDQ4RDEgLyogV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEN0VEMEFCMUJBRTk5MTcw
MDQzQjNFNSAvKiBUaW1lckV2ZW50QmFzZWRNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDdFRDBBOTFCQUU5OTE3MDA0M0IzRTUgLyogVGltZXJF
dmVudEJhc2VkTW9jay5oICovOyB9OwotCQkyRDgxRTFDRjIxQTc4Q0MyMDBBMzJDRjQgLyogSW5z
ZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEODFFMUNEMjFBNzhDQzIwMEEzMkNGNCAvKiBJbnNlcnRFZGl0YWJs
ZUltYWdlQ29tbWFuZC5oICovOyB9OwogCQkyRDgyODdGNzE2RTRBMDM4MDA4NkJEMDAgLyogSGl0
VGVzdExvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDgyODdGNTE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQ4QjkyQ0UyMDNE
MTNFMTAwOUM4NjhGIC8qIFVuaWZpZWRTb3VyY2U0ODEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREU1Rjg0QUQxRkExQTQ4QjAwNkRCNjNCIC8qIFVu
aWZpZWRTb3VyY2U0ODEuY3BwICovOyB9OwogCQkyRDhCOTJDRjIwM0QxM0UxMDA5Qzg2OEYgLyog
VW5pZmllZFNvdXJjZTQ4Mi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBERTVGODRDODFGQTFBNEE0MDA2REI2M0IgLyogVW5pZmllZFNvdXJjZTQ4Mi5j
cHAgKi87IH07CkBAIC02OTA2LDggKzY5MDQsNiBAQAogCQkyRDI5RUNDNDE5MkVDQzgzMDA5ODRC
NzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJEMjlFQ0M5MTkyRjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5UmVm
cmVzaE1vbml0b3JJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxh
eVJlZnJlc2hNb25pdG9ySU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMkJF
QjJGMjIzNEEzMzQwMDU1NDRDQSAvKiBFbGVtZW50SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFbGVtZW50SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkyRDJFMzRBOTIxQTRFMTkxMDA0NTk4QjUgLyogRWRpdGFibGVJbWFnZVJl
ZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0YWJsZUltYWdl
UmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJEMkUzNEFCMjFBNEUx
OTIwMDQ1OThCNSAvKiBFZGl0YWJsZUltYWdlUmVmZXJlbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRDJGQzA1NDE0NjBDRDZGMDAyNjM2MzMgLyogQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDJGQzA1NTE0NjBDRDZGMDAyNjM2MzMgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyRkMwNTYxNDYwQ0Q2RjAwMjYz
NjMzIC8qIEdyYWRpZW50SW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR3JhZGllbnRJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
OTUyLDggKzY5NDgsNiBAQAogCQkyRDdEQTBFRjI0MzVFQjE3MDBGMDQ4RDEgLyogV2ViVmlld1Zp
c3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJEN0RBMEYxMjQzNUVCMTgwMEYwNDhEMSAvKiBXZWJWaWV3VmlzdWFs
SWRlbnRpZmljYXRpb25PdmVybGF5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ3RUQwQTkxQkFFOTkxNzAwNDNCM0U1IC8qIFRpbWVyRXZl
bnRCYXNlZE1vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGltZXJFdmVu
dEJhc2VkTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyRDgxRTFDQjIxQTc4
Q0MxMDBBMzJDRjQgLyogSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyRDgxRTFDRDIxQTc4Q0MyMDBBMzJDRjQg
LyogSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkQ4Mjg3RjQxNkU0QTAzODAwODZCRDAwIC8qIEhpdFRlc3RMb2NhdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaXRUZXN0TG9jYXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDgyODdGNTE2RTRBMDM4MDA4NkJE
MDAgLyogSGl0VGVzdExvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEhpdFRlc3RMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDhEM0JF
QjIzODQ3QUM5MDA2NTcwNzUgLyogZ2VzdHVyZS1yZWNvZ25pemVyLmpzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBwYXRoID0gImdlc3R1cmUtcmVjb2duaXplci5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMTM4Niw4ICsyMTM4MCw2IEBACiAJCQkJQTdDQTU5NUMwQjI3QkQ5RTAwRkEwMjFE
IC8qIERyYWdDb250cm9sbGVyLmNwcCAqLywKIAkJCQlBN0NBNTk1QjBCMjdCRDlFMDBGQTAyMUQg
LyogRHJhZ0NvbnRyb2xsZXIuaCAqLywKIAkJCQk4MUY2NUZGNTEzNzg4RkFBMDBGRjZGMkQgLyog
RHJhZ1N0YXRlLmggKi8sCi0JCQkJMkQyRTM0QUIyMUE0RTE5MjAwNDU5OEI1IC8qIEVkaXRhYmxl
SW1hZ2VSZWZlcmVuY2UuY3BwICovLAotCQkJCTJEMkUzNEE5MjFBNEUxOTEwMDQ1OThCNSAvKiBF
ZGl0YWJsZUltYWdlUmVmZXJlbmNlLmggKi8sCiAJCQkJMUFGMzI2NzcwRDc4Qjk0NDAwNjhGMEM0
IC8qIEVkaXRvckNsaWVudC5oICovLAogCQkJCTkzQzA5QTgwMEIwNjRGMDAwMDVBQkQ0RCAvKiBF
dmVudEhhbmRsZXIuY3BwICovLAogCQkJCTkzQzA5QTUyMEIwNjREQjMwMDVBQkQ0RCAvKiBFdmVu
dEhhbmRsZXIuaCAqLywKQEAgLTIyMzkyLDggKzIyMzg0LDYgQEAKIAkJCQk5MzMwOUQ5NzA5OUU2
NDkxMDA1NkU1ODEgLyogSFRNTEludGVyY2hhbmdlLmggKi8sCiAJCQkJREIyM0MyQzkwQTUwOEQy
OTAwMjQ4OUVCIC8qIEluZGVudE91dGRlbnRDb21tYW5kLmNwcCAqLywKIAkJCQlEQjIzQzJDQTBB
NTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCAqLywKLQkJCQkyRDgxRTFD
QjIxQTc4Q0MxMDBBMzJDRjQgLyogSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuY3BwICovLAot
CQkJCTJEODFFMUNEMjFBNzhDQzIwMEEzMkNGNCAvKiBJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFu
ZC5oICovLAogCQkJCTkzMzA5RDlBMDk5RTY0OTEwMDU2RTU4MSAvKiBJbnNlcnRJbnRvVGV4dE5v
ZGVDb21tYW5kLmNwcCAqLywKIAkJCQk5MzMwOUQ5QjA5OUU2NDkxMDA1NkU1ODEgLyogSW5zZXJ0
SW50b1RleHROb2RlQ29tbWFuZC5oICovLAogCQkJCTkzMzA5RDlDMDk5RTY0OTEwMDU2RTU4MSAv
KiBJbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcCAqLywKQEAgLTMwMjA1LDcgKzMwMTk1LDYgQEAK
IAkJCQk2M0JENEE1RjFGNzc4RTlGMDA0Mzg3MjIgLyogQXBwbGljYXRpb25NYW5pZmVzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjMxNTJEMTkxRjk1MzFFRTAwN0E1RTRCIC8qIEFwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTYzNTRGNEM5MUY3QUZDOTQwMEQ4
OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlE
RkM2MTBBNjI0RkIyQTdEMDA2MjU0QzggLyogRW5jb2RpbmdUYWJsZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTlCNDE3MDY0MTI1NjYyQjMwMDZCMjhGQyAvKiBBcHBseUJsb2NrRWxlbWVudENvbW1h
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REQ5MDk5RTY0OTIwMDU2RTU4MSAvKiBBcHBs
eVN0eWxlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4RjYwRDkxRTZBRjAwMEY4
OUVFIC8qIEFyY2hpdmUuaCBpbiBIZWFkZXJzICovLApAQCAtMzEwMDAsNyArMzA5ODksNiBAQAog
CQkJCUZENTM3MzU3MTM3QjY1M0IwMDAwOERDRSAvKiBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZENkVEMkM0MTM2QjhFNDIwMDNDRjA3MiAvKiBEeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzdDMEI3NjI0REIzODUwMDA1
RDU5NTkgLyogRHluYW1pY3NDb21wcmVzc29yT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MkQyRTM0QUMyMUE0RTE5MjAwNDU5OEI1IC8qIEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzMzA5REUyMDk5RTY0OTIwMDU2RTU4MSAvKiBFZGl0QWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURFNDA5OUU2NDkyMDA1NkU1ODEgLyogRWRpdENvbW1h
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REU4MDk5RTY0OTIwMDU2RTU4MSAvKiBFZGl0
aW5nLmggaW4gSGVhZGVycyAqLywKQEAgLTMxMDMyLDYgKzMxMDIwLDcgQEAKIAkJCQk0MTRERURF
NzFGOUZFOTFFMDA0N0M0MEQgLyogRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE1QkUxOTAxRDU0RjVGQjAwREQ3QzY4IC8qIEVtcHR5R2FtZXBhZFByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzg0OUMxRjI0QkU0MDRCMDA0NDhENUEgLyogRW1wdHlT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQlERkM2MTBBNjI0RkIy
QTdEMDA2MjU0QzggLyogRW5jb2RpbmdUYWJsZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNzdD
M0Q3MURFRjg1MEEwMEE1MEJGQSAvKiBFbmRpbmdUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NDAzRTc4NzIzNjNCNThDMDAwNDQ1NTAgLyogRW50ZXJLZXlIaW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxRDJGOEUwNDIzNDQ3NTE2MDA5OTNCNjggLyogRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZl
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzE1OTMsNyArMzE1ODIsNiBAQAogCQkJCUU1MkVGREY0
MjExMjg3NUEwMEFEMjgyQSAvKiBJbnB1dE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RTM1
MjREMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMz
NDg2MTI0MTVGREUyMUUwMDdBMUNDOSAvKiBJbnB1dFR5cGVOYW1lcy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMkQ4MUUxQ0YyMUE3OENDMjAwQTMyQ0Y0IC8qIEluc2VydEVkaXRhYmxlSW1hZ2VDb21t
YW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURFQTA5OUU2NDkyMDA1NkU1ODEgLyogSW5z
ZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERUMwOTlF
NjQ5MjAwNTZFNTgxIC8qIEluc2VydExpbmVCcmVha0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUQwN0RFQUJBMEEzNjU1NEEwMENBMzBGOCAvKiBJbnNlcnRMaXN0Q29tbWFuZC5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRBY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0aW9uLmNwcAppbmRleCBmYmFlZjU4
N2M5NzAwZDg2MGI1ZDc0NmNkNzU2OTc2Yjg5ZmRmMzdhLi4yODgyZWE0NDMwNTMyMmNjNjgwZmVl
ZTM3MGU4NWIxODJhZmU0YjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdEFjdGlvbi5jcHAK
QEAgLTE0Miw4ICsxNDIsNiBAQCBTdHJpbmcgdW5kb1JlZG9MYWJlbChFZGl0QWN0aW9uIGVkaXRB
Y3Rpb24pCiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWSgiQ29udmVydCB0byBPcmRl
cmVkIExpc3QiLCAiQ29udmVydCB0byBPcmRlcmVkIExpc3QgKFVuZG8gYWN0aW9uIG5hbWUpIiwg
IlVuZG8gYWN0aW9uIG5hbWUiKTsKICAgICBjYXNlIEVkaXRBY3Rpb246OkNvbnZlcnRUb1Vub3Jk
ZXJlZExpc3Q6CiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWSgiQ29udmVydCB0byBV
bm9yZGVyZWQgTGlzdCIsICJDb252ZXJ0IHRvIFVub3JkZXJlZCBMaXN0IChVbmRvIGFjdGlvbiBu
YW1lKSIsICJVbmRvIGFjdGlvbiBuYW1lIik7Ci0gICAgY2FzZSBFZGl0QWN0aW9uOjpJbnNlcnRF
ZGl0YWJsZUltYWdlOgotICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoIkluc2VydCBE
cmF3aW5nIiwgIkluc2VydCBEcmF3aW5nIChVbmRvIGFjdGlvbiBuYW1lKSIsICJVbmRvIGFjdGlv
biBuYW1lIik7CiAgICAgfQogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRBY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dEFjdGlvbi5oCmluZGV4IDIxNjhlYjAyODYxYzFhMmRhNjcwN2UyODhjZjdiN2NkNWRjNmMyMDMu
LmM2MGM2YmNjODA1NTU1NjdhM2NiZGY2MWI4ODdkNDRjMmUyMWRhZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdEFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdEFjdGlvbi5oCkBAIC05Myw4ICs5Myw3IEBAIGVudW0gY2xhc3MgRWRpdEFjdGlv
biA6IHVpbnQ4X3QgewogICAgIENvbnZlcnRUb09yZGVyZWRMaXN0LAogICAgIENvbnZlcnRUb1Vu
b3JkZXJlZExpc3QsCiAgICAgSW5kZW50LAotICAgIE91dGRlbnQsCi0gICAgSW5zZXJ0RWRpdGFi
bGVJbWFnZQorICAgIE91dGRlbnQKIH07CiAKIFdURjo6U3RyaW5nIHVuZG9SZWRvTGFiZWwoRWRp
dEFjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMDk0NjZhZjE4ZGEyNTBk
YzQwNTY5ZGExNTlmY2IyYjEyYmQxNTczYS4uYzEwNjk4MWIzZmIxYjhlYTVlNWIxOTZmOWFkYzcz
OTRhYTY5MTZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNzUsNyArNzUsNiBA
QAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbmRlbnRPdXRkZW50Q29t
bWFuZC5oIgogI2luY2x1ZGUgIklucHV0RXZlbnQuaCIKLSNpbmNsdWRlICJJbnNlcnRFZGl0YWJs
ZUltYWdlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydExpc3RDb21tYW5kLmgiCiAjaW5jbHVk
ZSAiSW5zZXJ0VGV4dENvbW1hbmQuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCkBAIC00
MzE5LDExICs0MzE4LDYgQEAgY29uc3QgRm9udCogRWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKGJv
b2wmIGhhc011bHRpcGxlRm9udHMpIGNvbnN0CiAgICAgcmV0dXJuIGZvbnQ7CiB9CiAKLVJlZlB0
cjxIVE1MSW1hZ2VFbGVtZW50PiBFZGl0b3I6Omluc2VydEVkaXRhYmxlSW1hZ2UoKQotewotICAg
IHJldHVybiBJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZDo6aW5zZXJ0RWRpdGFibGVJbWFnZShk
b2N1bWVudCgpKTsKLX0KLQogYm9vbCBFZGl0b3I6OmNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25l
SW1hZ2VzKCkgY29uc3QKIHsKICAgICBhdXRvJiBzZWxlY3Rpb24gPSBtX2RvY3VtZW50LnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggYTllNDhmM2Y4
MzM2NGZiOTcyNmJmMDljNjEyMjlkNWEwMTZmZjRjNy4uYTA5MmRmZjg1ZjYyMDBhMDhjYWZmZTli
OTVhOGEyMzYzMjM2MmIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01NzAsOCArNTcw
LDYgQEAgcHVibGljOgogI2VuZGlmCiAjZW5kaWYKIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxIVE1MSW1hZ2VFbGVtZW50PiBpbnNlcnRFZGl0YWJsZUltYWdlKCk7Ci0KICAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4gaW5zZXJ0VGV4dFBsYWNlaG9s
ZGVyKGNvbnN0IEludFNpemUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVRleHRQ
bGFjZWhvbGRlcihUZXh0UGxhY2Vob2xkZXJFbGVtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDUyYzU4MGFmZmI0YjI4NzU3Y2NlZDQ4M2Y2YmNk
MjRlMjU3N2MwNjQuLjJkM2U5NWQwZmMxNjRlYmY2MTFmYjRlNGMwMDE5OWMwMGE1NTg2YzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApAQCAtNDYsNyArNDYsNiBA
QAogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJJbmRlbnRPdXRkZW50Q29tbWFuZC5oIgotI2luY2x1ZGUgIkluc2VydEVkaXRh
YmxlSW1hZ2VDb21tYW5kLmgiCiAjaW5jbHVkZSAiSW5zZXJ0TGlzdENvbW1hbmQuaCIKICNpbmNs
dWRlICJJbnNlcnROZXN0ZWRMaXN0Q29tbWFuZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTQ3
MiwxMyArNDcxLDYgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydEltYWdlKEZyYW1lJiBmcmFt
ZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdAogICAgIHJldHVybiBleGVjdXRl
SW5zZXJ0Tm9kZShmcmFtZSwgV1RGTW92ZShpbWFnZSkpOwogfQogCi1zdGF0aWMgYm9vbCBleGVj
dXRlSW5zZXJ0RWRpdGFibGVJbWFnZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKLXsKLSAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7
Ci0gICAgSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQ6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQo
KSktPmFwcGx5KCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHN0YXRpYyBib29sIGV4ZWN1dGVJ
bnNlcnRMaW5lQnJlYWsoRnJhbWUmIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRT
b3VyY2Ugc291cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIHN3aXRjaCAoc291cmNlKSB7CkBA
IC0xNDI1LDEzICsxNDE3LDYgQEAgc3RhdGljIGJvb2wgZW5hYmxlZFVuZG8oRnJhbWUmIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UpCiAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigp
LmNhblVuZG8oKTsKIH0KIAotc3RhdGljIGJvb2wgZW5hYmxlZEluUmljaGx5RWRpdGFibGVUZXh0
V2l0aEVkaXRhYmxlSW1hZ2VzRW5hYmxlZChGcmFtZSYgZnJhbWUsIEV2ZW50KiBldmVudCwgRWRp
dG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UpCi17Ci0gICAgaWYgKCFmcmFtZS5zZXR0aW5ncygpLmVk
aXRhYmxlSW1hZ2VzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IGVuYWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dChmcmFtZSwgZXZlbnQsIHNvdXJjZSk7Ci19Ci0K
IC8vIFN0YXRlIGZ1bmN0aW9ucwogCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVOb25lKEZyYW1lJiwg
RXZlbnQqKQpAQCAtMTY1MSw3ICsxNjM2LDYgQEAgc3RhdGljIGNvbnN0IENvbW1hbmRNYXAmIGNy
ZWF0ZUNvbW1hbmRNYXAoKQogICAgICAgICB7ICJJZ25vcmVTcGVsbGluZyIsIHsgZXhlY3V0ZUln
bm9yZVNwZWxsaW5nLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZEluRWRp
dGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RB
bGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCiAgICAgICAgIHsgIkluZGVudCIsIHsgZXhl
Y3V0ZUluZGVudCwgc3VwcG9ydGVkLCBlbmFibGVkSW5SaWNobHlFZGl0YWJsZVRleHQsIHN0YXRl
Tm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hl
bkRpc2FibGVkIH0gfSwKICAgICAgICAgeyAiSW5zZXJ0QmFja3RhYiIsIHsgZXhlY3V0ZUluc2Vy
dEJhY2t0YWIsIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkSW5FZGl0YWJs
ZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBpc1RleHRJbnNlcnRpb24sIGRvTm90QWxsb3dF
eGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAotICAgICAgICB7ICJJbnNlcnRFZGl0YWJsZUltYWdl
IiwgeyBleGVjdXRlSW5zZXJ0RWRpdGFibGVJbWFnZSwgc3VwcG9ydGVkLCBlbmFibGVkSW5SaWNo
bHlFZGl0YWJsZVRleHRXaXRoRWRpdGFibGVJbWFnZXNFbmFibGVkLCBzdGF0ZU5vbmUsIHZhbHVl
TnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9
IH0sCiAgICAgICAgIHsgIkluc2VydEhUTUwiLCB7IGV4ZWN1dGVJbnNlcnRIVE1MLCBzdXBwb3J0
ZWQsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJ
bnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAogICAgICAgICB7
ICJJbnNlcnRIb3Jpem9udGFsUnVsZSIsIHsgZXhlY3V0ZUluc2VydEhvcml6b250YWxSdWxlLCBz
dXBwb3J0ZWQsIGVuYWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51
bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9
LAogICAgICAgICB7ICJJbnNlcnRJbWFnZSIsIHsgZXhlY3V0ZUluc2VydEltYWdlLCBzdXBwb3J0
ZWQsIGVuYWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5v
dFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5k
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJkNGQ2ZmY3NGMyMDVkYWE1YWI5
ODU2ZmY0YTYyMmJhYjgwMjU4OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEVkaXRhYmxlSW1hZ2VDb21t
YW5kLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmgiCi0KLSNpbmNsdWRlICJFZGl0aW5nLmgi
Ci0jaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZDo6aW5z
ZXJ0RWRpdGFibGVJbWFnZShEb2N1bWVudCYgZG9jdW1lbnQpCi17Ci0gICAgUmVmUHRyPEluc2Vy
dEVkaXRhYmxlSW1hZ2VDb21tYW5kPiBpbnNlcnRDb21tYW5kID0gY3JlYXRlKGRvY3VtZW50KTsK
LSAgICBpbnNlcnRDb21tYW5kLT5hcHBseSgpOwotICAgIHJldHVybiBpbnNlcnRDb21tYW5kLT5t
X2ltYWdlRWxlbWVudDsKLX0KLQotSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQ6Okluc2VydEVk
aXRhYmxlSW1hZ2VDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IENvbXBvc2l0ZUVk
aXRDb21tYW5kKGRvY3VtZW50KQotewotfQotCi12b2lkIEluc2VydEVkaXRhYmxlSW1hZ2VDb21t
YW5kOjpkb0FwcGx5KCkKLXsKLSAgICBpZiAoZW5kaW5nU2VsZWN0aW9uKCkuaXNOb25lKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1faW1hZ2VFbGVtZW50ID0gSFRNTEltYWdlRWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KCkpOwotICAgIG1faW1hZ2VFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6eF9hcHBsZV9lZGl0YWJsZV9pbWFnZUF0dHIs
IGVtcHR5QXRvbSgpKTsKLSAgICBtX2ltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndpZHRoQXR0ciwgQXRvbVN0cmluZygiMTAwJSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgbV9pbWFnZUVsZW1lbnQtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpoZWlnaHRBdHRyLCBB
dG9tU3RyaW5nKCIzMDBweCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0g
ICAgbV9pbWFnZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRN
TE5hbWVzOjpzdHlsZUF0dHIsIEF0b21TdHJpbmcoImRpc3BsYXk6IGJsb2NrIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLQotICAgIGluc2VydE5vZGVBdCgqbV9pbWFnZUVs
ZW1lbnQsIGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkpOwotICAgIHNldEVuZGluZ1NlbGVjdGlv
bih2aXNpYmxlUG9zaXRpb25BZnRlck5vZGUoKm1faW1hZ2VFbGVtZW50KSk7Ci19Ci0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1h
bmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzlkMTllOWQ3ZDY1NjI0MzFjZDE0YzM5
OWUyM2UwZTNlNzg2MGUwZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5k
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ29tcG9z
aXRlRWRpdENvbW1hbmQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJbnNlcnRF
ZGl0YWJsZUltYWdlQ29tbWFuZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZD4gY3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElu
c2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kKGRvY3VtZW50KSk7Ci0gICAgfQotCi0gICAgc3RhdGlj
IFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBpbnNlcnRFZGl0YWJsZUltYWdlKERvY3VtZW50Jik7
Ci0KLXByaXZhdGU6Ci0gICAgSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQoRG9jdW1lbnQmKTsK
LQotICAgIHZvaWQgZG9BcHBseSgpIG92ZXJyaWRlOwotICAgIEVkaXRBY3Rpb24gZWRpdGluZ0Fj
dGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEVkaXRBY3Rpb246Okluc2VydEVkaXRhYmxlSW1h
Z2U7IH0KLQotICAgIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBtX2ltYWdlRWxlbWVudDsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vu
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2Nh
bGl6YWJsZS5zdHJpbmdzCmluZGV4IDU4NjAyOTBhOTVlYmUxNjkwMjNmY2FmMmJmZjhjZGQwOTdj
ZDA2MTcuLjBiODBhMjgwYWQ2ZjUzOWYxZjMzYWMzZTE4Zjg5NTc3N2JlY2MyZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKKysrIGIvU291
cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpAQCAtNDEyLDkgKzQxMiw2
IEBACiAvKiBVbmRvIGFjdGlvbiBuYW1lICovCiAiSW5kZW50IChVbmRvIGFjdGlvbiBuYW1lKSIg
PSAiSW5kZW50IjsKIAotLyogVW5kbyBhY3Rpb24gbmFtZSAqLwotIkluc2VydCBEcmF3aW5nIChV
bmRvIGFjdGlvbiBuYW1lKSIgPSAiSW5zZXJ0IERyYXdpbmciOwotCiAvKiBVbmRvIGFjdGlvbiBu
YW1lICovCiAiSW5zZXJ0IExpc3QgKFVuZG8gYWN0aW9uIG5hbWUpIiA9ICJJbnNlcnQgTGlzdCI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmlu
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggY2IzMDQ5
MDQwODkzYzRjZWMxNGZjNTFjNGJjNTBjNDM4MGNkOTM4ZS4uZDJjZjdiYjk4ZWU1MTEyM2ViYjI5
NjcyNmVjZWU5MmVhYTQ0ZTRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0cmlidXRlTmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRl
TmFtZXMuaW4KQEAgLTQzNiw1ICs0MzYsMyBAQCB4LWFwcGxlLWRhdGEtZGV0ZWN0b3JzLXR5cGUK
IHgtYXBwbGUtZGF0YS1kZXRlY3RvcnMtcmVzdWx0CiAKIHgtYXBwbGUtcGRmLWFubm90YXRpb24K
LQoteC1hcHBsZS1lZGl0YWJsZS1pbWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHAKaW5kZXggZTgxMzI0YjgxZTk1M2RiZDljZmVjM2ZhYzVhMDA1YzYwMTFmN2Q1My4u
NjczZTkwNjRiY2FmMzEwNjM2MGIxMDEzNzE5MDgzNmY2MDBhZGE4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAi
Q2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGll
bnQuaCIKLSNpbmNsdWRlICJFZGl0YWJsZUltYWdlUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRWRp
dG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgpAQCAtMjg3LDkgKzI4Niw3IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluCiAgICAgICAg
IG1fZXhwZXJpbWVudGFsSW1hZ2VNZW51RW5hYmxlZCA9ICF2YWx1ZS5pc051bGwoKTsKICAgICAg
ICAgdXBkYXRlSW1hZ2VDb250cm9scygpOwogI2VuZGlmCi0gICAgfSBlbHNlIGlmIChuYW1lID09
IHhfYXBwbGVfZWRpdGFibGVfaW1hZ2VBdHRyKQotICAgICAgICB1cGRhdGVFZGl0YWJsZUltYWdl
KCk7Ci0gICAgZWxzZSBpZiAobmFtZSA9PSBsb2FkaW5nQXR0cikgeworICAgIH0gZWxzZSBpZiAo
bmFtZSA9PSBsb2FkaW5nQXR0cikgewogICAgICAgICAvLyBObyBhY3Rpb24gbmVlZGVkIGZvciBl
YWdlciB0byBsYXp5IHRyYW5zaXRpb24uCiAgICAgICAgIGlmICghaGFzTGF6eUxvYWRhYmxlQXR0
cmlidXRlVmFsdWUodmFsdWUpKQogICAgICAgICAgICAgbG9hZERlZmVycmVkSW1hZ2UoKTsKQEAg
LTM0NSwyMCArMzQyLDYgQEAgYm9vbCBIVE1MSW1hZ2VFbGVtZW50OjpjYW5TdGFydFNlbGVjdGlv
bigpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEhUTUxJbWFnZUVsZW1lbnQ6
OnN1cHBvcnRzRm9jdXMoKSBjb25zdAotewotICAgIGlmIChoYXNFZGl0YWJsZUltYWdlQXR0cmli
dXRlKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBIVE1MRWxlbWVudDo6c3Vw
cG9ydHNGb2N1cygpOwotfQotCi1ib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkg
Y29uc3QKLXsKLSAgICBpZiAoaGFzRWRpdGFibGVJbWFnZUF0dHJpYnV0ZSgpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmlzRm9jdXNhYmxlKCk7Ci19Ci0K
IGJvb2wgSFRNTEltYWdlRWxlbWVudDo6aXNJbnRlcmFjdGl2ZUNvbnRlbnQoKSBjb25zdAogewog
ICAgIHJldHVybiBoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHVzZW1hcEF0dHIp
OwpAQCAtNDEwLDkgKzM5Myw2IEBAIE5vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IEhU
TUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvCiAgICAgLy8gaW4g
Y2FsbGJhY2tzIGJhY2sgdG8gdGhpcyBub2RlLgogICAgIE5vZGU6Okluc2VydGVkSW50b0FuY2Vz
dG9yUmVzdWx0IGluc2VydE5vdGlmaWNhdGlvblJlcXVlc3QgPSBIVE1MRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOwogCi0g
ICAgaWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCAmJiBoYXNFZGl0YWJsZUlt
YWdlQXR0cmlidXRlKCkpCi0gICAgICAgIGluc2VydE5vdGlmaWNhdGlvblJlcXVlc3QgPSBJbnNl
cnRlZEludG9BbmNlc3RvclJlc3VsdDo6TmVlZHNQb3N0SW5zZXJ0aW9uQ2FsbGJhY2s7Ci0KICAg
ICBpZiAoaW5zZXJ0aW9uVHlwZS50cmVlU2NvcGVDaGFuZ2VkICYmICFtX3BhcnNlZFVzZW1hcC5p
c051bGwoKSkKICAgICAgICAgdHJlZVNjb3BlKCkuYWRkSW1hZ2VFbGVtZW50QnlVc2VtYXAoKm1f
cGFyc2VkVXNlbWFwLmltcGwoKSwgKnRoaXMpOwogCkBAIC00MzcsMTIgKzQxNyw2IEBAIE5vZGU6
Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IEhUTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50
b0FuY2VzdG9yKEluc2VydGlvCiAgICAgcmV0dXJuIGluc2VydE5vdGlmaWNhdGlvblJlcXVlc3Q7
CiB9CiAKLXZvaWQgSFRNTEltYWdlRWxlbWVudDo6ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgpCi17
Ci0gICAgaWYgKGhhc0VkaXRhYmxlSW1hZ2VBdHRyaWJ1dGUoKSkKLSAgICAgICAgdXBkYXRlRWRp
dGFibGVJbWFnZSgpOwotfQotCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5j
ZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9m
UmVtb3ZlZFRyZWUpCiB7CiAgICAgaWYgKG1fZm9ybSkKQEAgLTQ1Niw2OSArNDMwLDEwIEBAIHZv
aWQgSFRNTEltYWdlRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1v
dmFsVHlwZSwgQ29udGFpbmVyTm9kCiAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21F
bGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKFJlbGV2YW50TXV0YXRpb246Olllcyk7CiAgICAg
fQogCi0gICAgaWYgKHJlbW92YWxUeXBlLmRpc2Nvbm5lY3RlZEZyb21Eb2N1bWVudCkKLSAgICAg
ICAgdXBkYXRlRWRpdGFibGVJbWFnZSgpOwotCiAgICAgbV9mb3JtID0gbnVsbHB0cjsKICAgICBI
VE1MRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihyZW1vdmFsVHlwZSwgb2xkUGFyZW50T2ZS
ZW1vdmVkVHJlZSk7CiB9CiAKLWJvb2wgSFRNTEltYWdlRWxlbWVudDo6aGFzRWRpdGFibGVJbWFn
ZUF0dHJpYnV0ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdzKCkuZWRp
dGFibGVJbWFnZXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4g
aGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih4X2FwcGxlX2VkaXRhYmxlX2ltYWdl
QXR0cik7Ci19Ci0KLUdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIEhUTUxJbWFnZUVsZW1l
bnQ6OmVkaXRhYmxlSW1hZ2VWaWV3SUQoKSBjb25zdAotewotICAgIGlmICghbV9lZGl0YWJsZUlt
YWdlKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbV9lZGl0YWJsZUltYWdlLT5lbWJl
ZGRlZFZpZXdJRCgpOwotfQotCi12b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnVwZGF0ZUVkaXRhYmxl
SW1hZ2UoKQotewotICAgIGlmICghZG9jdW1lbnQoKS5zZXR0aW5ncygpLmVkaXRhYmxlSW1hZ2Vz
RW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQo
KS5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBib29sIGhh
c0VkaXRhYmxlQXR0cmlidXRlID0gaGFzRWRpdGFibGVJbWFnZUF0dHJpYnV0ZSgpOwotICAgIGJv
b2wgaXNDdXJyZW50bHlFZGl0YWJsZSA9ICEhbV9lZGl0YWJsZUltYWdlOwotICAgIGJvb2wgc2hv
dWxkQmVFZGl0YWJsZSA9IGlzQ29ubmVjdGVkKCkgJiYgaGFzRWRpdGFibGVBdHRyaWJ1dGU7Ci0K
LSNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIC8vIENyZWF0ZSB0aGUgaW5uZXIg
YXR0YWNobWVudCBmb3IgZWRpdGFibGUgaW1hZ2VzLCBvciBub24tZWRpdGFibGUKLSAgICAvLyBp
bWFnZXMgdGhhdCB3ZXJlIGNsb25lZCBmcm9tIGVkaXRhYmxlIGltYWdlIHNvdXJjZXMuCi0gICAg
aWYgKCFhdHRhY2htZW50RWxlbWVudCgpICYmIChzaG91bGRCZUVkaXRhYmxlIHx8ICFtX3BlbmRp
bmdDbG9uZWRBdHRhY2htZW50SUQuaXNFbXB0eSgpKSkgewotICAgICAgICBhdXRvIGF0dGFjaG1l
bnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRU
YWcsIGRvY3VtZW50KCkpOwotICAgICAgICBpZiAoIW1fcGVuZGluZ0Nsb25lZEF0dGFjaG1lbnRJ
RC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhdHRhY2htZW50LT5zZXRVbmlxdWVJZGVudGlmaWVy
KFdURk1vdmUobV9wZW5kaW5nQ2xvbmVkQXR0YWNobWVudElEKSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKTsKLSAgICAgICAg
c2V0QXR0YWNobWVudEVsZW1lbnQoV1RGTW92ZShhdHRhY2htZW50KSk7Ci0gICAgfQotI2VuZGlm
Ci0KLSAgICBpZiAoc2hvdWxkQmVFZGl0YWJsZSA9PSBpc0N1cnJlbnRseUVkaXRhYmxlKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWhhc0VkaXRhYmxlQXR0cmlidXRlKSB7Ci0gICAgICAg
IG1fZWRpdGFibGVJbWFnZSA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoIW1fZWRpdGFibGVJbWFnZSkKLSAgICAgICAgbV9lZGl0YWJsZUltYWdlID0gRWRpdGFi
bGVJbWFnZVJlZmVyZW5jZTo6Y3JlYXRlKGRvY3VtZW50KCkpOwotCi0jaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKLSAgICBtX2VkaXRhYmxlSW1hZ2UtPmFzc29jaWF0ZVdpdGhBdHRhY2ht
ZW50KGF0dGFjaG1lbnRFbGVtZW50KCktPnVuaXF1ZUlkZW50aWZpZXIoKSk7Ci0jZW5kaWYKLX0K
LQogSFRNTFBpY3R1cmVFbGVtZW50KiBIVE1MSW1hZ2VFbGVtZW50OjpwaWN0dXJlRWxlbWVudCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGljdHVyZUVsZW1lbnQuZ2V0KCk7CkBAIC05MDAsMjAg
KzgxNSw5IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6Y29weU5vbkF0dHJpYnV0ZVByb3BlcnRp
ZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JiBzb3VyCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKICAgICBtX3BlbmRpbmdDbG9uZWRBdHRhY2htZW50SUQgPSAhc291cmNlSW1hZ2Uu
bV9wZW5kaW5nQ2xvbmVkQXR0YWNobWVudElELmlzRW1wdHkoKSA/IHNvdXJjZUltYWdlLm1fcGVu
ZGluZ0Nsb25lZEF0dGFjaG1lbnRJRCA6IHNvdXJjZUltYWdlLmF0dGFjaG1lbnRJZGVudGlmaWVy
KCk7CiAjZW5kaWYKLSAgICBtX2VkaXRhYmxlSW1hZ2UgPSBzb3VyY2VJbWFnZS5tX2VkaXRhYmxl
SW1hZ2U7CiAgICAgRWxlbWVudDo6Y29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVu
dChzb3VyY2UpOwogfQogCi12b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQmIGV2ZW50KQotewotICAgIGlmIChoYXNFZGl0YWJsZUltYWdlQXR0cmlidXRlKCkg
JiYgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiBpczxNb3Vz
ZUV2ZW50PihldmVudCkgJiYgZG93bmNhc3Q8TW91c2VFdmVudD4oZXZlbnQpLmJ1dHRvbigpID09
IExlZnRCdXR0b24pIHsKLSAgICAgICAgZm9jdXMoKTsKLSAgICAgICAgZXZlbnQuc2V0RGVmYXVs
dEhhbmRsZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBIVE1MRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihldmVudCk7Ci19Ci0KIENhY2hlZEltYWdlKiBIVE1MSW1hZ2VFbGVt
ZW50OjpjYWNoZWRJbWFnZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1hZ2VMb2FkZXItPmlt
YWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IDY4M2MzNzQ4
ZjMzM2UyOWU3MGRmZmM5NTQzNmI4MjA5YzQ2MTc1NmEuLjk5NmY4NzUwNmNjOGQxNTRkZDhlYmZi
NjJhOTEwYTAxNzMxMGRlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5o
CkBAIC0zNSw3ICszNSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkSW1h
Z2U7CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7Ci1jbGFzcyBFZGl0YWJsZUltYWdlUmVmZXJlbmNl
OwogY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50OwogY2xhc3MgSFRNTEZvcm1FbGVtZW50Owog
Y2xhc3MgSFRNTEltYWdlTG9hZGVyOwpAQCAtNjIsOSArNjEsNiBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgaW50IG5hdHVyYWxIZWlnaHQoKSBjb25zdDsKICAgICBjb25zdCBBdG9tU3Ry
aW5nJiBjdXJyZW50U3JjKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50U3JjOyB9CiAKLSAgICBi
b29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzRm9jdXNhYmxl
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICBib29sIGlzU2VydmVyTWFwKCkgY29uc3Q7CiAKICAg
ICBjb25zdCBBdG9tU3RyaW5nJiBhbHRUZXh0KCkgY29uc3Q7CkBAIC0xMjUsMTEgKzEyMSw2IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzU3lzdGVtUHJldmlld0ltYWdlKCkg
Y29uc3Q7CiAjZW5kaWYKIAotICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXI6OkVtYmVk
ZGVkVmlld0lEIGVkaXRhYmxlSW1hZ2VWaWV3SUQoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGhhc0VkaXRhYmxlSW1hZ2VBdHRyaWJ1dGUoKSBjb25zdDsKLQotICAgIHZvaWQgZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCYpIGZpbmFsOwotCiAgICAgdm9pZCBsb2FkRGVmZXJyZWRJ
bWFnZSgpOwogCiAgICAgY29uc3QgQXRvbVN0cmluZyYgbG9hZGluZ0ZvckJpbmRpbmdzKCkgY29u
c3Q7CkBAIC0xNzUsNyArMTY2LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFN1YnJlc291cmNl
QXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBJ
bnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25U
eXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRGaW5pc2hJbnNlcnRp
bmdOb2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxU
eXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzRm9ybUFzc29jaWF0
ZWRFbGVtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE4OSw4ICsxNzks
NiBAQCBwcml2YXRlOgogCiAgICAgSW1hZ2VDYW5kaWRhdGUgYmVzdEZpdFNvdXJjZUZyb21QaWN0
dXJlRWxlbWVudCgpOwogCi0gICAgdm9pZCB1cGRhdGVFZGl0YWJsZUltYWdlKCk7Ci0KICAgICB2
b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYp
IGZpbmFsOwogCiAgICAgZmxvYXQgZWZmZWN0aXZlSW1hZ2VEZXZpY2VQaXhlbFJhdGlvKCkgY29u
c3Q7CkBAIC0yMTYsNyArMjA0LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFkTmFtZUJlZm9y
ZUF0dHJpYnV0ZUNoYW5nZWQgeyBmYWxzZSB9OyAvLyBGSVhNRTogV2Ugb25seSBuZWVkIHRoaXMg
YmVjYXVzZSBwYXJzZUF0dHJpYnV0ZSgpIGNhbid0IHNlZSB0aGUgb2xkIHZhbHVlLgogICAgIGJv
b2wgbV9pc0Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyIHsgZmFsc2UgfTsKIAotICAgIFJlZlB0cjxF
ZGl0YWJsZUltYWdlUmVmZXJlbmNlPiBtX2VkaXRhYmxlSW1hZ2U7CiAgICAgV2Vha1B0cjxIVE1M
UGljdHVyZUVsZW1lbnQ+IG1fcGljdHVyZUVsZW1lbnQ7CiAgICAgTWVkaWFRdWVyeUR5bmFtaWNS
ZXN1bHRzIG1fbWVkaWFRdWVyeUR5bmFtaWNSZXN1bHRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAppbmRleCAyZjliZTRkMmFlZmYwNGYzNzk2MDMyNjIxZDU2MDhhOGU0OTQxNTgzLi5k
YThjZjY3MmExMDFkNGNlY2YyNzEzMDExYTIxMTBmYTgyM2Q2YmU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgKQEAgLTUyNSwxMCArNTI1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYXNzb2NpYXRlRWRpdGFibGVJbWFnZVdpdGhBdHRhY2htZW50KEdy
YXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lELCBjb25zdCBTdHJpbmcmKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRWRpdGFibGVJbWFnZShHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZp
ZXdJRCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lFZGl0YWJsZUltYWdlKEdyYXBo
aWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKSB7IH0KLQogICAgIHZpcnR1YWwgdm9pZCBjb25maWd1
cmVMb2dnaW5nQ2hhbm5lbChjb25zdCBTdHJpbmcmLCBXVEZMb2dDaGFubmVsU3RhdGUsIFdURkxv
Z0xldmVsKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCB1c2VySXNJbnRlcmFjdGluZygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRh
YmxlSW1hZ2VSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0YWJsZUltYWdl
UmVmZXJlbmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWYyYmJlNDAxOTRh
ZmJkOWE3MTkxNDJhMzJiMzJlYzNiNDU0OTUyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRhYmxlSW1hZ2VSZWZl
cmVuY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCi0gKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKLSAqIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQot
ICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJFZGl0YWJs
ZUltYWdlUmVmZXJlbmNlLmgiCi0KLSNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJDaHJv
bWVDbGllbnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1FZGl0YWJsZUltYWdlUmVmZXJl
bmNlOjpFZGl0YWJsZUltYWdlUmVmZXJlbmNlKERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IG1f
ZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQotICAgICwgbV9lbWJlZGRlZFZpZXdJRChH
cmFwaGljc0xheWVyOjpuZXh0RW1iZWRkZWRWaWV3SUQoKSkKLXsKLSAgICBpZiAoYXV0byogcGFn
ZSA9IGRvY3VtZW50LnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuZGlk
Q3JlYXRlRWRpdGFibGVJbWFnZShtX2VtYmVkZGVkVmlld0lEKTsKLX0KLQotRWRpdGFibGVJbWFn
ZVJlZmVyZW5jZTo6fkVkaXRhYmxlSW1hZ2VSZWZlcmVuY2UoKQotewotICAgIGlmICghbV9kb2N1
bWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChhdXRvKiBwYWdlID0gbV9kb2N1bWVudC0+
cGFnZSgpKQotICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5kaWREZXN0cm95RWRpdGFi
bGVJbWFnZShtX2VtYmVkZGVkVmlld0lEKTsKLX0KLQotdm9pZCBFZGl0YWJsZUltYWdlUmVmZXJl
bmNlOjphc3NvY2lhdGVXaXRoQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCkK
LXsKLSAgICBpZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoYXV0byog
cGFnZSA9IG1fZG9jdW1lbnQtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50
KCkuYXNzb2NpYXRlRWRpdGFibGVJbWFnZVdpdGhBdHRhY2htZW50KG1fZW1iZWRkZWRWaWV3SUQs
IGF0dGFjaG1lbnRJRCk7Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0YWJsZUltYWdlUmVmZXJlbmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0VkaXRhYmxlSW1hZ2VSZWZlcmVuY2UuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODIxNWU0MTA4NTdjMzkzYTUxOTYyMGQ3NjgxODVhOGY2NmVmZTM3ZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRhYmxlSW1hZ2VSZWZlcmVuY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUwotICogSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVECi0gKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEKLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogSE9MREVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
RG9jdW1lbnQ7Ci0KLWNsYXNzIEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxFZGl0YWJsZUltYWdlUmVmZXJlbmNlPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxF
ZGl0YWJsZUltYWdlUmVmZXJlbmNlPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRWRpdGFibGVJbWFnZVJlZmVyZW5jZShkb2N1
bWVudCkpOwotICAgIH0KLQotICAgIH5FZGl0YWJsZUltYWdlUmVmZXJlbmNlKCk7Ci0KLSAgICBH
cmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fZW1iZWRkZWRWaWV3SUQ7IH0KLQotICAgIHZvaWQgYXNzb2NpYXRlV2l0aEF0dGFjaG1l
bnQoY29uc3QgU3RyaW5nJiBhdHRhY2htZW50SUQpOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0
IEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2UoRG9jdW1lbnQmKTsKLQotICAgIFdlYWtQdHI8RG9jdW1l
bnQ+IG1fZG9jdW1lbnQ7Ci0gICAgR3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgbV9lbWJl
ZGRlZFZpZXdJRDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MueWFtbAppbmRleCA1YWVjMDg1YmM4Y2UyMjc0ZTk4OWY5YmRmMjVhZmVmNGQ0MWQ1MzBh
Li4xZTA0MzU5ZWZlZWZlOTMwNDJkY2NlMDRlNGIwZjdiYTQ5ZjllMGMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy55YW1sCkBAIC04ODksOSArODg5LDYgQEAgdmlkZW9RdWFsaXR5SW5jbHVkZXNE
aXNwbGF5Q29tcG9zaXRpbmdFbmFibGVkOgogICBpbml0aWFsOiBmYWxzZQogICBjb25kaXRpb25h
bDogVklERU8KIAotZWRpdGFibGVJbWFnZXNFbmFibGVkOgotICBpbml0aWFsOiBmYWxzZQotCiBh
ZENsaWNrQXR0cmlidXRpb25FbmFibGVkOgogICBpbml0aWFsOiBmYWxzZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDIz
NDEzZDhjY2IwZWQzM2Y3N2YyZDg1ZjAzNjI4ZDg1NWUzMjczMDcuLjNlNjU5NWVhYmVlMWZjZDg5
NjRhMTRmZTQ2MDMxMjY2YzkwZWI2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC04MzEsMTIgKzgzMSw2IEBAIHZvaWQg
R3JhcGhpY3NMYXllcjo6dHJhdmVyc2UoR3JhcGhpY3NMYXllciYgbGF5ZXIsIGNvbnN0IFdURjo6
RnVuY3Rpb248dm9pZCAoR3JhCiAgICAgICAgIHRyYXZlcnNlKCptYXNrTGF5ZXIsIHRyYXZlcnNh
bEZ1bmMpOwogfQogCi1HcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBHcmFwaGljc0xheWVy
OjpuZXh0RW1iZWRkZWRWaWV3SUQoKQotewotICAgIHN0YXRpYyBHcmFwaGljc0xheWVyOjpFbWJl
ZGRlZFZpZXdJRCBuZXh0RW1iZWRkZWRWaWV3SUQ7Ci0gICAgcmV0dXJuICsrbmV4dEVtYmVkZGVk
Vmlld0lEOwotfQotCiB2b2lkIEdyYXBoaWNzTGF5ZXI6OmR1bXBMYXllcihUZXh0U3RyZWFtJiB0
cywgTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgdHMgPDwg
aW5kZW50IDw8ICIoIiA8PCAiR3JhcGhpY3NMYXllciI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggOGYwZmMzNjY0N2JlNTg5MjRj
ODA0OWNlZjZiYThiNjBmMjMzNWIyNy4uN2U0ZmUzZmQwMGNhNTlkOWI3ODJhOGEwNDBmNGQ1Yjc5
MTgwOWZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuaApAQCAtNDk5LDIxICs0OTksMTEgQEAgcHVibGljOgogICAgICAgICBNZWRpYSwK
ICAgICAgICAgQ2FudmFzLAogICAgICAgICBCYWNrZ3JvdW5kQ29sb3IsCi0gICAgICAgIFBsdWdp
biwKLSAgICAgICAgRW1iZWRkZWRWaWV3CisgICAgICAgIFBsdWdpbgogICAgIH07CiAKLSAgICBl
bnVtIGNsYXNzIENvbnRlbnRzTGF5ZXJFbWJlZGRlZFZpZXdUeXBlIDogdWludDhfdCB7Ci0gICAg
ICAgIE5vbmUgPSAwLAotICAgICAgICBFZGl0YWJsZUltYWdlLAotICAgIH07Ci0KLSAgICB1c2lu
ZyBFbWJlZGRlZFZpZXdJRCA9IHVpbnQ2NF90OwotICAgIHN0YXRpYyBFbWJlZGRlZFZpZXdJRCBu
ZXh0RW1iZWRkZWRWaWV3SUQoKTsKLQogICAgIC8vIFBhc3MgYW4gaW52YWxpZCBjb2xvciB0byBy
ZW1vdmUgdGhlIGNvbnRlbnRzIGxheWVyLgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1Rv
U29saWRDb2xvcihjb25zdCBDb2xvciYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50
c1RvRW1iZWRkZWRWaWV3KEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJFbWJlZGRlZFZpZXdU
eXBlLCBFbWJlZGRlZFZpZXdJRCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Q
bGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkgeyB9CiAg
ICAgdmlydHVhbCBib29sIHVzZXNDb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggOGFmMzE1M2UxMjlhMjk3MjkxMjI2YzBmM2QxM2Q1MTdl
MDlkNzUyNC4uNzgzMjRhZWM4NmRkYTMwYzA4ZWVjODJkZGYxYjE2OTMzNjFkM2Y4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwCkBAIC0zODAsMTEgKzM4MCw2IEBAIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBo
aWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmCiAj
ZW5kaWYKIH0KIAotUmVmPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVQ
bGF0Zm9ybUNBTGF5ZXJGb3JFbWJlZGRlZFZpZXcoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUg
bGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCwgUGxhdGZvcm1DQUxheWVy
Q2xpZW50KiBvd25lcikKLXsKLSAgICByZXR1cm4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVQbGF0
Zm9ybUNBTGF5ZXIobGF5ZXJUeXBlLCBvd25lcik7Ci19Ci0KIFJlZjxQbGF0Zm9ybUNBQW5pbWF0
aW9uPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1D
QUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xMTg1LDM5ICsxMTgwLDYgQEAgdm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgbm90ZUxheWVy
UHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzSW1hZ2VDaGFuZ2VkKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnNldENvbnRlbnRzVG9FbWJlZGRlZFZpZXcoR3JhcGhpY3NMYXllcjo6Q29udGVu
dHNMYXllckVtYmVkZGVkVmlld1R5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyOjpFbWJlZGRl
ZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCkKLXsKLSAgICBib29sIGNvbnRlbnRzTGF5ZXJDaGFuZ2Vk
ID0gZmFsc2U7Ci0KLSAgICBpZiAobGF5ZXJUeXBlICE9IEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRz
TGF5ZXJFbWJlZGRlZFZpZXdUeXBlOjpOb25lKSB7Ci0gICAgICAgIG1fY29udGVudHNMYXllclB1
cnBvc2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6RW1iZWRkZWRWaWV3OwotCi0gICAgICAgIFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIHBsYXRmb3JtVHlwZTsKLSAgICAgICAgc3dpdGNoIChs
YXllclR5cGUpIHsKLSAgICAgICAgY2FzZSBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyRW1i
ZWRkZWRWaWV3VHlwZTo6RWRpdGFibGVJbWFnZToKLSAgICAgICAgICAgIHBsYXRmb3JtVHlwZSA9
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlRWRpdGFibGVJbWFnZUxheWVyOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIHBsYXRmb3JtVHlwZSA9IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlTGF5ZXI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgh
bV9jb250ZW50c0xheWVyIHx8IG1fY29udGVudHNMYXllci0+bGF5ZXJUeXBlKCkgIT0gcGxhdGZv
cm1UeXBlIHx8IG1fY29udGVudHNMYXllci0+ZW1iZWRkZWRWaWV3SUQoKSAhPSBlbWJlZGRlZFZp
ZXdJRCkgewotICAgICAgICAgICAgbV9jb250ZW50c0xheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxh
eWVyRm9yRW1iZWRkZWRWaWV3KHBsYXRmb3JtVHlwZSwgZW1iZWRkZWRWaWV3SUQsIHRoaXMpOwot
ICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0Qo
KSk7Ci0gICAgICAgICAgICBjb250ZW50c0xheWVyQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAgIH0K
LSAgICB9IGVsc2UgewotICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNM
YXllclB1cnBvc2U6Ok5vbmU7Ci0gICAgICAgIGNvbnRlbnRzTGF5ZXJDaGFuZ2VkID0gbV9jb250
ZW50c0xheWVyOwotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOwotICAgIH0KLQot
ICAgIGlmIChjb250ZW50c0xheWVyQ2hhbmdlZCkKLSAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5n
ZWQoKTsKLX0KLQogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxh
eWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1
cnBvc2UpCiB7CiAgICAgaWYgKG1fY29udGVudHNMYXllciAmJiBwbGF0Zm9ybUxheWVyID09IG1f
Y29udGVudHNMYXllci0+cGxhdGZvcm1MYXllcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCBlN2UyNTM0NjBm
ZWRkYjUzZTFlZTg1ZTI3ZWI5NzFkMDBlM2I0MDBlLi5mZTdkYzU2YTQ3ZjNmYmU3OGQxMzFhYWE2
ZGMyOTY0NmUwZWMzMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtMTM5LDcgKzEzOSw2IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFu
aW1hdGlvbk5hbWUpIG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250
ZW50c1RvSW1hZ2UoSW1hZ2UqKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENvbnRlbnRzVG9FbWJlZGRlZFZpZXcoR3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXllckVtYmVk
ZGVkVmlld1R5cGUsIEdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKSBvdmVycmlkZTsKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIq
IGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCkBAIC0yMzUs
NyArMjM0LDYgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgUmVmPFBsYXRmb3JtQ0FMYXllcj4g
Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBQbGF0Zm9y
bUNBTGF5ZXJDbGllbnQqIG93bmVyKTsKICAgICB2aXJ0dWFsIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+
IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUxheWVyKiwgUGxhdGZvcm1DQUxheWVyQ2xp
ZW50KiBvd25lcik7Ci0gICAgdmlydHVhbCBSZWY8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVQbGF0
Zm9ybUNBTGF5ZXJGb3JFbWJlZGRlZFZpZXcoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIEdy
YXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lELCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVy
KTsKICAgICB2aXJ0dWFsIFJlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVQbGF0Zm9ybUNB
QW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCk7CiAKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIHByaW1hcnlMYXllcigpIGNvbnN0
IHsgcmV0dXJuIG1fc3RydWN0dXJhbExheWVyLmdldCgpID8gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0
KCkgOiBtX2xheWVyLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAppbmRleCAzNWIwNDg4ZjYyYzAwYTgx
MWQwYThiNTljNTJiOGI5MzdkYWY3OWI5Li42ZDQxZDk4MWEyYjAxYzcxOGNkMDk1ZTQ2YmFhZDMx
NzRiZWQ4ZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKQEAgLTIyMSw5ICsyMjEsNiBAQCBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBs
YXllclR5cGUpCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVJvb3RMYXllcjoK
ICAgICAgICAgdHMgPDwgInJvb3QtbGF5ZXIiOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlRWRpdGFibGVJbWFnZUxheWVyOgotICAgICAgICB0cyA8
PCAiZWRpdGFibGUtaW1hZ2UiOwotICAgICAgICBicmVhazsKICAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQmFja2Ryb3BMYXllcjoKICAgICAgICAgdHMgPDwgImJhY2tkcm9wLWxh
eWVyIjsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCmluZGV4IDE2MDk0YzM1MWU2N2QzZmM3MGYz
OTc3YjU0OTc0ZGQ4ZjMxNzYzOWQuLjUwNGIwMWMyNDQ0ZTllOTU5YzE4YzM0NmNiNWViN2JlY2Ew
ZDYzNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oCkBAIC03Niw3ICs3Niw2IEBAIHB1YmxpYzoKICAgICAgICAgTGF5
ZXJUeXBlTGlnaHRTeXN0ZW1CYWNrZHJvcExheWVyLAogICAgICAgICBMYXllclR5cGVEYXJrU3lz
dGVtQmFja2Ryb3BMYXllciwKICAgICAgICAgTGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVyTGF5ZXIs
Ci0gICAgICAgIExheWVyVHlwZUVkaXRhYmxlSW1hZ2VMYXllciwKICAgICAgICAgTGF5ZXJUeXBl
Q3VzdG9tLAogICAgIH07CiAgICAgZW51bSBGaWx0ZXJUeXBlIHsgTGluZWFyLCBOZWFyZXN0LCBU
cmlsaW5lYXIgfTsKQEAgLTI0Nyw4ICsyNDYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHcmFw
aGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlIGN1c3RvbUFwcGVhcmFuY2UoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUN1c3RvbUFwcGVhcmFuY2UoR3JhcGhpY3NMYXllcjo6
Q3VzdG9tQXBwZWFyYW5jZSkgPSAwOwogCi0gICAgdmlydHVhbCBHcmFwaGljc0xheWVyOjpFbWJl
ZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCgpIGNvbnN0ID0gMDsKLQogICAgIHZpcnR1YWwgVGls
ZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1Rl
eHRBdFBvaW50KENHQ29udGV4dFJlZiwgQ0dGbG9hdCB4LCBDR0Zsb2F0IHksIENHU2l6ZSBzY2Fs
ZSwgQ0dGbG9hdCBmb250U2l6ZSwgY29uc3QgY2hhciogdGV4dCwgc2l6ZV90IGxlbmd0aCwgQ0dG
bG9hdCBzdHJva2VXaWR0aEFzUGVyY2VudGFnZU9mRm9udFNpemUgPSAwLCBDb2xvciBzdHJva2VD
b2xvciA9IENvbG9yKCkpIGNvbnN0OwpAQCAtMzQ1LDcgKzM0Miw2IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGU+IHsKICAg
ICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGU6OkxheWVyVHlwZUxpZ2h0
U3lzdGVtQmFja2Ryb3BMYXllciwKICAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGU6OkxheWVyVHlwZURhcmtTeXN0ZW1CYWNrZHJvcExheWVyLAogICAgICAgICBXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZTo6TGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVy
TGF5ZXIsCi0gICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlOjpMYXll
clR5cGVFZGl0YWJsZUltYWdlTGF5ZXIsCiAgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlOjpMYXllclR5cGVDdXN0b20KICAgICA+OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNv
Y29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5oCmluZGV4IDc5ZjA0MWYyYjNkZjUwMDEzNGJmZTI1YWNkMTBmNDdiZTU2
YjI3YzEuLjk5MjJmNDhmYjcwZDA5Y2UwOGY2MmY0ZDFhMzdiMzg0OTU5MThlZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaApAQCAtMTc2LDggKzE3Niw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFNjcm9sbGluZ05vZGVJRChTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKSBvdmVycmlk
ZSB7IG1fc2Nyb2xsaW5nTm9kZUlEID0gbm9kZUlEOyB9CiAjZW5kaWYKIAotICAgIEdyYXBoaWNz
TGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEKCkgY29uc3Qgb3ZlcnJpZGU7Ci0K
ICAgICBUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIG92ZXJyaWRlOwogCiAgICAgUmVmPFBs
YXRmb3JtQ0FMYXllcj4gY2xvbmUoUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCmluZGV4IDg4YzVhMzNk
ODY3YzllNjY1MzBhYmY2MzRjNTBiYjY0ZmRlMWExZGUuLjI4ODQ2ZjZiOTE1NjExYjkyZWY3NDBk
OTNhOTgxZDAwMDNhNWI2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBA
IC0yMzQsNyArMjM0LDYgQEAgUGxhdGZvcm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNv
Y29hKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckMKICAgICBjYXNlIExheWVy
VHlwZVNjcm9sbENvbnRhaW5lckxheWVyOgogICAgICAgICAvLyBTY3JvbGwgY29udGFpbmVyIGxh
eWVycyBvbmx5IGhhdmUgc3BlY2lhbCBiZWhhdmlvciB3aXRoIFBsYXRmb3JtQ0FMYXllclJlbW90
ZS4KICAgICAgICAgLy8gZmFsbHRocm91Z2gKLSAgICBjYXNlIExheWVyVHlwZUVkaXRhYmxlSW1h
Z2VMYXllcjoKICAgICBjYXNlIExheWVyVHlwZVdlYkxheWVyOgogICAgICAgICBsYXllckNsYXNz
ID0gW1dlYkxheWVyIGNsYXNzXTsKICAgICAgICAgYnJlYWs7CkBAIC0xMDM5LDEyICsxMDM4LDYg
QEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0RXZlbnRSZWdpb24oY29uc3QgRXZlbnRS
ZWdpb24mIGV2ZW50UmVnaW9uKQogICAgIG1fZXZlbnRSZWdpb24gPSBldmVudFJlZ2lvbjsKIH0K
IAotR3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmVt
YmVkZGVkVmlld0lEKCkgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gMDsKLX0KLQogc3RhdGljIE5TU3RyaW5nICpsYXllckNvbnRlbnRzRm9ybWF0KGJvb2wg
YWNjZWxlcmF0ZXNEcmF3aW5nLCBib29sIHdhbnRzRGVlcENvbG9yLCBib29sIHN1cHBvcnRzU3Vi
cGl4ZWxBbnRpYWxpYXNlZEZvbnRzKQogewogI2lmIEhBVkUoSU9TVVJGQUNFX1JHQjEwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggNDEwNDljMmQ3N2JiZDY1
YTZkZGI5OWFjM2M5ODY1NjIxYTRhM2I4NS4uZTE2YTgxZTdlZTM3ZGQzYjczNDQwMzk3Yjk4NDMx
NDYyYTdjOWNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBA
IC0yMTIsMjQgKzIxMiw2IEBAIEltYWdlU2l6ZUNoYW5nZVR5cGUgUmVuZGVySW1hZ2U6OnNldElt
YWdlU2l6ZUZvckFsdFRleHQoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlIC8qCiAgICAgcmV0dXJuIElt
YWdlU2l6ZUNoYW5nZUZvckFsdFRleHQ7CiB9CiAKLWJvb2wgUmVuZGVySW1hZ2U6OmlzRWRpdGFi
bGVJbWFnZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFlbGVtZW50KCkgfHwgIWlzPEhUTUxJbWFnZUVs
ZW1lbnQ+KGVsZW1lbnQoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZG93
bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKS0+aGFzRWRpdGFibGVJbWFnZUF0dHJp
YnV0ZSgpOwotfQotICAgIAotYm9vbCBSZW5kZXJJbWFnZTo6cmVxdWlyZXNMYXllcigpIGNvbnN0
Ci17Ci0gICAgaWYgKFJlbmRlclJlcGxhY2VkOjpyZXF1aXJlc0xheWVyKCkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIAotICAgIGlmIChpc0VkaXRhYmxlSW1hZ2UoKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIFJlbmRlckltYWdl
OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxl
JiBuZXdTdHlsZSkKIHsKICAgICBpZiAoIWhhc0luaXRpYWxpemVkU3R5bGUoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggNTFiMDdiMDRhNzFhNTRmMzY2OWUyMzc5
YjEzNThhYTcyZjEwMzY5MS4uOWQyNzlhNTcwZDFmNDhkNzI1OGVkOTQzOTAyYmUyOTExODg3NjMx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTc4LDggKzc4LDYg
QEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNOb25CaXRtYXBJbWFnZSgpIGNvbnN0OwogCi0gICAg
Ym9vbCBpc0VkaXRhYmxlSW1hZ2UoKSBjb25zdDsKLQogcHJvdGVjdGVkOgogICAgIHZvaWQgd2ls
bEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKQEAgLTEwOSw4ICsxMDcsNiBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBpc0ltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IGJvb2wgaXNSZW5kZXJJbWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICAK
LSAgICBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgcGFp
bnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogICAg
IHZvaWQgcGFpbnRJbmNvbXBsZXRlSW1hZ2VPdXRsaW5lKFBhaW50SW5mbyYsIExheW91dFBvaW50
LCBMYXlvdXRVbml0KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCmluZGV4IDk5ZTgyNGQxMzU3MDYzOWUzZTRkNDQzYzk2NWYxNDRlOWQ0OGY0NDYuLmZkMDJi
NTFhMTI2YTAzMDI5MjcyZjNmZDE4YTg1MWYyMGViZDA4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNjA3LDcgKzYwNyw2IEBAIGJvb2wgUmVuZGVyTGF5
ZXI6OnNob3VsZEJlTm9ybWFsRmxvd09ubHkoKSBjb25zdAogICAgICAgICB8fCByZW5kZXJlcigp
LmlzVmlkZW8oKQogICAgICAgICB8fCByZW5kZXJlcigpLmlzRW1iZWRkZWRPYmplY3QoKQogICAg
ICAgICB8fCByZW5kZXJlcigpLmlzUmVuZGVySUZyYW1lKCkKLSAgICAgICAgfHwgKHJlbmRlcmVy
KCkuaXNSZW5kZXJJbWFnZSgpICYmIGRvd25jYXN0PFJlbmRlckltYWdlPihyZW5kZXJlcigpKS5p
c0VkaXRhYmxlSW1hZ2UoKSkKICAgICAgICAgfHwgKHJlbmRlcmVyKCkuc3R5bGUoKS5zcGVjaWZp
ZXNDb2x1bW5zKCkgJiYgIWlzUmVuZGVyVmlld0xheWVyKCkpCiAgICAgICAgIHx8IHJlbmRlcmVy
KCkuaXNJbkZsb3dSZW5kZXJGcmFnbWVudGVkRmxvdygpOwogfQpAQCAtNjUxNiw3ICs2NTE1LDYg
QEAgYm9vbCBSZW5kZXJMYXllcjo6c2hvdWxkQmVTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0CiAg
ICAgICAgIHx8IHJlbmRlcmVyKCkuaXNDYW52YXMoKQogICAgICAgICB8fCByZW5kZXJlcigpLmlz
VmlkZW8oKQogICAgICAgICB8fCByZW5kZXJlcigpLmlzRW1iZWRkZWRPYmplY3QoKQotICAgICAg
ICB8fCAocmVuZGVyZXIoKS5pc1JlbmRlckltYWdlKCkgJiYgZG93bmNhc3Q8UmVuZGVySW1hZ2U+
KHJlbmRlcmVyKCkpLmlzRWRpdGFibGVJbWFnZSgpKQogICAgICAgICB8fCByZW5kZXJlcigpLmlz
UmVuZGVySUZyYW1lKCkKICAgICAgICAgfHwgcmVuZGVyZXIoKS5pc0luRmxvd1JlbmRlckZyYWdt
ZW50ZWRGbG93KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCmluZGV4IDIxMjg4ZjZkODhlY2NkYmRhOTU2ODEyYWYyYzgwYTg5NDBmZmUz
MjEuLmVjZmY1ZDI0MzUxZTI5MzU4MjcxYjU5NjQzMDQ3YTkxOGRkOTgwOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xMDY5LDE0
ICsxMDY5LDYgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24o
Y29uc3QgUmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5jZXMKICAgICAgICAgdXBkYXRlQ29udGVu
dHNSZWN0cygpOwogICAgIH0KIAotICAgIGlmIChpczxSZW5kZXJJbWFnZT4ocmVuZGVyZXIoKSkg
JiYgZG93bmNhc3Q8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKCkpLmlzRWRpdGFibGVJbWFnZSgpKSB7
Ci0gICAgICAgIGF1dG8gZWxlbWVudCA9IHJlbmRlcmVyKCkuZWxlbWVudCgpOwotICAgICAgICBp
ZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkpIHsKLSAgICAgICAgICAgIG1fZ3JhcGhp
Y3NMYXllci0+c2V0Q29udGVudHNUb0VtYmVkZGVkVmlldyhHcmFwaGljc0xheWVyOjpDb250ZW50
c0xheWVyRW1iZWRkZWRWaWV3VHlwZTo6RWRpdGFibGVJbWFnZSwgZG93bmNhc3Q8SFRNTEltYWdl
RWxlbWVudD4oZWxlbWVudCktPmVkaXRhYmxlSW1hZ2VWaWV3SUQoKSk7Ci0gICAgICAgICAgICBs
YXllckNvbmZpZ0NoYW5nZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgaWYgKGxh
eWVyQ29uZmlnQ2hhbmdlZCkKICAgICAgICAgdXBkYXRlUGFpbnRpbmdQaGFzZXMoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApp
bmRleCBhMmI1OGU2NjY5MDY4NWZjZTZiMWE4ODM0OWM3ZmYzY2U2ODUyMjZhLi5jZTlhZGRmODgw
Mzc3NWFlOTY1MmZiODJiM2EyNzM4ODQ1MzBhY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMjQzOCw3ICsyNDM4LDYg
QEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcihj
b25zdCBSZW5kZXJMYXllciYgbGF5ZXIsIFIKICAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGlu
Z0ZvclZpZGVvKHJlbmRlcmVyKQogICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yRnJh
bWUocmVuZGVyZXIsIHF1ZXJ5RGF0YSkKICAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0Zv
clBsdWdpbihyZW5kZXJlciwgcXVlcnlEYXRhKQotICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0
aW5nRm9yRWRpdGFibGVJbWFnZShyZW5kZXJlcikKICAgICAgICAgfHwgcmVxdWlyZXNDb21wb3Np
dGluZ0Zvck92ZXJmbG93U2Nyb2xsaW5nKCpyZW5kZXJlci5sYXllcigpLCBxdWVyeURhdGEpOwog
fQogCkBAIC0yNDk5LDcgKzI0OTgsNiBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVx
dWlyZXNPd25CYWNraW5nU3RvcmUoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyLCBjbwogICAgICAg
ICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yVmlkZW8ocmVuZGVyZXIpCiAgICAgICAgIHx8IHJl
cXVpcmVzQ29tcG9zaXRpbmdGb3JGcmFtZShyZW5kZXJlciwgcXVlcnlEYXRhKQogICAgICAgICB8
fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yUGx1Z2luKHJlbmRlcmVyLCBxdWVyeURhdGEpCi0gICAg
ICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JFZGl0YWJsZUltYWdlKHJlbmRlcmVyKQogICAg
ICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxpbmcobGF5ZXIsIHF1
ZXJ5RGF0YSkKICAgICAgICAgfHwgbmVlZHNDb250ZW50c0NvbXBvc2l0aW5nTGF5ZXIobGF5ZXIp
CiAgICAgICAgIHx8IHJlbmRlcmVyLmlzVHJhbnNwYXJlbnQoKQpAQCAtMjU1MSw4ICsyNTQ5LDYg
QEAgT3B0aW9uU2V0PENvbXBvc2l0aW5nUmVhc29uPiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJl
YXNvbnNGb3JDb21wb3NpdGluZyhjb25zdAogICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGlu
Z1JlYXNvbjo6UGx1Z2luKTsKICAgICBlbHNlIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yRnJh
bWUocmVuZGVyZXIsIHF1ZXJ5RGF0YSkpCiAgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5n
UmVhc29uOjpJRnJhbWUpOwotICAgIGVsc2UgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JFZGl0
YWJsZUltYWdlKHJlbmRlcmVyKSkKLSAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFz
b246OkVtYmVkZGVkVmlldyk7CiAKICAgICBpZiAoKGNhblJlbmRlcjNEVHJhbnNmb3JtcygpICYm
IHJlbmRlcmVyLnN0eWxlKCkuYmFja2ZhY2VWaXNpYmlsaXR5KCkgPT0gQmFja2ZhY2VWaXNpYmls
aXR5OjpIaWRkZW4pKQogICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6QmFj
a2ZhY2VWaXNpYmlsaXR5SGlkZGVuKTsKQEAgLTMwMzcsMTggKzMwMzMsNiBAQCBib29sIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBsdWdpbihSZW5kZXJMYXll
ck1vZGVsT2JqZWN0JgogICAgIHJldHVybiAoY29udGVudEJveC5oZWlnaHQoKSAqIGNvbnRlbnRC
b3gud2lkdGgoKSA+IDEpOwogfQogICAgIAotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJl
cXVpcmVzQ29tcG9zaXRpbmdGb3JFZGl0YWJsZUltYWdlKFJlbmRlckxheWVyTW9kZWxPYmplY3Qm
IHJlbmRlcmVyKSBjb25zdAotewotICAgIGlmICghcmVuZGVyZXIuaXNSZW5kZXJJbWFnZSgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiBpbWFnZSA9IGRvd25jYXN0PFJlbmRl
ckltYWdlPihyZW5kZXJlcik7Ci0gICAgaWYgKCFpbWFnZS5pc0VkaXRhYmxlSW1hZ2UoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGJvb2wgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yRnJhbWUoUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCYgcmVuZGVyZXIsIFJlcXVpcmVzQ29tcG9zaXRpbmdEYXRhJiBxdWVyeURhdGEp
IGNvbnN0CiB7CiAgICAgaWYgKCFpczxSZW5kZXJXaWRnZXQ+KHJlbmRlcmVyKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAppbmRleCA3YTg1
YjI2OTZjNjhhYTQwZDQyODFmM2JjMjJjNmJjZDZiODgwMDVhLi4zNGVhNTg3NTdiZjdjNWJmYzk5
N2MwNDFjODhlNWMzOGI4NzUxNTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC04Myw3ICs4Myw2IEBAIGVudW0gY2xhc3MgQ29t
cG9zaXRpbmdSZWFzb24gewogICAgIFdpbGxDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMSA8PCAyNCwKICAgICBSb290ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDEgPDwgMjUsCiAgICAgSXNvbGF0ZXNDb21wb3NpdGVkQmxlbmRpbmdEZXNjZW5kYW50cyAg
PSAxIDw8IDI2LAotICAgIEVtYmVkZGVkVmlldyAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
MSA8PCAyNywKIH07CiAKIGVudW0gY2xhc3MgU2Nyb2xsQ29vcmRpbmF0aW9uUm9sZSB7CkBAIC00
OTgsNyArNDk3LDYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JT
Y3JvbGxhYmxlRnJhbWUoUmVxdWlyZXNDb21wb3NpdGluZ0RhdGEmKSBjb25zdDsKICAgICBib29s
IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihSZW5kZXJMYXllck1vZGVsT2JqZWN0Jiwg
Y29uc3QgUmVuZGVyTGF5ZXImLCBSZXF1aXJlc0NvbXBvc2l0aW5nRGF0YSYpIGNvbnN0OwogICAg
IGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsaW5nKGNvbnN0IFJlbmRl
ckxheWVyJiwgUmVxdWlyZXNDb21wb3NpdGluZ0RhdGEmKSBjb25zdDsKLSAgICBib29sIHJlcXVp
cmVzQ29tcG9zaXRpbmdGb3JFZGl0YWJsZUltYWdlKFJlbmRlckxheWVyTW9kZWxPYmplY3QmKSBj
b25zdDsKICAgICBJbmRpcmVjdENvbXBvc2l0aW5nUmVhc29uIGNvbXB1dGVJbmRpcmVjdENvbXBv
c2l0aW5nUmVhc29uKGNvbnN0IFJlbmRlckxheWVyJiwgYm9vbCBoYXNDb21wb3NpdGVkRGVzY2Vu
ZGFudHMsIGJvb2wgaGFzM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnRzLCBib29sIHBhaW50c0ludG9Q
cm92aWRlZEJhY2tpbmcpIGNvbnN0OwogCiAgICAgc3RhdGljIFNjcm9sbFBvc2l0aW9uaW5nQmVo
YXZpb3IgbGF5ZXJTY3JvbGxCZWhhaGF2aW9yUmVsYXRpdmVUb0NvbXBvc2l0ZWRBbmNlc3Rvcihj
b25zdCBSZW5kZXJMYXllciYsIGNvbnN0IFJlbmRlckxheWVyJiBjb21wb3NpdGVkQW5jZXN0b3Ip
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDc1MDk3N2E4ZDRiODljMjAzYjRkMzQz
MzgwNDhlYTNiYTBiNmZlOGQuLjI0OGE2ZDZjYzMxMDRhODdlNzM4YjhkMzlmODdiYTZkMDJlZDI5
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE1MCw3ICsxNTAsNiBAQCBNRVNT
QUdFX1JFQ0VJVkVSUyA9IFwKIAlVSVByb2Nlc3MvV2ViUGFnZVByb3h5IFwKIAlVSVByb2Nlc3Mv
VmlzaXRlZExpbmtTdG9yZSBcCiAJVUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVw
ZGF0ZVByb3ZpZGVyUHJveHkgXAotCVVJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xs
ZXIgXAogCVVJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciBcCiAJVUlQ
cm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5IFwKIAlVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9z
L1BlbmNpbEtpdFNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1BlbmNpbEtp
dFNQSS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzQ0OTFjZWE1NTdhOTc1N2E3
ZGQ0ZTE4Mzc5Yzg5YjU2MTMxZDdjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9QZW5jaWxLaXRTUEku
aAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgSEFWRShQ
RU5DSUxLSVQpCi0KLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotCi0jaW1wb3J0IDxQZW5j
aWxLaXQvUGVuY2lsS2l0Lmg+Ci0jaW1wb3J0IDxQZW5jaWxLaXQvUEtDYW52YXNWaWV3X1ByaXZh
dGUuaD4KLSNpbXBvcnQgPFBlbmNpbEtpdC9QS0RyYXdpbmdfUHJpdmF0ZS5oPgotI2ltcG9ydCA8
UGVuY2lsS2l0L1BLSW1hZ2VSZW5kZXJlci5oPgotI2ltcG9ydCA8UGVuY2lsS2l0L1BLU3Ryb2tl
Lmg+Ci0KLSNlbHNlCi0KLSNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+Ci0KLUBjbGFzcyBQS0NhbnZh
c1ZpZXc7Ci1AY2xhc3MgUEtEcmF3aW5nOwotQGNsYXNzIFBLSW5rOwotQGNsYXNzIFBLSW5saW5l
SW5rUGlja2VyOwotCi10eXBlZGVmIE5TU3RyaW5nICogUEtJbmtJZGVudGlmaWVyOwotCi1AcHJv
dG9jb2wgUEtDYW52YXNWaWV3RGVsZWdhdGUKLUBvcHRpb25hbAotLSAodm9pZClkcmF3aW5nRGlk
Q2hhbmdlOihQS0NhbnZhc1ZpZXcgKiljYW52YXNWaWV3OwotQGVuZAotCi1AcHJvdG9jb2wgUEtJ
bmxpbmVJbmtQaWNrZXJEZWxlZ2F0ZSA8TlNPYmplY3Q+Ci1Ab3B0aW9uYWwKLS0gKHZvaWQpaW5s
aW5lSW5rUGlja2VyOihQS0lubGluZUlua1BpY2tlciAqKWlubGluZUlua1BpY2tlciBkaWRTZWxl
Y3RUb29sOihQS0lua0lkZW50aWZpZXIpaWRlbnRpZmVyOwotLSAodm9pZClpbmxpbmVJbmtQaWNr
ZXJEaWRUb2dnbGVSdWxlcjooUEtJbmxpbmVJbmtQaWNrZXIgKilpbmxpbmVJbmtQaWNrZXI7Ci0t
ICh2b2lkKWlubGluZUlua1BpY2tlcjooUEtJbmxpbmVJbmtQaWNrZXIgKilpbmxpbmVJbmtQaWNr
ZXIgZGlkU2VsZWN0Q29sb3I6KFVJQ29sb3IgKiljb2xvcjsKLS0gKFVJVmlld0NvbnRyb2xsZXIg
Kil2aWV3Q29udHJvbGxlckZvclBvcG92ZXJQcmVzZW50YXRpb25Gcm9tSW5saW5lSW5rUGlja2Vy
OihQS0lubGluZUlua1BpY2tlciAqKWlubGluZUlua1BpY2tlcjsKLUBlbmQKLQotQGludGVyZmFj
ZSBQS0NhbnZhc1ZpZXcgOiBVSVZpZXcKLQotQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1p
c0ZpbmdlckRyYXdpbmdFbmFibGVkKSBCT09MIGZpbmdlckRyYXdpbmdFbmFibGVkOwotQHByb3Bl
cnR5IChub25hdG9taWMpIEJPT0wgcnVsZXJFbmFibGVkOwotQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHkpIFBLRHJhd2luZyAqZHJhd2luZzsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcp
IFBLSW5rICppbms7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgTlNPYmplY3Q8UEtDYW52
YXNWaWV3RGVsZWdhdGU+ICpkcmF3aW5nRGVsZWdhdGU7Ci0KLUBlbmQKLQotQGludGVyZmFjZSBQ
S0lubGluZUlua1BpY2tlciA6IFVJQ29udHJvbAotCi1AcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSkgUEtJbmsgKnNlbGVjdGVkSW5rOwotLSAodm9pZClzZXRTZWxlY3RlZEluazooUEtJbmsgKilz
ZWxlY3RlZEluayBhbmltYXRlZDooQk9PTClhbmltYXRlZDsKLUBwcm9wZXJ0eSAobm9uYXRvbWlj
LCB3ZWFrKSBpZDxQS0lubGluZUlua1BpY2tlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKLQotQGVuZAot
Ci1AaW50ZXJmYWNlIFBLRHJhd2luZyA6IE5TT2JqZWN0Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0
V2l0aERhdGE6KE5TRGF0YSAqKWRhdGEgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3I7Ci0tIChOU0Rh
dGEgKilzZXJpYWxpemU7Ci0KLUBlbmQKLQotQGludGVyZmFjZSBQS0ltYWdlUmVuZGVyZXIgOiBO
U09iamVjdAotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTaXplOihDR1NpemUpc2l6ZSBzY2Fs
ZTooQ0dGbG9hdClzY2FsZSByZW5kZXJRdWV1ZTooZGlzcGF0Y2hfcXVldWVfdClyZW5kZXJRdWV1
ZTsKLS0gKHZvaWQpcmVuZGVyRHJhd2luZzooUEtEcmF3aW5nICopZHJhd2luZyBjb21wbGV0aW9u
Oih2b2lkKF4pKFVJSW1hZ2UgKmltYWdlKSljb21wbGV0aW9uQmxvY2s7Ci0KLUBlbmQKLQotI2Vu
ZGlmCi0KLSNlbmRpZiAvLyBIQVZFKFBFTkNJTEtJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5jcHAKaW5kZXggMjQ3ZWFhYjk1NmZjOTM1
YTZiM2M1MGUxNmQ2YTU1MGQ5ZTFhNDRlZi4uOTg2M2IyZGRmMmQ5NzBlYWQyNjIwNjI2NDQxZjdl
YjI1NWNjMTE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbi5jcHAKQEAgLTk4LDcgKzk4LDYgQEAgdm9pZCBGb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29k
ZXIgPDwgcGxhY2Vob2xkZXI7CiAgICAgZW5jb2RlciA8PCBsYWJlbDsKICAgICBlbmNvZGVyIDw8
IGFyaWFMYWJlbDsKLSAgICBlbmNvZGVyIDw8IGVtYmVkZGVkVmlld0lEOwogICAgIGVuY29kZXIg
PDwgZm9jdXNlZEVsZW1lbnRJZGVudGlmaWVyOwogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5U
KQogICAgIGVuY29kZXIgPDwgaGFzU3VnZ2VzdGlvbnM7CkBAIC0yMjAsOSArMjE5LDYgQEAgYm9v
bCBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBGb2N1c2VkRWxlbWVudEluZm8KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5hcmlh
TGFiZWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5lbWJlZGRlZFZpZXdJRCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmZvY3VzZWRFbGVtZW50SWRlbnRpZmllcikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbi5oCmluZGV4IDQzYjNlNzY0ZDNkOWQxZTcxODc2N2NiZDQwN2VhNDQx
MmJjNzU3YmIuLmVmM2ZjYjBiMjFjOGM5NmIzMTM3ZjJlZWUxYmVhZWI2OWY3MGM1ZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Gb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmgKQEAg
LTEzMyw3ICsxMzMsNiBAQCBzdHJ1Y3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiB7CiAgICAg
U3RyaW5nIHBsYWNlaG9sZGVyOwogICAgIFN0cmluZyBsYWJlbDsKICAgICBTdHJpbmcgYXJpYUxh
YmVsOwotICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVk
Vmlld0lEOwogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIGJvb2wgaGFzU3VnZ2Vz
dGlvbnMgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDM3YTk1YzE1MzBmOTAxMTJmNWVlYjM4MTdmYTQzMzMx
YTk3YzcyYjEuLjAxMGNhMmM1YWI1MmRhZGM5NTMwZTU1Mjg1Y2JkZDM1YzFhMDMwYzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJh
Y2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTM1Miw3ICszNTIsNiBAQCB2b2lkIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgQwogICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZVNoYXBlTGF5ZXI6CiAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZVNjcm9sbENvbnRhaW5lckxheWVyOgotICAgIGNhc2UgV2ViQ29yZTo6UGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVFZGl0YWJsZUltYWdlTGF5ZXI6CiAgICAgY2FzZSBXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24uaAppbmRleCBkZmJmYWIyNGE0MDBjOGMxOGY3YjI4M2NmY2I2NzFmYzlmNWJhZjYwLi4wMTI0
OTRlYmYyNTAzZjYzZTBkNWE3M2VhZWUyYTA0M2JmMjdhMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24uaApAQCAtMTA1LDggKzEwNSw2IEBAIHB1YmxpYzoKICAgICAgICAgV2Vi
Q29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVySUQ7CiAgICAgICAgIFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIHR5cGU7CiAKLSAgICAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQ7Ci0KICAgICAg
ICAgdWludDMyX3QgaG9zdGluZ0NvbnRleHRJRDsKICAgICAgICAgZmxvYXQgaG9zdGluZ0Rldmlj
ZVNjYWxlRmFjdG9yOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0K
aW5kZXggMWU3N2E3NzE2MzdlMDc1ZjM5YTdmOTZhMDFhY2IzNDQ4ZjllOTY3ZS4uZGM5OWNkMTY5
ZTE0NDdhMDQzOTIzNTY5MGExNTI2NmI2MWE5MGFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5tbQpAQCAtNDUsNyArNDUsNiBAQCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
biYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Om9wZXJhdG9yPShSZW1vdGVMYXllclRyZQog
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzOjpMYXll
ckNyZWF0aW9uUHJvcGVydGllcygpCiAgICAgOiBsYXllcklEKDApCiAgICAgLCB0eXBlKFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXIpCi0gICAgLCBlbWJlZGRlZFZpZXdJ
RCgwKQogICAgICwgaG9zdGluZ0NvbnRleHRJRCgwKQogICAgICwgaG9zdGluZ0RldmljZVNjYWxl
RmFjdG9yKDEpCiB7CkBAIC01NSw3ICs1NCw2IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlCiB7
CiAgICAgZW5jb2RlciA8PCBsYXllcklEOwogICAgIGVuY29kZXIgPDwgdHlwZTsKLSAgICBlbmNv
ZGVyIDw8IGVtYmVkZGVkVmlld0lEOwogICAgIGVuY29kZXIgPDwgaG9zdGluZ0NvbnRleHRJRDsK
ICAgICBlbmNvZGVyIDw8IGhvc3RpbmdEZXZpY2VTY2FsZUZhY3RvcjsKIH0KQEAgLTY5LDkgKzY3
LDYgQEAgYXV0byBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3Bl
cnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC50eXBlKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LmVtYmVkZGVkVmlld0lEKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmhvc3RpbmdDb250ZXh0
SUQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCA0NDhiYzkyMWI2NDIwYTJiYjBiMzQ0ZjM3ZmQxMDFk
YzQ4NGYwNjA5Li4xNWY1MDAwOTc4ZTU4ZGMyNzVkODkwNGNhYTE2OTQ0ZmU2NmZlYTcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTEzMzAsMTAgKzEzMzAs
NiBAQCBWaWRlb1F1YWxpdHlJbmNsdWRlc0Rpc3BsYXlDb21wb3NpdGluZ0VuYWJsZWQ6CiAgIGRl
ZmF1bHRWYWx1ZTogZmFsc2UKICAgY29uZGl0aW9uOiBFTkFCTEUoVklERU8pCiAKLUVkaXRhYmxl
SW1hZ2VzRW5hYmxlZDoKLSAgdHlwZTogYm9vbAotICBkZWZhdWx0VmFsdWU6IGZhbHNlCi0KIFNo
b3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3OgogICBkZWZhdWx0
VmFsdWU6IGZhbHNlCiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA1NmY0
NTY5ZGIxZDNiYjQyMGRkMWZkNWNmMWZiMzM2MDM2NDdmNTRlLi4yM2VkNGYwMmNiODE3ODJhYzFl
M2ExZWZhNTRmMzY0MjAyYTcwZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00NDIsMTAg
KzQ0Miw4IEBAIFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVySU9TLm1tCiAKIFVJUHJvY2Vzcy9pb3MvQXBwS2l0U29mdExpbmsubW0KIFVJUHJvY2Vz
cy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCi1VSVByb2Nlc3MvaW9zL0VkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvaW9zL0lucHV0Vmlld1VwZGF0ZURlZmVycmVy
Lm1tCiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCi1VSVByb2Nlc3MvaW9zL1Bl
bmNpbEtpdFNvZnRMaW5rLm1tCiBVSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0K
IFVJUHJvY2Vzcy9pb3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlSU9T
Lm1tCiBVSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0KQEAgLTQ2
MCw4ICs0NTgsNiBAQCBVSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmll
dy5tbQogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tIEBuby11bmlmeQogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gQG5vLXVuaWZ5CiBVSVByb2Nlc3MvaW9z
L1dLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIubW0KLVVJUHJvY2Vzcy9pb3MvV0tEcmF3aW5n
Q29vcmRpbmF0b3IubW0KLVVJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5tbQogVUlQcm9jZXNz
L2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TT2JqQ1NlY3VyaXR5T3JpZ2luLm1tCiBVSVByb2Nlc3MvaW9zL1dLSGln
aGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIubW0KQEAgLTY1Nyw3ICs2NTMsNiBAQCBX
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLm1tIEBuby11bmlmeQogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvci5tbQogCiAvLyBEZXJpdmVkIFNvdXJjZXMKLUVkaXRhYmxl
SW1hZ2VDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcAogR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKIEdQVVByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcAogR1BVUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYjFkNDEyNDFiNTli
ODFkNDlhZDYzNmUxMzUzNmZmN2JiNTQ3ODM4NC4uY2U1MTRiOTIxMWM0OGE2MjhiYTdjNmI2Y2Zk
NTUyMGU1OThhNjJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCkBAIC01MTQsNyArNTE0LDYgQEAgLSAodm9pZClfc2V0dXBQYWdlQ29uZmln
dXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JilwYWdlQ29uZmlndXJhdGlvbgog
CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldENvbG9yRmlsdGVyRW5h
YmxlZCghIVtfY29uZmlndXJhdGlvbiBfY29sb3JGaWx0ZXJFbmFibGVkXSk7CiAKLSAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0RWRpdGFibGVJbWFnZXNFbmFibGVkKCEh
W19jb25maWd1cmF0aW9uIF9lZGl0YWJsZUltYWdlc0VuYWJsZWRdKTsKICAgICBwYWdlQ29uZmln
dXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+c2V0VW5kb01hbmFnZXJBUElFbmFibGVkKCEhW19jb25m
aWd1cmF0aW9uIF91bmRvTWFuYWdlckFQSUVuYWJsZWRdKTsKIAogI2lmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCA0OWFlZTZlYjQ2M2Y4
Y2Y2OGEwNmE2OWU2Nzg5NGE3OWExMmE4MGIxLi44MzY5M2NiZmY0NjkxYzQxMDJkZWU2MjM1Y2Ux
NTZlMDVkZmJjODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtMTczLDcgKzE3Myw2IEBA
IEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXdDb25maWd1cmF0aW9uIHsKICAgICBCT09MIF9pbmNv
bXBsZXRlSW1hZ2VCb3JkZXJFbmFibGVkOwogICAgIEJPT0wgX3Nob3VsZERlZmVyQXN5bmNocm9u
b3VzU2NyaXB0c1VudGlsQWZ0ZXJEb2N1bWVudExvYWQ7CiAgICAgQk9PTCBfZHJhd3NCYWNrZ3Jv
dW5kOwotICAgIEJPT0wgX2VkaXRhYmxlSW1hZ2VzRW5hYmxlZDsKICAgICBCT09MIF91bmRvTWFu
YWdlckFQSUVuYWJsZWQ7CiAKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9tZWRpYUNvbnRlbnRU
eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDsKQEAgLTI2OSw3ICsyNjgsNiBAQCAtIChpbnN0
YW5jZXR5cGUpaW5pdAogICAgIF9zaG91bGREZWZlckFzeW5jaHJvbm91c1NjcmlwdHNVbnRpbEFm
dGVyRG9jdW1lbnRMb2FkID0gWUVTOwogICAgIF9kcmF3c0JhY2tncm91bmQgPSBZRVM7CiAKLSAg
ICBfZWRpdGFibGVJbWFnZXNFbmFibGVkID0gTk87CiAgICAgX3VuZG9NYW5hZ2VyQVBJRW5hYmxl
ZCA9IE5POwogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKQEAgLTQ0Niw3ICs0NDQsNiBAQCAtIChp
ZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKICAgICBjb25maWd1cmF0aW9uLT5fc2hvdWxk
RGVmZXJBc3luY2hyb25vdXNTY3JpcHRzVW50aWxBZnRlckRvY3VtZW50TG9hZCA9IHNlbGYtPl9z
aG91bGREZWZlckFzeW5jaHJvbm91c1NjcmlwdHNVbnRpbEFmdGVyRG9jdW1lbnRMb2FkOwogICAg
IGNvbmZpZ3VyYXRpb24tPl9kcmF3c0JhY2tncm91bmQgPSBzZWxmLT5fZHJhd3NCYWNrZ3JvdW5k
OwogCi0gICAgY29uZmlndXJhdGlvbi0+X2VkaXRhYmxlSW1hZ2VzRW5hYmxlZCA9IHNlbGYtPl9l
ZGl0YWJsZUltYWdlc0VuYWJsZWQ7CiAgICAgY29uZmlndXJhdGlvbi0+X3VuZG9NYW5hZ2VyQVBJ
RW5hYmxlZCA9IHNlbGYtPl91bmRvTWFuYWdlckFQSUVuYWJsZWQ7CiAKICAgICByZXR1cm4gY29u
ZmlndXJhdGlvbjsKQEAgLTExODgsMTYgKzExODUsNiBAQCAtIChCT09MKV9hbGxvd01lZGlhQ29u
dGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjawogICAgIHJldHVybiBf
YWxsb3dNZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2s7
CiB9CiAKLS0gKHZvaWQpX3NldEVkaXRhYmxlSW1hZ2VzRW5hYmxlZDooQk9PTCllbmFibGVkCi17
Ci0gICAgX2VkaXRhYmxlSW1hZ2VzRW5hYmxlZCA9IGVuYWJsZWQ7Ci19Ci0KLS0gKEJPT0wpX2Vk
aXRhYmxlSW1hZ2VzRW5hYmxlZAotewotICAgIHJldHVybiBfZWRpdGFibGVJbWFnZXNFbmFibGVk
OwotfQotCiAtICh2b2lkKV9zZXRVbmRvTWFuYWdlckFQSUVuYWJsZWQ6KEJPT0wpZW5hYmxlZAog
ewogICAgIF91bmRvTWFuYWdlckFQSUVuYWJsZWQgPSBlbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvblByaXZhdGUuaAppbmRleCA0NzhhZmIwZTVhZjZiYjg4YTgxZDk5Zjc1ZTUyZjhhZDMy
NThlZTBmLi45OTVlMjFkOGZlNTI1ZjYyMmM3MTI3YzFlZDk1OTJjOWFjZTRlN2VjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvblByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaApAQCAtMTIyLDcgKzEyMiw2IEBAIHR5cGVkZWYg
TlNfRU5VTShOU1VJbnRlZ2VyLCBfV0tXZWJWaWV3Q2F0ZWdvcnkpIHsKIC8vIFRoZSBpbnB1dCBv
ZiB0aGlzIFNQSSBpcyBhbiBhcnJheSBvZiBpbWFnZSBVVEkgKFVuaWZvcm0gVHlwZSBJZGVudGlm
aWVyKS4KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldEFkZGl0aW9uYWxT
dXBwb3J0ZWRJbWFnZVR5cGVzOikgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FkZGl0aW9uYWxTdXBw
b3J0ZWRJbWFnZVR5cGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4y
KSk7CiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEVkaXRhYmxlSW1hZ2VzRW5h
YmxlZDopIEJPT0wgX2VkaXRhYmxlSW1hZ2VzRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjE0LjQpLCBpb3MoMTIuMikpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0
VW5kb01hbmFnZXJBUElFbmFibGVkOikgQk9PTCBfdW5kb01hbmFnZXJBUElFbmFibGVkIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHNldHRlcj1fc2V0V2ViVmlld0NhdGVnb3J5OikgX1dLV2ViVmlld0NhdGVnb3J5IF93ZWJW
aWV3Q2F0ZWdvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldElnbm9yZXNBcHBCb3Vu
ZERvbWFpbnM6KSBCT09MIF9pZ25vcmVzQXBwQm91bmREb21haW5zIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MuaAppbmRleCBiYjk4ZDgxZjQ0NmI4NGY4MmI3
MzNkY2MyYWMxZTY3OGU4NzM5MmUyLi5mN2UyZTMzMWQxYTI0YWQxNmZhYmE4MmM3NzgyYjM4YjFl
ZjQ5OTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2Vi
Vmlld0lPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
SU9TLmgKQEAgLTEzMSw3ICsxMzEsNiBAQAogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIEJPT0wgX2lzQmFja2dyb3VuZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
Qk9PTCBfYWxsb3dzRG91YmxlVGFwR2VzdHVyZXM7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIEJPT0wgX3N0eWx1c1RhcEdlc3R1cmVTaG91bGRDcmVhdGVFZGl0YWJsZUltYWdlOwog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9oYXZlU2V0T2JzY3VyZWRJbnNl
dHM7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJRWRnZUluc2V0cyBfY29tcHV0
ZWRPYnNjdXJlZEluc2V0OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBVSUVkZ2VJ
bnNldHMgX2NvbXB1dGVkVW5vYnNjdXJlZFNhZmVBcmVhSW5zZXQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IGI4Nzg0NDYwYjQ4Yjdi
MGVhYjBmOWE5M2RkYzQzNTdhZmY0MzgyM2EuLjUxM2Q4ZGM0NzNmYTMxMDg0MzU5YjQ1MjdlZjI3
Mzc0MWViMmFiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3SU9TLm1tCkBAIC0xNDQsOSArMTQ0LDYgQEAgLSAodm9pZClfc2V0dXBTY3JvbGxBbmRD
b250ZW50Vmlld3MKICAgICAgICAgW19zY3JvbGxWaWV3IF9zZXRBdm9pZHNKdW1wT25JbnRlcnJ1
cHRlZEJvdW5jZTpZRVNdOwogICAgIH0KIAotICAgIGlmIChbX2NvbmZpZ3VyYXRpb24gX2VkaXRh
YmxlSW1hZ2VzRW5hYmxlZF0pCi0gICAgICAgIFtfc2Nyb2xsVmlldyBwYW5HZXN0dXJlUmVjb2du
aXplcl0uYWxsb3dlZFRvdWNoVHlwZXMgPSBAWyBAKFVJVG91Y2hUeXBlRGlyZWN0KSBdOwotCiAg
ICAgW3NlbGYgX3VwZGF0ZVNjcm9sbFZpZXdJbnNldEFkanVzdG1lbnRCZWhhdmlvcl07CiAKICAg
ICBbc2VsZiBhZGRTdWJ2aWV3Ol9zY3JvbGxWaWV3LmdldCgpXTsKQEAgLTE0NjAsMTEgKzE0NTcs
NiBAQCAtIChCT09MKV9hbGxvd3NEb3VibGVUYXBHZXN0dXJlcwogICAgIHJldHVybiAhV1RGOjph
cmVFc3NlbnRpYWxseUVxdWFsPGZsb2F0Pihjb250ZW50Wm9vbVNjYWxlKHNlbGYpLCBfaW5pdGlh
bFNjYWxlRmFjdG9yKTsKIH0KIAotLSAoQk9PTClfc3R5bHVzVGFwR2VzdHVyZVNob3VsZENyZWF0
ZUVkaXRhYmxlSW1hZ2UKLXsKLSAgICByZXR1cm4gW19jb25maWd1cmF0aW9uIF9lZGl0YWJsZUlt
YWdlc0VuYWJsZWRdOwotfQotCiAjcHJhZ21hIG1hcmsgVUlTY3JvbGxWaWV3RGVsZWdhdGUKIAog
LSAoQk9PTCl1c2VzU3RhbmRhcmRDb250ZW50VmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCmluZGV4IDhmMDExYWNmZjQzOGI5YmMyMTBiZGI1MTc1MWI0NWU2Nzg1NWRmNmYuLjI5
OTMwNzg1ZmVmZjMzNmMyNWZlOTkyZjAxZjFhYjVlMDVmNTIyYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTU3LDcgKzU3LDYgQEAgT0JKQ19DTEFTUyBOU01lbnU7CiBP
QkpDX0NMQVNTIE5TU2V0OwogT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiBPQkpDX0NM
QVNTIFVJR2VzdHVyZVJlY29nbml6ZXI7Ci1PQkpDX0NMQVNTIFdLRHJhd2luZ1ZpZXc7CiBPQkpD
X0NMQVNTIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogCiAjaWYgVVNFKEFQUEtJVCkKQEAgLTUz
NywxMCArNTM2LDYgQEAgcHVibGljOgogI2VuZGlmCiAjZW5kaWYKIAotI2lmIEhBVkUoUEVOQ0lM
S0lUKQotICAgIHZpcnR1YWwgUmV0YWluUHRyPFdLRHJhd2luZ1ZpZXc+IGNyZWF0ZURyYXdpbmdW
aWV3KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKSB7IHJldHVybiBudWxs
cHRyOyB9Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBj
YW5jZWxQb2ludGVyc0Zvckdlc3R1cmVSZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6ZXIqKSB7
IH0KICAgICB2aXJ0dWFsIFdURjo6T3B0aW9uYWw8dW5zaWduZWQ+IGFjdGl2ZVRvdWNoSWRlbnRp
ZmllckZvckdlc3R1cmVSZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6ZXIqKSB7IHJldHVybiBX
VEY6Om51bGxvcHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGE4ZTFlMDg1M2Jh
OTYyMmE4ZDhjNzhkNjMwMjFhMzY4MWU2Zjg0ZGIuLmU4YTMwNzhlNDgwZDIxMmQ0NmNkNjM4ZTI4
ZGQ5NWQyNWY4ZjgyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QuaApAQCAtMzMsNyArMzMs
NiBAQAogCiBPQkpDX0NMQVNTIENBQW5pbWF0aW9uOwogT0JKQ19DTEFTUyBXS0FuaW1hdGlvbkRl
bGVnYXRlOwotT0JKQ19DTEFTUyBXS0VtYmVkZGVkVmlldzsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKQEAgLTgwLDE2ICs3OSwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlTGF5ZXIoY29u
c3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJik7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IG1ha2VOb2RlKGNvbnN0
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllcyYpOwog
Ci0gICAgUmV0YWluUHRyPFdLRW1iZWRkZWRWaWV3PiBjcmVhdGVFbWJlZGRlZFZpZXcoY29uc3Qg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJik7Ci0K
ICAgICB2b2lkIGxheWVyV2lsbEJlUmVtb3ZlZChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0
Zm9ybUxheWVySUQpOwogCiAgICAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSogbV9k
cmF3aW5nQXJlYSB7IG51bGxwdHIgfTsKICAgICBSZW1vdGVMYXllclRyZWVOb2RlKiBtX3Jvb3RO
b2RlIHsgbnVsbHB0ciB9OwogICAgIEhhc2hNYXA8V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxh
dGZvcm1MYXllcklELCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4+IG1fbm9k
ZXM7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQs
IFJldGFpblB0cjxXS0FuaW1hdGlvbkRlbGVnYXRlPj4gbV9hbmltYXRpb25EZWxlZ2F0ZXM7Ci0g
ICAgSGFzaE1hcDxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCwgUmV0YWlu
UHRyPFdLRW1iZWRkZWRWaWV3Pj4gbV9lbWJlZGRlZFZpZXdzOwotICAgIEhhc2hNYXA8V2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklELCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
OjpFbWJlZGRlZFZpZXdJRD4gbV9sYXllclRvRW1iZWRkZWRWaWV3TWFwOwogICAgIGJvb2wgbV9p
c0RlYnVnTGF5ZXJUcmVlSG9zdCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVI
b3N0Lm1tCmluZGV4IDcyMTVmZTc3OTIzM2RmNzhmYTM5Yjc3NDZjNjhkMmU5ZWQ0ZGVmNjEuLmUy
NGE4ZmZlNGYzMDViY2Q0MDcwYTMxNmYyZWNjOWM5NDg3OGM2MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVIb3N0Lm1tCkBAIC0xNTAsMTIgKzE1MCw2IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlSG9z
dDo6bGF5ZXJXaWxsQmVSZW1vdmVkKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5
CiAgICAgICAgIG1fYW5pbWF0aW9uRGVsZWdhdGVzLnJlbW92ZShhbmltYXRpb25EZWxlZ2F0ZUl0
ZXIpOwogICAgIH0KIAotICAgIGF1dG8gZW1iZWRkZWRWaWV3SXRlciA9IG1fbGF5ZXJUb0VtYmVk
ZGVkVmlld01hcC5maW5kKGxheWVySUQpOwotICAgIGlmIChlbWJlZGRlZFZpZXdJdGVyICE9IG1f
bGF5ZXJUb0VtYmVkZGVkVmlld01hcC5lbmQoKSkgewotICAgICAgICBtX2VtYmVkZGVkVmlld3Mu
cmVtb3ZlKGVtYmVkZGVkVmlld0l0ZXItPnZhbHVlKTsKLSAgICAgICAgbV9sYXllclRvRW1iZWRk
ZWRWaWV3TWFwLnJlbW92ZShlbWJlZGRlZFZpZXdJdGVyKTsKLSAgICB9Ci0KICAgICBtX25vZGVz
LnJlbW92ZShsYXllcklEKTsKIH0KIApAQCAtMjE0LDggKzIwOCw2IEBAIHZvaWQgUmVtb3RlTGF5
ZXJUcmVlSG9zdDo6Y2xlYXJMYXllcnMoKQogICAgIH0KIAogICAgIG1fbm9kZXMuY2xlYXIoKTsK
LSAgICBtX2VtYmVkZGVkVmlld3MuY2xlYXIoKTsKLSAgICBtX2xheWVyVG9FbWJlZGRlZFZpZXdN
YXAuY2xlYXIoKTsKICAgICBtX3Jvb3ROb2RlID0gbnVsbHB0cjsKIH0KIApAQCAtMjY3LDcgKzI1
OSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRy
ZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZVBhZ2VUaWxlZEJhY2tpbmdMYXllcjoKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXllcjoKLSAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlRWRpdGFibGVJbWFnZUxheWVyOgogICAgICAgICByZXR1cm4gUmVtb3Rl
TGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIocHJvcGVydGllcy5sYXllcklEKTsK
IAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVt
b3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQppbmRleCA0YjhmMDg5OGJkNjVl
NDc5YmNiYWJjY2VmMTZjMzA3ZTNhNDA0Mjc0Li5lNDgwODVkMjI1ZDIyOTlkNTJiNzQ5ZGJlN2Fm
MzYwMzUzZGUwNWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1t
CkBAIC0yOCwxMSArMjgsOSBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotI2ltcG9y
dCAiRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHkuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVZpZXdzLmgiCiAjaW1w
b3J0ICJVSUtpdFNQSS5oIgotI2ltcG9ydCAiV0tEcmF3aW5nVmlldy5oIgogI2ltcG9ydCAiV2Vi
UGFnZVByb3h5LmgiCiAjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbFZpZXcuaD4KICNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgpAQCAtOTcsMzkgKzk1LDEyIEBAIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9k
ZShjb25zdCBSZW1vdGVMCiAgICAgICAgIC8vIFRoZSBkZWJ1ZyBpbmRpY2F0b3IgcGFyZW50cyB2
aWV3cyB1bmRlciBsYXllcnMsIHdoaWNoIGNhbiBjYXVzZSBjcmFzaGVzIHdpdGggVUlTY3JvbGxW
aWV3LgogICAgICAgICByZXR1cm4gbWFrZUFkb3B0aW5nVmlldyhbW1VJVmlldyBhbGxvY10gaW5p
dF0pOwogCi0gICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUVkaXRhYmxlSW1hZ2VM
YXllcjoKLSAgICAgICAgcmV0dXJuIG1ha2VXaXRoVmlldyhjcmVhdGVFbWJlZGRlZFZpZXcocHJv
cGVydGllcykpOwotCiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIH0KIAotUmV0YWluUHRyPFdLRW1iZWRk
ZWRWaWV3PiBSZW1vdGVMYXllclRyZWVIb3N0OjpjcmVhdGVFbWJlZGRlZFZpZXcoY29uc3QgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJiBwcm9wZXJ0
aWVzKQotewotICAgIGlmIChtX2lzRGVidWdMYXllclRyZWVIb3N0KQotICAgICAgICByZXR1cm4g
YWRvcHROUyhbW1VJVmlldyBhbGxvY10gaW5pdF0pOwotCi0gICAgYXV0byByZXN1bHQgPSBtX2Vt
YmVkZGVkVmlld3MuZW5zdXJlKHByb3BlcnRpZXMuZW1iZWRkZWRWaWV3SUQsIFsmXSgpIC0+IFJl
dGFpblB0cjxVSVZpZXc+IHsKLSAgICAgICAgc3dpdGNoIChwcm9wZXJ0aWVzLnR5cGUpIHsKLSNp
ZiBIQVZFKFBFTkNJTEtJVCkKLSAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZUVkaXRhYmxlSW1hZ2VMYXllcjogewotICAgICAgICAgICAgYXV0byBlZGl0YWJsZUltYWdlID0g
bV9kcmF3aW5nQXJlYS0+cGFnZSgpLmVkaXRhYmxlSW1hZ2VDb250cm9sbGVyKCkuZWRpdGFibGVJ
bWFnZShwcm9wZXJ0aWVzLmVtYmVkZGVkVmlld0lEKTsKLSAgICAgICAgICAgIHJldHVybiBlZGl0
YWJsZUltYWdlID8gZWRpdGFibGVJbWFnZS0+ZHJhd2luZ1ZpZXcgOiBuaWw7Ci0gICAgICAgIH0K
LSNlbmRpZgotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tV
SVZpZXcgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgfQotICAgIH0pOwotICAgIGF1dG8gdmlldyA9
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKLSAg
ICAgICAgbV9sYXllclRvRW1iZWRkZWRWaWV3TWFwLnJlbW92ZShSZW1vdGVMYXllclRyZWVOb2Rl
OjpsYXllcklEKFt2aWV3IGxheWVyXSkpOwotICAgIG1fbGF5ZXJUb0VtYmVkZGVkVmlld01hcC5z
ZXQocHJvcGVydGllcy5sYXllcklELCBwcm9wZXJ0aWVzLmVtYmVkZGVkVmlld0lEKTsKLSAgICBy
ZXR1cm4gdmlldzsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5oCmluZGV4
IDA2ZmNjZTk2NzgyNWQ3MWRlZjI2ZWVlMWRhMDJhYWVlYThiMmE3YTguLjMzYTE0NjEwYjhhZmJj
Yzk2NmY5ODI2ZTdiNDUzNjM3YTZiOWQ1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJl
ZVZpZXdzLmgKQEAgLTY2LDE0ICs2Niw2IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIEBpbnRlcmZh
Y2UgV0tDaGlsZFNjcm9sbFZpZXcgOiBVSVNjcm9sbFZpZXcgPFdLQ29udGVudENvbnRyb2xsZWQ+
CiBAZW5kCiAKLUBpbnRlcmZhY2UgV0tFbWJlZGRlZFZpZXcgOiBVSVZpZXcgPFdLQ29udGVudENv
bnRyb2xsZWQ+Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEVtYmVkZGVkVmlld0lEOihXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCllbWJlZGRlZFZpZXdJRDsKLQotQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBhc3NpZ24pIFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEOwotCi1AZW5kCi0KIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBPcHRpb25TZXQ8V2ViQ29yZTo6VG91Y2hBY3Rpb24+IHRvdWNoQWN0aW9uc0Zv
clBvaW50KFVJVmlldyAqcm9vdFZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90
ZUxheWVyVHJlZVZpZXdzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbQppbmRleCA2OTY0YTc1ZDc2M2I4NWIwODE2
OGJkZWYxNWNjOTY4ZGVhYWZhMjQ4Li4xMWJiMDFiMzcyY2U2OTdiNmU2M2E0M2U2YTQ2ZGY4MjQz
Y2FkYzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0KQEAgLTMzLDcg
KzMzLDYgQEAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZU5vZGUuaCIKICNpbXBvcnQgIlVJS2l0
U1BJLmgiCiAjaW1wb3J0ICJXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLmgiCi0jaW1wb3J0
ICJXS0RyYXdpbmdWaWV3LmgiCiAjaW1wb3J0IDxXZWJDb3JlL1JlZ2lvbi5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
Q0FMYXllckV4dHJhcy5oPgpAQCAtNDI2LDE5ICs0MjUsNCBAQCAtIChCT09MKWdlc3R1cmVSZWNv
Z25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIgc2hvdWxkQmVS
ZXF1aQogCiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBXS0VtYmVkZGVkVmlldwotCi0tIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhFbWJlZGRlZFZpZXdJRDooV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
RW1iZWRkZWRWaWV3SUQpZW1iZWRkZWRWaWV3SUQKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRd
OwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9lbWJlZGRlZFZp
ZXdJRCA9IGVtYmVkZGVkVmlld0lEOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLUBlbmQKLQog
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCA3ZDNjOTM5ZDg2ZDUwNjhmNzQ2ZGRhNTBhNDE1YjE0NGJkN2Uz
NzIxLi41ZTAyNDMyYjQ3OWU2YzI2OWJjMDdlZjg2MDgzNTEzMWQ4MGZlMTdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI2NiwxMCArMjY2LDYgQEAKICNp
bmNsdWRlICJTZWNLZXlQcm94eVN0b3JlLmgiCiAjZW5kaWYKIAotI2lmIEhBVkUoUEVOQ0lMS0lU
KQotI2luY2x1ZGUgIkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmgiCi0jZW5kaWYKLQogI2lmIEhB
VkUoQVBQX1NTTykKICNpbmNsdWRlICJTT0F1dGhvcml6YXRpb25Db29yZGluYXRvci5oIgogI2Vu
ZGlmCkBAIC05OTQsMTEgKzk5MCw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1
bm5pbmdQcm9jZXNzKCkKICAgICBtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyID0gbWFrZVVuaXF1ZTxX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogI2VuZGlmCiAKLSNpZiBI
QVZFKFBFTkNJTEtJVCkKLSAgICBBU1NFUlQoIW1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIpOwot
ICAgIG1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEVkaXRhYmxlSW1hZ2VD
b250cm9sbGVyPigqdGhpcyk7Ci0jZW5kaWYKLSAgICAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogICAgIEFTU0VSVCghbV93ZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkpOwogICAgIG1fd2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlclByb3h5ID0gbWFrZVVuaXF1ZTxXZWJEZXZpY2VPcmllbnRhdGlvblVw
ZGF0ZVByb3ZpZGVyUHJveHk+KCp0aGlzKTsKQEAgLTc2NDAsMTAgKzc2MzEsNiBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0U3RhdGVSZWFzb24p
CiAgICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IG51bGxwdHI7CiAjZW5kaWYKIAotI2lmIEhB
VkUoUEVOQ0lMS0lUKQotICAgIG1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgPSBudWxscHRyOwot
I2VuZGlmCi0gICAgCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERFVklDRV9P
UklFTlRBVElPTikKICAgICBtX3dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94
eSA9IG51bGxwdHI7CiAjZW5kaWYKQEAgLTk3MzAsMTEgKzk3MTcsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkSW52YWxpZGF0ZURhdGFGb3JBdHRhY2htZW50KEFQSTo6QXR0YWNobWVudCYgYXR0
YWNobWVudCkKIAogV2ViUGFnZVByb3h5OjpTaG91bGRVcGRhdGVBdHRhY2htZW50QXR0cmlidXRl
cyBXZWJQYWdlUHJveHk6OndpbGxVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6
OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiB7Ci0jaWYgSEFWRShQRU5DSUxLSVQpCi0gICAgcmV0
dXJuIG1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXItPndpbGxVcGRhdGVBdHRhY2htZW50QXR0cmli
dXRlcyhhdHRhY2htZW50KTsKLSNlbHNlCiAgICAgcmV0dXJuIFNob3VsZFVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzOjpZZXM7Ci0jZW5kaWYKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOTA2NDdlMTNiMWYwM2E2NmFj
MTRiMDMwYzcwNWVhZDg4M2MwNDBhMC4uZjNkM2NiMmIyNDNhNTZjMDg0NjkwZDBlOGNlOTA1ZDQ4
OTg0YTA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI5Myw3
ICsyOTMsNiBAQCB0eXBlZGVmIEhXTkQgUGxhdGZvcm1WaWV3V2lkZ2V0OwogbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5OwogY2xhc3Mg
RHJhd2luZ0FyZWFQcm94eTsKLWNsYXNzIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOwogY2xhc3Mg
R2FtZXBhZERhdGE7CiBjbGFzcyBNZWRpYVVzYWdlTWFuYWdlcjsKIGNsYXNzIE5hdGl2ZVdlYkdl
c3R1cmVFdmVudDsKQEAgLTgxOCw3ICs4MTcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb250ZW50
U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnN0IFN0cmluZyYgY29udGVudFNpemVDYXRlZ29yeSk7
CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJik7CiAgICAgdm9pZCBoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgdWludDY0
X3QgcmVxdWVzdElEKTsKLSAgICB2b2lkIGhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZvaWQgc2V0
Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoYm9vbCk7CiAgICAgYm9vbCBmb3JjZUFsd2F5c1VzZXJT
Y2FsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2VBbHdheXNVc2VyU2NhbGFibGU7IH0KICAg
ICBkb3VibGUgbGF5b3V0U2l6ZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9y
dENvbmZpZ3VyYXRpb25MYXlvdXRTaXplU2NhbGVGYWN0b3I7IH0KQEAgLTE2NjQsMTAgKzE2NjIs
NiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUN1cnJlbnRNb2RpZmllclN0YXRlKCk7CiAK
LSNpZiBIQVZFKFBFTkNJTEtJVCkKLSAgICBFZGl0YWJsZUltYWdlQ29udHJvbGxlciYgZWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXIoKSB7IHJldHVybiAqbV9lZGl0YWJsZUltYWdlQ29udHJvbGxlcjsg
fQotI2VuZGlmCi0KICAgICBQcm92aXNpb25hbFBhZ2VQcm94eSogcHJvdmlzaW9uYWxQYWdlUHJv
eHkoKSBjb25zdCB7IHJldHVybiBtX3Byb3Zpc2lvbmFsUGFnZS5nZXQoKTsgfQogICAgIHZvaWQg
Y29tbWl0UHJvdmlzaW9uYWxQYWdlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZv
RGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3Zp
ZGVyLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUlu
Zm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0
aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRl
bnQsIFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3ksIGNvbnN0IFVzZXJEYXRhJik7CiAKQEAgLTI4
MTYsMTAgKzI4MTAsNiBAQCBwcml2YXRlOgogCiAgICAgVGV4dE1hbmlwdWxhdGlvbkl0ZW1DYWxs
YmFjayBtX3RleHRNYW5pcHVsYXRpb25JdGVtQ2FsbGJhY2s7CiAKLSNpZiBIQVZFKFBFTkNJTEtJ
VCkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI+IG1fZWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXI7Ci0jZW5kaWYKLQogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdB
VElPTl9WSUVXKQogICAgIExheWVySG9zdGluZ0NvbnRleHRJRCBtX2NvbnRleHRJREZvclZpc2li
aWxpdHlQcm9wYWdhdGlvbiB7IDAgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNTE0ZWNhNjg5YjY1MWNjZGZlZDYxMTg1MGQyYjE0YmMyZjRjNTk4OC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEhBVkUo
UEVOQ0lMS0lUKQotCi0jaW5jbHVkZSAiQVBJQXR0YWNobWVudC5oIgotI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgotI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvR3JhcGhpY3NMYXllci5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1
ZGUgPHd0Zi9XZWFrT2JqQ1B0ci5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLU9CSkNfQ0xBU1MgV0tEcmF3aW5nVmlldzsKLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBFZGl0YWJsZUltYWdlIHsKLSAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0gICAgUmV0YWluUHRyPFdLRHJhd2luZ1ZpZXc+IGRy
YXdpbmdWaWV3OwotICAgIFN0cmluZyBhdHRhY2htZW50SUQ7Ci19OwotCi1jbGFzcyBFZGl0YWJs
ZUltYWdlQ29udHJvbGxlciA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEVkaXRhYmxl
SW1hZ2VDb250cm9sbGVyKTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBFZGl0YWJsZUltYWdlQ29u
dHJvbGxlcihXZWJQYWdlUHJveHkmKTsKLSAgICB+RWRpdGFibGVJbWFnZUNvbnRyb2xsZXIoKTsK
LQotICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0KLSAgICBFZGl0
YWJsZUltYWdlKiBlZGl0YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVk
Vmlld0lEKTsKLSAgICBFZGl0YWJsZUltYWdlJiBlbnN1cmVFZGl0YWJsZUltYWdlKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKTsKLQotICAgIHZvaWQgaW52YWxpZGF0ZUF0
dGFjaG1lbnRGb3JFZGl0YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVk
Vmlld0lEKTsKLQotICAgIFdlYlBhZ2VQcm94eTo6U2hvdWxkVXBkYXRlQXR0YWNobWVudEF0dHJp
YnV0ZXMgd2lsbFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVu
dCYpOwotCi1wcml2YXRlOgotICAgIHZvaWQgZGlkQ3JlYXRlRWRpdGFibGVJbWFnZShXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCk7Ci0gICAgdm9pZCBkaWREZXN0cm95RWRp
dGFibGVJbWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCk7Ci0KLSAg
ICB2b2lkIGFzc29jaWF0ZVdpdGhBdHRhY2htZW50KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVt
YmVkZGVkVmlld0lELCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCk7Ci0KLSAgICB2b2lkIGxv
YWRTdHJva2VzRnJvbUF0dGFjaG1lbnQoRWRpdGFibGVJbWFnZSYsIGNvbnN0IEFQSTo6QXR0YWNo
bWVudCYpOwotCi0gICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+IG1fd2ViUGFnZVByb3h5OwotCi0g
ICAgSGFzaE1hcDxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCwgc3RkOjp1
bmlxdWVfcHRyPEVkaXRhYmxlSW1hZ2U+PiBtX2VkaXRhYmxlSW1hZ2VzOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBIQVZFKFBFTkNJTEtJVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJv
bGxlci5tZXNzYWdlcy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWIxYWViZjE1
NzFlMTEzY2RmOTExNjFhMmQxZjYzNGUyMjA2NDUxNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCww
IEBACi0jIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSNpZiBIQVZFKFBF
TkNJTEtJVCkKLQotbWVzc2FnZXMgLT4gRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgewotICAgIERp
ZENyZWF0ZUVkaXRhYmxlSW1hZ2UodWludDY0X3QgZWRpdGFibGVJbWFnZUlEKQotICAgIERpZERl
c3Ryb3lFZGl0YWJsZUltYWdlKHVpbnQ2NF90IGVkaXRhYmxlSW1hZ2VJRCkKLSAgICBBc3NvY2lh
dGVXaXRoQXR0YWNobWVudCh1aW50NjRfdCBlZGl0YWJsZUltYWdlSUQsIFN0cmluZyBhdHRhY2ht
ZW50SUQpCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA1NTNhM2FjYmQ1NjU3MjliNjM5ZDgyNTAwMTA0NjEyOWEzYzE4ZDVhLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE2
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJFZGl0
YWJsZUltYWdlQ29udHJvbGxlci5oIgotCi0jaWYgSEFWRShQRU5DSUxLSVQpCi0KLSNpbXBvcnQg
IkFQSUF0dGFjaG1lbnQuaCIKLSNpbXBvcnQgIkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyTWVzc2Fn
ZXMuaCIKLSNpbXBvcnQgIlBhZ2VDbGllbnRJbXBsSU9TLmgiCi0jaW1wb3J0ICJQZW5jaWxLaXRT
UEkuaCIKLSNpbXBvcnQgIldLRHJhd2luZ1ZpZXcuaCIKLSNpbXBvcnQgIldlYlBhZ2VQcm94eS5o
IgotI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNz
TGF5ZXIuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2RlZmluZSBNRVNTQUdFX0NI
RUNLX1ZJRVdJRChlbWJlZGRlZFZpZXdJRCkgTUVTU0FHRV9DSEVDS19CQVNFKG1fZWRpdGFibGVJ
bWFnZXMuaXNWYWxpZEtleShlbWJlZGRlZFZpZXdJRCksIG1fd2ViUGFnZVByb3h5LT5wcm9jZXNz
KCkuY29ubmVjdGlvbigpKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotRWRpdGFibGVJbWFnZUNv
bnRyb2xsZXI6OkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVBy
b3h5KQotICAgIDogbV93ZWJQYWdlUHJveHkobWFrZVdlYWtQdHIod2ViUGFnZVByb3h5KSkKLXsK
LSAgICBpZiAoYXV0byogd2ViUGFnZVByb3h5ID0gbV93ZWJQYWdlUHJveHkuZ2V0KCkpCi0gICAg
ICAgIHdlYlBhZ2VQcm94eS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgd2ViUGFnZVBy
b3h5LT53ZWJQYWdlSUQoKSwgKnRoaXMpOwotfQotCi1FZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6
fkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyKCkKLXsKLSAgICBpZiAoYXV0byogd2ViUGFnZVByb3h5
ID0gbV93ZWJQYWdlUHJveHkuZ2V0KCkpCi0gICAgICAgIHdlYlBhZ2VQcm94eS0+cHJvY2Vzcygp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgd2ViUGFnZVByb3h5LT53ZWJQYWdlSUQoKSk7Ci19Ci0K
LUVkaXRhYmxlSW1hZ2UmIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjplbnN1cmVFZGl0YWJsZUlt
YWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lE
KQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9lZGl0YWJsZUltYWdlcy5lbnN1cmUoZW1iZWRkZWRW
aWV3SUQsIFsmXSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFZGl0YWJsZUltYWdlPiBpbWFn
ZSA9IG1ha2VVbmlxdWU8RWRpdGFibGVJbWFnZT4oKTsKLSAgICAgICAgaW1hZ2UtPmRyYXdpbmdW
aWV3ID0gbV93ZWJQYWdlUHJveHktPnBhZ2VDbGllbnQoKS5jcmVhdGVEcmF3aW5nVmlldyhlbWJl
ZGRlZFZpZXdJRCk7Ci0gICAgICAgIHJldHVybiBpbWFnZTsKLSAgICB9KTsKLSAgICByZXR1cm4g
KnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci19Ci0KLUVkaXRhYmxlSW1hZ2UqIEVkaXRhYmxlSW1h
Z2VDb250cm9sbGVyOjplZGl0YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVk
ZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEKQotewotICAgIGF1dG8gZHJhd2luZ1ZpZXdJdGVyID0g
bV9lZGl0YWJsZUltYWdlcy5maW5kKGVtYmVkZGVkVmlld0lEKTsKLSAgICBpZiAoZHJhd2luZ1Zp
ZXdJdGVyID09IG1fZWRpdGFibGVJbWFnZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgcmV0dXJuIGRyYXdpbmdWaWV3SXRlci0+dmFsdWUuZ2V0KCk7Ci19Ci0KLXZvaWQgRWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXI6OmRpZENyZWF0ZUVkaXRhYmxlSW1hZ2UoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQpCi17Ci0gICAgTUVTU0FHRV9D
SEVDS19WSUVXSUQoZW1iZWRkZWRWaWV3SUQpOwotICAgIGVuc3VyZUVkaXRhYmxlSW1hZ2UoZW1i
ZWRkZWRWaWV3SUQpOwotfQotCi12b2lkIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjpkaWREZXN0
cm95RWRpdGFibGVJbWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBl
bWJlZGRlZFZpZXdJRCkKLXsKLSAgICBNRVNTQUdFX0NIRUNLX1ZJRVdJRChlbWJlZGRlZFZpZXdJ
RCk7Ci0gICAgbV9lZGl0YWJsZUltYWdlcy5yZW1vdmUoZW1iZWRkZWRWaWV3SUQpOwotfQotCi12
b2lkIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjphc3NvY2lhdGVXaXRoQXR0YWNobWVudChXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCwgY29uc3Qg
U3RyaW5nJiBhdHRhY2htZW50SUQpCi17Ci0gICAgaWYgKCFtX3dlYlBhZ2VQcm94eSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIGF1dG8mIHBhZ2UgPSAqbV93ZWJQYWdlUHJveHk7Ci0KLSAgICBNRVNT
QUdFX0NIRUNLX1ZJRVdJRChlbWJlZGRlZFZpZXdJRCk7Ci0gICAgcGFnZS5yZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyKGF0dGFjaG1lbnRJRCk7Ci0gICAgYXV0byYgYXR0YWNobWVudCA9ICpw
YWdlLmF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGF0dGFjaG1lbnRJRCk7Ci0KLSAgICBhdXRvJiBl
ZGl0YWJsZUltYWdlID0gZW5zdXJlRWRpdGFibGVJbWFnZShlbWJlZGRlZFZpZXdJRCk7Ci0gICAg
V2Vha09iakNQdHI8V0tEcmF3aW5nVmlldz4gZHJhd2luZ1ZpZXcgPSBlZGl0YWJsZUltYWdlLmRy
YXdpbmdWaWV3LmdldCgpOwotICAgIGVkaXRhYmxlSW1hZ2UuYXR0YWNobWVudElEID0gYXR0YWNo
bWVudElEOwotCi0gICAgbG9hZFN0cm9rZXNGcm9tQXR0YWNobWVudChlZGl0YWJsZUltYWdlLCBh
dHRhY2htZW50KTsKLQotICAgIGF0dGFjaG1lbnQuc2V0RmlsZVdyYXBwZXJHZW5lcmF0b3IoW2Ry
YXdpbmdWaWV3XSgpIC0+IFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiB7Ci0gICAgICAgIGlmICgh
ZHJhd2luZ1ZpZXcpCi0gICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICBOU0RhdGEgKmRh
dGEgPSBbZHJhd2luZ1ZpZXcgUE5HUmVwcmVzZW50YXRpb25dOwotICAgICAgICBpZiAoIWRhdGEp
Ci0gICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICBSZXRhaW5QdHI8TlNGaWxlV3JhcHBl
cj4gZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOmRhdGFdKTsKLSAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZl
cnJlZEZpbGVuYW1lOkAiZHJhd2luZy5wbmciXTsKLSAgICAgICAgcmV0dXJuIGZpbGVXcmFwcGVy
OwotICAgIH0pOwotICAgIGF0dGFjaG1lbnQuc2V0Q29udGVudFR5cGUoInB1YmxpYy5wbmciKTsK
LX0KLQotdm9pZCBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6bG9hZFN0cm9rZXNGcm9tQXR0YWNo
bWVudChFZGl0YWJsZUltYWdlJiBlZGl0YWJsZUltYWdlLCBjb25zdCBBUEk6OkF0dGFjaG1lbnQm
IGF0dGFjaG1lbnQpCi17Ci0gICAgQVNTRVJUKGF0dGFjaG1lbnQuaWRlbnRpZmllcigpID09IGVk
aXRhYmxlSW1hZ2UuYXR0YWNobWVudElEKTsKLSAgICBOU0ZpbGVXcmFwcGVyICpmaWxlV3JhcHBl
ciA9IGF0dGFjaG1lbnQuZmlsZVdyYXBwZXIoKTsKLSAgICBpZiAoIWZpbGVXcmFwcGVyLmlzUmVn
dWxhckZpbGUpCi0gICAgICAgIHJldHVybjsKLSAgICBbZWRpdGFibGVJbWFnZS5kcmF3aW5nVmll
dyBsb2FkRHJhd2luZ0Zyb21QTkdSZXByZXNlbnRhdGlvbjpmaWxlV3JhcHBlci5yZWd1bGFyRmls
ZUNvbnRlbnRzXTsKLX0KLQotdm9pZCBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6aW52YWxpZGF0
ZUF0dGFjaG1lbnRGb3JFZGl0YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVk
ZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEKQotewotICAgIGlmICghbV93ZWJQYWdlUHJveHkpCi0g
ICAgICAgIHJldHVybjsKLSAgICBhdXRvJiBwYWdlID0gKm1fd2ViUGFnZVByb3h5OwotCi0gICAg
YXV0byBlZGl0YWJsZUltYWdlID0gdGhpcy0+ZWRpdGFibGVJbWFnZShlbWJlZGRlZFZpZXdJRCk7
Ci0gICAgaWYgKCFlZGl0YWJsZUltYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGF0
dGFjaG1lbnQgPSBwYWdlLmF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGVkaXRhYmxlSW1hZ2UtPmF0
dGFjaG1lbnRJRCk7Ci0gICAgaWYgKCFhdHRhY2htZW50KQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBhdHRhY2htZW50LT5pbnZhbGlkYXRlR2VuZXJhdGVkRmlsZVdyYXBwZXIoKTsKLX0KLQotV2Vi
UGFnZVByb3h5OjpTaG91bGRVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyBFZGl0YWJsZUltYWdl
Q29udHJvbGxlcjo6d2lsbFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0
YWNobWVudCYgYXR0YWNobWVudCkKLXsKLSAgICBmb3IgKGF1dG8mIGVkaXRhYmxlSW1hZ2UgOiBt
X2VkaXRhYmxlSW1hZ2VzLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChlZGl0YWJsZUltYWdlLT5h
dHRhY2htZW50SUQgIT0gYXR0YWNobWVudC5pZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICBsb2FkU3Ryb2tlc0Zyb21BdHRhY2htZW50KCplZGl0YWJsZUltYWdl
LCBhdHRhY2htZW50KTsKLSAgICAgICAgcmV0dXJuIFdlYlBhZ2VQcm94eTo6U2hvdWxkVXBkYXRl
QXR0YWNobWVudEF0dHJpYnV0ZXM6Ok5vOwotICAgIH0KLQotICAgIHJldHVybiBXZWJQYWdlUHJv
eHk6OlNob3VsZFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzOjpZZXM7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jdW5kZWYgTUVTU0FHRV9DSEVDS19WSUVXSUQKLQotI2VuZGlmIC8v
IEhBVkUoUEVOQ0lMS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaAppbmRleCAyNzI1YzhiNzkzY2Q3Y2NlNzQ5OTU3ZTJmMGRkMWRkMThiMThh
NWZjLi4yMTM2OWFmZTY3YzY5ZThiZmM3MDFkZTUxMTk2MzAwMzg3YWQzMDJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMjYwLDEw
ICsyNjAsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRNb3VzZUV2ZW50UG9saWN5KFdlYkNv
cmU6Ok1vdXNlRXZlbnRQb2xpY3kpIGZpbmFsOwogCi0jaWYgSEFWRShQRU5DSUxLSVQpCi0gICAg
UmV0YWluUHRyPFdLRHJhd2luZ1ZpZXc+IGNyZWF0ZURyYXdpbmdWaWV3KFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKSBvdmVycmlkZTsKLSNlbmRpZgotCiAjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIHdyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9Q
YXN0ZWJvYXJkKFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8mJikgZmluYWw7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bQppbmRleCAwYmE4NWRmNzUxOTg1MDFhOTBiOTY5YjIwOWJkODk3OWRmNjVlZjlkLi5iM2QxYjM4
OTFkODE5ZDRkMWQ0ZjJhYzkxYjJjNDk1MTkwNDQzNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC00Niw3ICs0Niw2IEBACiAj
aW1wb3J0ICJWaWV3U25hcHNob3RTdG9yZS5oIgogI2ltcG9ydCAiV0tDb250ZW50Vmlldy5oIgog
I2ltcG9ydCAiV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCi0jaW1wb3J0ICJXS0RyYXdpbmdW
aWV3LmgiCiAjaW1wb3J0ICJXS0VkaXRDb21tYW5kLmgiCiAjaW1wb3J0ICJXS0dlb2xvY2F0aW9u
UHJvdmlkZXJJT1MuaCIKICNpbXBvcnQgIldLUGFzc3dvcmRWaWV3LmgiCkBAIC05MTcsMTMgKzkx
Niw2IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwKICAgICBbbV9jb250ZW50VmlldyBfcmVxdWVz
dERPTVBhc3RlQWNjZXNzV2l0aEVsZW1lbnRSZWN0OmVsZW1lbnRSZWN0IG9yaWdpbklkZW50aWZp
ZXI6b3JpZ2luSWRlbnRpZmllciBjb21wbGV0aW9uSGFuZGxlcjpXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV07CiB9CiAKLSNpZiBIQVZFKFBFTkNJTEtJVCkKLVJldGFpblB0cjxXS0RyYXdpbmdW
aWV3PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ1ZpZXcoV2ViQ29yZTo6R3JhcGhpY3NM
YXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQpCi17Ci0gICAgcmV0dXJuIGFkb3B0
TlMoW1tXS0RyYXdpbmdWaWV3IGFsbG9jXSBpbml0V2l0aEVtYmVkZGVkVmlld0lEOmVtYmVkZGVk
Vmlld0lEIGNvbnRlbnRWaWV3Om1fY29udGVudFZpZXcuZ2V0QXV0b3JlbGVhc2VkKCldKTsKLX0K
LSNlbmRpZgotCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpjYW5jZWxQb2ludGVyc0Zvckdlc3R1cmVS
ZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyKQogewogICAg
IFttX2NvbnRlbnRWaWV3IGNhbmNlbFBvaW50ZXJzRm9yR2VzdHVyZVJlY29nbml6ZXI6Z2VzdHVy
ZVJlY29nbml6ZXJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bl
bmNpbEtpdFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGVuY2lsS2l0
U29mdExpbmsuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQzYzVmOWI5YzIwODQ1
MGVmZjA4NjYyOWI2MTU5MDM4YzdjZmI2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGVuY2lsS2l0U29m
dExpbmsuaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEhBVkUoUEVOQ0lMS0lUKQotCi0jaW1wb3J0ICJQZW5jaWxLaXRTUEku
aCIKLSNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1TT0ZUX0xJTktfRlJBTUVXT1JLX0ZP
Ul9IRUFERVIoV2ViS2l0LCBQZW5jaWxLaXQpOwotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIo
V2ViS2l0LCBQS0NhbnZhc1ZpZXcpOwotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoV2ViS2l0
LCBQS0RyYXdpbmcpOwotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoV2ViS2l0LCBQS0ltYWdl
UmVuZGVyZXIpOwotCi0jZW5kaWYgLy8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGVuY2lsS2l0U29mdExpbmsubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGVuY2lsS2l0U29mdExpbmsubW0KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAyYWZlZWYxYWQ4MWZiZjVkN2Q3ZmQyODU2MWQ4NWJmNjU3Yzk0MjAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BlbmNpbEtpdFNvZnRMaW5rLm1tCisrKyAvZGV2L251bGwKQEAgLTEs
MzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotCi0jaWYgSEFWRShQ
RU5DSUxLSVQpCi0KLSNpbXBvcnQgIlBlbmNpbEtpdFNQSS5oIgotI2ltcG9ydCA8d3RmL1NvZnRM
aW5raW5nLmg+Ci0KLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19GT1JfU09VUkNFKFdlYktp
dCwgUGVuY2lsS2l0KTsKLVNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKFdlYktpdCwgUGVuY2ls
S2l0LCBQS0NhbnZhc1ZpZXcpOwotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoV2ViS2l0LCBQ
ZW5jaWxLaXQsIFBLRHJhd2luZyk7Ci1TT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShXZWJLaXQs
IFBlbmNpbEtpdCwgUEtJbWFnZVJlbmRlcmVyKTsKLQotI2VuZGlmIC8vIEhBVkUoUEVOQ0lMS0lU
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oCmluZGV4IGUyOTJkOTA5MmYxY2Y3N2FkNzNmMjYyODFjNmM1YmRkNWQ2OWVj
NWQuLjdlYTEwMTdkYzVkMDQ3OTRkYzMwZTNlYTBjYzk3MzkzY2YxM2RmZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
LmgKQEAgLTEwMiw3ICsxMDIsNiBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBAY2xhc3MgV0tBY3Rp
b25TaGVldEFzc2lzdGFudDsKIEBjbGFzcyBXS0NvbnRleHRNZW51RWxlbWVudEluZm87CiBAY2xh
c3MgV0tEYXRlVGltZUlucHV0Q29udHJvbDsKLUBjbGFzcyBXS0RyYXdpbmdDb29yZGluYXRvcjsK
IEBjbGFzcyBXS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXc7CiBAY2xhc3MgV0tGb3JtSW5wdXRTZXNz
aW9uOwogQGNsYXNzIFdLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXI7CkBAIC0y
MjgsNyArMjI3LDYgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBSZXRhaW5Q
dHI8VUlUYXBHZXN0dXJlUmVjb2duaXplcj4gX2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyRm9y
RG91YmxlQ2xpY2s7CiAgICAgUmV0YWluUHRyPFVJVGFwR2VzdHVyZVJlY29nbml6ZXI+IF90d29G
aW5nZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8VUlUYXBHZXN0
dXJlUmVjb2duaXplcj4gX3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyOwotICAg
IFJldGFpblB0cjxVSVRhcEdlc3R1cmVSZWNvZ25pemVyPiBfc3R5bHVzU2luZ2xlVGFwR2VzdHVy
ZVJlY29nbml6ZXI7CiAgICAgUmV0YWluUHRyPFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVS
ZWNvZ25pemVyPiBfaW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyOwogCiAgICAg
UmV0YWluUHRyPFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplcj4gX3RvdWNoQWN0aW9uR2Vz
dHVyZVJlY29nbml6ZXI7CkBAIC0zMzksMTAgKzMzNyw2IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0
aW9uRGF0YSB7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAqPj4gX2Rh
dGFMaXN0VGV4dFN1Z2dlc3Rpb25zOwogI2VuZGlmCiAKLSNpZiBIQVZFKFBFTkNJTEtJVCkKLSAg
ICBSZXRhaW5QdHI8V0tEcmF3aW5nQ29vcmRpbmF0b3I+IF9kcmF3aW5nQ29vcmRpbmF0b3I7Ci0j
ZW5kaWYKLQogICAgIEJPT0wgX2lzRWRpdGFibGU7CiAgICAgQk9PTCBfc2hvd2luZ1RleHRTdHls
ZU9wdGlvbnM7CiAgICAgQk9PTCBfaGFzVmFsaWRQb3NpdGlvbkluZm9ybWF0aW9uOwpAQCAtNTgz
LDEwICs1NzcsNiBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xB
UkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQogLSAodm9pZCl1cGRhdGVUZXh0
U3VnZ2VzdGlvbnNGb3JJbnB1dERlbGVnYXRlOwogI2VuZGlmCiAKLSNpZiBIQVZFKFBFTkNJTEtJ
VCkKLS0gKFdLRHJhd2luZ0Nvb3JkaW5hdG9yICopX2RyYXdpbmdDb29yZGluYXRvcjsKLSNlbmRp
ZgotCiAtICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQg
Kj4gKikpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6
KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0IHBsYWNlQ2FyZXRBdDooQ0dQb2ludClwb2lu
dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlSZXNwb25kZXI8VUlUZXh0SW5wdXQ+ICop
KWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClfd2lsbEJlZ2luVGV4dEludGVyYWN0aW9uSW5U
ZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCmluZGV4IDVjMzgwM2NhNWQ0MTQ4ODFmOTJiMTcyYWE2MDZjMjJiNzIwMDQ1OWIuLjA4ZGJm
M2FkODc5OWE5NTE0YWNmNmJkMzEyZjlmZjFjNzcyNTI2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAt
MzEsNyArMzEsNiBAQAogI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKICNpbXBvcnQgIkNvbXBsZXRp
b25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKICNpbXBvcnQgIkRvY3VtZW50RWRpdGluZ0NvbnRleHQu
aCIKLSNpbXBvcnQgIkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJJbnB1dFZp
ZXdVcGRhdGVEZWZlcnJlci5oIgogI2ltcG9ydCAiSW5zZXJ0VGV4dE9wdGlvbnMuaCIKICNpbXBv
cnQgIkxvZ2dpbmcuaCIKQEAgLTUxLDcgKzUwLDYgQEAKICNpbXBvcnQgIldLQ29udGV4dE1lbnVF
bGVtZW50SW5mb1ByaXZhdGUuaCIKICNpbXBvcnQgIldLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVy
LmgiCiAjaW1wb3J0ICJXS0RhdGVUaW1lSW5wdXRDb250cm9sLmgiCi0jaW1wb3J0ICJXS0RyYXdp
bmdDb29yZGluYXRvci5oIgogI2ltcG9ydCAiV0tFcnJvci5oIgogI2ltcG9ydCAiV0tGb2N1c2Vk
Rm9ybUNvbnRyb2xWaWV3LmgiCiAjaW1wb3J0ICJXS0Zvcm1TZWxlY3RDb250cm9sLmgiCkBAIC04
NTAsMTIgKzg0OCw2IEBAIC0gKHZvaWQpc2V0VXBJbnRlcmFjdGlvbgogICAgIFtfdHdvRmluZ2Vy
U2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RW5hYmxlZDohc2VsZi53ZWJWaWV3Ll9lZGl0
YWJsZV07CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlclNpbmdsZVRh
cEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIAotICAgIF9zdHlsdXNTaW5nbGVUYXBHZXN0dXJl
UmVjb2duaXplciA9IGFkb3B0TlMoW1tVSVRhcEdlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0
V2l0aFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX3N0eWx1c1NpbmdsZVRhcFJlY29nbml6
ZWQ6KV0pOwotICAgIFtfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0TnVtYmVy
T2ZUYXBzUmVxdWlyZWQ6MV07Ci0gICAgW19zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXpl
ciBzZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICBbX3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25p
emVyIHNldEFsbG93ZWRUb3VjaFR5cGVzOkBbIEAoVUlUb3VjaFR5cGVQZW5jaWwpIF1dOwotICAg
IFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVjb2du
aXplci5nZXQoKV07Ci0KICAgICBfdG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplciA9IGFkb3B0
TlMoW1tXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVG91Y2hB
Y3Rpb25EZWxlZ2F0ZTpzZWxmXSk7CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3Rv
dWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogCkBAIC05OTIsOSArOTg0LDYgQEAg
LSAodm9pZCljbGVhblVwSW50ZXJhY3Rpb24KICAgICBbX3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1
cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOm5pbF07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJl
Y29nbml6ZXI6X3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIAot
ICAgIFtfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6bmlsXTsK
LSAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfc3R5bHVzU2luZ2xlVGFwR2VzdHVy
ZVJlY29nbml6ZXIuZ2V0KCldOwotCiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6
X3RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogICAgIFtzZWxmIHJlbW92ZUdl
c3R1cmVSZWNvZ25pemVyOl90b3VjaEFjdGlvbkxlZnRTd2lwZUdlc3R1cmVSZWNvZ25pemVyLmdl
dCgpXTsKICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfdG91Y2hBY3Rpb25SaWdo
dFN3aXBlR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwpAQCAtMTA0OCwxMCArMTAzNyw2IEBAIC0g
KHZvaWQpY2xlYW5VcEludGVyYWN0aW9uCiAgICAgW19rZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9y
IGludmFsaWRhdGVdOwogICAgIF9rZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yID0gbmlsOwogCi0j
aWYgSEFWRShQRU5DSUxLSVQpCi0gICAgX2RyYXdpbmdDb29yZGluYXRvciA9IG5pbDsKLSNlbmRp
ZgotCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgX2RhdGFMaXN0VGV4dFN1Z2dl
c3Rpb25zSW5wdXRWaWV3ID0gbmlsOwogICAgIF9kYXRhTGlzdFRleHRTdWdnZXN0aW9ucyA9IG5p
bDsKQEAgLTEwOTQsNyArMTA3OSw2IEBAIC0gKHZvaWQpX3JlbW92ZURlZmF1bHRHZXN0dXJlUmVj
b2duaXplcnMKICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfZG91YmxlVGFwR2Vz
dHVyZVJlY29nbml6ZXJGb3JEb3VibGVDbGljay5nZXQoKV07CiAgICAgW3NlbGYgcmVtb3ZlR2Vz
dHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgp
XTsKICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfdHdvRmluZ2VyU2luZ2xlVGFw
R2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwotICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25p
emVyOl9zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAjaWYgSEFWRShV
SUtJVF9XSVRIX01PVVNFX1NVUFBPUlQpCiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6
ZXI6X21vdXNlR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogI2VuZGlmCkBAIC0xMTIyLDcgKzEx
MDYsNiBAQCAtICh2b2lkKV9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzCiAgICAgW3NlbGYg
YWRkR2VzdHVyZVJlY29nbml6ZXI6X2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyRm9yRG91Ymxl
Q2xpY2suZ2V0KCldOwogICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJE
b3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJl
Y29nbml6ZXI6X3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKLSAg
ICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29n
bml6ZXIuZ2V0KCldOwogI2lmIEhBVkUoVUlLSVRfV0lUSF9NT1VTRV9TVVBQT1JUKQogICAgIFtz
ZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9tb3VzZUdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsK
ICNlbmRpZgpAQCAtMjQxMiw5ICsyMzk1LDYgQEAgLSAoQk9PTClnZXN0dXJlUmVjb2duaXplclNo
b3VsZEJlZ2luOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIHsKICAg
ICBDR1BvaW50IHBvaW50ID0gW2dlc3R1cmVSZWNvZ25pemVyIGxvY2F0aW9uSW5WaWV3OnNlbGZd
OwogCi0gICAgaWYgKGdlc3R1cmVSZWNvZ25pemVyID09IF9zdHlsdXNTaW5nbGVUYXBHZXN0dXJl
UmVjb2duaXplcikKLSAgICAgICAgcmV0dXJuIHNlbGYud2ViVmlldy5fc3R5bHVzVGFwR2VzdHVy
ZVNob3VsZENyZWF0ZUVkaXRhYmxlSW1hZ2U7Ci0KICAgICBhdXRvIGlzSW50ZXJydXB0aW5nRGVj
ZWxlcmF0aW9uRm9yU2Nyb2xsVmlld09yQW5jZXN0b3IgPSBbJl0gKFVJU2Nyb2xsVmlldyAqc2Ny
b2xsVmlldykgewogICAgICAgICBVSVNjcm9sbFZpZXcgKm1haW5TY3JvbGxlciA9IHNlbGYud2Vi
Vmlldy5zY3JvbGxWaWV3OwogICAgICAgICBVSVZpZXcgKnZpZXcgPSBzY3JvbGxWaWV3ID86IG1h
aW5TY3JvbGxlcjsKQEAgLTI3MDcsMTMgKzI2ODcsNiBAQCAtICh2b2lkKV90d29GaW5nZXJTaW5n
bGVUYXBHZXN0dXJlUmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVS
ZQogICAgIF9wYWdlLT5oYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KFdlYkNvcmU6OnJvdW5kZWRJ
bnRQb2ludChnZXN0dXJlUmVjb2duaXplci5jZW50cm9pZCksIFdlYktpdDo6d2ViRXZlbnRNb2Rp
ZmllckZsYWdzKGdlc3R1cmVSZWNvZ25pemVyTW9kaWZpZXJGbGFncyhnZXN0dXJlUmVjb2duaXpl
cikgfCBVSUtleU1vZGlmaWVyQ29tbWFuZCksICsrX2xhdGVzdFRhcElEKTsKIH0KIAotLSAodm9p
ZClfc3R5bHVzU2luZ2xlVGFwUmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdl
c3R1cmVSZWNvZ25pemVyCi17Ci0gICAgQVNTRVJUKHNlbGYud2ViVmlldy5fc3R5bHVzVGFwR2Vz
dHVyZVNob3VsZENyZWF0ZUVkaXRhYmxlSW1hZ2UpOwotICAgIEFTU0VSVChnZXN0dXJlUmVjb2du
aXplciA9PSBfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIpOwotICAgIF9wYWdlLT5o
YW5kbGVTdHlsdXNTaW5nbGVUYXBBdFBvaW50KFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnZXN0
dXJlUmVjb2duaXplci5sb2NhdGlvbiksICsrX2xhdGVzdFRhcElEKTsKLX0KLQogLSAodm9pZClf
bG9uZ1ByZXNzUmVjb2duaXplZDooVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1
cmVSZWNvZ25pemVyCiB7CiAgICAgQVNTRVJUKGdlc3R1cmVSZWNvZ25pemVyID09IF9sb25nUHJl
c3NHZXN0dXJlUmVjb2duaXplcik7CkBAIC01OTgzLDExICs1OTU2LDYgQEAgLSAodm9pZClfZWxl
bWVudERpZEZvY3VzOihjb25zdCBXZWJLaXQ6OkZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mKWlu
Zm9ybWF0aW9uIHUKICAgICAgICAgW3NlbGYgX2VsZW1lbnREaWRCbHVyXTsKICAgICB9CiAKLSNp
ZiBIQVZFKFBFTkNJTEtJVCkKLSAgICBpZiAoaW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gV2Vi
S2l0OjpJbnB1dFR5cGU6OkRyYXdpbmcpCi0gICAgICAgIFtfZHJhd2luZ0Nvb3JkaW5hdG9yIGlu
c3RhbGxJbmtQaWNrZXJGb3JEcmF3aW5nOmluZm9ybWF0aW9uLmVtYmVkZGVkVmlld0lEXTsKLSNl
bmRpZgotCiAgICAgaWYgKCFzaG91bGRTaG93SW5wdXRWaWV3IHx8IGluZm9ybWF0aW9uLmVsZW1l
bnRUeXBlID09IFdlYktpdDo6SW5wdXRUeXBlOjpOb25lKSB7CiAgICAgICAgIF9wYWdlLT5zZXRJ
c1Nob3dpbmdJbnB1dFZpZXdGb3JGb2N1c2VkRWxlbWVudChmYWxzZSk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTYwOTMsMTAgKzYwNjEsNiBAQCAtICh2b2lkKV9lbGVtZW50RGlkQmx1cgogewogICAg
IFNldEZvclNjb3BlPEJPT0w+IGlzQmx1cnJpbmdGb2N1c2VkRWxlbWVudEZvclNjb3BlIHsgX2lz
Qmx1cnJpbmdGb2N1c2VkRWxlbWVudCwgWUVTIH07CiAKLSNpZiBIQVZFKFBFTkNJTEtJVCkKLSAg
ICBbX2RyYXdpbmdDb29yZGluYXRvciB1bmluc3RhbGxJbmtQaWNrZXJdOwotI2VuZGlmCi0KICNp
ZiBVU0UoVUlLSVRfS0VZQk9BUkRfQURESVRJT05TKQogICAgIFtzZWxmIF9lbmRFZGl0aW5nXTsK
ICNlbmRpZgpAQCAtODYwMSwxNSArODU2NSw2IEBAIC0gKHZvaWQpX2xvb2t1cEdlc3R1cmVSZWNv
Z25pemVkOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIH0KICNlbmRp
ZgogCi0jaWYgSEFWRShQRU5DSUxLSVQpCi0tIChXS0RyYXdpbmdDb29yZGluYXRvciAqKV9kcmF3
aW5nQ29vcmRpbmF0b3IKLXsKLSAgICBpZiAoIV9kcmF3aW5nQ29vcmRpbmF0b3IpCi0gICAgICAg
IF9kcmF3aW5nQ29vcmRpbmF0b3IgPSBhZG9wdE5TKFtbV0tEcmF3aW5nQ29vcmRpbmF0b3IgYWxs
b2NdIGluaXRXaXRoQ29udGVudFZpZXc6c2VsZl0pOwotICAgIHJldHVybiBfZHJhd2luZ0Nvb3Jk
aW5hdG9yLmdldCgpOwotfQotI2VuZGlmIC8vIEhBVkUoUEVOQ0lMS0lUKQotCiAtICh2b2lkKXNl
dENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZDooQk9PTCllbmFibGVkCiB7CiAgICAgaWYg
KFdlYktpdDo6VGV4dENoZWNrZXI6OnNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZChl
bmFibGVkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdp
bmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ0Nv
b3JkaW5hdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5N2I1NzQ1MjU0YTEw
MzM5NGE5ZjZjYmFhYmRmMTQwZjRiZWM3Y2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ0Nv
b3JkaW5hdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmIEhBVkUoUEVOQ0lMS0lUKQotCi0jaW1wb3J0ICJQZW5jaWxLaXRTUEkuaCIKLSNpbXBvcnQg
PFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgotCi1PQkpDX0NMQVNTIFBLSW5rOwotT0JKQ19DTEFT
UyBXS0NvbnRlbnRWaWV3OwotCi1AaW50ZXJmYWNlIFdLRHJhd2luZ0Nvb3JkaW5hdG9yIDogTlNP
YmplY3QgPFBLUnVsZXJIb3N0aW5nRGVsZWdhdGU+Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0IE5T
X1VOQVZBSUxBQkxFOwotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29udGVudFZpZXc6KFdLQ29u
dGVudFZpZXcgKiljb250ZW50VmlldzsKLQotLSAodm9pZClpbnN0YWxsSW5rUGlja2VyRm9yRHJh
d2luZzooV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpZW1iZWRkZWRWaWV3
SUQ7Ci0tICh2b2lkKXVuaW5zdGFsbElua1BpY2tlcjsKLQotQHByb3BlcnR5IChub25hdG9taWMp
IEJPT0wgcnVsZXJFbmFibGVkOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCByZXRh
aW4pIFBLSW5rICpjdXJyZW50SW5rOwotCi1AZW5kCi0KLQotI2VuZGlmIC8vIEhBVkUoUEVOQ0lM
S0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ0Nv
b3JkaW5hdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ0Nvb3Jk
aW5hdG9yLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDBjNzIzOWQ0MjY2Mjgw
OTJkZjM2ZjE5Yzc1M2VlYzA2ZGFmMDI0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdDb29y
ZGluYXRvci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXS0RyYXdpbmdDb29yZGluYXRvci5oIgotCi0j
aWYgSEFWRShQRU5DSUxLSVQpCi0KLSNpbXBvcnQgIkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmgi
Ci0jaW1wb3J0ICJXS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCIKLSNpbXBvcnQgIldLRHJhd2lu
Z1ZpZXcuaCIKLSNpbXBvcnQgIldLV2ViVmlldy5oIgotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25z
L1dLRHJhd2luZ0Nvb3JkaW5hdG9yQWRkaXRpb25zLm1tPgotI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgotCi0jaW1wb3J0ICJQZW5jaWxLaXRTb2Z0TGluay5oIgotCi1AaW50ZXJmYWNlIFdLRHJh
d2luZ0Nvb3JkaW5hdG9yICgpIDxXS0lua1BpY2tlckRlbGVnYXRlPgotQGVuZAotCi1AaW1wbGVt
ZW50YXRpb24gV0tEcmF3aW5nQ29vcmRpbmF0b3IgewotICAgIF9fd2VhayBXS0NvbnRlbnRWaWV3
ICpfY29udGVudFZpZXc7Ci0KLSAgICBSZXRhaW5QdHI8V0tJbmtQaWNrZXI+IF9pbmtQaWNrZXI7
Ci0KLSAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBfZm9jdXNlZEVt
YmVkZGVkVmlld0lEOwotfQotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb250ZW50Vmlldzoo
V0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsK
LSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfY29udGVudFZpZXcg
PSBjb250ZW50VmlldzsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tIChQS0luayAqKWN1cnJl
bnRJbmsKLXsKLSAgICByZXR1cm4gW19pbmtQaWNrZXIgY3VycmVudElua107Ci19Ci0KLS0gKFVJ
VmlldyAqKXJ1bGVySG9zdGluZ1ZpZXcKLXsKLSAgICByZXR1cm4gX2NvbnRlbnRWaWV3OwotfQot
Ci0tIChCT09MKXJ1bGVySG9zdFdhbnRzU2hhcmVkUnVsZXIKLXsKLSAgICByZXR1cm4gWUVTOwot
fQotCi0tIChXS0RyYXdpbmdWaWV3ICopX2ZvY3VzZWREcmF3aW5nVmlldwotewotICAgIFdlYktp
dDo6RWRpdGFibGVJbWFnZSAqZm9jdXNlZEVkaXRhYmxlSW1hZ2UgPSBfY29udGVudFZpZXcucGFn
ZS0+ZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIoKS5lZGl0YWJsZUltYWdlKF9mb2N1c2VkRW1iZWRk
ZWRWaWV3SUQpOwotICAgIGlmICghZm9jdXNlZEVkaXRhYmxlSW1hZ2UpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0gICAgcmV0dXJuIGZvY3VzZWRFZGl0YWJsZUltYWdlLT5kcmF3aW5nVmlldy5nZXQo
KTsKLX0KLQotLSAoTlNVbmRvTWFuYWdlciAqKXVuZG9NYW5hZ2VyRm9ySW5rUGlja2VyOihXS0lu
a1BpY2tlciAqKWlua1BpY2tlcgotewotICAgIHJldHVybiBbX2NvbnRlbnRWaWV3IHVuZG9NYW5h
Z2VyXTsKLX0KLQotLSAoVUlWaWV3ICopY29udGFpbmluZ1ZpZXdGb3JJbmtQaWNrZXI6KFdLSW5r
UGlja2VyICopaW5rUGlja2VyCi17Ci0gICAgcmV0dXJuIF9jb250ZW50VmlldzsKLX0KLQotLSAo
dm9pZClpbmtQaWNrZXJEaWRUb2dnbGVSdWxlcjooV0tJbmtQaWNrZXIgKilpbmtQaWNrZXIKLXsK
LSAgICBfcnVsZXJFbmFibGVkID0gIV9ydWxlckVuYWJsZWQ7Ci0gICAgW3NlbGYuX2ZvY3VzZWRE
cmF3aW5nVmlldyBkaWRDaGFuZ2VSdWxlclN0YXRlOl9ydWxlckVuYWJsZWRdOwotfQotCi0tICh2
b2lkKWlua1BpY2tlckRpZENoYW5nZUluazooV0tJbmtQaWNrZXIgKilpbmtQaWNrZXIKLXsKLSAg
ICBbc2VsZi5fZm9jdXNlZERyYXdpbmdWaWV3IGRpZENoYW5nZUluazpzZWxmLmN1cnJlbnRJbmtd
OwotfQotCi0tICh2b2lkKWluc3RhbGxJbmtQaWNrZXJGb3JEcmF3aW5nOihXZWJDb3JlOjpHcmFw
aGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCllbWJlZGRlZFZpZXdJRAotewotICAgIF9mb2N1c2Vk
RW1iZWRkZWRWaWV3SUQgPSBlbWJlZGRlZFZpZXdJRDsKLQotICAgIGlmICghX2lua1BpY2tlcikK
LSAgICAgICAgX2lua1BpY2tlciA9IGFkb3B0TlMoW1tXS0lua1BpY2tlciBhbGxvY10gaW5pdFdp
dGhEZWxlZ2F0ZTpzZWxmXSk7Ci0gICAgW19pbmtQaWNrZXIgc2hvd107Ci0KLSAgICAvLyBXaGVu
IGZvY3VzZWQsIHB1c2ggdGhlIHJ1bGVyIHN0YXRlIGRvd24gdG8gdGhlIGNhbnZhcyBzbyB0aGF0
IGl0IGRvZXNuJ3QgZ2V0IG91dCBvZiBzeW5jCi0gICAgLy8gYW5kIGVhcmx5LXJldHVybiBmcm9t
IGxhdGVyIGNoYW5nZXMuCi0gICAgW3NlbGYuX2ZvY3VzZWREcmF3aW5nVmlldyBkaWRDaGFuZ2VS
dWxlclN0YXRlOl9ydWxlckVuYWJsZWRdOwotfQotCi0tICh2b2lkKXVuaW5zdGFsbElua1BpY2tl
cgotewotICAgIFtfaW5rUGlja2VyIGhpZGVdOwotICAgIFtzZWxmLl9mb2N1c2VkRHJhd2luZ1Zp
ZXcgZGlkQ2hhbmdlUnVsZXJTdGF0ZTpOT107Ci0gICAgX2ZvY3VzZWRFbWJlZGRlZFZpZXdJRCA9
IDA7Ci19Ci0KLUBlbmQKLQotI2VuZGlmIC8vIEhBVkUoUEVOQ0lMS0lUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ1ZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDlkODFiMjAzYjQ0MGI4NTNkMWJjMzU4MzBlMTAyYTg4OGU5Nzk5MDIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLRHJhd2luZ1ZpZXcuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWYgSEFWRShQRU5DSUxLSVQpCi0KLSNpbXBvcnQgIlJlbW90ZUxheWVy
VHJlZUhvc3QuaCIKLSNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVZpZXdzLmgiCi0KLU9CSkNfQ0xB
U1MgUEtJbms7Ci1PQkpDX0NMQVNTIFdLQ29udGVudFZpZXc7Ci0KLUBpbnRlcmZhY2UgV0tEcmF3
aW5nVmlldyA6IFdLRW1iZWRkZWRWaWV3IDxXS05hdGl2ZWx5SW50ZXJhY3RpYmxlPgotCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhFbWJlZGRlZFZpZXdJRDooV2ViQ29yZTo6R3JhcGhpY3NMYXll
cjo6RW1iZWRkZWRWaWV3SUQpZW1iZWRkZWRWaWV3SUQgY29udGVudFZpZXc6KFdLQ29udGVudFZp
ZXcgKiljb250ZW50VmlldzsKLQotLSAoTlNEYXRhICopUE5HUmVwcmVzZW50YXRpb247Ci0tICh2
b2lkKWxvYWREcmF3aW5nRnJvbVBOR1JlcHJlc2VudGF0aW9uOihOU0RhdGEgKilQTkdEYXRhOwot
Ci0tICh2b2lkKWRpZENoYW5nZVJ1bGVyU3RhdGU6KEJPT0wpcnVsZXJFbmFibGVkOwotLSAodm9p
ZClkaWRDaGFuZ2VJbms6KFBLSW5rICopaW5rOwotCi1AZW5kCi0KLQotI2VuZGlmIC8vIEhBVkUo
UEVOQ0lMS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJh
d2luZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5t
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJlZDEwMzczMzkwNDg3ZGY3Y2RkNTVm
ZmNhNDE4ZGI0NWJiZThkMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5tbQorKysg
L2Rldi9udWxsCkBAIC0xLDIwMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJXS0RyYXdpbmdWaWV3LmgiCi0KLSNpZiBIQVZFKFBFTkNJTEtJVCkKLQot
I2ltcG9ydCAiRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaCIKLSNpbXBvcnQgIldLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5oIgotI2ltcG9ydCAiV0tEcmF3aW5nQ29vcmRpbmF0b3IuaCIKLSNpbXBv
cnQgPHd0Zi9PU09iamVjdFB0ci5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotCi0jaW1w
b3J0ICJQZW5jaWxLaXRTb2Z0TGluay5oIgotCi1AaW50ZXJmYWNlIFdLRHJhd2luZ1ZpZXcgKCkg
PFBLQ2FudmFzVmlld0RlbGVnYXRlPgotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tEcmF3aW5n
VmlldyB7Ci0gICAgUmV0YWluUHRyPFBLQ2FudmFzVmlldz4gX3BlbmNpbFZpZXc7Ci0KLSNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCi0gICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hf
cXVldWVfdD4gX3JlbmRlclF1ZXVlOwotICAgIFJldGFpblB0cjxQS0ltYWdlUmVuZGVyZXI+IF9y
ZW5kZXJlcjsKLSNlbmRpZgotCi0gICAgX193ZWFrIFdLQ29udGVudFZpZXcgKl9jb250ZW50Vmll
dzsKLX0KLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRW1iZWRkZWRWaWV3SUQ6KFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKWVtYmVkZGVkVmlld0lEIGNvbnRlbnRWaWV3
OihXS0NvbnRlbnRWaWV3ICopY29udGVudFZpZXcKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRX
aXRoRW1iZWRkZWRWaWV3SUQ6ZW1iZWRkZWRWaWV3SURdOwotICAgIGlmICghc2VsZikKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLQotICAgIF9jb250ZW50VmlldyA9IGNvbnRlbnRWaWV3OwotCi0gICAg
X3BlbmNpbFZpZXcgPSBhZG9wdE5TKFtXZWJLaXQ6OmFsbG9jUEtDYW52YXNWaWV3SW5zdGFuY2Uo
KSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm9dKTsKLQotICAgIFtfcGVuY2lsVmlldyBzZXRGaW5n
ZXJEcmF3aW5nRW5hYmxlZDpOT107Ci0gICAgW19wZW5jaWxWaWV3IHNldFVzZXJJbnRlcmFjdGlv
bkVuYWJsZWQ6WUVTXTsKLSAgICBbX3BlbmNpbFZpZXcgc2V0T3BhcXVlOk5PXTsKLSAgICBbX3Bl
bmNpbFZpZXcgc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgW19wZW5jaWxWaWV3IHNldFJ1bGVySG9z
dGluZ0RlbGVnYXRlOl9jb250ZW50Vmlldy5fZHJhd2luZ0Nvb3JkaW5hdG9yXTsKLQotICAgIFtz
ZWxmIGFkZFN1YnZpZXc6X3BlbmNpbFZpZXcuZ2V0KCldOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19
Ci0KLS0gKHZvaWQpbGF5b3V0U3Vidmlld3MKLXsKLSAgICBpZiAoIUNHUmVjdEVxdWFsVG9SZWN0
KFtfcGVuY2lsVmlldyBmcmFtZV0sIHNlbGYuYm91bmRzKSkgewotICAgICAgICBbX3BlbmNpbFZp
ZXcgc2V0RnJhbWU6c2VsZi5ib3VuZHNdOwotCi0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lN
VUxBVE9SKQotICAgICAgICAvLyBUaGUgcmVuZGVyZXIgaXMgaW5zdGFudGlhdGVkIGZvciBhIHBh
cnRpY3VsYXIgc2l6ZSBvdXRwdXQ7IGlmCi0gICAgICAgIC8vIHRoZSBzaXplIGNoYW5nZXMsIHdl
IG5lZWQgdG8gcmUtY3JlYXRlIHRoZSByZW5kZXJlci4KLSAgICAgICAgX3JlbmRlcmVyID0gbmls
OwotI2VuZGlmCi0KLSAgICAgICAgW3NlbGYgaW52YWxpZGF0ZUF0dGFjaG1lbnRdOwotICAgIH0K
LX0KLQotc3RhdGljIFVJSW1hZ2UgKmVtcHR5SW1hZ2UoKQotewotICAgIFVJR3JhcGhpY3NCZWdp
bkltYWdlQ29udGV4dChDR1NpemVNYWtlKDEsIDEpKTsKLSAgICBDR0NvbnRleHRDbGVhclJlY3Qo
VUlHcmFwaGljc0dldEN1cnJlbnRDb250ZXh0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSkpOwot
ICAgIFVJSW1hZ2UgKnJlc3VsdEltYWdlID0gVUlHcmFwaGljc0dldEltYWdlRnJvbUN1cnJlbnRJ
bWFnZUNvbnRleHQoKTsKLSAgICBVSUdyYXBoaWNzRW5kSW1hZ2VDb250ZXh0KCk7Ci0KLSAgICBy
ZXR1cm4gcmVzdWx0SW1hZ2U7Ci19Ci0KLS0gKFVJSW1hZ2UgKilyZW5kZXJlZERyYXdpbmcKLXsK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKLSAgICAvLyBQS0ltYWdlUmVuZGVy
ZXIgY3VycmVudGx5IGRvZXNuJ3Qgd29yayBpbiB0aGUgc2ltdWxhdG9yLiBJbiBvcmRlciB0bwot
ICAgIC8vIGFsbG93IHN0cm9rZXMgdG8gcGVyc2lzdCByZWdhcmRsZXNzIChtb3N0bHkgZm9yIHRl
c3RpbmcpLCB3ZSdsbAotICAgIC8vIHN5bnRoZXNpemUgYW4gZW1wdHkgMXgxIGltYWdlLgotICAg
IHJldHVybiBlbXB0eUltYWdlKCk7Ci0jZWxzZQotICAgIGlmICghc2VsZi5ib3VuZHMuc2l6ZS53
aWR0aCB8fCAhc2VsZi5ib3VuZHMuc2l6ZS5oZWlnaHQgfHwgIXNlbGYud2luZG93LnNjcmVlbi5z
Y2FsZSkKLSAgICAgICAgcmV0dXJuIGVtcHR5SW1hZ2UoKTsKLQotICAgIGlmICghX3JlbmRlclF1
ZXVlKQotICAgICAgICBfcmVuZGVyUXVldWUgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVl
X2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5XS0RyYXdpbmdWaWV3LlJlbmRlcmluZyIsIERJU1BB
VENIX1FVRVVFX1NFUklBTCkpOwotCi0gICAgaWYgKCFfcmVuZGVyZXIpCi0gICAgICAgIF9yZW5k
ZXJlciA9IGFkb3B0TlMoW1dlYktpdDo6YWxsb2NQS0ltYWdlUmVuZGVyZXJJbnN0YW5jZSgpIGlu
aXRXaXRoU2l6ZTpzZWxmLmJvdW5kcy5zaXplIHNjYWxlOnNlbGYud2luZG93LnNjcmVlbi5zY2Fs
ZSByZW5kZXJRdWV1ZTpfcmVuZGVyUXVldWUuZ2V0KCldKTsKLQotICAgIF9fYmxvY2sgUmV0YWlu
UHRyPFVJSW1hZ2U+IHJlc3VsdEltYWdlOwotCi0gICAgW19yZW5kZXJlciByZW5kZXJEcmF3aW5n
OltfcGVuY2lsVmlldyBub25OdWxsRHJhd2luZ10gY29tcGxldGlvbjpeKFVJSW1hZ2UgKmltYWdl
KSB7Ci0gICAgICAgIHJlc3VsdEltYWdlID0gaW1hZ2U7Ci0gICAgfV07Ci0KLSAgICAvLyBGSVhN
RTogSWRlYWxseSB3ZSB3b3VsZCBub3Qgc3luY2hyb25vdXNseSB3YWl0IGZvciB0aGlzIHJlbmRl
cmluZywKLSAgICAvLyBidXQgTlNGaWxlV3JhcHBlciByZXF1aXJlcyBkYXRhIHN5bmNocm9ub3Vz
bHksIGFuZCBvdXIgY2xpZW50cyBleHBlY3QKLSAgICAvLyBhbiBOU0ZpbGVXcmFwcGVyIHRvIGJl
IGF2YWlsYWJsZSBzeW5jaHJvbm91c2x5LgotICAgIGRpc3BhdGNoX3N5bmMoX3JlbmRlclF1ZXVl
LmdldCgpLCBeeyB9KTsKLQotICAgIHJldHVybiByZXN1bHRJbWFnZS5hdXRvcmVsZWFzZSgpOwot
I2VuZGlmCi19Ci0KLS0gKE5TRGF0YSAqKVBOR1JlcHJlc2VudGF0aW9uCi17Ci0gICAgUmV0YWlu
UHRyPFVJSW1hZ2U+IGltYWdlID0gW3NlbGYgcmVuZGVyZWREcmF3aW5nXTsKLSAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlRGF0YT4gUE5HRGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9j
XSBpbml0XSk7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VEZXN0aW5hdGlvblJlZj4gaW1hZ2VEZXN0
aW5hdGlvbiA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoKF9fYnJp
ZGdlIENGTXV0YWJsZURhdGFSZWYpUE5HRGF0YS5nZXQoKSwga1VUVHlwZVBORywgMSwgbmlsKSk7
Ci0gICAgTlNTdHJpbmcgKmJhc2U2NERyYXdpbmcgPSBbW1tfcGVuY2lsVmlldyBub25OdWxsRHJh
d2luZ10gc2VyaWFsaXplXSBiYXNlNjRFbmNvZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF07Ci0gICAg
TlNEaWN0aW9uYXJ5ICpwcm9wZXJ0aWVzID0gbmlsOwotICAgIGlmIChiYXNlNjREcmF3aW5nKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcHV0IHRoaXMgc29tZXdoZXJlIGxlc3MgdXNl
ci1mYWNpbmcgdGhhbiB0aGUgRVhJRiBVc2VyIENvbW1lbnQgZmllbGQuCi0gICAgICAgIHByb3Bl
cnRpZXMgPSBAewotICAgICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NHSW1hZ2VQcm9w
ZXJ0eUV4aWZEaWN0aW9uYXJ5IDogQHsKLSAgICAgICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJp
bmcgKilrQ0dJbWFnZVByb3BlcnR5RXhpZlVzZXJDb21tZW50IDogYmFzZTY0RHJhd2luZwotICAg
ICAgICAgICAgfQotICAgICAgICB9OwotICAgIH0KLSAgICBDR0ltYWdlRGVzdGluYXRpb25TZXRQ
cm9wZXJ0aWVzKGltYWdlRGVzdGluYXRpb24uZ2V0KCksIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlS
ZWYpcHJvcGVydGllcyk7Ci0gICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoaW1hZ2VEZXN0
aW5hdGlvbi5nZXQoKSwgW2ltYWdlIENHSW1hZ2VdLCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVm
KXByb3BlcnRpZXMpOwotICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGltYWdlRGVzdGlu
YXRpb24uZ2V0KCkpOwotCi0gICAgcmV0dXJuIFBOR0RhdGEuYXV0b3JlbGVhc2UoKTsKLX0KLQot
LSAodm9pZClsb2FkRHJhd2luZ0Zyb21QTkdSZXByZXNlbnRhdGlvbjooTlNEYXRhICopUE5HRGF0
YQotewotICAgIFJldGFpblB0cjxDR0ltYWdlU291cmNlUmVmPiBpbWFnZVNvdXJjZSA9IGFkb3B0
Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZVdpdGhEYXRhKChfX2JyaWRnZSBDRkRhdGFSZWYpUE5HRGF0
YSwgbnVsbHB0cikpOwotICAgIGlmICghaW1hZ2VTb3VyY2UpCi0gICAgICAgIHJldHVybjsKLSAg
ICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBwcm9wZXJ0aWVzID0gYWRvcHROUygoX19icmlkZ2Ug
TlNEaWN0aW9uYXJ5ICopQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChpbWFnZVNv
dXJjZS5nZXQoKSwgMCwgbmlsKSk7Ci0gICAgTlNTdHJpbmcgKmJhc2U2NERyYXdpbmcgPSBbW3By
b3BlcnRpZXMgb2JqZWN0Rm9yS2V5OihOU1N0cmluZyAqKWtDR0ltYWdlUHJvcGVydHlFeGlmRGlj
dGlvbmFyeV0gb2JqZWN0Rm9yS2V5OihOU1N0cmluZyAqKWtDR0ltYWdlUHJvcGVydHlFeGlmVXNl
ckNvbW1lbnRdOwotICAgIGlmICghYmFzZTY0RHJhd2luZykKLSAgICAgICAgcmV0dXJuOwotICAg
IFJldGFpblB0cjxOU0RhdGE+IGRyYXdpbmdEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10g
aW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmJhc2U2NERyYXdpbmcgb3B0aW9uczowXSk7Ci0g
ICAgUmV0YWluUHRyPFBLRHJhd2luZz4gZHJhd2luZyA9IGFkb3B0TlMoW1dlYktpdDo6YWxsb2NQ
S0RyYXdpbmdJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkcmF3aW5nRGF0YS5nZXQoKSBlcnJvcjpu
aWxdKTsKLSAgICBbX3BlbmNpbFZpZXcgc2V0Tm9uTnVsbERyYXdpbmc6ZHJhd2luZy5nZXQoKV07
Ci19Ci0KLS0gKHZvaWQpY2FudmFzVmlld0RyYXdpbmdEaWRDaGFuZ2U6KFBLQ2FudmFzVmlldyAq
KWNhbnZhc1ZpZXcKLXsKLSAgICBbc2VsZiBpbnZhbGlkYXRlQXR0YWNobWVudF07Ci19Ci0KLS0g
KHZvaWQpX2NhbnZhc1ZpZXdXaWxsQmVnaW5EcmF3aW5nOihQS0NhbnZhc1ZpZXcgKiljYW52YXNW
aWV3Ci17Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIFtfcGVuY2ls
VmlldyBzZXRJbms6X2NvbnRlbnRWaWV3Ll9kcmF3aW5nQ29vcmRpbmF0b3IuY3VycmVudElua107
Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLX0KLQotLSAodm9pZClpbnZhbGlk
YXRlQXR0YWNobWVudAotewotICAgIGlmICghX2NvbnRlbnRWaWV3LnBhZ2UpCi0gICAgICAgIHJl
dHVybjsKLSAgICBhdXRvJiBwYWdlID0gKl9jb250ZW50Vmlldy5wYWdlOwotCi0gICAgcGFnZS5l
ZGl0YWJsZUltYWdlQ29udHJvbGxlcigpLmludmFsaWRhdGVBdHRhY2htZW50Rm9yRWRpdGFibGVJ
bWFnZShzZWxmLmVtYmVkZGVkVmlld0lEKTsKLX0KLQotLSAodm9pZClkaWRDaGFuZ2VSdWxlclN0
YXRlOihCT09MKXJ1bGVyRW5hYmxlZAotewotICAgIFtfcGVuY2lsVmlldyBzZXRSdWxlckVuYWJs
ZWQ6cnVsZXJFbmFibGVkXTsKLX0KLQotLSAodm9pZClkaWRDaGFuZ2VJbms6KFBLSW5rICopaW5r
Ci17Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIFtfcGVuY2lsVmll
dyBzZXRJbms6aW5rXTsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotfQotCi1A
ZW5kCi0KLSNlbmRpZiAvLyBIQVZFKFBFTkNJTEtJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDQ1YzBiZDQ5NTcwYTVlZTNiZTFiODkz
ZWNhZWFjYjgzNWRkOWIyNWUuLjM3ZjVjYWIzYmI2OTVmZTU1MTNiODVkNmQxODQ3MzAxMTQ1YzI2
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQpAQCAtNjI1LDExICs2MjUsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVHdvRmluZ2Vy
VGFwQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIE9wdAogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQocG9pbnQsIG1vZGlm
aWVycywgcmVxdWVzdElEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVTdHlsdXNT
aW5nbGVUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDY0X3Qg
cmVxdWVzdElEKQotewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZVN0eWx1c1Np
bmdsZVRhcEF0UG9pbnQocG9pbnQsIHJlcXVlc3RJRCkpOwotfQotCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQgdG8sIEdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBHZXN0dXJl
UmVjb2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBPcHRpb25T
ZXQ8U2VsZWN0aW9uRmxhZ3M+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9jdXNlZEZvcm1Db250cm9sVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZvY3VzZWRGb3JtQ29udHJv
bFZpZXcubW0KaW5kZXggNDIxMTFkMTg1NGQ3MzMxMjhhNjdjMTc2YWU4NTAxZGIyYjkzNDlmMS4u
MzgzOWYwODllZDk1MzM2M2IxZjQ0ZGQxZTM2YWVmMjM5M2ZiNmE1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9jdXNlZEZvcm1Db250cm9sVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb2N1c2VkRm9ybUNv
bnRyb2xWaWV3Lm1tCkBAIC0zMCw2ICszMCw3IEBACiAKIGFzbSgiLmxpbmtlcl9vcHRpb24gXCIt
ZnJhbWV3b3JrXCIsIFwiUGVwcGVyVUlDb3JlXCIiKTsKIAorI2ltcG9ydCAiUGVwcGVyVUlDb3Jl
U1BJLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViQ29yZUNBTGF5ZXJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4v
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KaW5k
ZXggNjg5OTQzYjRmNmY4M2FhMzUyMzJmZmNmYjEyNGZiODhhNDE1MTExMi4uOTJhNDJiNGNhNTZi
MzdjMTg0MmE4Y2IxMWRhNWVjYTBkMmEyN2U4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLmgiCiAKICNpbXBvcnQgIlVJS2l0U1BJLmgiCisj
aW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCIKICNpbXBvcnQgIldLRnVsbFNj
cmVlblZpZXdDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCIK
ICNpbXBvcnQgIldLV2ViVmlldy5oIgpAQCAtNDQsNiArNDUsOCBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9HZW9tZXRyeVV0aWxpdGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVmlkZW9GdWxsc2Ny
ZWVuTW9kZWwuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KICNpbXBv
cnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05T
U3RyaW5nU1BJLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJD
b250ZXh0TWVudVByb3h5TWFjLm1tCmluZGV4IGJmMjkyZGJlZDllZjM4ZGQ1M2NkODk2M2RhYmE4
NDc1YzcxZGVmNTguLjVhZDg4N2IxM2ZiNDEyMjQzODNlNDAwMTRiNDg5MTBjYmUyZTdkY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVBy
b3h5TWFjLm1tCkBAIC00Myw2ICs0Myw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU01lbnVT
UEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TU2hhcmluZ1NlcnZpY2VQaWNrZXJTUEkuaD4K
ICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TV2luZG93U1BJLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQ
dHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGludGVyZmFjZSBXS1VzZXJEYXRh
V3JhcHBlciA6IE5TT2JqZWN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDEyMzk2ZjVmYTBkMmE3NjdlMjUwODJjZTZhZTM2ODdlMjFj
NWU4YjQuLjAzNmRiNmFjZjgwZjQxZDljNDQ3MjY0NjY5MjMwMDc5NTYxODFjN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjM3LDEx
ICs2MzcsOSBAQAogCQkyRDU0QzMxOTIxMkYzQjMzMDA0OUMxNzQgLyogVW5pZmllZFNvdXJjZTYy
LW1tLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1
NEMzMDUyMTJGM0IzMzAwNDlDMTc0IC8qIFVuaWZpZWRTb3VyY2U2Mi1tbS5tbSAqLzsgfTsKIAkJ
MkQ1NEMzMUEyMTJGM0IzMzAwNDlDMTc0IC8qIFVuaWZpZWRTb3VyY2U2MS1tbS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENTRDMzA2MjEyRjNCMzMw
MDQ5QzE3NCAvKiBVbmlmaWVkU291cmNlNjEtbW0ubW0gKi87IH07CiAJCTJENTRDMzFCMjEyRjRE
QTYwMDQ5QzE3NCAvKiBQcm9jZXNzTGF1bmNoZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFMTE3RjUxMURCQjMwOTAwOTgxNjE1IC8qIFByb2Nl
c3NMYXVuY2hlci5jcHAgKi87IH07Ci0JCTJENTg3NUJGMjE5QjUzMTUwMDcwQjlBQSAvKiBFZGl0
YWJsZUltYWdlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkQ1ODc1QkQyMTlCNTMxNTAwNzBCOUFBIC8qIEVkaXRhYmxlSW1hZ2VDb250
cm9sbGVyLmggKi87IH07CiAJCTJENUM5RDA2MTlDODFEOEYwMEIzQzVDMSAvKiBXZWJQYWdlT3Zl
cmxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1
QzlEMDQxOUM4MUQ4RjAwQjNDNUMxIC8qIFdlYlBhZ2VPdmVybGF5LmggKi87IH07CiAJCTJENkFC
NTQxMTkyQjFDNEEwMDNBOUZEMSAvKiBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENkFCNTNGMTkyQjFDNEEw
MDNBOUZEMSAvKiBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IuaCAqLzsgfTsKIAkJMkQ2QjM3MUIx
OEE5NjdBRDAwNDJBRTgwIC8qIF9XS1RodW1ibmFpbFZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENkIzNzE5MThBOTY3QUQwMDQyQUU4MCAvKiBf
V0tUaHVtYm5haWxWaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJMkQ2QkYxMjQyMUFGNTZFMTAwMUU3OUM5IC8qIFBlbmNpbEtpdFNvZnRMaW5r
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZCRjEy
MjIxQUY1NkUxMDAxRTc5QzkgLyogUGVuY2lsS2l0U29mdExpbmsuaCAqLzsgfTsKIAkJMkQ2Q0Qx
MTkxODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZDRDExNzE4OTA1OEE1MDBFNUE0QTAg
LyogVmlld1NuYXBzaG90U3RvcmUuaCAqLzsgfTsKIAkJMkQ3MkExRkEyMTJCRjQ2RTAwNTE3QTIw
IC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCMTZBREIxNjQ4NTk4NDAwMjkwRDYyIC8qIFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tICovOyB9OwogCQkyRDczMDM3OTFBN0MyQjc1MDBGOEY0
ODcgLyogV0tQYWdlTmF2aWdhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ3MzAzNzgxQTdDMkI3NTAwRjhGNDg3IC8qIFdLUGFnZU5h
dmlnYXRpb25DbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtNzQzLDggKzc0MSw2IEBACiAJCTJEQjk0Mjk5MjM0RTdBN0YwMEU3NzZBRCAv
KiBXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEQjk0Mjk3MjM0RTdBN0YwMEU3NzZBRCAvKiBXS01vdXNlR2Vz
dHVyZVJlY29nbml6ZXIuaCAqLzsgfTsKIAkJMkRCOTYwNTMyMzk4ODZDMTAwMTAyNzkxIC8qIGNv
bS5hcHBsZS5XZWJLaXQuR1BVLnNiIGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyREI5NjA1MjIzOTg4NkI5MDAxMDI3OTEgLyogY29tLmFwcGxlLldlYktp
dC5HUFUuc2IgKi87IH07CiAJCTJEQzE4MTI0NUI1NDkzNDNCQzk4MTY0QyAvKiBTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJEQzE4NTVFREJGQjg1MEJBMEI2RDA2RCAvKiBTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlLmNwcCAqLzsgfTsKLQkJMkRDMThGQUQyMTg5MTA0OTAwMjVBODhEIC8qIFdLRHJhd2lu
Z1ZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
QzE4RkFCMjE4OTEwNDgwMDI1QTg4RCAvKiBXS0RyYXdpbmdWaWV3LmggKi87IH07Ci0JCTJEQzE4
RkIwMjE4OTEyNjQwMDI1QTg4RCAvKiBQZW5jaWxLaXRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQzE4RkFGMjE4OTEyNjQwMDI1QTg4RCAvKiBQ
ZW5jaWxLaXRTUEkuaCAqLzsgfTsKIAkJMkRDMThGQjMyMThBNkU5RTAwMjVBODhEIC8qIFJlbW90
ZUxheWVyVHJlZVZpZXdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyREMxOEZCMTIxOEE2RTlFMDAyNUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3Mu
aCAqLzsgfTsKIAkJMkRDMThGQjQyMThBNkU5RTAwMjVBODhEIC8qIFJlbW90ZUxheWVyVHJlZVZp
ZXdzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRD
MThGQjIyMThBNkU5RTAwMjVBODhEIC8qIFJlbW90ZUxheWVyVHJlZVZpZXdzLm1tICovOyB9Owog
CQkyREMxOEZFQkYzMzdCOTY3MUM4OEUzQ0QgLyogU2hhcmVkQnVmZmVyQ29weS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREMxODAwMUQ5MERERDE1
RkM2OTkxQTkgLyogU2hhcmVkQnVmZmVyQ29weS5jcHAgKi87IH07CkBAIC0yODQzLDggKzI4Mzks
NiBAQAogCQkyRDFCNUQ1QzE4NTg2OUM4MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVy
TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVmlld0dlc3R1cmVD
b250cm9sbGVyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvVmlld0dl
c3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJMkQxRTgyMjEyMTZGRkY1MDAwQTE1MjY1IC8qIFdLV2ViRXZlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tXZWJFdmVudC5oOyBwYXRoID0gaW9zL1dLV2Vi
RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQxRTgyMjIyMTZGRkY1MTAw
QTE1MjY1IC8qIFdLV2ViRXZlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBXS1dlYkV2ZW50Lm1tOyBwYXRoID0gaW9zL1dLV2ViRXZlbnQubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJEMjFBNDU4MjFERUQ0OUIwMDI0ODdFNyAvKiBXS0RyYXdp
bmdDb29yZGluYXRvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLRHJhd2luZ0Nvb3JkaW5h
dG9yLm1tOyBwYXRoID0gaW9zL1dLRHJhd2luZ0Nvb3JkaW5hdG9yLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkyRDIxQTQ1OTIxREVENDlCMDAyNDg3RTcgLyogV0tEcmF3aW5nQ29v
cmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tEcmF3aW5nQ29vcmRpbmF0b3IuaDsgcGF0aCA9
IGlvcy9XS0RyYXdpbmdDb29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRDI4QTQ5NTFBRjk2NUExMDBGMTkwQzkgLyogV0tWaWV3TGF5b3V0U3RyYXRlZ3kuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tWaWV3TGF5b3V0U3RyYXRlZ3kuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyOEE0OTYxQUY5NjVBMTAwRjE5MEM5IC8qIFdL
Vmlld0xheW91dFN0cmF0ZWd5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV0tWaWV3TGF5b3V0U3RyYXRlZ3kubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJEMjhGM0UwMTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJDaHJvbWVDbGllbnRJT1MubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJDaHJvbWVDbGllbnRJT1Mu
bW07IHBhdGggPSBpb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjkwMCwxNyArMjg5NCwxMiBAQAogCQkyRDU0QzMwNDIxMkYzQjMzMDA0OUMx
NzQgLyogVW5pZmllZFNvdXJjZTcxLW1tLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gIlVuaWZp
ZWRTb3VyY2U3MS1tbS5tbSI7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi91bmlmaWVk
LXNvdXJjZXMvVW5pZmllZFNvdXJjZTcxLW1tLm1tIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJMkQ1NEMzMDUyMTJGM0IzMzAwNDlDMTc0IC8qIFVuaWZpZWRTb3VyY2U2
Mi1tbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9ICJVbmlmaWVkU291cmNlNjItbW0ubW0iOyBw
YXRoID0gIkRlcml2ZWRTb3VyY2VzL1dlYktpdDIvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3Vy
Y2U2Mi1tbS5tbSI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTJENTRD
MzA2MjEyRjNCMzMwMDQ5QzE3NCAvKiBVbmlmaWVkU291cmNlNjEtbW0ubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSAiVW5pZmllZFNvdXJjZTYxLW1tLm1tIjsgcGF0aCA9ICJEZXJpdmVkU291cmNl
cy9XZWJLaXQyL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlNjEtbW0ubW0iOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQkyRDU4NzVCQjIxOUIyOEE1MDA3MEI5QUEg
LyogRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBu
YW1lID0gRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubWVzc2FnZXMuaW47IHBhdGggPSBpb3MvRWRp
dGFibGVJbWFnZUNvbnRyb2xsZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTJENTg3NUJEMjE5QjUzMTUwMDcwQjlBQSAvKiBFZGl0YWJsZUltYWdlQ29udHJvbGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBFZGl0YWJsZUltYWdlQ29udHJv
bGxlci5oOyBwYXRoID0gaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTJENTg3NUJFMjE5QjUzMTUwMDcwQjlBQSAvKiBFZGl0YWJsZUlt
YWdlQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tOyBwYXRoID0gaW9zL0VkaXRhYmxlSW1hZ2VDb250
cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDVDOUQwMzE5QzgxRDhG
MDBCM0M1QzEgLyogV2ViUGFnZU92ZXJsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViUGFnZU92ZXJsYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDVDOUQwNDE5QzgxRDhGMDBCM0M1QzEgLyogV2ViUGFnZU92ZXJsYXkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZU92ZXJsYXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2QUI1M0YxOTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51
bWJlckluZGljYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1BERlBh
Z2VOdW1iZXJJbmRpY2F0b3IuaDsgcGF0aCA9IGlvcy9XS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2QUI1NDAxOTJCMUM0QTAwM0E5RkQx
IC8qIFdLUERGUGFnZU51bWJlckluZGljYXRvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IFdLUERGUGFnZU51bWJlckluZGljYXRvci5tbTsgcGF0aCA9IGlvcy9X
S1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJENkIzNzE5MThBOTY3QUQwMDQyQUU4MCAvKiBfV0tUaHVtYm5haWxWaWV3LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1RodW1ibmFpbFZpZXcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2QjM3MUExOEE5NjdBRDAwNDJBRTgwIC8qIF9XS1RodW1ibmFp
bFZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tUaHVt
Ym5haWxWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyRDZCRjEyMTIxQUY1
NkUxMDAxRTc5QzkgLyogUGVuY2lsS2l0U29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBQZW5jaWxLaXRTb2Z0TGluay5tbTsgcGF0aCA9IGlvcy9QZW5j
aWxLaXRTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkQ2QkYxMjIy
MUFGNTZFMTAwMUU3OUM5IC8qIFBlbmNpbEtpdFNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFBlbmNpbEtpdFNvZnRMaW5rLmg7IHBhdGggPSBpb3MvUGVuY2lsS2l0
U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2Q0QxMTcxODkwNThB
NTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFZpZXdTbmFwc2hvdFN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJENkNEMTE4MTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZU1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpZXdTbmFwc2hvdFN0b3Jl
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDZDRDExQTE4OTA1OEE1MDBF
NUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVmlld1NuYXBzaG90U3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzE2MCw5ICszMTQ5LDYgQEAKIAkJMkRDMTgwMDFEOTBEREQxNUZDNjk5MUE5IC8q
IFNoYXJlZEJ1ZmZlckNvcHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2hhcmVkQnVmZmVyQ29weS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJE
QzE4NTVFREJGQjg1MEJBMEI2RDA2RCAvKiBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREMxODgxQUNCQ0FCNUQ1
N0M1QzZFRjAgLyogU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTJEQzE4RkFCMjE4OTEwNDgwMDI1QTg4RCAvKiBXS0RyYXdpbmdW
aWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRHJhd2luZ1ZpZXcuaDsg
cGF0aCA9IGlvcy9XS0RyYXdpbmdWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTJEQzE4RkFDMjE4OTEwNDgwMDI1QTg4RCAvKiBXS0RyYXdpbmdWaWV3Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tEcmF3aW5nVmlldy5tbTsgcGF0aCA9IGlv
cy9XS0RyYXdpbmdWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyREMxOEZB
RjIxODkxMjY0MDAyNUE4OEQgLyogUGVuY2lsS2l0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBlbmNpbEtpdFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyREMxOEZCMTIxOEE2RTlFMDAyNUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlVmlld3MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRDMThGQjIyMThBNkU5RTAwMjVBODhEIC8qIFJl
bW90ZUxheWVyVHJlZVZpZXdzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUmVtb3RlTGF5ZXJUcmVlVmlld3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJEQzRDRjdBMUQyREUyNEIwMEVDQ0M5NCAvKiBXZWJQYWdlQ29jb2EubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQYWdlQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MDE0LDE3ICs3MDAwLDEyIEBACiAJCQkJMUFENEMxOTAx
QjM5RjMzMjAwQUJDMjhFIC8qIEFwcGxpY2F0aW9uU3RhdGVUcmFja2VyLm1tICovLAogCQkJCUY0
OTZBNDJGMUY1OEEyNzIwMDRDMTc1NyAvKiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaCAqLywK
IAkJCQlGNDk2QTQzMDFGNThBMjcyMDA0QzE3NTcgLyogRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRl
Lm1tICovLAotCQkJCTJENTg3NUJEMjE5QjUzMTUwMDcwQjlBQSAvKiBFZGl0YWJsZUltYWdlQ29u
dHJvbGxlci5oICovLAotCQkJCTJENTg3NUJCMjE5QjI4QTUwMDcwQjlBQSAvKiBFZGl0YWJsZUlt
YWdlQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLywKLQkJCQkyRDU4NzVCRTIxOUI1MzE1MDA3MEI5
QUEgLyogRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0gKi8sCiAJCQkJQ0RDREM5OUIyNDhGRThE
QTAwQTY5NTIyIC8qIEVuZG93bWVudFN0YXRlVHJhY2tlci5oICovLAogCQkJCUNEQ0RDOTlDMjQ4
RkU4REEwMEE2OTUyMiAvKiBFbmRvd21lbnRTdGF0ZVRyYWNrZXIubW0gKi8sCiAJCQkJMkRENDVB
REMxRTVGODk3MjAwNkMzNTVGIC8qIElucHV0Vmlld1VwZGF0ZURlZmVycmVyLmggKi8sCiAJCQkJ
MkRENDVBREQxRTVGODk3MjAwNkMzNTVGIC8qIElucHV0Vmlld1VwZGF0ZURlZmVycmVyLm1tICov
LAogCQkJCTBGQ0I0RTM2MThCQkUwNDQwMDBGQ0ZDOSAvKiBQYWdlQ2xpZW50SW1wbElPUy5oICov
LAogCQkJCTBGQ0I0RTM3MThCQkUwNDQwMDBGQ0ZDOSAvKiBQYWdlQ2xpZW50SW1wbElPUy5tbSAq
LywKLQkJCQkyRDZCRjEyMjIxQUY1NkUxMDAxRTc5QzkgLyogUGVuY2lsS2l0U29mdExpbmsuaCAq
LywKLQkJCQkyRDZCRjEyMTIxQUY1NkUxMDAxRTc5QzkgLyogUGVuY2lsS2l0U29mdExpbmsubW0g
Ki8sCiAJCQkJODZGOTUzNjIxOEZGNTUwQjAwMURCMkVGIC8qIFByb2Nlc3NBc3NlcnRpb25JT1Mu
bW0gKi8sCiAJCQkJNTFFNkMxNUYxRjI5MzU1MTAwRkQzNDM3IC8qIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZUlPUy5tbSAqLywKIAkJCQkyREFGMDZENDE4QkQxQTQ3MDA4
MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oICovLApAQCAtNzA1MSwxMCAr
NzAzMiw2IEBACiAJCQkJMEZDQjRFNkIxOEJCRjI2QTAwMEZDRkM5IC8qIFdLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbSAqLywKIAkJCQlGNDQ4MTU2MjIzODc4MjAwMDA5ODI2NTcgLyogV0tEZWZl
cnJpbmdHZXN0dXJlUmVjb2duaXplci5oICovLAogCQkJCUY0NDgxNTYzMjM4NzgyMDAwMDk4MjY1
NyAvKiBXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLm1tICovLAotCQkJCTJEMjFBNDU5MjFE
RUQ0OUIwMDI0ODdFNyAvKiBXS0RyYXdpbmdDb29yZGluYXRvci5oICovLAotCQkJCTJEMjFBNDU4
MjFERUQ0OUIwMDI0ODdFNyAvKiBXS0RyYXdpbmdDb29yZGluYXRvci5tbSAqLywKLQkJCQkyREMx
OEZBQjIxODkxMDQ4MDAyNUE4OEQgLyogV0tEcmF3aW5nVmlldy5oICovLAotCQkJCTJEQzE4RkFD
MjE4OTEwNDgwMDI1QTg4RCAvKiBXS0RyYXdpbmdWaWV3Lm1tICovLAogCQkJCTBGQ0I0RTNGMThC
QkUwNDQwMDBGQ0ZDOSAvKiBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MuaCAqLywKIAkJCQkwRkNC
NEU0MDE4QkJFMDQ0MDAwRkNGQzkgLyogV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tICovLAog
CQkJCTBGQ0I0RTQxMThCQkUwNDQwMDBGQ0ZDOSAvKiBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1NP
YmpDU2VjdXJpdHlPcmlnaW4ubW0gKi8sCkBAIC0xMDQ0Miw3ICsxMDQxOSw2IEBACiAJCQkJMkQ0
QUYwODgyMDQ0QzNDNDAwNkM4ODE3IC8qIEZyb250Qm9hcmRTZXJ2aWNlc1NQSS5oICovLAogCQkJ
CUExM0IzREExMjA3RjM5REUwMDkwQzU4RCAvKiBNb2JpbGVXaUZpU1BJLmggKi8sCiAJCQkJMzE3
OEFGOTcyMEUyQTdGODAwNzRERTk0IC8qIFBERktpdFNQSS5oICovLAotCQkJCTJEQzE4RkFGMjE4
OTEyNjQwMDI1QTg4RCAvKiBQZW5jaWxLaXRTUEkuaCAqLywKIAkJCQk0NkYzOEU4QjI0MTZFNjZE
MDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCAqLywKIAkJCQlDRTFBMEJEMDFB
NDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmggKi8sCiAJCQkJQ0UxQTBCRDExQTQ4RTZDNjAwNTRF
Rjc0IC8qIFRleHRJbnB1dFNQSS5oICovLApAQCAtMTA4NDUsNyArMTA4MjEsNiBAQAogCQkJCUJD
MjY1MjE3MTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTY0MjMwOTEyREQwOUVCMDBDQUFFMkMgLyogRHJhd2luZ0FyZWFQcm94eU1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREE2NzMxQTIwQzc1NEIxMDAzQ0I0MDEgLyogRHlu
YW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkQ1ODc1QkYyMTlC
NTMxNTAwNzBCOUFBIC8qIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMTA1RkU1NDE4RDdCOURFMDA4RjU3QTggLyogRWRpdGluZ1JhbmdlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUE0MUFCNTEyQzAyRUM0MDAyQkU2N0IgLyogRWRpdG9yU3RhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMDMyREE4MTBGNDM3RDEwMDU4QzE1QSAvKiBFbmNvZGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTExMDMzLDggKzExMDA4LDYgQEAKIAkJCQlBMTc5OEI0MzIyMkQ5OERG
MDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzFFMTIzQkEyMEExMTU3MzAwMjY0NkY0IC8qIFBERkNvbnRleHRNZW51Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMTk1ODJEMzE1M0NCRkQ3MDBCNjA4NzUgLyogUERGS2l0SW1w
b3J0cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkQ2QkYxMjQyMUFGNTZFMTAwMUU3OUM5IC8qIFBl
bmNpbEtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKLQkJCQkyREMxOEZCMDIxODkxMjY0MDAy
NUE4OEQgLyogUGVuY2lsS2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzI5OERBMDFDM0RG
MDIxMDA0NzBBRkUgLyogUGVuZGluZ0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzJF
RDE4QzFFMkZFMTU3MDA2QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0FGQkQzNkYyMUU1NDZGODAwNURCQUNCIC8qIFBlcnNpc3Rl
bmN5VXRpbHMuaCBpbiBIZWFkZXJzICovLApAQCAtMTE1OTYsNyArMTE1NjksNiBAQAogCQkJCTFB
QjdENzhEMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2MzcyODFBMjIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3dubG9hZFByb2dyZXNzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNDA5QkExODFFNkU2NEJDMDA5REEyOEUgLyogV0tEcmFnRGVzdGluYXRp
b25BY3Rpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTJEQzE4RkFEMjE4OTEwNDkwMDI1QTg4RCAv
KiBXS0RyYXdpbmdWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUNGNjZDRTIxRDZCNzdFMDA5
RTVDM0YgLyogV0tFZGl0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGNDU5MkYxOTQ2
NEIyMDAwRjlENEEyIC8qIFdLRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkQ1NDhDMTMy
RDgyNjgwMDU1RDgxNiAvKiBXS0Vycm9yQ0YuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCmluZGV4IGYwZThlNGUzYzkxMGI3NTBlMDMyNjRkZjg5NTJmMzYyNzkyZWFhZTIuLjliZmJj
ODJlMTlhY2M0YTljMjRkM2M3OTc4MjlhZDJhZTE0NmQ4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
QEAgLTE4NCwxMCArMTg0LDYgQEAgcHJpdmF0ZToKIAogICAgIFNlY29uZHMgZXZlbnRUaHJvdHRs
aW5nRGVsYXkoKSBmaW5hbDsKIAotICAgIHZvaWQgYXNzb2NpYXRlRWRpdGFibGVJbWFnZVdpdGhB
dHRhY2htZW50KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lELCBjb25zdCBT
dHJpbmcmIGF0dGFjaG1lbnRJRCkgZmluYWw7Ci0gICAgdm9pZCBkaWRDcmVhdGVFZGl0YWJsZUlt
YWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKSBmaW5hbDsKLSAgICB2
b2lkIGRpZERlc3Ryb3lFZGl0YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVk
ZGVkVmlld0lEKSBmaW5hbDsKLQogICAgIGJvb2wgc2hvdWxkVXNlTW91c2VFdmVudEZvclNlbGVj
dGlvbihjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQmKSBmaW5hbDsKIAogICAgIGJv
b2wgc2hvd0RhdGFEZXRlY3RvcnNVSUZvckVsZW1lbnQoY29uc3QgV2ViQ29yZTo6RWxlbWVudCYs
IGNvbnN0IFdlYkNvcmU6OkV2ZW50JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNsaWVudElPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xpZW50
SU9TLm1tCmluZGV4IGZlZmE1YTZlNzkzNWY1YzM1YmVhYmVlNTg3ZjM2ZmE2M2M2N2Y2NGQuLjQx
ZTgxYzJiYWNlNzZiZjY5OGJhNjQ4NjVjZjIwNzIyODBjOWZiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
Q2hyb21lQ2xpZW50SU9TLm1tCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogI2ltcG9ydCAiRHJhd2luZ0FyZWEuaCIKLSNpbXBvcnQgIkVkaXRhYmxlSW1hZ2VD
b250cm9sbGVyTWVzc2FnZXMuaCIKICNpbXBvcnQgIkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uLmgiCiAjaW1wb3J0ICJJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oIgogI2lt
cG9ydCAiVUlLaXRTUEkuaCIKQEAgLTE2MSwzNCArMTYwLDYgQEAgUmVmUHRyPEljb24+IFdlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxl
bmFtZXMKICAgICByZXR1cm4gSWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKGljb25Gb3JGaWxlKHVy
bCkuZ2V0KCkuQ0dJbWFnZSk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50Ojphc3NvY2lhdGVF
ZGl0YWJsZUltYWdlV2l0aEF0dGFjaG1lbnQoR3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQg
ZW1iZWRkZWRWaWV3SUQsIGNvbnN0IFN0cmluZyYgYXR0YWNobWVudElEKQotewotI2lmIEhBVkUo
UEVOQ0lMS0lUKQotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpFZGl0YWJsZUltYWdlQ29udHJv
bGxlcjo6QXNzb2NpYXRlV2l0aEF0dGFjaG1lbnQoZW1iZWRkZWRWaWV3SUQsIGF0dGFjaG1lbnRJ
RCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZW1iZWRkZWRWaWV3SUQpOwotICAgIFVOVVNF
RF9QQVJBTShhdHRhY2htZW50SUQpOwotI2VuZGlmCi19Ci0KLXZvaWQgV2ViQ2hyb21lQ2xpZW50
OjpkaWRDcmVhdGVFZGl0YWJsZUltYWdlKEdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVt
YmVkZGVkVmlld0lEKQotewotI2lmIEhBVkUoUEVOQ0lMS0lUKQotICAgIG1fcGFnZS5zZW5kKE1l
c3NhZ2VzOjpFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6RGlkQ3JlYXRlRWRpdGFibGVJbWFnZShl
bWJlZGRlZFZpZXdJRCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZW1iZWRkZWRWaWV3SUQp
OwotI2VuZGlmCi19Ci0KLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkaWREZXN0cm95RWRpdGFibGVJ
bWFnZShHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCkKLXsKLSNp
ZiBIQVZFKFBFTkNJTEtJVCkKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6RWRpdGFibGVJbWFn
ZUNvbnRyb2xsZXI6OkRpZERlc3Ryb3lFZGl0YWJsZUltYWdlKGVtYmVkZGVkVmlld0lEKSk7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShlbWJlZGRlZFZpZXdJRCk7Ci0jZW5kaWYKLX0KLQogYm9v
bCBXZWJDaHJvbWVDbGllbnQ6OnNob3VsZFVzZU1vdXNlRXZlbnRGb3JTZWxlY3Rpb24oY29uc3Qg
V2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKICAgICAvLyBJbiBpUGFkT1Mg
YW5kIG1hY0NhdGFseXN0LCBkZXNwaXRlIGdldHRpbmcgbW91c2UgZXZlbnRzLCB3ZSBzdGlsbCB3
YW50IFVJVGV4dEludGVyYWN0aW9uIGFuZCBmcmllbmRzIHRvIG93biBzZWxlY3Rpb24gZ2VzdHVy
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvR3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9HcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwCmlu
ZGV4IDhjMjFkMTUzYzJlODUxNTlhYzVkYzYzYTUzOWYzYmQwYzRiOWEwOWMuLjk0YWU4ZmRmNDUz
ODJkYjRhM2IwNDYwN2FmNjYwYWMyYmI2MWNlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9HcmFwaGljc0xheWVyQ0FSZW1vdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9HcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwCkBAIC02NywxMSArNjcsNiBAQCBSZWY8UGxhdGZv
cm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQ
bGF0Zm9ybUxheWVyKgogICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShw
bGF0Zm9ybUxheWVyLCBvd25lciwgKm1fY29udGV4dCk7CiB9CiAKLVJlZjxQbGF0Zm9ybUNBTGF5
ZXI+IEdyYXBoaWNzTGF5ZXJDQVJlbW90ZTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyRm9yRW1iZWRk
ZWRWaWV3KFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIGxheWVyVHlwZSwgR3JhcGhpY3NMYXll
cjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQsIFBsYXRmb3JtQ0FMYXllckNsaWVudCog
b3duZXIpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlRm9yRW1i
ZWRkZWRWaWV3KGxheWVyVHlwZSwgZW1iZWRkZWRWaWV3SUQsIG93bmVyLCAqbV9jb250ZXh0KTsK
LX0KLQogUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IEdyYXBoaWNzTGF5ZXJDQVJlbW90ZTo6Y3Jl
YXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBl
IHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsKICAgICByZXR1cm4gUGxhdGZvcm1DQUFu
aW1hdGlvblJlbW90ZTo6Y3JlYXRlKHR5cGUsIGtleVBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL0dyYXBoaWNzTGF5ZXJD
QVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oCmluZGV4IDVjMTE4ODE0NzA2MmMzNTlkYTQwZTFk
MzlkNTY2ODM3YzFlOGU1ZDkuLjIzOTc3ZjIzODg0N2I0YTc0MTk2MDM0ZDJlM2FlNDZiY2UzYmE5
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9HcmFwaGljc0xheWVyQ0FSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvR3JhcGhpY3NMYXllckNBUmVtb3RlLmgKQEAg
LTQ3LDcgKzQ3LDYgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZSwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikgb3ZlcnJpZGU7CiAg
ICAgUmVmPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBs
YXRmb3JtTGF5ZXIqLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKSBvdmVy
cmlkZTsKLSAgICBSZWY8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVQbGF0Zm9ybUNB
TGF5ZXJGb3JFbWJlZGRlZFZpZXcoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUs
IEdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lELCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJD
bGllbnQqIG93bmVyKSBvdmVycmlkZTsKICAgICBSZWY8V2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1h
dGlvbj4gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpIG92ZXJyaWRlOwogCiAg
ICAgLy8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNhbid0IGN1cnJlbnRseSBwcm94eSBkaXJlY3Rs
eSBjb21wb3NpdGVkIGltYWdlIGNvbnRlbnRzLCBzbyBvcHQgb3V0IG9mIHRoaXMgb3B0aW1pemF0
aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcApp
bmRleCA1OWI3ZjUxNWM0NzRiZDVjNjY2YTZmYTI5Y2VkOTJjN2YxMjZhNDdjLi5hNTkxNzE5YmRh
OTBhMzljZGE0MGJhNDE5ODllZGEyZDRlMDYzMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcApAQCAtNjMsMTMgKzYzLDYgQEAgUmVmPFBsYXRm
b3JtQ0FMYXllclJlbW90ZT4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUoUGxhdGZvcm1M
YXllciAqcGxhdGZvcm0KICAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpj
cmVhdGUocGxhdGZvcm1MYXllciwgb3duZXIsIGNvbnRleHQpOwogfQogCi1SZWY8UGxhdGZvcm1D
QUxheWVyUmVtb3RlPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZUZvckVtYmVkZGVkVmll
dyhMYXllclR5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJl
ZGRlZFZpZXdJRCwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVl
Q29udGV4dCYgY29udGV4dCkKLXsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBs
YXllciA9IGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUobGF5ZXJUeXBlLCBlbWJl
ZGRlZFZpZXdJRCwgb3duZXIsIGNvbnRleHQpKTsKLSAgICBjb250ZXh0LmxheWVyRGlkRW50ZXJD
b250ZXh0KCpsYXllciwgbGF5ZXJUeXBlKTsKLSAgICByZXR1cm4gbGF5ZXIucmVsZWFzZU5vbk51
bGwoKTsKLX0KLQogUmVmPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gUGxhdGZvcm1DQUxheWVyUmVt
b3RlOjpjcmVhdGUoY29uc3QgUGxhdGZvcm1DQUxheWVyUmVtb3RlJiBvdGhlciwgV2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY29u
dGV4dCkKIHsKICAgICBhdXRvIGxheWVyID0gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGUob3RoZXIsIG93bmVyLCBjb250ZXh0KSk7CkBAIC04OSwxMiArODIsNiBAQCBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OlBsYXRmb3JtQ0FMYXllclJlbW90ZShMYXllclR5cGUgbGF5ZXJUeXBl
LCBQbGF0Zm9ybUNBTGF5ZQogICAgIH0KIH0KIAotUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUoTGF5ZXJUeXBlIGxheWVyVHlwZSwgR3JhcGhpY3NMYXllcjo6RW1i
ZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIs
IFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCi0gICAgOiBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGUobGF5ZXJUeXBlLCBvd25lciwgY29udGV4dCkKLXsKLSAgICBtX2VtYmVkZGVkVmlld0lE
ID0gZW1iZWRkZWRWaWV3SUQ7Ci19Ci0KIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6UGxhdGZvcm1D
QUxheWVyUmVtb3RlKGNvbnN0IFBsYXRmb3JtQ0FMYXllclJlbW90ZSYgb3RoZXIsIFBsYXRmb3Jt
Q0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCiAg
ICAgOiBQbGF0Zm9ybUNBTGF5ZXIob3RoZXIubGF5ZXJUeXBlKCksIG93bmVyKQogICAgICwgbV9h
Y2NlbGVyYXRlc0RyYXdpbmcob3RoZXIuYWNjZWxlcmF0ZXNEcmF3aW5nKCkpCkBAIC04ODEsMTEg
Kzg2OCw2IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRFdmVudFJlZ2lvbihjb25z
dCBXZWJDb3JlOjpFdmVudFJlZ2lvbiYgZXZlbnRSZWdpCiAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQ
cm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6RXZlbnRSZWdpb25D
aGFuZ2VkKTsKIH0KIAotR3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjplbWJlZGRlZFZpZXdJRCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZW1iZWRk
ZWRWaWV3SUQ7Ci19Ci0KIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6Y3JlYXRlQ29tcGF0aWJsZUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIGxheWVy
VHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlKGxheWVyVHlwZSwgY2xpZW50LCAqbV9jb250
ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAppbmRl
eCAwODMxOTU1MzVmYWVmZDE4ZDg5OTk4MGI1NmI4Y2UzYTljNGM4ZmRiLi4wYzBhMDgyYmU4Zjli
OGJjNzVmMDM4YjA3ZTc1ZDk5YTkzZWEyNjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5oCkBAIC00Miw3ICs0Miw2IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gY3JlYXRlKFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqLCBSZW1vdGVM
YXllclRyZWVDb250ZXh0Jik7CiAgICAgc3RhdGljIFJlZjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+
IGNyZWF0ZShQbGF0Zm9ybUxheWVyICosIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCos
IFJlbW90ZUxheWVyVHJlZUNvbnRleHQmKTsKICAgICBzdGF0aWMgUmVmPFBsYXRmb3JtQ0FMYXll
clJlbW90ZT4gY3JlYXRlKGNvbnN0IFBsYXRmb3JtQ0FMYXllclJlbW90ZSYsIFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllckNsaWVudCosIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmKTsKLSAgICBzdGF0
aWMgUmVmPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gY3JlYXRlRm9yRW1iZWRkZWRWaWV3KFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpF
bWJlZGRlZFZpZXdJRCwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiwgUmVtb3RlTGF5
ZXJUcmVlQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCB+UGxhdGZvcm1DQUxheWVyUmVtb3RlKCk7
CiAKQEAgLTE3Niw4ICsxNzUsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEV2ZW50UmVnaW9u
KGNvbnN0IFdlYkNvcmU6OkV2ZW50UmVnaW9uJikgb3ZlcnJpZGU7CiAKLSAgICBXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCgpIGNvbnN0IG92ZXJy
aWRlOwotCiAgICAgV2ViQ29yZTo6VGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICBSZWY8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVy
PiBjbG9uZShXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKSBjb25zdCBvdmVy
cmlkZTsKQEAgLTIwMyw3ICsyMDAsNiBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRl
eHQmKTsKLSAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGUsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lELCBXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0
Jik7CiAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlKGNvbnN0IFBsYXRmb3JtQ0FMYXllclJlbW90
ZSYsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCosIFJlbW90ZUxheWVyVHJlZUNvbnRl
eHQmKTsKIAogICAgIHZvaWQgdXBkYXRlQ2xvbmVkTGF5ZXJQcm9wZXJ0aWVzKFBsYXRmb3JtQ0FM
YXllclJlbW90ZSYgY2xvbmUsIGJvb2wgY29weUNvbnRlbnRzID0gdHJ1ZSkgY29uc3Q7CkBAIC0y
MjQsOCArMjIwLDYgQEAgcHJpdmF0ZToKICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUqIG1fbWFz
a0xheWVyIHsgbnVsbHB0ciB9OwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2ViQ29yZTo6
UGxhdGZvcm1DQUFuaW1hdGlvbj4+IG1fYW5pbWF0aW9uczsKIAotICAgIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIG1fZW1iZWRkZWRWaWV3SUQ7Ci0KICAgICBib29sIG1f
YWNjZWxlcmF0ZXNEcmF3aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FudHNEZWVwQ29sb3JC
YWNraW5nU3RvcmUgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVDb250ZXh0Lm1tCmluZGV4IGY0MjVkMTE2MTkzNWY0MDNjMGMxYTRiNmFhZWE3ZDVk
ODM1NzU5MDUuLjUyMjA1NWUyZDk1NjdjNmRlMzE2ODczNWFiMzg3YjA2ZmFkNTcwZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVDb250ZXh0Lm1tCkBAIC05Miw3
ICs5Miw2IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dDo6bGF5ZXJEaWRFbnRlckNvbnRl
eHQoUGxhdGZvcm1DQUxheWVyUmVtb3RlJiBsYXllciwKICAgICBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXMgY3JlYXRpb25Qcm9wZXJ0aWVzOwogICAg
IGNyZWF0aW9uUHJvcGVydGllcy5sYXllcklEID0gbGF5ZXJJRDsKICAgICBjcmVhdGlvblByb3Bl
cnRpZXMudHlwZSA9IHR5cGU7Ci0gICAgY3JlYXRpb25Qcm9wZXJ0aWVzLmVtYmVkZGVkVmlld0lE
ID0gbGF5ZXIuZW1iZWRkZWRWaWV3SUQoKTsKIAogICAgIGlmIChsYXllci5pc1BsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbSgpKSB7CiAgICAgICAgIGNyZWF0aW9uUHJvcGVydGllcy5ob3N0aW5n
Q29udGV4dElEID0gbGF5ZXIuaG9zdGluZ0NvbnRleHRJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDEyOGViZDUzZWZjYWMyODg4MWVhNDMzNjAw
ZTcyM2IxZWZhNjA4NWIuLjM0M2RkMWU0YWI0ZmNiNTUzM2Y4ZmUwNTU1ZjNkMDczNjY4NGRmZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTczNSw3
ICs3MzUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25BcHBlYXJhbmNlKCk7
CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Db250ZXh0KENhbGxiYWNrSUQpOwogICAgIHZvaWQgaGFu
ZGxlVHdvRmluZ2VyVGFwQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIE9wdGlvblNl
dDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4sIHVpbnQ2NF90IHJlcXVlc3RJRCk7Ci0gICAg
dm9pZCBoYW5kbGVTdHlsdXNTaW5nbGVUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgdWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2b2lkIGdldFJlY3RzRm9yR3JhbnVsYXJpdHlX
aXRoU2VsZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgaW50MzJfdCwgQ2Fs
bGJhY2tJRCk7CiAgICAgdm9pZCBnZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50
MzJfdCwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzdG9yZVNlbGVjdGlv
bkZvckFjY2Vzc2liaWxpdHkoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBiMmFhNjFlMzRjNGY0YWU0OTQy
MzM4Y2IyOWJkNGNiMzc0N2JkNzU5Li5mYjVmYjBjYWM1OGFjZDg3YWQ1MmQ5Zjk3NGM0NWU4MWI0
MjBiNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KQEAgLTEwNyw3ICsxMDcsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBHZXRTZWxlY3Rpb25Db250ZXh0KFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogICAgIFNldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFj
ayhib29sIGFsbG93cykKICAgICBIYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50LCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+IG1vZGlm
aWVycywgdWludDY0X3QgcmVxdWVzdElEKQotICAgIEhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9p
bnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90IHJlcXVlc3RJRCkKICAgICBTZXRG
b3JjZUFsd2F5c1VzZXJTY2FsYWJsZShib29sIHVzZXJTY2FsYWJsZSkKICAgICBHZXRSZWN0c0Zv
ckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGV4
dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBpbnQzMl90IG9mZnNldCwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiAgICAgR2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGlu
dDMyX3Qgb2Zmc2V0LCBTdHJpbmcgdGV4dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCmluZGV4IGYyMTJmODcxYTJiYjdmM2I0NTNmYmExNjVlMDk1ODVmM2NiZjk4MGUuLmU0YWRl
MTViZDMxOWRhNWE0OTYyZjM0Zjc0M2U5YWVhY2M3Y2IyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xMTA4LDM4ICsx
MTA4LDYgQEAgdm9pZCBXZWJQYWdlOjpoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb2ludCwgT3B0aW9uU2UKICAgICBjb21wbGV0ZVN5bnRoZXRpY0Ns
aWNrKCpub2RlUmVzcG9uZGluZ1RvQ2xpY2ssIGFkanVzdGVkUG9pbnQsIG1vZGlmaWVycywgV2Vi
Q29yZTo6VHdvRmluZ2VyVGFwKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpoYW5kbGVTdHlsdXNTaW5n
bGVUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDY0X3QgcmVx
dWVzdElEKQotewotICAgIFNldEZvclNjb3BlPGJvb2w+IHVzZXJJc0ludGVyYWN0aW5nQ2hhbmdl
IHsgbV91c2VySXNJbnRlcmFjdGluZywgdHJ1ZSB9OwotCi0gICAgYXV0byYgZnJhbWUgPSBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwotCi0gICAgYXV0byBw
b2ludEluRG9jdW1lbnQgPSBmcmFtZS52aWV3KCktPnJvb3RWaWV3VG9Db250ZW50cyhwb2ludCk7
Ci0gICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhp
dFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUs
IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHkgfTsKLSAg
ICBIaXRUZXN0UmVzdWx0IGhpdFRlc3QgPSBmcmFtZS5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVz
dWx0QXRQb2ludChwb2ludEluRG9jdW1lbnQsIGhpdFR5cGUpOwotCi0gICAgTm9kZSogbm9kZSA9
IGhpdFRlc3QuaW5uZXJOb25TaGFyZWROb2RlKCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICBy
ZXR1cm47Ci0gICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFy
ZW5kZXJlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHJlbmRlcmVyLT5pc1JlcGxhY2Vk
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcG9zaXRpb24gPSByZW5kZXJlci0+cG9z
aXRpb25Gb3JQb2ludChoaXRUZXN0LmxvY2FsUG9pbnQoKSwgbnVsbHB0cik7Ci0gICAgaWYgKHBv
c2l0aW9uLmlzTnVsbCgpKQotICAgICAgICBwb3NpdGlvbiA9IGZpcnN0UG9zaXRpb25Jbk9yQmVm
b3JlTm9kZShub2RlKTsKLSAgICBhdXRvIHJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHBvc2l0aW9u
KTsKLSAgICBpZiAoIXJhbmdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmcmFtZS5zZWxlY3Rp
b24oKS5zZXRTZWxlY3RlZFJhbmdlKCpyYW5nZSwgcG9zaXRpb24uYWZmaW5pdHkoKSwgV2ViQ29y
ZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQp
OwotICAgIGF1dG8gaW1hZ2UgPSBmcmFtZS5lZGl0b3IoKS5pbnNlcnRFZGl0YWJsZUltYWdlKCk7
Ci0gICAgZnJhbWUuZG9jdW1lbnQoKS0+c2V0Rm9jdXNlZEVsZW1lbnQoaW1hZ2UuZ2V0KCkpOwot
fQotCiB2b2lkIFdlYlBhZ2U6OnBvdGVudGlhbFRhcEF0UG9zaXRpb24odWludDY0X3QgcmVxdWVz
dElELCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb3NpdGlvbiwgYm9vbCBzaG91bGRSZXF1
ZXN0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uKQogewogICAgIG1fcG90ZW50aWFsVGFwTm9kZSA9
IG1fcGFnZS0+bWFpbkZyYW1lKCkubm9kZVJlc3BvbmRpbmdUb0NsaWNrRXZlbnRzKHBvc2l0aW9u
LCBtX3BvdGVudGlhbFRhcExvY2F0aW9uLCBtX3BvdGVudGlhbFRhcFNlY3VyaXR5T3JpZ2luLmdl
dCgpKTsKQEAgLTI1NDIsOCArMjUxMCw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0Fzc2lzdGFi
bGVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlm
IChpczxIVE1MVGV4dEFyZWFFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJ
bWFnZUVsZW1lbnQ+KGVsZW1lbnQpLmhhc0VkaXRhYmxlSW1hZ2VBdHRyaWJ1dGUoKSkKLSAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKSB7
CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQ+KGVsZW1lbnQpOwogICAgICAgICAvLyBGSVhNRTogVGhpcyBsYXVuZHJ5IGxp
c3Qgb2YgdHlwZXMgaXMgbm90IGEgZ29vZCB3YXkgdG8gZmFjdG9yIHRoaXMuIE5lZWQgYSBzdWl0
YWJsZSBmdW5jdGlvbiBvbiBIVE1MSW5wdXRFbGVtZW50IGl0c2VsZi4KQEAgLTMyMTgsOSArMzE4
NCw2IEBAIHZvaWQgV2ViUGFnZTo6Z2V0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihGb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uJiBpbmZvcm1hdGlvCiAgICAgICAgIGluZm9ybWF0aW9uLnZhbHVl
ID0gZWxlbWVudC52YWx1ZSgpOwogICAgICAgICBpbmZvcm1hdGlvbi52YWx1ZUFzTnVtYmVyID0g
ZWxlbWVudC52YWx1ZUFzTnVtYmVyKCk7CiAgICAgICAgIGluZm9ybWF0aW9uLmF1dG9maWxsRmll
bGROYW1lID0gV2ViQ29yZTo6dG9BdXRvZmlsbEZpZWxkTmFtZShlbGVtZW50LmF1dG9maWxsRGF0
YSgpLmZpZWxkTmFtZSk7Ci0gICAgfSBlbHNlIGlmIChpczxIVE1MSW1hZ2VFbGVtZW50PigqZm9j
dXNlZEVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCpmb2N1c2VkRWxlbWVu
dCkuaGFzRWRpdGFibGVJbWFnZUF0dHJpYnV0ZSgpKSB7Ci0gICAgICAgIGluZm9ybWF0aW9uLmVs
ZW1lbnRUeXBlID0gSW5wdXRUeXBlOjpEcmF3aW5nOwotICAgICAgICBpbmZvcm1hdGlvbi5lbWJl
ZGRlZFZpZXdJRCA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCpmb2N1c2VkRWxlbWVudCku
ZWRpdGFibGVJbWFnZVZpZXdJRCgpOwogICAgIH0gZWxzZSBpZiAoZm9jdXNlZEVsZW1lbnQtPmhh
c0VkaXRhYmxlU3R5bGUoKSkgewogICAgICAgICBpbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9IElu
cHV0VHlwZTo6Q29udGVudEVkaXRhYmxlOwogICAgICAgICBpZiAoaXM8SFRNTEVsZW1lbnQ+KCpm
b2N1c2VkRWxlbWVudCkpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA2NzM5YTM3YzIwMjRjMmVlMjZlOTUzNmMxMDkxOTVhMWUxODJkYzc4Li5h
OTkwNTFhNDRkNGYxNDU4MTE1ODI5OGY3YWRhOWQ1OTA2NTY5MmY2IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjAt
MDgtMzAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIHVudXNlZCBlZGl0YWJsZSBpbWFnZSBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU5OTEKKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4
dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsOgorICAgICAgICAqIFRlc3RSdW5uZXJT
aGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAoV1RS
OjpVSVNjcmlwdENvbnRyb2xsZXI6OmRyYXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2UpOiBEZWxldGVk
LgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6Om51bWJlck9mU3Ryb2tlc0luRWRp
dGFibGVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9zcGkvUGVu
Y2lsS2l0VGVzdFNQSS5oOiBSZW1vdmVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW06CisgICAgICAgICh3ZWJW
aWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmZvckVh
Y2hWaWV3SW5IaWVyYXJjaHkpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Zmlu
ZEVkaXRhYmxlSW1hZ2VDYW52YXMpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
ZHJhd1NxdWFyZUluRWRpdGFibGVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9pb3MvUGVuY2lsS2l0VGVzdFNQSS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjp1cGRhdGVUZXN0T3B0
aW9uc0Zyb21UZXN0SGVhZGVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRp
b25zLmg6CisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjpoYXNTYW1lSW5pdGlhbGl6YXRpb25P
cHRpb25zIGNvbnN0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5u
ZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
aW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
aW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250
cm9sbGVySU9TOjpmaW5kRWRpdGFibGVJbWFnZUNhbnZhcyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6ZHJhd1NxdWFyZUluRWRpdGFibGVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6bnVtYmVy
T2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlKTogRGVsZXRlZC4KKwogMjAyMC0wOC0yOCAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBTaXRlcyBidWlsdCB3
aXRoIGZsYW1iZS5qcyBkb24ndCB3b3JrIHdpdGggdHJhY2twYWQgb24gaVBhZApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3Jp
cHRDb250cm9sbGVyLmlkbCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKaW5kZXggODQ2YTY0MGU2NTlhZDUzOTFi
NmY3MGJjNTQ2Njc2NzNjNDliYjAzYy4uMWQ1MzBjMjhmMzdkODczNDM4ZDNjNjQ5ZmQ4MTZhYWI1
ODZkMzA5OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9UZXN0UnVubmVy
U2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCkBA
IC0zNDcsOSArMzQ3LDYgQEAgaW50ZXJmYWNlIFVJU2NyaXB0Q29udHJvbGxlciB7CiAKICAgICBv
YmplY3QgYXR0YWNobWVudEluZm8oRE9NU3RyaW5nIGF0dGFjaG1lbnRJZGVudGlmaWVyKTsKIAot
ICAgIC8vIEVkaXRpbmcKLSAgICB1bmRlZmluZWQgZHJhd1NxdWFyZUluRWRpdGFibGVJbWFnZSgp
OwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJ
bWFnZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhc3RVbmRvTGFiZWw7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBmaXJzdFJlZG9MYWJlbDsKIH07CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENv
bnRyb2xsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2Ny
aXB0Q29udHJvbGxlci5oCmluZGV4IDI2NTI3NTAxZmZhNWQzOTkxMTI3NzA4MjkwOTMxZjllODEy
MTgzZjUuLjZiZDgxZjRjYWNlYmMyZDQ2MWM2NDAxMTJjOTkxNGY3MzNmMzhlMzAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJv
bGxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2Ny
aXB0Q29udHJvbGxlci5oCkBAIC0yNjYsMTEgKzI2Niw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2ltdWxhdGVSb3RhdGlvbihEZXZpY2VPcmllbnRhdGlvbiosIEpTVmFsdWVSZWYpIHsg
bm90SW1wbGVtZW50ZWQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzaW11bGF0ZVJvdGF0aW9uTGlr
ZVNhZmFyaShEZXZpY2VPcmllbnRhdGlvbiosIEpTVmFsdWVSZWYpIHsgbm90SW1wbGVtZW50ZWQo
KTsgfQogCi0gICAgLy8gRWRpdGFibGUgSW1hZ2VzCi0KLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1Nx
dWFyZUluRWRpdGFibGVJbWFnZSgpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQotICAgIHZpcnR1YWwg
bG9uZyBudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSB7IG5vdEltcGxlbWVudGVkKCk7
IHJldHVybiAwOyB9Ci0KICAgICAvLyBVbmRvL1JlZG8KIAogICAgIHZpcnR1YWwgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IGxhc3RVbmRvTGFiZWwoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7
IHJldHVybiBudWxscHRyOyB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL3Nw
aS9QZW5jaWxLaXRUZXN0U1BJLmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL3NwaS9QZW5jaWxL
aXRUZXN0U1BJLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlOThkOWVmMWQ5ZDQw
NDE1ZWQyNGNhMDc5MjU1YzYzZmJlMzg5OTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9zcGkvUGVuY2lsS2l0VGVz
dFNQSS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBv
cnQgPHd0Zi9QbGF0Zm9ybS5oPgotCi0jaWYgSEFWRShQRU5DSUxLSVQpCi0KLSNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQotCi0jaW1wb3J0IDxQZW5jaWxLaXQvUGVuY2lsS2l0Lmg+Ci0KLSNp
bXBvcnQgPFBlbmNpbEtpdC9QS0RyYXdpbmdfUHJpdmF0ZS5oPgotI2ltcG9ydCA8UGVuY2lsS2l0
L1BLSW5rX1ByaXZhdGUuaD4KLSNpbXBvcnQgPFBlbmNpbEtpdC9QS1N0cm9rZV9Qcml2YXRlLmg+
Ci0KLSNlbHNlCi0KLXR5cGVkZWYgTlNJbnRlZ2VyIFBLSW5rVHlwZTsKLQotQGludGVyZmFjZSBQ
S0luayA6IE5TT2JqZWN0Ci0rIChQS0luayAqKWlua1dpdGhJZGVudGlmaWVyOihOU1N0cmluZyAq
KXR5cGUgY29sb3I6KFVJQ29sb3IgKiljb2xvciB3ZWlnaHQ6KENHRmxvYXQpd2VpZ2h0OwotQGVu
ZAotCi1AaW50ZXJmYWNlIFBLU3Ryb2tlIDogTlNPYmplY3QKLS0gKGlkKV9pbml0V2l0aFBhdGg6
KENHUGF0aFJlZilwYXRoIGluazooUEtJbmsgKilpbmsgaW5wdXRTY2FsZTooQ0dGbG9hdClpbnB1
dFNjYWxlOwotQGVuZAotCi1AaW50ZXJmYWNlIFBLRHJhd2luZyA6IE5TT2JqZWN0Ci0tIChQS1N0
cm9rZSAqKV9hZGRTdHJva2U6KFBLU3Ryb2tlICopc3Ryb2tlOwotQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBOU0FycmF5PFBLU3Ryb2tlICo+ICpfYWxsU3Ryb2tlczsKLUBlbmQKLQot
QGludGVyZmFjZSBQS0NhbnZhc1ZpZXcgOiBVSVZpZXcKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5KSBQS0RyYXdpbmcgKmRyYXdpbmc7Ci1AZW5kCi0KLSNlbmRpZiAvLyBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQotCi0jZW5kaWYgLy8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDE2MTM4MWMyNTgxODRjNTNmZTMxYjlmZjA1ZTZkY2Y3Yjc3OWExNzUuLmRlNWZj
NGU1ZGQzYzAxZjJmMzE1YTUxZWM5Zjc0ZjJjOWQyNTVmMDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xODE2LDcgKzE4MTYsNiBAQAogCQkyRDRDRjhCQzFEODM2MENDMDAwMUNFOEQgLyog
V0tUaHVtYm5haWxWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gV0tUaHVtYm5haWxWaWV3Lm1tOyBwYXRoID0gV2ViS2l0L1dLVGh1bWJuYWlsVmlldy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ1MUEwQzUxQzhCRjAwNDAwNzY1QzQ1IC8q
IERPTUhUTUxWaWRlb0VsZW1lbnRXcmFwcGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRE9NSFRNTFZpZGVvRWxlbWVudFdyYXBwZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJENTIwNjM0MjQ1QTYwM0MwMDMzOEY4OCAvKiBWaWV3RXhwb3Nl
ZFJlY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWV3RXhw
b3NlZFJlY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJENjFFQzMwMjFCMEI3
NUMwMEE3RDFDQiAvKiBQZW5jaWxLaXRUZXN0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlbmNpbEtp
dFRlc3RTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2NDBCNTQxNzg3NURG
RjAwQkZBRjk5IC8qIFNjcm9sbFBpbm5pbmdCZWhhdmlvcnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsUGlubmluZ0JlaGF2aW9ycy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENzAwNTk1MjFFREEwQzYwMDM0NjNDQiAvKiBUYWJPdXRP
ZldlYlZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUYWJP
dXRPZldlYlZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENzAwNTk3MjFF
REE0RDAwMDM0NjNDQiAvKiBPZmZzY3JlZW5XaW5kb3cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBPZmZzY3JlZW5XaW5kb3cubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zNDE3LDcgKzM0MTYsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRjRE
NEYzQjQxRTRFMkJDQjAwQkIyNzY3IC8qIERyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tICovLAog
CQkJCTJFNzc2NUNDMTZDNEQ4MEEwMEJBMkJCMSAvKiBtYWluSU9TLm1tICovLAotCQkJCTJENjFF
QzMwMjFCMEI3NUMwMEE3RDFDQiAvKiBQZW5jaWxLaXRUZXN0U1BJLmggKi8sCiAJCQkJRjQ4RDZD
MEYyMjRCMzc3MDAwRTNFMkZCIC8qIFByZWZlcnJlZENvbnRlbnRNb2RlLm1tICovLAogCQkJCUY0
NTE3QjY1MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5oICovLAog
CQkJCUY0NTE3QjY2MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5t
bSAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tBdHRhY2htZW50VGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLQXR0YWNobWVudFRlc3RzLm1tCmluZGV4IDg0MGY0NWZmODBlZmQzNzJlNzdlZmY5ZjAx
YTlhZmMxNGY2MDI5MjQuLjNiM2Y2ZGVkMWE4NDg5YWFhZjlkYjA1YzE0NzM2MzYxMzhiZDNhMDEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRh
Y2htZW50VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS0F0dGFjaG1lbnRUZXN0cy5tbQpAQCAtMjksNyArMjksNiBAQAogCiAjaW1wb3J0ICJEcmFn
QW5kRHJvcFNpbXVsYXRvci5oIgogI2ltcG9ydCAiTlNJdGVtUHJvdmlkZXJBZGRpdGlvbnMuaCIK
LSNpbXBvcnQgIlBlbmNpbEtpdFRlc3RTUEkuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0V0tX
ZWJWaWV3LmgiCkBAIC0yMDEsNyArMjAwLDYgQEAgc3RhdGljIE5TU3RyaW5nICphdHRhY2htZW50
RWRpdGluZ1Rlc3RNYXJrdXAgPSBAIjxtZXRhIG5hbWU9J3ZpZXdwb3J0JyBjb250ZW50PScKIHN0
YXRpYyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50
cyhDR1NpemUgd2ViVmlld1NpemUsIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRp
b24pCiB7CiAgICAgY29uZmlndXJhdGlvbi5fYXR0YWNobWVudEVsZW1lbnRFbmFibGVkID0gWUVT
OwotICAgIGNvbmZpZ3VyYXRpb24uX2VkaXRhYmxlSW1hZ2VzRW5hYmxlZCA9IFlFUzsKICAgICBX
S1ByZWZlcmVuY2VzU2V0Q3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKChfX2JyaWRnZSBXS1By
ZWZlcmVuY2VzUmVmKVtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSwgWUVTKTsKIAogICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgd2ViVmlld1NpemUud2lkdGgsIHdlYlZpZXdTaXplLmhlaWdodCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CkBAIC0yMjI2LDc2ICsyMjI0LDYgQEAgVEVT
VChXS0F0dGFjaG1lbnRUZXN0c0lPUywgQ29weUF0dGFjaG1lbnRVc2luZ0VsZW1lbnRBY3Rpb24p
CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIH0KIAotI2lmIEhBVkUoUEVO
Q0lMS0lUKQotc3RhdGljIEJPT0wgZm9yRWFjaFZpZXdJbkhpZXJhcmNoeShVSVZpZXcgKnZpZXcs
IHZvaWQoXm1hcEZ1bmN0aW9uKShVSVZpZXcgKnN1YnZpZXcsIEJPT0wgKnN0b3ApKQotewotICAg
IEJPT0wgc3RvcCA9IE5POwotICAgIG1hcEZ1bmN0aW9uKHZpZXcsICZzdG9wKTsKLSAgICBpZiAo
c3RvcCkKLSAgICAgICAgcmV0dXJuIFlFUzsKLQotICAgIGZvciAoVUlWaWV3ICpzdWJ2aWV3IGlu
IHZpZXcuc3Vidmlld3MpIHsKLSAgICAgICAgc3RvcCA9IGZvckVhY2hWaWV3SW5IaWVyYXJjaHko
c3VidmlldywgbWFwRnVuY3Rpb24pOwotICAgICAgICBpZiAoc3RvcCkKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICByZXR1cm4gc3RvcDsKLX0KLQotc3RhdGljIFBLQ2FudmFzVmlldyAq
ZmluZEVkaXRhYmxlSW1hZ2VDYW52YXMoV0tXZWJWaWV3ICp3ZWJWaWV3KQotewotICAgIENsYXNz
IHBrQ2FudmFzVmlld0NsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJQS0NhbnZhc1ZpZXciKTsK
LSAgICBfX2Jsb2NrIFBLQ2FudmFzVmlldyAqY2FudmFzVmlldyA9IG5pbDsKLSAgICBmb3JFYWNo
Vmlld0luSGllcmFyY2h5KHdlYlZpZXcud2luZG93LCBeKFVJVmlldyAqc3VidmlldywgQk9PTCAq
c3RvcCkgewotICAgICAgICBpZiAoIVtzdWJ2aWV3IGlzS2luZE9mQ2xhc3M6cGtDYW52YXNWaWV3
Q2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNhbnZhc1ZpZXcgPSAoUEtD
YW52YXNWaWV3ICopc3VidmlldzsKLSAgICAgICAgKnN0b3AgPSBZRVM7Ci0gICAgfSk7Ci0gICAg
cmV0dXJuIGNhbnZhc1ZpZXc7Ci19Ci0KLXN0YXRpYyB2b2lkIGRyYXdTcXVhcmVJbkVkaXRhYmxl
SW1hZ2UoV0tXZWJWaWV3ICp3ZWJWaWV3KQotewotICAgIENsYXNzIHBrRHJhd2luZ0NsYXNzID0g
TlNDbGFzc0Zyb21TdHJpbmcoQCJQS0RyYXdpbmciKTsKLSAgICBDbGFzcyBwa0lua0NsYXNzID0g
TlNDbGFzc0Zyb21TdHJpbmcoQCJQS0luayIpOwotICAgIENsYXNzIHBrU3Ryb2tlQ2xhc3MgPSBO
U0NsYXNzRnJvbVN0cmluZyhAIlBLU3Ryb2tlIik7Ci0KLSAgICBQS0NhbnZhc1ZpZXcgKmNhbnZh
c1ZpZXcgPSBmaW5kRWRpdGFibGVJbWFnZUNhbnZhcyh3ZWJWaWV3KTsKLSAgICBSZXRhaW5QdHI8
UEtEcmF3aW5nPiBkcmF3aW5nID0gY2FudmFzVmlldy5kcmF3aW5nID86IGFkb3B0TlMoW1twa0Ry
YXdpbmdDbGFzcyBhbGxvY10gaW5pdF0pOwotICAgIFJldGFpblB0cjxDR1BhdGhSZWY+IHBhdGgg
PSBhZG9wdENGKENHUGF0aENyZWF0ZVdpdGhSZWN0KENHUmVjdE1ha2UoMCwgMCwgNTAsIDUwKSwg
TlVMTCkpOwotICAgIFJldGFpblB0cjxQS0luaz4gaW5rID0gW3BrSW5rQ2xhc3MgaW5rV2l0aElk
ZW50aWZpZXI6QCJjb20uYXBwbGUuaW5rLnBlbiIgY29sb3I6VUlDb2xvci5ncmVlbkNvbG9yIHdl
aWdodDoxMDAuMF07Ci0gICAgUmV0YWluUHRyPFBLU3Ryb2tlPiBzdHJva2UgPSBhZG9wdE5TKFtb
cGtTdHJva2VDbGFzcyBhbGxvY10gX2luaXRXaXRoUGF0aDpwYXRoLmdldCgpIGluazppbmsuZ2V0
KCkgaW5wdXRTY2FsZToxXSk7Ci0gICAgW2RyYXdpbmcgX2FkZFN0cm9rZTpzdHJva2UuZ2V0KCld
OwotCi0gICAgW2NhbnZhc1ZpZXcgc2V0RHJhd2luZzpkcmF3aW5nLmdldCgpXTsKLX0KLQotVEVT
VChXS0F0dGFjaG1lbnRUZXN0c0lPUywgRWRpdGFibGVJbWFnZUF0dGFjaG1lbnREYXRhSW52YWxp
ZGF0aW9uKQotewotICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVu
dHMoKTsKLQotICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50OwotCi0gICAg
ewotICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJW
aWV3LmdldCgpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlF
eGVjdXRlRWRpdENvbW1hbmQ6QCJJbnNlcnRFZGl0YWJsZUltYWdlIiBhcmd1bWVudDpuaWxdKTsK
LSAgICAgICAgRVhQRUNUX0VRKG9ic2VydmVyLm9ic2VydmVyKCkuaW5zZXJ0ZWQuY291bnQsIDFM
VSk7Ci0gICAgICAgIGF0dGFjaG1lbnQgPSBvYnNlcnZlci5vYnNlcnZlcigpLmluc2VydGVkLmZp
cnN0T2JqZWN0OwotICAgIH0KLQotICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9u
VXBkYXRlXTsKLQotICAgIHsKLSAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2Nv
cGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Ci0gICAgICAgIGRyYXdTcXVhcmVJbkVkaXRhYmxl
SW1hZ2Uod2ViVmlldy5nZXQoKSk7Ci0gICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRJ
bnZhbGlkYXRpb24oQFsgYXR0YWNobWVudC5nZXQoKSBdKTsKLSAgICB9Ci19Ci0KLSNlbmRpZiAv
LyBIQVZFKFBFTkNJTEtJVCkKLQogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIH0g
Ly8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvaW9zL1BlbmNpbEtpdFRlc3RTUEkuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1BlbmNp
bEtpdFRlc3RTUEkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRhNDQzOTU3OWJj
MTg4YmIyNTFhZTk4MmY2MDg5MThiOWY2YTVkZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QZW5jaWxLaXRUZXN0
U1BJLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCA8d3RmL1BsYXRmb3JtLmg+Ci0KLSNpZiBIQVZFKFBFTkNJTEtJVCkKLQotI2lmIFVTRShBUFBM
RV9JTlRFUk5BTF9TREspCi0KLSNpbXBvcnQgPFBlbmNpbEtpdC9QZW5jaWxLaXQuaD4KLQotI2lt
cG9ydCA8UGVuY2lsS2l0L1BLRHJhd2luZ19Qcml2YXRlLmg+Ci0jaW1wb3J0IDxQZW5jaWxLaXQv
UEtJbmtfUHJpdmF0ZS5oPgotI2ltcG9ydCA8UGVuY2lsS2l0L1BLU3Ryb2tlX1ByaXZhdGUuaD4K
LQotI2Vsc2UKLQotdHlwZWRlZiBOU0ludGVnZXIgUEtJbmtUeXBlOwotCi1AaW50ZXJmYWNlIFBL
SW5rIDogTlNPYmplY3QKLSsgKFBLSW5rICopaW5rV2l0aFR5cGU6KFBLSW5rVHlwZSl0eXBlIGNv
bG9yOihVSUNvbG9yICopY29sb3Igd2VpZ2h0OihDR0Zsb2F0KXdlaWdodDsKLUBlbmQKLQotQGlu
dGVyZmFjZSBQS1N0cm9rZSA6IE5TT2JqZWN0Ci0tIChpZClfaW5pdFdpdGhQYXRoOihDR1BhdGhS
ZWYpcGF0aCBpbms6KFBLSW5rICopaW5rIGlucHV0U2NhbGU6KENHRmxvYXQpaW5wdXRTY2FsZTsK
LUBlbmQKLQotQGludGVyZmFjZSBQS0RyYXdpbmcgOiBOU09iamVjdAotLSAoUEtTdHJva2UgKilf
YWRkU3Ryb2tlOihQS1N0cm9rZSAqKXN0cm9rZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgTlNBcnJheTxQS1N0cm9rZSAqPiAqX2FsbFN0cm9rZXM7Ci1AZW5kCi0KLUBpbnRlcmZh
Y2UgUEtDYW52YXNWaWV3IDogVUlWaWV3Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgUEtE
cmF3aW5nICpkcmF3aW5nOwotQGVuZAotCi0jZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKLQotI2VuZGlmIC8vIEhBVkUoUEVOQ0lMS0lUKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAppbmRleCAxYWM3MWY3MTIyOTM1ZmRhNTcxZTU0ODUxNWIzNGNhMzdl
OWRkODQ3Li4yMTNlZmUxZmExMTBhYjJmZjRhMjIxMzhiYzE3OTU0ZDRhMDhjNDE1IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMTUzMyw4ICsxNTMzLDYg
QEAgc3RhdGljIHZvaWQgdXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhlYWRlcihUZXN0T3B0aW9u
cyYgdGVzdE9wdGlvbnMsIGNvbnN0IHN0ZDoKICAgICAgICAgICAgIHRlc3RPcHRpb25zLnNob3Vs
ZFNob3dTcGVsbENoZWNraW5nRG90cyA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1
ZSk7CiAgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlU2VydmljZUNvbnRyb2xzIikKICAg
ICAgICAgICAgIHRlc3RPcHRpb25zLmVuYWJsZVNlcnZpY2VDb250cm9scyA9IHBhcnNlQm9vbGVh
blRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxl
RWRpdGFibGVJbWFnZXMiKQotICAgICAgICAgICAgdGVzdE9wdGlvbnMuZW5hYmxlRWRpdGFibGVJ
bWFnZXMgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwogICAgICAgICBlbHNl
IGlmIChrZXkgPT0gImVkaXRhYmxlIikKICAgICAgICAgICAgIHRlc3RPcHRpb25zLmVkaXRhYmxl
ID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKICAgICAgICAgZWxzZSBpZiAo
a2V5ID09ICJzaG91bGRIYW5kbGVSdW5PcGVuUGFuZWwiKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
T3B0aW9ucy5oCmluZGV4IDBmODVkOWI4M2VkYmNmYTAyYTIyODg5Y2MyNTEwNDdhOTQzOWQzMWUu
LjhlMGU4NzNmNjhmYzkxYjQxMjI5YzYwOWMzNWFmYzc2NWVmZDA4MDIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RPcHRpb25zLmgKQEAgLTkxLDcgKzkxLDYgQEAgc3RydWN0IFRlc3RPcHRpb25z
IHsKICAgICBib29sIHNob3VsZElnbm9yZU1ldGFWaWV3cG9ydCB7IGZhbHNlIH07CiAgICAgYm9v
bCBzaG91bGRTaG93U3BlbGxDaGVja2luZ0RvdHMgeyBmYWxzZSB9OwogICAgIGJvb2wgZW5hYmxl
U2VydmljZUNvbnRyb2xzIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUVkaXRhYmxlSW1hZ2Vz
IHsgZmFsc2UgfTsKICAgICBib29sIGVkaXRhYmxlIHsgZmFsc2UgfTsKICAgICBib29sIHNob3Vs
ZEhhbmRsZVJ1bk9wZW5QYW5lbCB7IHRydWUgfTsKICAgICBib29sIHNob3VsZFByZXNlbnRQb3Bv
dmVycyB7IHRydWUgfTsKQEAgLTE1OCw3ICsxNTcsNiBAQCBzdHJ1Y3QgVGVzdE9wdGlvbnMgewog
ICAgICAgICAgICAgfHwgc2hvdWxkU2hvd1NwZWxsQ2hlY2tpbmdEb3RzICE9IG9wdGlvbnMuc2hv
dWxkU2hvd1NwZWxsQ2hlY2tpbmdEb3RzCiAgICAgICAgICAgICB8fCBlbmFibGVTZXJ2aWNlQ29u
dHJvbHMgIT0gb3B0aW9ucy5lbmFibGVTZXJ2aWNlQ29udHJvbHMKICAgICAgICAgICAgIHx8IHNo
b3VsZElnbm9yZU1ldGFWaWV3cG9ydCAhPSBvcHRpb25zLnNob3VsZElnbm9yZU1ldGFWaWV3cG9y
dAotICAgICAgICAgICAgfHwgZW5hYmxlRWRpdGFibGVJbWFnZXMgIT0gb3B0aW9ucy5lbmFibGVF
ZGl0YWJsZUltYWdlcwogICAgICAgICAgICAgfHwgZWRpdGFibGUgIT0gb3B0aW9ucy5lZGl0YWJs
ZQogICAgICAgICAgICAgfHwgc2hvdWxkSGFuZGxlUnVuT3BlblBhbmVsICE9IG9wdGlvbnMuc2hv
dWxkSGFuZGxlUnVuT3BlblBhbmVsCiAgICAgICAgICAgICB8fCBzaG91bGRQcmVzZW50UG9wb3Zl
cnMgIT0gb3B0aW9ucy5zaG91bGRQcmVzZW50UG9wb3ZlcnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZTExOWNkM2E0ZjMyMjJmZGFkMjQ3Mjc2YjQ5Y2Y4MWUzNWExNjI5
OC4uZTY0YzY0MDY1OGMyZjE3OWMwYmQyYjBhZmQ3YzBjNDE3MDBhNDI5MSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI4MCw3ICsyODAsNiBAQAogCQkyRDA1OEUwODIy
RTJFRTIyMDBFNEMxNDUgLyogVUlTY3JpcHRDb250cm9sbGVyQ29jb2EuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVUlTY3JpcHRDb250cm9sbGVyQ29jb2EuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQwNThFMEEyMkUyRUY2RDAwRTRDMTQ1IC8qIFVJU2NyaXB0
Q29udHJvbGxlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVSVNjcmlw
dENvbnRyb2xsZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQwQkVFMTcy
MkVBRDEzNjAwOTJCNzM4IC8qIFVJU2NyaXB0Q29udHJvbGxlcklPUy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVSVNjcmlwdENvbnRyb2xsZXJJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MkQwRkYxNEEyMTkyQzc4MzAwQzk3NUQ2IC8qIFBlbmNpbEtpdFRlc3RTUEkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gUGVuY2lsS2l0VGVzdFNQSS5oOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9zcGkv
UGVuY2lsS2l0VGVzdFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREI2MTg3
RDFEN0Q1OEQ0MDA5NzhEMTkgLyogQ29yZUdyYXBoaWNzVGVzdFNQSS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBDb3JlR3JhcGhpY3NUZXN0U1BJLmg7IHBhdGggPSAuLi9UZXN0
UnVubmVyU2hhcmVkL3NwaS9Db3JlR3JhcGhpY3NUZXN0U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJEQ0UyQ0QxMUI4NDUyNDUwMEM3RjgzMiAvKiBUZXN0Q29udHJvbGxlckNv
Y29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGVzdENvbnRy
b2xsZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRENEM0OTgxRDZF
N0QzQjAwMDczNzlDIC8qIEV2ZW50U2VyaWFsaXplck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBFdmVudFNlcmlhbGl6ZXJNYWMuaDsgcGF0aCA9IG1hYy9FdmVudFNlcmlh
bGl6ZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0Miw3ICs2NDEsNiBA
QAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyREI2MTg3RDFEN0Q1
OEQ0MDA5NzhEMTkgLyogQ29yZUdyYXBoaWNzVGVzdFNQSS5oICovLAotCQkJCTJEMEZGMTRBMjE5
MkM3ODMwMEM5NzVENiAvKiBQZW5jaWxLaXRUZXN0U1BJLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9
IHNwaTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXggZjc1ODc2NjlmZmVh
OGM3NGQ3YmQ2MDNkN2FiMjJiYjhlNDg5NzlkOS4uM2U1MWYyOTZlZGExM2ZmYWU1YzZmODE2NTVk
MTJjYmJhOTM1ZmM4MiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2Ev
VGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMTYzLDkgKzE2Myw2IEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmLCBjb25z
dCBUZXN0T3B0CiAgICAgaWYgKG9wdGlvbnMuZW5hYmxlQ29sb3JGaWx0ZXIpCiAgICAgICAgIFtj
b3BpZWRDb25maWd1cmF0aW9uIF9zZXRDb2xvckZpbHRlckVuYWJsZWQ6WUVTXTsKIAotICAgIGlm
IChvcHRpb25zLmVuYWJsZUVkaXRhYmxlSW1hZ2VzKQotICAgICAgICBbY29waWVkQ29uZmlndXJh
dGlvbiBfc2V0RWRpdGFibGVJbWFnZXNFbmFibGVkOllFU107Ci0KICAgICBbY29waWVkQ29uZmln
dXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKil3ZWJzaXRl
RGF0YVN0b3JlKCldOwogCiAgICAgW2NvcGllZENvbmZpZ3VyYXRpb24gX3NldEFsbG93VG9wTmF2
aWdhdGlvblRvRGF0YVVSTHM6b3B0aW9ucy5hbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzXTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9T
LmgKaW5kZXggMTdiYWE4ZmQxNDgzMTZmOTNjMGU3MGY2ZjZlODYyM2UyMGEyMjQ2MC4uMjhkMDYw
YzZkZmM0NzFhOTA1NDkwNjgzOTVjM2Q0MGY2YTljMDk2YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLmgKQEAgLTMwLDEwICszMCw2
IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaWYgSEFWRShQRU5DSUxLSVQpCi1A
Y2xhc3MgUEtDYW52YXNWaWV3OwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFJlY3Q7CkBAIC0xMzIsOCArMTI4LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgY29tcGxldGVCYWNrU3dpcGUoSlNWYWx1ZVJlZikgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBpc1Nob3dpbmdEYXRhTGlzdFN1Z2dlc3Rpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dm9pZCBhY3RpdmF0ZURhdGFMaXN0U3VnZ2VzdGlvbih1bnNpZ25lZCwgSlNWYWx1ZVJlZikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkcmF3U3F1YXJlSW5FZGl0YWJsZUltYWdlKCkgb3ZlcnJpZGU7Ci0g
ICAgbG9uZyBudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSBvdmVycmlkZTsKICAgICB2
b2lkIHNldEtleWJvYXJkSW5wdXRNb2RlSWRlbnRpZmllcihKU1N0cmluZ1JlZikgb3ZlcnJpZGU7
CiAgICAgdm9pZCB0b2dnbGVDYXBzTG9jayhKU1ZhbHVlUmVmKSBvdmVycmlkZTsKICAgICBib29s
IGtleWJvYXJkSXNBdXRvbWF0aWNhbGx5U2hpZnRlZCgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTY3
LDkgKzE2MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3YWl0Rm9yU2luZ2xlVGFwVG9SZXNldCgp
IGNvbnN0OwogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0Rm9yTWVudUFjdGlvbihDRlN0cmlu
Z1JlZikgY29uc3Q7CiAgICAgdm9pZCBzaW5nbGVUYXBBdFBvaW50V2l0aE1vZGlmaWVycyhXZWJD
b3JlOjpGbG9hdFBvaW50IGxvY2F0aW9uLCBWZWN0b3I8U3RyaW5nPiYmIG1vZGlmaWVyRmxhZ3Ms
IEJsb2NrUHRyPHZvaWQoKT4mJik7Ci0jaWYgSEFWRShQRU5DSUxLSVQpCi0gICAgUEtDYW52YXNW
aWV3ICpmaW5kRWRpdGFibGVJbWFnZUNhbnZhcygpIGNvbnN0OwotI2VuZGlmCiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJ
T1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW0KaW5kZXggMmJhOGYyMzZmMDczZDRmNWM5OTdjYjkyMDU2NDZiMDQ1NjJjODRkZi4uMTMwYzQ5
N2MyNDBkODM4YmI0YWZmZmQyMDczMTQxNzVhODNkYmIyNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtMjksNyArMjks
NiBAQAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkhJREV2ZW50R2VuZXJh
dG9yLmgiCi0jaW1wb3J0ICJQZW5jaWxLaXRUZXN0U1BJLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVZp
ZXdIZWxwZXJzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbXBvcnQgIlN0cmlu
Z0Z1bmN0aW9ucy5oIgpAQCAtMTE1Niw1MiArMTE1NSw2IEBAIGJvb2wgVUlTY3JpcHRDb250cm9s
bGVySU9TOjppc1Nob3dpbmdEYXRhTGlzdFN1Z2dlc3Rpb25zKCkgY29uc3QKICAgICByZXR1cm4g
Zm91bmREYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2VyVmlldzsKIH0KIAotI2lmIEhBVkUoUEVOQ0lM
S0lUKQotCi1QS0NhbnZhc1ZpZXcgKlVJU2NyaXB0Q29udHJvbGxlcklPUzo6ZmluZEVkaXRhYmxl
SW1hZ2VDYW52YXMoKSBjb25zdAotewotICAgIENsYXNzIHBrQ2FudmFzVmlld0NsYXNzID0gTlND
bGFzc0Zyb21TdHJpbmcoQCJQS0NhbnZhc1ZpZXciKTsKLSAgICBfX2Jsb2NrIFBLQ2FudmFzVmll
dyAqY2FudmFzVmlldyA9IG5pbDsKLSAgICBmb3JFYWNoVmlld0luSGllcmFyY2h5KHdlYlZpZXco
KS53aW5kb3csIF4oVUlWaWV3ICpzdWJ2aWV3LCBCT09MICpzdG9wKSB7Ci0gICAgICAgIGlmICgh
W3N1YnZpZXcgaXNLaW5kT2ZDbGFzczpwa0NhbnZhc1ZpZXdDbGFzc10pCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgY2FudmFzVmlldyA9IChQS0NhbnZhc1ZpZXcgKilzdWJ2aWV3Owot
ICAgICAgICAqc3RvcCA9IFlFUzsKLSAgICB9KTsKLSAgICByZXR1cm4gY2FudmFzVmlldzsKLX0K
LQotI2VuZGlmIC8vIEhBVkUoUEVOQ0lMS0lUKQotCi12b2lkIFVJU2NyaXB0Q29udHJvbGxlcklP
Uzo6ZHJhd1NxdWFyZUluRWRpdGFibGVJbWFnZSgpCi17Ci0jaWYgSEFWRShQRU5DSUxLSVQpCi0g
ICAgQ2xhc3MgcGtEcmF3aW5nQ2xhc3MgPSBOU0NsYXNzRnJvbVN0cmluZyhAIlBLRHJhd2luZyIp
OwotICAgIENsYXNzIHBrSW5rQ2xhc3MgPSBOU0NsYXNzRnJvbVN0cmluZyhAIlBLSW5rIik7Ci0g
ICAgQ2xhc3MgcGtTdHJva2VDbGFzcyA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAiUEtTdHJva2UiKTsK
LQotICAgIFBLQ2FudmFzVmlldyAqY2FudmFzVmlldyA9IGZpbmRFZGl0YWJsZUltYWdlQ2FudmFz
KCk7Ci0gICAgUmV0YWluUHRyPFBLRHJhd2luZz4gZHJhd2luZyA9IGNhbnZhc1ZpZXcuZHJhd2lu
ZyA/OiBhZG9wdE5TKFtbcGtEcmF3aW5nQ2xhc3MgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRhaW5Q
dHI8Q0dQYXRoUmVmPiBwYXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVXaXRoUmVjdChDR1JlY3RN
YWtlKDAsIDAsIDUwLCA1MCksIE5VTEwpKTsKLSAgICBSZXRhaW5QdHI8UEtJbms+IGluayA9IFtw
a0lua0NsYXNzIGlua1dpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLmluay5wZW4iIGNvbG9yOlVJ
Q29sb3IuZ3JlZW5Db2xvciB3ZWlnaHQ6MTAwLjBdOwotICAgIFJldGFpblB0cjxQS1N0cm9rZT4g
c3Ryb2tlID0gYWRvcHROUyhbW3BrU3Ryb2tlQ2xhc3MgYWxsb2NdIF9pbml0V2l0aFBhdGg6cGF0
aC5nZXQoKSBpbms6aW5rLmdldCgpIGlucHV0U2NhbGU6MV0pOwotICAgIFtkcmF3aW5nIF9hZGRT
dHJva2U6c3Ryb2tlLmdldCgpXTsKLQotICAgIFtjYW52YXNWaWV3IHNldERyYXdpbmc6ZHJhd2lu
Zy5nZXQoKV07Ci0jZW5kaWYKLX0KLQotbG9uZyBVSVNjcmlwdENvbnRyb2xsZXJJT1M6Om51bWJl
ck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSgpCi17Ci0jaWYgSEFWRShQRU5DSUxLSVQpCi0gICAg
UEtDYW52YXNWaWV3ICpjYW52YXNWaWV3ID0gZmluZEVkaXRhYmxlSW1hZ2VDYW52YXMoKTsKLSAg
ICByZXR1cm4gY2FudmFzVmlldy5kcmF3aW5nLl9hbGxTdHJva2VzLmNvdW50OwotI2Vsc2UKLSAg
ICByZXR1cm4gMDsKLSNlbmRpZgotfQotCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2V0
S2V5Ym9hcmRJbnB1dE1vZGVJZGVudGlmaWVyKEpTU3RyaW5nUmVmIGlkZW50aWZpZXIpCiB7CiAg
ICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldEtleWJvYXJkSW5wdXRNb2RlSWRlbnRp
Zmllcih0b1dURlN0cmluZyh0b1dLKGlkZW50aWZpZXIpKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTMzMjBlMzNmYWZm
OGE2MjkwODZhZTI5Y2RmMTJjYTU3Mzk3N2U3OC4uNmI3ZTI2NTVjZTMzMjk5YjRlYzU0Y2JmZjRi
YThjYzQxOWRlYTM5YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA4LTMwICBUaW0gSG9y
dG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
ZWRpdGFibGUgaW1hZ2UgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE1OTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgor
CisgICAgICAgICogZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQu
dHh0OiBSZW1vdmVkLgorICAgICAgICAqIGVkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWlt
YWdlLWZyb20tZXhlY0NvbW1hbmQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGVk
aXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLWZyb20tZXhlY0NvbW1hbmQuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1pbWFnZS13
aXRoLWdlc3R1cmUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGVkaXRpbmcvaW1h
Z2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLXdpdGgtZ2VzdHVyZS5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIGVkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogZWRpdGluZy9pbWFnZXMvZWRpdGFibGUtaW1hZ2UtY3JlYXRlcy1hdHRhY2ht
ZW50LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL2ltYWdlcy9lZGl0
YWJsZS1pbWFnZS1jcmVhdGVzLWF0dGFjaG1lbnQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBl
ZGl0aW5nL2ltYWdlcy9wYXN0ZS1lZGl0YWJsZS1pbWFnZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogZWRpdGluZy9pbWFnZXMvcGFzdGUtZWRpdGFibGUtaW1hZ2UuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL2ltYWdlcy9yZWRvLWluc2VydC1lZGl0YWJsZS1pbWFn
ZS1tYWludGFpbnMtc3Ryb2tlcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZWRp
dGluZy9pbWFnZXMvcmVkby1pbnNlcnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9rZXMu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL2ltYWdlcy9yZXBhcmVudC1lZGl0YWJs
ZS1pbWFnZS1tYWludGFpbnMtc3Ryb2tlcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogZWRpdGluZy9pbWFnZXMvcmVwYXJlbnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9r
ZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL2ltYWdlcy91bmRvLWluc2VydC1l
ZGl0YWJsZS1pbWFnZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZWRpdGluZy9p
bWFnZXMvdW5kby1pbnNlcnQtZWRpdGFibGUtaW1hZ2UuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiByZXNvdXJjZXMvdWktaGVscGVyLmpzOgorICAgICAgICAod2luZG93LlVJSGVscGVyLmRyYXdT
cXVhcmVJbkVkaXRhYmxlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAod2luZG93LlVJSGVscGVy
Lm51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSk6IERlbGV0ZWQuCisKIDIwMjAtMDgtMzAg
IEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dp
bkNhaXJvXSBVbnJldmlld2VkIHRlc3QgZ2FyZGVuaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1pbWFnZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1pbWFnZS1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0MjRiZjFkODQyMTZiMmIzM2IzNDI4YmI5
MjQ3ZjJlYmEzNTg2YTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1IYWQgMCBzdHJva2VzIGlu
IGVkaXRhYmxlIGltYWdlIGJlZm9yZSBkcmF3aW5nLgotSGFkIDEgc3Ryb2tlIGluIGVkaXRhYmxl
IGltYWdlIGFmdGVyIGRyYXdpbmcuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
aW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLWZyb20tZXhlY0NvbW1hbmQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UtZnJvbS1l
eGVjQ29tbWFuZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkx
MDExNTlhZDBiZjlkN2QxNjMxYjMyM2FmNWI5OGFlYTViNDQ2NjQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMv
YmFzaWMtZWRpdGFibGUtaW1hZ2UtZnJvbS1leGVjQ29tbWFuZC1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotSGFkIDAgc3Ryb2tlcyBpbiBlZGl0YWJsZSBpbWFn
ZSBiZWZvcmUgZHJhd2luZy4KLUhhZCAxIHN0cm9rZSBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciBk
cmF3aW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRp
dGFibGUtaW1hZ2UtZnJvbS1leGVjQ29tbWFuZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9p
bWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UtZnJvbS1leGVjQ29tbWFuZC5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGVhYWM4OTU1ODkxMjVlYTAyZjIyYzMyMjE4MzUyMmQx
NDNkMDJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLWZyb20tZXhlY0Nv
bW1hbmQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlRWRpdGFibGVJbWFnZXM9dHJ1ZSBdIC0t
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWFk
ZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7Ci0gICAgd2luZG93LmdldFNlbGVj
dGlvbigpLnNldFBvc2l0aW9uKGRvY3VtZW50LmJvZHksIDApOwotICAgIGRvY3VtZW50LmV4ZWND
b21tYW5kKCJJbnNlcnRFZGl0YWJsZUltYWdlIik7Ci0gICAgY29uc3QgaW5pdGlhbE51bWJlck9m
U3Ryb2tlc0luRWRpdGFibGVJbWFnZSA9IChhd2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJ
bkVkaXRhYmxlSW1hZ2UoKSk7Ci0gICAgYXdhaXQgVUlIZWxwZXIuZHJhd1NxdWFyZUluRWRpdGFi
bGVJbWFnZSgpOwotICAgIGNvbnN0IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVy
RHJhd2luZyA9IChhd2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2Uo
KSk7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCA9IGBIYWQg
JHtpbml0aWFsTnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlfSBzdHJva2VzIGluIGVkaXRh
YmxlIGltYWdlIGJlZm9yZSBkcmF3aW5nLjxici8+SGFkICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0
YWJsZUltYWdlQWZ0ZXJEcmF3aW5nfSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJh
d2luZy5gOwotICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5IGNvbnRlbnRlZGl0YWJsZT4KLTxkaXYgaWQ9ImxvZyI+PC9kaXY+Ci08L2Jv
ZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJs
ZS1pbWFnZS13aXRoLWdlc3R1cmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9p
bWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2Utd2l0aC1nZXN0dXJlLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTEwMTE1OWFkMGJmOWQ3ZDE2MzFiMzIzYWY1Yjk4
YWVhNWI0NDY2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1pbWFnZS13aXRoLWdl
c3R1cmUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLUhhZCAw
IHN0cm9rZXMgaW4gZWRpdGFibGUgaW1hZ2UgYmVmb3JlIGRyYXdpbmcuCi1IYWQgMSBzdHJva2Ug
aW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJhd2luZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLXdpdGgtZ2VzdHVyZS5odG1sIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2Utd2l0aC1nZXN0
dXJlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwYzE2ZWMzZDQyYjc4YzY1
NjVkZmUxNjIzNWUxMmI0OGZlNWE5MGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUt
aW1hZ2Utd2l0aC1nZXN0dXJlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUVkaXRhYmxlSW1h
Z2VzPXRydWUgXSAtLT4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1o
ZWxwZXIuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewot
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwotfQotCi1hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4gewotICAgIGF3
YWl0IFVJSGVscGVyLnN0eWx1c1RhcEF0KDAsIDApOwotICAgIGNvbnN0IGluaXRpYWxOdW1iZXJP
ZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UgPSAoYXdhaXQgVUlIZWxwZXIubnVtYmVyT2ZTdHJva2Vz
SW5FZGl0YWJsZUltYWdlKCkpOwotICAgIGF3YWl0IFVJSGVscGVyLmRyYXdTcXVhcmVJbkVkaXRh
YmxlSW1hZ2UoKTsKLSAgICBjb25zdCBudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRl
ckRyYXdpbmcgPSAoYXdhaXQgVUlIZWxwZXIubnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdl
KCkpOwotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgPSBgSGFk
ICR7aW5pdGlhbE51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZX0gc3Ryb2tlcyBpbiBlZGl0
YWJsZSBpbWFnZSBiZWZvcmUgZHJhd2luZy48YnIvPkhhZCAke251bWJlck9mU3Ryb2tlc0luRWRp
dGFibGVJbWFnZUFmdGVyRHJhd2luZ30gc3Ryb2tlIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRy
YXdpbmcuYDsKLSAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keSBjb250ZW50ZWRpdGFibGU+Ci08ZGl2IGlkPSJsb2ciPjwvZGl2PgotPC9i
b2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFi
bGUtaW1hZ2UuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxl
LWltYWdlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2YmNhZjE2Y2NlYTMx
YTFlMGQ1ZGVjZDIyOWZmOWJmOGY1YjNkN2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFi
bGUtaW1hZ2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlRWRpdGFibGVJbWFnZXM9dHJ1ZSBd
IC0tPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0K
LWFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgaW5pdGlh
bE51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSA9IChhd2FpdCBVSUhlbHBlci5udW1iZXJP
ZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7Ci0gICAgYXdhaXQgVUlIZWxwZXIuZHJhd1NxdWFy
ZUluRWRpdGFibGVJbWFnZSgpOwotICAgIGNvbnN0IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJ
bWFnZUFmdGVyRHJhd2luZyA9IChhd2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRh
YmxlSW1hZ2UoKSk7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRN
TCA9IGBIYWQgJHtpbml0aWFsTnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlfSBzdHJva2Vz
IGluIGVkaXRhYmxlIGltYWdlIGJlZm9yZSBkcmF3aW5nLjxici8+SGFkICR7bnVtYmVyT2ZTdHJv
a2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJEcmF3aW5nfSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2Ug
YWZ0ZXIgZHJhd2luZy5gOwotICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0ibG9nIj48L2Rpdj4KLTxpbWcgeC1hcHBs
ZS1lZGl0YWJsZS1pbWFnZT0idHJ1ZSIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPgotPC9ib2R5
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvZWRpdGFibGUtaW1hZ2Ut
Y3JlYXRlcy1hdHRhY2htZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW1h
Z2VzL2VkaXRhYmxlLWltYWdlLWNyZWF0ZXMtYXR0YWNobWVudC1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllYjRhOTZiMWUxMTMyYjk1ODlkNThlMmRkY2EzMWIy
OTY2MmY0ZjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvZWRpdGFibGUtaW1hZ2UtY3JlYXRlcy1hdHRhY2ht
ZW50LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotSGFzIGF0dGFj
aG1lbnQgaW5zaWRlIGVkaXRhYmxlIGltYWdlOiB0cnVlLgotQXR0YWNobWVudCB0eXBlIGFmdGVy
IGRyYXdpbmcgb24gZWRpdGFibGUgaW1hZ2U6IGltYWdlL3BuZy4KLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvZWRpdGFibGUtaW1hZ2UtY3JlYXRlcy1hdHRhY2htZW50
Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9lZGl0YWJsZS1pbWFnZS1jcmVhdGVz
LWF0dGFjaG1lbnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUxMmY0ZTJi
OWFiZDMxNzI3ZDQ1MzVmYmM2NGFjZGRiNzIzNGQ3Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9lZGl0YWJs
ZS1pbWFnZS1jcmVhdGVzLWF0dGFjaG1lbnQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlRWRp
dGFibGVJbWFnZXM9dHJ1ZSBlbmFibGVBdHRhY2htZW50RWxlbWVudD10cnVlIF0gLS0+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotYWRkRXZlbnRM
aXN0ZW5lcigibG9hZCIsIGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBhdHRhY2htZW50SWRlbnRp
ZmllciA9IEhUTUxBdHRhY2htZW50RWxlbWVudC5nZXRBdHRhY2htZW50SWRlbnRpZmllcihkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCJpbWciKSk7Ci0gICAgY29uc3QgaGFzQXR0YWNobWVudCA9ICEh
YXR0YWNobWVudElkZW50aWZpZXIubGVuZ3RoOwotICAgIGF3YWl0IFVJSGVscGVyLmRyYXdTcXVh
cmVJbkVkaXRhYmxlSW1hZ2UoKTsKLSAgICBjb25zdCBhdHRhY2htZW50SW5mbyA9IChhd2FpdCBV
SUhlbHBlci5hdHRhY2htZW50SW5mbyhhdHRhY2htZW50SWRlbnRpZmllcikpOwotICAgIGNvbnN0
IGF0dGFjaG1lbnRUeXBlID0gYXR0YWNobWVudEluZm8uY29udGVudFR5cGU7Ci0gICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCA9IGBIYXMgYXR0YWNobWVudCBpbnNp
ZGUgZWRpdGFibGUgaW1hZ2U6ICR7aGFzQXR0YWNobWVudH0uPGJyLz5BdHRhY2htZW50IHR5cGUg
YWZ0ZXIgZHJhd2luZyBvbiBlZGl0YWJsZSBpbWFnZTogJHthdHRhY2htZW50VHlwZX0uYDsKLSAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxkaXYgaWQ9ImxvZyI+PC9kaXY+Ci08aW1nIHgtYXBwbGUtZWRpdGFibGUtaW1hZ2Ugd2lk
dGg9IjMwMCIgaGVpZ2h0PSIzMDAiPgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9pbWFnZXMvcGFzdGUtZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9pbWFnZXMvcGFzdGUtZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWRmODYxYjIwNzRhYTdkN2QyZjJmNTZjZjBj
NzY3YTYzOWNlZTE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3Bhc3RlLWVkaXRhYmxlLWltYWdlLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotSGFkIDEgc3Ryb2tlIGluIGVk
aXRhYmxlIGltYWdlIGFmdGVyIGRyYXdpbmcuCi1IYWQgMSBzdHJva2UgaW4gZWRpdGFibGUgaW1h
Z2UgYWZ0ZXIgY29weWluZyBhbmQgcGFzdGluZy4KLUhhZCAyIHN0cm9rZXMgaW4gZWRpdGFibGUg
aW1hZ2UgYWZ0ZXIgZHJhd2luZyBvbiBwYXN0ZWQgaW1hZ2UuCi1QYXN0ZWQgaW1hZ2UgZ290IGEg
bmV3IGF0dGFjaG1lbnQgSUQ6IHllcy4KLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL2ltYWdlcy9wYXN0ZS1lZGl0YWJsZS1pbWFnZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9pbWFnZXMvcGFzdGUtZWRpdGFibGUtaW1hZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNmMyNjZkZWEzMzhjZjBhMzZkNTRiOGFhODRkNmI5NGFkNDM2YjllYS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL2ltYWdlcy9wYXN0ZS1lZGl0YWJsZS1pbWFnZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
NDcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFi
bGVFZGl0YWJsZUltYWdlcz10cnVlIGVuYWJsZUF0dGFjaG1lbnRFbGVtZW50PXRydWUgXSAtLT4K
LTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1hZGRF
dmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IGRpdiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7Ci0KLSAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCk7Ci0KLSAgICBzZWxlY3Rpb24uc2V0UG9zaXRpb24oZGl2LCAwKTsK
LSAgICB0ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCJJbnNlcnRFZGl0YWJsZUltYWdlIik7Ci0KLSAg
ICBhd2FpdCBVSUhlbHBlci5kcmF3U3F1YXJlSW5FZGl0YWJsZUltYWdlKCk7Ci0gICAgY29uc3Qg
bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJEcmF3aW5nID0gKGF3YWl0IFVJSGVs
cGVyLm51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSgpKTsKLSAgICBjb25zdCBmaXJzdElt
YWdlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaW1nIik7Ci0gICAgY29uc3QgaW5pdGlhbEF0
dGFjaG1lbnRJRCA9IEhUTUxBdHRhY2htZW50RWxlbWVudC5nZXRBdHRhY2htZW50SWRlbnRpZmll
cihmaXJzdEltYWdlKTsKLQotICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGNh
bnZhcyBnZXRzIGEgbm9uLXplcm8gc2l6ZSBiZWZvcmUgdHJ5aW5nIHRvIHNlcmlhbGl6ZSBpdC4K
LSAgICBhd2FpdCBVSUhlbHBlci5lbnN1cmVQcmVzZW50YXRpb25VcGRhdGUoKTsKLQotICAgIHNl
bGVjdGlvbi5zZXRCYXNlQW5kRXh0ZW50KGRpdi5maXJzdENoaWxkLCAwLCBkaXYuZmlyc3RDaGls
ZCwgMSk7Ci0gICAgdGVzdFJ1bm5lci5leGVjQ29tbWFuZCgiQ29weSIpOwotCi0gICAgc2VsZWN0
aW9uLmNvbGxhcHNlVG9FbmQoKTsKLSAgICB0ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCJQYXN0ZSIp
OwotCi0gICAgZmlyc3RJbWFnZS5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKGZpcnN0SW1hZ2Up
OwotCi0gICAgY29uc3QgbnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJQYXN0aW5n
ID0gKGF3YWl0IFVJSGVscGVyLm51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSgpKTsKLQot
ICAgIGF3YWl0IFVJSGVscGVyLmRyYXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2UoKTsKLSAgICBjb25z
dCBudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRlclNlY29uZERyYXdpbmcgPSAoYXdh
aXQgVUlIZWxwZXIubnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlKCkpOwotICAgIGNvbnN0
IHBhc3RlZEF0dGFjaG1lbnRJRCA9IEhUTUxBdHRhY2htZW50RWxlbWVudC5nZXRBdHRhY2htZW50
SWRlbnRpZmllcihkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbWciKSk7Ci0KLSAgICBjb25zdCBh
dHRhY2htZW50SURzQXJlRGlmZmVyZW50ID0gKGluaXRpYWxBdHRhY2htZW50SUQgIT0gcGFzdGVk
QXR0YWNobWVudElEKSA/ICJ5ZXMiIDogIm5vIjsKLQotICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJsb2ciKS5pbm5lckhUTUwgPSBgSGFkICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUlt
YWdlQWZ0ZXJEcmF3aW5nfSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJhd2luZy48
YnIvPkhhZCAke251bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyUGFzdGluZ30gc3Ry
b2tlIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGNvcHlpbmcgYW5kIHBhc3RpbmcuPGJyLz5IYWQg
JHtudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRlclNlY29uZERyYXdpbmd9IHN0cm9r
ZXMgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJhd2luZyBvbiBwYXN0ZWQgaW1hZ2UuPGJyLz5Q
YXN0ZWQgaW1hZ2UgZ290IGEgbmV3IGF0dGFjaG1lbnQgSUQ6ICR7YXR0YWNobWVudElEc0FyZURp
ZmZlcmVudH0uYDsKLSAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keSBjb250ZW50ZWRpdGFibGU+PGRpdiBpZD0ibG9nIj48YnIvPjwvZGl2
PjxkaXYgaWQ9InRlc3QiPjxici8+PC9kaXY+PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9pbWFnZXMvcmVkby1pbnNlcnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0
cm9rZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcmVkby1pbnNl
cnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9rZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTczODYyYzYxMTM2NjRmZDllZWM0NDdmNDc0Y2I1ZjFj
Y2VjNDIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3JlZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLW1haW50
YWlucy1zdHJva2VzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAot
Ci1IYWQgMCBzdHJva2VzIGluIGVkaXRhYmxlIGltYWdlIGJlZm9yZSBkcmF3aW5nLgotSGFkIDEg
c3Ryb2tlIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRyYXdpbmcuCi1IYWQgMCBzdHJva2VzIGlu
IGVkaXRhYmxlIGltYWdlIGFmdGVyIHVuZG8uCi1IYWQgMSBzdHJva2UgaW4gZWRpdGFibGUgaW1h
Z2UgYWZ0ZXIgcmVkby4KLUhhZCAyIHN0cm9rZXMgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJh
d2luZyBhZ2Fpbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3JlZG8t
aW5zZXJ0LWVkaXRhYmxlLWltYWdlLW1haW50YWlucy1zdHJva2VzLmh0bWwgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL2ltYWdlcy9yZWRvLWluc2VydC1lZGl0YWJsZS1pbWFnZS1tYWludGFpbnMtc3Ry
b2tlcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjlhZGM0ODIzNzg5OTJk
ZDRhYzJlNWZkYzIwYjk5MGFiN2JhZGM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3JlZG8taW5zZXJ0LWVk
aXRhYmxlLWltYWdlLW1haW50YWlucy1zdHJva2VzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwy
OSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJs
ZUVkaXRhYmxlSW1hZ2VzPXRydWUgXSAtLT4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVz
dFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwotfQotCi1hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkg
PT4gewotICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5
LCAwKTsKLSAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0RWRpdGFibGVJbWFnZSIpOwot
ICAgIGNvbnN0IGluaXRpYWxOdW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UgPSAoYXdhaXQg
VUlIZWxwZXIubnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlKCkpOwotICAgIGF3YWl0IFVJ
SGVscGVyLmRyYXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2UoKTsKLSAgICBjb25zdCBudW1iZXJPZlN0
cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRlckRyYXdpbmcgPSAoYXdhaXQgVUlIZWxwZXIubnVtYmVy
T2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlKCkpOwotICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCd1
bmRvJywgZmFsc2UsIG51bGwpOwotICAgIGNvbnN0IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJ
bWFnZUFmdGVyVW5kbyA9IChhd2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxl
SW1hZ2UoKSk7Ci0gICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ3JlZG8nLCBmYWxzZSwgbnVsbCk7
Ci0gICAgY29uc3QgbnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJSZWRvID0gKGF3
YWl0IFVJSGVscGVyLm51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSgpKTsKLSAgICBhd2Fp
dCBVSUhlbHBlci5kcmF3U3F1YXJlSW5FZGl0YWJsZUltYWdlKCk7Ci0gICAgY29uc3QgbnVtYmVy
T2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJTZWNvbmREcmF3aW5nID0gKGF3YWl0IFVJSGVs
cGVyLm51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSgpKTsKLSAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MID0gYEhhZCAke2luaXRpYWxOdW1iZXJPZlN0cm9r
ZXNJbkVkaXRhYmxlSW1hZ2V9IHN0cm9rZXMgaW4gZWRpdGFibGUgaW1hZ2UgYmVmb3JlIGRyYXdp
bmcuPGJyLz5IYWQgJHtudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRlckRyYXdpbmd9
IHN0cm9rZSBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciBkcmF3aW5nLjxici8+SGFkICR7bnVtYmVy
T2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJVbmRvfSBzdHJva2VzIGluIGVkaXRhYmxlIGlt
YWdlIGFmdGVyIHVuZG8uPGJyLz5IYWQgJHtudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VB
ZnRlclJlZG99IHN0cm9rZSBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciByZWRvLjxici8+SGFkICR7
bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJTZWNvbmREcmF3aW5nfSBzdHJva2Vz
IGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRyYXdpbmcgYWdhaW4uYDsKLSAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBjb250ZW50ZWRp
dGFibGU+Ci08ZGl2IGlkPSJsb2ciPjwvZGl2PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9pbWFnZXMvcmVwYXJlbnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0
cm9rZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcmVwYXJlbnQt
ZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9rZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjOTY4N2ZkMzJhZDk0OWIyZjkxOWZmOTEyY2U4NWRhNmI0NjZi
NzYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3JlcGFyZW50LWVkaXRhYmxlLWltYWdlLW1haW50YWlucy1z
dHJva2VzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotSGFkIDEg
c3Ryb2tlIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRyYXdpbmcuCi1IYWQgMSBzdHJva2UgaW4g
ZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgcmVwYXJlbnRpbmcgaXQgdW5kZXIgYW5vdGhlciBlbGVtZW50
LgotIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcmVwYXJlbnQtZWRp
dGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9rZXMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
aW1hZ2VzL3JlcGFyZW50LWVkaXRhYmxlLWltYWdlLW1haW50YWlucy1zdHJva2VzLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmZGYwMGYyY2VkOTJhNjBkMzJiNjk0NTNiOGRk
NjI0NjM0NjAyMGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcmVwYXJlbnQtZWRpdGFibGUtaW1hZ2UtbWFp
bnRhaW5zLXN0cm9rZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlRWRpdGFibGVJbWFnZXM9
dHJ1ZSBdIC0tPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBl
ci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
Ci19Ci0KLWFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQg
VUlIZWxwZXIuZHJhd1NxdWFyZUluRWRpdGFibGVJbWFnZSgpOwotICAgIGNvbnN0IG51bWJlck9m
U3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyRHJhd2luZyA9IChhd2FpdCBVSUhlbHBlci5udW1i
ZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIm90aGVyIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXRhYmxl
SW1hZ2UiKSk7Ci0gICAgY29uc3QgbnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJS
ZXBhcmVudGluZyA9IChhd2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1h
Z2UoKSk7Ci0KLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MID0g
YEhhZCAke251bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyRHJhd2luZ30gc3Ryb2tl
IGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRyYXdpbmcuPGJyLz5IYWQgJHtudW1iZXJPZlN0cm9r
ZXNJbkVkaXRhYmxlSW1hZ2VBZnRlclJlcGFyZW50aW5nfSBzdHJva2UgaW4gZWRpdGFibGUgaW1h
Z2UgYWZ0ZXIgcmVwYXJlbnRpbmcgaXQgdW5kZXIgYW5vdGhlciBlbGVtZW50LmA7Ci0gICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
ZGl2IGlkPSJsb2ciPjwvZGl2PgotPGltZyBpZD0iZWRpdGFibGVJbWFnZSIgeC1hcHBsZS1lZGl0
YWJsZS1pbWFnZT0idHJ1ZSIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPgotPGRpdiBpZD0ib3Ro
ZXIiPjwvZGl2PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFn
ZXMvdW5kby1pbnNlcnQtZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9pbWFnZXMvdW5kby1pbnNlcnQtZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDI3MDhlMmJmZGNjZjA5ZmQ0NDczNzI5MDIy
OTJlY2NkY2U3OWJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3VuZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdl
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVRoaXMgdGVzdCBp
bnNlcnRzIGEgZWRpdGFibGUgaW1hZ2UsIHBlcmZvcm1zIGFuIHVuZG8sIHRoZW4gYSByZWRvLCBl
bnN1cmluZyB0aGF0IHRoZSBzZWxlY3Rpb24gcmVtYWlucyBhZnRlciB0aGUgaW1hZ2Ugd2hlbiBy
ZS1kb25lLgotCi1iZWZvcmUgdW5kbzoKLXwgIkhlbGxvLCB3b3JsZCEiCi18IDxpbWc+Ci18ICAg
aGVpZ2h0PSIzMDBweCIKLXwgICBzdHlsZT0iZGlzcGxheTogYmxvY2siCi18ICAgd2lkdGg9IjEw
MCUiCi18ICAgeC1hcHBsZS1lZGl0YWJsZS1pbWFnZT0iIgotfCAgIDxzaGFkb3c6cm9vdD4KLXwg
ICAgIDxhdHRhY2htZW50PgotfCAgICAgICBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50
OyIKLXwgPCNzZWxlY3Rpb24tY2FyZXQ+Ci0KLWFmdGVyIHVuZG86Ci18ICJIZWxsbywgd29ybGQh
PCNzZWxlY3Rpb24tY2FyZXQ+IgotCi1hZnRlciByZWRvOgotfCAiSGVsbG8sIHdvcmxkISIKLXwg
PGltZz4KLXwgICBoZWlnaHQ9IjMwMHB4IgotfCAgIHN0eWxlPSJkaXNwbGF5OiBibG9jayIKLXwg
ICB3aWR0aD0iMTAwJSIKLXwgICB4LWFwcGxlLWVkaXRhYmxlLWltYWdlPSIiCi18ICAgPHNoYWRv
dzpyb290PgotfCAgICAgPGF0dGFjaG1lbnQ+Ci18ICAgICAgIHN0eWxlPSJkaXNwbGF5OiBub25l
ICFpbXBvcnRhbnQ7IgotfCA8I3NlbGVjdGlvbi1jYXJldD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvaW1hZ2VzL3VuZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLmh0bWwgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL2ltYWdlcy91bmRvLWluc2VydC1lZGl0YWJsZS1pbWFnZS5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYmYxNjU1MWMxNGQ1N2VkYjEzZjM2M2ZkMmM2
YjRkYTYxYjJlN2NjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3VuZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdl
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD48IS0t
IHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUVkaXRhYmxlSW1hZ2VzPXRydWUgXSAtLT4KLTxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyIgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGNvbnRlbnRlZGl0
YWJsZT4KLTxkaXYgaWQ9InRlc3QiPkhlbGxvLCB3b3JsZCE8L2Rpdj4KLTxzY3JpcHQ+Ci1jb25z
dCBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOwotCi13aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuc2V0UG9zaXRpb24oZGl2LCAxMyk7Ci1kb2N1bWVudC5leGVjQ29tbWFuZCgiSW5z
ZXJ0RWRpdGFibGVJbWFnZSIpOwotCi1NYXJrdXAuZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBpbnNl
cnRzIGEgZWRpdGFibGUgaW1hZ2UsIHBlcmZvcm1zIGFuIHVuZG8sIHRoZW4gYSByZWRvLCBlbnN1
cmluZyB0aGF0IHRoZSBzZWxlY3Rpb24gcmVtYWlucyBhZnRlciB0aGUgaW1hZ2Ugd2hlbiByZS1k
b25lLiIpCi1NYXJrdXAuZHVtcChkaXYsICJiZWZvcmUgdW5kbyIpOwotZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoJ3VuZG8nLCBmYWxzZSwgbnVsbCk7Ci1NYXJrdXAuZHVtcChkaXYsICJhZnRlciB1bmRv
Iik7Ci1kb2N1bWVudC5leGVjQ29tbWFuZCgncmVkbycsIGZhbHNlLCBudWxsKTsKLU1hcmt1cC5k
dW1wKGRpdiwgImFmdGVyIHJlZG8iKTsKLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNl
cy91aS1oZWxwZXIuanMKaW5kZXggZDgxNGJkZWE1ZTRhMWMwMjdkYWMzOGM3NWExZTVjODk4NWRm
NGE2YS4uYWY0MjRjYjQxYTkzNDU3ZDM5NTQxMWZmNWU0YWEzNTg4Y2QzNWE3OSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcworKysgYi9MYXlvdXRUZXN0cy9y
ZXNvdXJjZXMvdWktaGVscGVyLmpzCkBAIC05NjYsMTQgKzk2Niw2IEBAIHdpbmRvdy5VSUhlbHBl
ciA9IGNsYXNzIFVJSGVscGVyIHsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIGRy
YXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2UoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmlzV2Vi
S2l0MigpKQotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotCi0gICAgICAg
IHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYHVp
Q29udHJvbGxlci5kcmF3U3F1YXJlSW5FZGl0YWJsZUltYWdlKClgLCByZXNvbHZlKSk7Ci0gICAg
fQotCiAgICAgc3RhdGljIHN0eWx1c1RhcEF0KHgsIHksIG1vZGlmaWVycz1bXSkKICAgICB7CiAg
ICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSkKQEAgLTk4NywxOCArOTc5LDYgQEAgd2luZG93
LlVJSGVscGVyID0gY2xhc3MgVUlIZWxwZXIgewogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBz
dGF0aWMgbnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlKCkKLSAgICB7Ci0gICAgICAgIGlm
ICghdGhpcy5pc1dlYktpdDIoKSkKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUo
KTsKLQotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgICAg
ICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAoKCkgPT4gewotICAgICAgICAgICAgICAgIHVpQ29u
dHJvbGxlci51aVNjcmlwdENvbXBsZXRlKHVpQ29udHJvbGxlci5udW1iZXJPZlN0cm9rZXNJbkVk
aXRhYmxlSW1hZ2UpOwotICAgICAgICAgICAgfSkoKWAsIG51bWJlckFzU3RyaW5nID0+IHJlc29s
dmUocGFyc2VJbnQobnVtYmVyQXNTdHJpbmcsIDEwKSkpCi0gICAgICAgIH0pOwotICAgIH0KLQog
ICAgIHN0YXRpYyBhdHRhY2htZW50SW5mbyhhdHRhY2htZW50SWRlbnRpZmllcikKICAgICB7CiAg
ICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407583</attachid>
            <date>2020-08-30 18:45:15 -0700</date>
            <delta_ts>2020-08-30 20:26:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215991-20200830184515.patch</filename>
            <type>text/plain</type>
            <size>215491</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU1ODAyYWQ5OTE4OTJi
MjhkMTc5ZjcyNWYxY2Y1ZGFlMjRiMTVjZi4uMjhmNDY4NzgwYjg5ZDVmNjY1ODY0ZWFhZjIyMTc4
YmY1ZGEwZWZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIwLTA4LTMwICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVz
ZWQgZWRpdGFibGUgaW1hZ2UgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE1OTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGVkaXRpbmcvRWRpdEFjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp1bmRvUmVkb0xhYmVsKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRBY3Rp
b24uaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6Omluc2VydEVkaXRhYmxlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIGVkaXRpbmcv
RWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUNvbW1hbmRNYXApOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUlu
c2VydEVkaXRhYmxlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZElu
UmljaGx5RWRpdGFibGVUZXh0V2l0aEVkaXRhYmxlSW1hZ2VzRW5hYmxlZCk6IERlbGV0ZWQuCisg
ICAgICAgICogZWRpdGluZy9JbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogZWRpdGluZy9JbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5oOiBSZW1vdmVk
LgorICAgICAgICAqIGVuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M6CisgICAgICAgICogaHRt
bC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2Vz
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5j
ZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6Y29weU5vbkF0dHJp
YnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VF
bGVtZW50OjpzdXBwb3J0c0ZvY3VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbWFnZUVsZW1lbnQ6OmlzRm9jdXNhYmxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmRpZEZpbmlzaEluc2VydGluZ05vZGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6aGFzRWRpdGFibGVJbWFn
ZUF0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VF
bGVtZW50OjplZGl0YWJsZUltYWdlVmlld0lEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnVwZGF0ZUVkaXRhYmxlSW1hZ2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6
IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICog
cGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6YXNz
b2NpYXRlRWRpdGFibGVJbWFnZVdpdGhBdHRhY2htZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudDo6ZGlkQ3JlYXRlRWRpdGFibGVJbWFnZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmRpZERlc3Ryb3lFZGl0YWJsZUltYWdlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0VkaXRhYmxlSW1hZ2VSZWZlcmVuY2UuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIHBhZ2UvRWRpdGFibGVJbWFnZVJlZmVyZW5jZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHBhZ2UvU2V0dGluZ3MueWFtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6Om5l
eHRFbWJlZGRlZFZpZXdJRCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0Q29u
dGVudHNUb1NvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0
Q29udGVudHNUb0VtYmVkZGVkVmlldyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyRm9yRW1iZWRkZWRWaWV3KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0VtYmVkZGVk
Vmlldyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmVtYmVkZGVkVmlld0lEIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2U6OmlzRWRpdGFibGVJbWFnZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cmVxdWlyZXNMYXllciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzaG91
bGRCZU5vcm1hbEZsb3dPbmx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpjYWxjdWxhdGVDbGlwUmVjdHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVx
dWlyZXNDb21wb3NpdGluZ0xheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNPd25CYWNraW5nU3RvcmUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWFzb25zRm9yQ29tcG9zaXRpbmcgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0Nv
bXBvc2l0aW5nRm9yRWRpdGFibGVJbWFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorCiAyMDIwLTA4LTI5ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJld3JpdGUgbWFpbiB0aHJl
YWQgc2Nyb2xsIGxhdGNoaW5nIGxvZ2ljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVlMjU3Zjg2Y2JmNjM1MTU0MzVh
NTZhYTg2OGI3NDkzOTE3ZjI0YWQuLmQ1YTBkZDE1NGM4MTU5NTBjNjEyYzBjMWUxZDcyZDY5MThm
NzAyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA0IEBACisyMDIwLTA4LTMwICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQgZWRp
dGFibGUgaW1hZ2UgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE1OTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9z
L1BlbmNpbEtpdFNQSS5oOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9Gb2N1c2VkRWxlbWVu
dEluZm9ybWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpk
cmF3SW5Db250ZXh0KToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzOjpMYXllckNyZWF0aW9u
UHJvcGVydGllcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpMYXllckNyZWF0aW9uUHJvcGVydGllczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorICAgICAgICAq
IFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0dXBQYWdlQ29uZmlndXJhdGlvbjpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06
CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gaW5pdF0pOgorICAgICAgICAoLVtX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGNvcHlXaXRoWm9uZTpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBfc2V0RWRpdGFibGVJbWFnZXNFbmFibGVkOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9lZGl0YWJsZUltYWdlc0VuYWJsZWRd
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb25Qcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
SU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3NldHVwU2Nyb2xsQW5kQ29udGVudFZpZXdzXSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfc3R5bHVzVGFwR2VzdHVyZVNob3VsZENyZWF0ZUVkaXRhYmxlSW1hZ2Vd
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50OjpjcmVhdGVEcmF3aW5nVmlldyk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjpsYXllcldpbGxCZVJlbW92ZWQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjpjbGVhckxheWVycyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6OmNyZWF0ZUVtYmVkZGVkVmlldyk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5
ZXJUcmVlVmlld3MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9S
ZW1vdGVMYXllclRyZWVWaWV3cy5tbToKKyAgICAgICAgKC1bV0tFbWJlZGRlZFZpZXcgaW5pdFdp
dGhFbWJlZGRlZFZpZXdJRDpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1
bm5pbmdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3aWxsVXBkYXRlQXR0YWNobWVudEF0
dHJpYnV0ZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjplZGl0YWJsZUltYWdlQ29udHJvbGxlcik6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5oOiBSZW1v
dmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubWVz
c2FnZXMuaW46IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdl
Q29udHJvbGxlci5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdWaWV3KTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BlbmNpbEtpdFNvZnRMaW5rLmg6IFJl
bW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QZW5jaWxLaXRTb2Z0TGluay5tbTogUmVt
b3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldFVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBjbGVhblVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBfcmVtb3ZlRGVmYXVsdEdlc3R1cmVSZWNvZ25pemVyc10pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzXSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgZ2VzdHVyZVJlY29nbml6ZXJTaG91bGRCZWdpbjpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfZWxlbWVudERpZEZvY3VzOnVzZXJJc0ludGVyYWN0aW5nOmJsdXJQcmV2
aW91c05vZGU6YWN0aXZpdHlTdGF0ZUNoYW5nZXM6dXNlck9iamVjdDpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfZWxlbWVudERpZEJsdXJdKToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBfc3R5bHVzU2luZ2xlVGFwUmVjb2duaXplZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfZHJhd2luZ0Nvb3JkaW5hdG9yXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0RyYXdpbmdDb29yZGluYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tEcmF3aW5nQ29vcmRpbmF0b3IubW06IFJlbW92ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0RyYXdpbmdWaWV3Lm1tOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhh
bmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tOgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmFzc29jaWF0ZUVkaXRhYmxlSW1hZ2VXaXRoQXR0YWNo
bWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZGlkQ3Jl
YXRlRWRpdGFibGVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNs
aWVudDo6ZGlkRGVzdHJveUVkaXRhYmxlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvR3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6R3JhcGhpY3NMYXllckNBUmVtb3RlOjpjcmVhdGVQbGF0Zm9ybUNB
TGF5ZXJGb3JFbWJlZGRlZFZpZXcpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvR3JhcGhpY3NMYXllckNBUmVtb3RlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZUZvckVt
YmVkZGVkVmlldyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6ZW1iZWRkZWRWaWV3SUQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVD
b250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVDb250ZXh0OjpsYXll
ckRpZEVudGVyQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChX
ZWJLaXQ6OmlzQXNzaXN0YWJsZUVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpn
ZXRGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
aGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludCk6IERlbGV0ZWQuCisKIDIwMjAtMDgtMjggIFRp
bSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU2l0ZXMgYnVp
bHQgd2l0aCBmbGFtYmUuanMgZG9uJ3Qgd29yayB3aXRoIHRyYWNrcGFkIG9uIGlQYWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKaW5kZXggNGNiYzI3OWVmMjliMDg2MDYwZDZlZDAxZTE2ZjQ5YjcxZjcxZjM3ZS4uMGE4
NDZjNzgxM2IyYjNkNTE3MTFkYmNkMzhkNmE1YzNkZGQ0Y2ZlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAg
LTEwMDIsNyArMTAwMiw2IEBAIGVkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcAogZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHAKIGVkaXRpbmcvSFRNTEludGVyY2hhbmdlLmNwcAogZWRpdGlu
Zy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKLWVkaXRpbmcvSW5zZXJ0RWRpdGFibGVJbWFnZUNv
bW1hbmQuY3BwCiBlZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwCiBlZGl0aW5n
L0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCiBlZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNw
cApAQCAtMTU4OCw3ICsxNTg3LDYgQEAgcGFnZS9EZXZpY2VDb250cm9sbGVyLmNwcAogcGFnZS9E
aWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwCiBwYWdlL0Rpc2FibGVkQWRhcHRhdGlvbnMuY3BwCiBw
YWdlL0RyYWdDb250cm9sbGVyLmNwcAotcGFnZS9FZGl0YWJsZUltYWdlUmVmZXJlbmNlLmNwcAog
cGFnZS9FdmVudEhhbmRsZXIuY3BwCiBwYWdlL0V2ZW50U291cmNlLmNwcAogcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNmY2NzkxMGE4YTY2N2U2YmUyY2QzN2QxYzE1OGI5MmJhYmQ4Mzg2
Ni4uM2VhMDU4YWQ3NGEwM2M2NTdhNTAxZGVmMzhkNzcxZDUwYWVmMjFmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzI3LDcg
KzcyNyw2IEBACiAJCTJEMjlFQ0M4MTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDI5RUNDNDE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFu
YWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTJEMjlFQ0NBMTkyRjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjlFQ0M5MTky
RjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaCAqLzsgfTsKIAkJMkQy
QkVCMzEyMjM0QTMzNTAwNTU0NENBIC8qIEVsZW1lbnRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDJCRUIyRjIyMzRBMzM0MDA1NTQ0
Q0EgLyogRWxlbWVudElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQkyRDJFMzRBQzIxQTRFMTkyMDA0NTk4QjUgLyogRWRpdGFibGVJ
bWFnZVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkQyRTM0QTkyMUE0RTE5MTAwNDU5OEI1IC8qIEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2Uu
aCAqLzsgfTsKIAkJMkQzQTBFMzYxM0E3RDc2MTAwRTg1QUYwIC8qIFNWR1BhcnNpbmdFcnJvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQzQTBFMzUx
M0E3RDc2MTAwRTg1QUYwIC8qIFNWR1BhcnNpbmdFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEM0VGNDQ4MTkxNzkxNUMwMDAzNDE4NCAv
KiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEM0VGNDQ0MTkxNzkxNUMwMDAzNDE4NCAvKiBX
ZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDNFRjQ0QTE5MTc5MTVDMDAwMzQxODQgLyog
V2ViQ29yZUNBTGF5ZXJFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEM0VGNDQ2MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJDb3JlQ0FMYXllckV4
dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC03NTEsNyArNzUwLDYgQEAKIAkJMkQ3NkJCODIxOTQ1NjMyNDAwQ0ZEMjlBIC8qIFJ1bkxvb3BP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkQ3NkJCODAxOTQ1NjMyNDAwQ0ZEMjlBIC8qIFJ1bkxvb3BPYnNlcnZlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEN0RBMEYyMjQzNUVCMTkw
MEYwNDhEMSAvKiBXZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDdEQTBFRjI0MzVFQjE3MDBG
MDQ4RDEgLyogV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEN0VEMEFCMUJBRTk5MTcw
MDQzQjNFNSAvKiBUaW1lckV2ZW50QmFzZWRNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDdFRDBBOTFCQUU5OTE3MDA0M0IzRTUgLyogVGltZXJF
dmVudEJhc2VkTW9jay5oICovOyB9OwotCQkyRDgxRTFDRjIxQTc4Q0MyMDBBMzJDRjQgLyogSW5z
ZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEODFFMUNEMjFBNzhDQzIwMEEzMkNGNCAvKiBJbnNlcnRFZGl0YWJs
ZUltYWdlQ29tbWFuZC5oICovOyB9OwogCQkyRDgyODdGNzE2RTRBMDM4MDA4NkJEMDAgLyogSGl0
VGVzdExvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDgyODdGNTE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQ4QjkyQ0UyMDNE
MTNFMTAwOUM4NjhGIC8qIFVuaWZpZWRTb3VyY2U0ODEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREU1Rjg0QUQxRkExQTQ4QjAwNkRCNjNCIC8qIFVu
aWZpZWRTb3VyY2U0ODEuY3BwICovOyB9OwogCQkyRDhCOTJDRjIwM0QxM0UxMDA5Qzg2OEYgLyog
VW5pZmllZFNvdXJjZTQ4Mi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBERTVGODRDODFGQTFBNEE0MDA2REI2M0IgLyogVW5pZmllZFNvdXJjZTQ4Mi5j
cHAgKi87IH07CkBAIC02OTA2LDggKzY5MDQsNiBAQAogCQkyRDI5RUNDNDE5MkVDQzgzMDA5ODRC
NzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJEMjlFQ0M5MTkyRjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5UmVm
cmVzaE1vbml0b3JJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxh
eVJlZnJlc2hNb25pdG9ySU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMkJF
QjJGMjIzNEEzMzQwMDU1NDRDQSAvKiBFbGVtZW50SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFbGVtZW50SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkyRDJFMzRBOTIxQTRFMTkxMDA0NTk4QjUgLyogRWRpdGFibGVJbWFnZVJl
ZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0YWJsZUltYWdl
UmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJEMkUzNEFCMjFBNEUx
OTIwMDQ1OThCNSAvKiBFZGl0YWJsZUltYWdlUmVmZXJlbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRDJGQzA1NDE0NjBDRDZGMDAyNjM2MzMgLyogQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDJGQzA1NTE0NjBDRDZGMDAyNjM2MzMgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyRkMwNTYxNDYwQ0Q2RjAwMjYz
NjMzIC8qIEdyYWRpZW50SW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR3JhZGllbnRJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
OTUyLDggKzY5NDgsNiBAQAogCQkyRDdEQTBFRjI0MzVFQjE3MDBGMDQ4RDEgLyogV2ViVmlld1Zp
c3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJEN0RBMEYxMjQzNUVCMTgwMEYwNDhEMSAvKiBXZWJWaWV3VmlzdWFs
SWRlbnRpZmljYXRpb25PdmVybGF5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ3RUQwQTkxQkFFOTkxNzAwNDNCM0U1IC8qIFRpbWVyRXZl
bnRCYXNlZE1vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGltZXJFdmVu
dEJhc2VkTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyRDgxRTFDQjIxQTc4
Q0MxMDBBMzJDRjQgLyogSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyRDgxRTFDRDIxQTc4Q0MyMDBBMzJDRjQg
LyogSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkQ4Mjg3RjQxNkU0QTAzODAwODZCRDAwIC8qIEhpdFRlc3RMb2NhdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaXRUZXN0TG9jYXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDgyODdGNTE2RTRBMDM4MDA4NkJE
MDAgLyogSGl0VGVzdExvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEhpdFRlc3RMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDhEM0JF
QjIzODQ3QUM5MDA2NTcwNzUgLyogZ2VzdHVyZS1yZWNvZ25pemVyLmpzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBwYXRoID0gImdlc3R1cmUtcmVjb2duaXplci5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMTM4Niw4ICsyMTM4MCw2IEBACiAJCQkJQTdDQTU5NUMwQjI3QkQ5RTAwRkEwMjFE
IC8qIERyYWdDb250cm9sbGVyLmNwcCAqLywKIAkJCQlBN0NBNTk1QjBCMjdCRDlFMDBGQTAyMUQg
LyogRHJhZ0NvbnRyb2xsZXIuaCAqLywKIAkJCQk4MUY2NUZGNTEzNzg4RkFBMDBGRjZGMkQgLyog
RHJhZ1N0YXRlLmggKi8sCi0JCQkJMkQyRTM0QUIyMUE0RTE5MjAwNDU5OEI1IC8qIEVkaXRhYmxl
SW1hZ2VSZWZlcmVuY2UuY3BwICovLAotCQkJCTJEMkUzNEE5MjFBNEUxOTEwMDQ1OThCNSAvKiBF
ZGl0YWJsZUltYWdlUmVmZXJlbmNlLmggKi8sCiAJCQkJMUFGMzI2NzcwRDc4Qjk0NDAwNjhGMEM0
IC8qIEVkaXRvckNsaWVudC5oICovLAogCQkJCTkzQzA5QTgwMEIwNjRGMDAwMDVBQkQ0RCAvKiBF
dmVudEhhbmRsZXIuY3BwICovLAogCQkJCTkzQzA5QTUyMEIwNjREQjMwMDVBQkQ0RCAvKiBFdmVu
dEhhbmRsZXIuaCAqLywKQEAgLTIyMzkyLDggKzIyMzg0LDYgQEAKIAkJCQk5MzMwOUQ5NzA5OUU2
NDkxMDA1NkU1ODEgLyogSFRNTEludGVyY2hhbmdlLmggKi8sCiAJCQkJREIyM0MyQzkwQTUwOEQy
OTAwMjQ4OUVCIC8qIEluZGVudE91dGRlbnRDb21tYW5kLmNwcCAqLywKIAkJCQlEQjIzQzJDQTBB
NTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCAqLywKLQkJCQkyRDgxRTFD
QjIxQTc4Q0MxMDBBMzJDRjQgLyogSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuY3BwICovLAot
CQkJCTJEODFFMUNEMjFBNzhDQzIwMEEzMkNGNCAvKiBJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFu
ZC5oICovLAogCQkJCTkzMzA5RDlBMDk5RTY0OTEwMDU2RTU4MSAvKiBJbnNlcnRJbnRvVGV4dE5v
ZGVDb21tYW5kLmNwcCAqLywKIAkJCQk5MzMwOUQ5QjA5OUU2NDkxMDA1NkU1ODEgLyogSW5zZXJ0
SW50b1RleHROb2RlQ29tbWFuZC5oICovLAogCQkJCTkzMzA5RDlDMDk5RTY0OTEwMDU2RTU4MSAv
KiBJbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcCAqLywKQEAgLTMwMjA1LDcgKzMwMTk1LDYgQEAK
IAkJCQk2M0JENEE1RjFGNzc4RTlGMDA0Mzg3MjIgLyogQXBwbGljYXRpb25NYW5pZmVzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjMxNTJEMTkxRjk1MzFFRTAwN0E1RTRCIC8qIEFwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTYzNTRGNEM5MUY3QUZDOTQwMEQ4
OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlE
RkM2MTBBNjI0RkIyQTdEMDA2MjU0QzggLyogRW5jb2RpbmdUYWJsZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTlCNDE3MDY0MTI1NjYyQjMwMDZCMjhGQyAvKiBBcHBseUJsb2NrRWxlbWVudENvbW1h
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REQ5MDk5RTY0OTIwMDU2RTU4MSAvKiBBcHBs
eVN0eWxlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4RjYwRDkxRTZBRjAwMEY4
OUVFIC8qIEFyY2hpdmUuaCBpbiBIZWFkZXJzICovLApAQCAtMzEwMDAsNyArMzA5ODksNiBAQAog
CQkJCUZENTM3MzU3MTM3QjY1M0IwMDAwOERDRSAvKiBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZENkVEMkM0MTM2QjhFNDIwMDNDRjA3MiAvKiBEeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzdDMEI3NjI0REIzODUwMDA1
RDU5NTkgLyogRHluYW1pY3NDb21wcmVzc29yT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MkQyRTM0QUMyMUE0RTE5MjAwNDU5OEI1IC8qIEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzMzA5REUyMDk5RTY0OTIwMDU2RTU4MSAvKiBFZGl0QWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURFNDA5OUU2NDkyMDA1NkU1ODEgLyogRWRpdENvbW1h
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REU4MDk5RTY0OTIwMDU2RTU4MSAvKiBFZGl0
aW5nLmggaW4gSGVhZGVycyAqLywKQEAgLTMxMDMyLDYgKzMxMDIwLDcgQEAKIAkJCQk0MTRERURF
NzFGOUZFOTFFMDA0N0M0MEQgLyogRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE1QkUxOTAxRDU0RjVGQjAwREQ3QzY4IC8qIEVtcHR5R2FtZXBhZFByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzg0OUMxRjI0QkU0MDRCMDA0NDhENUEgLyogRW1wdHlT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQlERkM2MTBBNjI0RkIy
QTdEMDA2MjU0QzggLyogRW5jb2RpbmdUYWJsZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNzdD
M0Q3MURFRjg1MEEwMEE1MEJGQSAvKiBFbmRpbmdUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NDAzRTc4NzIzNjNCNThDMDAwNDQ1NTAgLyogRW50ZXJLZXlIaW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxRDJGOEUwNDIzNDQ3NTE2MDA5OTNCNjggLyogRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZl
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzE1OTMsNyArMzE1ODIsNiBAQAogCQkJCUU1MkVGREY0
MjExMjg3NUEwMEFEMjgyQSAvKiBJbnB1dE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RTM1
MjREMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMz
NDg2MTI0MTVGREUyMUUwMDdBMUNDOSAvKiBJbnB1dFR5cGVOYW1lcy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMkQ4MUUxQ0YyMUE3OENDMjAwQTMyQ0Y0IC8qIEluc2VydEVkaXRhYmxlSW1hZ2VDb21t
YW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURFQTA5OUU2NDkyMDA1NkU1ODEgLyogSW5z
ZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERUMwOTlF
NjQ5MjAwNTZFNTgxIC8qIEluc2VydExpbmVCcmVha0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUQwN0RFQUJBMEEzNjU1NEEwMENBMzBGOCAvKiBJbnNlcnRMaXN0Q29tbWFuZC5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRBY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0aW9uLmNwcAppbmRleCBmYmFlZjU4
N2M5NzAwZDg2MGI1ZDc0NmNkNzU2OTc2Yjg5ZmRmMzdhLi4yODgyZWE0NDMwNTMyMmNjNjgwZmVl
ZTM3MGU4NWIxODJhZmU0YjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdEFjdGlvbi5jcHAK
QEAgLTE0Miw4ICsxNDIsNiBAQCBTdHJpbmcgdW5kb1JlZG9MYWJlbChFZGl0QWN0aW9uIGVkaXRB
Y3Rpb24pCiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWSgiQ29udmVydCB0byBPcmRl
cmVkIExpc3QiLCAiQ29udmVydCB0byBPcmRlcmVkIExpc3QgKFVuZG8gYWN0aW9uIG5hbWUpIiwg
IlVuZG8gYWN0aW9uIG5hbWUiKTsKICAgICBjYXNlIEVkaXRBY3Rpb246OkNvbnZlcnRUb1Vub3Jk
ZXJlZExpc3Q6CiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWSgiQ29udmVydCB0byBV
bm9yZGVyZWQgTGlzdCIsICJDb252ZXJ0IHRvIFVub3JkZXJlZCBMaXN0IChVbmRvIGFjdGlvbiBu
YW1lKSIsICJVbmRvIGFjdGlvbiBuYW1lIik7Ci0gICAgY2FzZSBFZGl0QWN0aW9uOjpJbnNlcnRF
ZGl0YWJsZUltYWdlOgotICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoIkluc2VydCBE
cmF3aW5nIiwgIkluc2VydCBEcmF3aW5nIChVbmRvIGFjdGlvbiBuYW1lKSIsICJVbmRvIGFjdGlv
biBuYW1lIik7CiAgICAgfQogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRBY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dEFjdGlvbi5oCmluZGV4IDIxNjhlYjAyODYxYzFhMmRhNjcwN2UyODhjZjdiN2NkNWRjNmMyMDMu
LmM2MGM2YmNjODA1NTU1NjdhM2NiZGY2MWI4ODdkNDRjMmUyMWRhZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdEFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdEFjdGlvbi5oCkBAIC05Myw4ICs5Myw3IEBAIGVudW0gY2xhc3MgRWRpdEFjdGlv
biA6IHVpbnQ4X3QgewogICAgIENvbnZlcnRUb09yZGVyZWRMaXN0LAogICAgIENvbnZlcnRUb1Vu
b3JkZXJlZExpc3QsCiAgICAgSW5kZW50LAotICAgIE91dGRlbnQsCi0gICAgSW5zZXJ0RWRpdGFi
bGVJbWFnZQorICAgIE91dGRlbnQKIH07CiAKIFdURjo6U3RyaW5nIHVuZG9SZWRvTGFiZWwoRWRp
dEFjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMDk0NjZhZjE4ZGEyNTBk
YzQwNTY5ZGExNTlmY2IyYjEyYmQxNTczYS4uYzEwNjk4MWIzZmIxYjhlYTVlNWIxOTZmOWFkYzcz
OTRhYTY5MTZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNzUsNyArNzUsNiBA
QAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbmRlbnRPdXRkZW50Q29t
bWFuZC5oIgogI2luY2x1ZGUgIklucHV0RXZlbnQuaCIKLSNpbmNsdWRlICJJbnNlcnRFZGl0YWJs
ZUltYWdlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydExpc3RDb21tYW5kLmgiCiAjaW5jbHVk
ZSAiSW5zZXJ0VGV4dENvbW1hbmQuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCkBAIC00
MzE5LDExICs0MzE4LDYgQEAgY29uc3QgRm9udCogRWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKGJv
b2wmIGhhc011bHRpcGxlRm9udHMpIGNvbnN0CiAgICAgcmV0dXJuIGZvbnQ7CiB9CiAKLVJlZlB0
cjxIVE1MSW1hZ2VFbGVtZW50PiBFZGl0b3I6Omluc2VydEVkaXRhYmxlSW1hZ2UoKQotewotICAg
IHJldHVybiBJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZDo6aW5zZXJ0RWRpdGFibGVJbWFnZShk
b2N1bWVudCgpKTsKLX0KLQogYm9vbCBFZGl0b3I6OmNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25l
SW1hZ2VzKCkgY29uc3QKIHsKICAgICBhdXRvJiBzZWxlY3Rpb24gPSBtX2RvY3VtZW50LnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggYTllNDhmM2Y4
MzM2NGZiOTcyNmJmMDljNjEyMjlkNWEwMTZmZjRjNy4uYTA5MmRmZjg1ZjYyMDBhMDhjYWZmZTli
OTVhOGEyMzYzMjM2MmIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01NzAsOCArNTcw
LDYgQEAgcHVibGljOgogI2VuZGlmCiAjZW5kaWYKIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxIVE1MSW1hZ2VFbGVtZW50PiBpbnNlcnRFZGl0YWJsZUltYWdlKCk7Ci0KICAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4gaW5zZXJ0VGV4dFBsYWNlaG9s
ZGVyKGNvbnN0IEludFNpemUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVRleHRQ
bGFjZWhvbGRlcihUZXh0UGxhY2Vob2xkZXJFbGVtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDUyYzU4MGFmZmI0YjI4NzU3Y2NlZDQ4M2Y2YmNk
MjRlMjU3N2MwNjQuLjJkM2U5NWQwZmMxNjRlYmY2MTFmYjRlNGMwMDE5OWMwMGE1NTg2YzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApAQCAtNDYsNyArNDYsNiBA
QAogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJJbmRlbnRPdXRkZW50Q29tbWFuZC5oIgotI2luY2x1ZGUgIkluc2VydEVkaXRh
YmxlSW1hZ2VDb21tYW5kLmgiCiAjaW5jbHVkZSAiSW5zZXJ0TGlzdENvbW1hbmQuaCIKICNpbmNs
dWRlICJJbnNlcnROZXN0ZWRMaXN0Q29tbWFuZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTQ3
MiwxMyArNDcxLDYgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydEltYWdlKEZyYW1lJiBmcmFt
ZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdAogICAgIHJldHVybiBleGVjdXRl
SW5zZXJ0Tm9kZShmcmFtZSwgV1RGTW92ZShpbWFnZSkpOwogfQogCi1zdGF0aWMgYm9vbCBleGVj
dXRlSW5zZXJ0RWRpdGFibGVJbWFnZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKLXsKLSAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7
Ci0gICAgSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQ6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQo
KSktPmFwcGx5KCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHN0YXRpYyBib29sIGV4ZWN1dGVJ
bnNlcnRMaW5lQnJlYWsoRnJhbWUmIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRT
b3VyY2Ugc291cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIHN3aXRjaCAoc291cmNlKSB7CkBA
IC0xNDI1LDEzICsxNDE3LDYgQEAgc3RhdGljIGJvb2wgZW5hYmxlZFVuZG8oRnJhbWUmIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UpCiAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigp
LmNhblVuZG8oKTsKIH0KIAotc3RhdGljIGJvb2wgZW5hYmxlZEluUmljaGx5RWRpdGFibGVUZXh0
V2l0aEVkaXRhYmxlSW1hZ2VzRW5hYmxlZChGcmFtZSYgZnJhbWUsIEV2ZW50KiBldmVudCwgRWRp
dG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UpCi17Ci0gICAgaWYgKCFmcmFtZS5zZXR0aW5ncygpLmVk
aXRhYmxlSW1hZ2VzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IGVuYWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dChmcmFtZSwgZXZlbnQsIHNvdXJjZSk7Ci19Ci0K
IC8vIFN0YXRlIGZ1bmN0aW9ucwogCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVOb25lKEZyYW1lJiwg
RXZlbnQqKQpAQCAtMTY1MSw3ICsxNjM2LDYgQEAgc3RhdGljIGNvbnN0IENvbW1hbmRNYXAmIGNy
ZWF0ZUNvbW1hbmRNYXAoKQogICAgICAgICB7ICJJZ25vcmVTcGVsbGluZyIsIHsgZXhlY3V0ZUln
bm9yZVNwZWxsaW5nLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZEluRWRp
dGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RB
bGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCiAgICAgICAgIHsgIkluZGVudCIsIHsgZXhl
Y3V0ZUluZGVudCwgc3VwcG9ydGVkLCBlbmFibGVkSW5SaWNobHlFZGl0YWJsZVRleHQsIHN0YXRl
Tm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hl
bkRpc2FibGVkIH0gfSwKICAgICAgICAgeyAiSW5zZXJ0QmFja3RhYiIsIHsgZXhlY3V0ZUluc2Vy
dEJhY2t0YWIsIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkSW5FZGl0YWJs
ZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBpc1RleHRJbnNlcnRpb24sIGRvTm90QWxsb3dF
eGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAotICAgICAgICB7ICJJbnNlcnRFZGl0YWJsZUltYWdl
IiwgeyBleGVjdXRlSW5zZXJ0RWRpdGFibGVJbWFnZSwgc3VwcG9ydGVkLCBlbmFibGVkSW5SaWNo
bHlFZGl0YWJsZVRleHRXaXRoRWRpdGFibGVJbWFnZXNFbmFibGVkLCBzdGF0ZU5vbmUsIHZhbHVl
TnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9
IH0sCiAgICAgICAgIHsgIkluc2VydEhUTUwiLCB7IGV4ZWN1dGVJbnNlcnRIVE1MLCBzdXBwb3J0
ZWQsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJ
bnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAogICAgICAgICB7
ICJJbnNlcnRIb3Jpem9udGFsUnVsZSIsIHsgZXhlY3V0ZUluc2VydEhvcml6b250YWxSdWxlLCBz
dXBwb3J0ZWQsIGVuYWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51
bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9
LAogICAgICAgICB7ICJJbnNlcnRJbWFnZSIsIHsgZXhlY3V0ZUluc2VydEltYWdlLCBzdXBwb3J0
ZWQsIGVuYWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5v
dFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5k
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJkNGQ2ZmY3NGMyMDVkYWE1YWI5
ODU2ZmY0YTYyMmJhYjgwMjU4OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEVkaXRhYmxlSW1hZ2VDb21t
YW5kLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmgiCi0KLSNpbmNsdWRlICJFZGl0aW5nLmgi
Ci0jaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZDo6aW5z
ZXJ0RWRpdGFibGVJbWFnZShEb2N1bWVudCYgZG9jdW1lbnQpCi17Ci0gICAgUmVmUHRyPEluc2Vy
dEVkaXRhYmxlSW1hZ2VDb21tYW5kPiBpbnNlcnRDb21tYW5kID0gY3JlYXRlKGRvY3VtZW50KTsK
LSAgICBpbnNlcnRDb21tYW5kLT5hcHBseSgpOwotICAgIHJldHVybiBpbnNlcnRDb21tYW5kLT5t
X2ltYWdlRWxlbWVudDsKLX0KLQotSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQ6Okluc2VydEVk
aXRhYmxlSW1hZ2VDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IENvbXBvc2l0ZUVk
aXRDb21tYW5kKGRvY3VtZW50KQotewotfQotCi12b2lkIEluc2VydEVkaXRhYmxlSW1hZ2VDb21t
YW5kOjpkb0FwcGx5KCkKLXsKLSAgICBpZiAoZW5kaW5nU2VsZWN0aW9uKCkuaXNOb25lKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1faW1hZ2VFbGVtZW50ID0gSFRNTEltYWdlRWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KCkpOwotICAgIG1faW1hZ2VFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6eF9hcHBsZV9lZGl0YWJsZV9pbWFnZUF0dHIs
IGVtcHR5QXRvbSgpKTsKLSAgICBtX2ltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndpZHRoQXR0ciwgQXRvbVN0cmluZygiMTAwJSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgbV9pbWFnZUVsZW1lbnQtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpoZWlnaHRBdHRyLCBB
dG9tU3RyaW5nKCIzMDBweCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0g
ICAgbV9pbWFnZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRN
TE5hbWVzOjpzdHlsZUF0dHIsIEF0b21TdHJpbmcoImRpc3BsYXk6IGJsb2NrIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLQotICAgIGluc2VydE5vZGVBdCgqbV9pbWFnZUVs
ZW1lbnQsIGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkpOwotICAgIHNldEVuZGluZ1NlbGVjdGlv
bih2aXNpYmxlUG9zaXRpb25BZnRlck5vZGUoKm1faW1hZ2VFbGVtZW50KSk7Ci19Ci0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1h
bmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzlkMTllOWQ3ZDY1NjI0MzFjZDE0YzM5
OWUyM2UwZTNlNzg2MGUwZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5k
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ29tcG9z
aXRlRWRpdENvbW1hbmQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJbnNlcnRF
ZGl0YWJsZUltYWdlQ29tbWFuZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZD4gY3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElu
c2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kKGRvY3VtZW50KSk7Ci0gICAgfQotCi0gICAgc3RhdGlj
IFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBpbnNlcnRFZGl0YWJsZUltYWdlKERvY3VtZW50Jik7
Ci0KLXByaXZhdGU6Ci0gICAgSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQoRG9jdW1lbnQmKTsK
LQotICAgIHZvaWQgZG9BcHBseSgpIG92ZXJyaWRlOwotICAgIEVkaXRBY3Rpb24gZWRpdGluZ0Fj
dGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEVkaXRBY3Rpb246Okluc2VydEVkaXRhYmxlSW1h
Z2U7IH0KLQotICAgIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBtX2ltYWdlRWxlbWVudDsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vu
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2Nh
bGl6YWJsZS5zdHJpbmdzCmluZGV4IDU4NjAyOTBhOTVlYmUxNjkwMjNmY2FmMmJmZjhjZGQwOTdj
ZDA2MTcuLjBiODBhMjgwYWQ2ZjUzOWYxZjMzYWMzZTE4Zjg5NTc3N2JlY2MyZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKKysrIGIvU291
cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpAQCAtNDEyLDkgKzQxMiw2
IEBACiAvKiBVbmRvIGFjdGlvbiBuYW1lICovCiAiSW5kZW50IChVbmRvIGFjdGlvbiBuYW1lKSIg
PSAiSW5kZW50IjsKIAotLyogVW5kbyBhY3Rpb24gbmFtZSAqLwotIkluc2VydCBEcmF3aW5nIChV
bmRvIGFjdGlvbiBuYW1lKSIgPSAiSW5zZXJ0IERyYXdpbmciOwotCiAvKiBVbmRvIGFjdGlvbiBu
YW1lICovCiAiSW5zZXJ0IExpc3QgKFVuZG8gYWN0aW9uIG5hbWUpIiA9ICJJbnNlcnQgTGlzdCI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmlu
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggY2IzMDQ5
MDQwODkzYzRjZWMxNGZjNTFjNGJjNTBjNDM4MGNkOTM4ZS4uZDJjZjdiYjk4ZWU1MTEyM2ViYjI5
NjcyNmVjZWU5MmVhYTQ0ZTRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0cmlidXRlTmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRl
TmFtZXMuaW4KQEAgLTQzNiw1ICs0MzYsMyBAQCB4LWFwcGxlLWRhdGEtZGV0ZWN0b3JzLXR5cGUK
IHgtYXBwbGUtZGF0YS1kZXRlY3RvcnMtcmVzdWx0CiAKIHgtYXBwbGUtcGRmLWFubm90YXRpb24K
LQoteC1hcHBsZS1lZGl0YWJsZS1pbWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHAKaW5kZXggZTgxMzI0YjgxZTk1M2RiZDljZmVjM2ZhYzVhMDA1YzYwMTFmN2Q1My4u
NjczZTkwNjRiY2FmMzEwNjM2MGIxMDEzNzE5MDgzNmY2MDBhZGE4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAi
Q2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGll
bnQuaCIKLSNpbmNsdWRlICJFZGl0YWJsZUltYWdlUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRWRp
dG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgpAQCAtMjg3LDkgKzI4Niw3IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluCiAgICAgICAg
IG1fZXhwZXJpbWVudGFsSW1hZ2VNZW51RW5hYmxlZCA9ICF2YWx1ZS5pc051bGwoKTsKICAgICAg
ICAgdXBkYXRlSW1hZ2VDb250cm9scygpOwogI2VuZGlmCi0gICAgfSBlbHNlIGlmIChuYW1lID09
IHhfYXBwbGVfZWRpdGFibGVfaW1hZ2VBdHRyKQotICAgICAgICB1cGRhdGVFZGl0YWJsZUltYWdl
KCk7Ci0gICAgZWxzZSBpZiAobmFtZSA9PSBsb2FkaW5nQXR0cikgeworICAgIH0gZWxzZSBpZiAo
bmFtZSA9PSBsb2FkaW5nQXR0cikgewogICAgICAgICAvLyBObyBhY3Rpb24gbmVlZGVkIGZvciBl
YWdlciB0byBsYXp5IHRyYW5zaXRpb24uCiAgICAgICAgIGlmICghaGFzTGF6eUxvYWRhYmxlQXR0
cmlidXRlVmFsdWUodmFsdWUpKQogICAgICAgICAgICAgbG9hZERlZmVycmVkSW1hZ2UoKTsKQEAg
LTM0NSwyMCArMzQyLDYgQEAgYm9vbCBIVE1MSW1hZ2VFbGVtZW50OjpjYW5TdGFydFNlbGVjdGlv
bigpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEhUTUxJbWFnZUVsZW1lbnQ6
OnN1cHBvcnRzRm9jdXMoKSBjb25zdAotewotICAgIGlmIChoYXNFZGl0YWJsZUltYWdlQXR0cmli
dXRlKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBIVE1MRWxlbWVudDo6c3Vw
cG9ydHNGb2N1cygpOwotfQotCi1ib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkg
Y29uc3QKLXsKLSAgICBpZiAoaGFzRWRpdGFibGVJbWFnZUF0dHJpYnV0ZSgpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmlzRm9jdXNhYmxlKCk7Ci19Ci0K
IGJvb2wgSFRNTEltYWdlRWxlbWVudDo6aXNJbnRlcmFjdGl2ZUNvbnRlbnQoKSBjb25zdAogewog
ICAgIHJldHVybiBoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHVzZW1hcEF0dHIp
OwpAQCAtNDEwLDkgKzM5Myw2IEBAIE5vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IEhU
TUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvCiAgICAgLy8gaW4g
Y2FsbGJhY2tzIGJhY2sgdG8gdGhpcyBub2RlLgogICAgIE5vZGU6Okluc2VydGVkSW50b0FuY2Vz
dG9yUmVzdWx0IGluc2VydE5vdGlmaWNhdGlvblJlcXVlc3QgPSBIVE1MRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOwogCi0g
ICAgaWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCAmJiBoYXNFZGl0YWJsZUlt
YWdlQXR0cmlidXRlKCkpCi0gICAgICAgIGluc2VydE5vdGlmaWNhdGlvblJlcXVlc3QgPSBJbnNl
cnRlZEludG9BbmNlc3RvclJlc3VsdDo6TmVlZHNQb3N0SW5zZXJ0aW9uQ2FsbGJhY2s7Ci0KICAg
ICBpZiAoaW5zZXJ0aW9uVHlwZS50cmVlU2NvcGVDaGFuZ2VkICYmICFtX3BhcnNlZFVzZW1hcC5p
c051bGwoKSkKICAgICAgICAgdHJlZVNjb3BlKCkuYWRkSW1hZ2VFbGVtZW50QnlVc2VtYXAoKm1f
cGFyc2VkVXNlbWFwLmltcGwoKSwgKnRoaXMpOwogCkBAIC00MzcsMTIgKzQxNyw2IEBAIE5vZGU6
Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IEhUTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50
b0FuY2VzdG9yKEluc2VydGlvCiAgICAgcmV0dXJuIGluc2VydE5vdGlmaWNhdGlvblJlcXVlc3Q7
CiB9CiAKLXZvaWQgSFRNTEltYWdlRWxlbWVudDo6ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgpCi17
Ci0gICAgaWYgKGhhc0VkaXRhYmxlSW1hZ2VBdHRyaWJ1dGUoKSkKLSAgICAgICAgdXBkYXRlRWRp
dGFibGVJbWFnZSgpOwotfQotCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5j
ZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9m
UmVtb3ZlZFRyZWUpCiB7CiAgICAgaWYgKG1fZm9ybSkKQEAgLTQ1Niw2OSArNDMwLDEwIEBAIHZv
aWQgSFRNTEltYWdlRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1v
dmFsVHlwZSwgQ29udGFpbmVyTm9kCiAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21F
bGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKFJlbGV2YW50TXV0YXRpb246Olllcyk7CiAgICAg
fQogCi0gICAgaWYgKHJlbW92YWxUeXBlLmRpc2Nvbm5lY3RlZEZyb21Eb2N1bWVudCkKLSAgICAg
ICAgdXBkYXRlRWRpdGFibGVJbWFnZSgpOwotCiAgICAgbV9mb3JtID0gbnVsbHB0cjsKICAgICBI
VE1MRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihyZW1vdmFsVHlwZSwgb2xkUGFyZW50T2ZS
ZW1vdmVkVHJlZSk7CiB9CiAKLWJvb2wgSFRNTEltYWdlRWxlbWVudDo6aGFzRWRpdGFibGVJbWFn
ZUF0dHJpYnV0ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdzKCkuZWRp
dGFibGVJbWFnZXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4g
aGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih4X2FwcGxlX2VkaXRhYmxlX2ltYWdl
QXR0cik7Ci19Ci0KLUdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIEhUTUxJbWFnZUVsZW1l
bnQ6OmVkaXRhYmxlSW1hZ2VWaWV3SUQoKSBjb25zdAotewotICAgIGlmICghbV9lZGl0YWJsZUlt
YWdlKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbV9lZGl0YWJsZUltYWdlLT5lbWJl
ZGRlZFZpZXdJRCgpOwotfQotCi12b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnVwZGF0ZUVkaXRhYmxl
SW1hZ2UoKQotewotICAgIGlmICghZG9jdW1lbnQoKS5zZXR0aW5ncygpLmVkaXRhYmxlSW1hZ2Vz
RW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQo
KS5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBib29sIGhh
c0VkaXRhYmxlQXR0cmlidXRlID0gaGFzRWRpdGFibGVJbWFnZUF0dHJpYnV0ZSgpOwotICAgIGJv
b2wgaXNDdXJyZW50bHlFZGl0YWJsZSA9ICEhbV9lZGl0YWJsZUltYWdlOwotICAgIGJvb2wgc2hv
dWxkQmVFZGl0YWJsZSA9IGlzQ29ubmVjdGVkKCkgJiYgaGFzRWRpdGFibGVBdHRyaWJ1dGU7Ci0K
LSNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIC8vIENyZWF0ZSB0aGUgaW5uZXIg
YXR0YWNobWVudCBmb3IgZWRpdGFibGUgaW1hZ2VzLCBvciBub24tZWRpdGFibGUKLSAgICAvLyBp
bWFnZXMgdGhhdCB3ZXJlIGNsb25lZCBmcm9tIGVkaXRhYmxlIGltYWdlIHNvdXJjZXMuCi0gICAg
aWYgKCFhdHRhY2htZW50RWxlbWVudCgpICYmIChzaG91bGRCZUVkaXRhYmxlIHx8ICFtX3BlbmRp
bmdDbG9uZWRBdHRhY2htZW50SUQuaXNFbXB0eSgpKSkgewotICAgICAgICBhdXRvIGF0dGFjaG1l
bnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRU
YWcsIGRvY3VtZW50KCkpOwotICAgICAgICBpZiAoIW1fcGVuZGluZ0Nsb25lZEF0dGFjaG1lbnRJ
RC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhdHRhY2htZW50LT5zZXRVbmlxdWVJZGVudGlmaWVy
KFdURk1vdmUobV9wZW5kaW5nQ2xvbmVkQXR0YWNobWVudElEKSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKTsKLSAgICAgICAg
c2V0QXR0YWNobWVudEVsZW1lbnQoV1RGTW92ZShhdHRhY2htZW50KSk7Ci0gICAgfQotI2VuZGlm
Ci0KLSAgICBpZiAoc2hvdWxkQmVFZGl0YWJsZSA9PSBpc0N1cnJlbnRseUVkaXRhYmxlKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWhhc0VkaXRhYmxlQXR0cmlidXRlKSB7Ci0gICAgICAg
IG1fZWRpdGFibGVJbWFnZSA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoIW1fZWRpdGFibGVJbWFnZSkKLSAgICAgICAgbV9lZGl0YWJsZUltYWdlID0gRWRpdGFi
bGVJbWFnZVJlZmVyZW5jZTo6Y3JlYXRlKGRvY3VtZW50KCkpOwotCi0jaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKLSAgICBtX2VkaXRhYmxlSW1hZ2UtPmFzc29jaWF0ZVdpdGhBdHRhY2ht
ZW50KGF0dGFjaG1lbnRFbGVtZW50KCktPnVuaXF1ZUlkZW50aWZpZXIoKSk7Ci0jZW5kaWYKLX0K
LQogSFRNTFBpY3R1cmVFbGVtZW50KiBIVE1MSW1hZ2VFbGVtZW50OjpwaWN0dXJlRWxlbWVudCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGljdHVyZUVsZW1lbnQuZ2V0KCk7CkBAIC05MDAsMjAg
KzgxNSw5IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6Y29weU5vbkF0dHJpYnV0ZVByb3BlcnRp
ZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JiBzb3VyCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKICAgICBtX3BlbmRpbmdDbG9uZWRBdHRhY2htZW50SUQgPSAhc291cmNlSW1hZ2Uu
bV9wZW5kaW5nQ2xvbmVkQXR0YWNobWVudElELmlzRW1wdHkoKSA/IHNvdXJjZUltYWdlLm1fcGVu
ZGluZ0Nsb25lZEF0dGFjaG1lbnRJRCA6IHNvdXJjZUltYWdlLmF0dGFjaG1lbnRJZGVudGlmaWVy
KCk7CiAjZW5kaWYKLSAgICBtX2VkaXRhYmxlSW1hZ2UgPSBzb3VyY2VJbWFnZS5tX2VkaXRhYmxl
SW1hZ2U7CiAgICAgRWxlbWVudDo6Y29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVu
dChzb3VyY2UpOwogfQogCi12b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQmIGV2ZW50KQotewotICAgIGlmIChoYXNFZGl0YWJsZUltYWdlQXR0cmlidXRlKCkg
JiYgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiBpczxNb3Vz
ZUV2ZW50PihldmVudCkgJiYgZG93bmNhc3Q8TW91c2VFdmVudD4oZXZlbnQpLmJ1dHRvbigpID09
IExlZnRCdXR0b24pIHsKLSAgICAgICAgZm9jdXMoKTsKLSAgICAgICAgZXZlbnQuc2V0RGVmYXVs
dEhhbmRsZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBIVE1MRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihldmVudCk7Ci19Ci0KIENhY2hlZEltYWdlKiBIVE1MSW1hZ2VFbGVt
ZW50OjpjYWNoZWRJbWFnZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1hZ2VMb2FkZXItPmlt
YWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IDY4M2MzNzQ4
ZjMzM2UyOWU3MGRmZmM5NTQzNmI4MjA5YzQ2MTc1NmEuLjk5NmY4NzUwNmNjOGQxNTRkZDhlYmZi
NjJhOTEwYTAxNzMxMGRlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5o
CkBAIC0zNSw3ICszNSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkSW1h
Z2U7CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7Ci1jbGFzcyBFZGl0YWJsZUltYWdlUmVmZXJlbmNl
OwogY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50OwogY2xhc3MgSFRNTEZvcm1FbGVtZW50Owog
Y2xhc3MgSFRNTEltYWdlTG9hZGVyOwpAQCAtNjIsOSArNjEsNiBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgaW50IG5hdHVyYWxIZWlnaHQoKSBjb25zdDsKICAgICBjb25zdCBBdG9tU3Ry
aW5nJiBjdXJyZW50U3JjKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50U3JjOyB9CiAKLSAgICBi
b29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzRm9jdXNhYmxl
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICBib29sIGlzU2VydmVyTWFwKCkgY29uc3Q7CiAKICAg
ICBjb25zdCBBdG9tU3RyaW5nJiBhbHRUZXh0KCkgY29uc3Q7CkBAIC0xMjUsMTEgKzEyMSw2IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzU3lzdGVtUHJldmlld0ltYWdlKCkg
Y29uc3Q7CiAjZW5kaWYKIAotICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXI6OkVtYmVk
ZGVkVmlld0lEIGVkaXRhYmxlSW1hZ2VWaWV3SUQoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGhhc0VkaXRhYmxlSW1hZ2VBdHRyaWJ1dGUoKSBjb25zdDsKLQotICAgIHZvaWQgZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCYpIGZpbmFsOwotCiAgICAgdm9pZCBsb2FkRGVmZXJyZWRJ
bWFnZSgpOwogCiAgICAgY29uc3QgQXRvbVN0cmluZyYgbG9hZGluZ0ZvckJpbmRpbmdzKCkgY29u
c3Q7CkBAIC0xNzUsNyArMTY2LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFN1YnJlc291cmNl
QXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBJ
bnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25U
eXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRGaW5pc2hJbnNlcnRp
bmdOb2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxU
eXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzRm9ybUFzc29jaWF0
ZWRFbGVtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE4OSw4ICsxNzks
NiBAQCBwcml2YXRlOgogCiAgICAgSW1hZ2VDYW5kaWRhdGUgYmVzdEZpdFNvdXJjZUZyb21QaWN0
dXJlRWxlbWVudCgpOwogCi0gICAgdm9pZCB1cGRhdGVFZGl0YWJsZUltYWdlKCk7Ci0KICAgICB2
b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYp
IGZpbmFsOwogCiAgICAgZmxvYXQgZWZmZWN0aXZlSW1hZ2VEZXZpY2VQaXhlbFJhdGlvKCkgY29u
c3Q7CkBAIC0yMTYsNyArMjA0LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFkTmFtZUJlZm9y
ZUF0dHJpYnV0ZUNoYW5nZWQgeyBmYWxzZSB9OyAvLyBGSVhNRTogV2Ugb25seSBuZWVkIHRoaXMg
YmVjYXVzZSBwYXJzZUF0dHJpYnV0ZSgpIGNhbid0IHNlZSB0aGUgb2xkIHZhbHVlLgogICAgIGJv
b2wgbV9pc0Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyIHsgZmFsc2UgfTsKIAotICAgIFJlZlB0cjxF
ZGl0YWJsZUltYWdlUmVmZXJlbmNlPiBtX2VkaXRhYmxlSW1hZ2U7CiAgICAgV2Vha1B0cjxIVE1M
UGljdHVyZUVsZW1lbnQ+IG1fcGljdHVyZUVsZW1lbnQ7CiAgICAgTWVkaWFRdWVyeUR5bmFtaWNS
ZXN1bHRzIG1fbWVkaWFRdWVyeUR5bmFtaWNSZXN1bHRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAppbmRleCAyZjliZTRkMmFlZmYwNGYzNzk2MDMyNjIxZDU2MDhhOGU0OTQxNTgzLi5k
YThjZjY3MmExMDFkNGNlY2YyNzEzMDExYTIxMTBmYTgyM2Q2YmU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgKQEAgLTUyNSwxMCArNTI1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYXNzb2NpYXRlRWRpdGFibGVJbWFnZVdpdGhBdHRhY2htZW50KEdy
YXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lELCBjb25zdCBTdHJpbmcmKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRWRpdGFibGVJbWFnZShHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZp
ZXdJRCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lFZGl0YWJsZUltYWdlKEdyYXBo
aWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKSB7IH0KLQogICAgIHZpcnR1YWwgdm9pZCBjb25maWd1
cmVMb2dnaW5nQ2hhbm5lbChjb25zdCBTdHJpbmcmLCBXVEZMb2dDaGFubmVsU3RhdGUsIFdURkxv
Z0xldmVsKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCB1c2VySXNJbnRlcmFjdGluZygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRh
YmxlSW1hZ2VSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0YWJsZUltYWdl
UmVmZXJlbmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWYyYmJlNDAxOTRh
ZmJkOWE3MTkxNDJhMzJiMzJlYzNiNDU0OTUyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRhYmxlSW1hZ2VSZWZl
cmVuY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCi0gKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKLSAqIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQot
ICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJFZGl0YWJs
ZUltYWdlUmVmZXJlbmNlLmgiCi0KLSNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJDaHJv
bWVDbGllbnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1FZGl0YWJsZUltYWdlUmVmZXJl
bmNlOjpFZGl0YWJsZUltYWdlUmVmZXJlbmNlKERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IG1f
ZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQotICAgICwgbV9lbWJlZGRlZFZpZXdJRChH
cmFwaGljc0xheWVyOjpuZXh0RW1iZWRkZWRWaWV3SUQoKSkKLXsKLSAgICBpZiAoYXV0byogcGFn
ZSA9IGRvY3VtZW50LnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuZGlk
Q3JlYXRlRWRpdGFibGVJbWFnZShtX2VtYmVkZGVkVmlld0lEKTsKLX0KLQotRWRpdGFibGVJbWFn
ZVJlZmVyZW5jZTo6fkVkaXRhYmxlSW1hZ2VSZWZlcmVuY2UoKQotewotICAgIGlmICghbV9kb2N1
bWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChhdXRvKiBwYWdlID0gbV9kb2N1bWVudC0+
cGFnZSgpKQotICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5kaWREZXN0cm95RWRpdGFi
bGVJbWFnZShtX2VtYmVkZGVkVmlld0lEKTsKLX0KLQotdm9pZCBFZGl0YWJsZUltYWdlUmVmZXJl
bmNlOjphc3NvY2lhdGVXaXRoQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCkK
LXsKLSAgICBpZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoYXV0byog
cGFnZSA9IG1fZG9jdW1lbnQtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50
KCkuYXNzb2NpYXRlRWRpdGFibGVJbWFnZVdpdGhBdHRhY2htZW50KG1fZW1iZWRkZWRWaWV3SUQs
IGF0dGFjaG1lbnRJRCk7Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0YWJsZUltYWdlUmVmZXJlbmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0VkaXRhYmxlSW1hZ2VSZWZlcmVuY2UuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODIxNWU0MTA4NTdjMzkzYTUxOTYyMGQ3NjgxODVhOGY2NmVmZTM3ZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRhYmxlSW1hZ2VSZWZlcmVuY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUwotICogSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVECi0gKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEKLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogSE9MREVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
RG9jdW1lbnQ7Ci0KLWNsYXNzIEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxFZGl0YWJsZUltYWdlUmVmZXJlbmNlPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxF
ZGl0YWJsZUltYWdlUmVmZXJlbmNlPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRWRpdGFibGVJbWFnZVJlZmVyZW5jZShkb2N1
bWVudCkpOwotICAgIH0KLQotICAgIH5FZGl0YWJsZUltYWdlUmVmZXJlbmNlKCk7Ci0KLSAgICBH
cmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fZW1iZWRkZWRWaWV3SUQ7IH0KLQotICAgIHZvaWQgYXNzb2NpYXRlV2l0aEF0dGFjaG1l
bnQoY29uc3QgU3RyaW5nJiBhdHRhY2htZW50SUQpOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0
IEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2UoRG9jdW1lbnQmKTsKLQotICAgIFdlYWtQdHI8RG9jdW1l
bnQ+IG1fZG9jdW1lbnQ7Ci0gICAgR3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgbV9lbWJl
ZGRlZFZpZXdJRDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MueWFtbAppbmRleCA1YWVjMDg1YmM4Y2UyMjc0ZTk4OWY5YmRmMjVhZmVmNGQ0MWQ1MzBh
Li4xZTA0MzU5ZWZlZWZlOTMwNDJkY2NlMDRlNGIwZjdiYTQ5ZjllMGMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy55YW1sCkBAIC04ODksOSArODg5LDYgQEAgdmlkZW9RdWFsaXR5SW5jbHVkZXNE
aXNwbGF5Q29tcG9zaXRpbmdFbmFibGVkOgogICBpbml0aWFsOiBmYWxzZQogICBjb25kaXRpb25h
bDogVklERU8KIAotZWRpdGFibGVJbWFnZXNFbmFibGVkOgotICBpbml0aWFsOiBmYWxzZQotCiBh
ZENsaWNrQXR0cmlidXRpb25FbmFibGVkOgogICBpbml0aWFsOiBmYWxzZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDIz
NDEzZDhjY2IwZWQzM2Y3N2YyZDg1ZjAzNjI4ZDg1NWUzMjczMDcuLjNlNjU5NWVhYmVlMWZjZDg5
NjRhMTRmZTQ2MDMxMjY2YzkwZWI2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC04MzEsMTIgKzgzMSw2IEBAIHZvaWQg
R3JhcGhpY3NMYXllcjo6dHJhdmVyc2UoR3JhcGhpY3NMYXllciYgbGF5ZXIsIGNvbnN0IFdURjo6
RnVuY3Rpb248dm9pZCAoR3JhCiAgICAgICAgIHRyYXZlcnNlKCptYXNrTGF5ZXIsIHRyYXZlcnNh
bEZ1bmMpOwogfQogCi1HcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBHcmFwaGljc0xheWVy
OjpuZXh0RW1iZWRkZWRWaWV3SUQoKQotewotICAgIHN0YXRpYyBHcmFwaGljc0xheWVyOjpFbWJl
ZGRlZFZpZXdJRCBuZXh0RW1iZWRkZWRWaWV3SUQ7Ci0gICAgcmV0dXJuICsrbmV4dEVtYmVkZGVk
Vmlld0lEOwotfQotCiB2b2lkIEdyYXBoaWNzTGF5ZXI6OmR1bXBMYXllcihUZXh0U3RyZWFtJiB0
cywgTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgdHMgPDwg
aW5kZW50IDw8ICIoIiA8PCAiR3JhcGhpY3NMYXllciI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggOGYwZmMzNjY0N2JlNTg5MjRj
ODA0OWNlZjZiYThiNjBmMjMzNWIyNy4uN2U0ZmUzZmQwMGNhNTlkOWI3ODJhOGEwNDBmNGQ1Yjc5
MTgwOWZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuaApAQCAtNDk5LDIxICs0OTksMTEgQEAgcHVibGljOgogICAgICAgICBNZWRpYSwK
ICAgICAgICAgQ2FudmFzLAogICAgICAgICBCYWNrZ3JvdW5kQ29sb3IsCi0gICAgICAgIFBsdWdp
biwKLSAgICAgICAgRW1iZWRkZWRWaWV3CisgICAgICAgIFBsdWdpbgogICAgIH07CiAKLSAgICBl
bnVtIGNsYXNzIENvbnRlbnRzTGF5ZXJFbWJlZGRlZFZpZXdUeXBlIDogdWludDhfdCB7Ci0gICAg
ICAgIE5vbmUgPSAwLAotICAgICAgICBFZGl0YWJsZUltYWdlLAotICAgIH07Ci0KLSAgICB1c2lu
ZyBFbWJlZGRlZFZpZXdJRCA9IHVpbnQ2NF90OwotICAgIHN0YXRpYyBFbWJlZGRlZFZpZXdJRCBu
ZXh0RW1iZWRkZWRWaWV3SUQoKTsKLQogICAgIC8vIFBhc3MgYW4gaW52YWxpZCBjb2xvciB0byBy
ZW1vdmUgdGhlIGNvbnRlbnRzIGxheWVyLgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1Rv
U29saWRDb2xvcihjb25zdCBDb2xvciYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50
c1RvRW1iZWRkZWRWaWV3KEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJFbWJlZGRlZFZpZXdU
eXBlLCBFbWJlZGRlZFZpZXdJRCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Q
bGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkgeyB9CiAg
ICAgdmlydHVhbCBib29sIHVzZXNDb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggOGFmMzE1M2UxMjlhMjk3MjkxMjI2YzBmM2QxM2Q1MTdl
MDlkNzUyNC4uNzgzMjRhZWM4NmRkYTMwYzA4ZWVjODJkZGYxYjE2OTMzNjFkM2Y4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwCkBAIC0zODAsMTEgKzM4MCw2IEBAIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBo
aWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmCiAj
ZW5kaWYKIH0KIAotUmVmPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVQ
bGF0Zm9ybUNBTGF5ZXJGb3JFbWJlZGRlZFZpZXcoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUg
bGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCwgUGxhdGZvcm1DQUxheWVy
Q2xpZW50KiBvd25lcikKLXsKLSAgICByZXR1cm4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVQbGF0
Zm9ybUNBTGF5ZXIobGF5ZXJUeXBlLCBvd25lcik7Ci19Ci0KIFJlZjxQbGF0Zm9ybUNBQW5pbWF0
aW9uPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1D
QUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xMTg1LDM5ICsxMTgwLDYgQEAgdm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgbm90ZUxheWVy
UHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzSW1hZ2VDaGFuZ2VkKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnNldENvbnRlbnRzVG9FbWJlZGRlZFZpZXcoR3JhcGhpY3NMYXllcjo6Q29udGVu
dHNMYXllckVtYmVkZGVkVmlld1R5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyOjpFbWJlZGRl
ZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCkKLXsKLSAgICBib29sIGNvbnRlbnRzTGF5ZXJDaGFuZ2Vk
ID0gZmFsc2U7Ci0KLSAgICBpZiAobGF5ZXJUeXBlICE9IEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRz
TGF5ZXJFbWJlZGRlZFZpZXdUeXBlOjpOb25lKSB7Ci0gICAgICAgIG1fY29udGVudHNMYXllclB1
cnBvc2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6RW1iZWRkZWRWaWV3OwotCi0gICAgICAgIFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIHBsYXRmb3JtVHlwZTsKLSAgICAgICAgc3dpdGNoIChs
YXllclR5cGUpIHsKLSAgICAgICAgY2FzZSBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyRW1i
ZWRkZWRWaWV3VHlwZTo6RWRpdGFibGVJbWFnZToKLSAgICAgICAgICAgIHBsYXRmb3JtVHlwZSA9
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlRWRpdGFibGVJbWFnZUxheWVyOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIHBsYXRmb3JtVHlwZSA9IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlTGF5ZXI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgh
bV9jb250ZW50c0xheWVyIHx8IG1fY29udGVudHNMYXllci0+bGF5ZXJUeXBlKCkgIT0gcGxhdGZv
cm1UeXBlIHx8IG1fY29udGVudHNMYXllci0+ZW1iZWRkZWRWaWV3SUQoKSAhPSBlbWJlZGRlZFZp
ZXdJRCkgewotICAgICAgICAgICAgbV9jb250ZW50c0xheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxh
eWVyRm9yRW1iZWRkZWRWaWV3KHBsYXRmb3JtVHlwZSwgZW1iZWRkZWRWaWV3SUQsIHRoaXMpOwot
ICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0Qo
KSk7Ci0gICAgICAgICAgICBjb250ZW50c0xheWVyQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAgIH0K
LSAgICB9IGVsc2UgewotICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNM
YXllclB1cnBvc2U6Ok5vbmU7Ci0gICAgICAgIGNvbnRlbnRzTGF5ZXJDaGFuZ2VkID0gbV9jb250
ZW50c0xheWVyOwotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOwotICAgIH0KLQot
ICAgIGlmIChjb250ZW50c0xheWVyQ2hhbmdlZCkKLSAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5n
ZWQoKTsKLX0KLQogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxh
eWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1
cnBvc2UpCiB7CiAgICAgaWYgKG1fY29udGVudHNMYXllciAmJiBwbGF0Zm9ybUxheWVyID09IG1f
Y29udGVudHNMYXllci0+cGxhdGZvcm1MYXllcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCBlN2UyNTM0NjBm
ZWRkYjUzZTFlZTg1ZTI3ZWI5NzFkMDBlM2I0MDBlLi5mZTdkYzU2YTQ3ZjNmYmU3OGQxMzFhYWE2
ZGMyOTY0NmUwZWMzMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtMTM5LDcgKzEzOSw2IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFu
aW1hdGlvbk5hbWUpIG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250
ZW50c1RvSW1hZ2UoSW1hZ2UqKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENvbnRlbnRzVG9FbWJlZGRlZFZpZXcoR3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXllckVtYmVk
ZGVkVmlld1R5cGUsIEdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKSBvdmVycmlkZTsKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIq
IGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCkBAIC0yMzUs
NyArMjM0LDYgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgUmVmPFBsYXRmb3JtQ0FMYXllcj4g
Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBQbGF0Zm9y
bUNBTGF5ZXJDbGllbnQqIG93bmVyKTsKICAgICB2aXJ0dWFsIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+
IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUxheWVyKiwgUGxhdGZvcm1DQUxheWVyQ2xp
ZW50KiBvd25lcik7Ci0gICAgdmlydHVhbCBSZWY8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVQbGF0
Zm9ybUNBTGF5ZXJGb3JFbWJlZGRlZFZpZXcoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIEdy
YXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lELCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVy
KTsKICAgICB2aXJ0dWFsIFJlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVQbGF0Zm9ybUNB
QW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCk7CiAKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIHByaW1hcnlMYXllcigpIGNvbnN0
IHsgcmV0dXJuIG1fc3RydWN0dXJhbExheWVyLmdldCgpID8gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0
KCkgOiBtX2xheWVyLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAppbmRleCAzNWIwNDg4ZjYyYzAwYTgx
MWQwYThiNTljNTJiOGI5MzdkYWY3OWI5Li42ZDQxZDk4MWEyYjAxYzcxOGNkMDk1ZTQ2YmFhZDMx
NzRiZWQ4ZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKQEAgLTIyMSw5ICsyMjEsNiBAQCBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBs
YXllclR5cGUpCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVJvb3RMYXllcjoK
ICAgICAgICAgdHMgPDwgInJvb3QtbGF5ZXIiOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlRWRpdGFibGVJbWFnZUxheWVyOgotICAgICAgICB0cyA8
PCAiZWRpdGFibGUtaW1hZ2UiOwotICAgICAgICBicmVhazsKICAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQmFja2Ryb3BMYXllcjoKICAgICAgICAgdHMgPDwgImJhY2tkcm9wLWxh
eWVyIjsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCmluZGV4IDE2MDk0YzM1MWU2N2QzZmM3MGYz
OTc3YjU0OTc0ZGQ4ZjMxNzYzOWQuLjUwNGIwMWMyNDQ0ZTllOTU5YzE4YzM0NmNiNWViN2JlY2Ew
ZDYzNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oCkBAIC03Niw3ICs3Niw2IEBAIHB1YmxpYzoKICAgICAgICAgTGF5
ZXJUeXBlTGlnaHRTeXN0ZW1CYWNrZHJvcExheWVyLAogICAgICAgICBMYXllclR5cGVEYXJrU3lz
dGVtQmFja2Ryb3BMYXllciwKICAgICAgICAgTGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVyTGF5ZXIs
Ci0gICAgICAgIExheWVyVHlwZUVkaXRhYmxlSW1hZ2VMYXllciwKICAgICAgICAgTGF5ZXJUeXBl
Q3VzdG9tLAogICAgIH07CiAgICAgZW51bSBGaWx0ZXJUeXBlIHsgTGluZWFyLCBOZWFyZXN0LCBU
cmlsaW5lYXIgfTsKQEAgLTI0Nyw4ICsyNDYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHcmFw
aGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlIGN1c3RvbUFwcGVhcmFuY2UoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUN1c3RvbUFwcGVhcmFuY2UoR3JhcGhpY3NMYXllcjo6
Q3VzdG9tQXBwZWFyYW5jZSkgPSAwOwogCi0gICAgdmlydHVhbCBHcmFwaGljc0xheWVyOjpFbWJl
ZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCgpIGNvbnN0ID0gMDsKLQogICAgIHZpcnR1YWwgVGls
ZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1Rl
eHRBdFBvaW50KENHQ29udGV4dFJlZiwgQ0dGbG9hdCB4LCBDR0Zsb2F0IHksIENHU2l6ZSBzY2Fs
ZSwgQ0dGbG9hdCBmb250U2l6ZSwgY29uc3QgY2hhciogdGV4dCwgc2l6ZV90IGxlbmd0aCwgQ0dG
bG9hdCBzdHJva2VXaWR0aEFzUGVyY2VudGFnZU9mRm9udFNpemUgPSAwLCBDb2xvciBzdHJva2VD
b2xvciA9IENvbG9yKCkpIGNvbnN0OwpAQCAtMzQ1LDcgKzM0Miw2IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGU+IHsKICAg
ICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGU6OkxheWVyVHlwZUxpZ2h0
U3lzdGVtQmFja2Ryb3BMYXllciwKICAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGU6OkxheWVyVHlwZURhcmtTeXN0ZW1CYWNrZHJvcExheWVyLAogICAgICAgICBXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZTo6TGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVy
TGF5ZXIsCi0gICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlOjpMYXll
clR5cGVFZGl0YWJsZUltYWdlTGF5ZXIsCiAgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlOjpMYXllclR5cGVDdXN0b20KICAgICA+OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNv
Y29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5oCmluZGV4IDc5ZjA0MWYyYjNkZjUwMDEzNGJmZTI1YWNkMTBmNDdiZTU2
YjI3YzEuLjk5MjJmNDhmYjcwZDA5Y2UwOGY2MmY0ZDFhMzdiMzg0OTU5MThlZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaApAQCAtMTc2LDggKzE3Niw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFNjcm9sbGluZ05vZGVJRChTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKSBvdmVycmlk
ZSB7IG1fc2Nyb2xsaW5nTm9kZUlEID0gbm9kZUlEOyB9CiAjZW5kaWYKIAotICAgIEdyYXBoaWNz
TGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEKCkgY29uc3Qgb3ZlcnJpZGU7Ci0K
ICAgICBUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIG92ZXJyaWRlOwogCiAgICAgUmVmPFBs
YXRmb3JtQ0FMYXllcj4gY2xvbmUoUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCmluZGV4IDg4YzVhMzNk
ODY3YzllNjY1MzBhYmY2MzRjNTBiYjY0ZmRlMWExZGUuLjI4ODQ2ZjZiOTE1NjExYjkyZWY3NDBk
OTNhOTgxZDAwMDNhNWI2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBA
IC0yMzQsNyArMjM0LDYgQEAgUGxhdGZvcm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNv
Y29hKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckMKICAgICBjYXNlIExheWVy
VHlwZVNjcm9sbENvbnRhaW5lckxheWVyOgogICAgICAgICAvLyBTY3JvbGwgY29udGFpbmVyIGxh
eWVycyBvbmx5IGhhdmUgc3BlY2lhbCBiZWhhdmlvciB3aXRoIFBsYXRmb3JtQ0FMYXllclJlbW90
ZS4KICAgICAgICAgLy8gZmFsbHRocm91Z2gKLSAgICBjYXNlIExheWVyVHlwZUVkaXRhYmxlSW1h
Z2VMYXllcjoKICAgICBjYXNlIExheWVyVHlwZVdlYkxheWVyOgogICAgICAgICBsYXllckNsYXNz
ID0gW1dlYkxheWVyIGNsYXNzXTsKICAgICAgICAgYnJlYWs7CkBAIC0xMDM5LDEyICsxMDM4LDYg
QEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0RXZlbnRSZWdpb24oY29uc3QgRXZlbnRS
ZWdpb24mIGV2ZW50UmVnaW9uKQogICAgIG1fZXZlbnRSZWdpb24gPSBldmVudFJlZ2lvbjsKIH0K
IAotR3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmVt
YmVkZGVkVmlld0lEKCkgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gMDsKLX0KLQogc3RhdGljIE5TU3RyaW5nICpsYXllckNvbnRlbnRzRm9ybWF0KGJvb2wg
YWNjZWxlcmF0ZXNEcmF3aW5nLCBib29sIHdhbnRzRGVlcENvbG9yLCBib29sIHN1cHBvcnRzU3Vi
cGl4ZWxBbnRpYWxpYXNlZEZvbnRzKQogewogI2lmIEhBVkUoSU9TVVJGQUNFX1JHQjEwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3Jt
Q0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRleCA1NDhjYmVlOTQ0OTZlZjg1YTUwYmQwOGU1ZDdi
NmFlZWEzOTBhMTMwLi45MzE2ZjNhY2EzNjI2ZDljZjkwZDNlMmM3NWI0MDMxYzVlZWFhYmFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZv
cm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzU1LDcgKzc1NSw2IEBAIHN0YXRpYyB2
b2lkIHByaW50TGF5ZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgUGxhdGZvcm1DQUxh
eWVyKiBsYXllciwgaW50CiAgICAgY2hhciogbGF5ZXJUeXBlTmFtZSA9IG51bGxwdHI7CiAgICAg
c3dpdGNoIChsYXllci0+bGF5ZXJUeXBlKCkpIHsKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlTGF5ZXI6IGxheWVyVHlwZU5hbWUgPSAibGF5ZXIiOyBicmVhazsKLSAgICBjYXNl
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlRWRpdGFibGVJbWFnZUxheWVyOgogICAgIGNhc2Ug
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVXZWJMYXllcjogbGF5ZXJUeXBlTmFtZSA9ICJ3ZWIt
bGF5ZXIiOyBicmVhazsKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlU2ltcGxl
TGF5ZXI6IGxheWVyVHlwZU5hbWUgPSAic2ltcGxlLWxheWVyIjsgYnJlYWs7CiAgICAgY2FzZSBQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9ybUxheWVyOiBsYXllclR5cGVOYW1lID0g
InRyYW5zZm9ybS1sYXllciI7IGJyZWFrOwpAQCAtOTQwLDEyICs5MzksNiBAQCBSZWY8UGxhdGZv
cm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJXaW46OmNyZWF0ZUNvbXBhdGlibGVMYXllcihQbGF0
Zm9ybUNBTGF5ZXI6OgogICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJXaW46OmNyZWF0ZShsYXll
clR5cGUsIGNsaWVudCk7CiB9CiAKLUdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIFBsYXRm
b3JtQ0FMYXllcldpbjo6ZW1iZWRkZWRWaWV3SUQoKSBjb25zdAotewotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCiBUaWxlZEJhY2tpbmcqIFBsYXRmb3JtQ0FM
YXllcldpbjo6dGlsZWRCYWNraW5nKCkKIHsKICAgICBpZiAoIXVzZXNUaWxlZEJhY2tpbmdMYXll
cigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1BsYXRmb3JtQ0FMYXllcldpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5oCmluZGV4IGVhYjU3N2Y1Nzc4MmRkMjhlYTg3NmZj
Yzg3MDNlNzQ2NmRhMDY4MWIuLjEyODAxMmQzM2MxMmQ5M2IyZTQ4ZjcyMWYyYjQwM2YzYjE1OWM5
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBTGF5ZXJXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmgKQEAgLTE1Nyw4ICsxNTcsNiBAQCBwdWJsaWM6
CiAgICAgR3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSBjdXN0b21BcHBlYXJhbmNlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jdXN0b21BcHBlYXJhbmNlOyB9CiAgICAgdm9pZCB1
cGRhdGVDdXN0b21BcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UgY3Vz
dG9tQXBwZWFyYW5jZSkgb3ZlcnJpZGUgeyBtX2N1c3RvbUFwcGVhcmFuY2UgPSBjdXN0b21BcHBl
YXJhbmNlOyB9CiAKLSAgICBHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZp
ZXdJRCgpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmco
KSBvdmVycmlkZTsKICAgICAKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RMYXllcigpIGNvbnN0
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXgg
NDEwNDljMmQ3N2JiZDY1YTZkZGI5OWFjM2M5ODY1NjIxYTRhM2I4NS4uZTE2YTgxZTdlZTM3ZGQz
YjczNDQwMzk3Yjk4NDMxNDYyYTdjOWNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwCkBAIC0yMTIsMjQgKzIxMiw2IEBAIEltYWdlU2l6ZUNoYW5nZVR5cGUgUmVu
ZGVySW1hZ2U6OnNldEltYWdlU2l6ZUZvckFsdFRleHQoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlIC8q
CiAgICAgcmV0dXJuIEltYWdlU2l6ZUNoYW5nZUZvckFsdFRleHQ7CiB9CiAKLWJvb2wgUmVuZGVy
SW1hZ2U6OmlzRWRpdGFibGVJbWFnZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFlbGVtZW50KCkgfHwg
IWlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKS0+aGFzRWRp
dGFibGVJbWFnZUF0dHJpYnV0ZSgpOwotfQotICAgIAotYm9vbCBSZW5kZXJJbWFnZTo6cmVxdWly
ZXNMYXllcigpIGNvbnN0Ci17Ci0gICAgaWYgKFJlbmRlclJlcGxhY2VkOjpyZXF1aXJlc0xheWVy
KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIAotICAgIGlmIChpc0VkaXRhYmxlSW1hZ2Uo
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2
b2lkIFJlbmRlckltYWdlOjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNv
bnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkKIHsKICAgICBpZiAoIWhhc0luaXRpYWxpemVkU3R5
bGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggNTFiMDdiMDRh
NzFhNTRmMzY2OWUyMzc5YjEzNThhYTcyZjEwMzY5MS4uOWQyNzlhNTcwZDFmNDhkNzI1OGVkOTQz
OTAyYmUyOTExODg3NjMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgK
QEAgLTc4LDggKzc4LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNOb25CaXRtYXBJbWFnZSgp
IGNvbnN0OwogCi0gICAgYm9vbCBpc0VkaXRhYmxlSW1hZ2UoKSBjb25zdDsKLQogcHJvdGVjdGVk
OgogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKQEAgLTEwOSw4ICsxMDcs
NiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc0ltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNSZW5kZXJJbWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KLSAgICAKLSAgICBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYp
IG92ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRJbmNvbXBsZXRlSW1hZ2VPdXRsaW5lKFBhaW50SW5m
byYsIExheW91dFBvaW50LCBMYXlvdXRVbml0KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDk5ZTgyNGQxMzU3MDYzOWUzZTRkNDQzYzk2NWYxNDRl
OWQ0OGY0NDYuLmZkMDJiNTFhMTI2YTAzMDI5MjcyZjNmZDE4YTg1MWYyMGViZDA4ODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNjA3LDcgKzYwNyw2IEBA
IGJvb2wgUmVuZGVyTGF5ZXI6OnNob3VsZEJlTm9ybWFsRmxvd09ubHkoKSBjb25zdAogICAgICAg
ICB8fCByZW5kZXJlcigpLmlzVmlkZW8oKQogICAgICAgICB8fCByZW5kZXJlcigpLmlzRW1iZWRk
ZWRPYmplY3QoKQogICAgICAgICB8fCByZW5kZXJlcigpLmlzUmVuZGVySUZyYW1lKCkKLSAgICAg
ICAgfHwgKHJlbmRlcmVyKCkuaXNSZW5kZXJJbWFnZSgpICYmIGRvd25jYXN0PFJlbmRlckltYWdl
PihyZW5kZXJlcigpKS5pc0VkaXRhYmxlSW1hZ2UoKSkKICAgICAgICAgfHwgKHJlbmRlcmVyKCku
c3R5bGUoKS5zcGVjaWZpZXNDb2x1bW5zKCkgJiYgIWlzUmVuZGVyVmlld0xheWVyKCkpCiAgICAg
ICAgIHx8IHJlbmRlcmVyKCkuaXNJbkZsb3dSZW5kZXJGcmFnbWVudGVkRmxvdygpOwogfQpAQCAt
NjUxNiw3ICs2NTE1LDYgQEAgYm9vbCBSZW5kZXJMYXllcjo6c2hvdWxkQmVTZWxmUGFpbnRpbmdM
YXllcigpIGNvbnN0CiAgICAgICAgIHx8IHJlbmRlcmVyKCkuaXNDYW52YXMoKQogICAgICAgICB8
fCByZW5kZXJlcigpLmlzVmlkZW8oKQogICAgICAgICB8fCByZW5kZXJlcigpLmlzRW1iZWRkZWRP
YmplY3QoKQotICAgICAgICB8fCAocmVuZGVyZXIoKS5pc1JlbmRlckltYWdlKCkgJiYgZG93bmNh
c3Q8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKCkpLmlzRWRpdGFibGVJbWFnZSgpKQogICAgICAgICB8
fCByZW5kZXJlcigpLmlzUmVuZGVySUZyYW1lKCkKICAgICAgICAgfHwgcmVuZGVyZXIoKS5pc0lu
Rmxvd1JlbmRlckZyYWdtZW50ZWRGbG93KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDIxMjg4ZjZkODhlY2NkYmRhOTU2ODEy
YWYyYzgwYTg5NDBmZmUzMjEuLmVjZmY1ZDI0MzUxZTI5MzU4MjcxYjU5NjQzMDQ3YTkxOGRkOTgw
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCkBAIC0xMDY5LDE0ICsxMDY5LDYgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0
ZUNvbmZpZ3VyYXRpb24oY29uc3QgUmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5jZXMKICAgICAg
ICAgdXBkYXRlQ29udGVudHNSZWN0cygpOwogICAgIH0KIAotICAgIGlmIChpczxSZW5kZXJJbWFn
ZT4ocmVuZGVyZXIoKSkgJiYgZG93bmNhc3Q8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKCkpLmlzRWRp
dGFibGVJbWFnZSgpKSB7Ci0gICAgICAgIGF1dG8gZWxlbWVudCA9IHJlbmRlcmVyKCkuZWxlbWVu
dCgpOwotICAgICAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkpIHsKLSAgICAg
ICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb0VtYmVkZGVkVmlldyhHcmFwaGlj
c0xheWVyOjpDb250ZW50c0xheWVyRW1iZWRkZWRWaWV3VHlwZTo6RWRpdGFibGVJbWFnZSwgZG93
bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCktPmVkaXRhYmxlSW1hZ2VWaWV3SUQoKSk7
Ci0gICAgICAgICAgICBsYXllckNvbmZpZ0NoYW5nZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAg
fQotCiAgICAgaWYgKGxheWVyQ29uZmlnQ2hhbmdlZCkKICAgICAgICAgdXBkYXRlUGFpbnRpbmdQ
aGFzZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcAppbmRleCBhMmI1OGU2NjY5MDY4NWZjZTZiMWE4ODM0OWM3ZmYzY2U2ODUy
MjZhLi5jZTlhZGRmODgwMzc3NWFlOTY1MmZiODJiM2EyNzM4ODQ1MzBhY2YzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAt
MjQzOCw3ICsyNDM4LDYgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29t
cG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIsIFIKICAgICAgICAgfHwgcmVx
dWlyZXNDb21wb3NpdGluZ0ZvclZpZGVvKHJlbmRlcmVyKQogICAgICAgICB8fCByZXF1aXJlc0Nv
bXBvc2l0aW5nRm9yRnJhbWUocmVuZGVyZXIsIHF1ZXJ5RGF0YSkKICAgICAgICAgfHwgcmVxdWly
ZXNDb21wb3NpdGluZ0ZvclBsdWdpbihyZW5kZXJlciwgcXVlcnlEYXRhKQotICAgICAgICB8fCBy
ZXF1aXJlc0NvbXBvc2l0aW5nRm9yRWRpdGFibGVJbWFnZShyZW5kZXJlcikKICAgICAgICAgfHwg
cmVxdWlyZXNDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsaW5nKCpyZW5kZXJlci5sYXllcigp
LCBxdWVyeURhdGEpOwogfQogCkBAIC0yNDk5LDcgKzI0OTgsNiBAQCBib29sIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6cmVxdWlyZXNPd25CYWNraW5nU3RvcmUoY29uc3QgUmVuZGVyTGF5ZXImIGxh
eWVyLCBjbwogICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yVmlkZW8ocmVuZGVyZXIp
CiAgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JGcmFtZShyZW5kZXJlciwgcXVlcnlE
YXRhKQogICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yUGx1Z2luKHJlbmRlcmVyLCBx
dWVyeURhdGEpCi0gICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JFZGl0YWJsZUltYWdl
KHJlbmRlcmVyKQogICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3Jv
bGxpbmcobGF5ZXIsIHF1ZXJ5RGF0YSkKICAgICAgICAgfHwgbmVlZHNDb250ZW50c0NvbXBvc2l0
aW5nTGF5ZXIobGF5ZXIpCiAgICAgICAgIHx8IHJlbmRlcmVyLmlzVHJhbnNwYXJlbnQoKQpAQCAt
MjU1MSw4ICsyNTQ5LDYgQEAgT3B0aW9uU2V0PENvbXBvc2l0aW5nUmVhc29uPiBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnJlYXNvbnNGb3JDb21wb3NpdGluZyhjb25zdAogICAgICAgICByZWFzb25z
LmFkZChDb21wb3NpdGluZ1JlYXNvbjo6UGx1Z2luKTsKICAgICBlbHNlIGlmIChyZXF1aXJlc0Nv
bXBvc2l0aW5nRm9yRnJhbWUocmVuZGVyZXIsIHF1ZXJ5RGF0YSkpCiAgICAgICAgIHJlYXNvbnMu
YWRkKENvbXBvc2l0aW5nUmVhc29uOjpJRnJhbWUpOwotICAgIGVsc2UgaWYgKHJlcXVpcmVzQ29t
cG9zaXRpbmdGb3JFZGl0YWJsZUltYWdlKHJlbmRlcmVyKSkKLSAgICAgICAgcmVhc29ucy5hZGQo
Q29tcG9zaXRpbmdSZWFzb246OkVtYmVkZGVkVmlldyk7CiAKICAgICBpZiAoKGNhblJlbmRlcjNE
VHJhbnNmb3JtcygpICYmIHJlbmRlcmVyLnN0eWxlKCkuYmFja2ZhY2VWaXNpYmlsaXR5KCkgPT0g
QmFja2ZhY2VWaXNpYmlsaXR5OjpIaWRkZW4pKQogICAgICAgICByZWFzb25zLmFkZChDb21wb3Np
dGluZ1JlYXNvbjo6QmFja2ZhY2VWaXNpYmlsaXR5SGlkZGVuKTsKQEAgLTMwMzcsMTggKzMwMzMs
NiBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBs
dWdpbihSZW5kZXJMYXllck1vZGVsT2JqZWN0JgogICAgIHJldHVybiAoY29udGVudEJveC5oZWln
aHQoKSAqIGNvbnRlbnRCb3gud2lkdGgoKSA+IDEpOwogfQogICAgIAotYm9vbCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JFZGl0YWJsZUltYWdlKFJlbmRlckxh
eWVyTW9kZWxPYmplY3QmIHJlbmRlcmVyKSBjb25zdAotewotICAgIGlmICghcmVuZGVyZXIuaXNS
ZW5kZXJJbWFnZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiBpbWFnZSA9
IGRvd25jYXN0PFJlbmRlckltYWdlPihyZW5kZXJlcik7Ci0gICAgaWYgKCFpbWFnZS5pc0VkaXRh
YmxlSW1hZ2UoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yRnJh
bWUoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYgcmVuZGVyZXIsIFJlcXVpcmVzQ29tcG9zaXRpbmdE
YXRhJiBxdWVyeURhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCFpczxSZW5kZXJXaWRnZXQ+KHJlbmRl
cmVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuaAppbmRleCA3YTg1YjI2OTZjNjhhYTQwZDQyODFmM2JjMjJjNmJjZDZiODgwMDVhLi4zNGVh
NTg3NTdiZjdjNWJmYzk5N2MwNDFjODhlNWMzOGI4NzUxNTU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC04Myw3ICs4Myw2IEBA
IGVudW0gY2xhc3MgQ29tcG9zaXRpbmdSZWFzb24gewogICAgIFdpbGxDaGFuZ2UgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMSA8PCAyNCwKICAgICBSb290ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IDEgPDwgMjUsCiAgICAgSXNvbGF0ZXNDb21wb3NpdGVkQmxlbmRp
bmdEZXNjZW5kYW50cyAgPSAxIDw8IDI2LAotICAgIEVtYmVkZGVkVmlldyAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMSA8PCAyNywKIH07CiAKIGVudW0gY2xhc3MgU2Nyb2xsQ29vcmRpbmF0
aW9uUm9sZSB7CkBAIC00OTgsNyArNDk3LDYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlcXVpcmVz
Q29tcG9zaXRpbmdGb3JTY3JvbGxhYmxlRnJhbWUoUmVxdWlyZXNDb21wb3NpdGluZ0RhdGEmKSBj
b25zdDsKICAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihSZW5kZXJMYXll
ck1vZGVsT2JqZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXImLCBSZXF1aXJlc0NvbXBvc2l0aW5nRGF0
YSYpIGNvbnN0OwogICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xs
aW5nKGNvbnN0IFJlbmRlckxheWVyJiwgUmVxdWlyZXNDb21wb3NpdGluZ0RhdGEmKSBjb25zdDsK
LSAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JFZGl0YWJsZUltYWdlKFJlbmRlckxheWVy
TW9kZWxPYmplY3QmKSBjb25zdDsKICAgICBJbmRpcmVjdENvbXBvc2l0aW5nUmVhc29uIGNvbXB1
dGVJbmRpcmVjdENvbXBvc2l0aW5nUmVhc29uKGNvbnN0IFJlbmRlckxheWVyJiwgYm9vbCBoYXND
b21wb3NpdGVkRGVzY2VuZGFudHMsIGJvb2wgaGFzM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnRzLCBi
b29sIHBhaW50c0ludG9Qcm92aWRlZEJhY2tpbmcpIGNvbnN0OwogCiAgICAgc3RhdGljIFNjcm9s
bFBvc2l0aW9uaW5nQmVoYXZpb3IgbGF5ZXJTY3JvbGxCZWhhaGF2aW9yUmVsYXRpdmVUb0NvbXBv
c2l0ZWRBbmNlc3Rvcihjb25zdCBSZW5kZXJMYXllciYsIGNvbnN0IFJlbmRlckxheWVyJiBjb21w
b3NpdGVkQW5jZXN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDc1MDk3N2E4
ZDRiODljMjAzYjRkMzQzMzgwNDhlYTNiYTBiNmZlOGQuLjI0OGE2ZDZjYzMxMDRhODdlNzM4Yjhk
MzlmODdiYTZkMDJlZDI5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE1MCw3
ICsxNTAsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlVSVByb2Nlc3MvV2ViUGFnZVByb3h5
IFwKIAlVSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZSBcCiAJVUlQcm9jZXNzL2lvcy9XZWJEZXZp
Y2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkgXAotCVVJUHJvY2Vzcy9pb3MvRWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXIgXAogCVVJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29u
dHJvbGxlciBcCiAJVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5IFwKIAlVSVByb2Nlc3Mv
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9zcGkvaW9zL1BlbmNpbEtpdFNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9z
cGkvaW9zL1BlbmNpbEtpdFNQSS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzQ0
OTFjZWE1NTdhOTc1N2E3ZGQ0ZTE4Mzc5Yzg5YjU2MTMxZDdjLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lv
cy9QZW5jaWxLaXRTUEkuaAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWYgSEFWRShQRU5DSUxLSVQpCi0KLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQot
Ci0jaW1wb3J0IDxQZW5jaWxLaXQvUGVuY2lsS2l0Lmg+Ci0jaW1wb3J0IDxQZW5jaWxLaXQvUEtD
YW52YXNWaWV3X1ByaXZhdGUuaD4KLSNpbXBvcnQgPFBlbmNpbEtpdC9QS0RyYXdpbmdfUHJpdmF0
ZS5oPgotI2ltcG9ydCA8UGVuY2lsS2l0L1BLSW1hZ2VSZW5kZXJlci5oPgotI2ltcG9ydCA8UGVu
Y2lsS2l0L1BLU3Ryb2tlLmg+Ci0KLSNlbHNlCi0KLSNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+Ci0K
LUBjbGFzcyBQS0NhbnZhc1ZpZXc7Ci1AY2xhc3MgUEtEcmF3aW5nOwotQGNsYXNzIFBLSW5rOwot
QGNsYXNzIFBLSW5saW5lSW5rUGlja2VyOwotCi10eXBlZGVmIE5TU3RyaW5nICogUEtJbmtJZGVu
dGlmaWVyOwotCi1AcHJvdG9jb2wgUEtDYW52YXNWaWV3RGVsZWdhdGUKLUBvcHRpb25hbAotLSAo
dm9pZClkcmF3aW5nRGlkQ2hhbmdlOihQS0NhbnZhc1ZpZXcgKiljYW52YXNWaWV3OwotQGVuZAot
Ci1AcHJvdG9jb2wgUEtJbmxpbmVJbmtQaWNrZXJEZWxlZ2F0ZSA8TlNPYmplY3Q+Ci1Ab3B0aW9u
YWwKLS0gKHZvaWQpaW5saW5lSW5rUGlja2VyOihQS0lubGluZUlua1BpY2tlciAqKWlubGluZUlu
a1BpY2tlciBkaWRTZWxlY3RUb29sOihQS0lua0lkZW50aWZpZXIpaWRlbnRpZmVyOwotLSAodm9p
ZClpbmxpbmVJbmtQaWNrZXJEaWRUb2dnbGVSdWxlcjooUEtJbmxpbmVJbmtQaWNrZXIgKilpbmxp
bmVJbmtQaWNrZXI7Ci0tICh2b2lkKWlubGluZUlua1BpY2tlcjooUEtJbmxpbmVJbmtQaWNrZXIg
KilpbmxpbmVJbmtQaWNrZXIgZGlkU2VsZWN0Q29sb3I6KFVJQ29sb3IgKiljb2xvcjsKLS0gKFVJ
Vmlld0NvbnRyb2xsZXIgKil2aWV3Q29udHJvbGxlckZvclBvcG92ZXJQcmVzZW50YXRpb25Gcm9t
SW5saW5lSW5rUGlja2VyOihQS0lubGluZUlua1BpY2tlciAqKWlubGluZUlua1BpY2tlcjsKLUBl
bmQKLQotQGludGVyZmFjZSBQS0NhbnZhc1ZpZXcgOiBVSVZpZXcKLQotQHByb3BlcnR5IChub25h
dG9taWMsIGdldHRlcj1pc0ZpbmdlckRyYXdpbmdFbmFibGVkKSBCT09MIGZpbmdlckRyYXdpbmdF
bmFibGVkOwotQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgcnVsZXJFbmFibGVkOwotQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIFBLRHJhd2luZyAqZHJhd2luZzsKLUBwcm9wZXJ0eSAobm9u
YXRvbWljLCBzdHJvbmcpIFBLSW5rICppbms7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaykg
TlNPYmplY3Q8UEtDYW52YXNWaWV3RGVsZWdhdGU+ICpkcmF3aW5nRGVsZWdhdGU7Ci0KLUBlbmQK
LQotQGludGVyZmFjZSBQS0lubGluZUlua1BpY2tlciA6IFVJQ29udHJvbAotCi1AcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgUEtJbmsgKnNlbGVjdGVkSW5rOwotLSAodm9pZClzZXRTZWxlY3Rl
ZEluazooUEtJbmsgKilzZWxlY3RlZEluayBhbmltYXRlZDooQk9PTClhbmltYXRlZDsKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZDxQS0lubGluZUlua1BpY2tlckRlbGVnYXRlPiBkZWxl
Z2F0ZTsKLQotQGVuZAotCi1AaW50ZXJmYWNlIFBLRHJhd2luZyA6IE5TT2JqZWN0Ci0KLS0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aERhdGE6KE5TRGF0YSAqKWRhdGEgZXJyb3I6KE5TRXJyb3IgKiop
ZXJyb3I7Ci0tIChOU0RhdGEgKilzZXJpYWxpemU7Ci0KLUBlbmQKLQotQGludGVyZmFjZSBQS0lt
YWdlUmVuZGVyZXIgOiBOU09iamVjdAotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTaXplOihD
R1NpemUpc2l6ZSBzY2FsZTooQ0dGbG9hdClzY2FsZSByZW5kZXJRdWV1ZTooZGlzcGF0Y2hfcXVl
dWVfdClyZW5kZXJRdWV1ZTsKLS0gKHZvaWQpcmVuZGVyRHJhd2luZzooUEtEcmF3aW5nICopZHJh
d2luZyBjb21wbGV0aW9uOih2b2lkKF4pKFVJSW1hZ2UgKmltYWdlKSljb21wbGV0aW9uQmxvY2s7
Ci0KLUBlbmQKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBIQVZFKFBFTkNJTEtJVCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtTWFjLmNtYWtlCmluZGV4IGY3ZTA5ZmRkMTZmYTdmNDY5NThkNTMyNDAzOGYyNDk5ZDMwOTA4
YWIuLjliMmMwODY1OGQ5OTdjN2YwMDY3MzI5YWExNzQxNmEzZDRlMmJmNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybU1hYy5jbWFrZQpAQCAtMTgzLDggKzE4Myw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9NRVNT
QUdFU19JTl9GSUxFUwogCiAgICAgVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCiAKLSAgICBVSVByb2Nlc3MvaW9z
L0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1lc3NhZ2VzLmluCi0KICAgICBVSVByb2Nlc3MvbWFj
L1NlY0l0ZW1TaGltUHJveHkubWVzc2FnZXMuaW4KIAogICAgIFdlYlByb2Nlc3MvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Gb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uY3BwCmluZGV4IDI0N2VhYWI5NTZmYzkz
NWE2YjNjNTBlMTZkNmE1NTBkOWUxYTQ0ZWYuLjk4NjNiMmRkZjJkOTcwZWFkMjYyMDYyNjQ0MWY3
ZWIyNTVjYzExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZvY3VzZWRFbGVt
ZW50SW5mb3JtYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZvY3VzZWRFbGVt
ZW50SW5mb3JtYXRpb24uY3BwCkBAIC05OCw3ICs5OCw2IEBAIHZvaWQgRm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbjo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNv
ZGVyIDw8IHBsYWNlaG9sZGVyOwogICAgIGVuY29kZXIgPDwgbGFiZWw7CiAgICAgZW5jb2RlciA8
PCBhcmlhTGFiZWw7Ci0gICAgZW5jb2RlciA8PCBlbWJlZGRlZFZpZXdJRDsKICAgICBlbmNvZGVy
IDw8IGZvY3VzZWRFbGVtZW50SWRlbnRpZmllcjsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVO
VCkKICAgICBlbmNvZGVyIDw8IGhhc1N1Z2dlc3Rpb25zOwpAQCAtMjIwLDkgKzIxOSw2IEBAIGJv
b2wgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgRm9jdXNlZEVsZW1lbnRJbmZvCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuYXJp
YUxhYmVsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuZW1iZWRkZWRWaWV3SUQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5mb2N1c2VkRWxlbWVudElkZW50aWZpZXIpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Zv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb24uaAppbmRleCA0M2IzZTc2NGQzZDlkMWU3MTg3NjdjYmQ0MDdlYTQ0
MTJiYzc1N2JiLi5lZjNmY2IwYjIxYzhjOTZiMzEzN2YyZWVlMWJlYWViNjlmNzBjNWY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Gb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5oCkBA
IC0xMzMsNyArMTMzLDYgQEAgc3RydWN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24gewogICAg
IFN0cmluZyBwbGFjZWhvbGRlcjsKICAgICBTdHJpbmcgbGFiZWw7CiAgICAgU3RyaW5nIGFyaWFM
YWJlbDsKLSAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRl
ZFZpZXdJRDsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICBib29sIGhhc1N1Z2dl
c3Rpb25zIHsgZmFsc2UgfTsKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbQppbmRleCAzN2E5NWMxNTMwZjkwMTEyZjVlZWIzODE3ZmE0MzMz
MWE5N2M3MmIxLi4wMTBjYTJjNWFiNTJkYWRjOTUzMGU1NTI4NWNiZGQzNWMxYTAzMGM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0zNTIsNyArMzUyLDYgQEAgdm9pZCBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIEMKICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVTaGFwZUxheWVyOgogICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXllcjoKLSAgICBjYXNlIFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlRWRpdGFibGVJbWFnZUxheWVyOgogICAgIGNhc2UgV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLmgKaW5kZXggZGZiZmFiMjRhNDAwYzhjMThmN2IyODNjZmNiNjcxZmM5ZjViYWY2MC4uMDEy
NDk0ZWJmMjUwM2Y2M2UwZDVhNzNlYWVlMmEwNDNiZjI3YTE0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLmgKQEAgLTEwNSw4ICsxMDUsNiBAQCBwdWJsaWM6CiAgICAgICAgIFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklEOwogICAgICAgICBX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSB0eXBlOwogCi0gICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEOwotCiAgICAg
ICAgIHVpbnQzMl90IGhvc3RpbmdDb250ZXh0SUQ7CiAgICAgICAgIGZsb2F0IGhvc3RpbmdEZXZp
Y2VTY2FsZUZhY3RvcjsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1t
CmluZGV4IDFlNzdhNzcxNjM3ZTA3NWYzOWE3Zjk2YTAxYWNiMzQ0OGY5ZTk2N2UuLmRjOTljZDE2
OWUxNDQ3YTA0MzkyMzU2OTBhMTUyNjZiNjFhOTBhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW0KQEAgLTQ1LDcgKzQ1LDYgQEAgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24mIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpvcGVyYXRvcj0oUmVtb3RlTGF5ZXJUcmUK
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllczo6TGF5
ZXJDcmVhdGlvblByb3BlcnRpZXMoKQogICAgIDogbGF5ZXJJRCgwKQogICAgICwgdHlwZShXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyKQotICAgICwgZW1iZWRkZWRWaWV3
SUQoMCkKICAgICAsIGhvc3RpbmdDb250ZXh0SUQoMCkKICAgICAsIGhvc3RpbmdEZXZpY2VTY2Fs
ZUZhY3RvcigxKQogewpAQCAtNTUsNyArNTQsNiBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZQog
ewogICAgIGVuY29kZXIgPDwgbGF5ZXJJRDsKICAgICBlbmNvZGVyIDw8IHR5cGU7Ci0gICAgZW5j
b2RlciA8PCBlbWJlZGRlZFZpZXdJRDsKICAgICBlbmNvZGVyIDw8IGhvc3RpbmdDb250ZXh0SUQ7
CiAgICAgZW5jb2RlciA8PCBob3N0aW5nRGV2aWNlU2NhbGVGYWN0b3I7CiB9CkBAIC02OSw5ICs2
Nyw2IEBAIGF1dG8gUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9w
ZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQudHlwZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5lbWJlZGRlZFZpZXdJRCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5ob3N0aW5nQ29udGV4
dElEKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggNDQ4YmM5MjFiNjQyMGEyYmIwYjM0NGYzN2ZkMTAx
ZGM0ODRmMDYwOS4uMTVmNTAwMDk3OGU1OGRjMjc1ZDg5MDRjYWExNjk0NGZlNjZmZWE3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC0xMzMwLDEwICsxMzMw
LDYgQEAgVmlkZW9RdWFsaXR5SW5jbHVkZXNEaXNwbGF5Q29tcG9zaXRpbmdFbmFibGVkOgogICBk
ZWZhdWx0VmFsdWU6IGZhbHNlCiAgIGNvbmRpdGlvbjogRU5BQkxFKFZJREVPKQogCi1FZGl0YWJs
ZUltYWdlc0VuYWJsZWQ6Ci0gIHR5cGU6IGJvb2wKLSAgZGVmYXVsdFZhbHVlOiBmYWxzZQotCiBT
aG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldzoKICAgZGVmYXVs
dFZhbHVlOiBmYWxzZQogICB0eXBlOiBib29sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNTZm
NDU2OWRiMWQzYmI0MjBkZDFmZDVjZjFmYjMzNjAzNjQ3ZjU0ZS4uMjNlZDRmMDJjYjgxNzgyYWMx
ZTNhMWVmYTU0ZjM2NDIwMmE3MGRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNDQyLDEw
ICs0NDIsOCBAQCBVSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlcklPUy5tbQogCiBVSVByb2Nlc3MvaW9zL0FwcEtpdFNvZnRMaW5rLm1tCiBVSVByb2Nl
c3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQotVUlQcm9jZXNzL2lvcy9FZGl0YWJs
ZUltYWdlQ29udHJvbGxlci5tbQogVUlQcm9jZXNzL2lvcy9JbnB1dFZpZXdVcGRhdGVEZWZlcnJl
ci5tbQogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQotVUlQcm9jZXNzL2lvcy9Q
ZW5jaWxLaXRTb2Z0TGluay5tbQogVUlQcm9jZXNzL2lvcy9Qcm9jZXNzQXNzZXJ0aW9uSU9TLm1t
CiBVSVByb2Nlc3MvaW9zL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZUlP
Uy5tbQogVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tCkBAIC00
NjAsOCArNDU4LDYgQEAgVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1Zp
ZXcubW0KIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBAbm8tdW5pZnkKIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIEBuby11bmlmeQogVUlQcm9jZXNzL2lv
cy9XS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLm1tCi1VSVByb2Nlc3MvaW9zL1dLRHJhd2lu
Z0Nvb3JkaW5hdG9yLm1tCi1VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ1ZpZXcubW0KIFVJUHJvY2Vz
cy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCiBVSVByb2Nlc3MvaW9zL1dLR2VvbG9j
YXRpb25Qcm92aWRlcklPU09iakNTZWN1cml0eU9yaWdpbi5tbQogVUlQcm9jZXNzL2lvcy9XS0hp
Z2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLm1tCkBAIC02NTcsNyArNjUzLDYgQEAg
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYS5tbSBAbm8tdW5pZnkKIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0KIAogLy8gRGVyaXZlZCBTb3VyY2VzCi1FZGl0YWJs
ZUltYWdlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAKIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiBHUFVQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHAKIEdQVVByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGIxZDQxMjQxYjU5
YjgxZDQ5YWQ2MzZlMTM1MzZmZjdiYjU0NzgzODQuLmNlNTE0YjkyMTFjNDhhNjI4YmE3YzZiNmNm
ZDU1MjBlNTk4YTYyZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQpAQCAtNTE0LDcgKzUxNCw2IEBAIC0gKHZvaWQpX3NldHVwUGFnZUNvbmZp
Z3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYpcGFnZUNvbmZpZ3VyYXRpb24K
IAogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXRDb2xvckZpbHRlckVu
YWJsZWQoISFbX2NvbmZpZ3VyYXRpb24gX2NvbG9yRmlsdGVyRW5hYmxlZF0pOwogCi0gICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldEVkaXRhYmxlSW1hZ2VzRW5hYmxlZCgh
IVtfY29uZmlndXJhdGlvbiBfZWRpdGFibGVJbWFnZXNFbmFibGVkXSk7CiAgICAgcGFnZUNvbmZp
Z3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNldFVuZG9NYW5hZ2VyQVBJRW5hYmxlZCghIVtfY29u
ZmlndXJhdGlvbiBfdW5kb01hbmFnZXJBUElFbmFibGVkXSk7CiAKICNpZiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggNDlhZWU2ZWI0NjNm
OGNmNjhhMDZhNjllNjc4OTRhNzlhMTJhODBiMS4uODM2OTNjYmZmNDY5MWM0MTAyZGVlNjIzNWNl
MTU2ZTA1ZGZiYzg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTE3Myw3ICsxNzMsNiBA
QCBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3Q29uZmlndXJhdGlvbiB7CiAgICAgQk9PTCBfaW5j
b21wbGV0ZUltYWdlQm9yZGVyRW5hYmxlZDsKICAgICBCT09MIF9zaG91bGREZWZlckFzeW5jaHJv
bm91c1NjcmlwdHNVbnRpbEFmdGVyRG9jdW1lbnRMb2FkOwogICAgIEJPT0wgX2RyYXdzQmFja2dy
b3VuZDsKLSAgICBCT09MIF9lZGl0YWJsZUltYWdlc0VuYWJsZWQ7CiAgICAgQk9PTCBfdW5kb01h
bmFnZXJBUElFbmFibGVkOwogCiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfbWVkaWFDb250ZW50
VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7CkBAIC0yNjksNyArMjY4LDYgQEAgLSAoaW5z
dGFuY2V0eXBlKWluaXQKICAgICBfc2hvdWxkRGVmZXJBc3luY2hyb25vdXNTY3JpcHRzVW50aWxB
ZnRlckRvY3VtZW50TG9hZCA9IFlFUzsKICAgICBfZHJhd3NCYWNrZ3JvdW5kID0gWUVTOwogCi0g
ICAgX2VkaXRhYmxlSW1hZ2VzRW5hYmxlZCA9IE5POwogICAgIF91bmRvTWFuYWdlckFQSUVuYWJs
ZWQgPSBOTzsKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCkBAIC00NDYsNyArNDQ0LDYgQEAgLSAo
aWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCiAgICAgY29uZmlndXJhdGlvbi0+X3Nob3Vs
ZERlZmVyQXN5bmNocm9ub3VzU2NyaXB0c1VudGlsQWZ0ZXJEb2N1bWVudExvYWQgPSBzZWxmLT5f
c2hvdWxkRGVmZXJBc3luY2hyb25vdXNTY3JpcHRzVW50aWxBZnRlckRvY3VtZW50TG9hZDsKICAg
ICBjb25maWd1cmF0aW9uLT5fZHJhd3NCYWNrZ3JvdW5kID0gc2VsZi0+X2RyYXdzQmFja2dyb3Vu
ZDsKIAotICAgIGNvbmZpZ3VyYXRpb24tPl9lZGl0YWJsZUltYWdlc0VuYWJsZWQgPSBzZWxmLT5f
ZWRpdGFibGVJbWFnZXNFbmFibGVkOwogICAgIGNvbmZpZ3VyYXRpb24tPl91bmRvTWFuYWdlckFQ
SUVuYWJsZWQgPSBzZWxmLT5fdW5kb01hbmFnZXJBUElFbmFibGVkOwogCiAgICAgcmV0dXJuIGNv
bmZpZ3VyYXRpb247CkBAIC0xMTg4LDE2ICsxMTg1LDYgQEAgLSAoQk9PTClfYWxsb3dNZWRpYUNv
bnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2sKICAgICByZXR1cm4g
X2FsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNr
OwogfQogCi0tICh2b2lkKV9zZXRFZGl0YWJsZUltYWdlc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAot
ewotICAgIF9lZGl0YWJsZUltYWdlc0VuYWJsZWQgPSBlbmFibGVkOwotfQotCi0tIChCT09MKV9l
ZGl0YWJsZUltYWdlc0VuYWJsZWQKLXsKLSAgICByZXR1cm4gX2VkaXRhYmxlSW1hZ2VzRW5hYmxl
ZDsKLX0KLQogLSAodm9pZClfc2V0VW5kb01hbmFnZXJBUElFbmFibGVkOihCT09MKWVuYWJsZWQK
IHsKICAgICBfdW5kb01hbmFnZXJBUElFbmFibGVkID0gZW5hYmxlZDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb25Qcml2YXRlLmgKaW5kZXggNDc4YWZiMGU1YWY2YmI4OGE4MWQ5OWY3NWU1MmY4YWQz
MjU4ZWUwZi4uOTk1ZTIxZDhmZTUyNWY2MjJjNzEyN2MxZWQ5NTkyYzlhY2U0ZTdlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb25Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKQEAgLTEyMiw3ICsxMjIsNiBAQCB0eXBlZGVm
IE5TX0VOVU0oTlNVSW50ZWdlciwgX1dLV2ViVmlld0NhdGVnb3J5KSB7CiAvLyBUaGUgaW5wdXQg
b2YgdGhpcyBTUEkgaXMgYW4gYXJyYXkgb2YgaW1hZ2UgVVRJIChVbmlmb3JtIFR5cGUgSWRlbnRp
ZmllcikuCiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9zZXRBZGRpdGlvbmFs
U3VwcG9ydGVkSW1hZ2VUeXBlczopIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hZGRpdGlvbmFsU3Vw
cG9ydGVkSW1hZ2VUeXBlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIu
MikpOwogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRFZGl0YWJsZUltYWdlc0Vu
YWJsZWQ6KSBCT09MIF9lZGl0YWJsZUltYWdlc0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xNC40KSwgaW9zKDEyLjIpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dFVuZG9NYW5hZ2VyQVBJRW5hYmxlZDopIEJPT0wgX3VuZG9NYW5hZ2VyQVBJRW5hYmxlZCBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldFdlYlZpZXdDYXRlZ29yeTopIF9XS1dlYlZpZXdDYXRlZ29yeSBfd2Vi
Vmlld0NhdGVnb3J5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRJZ25vcmVzQXBwQm91
bmREb21haW5zOikgQk9PTCBfaWdub3Jlc0FwcEJvdW5kRG9tYWlucyBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLmgKaW5kZXggYmI5OGQ4MWY0NDZiODRmODJi
NzMzZGNjMmFjMWU2NzhlODczOTJlMi4uZjdlMmUzMzFkMWEyNGFkMTZmYWJhODJjNzc4MmIzOGIx
ZWY0OTk1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dl
YlZpZXdJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmll
d0lPUy5oCkBAIC0xMzEsNyArMTMxLDYgQEAKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBCT09MIF9pc0JhY2tncm91bmQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IEJPT0wgX2FsbG93c0RvdWJsZVRhcEdlc3R1cmVzOwotQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBCT09MIF9zdHlsdXNUYXBHZXN0dXJlU2hvdWxkQ3JlYXRlRWRpdGFibGVJbWFnZTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfaGF2ZVNldE9ic2N1cmVkSW5z
ZXRzOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBVSUVkZ2VJbnNldHMgX2NvbXB1
dGVkT2JzY3VyZWRJbnNldDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlFZGdl
SW5zZXRzIF9jb21wdXRlZFVub2JzY3VyZWRTYWZlQXJlYUluc2V0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQppbmRleCBiODc4NDQ2MGI0OGI3
YjBlYWIwZjlhOTNkZGM0MzU3YWZmNDM4MjNhLi41MTNkOGRjNDczZmEzMTA4NDM1OWI0NTI3ZWYy
NzM3NDFlYjJhYjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dL
V2ViVmlld0lPUy5tbQpAQCAtMTQ0LDkgKzE0NCw2IEBAIC0gKHZvaWQpX3NldHVwU2Nyb2xsQW5k
Q29udGVudFZpZXdzCiAgICAgICAgIFtfc2Nyb2xsVmlldyBfc2V0QXZvaWRzSnVtcE9uSW50ZXJy
dXB0ZWRCb3VuY2U6WUVTXTsKICAgICB9CiAKLSAgICBpZiAoW19jb25maWd1cmF0aW9uIF9lZGl0
YWJsZUltYWdlc0VuYWJsZWRdKQotICAgICAgICBbX3Njcm9sbFZpZXcgcGFuR2VzdHVyZVJlY29n
bml6ZXJdLmFsbG93ZWRUb3VjaFR5cGVzID0gQFsgQChVSVRvdWNoVHlwZURpcmVjdCkgXTsKLQog
ICAgIFtzZWxmIF91cGRhdGVTY3JvbGxWaWV3SW5zZXRBZGp1c3RtZW50QmVoYXZpb3JdOwogCiAg
ICAgW3NlbGYgYWRkU3Vidmlldzpfc2Nyb2xsVmlldy5nZXQoKV07CkBAIC0xNDYwLDExICsxNDU3
LDYgQEAgLSAoQk9PTClfYWxsb3dzRG91YmxlVGFwR2VzdHVyZXMKICAgICByZXR1cm4gIVdURjo6
YXJlRXNzZW50aWFsbHlFcXVhbDxmbG9hdD4oY29udGVudFpvb21TY2FsZShzZWxmKSwgX2luaXRp
YWxTY2FsZUZhY3Rvcik7CiB9CiAKLS0gKEJPT0wpX3N0eWx1c1RhcEdlc3R1cmVTaG91bGRDcmVh
dGVFZGl0YWJsZUltYWdlCi17Ci0gICAgcmV0dXJuIFtfY29uZmlndXJhdGlvbiBfZWRpdGFibGVJ
bWFnZXNFbmFibGVkXTsKLX0KLQogI3ByYWdtYSBtYXJrIFVJU2Nyb2xsVmlld0RlbGVnYXRlCiAK
IC0gKEJPT0wpdXNlc1N0YW5kYXJkQ29udGVudFZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAppbmRleCA4ZjAxMWFjZmY0MzhiOWJjMjEwYmRiNTE3NTFiNDVlNjc4NTVkZjZmLi4y
OTkzMDc4NWZlZmYzMzZjMjVmZTk5MmYwMWYxYWI1ZTA1ZjUyMmI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCkBAIC01Nyw3ICs1Nyw2IEBAIE9CSkNfQ0xBU1MgTlNNZW51Owog
T0JKQ19DTEFTUyBOU1NldDsKIE9CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogT0JKQ19D
TEFTUyBVSUdlc3R1cmVSZWNvZ25pemVyOwotT0JKQ19DTEFTUyBXS0RyYXdpbmdWaWV3OwogT0JK
Q19DTEFTUyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKIAogI2lmIFVTRShBUFBLSVQpCkBAIC01
MzcsMTAgKzUzNiw2IEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBIQVZFKFBFTkNJ
TEtJVCkKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxXS0RyYXdpbmdWaWV3PiBjcmVhdGVEcmF3aW5n
VmlldyhXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCkgeyByZXR1cm4gbnVs
bHB0cjsgfQotI2VuZGlmCi0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQg
Y2FuY2VsUG9pbnRlcnNGb3JHZXN0dXJlUmVjb2duaXplcihVSUdlc3R1cmVSZWNvZ25pemVyKikg
eyB9CiAgICAgdmlydHVhbCBXVEY6Ok9wdGlvbmFsPHVuc2lnbmVkPiBhY3RpdmVUb3VjaElkZW50
aWZpZXJGb3JHZXN0dXJlUmVjb2duaXplcihVSUdlc3R1cmVSZWNvZ25pemVyKikgeyByZXR1cm4g
V1RGOjpudWxsb3B0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QuaAppbmRleCBhOGUxZTA4NTNi
YTk2MjJhOGQ4Yzc4ZDYzMDIxYTM2ODFlNmY4NGRiLi5lOGEzMDc4ZTQ4MGQyMTJkNDZjZDYzOGUy
OGRkOTVkMjVmOGY4MjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0LmgKQEAgLTMzLDcgKzMz
LDYgQEAKIAogT0JKQ19DTEFTUyBDQUFuaW1hdGlvbjsKIE9CSkNfQ0xBU1MgV0tBbmltYXRpb25E
ZWxlZ2F0ZTsKLU9CSkNfQ0xBU1MgV0tFbWJlZGRlZFZpZXc7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCkBAIC04MCwxNiArNzksMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUxheWVyKGNv
bnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllcyYp
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBtYWtlTm9kZShjb25z
dCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXMmKTsK
IAotICAgIFJldGFpblB0cjxXS0VtYmVkZGVkVmlldz4gY3JlYXRlRW1iZWRkZWRWaWV3KGNvbnN0
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllcyYpOwot
CiAgICAgdm9pZCBsYXllcldpbGxCZVJlbW92ZWQoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxh
dGZvcm1MYXllcklEKTsKIAogICAgIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkqIG1f
ZHJhd2luZ0FyZWEgeyBudWxscHRyIH07CiAgICAgUmVtb3RlTGF5ZXJUcmVlTm9kZSogbV9yb290
Tm9kZSB7IG51bGxwdHIgfTsKICAgICBIYXNoTWFwPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBs
YXRmb3JtTGF5ZXJJRCwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+PiBtX25v
ZGVzOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklE
LCBSZXRhaW5QdHI8V0tBbmltYXRpb25EZWxlZ2F0ZT4+IG1fYW5pbWF0aW9uRGVsZWdhdGVzOwot
ICAgIEhhc2hNYXA8V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQsIFJldGFp
blB0cjxXS0VtYmVkZGVkVmlldz4+IG1fZW1iZWRkZWRWaWV3czsKLSAgICBIYXNoTWFwPFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCwgV2ViQ29yZTo6R3JhcGhpY3NMYXll
cjo6RW1iZWRkZWRWaWV3SUQ+IG1fbGF5ZXJUb0VtYmVkZGVkVmlld01hcDsKICAgICBib29sIG1f
aXNEZWJ1Z0xheWVyVHJlZUhvc3QgeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
SG9zdC5tbQppbmRleCA3MjE1ZmU3NzkyMzNkZjc4ZmEzOWI3NzQ2YzY4ZDJlOWVkNGRlZjYxLi5l
MjRhOGZmZTRmMzA1YmNkNDA3MGEzMTZmMmVjYzljOTQ4NzhjNjEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlSG9zdC5tbQpAQCAtMTUwLDEyICsxNTAsNiBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZUhv
c3Q6OmxheWVyV2lsbEJlUmVtb3ZlZChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxh
eQogICAgICAgICBtX2FuaW1hdGlvbkRlbGVnYXRlcy5yZW1vdmUoYW5pbWF0aW9uRGVsZWdhdGVJ
dGVyKTsKICAgICB9CiAKLSAgICBhdXRvIGVtYmVkZGVkVmlld0l0ZXIgPSBtX2xheWVyVG9FbWJl
ZGRlZFZpZXdNYXAuZmluZChsYXllcklEKTsKLSAgICBpZiAoZW1iZWRkZWRWaWV3SXRlciAhPSBt
X2xheWVyVG9FbWJlZGRlZFZpZXdNYXAuZW5kKCkpIHsKLSAgICAgICAgbV9lbWJlZGRlZFZpZXdz
LnJlbW92ZShlbWJlZGRlZFZpZXdJdGVyLT52YWx1ZSk7Ci0gICAgICAgIG1fbGF5ZXJUb0VtYmVk
ZGVkVmlld01hcC5yZW1vdmUoZW1iZWRkZWRWaWV3SXRlcik7Ci0gICAgfQotCiAgICAgbV9ub2Rl
cy5yZW1vdmUobGF5ZXJJRCk7CiB9CiAKQEAgLTIxNCw4ICsyMDgsNiBAQCB2b2lkIFJlbW90ZUxh
eWVyVHJlZUhvc3Q6OmNsZWFyTGF5ZXJzKCkKICAgICB9CiAKICAgICBtX25vZGVzLmNsZWFyKCk7
Ci0gICAgbV9lbWJlZGRlZFZpZXdzLmNsZWFyKCk7Ci0gICAgbV9sYXllclRvRW1iZWRkZWRWaWV3
TWFwLmNsZWFyKCk7CiAgICAgbV9yb290Tm9kZSA9IG51bGxwdHI7CiB9CiAKQEAgLTI2Nyw3ICsy
NTksNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJU
cmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVQYWdlVGlsZWRCYWNraW5nTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllcjoKICAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVyTGF5ZXI6Ci0gICAgY2FzZSBQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZUVkaXRhYmxlSW1hZ2VMYXllcjoKICAgICAgICAgcmV0dXJuIFJlbW90
ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKHByb3BlcnRpZXMubGF5ZXJJRCk7
CiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Jl
bW90ZUxheWVyVHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXggNGI4ZjA4OThiZDY1
ZTQ3OWJjYmFiY2NlZjE2YzMwN2UzYTQwNDI3NC4uZTQ4MDg1ZDIyNWQyMjk5ZDUyYjc0OWRiZTdh
ZjM2MDM1M2RlMDVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5t
bQpAQCAtMjgsMTEgKzI4LDkgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLSNpbXBv
cnQgIkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5LmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVWaWV3cy5oIgogI2lt
cG9ydCAiVUlLaXRTUEkuaCIKLSNpbXBvcnQgIldLRHJhd2luZ1ZpZXcuaCIKICNpbXBvcnQgIldl
YlBhZ2VQcm94eS5oIgogI2ltcG9ydCA8VUlLaXQvVUlTY3JvbGxWaWV3Lmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KQEAgLTk3LDM5ICs5NSwxMiBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5v
ZGUoY29uc3QgUmVtb3RlTAogICAgICAgICAvLyBUaGUgZGVidWcgaW5kaWNhdG9yIHBhcmVudHMg
dmlld3MgdW5kZXIgbGF5ZXJzLCB3aGljaCBjYW4gY2F1c2UgY3Jhc2hlcyB3aXRoIFVJU2Nyb2xs
Vmlldy4KICAgICAgICAgcmV0dXJuIG1ha2VBZG9wdGluZ1ZpZXcoW1tVSVZpZXcgYWxsb2NdIGlu
aXRdKTsKIAotICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVFZGl0YWJsZUltYWdl
TGF5ZXI6Ci0gICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoY3JlYXRlRW1iZWRkZWRWaWV3KHBy
b3BlcnRpZXMpKTsKLQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiB9CiAKLVJldGFpblB0cjxXS0VtYmVk
ZGVkVmlldz4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlRW1iZWRkZWRWaWV3KGNvbnN0IFJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllcyYgcHJvcGVy
dGllcykKLXsKLSAgICBpZiAobV9pc0RlYnVnTGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgcmV0dXJu
IGFkb3B0TlMoW1tVSVZpZXcgYWxsb2NdIGluaXRdKTsKLQotICAgIGF1dG8gcmVzdWx0ID0gbV9l
bWJlZGRlZFZpZXdzLmVuc3VyZShwcm9wZXJ0aWVzLmVtYmVkZGVkVmlld0lELCBbJl0oKSAtPiBS
ZXRhaW5QdHI8VUlWaWV3PiB7Ci0gICAgICAgIHN3aXRjaCAocHJvcGVydGllcy50eXBlKSB7Ci0j
aWYgSEFWRShQRU5DSUxLSVQpCi0gICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGVFZGl0YWJsZUltYWdlTGF5ZXI6IHsKLSAgICAgICAgICAgIGF1dG8gZWRpdGFibGVJbWFnZSA9
IG1fZHJhd2luZ0FyZWEtPnBhZ2UoKS5lZGl0YWJsZUltYWdlQ29udHJvbGxlcigpLmVkaXRhYmxl
SW1hZ2UocHJvcGVydGllcy5lbWJlZGRlZFZpZXdJRCk7Ci0gICAgICAgICAgICByZXR1cm4gZWRp
dGFibGVJbWFnZSA/IGVkaXRhYmxlSW1hZ2UtPmRyYXdpbmdWaWV3IDogbmlsOwotICAgICAgICB9
Ci0jZW5kaWYKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtb
VUlWaWV3IGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICBhdXRvIHZpZXcg
PSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCi0g
ICAgICAgIG1fbGF5ZXJUb0VtYmVkZGVkVmlld01hcC5yZW1vdmUoUmVtb3RlTGF5ZXJUcmVlTm9k
ZTo6bGF5ZXJJRChbdmlldyBsYXllcl0pKTsKLSAgICBtX2xheWVyVG9FbWJlZGRlZFZpZXdNYXAu
c2V0KHByb3BlcnRpZXMubGF5ZXJJRCwgcHJvcGVydGllcy5lbWJlZGRlZFZpZXdJRCk7Ci0gICAg
cmV0dXJuIHZpZXc7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MuaAppbmRl
eCAwNmZjY2U5Njc4MjVkNzFkZWYyNmVlZTFkYTAyYWFlZWE4YjJhN2E4Li4zM2ExNDYxMGI4YWZi
Y2M5NjZmOTgyNmU3YjQ1MzYzN2E2YjlkNTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRy
ZWVWaWV3cy5oCkBAIC02NiwxNCArNjYsNiBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBAaW50ZXJm
YWNlIFdLQ2hpbGRTY3JvbGxWaWV3IDogVUlTY3JvbGxWaWV3IDxXS0NvbnRlbnRDb250cm9sbGVk
PgogQGVuZAogCi1AaW50ZXJmYWNlIFdLRW1iZWRkZWRWaWV3IDogVUlWaWV3IDxXS0NvbnRlbnRD
b250cm9sbGVkPgotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhFbWJlZGRlZFZpZXdJRDooV2Vi
Q29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpZW1iZWRkZWRWaWV3SUQ7Ci0KLUBw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgYXNzaWduKSBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRDsKLQotQGVuZAotCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogT3B0aW9uU2V0PFdlYkNvcmU6OlRvdWNoQWN0aW9uPiB0b3VjaEFjdGlvbnNG
b3JQb2ludChVSVZpZXcgKnJvb3RWaWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1v
dGVMYXllclRyZWVWaWV3cy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0KaW5kZXggNjk2NGE3NWQ3NjNiODViMDgx
NjhiZGVmMTVjYzk2OGRlYWFmYTI0OC4uMTFiYjAxYjM3MmNlNjk3YjZlNjNhNDNlNmE0NmRmODI0
M2NhZGMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tCkBAIC0zMyw3
ICszMyw2IEBACiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVOb2RlLmgiCiAjaW1wb3J0ICJVSUtp
dFNQSS5oIgogI2ltcG9ydCAiV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplci5oIgotI2ltcG9y
dCAiV0tEcmF3aW5nVmlldy5oIgogI2ltcG9ydCA8V2ViQ29yZS9SZWdpb24uaD4KICNpbXBvcnQg
PFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29y
ZUNBTGF5ZXJFeHRyYXMuaD4KQEAgLTQyNiwxOSArNDI1LDQgQEAgLSAoQk9PTClnZXN0dXJlUmVj
b2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyIHNob3VsZEJl
UmVxdWkKIAogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gV0tFbWJlZGRlZFZpZXcKLQotLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoRW1iZWRkZWRWaWV3SUQ6KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6
OkVtYmVkZGVkVmlld0lEKWVtYmVkZGVkVmlld0lECi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0
XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfZW1iZWRkZWRW
aWV3SUQgPSBlbWJlZGRlZFZpZXdJRDsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi1AZW5kCi0K
ICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKaW5kZXggN2QzYzkzOWQ4NmQ1MDY4Zjc0NmRkYTUwYTQxNWIxNDRiZDdl
MzcyMS4uNWUwMjQzMmI0NzllNmMyNjliYzA3ZWY4NjA4MzUxMzFkODBmZTE3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNjYsMTAgKzI2Niw2IEBACiAj
aW5jbHVkZSAiU2VjS2V5UHJveHlTdG9yZS5oIgogI2VuZGlmCiAKLSNpZiBIQVZFKFBFTkNJTEtJ
VCkKLSNpbmNsdWRlICJFZGl0YWJsZUltYWdlQ29udHJvbGxlci5oIgotI2VuZGlmCi0KICNpZiBI
QVZFKEFQUF9TU08pCiAjaW5jbHVkZSAiU09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IuaCIKICNl
bmRpZgpAQCAtOTk0LDExICs5OTAsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9S
dW5uaW5nUHJvY2VzcygpCiAgICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IG1ha2VVbmlxdWU8
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNlbmRpZgogCi0jaWYg
SEFWRShQRU5DSUxLSVQpCi0gICAgQVNTRVJUKCFtX2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyKTsK
LSAgICBtX2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxFZGl0YWJsZUltYWdl
Q29udHJvbGxlcj4oKnRoaXMpOwotI2VuZGlmCi0gICAgCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKICAgICBBU1NFUlQoIW1fd2ViRGV2aWNl
T3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5KTsKICAgICBtX3dlYkRldmljZU9yaWVudGF0
aW9uVXBkYXRlUHJvdmlkZXJQcm94eSA9IG1ha2VVbmlxdWU8V2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlclByb3h5PigqdGhpcyk7CkBAIC03NjQwLDEwICs3NjMxLDYgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0YXRlUmVhc29u
KQogICAgIG1fY3JlZGVudGlhbHNNZXNzZW5nZXIgPSBudWxscHRyOwogI2VuZGlmCiAKLSNpZiBI
QVZFKFBFTkNJTEtJVCkKLSAgICBtX2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyID0gbnVsbHB0cjsK
LSNlbmRpZgotICAgIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShERVZJQ0Vf
T1JJRU5UQVRJT04pCiAgICAgbV93ZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJv
eHkgPSBudWxscHRyOwogI2VuZGlmCkBAIC05NzMwLDExICs5NzE3LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEludmFsaWRhdGVEYXRhRm9yQXR0YWNobWVudChBUEk6OkF0dGFjaG1lbnQmIGF0
dGFjaG1lbnQpCiAKIFdlYlBhZ2VQcm94eTo6U2hvdWxkVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0
ZXMgV2ViUGFnZVByb3h5Ojp3aWxsVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJ
OjpBdHRhY2htZW50JiBhdHRhY2htZW50KQogewotI2lmIEhBVkUoUEVOQ0lMS0lUKQotICAgIHJl
dHVybiBtX2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLT53aWxsVXBkYXRlQXR0YWNobWVudEF0dHJp
YnV0ZXMoYXR0YWNobWVudCk7Ci0jZWxzZQogICAgIHJldHVybiBTaG91bGRVcGRhdGVBdHRhY2ht
ZW50QXR0cmlidXRlczo6WWVzOwotI2VuZGlmCiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDkwNjQ3ZTEzYjFmMDNhNjZh
YzE0YjAzMGM3MDVlYWQ4ODNjMDQwYTAuLmYzZDNjYjJiMjQzYTU2YzA4NDY5MGQwZThjZTkwNWQ0
ODk4NGEwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yOTMs
NyArMjkzLDYgQEAgdHlwZWRlZiBIV05EIFBsYXRmb3JtVmlld1dpZGdldDsKIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTsKIGNsYXNz
IERyYXdpbmdBcmVhUHJveHk7Ci1jbGFzcyBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjsKIGNsYXNz
IEdhbWVwYWREYXRhOwogY2xhc3MgTWVkaWFVc2FnZU1hbmFnZXI7CiBjbGFzcyBOYXRpdmVXZWJH
ZXN0dXJlRXZlbnQ7CkBAIC04MTgsNyArODE3LDYgQEAgcHVibGljOgogICAgIHZvaWQgY29udGVu
dFNpemVDYXRlZ29yeURpZENoYW5nZShjb25zdCBTdHJpbmcmIGNvbnRlbnRTaXplQ2F0ZWdvcnkp
OwogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOwogICAgIHZvaWQgaGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4sIHVpbnQ2
NF90IHJlcXVlc3RJRCk7Ci0gICAgdm9pZCBoYW5kbGVTdHlsdXNTaW5nbGVUYXBBdFBvaW50KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2b2lkIHNl
dEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGJvb2wpOwogICAgIGJvb2wgZm9yY2VBbHdheXNVc2Vy
U2NhbGFibGUoKSBjb25zdCB7IHJldHVybiBtX2ZvcmNlQWx3YXlzVXNlclNjYWxhYmxlOyB9CiAg
ICAgZG91YmxlIGxheW91dFNpemVTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3Bv
cnRDb25maWd1cmF0aW9uTGF5b3V0U2l6ZVNjYWxlRmFjdG9yOyB9CkBAIC0xNjY0LDEwICsxNjYy
LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVDdXJyZW50TW9kaWZpZXJTdGF0ZSgpOwog
Ci0jaWYgSEFWRShQRU5DSUxLSVQpCi0gICAgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXImIGVkaXRh
YmxlSW1hZ2VDb250cm9sbGVyKCkgeyByZXR1cm4gKm1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXI7
IH0KLSNlbmRpZgotCiAgICAgUHJvdmlzaW9uYWxQYWdlUHJveHkqIHByb3Zpc2lvbmFsUGFnZVBy
b3h5KCkgY29uc3QgeyByZXR1cm4gbV9wcm92aXNpb25hbFBhZ2UuZ2V0KCk7IH0KICAgICB2b2lk
IGNvbW1pdFByb3Zpc2lvbmFsUGFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5m
b0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92
aWRlciwgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJ
bmZvJiwgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9w
dGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250
ZW50LCBXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5LCBjb25zdCBVc2VyRGF0YSYpOwogCkBAIC0y
ODE2LDEwICsyODEwLDYgQEAgcHJpdmF0ZToKIAogICAgIFRleHRNYW5pcHVsYXRpb25JdGVtQ2Fs
bGJhY2sgbV90ZXh0TWFuaXB1bGF0aW9uSXRlbUNhbGxiYWNrOwogCi0jaWYgSEFWRShQRU5DSUxL
SVQpCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyPiBtX2VkaXRh
YmxlSW1hZ2VDb250cm9sbGVyOwotI2VuZGlmCi0KICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFH
QVRJT05fVklFVykKICAgICBMYXllckhvc3RpbmdDb250ZXh0SUQgbV9jb250ZXh0SURGb3JWaXNp
YmlsaXR5UHJvcGFnYXRpb24geyAwIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDUxNGVjYTY4OWI2NTFjY2RmZWQ2MTE4NTBkMmIxNGJjMmY0YzU5ODgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBIQVZF
KFBFTkNJTEtJVCkKLQotI2luY2x1ZGUgIkFQSUF0dGFjaG1lbnQuaCIKLSNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzTGF5ZXIuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNs
dWRlIDx3dGYvV2Vha09iakNQdHIuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1PQkpDX0NMQVNTIFdLRHJhd2luZ1ZpZXc7Ci0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgRWRpdGFibGVJbWFnZSB7Ci0gICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgIFJldGFpblB0cjxXS0RyYXdpbmdWaWV3PiBk
cmF3aW5nVmlldzsKLSAgICBTdHJpbmcgYXR0YWNobWVudElEOwotfTsKLQotY2xhc3MgRWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXIgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFZGl0YWJs
ZUltYWdlQ29udHJvbGxlcik7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgRWRpdGFibGVJbWFnZUNv
bnRyb2xsZXIoV2ViUGFnZVByb3h5Jik7Ci0gICAgfkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyKCk7
Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotCi0gICAgRWRp
dGFibGVJbWFnZSogZWRpdGFibGVJbWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRl
ZFZpZXdJRCk7Ci0gICAgRWRpdGFibGVJbWFnZSYgZW5zdXJlRWRpdGFibGVJbWFnZShXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCk7Ci0KLSAgICB2b2lkIGludmFsaWRhdGVB
dHRhY2htZW50Rm9yRWRpdGFibGVJbWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRl
ZFZpZXdJRCk7Ci0KLSAgICBXZWJQYWdlUHJveHk6OlNob3VsZFVwZGF0ZUF0dGFjaG1lbnRBdHRy
aWJ1dGVzIHdpbGxVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0dGFjaG1l
bnQmKTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIGRpZENyZWF0ZUVkaXRhYmxlSW1hZ2UoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpOwotICAgIHZvaWQgZGlkRGVzdHJveUVk
aXRhYmxlSW1hZ2UoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpOwotCi0g
ICAgdm9pZCBhc3NvY2lhdGVXaXRoQXR0YWNobWVudChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpF
bWJlZGRlZFZpZXdJRCwgY29uc3QgU3RyaW5nJiBhdHRhY2htZW50SUQpOwotCi0gICAgdm9pZCBs
b2FkU3Ryb2tlc0Zyb21BdHRhY2htZW50KEVkaXRhYmxlSW1hZ2UmLCBjb25zdCBBUEk6OkF0dGFj
aG1lbnQmKTsKLQotICAgIFdlYWtQdHI8V2ViUGFnZVByb3h5PiBtX3dlYlBhZ2VQcm94eTsKLQot
ICAgIEhhc2hNYXA8V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQsIHN0ZDo6
dW5pcXVlX3B0cjxFZGl0YWJsZUltYWdlPj4gbV9lZGl0YWJsZUltYWdlczsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRy
b2xsZXIubWVzc2FnZXMuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliMWFlYmYx
NTcxZTExM2NkZjkxMTYxYTJkMWY2MzRlMjIwNjQ1MTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRh
YmxlSW1hZ2VDb250cm9sbGVyLm1lc3NhZ2VzLmluCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAs
MCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0j
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0jaWYgSEFWRShQ
RU5DSUxLSVQpCi0KLW1lc3NhZ2VzIC0+IEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyIHsKLSAgICBE
aWRDcmVhdGVFZGl0YWJsZUltYWdlKHVpbnQ2NF90IGVkaXRhYmxlSW1hZ2VJRCkKLSAgICBEaWRE
ZXN0cm95RWRpdGFibGVJbWFnZSh1aW50NjRfdCBlZGl0YWJsZUltYWdlSUQpCi0gICAgQXNzb2Np
YXRlV2l0aEF0dGFjaG1lbnQodWludDY0X3QgZWRpdGFibGVJbWFnZUlELCBTdHJpbmcgYXR0YWNo
bWVudElEKQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNTUzYTNhY2JkNTY1NzI5YjYzOWQ4MjUwMDEwNDYxMjlhM2MxOGQ1YS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0KKysrIC9kZXYvbnVsbApAQCAtMSwx
NjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRWRp
dGFibGVJbWFnZUNvbnRyb2xsZXIuaCIKLQotI2lmIEhBVkUoUEVOQ0lMS0lUKQotCi0jaW1wb3J0
ICJBUElBdHRhY2htZW50LmgiCi0jaW1wb3J0ICJFZGl0YWJsZUltYWdlQ29udHJvbGxlck1lc3Nh
Z2VzLmgiCi0jaW1wb3J0ICJQYWdlQ2xpZW50SW1wbElPUy5oIgotI2ltcG9ydCAiUGVuY2lsS2l0
U1BJLmgiCi0jaW1wb3J0ICJXS0RyYXdpbmdWaWV3LmgiCi0jaW1wb3J0ICJXZWJQYWdlUHJveHku
aCIKLSNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGlj
c0xheWVyLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0KLSNkZWZpbmUgTUVTU0FHRV9D
SEVDS19WSUVXSUQoZW1iZWRkZWRWaWV3SUQpIE1FU1NBR0VfQ0hFQ0tfQkFTRShtX2VkaXRhYmxl
SW1hZ2VzLmlzVmFsaWRLZXkoZW1iZWRkZWRWaWV3SUQpLCBtX3dlYlBhZ2VQcm94eS0+cHJvY2Vz
cygpLmNvbm5lY3Rpb24oKSkKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLUVkaXRhYmxlSW1hZ2VD
b250cm9sbGVyOjpFZGl0YWJsZUltYWdlQ29udHJvbGxlcihXZWJQYWdlUHJveHkmIHdlYlBhZ2VQ
cm94eSkKLSAgICA6IG1fd2ViUGFnZVByb3h5KG1ha2VXZWFrUHRyKHdlYlBhZ2VQcm94eSkpCi17
Ci0gICAgaWYgKGF1dG8qIHdlYlBhZ2VQcm94eSA9IG1fd2ViUGFnZVByb3h5LmdldCgpKQotICAg
ICAgICB3ZWJQYWdlUHJveHktPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHdlYlBhZ2VQ
cm94eS0+d2ViUGFnZUlEKCksICp0aGlzKTsKLX0KLQotRWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6
On5FZGl0YWJsZUltYWdlQ29udHJvbGxlcigpCi17Ci0gICAgaWYgKGF1dG8qIHdlYlBhZ2VQcm94
eSA9IG1fd2ViUGFnZVByb3h5LmdldCgpKQotICAgICAgICB3ZWJQYWdlUHJveHktPnByb2Nlc3Mo
KS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkVkaXRhYmxlSW1hZ2VDb250cm9sbGVy
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHdlYlBhZ2VQcm94eS0+d2ViUGFnZUlEKCkpOwotfQot
Ci1FZGl0YWJsZUltYWdlJiBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6ZW5zdXJlRWRpdGFibGVJ
bWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJ
RCkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fZWRpdGFibGVJbWFnZXMuZW5zdXJlKGVtYmVkZGVk
Vmlld0lELCBbJl0gewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RWRpdGFibGVJbWFnZT4gaW1h
Z2UgPSBtYWtlVW5pcXVlPEVkaXRhYmxlSW1hZ2U+KCk7Ci0gICAgICAgIGltYWdlLT5kcmF3aW5n
VmlldyA9IG1fd2ViUGFnZVByb3h5LT5wYWdlQ2xpZW50KCkuY3JlYXRlRHJhd2luZ1ZpZXcoZW1i
ZWRkZWRWaWV3SUQpOwotICAgICAgICByZXR1cm4gaW1hZ2U7Ci0gICAgfSk7Ci0gICAgcmV0dXJu
ICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotfQotCi1FZGl0YWJsZUltYWdlKiBFZGl0YWJsZUlt
YWdlQ29udHJvbGxlcjo6ZWRpdGFibGVJbWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJl
ZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCkKLXsKLSAgICBhdXRvIGRyYXdpbmdWaWV3SXRlciA9
IG1fZWRpdGFibGVJbWFnZXMuZmluZChlbWJlZGRlZFZpZXdJRCk7Ci0gICAgaWYgKGRyYXdpbmdW
aWV3SXRlciA9PSBtX2VkaXRhYmxlSW1hZ2VzLmVuZCgpKQotICAgICAgICByZXR1cm4gbmlsOwot
ICAgIHJldHVybiBkcmF3aW5nVmlld0l0ZXItPnZhbHVlLmdldCgpOwotfQotCi12b2lkIEVkaXRh
YmxlSW1hZ2VDb250cm9sbGVyOjpkaWRDcmVhdGVFZGl0YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEKQotewotICAgIE1FU1NBR0Vf
Q0hFQ0tfVklFV0lEKGVtYmVkZGVkVmlld0lEKTsKLSAgICBlbnN1cmVFZGl0YWJsZUltYWdlKGVt
YmVkZGVkVmlld0lEKTsKLX0KLQotdm9pZCBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6ZGlkRGVz
dHJveUVkaXRhYmxlSW1hZ2UoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQg
ZW1iZWRkZWRWaWV3SUQpCi17Ci0gICAgTUVTU0FHRV9DSEVDS19WSUVXSUQoZW1iZWRkZWRWaWV3
SUQpOwotICAgIG1fZWRpdGFibGVJbWFnZXMucmVtb3ZlKGVtYmVkZGVkVmlld0lEKTsKLX0KLQot
dm9pZCBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6YXNzb2NpYXRlV2l0aEF0dGFjaG1lbnQoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQsIGNvbnN0
IFN0cmluZyYgYXR0YWNobWVudElEKQotewotICAgIGlmICghbV93ZWJQYWdlUHJveHkpCi0gICAg
ICAgIHJldHVybjsKLSAgICBhdXRvJiBwYWdlID0gKm1fd2ViUGFnZVByb3h5OwotCi0gICAgTUVT
U0FHRV9DSEVDS19WSUVXSUQoZW1iZWRkZWRWaWV3SUQpOwotICAgIHBhZ2UucmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllcihhdHRhY2htZW50SUQpOwotICAgIGF1dG8mIGF0dGFjaG1lbnQgPSAq
cGFnZS5hdHRhY2htZW50Rm9ySWRlbnRpZmllcihhdHRhY2htZW50SUQpOwotCi0gICAgYXV0byYg
ZWRpdGFibGVJbWFnZSA9IGVuc3VyZUVkaXRhYmxlSW1hZ2UoZW1iZWRkZWRWaWV3SUQpOwotICAg
IFdlYWtPYmpDUHRyPFdLRHJhd2luZ1ZpZXc+IGRyYXdpbmdWaWV3ID0gZWRpdGFibGVJbWFnZS5k
cmF3aW5nVmlldy5nZXQoKTsKLSAgICBlZGl0YWJsZUltYWdlLmF0dGFjaG1lbnRJRCA9IGF0dGFj
aG1lbnRJRDsKLQotICAgIGxvYWRTdHJva2VzRnJvbUF0dGFjaG1lbnQoZWRpdGFibGVJbWFnZSwg
YXR0YWNobWVudCk7Ci0KLSAgICBhdHRhY2htZW50LnNldEZpbGVXcmFwcGVyR2VuZXJhdG9yKFtk
cmF3aW5nVmlld10oKSAtPiBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gewotICAgICAgICBpZiAo
IWRyYXdpbmdWaWV3KQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgTlNEYXRhICpk
YXRhID0gW2RyYXdpbmdWaWV3IFBOR1JlcHJlc2VudGF0aW9uXTsKLSAgICAgICAgaWYgKCFkYXRh
KQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgUmV0YWluUHRyPE5TRmlsZVdyYXBw
ZXI+IGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1
bGFyRmlsZVdpdGhDb250ZW50czpkYXRhXSk7Ci0gICAgICAgIFtmaWxlV3JhcHBlciBzZXRQcmVm
ZXJyZWRGaWxlbmFtZTpAImRyYXdpbmcucG5nIl07Ci0gICAgICAgIHJldHVybiBmaWxlV3JhcHBl
cjsKLSAgICB9KTsKLSAgICBhdHRhY2htZW50LnNldENvbnRlbnRUeXBlKCJwdWJsaWMucG5nIik7
Ci19Ci0KLXZvaWQgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6OmxvYWRTdHJva2VzRnJvbUF0dGFj
aG1lbnQoRWRpdGFibGVJbWFnZSYgZWRpdGFibGVJbWFnZSwgY29uc3QgQVBJOjpBdHRhY2htZW50
JiBhdHRhY2htZW50KQotewotICAgIEFTU0VSVChhdHRhY2htZW50LmlkZW50aWZpZXIoKSA9PSBl
ZGl0YWJsZUltYWdlLmF0dGFjaG1lbnRJRCk7Ci0gICAgTlNGaWxlV3JhcHBlciAqZmlsZVdyYXBw
ZXIgPSBhdHRhY2htZW50LmZpbGVXcmFwcGVyKCk7Ci0gICAgaWYgKCFmaWxlV3JhcHBlci5pc1Jl
Z3VsYXJGaWxlKQotICAgICAgICByZXR1cm47Ci0gICAgW2VkaXRhYmxlSW1hZ2UuZHJhd2luZ1Zp
ZXcgbG9hZERyYXdpbmdGcm9tUE5HUmVwcmVzZW50YXRpb246ZmlsZVdyYXBwZXIucmVndWxhckZp
bGVDb250ZW50c107Ci19Ci0KLXZvaWQgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6OmludmFsaWRh
dGVBdHRhY2htZW50Rm9yRWRpdGFibGVJbWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJl
ZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCkKLXsKLSAgICBpZiAoIW1fd2ViUGFnZVByb3h5KQot
ICAgICAgICByZXR1cm47Ci0gICAgYXV0byYgcGFnZSA9ICptX3dlYlBhZ2VQcm94eTsKLQotICAg
IGF1dG8gZWRpdGFibGVJbWFnZSA9IHRoaXMtPmVkaXRhYmxlSW1hZ2UoZW1iZWRkZWRWaWV3SUQp
OwotICAgIGlmICghZWRpdGFibGVJbWFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBh
dHRhY2htZW50ID0gcGFnZS5hdHRhY2htZW50Rm9ySWRlbnRpZmllcihlZGl0YWJsZUltYWdlLT5h
dHRhY2htZW50SUQpOwotICAgIGlmICghYXR0YWNobWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgYXR0YWNobWVudC0+aW52YWxpZGF0ZUdlbmVyYXRlZEZpbGVXcmFwcGVyKCk7Ci19Ci0KLVdl
YlBhZ2VQcm94eTo6U2hvdWxkVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMgRWRpdGFibGVJbWFn
ZUNvbnRyb2xsZXI6OndpbGxVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0
dGFjaG1lbnQmIGF0dGFjaG1lbnQpCi17Ci0gICAgZm9yIChhdXRvJiBlZGl0YWJsZUltYWdlIDog
bV9lZGl0YWJsZUltYWdlcy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoZWRpdGFibGVJbWFnZS0+
YXR0YWNobWVudElEICE9IGF0dGFjaG1lbnQuaWRlbnRpZmllcigpKQotICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgbG9hZFN0cm9rZXNGcm9tQXR0YWNobWVudCgqZWRpdGFibGVJbWFn
ZSwgYXR0YWNobWVudCk7Ci0gICAgICAgIHJldHVybiBXZWJQYWdlUHJveHk6OlNob3VsZFVwZGF0
ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzOjpObzsKLSAgICB9Ci0KLSAgICByZXR1cm4gV2ViUGFnZVBy
b3h5OjpTaG91bGRVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlczo6WWVzOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI3VuZGVmIE1FU1NBR0VfQ0hFQ0tfVklFV0lECi0KLSNlbmRpZiAv
LyBIQVZFKFBFTkNJTEtJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmgKaW5kZXggMjcyNWM4Yjc5M2NkN2NjZTc0OTk1N2UyZjBkZDFkZDE4YjE4
YTVmYy4uMjEzNjlhZmU2N2M2OWU4YmZjNzAxZGU1MTE5NjMwMDM4N2FkMzAyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTI2MCwx
MCArMjYwLDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0TW91c2VFdmVudFBvbGljeShXZWJD
b3JlOjpNb3VzZUV2ZW50UG9saWN5KSBmaW5hbDsKIAotI2lmIEhBVkUoUEVOQ0lMS0lUKQotICAg
IFJldGFpblB0cjxXS0RyYXdpbmdWaWV3PiBjcmVhdGVEcmF3aW5nVmlldyhXZWJDb3JlOjpHcmFw
aGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCkgb3ZlcnJpZGU7Ci0jZW5kaWYKLQogI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCB3cml0ZVByb21pc2VkQXR0YWNobWVudFRv
UGFzdGVib2FyZChXZWJDb3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZvJiYpIGZpbmFsOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW0KaW5kZXggMGJhODVkZjc1MTk4NTAxYTkwYjk2OWIyMDliZDg5NzlkZjY1ZWY5ZC4uYjNkMWIz
ODkxZDgxOWQ0ZDFkNGYyYWM5MWIyYzQ5NTE5MDQ0MzViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtNDYsNyArNDYsNiBAQAog
I2ltcG9ydCAiVmlld1NuYXBzaG90U3RvcmUuaCIKICNpbXBvcnQgIldLQ29udGVudFZpZXcuaCIK
ICNpbXBvcnQgIldLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIgotI2ltcG9ydCAiV0tEcmF3aW5n
Vmlldy5oIgogI2ltcG9ydCAiV0tFZGl0Q29tbWFuZC5oIgogI2ltcG9ydCAiV0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TLmgiCiAjaW1wb3J0ICJXS1Bhc3N3b3JkVmlldy5oIgpAQCAtOTE3LDEzICs5
MTYsNiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsCiAgICAgW21fY29udGVudFZpZXcgX3JlcXVl
c3RET01QYXN0ZUFjY2Vzc1dpdGhFbGVtZW50UmVjdDplbGVtZW50UmVjdCBvcmlnaW5JZGVudGlm
aWVyOm9yaWdpbklkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6V1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildOwogfQogCi0jaWYgSEFWRShQRU5DSUxLSVQpCi1SZXRhaW5QdHI8V0tEcmF3aW5n
Vmlldz4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdWaWV3KFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEKQotewotICAgIHJldHVybiBhZG9w
dE5TKFtbV0tEcmF3aW5nVmlldyBhbGxvY10gaW5pdFdpdGhFbWJlZGRlZFZpZXdJRDplbWJlZGRl
ZFZpZXdJRCBjb250ZW50VmlldzptX2NvbnRlbnRWaWV3LmdldEF1dG9yZWxlYXNlZCgpXSk7Ci19
Ci0jZW5kaWYKLQogdm9pZCBQYWdlQ2xpZW50SW1wbDo6Y2FuY2VsUG9pbnRlcnNGb3JHZXN0dXJl
UmVjb2duaXplcihVSUdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplcikKIHsKICAg
ICBbbV9jb250ZW50VmlldyBjYW5jZWxQb2ludGVyc0Zvckdlc3R1cmVSZWNvZ25pemVyOmdlc3R1
cmVSZWNvZ25pemVyXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
ZW5jaWxLaXRTb2Z0TGluay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BlbmNpbEtp
dFNvZnRMaW5rLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkM2M1ZjliOWMyMDg0
NTBlZmYwODY2MjliNjE1OTAzOGM3Y2ZiNjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BlbmNpbEtpdFNv
ZnRMaW5rLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBIQVZFKFBFTkNJTEtJVCkKLQotI2ltcG9ydCAiUGVuY2lsS2l0U1BJ
LmgiCi0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KLQotU09GVF9MSU5LX0ZSQU1FV09SS19G
T1JfSEVBREVSKFdlYktpdCwgUGVuY2lsS2l0KTsKLVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVS
KFdlYktpdCwgUEtDYW52YXNWaWV3KTsKLVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdlYktp
dCwgUEtEcmF3aW5nKTsKLVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdlYktpdCwgUEtJbWFn
ZVJlbmRlcmVyKTsKLQotI2VuZGlmIC8vIEhBVkUoUEVOQ0lMS0lUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BlbmNpbEtpdFNvZnRMaW5rLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BlbmNpbEtpdFNvZnRMaW5rLm1tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMmFmZWVmMWFkODFmYmY1ZDdkN2ZkMjg1NjFkODViZjY1N2M5NDIwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QZW5jaWxLaXRTb2Z0TGluay5tbQorKysgL2Rldi9udWxsCkBAIC0x
LDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIEhBVkUo
UEVOQ0lMS0lUKQotCi0jaW1wb3J0ICJQZW5jaWxLaXRTUEkuaCIKLSNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgotCi1TT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRShXZWJL
aXQsIFBlbmNpbEtpdCk7Ci1TT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShXZWJLaXQsIFBlbmNp
bEtpdCwgUEtDYW52YXNWaWV3KTsKLVNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKFdlYktpdCwg
UGVuY2lsS2l0LCBQS0RyYXdpbmcpOwotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoV2ViS2l0
LCBQZW5jaWxLaXQsIFBLSW1hZ2VSZW5kZXJlcik7Ci0KLSNlbmRpZiAvLyBIQVZFKFBFTkNJTEtJ
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24uaAppbmRleCBlMjkyZDkwOTJmMWNmNzdhZDczZjI2MjgxYzZjNWJkZDVkNjll
YzVkLi43ZWExMDE3ZGM1ZDA0Nzk0ZGMzMGUzZWEwY2M5NzM5M2NmMTNkZmYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oCkBAIC0xMDIsNyArMTAyLDYgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogQGNsYXNzIFdLQWN0
aW9uU2hlZXRBc3Npc3RhbnQ7CiBAY2xhc3MgV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvOwogQGNs
YXNzIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2w7Ci1AY2xhc3MgV0tEcmF3aW5nQ29vcmRpbmF0b3I7
CiBAY2xhc3MgV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3OwogQGNsYXNzIFdLRm9ybUlucHV0U2Vz
c2lvbjsKIEBjbGFzcyBXS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyOwpAQCAt
MjI4LDcgKzIyNyw2IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAgICAgUmV0YWlu
UHRyPFVJVGFwR2VzdHVyZVJlY29nbml6ZXI+IF9kb3VibGVUYXBHZXN0dXJlUmVjb2duaXplckZv
ckRvdWJsZUNsaWNrOwogICAgIFJldGFpblB0cjxVSVRhcEdlc3R1cmVSZWNvZ25pemVyPiBfdHdv
RmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXI7CiAgICAgUmV0YWluUHRyPFVJVGFwR2Vz
dHVyZVJlY29nbml6ZXI+IF90d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplcjsKLSAg
ICBSZXRhaW5QdHI8VUlUYXBHZXN0dXJlUmVjb2duaXplcj4gX3N0eWx1c1NpbmdsZVRhcEdlc3R1
cmVSZWNvZ25pemVyOwogICAgIFJldGFpblB0cjxXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJl
UmVjb2duaXplcj4gX2luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplcjsKIAogICAg
IFJldGFpblB0cjxXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXI+IF90b3VjaEFjdGlvbkdl
c3R1cmVSZWNvZ25pemVyOwpAQCAtMzM5LDEwICszMzcsNiBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVj
dGlvbkRhdGEgewogICAgIFJldGFpblB0cjxOU0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4+IF9k
YXRhTGlzdFRleHRTdWdnZXN0aW9uczsKICNlbmRpZgogCi0jaWYgSEFWRShQRU5DSUxLSVQpCi0g
ICAgUmV0YWluUHRyPFdLRHJhd2luZ0Nvb3JkaW5hdG9yPiBfZHJhd2luZ0Nvb3JkaW5hdG9yOwot
I2VuZGlmCi0KICAgICBCT09MIF9pc0VkaXRhYmxlOwogICAgIEJPT0wgX3Nob3dpbmdUZXh0U3R5
bGVPcHRpb25zOwogICAgIEJPT0wgX2hhc1ZhbGlkUG9zaXRpb25JbmZvcm1hdGlvbjsKQEAgLTU4
MywxMCArNTc3LDYgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihERUNM
QVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIC0gKHZvaWQpdXBkYXRlVGV4
dFN1Z2dlc3Rpb25zRm9ySW5wdXREZWxlZ2F0ZTsKICNlbmRpZgogCi0jaWYgSEFWRShQRU5DSUxL
SVQpCi0tIChXS0RyYXdpbmdDb29yZGluYXRvciAqKV9kcmF3aW5nQ29vcmRpbmF0b3I7Ci0jZW5k
aWYKLQogLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVj
dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0
ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClfZm9jdXNUZXh0SW5wdXRDb250ZXh0
OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dCBwbGFjZUNhcmV0QXQ6KENHUG9pbnQpcG9p
bnQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJUmVzcG9uZGVyPFVJVGV4dElucHV0PiAq
KSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX3dpbGxCZWdpblRleHRJbnRlcmFjdGlvbklu
VGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKWNvbnRleHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQppbmRleCA1YzM4MDNjYTVkNDE0ODgxZjkyYjE3MmFhNjA2YzIyYjcyMDA0NTliLi4wOGRi
ZjNhZDg3OTlhOTUxNGFjZjZiZDMxMmY5ZmYxYzc3MjUyNjExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAg
LTMxLDcgKzMxLDYgQEAKICNpbXBvcnQgIkFQSVVJQ2xpZW50LmgiCiAjaW1wb3J0ICJDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJEb2N1bWVudEVkaXRpbmdDb250ZXh0
LmgiCi0jaW1wb3J0ICJFZGl0YWJsZUltYWdlQ29udHJvbGxlci5oIgogI2ltcG9ydCAiSW5wdXRW
aWV3VXBkYXRlRGVmZXJyZXIuaCIKICNpbXBvcnQgIkluc2VydFRleHRPcHRpb25zLmgiCiAjaW1w
b3J0ICJMb2dnaW5nLmgiCkBAIC01MSw3ICs1MCw2IEBACiAjaW1wb3J0ICJXS0NvbnRleHRNZW51
RWxlbWVudEluZm9Qcml2YXRlLmgiCiAjaW1wb3J0ICJXS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxl
ci5oIgogI2ltcG9ydCAiV0tEYXRlVGltZUlucHV0Q29udHJvbC5oIgotI2ltcG9ydCAiV0tEcmF3
aW5nQ29vcmRpbmF0b3IuaCIKICNpbXBvcnQgIldLRXJyb3IuaCIKICNpbXBvcnQgIldLRm9jdXNl
ZEZvcm1Db250cm9sVmlldy5oIgogI2ltcG9ydCAiV0tGb3JtU2VsZWN0Q29udHJvbC5oIgpAQCAt
ODUwLDEyICs4NDgsNiBAQCAtICh2b2lkKXNldFVwSW50ZXJhY3Rpb24KICAgICBbX3R3b0Zpbmdl
clNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldEVuYWJsZWQ6IXNlbGYud2ViVmlldy5fZWRp
dGFibGVdOwogICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJTaW5nbGVU
YXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAKLSAgICBfc3R5bHVzU2luZ2xlVGFwR2VzdHVy
ZVJlY29nbml6ZXIgPSBhZG9wdE5TKFtbVUlUYXBHZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5p
dFdpdGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKF9zdHlsdXNTaW5nbGVUYXBSZWNvZ25p
emVkOildKTsKLSAgICBbX3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldE51bWJl
ck9mVGFwc1JlcXVpcmVkOjFdOwotICAgIFtfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6
ZXIgc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgW19zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVjb2du
aXplciBzZXRBbGxvd2VkVG91Y2hUeXBlczpAWyBAKFVJVG91Y2hUeXBlUGVuY2lsKSBdXTsKLSAg
ICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29n
bml6ZXIuZ2V0KCldOwotCiAgICAgX3RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9w
dE5TKFtbV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFRvdWNo
QWN0aW9uRGVsZWdhdGU6c2VsZl0pOwogICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl90
b3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIApAQCAtOTkyLDkgKzk4NCw2IEBA
IC0gKHZvaWQpY2xlYW5VcEludGVyYWN0aW9uCiAgICAgW190d29GaW5nZXJTaW5nbGVUYXBHZXN0
dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpuaWxdOwogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVS
ZWNvZ25pemVyOl90d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAK
LSAgICBbX3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOm5pbF07
Ci0gICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X3N0eWx1c1NpbmdsZVRhcEdlc3R1
cmVSZWNvZ25pemVyLmdldCgpXTsKLQogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVy
Ol90b3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICAgICBbc2VsZiByZW1vdmVH
ZXN0dXJlUmVjb2duaXplcjpfdG91Y2hBY3Rpb25MZWZ0U3dpcGVHZXN0dXJlUmVjb2duaXplci5n
ZXQoKV07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X3RvdWNoQWN0aW9uUmln
aHRTd2lwZUdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKQEAgLTEwNDgsMTAgKzEwMzcsNiBAQCAt
ICh2b2lkKWNsZWFuVXBJbnRlcmFjdGlvbgogICAgIFtfa2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRv
ciBpbnZhbGlkYXRlXTsKICAgICBfa2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciA9IG5pbDsKIAot
I2lmIEhBVkUoUEVOQ0lMS0lUKQotICAgIF9kcmF3aW5nQ29vcmRpbmF0b3IgPSBuaWw7Ci0jZW5k
aWYKLQogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIF9kYXRhTGlzdFRleHRTdWdn
ZXN0aW9uc0lucHV0VmlldyA9IG5pbDsKICAgICBfZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnMgPSBu
aWw7CkBAIC0xMDk0LDcgKzEwNzksNiBAQCAtICh2b2lkKV9yZW1vdmVEZWZhdWx0R2VzdHVyZVJl
Y29nbml6ZXJzCiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X2RvdWJsZVRhcEdl
c3R1cmVSZWNvZ25pemVyRm9yRG91YmxlQ2xpY2suZ2V0KCldOwogICAgIFtzZWxmIHJlbW92ZUdl
c3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQo
KV07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlclNpbmdsZVRh
cEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKLSAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2du
aXplcjpfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogI2lmIEhBVkUo
VUlLSVRfV0lUSF9NT1VTRV9TVVBQT1JUKQogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25p
emVyOl9tb3VzZUdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICNlbmRpZgpAQCAtMTEyMiw3ICsx
MTA2LDYgQEAgLSAodm9pZClfYWRkRGVmYXVsdEdlc3R1cmVSZWNvZ25pemVycwogICAgIFtzZWxm
IGFkZEdlc3R1cmVSZWNvZ25pemVyOl9kb3VibGVUYXBHZXN0dXJlUmVjb2duaXplckZvckRvdWJs
ZUNsaWNrLmdldCgpXTsKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfdHdvRmluZ2Vy
RG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogICAgIFtzZWxmIGFkZEdlc3R1cmVS
ZWNvZ25pemVyOl90d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07Ci0g
ICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNv
Z25pemVyLmdldCgpXTsKICNpZiBIQVZFKFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9SVCkKICAgICBb
c2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfbW91c2VHZXN0dXJlUmVjb2duaXplci5nZXQoKV07
CiAjZW5kaWYKQEAgLTI0MTIsOSArMjM5NSw2IEBAIC0gKEJPT0wpZ2VzdHVyZVJlY29nbml6ZXJT
aG91bGRCZWdpbjooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7CiAg
ICAgQ0dQb2ludCBwb2ludCA9IFtnZXN0dXJlUmVjb2duaXplciBsb2NhdGlvbkluVmlldzpzZWxm
XTsKIAotICAgIGlmIChnZXN0dXJlUmVjb2duaXplciA9PSBfc3R5bHVzU2luZ2xlVGFwR2VzdHVy
ZVJlY29nbml6ZXIpCi0gICAgICAgIHJldHVybiBzZWxmLndlYlZpZXcuX3N0eWx1c1RhcEdlc3R1
cmVTaG91bGRDcmVhdGVFZGl0YWJsZUltYWdlOwotCiAgICAgYXV0byBpc0ludGVycnVwdGluZ0Rl
Y2VsZXJhdGlvbkZvclNjcm9sbFZpZXdPckFuY2VzdG9yID0gWyZdIChVSVNjcm9sbFZpZXcgKnNj
cm9sbFZpZXcpIHsKICAgICAgICAgVUlTY3JvbGxWaWV3ICptYWluU2Nyb2xsZXIgPSBzZWxmLndl
YlZpZXcuc2Nyb2xsVmlldzsKICAgICAgICAgVUlWaWV3ICp2aWV3ID0gc2Nyb2xsVmlldyA/OiBt
YWluU2Nyb2xsZXI7CkBAIC0yNzA3LDEzICsyNjg3LDYgQEAgLSAodm9pZClfdHdvRmluZ2VyU2lu
Z2xlVGFwR2VzdHVyZVJlY29nbml6ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJl
UmUKICAgICBfcGFnZS0+aGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChXZWJDb3JlOjpyb3VuZGVk
SW50UG9pbnQoZ2VzdHVyZVJlY29nbml6ZXIuY2VudHJvaWQpLCBXZWJLaXQ6OndlYkV2ZW50TW9k
aWZpZXJGbGFncyhnZXN0dXJlUmVjb2duaXplck1vZGlmaWVyRmxhZ3MoZ2VzdHVyZVJlY29nbml6
ZXIpIHwgVUlLZXlNb2RpZmllckNvbW1hbmQpLCArK19sYXRlc3RUYXBJRCk7CiB9CiAKLS0gKHZv
aWQpX3N0eWx1c1NpbmdsZVRhcFJlY29nbml6ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKiln
ZXN0dXJlUmVjb2duaXplcgotewotICAgIEFTU0VSVChzZWxmLndlYlZpZXcuX3N0eWx1c1RhcEdl
c3R1cmVTaG91bGRDcmVhdGVFZGl0YWJsZUltYWdlKTsKLSAgICBBU1NFUlQoZ2VzdHVyZVJlY29n
bml6ZXIgPT0gX3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyKTsKLSAgICBfcGFnZS0+
aGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2Vz
dHVyZVJlY29nbml6ZXIubG9jYXRpb24pLCArK19sYXRlc3RUYXBJRCk7Ci19Ci0KIC0gKHZvaWQp
X2xvbmdQcmVzc1JlY29nbml6ZWQ6KFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0
dXJlUmVjb2duaXplcgogewogICAgIEFTU0VSVChnZXN0dXJlUmVjb2duaXplciA9PSBfbG9uZ1By
ZXNzR2VzdHVyZVJlY29nbml6ZXIpOwpAQCAtNTk4MywxMSArNTk1Niw2IEBAIC0gKHZvaWQpX2Vs
ZW1lbnREaWRGb2N1czooY29uc3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJilp
bmZvcm1hdGlvbiB1CiAgICAgICAgIFtzZWxmIF9lbGVtZW50RGlkQmx1cl07CiAgICAgfQogCi0j
aWYgSEFWRShQRU5DSUxLSVQpCi0gICAgaWYgKGluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID09IFdl
YktpdDo6SW5wdXRUeXBlOjpEcmF3aW5nKQotICAgICAgICBbX2RyYXdpbmdDb29yZGluYXRvciBp
bnN0YWxsSW5rUGlja2VyRm9yRHJhd2luZzppbmZvcm1hdGlvbi5lbWJlZGRlZFZpZXdJRF07Ci0j
ZW5kaWYKLQogICAgIGlmICghc2hvdWxkU2hvd0lucHV0VmlldyB8fCBpbmZvcm1hdGlvbi5lbGVt
ZW50VHlwZSA9PSBXZWJLaXQ6OklucHV0VHlwZTo6Tm9uZSkgewogICAgICAgICBfcGFnZS0+c2V0
SXNTaG93aW5nSW5wdXRWaWV3Rm9yRm9jdXNlZEVsZW1lbnQoZmFsc2UpOwogICAgICAgICByZXR1
cm47CkBAIC02MDkzLDEwICs2MDYxLDYgQEAgLSAodm9pZClfZWxlbWVudERpZEJsdXIKIHsKICAg
ICBTZXRGb3JTY29wZTxCT09MPiBpc0JsdXJyaW5nRm9jdXNlZEVsZW1lbnRGb3JTY29wZSB7IF9p
c0JsdXJyaW5nRm9jdXNlZEVsZW1lbnQsIFlFUyB9OwogCi0jaWYgSEFWRShQRU5DSUxLSVQpCi0g
ICAgW19kcmF3aW5nQ29vcmRpbmF0b3IgdW5pbnN0YWxsSW5rUGlja2VyXTsKLSNlbmRpZgotCiAj
aWYgVVNFKFVJS0lUX0tFWUJPQVJEX0FERElUSU9OUykKICAgICBbc2VsZiBfZW5kRWRpdGluZ107
CiAjZW5kaWYKQEAgLTg2MDEsMTUgKzg1NjUsNiBAQCAtICh2b2lkKV9sb29rdXBHZXN0dXJlUmVj
b2duaXplZDooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB9CiAjZW5k
aWYKIAotI2lmIEhBVkUoUEVOQ0lMS0lUKQotLSAoV0tEcmF3aW5nQ29vcmRpbmF0b3IgKilfZHJh
d2luZ0Nvb3JkaW5hdG9yCi17Ci0gICAgaWYgKCFfZHJhd2luZ0Nvb3JkaW5hdG9yKQotICAgICAg
ICBfZHJhd2luZ0Nvb3JkaW5hdG9yID0gYWRvcHROUyhbW1dLRHJhd2luZ0Nvb3JkaW5hdG9yIGFs
bG9jXSBpbml0V2l0aENvbnRlbnRWaWV3OnNlbGZdKTsKLSAgICByZXR1cm4gX2RyYXdpbmdDb29y
ZGluYXRvci5nZXQoKTsKLX0KLSNlbmRpZiAvLyBIQVZFKFBFTkNJTEtJVCkKLQogLSAodm9pZClz
ZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAogewogICAgIGlm
IChXZWJLaXQ6OlRleHRDaGVja2VyOjpzZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
ZW5hYmxlZCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tEcmF3
aW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdD
b29yZGluYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTdiNTc0NTI1NGEx
MDMzOTRhOWY2Y2JhYWJkZjE0MGY0YmVjN2NhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdD
b29yZGluYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZiBIQVZFKFBFTkNJTEtJVCkKLQotI2ltcG9ydCAiUGVuY2lsS2l0U1BJLmgiCi0jaW1wb3J0
IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KLQotT0JKQ19DTEFTUyBQS0luazsKLU9CSkNfQ0xB
U1MgV0tDb250ZW50VmlldzsKLQotQGludGVyZmFjZSBXS0RyYXdpbmdDb29yZGluYXRvciA6IE5T
T2JqZWN0IDxQS1J1bGVySG9zdGluZ0RlbGVnYXRlPgotCi0tIChpbnN0YW5jZXR5cGUpaW5pdCBO
U19VTkFWQUlMQUJMRTsKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRlbnRWaWV3OihXS0Nv
bnRlbnRWaWV3ICopY29udGVudFZpZXc7Ci0KLS0gKHZvaWQpaW5zdGFsbElua1BpY2tlckZvckRy
YXdpbmc6KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKWVtYmVkZGVkVmll
d0lEOwotLSAodm9pZCl1bmluc3RhbGxJbmtQaWNrZXI7Ci0KLUBwcm9wZXJ0eSAobm9uYXRvbWlj
KSBCT09MIHJ1bGVyRW5hYmxlZDsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgcmV0
YWluKSBQS0luayAqY3VycmVudEluazsKLQotQGVuZAotCi0KLSNlbmRpZiAvLyBIQVZFKFBFTkNJ
TEtJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdD
b29yZGluYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdDb29y
ZGluYXRvci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQwYzcyMzlkNDI2NjI4
MDkyZGYzNmYxOWM3NTNlZWMwNmRhZjAyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nQ29v
cmRpbmF0b3IubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV0tEcmF3aW5nQ29vcmRpbmF0b3IuaCIKLQot
I2lmIEhBVkUoUEVOQ0lMS0lUKQotCi0jaW1wb3J0ICJFZGl0YWJsZUltYWdlQ29udHJvbGxlci5o
IgotI2ltcG9ydCAiV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCi0jaW1wb3J0ICJXS0RyYXdp
bmdWaWV3LmgiCi0jaW1wb3J0ICJXS1dlYlZpZXcuaCIKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9u
cy9XS0RyYXdpbmdDb29yZGluYXRvckFkZGl0aW9ucy5tbT4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KLQotI2ltcG9ydCAiUGVuY2lsS2l0U29mdExpbmsuaCIKLQotQGludGVyZmFjZSBXS0Ry
YXdpbmdDb29yZGluYXRvciAoKSA8V0tJbmtQaWNrZXJEZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxl
bWVudGF0aW9uIFdLRHJhd2luZ0Nvb3JkaW5hdG9yIHsKLSAgICBfX3dlYWsgV0tDb250ZW50Vmll
dyAqX2NvbnRlbnRWaWV3OwotCi0gICAgUmV0YWluUHRyPFdLSW5rUGlja2VyPiBfaW5rUGlja2Vy
OwotCi0gICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgX2ZvY3VzZWRF
bWJlZGRlZFZpZXdJRDsKLX0KLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29udGVudFZpZXc6
KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldwotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07
Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX2NvbnRlbnRWaWV3
ID0gY29udGVudFZpZXc7Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAoUEtJbmsgKiljdXJy
ZW50SW5rCi17Ci0gICAgcmV0dXJuIFtfaW5rUGlja2VyIGN1cnJlbnRJbmtdOwotfQotCi0tIChV
SVZpZXcgKilydWxlckhvc3RpbmdWaWV3Ci17Ci0gICAgcmV0dXJuIF9jb250ZW50VmlldzsKLX0K
LQotLSAoQk9PTClydWxlckhvc3RXYW50c1NoYXJlZFJ1bGVyCi17Ci0gICAgcmV0dXJuIFlFUzsK
LX0KLQotLSAoV0tEcmF3aW5nVmlldyAqKV9mb2N1c2VkRHJhd2luZ1ZpZXcKLXsKLSAgICBXZWJL
aXQ6OkVkaXRhYmxlSW1hZ2UgKmZvY3VzZWRFZGl0YWJsZUltYWdlID0gX2NvbnRlbnRWaWV3LnBh
Z2UtPmVkaXRhYmxlSW1hZ2VDb250cm9sbGVyKCkuZWRpdGFibGVJbWFnZShfZm9jdXNlZEVtYmVk
ZGVkVmlld0lEKTsKLSAgICBpZiAoIWZvY3VzZWRFZGl0YWJsZUltYWdlKQotICAgICAgICByZXR1
cm4gbmlsOwotICAgIHJldHVybiBmb2N1c2VkRWRpdGFibGVJbWFnZS0+ZHJhd2luZ1ZpZXcuZ2V0
KCk7Ci19Ci0KLS0gKE5TVW5kb01hbmFnZXIgKil1bmRvTWFuYWdlckZvcklua1BpY2tlcjooV0tJ
bmtQaWNrZXIgKilpbmtQaWNrZXIKLXsKLSAgICByZXR1cm4gW19jb250ZW50VmlldyB1bmRvTWFu
YWdlcl07Ci19Ci0KLS0gKFVJVmlldyAqKWNvbnRhaW5pbmdWaWV3Rm9ySW5rUGlja2VyOihXS0lu
a1BpY2tlciAqKWlua1BpY2tlcgotewotICAgIHJldHVybiBfY29udGVudFZpZXc7Ci19Ci0KLS0g
KHZvaWQpaW5rUGlja2VyRGlkVG9nZ2xlUnVsZXI6KFdLSW5rUGlja2VyICopaW5rUGlja2VyCi17
Ci0gICAgX3J1bGVyRW5hYmxlZCA9ICFfcnVsZXJFbmFibGVkOwotICAgIFtzZWxmLl9mb2N1c2Vk
RHJhd2luZ1ZpZXcgZGlkQ2hhbmdlUnVsZXJTdGF0ZTpfcnVsZXJFbmFibGVkXTsKLX0KLQotLSAo
dm9pZClpbmtQaWNrZXJEaWRDaGFuZ2VJbms6KFdLSW5rUGlja2VyICopaW5rUGlja2VyCi17Ci0g
ICAgW3NlbGYuX2ZvY3VzZWREcmF3aW5nVmlldyBkaWRDaGFuZ2VJbms6c2VsZi5jdXJyZW50SW5r
XTsKLX0KLQotLSAodm9pZClpbnN0YWxsSW5rUGlja2VyRm9yRHJhd2luZzooV2ViQ29yZTo6R3Jh
cGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpZW1iZWRkZWRWaWV3SUQKLXsKLSAgICBfZm9jdXNl
ZEVtYmVkZGVkVmlld0lEID0gZW1iZWRkZWRWaWV3SUQ7Ci0KLSAgICBpZiAoIV9pbmtQaWNrZXIp
Ci0gICAgICAgIF9pbmtQaWNrZXIgPSBhZG9wdE5TKFtbV0tJbmtQaWNrZXIgYWxsb2NdIGluaXRX
aXRoRGVsZWdhdGU6c2VsZl0pOwotICAgIFtfaW5rUGlja2VyIHNob3ddOwotCi0gICAgLy8gV2hl
biBmb2N1c2VkLCBwdXNoIHRoZSBydWxlciBzdGF0ZSBkb3duIHRvIHRoZSBjYW52YXMgc28gdGhh
dCBpdCBkb2Vzbid0IGdldCBvdXQgb2Ygc3luYwotICAgIC8vIGFuZCBlYXJseS1yZXR1cm4gZnJv
bSBsYXRlciBjaGFuZ2VzLgotICAgIFtzZWxmLl9mb2N1c2VkRHJhd2luZ1ZpZXcgZGlkQ2hhbmdl
UnVsZXJTdGF0ZTpfcnVsZXJFbmFibGVkXTsKLX0KLQotLSAodm9pZCl1bmluc3RhbGxJbmtQaWNr
ZXIKLXsKLSAgICBbX2lua1BpY2tlciBoaWRlXTsKLSAgICBbc2VsZi5fZm9jdXNlZERyYXdpbmdW
aWV3IGRpZENoYW5nZVJ1bGVyU3RhdGU6Tk9dOwotICAgIF9mb2N1c2VkRW1iZWRkZWRWaWV3SUQg
PSAwOwotfQotCi1AZW5kCi0KLSNlbmRpZiAvLyBIQVZFKFBFTkNJTEtJVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5ZDgxYjIwM2I0NDBiODUzZDFiYzM1ODMwZTEwMmE4ODhlOTc5OTAyLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmIEhBVkUoUEVOQ0lMS0lUKQotCi0jaW1wb3J0ICJSZW1vdGVMYXll
clRyZWVIb3N0LmgiCi0jaW1wb3J0ICJSZW1vdGVMYXllclRyZWVWaWV3cy5oIgotCi1PQkpDX0NM
QVNTIFBLSW5rOwotT0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3OwotCi1AaW50ZXJmYWNlIFdLRHJh
d2luZ1ZpZXcgOiBXS0VtYmVkZGVkVmlldyA8V0tOYXRpdmVseUludGVyYWN0aWJsZT4KLQotLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRW1iZWRkZWRWaWV3SUQ6KFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXI6OkVtYmVkZGVkVmlld0lEKWVtYmVkZGVkVmlld0lEIGNvbnRlbnRWaWV3OihXS0NvbnRlbnRW
aWV3ICopY29udGVudFZpZXc7Ci0KLS0gKE5TRGF0YSAqKVBOR1JlcHJlc2VudGF0aW9uOwotLSAo
dm9pZClsb2FkRHJhd2luZ0Zyb21QTkdSZXByZXNlbnRhdGlvbjooTlNEYXRhICopUE5HRGF0YTsK
LQotLSAodm9pZClkaWRDaGFuZ2VSdWxlclN0YXRlOihCT09MKXJ1bGVyRW5hYmxlZDsKLS0gKHZv
aWQpZGlkQ2hhbmdlSW5rOihQS0luayAqKWluazsKLQotQGVuZAotCi0KLSNlbmRpZiAvLyBIQVZF
KFBFTkNJTEtJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Ry
YXdpbmdWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ1ZpZXcu
bW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiZWQxMDM3MzM5MDQ4N2RmN2NkZDU1
ZmZjYTQxOGRiNDViYmU4ZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ1ZpZXcubW0KKysr
IC9kZXYvbnVsbApAQCAtMSwyMDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZp
Zy5oIgotI2ltcG9ydCAiV0tEcmF3aW5nVmlldy5oIgotCi0jaWYgSEFWRShQRU5DSUxLSVQpCi0K
LSNpbXBvcnQgIkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmgiCi0jaW1wb3J0ICJXS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaCIKLSNpbXBvcnQgIldLRHJhd2luZ0Nvb3JkaW5hdG9yLmgiCi0jaW1w
b3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2lt
cG9ydCAiUGVuY2lsS2l0U29mdExpbmsuaCIKLQotQGludGVyZmFjZSBXS0RyYXdpbmdWaWV3ICgp
IDxQS0NhbnZhc1ZpZXdEZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdLRHJhd2lu
Z1ZpZXcgewotICAgIFJldGFpblB0cjxQS0NhbnZhc1ZpZXc+IF9wZW5jaWxWaWV3OwotCi0jaWYg
IVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQotICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNo
X3F1ZXVlX3Q+IF9yZW5kZXJRdWV1ZTsKLSAgICBSZXRhaW5QdHI8UEtJbWFnZVJlbmRlcmVyPiBf
cmVuZGVyZXI7Ci0jZW5kaWYKLQotICAgIF9fd2VhayBXS0NvbnRlbnRWaWV3ICpfY29udGVudFZp
ZXc7Ci19Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEVtYmVkZGVkVmlld0lEOihXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCllbWJlZGRlZFZpZXdJRCBjb250ZW50Vmll
dzooV0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0
V2l0aEVtYmVkZGVkVmlld0lEOmVtYmVkZGVkVmlld0lEXTsKLSAgICBpZiAoIXNlbGYpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0KLSAgICBfY29udGVudFZpZXcgPSBjb250ZW50VmlldzsKLQotICAg
IF9wZW5jaWxWaWV3ID0gYWRvcHROUyhbV2ViS2l0OjphbGxvY1BLQ2FudmFzVmlld0luc3RhbmNl
KCkgaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvXSk7Ci0KLSAgICBbX3BlbmNpbFZpZXcgc2V0Rmlu
Z2VyRHJhd2luZ0VuYWJsZWQ6Tk9dOwotICAgIFtfcGVuY2lsVmlldyBzZXRVc2VySW50ZXJhY3Rp
b25FbmFibGVkOllFU107Ci0gICAgW19wZW5jaWxWaWV3IHNldE9wYXF1ZTpOT107Ci0gICAgW19w
ZW5jaWxWaWV3IHNldERlbGVnYXRlOnNlbGZdOwotICAgIFtfcGVuY2lsVmlldyBzZXRSdWxlckhv
c3RpbmdEZWxlZ2F0ZTpfY29udGVudFZpZXcuX2RyYXdpbmdDb29yZGluYXRvcl07Ci0KLSAgICBb
c2VsZiBhZGRTdWJ2aWV3Ol9wZW5jaWxWaWV3LmdldCgpXTsKLQotICAgIHJldHVybiBzZWxmOwot
fQotCi0tICh2b2lkKWxheW91dFN1YnZpZXdzCi17Ci0gICAgaWYgKCFDR1JlY3RFcXVhbFRvUmVj
dChbX3BlbmNpbFZpZXcgZnJhbWVdLCBzZWxmLmJvdW5kcykpIHsKLSAgICAgICAgW19wZW5jaWxW
aWV3IHNldEZyYW1lOnNlbGYuYm91bmRzXTsKLQotI2lmICFQTEFURk9STShJT1NfRkFNSUxZX1NJ
TVVMQVRPUikKLSAgICAgICAgLy8gVGhlIHJlbmRlcmVyIGlzIGluc3RhbnRpYXRlZCBmb3IgYSBw
YXJ0aWN1bGFyIHNpemUgb3V0cHV0OyBpZgotICAgICAgICAvLyB0aGUgc2l6ZSBjaGFuZ2VzLCB3
ZSBuZWVkIHRvIHJlLWNyZWF0ZSB0aGUgcmVuZGVyZXIuCi0gICAgICAgIF9yZW5kZXJlciA9IG5p
bDsKLSNlbmRpZgotCi0gICAgICAgIFtzZWxmIGludmFsaWRhdGVBdHRhY2htZW50XTsKLSAgICB9
Ci19Ci0KLXN0YXRpYyBVSUltYWdlICplbXB0eUltYWdlKCkKLXsKLSAgICBVSUdyYXBoaWNzQmVn
aW5JbWFnZUNvbnRleHQoQ0dTaXplTWFrZSgxLCAxKSk7Ci0gICAgQ0dDb250ZXh0Q2xlYXJSZWN0
KFVJR3JhcGhpY3NHZXRDdXJyZW50Q29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIDEsIDEpKTsK
LSAgICBVSUltYWdlICpyZXN1bHRJbWFnZSA9IFVJR3JhcGhpY3NHZXRJbWFnZUZyb21DdXJyZW50
SW1hZ2VDb250ZXh0KCk7Ci0gICAgVUlHcmFwaGljc0VuZEltYWdlQ29udGV4dCgpOwotCi0gICAg
cmV0dXJuIHJlc3VsdEltYWdlOwotfQotCi0tIChVSUltYWdlICopcmVuZGVyZWREcmF3aW5nCi17
Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCi0gICAgLy8gUEtJbWFnZVJlbmRl
cmVyIGN1cnJlbnRseSBkb2Vzbid0IHdvcmsgaW4gdGhlIHNpbXVsYXRvci4gSW4gb3JkZXIgdG8K
LSAgICAvLyBhbGxvdyBzdHJva2VzIHRvIHBlcnNpc3QgcmVnYXJkbGVzcyAobW9zdGx5IGZvciB0
ZXN0aW5nKSwgd2UnbGwKLSAgICAvLyBzeW50aGVzaXplIGFuIGVtcHR5IDF4MSBpbWFnZS4KLSAg
ICByZXR1cm4gZW1wdHlJbWFnZSgpOwotI2Vsc2UKLSAgICBpZiAoIXNlbGYuYm91bmRzLnNpemUu
d2lkdGggfHwgIXNlbGYuYm91bmRzLnNpemUuaGVpZ2h0IHx8ICFzZWxmLndpbmRvdy5zY3JlZW4u
c2NhbGUpCi0gICAgICAgIHJldHVybiBlbXB0eUltYWdlKCk7Ci0KLSAgICBpZiAoIV9yZW5kZXJR
dWV1ZSkKLSAgICAgICAgX3JlbmRlclF1ZXVlID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1
ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV0tEcmF3aW5nVmlldy5SZW5kZXJpbmciLCBESVNQ
QVRDSF9RVUVVRV9TRVJJQUwpKTsKLQotICAgIGlmICghX3JlbmRlcmVyKQotICAgICAgICBfcmVu
ZGVyZXIgPSBhZG9wdE5TKFtXZWJLaXQ6OmFsbG9jUEtJbWFnZVJlbmRlcmVySW5zdGFuY2UoKSBp
bml0V2l0aFNpemU6c2VsZi5ib3VuZHMuc2l6ZSBzY2FsZTpzZWxmLndpbmRvdy5zY3JlZW4uc2Nh
bGUgcmVuZGVyUXVldWU6X3JlbmRlclF1ZXVlLmdldCgpXSk7Ci0KLSAgICBfX2Jsb2NrIFJldGFp
blB0cjxVSUltYWdlPiByZXN1bHRJbWFnZTsKLQotICAgIFtfcmVuZGVyZXIgcmVuZGVyRHJhd2lu
ZzpbX3BlbmNpbFZpZXcgbm9uTnVsbERyYXdpbmddIGNvbXBsZXRpb246XihVSUltYWdlICppbWFn
ZSkgewotICAgICAgICByZXN1bHRJbWFnZSA9IGltYWdlOwotICAgIH1dOwotCi0gICAgLy8gRklY
TUU6IElkZWFsbHkgd2Ugd291bGQgbm90IHN5bmNocm9ub3VzbHkgd2FpdCBmb3IgdGhpcyByZW5k
ZXJpbmcsCi0gICAgLy8gYnV0IE5TRmlsZVdyYXBwZXIgcmVxdWlyZXMgZGF0YSBzeW5jaHJvbm91
c2x5LCBhbmQgb3VyIGNsaWVudHMgZXhwZWN0Ci0gICAgLy8gYW4gTlNGaWxlV3JhcHBlciB0byBi
ZSBhdmFpbGFibGUgc3luY2hyb25vdXNseS4KLSAgICBkaXNwYXRjaF9zeW5jKF9yZW5kZXJRdWV1
ZS5nZXQoKSwgXnsgfSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0SW1hZ2UuYXV0b3JlbGVhc2UoKTsK
LSNlbmRpZgotfQotCi0tIChOU0RhdGEgKilQTkdSZXByZXNlbnRhdGlvbgotewotICAgIFJldGFp
blB0cjxVSUltYWdlPiBpbWFnZSA9IFtzZWxmIHJlbmRlcmVkRHJhd2luZ107Ci0gICAgUmV0YWlu
UHRyPE5TTXV0YWJsZURhdGE+IFBOR0RhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxv
Y10gaW5pdF0pOwotICAgIFJldGFpblB0cjxDR0ltYWdlRGVzdGluYXRpb25SZWY+IGltYWdlRGVz
dGluYXRpb24gPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhKChfX2Jy
aWRnZSBDRk11dGFibGVEYXRhUmVmKVBOR0RhdGEuZ2V0KCksIGtVVFR5cGVQTkcsIDEsIG5pbCkp
OwotICAgIE5TU3RyaW5nICpiYXNlNjREcmF3aW5nID0gW1tbX3BlbmNpbFZpZXcgbm9uTnVsbERy
YXdpbmddIHNlcmlhbGl6ZV0gYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBdOwotICAg
IE5TRGljdGlvbmFyeSAqcHJvcGVydGllcyA9IG5pbDsKLSAgICBpZiAoYmFzZTY0RHJhd2luZykg
ewotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHB1dCB0aGlzIHNvbWV3aGVyZSBsZXNzIHVz
ZXItZmFjaW5nIHRoYW4gdGhlIEVYSUYgVXNlciBDb21tZW50IGZpZWxkLgotICAgICAgICBwcm9w
ZXJ0aWVzID0gQHsKLSAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDR0ltYWdlUHJv
cGVydHlFeGlmRGljdGlvbmFyeSA6IEB7Ci0gICAgICAgICAgICAgICAgKF9fYnJpZGdlIE5TU3Ry
aW5nICopa0NHSW1hZ2VQcm9wZXJ0eUV4aWZVc2VyQ29tbWVudCA6IGJhc2U2NERyYXdpbmcKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICB9Ci0gICAgQ0dJbWFnZURlc3RpbmF0aW9uU2V0
UHJvcGVydGllcyhpbWFnZURlc3RpbmF0aW9uLmdldCgpLCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5
UmVmKXByb3BlcnRpZXMpOwotICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGltYWdlRGVz
dGluYXRpb24uZ2V0KCksIFtpbWFnZSBDR0ltYWdlXSwgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJl
Zilwcm9wZXJ0aWVzKTsKLSAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShpbWFnZURlc3Rp
bmF0aW9uLmdldCgpKTsKLQotICAgIHJldHVybiBQTkdEYXRhLmF1dG9yZWxlYXNlKCk7Ci19Ci0K
LS0gKHZvaWQpbG9hZERyYXdpbmdGcm9tUE5HUmVwcmVzZW50YXRpb246KE5TRGF0YSAqKVBOR0Rh
dGEKLXsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVNvdXJjZVJlZj4gaW1hZ2VTb3VyY2UgPSBhZG9w
dENGKENHSW1hZ2VTb3VyY2VDcmVhdGVXaXRoRGF0YSgoX19icmlkZ2UgQ0ZEYXRhUmVmKVBOR0Rh
dGEsIG51bGxwdHIpKTsKLSAgICBpZiAoIWltYWdlU291cmNlKQotICAgICAgICByZXR1cm47Ci0g
ICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gcHJvcGVydGllcyA9IGFkb3B0TlMoKF9fYnJpZGdl
IE5TRGljdGlvbmFyeSAqKUNHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgoaW1hZ2VT
b3VyY2UuZ2V0KCksIDAsIG5pbCkpOwotICAgIE5TU3RyaW5nICpiYXNlNjREcmF3aW5nID0gW1tw
cm9wZXJ0aWVzIG9iamVjdEZvcktleTooTlNTdHJpbmcgKilrQ0dJbWFnZVByb3BlcnR5RXhpZkRp
Y3Rpb25hcnldIG9iamVjdEZvcktleTooTlNTdHJpbmcgKilrQ0dJbWFnZVByb3BlcnR5RXhpZlVz
ZXJDb21tZW50XTsKLSAgICBpZiAoIWJhc2U2NERyYXdpbmcpCi0gICAgICAgIHJldHVybjsKLSAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBkcmF3aW5nRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2Nd
IGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzpiYXNlNjREcmF3aW5nIG9wdGlvbnM6MF0pOwot
ICAgIFJldGFpblB0cjxQS0RyYXdpbmc+IGRyYXdpbmcgPSBhZG9wdE5TKFtXZWJLaXQ6OmFsbG9j
UEtEcmF3aW5nSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZHJhd2luZ0RhdGEuZ2V0KCkgZXJyb3I6
bmlsXSk7Ci0gICAgW19wZW5jaWxWaWV3IHNldE5vbk51bGxEcmF3aW5nOmRyYXdpbmcuZ2V0KCld
OwotfQotCi0tICh2b2lkKWNhbnZhc1ZpZXdEcmF3aW5nRGlkQ2hhbmdlOihQS0NhbnZhc1ZpZXcg
KiljYW52YXNWaWV3Ci17Ci0gICAgW3NlbGYgaW52YWxpZGF0ZUF0dGFjaG1lbnRdOwotfQotCi0t
ICh2b2lkKV9jYW52YXNWaWV3V2lsbEJlZ2luRHJhd2luZzooUEtDYW52YXNWaWV3ICopY2FudmFz
VmlldwotewotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBbX3BlbmNp
bFZpZXcgc2V0SW5rOl9jb250ZW50Vmlldy5fZHJhd2luZ0Nvb3JkaW5hdG9yLmN1cnJlbnRJbmtd
OwotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi19Ci0KLS0gKHZvaWQpaW52YWxp
ZGF0ZUF0dGFjaG1lbnQKLXsKLSAgICBpZiAoIV9jb250ZW50Vmlldy5wYWdlKQotICAgICAgICBy
ZXR1cm47Ci0gICAgYXV0byYgcGFnZSA9ICpfY29udGVudFZpZXcucGFnZTsKLQotICAgIHBhZ2Uu
ZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIoKS5pbnZhbGlkYXRlQXR0YWNobWVudEZvckVkaXRhYmxl
SW1hZ2Uoc2VsZi5lbWJlZGRlZFZpZXdJRCk7Ci19Ci0KLS0gKHZvaWQpZGlkQ2hhbmdlUnVsZXJT
dGF0ZTooQk9PTClydWxlckVuYWJsZWQKLXsKLSAgICBbX3BlbmNpbFZpZXcgc2V0UnVsZXJFbmFi
bGVkOnJ1bGVyRW5hYmxlZF07Ci19Ci0KLS0gKHZvaWQpZGlkQ2hhbmdlSW5rOihQS0luayAqKWlu
awotewotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBbX3BlbmNpbFZp
ZXcgc2V0SW5rOmlua107Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLX0KLQot
QGVuZAotCi0jZW5kaWYgLy8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA0NWMwYmQ0OTU3MGE1ZWUzYmUxYjg5
M2VjYWVhY2I4MzVkZDliMjVlLi4zN2Y1Y2FiM2JiNjk1ZmU1NTEzYjg1ZDZkMTg0NzMwMTE0NWMy
NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KQEAgLTYyNSwxMSArNjI1LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVR3b0Zpbmdl
clRhcEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBPcHQKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KHBvaW50LCBtb2Rp
ZmllcnMsIHJlcXVlc3RJRCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlU3R5bHVz
U2luZ2xlVGFwQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQ2NF90
IHJlcXVlc3RJRCkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVTdHlsdXNT
aW5nbGVUYXBBdFBvaW50KHBvaW50LCByZXF1ZXN0SUQpKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJv
eHk6OnNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IGZyb20sIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50IHRvLCBHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgR2VzdHVy
ZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgT3B0aW9u
U2V0PFNlbGVjdGlvbkZsYWdzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbikKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb2N1c2VkRm9ybUNvbnRy
b2xWaWV3Lm1tCmluZGV4IDQyMTExZDE4NTRkNzMzMTI4YTY3YzE3NmFlODUwMWRiMmI5MzQ5ZjEu
LjM4MzlmMDg5ZWQ5NTMzNjNiMWY0NGRkMWUzNmFlZjIzOTNmYjZhNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9jdXNlZEZvcm1D
b250cm9sVmlldy5tbQpAQCAtMzAsNiArMzAsNyBAQAogCiBhc20oIi5saW5rZXJfb3B0aW9uIFwi
LWZyYW1ld29ya1wiLCBcIlBlcHBlclVJQ29yZVwiIik7CiAKKyNpbXBvcnQgIlBlcHBlclVJQ29y
ZVNQSS5oIgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYkNvcmVDQUxheWVyRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVu
L1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCmlu
ZGV4IDY4OTk0M2I0ZjZmODNhYTM1MjMyZmZjZmIxMjRmYjg4YTQxNTExMTIuLjkyYTQyYjRjYTU2
YjM3YzE4NDJhOGNiMTFkYTVlY2EwZDJhMjdlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQpAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAiV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5oIgogCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgor
I2ltcG9ydCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJXS0Z1bGxT
Y3JlZW5WaWV3Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lmgi
CiAjaW1wb3J0ICJXS1dlYlZpZXcuaCIKQEAgLTQ0LDYgKzQ1LDggQEAKICNpbXBvcnQgPFdlYkNv
cmUvR2VvbWV0cnlVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW50UmVjdC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1ZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1ZpZGVvRnVsbHNj
cmVlbk1vZGVsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW1w
b3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9O
U1N0cmluZ1NQSS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNZW51UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5tbQppbmRleCBiZjI5MmRiZWQ5ZWYzOGRkNTNjZDg5NjNkYWJh
ODQ3NWM3MWRlZjU4Li41YWQ4ODdiMTNmYjQxMjI0MzgzZTQwMDE0YjQ4OTEwY2JlMmU3ZGNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94
eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQ
cm94eU1hYy5tbQpAQCAtNDMsNiArNDMsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNNZW51
U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1NoYXJpbmdTZXJ2aWNlUGlja2VyU1BJLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1dpbmRvd1NQSS5oPgorI2ltcG9ydCA8d3RmL0Jsb2Nr
UHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBpbnRlcmZhY2UgV0tVc2VyRGF0
YVdyYXBwZXIgOiBOU09iamVjdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAxMjM5NmY1ZmEwZDJhNzY3ZTI1MDgyY2U2YWUzNjg3ZTIx
YzVlOGI0Li4wMzZkYjZhY2Y4MGY0MWQ5YzQ0NzI2NDY2OTIzMDA3OTU2MTgxYzdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYzNywx
MSArNjM3LDkgQEAKIAkJMkQ1NEMzMTkyMTJGM0IzMzAwNDlDMTc0IC8qIFVuaWZpZWRTb3VyY2U2
Mi1tbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
NTRDMzA1MjEyRjNCMzMwMDQ5QzE3NCAvKiBVbmlmaWVkU291cmNlNjItbW0ubW0gKi87IH07CiAJ
CTJENTRDMzFBMjEyRjNCMzMwMDQ5QzE3NCAvKiBVbmlmaWVkU291cmNlNjEtbW0ubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDU0QzMwNjIxMkYzQjMz
MDA0OUMxNzQgLyogVW5pZmllZFNvdXJjZTYxLW1tLm1tICovOyB9OwogCQkyRDU0QzMxQjIxMkY0
REE2MDA0OUMxNzQgLyogUHJvY2Vzc0xhdW5jaGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRTExN0Y1MTFEQkIzMDkwMDk4MTYxNSAvKiBQcm9j
ZXNzTGF1bmNoZXIuY3BwICovOyB9OwotCQkyRDU4NzVCRjIxOUI1MzE1MDA3MEI5QUEgLyogRWRp
dGFibGVJbWFnZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJENTg3NUJEMjE5QjUzMTUwMDcwQjlBQSAvKiBFZGl0YWJsZUltYWdlQ29u
dHJvbGxlci5oICovOyB9OwogCQkyRDVDOUQwNjE5QzgxRDhGMDBCM0M1QzEgLyogV2ViUGFnZU92
ZXJsYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
NUM5RDA0MTlDODFEOEYwMEIzQzVDMSAvKiBXZWJQYWdlT3ZlcmxheS5oICovOyB9OwogCQkyRDZB
QjU0MTE5MkIxQzRBMDAzQTlGRDEgLyogV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZBQjUzRjE5MkIxQzRB
MDAzQTlGRDEgLyogV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLmggKi87IH07CiAJCTJENkIzNzFC
MThBOTY3QUQwMDQyQUU4MCAvKiBfV0tUaHVtYm5haWxWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZCMzcxOTE4QTk2N0FEMDA0MkFFODAgLyog
X1dLVGh1bWJuYWlsVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTJENkJGMTI0MjFBRjU2RTEwMDFFNzlDOSAvKiBQZW5jaWxLaXRTb2Z0TGlu
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2QkYx
MjIyMUFGNTZFMTAwMUU3OUM5IC8qIFBlbmNpbEtpdFNvZnRMaW5rLmggKi87IH07CiAJCTJENkNE
MTE5MTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2Q0QxMTcxODkwNThBNTAwRTVBNEEw
IC8qIFZpZXdTbmFwc2hvdFN0b3JlLmggKi87IH07CiAJCTJENzJBMUZBMjEyQkY0NkUwMDUxN0Ey
MCAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjE2QURCMTY0ODU5ODQwMDI5MEQ2MiAvKiBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSAqLzsgfTsKIAkJMkQ3MzAzNzkxQTdDMkI3NTAwRjhG
NDg3IC8qIFdLUGFnZU5hdmlnYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENzMwMzc4MUE3QzJCNzUwMEY4RjQ4NyAvKiBXS1BhZ2VO
YXZpZ2F0aW9uQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTc0Myw4ICs3NDEsNiBAQAogCQkyREI5NDI5OTIzNEU3QTdGMDBFNzc2QUQg
LyogV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyREI5NDI5NzIzNEU3QTdGMDBFNzc2QUQgLyogV0tNb3VzZUdl
c3R1cmVSZWNvZ25pemVyLmggKi87IH07CiAJCTJEQjk2MDUzMjM5ODg2QzEwMDEwMjc5MSAvKiBj
b20uYXBwbGUuV2ViS2l0LkdQVS5zYiBpbiBDb3B5RmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkRCOTYwNTIyMzk4ODZCOTAwMTAyNzkxIC8qIGNvbS5hcHBsZS5XZWJL
aXQuR1BVLnNiICovOyB9OwogCQkyREMxODEyNDVCNTQ5MzQzQkM5ODE2NEMgLyogU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyREMxODU1RURCRkI4NTBCQTBCNkQwNkQgLyogU2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZS5jcHAgKi87IH07Ci0JCTJEQzE4RkFEMjE4OTEwNDkwMDI1QTg4RCAvKiBXS0RyYXdp
bmdWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
REMxOEZBQjIxODkxMDQ4MDAyNUE4OEQgLyogV0tEcmF3aW5nVmlldy5oICovOyB9OwotCQkyREMx
OEZCMDIxODkxMjY0MDAyNUE4OEQgLyogUGVuY2lsS2l0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREMxOEZBRjIxODkxMjY0MDAyNUE4OEQgLyog
UGVuY2lsS2l0U1BJLmggKi87IH07CiAJCTJEQzE4RkIzMjE4QTZFOUUwMDI1QTg4RCAvKiBSZW1v
dGVMYXllclRyZWVWaWV3cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkRDMThGQjEyMThBNkU5RTAwMjVBODhEIC8qIFJlbW90ZUxheWVyVHJlZVZpZXdz
LmggKi87IH07CiAJCTJEQzE4RkI0MjE4QTZFOUUwMDI1QTg4RCAvKiBSZW1vdGVMYXllclRyZWVW
aWV3cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
QzE4RkIyMjE4QTZFOUUwMDI1QTg4RCAvKiBSZW1vdGVMYXllclRyZWVWaWV3cy5tbSAqLzsgfTsK
IAkJMkRDMThGRUJGMzM3Qjk2NzFDODhFM0NEIC8qIFNoYXJlZEJ1ZmZlckNvcHkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRDMTgwMDFEOTBEREQx
NUZDNjk5MUE5IC8qIFNoYXJlZEJ1ZmZlckNvcHkuY3BwICovOyB9OwpAQCAtMjg0Myw4ICsyODM5
LDYgQEAKIAkJMkQxQjVENUMxODU4NjlDODAwNkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxl
ck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFZpZXdHZXN0dXJl
Q29udHJvbGxlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTJEMUU4MjIxMjE2RkZGNTAwMEExNTI2NSAvKiBXS1dlYkV2ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLV2ViRXZlbnQuaDsgcGF0aCA9IGlvcy9XS1dl
YkV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMUU4MjIyMjE2RkZGNTEw
MEExNTI2NSAvKiBXS1dlYkV2ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gV0tXZWJFdmVudC5tbTsgcGF0aCA9IGlvcy9XS1dlYkV2ZW50Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkyRDIxQTQ1ODIxREVENDlCMDAyNDg3RTcgLyogV0tEcmF3
aW5nQ29vcmRpbmF0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0RyYXdpbmdDb29yZGlu
YXRvci5tbTsgcGF0aCA9IGlvcy9XS0RyYXdpbmdDb29yZGluYXRvci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMkQyMUE0NTkyMURFRDQ5QjAwMjQ4N0U3IC8qIFdLRHJhd2luZ0Nv
b3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRHJhd2luZ0Nvb3JkaW5hdG9yLmg7IHBhdGgg
PSBpb3MvV0tEcmF3aW5nQ29vcmRpbmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkQyOEE0OTUxQUY5NjVBMTAwRjE5MEM5IC8qIFdLVmlld0xheW91dFN0cmF0ZWd5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVmlld0xheW91dFN0cmF0ZWd5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMjhBNDk2MUFGOTY1QTEwMEYxOTBDOSAvKiBX
S1ZpZXdMYXlvdXRTdHJhdGVneS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdLVmlld0xheW91dFN0cmF0ZWd5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDI4RjNFMDE4ODVDQ0MxMDA0QjlFQUUgLyogV2ViQ2hyb21lQ2xpZW50SU9TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViQ2hyb21lQ2xpZW50SU9T
Lm1tOyBwYXRoID0gaW9zL1dlYkNocm9tZUNsaWVudElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI5MDAsMTcgKzI4OTQsMTIgQEAKIAkJMkQ1NEMzMDQyMTJGM0IzMzAwNDlD
MTc0IC8qIFVuaWZpZWRTb3VyY2U3MS1tbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9ICJVbmlm
aWVkU291cmNlNzEtbW0ubW0iOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL1dlYktpdDIvdW5pZmll
ZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U3MS1tbS5tbSI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTJENTRDMzA1MjEyRjNCMzMwMDQ5QzE3NCAvKiBVbmlmaWVkU291cmNl
NjItbW0ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSAiVW5pZmllZFNvdXJjZTYyLW1tLm1tIjsg
cGF0aCA9ICJEZXJpdmVkU291cmNlcy9XZWJLaXQyL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291
cmNlNjItbW0ubW0iOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkyRDU0
QzMwNjIxMkYzQjMzMDA0OUMxNzQgLyogVW5pZmllZFNvdXJjZTYxLW1tLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gIlVuaWZpZWRTb3VyY2U2MS1tbS5tbSI7IHBhdGggPSAiRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTYxLW1tLm1tIjsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJMkQ1ODc1QkIyMTlCMjhBNTAwNzBCOUFB
IC8qIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
bmFtZSA9IEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1lc3NhZ2VzLmluOyBwYXRoID0gaW9zL0Vk
aXRhYmxlSW1hZ2VDb250cm9sbGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkyRDU4NzVCRDIxOUI1MzE1MDA3MEI5QUEgLyogRWRpdGFibGVJbWFnZUNvbnRyb2xs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRWRpdGFibGVJbWFnZUNvbnRy
b2xsZXIuaDsgcGF0aCA9IGlvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkyRDU4NzVCRTIxOUI1MzE1MDA3MEI5QUEgLyogRWRpdGFibGVJ
bWFnZUNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBFZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbTsgcGF0aCA9IGlvcy9FZGl0YWJsZUltYWdlQ29u
dHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ1QzlEMDMxOUM4MUQ4
RjAwQjNDNUMxIC8qIFdlYlBhZ2VPdmVybGF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYlBhZ2VPdmVybGF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkQ1QzlEMDQxOUM4MUQ4RjAwQjNDNUMxIC8qIFdlYlBhZ2VPdmVybGF5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VPdmVybGF5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJENkFCNTNGMTkyQjFDNEEwMDNBOUZEMSAvKiBXS1BERlBhZ2VO
dW1iZXJJbmRpY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tQREZQ
YWdlTnVtYmVySW5kaWNhdG9yLmg7IHBhdGggPSBpb3MvV0tQREZQYWdlTnVtYmVySW5kaWNhdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENkFCNTQwMTkyQjFDNEEwMDNBOUZE
MSAvKiBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IubW07IHBhdGggPSBpb3Mv
V0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRDZCMzcxOTE4QTk2N0FEMDA0MkFFODAgLyogX1dLVGh1bWJuYWlsVmlldy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tUaHVtYm5haWxWaWV3Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJENkIzNzFBMThBOTY3QUQwMDQyQUU4MCAvKiBfV0tUaHVtYm5h
aWxWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLVGh1
bWJuYWlsVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkQ2QkYxMjEyMUFG
NTZFMTAwMUU3OUM5IC8qIFBlbmNpbEtpdFNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gUGVuY2lsS2l0U29mdExpbmsubW07IHBhdGggPSBpb3MvUGVu
Y2lsS2l0U29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJENkJGMTIy
MjFBRjU2RTEwMDFFNzlDOSAvKiBQZW5jaWxLaXRTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBQZW5jaWxLaXRTb2Z0TGluay5oOyBwYXRoID0gaW9zL1BlbmNpbEtp
dFNvZnRMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENkNEMTE3MTg5MDU4
QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWaWV3U25hcHNob3RTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDZDRDExODE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmVNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWV3U25hcHNob3RTdG9y
ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2Q0QxMUExODkwNThBNTAw
RTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFZpZXdTbmFwc2hvdFN0b3JlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTMxNjAsOSArMzE0OSw2IEBACiAJCTJEQzE4MDAxRDkwREREMTVGQzY5OTFBOSAv
KiBTaGFyZWRCdWZmZXJDb3B5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNoYXJlZEJ1ZmZlckNvcHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
REMxODU1RURCRkI4NTBCQTBCNkQwNkQgLyogU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRDMTg4MUFDQkNBQjVE
NTdDNUM2RUYwIC8qIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkyREMxOEZBQjIxODkxMDQ4MDAyNUE4OEQgLyogV0tEcmF3aW5n
Vmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0RyYXdpbmdWaWV3Lmg7
IHBhdGggPSBpb3MvV0tEcmF3aW5nVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkyREMxOEZBQzIxODkxMDQ4MDAyNUE4OEQgLyogV0tEcmF3aW5nVmlldy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLRHJhd2luZ1ZpZXcubW07IHBhdGggPSBp
b3MvV0tEcmF3aW5nVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRDMThG
QUYyMTg5MTI2NDAwMjVBODhEIC8qIFBlbmNpbEtpdFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQZW5jaWxLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkRDMThGQjEyMThBNkU5RTAwMjVBODhEIC8qIFJlbW90ZUxheWVyVHJlZVZpZXdzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxheWVyVHJlZVZpZXdzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQzE4RkIyMjE4QTZFOUUwMDI1QTg4RCAvKiBS
ZW1vdGVMYXllclRyZWVWaWV3cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFJlbW90ZUxheWVyVHJlZVZpZXdzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyREM0Q0Y3QTFEMkRFMjRCMDBFQ0NDOTQgLyogV2ViUGFnZUNvY29hLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUGFnZUNvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzAxNCwxNyArNzAwMCwxMiBAQAogCQkJCTFBRDRDMTkw
MUIzOUYzMzIwMEFCQzI4RSAvKiBBcHBsaWNhdGlvblN0YXRlVHJhY2tlci5tbSAqLywKIAkJCQlG
NDk2QTQyRjFGNThBMjcyMDA0QzE3NTcgLyogRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmggKi8s
CiAJCQkJRjQ5NkE0MzAxRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0
ZS5tbSAqLywKLQkJCQkyRDU4NzVCRDIxOUI1MzE1MDA3MEI5QUEgLyogRWRpdGFibGVJbWFnZUNv
bnRyb2xsZXIuaCAqLywKLQkJCQkyRDU4NzVCQjIxOUIyOEE1MDA3MEI5QUEgLyogRWRpdGFibGVJ
bWFnZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4gKi8sCi0JCQkJMkQ1ODc1QkUyMTlCNTMxNTAwNzBC
OUFBIC8qIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tICovLAogCQkJCUNEQ0RDOTlCMjQ4RkU4
REEwMEE2OTUyMiAvKiBFbmRvd21lbnRTdGF0ZVRyYWNrZXIuaCAqLywKIAkJCQlDRENEQzk5QzI0
OEZFOERBMDBBNjk1MjIgLyogRW5kb3dtZW50U3RhdGVUcmFja2VyLm1tICovLAogCQkJCTJERDQ1
QURDMUU1Rjg5NzIwMDZDMzU1RiAvKiBJbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5oICovLAogCQkJ
CTJERDQ1QUREMUU1Rjg5NzIwMDZDMzU1RiAvKiBJbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5tbSAq
LywKIAkJCQkwRkNCNEUzNjE4QkJFMDQ0MDAwRkNGQzkgLyogUGFnZUNsaWVudEltcGxJT1MuaCAq
LywKIAkJCQkwRkNCNEUzNzE4QkJFMDQ0MDAwRkNGQzkgLyogUGFnZUNsaWVudEltcGxJT1MubW0g
Ki8sCi0JCQkJMkQ2QkYxMjIyMUFGNTZFMTAwMUU3OUM5IC8qIFBlbmNpbEtpdFNvZnRMaW5rLmgg
Ki8sCi0JCQkJMkQ2QkYxMjEyMUFGNTZFMTAwMUU3OUM5IC8qIFBlbmNpbEtpdFNvZnRMaW5rLm1t
ICovLAogCQkJCTg2Rjk1MzYyMThGRjU1MEIwMDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9uSU9T
Lm1tICovLAogCQkJCTUxRTZDMTVGMUYyOTM1NTEwMEZEMzQzNyAvKiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2VJT1MubW0gKi8sCiAJCQkJMkRBRjA2RDQxOEJEMUE0NzAw
ODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCAqLywKQEAgLTcwNTEsMTAg
KzcwMzIsNiBAQAogCQkJCTBGQ0I0RTZCMThCQkYyNkEwMDBGQ0ZDOSAvKiBXS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0gKi8sCiAJCQkJRjQ0ODE1NjIyMzg3ODIwMDAwOTgyNjU3IC8qIFdLRGVm
ZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIuaCAqLywKIAkJCQlGNDQ4MTU2MzIzODc4MjAwMDA5ODI2
NTcgLyogV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplci5tbSAqLywKLQkJCQkyRDIxQTQ1OTIx
REVENDlCMDAyNDg3RTcgLyogV0tEcmF3aW5nQ29vcmRpbmF0b3IuaCAqLywKLQkJCQkyRDIxQTQ1
ODIxREVENDlCMDAyNDg3RTcgLyogV0tEcmF3aW5nQ29vcmRpbmF0b3IubW0gKi8sCi0JCQkJMkRD
MThGQUIyMTg5MTA0ODAwMjVBODhEIC8qIFdLRHJhd2luZ1ZpZXcuaCAqLywKLQkJCQkyREMxOEZB
QzIxODkxMDQ4MDAyNUE4OEQgLyogV0tEcmF3aW5nVmlldy5tbSAqLywKIAkJCQkwRkNCNEUzRjE4
QkJFMDQ0MDAwRkNGQzkgLyogV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLmggKi8sCiAJCQkJMEZD
QjRFNDAxOEJCRTA0NDAwMEZDRkM5IC8qIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSAqLywK
IAkJCQkwRkNCNEU0MTE4QkJFMDQ0MDAwRkNGQzkgLyogV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
T2JqQ1NlY3VyaXR5T3JpZ2luLm1tICovLApAQCAtMTA0NDIsNyArMTA0MTksNiBAQAogCQkJCTJE
NEFGMDg4MjA0NEMzQzQwMDZDODgxNyAvKiBGcm9udEJvYXJkU2VydmljZXNTUEkuaCAqLywKIAkJ
CQlBMTNCM0RBMTIwN0YzOURFMDA5MEM1OEQgLyogTW9iaWxlV2lGaVNQSS5oICovLAogCQkJCTMx
NzhBRjk3MjBFMkE3RjgwMDc0REU5NCAvKiBQREZLaXRTUEkuaCAqLywKLQkJCQkyREMxOEZBRjIx
ODkxMjY0MDAyNUE4OEQgLyogUGVuY2lsS2l0U1BJLmggKi8sCiAJCQkJNDZGMzhFOEIyNDE2RTY2
RDAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi8sCiAJCQkJQ0UxQTBCRDAx
QTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oICovLAogCQkJCUNFMUEwQkQxMUE0OEU2QzYwMDU0
RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCAqLywKQEAgLTEwODQ1LDcgKzEwODIxLDYgQEAKIAkJCQlC
QzI2NTIxNzExODI2MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE2NDIzMDkxMkREMDlFQjAwQ0FBRTJDIC8qIERyYXdpbmdBcmVhUHJveHlNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBNjczMUEyMEM3NTRCMTAwM0NCNDAxIC8qIER5
bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTJENTg3NUJGMjE5
QjUzMTUwMDcwQjlBQSAvKiBFZGl0YWJsZUltYWdlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTEwNUZFNTQxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFBNDFBQjUxMkMwMkVDNDAwMkJFNjdCIC8qIEVkaXRvclN0YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzAzMkRBODEwRjQzN0QxMDA1OEMxNUEgLyogRW5jb2Rlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMTAzMyw4ICsxMTAwOCw2IEBACiAJCQkJQTE3OThCNDMyMjJEOThE
RjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUMxRTEyM0JBMjBBMTE1NzMwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTE5NTgyRDMxNTNDQkZENzAwQjYwODc1IC8qIFBERktpdElt
cG9ydHMuaCBpbiBIZWFkZXJzICovLAotCQkJCTJENkJGMTI0MjFBRjU2RTEwMDFFNzlDOSAvKiBQ
ZW5jaWxLaXRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRDMThGQjAyMTg5MTI2NDAw
MjVBODhEIC8qIFBlbmNpbEtpdFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMyOThEQTAxQzNE
RjAyMTAwNDcwQUZFIC8qIFBlbmRpbmdEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMy
RUQxOEMxRTJGRTE1NzAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdBRkJEMzZGMjFFNTQ2RjgwMDVEQkFDQiAvKiBQZXJzaXN0
ZW5jeVV0aWxzLmggaW4gSGVhZGVycyAqLywKQEAgLTExNTk2LDcgKzExNTY5LDYgQEAKIAkJCQkx
QUI3RDc4RDEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNjM3MjgxQTIyMUFEQzc0NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQcm9ncmVzcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRjQwOUJBMTgxRTZFNjRCQzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQkyREMxOEZBRDIxODkxMDQ5MDAyNUE4OEQg
LyogV0tEcmF3aW5nVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVDRjY2Q0UyMUQ2Qjc3RTAw
OUU1QzNGIC8qIFdLRWRpdENvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjQ1OTJGMTk0
NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0ZENTQ4QzEz
MkQ4MjY4MDA1NUQ4MTYgLyogV0tFcnJvckNGLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAppbmRleCBmMGU4ZTRlM2M5MTBiNzUwZTAzMjY0ZGY4OTUyZjM2Mjc5MmVhYWUyLi45YmZi
YzgyZTE5YWNjNGE5YzI0ZDNjNzk3ODI5YWQyYWUxNDZkOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CkBAIC0xODQsMTAgKzE4NCw2IEBAIHByaXZhdGU6CiAKICAgICBTZWNvbmRzIGV2ZW50VGhyb3R0
bGluZ0RlbGF5KCkgZmluYWw7CiAKLSAgICB2b2lkIGFzc29jaWF0ZUVkaXRhYmxlSW1hZ2VXaXRo
QXR0YWNobWVudChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCwgY29uc3Qg
U3RyaW5nJiBhdHRhY2htZW50SUQpIGZpbmFsOwotICAgIHZvaWQgZGlkQ3JlYXRlRWRpdGFibGVJ
bWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCkgZmluYWw7Ci0gICAg
dm9pZCBkaWREZXN0cm95RWRpdGFibGVJbWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJl
ZGRlZFZpZXdJRCkgZmluYWw7Ci0KICAgICBib29sIHNob3VsZFVzZU1vdXNlRXZlbnRGb3JTZWxl
Y3Rpb24oY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50JikgZmluYWw7CiAKICAgICBi
b29sIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQm
LCBjb25zdCBXZWJDb3JlOjpFdmVudCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJvbWVDbGllbnRJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNsaWVu
dElPUy5tbQppbmRleCBmZWZhNWE2ZTc5MzVmNWMzNWJlYWJlZTU4N2YzNmZhNjNjNjdmNjRkLi40
MWU4MWMyYmFjZTc2YmY2OThiYTY0ODY1Y2YyMDcyMjgwYzlmYjlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNsaWVudElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YkNocm9tZUNsaWVudElPUy5tbQpAQCAtMjksNyArMjksNiBAQAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKICNpbXBvcnQgIkRyYXdpbmdBcmVhLmgiCi0jaW1wb3J0ICJFZGl0YWJsZUltYWdl
Q29udHJvbGxlck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbi5oIgogI2ltcG9ydCAiSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaCIKICNp
bXBvcnQgIlVJS2l0U1BJLmgiCkBAIC0xNjEsMzQgKzE2MCw2IEBAIFJlZlB0cjxJY29uPiBXZWJD
aHJvbWVDbGllbnQ6OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmls
ZW5hbWVzCiAgICAgcmV0dXJuIEljb246OmNyZWF0ZUljb25Gb3JJbWFnZShpY29uRm9yRmlsZSh1
cmwpLmdldCgpLkNHSW1hZ2UpOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6YXNzb2NpYXRl
RWRpdGFibGVJbWFnZVdpdGhBdHRhY2htZW50KEdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lE
IGVtYmVkZGVkVmlld0lELCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCkKLXsKLSNpZiBIQVZF
KFBFTkNJTEtJVCkKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6RWRpdGFibGVJbWFnZUNvbnRy
b2xsZXI6OkFzc29jaWF0ZVdpdGhBdHRhY2htZW50KGVtYmVkZGVkVmlld0lELCBhdHRhY2htZW50
SUQpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGVtYmVkZGVkVmlld0lEKTsKLSAgICBVTlVT
RURfUEFSQU0oYXR0YWNobWVudElEKTsKLSNlbmRpZgotfQotCi12b2lkIFdlYkNocm9tZUNsaWVu
dDo6ZGlkQ3JlYXRlRWRpdGFibGVJbWFnZShHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBl
bWJlZGRlZFZpZXdJRCkKLXsKLSNpZiBIQVZFKFBFTkNJTEtJVCkKLSAgICBtX3BhZ2Uuc2VuZChN
ZXNzYWdlczo6RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6OkRpZENyZWF0ZUVkaXRhYmxlSW1hZ2Uo
ZW1iZWRkZWRWaWV3SUQpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGVtYmVkZGVkVmlld0lE
KTsKLSNlbmRpZgotfQotCi12b2lkIFdlYkNocm9tZUNsaWVudDo6ZGlkRGVzdHJveUVkaXRhYmxl
SW1hZ2UoR3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQpCi17Ci0j
aWYgSEFWRShQRU5DSUxLSVQpCi0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OkVkaXRhYmxlSW1h
Z2VDb250cm9sbGVyOjpEaWREZXN0cm95RWRpdGFibGVJbWFnZShlbWJlZGRlZFZpZXdJRCkpOwot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZW1iZWRkZWRWaWV3SUQpOwotI2VuZGlmCi19Ci0KIGJv
b2wgV2ViQ2hyb21lQ2xpZW50OjpzaG91bGRVc2VNb3VzZUV2ZW50Rm9yU2VsZWN0aW9uKGNvbnN0
IFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiB7CiAgICAgLy8gSW4gaVBhZE9T
IGFuZCBtYWNDYXRhbHlzdCwgZGVzcGl0ZSBnZXR0aW5nIG1vdXNlIGV2ZW50cywgd2Ugc3RpbGwg
d2FudCBVSVRleHRJbnRlcmFjdGlvbiBhbmQgZnJpZW5kcyB0byBvd24gc2VsZWN0aW9uIGdlc3R1
cmVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvR3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcApp
bmRleCA4YzIxZDE1M2MyZTg1MTU5YWM1ZGM2M2E1MzlmM2JkMGM0YjlhMDljLi45NGFlOGZkZjQ1
MzgyZGI0YTNiMDQ2MDdhZjY2MGFjMmJiNjFjZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvR3JhcGhpY3NMYXllckNBUmVtb3Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvR3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcApAQCAtNjcsMTEgKzY3LDYgQEAgUmVmPFBsYXRm
b3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBUmVtb3RlOjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIo
UGxhdGZvcm1MYXllcioKICAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUo
cGxhdGZvcm1MYXllciwgb3duZXIsICptX2NvbnRleHQpOwogfQogCi1SZWY8UGxhdGZvcm1DQUxh
eWVyPiBHcmFwaGljc0xheWVyQ0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllckZvckVtYmVk
ZGVkVmlldyhQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBsYXllclR5cGUsIEdyYXBoaWNzTGF5
ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lELCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQq
IG93bmVyKQotewotICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZUZvckVt
YmVkZGVkVmlldyhsYXllclR5cGUsIGVtYmVkZGVkVmlld0lELCBvd25lciwgKm1fY29udGV4dCk7
Ci19Ci0KIFJlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0FSZW1vdGU6OmNy
ZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlw
ZSB0eXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtQ0FB
bmltYXRpb25SZW1vdGU6OmNyZWF0ZSh0eXBlLCBrZXlQYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9HcmFwaGljc0xheWVy
Q0FSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9HcmFwaGljc0xheWVyQ0FSZW1vdGUuaAppbmRleCA1YzExODgxNDcwNjJjMzU5ZGE0MGUx
ZDM5ZDU2NjgzN2MxZThlNWQ5Li4yMzk3N2YyMzg4NDdiNGE3NDE5NjAzNGQyZTNhZTQ2YmNlM2Jh
OWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvR3JhcGhpY3NMYXllckNBUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oCkBA
IC00Nyw3ICs0Nyw2IEBAIHByaXZhdGU6CiAKICAgICBSZWY8V2ViQ29yZTo6UGxhdGZvcm1DQUxh
eWVyPiBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGUsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpIG92ZXJyaWRlOwog
ICAgIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQ
bGF0Zm9ybUxheWVyKiwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikgb3Zl
cnJpZGU7Ci0gICAgUmVmPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1D
QUxheWVyRm9yRW1iZWRkZWRWaWV3KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
LCBHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVy
Q2xpZW50KiBvd25lcikgb3ZlcnJpZGU7CiAgICAgUmVmPFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmlt
YXRpb24+IGNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24oV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1h
dGlvbjo6QW5pbWF0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKSBvdmVycmlkZTsKIAog
ICAgIC8vIFBsYXRmb3JtQ0FMYXllclJlbW90ZSBjYW4ndCBjdXJyZW50bHkgcHJveHkgZGlyZWN0
bHkgY29tcG9zaXRlZCBpbWFnZSBjb250ZW50cywgc28gb3B0IG91dCBvZiB0aGlzIG9wdGltaXph
dGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAK
aW5kZXggNTliN2Y1MTVjNDc0YmQ1YzY2NmE2ZmEyOWNlZDkyYzdmMTI2YTQ3Yy4uYTU5MTcxOWJk
YTkwYTM5Y2RhNDBiYTQxOTg5ZWRhMmQ0ZTA2MzA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTYzLDEzICs2Myw2IEBAIFJlZjxQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlKFBsYXRmb3Jt
TGF5ZXIgKnBsYXRmb3JtCiAgICAgcmV0dXJuIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6
Y3JlYXRlKHBsYXRmb3JtTGF5ZXIsIG93bmVyLCBjb250ZXh0KTsKIH0KIAotUmVmPFBsYXRmb3Jt
Q0FMYXllclJlbW90ZT4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGVGb3JFbWJlZGRlZFZp
ZXcoTGF5ZXJUeXBlIGxheWVyVHlwZSwgR3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgZW1i
ZWRkZWRWaWV3SUQsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJl
ZUNvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4g
bGF5ZXIgPSBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUxheWVyUmVtb3RlKGxheWVyVHlwZSwgZW1i
ZWRkZWRWaWV3SUQsIG93bmVyLCBjb250ZXh0KSk7Ci0gICAgY29udGV4dC5sYXllckRpZEVudGVy
Q29udGV4dCgqbGF5ZXIsIGxheWVyVHlwZSk7Ci0gICAgcmV0dXJuIGxheWVyLnJlbGVhc2VOb25O
dWxsKCk7Ci19Ci0KIFJlZjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6Y3JlYXRlKGNvbnN0IFBsYXRmb3JtQ0FMYXllclJlbW90ZSYgb3RoZXIsIFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNv
bnRleHQpCiB7CiAgICAgYXV0byBsYXllciA9IGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUxheWVy
UmVtb3RlKG90aGVyLCBvd25lciwgY29udGV4dCkpOwpAQCAtODksMTIgKzgyLDYgQEAgUGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUoTGF5ZXJUeXBlIGxheWVyVHlw
ZSwgUGxhdGZvcm1DQUxheWUKICAgICB9CiB9CiAKLVBsYXRmb3JtQ0FMYXllclJlbW90ZTo6UGxh
dGZvcm1DQUxheWVyUmVtb3RlKExheWVyVHlwZSBsYXllclR5cGUsIEdyYXBoaWNzTGF5ZXI6OkVt
YmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lELCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVy
LCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KQotICAgIDogUGxhdGZvcm1DQUxheWVy
UmVtb3RlKGxheWVyVHlwZSwgb3duZXIsIGNvbnRleHQpCi17Ci0gICAgbV9lbWJlZGRlZFZpZXdJ
RCA9IGVtYmVkZGVkVmlld0lEOwotfQotCiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OlBsYXRmb3Jt
Q0FMYXllclJlbW90ZShjb25zdCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUmIG90aGVyLCBQbGF0Zm9y
bUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KQog
ICAgIDogUGxhdGZvcm1DQUxheWVyKG90aGVyLmxheWVyVHlwZSgpLCBvd25lcikKICAgICAsIG1f
YWNjZWxlcmF0ZXNEcmF3aW5nKG90aGVyLmFjY2VsZXJhdGVzRHJhd2luZygpKQpAQCAtODgxLDEx
ICs4NjgsNiBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0RXZlbnRSZWdpb24oY29u
c3QgV2ViQ29yZTo6RXZlbnRSZWdpb24mIGV2ZW50UmVnaQogICAgIG1fcHJvcGVydGllcy5ub3Rl
UHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkV2ZW50UmVnaW9u
Q2hhbmdlZCk7CiB9CiAKLUdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6ZW1iZWRkZWRWaWV3SUQoKSBjb25zdAotewotICAgIHJldHVybiBtX2VtYmVk
ZGVkVmlld0lEOwotfQotCiBSZWY8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OmNyZWF0ZUNvbXBhdGlibGVMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBsYXll
clR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogY2xpZW50KSBjb25zdAogewogICAgIHJldHVy
biBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShsYXllclR5cGUsIGNsaWVudCwgKm1fY29u
dGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKaW5k
ZXggMDgzMTk1NTM1ZmFlZmQxOGQ4OTk5ODBiNTZiOGNlM2E5YzRjOGZkYi4uMGMwYTA4MmJlOGY5
YjhiYzc1ZjAzOGIwN2U3NWQ5OWE5M2VhMjY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaApAQCAtNDIsNyArNDIsNiBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IGNyZWF0ZShXZWJDb3JlOjpQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZSwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiwgUmVtb3Rl
TGF5ZXJUcmVlQ29udGV4dCYpOwogICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1DQUxheWVyUmVtb3Rl
PiBjcmVhdGUoUGxhdGZvcm1MYXllciAqLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQq
LCBSZW1vdGVMYXllclRyZWVDb250ZXh0Jik7CiAgICAgc3RhdGljIFJlZjxQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU+IGNyZWF0ZShjb25zdCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUmLCBXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDbGllbnQqLCBSZW1vdGVMYXllclRyZWVDb250ZXh0Jik7Ci0gICAgc3Rh
dGljIFJlZjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IGNyZWF0ZUZvckVtYmVkZGVkVmlldyhXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
RW1iZWRkZWRWaWV3SUQsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCosIFJlbW90ZUxh
eWVyVHJlZUNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgflBsYXRmb3JtQ0FMYXllclJlbW90ZSgp
OwogCkBAIC0xNzYsOCArMTc1LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRFdmVudFJlZ2lv
bihjb25zdCBXZWJDb3JlOjpFdmVudFJlZ2lvbiYpIG92ZXJyaWRlOwogCi0gICAgV2ViQ29yZTo6
R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQoKSBjb25zdCBvdmVy
cmlkZTsKLQogICAgIFdlYkNvcmU6OlRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgUmVmPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
cj4gY2xvbmUoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikgY29uc3Qgb3Zl
cnJpZGU7CkBAIC0yMDMsNyArMjAwLDYgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgUGxh
dGZvcm1DQUxheWVyUmVtb3RlKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250
ZXh0Jik7Ci0gICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCwgV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4
dCYpOwogICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZShjb25zdCBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUmLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqLCBSZW1vdGVMYXllclRyZWVDb250
ZXh0Jik7CiAKICAgICB2b2lkIHVwZGF0ZUNsb25lZExheWVyUHJvcGVydGllcyhQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUmIGNsb25lLCBib29sIGNvcHlDb250ZW50cyA9IHRydWUpIGNvbnN0OwpAQCAt
MjI0LDggKzIyMCw2IEBAIHByaXZhdGU6CiAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlKiBtX21h
c2tMYXllciB7IG51bGxwdHIgfTsKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYkNvcmU6
OlBsYXRmb3JtQ0FBbmltYXRpb24+PiBtX2FuaW1hdGlvbnM7CiAKLSAgICBXZWJDb3JlOjpHcmFw
aGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBtX2VtYmVkZGVkVmlld0lEOwotCiAgICAgYm9vbCBt
X2FjY2VsZXJhdGVzRHJhd2luZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dhbnRzRGVlcENvbG9y
QmFja2luZ1N0b3JlIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNvbnRleHQubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlQ29udGV4dC5tbQppbmRleCBmNDI1ZDExNjE5MzVmNDAzYzBjMWE0YjZhYWVhN2Q1
ZDgzNTc1OTA1Li41MjIwNTVlMmQ5NTY3YzZkZTMxNjg3MzVhYjM4N2IwNmZhZDU3MGQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbQpAQCAtOTIs
NyArOTIsNiBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZUNvbnRleHQ6OmxheWVyRGlkRW50ZXJDb250
ZXh0KFBsYXRmb3JtQ0FMYXllclJlbW90ZSYgbGF5ZXIsCiAgICAgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzIGNyZWF0aW9uUHJvcGVydGllczsKICAg
ICBjcmVhdGlvblByb3BlcnRpZXMubGF5ZXJJRCA9IGxheWVySUQ7CiAgICAgY3JlYXRpb25Qcm9w
ZXJ0aWVzLnR5cGUgPSB0eXBlOwotICAgIGNyZWF0aW9uUHJvcGVydGllcy5lbWJlZGRlZFZpZXdJ
RCA9IGxheWVyLmVtYmVkZGVkVmlld0lEKCk7CiAKICAgICBpZiAobGF5ZXIuaXNQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b20oKSkgewogICAgICAgICBjcmVhdGlvblByb3BlcnRpZXMuaG9zdGlu
Z0NvbnRleHRJRCA9IGxheWVyLmhvc3RpbmdDb250ZXh0SUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAxMjhlYmQ1M2VmY2FjMjg4ODFlYTQzMzYw
MGU3MjNiMWVmYTYwODViLi4zNDNkZDFlNGFiNGZjYjU1MzNmOGZlMDU1NWYzZDA3MzY2ODRkZmQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC03MzUs
NyArNzM1LDYgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uQXBwZWFyYW5jZSgp
OwogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQ29udGV4dChDYWxsYmFja0lEKTsKICAgICB2b2lkIGhh
bmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBPcHRpb25T
ZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+LCB1aW50NjRfdCByZXF1ZXN0SUQpOwotICAg
IHZvaWQgaGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAgICAgdm9pZCBnZXRSZWN0c0ZvckdyYW51bGFyaXR5
V2l0aFNlbGVjdGlvbk9mZnNldChXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIGludDMyX3QsIENh
bGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGlu
dDMyX3QsIGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc3RvcmVTZWxlY3Rp
b25Gb3JBY2Nlc3NpYmlsaXR5KGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYjJhYTYxZTM0YzRmNGFlNDk0
MjMzOGNiMjliZDRjYjM3NDdiZDc1OS4uZmI1ZmIwY2FjNThhY2Q4N2FkNTJkOWY5NzRjNDVlODFi
NDIwYjZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xMDcsNyArMTA3LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgR2V0U2VsZWN0aW9uQ29udGV4dChXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKICAgICBTZXRBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJh
Y2soYm9vbCBhbGxvd3MpCiAgICAgSGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChXZWJDb3JlOjpJ
bnRQb2ludCBwb2ludCwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPiBtb2Rp
ZmllcnMsIHVpbnQ2NF90IHJlcXVlc3RJRCkKLSAgICBIYW5kbGVTdHlsdXNTaW5nbGVUYXBBdFBv
aW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAgU2V0
Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoYm9vbCB1c2VyU2NhbGFibGUpCiAgICAgR2V0UmVjdHNG
b3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoZW51bTp1aW50OF90IFdlYkNvcmU6OlRl
eHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgaW50MzJfdCBvZmZzZXQsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogICAgIEdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChp
bnQzMl90IG9mZnNldCwgU3RyaW5nIHRleHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQppbmRleCBmMjEyZjg3MWEyYmI3ZjNiNDUzZmJhMTY1ZTA5NTg1ZjNjYmY5ODBlLi5lNGFk
ZTE1YmQzMTlkYTVhNDk2MmYzNGY3NDNlOWFlYWNjN2NiMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTEwOCwzOCAr
MTEwOCw2IEBAIHZvaWQgV2ViUGFnZTo6aGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIE9wdGlvblNlCiAgICAgY29tcGxldGVTeW50aGV0aWND
bGljaygqbm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBhZGp1c3RlZFBvaW50LCBtb2RpZmllcnMsIFdl
YkNvcmU6OlR3b0ZpbmdlclRhcCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6aGFuZGxlU3R5bHVzU2lu
Z2xlVGFwQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQ2NF90IHJl
cXVlc3RJRCkKLXsKLSAgICBTZXRGb3JTY29wZTxib29sPiB1c2VySXNJbnRlcmFjdGluZ0NoYW5n
ZSB7IG1fdXNlcklzSW50ZXJhY3RpbmcsIHRydWUgfTsKLQotICAgIGF1dG8mIGZyYW1lID0gbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLQotICAgIGF1dG8g
cG9pbnRJbkRvY3VtZW50ID0gZnJhbWUudmlldygpLT5yb290Vmlld1RvQ29udGVudHMocG9pbnQp
OwotICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBo
aXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZl
LCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5IH07Ci0g
ICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0ID0gZnJhbWUuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJl
c3VsdEF0UG9pbnQocG9pbnRJbkRvY3VtZW50LCBoaXRUeXBlKTsKLQotICAgIE5vZGUqIG5vZGUg
PSBoaXRUZXN0LmlubmVyTm9uU2hhcmVkTm9kZSgpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGF1dG8gcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICgh
cmVuZGVyZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChyZW5kZXJlci0+aXNSZXBsYWNl
ZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHBvc2l0aW9uID0gcmVuZGVyZXItPnBv
c2l0aW9uRm9yUG9pbnQoaGl0VGVzdC5sb2NhbFBvaW50KCksIG51bGxwdHIpOwotICAgIGlmIChw
b3NpdGlvbi5pc051bGwoKSkKLSAgICAgICAgcG9zaXRpb24gPSBmaXJzdFBvc2l0aW9uSW5PckJl
Zm9yZU5vZGUobm9kZSk7Ci0gICAgYXV0byByYW5nZSA9IG1ha2VTaW1wbGVSYW5nZShwb3NpdGlv
bik7Ci0gICAgaWYgKCFyYW5nZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZnJhbWUuc2VsZWN0
aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZSgqcmFuZ2UsIHBvc2l0aW9uLmFmZmluaXR5KCksIFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVk
KTsKLSAgICBhdXRvIGltYWdlID0gZnJhbWUuZWRpdG9yKCkuaW5zZXJ0RWRpdGFibGVJbWFnZSgp
OwotICAgIGZyYW1lLmRvY3VtZW50KCktPnNldEZvY3VzZWRFbGVtZW50KGltYWdlLmdldCgpKTsK
LX0KLQogdm9pZCBXZWJQYWdlOjpwb3RlbnRpYWxUYXBBdFBvc2l0aW9uKHVpbnQ2NF90IHJlcXVl
c3RJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9zaXRpb24sIGJvb2wgc2hvdWxkUmVx
dWVzdE1hZ25pZmljYXRpb25JbmZvcm1hdGlvbikKIHsKICAgICBtX3BvdGVudGlhbFRhcE5vZGUg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpLm5vZGVSZXNwb25kaW5nVG9DbGlja0V2ZW50cyhwb3NpdGlv
biwgbV9wb3RlbnRpYWxUYXBMb2NhdGlvbiwgbV9wb3RlbnRpYWxUYXBTZWN1cml0eU9yaWdpbi5n
ZXQoKSk7CkBAIC0yNTQyLDggKzI1MTAsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBc3Npc3Rh
YmxlRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBp
ZiAoaXM8SFRNTFRleHRBcmVhRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwotICAgIGlmIChpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1M
SW1hZ2VFbGVtZW50PihlbGVtZW50KS5oYXNFZGl0YWJsZUltYWdlQXR0cmlidXRlKCkpCi0gICAg
ICAgIHJldHVybiB0cnVlOwogICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkg
ewogICAgICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1M
SW5wdXRFbGVtZW50PihlbGVtZW50KTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgbGF1bmRyeSBs
aXN0IG9mIHR5cGVzIGlzIG5vdCBhIGdvb2Qgd2F5IHRvIGZhY3RvciB0aGlzLiBOZWVkIGEgc3Vp
dGFibGUgZnVuY3Rpb24gb24gSFRNTElucHV0RWxlbWVudCBpdHNlbGYuCkBAIC0zMjE4LDkgKzMx
ODQsNiBAQCB2b2lkIFdlYlBhZ2U6OmdldEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24oRm9jdXNl
ZEVsZW1lbnRJbmZvcm1hdGlvbiYgaW5mb3JtYXRpbwogICAgICAgICBpbmZvcm1hdGlvbi52YWx1
ZSA9IGVsZW1lbnQudmFsdWUoKTsKICAgICAgICAgaW5mb3JtYXRpb24udmFsdWVBc051bWJlciA9
IGVsZW1lbnQudmFsdWVBc051bWJlcigpOwogICAgICAgICBpbmZvcm1hdGlvbi5hdXRvZmlsbEZp
ZWxkTmFtZSA9IFdlYkNvcmU6OnRvQXV0b2ZpbGxGaWVsZE5hbWUoZWxlbWVudC5hdXRvZmlsbERh
dGEoKS5maWVsZE5hbWUpOwotICAgIH0gZWxzZSBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oKmZv
Y3VzZWRFbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PigqZm9jdXNlZEVsZW1l
bnQpLmhhc0VkaXRhYmxlSW1hZ2VBdHRyaWJ1dGUoKSkgewotICAgICAgICBpbmZvcm1hdGlvbi5l
bGVtZW50VHlwZSA9IElucHV0VHlwZTo6RHJhd2luZzsKLSAgICAgICAgaW5mb3JtYXRpb24uZW1i
ZWRkZWRWaWV3SUQgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PigqZm9jdXNlZEVsZW1lbnQp
LmVkaXRhYmxlSW1hZ2VWaWV3SUQoKTsKICAgICB9IGVsc2UgaWYgKGZvY3VzZWRFbGVtZW50LT5o
YXNFZGl0YWJsZVN0eWxlKCkpIHsKICAgICAgICAgaW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPSBJ
bnB1dFR5cGU6OkNvbnRlbnRFZGl0YWJsZTsKICAgICAgICAgaWYgKGlzPEhUTUxFbGVtZW50Pigq
Zm9jdXNlZEVsZW1lbnQpKSB7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNjczOWEzN2MyMDI0YzJlZTI2ZTk1MzZjMTA5MTk1YTFlMTgyZGM3OC4u
YTk5MDUxYTQ0ZDRmMTQ1ODExNTgyOThmN2FkYTlkNTkwNjU2OTJmNiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIw
LTA4LTMwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZSB1bnVzZWQgZWRpdGFibGUgaW1hZ2UgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1OTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gRnJhc2VyLgorCisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbDoKKyAgICAgICAgKiBUZXN0UnVubmVy
U2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdU
Ujo6VUlTY3JpcHRDb250cm9sbGVyOjpkcmF3U3F1YXJlSW5FZGl0YWJsZUltYWdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpudW1iZXJPZlN0cm9rZXNJbkVk
aXRhYmxlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvc3BpL1Bl
bmNpbEtpdFRlc3RTUEkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tOgorICAgICAgICAod2Vi
Vmlld0ZvclRlc3RpbmdBdHRhY2htZW50cyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpmb3JF
YWNoVmlld0luSGllcmFyY2h5KTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmZp
bmRFZGl0YWJsZUltYWdlQ2FudmFzKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OmRyYXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvaW9zL1BlbmNpbEtpdFRlc3RTUEkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6dXBkYXRlVGVzdE9w
dGlvbnNGcm9tVGVzdEhlYWRlcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0
aW9ucy5oOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6aGFzU2FtZUluaXRpYWxpemF0aW9u
T3B0aW9ucyBjb25zdCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVu
bmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29u
dHJvbGxlcklPUzo6ZmluZEVkaXRhYmxlSW1hZ2VDYW52YXMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6OmRyYXdTcXVhcmVJbkVkaXRhYmxlSW1h
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6Om51bWJl
ck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSk6IERlbGV0ZWQuCisKIDIwMjAtMDgtMjggIFRpbSBI
b3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU2l0ZXMgYnVpbHQg
d2l0aCBmbGFtYmUuanMgZG9uJ3Qgd29yayB3aXRoIHRyYWNrcGFkIG9uIGlQYWQKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2Ny
aXB0Q29udHJvbGxlci5pZGwgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4
dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCmluZGV4IDg0NmE2NDBlNjU5YWQ1Mzkx
YjZmNzBiYzU0NjY3NjczYzQ5YmIwM2MuLjFkNTMwYzI4ZjM3ZDg3MzQzOGQzYzY0OWZkODE2YWFi
NTg2ZDMwOTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250
ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKKysrIGIvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbApA
QCAtMzQ3LDkgKzM0Nyw2IEBAIGludGVyZmFjZSBVSVNjcmlwdENvbnRyb2xsZXIgewogCiAgICAg
b2JqZWN0IGF0dGFjaG1lbnRJbmZvKERPTVN0cmluZyBhdHRhY2htZW50SWRlbnRpZmllcik7CiAK
LSAgICAvLyBFZGl0aW5nCi0gICAgdW5kZWZpbmVkIGRyYXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2Uo
KTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxl
SW1hZ2U7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBsYXN0VW5kb0xhYmVsOwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZmlyc3RSZWRvTGFiZWw7CiB9OwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRD
b250cm9sbGVyLmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNj
cmlwdENvbnRyb2xsZXIuaAppbmRleCAyNjUyNzUwMWZmYTVkMzk5MTEyNzcwODI5MDkzMWY5ZTgx
MjE4M2Y1Li42YmQ4MWY0Y2FjZWJjMmQ0NjFjNjQwMTEyYzk5MTRmNzMzZjM4ZTMwIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRy
b2xsZXIuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNj
cmlwdENvbnRyb2xsZXIuaApAQCAtMjY2LDExICsyNjYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNpbXVsYXRlUm90YXRpb24oRGV2aWNlT3JpZW50YXRpb24qLCBKU1ZhbHVlUmVmKSB7
IG5vdEltcGxlbWVudGVkKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2ltdWxhdGVSb3RhdGlvbkxp
a2VTYWZhcmkoRGV2aWNlT3JpZW50YXRpb24qLCBKU1ZhbHVlUmVmKSB7IG5vdEltcGxlbWVudGVk
KCk7IH0KIAotICAgIC8vIEVkaXRhYmxlIEltYWdlcwotCi0gICAgdmlydHVhbCB2b2lkIGRyYXdT
cXVhcmVJbkVkaXRhYmxlSW1hZ2UoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KLSAgICB2aXJ0dWFs
IGxvbmcgbnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlKCkgeyBub3RJbXBsZW1lbnRlZCgp
OyByZXR1cm4gMDsgfQotCiAgICAgLy8gVW5kby9SZWRvCiAKICAgICB2aXJ0dWFsIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBsYXN0VW5kb0xhYmVsKCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgp
OyByZXR1cm4gbnVsbHB0cjsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9z
cGkvUGVuY2lsS2l0VGVzdFNQSS5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9zcGkvUGVuY2ls
S2l0VGVzdFNQSS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTk4ZDllZjFkOWQ0
MDQxNWVkMjRjYTA3OTI1NWM2M2ZiZTM4OTk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvc3BpL1BlbmNpbEtpdFRl
c3RTUEkuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1w
b3J0IDx3dGYvUGxhdGZvcm0uaD4KLQotI2lmIEhBVkUoUEVOQ0lMS0lUKQotCi0jaWYgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKLQotI2ltcG9ydCA8UGVuY2lsS2l0L1BlbmNpbEtpdC5oPgotCi0j
aW1wb3J0IDxQZW5jaWxLaXQvUEtEcmF3aW5nX1ByaXZhdGUuaD4KLSNpbXBvcnQgPFBlbmNpbEtp
dC9QS0lua19Qcml2YXRlLmg+Ci0jaW1wb3J0IDxQZW5jaWxLaXQvUEtTdHJva2VfUHJpdmF0ZS5o
PgotCi0jZWxzZQotCi10eXBlZGVmIE5TSW50ZWdlciBQS0lua1R5cGU7Ci0KLUBpbnRlcmZhY2Ug
UEtJbmsgOiBOU09iamVjdAotKyAoUEtJbmsgKilpbmtXaXRoSWRlbnRpZmllcjooTlNTdHJpbmcg
Kil0eXBlIGNvbG9yOihVSUNvbG9yICopY29sb3Igd2VpZ2h0OihDR0Zsb2F0KXdlaWdodDsKLUBl
bmQKLQotQGludGVyZmFjZSBQS1N0cm9rZSA6IE5TT2JqZWN0Ci0tIChpZClfaW5pdFdpdGhQYXRo
OihDR1BhdGhSZWYpcGF0aCBpbms6KFBLSW5rICopaW5rIGlucHV0U2NhbGU6KENHRmxvYXQpaW5w
dXRTY2FsZTsKLUBlbmQKLQotQGludGVyZmFjZSBQS0RyYXdpbmcgOiBOU09iamVjdAotLSAoUEtT
dHJva2UgKilfYWRkU3Ryb2tlOihQS1N0cm9rZSAqKXN0cm9rZTsKLUBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgTlNBcnJheTxQS1N0cm9rZSAqPiAqX2FsbFN0cm9rZXM7Ci1AZW5kCi0K
LUBpbnRlcmZhY2UgUEtDYW52YXNWaWV3IDogVUlWaWV3Ci1AcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSkgUEtEcmF3aW5nICpkcmF3aW5nOwotQGVuZAotCi0jZW5kaWYgLy8gVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKLQotI2VuZGlmIC8vIEhBVkUoUEVOQ0lMS0lUKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCAxNjEzODFjMjU4MTg0YzUzZmUzMWI5ZmYwNWU2ZGNmN2I3NzlhMTc1Li5kZTVm
YzRlNWRkM2MwMWYyZjMxNWE1MWVjOWY3NGYyYzlkMjU1ZjA5IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTgxNiw3ICsxODE2LDYgQEAKIAkJMkQ0Q0Y4QkMxRDgzNjBDQzAwMDFDRThEIC8q
IFdLVGh1bWJuYWlsVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IFdLVGh1bWJuYWlsVmlldy5tbTsgcGF0aCA9IFdlYktpdC9XS1RodW1ibmFpbFZpZXcubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENTFBMEM1MUM4QkYwMDQwMDc2NUM0NSAv
KiBET01IVE1MVmlkZW9FbGVtZW50V3JhcHBlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IERPTUhUTUxWaWRlb0VsZW1lbnRXcmFwcGVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRDUyMDYzNDI0NUE2MDNDMDAzMzhGODggLyogVmlld0V4cG9z
ZWRSZWN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlld0V4
cG9zZWRSZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyRDYxRUMzMDIxQjBC
NzVDMDBBN0QxQ0IgLyogUGVuY2lsS2l0VGVzdFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZW5jaWxL
aXRUZXN0U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENjQwQjU0MTc4NzVE
RkYwMEJGQUY5OSAvKiBTY3JvbGxQaW5uaW5nQmVoYXZpb3JzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbFBpbm5pbmdCZWhhdmlvcnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRDcwMDU5NTIxRURBMEM2MDAzNDYzQ0IgLyogVGFiT3V0
T2ZXZWJWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGFi
T3V0T2ZXZWJWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDcwMDU5NzIx
RURBNEQwMDAzNDYzQ0IgLyogT2Zmc2NyZWVuV2luZG93Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gT2Zmc2NyZWVuV2luZG93Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMzQxNyw3ICszNDE2LDYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUY0
RDRGM0I0MUU0RTJCQ0IwMEJCMjc2NyAvKiBEcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbSAqLywK
IAkJCQkyRTc3NjVDQzE2QzREODBBMDBCQTJCQjEgLyogbWFpbklPUy5tbSAqLywKLQkJCQkyRDYx
RUMzMDIxQjBCNzVDMDBBN0QxQ0IgLyogUGVuY2lsS2l0VGVzdFNQSS5oICovLAogCQkJCUY0OEQ2
QzBGMjI0QjM3NzAwMEUzRTJGQiAvKiBQcmVmZXJyZWRDb250ZW50TW9kZS5tbSAqLywKIAkJCQlG
NDUxN0I2NTIwNTRDNDk1MDBDMjY3MjEgLyogVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIuaCAqLywK
IAkJCQlGNDUxN0I2NjIwNTRDNDk1MDBDMjY3MjEgLyogVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIu
bW0gKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLQXR0YWNobWVudFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQppbmRleCA4NDBmNDVmZjgwZWZkMzcyZTc3ZWZmOWYw
MWE5YWZjMTRmNjAyOTI0Li4zYjNmNmRlZDFhODQ4OWFhYWY5ZGIwNWMxNDczNjM2MTM4YmQzYTAx
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0
YWNobWVudFRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tBdHRhY2htZW50VGVzdHMubW0KQEAgLTI5LDcgKzI5LDYgQEAKIAogI2ltcG9ydCAiRHJh
Z0FuZERyb3BTaW11bGF0b3IuaCIKICNpbXBvcnQgIk5TSXRlbVByb3ZpZGVyQWRkaXRpb25zLmgi
Ci0jaW1wb3J0ICJQZW5jaWxLaXRUZXN0U1BJLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGll
cy5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdL
V2ViVmlldy5oIgpAQCAtMjAxLDcgKzIwMCw2IEBAIHN0YXRpYyBOU1N0cmluZyAqYXR0YWNobWVu
dEVkaXRpbmdUZXN0TWFya3VwID0gQCI8bWV0YSBuYW1lPSd2aWV3cG9ydCcgY29udGVudD0nCiBz
dGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVu
dHMoQ0dTaXplIHdlYlZpZXdTaXplLCBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0
aW9uKQogewogICAgIGNvbmZpZ3VyYXRpb24uX2F0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCA9IFlF
UzsKLSAgICBjb25maWd1cmF0aW9uLl9lZGl0YWJsZUltYWdlc0VuYWJsZWQgPSBZRVM7CiAgICAg
V0tQcmVmZXJlbmNlc1NldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgoX19icmlkZ2UgV0tQ
cmVmZXJlbmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10sIFlFUyk7CiAKICAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpDR1JlY3RNYWtlKDAsIDAsIHdlYlZpZXdTaXplLndpZHRoLCB3ZWJWaWV3U2l6ZS5oZWlnaHQp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwpAQCAtMjIyNiw3NiArMjIyNCw2IEBAIFRF
U1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIENvcHlBdHRhY2htZW50VXNpbmdFbGVtZW50QWN0aW9u
KQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CiAKLSNpZiBIQVZFKFBF
TkNJTEtJVCkKLXN0YXRpYyBCT09MIGZvckVhY2hWaWV3SW5IaWVyYXJjaHkoVUlWaWV3ICp2aWV3
LCB2b2lkKF5tYXBGdW5jdGlvbikoVUlWaWV3ICpzdWJ2aWV3LCBCT09MICpzdG9wKSkKLXsKLSAg
ICBCT09MIHN0b3AgPSBOTzsKLSAgICBtYXBGdW5jdGlvbih2aWV3LCAmc3RvcCk7Ci0gICAgaWYg
KHN0b3ApCi0gICAgICAgIHJldHVybiBZRVM7Ci0KLSAgICBmb3IgKFVJVmlldyAqc3VidmlldyBp
biB2aWV3LnN1YnZpZXdzKSB7Ci0gICAgICAgIHN0b3AgPSBmb3JFYWNoVmlld0luSGllcmFyY2h5
KHN1YnZpZXcsIG1hcEZ1bmN0aW9uKTsKLSAgICAgICAgaWYgKHN0b3ApCi0gICAgICAgICAgICBi
cmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHN0b3A7Ci19Ci0KLXN0YXRpYyBQS0NhbnZhc1ZpZXcg
KmZpbmRFZGl0YWJsZUltYWdlQ2FudmFzKFdLV2ViVmlldyAqd2ViVmlldykKLXsKLSAgICBDbGFz
cyBwa0NhbnZhc1ZpZXdDbGFzcyA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAiUEtDYW52YXNWaWV3Iik7
Ci0gICAgX19ibG9jayBQS0NhbnZhc1ZpZXcgKmNhbnZhc1ZpZXcgPSBuaWw7Ci0gICAgZm9yRWFj
aFZpZXdJbkhpZXJhcmNoeSh3ZWJWaWV3LndpbmRvdywgXihVSVZpZXcgKnN1YnZpZXcsIEJPT0wg
KnN0b3ApIHsKLSAgICAgICAgaWYgKCFbc3VidmlldyBpc0tpbmRPZkNsYXNzOnBrQ2FudmFzVmll
d0NsYXNzXSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBjYW52YXNWaWV3ID0gKFBL
Q2FudmFzVmlldyAqKXN1YnZpZXc7Ci0gICAgICAgICpzdG9wID0gWUVTOwotICAgIH0pOwotICAg
IHJldHVybiBjYW52YXNWaWV3OwotfQotCi1zdGF0aWMgdm9pZCBkcmF3U3F1YXJlSW5FZGl0YWJs
ZUltYWdlKFdLV2ViVmlldyAqd2ViVmlldykKLXsKLSAgICBDbGFzcyBwa0RyYXdpbmdDbGFzcyA9
IE5TQ2xhc3NGcm9tU3RyaW5nKEAiUEtEcmF3aW5nIik7Ci0gICAgQ2xhc3MgcGtJbmtDbGFzcyA9
IE5TQ2xhc3NGcm9tU3RyaW5nKEAiUEtJbmsiKTsKLSAgICBDbGFzcyBwa1N0cm9rZUNsYXNzID0g
TlNDbGFzc0Zyb21TdHJpbmcoQCJQS1N0cm9rZSIpOwotCi0gICAgUEtDYW52YXNWaWV3ICpjYW52
YXNWaWV3ID0gZmluZEVkaXRhYmxlSW1hZ2VDYW52YXMod2ViVmlldyk7Ci0gICAgUmV0YWluUHRy
PFBLRHJhd2luZz4gZHJhd2luZyA9IGNhbnZhc1ZpZXcuZHJhd2luZyA/OiBhZG9wdE5TKFtbcGtE
cmF3aW5nQ2xhc3MgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiBwYXRo
ID0gYWRvcHRDRihDR1BhdGhDcmVhdGVXaXRoUmVjdChDR1JlY3RNYWtlKDAsIDAsIDUwLCA1MCks
IE5VTEwpKTsKLSAgICBSZXRhaW5QdHI8UEtJbms+IGluayA9IFtwa0lua0NsYXNzIGlua1dpdGhJ
ZGVudGlmaWVyOkAiY29tLmFwcGxlLmluay5wZW4iIGNvbG9yOlVJQ29sb3IuZ3JlZW5Db2xvciB3
ZWlnaHQ6MTAwLjBdOwotICAgIFJldGFpblB0cjxQS1N0cm9rZT4gc3Ryb2tlID0gYWRvcHROUyhb
W3BrU3Ryb2tlQ2xhc3MgYWxsb2NdIF9pbml0V2l0aFBhdGg6cGF0aC5nZXQoKSBpbms6aW5rLmdl
dCgpIGlucHV0U2NhbGU6MV0pOwotICAgIFtkcmF3aW5nIF9hZGRTdHJva2U6c3Ryb2tlLmdldCgp
XTsKLQotICAgIFtjYW52YXNWaWV3IHNldERyYXdpbmc6ZHJhd2luZy5nZXQoKV07Ci19Ci0KLVRF
U1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIEVkaXRhYmxlSW1hZ2VBdHRhY2htZW50RGF0YUludmFs
aWRhdGlvbikKLXsKLSAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1l
bnRzKCk7Ci0KLSAgICBSZXRhaW5QdHI8X1dLQXR0YWNobWVudD4gYXR0YWNobWVudDsKLQotICAg
IHsKLSAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2Vi
Vmlldy5nZXQoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5
RXhlY3V0ZUVkaXRDb21tYW5kOkAiSW5zZXJ0RWRpdGFibGVJbWFnZSIgYXJndW1lbnQ6bmlsXSk7
Ci0gICAgICAgIEVYUEVDVF9FUShvYnNlcnZlci5vYnNlcnZlcigpLmluc2VydGVkLmNvdW50LCAx
TFUpOwotICAgICAgICBhdHRhY2htZW50ID0gb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRlZC5m
aXJzdE9iamVjdDsKLSAgICB9Ci0KLSAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlv
blVwZGF0ZV07Ci0KLSAgICB7Ci0gICAgICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNj
b3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOwotICAgICAgICBkcmF3U3F1YXJlSW5FZGl0YWJs
ZUltYWdlKHdlYlZpZXcuZ2V0KCkpOwotICAgICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50
SW52YWxpZGF0aW9uKEBbIGF0dGFjaG1lbnQuZ2V0KCkgXSk7Ci0gICAgfQotfQotCi0jZW5kaWYg
Ly8gSEFWRShQRU5DSUxLSVQpCi0KICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiB9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2lvcy9QZW5jaWxLaXRUZXN0U1BJLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QZW5j
aWxLaXRUZXN0U1BJLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0YTQ0Mzk1Nzli
YzE4OGJiMjUxYWU5ODJmNjA4OTE4YjlmNmE1ZGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUGVuY2lsS2l0VGVz
dFNQSS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBv
cnQgPHd0Zi9QbGF0Zm9ybS5oPgotCi0jaWYgSEFWRShQRU5DSUxLSVQpCi0KLSNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQotCi0jaW1wb3J0IDxQZW5jaWxLaXQvUGVuY2lsS2l0Lmg+Ci0KLSNp
bXBvcnQgPFBlbmNpbEtpdC9QS0RyYXdpbmdfUHJpdmF0ZS5oPgotI2ltcG9ydCA8UGVuY2lsS2l0
L1BLSW5rX1ByaXZhdGUuaD4KLSNpbXBvcnQgPFBlbmNpbEtpdC9QS1N0cm9rZV9Qcml2YXRlLmg+
Ci0KLSNlbHNlCi0KLXR5cGVkZWYgTlNJbnRlZ2VyIFBLSW5rVHlwZTsKLQotQGludGVyZmFjZSBQ
S0luayA6IE5TT2JqZWN0Ci0rIChQS0luayAqKWlua1dpdGhUeXBlOihQS0lua1R5cGUpdHlwZSBj
b2xvcjooVUlDb2xvciAqKWNvbG9yIHdlaWdodDooQ0dGbG9hdCl3ZWlnaHQ7Ci1AZW5kCi0KLUBp
bnRlcmZhY2UgUEtTdHJva2UgOiBOU09iamVjdAotLSAoaWQpX2luaXRXaXRoUGF0aDooQ0dQYXRo
UmVmKXBhdGggaW5rOihQS0luayAqKWluayBpbnB1dFNjYWxlOihDR0Zsb2F0KWlucHV0U2NhbGU7
Ci1AZW5kCi0KLUBpbnRlcmZhY2UgUEtEcmF3aW5nIDogTlNPYmplY3QKLS0gKFBLU3Ryb2tlICop
X2FkZFN0cm9rZTooUEtTdHJva2UgKilzdHJva2U7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIE5TQXJyYXk8UEtTdHJva2UgKj4gKl9hbGxTdHJva2VzOwotQGVuZAotCi1AaW50ZXJm
YWNlIFBLQ2FudmFzVmlldyA6IFVJVmlldwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIFBL
RHJhd2luZyAqZHJhd2luZzsKLUBlbmQKLQotI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCi0KLSNlbmRpZiAvLyBIQVZFKFBFTkNJTEtJVCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMWFjNzFmNzEyMjkzNWZkYTU3MWU1NDg1MTViMzRjYTM3
ZTlkZDg0Ny4uMjEzZWZlMWZhMTEwYWIyZmY0YTIyMTM4YmMxNzk1NGQ0YTA4YzQxNSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTE1MzMsOCArMTUzMyw2
IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVRlc3RPcHRpb25zRnJvbVRlc3RIZWFkZXIoVGVzdE9wdGlv
bnMmIHRlc3RPcHRpb25zLCBjb25zdCBzdGQ6CiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy5zaG91
bGRTaG93U3BlbGxDaGVja2luZ0RvdHMgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFs
dWUpOwogICAgICAgICBlbHNlIGlmIChrZXkgPT0gImVuYWJsZVNlcnZpY2VDb250cm9scyIpCiAg
ICAgICAgICAgICB0ZXN0T3B0aW9ucy5lbmFibGVTZXJ2aWNlQ29udHJvbHMgPSBwYXJzZUJvb2xl
YW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwotICAgICAgICBlbHNlIGlmIChrZXkgPT0gImVuYWJs
ZUVkaXRhYmxlSW1hZ2VzIikKLSAgICAgICAgICAgIHRlc3RPcHRpb25zLmVuYWJsZUVkaXRhYmxl
SW1hZ2VzID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKICAgICAgICAgZWxz
ZSBpZiAoa2V5ID09ICJlZGl0YWJsZSIpCiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy5lZGl0YWJs
ZSA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYg
KGtleSA9PSAic2hvdWxkSGFuZGxlUnVuT3BlblBhbmVsIikKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dE9wdGlvbnMuaAppbmRleCAwZjg1ZDliODNlZGJjZmEwMmEyMjg4OWNjMjUxMDQ3YTk0MzlkMzFl
Li44ZTBlODczZjY4ZmM5MWI0MTIyOWM2MDljMzVhZmM3NjVlZmQwODAyIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0T3B0aW9ucy5oCkBAIC05MSw3ICs5MSw2IEBAIHN0cnVjdCBUZXN0T3B0aW9u
cyB7CiAgICAgYm9vbCBzaG91bGRJZ25vcmVNZXRhVmlld3BvcnQgeyBmYWxzZSB9OwogICAgIGJv
b2wgc2hvdWxkU2hvd1NwZWxsQ2hlY2tpbmdEb3RzIHsgZmFsc2UgfTsKICAgICBib29sIGVuYWJs
ZVNlcnZpY2VDb250cm9scyB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVFZGl0YWJsZUltYWdl
cyB7IGZhbHNlIH07CiAgICAgYm9vbCBlZGl0YWJsZSB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91
bGRIYW5kbGVSdW5PcGVuUGFuZWwgeyB0cnVlIH07CiAgICAgYm9vbCBzaG91bGRQcmVzZW50UG9w
b3ZlcnMgeyB0cnVlIH07CkBAIC0xNTgsNyArMTU3LDYgQEAgc3RydWN0IFRlc3RPcHRpb25zIHsK
ICAgICAgICAgICAgIHx8IHNob3VsZFNob3dTcGVsbENoZWNraW5nRG90cyAhPSBvcHRpb25zLnNo
b3VsZFNob3dTcGVsbENoZWNraW5nRG90cwogICAgICAgICAgICAgfHwgZW5hYmxlU2VydmljZUNv
bnRyb2xzICE9IG9wdGlvbnMuZW5hYmxlU2VydmljZUNvbnRyb2xzCiAgICAgICAgICAgICB8fCBz
aG91bGRJZ25vcmVNZXRhVmlld3BvcnQgIT0gb3B0aW9ucy5zaG91bGRJZ25vcmVNZXRhVmlld3Bv
cnQKLSAgICAgICAgICAgIHx8IGVuYWJsZUVkaXRhYmxlSW1hZ2VzICE9IG9wdGlvbnMuZW5hYmxl
RWRpdGFibGVJbWFnZXMKICAgICAgICAgICAgIHx8IGVkaXRhYmxlICE9IG9wdGlvbnMuZWRpdGFi
bGUKICAgICAgICAgICAgIHx8IHNob3VsZEhhbmRsZVJ1bk9wZW5QYW5lbCAhPSBvcHRpb25zLnNo
b3VsZEhhbmRsZVJ1bk9wZW5QYW5lbAogICAgICAgICAgICAgfHwgc2hvdWxkUHJlc2VudFBvcG92
ZXJzICE9IG9wdGlvbnMuc2hvdWxkUHJlc2VudFBvcG92ZXJzCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGUxMTljZDNhNGYzMjIyZmRhZDI0NzI3NmI0OWNmODFlMzVhMTYy
OTguLmU2NGM2NDA2NThjMmYxNzljMGJkMmIwYWZkN2MwYzQxNzAwYTQyOTEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yODAsNyArMjgwLDYgQEAKIAkJMkQwNThFMDgy
MkUyRUUyMjAwRTRDMTQ1IC8qIFVJU2NyaXB0Q29udHJvbGxlckNvY29hLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVJU2NyaXB0Q29udHJvbGxlckNvY29hLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMDU4RTBBMjJFMkVGNkQwMEU0QzE0NSAvKiBVSVNjcmlw
dENvbnRyb2xsZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVUlTY3Jp
cHRDb250cm9sbGVyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMEJFRTE3
MjJFQUQxMzYwMDkyQjczOCAvKiBVSVNjcmlwdENvbnRyb2xsZXJJT1MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVUlTY3JpcHRDb250cm9sbGVySU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTJEMEZGMTRBMjE5MkM3ODMwMEM5NzVENiAvKiBQZW5jaWxLaXRUZXN0U1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFBlbmNpbEtpdFRlc3RTUEkuaDsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFyZWQvc3Bp
L1BlbmNpbEtpdFRlc3RTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRCNjE4
N0QxRDdENThENDAwOTc4RDE5IC8qIENvcmVHcmFwaGljc1Rlc3RTUEkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQ29yZUdyYXBoaWNzVGVzdFNQSS5oOyBwYXRoID0gLi4vVGVz
dFJ1bm5lclNoYXJlZC9zcGkvQ29yZUdyYXBoaWNzVGVzdFNQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyRENFMkNEMTFCODQ1MjQ1MDBDN0Y4MzIgLyogVGVzdENvbnRyb2xsZXJD
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRlc3RDb250
cm9sbGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERDRDNDk4MUQ2
RTdEM0IwMDA3Mzc5QyAvKiBFdmVudFNlcmlhbGl6ZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gRXZlbnRTZXJpYWxpemVyTWFjLmg7IHBhdGggPSBtYWMvRXZlbnRTZXJp
YWxpemVyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDIsNyArNjQxLDYg
QEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMkRCNjE4N0QxRDdE
NThENDAwOTc4RDE5IC8qIENvcmVHcmFwaGljc1Rlc3RTUEkuaCAqLywKLQkJCQkyRDBGRjE0QTIx
OTJDNzgzMDBDOTc1RDYgLyogUGVuY2lsS2l0VGVzdFNQSS5oICovLAogCQkJKTsKIAkJCW5hbWUg
PSBzcGk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IGY3NTg3NjY5ZmZl
YThjNzRkN2JkNjAzZDdhYjIyYmI4ZTQ4OTc5ZDkuLjNlNTFmMjk2ZWRhMTNmZmFlNWM2ZjgxNjU1
ZDEyY2JiYTkzNWZjODIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2Ev
VGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29h
L1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTE2Myw5ICsxNjMsNiBAQCB2b2lkIFRlc3RDb250
cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29u
c3QgVGVzdE9wdAogICAgIGlmIChvcHRpb25zLmVuYWJsZUNvbG9yRmlsdGVyKQogICAgICAgICBb
Y29waWVkQ29uZmlndXJhdGlvbiBfc2V0Q29sb3JGaWx0ZXJFbmFibGVkOllFU107CiAKLSAgICBp
ZiAob3B0aW9ucy5lbmFibGVFZGl0YWJsZUltYWdlcykKLSAgICAgICAgW2NvcGllZENvbmZpZ3Vy
YXRpb24gX3NldEVkaXRhYmxlSW1hZ2VzRW5hYmxlZDpZRVNdOwotCiAgICAgW2NvcGllZENvbmZp
Z3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopd2Vic2l0
ZURhdGFTdG9yZSgpXTsKIAogICAgIFtjb3BpZWRDb25maWd1cmF0aW9uIF9zZXRBbGxvd1RvcE5h
dmlnYXRpb25Ub0RhdGFVUkxzOm9wdGlvbnMuYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMc107
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xs
ZXJJT1MuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5oCmluZGV4IDE3YmFhOGZkMTQ4MzE2ZjkzYzBlNzBmNmY2ZTg2MjNlMjBhMjI0NjAuLjI4ZDA2
MGM2ZGZjNDcxYTkwNTQ5MDY4Mzk1YzNkNDBmNmE5YzA5NmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5oCkBAIC0zMCwxMCArMzAs
NiBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotI2lmIEhBVkUoUEVOQ0lMS0lUKQot
QGNsYXNzIFBLQ2FudmFzVmlldzsKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBGbG9hdFBvaW50OwogY2xhc3MgRmxvYXRSZWN0OwpAQCAtMTMyLDggKzEyOCw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbXBsZXRlQmFja1N3aXBlKEpTVmFsdWVSZWYpIG92ZXJyaWRlOwogICAg
IGJvb2wgaXNTaG93aW5nRGF0YUxpc3RTdWdnZXN0aW9ucygpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZvaWQgYWN0aXZhdGVEYXRhTGlzdFN1Z2dlc3Rpb24odW5zaWduZWQsIEpTVmFsdWVSZWYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZHJhd1NxdWFyZUluRWRpdGFibGVJbWFnZSgpIG92ZXJyaWRlOwot
ICAgIGxvbmcgbnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZXRLZXlib2FyZElucHV0TW9kZUlkZW50aWZpZXIoSlNTdHJpbmdSZWYpIG92ZXJyaWRl
OwogICAgIHZvaWQgdG9nZ2xlQ2Fwc0xvY2soSlNWYWx1ZVJlZikgb3ZlcnJpZGU7CiAgICAgYm9v
bCBrZXlib2FyZElzQXV0b21hdGljYWxseVNoaWZ0ZWQoKSBjb25zdCBvdmVycmlkZTsKQEAgLTE2
Nyw5ICsxNjEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgd2FpdEZvclNpbmdsZVRhcFRvUmVzZXQo
KSBjb25zdDsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdEZvck1lbnVBY3Rpb24oQ0ZTdHJp
bmdSZWYpIGNvbnN0OwogICAgIHZvaWQgc2luZ2xlVGFwQXRQb2ludFdpdGhNb2RpZmllcnMoV2Vi
Q29yZTo6RmxvYXRQb2ludCBsb2NhdGlvbiwgVmVjdG9yPFN0cmluZz4mJiBtb2RpZmllckZsYWdz
LCBCbG9ja1B0cjx2b2lkKCk+JiYpOwotI2lmIEhBVkUoUEVOQ0lMS0lUKQotICAgIFBLQ2FudmFz
VmlldyAqZmluZEVkaXRhYmxlSW1hZ2VDYW52YXMoKSBjb25zdDsKLSNlbmRpZgogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVy
SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9T
Lm1tCmluZGV4IDJiYThmMjM2ZjA3M2Q0ZjVjOTk3Y2I5MjA1NjQ2YjA0NTYyYzg0ZGYuLjEzMGM0
OTdjMjQwZDgzOGJiNGFmZmZkMjA3MzE0MTc1YTgzZGJiMjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAgLTI5LDcgKzI5
LDYgQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJISURFdmVudEdlbmVy
YXRvci5oIgotI2ltcG9ydCAiUGVuY2lsS2l0VGVzdFNQSS5oIgogI2ltcG9ydCAiUGxhdGZvcm1W
aWV3SGVscGVycy5oIgogI2ltcG9ydCAiUGxhdGZvcm1XZWJWaWV3LmgiCiAjaW1wb3J0ICJTdHJp
bmdGdW5jdGlvbnMuaCIKQEAgLTExNTYsNTIgKzExNTUsNiBAQCBib29sIFVJU2NyaXB0Q29udHJv
bGxlcklPUzo6aXNTaG93aW5nRGF0YUxpc3RTdWdnZXN0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJu
IGZvdW5kRGF0YUxpc3RTdWdnZXN0aW9uc1BpY2tlclZpZXc7CiB9CiAKLSNpZiBIQVZFKFBFTkNJ
TEtJVCkKLQotUEtDYW52YXNWaWV3ICpVSVNjcmlwdENvbnRyb2xsZXJJT1M6OmZpbmRFZGl0YWJs
ZUltYWdlQ2FudmFzKCkgY29uc3QKLXsKLSAgICBDbGFzcyBwa0NhbnZhc1ZpZXdDbGFzcyA9IE5T
Q2xhc3NGcm9tU3RyaW5nKEAiUEtDYW52YXNWaWV3Iik7Ci0gICAgX19ibG9jayBQS0NhbnZhc1Zp
ZXcgKmNhbnZhc1ZpZXcgPSBuaWw7Ci0gICAgZm9yRWFjaFZpZXdJbkhpZXJhcmNoeSh3ZWJWaWV3
KCkud2luZG93LCBeKFVJVmlldyAqc3VidmlldywgQk9PTCAqc3RvcCkgewotICAgICAgICBpZiAo
IVtzdWJ2aWV3IGlzS2luZE9mQ2xhc3M6cGtDYW52YXNWaWV3Q2xhc3NdKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIGNhbnZhc1ZpZXcgPSAoUEtDYW52YXNWaWV3ICopc3VidmlldzsK
LSAgICAgICAgKnN0b3AgPSBZRVM7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGNhbnZhc1ZpZXc7Ci19
Ci0KLSNlbmRpZiAvLyBIQVZFKFBFTkNJTEtJVCkKLQotdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJ
T1M6OmRyYXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2UoKQotewotI2lmIEhBVkUoUEVOQ0lMS0lUKQot
ICAgIENsYXNzIHBrRHJhd2luZ0NsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJQS0RyYXdpbmci
KTsKLSAgICBDbGFzcyBwa0lua0NsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJQS0luayIpOwot
ICAgIENsYXNzIHBrU3Ryb2tlQ2xhc3MgPSBOU0NsYXNzRnJvbVN0cmluZyhAIlBLU3Ryb2tlIik7
Ci0KLSAgICBQS0NhbnZhc1ZpZXcgKmNhbnZhc1ZpZXcgPSBmaW5kRWRpdGFibGVJbWFnZUNhbnZh
cygpOwotICAgIFJldGFpblB0cjxQS0RyYXdpbmc+IGRyYXdpbmcgPSBjYW52YXNWaWV3LmRyYXdp
bmcgPzogYWRvcHROUyhbW3BrRHJhd2luZ0NsYXNzIGFsbG9jXSBpbml0XSk7Ci0gICAgUmV0YWlu
UHRyPENHUGF0aFJlZj4gcGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJlY3QoQ0dSZWN0
TWFrZSgwLCAwLCA1MCwgNTApLCBOVUxMKSk7Ci0gICAgUmV0YWluUHRyPFBLSW5rPiBpbmsgPSBb
cGtJbmtDbGFzcyBpbmtXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5pbmsucGVuIiBjb2xvcjpV
SUNvbG9yLmdyZWVuQ29sb3Igd2VpZ2h0OjEwMC4wXTsKLSAgICBSZXRhaW5QdHI8UEtTdHJva2U+
IHN0cm9rZSA9IGFkb3B0TlMoW1twa1N0cm9rZUNsYXNzIGFsbG9jXSBfaW5pdFdpdGhQYXRoOnBh
dGguZ2V0KCkgaW5rOmluay5nZXQoKSBpbnB1dFNjYWxlOjFdKTsKLSAgICBbZHJhd2luZyBfYWRk
U3Ryb2tlOnN0cm9rZS5nZXQoKV07Ci0KLSAgICBbY2FudmFzVmlldyBzZXREcmF3aW5nOmRyYXdp
bmcuZ2V0KCldOwotI2VuZGlmCi19Ci0KLWxvbmcgVUlTY3JpcHRDb250cm9sbGVySU9TOjpudW1i
ZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKQotewotI2lmIEhBVkUoUEVOQ0lMS0lUKQotICAg
IFBLQ2FudmFzVmlldyAqY2FudmFzVmlldyA9IGZpbmRFZGl0YWJsZUltYWdlQ2FudmFzKCk7Ci0g
ICAgcmV0dXJuIGNhbnZhc1ZpZXcuZHJhd2luZy5fYWxsU3Ryb2tlcy5jb3VudDsKLSNlbHNlCi0g
ICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNl
dEtleWJvYXJkSW5wdXRNb2RlSWRlbnRpZmllcihKU1N0cmluZ1JlZiBpZGVudGlmaWVyKQogewog
ICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRLZXlib2FyZElucHV0TW9kZUlkZW50
aWZpZXIodG9XVEZTdHJpbmcodG9XSyhpZGVudGlmaWVyKSkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDkzMzIwZTMzZmFm
ZjhhNjI5MDg2YWUyOWNkZjEyY2E1NzM5NzdlNzguLjZiN2UyNjU1Y2UzMzI5OWI0ZWM1NGNiZmY0
YmE4Y2M0MTlkZWEzOWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMC0wOC0zMCAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdW51c2Vk
IGVkaXRhYmxlIGltYWdlIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNTk5MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4K
KworICAgICAgICAqIGVkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1p
bWFnZS1mcm9tLWV4ZWNDb21tYW5kLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBl
ZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1pbWFnZS1mcm9tLWV4ZWNDb21tYW5kLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2Ut
d2l0aC1nZXN0dXJlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL2lt
YWdlcy9iYXNpYy1lZGl0YWJsZS1pbWFnZS13aXRoLWdlc3R1cmUuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBlZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1pbWFnZS5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIGVkaXRpbmcvaW1hZ2VzL2VkaXRhYmxlLWltYWdlLWNyZWF0ZXMtYXR0YWNo
bWVudC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZWRpdGluZy9pbWFnZXMvZWRp
dGFibGUtaW1hZ2UtY3JlYXRlcy1hdHRhY2htZW50Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
ZWRpdGluZy9pbWFnZXMvcGFzdGUtZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIGVkaXRpbmcvaW1hZ2VzL3Bhc3RlLWVkaXRhYmxlLWltYWdlLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogZWRpdGluZy9pbWFnZXMvcmVkby1pbnNlcnQtZWRpdGFibGUtaW1h
Z2UtbWFpbnRhaW5zLXN0cm9rZXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGVk
aXRpbmcvaW1hZ2VzL3JlZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLW1haW50YWlucy1zdHJva2Vz
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZWRpdGluZy9pbWFnZXMvcmVwYXJlbnQtZWRpdGFi
bGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9rZXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIGVkaXRpbmcvaW1hZ2VzL3JlcGFyZW50LWVkaXRhYmxlLWltYWdlLW1haW50YWlucy1zdHJv
a2VzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZWRpdGluZy9pbWFnZXMvdW5kby1pbnNlcnQt
ZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGVkaXRpbmcv
aW1hZ2VzL3VuZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogcmVzb3VyY2VzL3VpLWhlbHBlci5qczoKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5kcmF3
U3F1YXJlSW5FZGl0YWJsZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKHdpbmRvdy5VSUhlbHBl
ci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UpOiBEZWxldGVkLgorCiAyMDIwLTA4LTMw
ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtX
aW5DYWlyb10gVW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDI0YmYxZDg0MjE2YjJiMzNiMzQyOGJi
OTI0N2YyZWJhMzU4NmE0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotSGFkIDAgc3Ryb2tlcyBp
biBlZGl0YWJsZSBpbWFnZSBiZWZvcmUgZHJhd2luZy4KLUhhZCAxIHN0cm9rZSBpbiBlZGl0YWJs
ZSBpbWFnZSBhZnRlciBkcmF3aW5nLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1pbWFnZS1mcm9tLWV4ZWNDb21tYW5kLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLWZyb20t
ZXhlY0NvbW1hbmQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
MTAxMTU5YWQwYmY5ZDdkMTYzMWIzMjNhZjViOThhZWE1YjQ0NjY0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2Vz
L2Jhc2ljLWVkaXRhYmxlLWltYWdlLWZyb20tZXhlY0NvbW1hbmQtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLUhhZCAwIHN0cm9rZXMgaW4gZWRpdGFibGUgaW1h
Z2UgYmVmb3JlIGRyYXdpbmcuCi1IYWQgMSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIg
ZHJhd2luZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVk
aXRhYmxlLWltYWdlLWZyb20tZXhlY0NvbW1hbmQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
aW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLWZyb20tZXhlY0NvbW1hbmQuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBlYWFjODk1NTg5MTI1ZWEwMmYyMmMzMjIxODM1MjJk
MTQzZDAyZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1pbWFnZS1mcm9tLWV4ZWND
b21tYW5kLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUVkaXRhYmxlSW1hZ2VzPXRydWUgXSAt
LT4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwv
c2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1h
ZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4gewotICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LCAwKTsKLSAgICBkb2N1bWVudC5leGVj
Q29tbWFuZCgiSW5zZXJ0RWRpdGFibGVJbWFnZSIpOwotICAgIGNvbnN0IGluaXRpYWxOdW1iZXJP
ZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UgPSAoYXdhaXQgVUlIZWxwZXIubnVtYmVyT2ZTdHJva2Vz
SW5FZGl0YWJsZUltYWdlKCkpOwotICAgIGF3YWl0IFVJSGVscGVyLmRyYXdTcXVhcmVJbkVkaXRh
YmxlSW1hZ2UoKTsKLSAgICBjb25zdCBudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRl
ckRyYXdpbmcgPSAoYXdhaXQgVUlIZWxwZXIubnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdl
KCkpOwotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgPSBgSGFk
ICR7aW5pdGlhbE51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZX0gc3Ryb2tlcyBpbiBlZGl0
YWJsZSBpbWFnZSBiZWZvcmUgZHJhd2luZy48YnIvPkhhZCAke251bWJlck9mU3Ryb2tlc0luRWRp
dGFibGVJbWFnZUFmdGVyRHJhd2luZ30gc3Ryb2tlIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRy
YXdpbmcuYDsKLSAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keSBjb250ZW50ZWRpdGFibGU+Ci08ZGl2IGlkPSJsb2ciPjwvZGl2PgotPC9i
b2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFi
bGUtaW1hZ2Utd2l0aC1nZXN0dXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
aW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLXdpdGgtZ2VzdHVyZS1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxMDExNTlhZDBiZjlkN2QxNjMxYjMyM2FmNWI5
OGFlYTViNDQ2NjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2Utd2l0aC1n
ZXN0dXJlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1IYWQg
MCBzdHJva2VzIGluIGVkaXRhYmxlIGltYWdlIGJlZm9yZSBkcmF3aW5nLgotSGFkIDEgc3Ryb2tl
IGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRyYXdpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1pbWFnZS13aXRoLWdlc3R1cmUuaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLXdpdGgtZ2Vz
dHVyZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MGMxNmVjM2Q0MmI3OGM2
NTY1ZGZlMTYyMzVlMTJiNDhmZTVhOTBlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxl
LWltYWdlLXdpdGgtZ2VzdHVyZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVFZGl0YWJsZUlt
YWdlcz10cnVlIF0gLS0+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWkt
aGVscGVyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
LSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKLX0KLQotYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGFzeW5jICgpID0+IHsKLSAgICBh
d2FpdCBVSUhlbHBlci5zdHlsdXNUYXBBdCgwLCAwKTsKLSAgICBjb25zdCBpbml0aWFsTnVtYmVy
T2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlID0gKGF3YWl0IFVJSGVscGVyLm51bWJlck9mU3Ryb2tl
c0luRWRpdGFibGVJbWFnZSgpKTsKLSAgICBhd2FpdCBVSUhlbHBlci5kcmF3U3F1YXJlSW5FZGl0
YWJsZUltYWdlKCk7Ci0gICAgY29uc3QgbnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0
ZXJEcmF3aW5nID0gKGF3YWl0IFVJSGVscGVyLm51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFn
ZSgpKTsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MID0gYEhh
ZCAke2luaXRpYWxOdW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2V9IHN0cm9rZXMgaW4gZWRp
dGFibGUgaW1hZ2UgYmVmb3JlIGRyYXdpbmcuPGJyLz5IYWQgJHtudW1iZXJPZlN0cm9rZXNJbkVk
aXRhYmxlSW1hZ2VBZnRlckRyYXdpbmd9IHN0cm9rZSBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciBk
cmF3aW5nLmA7Ci0gICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHkgY29udGVudGVkaXRhYmxlPgotPGRpdiBpZD0ibG9nIj48L2Rpdj4KLTwv
Ym9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRh
YmxlLWltYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJs
ZS1pbWFnZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmJjYWYxNmNjZWEz
MWExZTBkNWRlY2QyMjlmZjliZjhmNWIzZDdhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRh
YmxlLWltYWdlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUVkaXRhYmxlSW1hZ2VzPXRydWUg
XSAtLT4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQot
Ci1hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4gewotICAgIGNvbnN0IGluaXRp
YWxOdW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UgPSAoYXdhaXQgVUlIZWxwZXIubnVtYmVy
T2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlKCkpOwotICAgIGF3YWl0IFVJSGVscGVyLmRyYXdTcXVh
cmVJbkVkaXRhYmxlSW1hZ2UoKTsKLSAgICBjb25zdCBudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxl
SW1hZ2VBZnRlckRyYXdpbmcgPSAoYXdhaXQgVUlIZWxwZXIubnVtYmVyT2ZTdHJva2VzSW5FZGl0
YWJsZUltYWdlKCkpOwotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhU
TUwgPSBgSGFkICR7aW5pdGlhbE51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZX0gc3Ryb2tl
cyBpbiBlZGl0YWJsZSBpbWFnZSBiZWZvcmUgZHJhd2luZy48YnIvPkhhZCAke251bWJlck9mU3Ry
b2tlc0luRWRpdGFibGVJbWFnZUFmdGVyRHJhd2luZ30gc3Ryb2tlIGluIGVkaXRhYmxlIGltYWdl
IGFmdGVyIGRyYXdpbmcuYDsKLSAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0pOwotPC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9ImxvZyI+PC9kaXY+Ci08aW1nIHgtYXBw
bGUtZWRpdGFibGUtaW1hZ2U9InRydWUiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4KLTwvYm9k
eT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2VkaXRhYmxlLWltYWdl
LWNyZWF0ZXMtYXR0YWNobWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2lt
YWdlcy9lZGl0YWJsZS1pbWFnZS1jcmVhdGVzLWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWI0YTk2YjFlMTEzMmI5NTg5ZDU4ZTJkZGNhMzFi
Mjk2NjJmNGY4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2VkaXRhYmxlLWltYWdlLWNyZWF0ZXMtYXR0YWNo
bWVudC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLUhhcyBhdHRh
Y2htZW50IGluc2lkZSBlZGl0YWJsZSBpbWFnZTogdHJ1ZS4KLUF0dGFjaG1lbnQgdHlwZSBhZnRl
ciBkcmF3aW5nIG9uIGVkaXRhYmxlIGltYWdlOiBpbWFnZS9wbmcuCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2VkaXRhYmxlLWltYWdlLWNyZWF0ZXMtYXR0YWNobWVu
dC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvZWRpdGFibGUtaW1hZ2UtY3JlYXRl
cy1hdHRhY2htZW50Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1MTJmNGUy
YjlhYmQzMTcyN2Q0NTM1ZmJjNjRhY2RkYjcyMzRkNzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvZWRpdGFi
bGUtaW1hZ2UtY3JlYXRlcy1hdHRhY2htZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNCAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUVk
aXRhYmxlSW1hZ2VzPXRydWUgZW5hYmxlQXR0YWNobWVudEVsZW1lbnQ9dHJ1ZSBdIC0tPgotPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWFkZEV2ZW50
TGlzdGVuZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7Ci0gICAgY29uc3QgYXR0YWNobWVudElkZW50
aWZpZXIgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQuZ2V0QXR0YWNobWVudElkZW50aWZpZXIoZG9j
dW1lbnQucXVlcnlTZWxlY3RvcigiaW1nIikpOwotICAgIGNvbnN0IGhhc0F0dGFjaG1lbnQgPSAh
IWF0dGFjaG1lbnRJZGVudGlmaWVyLmxlbmd0aDsKLSAgICBhd2FpdCBVSUhlbHBlci5kcmF3U3F1
YXJlSW5FZGl0YWJsZUltYWdlKCk7Ci0gICAgY29uc3QgYXR0YWNobWVudEluZm8gPSAoYXdhaXQg
VUlIZWxwZXIuYXR0YWNobWVudEluZm8oYXR0YWNobWVudElkZW50aWZpZXIpKTsKLSAgICBjb25z
dCBhdHRhY2htZW50VHlwZSA9IGF0dGFjaG1lbnRJbmZvLmNvbnRlbnRUeXBlOwotICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgPSBgSGFzIGF0dGFjaG1lbnQgaW5z
aWRlIGVkaXRhYmxlIGltYWdlOiAke2hhc0F0dGFjaG1lbnR9Ljxici8+QXR0YWNobWVudCB0eXBl
IGFmdGVyIGRyYXdpbmcgb24gZWRpdGFibGUgaW1hZ2U6ICR7YXR0YWNobWVudFR5cGV9LmA7Ci0g
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08ZGl2IGlkPSJsb2ciPjwvZGl2PgotPGltZyB4LWFwcGxlLWVkaXRhYmxlLWltYWdlIHdp
ZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvaW1hZ2VzL3Bhc3RlLWVkaXRhYmxlLWltYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3Bhc3RlLWVkaXRhYmxlLWltYWdlLWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDFkZjg2MWIyMDc0YWE3ZDdkMmYyZjU2Y2Yw
Yzc2N2E2MzljZWUxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9wYXN0ZS1lZGl0YWJsZS1pbWFnZS1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLUhhZCAxIHN0cm9rZSBpbiBl
ZGl0YWJsZSBpbWFnZSBhZnRlciBkcmF3aW5nLgotSGFkIDEgc3Ryb2tlIGluIGVkaXRhYmxlIGlt
YWdlIGFmdGVyIGNvcHlpbmcgYW5kIHBhc3RpbmcuCi1IYWQgMiBzdHJva2VzIGluIGVkaXRhYmxl
IGltYWdlIGFmdGVyIGRyYXdpbmcgb24gcGFzdGVkIGltYWdlLgotUGFzdGVkIGltYWdlIGdvdCBh
IG5ldyBhdHRhY2htZW50IElEOiB5ZXMuCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9pbWFnZXMvcGFzdGUtZWRpdGFibGUtaW1hZ2UuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRp
bmcvaW1hZ2VzL3Bhc3RlLWVkaXRhYmxlLWltYWdlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDZjMjY2ZGVhMzM4Y2YwYTM2ZDU0YjhhYTg0ZDZiOTRhZDQzNmI5ZWEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9pbWFnZXMvcGFzdGUtZWRpdGFibGUtaW1hZ2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDQ3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5h
YmxlRWRpdGFibGVJbWFnZXM9dHJ1ZSBlbmFibGVBdHRhY2htZW50RWxlbWVudD10cnVlIF0gLS0+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotYWRk
RXZlbnRMaXN0ZW5lcigibG9hZCIsIGFzeW5jICgpID0+IHsKLSAgICBjb25zdCBkaXYgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOwotCi0gICAgY29uc3Qgc2VsZWN0aW9uID0gd2lu
ZG93LmdldFNlbGVjdGlvbigpOwotCi0gICAgc2VsZWN0aW9uLnNldFBvc2l0aW9uKGRpdiwgMCk7
Ci0gICAgdGVzdFJ1bm5lci5leGVjQ29tbWFuZCgiSW5zZXJ0RWRpdGFibGVJbWFnZSIpOwotCi0g
ICAgYXdhaXQgVUlIZWxwZXIuZHJhd1NxdWFyZUluRWRpdGFibGVJbWFnZSgpOwotICAgIGNvbnN0
IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyRHJhd2luZyA9IChhd2FpdCBVSUhl
bHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7Ci0gICAgY29uc3QgZmlyc3RJ
bWFnZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIpOwotICAgIGNvbnN0IGluaXRpYWxB
dHRhY2htZW50SUQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQuZ2V0QXR0YWNobWVudElkZW50aWZp
ZXIoZmlyc3RJbWFnZSk7Ci0KLSAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBj
YW52YXMgZ2V0cyBhIG5vbi16ZXJvIHNpemUgYmVmb3JlIHRyeWluZyB0byBzZXJpYWxpemUgaXQu
Ci0gICAgYXdhaXQgVUlIZWxwZXIuZW5zdXJlUHJlc2VudGF0aW9uVXBkYXRlKCk7Ci0KLSAgICBz
ZWxlY3Rpb24uc2V0QmFzZUFuZEV4dGVudChkaXYuZmlyc3RDaGlsZCwgMCwgZGl2LmZpcnN0Q2hp
bGQsIDEpOwotICAgIHRlc3RSdW5uZXIuZXhlY0NvbW1hbmQoIkNvcHkiKTsKLQotICAgIHNlbGVj
dGlvbi5jb2xsYXBzZVRvRW5kKCk7Ci0gICAgdGVzdFJ1bm5lci5leGVjQ29tbWFuZCgiUGFzdGUi
KTsKLQotICAgIGZpcnN0SW1hZ2UucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChmaXJzdEltYWdl
KTsKLQotICAgIGNvbnN0IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyUGFzdGlu
ZyA9IChhd2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7Ci0K
LSAgICBhd2FpdCBVSUhlbHBlci5kcmF3U3F1YXJlSW5FZGl0YWJsZUltYWdlKCk7Ci0gICAgY29u
c3QgbnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJTZWNvbmREcmF3aW5nID0gKGF3
YWl0IFVJSGVscGVyLm51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSgpKTsKLSAgICBjb25z
dCBwYXN0ZWRBdHRhY2htZW50SUQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQuZ2V0QXR0YWNobWVu
dElkZW50aWZpZXIoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaW1nIikpOwotCi0gICAgY29uc3Qg
YXR0YWNobWVudElEc0FyZURpZmZlcmVudCA9IChpbml0aWFsQXR0YWNobWVudElEICE9IHBhc3Rl
ZEF0dGFjaG1lbnRJRCkgPyAieWVzIiA6ICJubyI7Ci0KLSAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibG9nIikuaW5uZXJIVE1MID0gYEhhZCAke251bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJ
bWFnZUFmdGVyRHJhd2luZ30gc3Ryb2tlIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRyYXdpbmcu
PGJyLz5IYWQgJHtudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRlclBhc3Rpbmd9IHN0
cm9rZSBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciBjb3B5aW5nIGFuZCBwYXN0aW5nLjxici8+SGFk
ICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJTZWNvbmREcmF3aW5nfSBzdHJv
a2VzIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRyYXdpbmcgb24gcGFzdGVkIGltYWdlLjxici8+
UGFzdGVkIGltYWdlIGdvdCBhIG5ldyBhdHRhY2htZW50IElEOiAke2F0dGFjaG1lbnRJRHNBcmVE
aWZmZXJlbnR9LmA7Ci0gICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHkgY29udGVudGVkaXRhYmxlPjxkaXYgaWQ9ImxvZyI+PGJyLz48L2Rp
dj48ZGl2IGlkPSJ0ZXN0Ij48YnIvPjwvZGl2PjwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvaW1hZ2VzL3JlZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLW1haW50YWlucy1z
dHJva2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3JlZG8taW5z
ZXJ0LWVkaXRhYmxlLWltYWdlLW1haW50YWlucy1zdHJva2VzLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmE3Mzg2MmM2MTEzNjY0ZmQ5ZWVjNDQ3ZjQ3NGNiNWYx
Y2NlYzQyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9yZWRvLWluc2VydC1lZGl0YWJsZS1pbWFnZS1tYWlu
dGFpbnMtc3Ryb2tlcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAK
LQotSGFkIDAgc3Ryb2tlcyBpbiBlZGl0YWJsZSBpbWFnZSBiZWZvcmUgZHJhd2luZy4KLUhhZCAx
IHN0cm9rZSBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciBkcmF3aW5nLgotSGFkIDAgc3Ryb2tlcyBp
biBlZGl0YWJsZSBpbWFnZSBhZnRlciB1bmRvLgotSGFkIDEgc3Ryb2tlIGluIGVkaXRhYmxlIGlt
YWdlIGFmdGVyIHJlZG8uCi1IYWQgMiBzdHJva2VzIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRy
YXdpbmcgYWdhaW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9yZWRv
LWluc2VydC1lZGl0YWJsZS1pbWFnZS1tYWludGFpbnMtc3Ryb2tlcy5odG1sIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9pbWFnZXMvcmVkby1pbnNlcnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0
cm9rZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY5YWRjNDgyMzc4OTky
ZGQ0YWMyZTVmZGMyMGI5OTBhYjdiYWRjNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9yZWRvLWluc2VydC1l
ZGl0YWJsZS1pbWFnZS1tYWludGFpbnMtc3Ryb2tlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MjkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFi
bGVFZGl0YWJsZUltYWdlcz10cnVlIF0gLS0+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKLX0KLQotYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGFzeW5jICgp
ID0+IHsKLSAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZG9jdW1lbnQuYm9k
eSwgMCk7Ci0gICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydEVkaXRhYmxlSW1hZ2UiKTsK
LSAgICBjb25zdCBpbml0aWFsTnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlID0gKGF3YWl0
IFVJSGVscGVyLm51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSgpKTsKLSAgICBhd2FpdCBV
SUhlbHBlci5kcmF3U3F1YXJlSW5FZGl0YWJsZUltYWdlKCk7Ci0gICAgY29uc3QgbnVtYmVyT2ZT
dHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJEcmF3aW5nID0gKGF3YWl0IFVJSGVscGVyLm51bWJl
ck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSgpKTsKLSAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgn
dW5kbycsIGZhbHNlLCBudWxsKTsKLSAgICBjb25zdCBudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxl
SW1hZ2VBZnRlclVuZG8gPSAoYXdhaXQgVUlIZWxwZXIubnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJs
ZUltYWdlKCkpOwotICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdyZWRvJywgZmFsc2UsIG51bGwp
OwotICAgIGNvbnN0IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyUmVkbyA9IChh
d2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7Ci0gICAgYXdh
aXQgVUlIZWxwZXIuZHJhd1NxdWFyZUluRWRpdGFibGVJbWFnZSgpOwotICAgIGNvbnN0IG51bWJl
ck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyU2Vjb25kRHJhd2luZyA9IChhd2FpdCBVSUhl
bHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7Ci0gICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCA9IGBIYWQgJHtpbml0aWFsTnVtYmVyT2ZTdHJv
a2VzSW5FZGl0YWJsZUltYWdlfSBzdHJva2VzIGluIGVkaXRhYmxlIGltYWdlIGJlZm9yZSBkcmF3
aW5nLjxici8+SGFkICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJEcmF3aW5n
fSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJhd2luZy48YnIvPkhhZCAke251bWJl
ck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyVW5kb30gc3Ryb2tlcyBpbiBlZGl0YWJsZSBp
bWFnZSBhZnRlciB1bmRvLjxici8+SGFkICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdl
QWZ0ZXJSZWRvfSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgcmVkby48YnIvPkhhZCAk
e251bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyU2Vjb25kRHJhd2luZ30gc3Ryb2tl
cyBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciBkcmF3aW5nIGFnYWluLmA7Ci0gICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci19KTsKLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgY29udGVudGVk
aXRhYmxlPgotPGRpdiBpZD0ibG9nIj48L2Rpdj4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3JlcGFyZW50LWVkaXRhYmxlLWltYWdlLW1haW50YWlucy1z
dHJva2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3JlcGFyZW50
LWVkaXRhYmxlLWltYWdlLW1haW50YWlucy1zdHJva2VzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzk2ODdmZDMyYWQ5NDliMmY5MTlmZjkxMmNlODVkYTZiNDY2
Yjc2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9yZXBhcmVudC1lZGl0YWJsZS1pbWFnZS1tYWludGFpbnMt
c3Ryb2tlcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLUhhZCAx
IHN0cm9rZSBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciBkcmF3aW5nLgotSGFkIDEgc3Ryb2tlIGlu
IGVkaXRhYmxlIGltYWdlIGFmdGVyIHJlcGFyZW50aW5nIGl0IHVuZGVyIGFub3RoZXIgZWxlbWVu
dC4KLSAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3JlcGFyZW50LWVk
aXRhYmxlLWltYWdlLW1haW50YWlucy1zdHJva2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L2ltYWdlcy9yZXBhcmVudC1lZGl0YWJsZS1pbWFnZS1tYWludGFpbnMtc3Ryb2tlcy5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmRmMDBmMmNlZDkyYTYwZDMyYjY5NDUzYjhk
ZDYyNDYzNDYwMjBhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3JlcGFyZW50LWVkaXRhYmxlLWltYWdlLW1h
aW50YWlucy1zdHJva2VzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUVkaXRhYmxlSW1hZ2Vz
PXRydWUgXSAtLT4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxw
ZXIuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwotfQotCi1hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4gewotICAgIGF3YWl0
IFVJSGVscGVyLmRyYXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2UoKTsKLSAgICBjb25zdCBudW1iZXJP
ZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRlckRyYXdpbmcgPSAoYXdhaXQgVUlIZWxwZXIubnVt
YmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlKCkpOwotICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJvdGhlciIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0YWJs
ZUltYWdlIikpOwotICAgIGNvbnN0IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVy
UmVwYXJlbnRpbmcgPSAoYXdhaXQgVUlIZWxwZXIubnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUlt
YWdlKCkpOwotCi0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCA9
IGBIYWQgJHtudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRlckRyYXdpbmd9IHN0cm9r
ZSBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciBkcmF3aW5nLjxici8+SGFkICR7bnVtYmVyT2ZTdHJv
a2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJSZXBhcmVudGluZ30gc3Ryb2tlIGluIGVkaXRhYmxlIGlt
YWdlIGFmdGVyIHJlcGFyZW50aW5nIGl0IHVuZGVyIGFub3RoZXIgZWxlbWVudC5gOwotICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PGRpdiBpZD0ibG9nIj48L2Rpdj4KLTxpbWcgaWQ9ImVkaXRhYmxlSW1hZ2UiIHgtYXBwbGUtZWRp
dGFibGUtaW1hZ2U9InRydWUiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4KLTxkaXYgaWQ9Im90
aGVyIj48L2Rpdj4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1h
Z2VzL3VuZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvaW1hZ2VzL3VuZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQyNzA4ZTJiZmRjY2YwOWZkNDQ3MzcyOTAy
MjkyZWNjZGNlNzliZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy91bmRvLWluc2VydC1lZGl0YWJsZS1pbWFn
ZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1UaGlzIHRlc3Qg
aW5zZXJ0cyBhIGVkaXRhYmxlIGltYWdlLCBwZXJmb3JtcyBhbiB1bmRvLCB0aGVuIGEgcmVkbywg
ZW5zdXJpbmcgdGhhdCB0aGUgc2VsZWN0aW9uIHJlbWFpbnMgYWZ0ZXIgdGhlIGltYWdlIHdoZW4g
cmUtZG9uZS4KLQotYmVmb3JlIHVuZG86Ci18ICJIZWxsbywgd29ybGQhIgotfCA8aW1nPgotfCAg
IGhlaWdodD0iMzAwcHgiCi18ICAgc3R5bGU9ImRpc3BsYXk6IGJsb2NrIgotfCAgIHdpZHRoPSIx
MDAlIgotfCAgIHgtYXBwbGUtZWRpdGFibGUtaW1hZ2U9IiIKLXwgICA8c2hhZG93OnJvb3Q+Ci18
ICAgICA8YXR0YWNobWVudD4KLXwgICAgICAgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFu
dDsiCi18IDwjc2VsZWN0aW9uLWNhcmV0PgotCi1hZnRlciB1bmRvOgotfCAiSGVsbG8sIHdvcmxk
ITwjc2VsZWN0aW9uLWNhcmV0PiIKLQotYWZ0ZXIgcmVkbzoKLXwgIkhlbGxvLCB3b3JsZCEiCi18
IDxpbWc+Ci18ICAgaGVpZ2h0PSIzMDBweCIKLXwgICBzdHlsZT0iZGlzcGxheTogYmxvY2siCi18
ICAgd2lkdGg9IjEwMCUiCi18ICAgeC1hcHBsZS1lZGl0YWJsZS1pbWFnZT0iIgotfCAgIDxzaGFk
b3c6cm9vdD4KLXwgICAgIDxhdHRhY2htZW50PgotfCAgICAgICBzdHlsZT0iZGlzcGxheTogbm9u
ZSAhaW1wb3J0YW50OyIKLXwgPCNzZWxlY3Rpb24tY2FyZXQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL2ltYWdlcy91bmRvLWluc2VydC1lZGl0YWJsZS1pbWFnZS5odG1sIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvdW5kby1pbnNlcnQtZWRpdGFibGUtaW1hZ2UuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmJmMTY1NTFjMTRkNTdlZGIxM2YzNjNmZDJj
NmI0ZGE2MWIyZTdjYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy91bmRvLWluc2VydC1lZGl0YWJsZS1pbWFn
ZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+PCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVFZGl0YWJsZUltYWdlcz10cnVlIF0gLS0+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMiIHR5
cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBjb250ZW50ZWRp
dGFibGU+Ci08ZGl2IGlkPSJ0ZXN0Ij5IZWxsbywgd29ybGQhPC9kaXY+Ci08c2NyaXB0PgotY29u
c3QgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKLQotd2luZG93LmdldFNl
bGVjdGlvbigpLnNldFBvc2l0aW9uKGRpdiwgMTMpOwotZG9jdW1lbnQuZXhlY0NvbW1hbmQoIklu
c2VydEVkaXRhYmxlSW1hZ2UiKTsKLQotTWFya3VwLmRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgaW5z
ZXJ0cyBhIGVkaXRhYmxlIGltYWdlLCBwZXJmb3JtcyBhbiB1bmRvLCB0aGVuIGEgcmVkbywgZW5z
dXJpbmcgdGhhdCB0aGUgc2VsZWN0aW9uIHJlbWFpbnMgYWZ0ZXIgdGhlIGltYWdlIHdoZW4gcmUt
ZG9uZS4iKQotTWFya3VwLmR1bXAoZGl2LCAiYmVmb3JlIHVuZG8iKTsKLWRvY3VtZW50LmV4ZWND
b21tYW5kKCd1bmRvJywgZmFsc2UsIG51bGwpOwotTWFya3VwLmR1bXAoZGl2LCAiYWZ0ZXIgdW5k
byIpOwotZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ3JlZG8nLCBmYWxzZSwgbnVsbCk7Ci1NYXJrdXAu
ZHVtcChkaXYsICJhZnRlciByZWRvIik7Ci08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9yZXNvdXJj
ZXMvdWktaGVscGVyLmpzCmluZGV4IGQ4MTRiZGVhNWU0YTFjMDI3ZGFjMzhjNzVhMWU1Yzg5ODVk
ZjRhNmEuLmFmNDI0Y2I0MWE5MzQ1N2QzOTU0MTFmZjVlNGFhMzU4OGNkMzVhNzkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKKysrIGIvTGF5b3V0VGVzdHMv
cmVzb3VyY2VzL3VpLWhlbHBlci5qcwpAQCAtOTY2LDE0ICs5NjYsNiBAQCB3aW5kb3cuVUlIZWxw
ZXIgPSBjbGFzcyBVSUhlbHBlciB7CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIHN0YXRpYyBk
cmF3U3F1YXJlSW5FZGl0YWJsZUltYWdlKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5pc1dl
YktpdDIoKSkKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLQotICAgICAg
ICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGB1
aUNvbnRyb2xsZXIuZHJhd1NxdWFyZUluRWRpdGFibGVJbWFnZSgpYCwgcmVzb2x2ZSkpOwotICAg
IH0KLQogICAgIHN0YXRpYyBzdHlsdXNUYXBBdCh4LCB5LCBtb2RpZmllcnM9W10pCiAgICAgewog
ICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkpCkBAIC05ODcsMTggKzk3OSw2IEBAIHdpbmRv
dy5VSUhlbHBlciA9IGNsYXNzIFVJSGVscGVyIHsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAg
c3RhdGljIG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSgpCi0gICAgewotICAgICAgICBp
ZiAoIXRoaXMuaXNXZWJLaXQyKCkpCi0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZl
KCk7Ci0KLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgKCgpID0+IHsKLSAgICAgICAgICAgICAgICB1aUNv
bnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSh1aUNvbnRyb2xsZXIubnVtYmVyT2ZTdHJva2VzSW5F
ZGl0YWJsZUltYWdlKTsKLSAgICAgICAgICAgIH0pKClgLCBudW1iZXJBc1N0cmluZyA9PiByZXNv
bHZlKHBhcnNlSW50KG51bWJlckFzU3RyaW5nLCAxMCkpKQotICAgICAgICB9KTsKLSAgICB9Ci0K
ICAgICBzdGF0aWMgYXR0YWNobWVudEluZm8oYXR0YWNobWVudElkZW50aWZpZXIpCiAgICAgewog
ICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>