<?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>163141</bug_id>
          
          <creation_ts>2016-10-07 14:06:23 -0700</creation_ts>
          <short_desc>Move ViewGestureController files to more accurate locations</short_desc>
          <delta_ts>2016-10-07 14:15:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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></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>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1237780</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-10-07 14:06:23 -0700</bug_when>
    <thetext>Move ViewGestureController files to more accurate locations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237781</commentid>
    <comment_count>1</comment_count>
      <attachid>290966</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-10-07 14:06:37 -0700</bug_when>
    <thetext>Created attachment 290966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237782</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-07 14:07:51 -0700</bug_when>
    <thetext>Attachment 290966 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Cocoa/ViewGestureController.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKit2/UIProcess/Cocoa/ViewGestureController.h:47:  _UINavigationInteractiveTransitionBase is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/ViewGestureController.h:48:  _UIViewControllerOneToOneTransitionContext is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/ViewGestureController.h:49:  _UIViewControllerTransitionContext is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/ViewGestureController.h:104:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/ViewGestureController.h:269:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 6 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237789</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-10-07 14:15:02 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/206936</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290966</attachid>
            <date>2016-10-07 14:06:37 -0700</date>
            <delta_ts>2016-10-07 14:07:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163141-20161007140321.patch</filename>
            <type>text/plain</type>
            <size>54829</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2OTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWEzOWE0OGZjYjI0Y2Rm
YTc5NTBhYTI3ZTExNTBkZGIyNmFhMmRkOC4uMTZmNjVkZjZmOTNlYjRlMWE5YjMzYjU3MmU2OGQw
Y2I1ZTY2OTUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE4IEBACiAyMDE2LTEwLTA3ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCisgICAgICAgIE1vdmUgVmlld0dl
c3R1cmVDb250cm9sbGVyIGZpbGVzIHRvIG1vcmUgYWNjdXJhdGUgbG9jYXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMxNDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3Bw
OiBSZW5hbWVkIGZyb20gVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAuCisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oOiBSZW5hbWVkIGZy
b20gVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluOiBSZW5hbWVkIGZy
b20gVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4uCisgICAg
ICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisyMDE2LTEwLTA3ICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCiAgICAgICAgIEFkb3B0IEJs
b2NrUHRyIGluIFZpZXdHZXN0dXJlQ29udHJvbGxlcgogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMTMyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UK
aW5kZXggNGFhZTE0MGViYWM5OGJmZTJkYTA2MWE2Y2FlNDVmYjUxY2IyMzFkNi4uMDdmODVmZmFl
YmFmMTljNTg5Y2VlODIxMzg4ZDViNTlhZTljMjMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21h
a2UKQEAgLTE1NCw3ICsxNTQsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBT
aGFyZWQvbWFjL1dlYkhpdFRlc3RSZXN1bHREYXRhLm1tCiAgICAgU2hhcmVkL21hYy9XZWJNZW1v
cnlTYW1wbGVyLm1hYy5tbQogCi0gICAgVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5j
cHAKICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAogCiAg
ICAgVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0yMzMs
NiArMjMyLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0Nv
Y29hL1Nlc3Npb25TdGF0ZUNvZGluZy5tbQogICAgIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lm1tCiAgICAgVUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MubW0KKyAgICBVSVByb2Nlc3Mv
Q29jb2EvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9Db2NvYS9XS1Jl
bG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlci5tbQogICAgIFVJUHJvY2Vzcy9Db2NvYS9X
S1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbQogICAgIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tCkBAIC00NjksMTEgKzQ2OSwxMSBAQCBzZXQoV2Vi
S2l0Ml9GT1JXQVJESU5HX0hFQURFUlNfRklMRVMKIGxpc3QoQVBQRU5EIFdlYktpdDJfTUVTU0FH
RVNfSU5fRklMRVMKICAgICBTaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1l
c3NhZ2VzLmluCiAKKyAgICBVSVByb2Nlc3MvQ29jb2EvVmlld0dlc3R1cmVDb250cm9sbGVyLm1l
c3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eS5tZXNzYWdlcy5pbgogCiAgICAgVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVBy
b3h5Lm1lc3NhZ2VzLmluCi0gICAgVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
bWVzc2FnZXMuaW4KIAogICAgIFdlYlByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODU2Y2NhN2EzZWI3YzcwNTRmYzg4MjY3OGY0YWY3MDQ3NDE2MjdkNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
Y3BwCkBAIC0wLDAgKzEsMjg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIlZpZXdHZXN0dXJlQ29udHJvbGxlci5oIgorCisjaW1wb3J0ICJMb2dnaW5n
LmgiCisjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgiCisjaW1wb3J0
ICJWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5
LmgiCisjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbXBvcnQgPHd0Zi9NYXRoRXh0cmFz
Lmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86OnNlY29uZHMgc3dpcGVTbmFwc2hv
dFJlbW92YWxXYXRjaGRvZ0FmdGVyRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RHVyYXRpb24g
PSAzczsKK3N0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHN3aXBlU25hcHNo
b3RSZW1vdmFsQWN0aXZlTG9hZE1vbml0b3JpbmdJbnRlcnZhbCA9IDI1MG1zOworCisjaWYgUExB
VEZPUk0oTUFDKQorc3RhdGljIGNvbnN0IHN0ZDo6Y2hyb25vOjpzZWNvbmRzIHN3aXBlU25hcHNo
b3RSZW1vdmFsV2F0Y2hkb2dEdXJhdGlvbiA9IDVzOworI2Vsc2UKK3N0YXRpYyBjb25zdCBzdGQ6
OmNocm9ubzo6c2Vjb25kcyBzd2lwZVNuYXBzaG90UmVtb3ZhbFdhdGNoZG9nRHVyYXRpb24gPSAz
czsKKyNlbmRpZgorCitzdGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgVmlld0dlc3R1cmVDb250cm9s
bGVyKj4mIHZpZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JBbGxQYWdlcygpCit7CisgICAgLy8gVGhl
IGtleSBpbiB0aGlzIG1hcCBpcyB0aGUgYXNzb2NpYXRlZCBwYWdlIElELgorICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoTWFwPHVpbnQ2NF90LCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPj4g
dmlld0dlc3R1cmVDb250cm9sbGVyczsKKyAgICByZXR1cm4gdmlld0dlc3R1cmVDb250cm9sbGVy
cy5nZXQoKTsKK30KKworVmlld0dlc3R1cmVDb250cm9sbGVyOjpWaWV3R2VzdHVyZUNvbnRyb2xs
ZXIoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCisgICAgOiBtX3dlYlBhZ2VQcm94eSh3ZWJQ
YWdlUHJveHkpCisgICAgLCBtX3N3aXBlQWN0aXZlTG9hZE1vbml0b3JpbmdUaW1lcihSdW5Mb29w
OjptYWluKCksIHRoaXMsICZWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmNoZWNrRm9yQWN0aXZlTG9h
ZHMpCisjaWYgUExBVEZPUk0oTUFDKQorICAgICwgbV9wZW5kaW5nU3dpcGVUcmFja2VyKHdlYlBh
Z2VQcm94eSwgc3RkOjpiaW5kKCZWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnRyYWNrU3dpcGVHZXN0
dXJlLCB0aGlzLCBzdGQ6OnBsYWNlaG9sZGVyczo6XzEsIHN0ZDo6cGxhY2Vob2xkZXJzOjpfMikp
CisjZW5kaWYKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCksICp0aGlzKTsKKworICAgIHZpZXdHZXN0dXJlQ29u
dHJvbGxlcnNGb3JBbGxQYWdlcygpLmFkZCh3ZWJQYWdlUHJveHkucGFnZUlEKCksIHRoaXMpOwor
fQorCitWaWV3R2VzdHVyZUNvbnRyb2xsZXI6On5WaWV3R2VzdHVyZUNvbnRyb2xsZXIoKQorewor
ICAgIHBsYXRmb3JtVGVhcmRvd24oKTsKKworICAgIHZpZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JB
bGxQYWdlcygpLnJlbW92ZShtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisKKyAgICBtX3dlYlBh
Z2VQcm94eS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFn
ZUlEKCkpOworfQorCitWaWV3R2VzdHVyZUNvbnRyb2xsZXIqIFZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6Z2VzdHVyZUNvbnRyb2xsZXJGb3JQYWdlKHVpbnQ2NF90IHBhZ2VJRCkKK3sKKyAgICBhdXRv
IGdlc3R1cmVDb250cm9sbGVySXRlciA9IHZpZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JBbGxQYWdl
cygpLmZpbmQocGFnZUlEKTsKKyAgICBpZiAoZ2VzdHVyZUNvbnRyb2xsZXJJdGVyID09IHZpZXdH
ZXN0dXJlQ29udHJvbGxlcnNGb3JBbGxQYWdlcygpLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gZ2VzdHVyZUNvbnRyb2xsZXJJdGVyLT52YWx1ZTsKK30KKwordm9p
ZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZv
ck1haW5GcmFtZSgpCit7CisgICAgaWYgKCFtX3NuYXBzaG90UmVtb3ZhbFRyYWNrZXIuZXZlbnRP
Y2N1cnJlZChTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpWaXN1YWxseU5vbkVtcHR5TGF5b3V0KSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9zbmFwc2hvdFJlbW92YWxUcmFja2VyLmNhbmNlbE91
dHN0YW5kaW5nRXZlbnQoU25hcHNob3RSZW1vdmFsVHJhY2tlcjo6TWFpbkZyYW1lTG9hZCk7Cisg
ICAgbV9zbmFwc2hvdFJlbW92YWxUcmFja2VyLmNhbmNlbE91dHN0YW5kaW5nRXZlbnQoU25hcHNo
b3RSZW1vdmFsVHJhY2tlcjo6U3VicmVzb3VyY2VMb2Fkcyk7CisgICAgbV9zbmFwc2hvdFJlbW92
YWxUcmFja2VyLnN0YXJ0V2F0Y2hkb2coc3dpcGVTbmFwc2hvdFJlbW92YWxXYXRjaGRvZ0FmdGVy
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RHVyYXRpb24pOworfQorCit2b2lkIFZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6ZGlkUmVwYWludEFmdGVyTmF2aWdhdGlvbigpCit7CisgICAgbV9zbmFw
c2hvdFJlbW92YWxUcmFja2VyLmV2ZW50T2NjdXJyZWQoU25hcHNob3RSZW1vdmFsVHJhY2tlcjo6
UmVwYWludEFmdGVyTmF2aWdhdGlvbik7Cit9CisKK3ZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVy
OjpkaWRIaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCgpCit7CisgICAgbV9zbmFwc2hvdFJlbW92
YWxUcmFja2VyLmV2ZW50T2NjdXJyZWQoU25hcHNob3RSZW1vdmFsVHJhY2tlcjo6UmVuZGVyVHJl
ZVNpemVUaHJlc2hvbGQpOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkUmVz
dG9yZVNjcm9sbFBvc2l0aW9uKCkKK3sKKyAgICBtX3NuYXBzaG90UmVtb3ZhbFRyYWNrZXIuZXZl
bnRPY2N1cnJlZChTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpTY3JvbGxQb3NpdGlvblJlc3RvcmF0
aW9uKTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZFJlYWNoTWFpbkZyYW1l
TG9hZFRlcm1pbmFsU3RhdGUoKQoreworICAgIGlmICghbV9zbmFwc2hvdFJlbW92YWxUcmFja2Vy
LmV2ZW50T2NjdXJyZWQoU25hcHNob3RSZW1vdmFsVHJhY2tlcjo6TWFpbkZyYW1lTG9hZCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIENvbWluZyBiYWNrIGZyb20gdGhlIHBhZ2UgY2FjaGUg
d2lsbCByZXN1bHQgaW4gZ2V0dGluZyBhIGxvYWQgZXZlbnQsIGJ1dCBubyBmaXJzdCB2aXN1YWxs
eSBub24tZW1wdHkgbGF5b3V0LgorICAgIC8vIFdlYkNvcmUgY29uc2lkZXJzIGEgbG9hZGVkIGRv
Y3VtZW50IGVub3VnaCB0byBiZSBjb25zaWRlcmVkIHZpc3VhbGx5IG5vbi1lbXB0eSwgc28gdGhh
dCdzIGdvb2QKKyAgICAvLyBlbm91Z2ggZm9yIHVzIHRvby4KKyAgICBtX3NuYXBzaG90UmVtb3Zh
bFRyYWNrZXIuY2FuY2VsT3V0c3RhbmRpbmdFdmVudChTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpW
aXN1YWxseU5vbkVtcHR5TGF5b3V0KTsKKworICAgIC8vIFdpdGggV2ViLXByb2Nlc3Mgc2Nyb2xs
aW5nLCB3ZSBjaGVjayBpZiB0aGUgc2Nyb2xsIHBvc2l0aW9uIHJlc3RvcmF0aW9uIHN1Y2NlZWRl
ZCBieSBjb21wYXJpbmcgdGhlCisgICAgLy8gcmVxdWVzdGVkIGFuZCBhY3R1YWwgc2Nyb2xsIHBv
c2l0aW9uLiBJdCdzIHBvc3NpYmxlIHRoYXQgd2Ugd2lsbCBuZXZlciBzdWNjZWVkIGluIHJlc3Rv
cmluZworICAgIC8vIHRoZSBleGFjdCBzY3JvbGwgcG9zaXRpb24gd2Ugd2FudGVkLCBpbiB0aGUg
Y2FzZSBvZiBhIGR5bmFtaWMgcGFnZSwgYnV0IHdlIGtub3cgdGhhdCBieQorICAgIC8vIG1haW4g
ZnJhbWUgbG9hZCB0aW1lIHRoYXQgd2UndmUgZ290dGVuIGFzIGNsb3NlIGFzIHdlJ3JlIGdvaW5n
IHRvIGdldCwgc28gc3RvcCB3YWl0aW5nLgorICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gZG8gdGhp
cyB3aXRoIFVJLXNpZGUgc2Nyb2xsaW5nIGJlY2F1c2Ugc2Nyb2xsIHBvc2l0aW9uIHJlc3RvcmF0
aW9uIGlzIGJha2VkIGludG8gdGhlIHRyYW5zYWN0aW9uLgorICAgIC8vIEZJWE1FOiBJdCBzZWVt
cyBmYWlybHkgZGlydHkgdG8gdHlwZS1jaGVjayB0aGUgRHJhd2luZ0FyZWEgbGlrZSB0aGlzLgor
ICAgIGlmIChhdXRvIGRyYXdpbmdBcmVhID0gbV93ZWJQYWdlUHJveHkuZHJhd2luZ0FyZWEoKSkg
eworICAgICAgICBpZiAoaXM8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oZHJhd2lu
Z0FyZWEpKQorICAgICAgICAgICAgbV9zbmFwc2hvdFJlbW92YWxUcmFja2VyLmNhbmNlbE91dHN0
YW5kaW5nRXZlbnQoU25hcHNob3RSZW1vdmFsVHJhY2tlcjo6U2Nyb2xsUG9zaXRpb25SZXN0b3Jh
dGlvbik7CisgICAgfQorCisgICAgY2hlY2tGb3JBY3RpdmVMb2FkcygpOworfQorCit2b2lkIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvck1haW5GcmFt
ZShTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSB0eXBlKQoreworICAgIGJvb2wgY2FuY2VsbGVk
T3V0c3RhbmRpbmdFdmVudCA9IGZhbHNlOworCisgICAgLy8gU2FtZS1kb2N1bWVudCBuYXZpZ2F0
aW9ucyBkb24ndCBoYXZlIGEgbWFpbiBmcmFtZSBsb2FkIG9yIGZpcnN0IHZpc3VhbGx5IG5vbi1l
bXB0eSBsYXlvdXQuCisgICAgY2FuY2VsbGVkT3V0c3RhbmRpbmdFdmVudCB8PSBtX3NuYXBzaG90
UmVtb3ZhbFRyYWNrZXIuY2FuY2VsT3V0c3RhbmRpbmdFdmVudChTbmFwc2hvdFJlbW92YWxUcmFj
a2VyOjpNYWluRnJhbWVMb2FkKTsKKyAgICBjYW5jZWxsZWRPdXRzdGFuZGluZ0V2ZW50IHw9IG1f
c25hcHNob3RSZW1vdmFsVHJhY2tlci5jYW5jZWxPdXRzdGFuZGluZ0V2ZW50KFNuYXBzaG90UmVt
b3ZhbFRyYWNrZXI6OlZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpOworCisgICAgaWYgKCFjYW5jZWxs
ZWRPdXRzdGFuZGluZ0V2ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAodHlwZSAhPSBT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUmVwbGFjZSAmJiB0eXBlICE9IFNhbWVE
b2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVQb3ApCisgICAgICAgIHJldHVybjsKKworICAg
IGNoZWNrRm9yQWN0aXZlTG9hZHMoKTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OmNoZWNrRm9yQWN0aXZlTG9hZHMoKQoreworICAgIGlmIChtX3dlYlBhZ2VQcm94eS5wYWdlTG9h
ZFN0YXRlKCkuaXNMb2FkaW5nKCkpIHsKKyAgICAgICAgaWYgKCFtX3N3aXBlQWN0aXZlTG9hZE1v
bml0b3JpbmdUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgbV9zd2lwZUFjdGl2ZUxvYWRN
b25pdG9yaW5nVGltZXIuc3RhcnRSZXBlYXRpbmcoc3dpcGVTbmFwc2hvdFJlbW92YWxBY3RpdmVM
b2FkTW9uaXRvcmluZ0ludGVydmFsKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
c3dpcGVBY3RpdmVMb2FkTW9uaXRvcmluZ1RpbWVyLnN0b3AoKTsKKyAgICBtX3NuYXBzaG90UmVt
b3ZhbFRyYWNrZXIuZXZlbnRPY2N1cnJlZChTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpTdWJyZXNv
dXJjZUxvYWRzKTsKK30KKworVmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxU
cmFja2VyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyKCkKKyAgICA6IG1fd2F0Y2hkb2dUaW1lcihS
dW5Mb29wOjptYWluKCksIHRoaXMsICZTbmFwc2hvdFJlbW92YWxUcmFja2VyOjp3YXRjaGRvZ1Rp
bWVyRmlyZWQpCit7Cit9CisKK1N0cmluZyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90
UmVtb3ZhbFRyYWNrZXI6OmV2ZW50c0Rlc2NyaXB0aW9uKEV2ZW50cyBldmVudCkKK3sKKyAgICBT
dHJpbmdCdWlsZGVyIGRlc2NyaXB0aW9uOworCisgICAgaWYgKGV2ZW50ICYgVmlld0dlc3R1cmVD
b250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpWaXN1YWxseU5vbkVtcHR5TGF5b3V0
KQorICAgICAgICBkZXNjcmlwdGlvbi5hcHBlbmQoIlZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgIik7
CisKKyAgICBpZiAoZXZlbnQgJiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3Zh
bFRyYWNrZXI6OlJlbmRlclRyZWVTaXplVGhyZXNob2xkKQorICAgICAgICBkZXNjcmlwdGlvbi5h
cHBlbmQoIlJlbmRlclRyZWVTaXplVGhyZXNob2xkICIpOworCisgICAgaWYgKGV2ZW50ICYgVmll
d0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpSZXBhaW50QWZ0ZXJO
YXZpZ2F0aW9uKQorICAgICAgICBkZXNjcmlwdGlvbi5hcHBlbmQoIlJlcGFpbnRBZnRlck5hdmln
YXRpb24gIik7CisKKyAgICBpZiAoZXZlbnQgJiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBz
aG90UmVtb3ZhbFRyYWNrZXI6Ok1haW5GcmFtZUxvYWQpCisgICAgICAgIGRlc2NyaXB0aW9uLmFw
cGVuZCgiTWFpbkZyYW1lTG9hZCAiKTsKKworICAgIGlmIChldmVudCAmIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6U3VicmVzb3VyY2VMb2FkcykKKyAgICAg
ICAgZGVzY3JpcHRpb24uYXBwZW5kKCJTdWJyZXNvdXJjZUxvYWRzICIpOworCisgICAgaWYgKGV2
ZW50ICYgVmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpTY3Jv
bGxQb3NpdGlvblJlc3RvcmF0aW9uKQorICAgICAgICBkZXNjcmlwdGlvbi5hcHBlbmQoIlNjcm9s
bFBvc2l0aW9uUmVzdG9yYXRpb24gIik7CisgICAgCisgICAgcmV0dXJuIGRlc2NyaXB0aW9uLnRv
U3RyaW5nKCk7Cit9CisKKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVt
b3ZhbFRyYWNrZXI6OmxvZyhjb25zdCBTdHJpbmcmIGxvZykgY29uc3QKK3sKKyNpZiAhTE9HX0RJ
U0FCTEVECisgICAgYXV0byBub3cgPSBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKTsK
KyAgICBkb3VibGUgbWlsbGlzZWNvbmRzU2luY2VTdGFydCA9IHN0ZDo6Y2hyb25vOjpkdXJhdGlv
bl9jYXN0PHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGUsIHN0ZDo6bWlsbGk+Pihub3cgLSBt
X3N0YXJ0VGltZSkuY291bnQoKTsKKyNlbmRpZgorICAgIExPRyhWaWV3R2VzdHVyZXMsICJTd2lw
ZSBTbmFwc2hvdCBSZW1vdmFsICglMC4yZiBtcykgLSAlcyIsIG1pbGxpc2Vjb25kc1NpbmNlU3Rh
cnQsIGxvZy51dGY4KCkuZGF0YSgpKTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnN0YXJ0KEV2ZW50cyBkZXNpcmVkRXZlbnRzLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gcmVtb3ZhbENhbGxiYWNrKQoreworICAgIG1fb3V0c3RhbmRpbmdF
dmVudHMgPSBkZXNpcmVkRXZlbnRzOworICAgIG1fcmVtb3ZhbENhbGxiYWNrID0gV1RGTW92ZShy
ZW1vdmFsQ2FsbGJhY2spOworICAgIG1fc3RhcnRUaW1lID0gc3RkOjpjaHJvbm86OnN0ZWFkeV9j
bG9jazo6bm93KCk7CisKKyAgICBsb2coInN0YXJ0Iik7CisKKyAgICBzdGFydFdhdGNoZG9nKHN3
aXBlU25hcHNob3RSZW1vdmFsV2F0Y2hkb2dEdXJhdGlvbik7Cit9CisKK3ZvaWQgVmlld0dlc3R1
cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpyZXNldCgpCit7CisgICAgaWYg
KG1fb3V0c3RhbmRpbmdFdmVudHMpCisgICAgICAgIGxvZygicmVzZXQ7IGhhZCBvdXRzdGFuZGlu
ZyBldmVudHM6ICIgKyBldmVudHNEZXNjcmlwdGlvbihtX291dHN0YW5kaW5nRXZlbnRzKSk7Cisg
ICAgbV9vdXRzdGFuZGluZ0V2ZW50cyA9IDA7CisgICAgbV93YXRjaGRvZ1RpbWVyLnN0b3AoKTsK
KyAgICBtX3JlbW92YWxDYWxsYmFjayA9IG51bGxwdHI7Cit9CisKK2Jvb2wgVmlld0dlc3R1cmVD
b250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpzdG9wV2FpdGluZ0ZvckV2ZW50KEV2
ZW50cyBldmVudCwgY29uc3QgU3RyaW5nJiBsb2dSZWFzb24pCit7CisgICAgQVNTRVJUKGhhc09u
ZUJpdFNldChldmVudCkpOworCisgICAgaWYgKCEobV9vdXRzdGFuZGluZ0V2ZW50cyAmIGV2ZW50
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisjaWYgTE9HX0RJU0FCTEVECisgICAgVU5VU0VE
X1BBUkFNKGxvZ1JlYXNvbik7CisjZW5kaWYKKyAgICBsb2cobG9nUmVhc29uICsgZXZlbnRzRGVz
Y3JpcHRpb24oZXZlbnQpKTsKKworICAgIG1fb3V0c3RhbmRpbmdFdmVudHMgJj0gfmV2ZW50Owor
CisgICAgZmlyZVJlbW92YWxDYWxsYmFja0lmUG9zc2libGUoKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6
OmV2ZW50T2NjdXJyZWQoRXZlbnRzIGV2ZW50KQoreworICAgIHJldHVybiBzdG9wV2FpdGluZ0Zv
ckV2ZW50KGV2ZW50LCAib3V0c3RhbmRpbmcgZXZlbnQgb2NjdXJyZWQ6ICIpOworfQorCitib29s
IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6Y2FuY2VsT3V0
c3RhbmRpbmdFdmVudChFdmVudHMgZXZlbnQpCit7CisgICAgcmV0dXJuIHN0b3BXYWl0aW5nRm9y
RXZlbnQoZXZlbnQsICJ3YWl0IGZvciBldmVudCBjYW5jZWxsZWQ6ICIpOworfQorCit2b2lkIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6ZmlyZVJlbW92YWxD
YWxsYmFja0lmUG9zc2libGUoKQoreworICAgIGlmIChtX291dHN0YW5kaW5nRXZlbnRzKSB7Cisg
ICAgICAgIGxvZygiZGVmZXJyaW5nIHJlbW92YWw7IGhhZCBvdXRzdGFuZGluZyBldmVudHM6ICIg
KyBldmVudHNEZXNjcmlwdGlvbihtX291dHN0YW5kaW5nRXZlbnRzKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBmaXJlUmVtb3ZhbENhbGxiYWNrSW1tZWRpYXRlbHkoKTsKK30KKwor
dm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmZpcmVS
ZW1vdmFsQ2FsbGJhY2tJbW1lZGlhdGVseSgpCit7CisgICAgbV93YXRjaGRvZ1RpbWVyLnN0b3Ao
KTsKKworICAgIGF1dG8gcmVtb3ZhbENhbGxiYWNrID0gV1RGTW92ZShtX3JlbW92YWxDYWxsYmFj
ayk7CisgICAgaWYgKHJlbW92YWxDYWxsYmFjaykgeworICAgICAgICBsb2coInJlbW92aW5nIHNu
YXBzaG90Iik7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIHJlbW92YWxDYWxsYmFjaygpOwor
ICAgIH0KK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRy
YWNrZXI6OndhdGNoZG9nVGltZXJGaXJlZCgpCit7CisgICAgbG9nKCJ3YXRjaGRvZyB0aW1lciBm
aXJlZCIpOworICAgIGZpcmVSZW1vdmFsQ2FsbGJhY2tJbW1lZGlhdGVseSgpOworfQorCit2b2lk
IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6c3RhcnRXYXRj
aGRvZyhzdGQ6OmNocm9ubzo6c2Vjb25kcyBkdXJhdGlvbikKK3sKKyAgICBsb2coU3RyaW5nOjpm
b3JtYXQoIihyZSlzdGFydGVkIHdhdGNoZG9nIHRpbWVyIGZvciAlbGxkIHNlY29uZHMiLCBkdXJh
dGlvbi5jb3VudCgpKSk7CisgICAgbV93YXRjaGRvZ1RpbWVyLnN0YXJ0T25lU2hvdChkdXJhdGlv
bi5jb3VudCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVmlld0dlc3R1cmVDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTY1N2IxZTExN2JiYTY4OWQ0NDg5MzdlNmVkMzBkM2UxNzZmNzFjOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIuaApAQCAtMCwwICsxLDI5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmll
d0dlc3R1cmVDb250cm9sbGVyX2gKKyNkZWZpbmUgVmlld0dlc3R1cmVDb250cm9sbGVyX2gKKwor
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlNhbWVEb2N1bWVudE5hdmln
YXRpb25UeXBlLmgiCisjaW5jbHVkZSAiV2Vha09iakNQdHIuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0NvbG9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNpbmNsdWRlIDxjaHJv
bm8+CisjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKKy8vIEZJWE1FOiBNb3ZlIHRoaXMgZmlsZSBv
dXQgb2YgdGhlIG1hYy8gc3ViZGlyZWN0b3J5LgorCitPQkpDX0NMQVNTIENBTGF5ZXI7CisKKyNp
ZiBQTEFURk9STShJT1MpCitPQkpDX0NMQVNTIFVJVmlldzsKK09CSkNfQ0xBU1MgV0tTd2lwZVRy
YW5zaXRpb25Db250cm9sbGVyOworT0JKQ19DTEFTUyBXS1dlYlZpZXc7CitPQkpDX0NMQVNTIF9V
SU5hdmlnYXRpb25JbnRlcmFjdGl2ZVRyYW5zaXRpb25CYXNlOworT0JKQ19DTEFTUyBfVUlWaWV3
Q29udHJvbGxlck9uZVRvT25lVHJhbnNpdGlvbkNvbnRleHQ7CitPQkpDX0NMQVNTIF9VSVZpZXdD
b250cm9sbGVyVHJhbnNpdGlvbkNvbnRleHQ7CisjZWxzZQorT0JKQ19DTEFTUyBDQUdyYWRpZW50
TGF5ZXI7CitPQkpDX0NMQVNTIE5TRXZlbnQ7CitPQkpDX0NMQVNTIE5TVmlldzsKK09CSkNfQ0xB
U1MgV0tTd2lwZUNhbmNlbGxhdGlvblRyYWNrZXI7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgSU9TdXJmYWNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
Vmlld1NuYXBzaG90OworY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKK2NsYXNzIFdlYlBh
Z2VQcm94eTsKKworY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyIDogcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVmlld0dlc3R1cmVDb250
cm9sbGVyKTsKK3B1YmxpYzoKKyAgICBWaWV3R2VzdHVyZUNvbnRyb2xsZXIoV2ViUGFnZVByb3h5
Jik7CisgICAgflZpZXdHZXN0dXJlQ29udHJvbGxlcigpOworICAgIHZvaWQgcGxhdGZvcm1UZWFy
ZG93bigpOworICAgIAorICAgIGVudW0gY2xhc3MgVmlld0dlc3R1cmVUeXBlIHsKKyAgICAgICAg
Tm9uZSwKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIE1hZ25pZmljYXRpb24sCisgICAgICAg
IFNtYXJ0TWFnbmlmaWNhdGlvbiwKKyNlbmRpZgorICAgICAgICBTd2lwZQorICAgIH07CisKKyAg
ICBlbnVtIGNsYXNzIFN3aXBlRGlyZWN0aW9uIHsKKyAgICAgICAgQmFjaywKKyAgICAgICAgRm9y
d2FyZAorICAgIH07CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgZG91YmxlIG1hZ25pZmljYXRp
b24oKSBjb25zdDsKKworICAgIHZvaWQgaGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChO
U0V2ZW50ICosIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKKworICAgIGJvb2wgaGFzQWN0
aXZlTWFnbmlmaWNhdGlvbkdlc3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZUdlc3R1cmVU
eXBlID09IFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbjsgfQorCisgICAgdm9pZCBoYW5k
bGVTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsK
KworICAgIGJvb2wgaGFuZGxlU2Nyb2xsV2hlZWxFdmVudChOU0V2ZW50ICopOworICAgIHZvaWQg
d2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoTlNFdmVudCAqZXZlbnQpIHsgbV9wZW5k
aW5nU3dpcGVUcmFja2VyLmV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShldmVudCk7IH0KKyAg
ICB2b2lkIGdlc3R1cmVFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoTlNFdmVudCAqLCBXZWJD
b3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CisKKyAgICB2b2lkIHNldEN1c3RvbVN3aXBlVmlld3Mo
VmVjdG9yPFJldGFpblB0cjxOU1ZpZXc+PiB2aWV3cykgeyBtX2N1c3RvbVN3aXBlVmlld3MgPSBX
VEZNb3ZlKHZpZXdzKTsgfQorICAgIHZvaWQgc2V0Q3VzdG9tU3dpcGVWaWV3c1RvcENvbnRlbnRJ
bnNldChmbG9hdCB0b3BDb250ZW50SW5zZXQpIHsgbV9jdXN0b21Td2lwZVZpZXdzVG9wQ29udGVu
dEluc2V0ID0gdG9wQ29udGVudEluc2V0OyB9CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRv
d1JlbGF0aXZlQm91bmRzRm9yQ3VzdG9tU3dpcGVWaWV3cygpIGNvbnN0OworICAgIHZvaWQgc2V0
RGlkTW92ZVN3aXBlU25hcHNob3RDYWxsYmFjayhCbG9ja1B0cjx2b2lkIChDR1JlY3QpPiYmIGNh
bGxiYWNrKSB7IG1fZGlkTW92ZVN3aXBlU25hcHNob3RDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spOyB9CisKKyAgICBib29sIHNob3VsZElnbm9yZVBpbm5lZFN0YXRlKCkgeyByZXR1cm4gbV9w
ZW5kaW5nU3dpcGVUcmFja2VyLnNob3VsZElnbm9yZVBpbm5lZFN0YXRlKCk7IH0KKyAgICB2b2lk
IHNldFNob3VsZElnbm9yZVBpbm5lZFN0YXRlKGJvb2wgaWdub3JlKSB7IG1fcGVuZGluZ1N3aXBl
VHJhY2tlci5zZXRTaG91bGRJZ25vcmVQaW5uZWRTdGF0ZShpZ25vcmUpOyB9CisKKyAgICBib29s
IGlzUGh5c2ljYWxseVN3aXBpbmdMZWZ0KFN3aXBlRGlyZWN0aW9uKSBjb25zdDsKKyNlbHNlCisg
ICAgdm9pZCBpbnN0YWxsU3dpcGVIYW5kbGVyKFVJVmlldyAqZ2VzdHVyZVJlY29nbml6ZXJWaWV3
LCBVSVZpZXcgKnN3aXBpbmdWaWV3KTsKKyAgICB2b2lkIHNldEFsdGVybmF0ZUJhY2tGb3J3YXJk
TGlzdFNvdXJjZVZpZXcoV0tXZWJWaWV3ICopOworICAgIGJvb2wgY2FuU3dpcGVJbkRpcmVjdGlv
bihTd2lwZURpcmVjdGlvbik7CisgICAgdm9pZCBiZWdpblN3aXBlR2VzdHVyZShfVUlOYXZpZ2F0
aW9uSW50ZXJhY3RpdmVUcmFuc2l0aW9uQmFzZSAqLCBTd2lwZURpcmVjdGlvbik7CisgICAgdm9p
ZCBlbmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgX1VJ
Vmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uQ29udGV4dCAqLCBib29sIGNhbmNlbGxlZCk7CisgICAg
dm9pZCB3aWxsQ29tbWl0UG9zdFN3aXBlVHJhbnNpdGlvbkxheWVyVHJlZShib29sKTsKKyAgICB2
b2lkIHNldFJlbmRlclRyZWVTaXplKHVpbnQ2NF90KTsKKyNlbmRpZgorCisgICAgV2ViQ29yZTo6
Q29sb3IgYmFja2dyb3VuZENvbG9yRm9yQ3VycmVudFNuYXBzaG90KCkgY29uc3QgeyByZXR1cm4g
bV9iYWNrZ3JvdW5kQ29sb3JGb3JDdXJyZW50U25hcHNob3Q7IH0KKworICAgIHZvaWQgZGlkRmlu
aXNoTG9hZEZvck1haW5GcmFtZSgpIHsgZGlkUmVhY2hNYWluRnJhbWVMb2FkVGVybWluYWxTdGF0
ZSgpOyB9CisgICAgdm9pZCBkaWRGYWlsTG9hZEZvck1haW5GcmFtZSgpIHsgZGlkUmVhY2hNYWlu
RnJhbWVMb2FkVGVybWluYWxTdGF0ZSgpOyB9CisgICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRGb3JNYWluRnJhbWUoKTsKKyAgICB2b2lkIGRpZFJlcGFpbnRBZnRlck5hdmln
YXRpb24oKTsKKyAgICB2b2lkIGRpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkKCk7CisgICAg
dm9pZCBkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTsKKyAgICB2b2lkIGRpZFJlYWNoTWFpbkZy
YW1lTG9hZFRlcm1pbmFsU3RhdGUoKTsKKyAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b25Gb3JNYWluRnJhbWUoU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUpOworCisgICAgdm9pZCBj
aGVja0ZvckFjdGl2ZUxvYWRzKCk7CisKKyAgICB2b2lkIHJlbW92ZVN3aXBlU25hcHNob3QoKTsK
KworcHJpdmF0ZToKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KKyAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwor
CisgICAgc3RhdGljIFZpZXdHZXN0dXJlQ29udHJvbGxlciogZ2VzdHVyZUNvbnRyb2xsZXJGb3JQ
YWdlKHVpbnQ2NF90KTsKKworICAgIGNsYXNzIFNuYXBzaG90UmVtb3ZhbFRyYWNrZXIgeworICAg
IHB1YmxpYzoKKyAgICAgICAgZW51bSBFdmVudCA6IHVpbnQ4X3QgeworICAgICAgICAgICAgVmlz
dWFsbHlOb25FbXB0eUxheW91dCA9IDEgPDwgMCwKKyAgICAgICAgICAgIFJlbmRlclRyZWVTaXpl
VGhyZXNob2xkID0gMSA8PCAxLAorICAgICAgICAgICAgUmVwYWludEFmdGVyTmF2aWdhdGlvbiA9
IDEgPDwgMiwKKyAgICAgICAgICAgIE1haW5GcmFtZUxvYWQgPSAxIDw8IDMsCisgICAgICAgICAg
ICBTdWJyZXNvdXJjZUxvYWRzID0gMSA8PCA0LAorICAgICAgICAgICAgU2Nyb2xsUG9zaXRpb25S
ZXN0b3JhdGlvbiA9IDEgPDwgNQorICAgICAgICB9OworICAgICAgICB0eXBlZGVmIHVpbnQ4X3Qg
RXZlbnRzOworCisgICAgICAgIFNuYXBzaG90UmVtb3ZhbFRyYWNrZXIoKTsKKworICAgICAgICB2
b2lkIHN0YXJ0KEV2ZW50cywgc3RkOjpmdW5jdGlvbjx2b2lkKCk+KTsKKyAgICAgICAgdm9pZCBy
ZXNldCgpOworCisgICAgICAgIGJvb2wgZXZlbnRPY2N1cnJlZChFdmVudHMpOworICAgICAgICBi
b29sIGNhbmNlbE91dHN0YW5kaW5nRXZlbnQoRXZlbnRzKTsKKworICAgICAgICB2b2lkIHN0YXJ0
V2F0Y2hkb2coc3RkOjpjaHJvbm86OnNlY29uZHMpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAg
c3RhdGljIFN0cmluZyBldmVudHNEZXNjcmlwdGlvbihFdmVudHMpOworICAgICAgICB2b2lkIGxv
Zyhjb25zdCBTdHJpbmcmKSBjb25zdDsKKworICAgICAgICB2b2lkIGZpcmVSZW1vdmFsQ2FsbGJh
Y2tJbW1lZGlhdGVseSgpOworICAgICAgICB2b2lkIGZpcmVSZW1vdmFsQ2FsbGJhY2tJZlBvc3Np
YmxlKCk7CisgICAgICAgIHZvaWQgd2F0Y2hkb2dUaW1lckZpcmVkKCk7CisKKyAgICAgICAgYm9v
bCBzdG9wV2FpdGluZ0ZvckV2ZW50KEV2ZW50cywgY29uc3QgU3RyaW5nJiBsb2dSZWFzb24pOwor
CisgICAgICAgIEV2ZW50cyBtX291dHN0YW5kaW5nRXZlbnRzIHsgMCB9OworICAgICAgICBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gbV9yZW1vdmFsQ2FsbGJhY2s7CisgICAgICAgIHN0ZDo6Y2hyb25v
OjpzdGVhZHlfY2xvY2s6OnRpbWVfcG9pbnQgbV9zdGFydFRpbWU7CisKKyAgICAgICAgUnVuTG9v
cDo6VGltZXI8U25hcHNob3RSZW1vdmFsVHJhY2tlcj4gbV93YXRjaGRvZ1RpbWVyOworICAgIH07
CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KKyAgICB2b2lk
IGRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0
UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9u
R2VzdHVyZSk7CisgICAgdm9pZCBkaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRp
b25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBXZWJDb3JlOjpGbG9hdFJlY3Qg
cmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzLCBib29s
IGlzUmVwbGFjZWRFbGVtZW50LCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2
aWV3cG9ydE1heGltdW1TY2FsZSk7CisKKyAgICB2b2lkIGVuZE1hZ25pZmljYXRpb25HZXN0dXJl
KCk7CisKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4o
V2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIGRvdWJsZSBzY2FsZSk7CisKKyAgICB2b2lkIHRy
YWNrU3dpcGVHZXN0dXJlKE5TRXZlbnQgKiwgU3dpcGVEaXJlY3Rpb24pOworICAgIHZvaWQgYmVn
aW5Td2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgU3dpcGVE
aXJlY3Rpb24pOworICAgIHZvaWQgaGFuZGxlU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0qIHRhcmdldEl0ZW0sIGRvdWJsZSBwcm9ncmVzcywgU3dpcGVEaXJlY3Rpb24pOworICAg
IHZvaWQgd2lsbEVuZFN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiB0YXJnZXRJ
dGVtLCBib29sIGNhbmNlbGxlZCk7CisgICAgdm9pZCBlbmRTd2lwZUdlc3R1cmUoV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgYm9vbCBjYW5jZWxsZWQpOworICAgIGJvb2wgc2hv
dWxkVXNlU25hcHNob3RGb3JTaXplKFZpZXdTbmFwc2hvdCYsIFdlYkNvcmU6OkZsb2F0U2l6ZSBz
d2lwZUxheWVyU2l6ZSwgZmxvYXQgdG9wQ29udGVudEluc2V0KTsKKworICAgIENBTGF5ZXIgKmRl
dGVybWluZVNuYXBzaG90TGF5ZXJQYXJlbnQoKSBjb25zdDsKKyAgICBDQUxheWVyICpkZXRlcm1p
bmVMYXllckFkamFjZW50VG9TbmFwc2hvdEZvclBhcmVudChTd2lwZURpcmVjdGlvbiwgQ0FMYXll
ciAqc25hcHNob3RMYXllclBhcmVudCkgY29uc3Q7CisgICAgdm9pZCBhcHBseURlYnVnZ2luZ1By
b3BlcnRpZXNUb1N3aXBlVmlld3MoKTsKKyAgICB2b2lkIGRpZE1vdmVTd2lwZVNuYXBzaG90TGF5
ZXIoKTsKKworICAgIHZvaWQgZm9yY2VSZXBhaW50SWZOZWVkZWQoKTsKKworICAgIGNsYXNzIFBl
bmRpbmdTd2lwZVRyYWNrZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgUGVuZGluZ1N3aXBlVHJh
Y2tlcihXZWJQYWdlUHJveHkmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoTlNFdmVudCAqLCBTd2lwZURp
cmVjdGlvbik+IHRyYWNrU3dpcGVDYWxsYmFjayk7CisgICAgICAgIGJvb2wgaGFuZGxlRXZlbnQo
TlNFdmVudCAqKTsKKyAgICAgICAgdm9pZCBldmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoTlNF
dmVudCAqKTsKKworICAgICAgICB2b2lkIHJlc2V0KGNvbnN0IGNoYXIqIHJlc2V0UmVhc29uRm9y
TG9nZ2luZyk7CisKKyAgICAgICAgYm9vbCBzaG91bGRJZ25vcmVQaW5uZWRTdGF0ZSgpIHsgcmV0
dXJuIG1fc2hvdWxkSWdub3JlUGlubmVkU3RhdGU7IH0KKyAgICAgICAgdm9pZCBzZXRTaG91bGRJ
Z25vcmVQaW5uZWRTdGF0ZShib29sIGlnbm9yZSkgeyBtX3Nob3VsZElnbm9yZVBpbm5lZFN0YXRl
ID0gaWdub3JlOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBib29sIHRyeVRvU3RhcnRTd2lw
ZShOU0V2ZW50ICopOworICAgICAgICBib29sIHNjcm9sbEV2ZW50Q2FuQmVjb21lU3dpcGUoTlNF
dmVudCAqLCBTd2lwZURpcmVjdGlvbiYpOworCisgICAgICAgIGVudW0gY2xhc3MgU3RhdGUgewor
ICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIFdhaXRpbmdGb3JXZWJDb3JlLAorICAgICAg
ICAgICAgSW5zdWZmaWNpZW50TWFnbml0dWRlCisgICAgICAgIH07CisKKyAgICAgICAgU3RhdGUg
bV9zdGF0ZSB7IFN0YXRlOjpOb25lIH07CisgICAgICAgIFN3aXBlRGlyZWN0aW9uIG1fZGlyZWN0
aW9uOworICAgICAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9jdW11bGF0aXZlRGVsdGE7CisKKyAg
ICAgICAgYm9vbCBtX3Nob3VsZElnbm9yZVBpbm5lZFN0YXRlIHsgZmFsc2UgfTsKKworICAgICAg
ICBzdGQ6OmZ1bmN0aW9uPHZvaWQoTlNFdmVudCAqLCBTd2lwZURpcmVjdGlvbik+IG1fdHJhY2tT
d2lwZUNhbGxiYWNrOworICAgICAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZVByb3h5OworICAg
IH07CisjZW5kaWYKKworICAgIFdlYlBhZ2VQcm94eSYgbV93ZWJQYWdlUHJveHk7CisgICAgVmll
d0dlc3R1cmVUeXBlIG1fYWN0aXZlR2VzdHVyZVR5cGUgeyBWaWV3R2VzdHVyZVR5cGU6Ok5vbmUg
fTsKKworICAgIFJ1bkxvb3A6OlRpbWVyPFZpZXdHZXN0dXJlQ29udHJvbGxlcj4gbV9zd2lwZUFj
dGl2ZUxvYWRNb25pdG9yaW5nVGltZXI7CisKKyAgICBXZWJDb3JlOjpDb2xvciBtX2JhY2tncm91
bmRDb2xvckZvckN1cnJlbnRTbmFwc2hvdDsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBSZWZQ
dHI8Vmlld1NuYXBzaG90PiBtX2N1cnJlbnRTd2lwZVNuYXBzaG90OworCisgICAgZG91YmxlIG1f
bWFnbmlmaWNhdGlvbjsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fbWFnbmlmaWNhdGlvbk9y
aWdpbjsKKworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX2xhc3RTbWFydE1hZ25pZmljYXRpb25V
bnNjYWxlZFRhcmdldFJlY3Q7CisgICAgYm9vbCBtX2xhc3RNYWduaWZpY2F0aW9uR2VzdHVyZVdh
c1NtYXJ0TWFnbmlmaWNhdGlvbiB7IGZhbHNlIH07CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBt
X2xhc3RTbWFydE1hZ25pZmljYXRpb25PcmlnaW47CisKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3Qg
bV92aXNpYmxlQ29udGVudFJlY3Q7CisgICAgYm9vbCBtX3Zpc2libGVDb250ZW50UmVjdElzVmFs
aWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVy
ZSB7IGZhbHNlIH07CisKKyAgICBSZXRhaW5QdHI8V0tTd2lwZUNhbmNlbGxhdGlvblRyYWNrZXI+
IG1fc3dpcGVDYW5jZWxsYXRpb25UcmFja2VyOworICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3N3
aXBlTGF5ZXI7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc3dpcGVTbmFwc2hvdExheWVyOwor
ICAgIFJldGFpblB0cjxDQUdyYWRpZW50TGF5ZXI+IG1fc3dpcGVTaGFkb3dMYXllcjsKKyAgICBS
ZXRhaW5QdHI8Q0FMYXllcj4gbV9zd2lwZURpbW1pbmdMYXllcjsKKyAgICBWZWN0b3I8UmV0YWlu
UHRyPENBTGF5ZXI+PiBtX2N1cnJlbnRTd2lwZUxpdmVMYXllcnM7CisKKyAgICBWZWN0b3I8UmV0
YWluUHRyPE5TVmlldz4+IG1fY3VzdG9tU3dpcGVWaWV3czsKKyAgICBmbG9hdCBtX2N1c3RvbVN3
aXBlVmlld3NUb3BDb250ZW50SW5zZXQgeyAwIH07CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1f
Y3VycmVudFN3aXBlQ3VzdG9tVmlld0JvdW5kczsKKworICAgIFBlbmRpbmdTd2lwZVRyYWNrZXIg
bV9wZW5kaW5nU3dpcGVUcmFja2VyOworCisgICAgQmxvY2tQdHI8dm9pZCAoQ0dSZWN0KT4gbV9k
aWRNb3ZlU3dpcGVTbmFwc2hvdENhbGxiYWNrOworCisgICAgYm9vbCBtX2hhc091dHN0YW5kaW5n
UmVwYWludFJlcXVlc3QgeyBmYWxzZSB9OworI2Vsc2UgICAgCisgICAgVUlWaWV3ICptX2xpdmVT
d2lwZVZpZXcgeyBudWxscHRyIH07CisgICAgUmV0YWluUHRyPFVJVmlldz4gbV9saXZlU3dpcGVW
aWV3Q2xpcHBpbmdWaWV3OworICAgIFJldGFpblB0cjxVSVZpZXc+IG1fc25hcHNob3RWaWV3Owor
ICAgIFJldGFpblB0cjxVSVZpZXc+IG1fdHJhbnNpdGlvbkNvbnRhaW5lclZpZXc7CisgICAgUmV0
YWluUHRyPFdLU3dpcGVUcmFuc2l0aW9uQ29udHJvbGxlcj4gbV9zd2lwZUludGVyYWN0aXZlVHJh
bnNpdGlvbkRlbGVnYXRlOworICAgIFJldGFpblB0cjxfVUlWaWV3Q29udHJvbGxlck9uZVRvT25l
VHJhbnNpdGlvbkNvbnRleHQ+IG1fc3dpcGVUcmFuc2l0aW9uQ29udGV4dDsKKyAgICB1aW50NjRf
dCBtX3NuYXBzaG90UmVtb3ZhbFRhcmdldFJlbmRlclRyZWVTaXplIHsgMCB9OworICAgIFdlYWtP
YmpDUHRyPFdLV2ViVmlldz4gbV9hbHRlcm5hdGVCYWNrRm9yd2FyZExpc3RTb3VyY2VWaWV3Owor
ICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IG1fd2ViUGFnZVByb3h5Rm9yQmFja0ZvcndhcmRMaXN0
Rm9yQ3VycmVudFN3aXBlOworICAgIHVpbnQ2NF90IG1fZ2VzdHVyZVBlbmRpbmdTbmFwc2hvdFJl
bW92YWwgeyAwIH07CisjZW5kaWYKKworICAgIFNuYXBzaG90UmVtb3ZhbFRyYWNrZXIgbV9zbmFw
c2hvdFJlbW92YWxUcmFja2VyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBWaWV3R2VzdHVyZUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMu
aW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjUxZmQyZDc2YzQ5NTAyZGFhN2IzZmNkNjVhN2MzZTE2YTZjMjc3Mgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyOSBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgor
IyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBWaWV3R2VzdHVyZUNvbnRy
b2xsZXIgeworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBEaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWdu
aWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMs
IGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCisgICAgRGlkQ29sbGVjdEdl
b21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9y
aWdpbiwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRlclJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB2
aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgZG91YmxlIHZpZXdw
b3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUpCisgICAgRGlkSGl0
UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQoKQorI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA4NTZjY2E3YTNlYjdjNzA1NGZjODgyNjc4ZjRhZjcwNDc0MTYyN2Q2Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMjg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2lt
cG9ydCAiVmlld0dlc3R1cmVDb250cm9sbGVyLmgiCi0KLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNp
bXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKLSNpbXBvcnQgIlZpZXdH
ZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VzLmgiCi0jaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKLSNp
bXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgotI2ltcG9ydCA8d3RmL01hdGhFeHRyYXMuaD4KLSNp
bXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLXN0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6c2Vjb25kcyBzd2lwZVNuYXBzaG90UmVtb3Zh
bFdhdGNoZG9nQWZ0ZXJGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXREdXJhdGlvbiA9IDNzOwot
c3RhdGljIGNvbnN0IHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgc3dpcGVTbmFwc2hvdFJlbW92
YWxBY3RpdmVMb2FkTW9uaXRvcmluZ0ludGVydmFsID0gMjUwbXM7Ci0KLSNpZiBQTEFURk9STShN
QUMpCi1zdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86OnNlY29uZHMgc3dpcGVTbmFwc2hvdFJlbW92
YWxXYXRjaGRvZ0R1cmF0aW9uID0gNXM7Ci0jZWxzZQotc3RhdGljIGNvbnN0IHN0ZDo6Y2hyb25v
OjpzZWNvbmRzIHN3aXBlU25hcHNob3RSZW1vdmFsV2F0Y2hkb2dEdXJhdGlvbiA9IDNzOwotI2Vu
ZGlmCi0KLXN0YXRpYyBIYXNoTWFwPHVpbnQ2NF90LCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPiYg
dmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkKLXsKLSAgICAvLyBUaGUga2V5IGlu
IHRoaXMgbWFwIGlzIHRoZSBhc3NvY2lhdGVkIHBhZ2UgSUQuCi0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hNYXA8dWludDY0X3QsIFZpZXdHZXN0dXJlQ29udHJvbGxlcio+PiB2aWV3R2Vz
dHVyZUNvbnRyb2xsZXJzOwotICAgIHJldHVybiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzLmdldCgp
OwotfQotCi1WaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlZpZXdHZXN0dXJlQ29udHJvbGxlcihXZWJQ
YWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKLSAgICA6IG1fd2ViUGFnZVByb3h5KHdlYlBhZ2VQcm94
eSkKLSAgICAsIG1fc3dpcGVBY3RpdmVMb2FkTW9uaXRvcmluZ1RpbWVyKFJ1bkxvb3A6Om1haW4o
KSwgdGhpcywgJlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Y2hlY2tGb3JBY3RpdmVMb2FkcykKLSNp
ZiBQTEFURk9STShNQUMpCi0gICAgLCBtX3BlbmRpbmdTd2lwZVRyYWNrZXIod2ViUGFnZVByb3h5
LCBzdGQ6OmJpbmQoJlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6dHJhY2tTd2lwZUdlc3R1cmUsIHRo
aXMsIHN0ZDo6cGxhY2Vob2xkZXJzOjpfMSwgc3RkOjpwbGFjZWhvbGRlcnM6Ol8yKSkKLSNlbmRp
ZgotewotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dl
YlBhZ2VQcm94eS5wYWdlSUQoKSwgKnRoaXMpOwotCi0gICAgdmlld0dlc3R1cmVDb250cm9sbGVy
c0ZvckFsbFBhZ2VzKCkuYWRkKHdlYlBhZ2VQcm94eS5wYWdlSUQoKSwgdGhpcyk7Ci19Ci0KLVZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6flZpZXdHZXN0dXJlQ29udHJvbGxlcigpCi17Ci0gICAgcGxh
dGZvcm1UZWFyZG93bigpOwotCi0gICAgdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2Vz
KCkucmVtb3ZlKG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKLQotICAgIG1fd2ViUGFnZVByb3h5
LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7
Ci19Ci0KLVZpZXdHZXN0dXJlQ29udHJvbGxlciogVmlld0dlc3R1cmVDb250cm9sbGVyOjpnZXN0
dXJlQ29udHJvbGxlckZvclBhZ2UodWludDY0X3QgcGFnZUlEKQotewotICAgIGF1dG8gZ2VzdHVy
ZUNvbnRyb2xsZXJJdGVyID0gdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuZmlu
ZChwYWdlSUQpOwotICAgIGlmIChnZXN0dXJlQ29udHJvbGxlckl0ZXIgPT0gdmlld0dlc3R1cmVD
b250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBnZXN0dXJlQ29udHJvbGxlckl0ZXItPnZhbHVlOwotfQotCi12b2lkIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yTWFpbkZy
YW1lKCkKLXsKLSAgICBpZiAoIW1fc25hcHNob3RSZW1vdmFsVHJhY2tlci5ldmVudE9jY3VycmVk
KFNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OlZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX3NuYXBzaG90UmVtb3ZhbFRyYWNrZXIuY2FuY2VsT3V0c3RhbmRp
bmdFdmVudChTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpNYWluRnJhbWVMb2FkKTsKLSAgICBtX3Nu
YXBzaG90UmVtb3ZhbFRyYWNrZXIuY2FuY2VsT3V0c3RhbmRpbmdFdmVudChTbmFwc2hvdFJlbW92
YWxUcmFja2VyOjpTdWJyZXNvdXJjZUxvYWRzKTsKLSAgICBtX3NuYXBzaG90UmVtb3ZhbFRyYWNr
ZXIuc3RhcnRXYXRjaGRvZyhzd2lwZVNuYXBzaG90UmVtb3ZhbFdhdGNoZG9nQWZ0ZXJGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXREdXJhdGlvbik7Ci19Ci0KLXZvaWQgVmlld0dlc3R1cmVDb250
cm9sbGVyOjpkaWRSZXBhaW50QWZ0ZXJOYXZpZ2F0aW9uKCkKLXsKLSAgICBtX3NuYXBzaG90UmVt
b3ZhbFRyYWNrZXIuZXZlbnRPY2N1cnJlZChTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpSZXBhaW50
QWZ0ZXJOYXZpZ2F0aW9uKTsKLX0KLQotdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZEhp
dFJlbmRlclRyZWVTaXplVGhyZXNob2xkKCkKLXsKLSAgICBtX3NuYXBzaG90UmVtb3ZhbFRyYWNr
ZXIuZXZlbnRPY2N1cnJlZChTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpSZW5kZXJUcmVlU2l6ZVRo
cmVzaG9sZCk7Ci19Ci0KLXZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRSZXN0b3JlU2Ny
b2xsUG9zaXRpb24oKQotewotICAgIG1fc25hcHNob3RSZW1vdmFsVHJhY2tlci5ldmVudE9jY3Vy
cmVkKFNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OlNjcm9sbFBvc2l0aW9uUmVzdG9yYXRpb24pOwot
fQotCi12b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkUmVhY2hNYWluRnJhbWVMb2FkVGVy
bWluYWxTdGF0ZSgpCi17Ci0gICAgaWYgKCFtX3NuYXBzaG90UmVtb3ZhbFRyYWNrZXIuZXZlbnRP
Y2N1cnJlZChTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpNYWluRnJhbWVMb2FkKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgLy8gQ29taW5nIGJhY2sgZnJvbSB0aGUgcGFnZSBjYWNoZSB3aWxsIHJl
c3VsdCBpbiBnZXR0aW5nIGEgbG9hZCBldmVudCwgYnV0IG5vIGZpcnN0IHZpc3VhbGx5IG5vbi1l
bXB0eSBsYXlvdXQuCi0gICAgLy8gV2ViQ29yZSBjb25zaWRlcnMgYSBsb2FkZWQgZG9jdW1lbnQg
ZW5vdWdoIHRvIGJlIGNvbnNpZGVyZWQgdmlzdWFsbHkgbm9uLWVtcHR5LCBzbyB0aGF0J3MgZ29v
ZAotICAgIC8vIGVub3VnaCBmb3IgdXMgdG9vLgotICAgIG1fc25hcHNob3RSZW1vdmFsVHJhY2tl
ci5jYW5jZWxPdXRzdGFuZGluZ0V2ZW50KFNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OlZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXQpOwotCi0gICAgLy8gV2l0aCBXZWItcHJvY2VzcyBzY3JvbGxpbmcsIHdl
IGNoZWNrIGlmIHRoZSBzY3JvbGwgcG9zaXRpb24gcmVzdG9yYXRpb24gc3VjY2VlZGVkIGJ5IGNv
bXBhcmluZyB0aGUKLSAgICAvLyByZXF1ZXN0ZWQgYW5kIGFjdHVhbCBzY3JvbGwgcG9zaXRpb24u
IEl0J3MgcG9zc2libGUgdGhhdCB3ZSB3aWxsIG5ldmVyIHN1Y2NlZWQgaW4gcmVzdG9yaW5nCi0g
ICAgLy8gdGhlIGV4YWN0IHNjcm9sbCBwb3NpdGlvbiB3ZSB3YW50ZWQsIGluIHRoZSBjYXNlIG9m
IGEgZHluYW1pYyBwYWdlLCBidXQgd2Uga25vdyB0aGF0IGJ5Ci0gICAgLy8gbWFpbiBmcmFtZSBs
b2FkIHRpbWUgdGhhdCB3ZSd2ZSBnb3R0ZW4gYXMgY2xvc2UgYXMgd2UncmUgZ29pbmcgdG8gZ2V0
LCBzbyBzdG9wIHdhaXRpbmcuCi0gICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBkbyB0aGlzIHdpdGgg
VUktc2lkZSBzY3JvbGxpbmcgYmVjYXVzZSBzY3JvbGwgcG9zaXRpb24gcmVzdG9yYXRpb24gaXMg
YmFrZWQgaW50byB0aGUgdHJhbnNhY3Rpb24uCi0gICAgLy8gRklYTUU6IEl0IHNlZW1zIGZhaXJs
eSBkaXJ0eSB0byB0eXBlLWNoZWNrIHRoZSBEcmF3aW5nQXJlYSBsaWtlIHRoaXMuCi0gICAgaWYg
KGF1dG8gZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJlYSgpKSB7Ci0gICAg
ICAgIGlmIChpczxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PihkcmF3aW5nQXJlYSkp
Ci0gICAgICAgICAgICBtX3NuYXBzaG90UmVtb3ZhbFRyYWNrZXIuY2FuY2VsT3V0c3RhbmRpbmdF
dmVudChTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpTY3JvbGxQb3NpdGlvblJlc3RvcmF0aW9uKTsK
LSAgICB9Ci0KLSAgICBjaGVja0ZvckFjdGl2ZUxvYWRzKCk7Ci19Ci0KLXZvaWQgVmlld0dlc3R1
cmVDb250cm9sbGVyOjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yTWFpbkZyYW1lKFNhbWVE
b2N1bWVudE5hdmlnYXRpb25UeXBlIHR5cGUpCi17Ci0gICAgYm9vbCBjYW5jZWxsZWRPdXRzdGFu
ZGluZ0V2ZW50ID0gZmFsc2U7Ci0KLSAgICAvLyBTYW1lLWRvY3VtZW50IG5hdmlnYXRpb25zIGRv
bid0IGhhdmUgYSBtYWluIGZyYW1lIGxvYWQgb3IgZmlyc3QgdmlzdWFsbHkgbm9uLWVtcHR5IGxh
eW91dC4KLSAgICBjYW5jZWxsZWRPdXRzdGFuZGluZ0V2ZW50IHw9IG1fc25hcHNob3RSZW1vdmFs
VHJhY2tlci5jYW5jZWxPdXRzdGFuZGluZ0V2ZW50KFNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6Ok1h
aW5GcmFtZUxvYWQpOwotICAgIGNhbmNlbGxlZE91dHN0YW5kaW5nRXZlbnQgfD0gbV9zbmFwc2hv
dFJlbW92YWxUcmFja2VyLmNhbmNlbE91dHN0YW5kaW5nRXZlbnQoU25hcHNob3RSZW1vdmFsVHJh
Y2tlcjo6VmlzdWFsbHlOb25FbXB0eUxheW91dCk7Ci0KLSAgICBpZiAoIWNhbmNlbGxlZE91dHN0
YW5kaW5nRXZlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICh0eXBlICE9IFNhbWVEb2N1
bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVSZXBsYWNlICYmIHR5cGUgIT0gU2FtZURvY3VtZW50
TmF2aWdhdGlvblNlc3Npb25TdGF0ZVBvcCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2hlY2tG
b3JBY3RpdmVMb2FkcygpOwotfQotCi12b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Y2hlY2tG
b3JBY3RpdmVMb2FkcygpCi17Ci0gICAgaWYgKG1fd2ViUGFnZVByb3h5LnBhZ2VMb2FkU3RhdGUo
KS5pc0xvYWRpbmcoKSkgewotICAgICAgICBpZiAoIW1fc3dpcGVBY3RpdmVMb2FkTW9uaXRvcmlu
Z1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgICAgICBtX3N3aXBlQWN0aXZlTG9hZE1vbml0b3Jp
bmdUaW1lci5zdGFydFJlcGVhdGluZyhzd2lwZVNuYXBzaG90UmVtb3ZhbEFjdGl2ZUxvYWRNb25p
dG9yaW5nSW50ZXJ2YWwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9zd2lwZUFj
dGl2ZUxvYWRNb25pdG9yaW5nVGltZXIuc3RvcCgpOwotICAgIG1fc25hcHNob3RSZW1vdmFsVHJh
Y2tlci5ldmVudE9jY3VycmVkKFNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OlN1YnJlc291cmNlTG9h
ZHMpOwotfQotCi1WaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6
OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXIoKQotICAgIDogbV93YXRjaGRvZ1RpbWVyKFJ1bkxvb3A6
Om1haW4oKSwgdGhpcywgJlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OndhdGNoZG9nVGltZXJGaXJl
ZCkKLXsKLX0KLQotU3RyaW5nIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFs
VHJhY2tlcjo6ZXZlbnRzRGVzY3JpcHRpb24oRXZlbnRzIGV2ZW50KQotewotICAgIFN0cmluZ0J1
aWxkZXIgZGVzY3JpcHRpb247Ci0KLSAgICBpZiAoZXZlbnQgJiBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OlZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpCi0gICAg
ICAgIGRlc2NyaXB0aW9uLmFwcGVuZCgiVmlzdWFsbHlOb25FbXB0eUxheW91dCAiKTsKLQotICAg
IGlmIChldmVudCAmIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tl
cjo6UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQpCi0gICAgICAgIGRlc2NyaXB0aW9uLmFwcGVuZCgi
UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQgIik7Ci0KLSAgICBpZiAoZXZlbnQgJiBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OlJlcGFpbnRBZnRlck5hdmlnYXRp
b24pCi0gICAgICAgIGRlc2NyaXB0aW9uLmFwcGVuZCgiUmVwYWludEFmdGVyTmF2aWdhdGlvbiAi
KTsKLQotICAgIGlmIChldmVudCAmIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1v
dmFsVHJhY2tlcjo6TWFpbkZyYW1lTG9hZCkKLSAgICAgICAgZGVzY3JpcHRpb24uYXBwZW5kKCJN
YWluRnJhbWVMb2FkICIpOwotCi0gICAgaWYgKGV2ZW50ICYgVmlld0dlc3R1cmVDb250cm9sbGVy
OjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpTdWJyZXNvdXJjZUxvYWRzKQotICAgICAgICBkZXNj
cmlwdGlvbi5hcHBlbmQoIlN1YnJlc291cmNlTG9hZHMgIik7Ci0KLSAgICBpZiAoZXZlbnQgJiBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OlNjcm9sbFBvc2l0
aW9uUmVzdG9yYXRpb24pCi0gICAgICAgIGRlc2NyaXB0aW9uLmFwcGVuZCgiU2Nyb2xsUG9zaXRp
b25SZXN0b3JhdGlvbiAiKTsKLSAgICAKLSAgICByZXR1cm4gZGVzY3JpcHRpb24udG9TdHJpbmco
KTsKLX0KLQotCi12b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJh
Y2tlcjo6bG9nKGNvbnN0IFN0cmluZyYgbG9nKSBjb25zdAotewotI2lmICFMT0dfRElTQUJMRUQK
LSAgICBhdXRvIG5vdyA9IHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpOwotICAgIGRv
dWJsZSBtaWxsaXNlY29uZHNTaW5jZVN0YXJ0ID0gc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8
c3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZSwgc3RkOjptaWxsaT4+KG5vdyAtIG1fc3RhcnRU
aW1lKS5jb3VudCgpOwotI2VuZGlmCi0gICAgTE9HKFZpZXdHZXN0dXJlcywgIlN3aXBlIFNuYXBz
aG90IFJlbW92YWwgKCUwLjJmIG1zKSAtICVzIiwgbWlsbGlzZWNvbmRzU2luY2VTdGFydCwgbG9n
LnV0ZjgoKS5kYXRhKCkpOwotfQotCi12b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNo
b3RSZW1vdmFsVHJhY2tlcjo6c3RhcnQoRXZlbnRzIGRlc2lyZWRFdmVudHMsIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiByZW1vdmFsQ2FsbGJhY2spCi17Ci0gICAgbV9vdXRzdGFuZGluZ0V2ZW50cyA9
IGRlc2lyZWRFdmVudHM7Ci0gICAgbV9yZW1vdmFsQ2FsbGJhY2sgPSBXVEZNb3ZlKHJlbW92YWxD
YWxsYmFjayk7Ci0gICAgbV9zdGFydFRpbWUgPSBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjpu
b3coKTsKLQotICAgIGxvZygic3RhcnQiKTsKLQotICAgIHN0YXJ0V2F0Y2hkb2coc3dpcGVTbmFw
c2hvdFJlbW92YWxXYXRjaGRvZ0R1cmF0aW9uKTsKLX0KLQotdm9pZCBWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnJlc2V0KCkKLXsKLSAgICBpZiAobV9vdXRz
dGFuZGluZ0V2ZW50cykKLSAgICAgICAgbG9nKCJyZXNldDsgaGFkIG91dHN0YW5kaW5nIGV2ZW50
czogIiArIGV2ZW50c0Rlc2NyaXB0aW9uKG1fb3V0c3RhbmRpbmdFdmVudHMpKTsKLSAgICBtX291
dHN0YW5kaW5nRXZlbnRzID0gMDsKLSAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgpOwotICAgIG1f
cmVtb3ZhbENhbGxiYWNrID0gbnVsbHB0cjsKLX0KLQotYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnN0b3BXYWl0aW5nRm9yRXZlbnQoRXZlbnRzIGV2
ZW50LCBjb25zdCBTdHJpbmcmIGxvZ1JlYXNvbikKLXsKLSAgICBBU1NFUlQoaGFzT25lQml0U2V0
KGV2ZW50KSk7Ci0KLSAgICBpZiAoIShtX291dHN0YW5kaW5nRXZlbnRzICYgZXZlbnQpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSNpZiBMT0dfRElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0o
bG9nUmVhc29uKTsKLSNlbmRpZgotICAgIGxvZyhsb2dSZWFzb24gKyBldmVudHNEZXNjcmlwdGlv
bihldmVudCkpOwotCi0gICAgbV9vdXRzdGFuZGluZ0V2ZW50cyAmPSB+ZXZlbnQ7Ci0KLSAgICBm
aXJlUmVtb3ZhbENhbGxiYWNrSWZQb3NzaWJsZSgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1i
b29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6ZXZlbnRP
Y2N1cnJlZChFdmVudHMgZXZlbnQpCi17Ci0gICAgcmV0dXJuIHN0b3BXYWl0aW5nRm9yRXZlbnQo
ZXZlbnQsICJvdXRzdGFuZGluZyBldmVudCBvY2N1cnJlZDogIik7Ci19Ci0KLWJvb2wgVmlld0dl
c3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpjYW5jZWxPdXRzdGFuZGlu
Z0V2ZW50KEV2ZW50cyBldmVudCkKLXsKLSAgICByZXR1cm4gc3RvcFdhaXRpbmdGb3JFdmVudChl
dmVudCwgIndhaXQgZm9yIGV2ZW50IGNhbmNlbGxlZDogIik7Ci19Ci0KLXZvaWQgVmlld0dlc3R1
cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpmaXJlUmVtb3ZhbENhbGxiYWNr
SWZQb3NzaWJsZSgpCi17Ci0gICAgaWYgKG1fb3V0c3RhbmRpbmdFdmVudHMpIHsKLSAgICAgICAg
bG9nKCJkZWZlcnJpbmcgcmVtb3ZhbDsgaGFkIG91dHN0YW5kaW5nIGV2ZW50czogIiArIGV2ZW50
c0Rlc2NyaXB0aW9uKG1fb3V0c3RhbmRpbmdFdmVudHMpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGZpcmVSZW1vdmFsQ2FsbGJhY2tJbW1lZGlhdGVseSgpOwotfQotCi12b2lkIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6ZmlyZVJlbW92YWxD
YWxsYmFja0ltbWVkaWF0ZWx5KCkKLXsKLSAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgpOwotCi0g
ICAgYXV0byByZW1vdmFsQ2FsbGJhY2sgPSBXVEZNb3ZlKG1fcmVtb3ZhbENhbGxiYWNrKTsKLSAg
ICBpZiAocmVtb3ZhbENhbGxiYWNrKSB7Ci0gICAgICAgIGxvZygicmVtb3Zpbmcgc25hcHNob3Qi
KTsKLSAgICAgICAgcmVzZXQoKTsKLSAgICAgICAgcmVtb3ZhbENhbGxiYWNrKCk7Ci0gICAgfQot
fQotCi12b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6
d2F0Y2hkb2dUaW1lckZpcmVkKCkKLXsKLSAgICBsb2coIndhdGNoZG9nIHRpbWVyIGZpcmVkIik7
Ci0gICAgZmlyZVJlbW92YWxDYWxsYmFja0ltbWVkaWF0ZWx5KCk7Ci19Ci0KLXZvaWQgVmlld0dl
c3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpzdGFydFdhdGNoZG9nKHN0
ZDo6Y2hyb25vOjpzZWNvbmRzIGR1cmF0aW9uKQotewotICAgIGxvZyhTdHJpbmc6OmZvcm1hdCgi
KHJlKXN0YXJ0ZWQgd2F0Y2hkb2cgdGltZXIgZm9yICVsbGQgc2Vjb25kcyIsIGR1cmF0aW9uLmNv
dW50KCkpKTsKLSAgICBtX3dhdGNoZG9nVGltZXIuc3RhcnRPbmVTaG90KGR1cmF0aW9uLmNvdW50
KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxNjU3YjFlMTE3YmJhNjg5ZDQ0ODkzN2U2ZWQzMGQzZTE3NmY3MWM5Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwyOTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVmlld0dlc3R1cmVD
b250cm9sbGVyX2gKLSNkZWZpbmUgVmlld0dlc3R1cmVDb250cm9sbGVyX2gKLQotI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBl
LmgiCi0jaW5jbHVkZSAiV2Vha09iakNQdHIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KLSNpbmNsdWRlIDxjaHJvbm8+Ci0jaW5j
bHVkZSA8d3RmL0Jsb2NrUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLS8vIEZJWE1FOiBNb3ZlIHRoaXMgZmlsZSBvdXQgb2YgdGhl
IG1hYy8gc3ViZGlyZWN0b3J5LgotCi1PQkpDX0NMQVNTIENBTGF5ZXI7Ci0KLSNpZiBQTEFURk9S
TShJT1MpCi1PQkpDX0NMQVNTIFVJVmlldzsKLU9CSkNfQ0xBU1MgV0tTd2lwZVRyYW5zaXRpb25D
b250cm9sbGVyOwotT0JKQ19DTEFTUyBXS1dlYlZpZXc7Ci1PQkpDX0NMQVNTIF9VSU5hdmlnYXRp
b25JbnRlcmFjdGl2ZVRyYW5zaXRpb25CYXNlOwotT0JKQ19DTEFTUyBfVUlWaWV3Q29udHJvbGxl
ck9uZVRvT25lVHJhbnNpdGlvbkNvbnRleHQ7Ci1PQkpDX0NMQVNTIF9VSVZpZXdDb250cm9sbGVy
VHJhbnNpdGlvbkNvbnRleHQ7Ci0jZWxzZQotT0JKQ19DTEFTUyBDQUdyYWRpZW50TGF5ZXI7Ci1P
QkpDX0NMQVNTIE5TRXZlbnQ7Ci1PQkpDX0NMQVNTIE5TVmlldzsKLU9CSkNfQ0xBU1MgV0tTd2lw
ZUNhbmNlbGxhdGlvblRyYWNrZXI7Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xh
c3MgSU9TdXJmYWNlOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgVmlld1NuYXBz
aG90OwotY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKLWNsYXNzIFdlYlBhZ2VQcm94eTsK
LQotY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVmlld0dlc3R1cmVDb250cm9sbGVyKTsK
LXB1YmxpYzoKLSAgICBWaWV3R2VzdHVyZUNvbnRyb2xsZXIoV2ViUGFnZVByb3h5Jik7Ci0gICAg
flZpZXdHZXN0dXJlQ29udHJvbGxlcigpOwotICAgIHZvaWQgcGxhdGZvcm1UZWFyZG93bigpOwot
ICAgIAotICAgIGVudW0gY2xhc3MgVmlld0dlc3R1cmVUeXBlIHsKLSAgICAgICAgTm9uZSwKLSNp
ZiBQTEFURk9STShNQUMpCi0gICAgICAgIE1hZ25pZmljYXRpb24sCi0gICAgICAgIFNtYXJ0TWFn
bmlmaWNhdGlvbiwKLSNlbmRpZgotICAgICAgICBTd2lwZQotICAgIH07Ci0KLSAgICBlbnVtIGNs
YXNzIFN3aXBlRGlyZWN0aW9uIHsKLSAgICAgICAgQmFjaywKLSAgICAgICAgRm9yd2FyZAotICAg
IH07Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgZG91YmxlIG1hZ25pZmljYXRpb24oKSBjb25z
dDsKLQotICAgIHZvaWQgaGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChOU0V2ZW50ICos
IFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKLQotICAgIGJvb2wgaGFzQWN0aXZlTWFnbmlm
aWNhdGlvbkdlc3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZp
ZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbjsgfQotCi0gICAgdm9pZCBoYW5kbGVTbWFydE1h
Z25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKLQotICAgIGJv
b2wgaGFuZGxlU2Nyb2xsV2hlZWxFdmVudChOU0V2ZW50ICopOwotICAgIHZvaWQgd2hlZWxFdmVu
dFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoTlNFdmVudCAqZXZlbnQpIHsgbV9wZW5kaW5nU3dpcGVU
cmFja2VyLmV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShldmVudCk7IH0KLSAgICB2b2lkIGdl
c3R1cmVFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoTlNFdmVudCAqLCBXZWJDb3JlOjpGbG9h
dFBvaW50IG9yaWdpbik7Ci0KLSAgICB2b2lkIHNldEN1c3RvbVN3aXBlVmlld3MoVmVjdG9yPFJl
dGFpblB0cjxOU1ZpZXc+PiB2aWV3cykgeyBtX2N1c3RvbVN3aXBlVmlld3MgPSBXVEZNb3ZlKHZp
ZXdzKTsgfQotICAgIHZvaWQgc2V0Q3VzdG9tU3dpcGVWaWV3c1RvcENvbnRlbnRJbnNldChmbG9h
dCB0b3BDb250ZW50SW5zZXQpIHsgbV9jdXN0b21Td2lwZVZpZXdzVG9wQ29udGVudEluc2V0ID0g
dG9wQ29udGVudEluc2V0OyB9Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd1JlbGF0aXZl
Qm91bmRzRm9yQ3VzdG9tU3dpcGVWaWV3cygpIGNvbnN0OwotICAgIHZvaWQgc2V0RGlkTW92ZVN3
aXBlU25hcHNob3RDYWxsYmFjayhCbG9ja1B0cjx2b2lkIChDR1JlY3QpPiYmIGNhbGxiYWNrKSB7
IG1fZGlkTW92ZVN3aXBlU25hcHNob3RDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOyB9Ci0K
LSAgICBib29sIHNob3VsZElnbm9yZVBpbm5lZFN0YXRlKCkgeyByZXR1cm4gbV9wZW5kaW5nU3dp
cGVUcmFja2VyLnNob3VsZElnbm9yZVBpbm5lZFN0YXRlKCk7IH0KLSAgICB2b2lkIHNldFNob3Vs
ZElnbm9yZVBpbm5lZFN0YXRlKGJvb2wgaWdub3JlKSB7IG1fcGVuZGluZ1N3aXBlVHJhY2tlci5z
ZXRTaG91bGRJZ25vcmVQaW5uZWRTdGF0ZShpZ25vcmUpOyB9Ci0KLSAgICBib29sIGlzUGh5c2lj
YWxseVN3aXBpbmdMZWZ0KFN3aXBlRGlyZWN0aW9uKSBjb25zdDsKLSNlbHNlCi0gICAgdm9pZCBp
bnN0YWxsU3dpcGVIYW5kbGVyKFVJVmlldyAqZ2VzdHVyZVJlY29nbml6ZXJWaWV3LCBVSVZpZXcg
KnN3aXBpbmdWaWV3KTsKLSAgICB2b2lkIHNldEFsdGVybmF0ZUJhY2tGb3J3YXJkTGlzdFNvdXJj
ZVZpZXcoV0tXZWJWaWV3ICopOwotICAgIGJvb2wgY2FuU3dpcGVJbkRpcmVjdGlvbihTd2lwZURp
cmVjdGlvbik7Ci0gICAgdm9pZCBiZWdpblN3aXBlR2VzdHVyZShfVUlOYXZpZ2F0aW9uSW50ZXJh
Y3RpdmVUcmFuc2l0aW9uQmFzZSAqLCBTd2lwZURpcmVjdGlvbik7Ci0gICAgdm9pZCBlbmRTd2lw
ZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgX1VJVmlld0NvbnRy
b2xsZXJUcmFuc2l0aW9uQ29udGV4dCAqLCBib29sIGNhbmNlbGxlZCk7Ci0gICAgdm9pZCB3aWxs
Q29tbWl0UG9zdFN3aXBlVHJhbnNpdGlvbkxheWVyVHJlZShib29sKTsKLSAgICB2b2lkIHNldFJl
bmRlclRyZWVTaXplKHVpbnQ2NF90KTsKLSNlbmRpZgotCi0gICAgV2ViQ29yZTo6Q29sb3IgYmFj
a2dyb3VuZENvbG9yRm9yQ3VycmVudFNuYXBzaG90KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3Jv
dW5kQ29sb3JGb3JDdXJyZW50U25hcHNob3Q7IH0KLQotICAgIHZvaWQgZGlkRmluaXNoTG9hZEZv
ck1haW5GcmFtZSgpIHsgZGlkUmVhY2hNYWluRnJhbWVMb2FkVGVybWluYWxTdGF0ZSgpOyB9Ci0g
ICAgdm9pZCBkaWRGYWlsTG9hZEZvck1haW5GcmFtZSgpIHsgZGlkUmVhY2hNYWluRnJhbWVMb2Fk
VGVybWluYWxTdGF0ZSgpOyB9Ci0gICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXRGb3JNYWluRnJhbWUoKTsKLSAgICB2b2lkIGRpZFJlcGFpbnRBZnRlck5hdmlnYXRpb24oKTsK
LSAgICB2b2lkIGRpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkKCk7Ci0gICAgdm9pZCBkaWRS
ZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTsKLSAgICB2b2lkIGRpZFJlYWNoTWFpbkZyYW1lTG9hZFRl
cm1pbmFsU3RhdGUoKTsKLSAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JNYWlu
RnJhbWUoU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUpOwotCi0gICAgdm9pZCBjaGVja0ZvckFj
dGl2ZUxvYWRzKCk7Ci0KLSAgICB2b2lkIHJlbW92ZVN3aXBlU25hcHNob3QoKTsKLQotcHJpdmF0
ZToKLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotCi0gICAgc3Rh
dGljIFZpZXdHZXN0dXJlQ29udHJvbGxlciogZ2VzdHVyZUNvbnRyb2xsZXJGb3JQYWdlKHVpbnQ2
NF90KTsKLQotICAgIGNsYXNzIFNuYXBzaG90UmVtb3ZhbFRyYWNrZXIgewotICAgIHB1YmxpYzoK
LSAgICAgICAgZW51bSBFdmVudCA6IHVpbnQ4X3QgewotICAgICAgICAgICAgVmlzdWFsbHlOb25F
bXB0eUxheW91dCA9IDEgPDwgMCwKLSAgICAgICAgICAgIFJlbmRlclRyZWVTaXplVGhyZXNob2xk
ID0gMSA8PCAxLAotICAgICAgICAgICAgUmVwYWludEFmdGVyTmF2aWdhdGlvbiA9IDEgPDwgMiwK
LSAgICAgICAgICAgIE1haW5GcmFtZUxvYWQgPSAxIDw8IDMsCi0gICAgICAgICAgICBTdWJyZXNv
dXJjZUxvYWRzID0gMSA8PCA0LAotICAgICAgICAgICAgU2Nyb2xsUG9zaXRpb25SZXN0b3JhdGlv
biA9IDEgPDwgNQotICAgICAgICB9OwotICAgICAgICB0eXBlZGVmIHVpbnQ4X3QgRXZlbnRzOwot
Ci0gICAgICAgIFNuYXBzaG90UmVtb3ZhbFRyYWNrZXIoKTsKLQotICAgICAgICB2b2lkIHN0YXJ0
KEV2ZW50cywgc3RkOjpmdW5jdGlvbjx2b2lkKCk+KTsKLSAgICAgICAgdm9pZCByZXNldCgpOwot
Ci0gICAgICAgIGJvb2wgZXZlbnRPY2N1cnJlZChFdmVudHMpOwotICAgICAgICBib29sIGNhbmNl
bE91dHN0YW5kaW5nRXZlbnQoRXZlbnRzKTsKLQotICAgICAgICB2b2lkIHN0YXJ0V2F0Y2hkb2co
c3RkOjpjaHJvbm86OnNlY29uZHMpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIFN0
cmluZyBldmVudHNEZXNjcmlwdGlvbihFdmVudHMpOwotICAgICAgICB2b2lkIGxvZyhjb25zdCBT
dHJpbmcmKSBjb25zdDsKLQotICAgICAgICB2b2lkIGZpcmVSZW1vdmFsQ2FsbGJhY2tJbW1lZGlh
dGVseSgpOwotICAgICAgICB2b2lkIGZpcmVSZW1vdmFsQ2FsbGJhY2tJZlBvc3NpYmxlKCk7Ci0g
ICAgICAgIHZvaWQgd2F0Y2hkb2dUaW1lckZpcmVkKCk7Ci0KLSAgICAgICAgYm9vbCBzdG9wV2Fp
dGluZ0ZvckV2ZW50KEV2ZW50cywgY29uc3QgU3RyaW5nJiBsb2dSZWFzb24pOwotCi0gICAgICAg
IEV2ZW50cyBtX291dHN0YW5kaW5nRXZlbnRzIHsgMCB9OwotICAgICAgICBzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4gbV9yZW1vdmFsQ2FsbGJhY2s7Ci0gICAgICAgIHN0ZDo6Y2hyb25vOjpzdGVhZHlf
Y2xvY2s6OnRpbWVfcG9pbnQgbV9zdGFydFRpbWU7Ci0KLSAgICAgICAgUnVuTG9vcDo6VGltZXI8
U25hcHNob3RSZW1vdmFsVHJhY2tlcj4gbV93YXRjaGRvZ1RpbWVyOwotICAgIH07Ci0KLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KLSAgICB2b2lkIGRpZENvbGxl
Y3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNp
YmxlQ29udGVudEJvdW5kcywgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSk7
Ci0gICAgdm9pZCBkaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJl
KFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVj
dCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGlzUmVwbGFj
ZWRFbGVtZW50LCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2aWV3cG9ydE1h
eGltdW1TY2FsZSk7Ci0KLSAgICB2b2lkIGVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCk7Ci0KLSAg
ICBXZWJDb3JlOjpGbG9hdFBvaW50IHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4oV2ViQ29yZTo6
RmxvYXRQb2ludCBvcmlnaW4sIGRvdWJsZSBzY2FsZSk7Ci0KLSAgICB2b2lkIHRyYWNrU3dpcGVH
ZXN0dXJlKE5TRXZlbnQgKiwgU3dpcGVEaXJlY3Rpb24pOwotICAgIHZvaWQgYmVnaW5Td2lwZUdl
c3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgU3dpcGVEaXJlY3Rpb24p
OwotICAgIHZvaWQgaGFuZGxlU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRh
cmdldEl0ZW0sIGRvdWJsZSBwcm9ncmVzcywgU3dpcGVEaXJlY3Rpb24pOwotICAgIHZvaWQgd2ls
bEVuZFN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiB0YXJnZXRJdGVtLCBib29s
IGNhbmNlbGxlZCk7Ci0gICAgdm9pZCBlbmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSogdGFyZ2V0SXRlbSwgYm9vbCBjYW5jZWxsZWQpOwotICAgIGJvb2wgc2hvdWxkVXNlU25h
cHNob3RGb3JTaXplKFZpZXdTbmFwc2hvdCYsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzd2lwZUxheWVy
U2l6ZSwgZmxvYXQgdG9wQ29udGVudEluc2V0KTsKLQotICAgIENBTGF5ZXIgKmRldGVybWluZVNu
YXBzaG90TGF5ZXJQYXJlbnQoKSBjb25zdDsKLSAgICBDQUxheWVyICpkZXRlcm1pbmVMYXllckFk
amFjZW50VG9TbmFwc2hvdEZvclBhcmVudChTd2lwZURpcmVjdGlvbiwgQ0FMYXllciAqc25hcHNo
b3RMYXllclBhcmVudCkgY29uc3Q7Ci0gICAgdm9pZCBhcHBseURlYnVnZ2luZ1Byb3BlcnRpZXNU
b1N3aXBlVmlld3MoKTsKLSAgICB2b2lkIGRpZE1vdmVTd2lwZVNuYXBzaG90TGF5ZXIoKTsKLQot
ICAgIHZvaWQgZm9yY2VSZXBhaW50SWZOZWVkZWQoKTsKLQotICAgIGNsYXNzIFBlbmRpbmdTd2lw
ZVRyYWNrZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgUGVuZGluZ1N3aXBlVHJhY2tlcihXZWJQ
YWdlUHJveHkmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoTlNFdmVudCAqLCBTd2lwZURpcmVjdGlvbik+
IHRyYWNrU3dpcGVDYWxsYmFjayk7Ci0gICAgICAgIGJvb2wgaGFuZGxlRXZlbnQoTlNFdmVudCAq
KTsKLSAgICAgICAgdm9pZCBldmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoTlNFdmVudCAqKTsK
LQotICAgICAgICB2b2lkIHJlc2V0KGNvbnN0IGNoYXIqIHJlc2V0UmVhc29uRm9yTG9nZ2luZyk7
Ci0KLSAgICAgICAgYm9vbCBzaG91bGRJZ25vcmVQaW5uZWRTdGF0ZSgpIHsgcmV0dXJuIG1fc2hv
dWxkSWdub3JlUGlubmVkU3RhdGU7IH0KLSAgICAgICAgdm9pZCBzZXRTaG91bGRJZ25vcmVQaW5u
ZWRTdGF0ZShib29sIGlnbm9yZSkgeyBtX3Nob3VsZElnbm9yZVBpbm5lZFN0YXRlID0gaWdub3Jl
OyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBib29sIHRyeVRvU3RhcnRTd2lwZShOU0V2ZW50
ICopOwotICAgICAgICBib29sIHNjcm9sbEV2ZW50Q2FuQmVjb21lU3dpcGUoTlNFdmVudCAqLCBT
d2lwZURpcmVjdGlvbiYpOwotCi0gICAgICAgIGVudW0gY2xhc3MgU3RhdGUgewotICAgICAgICAg
ICAgTm9uZSwKLSAgICAgICAgICAgIFdhaXRpbmdGb3JXZWJDb3JlLAotICAgICAgICAgICAgSW5z
dWZmaWNpZW50TWFnbml0dWRlCi0gICAgICAgIH07Ci0KLSAgICAgICAgU3RhdGUgbV9zdGF0ZSB7
IFN0YXRlOjpOb25lIH07Ci0gICAgICAgIFN3aXBlRGlyZWN0aW9uIG1fZGlyZWN0aW9uOwotICAg
ICAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9jdW11bGF0aXZlRGVsdGE7Ci0KLSAgICAgICAgYm9v
bCBtX3Nob3VsZElnbm9yZVBpbm5lZFN0YXRlIHsgZmFsc2UgfTsKLQotICAgICAgICBzdGQ6OmZ1
bmN0aW9uPHZvaWQoTlNFdmVudCAqLCBTd2lwZURpcmVjdGlvbik+IG1fdHJhY2tTd2lwZUNhbGxi
YWNrOwotICAgICAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZVByb3h5OwotICAgIH07Ci0jZW5k
aWYKLQotICAgIFdlYlBhZ2VQcm94eSYgbV93ZWJQYWdlUHJveHk7Ci0gICAgVmlld0dlc3R1cmVU
eXBlIG1fYWN0aXZlR2VzdHVyZVR5cGUgeyBWaWV3R2VzdHVyZVR5cGU6Ok5vbmUgfTsKLQotICAg
IFJ1bkxvb3A6OlRpbWVyPFZpZXdHZXN0dXJlQ29udHJvbGxlcj4gbV9zd2lwZUFjdGl2ZUxvYWRN
b25pdG9yaW5nVGltZXI7Ci0KLSAgICBXZWJDb3JlOjpDb2xvciBtX2JhY2tncm91bmRDb2xvckZv
ckN1cnJlbnRTbmFwc2hvdDsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZWZQdHI8Vmlld1Nu
YXBzaG90PiBtX2N1cnJlbnRTd2lwZVNuYXBzaG90OwotCi0gICAgZG91YmxlIG1fbWFnbmlmaWNh
dGlvbjsKLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fbWFnbmlmaWNhdGlvbk9yaWdpbjsKLQot
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX2xhc3RTbWFydE1hZ25pZmljYXRpb25VbnNjYWxlZFRh
cmdldFJlY3Q7Ci0gICAgYm9vbCBtX2xhc3RNYWduaWZpY2F0aW9uR2VzdHVyZVdhc1NtYXJ0TWFn
bmlmaWNhdGlvbiB7IGZhbHNlIH07Ci0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX2xhc3RTbWFy
dE1hZ25pZmljYXRpb25PcmlnaW47Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV92aXNpYmxl
Q29udGVudFJlY3Q7Ci0gICAgYm9vbCBtX3Zpc2libGVDb250ZW50UmVjdElzVmFsaWQgeyBmYWxz
ZSB9OwotICAgIGJvb2wgbV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSB7IGZhbHNl
IH07Ci0KLSAgICBSZXRhaW5QdHI8V0tTd2lwZUNhbmNlbGxhdGlvblRyYWNrZXI+IG1fc3dpcGVD
YW5jZWxsYXRpb25UcmFja2VyOwotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3N3aXBlTGF5ZXI7
Ci0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc3dpcGVTbmFwc2hvdExheWVyOwotICAgIFJldGFp
blB0cjxDQUdyYWRpZW50TGF5ZXI+IG1fc3dpcGVTaGFkb3dMYXllcjsKLSAgICBSZXRhaW5QdHI8
Q0FMYXllcj4gbV9zd2lwZURpbW1pbmdMYXllcjsKLSAgICBWZWN0b3I8UmV0YWluUHRyPENBTGF5
ZXI+PiBtX2N1cnJlbnRTd2lwZUxpdmVMYXllcnM7Ci0KLSAgICBWZWN0b3I8UmV0YWluUHRyPE5T
Vmlldz4+IG1fY3VzdG9tU3dpcGVWaWV3czsKLSAgICBmbG9hdCBtX2N1c3RvbVN3aXBlVmlld3NU
b3BDb250ZW50SW5zZXQgeyAwIH07Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fY3VycmVudFN3
aXBlQ3VzdG9tVmlld0JvdW5kczsKLQotICAgIFBlbmRpbmdTd2lwZVRyYWNrZXIgbV9wZW5kaW5n
U3dpcGVUcmFja2VyOwotCi0gICAgQmxvY2tQdHI8dm9pZCAoQ0dSZWN0KT4gbV9kaWRNb3ZlU3dp
cGVTbmFwc2hvdENhbGxiYWNrOwotCi0gICAgYm9vbCBtX2hhc091dHN0YW5kaW5nUmVwYWludFJl
cXVlc3QgeyBmYWxzZSB9OwotI2Vsc2UgICAgCi0gICAgVUlWaWV3ICptX2xpdmVTd2lwZVZpZXcg
eyBudWxscHRyIH07Ci0gICAgUmV0YWluUHRyPFVJVmlldz4gbV9saXZlU3dpcGVWaWV3Q2xpcHBp
bmdWaWV3OwotICAgIFJldGFpblB0cjxVSVZpZXc+IG1fc25hcHNob3RWaWV3OwotICAgIFJldGFp
blB0cjxVSVZpZXc+IG1fdHJhbnNpdGlvbkNvbnRhaW5lclZpZXc7Ci0gICAgUmV0YWluUHRyPFdL
U3dpcGVUcmFuc2l0aW9uQ29udHJvbGxlcj4gbV9zd2lwZUludGVyYWN0aXZlVHJhbnNpdGlvbkRl
bGVnYXRlOwotICAgIFJldGFpblB0cjxfVUlWaWV3Q29udHJvbGxlck9uZVRvT25lVHJhbnNpdGlv
bkNvbnRleHQ+IG1fc3dpcGVUcmFuc2l0aW9uQ29udGV4dDsKLSAgICB1aW50NjRfdCBtX3NuYXBz
aG90UmVtb3ZhbFRhcmdldFJlbmRlclRyZWVTaXplIHsgMCB9OwotICAgIFdlYWtPYmpDUHRyPFdL
V2ViVmlldz4gbV9hbHRlcm5hdGVCYWNrRm9yd2FyZExpc3RTb3VyY2VWaWV3OwotICAgIFJlZlB0
cjxXZWJQYWdlUHJveHk+IG1fd2ViUGFnZVByb3h5Rm9yQmFja0ZvcndhcmRMaXN0Rm9yQ3VycmVu
dFN3aXBlOwotICAgIHVpbnQ2NF90IG1fZ2VzdHVyZVBlbmRpbmdTbmFwc2hvdFJlbW92YWwgeyAw
IH07Ci0jZW5kaWYKLQotICAgIFNuYXBzaG90UmVtb3ZhbFRyYWNrZXIgbV9zbmFwc2hvdFJlbW92
YWxUcmFja2VyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBWaWV3
R2VzdHVyZUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbgpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZjUxZmQyZDc2YzQ5NTAyZGFhN2IzZmNkNjVhN2MzZTE2YTZj
Mjc3Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5p
bgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotbWVzc2FnZXMgLT4gVmlld0dlc3R1cmVDb250cm9sbGVyIHsKLSNp
ZiBQTEFURk9STShNQUMpCi0gICAgRGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdl
c3R1cmUoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGZyYW1l
SGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQotICAgIERpZENvbGxlY3RHZW9tZXRyeUZvclNt
YXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIFdlYkNv
cmU6OkZsb2F0UmVjdCByZW5kZXJSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRl
bnRCb3VuZHMsIGJvb2wgaXNSZXBsYWNlZEVsZW1lbnQsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1T
Y2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlKQotICAgIERpZEhpdFJlbmRlclRyZWVT
aXplVGhyZXNob2xkKCkKLSNlbmRpZgotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE1MzI1OTljZjIyZTc1MGEyMDUwOTI1M2U1
ODJjZWUwNzllYmFmOGQuLmQ3ZTE5MmQ4NGU2OWUxYTAzYzhmZGUyMzY2N2Y5ZmU1ODNlMzEzNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTQ4MDcsNiArNDgwNyw5IEBACiAJCQkJMUFGRTQzNjMxOEI2QzA4MTAwOUM3QTQ4IC8q
IFVJRGVsZWdhdGUubW0gKi8sCiAJCQkJRTRFODY0OEUxQjE2NzNGQjAwQzgyRjQwIC8qIFZlcnNp
b25DaGVja3MuaCAqLywKIAkJCQlFNEU4NjQ4RjFCMTY3M0ZCMDBDODJGNDAgLyogVmVyc2lvbkNo
ZWNrcy5tbSAqLywKKwkJCQkyREFGNEZGQTFCNjM2MTgxMDA2MDEzRDYgLyogVmlld0dlc3R1cmVD
b250cm9sbGVyLmNwcCAqLywKKwkJCQkyRDEyNUM1QzE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dl
c3R1cmVDb250cm9sbGVyLmggKi8sCisJCQkJMkQxQjVENUExODU4NjU5OTAwNkM2NTk2IC8qIFZp
ZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk5OTg2QkRENjFDQTlBMjIy
MDA0ODAwQUEgLyogV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSAqLywKIAkJCQkxQUMwMjcz
RTE5NjYyMkQ2MDBDMTJCNzUgLyogV2ViUGFnZVByb3h5Q29jb2EubW0gKi8sCiAJCQkJN0M0Njk0
Q0IxQTRCNTEwQTAwQUQ1ODQ1IC8qIFdlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tICovLApAQCAt
NjEyNiw3ICs2MTI5LDYgQEAKIAkJCQk0QTQxMEYzQTE5QUY3QjA0MDAyRUJBQjUgLyogVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCAqLywKIAkJCQk0QTQxMEYzQjE5QUY3
QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAgKi8sCiAJ
CQkJNEE0MTBGM0MxOUFGN0IwNDAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHkuaCAqLywKLQkJCQkyREFGNEZGQTFCNjM2MTgxMDA2MDEzRDYgLyogVmlld0dlc3R1cmVD
b250cm9sbGVyLmNwcCAqLywKIAkJCQkxQTBGMjlFMTEyMEI0NDQyMDA1M0QxQjkgLyogVmlzaXRl
ZExpbmtTdG9yZS5jcHAgKi8sCiAJCQkJMUEwRjI5RTIxMjBCNDQ0MjAwNTNEMUI5IC8qIFZpc2l0
ZWRMaW5rU3RvcmUuaCAqLywKIAkJCQkxQTYwMjI0OTE4QzE2QjA4MDBDM0U4QzkgLyogVmlzaXRl
ZExpbmtTdG9yZS5tZXNzYWdlcy5pbiAqLywKQEAgLTY5MjEsOCArNjkyMyw2IEBACiAJCQkJMUFB
NDE3RUQxMkMwMEQ4NzAwMkJFNjdCIC8qIFRleHRDaGVja2VyTWFjLm1tICovLAogCQkJCTFBRjA1
RDg1MTQ2ODgzNDgwMDhCMUU4MSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5
LmggKi8sCiAJCQkJMUFGMDVEODQxNDY4ODM0ODAwOEIxRTgxIC8qIFRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhUHJveHkubW0gKi8sCi0JCQkJMkQxMjVDNUMxODU3RUEwNTAwM0JBM0NCIC8q
IFZpZXdHZXN0dXJlQ29udHJvbGxlci5oICovLAotCQkJCTJEMUI1RDVBMTg1ODY1OTkwMDZDNjU5
NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJMkQxMjVDNUQx
ODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSAqLywKIAkJCQky
RDZDRDExNzE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUuaCAqLywKIAkJCQky
RDZDRDExODE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUubW0gKi8sCg==
</data>
<flag name="review"
          id="314120"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>