<?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>224794</bug_id>
          
          <creation_ts>2021-04-19 18:44:30 -0700</creation_ts>
          <short_desc>[iOS][FCR] Update date/time picker appearance</short_desc>
          <delta_ts>2021-04-20 15:45:23 -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>Forms</component>
          <version>Other</version>
          <rep_platform>iPhone / iPad</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="Aditya Keerthi">akeerthi</reporter>
          <assigned_to name="Aditya Keerthi">akeerthi</assigned_to>
          <cc>cdumez</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1752088</commentid>
    <comment_count>0</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-04-19 18:44:30 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752089</commentid>
    <comment_count>1</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-04-19 18:44:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/76785859&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752090</commentid>
    <comment_count>2</comment_count>
      <attachid>426505</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-04-19 18:53:39 -0700</bug_when>
    <thetext>Created attachment 426505
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752094</commentid>
    <comment_count>3</comment_count>
      <attachid>426508</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-04-19 19:14:13 -0700</bug_when>
    <thetext>Created attachment 426508
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752422</commentid>
    <comment_count>4</comment_count>
      <attachid>426508</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-04-20 14:25:59 -0700</bug_when>
    <thetext>Comment on attachment 426508
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=426508&amp;action=review

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:8382
&gt; +    RetainPtr&lt;UITargetedPreview&gt; targetedPreview = createFallbackTargetedPreview(self, self.containerForContextMenuHintPreviews, _focusedElementInformation.interactionRect, backgroundColor);

Nit - `auto`.

&gt; Source/WebKit/UIProcess/ios/forms/WKDateTimeInputControl.mm:71
&gt; +- (instancetype)initWithDelegate:(id&lt;WKDateTimePickerViewControllerDelegate&gt;)delegate

Nit - space between `id` and `&lt;`.

(AFAIK, the rule we typically follow is space before protocols, but no space before concrete types like in `NSArray&lt;Foo *&gt; *`).

&gt; Source/WebKit/UIProcess/ios/forms/WKDateTimeInputControl.mm:94
&gt; +    RetainPtr&lt;UIVisualEffectView&gt; backgroundView = adoptNS([[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleSystemMaterial]]);

Nit - `auto`

&gt; Source/WebKit/UIProcess/ios/forms/WKDateTimeInputControl.mm:110
&gt; +    RetainPtr&lt;UIView&gt; toolbarView = adoptNS([[UIView alloc] init]);

Nit - `auto`

&gt; Source/WebKit/UIProcess/ios/forms/WKDateTimeInputControl.mm:121
&gt; +    RetainPtr&lt;UIView&gt; separatorView = adoptNS([[UIView alloc] init]);

(Ditto)

&gt; Source/WebKit/UIProcess/ios/forms/WKDateTimeInputControl.mm:524
&gt; +    [_view updateFocusedElementValueAsNumber:([date timeIntervalSince1970] + [self _timeZoneOffsetFromGMT:date]) * kMillisecondsPerSecond];

Nit - `date.timeIntervalSince1970`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752440</commentid>
    <comment_count>5</comment_count>
      <attachid>426597</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-04-20 14:52:08 -0700</bug_when>
    <thetext>Created attachment 426597
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752481</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-20 15:45:22 -0700</bug_when>
    <thetext>Committed r276325 (236805@main): &lt;https://commits.webkit.org/236805@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 426597.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426505</attachid>
            <date>2021-04-19 18:53:39 -0700</date>
            <delta_ts>2021-04-19 19:36:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224794-20210419215337.patch</filename>
            <type>text/plain</type>
            <size>43254</size>
            <attacher name="Aditya Keerthi">akeerthi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IzNjU5ZDFkYWY0YTdh
MzEyODVhOTFkNDgzOWJmOWE3MTE0NjgwNi4uYzQ2MzA3OWU5NTA3NmIwNjk1NzllMTNjY2JhZjNk
NzhhNThhYWI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA0LTE5ICBBZGl0
eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXVtGQ1JdIFVw
ZGF0ZSBkYXRlL3RpbWUgcGlja2VyIGFwcGVhcmFuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDc5NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzY3ODU4NTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBlbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzOgorCisgICAgICAgIFJlbW92ZSBub3cg
dW51c2VkIHN0cmluZy4KKworICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpm
b3JtQ29udHJvbERvbmVCdXR0b25UaXRsZSk6CisKKyAgICAgICAgTW92ZWQgZGVmaW5pdGlvbiBv
dXQgb2YgUExBVEZPUk0oV0FUQ0hPUykgaW4gTG9jYWxpemVkU3RyaW5ncy5jcHAgYW5kCisgICAg
ICAgIGludG8gTG9jYWxpemVkU3RyaW5nc0NvY29hLCBzbyB0aGF0IHRoZSAiRG9uZSIgc3RyaW5n
IGNhbiBiZSB1c2VkIGJ5CisgICAgICAgIFBMQVRGT1JNKElPU19GQU1JTFkpLgorCiAyMDIxLTA0
LTEzICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XVtGQ1JdIEluZGV0ZXJtaW5hdGUgcHJvZ3Jlc3MgYmFycyBzaG91bGQgdXBkYXRlIGF0IDYwZnBz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDFiMGNmZjAwNjM3YzlkZWY4NjFiM2VlYjczNjAwODljNmQxMGIwNDcuLjU3
ZTE0MjNhOTUxODg1OWE4NDQ0YjlkNGIzNWY5MWE0MThlYjczMTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzggQEAKKzIwMjEtMDQtMTkgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1NdW0ZDUl0gVXBkYXRlIGRhdGUvdGltZSBwaWNrZXIgYXBwZWFyYW5j
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Nzk0
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83Njc4NTg1OT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEYXRlL3RpbWUgcGlja2VycyBzaG91bGQgaGF2
ZSBhIHN5c3RlbSBtYXRlcmlhbCBiYWNrZ3JvdW5kIGFuZCBzaG91bGQKKyAgICAgICAgYXZvaWQg
b2JzY3VyaW5nIHRoZSBhc3NvY2lhdGVkIGVsZW1lbnQgd2hlbiBwb3NzaWJsZS4KKworICAgICAg
ICAqIFBsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaDoKKworICAgICAgICBBZGQgbmV3IFNQSSBk
ZWNsYXJhdGlvbnMgdG8gc3VwcG9ydCBkYXRlL3RpbWUgcGlja2VyIG1vZGlmaWNhdGlvbnMuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAg
ICAgICAgKGNyZWF0ZVRhcmdldGVkUHJldmlldyk6CisgICAgICAgIChjcmVhdGVGYWxsYmFja1Rh
cmdldGVkUHJldmlldyk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2NyZWF0ZVRhcmdldGVk
Q29udGV4dE1lbnVIaW50UHJldmlld0ZvckZvY3VzZWRFbGVtZW50XSk6CisKKyAgICAgICAgU2V0
IHRoZSBVSVRhcmdldGVkUHJldmlldyBiYWNrZ3JvdW5kIGNvbG9yIHRvIGNsZWFyQ29sb3Igd2hl
bgorICAgICAgICBwcmVzZW50aW5nIGEgZGF0ZS90aW1lIHBpY2tlciwgc28gdGhhdCB0aGUgcHJl
c2VudGVkIHBpY2tlciBoYXMgYQorICAgICAgICB2aXNpYmxlIG1hdGVyaWFsIGVmZmVjdC4gV2l0
aG91dCB0aGlzIGNoYW5nZSwgdGhlIHBpY2tlciB3b3VsZCBoYXZlIGEKKyAgICAgICAgc29saWQg
d2hpdGUgb3IgYmxhY2sgYmFja2dyb3VuZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5tbToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tl
clZpZXdDb250cm9sbGVyIGluaXRXaXRoRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dLRGF0ZVRp
bWVQaWNrZXJWaWV3Q29udHJvbGxlciB2aWV3RGlkTG9hZF0pOgorCisgICAgICAgIEFkZCBhIHN5
c3RlbSBtYXRlcmlhbCBiYWNrZ3JvdW5kIHRvIHRoZSBkYXRlIHBpY2tlciB1c2luZworICAgICAg
ICBVSVZpc3VhbEVmZmVjdFZpZXcuCisKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlclZpZXdD
b250cm9sbGVyIGRhdGVQaWNrZXJDaGFuZ2VkOl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlj
a2VyVmlld0NvbnRyb2xsZXIgcmVzZXRCdXR0b25QcmVzc2VkOl0pOgorICAgICAgICAoLVtXS0Rh
dGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgZG9uZUJ1dHRvblByZXNzZWQ6XSk6CisgICAgICAg
ICgtW1dLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciBkYXRlUGlja2VySW5zZXRzXSk6Cisg
ICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciBwcmVmZXJyZWREYXRlUGlj
a2VyU2l6ZV0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgcHJl
ZmVycmVkQ29udGVudFNpemVdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlclZpZXdDb250
cm9sbGVyIGRhdGVdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVy
IHNldERhdGU6XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciBz
ZXREYXRlUGlja2VyTW9kZTpdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlclZpZXdDb250
cm9sbGVyIHRpbWVab25lXSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJv
bGxlciBzZXRUaW1lWm9uZTpdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlclZpZXdDb250
cm9sbGVyIGNhbGVuZGFyXSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgaW5pdFdpdGhW
aWV3OmRhdGVQaWNrZXJNb2RlOl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIF9wcmVm
ZXJyZWRFZGdlSW5zZXRzRm9yRGF0ZVRpbWVQaWNrZXJdKToKKworICAgICAgICBBdHRlbXB0IHRv
IHByZXNlbnQgdGhlIGRhdGUgcGlja2VyIGluIGEgd2F5IHRoYXQgZG9lcyBub3Qgb2JzY3VyZSB0
aGUKKyAgICAgICAgZWxlbWVudC4KKworICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIF9jb250
ZXh0TWVudUludGVyYWN0aW9uOnN0eWxlRm9yTWVudVdpdGhDb25maWd1cmF0aW9uOl0pOgorICAg
ICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGNvbnRleHRNZW51SW50ZXJhY3Rpb246Y29uZmlndXJh
dGlvbkZvck1lbnVBdExvY2F0aW9uOl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGRh
dGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXJEaWRDaGFuZ2VEYXRlOl0pOgorICAgICAgICAoLVtX
S0RhdGVUaW1lUGlja2VyIGRhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXJEaWRQcmVzc1Jlc2V0
QnV0dG9uOl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGRhdGVUaW1lUGlja2VyVmll
d0NvbnRyb2xsZXJEaWRQcmVzc0RvbmVCdXR0b246XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQ
aWNrZXIgc2hvdWxkRm9yY2VHcmVnb3JpYW5DYWxlbmRhcl0pOgorICAgICAgICAoLVtXS0RhdGVU
aW1lUGlja2VyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBfdGltZVpv
bmVPZmZzZXRGcm9tR01UOl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIF9zYW5pdGl6
ZUlucHV0VmFsdWVGb3JGb3JtYXR0ZXI6XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIg
ZGF0ZUZvcm1hdHRlckZvclBpY2tlcl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIF9k
YXRlQ2hhbmdlZFNldEFzTnVtYmVyXSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgX2Rh
dGVDaGFuZ2VkU2V0QXNTdHJpbmddKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBzZXRE
YXRlVGltZVBpY2tlclRvSW5pdGlhbFZhbHVlXSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNr
ZXIgY29udHJvbFZpZXddKToKKworICAgICAgICBVcGRhdGVkIHRoaXMgbWV0aG9kIHRvIHJldHVy
biBuaWwsIG1hdGNoaW5nIG90aGVyIGZvcm0gY29udHJvbHMgdGhhdAorICAgICAgICBkbyBub3Qg
cHJlc2VudCBhIGtleWJvYXJkIGlucHV0IHZpZXcgKGV4YW1wbGU6IDxzZWxlY3Q+KS4KKworICAg
ICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGNvbnRyb2xCZWdpbkVkaXRpbmddKToKKyAgICAgICAg
KC1bV0tEYXRlVGltZVBpY2tlciBjb250cm9sRW5kRWRpdGluZ10pOgorICAgICAgICAoLVtXS0Rh
dGVUaW1lUGlja2VyIGNhbGVuZGFyVHlwZV0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2Vy
IGhvdXJdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBtaW51dGVdKToKKyAgICAgICAg
KC1bV0tEYXRlVGltZVBpY2tlciBzZXRIb3VyOm1pbnV0ZTpdKToKKwogMjAyMS0wNC0wOSAgQWRp
dHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bRkNSXSBD
b2xvciBwaWNrZXIgc2hlZXQgc2hvdWxkIHVzZSBkZWZhdWx0IGhlaWdodApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncyBiL1NvdXJjZS9XZWJD
b3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKaW5kZXggMjU5MjlhMTRhODdkN2MzNTcz
OTdmZmQyM2Q5NDNkYzJhMzNiZjliYy4uOWFlNDEzNzE1Mjg4YTYyOTk5ZjVkYzRjM2U2NmYxNWMy
ZWRjNWQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUu
c3RyaW5ncworKysgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdz
CkBAIC0zMzEsNyArMzMxLDcgQEAKIC8qIExhYmVsIGZvciB0aGUgZG9uYXRlIHdpdGggQXBwbGUg
UGF5IGJ1dHRvbi4gKi8KICJEb25hdGUgd2l0aCBBcHBsZSBQYXkiID0gIkRvbmF0ZSB3aXRoIEFw
cGxlIFBheSI7CiAKLS8qIFRpdGxlIG9mIHRoZSBEb25lIGJ1dHRvbiBmb3Igem9vbWVkIGZvcm0g
Y29udHJvbHMuICovCisvKiBUaXRsZSBvZiB0aGUgRG9uZSBidXR0b24gZm9yIGZvcm0gY29udHJv
bHMuICovCiAiRG9uZSIgPSAiRG9uZSI7CiAKIC8qIERpc2FsbG93IGJ1dHRvbiB0aXRsZSBpbiBn
ZW9sb2NhdGlvbiBwcm9tcHQgKi8KQEAgLTU4Niw5ICs1ODYsNiBAQAogLyogT3B0aW9uIGluIHNl
Z21lbnRlZCBjb250cm9sIGZvciBpbnNlcnRpbmcgYSBudW1iZXJlZCBsaXN0IGluIHRleHQgZWRp
dGluZyAqLwogIk51bWJlcmVkIGxpc3QiID0gIk51bWJlcmVkIGxpc3QiOwogCi0vKiBUaXRsZSBv
ZiB0aGUgT0sgYnV0dG9uIGluIGRhdGUvdGltZSBmb3JtIGNvbnRyb2xzLiAqLwotIk9LIChPSyBi
dXR0b24gdGl0bGUgaW4gZGF0ZS90aW1lIHBpY2tlcikiID0gIk9LIjsKLQogLyogVGl0bGUgb2Yg
dGhlIE9LIGJ1dHRvbiBmb3IgdGhlIG51bWJlciBwYWQgaW4gem9vbWVkIGZvcm0gY29udHJvbHMu
ICovCiAiT0sgKE9LIGJ1dHRvbiB0aXRsZSBpbiBleHRyYSB6b29tZWQgbnVtYmVyIHBhZCkiID0g
Ik9LIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3Ry
aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcApp
bmRleCBjNWM5ZWRiOTZiM2Y0OTI3NTUwNDNjMWE5N2VmZmU4MWEzODM5ODRiLi5jYzM1NTNmZmI5
NzNmOTI4MGY3YjU3ZDQ0ZThmNDVhM2FjYmE1OGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcApAQCAtMTE4OSwxMSArMTE4OSw2IEBAIFN0cmluZyBu
dW1iZXJQYWRPS0J1dHRvblRpdGxlKCkKICAgICByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoIk9L
IiwgIk9LIChPSyBidXR0b24gdGl0bGUgaW4gZXh0cmEgem9vbWVkIG51bWJlciBwYWQpIiwgIlRp
dGxlIG9mIHRoZSBPSyBidXR0b24gZm9yIHRoZSBudW1iZXIgcGFkIGluIHpvb21lZCBmb3JtIGNv
bnRyb2xzLiIpOwogfQogCi1TdHJpbmcgZm9ybUNvbnRyb2xEb25lQnV0dG9uVGl0bGUoKQotewot
ICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJEb25lIiwgIlRpdGxlIG9mIHRoZSBEb25lIGJ1dHRv
biBmb3Igem9vbWVkIGZvcm0gY29udHJvbHMuIik7Ci19Ci0KIFN0cmluZyBmb3JtQ29udHJvbENh
bmNlbEJ1dHRvblRpdGxlKCkKIHsKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiQ2FuY2VsIiwg
IkNhbmNlbCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVk
U3RyaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCmlu
ZGV4IDRhMjI0NWZlMTgxNmU1NGQ4YWMwZjNmMGI5ZDQzYWU3YzQ1NWQ4NTYuLmRiZjdlYjc5M2Rm
NTc0MDFjNzVjMGE4MzcxYzg3OGY1MDI4MTJlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Mb2NhbGl6ZWRTdHJpbmdzLmgKQEAgLTI2NSw2ICsyNjUsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgU3RyaW5nIGZpbGVCdXR0b25DaG9vc2VNdWx0aXBsZU1lZGlhRmlsZXNMYWJlbCgp
OwogICAgIFN0cmluZyBmaWxlQnV0dG9uTm9NZWRpYUZpbGVTZWxlY3RlZExhYmVsKCk7CiAgICAg
U3RyaW5nIGZpbGVCdXR0b25Ob01lZGlhRmlsZXNTZWxlY3RlZExhYmVsKCk7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgZm9ybUNvbnRyb2xEb25lQnV0dG9uVGl0bGUoKTsKICNlbmRpZgog
CiAgICAgU3RyaW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50
U2l6ZSYgc2l6ZSk7CkBAIC0zMzQsNyArMzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lm
IFBMQVRGT1JNKFdBVENIT1MpCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIG51bWJlclBhZE9L
QnV0dG9uVGl0bGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZm9ybUNvbnRyb2xDYW5j
ZWxCdXR0b25UaXRsZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmb3JtQ29udHJvbERv
bmVCdXR0b25UaXRsZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmb3JtQ29udHJvbEhp
ZGVCdXR0b25UaXRsZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmb3JtQ29udHJvbEdv
QnV0dG9uVGl0bGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZm9ybUNvbnRyb2xTZWFy
Y2hCdXR0b25UaXRsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCmluZGV4IGRmMmMyMWJkZjY5OTJhZDlmNWY4ZTIw
YzI4MjIxNWIwYzY5ODVjNmIuLmY2OGNlNDViM2YzZjc5ZTY5MmUyMDZjZWY5ZTg4MmFiYjdhZTk1
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0
cmluZ3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6
ZWRTdHJpbmdzQ29jb2EubW0KQEAgLTI2Nyw2ICsyNjcsMTIgQEAgU3RyaW5nIGZpbGVCdXR0b25O
b01lZGlhRmlsZXNTZWxlY3RlZExhYmVsKCkKIHsKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygi
bm8gbWVkaWEgc2VsZWN0ZWQgKG11bHRpcGxlKSIsICJUZXh0IHRvIGRpc3BsYXkgaW4gZmlsZSBi
dXR0b24gdXNlZCBpbiBIVE1MIGZvcm1zIGZvciBtZWRpYSBmaWxlcyB3aGVuIG5vIG1lZGlhIGZp
bGVzIGFyZSBzZWxlY3RlZCBhbmQgdGhlIGJ1dHRvbiBhbGxvd3MgbXVsdGlwbGUgZmlsZXMgdG8g
YmUgc2VsZWN0ZWQiKTsKIH0KKworCitTdHJpbmcgZm9ybUNvbnRyb2xEb25lQnV0dG9uVGl0bGUo
KQoreworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJEb25lIiwgIlRpdGxlIG9mIHRoZSBEb25l
IGJ1dHRvbiBmb3IgZm9ybSBjb250cm9scy4iKTsKK30KICNlbmRpZgogCiBTdHJpbmcgdmFsaWRh
dGlvbk1lc3NhZ2VUb29Mb25nVGV4dChpbnQsIGludCBtYXhMZW5ndGgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4IGE3NTgwNzM0OWRjMThkNGM1YmM4M2My
YmI2NTlkYmQ2NDk5ODNlMDAuLjFmNWEyMzI2ZDEwZjk0MTkxNmE3NzNiZTE5NTJlYTMwN2VmMWNk
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCkBAIC0yMTYs
NiArMjE2LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVUlEYXRlUGlja2VyU3R5bGUp
IHsKICNpZiBIQVZFKFVJREFURVBJQ0tFUl9TVFlMRSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkd3JpdGUsIGFzc2lnbikgVUlEYXRlUGlja2VyU3R5bGUgcHJlZmVycmVkRGF0ZVBpY2tlclN0
eWxlOwogI2VuZGlmCistIChVSUVkZ2VJbnNldHMpX2FwcGxpZWRJbnNldHNUb0VkZ2VPZkNvbnRl
bnQ7CiBAZW5kCiAKIEBpbnRlcmZhY2UgVUlEZXZpY2UgKCkKQEAgLTEyMjAsNiArMTIyMSw4IEBA
IHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBfVUlDb250ZXh0TWVudUxheW91dCkgewogQHBy
b3BlcnR5IChub25hdG9taWMpIF9VSUNvbnRleHRNZW51TGF5b3V0IHByZWZlcnJlZExheW91dDsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljKSBVSUVkZ2VJbnNldHMgcHJlZmVycmVkRWRnZUluc2V0czsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGhhc0ludGVyYWN0aXZlUHJldmlldzsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljKSBCT09MIHByZWZlcnNDZW50ZXJlZFByZXZpZXdXaGVuQWN0aW9uc0Fy
ZUFic2VudDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGlnbm9yZXNEZWZhdWx0U2l6aW5n
UnVsZXM7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU0FycmF5ICpwcmVmZXJyZWRC
YWNrZ3JvdW5kRWZmZWN0czsKICsgKGluc3RhbmNldHlwZSlkZWZhdWx0U3R5bGU7CiBAZW5kCkBA
IC0xNDk0LDYgKzE0OTcsNyBAQCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBVSVByZXZpZXdEYXRh
QXR0YWNobWVudExpc3RJc0NvbnRlbnRNYW5hZ2VkOwogI2VuZGlmCiAKIFVJRWRnZUluc2V0cyBV
SUVkZ2VJbnNldHNBZGQoVUlFZGdlSW5zZXRzIGxocywgVUlFZGdlSW5zZXRzIHJocywgVUlSZWN0
RWRnZSk7CitVSUVkZ2VJbnNldHMgVUlFZGdlSW5zZXRzU3VidHJhY3QoVUlFZGdlSW5zZXRzIGxo
cywgVUlFZGdlSW5zZXRzIHJocywgVUlSZWN0RWRnZSk7CiAKIGV4dGVybiBOU1N0cmluZyAqY29u
c3QgVUlCYWNrbGlnaHRMZXZlbENoYW5nZWROb3RpZmljYXRpb247CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmlu
ZGV4IGFkMTk3NmJmYTBiZDNjNDZjNWViMWI4MDEwNTdlMGIwNTE4ZTQ1MmYuLjQ2ZDhhZDQ3YTgw
NWQ0ODg5MmI1ZmIxMjk1YTU3NzRkNDc2MGFmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtODMzOCw3
ICs4MzM4LDcgQEAgc3RhdGljIFJldGFpblB0cjxVSVRhcmdldGVkUHJldmlldz4gY3JlYXRlVGFy
Z2V0ZWRQcmV2aWV3KFVJSW1hZ2UgKmltYWdlLCBVSVZpZXcKICAgICByZXR1cm4gYWRvcHROUyhb
W1VJVGFyZ2V0ZWRQcmV2aWV3IGFsbG9jXSBpbml0V2l0aFZpZXc6aW1hZ2VWaWV3LmdldCgpIHBh
cmFtZXRlcnM6cGFyYW1ldGVycy5nZXQoKSB0YXJnZXQ6dGFyZ2V0LmdldCgpXSk7CiB9CiAKLXN0
YXRpYyBSZXRhaW5QdHI8VUlUYXJnZXRlZFByZXZpZXc+IGNyZWF0ZUZhbGxiYWNrVGFyZ2V0ZWRQ
cmV2aWV3KFVJVmlldyAqcm9vdFZpZXcsIFVJVmlldyAqY29udGFpbmVyVmlldywgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiBmcmFtZUluUm9vdFZpZXdDb29yZGluYXRlcykKK3N0YXRpYyBSZXRh
aW5QdHI8VUlUYXJnZXRlZFByZXZpZXc+IGNyZWF0ZUZhbGxiYWNrVGFyZ2V0ZWRQcmV2aWV3KFVJ
VmlldyAqcm9vdFZpZXcsIFVJVmlldyAqY29udGFpbmVyVmlldywgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBmcmFtZUluUm9vdFZpZXdDb29yZGluYXRlcywgVUlDb2xvciAqYmFja2dyb3VuZENv
bG9yKQogewogICAgIGlmICghY29udGFpbmVyVmlldy53aW5kb3cpCiAgICAgICAgIHJldHVybiBu
aWw7CkBAIC04MzQ3LDYgKzgzNDcsOSBAQCBzdGF0aWMgUmV0YWluUHRyPFVJVGFyZ2V0ZWRQcmV2
aWV3PiBjcmVhdGVGYWxsYmFja1RhcmdldGVkUHJldmlldyhVSVZpZXcgKnJvb3RWaQogICAgICAg
ICByZXR1cm4gbmlsOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gYWRvcHROUyhbW1VJUHJldmll
d1BhcmFtZXRlcnMgYWxsb2NdIGluaXRdKTsKKyAgICBpZiAoYmFja2dyb3VuZENvbG9yKQorICAg
ICAgICBbcGFyYW1ldGVycyBzZXRCYWNrZ3JvdW5kQ29sb3I6YmFja2dyb3VuZENvbG9yXTsKKwog
ICAgIFVJVmlldyAqc25hcHNob3RWaWV3ID0gW3Jvb3RWaWV3IHJlc2l6YWJsZVNuYXBzaG90Vmll
d0Zyb21SZWN0OmZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzIGFmdGVyU2NyZWVuVXBkYXRlczpO
TyB3aXRoQ2FwSW5zZXRzOlVJRWRnZUluc2V0c1plcm9dOwogCiAgICAgQ0dSZWN0IGZyYW1lSW5D
b250YWluZXJWaWV3Q29vcmRpbmF0ZXMgPSBbcm9vdFZpZXcgY29udmVydFJlY3Q6ZnJhbWVJblJv
b3RWaWV3Q29vcmRpbmF0ZXMgdG9WaWV3OmNvbnRhaW5lclZpZXddOwpAQCAtODM2NCw3ICs4MzY3
LDE5IEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlUYXJnZXRlZFByZXZpZXc+IGNyZWF0ZUZhbGxiYWNr
VGFyZ2V0ZWRQcmV2aWV3KFVJVmlldyAqcm9vdFZpCiAKIC0gKFVJVGFyZ2V0ZWRQcmV2aWV3ICop
X2NyZWF0ZVRhcmdldGVkQ29udGV4dE1lbnVIaW50UHJldmlld0ZvckZvY3VzZWRFbGVtZW50CiB7
Ci0gICAgUmV0YWluUHRyPFVJVGFyZ2V0ZWRQcmV2aWV3PiB0YXJnZXRlZFByZXZpZXcgPSBjcmVh
dGVGYWxsYmFja1RhcmdldGVkUHJldmlldyhzZWxmLCBzZWxmLmNvbnRhaW5lckZvckNvbnRleHRN
ZW51SGludFByZXZpZXdzLCBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5pbnRlcmFjdGlvblJl
Y3QpOworICAgIGF1dG8gYmFja2dyb3VuZENvbG9yID0gWyZdKCkgLT4gVUlDb2xvciAqIHsKKyAg
ICAgICAgc3dpdGNoIChfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkgewor
ICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlOgorICAgICAgICBjYXNlIFdlYktp
dDo6SW5wdXRUeXBlOjpNb250aDoKKyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0
ZVRpbWVMb2NhbDoKKyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGltZToKKyAgICAg
ICAgICAgIHJldHVybiBVSUNvbG9yLmNsZWFyQ29sb3I7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICByZXR1cm4gbmlsOworICAgICAgICB9CisgICAgfSgpOworCisgICAgUmV0YWluUHRy
PFVJVGFyZ2V0ZWRQcmV2aWV3PiB0YXJnZXRlZFByZXZpZXcgPSBjcmVhdGVGYWxsYmFja1Rhcmdl
dGVkUHJldmlldyhzZWxmLCBzZWxmLmNvbnRhaW5lckZvckNvbnRleHRNZW51SGludFByZXZpZXdz
LCBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5pbnRlcmFjdGlvblJlY3QsIGJhY2tncm91bmRD
b2xvcik7CiAKICAgICBbc2VsZiBfdXBkYXRlVGFyZ2V0ZWRQcmV2aWV3U2Nyb2xsVmlld1VzaW5n
Q29udGFpbmVyU2Nyb2xsaW5nTm9kZUlEOl9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmNvbnRh
aW5lclNjcm9sbGluZ05vZGVJRF07CiAKQEAgLTgzODcsNyArODQwMiw3IEBAIHN0YXRpYyBSZXRh
aW5QdHI8VUlUYXJnZXRlZFByZXZpZXc+IGNyZWF0ZUZhbGxiYWNrVGFyZ2V0ZWRQcmV2aWV3KFVJ
VmlldyAqcm9vdFZpCiAgICAgfQogCiAgICAgaWYgKCF0YXJnZXRlZFByZXZpZXcpCi0gICAgICAg
IHRhcmdldGVkUHJldmlldyA9IGNyZWF0ZUZhbGxiYWNrVGFyZ2V0ZWRQcmV2aWV3KHNlbGYsIHNl
bGYuY29udGFpbmVyRm9yQ29udGV4dE1lbnVIaW50UHJldmlld3MsIF9wb3NpdGlvbkluZm9ybWF0
aW9uLmJvdW5kcyk7CisgICAgICAgIHRhcmdldGVkUHJldmlldyA9IGNyZWF0ZUZhbGxiYWNrVGFy
Z2V0ZWRQcmV2aWV3KHNlbGYsIHNlbGYuY29udGFpbmVyRm9yQ29udGV4dE1lbnVIaW50UHJldmll
d3MsIF9wb3NpdGlvbkluZm9ybWF0aW9uLmJvdW5kcywgbmlsKTsKIAogICAgIFtzZWxmIF91cGRh
dGVUYXJnZXRlZFByZXZpZXdTY3JvbGxWaWV3VXNpbmdDb250YWluZXJTY3JvbGxpbmdOb2RlSUQ6
X3Bvc2l0aW9uSW5mb3JtYXRpb24uY29udGFpbmVyU2Nyb2xsaW5nTm9kZUlEXTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENv
bnRyb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlu
cHV0Q29udHJvbC5tbQppbmRleCAzMGQxNTY0M2ZhN2QyNDgyZThmNjk3YzQ1YzJhMDNlZGFiYWNm
ZTI1Li4xZTY4MjUxODYyOWJiZDg1ZmM4ZDY0NzBhYWZhZTVhM2U2OTVjNGZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJv
bC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlu
cHV0Q29udHJvbC5tbQpAQCAtMzMsNjAgKzMzLDI0NyBAQAogI2ltcG9ydCAiV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oIgog
I2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCi0jaW1wb3J0IDxVSUtpdC9VSUJhckJ1dHRvbkl0ZW0u
aD4KICNpbXBvcnQgPFVJS2l0L1VJRGF0ZVBpY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2Nh
bGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxhbGdvcml0aG0+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAKLUBpbnRlcmZhY2UgV0tEYXRlVGltZUNvbnRleHRNZW51Vmlld0NvbnRyb2xsZXIg
OiBVSVZpZXdDb250cm9sbGVyCitAY2xhc3MgV0tEYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVy
OworCitAcHJvdG9jb2wgV0tEYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyRGVsZWdhdGUgPE5T
T2JqZWN0PgorLSAodm9pZClkYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyRGlkQ2hhbmdlRGF0
ZTooV0tEYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyICopZGF0ZVRpbWVQaWNrZXJWaWV3Q29u
dHJvbGxlcjsKKy0gKHZvaWQpZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlckRpZFByZXNzUmVz
ZXRCdXR0b246KFdLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciAqKWRhdGVUaW1lUGlja2Vy
Vmlld0NvbnRyb2xsZXI7CistICh2b2lkKWRhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXJEaWRQ
cmVzc0RvbmVCdXR0b246KFdLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciAqKWRhdGVUaW1l
UGlja2VyVmlld0NvbnRyb2xsZXI7CisKKy0gKEJPT0wpc2hvdWxkRm9yY2VHcmVnb3JpYW5DYWxl
bmRhcjsKK0BlbmQKKworQGludGVyZmFjZSBXS0RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIg
OiBVSVZpZXdDb250cm9sbGVyCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEZWxlZ2F0ZTooaWQ8
V0tEYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlOworQGVuZAor
CitAaW1wbGVtZW50YXRpb24gV0tEYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyIHsKKyAgICBD
R1NpemUgX2NvbnRlbnRTaXplOworCisgICAgUmV0YWluUHRyPFVJRGF0ZVBpY2tlcj4gX2RhdGVQ
aWNrZXI7CisgICAgV2Vha09iakNQdHI8aWQgPFdLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxl
ckRlbGVnYXRlPj4gX2RlbGVnYXRlOworfQorCitzdGF0aWMgY29uc3QgQ0dGbG9hdCBrRGF0ZVRp
bWVQaWNrZXJCdXR0b25Gb250U2l6ZSA9IDE3Oworc3RhdGljIGNvbnN0IENHRmxvYXQga0RhdGVU
aW1lUGlja2VyVG9vbGJhckhlaWdodCA9IDQ0Oworc3RhdGljIGNvbnN0IENHRmxvYXQga0RhdGVU
aW1lUGlja2VyU2VwYXJhdG9ySGVpZ2h0ID0gMTsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IGtEYXRl
VGltZVBpY2tlclZpZXdNYXJnaW4gPSAxNjsKKworc3RhdGljIGNvbnN0IENHRmxvYXQga0RhdGVU
aW1lUGlja2VyRGVmYXVsdFdpZHRoID0gMzIwOworc3RhdGljIGNvbnN0IENHRmxvYXQga0RhdGVU
aW1lUGlja2VyVGltZUNvbnRyb2xXaWR0aCA9IDIxODsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IGtE
YXRlVGltZVBpY2tlclRpbWVDb250cm9sSGVpZ2h0ID0gMTcyOworCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhEZWxlZ2F0ZTooaWQ8V0tEYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyRGVsZWdh
dGU+KWRlbGVnYXRlCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAg
IHJldHVybiBuaWw7CisKKyAgICBfZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9kYXRlUGlj
a2VyID0gYWRvcHROUyhbW1VJRGF0ZVBpY2tlciBhbGxvY10gaW5pdF0pOworICAgIFtfZGF0ZVBp
Y2tlciBhZGRUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKGRhdGVQaWNrZXJDaGFuZ2VkOikg
Zm9yQ29udHJvbEV2ZW50czpVSUNvbnRyb2xFdmVudFZhbHVlQ2hhbmdlZF07CisgICAgW19kYXRl
UGlja2VyIHNldFRyYW5zbGF0ZXNBdXRvcmVzaXppbmdNYXNrSW50b0NvbnN0cmFpbnRzOk5PXTsK
KworICAgIGlmIChbX2RlbGVnYXRlIHNob3VsZEZvcmNlR3JlZ29yaWFuQ2FsZW5kYXJdKQorICAg
ICAgICBbX2RhdGVQaWNrZXIgc2V0Q2FsZW5kYXI6W05TQ2FsZW5kYXIgY2FsZW5kYXJXaXRoSWRl
bnRpZmllcjpOU0NhbGVuZGFySWRlbnRpZmllckdyZWdvcmlhbl1dOworCisgICAgcmV0dXJuIHNl
bGY7Cit9CisKKy0gKHZvaWQpdmlld0RpZExvYWQKK3sKKyAgICBbc3VwZXIgdmlld0RpZExvYWRd
OworCisgICAgQ0dTaXplIGNvbnRlbnRTaXplID0gc2VsZi5wcmVmZXJyZWRDb250ZW50U2l6ZTsK
KworICAgIFJldGFpblB0cjxVSVZpc3VhbEVmZmVjdFZpZXc+IGJhY2tncm91bmRWaWV3ID0gYWRv
cHROUyhbW1VJVmlzdWFsRWZmZWN0VmlldyBhbGxvY10gaW5pdFdpdGhFZmZlY3Q6W1VJQmx1ckVm
ZmVjdCBlZmZlY3RXaXRoU3R5bGU6VUlCbHVyRWZmZWN0U3R5bGVTeXN0ZW1NYXRlcmlhbF1dKTsK
KyAgICBbYmFja2dyb3VuZFZpZXcgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBjb250ZW50U2l6
ZS53aWR0aCwgY29udGVudFNpemUuaGVpZ2h0KV07CisgICAgW3NlbGYudmlldyBhZGRTdWJ2aWV3
OmJhY2tncm91bmRWaWV3LmdldCgpXTsKKworICAgIFtbYmFja2dyb3VuZFZpZXcgY29udGVudFZp
ZXddIGFkZFN1YnZpZXc6X2RhdGVQaWNrZXIuZ2V0KCldOworCisgICAgQ0dTaXplIGRhdGVQaWNr
ZXJTaXplID0gc2VsZi5wcmVmZXJyZWREYXRlUGlja2VyU2l6ZTsKKyAgICBVSUVkZ2VJbnNldHMg
ZGF0ZVBpY2tlckluc2V0cyA9IFtzZWxmIGRhdGVQaWNrZXJJbnNldHNdOworCisgICAgW05TTGF5
b3V0Q29uc3RyYWludCBhY3RpdmF0ZUNvbnN0cmFpbnRzOkBbCisgICAgICAgIFtbX2RhdGVQaWNr
ZXIgdG9wQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbYmFja2dyb3VuZFZpZXcgY29u
dGVudFZpZXddLnRvcEFuY2hvciBjb25zdGFudDpkYXRlUGlja2VySW5zZXRzLnRvcF0sCisgICAg
ICAgIFtbX2RhdGVQaWNrZXIgbGVhZGluZ0FuY2hvcl0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6
W2JhY2tncm91bmRWaWV3IGNvbnRlbnRWaWV3XS5sZWFkaW5nQW5jaG9yIGNvbnN0YW50OmRhdGVQ
aWNrZXJJbnNldHMubGVmdF0sCisgICAgICAgIFtbX2RhdGVQaWNrZXIgd2lkdGhBbmNob3JdIGNv
bnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6ZGF0ZVBpY2tlclNpemUud2lkdGhdLAorICAgICAgICBb
W19kYXRlUGlja2VyIGhlaWdodEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDpkYXRl
UGlja2VyU2l6ZS5oZWlnaHRdLAorICAgIF1dOworCisgICAgUmV0YWluUHRyPFVJVmlldz4gdG9v
bGJhclZpZXcgPSBhZG9wdE5TKFtbVUlWaWV3IGFsbG9jXSBpbml0XSk7CisgICAgW3Rvb2xiYXJW
aWV3IHNldFRyYW5zbGF0ZXNBdXRvcmVzaXppbmdNYXNrSW50b0NvbnN0cmFpbnRzOk5PXTsKKyAg
ICBbW2JhY2tncm91bmRWaWV3IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OnRvb2xiYXJWaWV3Lmdl
dCgpXTsKKworICAgIFtOU0xheW91dENvbnN0cmFpbnQgYWN0aXZhdGVDb25zdHJhaW50czpAWwor
ICAgICAgICBbW3Rvb2xiYXJWaWV3IGJvdHRvbUFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9BbmNo
b3I6W2JhY2tncm91bmRWaWV3IGNvbnRlbnRWaWV3XS5ib3R0b21BbmNob3JdLAorICAgICAgICBb
W3Rvb2xiYXJWaWV3IGxlYWRpbmdBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltiYWNr
Z3JvdW5kVmlldyBjb250ZW50Vmlld10ubGVhZGluZ0FuY2hvcl0sCisgICAgICAgIFtbdG9vbGJh
clZpZXcgaGVpZ2h0QW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50OmtEYXRlVGltZVBp
Y2tlclRvb2xiYXJIZWlnaHRdLAorICAgICAgICBbW3Rvb2xiYXJWaWV3IHdpZHRoQW5jaG9yXSBj
b25zdHJhaW50RXF1YWxUb0FuY2hvcjpbYmFja2dyb3VuZFZpZXcgY29udGVudFZpZXddLndpZHRo
QW5jaG9yXSwKKyAgICBdXTsKKworICAgIFJldGFpblB0cjxVSVZpZXc+IHNlcGFyYXRvclZpZXcg
PSBhZG9wdE5TKFtbVUlWaWV3IGFsbG9jXSBpbml0XSk7CisgICAgW3NlcGFyYXRvclZpZXcgc2V0
QmFja2dyb3VuZENvbG9yOlVJQ29sb3Iuc2VwYXJhdG9yQ29sb3JdOworCisgICAgTlNTdHJpbmcg
KnJlc2V0U3RyaW5nID0gV0VCX1VJX1NUUklOR19LRVkoIlJlc2V0IiwgIlJlc2V0IEJ1dHRvbiBE
YXRlL1RpbWUgQ29udGV4dCBNZW51IiwgIlJlc2V0IGJ1dHRvbiBpbiBkYXRlIGlucHV0IGNvbnRl
eHQgbWVudSIpOworICAgIFVJQnV0dG9uICpyZXNldEJ1dHRvbiA9IFtVSUJ1dHRvbiBidXR0b25X
aXRoVHlwZTpVSUJ1dHRvblR5cGVTeXN0ZW1dOworICAgIHJlc2V0QnV0dG9uLnRpdGxlTGFiZWwu
Zm9udCA9IFtVSUZvbnQgc3lzdGVtRm9udE9mU2l6ZTprRGF0ZVRpbWVQaWNrZXJCdXR0b25Gb250
U2l6ZV07CisgICAgW3Jlc2V0QnV0dG9uIHNldFRpdGxlOnJlc2V0U3RyaW5nIGZvclN0YXRlOlVJ
Q29udHJvbFN0YXRlTm9ybWFsXTsKKyAgICBbcmVzZXRCdXR0b24gYWRkVGFyZ2V0OnNlbGYgYWN0
aW9uOkBzZWxlY3RvcihyZXNldEJ1dHRvblByZXNzZWQ6KSBmb3JDb250cm9sRXZlbnRzOlVJQ29u
dHJvbEV2ZW50VG91Y2hVcEluc2lkZV07CisKKyAgICBOU1N0cmluZyAqZG9uZVN0cmluZyA9IFdl
YkNvcmU6OmZvcm1Db250cm9sRG9uZUJ1dHRvblRpdGxlKCk7CisgICAgVUlCdXR0b24gKmRvbmVC
dXR0b24gPSBbVUlCdXR0b24gYnV0dG9uV2l0aFR5cGU6VUlCdXR0b25UeXBlU3lzdGVtXTsKKyAg
ICBkb25lQnV0dG9uLnRpdGxlTGFiZWwuZm9udCA9IFtVSUZvbnQgYm9sZFN5c3RlbUZvbnRPZlNp
emU6a0RhdGVUaW1lUGlja2VyQnV0dG9uRm9udFNpemVdOworICAgIFtkb25lQnV0dG9uIHNldFRp
dGxlOmRvbmVTdHJpbmcgZm9yU3RhdGU6VUlDb250cm9sU3RhdGVOb3JtYWxdOworICAgIFtkb25l
QnV0dG9uIGFkZFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoZG9uZUJ1dHRvblByZXNzZWQ6
KSBmb3JDb250cm9sRXZlbnRzOlVJQ29udHJvbEV2ZW50VG91Y2hVcEluc2lkZV07CisKKyAgICBm
b3IgKFVJVmlldyAqc3VidmlldyBpbiBAW3NlcGFyYXRvclZpZXcuZ2V0KCksIHJlc2V0QnV0dG9u
LCBkb25lQnV0dG9uXSkgeworICAgICAgICBzdWJ2aWV3LnRyYW5zbGF0ZXNBdXRvcmVzaXppbmdN
YXNrSW50b0NvbnN0cmFpbnRzID0gTk87CisgICAgICAgIFt0b29sYmFyVmlldyBhZGRTdWJ2aWV3
OnN1YnZpZXddOworICAgIH0KKworICAgIFtOU0xheW91dENvbnN0cmFpbnQgYWN0aXZhdGVDb25z
dHJhaW50czpAWworICAgICAgICBbW3NlcGFyYXRvclZpZXcgdG9wQW5jaG9yXSBjb25zdHJhaW50
RXF1YWxUb0FuY2hvcjpbdG9vbGJhclZpZXcgdG9wQW5jaG9yXV0sCisgICAgICAgIFtbc2VwYXJh
dG9yVmlldyBsZWFkaW5nQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbdG9vbGJhclZp
ZXcgbGVhZGluZ0FuY2hvcl1dLAorICAgICAgICBbW3NlcGFyYXRvclZpZXcgaGVpZ2h0QW5jaG9y
XSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50OmtEYXRlVGltZVBpY2tlclNlcGFyYXRvckhlaWdo
dF0sCisgICAgICAgIFtbc2VwYXJhdG9yVmlldyB3aWR0aEFuY2hvcl0gY29uc3RyYWludEVxdWFs
VG9BbmNob3I6W3Rvb2xiYXJWaWV3IHdpZHRoQW5jaG9yXV0sCisgICAgXV07CisKKyAgICBbTlNM
YXlvdXRDb25zdHJhaW50IGFjdGl2YXRlQ29uc3RyYWludHM6QFsKKyAgICAgICAgW3Jlc2V0QnV0
dG9uLmxlYWRpbmdBbmNob3IgY29uc3RyYWludEVxdWFsVG9BbmNob3I6W3Rvb2xiYXJWaWV3IGxl
YWRpbmdBbmNob3JdIGNvbnN0YW50OmtEYXRlVGltZVBpY2tlclZpZXdNYXJnaW5dLAorICAgICAg
ICBbcmVzZXRCdXR0b24udG9wQW5jaG9yIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOlt0b29sYmFy
VmlldyB0b3BBbmNob3JdXSwKKyAgICAgICAgW3Jlc2V0QnV0dG9uLmJvdHRvbUFuY2hvciBjb25z
dHJhaW50RXF1YWxUb0FuY2hvcjpbdG9vbGJhclZpZXcgYm90dG9tQW5jaG9yXV0sCisgICAgXV07
CisKKyAgICBbTlNMYXlvdXRDb25zdHJhaW50IGFjdGl2YXRlQ29uc3RyYWludHM6QFsKKyAgICAg
ICAgW2RvbmVCdXR0b24udHJhaWxpbmdBbmNob3IgY29uc3RyYWludEVxdWFsVG9BbmNob3I6W3Rv
b2xiYXJWaWV3IHRyYWlsaW5nQW5jaG9yXSBjb25zdGFudDota0RhdGVUaW1lUGlja2VyVmlld01h
cmdpbl0sCisgICAgICAgIFtkb25lQnV0dG9uLnRvcEFuY2hvciBjb25zdHJhaW50RXF1YWxUb0Fu
Y2hvcjpbdG9vbGJhclZpZXcgdG9wQW5jaG9yXV0sCisgICAgICAgIFtkb25lQnV0dG9uLmJvdHRv
bUFuY2hvciBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbdG9vbGJhclZpZXcgYm90dG9tQW5jaG9y
XV0sCisgICAgXV07Cit9CisKKy0gKHZvaWQpZGF0ZVBpY2tlckNoYW5nZWQ6KGlkKXNlbmRlcgor
eworICAgIFtfZGVsZWdhdGUgZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlckRpZENoYW5nZURh
dGU6c2VsZl07Cit9CisKKy0gKHZvaWQpcmVzZXRCdXR0b25QcmVzc2VkOihpZClzZW5kZXIKK3sK
KyAgICBbX2RlbGVnYXRlIGRhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXJEaWRQcmVzc1Jlc2V0
QnV0dG9uOnNlbGZdOworfQorCistICh2b2lkKWRvbmVCdXR0b25QcmVzc2VkOihpZClzZW5kZXIK
K3sKKyAgICBbX2RlbGVnYXRlIGRhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXJEaWRQcmVzc0Rv
bmVCdXR0b246c2VsZl07Cit9CisKKy0gKFVJRWRnZUluc2V0cylkYXRlUGlja2VySW5zZXRzCit7
CisgICAgVUlFZGdlSW5zZXRzIGV4cGVjdGVkSW5zZXRzID0gVUlFZGdlSW5zZXRzTWFrZShrRGF0
ZVRpbWVQaWNrZXJWaWV3TWFyZ2luLCBrRGF0ZVRpbWVQaWNrZXJWaWV3TWFyZ2luLCBrRGF0ZVRp
bWVQaWNrZXJWaWV3TWFyZ2luLCBrRGF0ZVRpbWVQaWNrZXJWaWV3TWFyZ2luKTsKKyAgICBVSUVk
Z2VJbnNldHMgYXBwbGllZEluc2V0cyA9IFtfZGF0ZVBpY2tlciBfYXBwbGllZEluc2V0c1RvRWRn
ZU9mQ29udGVudF07CisgICAgcmV0dXJuIFVJRWRnZUluc2V0c1N1YnRyYWN0KGV4cGVjdGVkSW5z
ZXRzLCBhcHBsaWVkSW5zZXRzLCBVSVJlY3RFZGdlQWxsKTsKK30KKworLSAoQ0dTaXplKXByZWZl
cnJlZERhdGVQaWNrZXJTaXplCit7CisgICAgQ0dTaXplIGZpdHRpbmdTaXplID0gVUlMYXlvdXRG
aXR0aW5nQ29tcHJlc3NlZFNpemU7CisgICAgVUlMYXlvdXRQcmlvcml0eSBob3Jpem9udGFsUHJp
b3JpdHkgPSBVSUxheW91dFByaW9yaXR5Rml0dGluZ1NpemVMZXZlbDsKKyAgICBVSUxheW91dFBy
aW9yaXR5IHZlcnRpY2FsUHJpb3JpdHkgPSBVSUxheW91dFByaW9yaXR5Rml0dGluZ1NpemVMZXZl
bDsKKyAgICBpZiAoW19kYXRlUGlja2VyIGRhdGVQaWNrZXJNb2RlXSAhPSBVSURhdGVQaWNrZXJN
b2RlVGltZSkKKyAgICAgICAgZml0dGluZ1NpemUud2lkdGggPSBrRGF0ZVRpbWVQaWNrZXJEZWZh
dWx0V2lkdGg7CisgICAgZWxzZSB7CisgICAgICAgIGZpdHRpbmdTaXplLndpZHRoID0ga0RhdGVU
aW1lUGlja2VyVGltZUNvbnRyb2xXaWR0aDsKKyAgICAgICAgZml0dGluZ1NpemUuaGVpZ2h0ID0g
a0RhdGVUaW1lUGlja2VyVGltZUNvbnRyb2xIZWlnaHQ7CisgICAgICAgIGhvcml6b250YWxQcmlv
cml0eSA9IFVJTGF5b3V0UHJpb3JpdHlSZXF1aXJlZDsKKyAgICAgICAgdmVydGljYWxQcmlvcml0
eSA9IFVJTGF5b3V0UHJpb3JpdHlSZXF1aXJlZDsKKyAgICB9CisKKyAgICBDR1NpemUgbGF5b3V0
U2l6ZSA9IFtfZGF0ZVBpY2tlciBzeXN0ZW1MYXlvdXRTaXplRml0dGluZ1NpemU6Zml0dGluZ1Np
emUgd2l0aEhvcml6b250YWxGaXR0aW5nUHJpb3JpdHk6aG9yaXpvbnRhbFByaW9yaXR5IHZlcnRp
Y2FsRml0dGluZ1ByaW9yaXR5OnZlcnRpY2FsUHJpb3JpdHldOworICAgIHJldHVybiBsYXlvdXRT
aXplOworfQorCistIChDR1NpemUpcHJlZmVycmVkQ29udGVudFNpemUKK3sKKyAgICAvLyBDYWNo
ZSB0aGUgY29udGVudCBzaXplIHRvIHdvcmthcm91bmQgcmRhcjovLzc0NzQ5OTQyLgorICAgIGlm
IChDR1NpemVFcXVhbFRvU2l6ZShfY29udGVudFNpemUsIENHU2l6ZVplcm8pKSB7CisgICAgICAg
IENHU2l6ZSBkYXRlUGlja2VyU2l6ZSA9IFtzZWxmIHByZWZlcnJlZERhdGVQaWNrZXJTaXplXTsK
KyAgICAgICAgVUlFZGdlSW5zZXRzIGRhdGVQaWNrZXJJbnNldHMgPSBbc2VsZiBkYXRlUGlja2Vy
SW5zZXRzXTsKKworICAgICAgICBfY29udGVudFNpemUgPSBDR1NpemVNYWtlKGRhdGVQaWNrZXJT
aXplLndpZHRoICsgZGF0ZVBpY2tlckluc2V0cy5sZWZ0ICsgZGF0ZVBpY2tlckluc2V0cy5yaWdo
dCwgZGF0ZVBpY2tlclNpemUuaGVpZ2h0ICsga0RhdGVUaW1lUGlja2VyVG9vbGJhckhlaWdodCAr
IGRhdGVQaWNrZXJJbnNldHMudG9wICsgZGF0ZVBpY2tlckluc2V0cy5ib3R0b20pOworICAgIH0K
KworICAgIHJldHVybiBfY29udGVudFNpemU7Cit9CisKKy0gKE5TRGF0ZSAqKWRhdGUKK3sKKyAg
ICByZXR1cm4gW19kYXRlUGlja2VyIGRhdGVdOworfQorCistICh2b2lkKXNldERhdGU6KE5TRGF0
ZSAqKWRhdGUKK3sKKyAgICBbX2RhdGVQaWNrZXIgc2V0RGF0ZTpkYXRlXTsKK30KKworLSAodm9p
ZClzZXREYXRlUGlja2VyTW9kZTooVUlEYXRlUGlja2VyTW9kZSltb2RlCit7CisgICAgW19kYXRl
UGlja2VyIHNldERhdGVQaWNrZXJNb2RlOm1vZGVdOworCisjaWYgSEFWRShVSURBVEVQSUNLRVJf
U1RZTEUpCisgICAgaWYgKG1vZGUgPT0gVUlEYXRlUGlja2VyTW9kZVRpbWUgfHwgbW9kZSA9PSAo
VUlEYXRlUGlja2VyTW9kZSlVSURhdGVQaWNrZXJNb2RlWWVhckFuZE1vbnRoKQorICAgICAgICBb
X2RhdGVQaWNrZXIgc2V0UHJlZmVycmVkRGF0ZVBpY2tlclN0eWxlOlVJRGF0ZVBpY2tlclN0eWxl
V2hlZWxzXTsKKyAgICBlbHNlCisgICAgICAgIFtfZGF0ZVBpY2tlciBzZXRQcmVmZXJyZWREYXRl
UGlja2VyU3R5bGU6VUlEYXRlUGlja2VyU3R5bGVJbmxpbmVdOworI2VuZGlmCit9CisKKy0gKE5T
VGltZVpvbmUgKil0aW1lWm9uZQoreworICAgIHJldHVybiBbX2RhdGVQaWNrZXIgdGltZVpvbmVd
OworfQorCistICh2b2lkKXNldFRpbWVab25lOihOU1RpbWVab25lICopdGltZVpvbmUKK3sKKyAg
ICByZXR1cm4gW19kYXRlUGlja2VyIHNldFRpbWVab25lOnRpbWVab25lXTsKK30KKworLSAoTlND
YWxlbmRhciAqKWNhbGVuZGFyCit7CisgICAgcmV0dXJuIFtfZGF0ZVBpY2tlciBjYWxlbmRhcl07
Cit9CisKIEBlbmQKIAogQGludGVyZmFjZSBXS0RhdGVUaW1lUGlja2VyIDogTlNPYmplY3Q8V0tG
b3JtQ29udHJvbAogI2lmIFVTRShVSUNPTlRFWFRNRU5VKQogLCBVSUNvbnRleHRNZW51SW50ZXJh
Y3Rpb25EZWxlZ2F0ZQogI2VuZGlmCissIFdLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlckRl
bGVnYXRlCiA+IHsKLSAgICBSZXRhaW5QdHI8VUlEYXRlUGlja2VyPiBfZGF0ZVBpY2tlcjsKICAg
ICBOU1N0cmluZyAqX2Zvcm1hdFN0cmluZzsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9pbml0
aWFsVmFsdWU7CiAgICAgTlNUaW1lSW50ZXJ2YWwgX2luaXRpYWxWYWx1ZUFzTnVtYmVyOwogICAg
IEJPT0wgX3Nob3VsZFJlbW92ZVRpbWVab25lSW5mb3JtYXRpb247Ci0gICAgQk9PTCBfaXNUaW1l
SW5wdXQ7CiAgICAgV0tDb250ZW50VmlldyAqX3ZpZXc7CiAgICAgQ0dQb2ludCBfaW50ZXJhY3Rp
b25Qb2ludDsKLSAgICBSZXRhaW5QdHI8V0tEYXRlVGltZUNvbnRleHRNZW51Vmlld0NvbnRyb2xs
ZXI+IF92aWV3Q29udHJvbGxlcjsKICNpZiBVU0UoVUlDT05URVhUTUVOVSkKICAgICBSZXRhaW5Q
dHI8VUlDb250ZXh0TWVudUludGVyYWN0aW9uPiBfZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0
aW9uOwogI2VuZGlmCi0gICAgQk9PTCBfcHJlc2VudGluZzsKLSAgICBCT09MIF9wcmVzZXJ2aW5n
Rm9jdXM7CisgICAgUmV0YWluUHRyPFdLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlcj4gX2Rh
dGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXI7CiB9CisKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3IGRhdGVQaWNrZXJNb2RlOihVSURhdGVQaWNrZXJN
b2RlKW1vZGU7Ci0tIChXS0RhdGVUaW1lQ29udGV4dE1lbnVWaWV3Q29udHJvbGxlciAqKXZpZXdD
b250cm9sbGVyOworCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpj
YWxlbmRhclR5cGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIGRvdWJsZSBob3Vy
OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBkb3VibGUgbWludXRlOwogLSAodm9p
ZClzZXRIb3VyOihOU0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51dGU7Ci1AZW5k
Ci0KLUBpbXBsZW1lbnRhdGlvbiBXS0RhdGVUaW1lQ29udGV4dE1lbnVWaWV3Q29udHJvbGxlcgot
Ci0tIChDR1NpemUpcHJlZmVycmVkQ29udGVudFNpemUKLXsKLSAgICAvLyBGSVhNRTogV29ya2Fy
b3VuZCwgc2hvdWxkIGJlIGFibGUgdG8gYmUgcmVhZGRyZXNzZWQgYWZ0ZXIgPHJkYXI6Ly9wcm9i
bGVtLzY0MTQzNTM0PgotICAgIFVJVmlldyAqdmlldyA9IHNlbGYudmlldy5zdWJ2aWV3c1swXTsK
LSAgICBpZiAoVUlFZGdlSW5zZXRzRXF1YWxUb0VkZ2VJbnNldHModmlldy5sYXlvdXRNYXJnaW5z
LCBVSUVkZ2VJbnNldHNaZXJvKSkgewotICAgICAgICB2aWV3LnRyYW5zbGF0ZXNBdXRvcmVzaXpp
bmdNYXNrSW50b0NvbnN0cmFpbnRzID0gTk87Ci0gICAgICAgIFt2aWV3IGxheW91dElmTmVlZGVk
XTsKLSAgICAgICAgdmlldy50cmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFza0ludG9Db25zdHJhaW50
cyA9IFlFUzsKLSAgICAgICAgdmlldy5sYXlvdXRNYXJnaW5zID0gVUlFZGdlSW5zZXRzTWFrZSgx
NiwgMTYsIDE2LCAxNik7Ci0gICAgfQotICAgIGF1dG8gc2l6ZSA9IFt2aWV3IHN5c3RlbUxheW91
dFNpemVGaXR0aW5nU2l6ZTpVSUxheW91dEZpdHRpbmdDb21wcmVzc2VkU2l6ZV07Ci0gICAgCi0g
ICAgc2l6ZS53aWR0aCA9IHN0ZDo6bWF4PENHRmxvYXQ+KHNpemUud2lkdGgsIDI1MC4wKTsKLSAg
ICByZXR1cm4gc2l6ZTsKLX0KIAogQGVuZAogCkBAIC05NywyNyArMjg0LDE3IEBAIHN0YXRpYyBO
U1N0cmluZyAqIGNvbnN0IGtNb250aEZvcm1hdFN0cmluZyA9IEAieXl5eS1NTSI7IC8vICIyMDEx
LTAxIi4KIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGtUaW1lRm9ybWF0U3RyaW5nID0gQCJISDpt
bSI7IC8vICIxMzo0NSIuCiBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwga01pbGxpc2Vjb25k
c1BlclNlY29uZCA9IDEwMDA7CiAKLSNpZiBIQVZFKFVJREFURVBJQ0tFUl9TVFlMRSkKLS0gKFVJ
RGF0ZVBpY2tlclN0eWxlKWRhdGVQaWNrZXJTdHlsZQotewotICAgIHN3aXRjaCAoX3ZpZXcuZm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkgewotICAgIGNhc2UgV2ViS2l0OjpJ
bnB1dFR5cGU6Ok1vbnRoOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRpbWU6Ci0gICAg
ICAgIHJldHVybiBVSURhdGVQaWNrZXJTdHlsZVdoZWVsczsKLSAgICBkZWZhdWx0OgotICAgICAg
ICByZXR1cm4gVUlEYXRlUGlja2VyU3R5bGVJbmxpbmU7Ci0gICAgfQotfQotI2VuZGlmCitzdGF0
aWMgY29uc3QgQ0dGbG9hdCBrRGF0ZVRpbWVQaWNrZXJDb250cm9sTWFyZ2luID0gNjsKIAogLSAo
aWQpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldyBkYXRlUGlja2VyTW9kZTooVUlE
YXRlUGlja2VyTW9kZSltb2RlCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAg
ICAgICAgIHJldHVybiBuaWw7CisKICAgICBfdmlldyA9IHZpZXc7CiAgICAgX2ludGVyYWN0aW9u
UG9pbnQgPSBbX3ZpZXcgbGFzdEludGVyYWN0aW9uTG9jYXRpb25dOwogICAgIF9zaG91bGRSZW1v
dmVUaW1lWm9uZUluZm9ybWF0aW9uID0gTk87Ci0gICAgX2lzVGltZUlucHV0ID0gTk87CisKICAg
ICBzd2l0Y2ggKHZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkgewog
ICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGU6CiAgICAgICAgIF9mb3JtYXRTdHJpbmcg
PSBrRGF0ZUZvcm1hdFN0cmluZzsKQEAgLTEyNyw3ICszMDQsNiBAQCBzdGF0aWMgY29uc3QgTlNU
aW1lSW50ZXJ2YWwga01pbGxpc2Vjb25kc1BlclNlY29uZCA9IDEwMDA7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRpbWU6CiAgICAgICAgIF9mb3JtYXRTdHJp
bmcgPSBrVGltZUZvcm1hdFN0cmluZzsKLSAgICAgICAgX2lzVGltZUlucHV0ID0gWUVTOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsOgog
ICAgICAgICBfc2hvdWxkUmVtb3ZlVGltZVpvbmVJbmZvcm1hdGlvbiA9IFlFUzsKQEAgLTEzNSwy
NSArMzExLDc5IEBAIHN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBrTWlsbGlzZWNvbmRzUGVy
U2Vjb25kID0gMTAwMDsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
Ci0gICAgX2RhdGVQaWNrZXIgPSBhZG9wdE5TKFtbVUlEYXRlUGlja2VyIGFsbG9jXSBpbml0XSk7
CiAKLSAgICBbX2RhdGVQaWNrZXIgc2V0RGF0ZVBpY2tlck1vZGU6bW9kZV07Ci0gICAgW19kYXRl
UGlja2VyIHNldEhpZGRlbjpOT107Ci0gICAgCi0jaWYgSEFWRShVSURBVEVQSUNLRVJfU1RZTEUp
Ci0gICAgW19kYXRlUGlja2VyIHNldFByZWZlcnJlZERhdGVQaWNrZXJTdHlsZTpbc2VsZiBkYXRl
UGlja2VyU3R5bGVdXTsKLSNlbmRpZgotICAgIGlmIChbc2VsZiBzaG91bGRQcmVzZW50R3JlZ29y
aWFuQ2FsZW5kYXI6dmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uXSkKLSAgICAgICAgX2Rh
dGVQaWNrZXIuZ2V0KCkuY2FsZW5kYXIgPSBbTlNDYWxlbmRhciBjYWxlbmRhcldpdGhJZGVudGlm
aWVyOk5TQ2FsZW5kYXJJZGVudGlmaWVyR3JlZ29yaWFuXTsKLSAgICAKLSAgICBbX2RhdGVQaWNr
ZXIgYWRkVGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihfZGF0ZUNoYW5nZUhhbmRsZXI6KSBm
b3JDb250cm9sRXZlbnRzOlVJQ29udHJvbEV2ZW50VmFsdWVDaGFuZ2VkXTsKLSAgICAKKyAgICBf
ZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tXS0RhdGVUaW1lUGlja2Vy
Vmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6c2VsZl0pOworICAgIFtfZGF0
ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciBzZXREYXRlUGlja2VyTW9kZTptb2RlXTsKKwogICAg
IHJldHVybiBzZWxmOwogfQogCiAjaWYgVVNFKFVJQ09OVEVYVE1FTlUpCiAKKy0gKFVJRWRnZUlu
c2V0cylfcHJlZmVycmVkRWRnZUluc2V0c0ZvckRhdGVUaW1lUGlja2VyCit7CisgICAgQ0dTaXpl
IHBpY2tlclNpemUgPSBbX2RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgcHJlZmVycmVkQ29u
dGVudFNpemVdOworICAgIENHUmVjdCB3aW5kb3dCb3VuZHMgPSBfdmlldy50ZXh0RWZmZWN0c1dp
bmRvdy5ib3VuZHM7CisgICAgQ0dSZWN0IGVsZW1lbnRGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMg
PSBbX3ZpZXcgY29udmVydFJlY3Q6X3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5pbnRl
cmFjdGlvblJlY3QgdG9WaWV3Om5pbF07CisKKyAgICAvLyBBdHRlbXB0IHRvIHByZXNlbnQgdGhl
IGRhdGUgcGlja2VyIGluIGEgd2F5IHRoYXQgZG9lcyBub3Qgb2JzY3VyZSB0aGUgZWxlbWVudC4K
KworICAgIENHRmxvYXQgdG9wSW5zZXRGb3JCb3R0b21BbGlnbm1lbnQgPSBDR1JlY3RHZXRNYXhZ
KGVsZW1lbnRGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMpICsga0RhdGVUaW1lUGlja2VyQ29udHJv
bE1hcmdpbjsKKyAgICBDR0Zsb2F0IHJpZ2h0SW5zZXRGb3JSaWdodEFsaWdubWVudCA9IENHUmVj
dEdldFdpZHRoKHdpbmRvd0JvdW5kcykgLSBDR1JlY3RHZXRNYXhYKGVsZW1lbnRGcmFtZUluV2lu
ZG93Q29vcmRpbmF0ZXMpOworCisgICAgQk9PTCBjYW5QcmVzZW50QmVsb3dFbGVtZW50ID0gKHRv
cEluc2V0Rm9yQm90dG9tQWxpZ25tZW50ICsgcGlja2VyU2l6ZS5oZWlnaHQpIDwgQ0dSZWN0R2V0
SGVpZ2h0KHdpbmRvd0JvdW5kcyk7CisgICAgQk9PTCBjYW5BbGlnblRvRWxlbWVudFJpZ2h0ID0g
KHJpZ2h0SW5zZXRGb3JSaWdodEFsaWdubWVudCArIHBpY2tlclNpemUud2lkdGgpIDwgQ0dSZWN0
R2V0V2lkdGgod2luZG93Qm91bmRzKTsKKworICAgIC8vIFRyeSB0byBwcmVzZW50IHRoZSBwaWNr
ZXIgZnJvbSB0aGUgYm90dG9tIHJpZ2h0IG9mIHRoZSBlbGVtZW50LgorICAgIGlmIChjYW5QcmVz
ZW50QmVsb3dFbGVtZW50ICYmIGNhbkFsaWduVG9FbGVtZW50UmlnaHQpCisgICAgICAgIHJldHVy
biBVSUVkZ2VJbnNldHNNYWtlKHRvcEluc2V0Rm9yQm90dG9tQWxpZ25tZW50LCAwLCAwLCByaWdo
dEluc2V0Rm9yUmlnaHRBbGlnbm1lbnQpOworCisgICAgQ0dGbG9hdCBsZWZ0SW5zZXRGb3JMZWZ0
QWxpZ25tZW50ID0gQ0dSZWN0R2V0TWluWChlbGVtZW50RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVz
KTsKKworICAgIEJPT0wgY2FuQWxpZ25Ub0VsZW1lbnRMZWZ0ID0gKGxlZnRJbnNldEZvckxlZnRB
bGlnbm1lbnQgKyBwaWNrZXJTaXplLndpZHRoKSA8PSBDR1JlY3RHZXRXaWR0aCh3aW5kb3dCb3Vu
ZHMpOworCisgICAgLy8gVHJ5IHRvIHByZXNlbnQgdGhlIHBpY2tlciBmcm9tIHRoZSBib3R0b20g
bGVmdCBvZiB0aGUgZWxlbWVudC4KKyAgICBpZiAoY2FuUHJlc2VudEJlbG93RWxlbWVudCAmJiBj
YW5BbGlnblRvRWxlbWVudExlZnQpCisgICAgICAgIHJldHVybiBVSUVkZ2VJbnNldHNNYWtlKHRv
cEluc2V0Rm9yQm90dG9tQWxpZ25tZW50LCBsZWZ0SW5zZXRGb3JMZWZ0QWxpZ25tZW50LCAwLCAw
KTsKKworICAgIC8vIFRyeSB0byBwcmVzZW50IHRoZSBwaWNrZXIgdW5kZXJuZWF0aCB0aGUgZWxl
bWVudC4KKyAgICBpZiAoY2FuUHJlc2VudEJlbG93RWxlbWVudCkKKyAgICAgICAgcmV0dXJuIFVJ
RWRnZUluc2V0c01ha2UodG9wSW5zZXRGb3JCb3R0b21BbGlnbm1lbnQsIDAsIDAsIDApOworCisg
ICAgQ0dGbG9hdCBib3R0b21JbnNldEZvclRvcEFsaWdubWVudCA9IENHUmVjdEdldEhlaWdodCh3
aW5kb3dCb3VuZHMpIC0gQ0dSZWN0R2V0TWluWShlbGVtZW50RnJhbWVJbldpbmRvd0Nvb3JkaW5h
dGVzKSArIGtEYXRlVGltZVBpY2tlckNvbnRyb2xNYXJnaW47CisKKyAgICBCT09MIGNhblByZXNl
bnRBYm92ZUVsZW1lbnQgPSAoYm90dG9tSW5zZXRGb3JUb3BBbGlnbm1lbnQgKyBwaWNrZXJTaXpl
LmhlaWdodCkgPCBDR1JlY3RHZXRIZWlnaHQod2luZG93Qm91bmRzKTsKKworICAgIC8vIFRyeSB0
byBwcmVzZW50IHRoZSBwaWNrZXIgZnJvbSB0aGUgdG9wIHJpZ2h0IG9mIHRoZSBlbGVtZW50Lgor
ICAgIGlmIChjYW5QcmVzZW50QWJvdmVFbGVtZW50ICYmIGNhbkFsaWduVG9FbGVtZW50UmlnaHQp
CisgICAgICAgIHJldHVybiBVSUVkZ2VJbnNldHNNYWtlKDAsIDAsIGJvdHRvbUluc2V0Rm9yVG9w
QWxpZ25tZW50LCByaWdodEluc2V0Rm9yUmlnaHRBbGlnbm1lbnQpOworCisgICAgLy8gVHJ5IHRv
IHByZXNlbnQgdGhlIHBpY2tlciBmcm9tIHRoZSB0b3AgbGVmdCBvZiB0aGUgZWxlbWVudC4KKyAg
ICBpZiAoY2FuUHJlc2VudEFib3ZlRWxlbWVudCAmJiBjYW5BbGlnblRvRWxlbWVudExlZnQpCisg
ICAgICAgIHJldHVybiBVSUVkZ2VJbnNldHNNYWtlKDAsIGxlZnRJbnNldEZvckxlZnRBbGlnbm1l
bnQsIGJvdHRvbUluc2V0Rm9yVG9wQWxpZ25tZW50LCAwKTsKKworICAgIC8vIFRyeSB0byBwcmVz
ZW50IHRoZSBwaWNrZXIgYWJvdmUgdGhlIGVsZW1lbnQuCisgICAgaWYgKGNhblByZXNlbnRBYm92
ZUVsZW1lbnQpCisgICAgICAgIHJldHVybiBVSUVkZ2VJbnNldHNNYWtlKDAsIDAsIGJvdHRvbUlu
c2V0Rm9yVG9wQWxpZ25tZW50LCAwKTsKKworICAgIENHRmxvYXQgcmlnaHRJbnNldEZvclByZXNl
bnRpbmdCZXNpZGVFbGVtZW50TGVmdCA9IENHUmVjdEdldFdpZHRoKHdpbmRvd0JvdW5kcykgLSBD
R1JlY3RHZXRNaW5YKGVsZW1lbnRGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMpICsga0RhdGVUaW1l
UGlja2VyQ29udHJvbE1hcmdpbjsKKyAgICBCT09MIGNhblByZXNlbnRCZXNpZGVFbGVtZW50TGVm
dCA9IChyaWdodEluc2V0Rm9yUHJlc2VudGluZ0Jlc2lkZUVsZW1lbnRMZWZ0ICsgcGlja2VyU2l6
ZS53aWR0aCkgPCBDR1JlY3RHZXRXaWR0aCh3aW5kb3dCb3VuZHMpOworCisgICAgLy8gVHJ5IHRv
IHByZXNlbnQgdGhlIHBpY2tlciB0byB0aGUgbGVmdCBvZiB0aGUgZWxlbWVudC4KKyAgICBpZiAo
Y2FuUHJlc2VudEJlc2lkZUVsZW1lbnRMZWZ0KQorICAgICAgICByZXR1cm4gVUlFZGdlSW5zZXRz
TWFrZSgwLCAwLCAwLCByaWdodEluc2V0Rm9yUHJlc2VudGluZ0Jlc2lkZUVsZW1lbnRMZWZ0KTsK
KworICAgIENHRmxvYXQgbGVmdEluc2V0Rm9yUHJlc2VudGluZ0Jlc2lkZUVsZW1lbnRSaWdodCA9
IENHUmVjdEdldE1heFgoZWxlbWVudEZyYW1lSW5XaW5kb3dDb29yZGluYXRlcykgKyBrRGF0ZVRp
bWVQaWNrZXJDb250cm9sTWFyZ2luOworICAgIEJPT0wgY2FuUHJlc2VudEJlc2lkZUVsZW1lbnRS
aWdodCA9IChsZWZ0SW5zZXRGb3JQcmVzZW50aW5nQmVzaWRlRWxlbWVudFJpZ2h0ICsgcGlja2Vy
U2l6ZS53aWR0aCkgPCBDR1JlY3RHZXRXaWR0aCh3aW5kb3dCb3VuZHMpOworCisgICAgLy8gVHJ5
IHRvIHByZXNlbnQgdGhlIHBpY2tlciB0byB0aGUgcmlnaHQgb2YgdGhlIGVsZW1lbnQuCisgICAg
aWYgKGNhblByZXNlbnRCZXNpZGVFbGVtZW50UmlnaHQpCisgICAgICAgIHJldHVybiBVSUVkZ2VJ
bnNldHNNYWtlKDAsIGxlZnRJbnNldEZvclByZXNlbnRpbmdCZXNpZGVFbGVtZW50UmlnaHQsIDAs
IDApOworCisgICAgLy8gUHJlc2VudCB0aGUgcGlja2VyIGZyb20gdGhlIGNlbnRlciBvZiB0aGUg
ZWxlbWVudC4KKyAgICByZXR1cm4gVUlFZGdlSW5zZXRzWmVybzsKK30KKwogLSAoVUlUYXJnZXRl
ZFByZXZpZXcgKiljb250ZXh0TWVudUludGVyYWN0aW9uOihVSUNvbnRleHRNZW51SW50ZXJhY3Rp
b24gKilpbnRlcmFjdGlvbiBwcmV2aWV3Rm9ySGlnaGxpZ2h0aW5nTWVudVdpdGhDb25maWd1cmF0
aW9uOihVSUNvbnRleHRNZW51Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIHsKICAgICBy
ZXR1cm4gW192aWV3IF9jcmVhdGVUYXJnZXRlZENvbnRleHRNZW51SGludFByZXZpZXdGb3JGb2N1
c2VkRWxlbWVudF07CkBAIC0xNjQsNTggKzM5NCwxNyBAQCBzdGF0aWMgY29uc3QgTlNUaW1lSW50
ZXJ2YWwga01pbGxpc2Vjb25kc1BlclNlY29uZCA9IDEwMDA7CiAgICAgX1VJQ29udGV4dE1lbnVT
dHlsZSAqc3R5bGUgPSBbX1VJQ29udGV4dE1lbnVTdHlsZSBkZWZhdWx0U3R5bGVdOwogICAgIHN0
eWxlLmhhc0ludGVyYWN0aXZlUHJldmlldyA9IFlFUzsKICAgICBzdHlsZS5wcmVmZXJyZWRCYWNr
Z3JvdW5kRWZmZWN0cyA9IEBbIFtVSVZpc3VhbEVmZmVjdCBlbXB0eUVmZmVjdF0gXTsKLSAgICBz
dHlsZS5wcmVmZXJyZWRMYXlvdXQgPSBfVUlDb250ZXh0TWVudUxheW91dEF1dG9tYXRpYzsKKyAg
ICBzdHlsZS5wcmVmZXJyZWRMYXlvdXQgPSBfVUlDb250ZXh0TWVudUxheW91dFByZXZpZXdPbmx5
OworICAgIHN0eWxlLnByZWZlcnNDZW50ZXJlZFByZXZpZXdXaGVuQWN0aW9uc0FyZUFic2VudCA9
IE5POworICAgIHN0eWxlLmlnbm9yZXNEZWZhdWx0U2l6aW5nUnVsZXMgPSBZRVM7CisgICAgc3R5
bGUucHJlZmVycmVkRWRnZUluc2V0cyA9IFtzZWxmIF9wcmVmZXJyZWRFZGdlSW5zZXRzRm9yRGF0
ZVRpbWVQaWNrZXJdOwogICAgIHJldHVybiBzdHlsZTsKIH0KIAogLSAoVUlDb250ZXh0TWVudUNv
bmZpZ3VyYXRpb24gKiljb250ZXh0TWVudUludGVyYWN0aW9uOihVSUNvbnRleHRNZW51SW50ZXJh
Y3Rpb24gKilpbnRlcmFjdGlvbiBjb25maWd1cmF0aW9uRm9yTWVudUF0TG9jYXRpb246KENHUG9p
bnQpbG9jYXRpb24KIHsKICAgICByZXR1cm4gW1VJQ29udGV4dE1lbnVDb25maWd1cmF0aW9uIGNv
bmZpZ3VyYXRpb25XaXRoSWRlbnRpZmllcjpAIl9VSURhdGVQaWNrZXJDb21wYWN0RWRpdG9yIiBw
cmV2aWV3UHJvdmlkZXI6XnsKLSAgICAgICAgW192aWV3Q29udHJvbGxlciBzZXRWaWV3Om5pbF07
Ci0gICAgICAgIF92aWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tXS0RhdGVUaW1lQ29udGV4dE1l
bnVWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0pOwotICAgICAgICBSZXRhaW5QdHI8VUlOYXZp
Z2F0aW9uQ29udHJvbGxlcj4gbmF2aWdhdGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVUlOYXZp
Z2F0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhSb290Vmlld0NvbnRyb2xsZXI6X3ZpZXdD
b250cm9sbGVyLmdldCgpXSk7Ci0gICAgICAgIAotICAgICAgICBOU1N0cmluZyAqcmVzZXRTdHJp
bmcgPSBXRUJfVUlfU1RSSU5HX0tFWSgiUmVzZXQiLCAiUmVzZXQgQnV0dG9uIERhdGUvVGltZSBD
b250ZXh0IE1lbnUiLCAiUmVzZXQgYnV0dG9uIGluIGRhdGUgaW5wdXQgY29udGV4dCBtZW51Iik7
Ci0gICAgICAgIE5TU3RyaW5nICpva1N0cmluZyA9IFdFQl9VSV9TVFJJTkdfS0VZKCJPSyIsICJP
SyAoT0sgYnV0dG9uIHRpdGxlIGluIGRhdGUvdGltZSBwaWNrZXIpIiwgIlRpdGxlIG9mIHRoZSBP
SyBidXR0b24gaW4gZGF0ZS90aW1lIGZvcm0gY29udHJvbHMuIik7Ci0KLSAgICAgICAgUmV0YWlu
UHRyPFVJQmFyQnV0dG9uSXRlbT4gb2tCYXJCdXR0b24gPSBhZG9wdE5TKFtbVUlCYXJCdXR0b25J
dGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOm9rU3RyaW5nIHN0eWxlOlVJQmFyQnV0dG9uSXRlbVN0
eWxlRG9uZSB0YXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKG9rOildKTsKLSAgICAgICAgUmV0
YWluUHRyPFVJQmFyQnV0dG9uSXRlbT4gYmxhbmtCYXJCdXR0b24gPSBhZG9wdE5TKFtbVUlCYXJC
dXR0b25JdGVtIGFsbG9jXSBpbml0V2l0aEJhckJ1dHRvblN5c3RlbUl0ZW06VUlCYXJCdXR0b25T
eXN0ZW1JdGVtRmxleGlibGVTcGFjZSB0YXJnZXQ6bmlsIGFjdGlvbjpuaWxdKTsKLSAgICAgICAg
UmV0YWluUHRyPFVJQmFyQnV0dG9uSXRlbT4gcmVzZXRCYXJCdXR0b24gPSBhZG9wdE5TKFtbVUlC
YXJCdXR0b25JdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOnJlc2V0U3RyaW5nIHN0eWxlOlVJQmFy
QnV0dG9uSXRlbVN0eWxlUGxhaW4gdGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihyZXNldDop
XSk7Ci0gICAgICAgIAotICAgICAgICBbX3ZpZXdDb250cm9sbGVyIHNldFRvb2xiYXJJdGVtczpA
W3Jlc2V0QmFyQnV0dG9uLmdldCgpLCBibGFua0JhckJ1dHRvbi5nZXQoKSwgb2tCYXJCdXR0b24u
Z2V0KCldXTsKLSAgICAgICAgW25hdmlnYXRpb25Db250cm9sbGVyIHNldFRvb2xiYXJIaWRkZW46
Tk9dOwotICAgICAgICAKLSAgICAgICAgYXV0byBjZW50ZXJpbmdWaWV3ID0gYWRvcHROUyhbW1VJ
VmlldyBhbGxvY10gaW5pdF0pOwotICAgICAgICAKLSAgICAgICAgW2NlbnRlcmluZ1ZpZXcgYWRk
U3VidmlldzpfZGF0ZVBpY2tlci5nZXQoKV07Ci0gICAgICAgIAotICAgICAgICBfZGF0ZVBpY2tl
ci5nZXQoKS50cmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFza0ludG9Db25zdHJhaW50cyA9IE5POwot
ICAgICAgICBhdXRvIHdpZHRoQ29uc3RyYWludCA9IFtbY2VudGVyaW5nVmlldyB3aWR0aEFuY2hv
cl0gY29uc3RyYWludEdyZWF0ZXJUaGFuT3JFcXVhbFRvQW5jaG9yOltfZGF0ZVBpY2tlciB3aWR0
aEFuY2hvcl1dOwotICAgICAgICBhdXRvIGhlaWdodENvbnN0cmFpbnQgPSBbW2NlbnRlcmluZ1Zp
ZXcgaGVpZ2h0QW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbX2RhdGVQaWNrZXIgaGVp
Z2h0QW5jaG9yXV07Ci0gICAgICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0cmFpbnQgPSBbW2NlbnRl
cmluZ1ZpZXcgY2VudGVyWEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6W19kYXRlUGlj
a2VyIGNlbnRlclhBbmNob3JdXTsKLSAgICAgICAgYXV0byB2ZXJ0aWNhbENvbnN0cmFpbnQgPSBb
W2NlbnRlcmluZ1ZpZXcgY2VudGVyWUFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6W19k
YXRlUGlja2VyIGNlbnRlcllBbmNob3JdXTsKLQotICAgICAgICBbTlNMYXlvdXRDb25zdHJhaW50
IGFjdGl2YXRlQ29uc3RyYWludHM6QFt2ZXJ0aWNhbENvbnN0cmFpbnQsIGhvcml6b250YWxDb25z
dHJhaW50LCB3aWR0aENvbnN0cmFpbnQsIGhlaWdodENvbnN0cmFpbnRdXTsKLQotICAgICAgICBb
X3ZpZXdDb250cm9sbGVyIHNldFZpZXc6Y2VudGVyaW5nVmlldy5nZXQoKV07Ci0KLSAgICAgICAg
TlNTdHJpbmcgKnRpdGxlVGV4dCA9IF92aWV3LmlucHV0TGFiZWxUZXh0OwotICAgICAgICBpZiAo
IVt0aXRsZVRleHQgaXNFcXVhbDpAIiJdKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8VUlMYWJl
bD4gdGl0bGUgPSBhZG9wdE5TKFtbVUlMYWJlbCBhbGxvY10gaW5pdF0pOwotICAgICAgICAgICAg
W3RpdGxlIHNldEZvbnQ6W1VJRm9udCBwcmVmZXJyZWRGb250Rm9yVGV4dFN0eWxlOlVJRm9udFRl
eHRTdHlsZUZvb3Rub3RlXV07Ci0gICAgICAgICAgICBbdGl0bGUgc2V0VGV4dDp0aXRsZVRleHRd
OwotICAgICAgICAgICAgW3RpdGxlIHNldFRleHRDb2xvcjpbVUlDb2xvciBzZWNvbmRhcnlMYWJl
bENvbG9yXV07Ci0gICAgICAgICAgICBbdGl0bGUgc2V0VGV4dEFsaWdubWVudDpOU1RleHRBbGln
bm1lbnROYXR1cmFsXTsKLSAgICAgICAgICAgIFJldGFpblB0cjxVSUJhckJ1dHRvbkl0ZW0+IHRp
dGxlQnV0dG9uID0gYWRvcHROUyhbW1VJQmFyQnV0dG9uSXRlbSBhbGxvY10gaW5pdFdpdGhDdXN0
b21WaWV3OnRpdGxlLmdldCgpXSk7Ci0gICAgICAgICAgICBbX3ZpZXdDb250cm9sbGVyIG5hdmln
YXRpb25JdGVtXS5sZWZ0QmFyQnV0dG9uSXRlbSA9IHRpdGxlQnV0dG9uLmdldCgpOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIFtuYXZpZ2F0aW9uQ29udHJvbGxlciBzZXROYXZpZ2F0aW9u
QmFySGlkZGVuOllFUyBhbmltYXRlZDpOT107Ci0gICAgICAgIAotICAgICAgICBbbmF2aWdhdGlv
bkNvbnRyb2xsZXIgbmF2aWdhdGlvbkJhcl0udHJhbnNsdWNlbnQgPSBOTzsKLSAgICAgICAgW25h
dmlnYXRpb25Db250cm9sbGVyIG5hdmlnYXRpb25CYXJdLmJhclRpbnRDb2xvciA9IFtVSUNvbG9y
IHN5c3RlbUJhY2tncm91bmRDb2xvcl07Ci0gICAgICAgIFtuYXZpZ2F0aW9uQ29udHJvbGxlciB0
b29sYmFyXS50cmFuc2x1Y2VudCA9IE5POwotICAgICAgICBbbmF2aWdhdGlvbkNvbnRyb2xsZXIg
dG9vbGJhcl0uYmFyVGludENvbG9yID0gW1VJQ29sb3Igc3lzdGVtQmFja2dyb3VuZENvbG9yXTsK
LSAgICAgICAgcmV0dXJuIG5hdmlnYXRpb25Db250cm9sbGVyLmdldCgpOworICAgICAgICByZXR1
cm4gX2RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIuZ2V0KCk7CiAgICAgfSBhY3Rpb25Qcm92
aWRlcjpuaWxdOwogfQogCkBAIC0yNjcsMTAwICs0NTYsNzkgQEAgc3RhdGljIGNvbnN0IE5TVGlt
ZUludGVydmFsIGtNaWxsaXNlY29uZHNQZXJTZWNvbmQgPSAxMDAwOwogCiAjZW5kaWYKIAotLSAo
dm9pZClyZXNldDooaWQpc2VuZGVyCistICh2b2lkKWRhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xs
ZXJEaWRDaGFuZ2VEYXRlOihXS0RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgKilkYXRlVGlt
ZVBpY2tlclZpZXdDb250cm9sbGVyCit7CisgICAgW3NlbGYgX2RhdGVDaGFuZ2VkXTsKK30KKwor
LSAodm9pZClkYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyRGlkUHJlc3NSZXNldEJ1dHRvbjoo
V0tEYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyICopZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJv
bGxlcgogewogICAgIFtzZWxmIHNldERhdGVUaW1lUGlja2VyVG9Jbml0aWFsVmFsdWVdOwogICAg
IFtfdmlldyBwYWdlXS0+c2V0Rm9jdXNlZEVsZW1lbnRWYWx1ZShTdHJpbmcoKSk7CiB9CiAKLS0g
KHZvaWQpb2s6KGlkKXNlbmRlcgorLSAodm9pZClkYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVy
RGlkUHJlc3NEb25lQnV0dG9uOihXS0RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgKilkYXRl
VGltZVBpY2tlclZpZXdDb250cm9sbGVyCiB7CiAjaWYgVVNFKFVJQ09OVEVYVE1FTlUpCiAgICAg
W19kYXRlVGltZUNvbnRleHRNZW51SW50ZXJhY3Rpb24gZGlzbWlzc01lbnVdOwogI2VuZGlmCiB9
CiAKLS0gKE5TU3RyaW5nICopY2FsZW5kYXJUeXBlCi17Ci0gICAgcmV0dXJuIFtfZGF0ZVBpY2tl
ciBjYWxlbmRhcl0uY2FsZW5kYXJJZGVudGlmaWVyOwotfQotCi0tIChkb3VibGUpaG91cgotewot
ICAgIE5TQ2FsZW5kYXIgKmNhbGVuZGFyID0gW05TQ2FsZW5kYXIgY3VycmVudENhbGVuZGFyXTsK
LSAgICBOU0RhdGVDb21wb25lbnRzICpjb21wb25lbnRzID0gW2NhbGVuZGFyIGNvbXBvbmVudHM6
TlNDYWxlbmRhclVuaXRIb3VyIGZyb21EYXRlOltfZGF0ZVBpY2tlciBkYXRlXV07Ci0KLSAgICBy
ZXR1cm4gW2NvbXBvbmVudHMgaG91cl07Ci19Ci0KLS0gKGRvdWJsZSltaW51dGUKKy0gKEJPT0wp
c2hvdWxkRm9yY2VHcmVnb3JpYW5DYWxlbmRhcgogewotICAgIE5TQ2FsZW5kYXIgKmNhbGVuZGFy
ID0gW05TQ2FsZW5kYXIgY3VycmVudENhbGVuZGFyXTsKLSAgICBOU0RhdGVDb21wb25lbnRzICpj
b21wb25lbnRzID0gW2NhbGVuZGFyIGNvbXBvbmVudHM6TlNDYWxlbmRhclVuaXRNaW51dGUgZnJv
bURhdGU6W19kYXRlUGlja2VyIGRhdGVdXTsKLQotICAgIHJldHVybiBbY29tcG9uZW50cyBtaW51
dGVdOworICAgIGF1dG8gYXV0b2ZpbGxGaWVsZE5hbWUgPSBfdmlldy5mb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uLmF1dG9maWxsRmllbGROYW1lOworICAgIHJldHVybiBhdXRvZmlsbEZpZWxkTmFt
ZSA9PSBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZTo6Q2NFeHBNb250aAorICAgICAgICB8fCBh
dXRvZmlsbEZpZWxkTmFtZSA9PSBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZTo6Q2NFeHAKKyAg
ICAgICAgfHwgYXV0b2ZpbGxGaWVsZE5hbWUgPT0gV2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWU6
OkNjRXhwWWVhcjsKIH0KIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgW19kYXRlUGlja2VyIHJl
bW92ZVRhcmdldDpzZWxmIGFjdGlvbjpOVUxMIGZvckNvbnRyb2xFdmVudHM6VUlDb250cm9sRXZl
bnRWYWx1ZUNoYW5nZWRdOwogI2lmIFVTRShVSUNPTlRFWFRNRU5VKQogICAgIFtzZWxmIHJlbW92
ZUNvbnRleHRNZW51SW50ZXJhY3Rpb25dOwogI2VuZGlmCiAgICAgW3N1cGVyIGRlYWxsb2NdOwog
fQogCi0tIChCT09MKXNob3VsZFByZXNlbnRHcmVnb3JpYW5DYWxlbmRhcjooY29uc3QgV2ViS2l0
OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJilub2RlSW5mbwotewotICAgIHJldHVybiBub2Rl
SW5mby5hdXRvZmlsbEZpZWxkTmFtZSA9PSBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZTo6Q2NF
eHBNb250aAotICAgICAgICB8fCBub2RlSW5mby5hdXRvZmlsbEZpZWxkTmFtZSA9PSBXZWJDb3Jl
OjpBdXRvZmlsbEZpZWxkTmFtZTo6Q2NFeHAKLSAgICAgICAgfHwgbm9kZUluZm8uYXV0b2ZpbGxG
aWVsZE5hbWUgPT0gV2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWU6OkNjRXhwWWVhcjsKLX0KLQot
LSAoVUlWaWV3ICopY29udHJvbFZpZXcKLXsKLSAgICByZXR1cm4gX2RhdGVQaWNrZXIuZ2V0KCk7
Ci19Ci0KIC0gKE5TSW50ZWdlcilfdGltZVpvbmVPZmZzZXRGcm9tR01UOihOU0RhdGUgKilkYXRl
CiB7CiAgICAgaWYgKCFfc2hvdWxkUmVtb3ZlVGltZVpvbmVJbmZvcm1hdGlvbikKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICByZXR1cm4gW19kYXRlUGlja2VyLmdldCgpLnRpbWVab25lIHNlY29u
ZHNGcm9tR01URm9yRGF0ZTpkYXRlXTsKKyAgICByZXR1cm4gW1tfZGF0ZVRpbWVQaWNrZXJWaWV3
Q29udHJvbGxlciB0aW1lWm9uZV0gc2Vjb25kc0Zyb21HTVRGb3JEYXRlOmRhdGVdOwogfQogCiAt
IChOU1N0cmluZyAqKV9zYW5pdGl6ZUlucHV0VmFsdWVGb3JGb3JtYXR0ZXI6KE5TU3RyaW5nICop
dmFsdWUKIHsKICAgICAvLyBUaGUgInRpbWUiIGlucHV0IHR5cGUgbWF5IGhhdmUgc2Vjb25kcyBh
bmQgbWlsbGlzZWNvbmRzIGluZm9ybWF0aW9uIHdoaWNoIHdlCiAgICAgLy8ganVzdCBpZ25vcmUu
IEZvciBleGFtcGxlOiAiMDE6NTY6MjAuMzkxIiBpcyBzaG9ydGVuZWQgdG8ganVzdCAiMDE6NTYi
LgotICAgIGlmIChfaXNUaW1lSW5wdXQpCisgICAgaWYgKF92aWV3LmZvY3VzZWRFbGVtZW50SW5m
b3JtYXRpb24uZWxlbWVudFR5cGUgPT0gV2ViS2l0OjpJbnB1dFR5cGU6OlRpbWUpCiAgICAgICAg
IHJldHVybiBbdmFsdWUgc3Vic3RyaW5nVG9JbmRleDpba1RpbWVGb3JtYXRTdHJpbmcgbGVuZ3Ro
XV07CiAKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLS0gKHZvaWQpX2RhdGVDaGFuZ2VkU2V0QXNO
dW1iZXIKLXsKLSAgICBOU0RhdGUgKmRhdGUgPSBbX2RhdGVQaWNrZXIgZGF0ZV07Ci0gICAgW192
aWV3IHVwZGF0ZUZvY3VzZWRFbGVtZW50VmFsdWVBc051bWJlcjooW2RhdGUgdGltZUludGVydmFs
U2luY2UxOTcwXSArIFtzZWxmIF90aW1lWm9uZU9mZnNldEZyb21HTVQ6ZGF0ZV0pICoga01pbGxp
c2Vjb25kc1BlclNlY29uZF07Ci19Ci0KIC0gKFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+KWRh
dGVGb3JtYXR0ZXJGb3JQaWNrZXIKIHsKICAgICBSZXRhaW5QdHI8TlNMb2NhbGU+IGVuZ2xpc2hM
b2NhbGUgPSBhZG9wdE5TKFtbTlNMb2NhbGUgYWxsb2NdIGluaXRXaXRoTG9jYWxlSWRlbnRpZmll
cjpAImVuX1VTX1BPU0lYIl0pOwogICAgIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGRhdGVG
b3JtYXR0ZXIgPSBhZG9wdE5TKFtbTlNEYXRlRm9ybWF0dGVyIGFsbG9jXSBpbml0XSk7Ci0gICAg
W2RhdGVGb3JtYXR0ZXIgc2V0VGltZVpvbmU6X2RhdGVQaWNrZXIuZ2V0KCkudGltZVpvbmVdOwor
ICAgIFtkYXRlRm9ybWF0dGVyIHNldFRpbWVab25lOltfZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJv
bGxlciB0aW1lWm9uZV1dOwogICAgIFtkYXRlRm9ybWF0dGVyIHNldERhdGVGb3JtYXQ6X2Zvcm1h
dFN0cmluZ107CiAgICAgW2RhdGVGb3JtYXR0ZXIgc2V0TG9jYWxlOmVuZ2xpc2hMb2NhbGUuZ2V0
KCldOwogICAgIHJldHVybiBkYXRlRm9ybWF0dGVyOwogfQogCistICh2b2lkKV9kYXRlQ2hhbmdl
ZFNldEFzTnVtYmVyCit7CisgICAgTlNEYXRlICpkYXRlID0gW19kYXRlVGltZVBpY2tlclZpZXdD
b250cm9sbGVyIGRhdGVdOworICAgIFtfdmlldyB1cGRhdGVGb2N1c2VkRWxlbWVudFZhbHVlQXNO
dW1iZXI6KFtkYXRlIHRpbWVJbnRlcnZhbFNpbmNlMTk3MF0gKyBbc2VsZiBfdGltZVpvbmVPZmZz
ZXRGcm9tR01UOmRhdGVdKSAqIGtNaWxsaXNlY29uZHNQZXJTZWNvbmRdOworfQorCiAtICh2b2lk
KV9kYXRlQ2hhbmdlZFNldEFzU3RyaW5nCiB7CiAgICAgLy8gRm9yY2UgRW5nbGlzaCBsb2NhbGUg
YmVjYXVzZSB0aGF0IGlzIHdoYXQgSFRNTDUgdmFsdWUgcGFyc2luZyBleHBlY3RzLgogICAgIFJl
dGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGRhdGVGb3JtYXR0ZXIgPSBbc2VsZiBkYXRlRm9ybWF0
dGVyRm9yUGlja2VyXTsKLSAgICBbX3ZpZXcgdXBkYXRlRm9jdXNlZEVsZW1lbnRWYWx1ZTpbZGF0
ZUZvcm1hdHRlciBzdHJpbmdGcm9tRGF0ZTpbX2RhdGVQaWNrZXIgZGF0ZV1dXTsKKyAgICBbX3Zp
ZXcgdXBkYXRlRm9jdXNlZEVsZW1lbnRWYWx1ZTpbZGF0ZUZvcm1hdHRlciBzdHJpbmdGcm9tRGF0
ZTpbX2RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgZGF0ZV1dXTsKIH0KIAogLSAodm9pZClf
ZGF0ZUNoYW5nZWQKQEAgLTM3NSw0MyArNTQzLDM4IEBAIHN0YXRpYyBjb25zdCBOU1RpbWVJbnRl
cnZhbCBrTWlsbGlzZWNvbmRzUGVyU2Vjb25kID0gMTAwMDsKICAgICAgICAgW3NlbGYgX2RhdGVD
aGFuZ2VkU2V0QXNOdW1iZXJdOwogfQogCi0tICh2b2lkKV9kYXRlQ2hhbmdlSGFuZGxlcjooaWQp
c2VuZGVyCi17Ci0gICAgW3NlbGYgX2RhdGVDaGFuZ2VkXTsKLX0KLQogLSAodm9pZClzZXREYXRl
VGltZVBpY2tlclRvSW5pdGlhbFZhbHVlCiB7CiAgICAgaWYgKFtfaW5pdGlhbFZhbHVlIGlzRXF1
YWw6IEAiIl0pIHsKLSAgICAgICAgW19kYXRlUGlja2VyIHNldERhdGU6W05TRGF0ZSBkYXRlXV07
CisgICAgICAgIFtfZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciBzZXREYXRlOltOU0RhdGUg
ZGF0ZV1dOwogICAgICAgICBbc2VsZiBfZGF0ZUNoYW5nZWRdOwogICAgIH0gZWxzZSBpZiAoX2Zv
cm1hdFN0cmluZykgewogICAgICAgICAvLyBDb252ZXJ0IHRoZSBzdHJpbmcgdmFsdWUgdG8gYSBk
YXRlIG9iamVjdCBmb3IgdGhlIGZpZWxkcyB3aGVyZSB3ZSBoYXZlIGEgZm9ybWF0IHN0cmluZy4K
ICAgICAgICAgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gZGF0ZUZvcm1hdHRlciA9IFtzZWxm
IGRhdGVGb3JtYXR0ZXJGb3JQaWNrZXJdOwogICAgICAgICBOU0RhdGUgKnBhcnNlZERhdGUgPSBb
ZGF0ZUZvcm1hdHRlciBkYXRlRnJvbVN0cmluZzpbc2VsZiBfc2FuaXRpemVJbnB1dFZhbHVlRm9y
Rm9ybWF0dGVyOl9pbml0aWFsVmFsdWUuZ2V0KCldXTsKLSAgICAgICAgW19kYXRlUGlja2VyIHNl
dERhdGU6cGFyc2VkRGF0ZSA/IHBhcnNlZERhdGUgOiBbTlNEYXRlIGRhdGVdXTsKKyAgICAgICAg
W19kYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyIHNldERhdGU6cGFyc2VkRGF0ZSA/IHBhcnNl
ZERhdGUgOiBbTlNEYXRlIGRhdGVdXTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBDb252ZXJ0
IHRoZSBudW1iZXIgdmFsdWUgdG8gYSBkYXRlIG9iamVjdCBmb3IgdGhlIGZpZWxkcyBhZmZlY3Rl
ZCBieSB0aW1lem9uZXMuCiAgICAgICAgIE5TVGltZUludGVydmFsIHNlY29uZHNTaW5jZTE5NzAg
PSBfaW5pdGlhbFZhbHVlQXNOdW1iZXIgLyBrTWlsbGlzZWNvbmRzUGVyU2Vjb25kOwogICAgICAg
ICBOU0ludGVnZXIgdGltZVpvbmVPZmZzZXQgPSBbc2VsZiBfdGltZVpvbmVPZmZzZXRGcm9tR01U
OltOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6c2Vjb25kc1NpbmNlMTk3MF1d
OwogICAgICAgICBOU1RpbWVJbnRlcnZhbCBhZGp1c3RlZFNlY29uZHNTaW5jZTE5NzAgPSBzZWNv
bmRzU2luY2UxOTcwIC0gdGltZVpvbmVPZmZzZXQ7Ci0gICAgICAgIFtfZGF0ZVBpY2tlciBzZXRE
YXRlOltOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6YWRqdXN0ZWRTZWNvbmRz
U2luY2UxOTcwXV07CisgICAgICAgIFtfZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciBzZXRE
YXRlOltOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6YWRqdXN0ZWRTZWNvbmRz
U2luY2UxOTcwXV07CiAgICAgfQogfQogCi0tICh2b2lkKWNvbnRyb2xCZWdpbkVkaXRpbmcKKy0g
KFVJVmlldyAqKWNvbnRyb2xWaWV3CiB7Ci0gICAgaWYgKF9wcmVzZW50aW5nKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBfcHJlc2VudGluZyA9IFlFUzsKKyAgICByZXR1cm4gbmlsOworfQogCist
ICh2b2lkKWNvbnRyb2xCZWdpbkVkaXRpbmcKK3sKICAgICBhdXRvIGVsZW1lbnRUeXBlID0gX3Zp
ZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZTsKICAgICBpZiAoZWxlbWVu
dFR5cGUgPT0gV2ViS2l0OjpJbnB1dFR5cGU6OlRpbWUgfHwgZWxlbWVudFR5cGUgPT0gV2ViS2l0
OjpJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWwpCiAgICAgICAgIFtfdmlldyBzdGFydFJlbGlucXVp
c2hpbmdGaXJzdFJlc3BvbmRlclRvRm9jdXNlZEVsZW1lbnRdOwogCiAgICAgLy8gU2V0IHRoZSB0
aW1lIHpvbmUgaW4gY2FzZSBpdCBjaGFuZ2VkLgotICAgIF9kYXRlUGlja2VyLmdldCgpLnRpbWVa
b25lID0gW05TVGltZVpvbmUgbG9jYWxUaW1lWm9uZV07CisgICAgW19kYXRlVGltZVBpY2tlclZp
ZXdDb250cm9sbGVyIHNldFRpbWVab25lOk5TVGltZVpvbmUubG9jYWxUaW1lWm9uZV07CiAKICAg
ICAvLyBDdXJyZW50bHkgbm8gdmFsdWUgZm9yIHRoZSA8aW5wdXQ+LiBTdGFydCB0aGUgcGlja2Vy
IHdpdGggdGhlIGN1cnJlbnQgdGltZS4KICAgICAvLyBBbHNvLCB1cGRhdGUgdGhlIGFjdHVhbCA8
aW5wdXQ+IHZhbHVlLgpAQCAtNDI0LDI4ICs1ODcsNDMgQEAgc3RhdGljIGNvbnN0IE5TVGltZUlu
dGVydmFsIGtNaWxsaXNlY29uZHNQZXJTZWNvbmQgPSAxMDAwOwogI2VuZGlmCiB9CiAKLS0gKHZv
aWQpc2V0SG91cjooTlNJbnRlZ2VyKWhvdXIgbWludXRlOihOU0ludGVnZXIpbWludXRlCistICh2
b2lkKWNvbnRyb2xFbmRFZGl0aW5nCiB7Ci0gICAgTlNTdHJpbmcgKnRpbWVTdHJpbmcgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiUuMmxkOiUuMmxkIiwgKGxvbmcpaG91ciwgKGxvbmcp
bWludXRlXTsKLSAgICBbX2RhdGVQaWNrZXIgc2V0RGF0ZTpbW3NlbGYgZGF0ZUZvcm1hdHRlckZv
clBpY2tlcl0gZGF0ZUZyb21TdHJpbmc6dGltZVN0cmluZ11dOwotICAgIFtzZWxmIF9kYXRlQ2hh
bmdlZF07CisgICAgW192aWV3IHN0b3BSZWxpbnF1aXNoaW5nRmlyc3RSZXNwb25kZXJUb0ZvY3Vz
ZWRFbGVtZW50XTsKKworI2lmIFVTRShVSUNPTlRFWFRNRU5VKQorICAgIFtzZWxmIHJlbW92ZUNv
bnRleHRNZW51SW50ZXJhY3Rpb25dOworI2VuZGlmCiB9CiAKLS0gKFdLRGF0ZVRpbWVDb250ZXh0
TWVudVZpZXdDb250cm9sbGVyICopdmlld0NvbnRyb2xsZXIKKy0gKE5TU3RyaW5nICopY2FsZW5k
YXJUeXBlCiB7Ci0gICAgcmV0dXJuIF92aWV3Q29udHJvbGxlci5nZXQoKTsKKyAgICByZXR1cm4g
W19kYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyIGNhbGVuZGFyXS5jYWxlbmRhcklkZW50aWZp
ZXI7CiB9CiAKLS0gKHZvaWQpY29udHJvbEVuZEVkaXRpbmcKKy0gKGRvdWJsZSlob3VyCiB7Ci0g
ICAgX3ByZXNlbnRpbmcgPSBOTzsKKyAgICBOU0NhbGVuZGFyICpjYWxlbmRhciA9IFtOU0NhbGVu
ZGFyIGN1cnJlbnRDYWxlbmRhcl07CisgICAgTlNEYXRlQ29tcG9uZW50cyAqY29tcG9uZW50cyA9
IFtjYWxlbmRhciBjb21wb25lbnRzOk5TQ2FsZW5kYXJVbml0SG91ciBmcm9tRGF0ZTpbX2RhdGVU
aW1lUGlja2VyVmlld0NvbnRyb2xsZXIgZGF0ZV1dOwogCi0gICAgW192aWV3IHN0b3BSZWxpbnF1
aXNoaW5nRmlyc3RSZXNwb25kZXJUb0ZvY3VzZWRFbGVtZW50XTsKKyAgICByZXR1cm4gY29tcG9u
ZW50cy5ob3VyOworfQogCi0jaWYgVVNFKFVJQ09OVEVYVE1FTlUpCi0gICAgW3NlbGYgcmVtb3Zl
Q29udGV4dE1lbnVJbnRlcmFjdGlvbl07Ci0jZW5kaWYKKy0gKGRvdWJsZSltaW51dGUKK3sKKyAg
ICBOU0NhbGVuZGFyICpjYWxlbmRhciA9IFtOU0NhbGVuZGFyIGN1cnJlbnRDYWxlbmRhcl07Cisg
ICAgTlNEYXRlQ29tcG9uZW50cyAqY29tcG9uZW50cyA9IFtjYWxlbmRhciBjb21wb25lbnRzOk5T
Q2FsZW5kYXJVbml0TWludXRlIGZyb21EYXRlOltfZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxl
ciBkYXRlXV07CisKKyAgICByZXR1cm4gY29tcG9uZW50cy5taW51dGU7CiB9CisKKy0gKHZvaWQp
c2V0SG91cjooTlNJbnRlZ2VyKWhvdXIgbWludXRlOihOU0ludGVnZXIpbWludXRlCit7CisgICAg
TlNTdHJpbmcgKnRpbWVTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiUuMmxk
OiUuMmxkIiwgKGxvbmcpaG91ciwgKGxvbmcpbWludXRlXTsKKyAgICBbX2RhdGVUaW1lUGlja2Vy
Vmlld0NvbnRyb2xsZXIgc2V0RGF0ZTpbW3NlbGYgZGF0ZUZvcm1hdHRlckZvclBpY2tlcl0gZGF0
ZUZyb21TdHJpbmc6dGltZVN0cmluZ11dOworICAgIFtzZWxmIF9kYXRlQ2hhbmdlZF07Cit9CisK
IEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wK
</data>
<flag name="commit-queue"
          id="446811"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426508</attachid>
            <date>2021-04-19 19:14:13 -0700</date>
            <delta_ts>2021-04-20 14:25:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224794-20210419221412.patch</filename>
            <type>text/plain</type>
            <size>43561</size>
            <attacher name="Aditya Keerthi">akeerthi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IzNjU5ZDFkYWY0YTdh
MzEyODVhOTFkNDgzOWJmOWE3MTE0NjgwNi4uYzQ2MzA3OWU5NTA3NmIwNjk1NzllMTNjY2JhZjNk
NzhhNThhYWI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA0LTE5ICBBZGl0
eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXVtGQ1JdIFVw
ZGF0ZSBkYXRlL3RpbWUgcGlja2VyIGFwcGVhcmFuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDc5NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzY3ODU4NTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBlbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzOgorCisgICAgICAgIFJlbW92ZSBub3cg
dW51c2VkIHN0cmluZy4KKworICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpm
b3JtQ29udHJvbERvbmVCdXR0b25UaXRsZSk6CisKKyAgICAgICAgTW92ZWQgZGVmaW5pdGlvbiBv
dXQgb2YgUExBVEZPUk0oV0FUQ0hPUykgaW4gTG9jYWxpemVkU3RyaW5ncy5jcHAgYW5kCisgICAg
ICAgIGludG8gTG9jYWxpemVkU3RyaW5nc0NvY29hLCBzbyB0aGF0IHRoZSAiRG9uZSIgc3RyaW5n
IGNhbiBiZSB1c2VkIGJ5CisgICAgICAgIFBMQVRGT1JNKElPU19GQU1JTFkpLgorCiAyMDIxLTA0
LTEzICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XVtGQ1JdIEluZGV0ZXJtaW5hdGUgcHJvZ3Jlc3MgYmFycyBzaG91bGQgdXBkYXRlIGF0IDYwZnBz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDFiMGNmZjAwNjM3YzlkZWY4NjFiM2VlYjczNjAwODljNmQxMGIwNDcuLjU3
ZTE0MjNhOTUxODg1OWE4NDQ0YjlkNGIzNWY5MWE0MThlYjczMTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzggQEAKKzIwMjEtMDQtMTkgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1NdW0ZDUl0gVXBkYXRlIGRhdGUvdGltZSBwaWNrZXIgYXBwZWFyYW5j
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Nzk0
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83Njc4NTg1OT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEYXRlL3RpbWUgcGlja2VycyBzaG91bGQgaGF2
ZSBhIHN5c3RlbSBtYXRlcmlhbCBiYWNrZ3JvdW5kIGFuZCBzaG91bGQKKyAgICAgICAgYXZvaWQg
b2JzY3VyaW5nIHRoZSBhc3NvY2lhdGVkIGVsZW1lbnQgd2hlbiBwb3NzaWJsZS4KKworICAgICAg
ICAqIFBsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaDoKKworICAgICAgICBBZGQgbmV3IFNQSSBk
ZWNsYXJhdGlvbnMgdG8gc3VwcG9ydCBkYXRlL3RpbWUgcGlja2VyIG1vZGlmaWNhdGlvbnMuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAg
ICAgICAgKGNyZWF0ZVRhcmdldGVkUHJldmlldyk6CisgICAgICAgIChjcmVhdGVGYWxsYmFja1Rh
cmdldGVkUHJldmlldyk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2NyZWF0ZVRhcmdldGVk
Q29udGV4dE1lbnVIaW50UHJldmlld0ZvckZvY3VzZWRFbGVtZW50XSk6CisKKyAgICAgICAgU2V0
IHRoZSBVSVRhcmdldGVkUHJldmlldyBiYWNrZ3JvdW5kIGNvbG9yIHRvIGNsZWFyQ29sb3Igd2hl
bgorICAgICAgICBwcmVzZW50aW5nIGEgZGF0ZS90aW1lIHBpY2tlciwgc28gdGhhdCB0aGUgcHJl
c2VudGVkIHBpY2tlciBoYXMgYQorICAgICAgICB2aXNpYmxlIG1hdGVyaWFsIGVmZmVjdC4gV2l0
aG91dCB0aGlzIGNoYW5nZSwgdGhlIHBpY2tlciB3b3VsZCBoYXZlIGEKKyAgICAgICAgc29saWQg
d2hpdGUgb3IgYmxhY2sgYmFja2dyb3VuZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5tbToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tl
clZpZXdDb250cm9sbGVyIGluaXRXaXRoRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dLRGF0ZVRp
bWVQaWNrZXJWaWV3Q29udHJvbGxlciB2aWV3RGlkTG9hZF0pOgorCisgICAgICAgIEFkZCBhIHN5
c3RlbSBtYXRlcmlhbCBiYWNrZ3JvdW5kIHRvIHRoZSBkYXRlIHBpY2tlciB1c2luZworICAgICAg
ICBVSVZpc3VhbEVmZmVjdFZpZXcuCisKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlclZpZXdD
b250cm9sbGVyIGRhdGVQaWNrZXJDaGFuZ2VkOl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlj
a2VyVmlld0NvbnRyb2xsZXIgcmVzZXRCdXR0b25QcmVzc2VkOl0pOgorICAgICAgICAoLVtXS0Rh
dGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgZG9uZUJ1dHRvblByZXNzZWQ6XSk6CisgICAgICAg
ICgtW1dLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciBkYXRlUGlja2VySW5zZXRzXSk6Cisg
ICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciBwcmVmZXJyZWREYXRlUGlj
a2VyU2l6ZV0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgcHJl
ZmVycmVkQ29udGVudFNpemVdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlclZpZXdDb250
cm9sbGVyIGRhdGVdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVy
IHNldERhdGU6XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciBz
ZXREYXRlUGlja2VyTW9kZTpdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlclZpZXdDb250
cm9sbGVyIHRpbWVab25lXSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJv
bGxlciBzZXRUaW1lWm9uZTpdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlclZpZXdDb250
cm9sbGVyIGNhbGVuZGFyXSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgaW5pdFdpdGhW
aWV3OmRhdGVQaWNrZXJNb2RlOl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIF9wcmVm
ZXJyZWRFZGdlSW5zZXRzRm9yRGF0ZVRpbWVQaWNrZXJdKToKKworICAgICAgICBBdHRlbXB0IHRv
IHByZXNlbnQgdGhlIGRhdGUgcGlja2VyIGluIGEgd2F5IHRoYXQgZG9lcyBub3Qgb2JzY3VyZSB0
aGUKKyAgICAgICAgZWxlbWVudC4KKworICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIF9jb250
ZXh0TWVudUludGVyYWN0aW9uOnN0eWxlRm9yTWVudVdpdGhDb25maWd1cmF0aW9uOl0pOgorICAg
ICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGNvbnRleHRNZW51SW50ZXJhY3Rpb246Y29uZmlndXJh
dGlvbkZvck1lbnVBdExvY2F0aW9uOl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGRh
dGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXJEaWRDaGFuZ2VEYXRlOl0pOgorICAgICAgICAoLVtX
S0RhdGVUaW1lUGlja2VyIGRhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXJEaWRQcmVzc1Jlc2V0
QnV0dG9uOl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGRhdGVUaW1lUGlja2VyVmll
d0NvbnRyb2xsZXJEaWRQcmVzc0RvbmVCdXR0b246XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQ
aWNrZXIgc2hvdWxkRm9yY2VHcmVnb3JpYW5DYWxlbmRhcl0pOgorICAgICAgICAoLVtXS0RhdGVU
aW1lUGlja2VyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBfdGltZVpv
bmVPZmZzZXRGcm9tR01UOl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIF9zYW5pdGl6
ZUlucHV0VmFsdWVGb3JGb3JtYXR0ZXI6XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIg
ZGF0ZUZvcm1hdHRlckZvclBpY2tlcl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIF9k
YXRlQ2hhbmdlZFNldEFzTnVtYmVyXSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgX2Rh
dGVDaGFuZ2VkU2V0QXNTdHJpbmddKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBzZXRE
YXRlVGltZVBpY2tlclRvSW5pdGlhbFZhbHVlXSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNr
ZXIgY29udHJvbFZpZXddKToKKworICAgICAgICBVcGRhdGVkIHRoaXMgbWV0aG9kIHRvIHJldHVy
biBuaWwsIG1hdGNoaW5nIG90aGVyIGZvcm0gY29udHJvbHMgdGhhdAorICAgICAgICBkbyBub3Qg
cHJlc2VudCBhIGtleWJvYXJkIGlucHV0IHZpZXcgKGV4YW1wbGU6IDxzZWxlY3Q+KS4KKworICAg
ICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGNvbnRyb2xCZWdpbkVkaXRpbmddKToKKyAgICAgICAg
KC1bV0tEYXRlVGltZVBpY2tlciBjb250cm9sRW5kRWRpdGluZ10pOgorICAgICAgICAoLVtXS0Rh
dGVUaW1lUGlja2VyIGNhbGVuZGFyVHlwZV0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2Vy
IGhvdXJdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBtaW51dGVdKToKKyAgICAgICAg
KC1bV0tEYXRlVGltZVBpY2tlciBzZXRIb3VyOm1pbnV0ZTpdKToKKwogMjAyMS0wNC0wOSAgQWRp
dHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bRkNSXSBD
b2xvciBwaWNrZXIgc2hlZXQgc2hvdWxkIHVzZSBkZWZhdWx0IGhlaWdodApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncyBiL1NvdXJjZS9XZWJD
b3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKaW5kZXggMjU5MjlhMTRhODdkN2MzNTcz
OTdmZmQyM2Q5NDNkYzJhMzNiZjliYy4uOWFlNDEzNzE1Mjg4YTYyOTk5ZjVkYzRjM2U2NmYxNWMy
ZWRjNWQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUu
c3RyaW5ncworKysgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdz
CkBAIC0zMzEsNyArMzMxLDcgQEAKIC8qIExhYmVsIGZvciB0aGUgZG9uYXRlIHdpdGggQXBwbGUg
UGF5IGJ1dHRvbi4gKi8KICJEb25hdGUgd2l0aCBBcHBsZSBQYXkiID0gIkRvbmF0ZSB3aXRoIEFw
cGxlIFBheSI7CiAKLS8qIFRpdGxlIG9mIHRoZSBEb25lIGJ1dHRvbiBmb3Igem9vbWVkIGZvcm0g
Y29udHJvbHMuICovCisvKiBUaXRsZSBvZiB0aGUgRG9uZSBidXR0b24gZm9yIGZvcm0gY29udHJv
bHMuICovCiAiRG9uZSIgPSAiRG9uZSI7CiAKIC8qIERpc2FsbG93IGJ1dHRvbiB0aXRsZSBpbiBn
ZW9sb2NhdGlvbiBwcm9tcHQgKi8KQEAgLTU4Niw5ICs1ODYsNiBAQAogLyogT3B0aW9uIGluIHNl
Z21lbnRlZCBjb250cm9sIGZvciBpbnNlcnRpbmcgYSBudW1iZXJlZCBsaXN0IGluIHRleHQgZWRp
dGluZyAqLwogIk51bWJlcmVkIGxpc3QiID0gIk51bWJlcmVkIGxpc3QiOwogCi0vKiBUaXRsZSBv
ZiB0aGUgT0sgYnV0dG9uIGluIGRhdGUvdGltZSBmb3JtIGNvbnRyb2xzLiAqLwotIk9LIChPSyBi
dXR0b24gdGl0bGUgaW4gZGF0ZS90aW1lIHBpY2tlcikiID0gIk9LIjsKLQogLyogVGl0bGUgb2Yg
dGhlIE9LIGJ1dHRvbiBmb3IgdGhlIG51bWJlciBwYWQgaW4gem9vbWVkIGZvcm0gY29udHJvbHMu
ICovCiAiT0sgKE9LIGJ1dHRvbiB0aXRsZSBpbiBleHRyYSB6b29tZWQgbnVtYmVyIHBhZCkiID0g
Ik9LIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3Ry
aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcApp
bmRleCBjNWM5ZWRiOTZiM2Y0OTI3NTUwNDNjMWE5N2VmZmU4MWEzODM5ODRiLi5jYzM1NTNmZmI5
NzNmOTI4MGY3YjU3ZDQ0ZThmNDVhM2FjYmE1OGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcApAQCAtMTE4OSwxMSArMTE4OSw2IEBAIFN0cmluZyBu
dW1iZXJQYWRPS0J1dHRvblRpdGxlKCkKICAgICByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoIk9L
IiwgIk9LIChPSyBidXR0b24gdGl0bGUgaW4gZXh0cmEgem9vbWVkIG51bWJlciBwYWQpIiwgIlRp
dGxlIG9mIHRoZSBPSyBidXR0b24gZm9yIHRoZSBudW1iZXIgcGFkIGluIHpvb21lZCBmb3JtIGNv
bnRyb2xzLiIpOwogfQogCi1TdHJpbmcgZm9ybUNvbnRyb2xEb25lQnV0dG9uVGl0bGUoKQotewot
ICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJEb25lIiwgIlRpdGxlIG9mIHRoZSBEb25lIGJ1dHRv
biBmb3Igem9vbWVkIGZvcm0gY29udHJvbHMuIik7Ci19Ci0KIFN0cmluZyBmb3JtQ29udHJvbENh
bmNlbEJ1dHRvblRpdGxlKCkKIHsKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiQ2FuY2VsIiwg
IkNhbmNlbCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVk
U3RyaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCmlu
ZGV4IDRhMjI0NWZlMTgxNmU1NGQ4YWMwZjNmMGI5ZDQzYWU3YzQ1NWQ4NTYuLmRiZjdlYjc5M2Rm
NTc0MDFjNzVjMGE4MzcxYzg3OGY1MDI4MTJlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Mb2NhbGl6ZWRTdHJpbmdzLmgKQEAgLTI2NSw2ICsyNjUsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgU3RyaW5nIGZpbGVCdXR0b25DaG9vc2VNdWx0aXBsZU1lZGlhRmlsZXNMYWJlbCgp
OwogICAgIFN0cmluZyBmaWxlQnV0dG9uTm9NZWRpYUZpbGVTZWxlY3RlZExhYmVsKCk7CiAgICAg
U3RyaW5nIGZpbGVCdXR0b25Ob01lZGlhRmlsZXNTZWxlY3RlZExhYmVsKCk7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgZm9ybUNvbnRyb2xEb25lQnV0dG9uVGl0bGUoKTsKICNlbmRpZgog
CiAgICAgU3RyaW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50
U2l6ZSYgc2l6ZSk7CkBAIC0zMzQsNyArMzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lm
IFBMQVRGT1JNKFdBVENIT1MpCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIG51bWJlclBhZE9L
QnV0dG9uVGl0bGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZm9ybUNvbnRyb2xDYW5j
ZWxCdXR0b25UaXRsZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmb3JtQ29udHJvbERv
bmVCdXR0b25UaXRsZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmb3JtQ29udHJvbEhp
ZGVCdXR0b25UaXRsZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmb3JtQ29udHJvbEdv
QnV0dG9uVGl0bGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZm9ybUNvbnRyb2xTZWFy
Y2hCdXR0b25UaXRsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCmluZGV4IGRmMmMyMWJkZjY5OTJhZDlmNWY4ZTIw
YzI4MjIxNWIwYzY5ODVjNmIuLmY2OGNlNDViM2YzZjc5ZTY5MmUyMDZjZWY5ZTg4MmFiYjdhZTk1
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0
cmluZ3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6
ZWRTdHJpbmdzQ29jb2EubW0KQEAgLTI2Nyw2ICsyNjcsMTIgQEAgU3RyaW5nIGZpbGVCdXR0b25O
b01lZGlhRmlsZXNTZWxlY3RlZExhYmVsKCkKIHsKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygi
bm8gbWVkaWEgc2VsZWN0ZWQgKG11bHRpcGxlKSIsICJUZXh0IHRvIGRpc3BsYXkgaW4gZmlsZSBi
dXR0b24gdXNlZCBpbiBIVE1MIGZvcm1zIGZvciBtZWRpYSBmaWxlcyB3aGVuIG5vIG1lZGlhIGZp
bGVzIGFyZSBzZWxlY3RlZCBhbmQgdGhlIGJ1dHRvbiBhbGxvd3MgbXVsdGlwbGUgZmlsZXMgdG8g
YmUgc2VsZWN0ZWQiKTsKIH0KKworCitTdHJpbmcgZm9ybUNvbnRyb2xEb25lQnV0dG9uVGl0bGUo
KQoreworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJEb25lIiwgIlRpdGxlIG9mIHRoZSBEb25l
IGJ1dHRvbiBmb3IgZm9ybSBjb250cm9scy4iKTsKK30KICNlbmRpZgogCiBTdHJpbmcgdmFsaWRh
dGlvbk1lc3NhZ2VUb29Mb25nVGV4dChpbnQsIGludCBtYXhMZW5ndGgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4IGE3NTgwNzM0OWRjMThkNGM1YmM4M2My
YmI2NTlkYmQ2NDk5ODNlMDAuLjM1NWI2ODRkOGZkODg5MzQxZmMzODAyMzA3MTAxMmZjYTRhZjAz
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCkBAIC0yMTYs
NiArMjE2LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVUlEYXRlUGlja2VyU3R5bGUp
IHsKICNpZiBIQVZFKFVJREFURVBJQ0tFUl9TVFlMRSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkd3JpdGUsIGFzc2lnbikgVUlEYXRlUGlja2VyU3R5bGUgcHJlZmVycmVkRGF0ZVBpY2tlclN0
eWxlOwogI2VuZGlmCistIChVSUVkZ2VJbnNldHMpX2FwcGxpZWRJbnNldHNUb0VkZ2VPZkNvbnRl
bnQ7CiBAZW5kCiAKIEBpbnRlcmZhY2UgVUlEZXZpY2UgKCkKQEAgLTEyMTIsNiArMTIxMyw3IEBA
IHR5cGVkZWYgTlNfT1BUSU9OUyhOU0ludGVnZXIsIFVJV0tEb2N1bWVudFJlcXVlc3RGbGFncykg
ewogCiB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1VJQ29udGV4dE1lbnVMYXlvdXQpIHsK
ICAgICBfVUlDb250ZXh0TWVudUxheW91dEFjdGlvbnNPbmx5ID0gMSwKKyAgICBfVUlDb250ZXh0
TWVudUxheW91dFByZXZpZXdPbmx5ID0gMiwKICAgICBfVUlDb250ZXh0TWVudUxheW91dENvbXBh
Y3RNZW51ID0gMywKICAgICBfVUlDb250ZXh0TWVudUxheW91dEF1dG9tYXRpYyA9IDEwMCwKIH07
CkBAIC0xMjIwLDYgKzEyMjIsOCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1VJQ29u
dGV4dE1lbnVMYXlvdXQpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBfVUlDb250ZXh0TWVudUxh
eW91dCBwcmVmZXJyZWRMYXlvdXQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgVUlFZGdlSW5zZXRz
IHByZWZlcnJlZEVkZ2VJbnNldHM7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBoYXNJbnRl
cmFjdGl2ZVByZXZpZXc7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBwcmVmZXJzQ2VudGVy
ZWRQcmV2aWV3V2hlbkFjdGlvbnNBcmVBYnNlbnQ7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9P
TCBpZ25vcmVzRGVmYXVsdFNpemluZ1J1bGVzOwogQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9u
ZykgTlNBcnJheSAqcHJlZmVycmVkQmFja2dyb3VuZEVmZmVjdHM7CiArIChpbnN0YW5jZXR5cGUp
ZGVmYXVsdFN0eWxlOwogQGVuZApAQCAtMTQ5NCw2ICsxNDk4LDcgQEAgZXh0ZXJuIE5TU3RyaW5n
ICogY29uc3QgVUlQcmV2aWV3RGF0YUF0dGFjaG1lbnRMaXN0SXNDb250ZW50TWFuYWdlZDsKICNl
bmRpZgogCiBVSUVkZ2VJbnNldHMgVUlFZGdlSW5zZXRzQWRkKFVJRWRnZUluc2V0cyBsaHMsIFVJ
RWRnZUluc2V0cyByaHMsIFVJUmVjdEVkZ2UpOworVUlFZGdlSW5zZXRzIFVJRWRnZUluc2V0c1N1
YnRyYWN0KFVJRWRnZUluc2V0cyBsaHMsIFVJRWRnZUluc2V0cyByaHMsIFVJUmVjdEVkZ2UpOwog
CiBleHRlcm4gTlNTdHJpbmcgKmNvbnN0IFVJQmFja2xpZ2h0TGV2ZWxDaGFuZ2VkTm90aWZpY2F0
aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBhZDE5NzZiZmEwYmQzYzQ2YzVlYjFiODAxMDU3ZTBi
MDUxOGU0NTJmLi40NmQ4YWQ0N2E4MDVkNDg4OTJiNWZiMTI5NWE1Nzc0ZDQ3NjBhZjIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KQEAgLTgzMzgsNyArODMzOCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlUYXJn
ZXRlZFByZXZpZXc+IGNyZWF0ZVRhcmdldGVkUHJldmlldyhVSUltYWdlICppbWFnZSwgVUlWaWV3
CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tVSVRhcmdldGVkUHJldmlldyBhbGxvY10gaW5pdFdpdGhW
aWV3OmltYWdlVmlldy5nZXQoKSBwYXJhbWV0ZXJzOnBhcmFtZXRlcnMuZ2V0KCkgdGFyZ2V0OnRh
cmdldC5nZXQoKV0pOwogfQogCi1zdGF0aWMgUmV0YWluUHRyPFVJVGFyZ2V0ZWRQcmV2aWV3PiBj
cmVhdGVGYWxsYmFja1RhcmdldGVkUHJldmlldyhVSVZpZXcgKnJvb3RWaWV3LCBVSVZpZXcgKmNv
bnRhaW5lclZpZXcsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZnJhbWVJblJvb3RWaWV3Q29v
cmRpbmF0ZXMpCitzdGF0aWMgUmV0YWluUHRyPFVJVGFyZ2V0ZWRQcmV2aWV3PiBjcmVhdGVGYWxs
YmFja1RhcmdldGVkUHJldmlldyhVSVZpZXcgKnJvb3RWaWV3LCBVSVZpZXcgKmNvbnRhaW5lclZp
ZXcsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZnJhbWVJblJvb3RWaWV3Q29vcmRpbmF0ZXMs
IFVJQ29sb3IgKmJhY2tncm91bmRDb2xvcikKIHsKICAgICBpZiAoIWNvbnRhaW5lclZpZXcud2lu
ZG93KQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtODM0Nyw2ICs4MzQ3LDkgQEAgc3RhdGljIFJl
dGFpblB0cjxVSVRhcmdldGVkUHJldmlldz4gY3JlYXRlRmFsbGJhY2tUYXJnZXRlZFByZXZpZXco
VUlWaWV3ICpyb290VmkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIGF1dG8gcGFyYW1ldGVy
cyA9IGFkb3B0TlMoW1tVSVByZXZpZXdQYXJhbWV0ZXJzIGFsbG9jXSBpbml0XSk7CisgICAgaWYg
KGJhY2tncm91bmRDb2xvcikKKyAgICAgICAgW3BhcmFtZXRlcnMgc2V0QmFja2dyb3VuZENvbG9y
OmJhY2tncm91bmRDb2xvcl07CisKICAgICBVSVZpZXcgKnNuYXBzaG90VmlldyA9IFtyb290Vmll
dyByZXNpemFibGVTbmFwc2hvdFZpZXdGcm9tUmVjdDpmcmFtZUluUm9vdFZpZXdDb29yZGluYXRl
cyBhZnRlclNjcmVlblVwZGF0ZXM6Tk8gd2l0aENhcEluc2V0czpVSUVkZ2VJbnNldHNaZXJvXTsK
IAogICAgIENHUmVjdCBmcmFtZUluQ29udGFpbmVyVmlld0Nvb3JkaW5hdGVzID0gW3Jvb3RWaWV3
IGNvbnZlcnRSZWN0OmZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzIHRvVmlldzpjb250YWluZXJW
aWV3XTsKQEAgLTgzNjQsNyArODM2NywxOSBAQCBzdGF0aWMgUmV0YWluUHRyPFVJVGFyZ2V0ZWRQ
cmV2aWV3PiBjcmVhdGVGYWxsYmFja1RhcmdldGVkUHJldmlldyhVSVZpZXcgKnJvb3RWaQogCiAt
IChVSVRhcmdldGVkUHJldmlldyAqKV9jcmVhdGVUYXJnZXRlZENvbnRleHRNZW51SGludFByZXZp
ZXdGb3JGb2N1c2VkRWxlbWVudAogewotICAgIFJldGFpblB0cjxVSVRhcmdldGVkUHJldmlldz4g
dGFyZ2V0ZWRQcmV2aWV3ID0gY3JlYXRlRmFsbGJhY2tUYXJnZXRlZFByZXZpZXcoc2VsZiwgc2Vs
Zi5jb250YWluZXJGb3JDb250ZXh0TWVudUhpbnRQcmV2aWV3cywgX2ZvY3VzZWRFbGVtZW50SW5m
b3JtYXRpb24uaW50ZXJhY3Rpb25SZWN0KTsKKyAgICBhdXRvIGJhY2tncm91bmRDb2xvciA9IFsm
XSgpIC0+IFVJQ29sb3IgKiB7CisgICAgICAgIHN3aXRjaCAoX2ZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24uZWxlbWVudFR5cGUpIHsKKyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0
ZToKKyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TW9udGg6CisgICAgICAgIGNhc2Ug
V2ViS2l0OjpJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWw6CisgICAgICAgIGNhc2UgV2ViS2l0OjpJ
bnB1dFR5cGU6OlRpbWU6CisgICAgICAgICAgICByZXR1cm4gVUlDb2xvci5jbGVhckNvbG9yOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgfQorICAg
IH0oKTsKKworICAgIFJldGFpblB0cjxVSVRhcmdldGVkUHJldmlldz4gdGFyZ2V0ZWRQcmV2aWV3
ID0gY3JlYXRlRmFsbGJhY2tUYXJnZXRlZFByZXZpZXcoc2VsZiwgc2VsZi5jb250YWluZXJGb3JD
b250ZXh0TWVudUhpbnRQcmV2aWV3cywgX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uaW50ZXJh
Y3Rpb25SZWN0LCBiYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgW3NlbGYgX3VwZGF0ZVRhcmdldGVk
UHJldmlld1Njcm9sbFZpZXdVc2luZ0NvbnRhaW5lclNjcm9sbGluZ05vZGVJRDpfZm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbi5jb250YWluZXJTY3JvbGxpbmdOb2RlSURdOwogCkBAIC04Mzg3LDcg
Kzg0MDIsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFVJVGFyZ2V0ZWRQcmV2aWV3PiBjcmVhdGVGYWxs
YmFja1RhcmdldGVkUHJldmlldyhVSVZpZXcgKnJvb3RWaQogICAgIH0KIAogICAgIGlmICghdGFy
Z2V0ZWRQcmV2aWV3KQotICAgICAgICB0YXJnZXRlZFByZXZpZXcgPSBjcmVhdGVGYWxsYmFja1Rh
cmdldGVkUHJldmlldyhzZWxmLCBzZWxmLmNvbnRhaW5lckZvckNvbnRleHRNZW51SGludFByZXZp
ZXdzLCBfcG9zaXRpb25JbmZvcm1hdGlvbi5ib3VuZHMpOworICAgICAgICB0YXJnZXRlZFByZXZp
ZXcgPSBjcmVhdGVGYWxsYmFja1RhcmdldGVkUHJldmlldyhzZWxmLCBzZWxmLmNvbnRhaW5lckZv
ckNvbnRleHRNZW51SGludFByZXZpZXdzLCBfcG9zaXRpb25JbmZvcm1hdGlvbi5ib3VuZHMsIG5p
bCk7CiAKICAgICBbc2VsZiBfdXBkYXRlVGFyZ2V0ZWRQcmV2aWV3U2Nyb2xsVmlld1VzaW5nQ29u
dGFpbmVyU2Nyb2xsaW5nTm9kZUlEOl9wb3NpdGlvbkluZm9ybWF0aW9uLmNvbnRhaW5lclNjcm9s
bGluZ05vZGVJRF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wubW0KaW5kZXggMzBkMTU2NDNmYTdkMjQ4
MmU4ZjY5N2M0NWMyYTAzZWRhYmFjZmUyNS4uMWU2ODI1MTg2MjliYmQ4NWZjOGQ2NDcwYWFmYWU1
YTNlNjk1YzRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wubW0KQEAgLTMzLDYwICszMywyNDcgQEAK
ICNpbXBvcnQgIldLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIgogI2ltcG9ydCAiV0tXZWJWaWV3
UHJpdmF0ZUZvclRlc3RpbmcuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgotI2ltcG9ydCA8
VUlLaXQvVUlCYXJCdXR0b25JdGVtLmg+CiAjaW1wb3J0IDxVSUtpdC9VSURhdGVQaWNrZXIuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8YWxnb3JpdGht
PgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1AaW50ZXJmYWNlIFdLRGF0ZVRpbWVDb250
ZXh0TWVudVZpZXdDb250cm9sbGVyIDogVUlWaWV3Q29udHJvbGxlcgorQGNsYXNzIFdLRGF0ZVRp
bWVQaWNrZXJWaWV3Q29udHJvbGxlcjsKKworQHByb3RvY29sIFdLRGF0ZVRpbWVQaWNrZXJWaWV3
Q29udHJvbGxlckRlbGVnYXRlIDxOU09iamVjdD4KKy0gKHZvaWQpZGF0ZVRpbWVQaWNrZXJWaWV3
Q29udHJvbGxlckRpZENoYW5nZURhdGU6KFdLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciAq
KWRhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXI7CistICh2b2lkKWRhdGVUaW1lUGlja2VyVmll
d0NvbnRyb2xsZXJEaWRQcmVzc1Jlc2V0QnV0dG9uOihXS0RhdGVUaW1lUGlja2VyVmlld0NvbnRy
b2xsZXIgKilkYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyOworLSAodm9pZClkYXRlVGltZVBp
Y2tlclZpZXdDb250cm9sbGVyRGlkUHJlc3NEb25lQnV0dG9uOihXS0RhdGVUaW1lUGlja2VyVmll
d0NvbnRyb2xsZXIgKilkYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyOworCistIChCT09MKXNo
b3VsZEZvcmNlR3JlZ29yaWFuQ2FsZW5kYXI7CitAZW5kCisKK0BpbnRlcmZhY2UgV0tEYXRlVGlt
ZVBpY2tlclZpZXdDb250cm9sbGVyIDogVUlWaWV3Q29udHJvbGxlcgorLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoRGVsZWdhdGU6KGlkPFdLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlckRlbGVn
YXRlPilkZWxlZ2F0ZTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLRGF0ZVRpbWVQaWNrZXJW
aWV3Q29udHJvbGxlciB7CisgICAgQ0dTaXplIF9jb250ZW50U2l6ZTsKKworICAgIFJldGFpblB0
cjxVSURhdGVQaWNrZXI+IF9kYXRlUGlja2VyOworICAgIFdlYWtPYmpDUHRyPGlkIDxXS0RhdGVU
aW1lUGlja2VyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4+IF9kZWxlZ2F0ZTsKK30KKworc3RhdGlj
IGNvbnN0IENHRmxvYXQga0RhdGVUaW1lUGlja2VyQnV0dG9uRm9udFNpemUgPSAxNzsKK3N0YXRp
YyBjb25zdCBDR0Zsb2F0IGtEYXRlVGltZVBpY2tlclRvb2xiYXJIZWlnaHQgPSA0NDsKK3N0YXRp
YyBjb25zdCBDR0Zsb2F0IGtEYXRlVGltZVBpY2tlclNlcGFyYXRvckhlaWdodCA9IDE7CitzdGF0
aWMgY29uc3QgQ0dGbG9hdCBrRGF0ZVRpbWVQaWNrZXJWaWV3TWFyZ2luID0gMTY7CisKK3N0YXRp
YyBjb25zdCBDR0Zsb2F0IGtEYXRlVGltZVBpY2tlckRlZmF1bHRXaWR0aCA9IDMyMDsKK3N0YXRp
YyBjb25zdCBDR0Zsb2F0IGtEYXRlVGltZVBpY2tlclRpbWVDb250cm9sV2lkdGggPSAyMTg7Citz
dGF0aWMgY29uc3QgQ0dGbG9hdCBrRGF0ZVRpbWVQaWNrZXJUaW1lQ29udHJvbEhlaWdodCA9IDE3
MjsKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVsZWdhdGU6KGlkPFdLRGF0ZVRpbWVQaWNr
ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZQoreworICAgIGlmICghKHNlbGYgPSBb
c3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2RlbGVnYXRlID0gZGVs
ZWdhdGU7CisKKyAgICBfZGF0ZVBpY2tlciA9IGFkb3B0TlMoW1tVSURhdGVQaWNrZXIgYWxsb2Nd
IGluaXRdKTsKKyAgICBbX2RhdGVQaWNrZXIgYWRkVGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3Rv
cihkYXRlUGlja2VyQ2hhbmdlZDopIGZvckNvbnRyb2xFdmVudHM6VUlDb250cm9sRXZlbnRWYWx1
ZUNoYW5nZWRdOworICAgIFtfZGF0ZVBpY2tlciBzZXRUcmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFz
a0ludG9Db25zdHJhaW50czpOT107CisKKyAgICBpZiAoW19kZWxlZ2F0ZSBzaG91bGRGb3JjZUdy
ZWdvcmlhbkNhbGVuZGFyXSkKKyAgICAgICAgW19kYXRlUGlja2VyIHNldENhbGVuZGFyOltOU0Nh
bGVuZGFyIGNhbGVuZGFyV2l0aElkZW50aWZpZXI6TlNDYWxlbmRhcklkZW50aWZpZXJHcmVnb3Jp
YW5dXTsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXZpZXdEaWRMb2FkCit7Cisg
ICAgW3N1cGVyIHZpZXdEaWRMb2FkXTsKKworICAgIENHU2l6ZSBjb250ZW50U2l6ZSA9IHNlbGYu
cHJlZmVycmVkQ29udGVudFNpemU7CisKKyAgICBSZXRhaW5QdHI8VUlWaXN1YWxFZmZlY3RWaWV3
PiBiYWNrZ3JvdW5kVmlldyA9IGFkb3B0TlMoW1tVSVZpc3VhbEVmZmVjdFZpZXcgYWxsb2NdIGlu
aXRXaXRoRWZmZWN0OltVSUJsdXJFZmZlY3QgZWZmZWN0V2l0aFN0eWxlOlVJQmx1ckVmZmVjdFN0
eWxlU3lzdGVtTWF0ZXJpYWxdXSk7CisgICAgW2JhY2tncm91bmRWaWV3IHNldEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgY29udGVudFNpemUud2lkdGgsIGNvbnRlbnRTaXplLmhlaWdodCldOworICAg
IFtzZWxmLnZpZXcgYWRkU3VidmlldzpiYWNrZ3JvdW5kVmlldy5nZXQoKV07CisKKyAgICBbW2Jh
Y2tncm91bmRWaWV3IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3Ol9kYXRlUGlja2VyLmdldCgpXTsK
KworICAgIENHU2l6ZSBkYXRlUGlja2VyU2l6ZSA9IHNlbGYucHJlZmVycmVkRGF0ZVBpY2tlclNp
emU7CisgICAgVUlFZGdlSW5zZXRzIGRhdGVQaWNrZXJJbnNldHMgPSBbc2VsZiBkYXRlUGlja2Vy
SW5zZXRzXTsKKworICAgIFtOU0xheW91dENvbnN0cmFpbnQgYWN0aXZhdGVDb25zdHJhaW50czpA
WworICAgICAgICBbW19kYXRlUGlja2VyIHRvcEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9BbmNo
b3I6W2JhY2tncm91bmRWaWV3IGNvbnRlbnRWaWV3XS50b3BBbmNob3IgY29uc3RhbnQ6ZGF0ZVBp
Y2tlckluc2V0cy50b3BdLAorICAgICAgICBbW19kYXRlUGlja2VyIGxlYWRpbmdBbmNob3JdIGNv
bnN0cmFpbnRFcXVhbFRvQW5jaG9yOltiYWNrZ3JvdW5kVmlldyBjb250ZW50Vmlld10ubGVhZGlu
Z0FuY2hvciBjb25zdGFudDpkYXRlUGlja2VySW5zZXRzLmxlZnRdLAorICAgICAgICBbW19kYXRl
UGlja2VyIHdpZHRoQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50OmRhdGVQaWNrZXJT
aXplLndpZHRoXSwKKyAgICAgICAgW1tfZGF0ZVBpY2tlciBoZWlnaHRBbmNob3JdIGNvbnN0cmFp
bnRFcXVhbFRvQ29uc3RhbnQ6ZGF0ZVBpY2tlclNpemUuaGVpZ2h0XSwKKyAgICBdXTsKKworICAg
IFJldGFpblB0cjxVSVZpZXc+IHRvb2xiYXJWaWV3ID0gYWRvcHROUyhbW1VJVmlldyBhbGxvY10g
aW5pdF0pOworICAgIFt0b29sYmFyVmlldyBzZXRUcmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFza0lu
dG9Db25zdHJhaW50czpOT107CisgICAgW1tiYWNrZ3JvdW5kVmlldyBjb250ZW50Vmlld10gYWRk
U3Vidmlldzp0b29sYmFyVmlldy5nZXQoKV07CisKKyAgICBbTlNMYXlvdXRDb25zdHJhaW50IGFj
dGl2YXRlQ29uc3RyYWludHM6QFsKKyAgICAgICAgW1t0b29sYmFyVmlldyBib3R0b21BbmNob3Jd
IGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltiYWNrZ3JvdW5kVmlldyBjb250ZW50Vmlld10uYm90
dG9tQW5jaG9yXSwKKyAgICAgICAgW1t0b29sYmFyVmlldyBsZWFkaW5nQW5jaG9yXSBjb25zdHJh
aW50RXF1YWxUb0FuY2hvcjpbYmFja2dyb3VuZFZpZXcgY29udGVudFZpZXddLmxlYWRpbmdBbmNo
b3JdLAorICAgICAgICBbW3Rvb2xiYXJWaWV3IGhlaWdodEFuY2hvcl0gY29uc3RyYWludEVxdWFs
VG9Db25zdGFudDprRGF0ZVRpbWVQaWNrZXJUb29sYmFySGVpZ2h0XSwKKyAgICAgICAgW1t0b29s
YmFyVmlldyB3aWR0aEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6W2JhY2tncm91bmRW
aWV3IGNvbnRlbnRWaWV3XS53aWR0aEFuY2hvcl0sCisgICAgXV07CisKKyAgICBSZXRhaW5QdHI8
VUlWaWV3PiBzZXBhcmF0b3JWaWV3ID0gYWRvcHROUyhbW1VJVmlldyBhbGxvY10gaW5pdF0pOwor
ICAgIFtzZXBhcmF0b3JWaWV3IHNldEJhY2tncm91bmRDb2xvcjpVSUNvbG9yLnNlcGFyYXRvckNv
bG9yXTsKKworICAgIE5TU3RyaW5nICpyZXNldFN0cmluZyA9IFdFQl9VSV9TVFJJTkdfS0VZKCJS
ZXNldCIsICJSZXNldCBCdXR0b24gRGF0ZS9UaW1lIENvbnRleHQgTWVudSIsICJSZXNldCBidXR0
b24gaW4gZGF0ZSBpbnB1dCBjb250ZXh0IG1lbnUiKTsKKyAgICBVSUJ1dHRvbiAqcmVzZXRCdXR0
b24gPSBbVUlCdXR0b24gYnV0dG9uV2l0aFR5cGU6VUlCdXR0b25UeXBlU3lzdGVtXTsKKyAgICBy
ZXNldEJ1dHRvbi50aXRsZUxhYmVsLmZvbnQgPSBbVUlGb250IHN5c3RlbUZvbnRPZlNpemU6a0Rh
dGVUaW1lUGlja2VyQnV0dG9uRm9udFNpemVdOworICAgIFtyZXNldEJ1dHRvbiBzZXRUaXRsZTpy
ZXNldFN0cmluZyBmb3JTdGF0ZTpVSUNvbnRyb2xTdGF0ZU5vcm1hbF07CisgICAgW3Jlc2V0QnV0
dG9uIGFkZFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IocmVzZXRCdXR0b25QcmVzc2VkOikg
Zm9yQ29udHJvbEV2ZW50czpVSUNvbnRyb2xFdmVudFRvdWNoVXBJbnNpZGVdOworCisgICAgTlNT
dHJpbmcgKmRvbmVTdHJpbmcgPSBXZWJDb3JlOjpmb3JtQ29udHJvbERvbmVCdXR0b25UaXRsZSgp
OworICAgIFVJQnV0dG9uICpkb25lQnV0dG9uID0gW1VJQnV0dG9uIGJ1dHRvbldpdGhUeXBlOlVJ
QnV0dG9uVHlwZVN5c3RlbV07CisgICAgZG9uZUJ1dHRvbi50aXRsZUxhYmVsLmZvbnQgPSBbVUlG
b250IGJvbGRTeXN0ZW1Gb250T2ZTaXplOmtEYXRlVGltZVBpY2tlckJ1dHRvbkZvbnRTaXplXTsK
KyAgICBbZG9uZUJ1dHRvbiBzZXRUaXRsZTpkb25lU3RyaW5nIGZvclN0YXRlOlVJQ29udHJvbFN0
YXRlTm9ybWFsXTsKKyAgICBbZG9uZUJ1dHRvbiBhZGRUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVj
dG9yKGRvbmVCdXR0b25QcmVzc2VkOikgZm9yQ29udHJvbEV2ZW50czpVSUNvbnRyb2xFdmVudFRv
dWNoVXBJbnNpZGVdOworCisgICAgZm9yIChVSVZpZXcgKnN1YnZpZXcgaW4gQFtzZXBhcmF0b3JW
aWV3LmdldCgpLCByZXNldEJ1dHRvbiwgZG9uZUJ1dHRvbl0pIHsKKyAgICAgICAgc3Vidmlldy50
cmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFza0ludG9Db25zdHJhaW50cyA9IE5POworICAgICAgICBb
dG9vbGJhclZpZXcgYWRkU3VidmlldzpzdWJ2aWV3XTsKKyAgICB9CisKKyAgICBbTlNMYXlvdXRD
b25zdHJhaW50IGFjdGl2YXRlQ29uc3RyYWludHM6QFsKKyAgICAgICAgW1tzZXBhcmF0b3JWaWV3
IHRvcEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6W3Rvb2xiYXJWaWV3IHRvcEFuY2hv
cl1dLAorICAgICAgICBbW3NlcGFyYXRvclZpZXcgbGVhZGluZ0FuY2hvcl0gY29uc3RyYWludEVx
dWFsVG9BbmNob3I6W3Rvb2xiYXJWaWV3IGxlYWRpbmdBbmNob3JdXSwKKyAgICAgICAgW1tzZXBh
cmF0b3JWaWV3IGhlaWdodEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDprRGF0ZVRp
bWVQaWNrZXJTZXBhcmF0b3JIZWlnaHRdLAorICAgICAgICBbW3NlcGFyYXRvclZpZXcgd2lkdGhB
bmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOlt0b29sYmFyVmlldyB3aWR0aEFuY2hvcl1d
LAorICAgIF1dOworCisgICAgW05TTGF5b3V0Q29uc3RyYWludCBhY3RpdmF0ZUNvbnN0cmFpbnRz
OkBbCisgICAgICAgIFtyZXNldEJ1dHRvbi5sZWFkaW5nQW5jaG9yIGNvbnN0cmFpbnRFcXVhbFRv
QW5jaG9yOlt0b29sYmFyVmlldyBsZWFkaW5nQW5jaG9yXSBjb25zdGFudDprRGF0ZVRpbWVQaWNr
ZXJWaWV3TWFyZ2luXSwKKyAgICAgICAgW3Jlc2V0QnV0dG9uLnRvcEFuY2hvciBjb25zdHJhaW50
RXF1YWxUb0FuY2hvcjpbdG9vbGJhclZpZXcgdG9wQW5jaG9yXV0sCisgICAgICAgIFtyZXNldEJ1
dHRvbi5ib3R0b21BbmNob3IgY29uc3RyYWludEVxdWFsVG9BbmNob3I6W3Rvb2xiYXJWaWV3IGJv
dHRvbUFuY2hvcl1dLAorICAgIF1dOworCisgICAgW05TTGF5b3V0Q29uc3RyYWludCBhY3RpdmF0
ZUNvbnN0cmFpbnRzOkBbCisgICAgICAgIFtkb25lQnV0dG9uLnRyYWlsaW5nQW5jaG9yIGNvbnN0
cmFpbnRFcXVhbFRvQW5jaG9yOlt0b29sYmFyVmlldyB0cmFpbGluZ0FuY2hvcl0gY29uc3RhbnQ6
LWtEYXRlVGltZVBpY2tlclZpZXdNYXJnaW5dLAorICAgICAgICBbZG9uZUJ1dHRvbi50b3BBbmNo
b3IgY29uc3RyYWludEVxdWFsVG9BbmNob3I6W3Rvb2xiYXJWaWV3IHRvcEFuY2hvcl1dLAorICAg
ICAgICBbZG9uZUJ1dHRvbi5ib3R0b21BbmNob3IgY29uc3RyYWludEVxdWFsVG9BbmNob3I6W3Rv
b2xiYXJWaWV3IGJvdHRvbUFuY2hvcl1dLAorICAgIF1dOworfQorCistICh2b2lkKWRhdGVQaWNr
ZXJDaGFuZ2VkOihpZClzZW5kZXIKK3sKKyAgICBbX2RlbGVnYXRlIGRhdGVUaW1lUGlja2VyVmll
d0NvbnRyb2xsZXJEaWRDaGFuZ2VEYXRlOnNlbGZdOworfQorCistICh2b2lkKXJlc2V0QnV0dG9u
UHJlc3NlZDooaWQpc2VuZGVyCit7CisgICAgW19kZWxlZ2F0ZSBkYXRlVGltZVBpY2tlclZpZXdD
b250cm9sbGVyRGlkUHJlc3NSZXNldEJ1dHRvbjpzZWxmXTsKK30KKworLSAodm9pZClkb25lQnV0
dG9uUHJlc3NlZDooaWQpc2VuZGVyCit7CisgICAgW19kZWxlZ2F0ZSBkYXRlVGltZVBpY2tlclZp
ZXdDb250cm9sbGVyRGlkUHJlc3NEb25lQnV0dG9uOnNlbGZdOworfQorCistIChVSUVkZ2VJbnNl
dHMpZGF0ZVBpY2tlckluc2V0cworeworICAgIFVJRWRnZUluc2V0cyBleHBlY3RlZEluc2V0cyA9
IFVJRWRnZUluc2V0c01ha2Uoa0RhdGVUaW1lUGlja2VyVmlld01hcmdpbiwga0RhdGVUaW1lUGlj
a2VyVmlld01hcmdpbiwga0RhdGVUaW1lUGlja2VyVmlld01hcmdpbiwga0RhdGVUaW1lUGlja2Vy
Vmlld01hcmdpbik7CisgICAgVUlFZGdlSW5zZXRzIGFwcGxpZWRJbnNldHMgPSBbX2RhdGVQaWNr
ZXIgX2FwcGxpZWRJbnNldHNUb0VkZ2VPZkNvbnRlbnRdOworICAgIHJldHVybiBVSUVkZ2VJbnNl
dHNTdWJ0cmFjdChleHBlY3RlZEluc2V0cywgYXBwbGllZEluc2V0cywgVUlSZWN0RWRnZUFsbCk7
Cit9CisKKy0gKENHU2l6ZSlwcmVmZXJyZWREYXRlUGlja2VyU2l6ZQoreworICAgIENHU2l6ZSBm
aXR0aW5nU2l6ZSA9IFVJTGF5b3V0Rml0dGluZ0NvbXByZXNzZWRTaXplOworICAgIFVJTGF5b3V0
UHJpb3JpdHkgaG9yaXpvbnRhbFByaW9yaXR5ID0gVUlMYXlvdXRQcmlvcml0eUZpdHRpbmdTaXpl
TGV2ZWw7CisgICAgVUlMYXlvdXRQcmlvcml0eSB2ZXJ0aWNhbFByaW9yaXR5ID0gVUlMYXlvdXRQ
cmlvcml0eUZpdHRpbmdTaXplTGV2ZWw7CisgICAgaWYgKFtfZGF0ZVBpY2tlciBkYXRlUGlja2Vy
TW9kZV0gIT0gVUlEYXRlUGlja2VyTW9kZVRpbWUpCisgICAgICAgIGZpdHRpbmdTaXplLndpZHRo
ID0ga0RhdGVUaW1lUGlja2VyRGVmYXVsdFdpZHRoOworICAgIGVsc2UgeworICAgICAgICBmaXR0
aW5nU2l6ZS53aWR0aCA9IGtEYXRlVGltZVBpY2tlclRpbWVDb250cm9sV2lkdGg7CisgICAgICAg
IGZpdHRpbmdTaXplLmhlaWdodCA9IGtEYXRlVGltZVBpY2tlclRpbWVDb250cm9sSGVpZ2h0Owor
ICAgICAgICBob3Jpem9udGFsUHJpb3JpdHkgPSBVSUxheW91dFByaW9yaXR5UmVxdWlyZWQ7Cisg
ICAgICAgIHZlcnRpY2FsUHJpb3JpdHkgPSBVSUxheW91dFByaW9yaXR5UmVxdWlyZWQ7CisgICAg
fQorCisgICAgQ0dTaXplIGxheW91dFNpemUgPSBbX2RhdGVQaWNrZXIgc3lzdGVtTGF5b3V0U2l6
ZUZpdHRpbmdTaXplOmZpdHRpbmdTaXplIHdpdGhIb3Jpem9udGFsRml0dGluZ1ByaW9yaXR5Omhv
cml6b250YWxQcmlvcml0eSB2ZXJ0aWNhbEZpdHRpbmdQcmlvcml0eTp2ZXJ0aWNhbFByaW9yaXR5
XTsKKyAgICByZXR1cm4gbGF5b3V0U2l6ZTsKK30KKworLSAoQ0dTaXplKXByZWZlcnJlZENvbnRl
bnRTaXplCit7CisgICAgLy8gQ2FjaGUgdGhlIGNvbnRlbnQgc2l6ZSB0byB3b3JrYXJvdW5kIHJk
YXI6Ly83NDc0OTk0Mi4KKyAgICBpZiAoQ0dTaXplRXF1YWxUb1NpemUoX2NvbnRlbnRTaXplLCBD
R1NpemVaZXJvKSkgeworICAgICAgICBDR1NpemUgZGF0ZVBpY2tlclNpemUgPSBbc2VsZiBwcmVm
ZXJyZWREYXRlUGlja2VyU2l6ZV07CisgICAgICAgIFVJRWRnZUluc2V0cyBkYXRlUGlja2VySW5z
ZXRzID0gW3NlbGYgZGF0ZVBpY2tlckluc2V0c107CisKKyAgICAgICAgX2NvbnRlbnRTaXplID0g
Q0dTaXplTWFrZShkYXRlUGlja2VyU2l6ZS53aWR0aCArIGRhdGVQaWNrZXJJbnNldHMubGVmdCAr
IGRhdGVQaWNrZXJJbnNldHMucmlnaHQsIGRhdGVQaWNrZXJTaXplLmhlaWdodCArIGtEYXRlVGlt
ZVBpY2tlclRvb2xiYXJIZWlnaHQgKyBkYXRlUGlja2VySW5zZXRzLnRvcCArIGRhdGVQaWNrZXJJ
bnNldHMuYm90dG9tKTsKKyAgICB9CisKKyAgICByZXR1cm4gX2NvbnRlbnRTaXplOworfQorCist
IChOU0RhdGUgKilkYXRlCit7CisgICAgcmV0dXJuIFtfZGF0ZVBpY2tlciBkYXRlXTsKK30KKwor
LSAodm9pZClzZXREYXRlOihOU0RhdGUgKilkYXRlCit7CisgICAgW19kYXRlUGlja2VyIHNldERh
dGU6ZGF0ZV07Cit9CisKKy0gKHZvaWQpc2V0RGF0ZVBpY2tlck1vZGU6KFVJRGF0ZVBpY2tlck1v
ZGUpbW9kZQoreworICAgIFtfZGF0ZVBpY2tlciBzZXREYXRlUGlja2VyTW9kZTptb2RlXTsKKwor
I2lmIEhBVkUoVUlEQVRFUElDS0VSX1NUWUxFKQorICAgIGlmIChtb2RlID09IFVJRGF0ZVBpY2tl
ck1vZGVUaW1lIHx8IG1vZGUgPT0gKFVJRGF0ZVBpY2tlck1vZGUpVUlEYXRlUGlja2VyTW9kZVll
YXJBbmRNb250aCkKKyAgICAgICAgW19kYXRlUGlja2VyIHNldFByZWZlcnJlZERhdGVQaWNrZXJT
dHlsZTpVSURhdGVQaWNrZXJTdHlsZVdoZWVsc107CisgICAgZWxzZQorICAgICAgICBbX2RhdGVQ
aWNrZXIgc2V0UHJlZmVycmVkRGF0ZVBpY2tlclN0eWxlOlVJRGF0ZVBpY2tlclN0eWxlSW5saW5l
XTsKKyNlbmRpZgorfQorCistIChOU1RpbWVab25lICopdGltZVpvbmUKK3sKKyAgICByZXR1cm4g
W19kYXRlUGlja2VyIHRpbWVab25lXTsKK30KKworLSAodm9pZClzZXRUaW1lWm9uZTooTlNUaW1l
Wm9uZSAqKXRpbWVab25lCit7CisgICAgcmV0dXJuIFtfZGF0ZVBpY2tlciBzZXRUaW1lWm9uZTp0
aW1lWm9uZV07Cit9CisKKy0gKE5TQ2FsZW5kYXIgKiljYWxlbmRhcgoreworICAgIHJldHVybiBb
X2RhdGVQaWNrZXIgY2FsZW5kYXJdOworfQorCiBAZW5kCiAKIEBpbnRlcmZhY2UgV0tEYXRlVGlt
ZVBpY2tlciA6IE5TT2JqZWN0PFdLRm9ybUNvbnRyb2wKICNpZiBVU0UoVUlDT05URVhUTUVOVSkK
ICwgVUlDb250ZXh0TWVudUludGVyYWN0aW9uRGVsZWdhdGUKICNlbmRpZgorLCBXS0RhdGVUaW1l
UGlja2VyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZQogPiB7Ci0gICAgUmV0YWluUHRyPFVJRGF0ZVBp
Y2tlcj4gX2RhdGVQaWNrZXI7CiAgICAgTlNTdHJpbmcgKl9mb3JtYXRTdHJpbmc7CiAgICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBfaW5pdGlhbFZhbHVlOwogICAgIE5TVGltZUludGVydmFsIF9pbml0
aWFsVmFsdWVBc051bWJlcjsKICAgICBCT09MIF9zaG91bGRSZW1vdmVUaW1lWm9uZUluZm9ybWF0
aW9uOwotICAgIEJPT0wgX2lzVGltZUlucHV0OwogICAgIFdLQ29udGVudFZpZXcgKl92aWV3Owog
ICAgIENHUG9pbnQgX2ludGVyYWN0aW9uUG9pbnQ7Ci0gICAgUmV0YWluUHRyPFdLRGF0ZVRpbWVD
b250ZXh0TWVudVZpZXdDb250cm9sbGVyPiBfdmlld0NvbnRyb2xsZXI7CiAjaWYgVVNFKFVJQ09O
VEVYVE1FTlUpCiAgICAgUmV0YWluUHRyPFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbj4gX2RhdGVU
aW1lQ29udGV4dE1lbnVJbnRlcmFjdGlvbjsKICNlbmRpZgotICAgIEJPT0wgX3ByZXNlbnRpbmc7
Ci0gICAgQk9PTCBfcHJlc2VydmluZ0ZvY3VzOworICAgIFJldGFpblB0cjxXS0RhdGVUaW1lUGlj
a2VyVmlld0NvbnRyb2xsZXI+IF9kYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyOwogfQorCiAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldyBkYXRlUGlj
a2VyTW9kZTooVUlEYXRlUGlja2VyTW9kZSltb2RlOwotLSAoV0tEYXRlVGltZUNvbnRleHRNZW51
Vmlld0NvbnRyb2xsZXIgKil2aWV3Q29udHJvbGxlcjsKKwogQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBOU1N0cmluZyAqY2FsZW5kYXJUeXBlOwogQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBkb3VibGUgaG91cjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
ZG91YmxlIG1pbnV0ZTsKIC0gKHZvaWQpc2V0SG91cjooTlNJbnRlZ2VyKWhvdXIgbWludXRlOihO
U0ludGVnZXIpbWludXRlOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tEYXRlVGltZUNvbnRl
eHRNZW51Vmlld0NvbnRyb2xsZXIKLQotLSAoQ0dTaXplKXByZWZlcnJlZENvbnRlbnRTaXplCi17
Ci0gICAgLy8gRklYTUU6IFdvcmthcm91bmQsIHNob3VsZCBiZSBhYmxlIHRvIGJlIHJlYWRkcmVz
c2VkIGFmdGVyIDxyZGFyOi8vcHJvYmxlbS82NDE0MzUzND4KLSAgICBVSVZpZXcgKnZpZXcgPSBz
ZWxmLnZpZXcuc3Vidmlld3NbMF07Ci0gICAgaWYgKFVJRWRnZUluc2V0c0VxdWFsVG9FZGdlSW5z
ZXRzKHZpZXcubGF5b3V0TWFyZ2lucywgVUlFZGdlSW5zZXRzWmVybykpIHsKLSAgICAgICAgdmll
dy50cmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFza0ludG9Db25zdHJhaW50cyA9IE5POwotICAgICAg
ICBbdmlldyBsYXlvdXRJZk5lZWRlZF07Ci0gICAgICAgIHZpZXcudHJhbnNsYXRlc0F1dG9yZXNp
emluZ01hc2tJbnRvQ29uc3RyYWludHMgPSBZRVM7Ci0gICAgICAgIHZpZXcubGF5b3V0TWFyZ2lu
cyA9IFVJRWRnZUluc2V0c01ha2UoMTYsIDE2LCAxNiwgMTYpOwotICAgIH0KLSAgICBhdXRvIHNp
emUgPSBbdmlldyBzeXN0ZW1MYXlvdXRTaXplRml0dGluZ1NpemU6VUlMYXlvdXRGaXR0aW5nQ29t
cHJlc3NlZFNpemVdOwotICAgIAotICAgIHNpemUud2lkdGggPSBzdGQ6Om1heDxDR0Zsb2F0Pihz
aXplLndpZHRoLCAyNTAuMCk7Ci0gICAgcmV0dXJuIHNpemU7Ci19CiAKIEBlbmQKIApAQCAtOTcs
MjcgKzI4NCwxNyBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBrTW9udGhGb3JtYXRTdHJpbmcg
PSBAInl5eXktTU0iOyAvLyAiMjAxMS0wMSIuCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBrVGlt
ZUZvcm1hdFN0cmluZyA9IEAiSEg6bW0iOyAvLyAiMTM6NDUiLgogc3RhdGljIGNvbnN0IE5TVGlt
ZUludGVydmFsIGtNaWxsaXNlY29uZHNQZXJTZWNvbmQgPSAxMDAwOwogCi0jaWYgSEFWRShVSURB
VEVQSUNLRVJfU1RZTEUpCi0tIChVSURhdGVQaWNrZXJTdHlsZSlkYXRlUGlja2VyU3R5bGUKLXsK
LSAgICBzd2l0Y2ggKF92aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUp
IHsKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpNb250aDoKLSAgICBjYXNlIFdlYktpdDo6
SW5wdXRUeXBlOjpUaW1lOgotICAgICAgICByZXR1cm4gVUlEYXRlUGlja2VyU3R5bGVXaGVlbHM7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFVJRGF0ZVBpY2tlclN0eWxlSW5saW5lOwot
ICAgIH0KLX0KLSNlbmRpZgorc3RhdGljIGNvbnN0IENHRmxvYXQga0RhdGVUaW1lUGlja2VyQ29u
dHJvbE1hcmdpbiA9IDY7CiAKIC0gKGlkKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZp
ZXcgZGF0ZVBpY2tlck1vZGU6KFVJRGF0ZVBpY2tlck1vZGUpbW9kZQogewogICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOworCiAgICAgX3ZpZXcgPSB2
aWV3OwogICAgIF9pbnRlcmFjdGlvblBvaW50ID0gW192aWV3IGxhc3RJbnRlcmFjdGlvbkxvY2F0
aW9uXTsKICAgICBfc2hvdWxkUmVtb3ZlVGltZVpvbmVJbmZvcm1hdGlvbiA9IE5POwotICAgIF9p
c1RpbWVJbnB1dCA9IE5POworCiAgICAgc3dpdGNoICh2aWV3LmZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24uZWxlbWVudFR5cGUpIHsKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlOgog
ICAgICAgICBfZm9ybWF0U3RyaW5nID0ga0RhdGVGb3JtYXRTdHJpbmc7CkBAIC0xMjcsNyArMzA0
LDYgQEAgc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIGtNaWxsaXNlY29uZHNQZXJTZWNvbmQg
PSAxMDAwOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUaW1l
OgogICAgICAgICBfZm9ybWF0U3RyaW5nID0ga1RpbWVGb3JtYXRTdHJpbmc7Ci0gICAgICAgIF9p
c1RpbWVJbnB1dCA9IFlFUzsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0
VHlwZTo6RGF0ZVRpbWVMb2NhbDoKICAgICAgICAgX3Nob3VsZFJlbW92ZVRpbWVab25lSW5mb3Jt
YXRpb24gPSBZRVM7CkBAIC0xMzUsMjUgKzMxMSw3OSBAQCBzdGF0aWMgY29uc3QgTlNUaW1lSW50
ZXJ2YWwga01pbGxpc2Vjb25kc1BlclNlY29uZCA9IDEwMDA7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIAotICAgIF9kYXRlUGlja2VyID0gYWRvcHROUyhbW1VJRGF0
ZVBpY2tlciBhbGxvY10gaW5pdF0pOwogCi0gICAgW19kYXRlUGlja2VyIHNldERhdGVQaWNrZXJN
b2RlOm1vZGVdOwotICAgIFtfZGF0ZVBpY2tlciBzZXRIaWRkZW46Tk9dOwotICAgIAotI2lmIEhB
VkUoVUlEQVRFUElDS0VSX1NUWUxFKQotICAgIFtfZGF0ZVBpY2tlciBzZXRQcmVmZXJyZWREYXRl
UGlja2VyU3R5bGU6W3NlbGYgZGF0ZVBpY2tlclN0eWxlXV07Ci0jZW5kaWYKLSAgICBpZiAoW3Nl
bGYgc2hvdWxkUHJlc2VudEdyZWdvcmlhbkNhbGVuZGFyOnZpZXcuZm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbl0pCi0gICAgICAgIF9kYXRlUGlja2VyLmdldCgpLmNhbGVuZGFyID0gW05TQ2FsZW5k
YXIgY2FsZW5kYXJXaXRoSWRlbnRpZmllcjpOU0NhbGVuZGFySWRlbnRpZmllckdyZWdvcmlhbl07
Ci0gICAgCi0gICAgW19kYXRlUGlja2VyIGFkZFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3Io
X2RhdGVDaGFuZ2VIYW5kbGVyOikgZm9yQ29udHJvbEV2ZW50czpVSUNvbnRyb2xFdmVudFZhbHVl
Q2hhbmdlZF07Ci0gICAgCisgICAgX2RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgPSBhZG9w
dE5TKFtbV0tEYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aERlbGVn
YXRlOnNlbGZdKTsKKyAgICBbX2RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgc2V0RGF0ZVBp
Y2tlck1vZGU6bW9kZV07CisKICAgICByZXR1cm4gc2VsZjsKIH0KIAogI2lmIFVTRShVSUNPTlRF
WFRNRU5VKQogCistIChVSUVkZ2VJbnNldHMpX3ByZWZlcnJlZEVkZ2VJbnNldHNGb3JEYXRlVGlt
ZVBpY2tlcgoreworICAgIENHU2l6ZSBwaWNrZXJTaXplID0gW19kYXRlVGltZVBpY2tlclZpZXdD
b250cm9sbGVyIHByZWZlcnJlZENvbnRlbnRTaXplXTsKKyAgICBDR1JlY3Qgd2luZG93Qm91bmRz
ID0gX3ZpZXcudGV4dEVmZmVjdHNXaW5kb3cuYm91bmRzOworICAgIENHUmVjdCBlbGVtZW50RnJh
bWVJbldpbmRvd0Nvb3JkaW5hdGVzID0gW192aWV3IGNvbnZlcnRSZWN0Ol92aWV3LmZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb24uaW50ZXJhY3Rpb25SZWN0IHRvVmlldzpuaWxdOworCisgICAgLy8g
QXR0ZW1wdCB0byBwcmVzZW50IHRoZSBkYXRlIHBpY2tlciBpbiBhIHdheSB0aGF0IGRvZXMgbm90
IG9ic2N1cmUgdGhlIGVsZW1lbnQuCisKKyAgICBDR0Zsb2F0IHRvcEluc2V0Rm9yQm90dG9tQWxp
Z25tZW50ID0gQ0dSZWN0R2V0TWF4WShlbGVtZW50RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzKSAr
IGtEYXRlVGltZVBpY2tlckNvbnRyb2xNYXJnaW47CisgICAgQ0dGbG9hdCByaWdodEluc2V0Rm9y
UmlnaHRBbGlnbm1lbnQgPSBDR1JlY3RHZXRXaWR0aCh3aW5kb3dCb3VuZHMpIC0gQ0dSZWN0R2V0
TWF4WChlbGVtZW50RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzKTsKKworICAgIEJPT0wgY2FuUHJl
c2VudEJlbG93RWxlbWVudCA9ICh0b3BJbnNldEZvckJvdHRvbUFsaWdubWVudCArIHBpY2tlclNp
emUuaGVpZ2h0KSA8IENHUmVjdEdldEhlaWdodCh3aW5kb3dCb3VuZHMpOworICAgIEJPT0wgY2Fu
QWxpZ25Ub0VsZW1lbnRSaWdodCA9IChyaWdodEluc2V0Rm9yUmlnaHRBbGlnbm1lbnQgKyBwaWNr
ZXJTaXplLndpZHRoKSA8IENHUmVjdEdldFdpZHRoKHdpbmRvd0JvdW5kcyk7CisKKyAgICAvLyBU
cnkgdG8gcHJlc2VudCB0aGUgcGlja2VyIGZyb20gdGhlIGJvdHRvbSByaWdodCBvZiB0aGUgZWxl
bWVudC4KKyAgICBpZiAoY2FuUHJlc2VudEJlbG93RWxlbWVudCAmJiBjYW5BbGlnblRvRWxlbWVu
dFJpZ2h0KQorICAgICAgICByZXR1cm4gVUlFZGdlSW5zZXRzTWFrZSh0b3BJbnNldEZvckJvdHRv
bUFsaWdubWVudCwgMCwgMCwgcmlnaHRJbnNldEZvclJpZ2h0QWxpZ25tZW50KTsKKworICAgIENH
RmxvYXQgbGVmdEluc2V0Rm9yTGVmdEFsaWdubWVudCA9IENHUmVjdEdldE1pblgoZWxlbWVudEZy
YW1lSW5XaW5kb3dDb29yZGluYXRlcyk7CisKKyAgICBCT09MIGNhbkFsaWduVG9FbGVtZW50TGVm
dCA9IChsZWZ0SW5zZXRGb3JMZWZ0QWxpZ25tZW50ICsgcGlja2VyU2l6ZS53aWR0aCkgPD0gQ0dS
ZWN0R2V0V2lkdGgod2luZG93Qm91bmRzKTsKKworICAgIC8vIFRyeSB0byBwcmVzZW50IHRoZSBw
aWNrZXIgZnJvbSB0aGUgYm90dG9tIGxlZnQgb2YgdGhlIGVsZW1lbnQuCisgICAgaWYgKGNhblBy
ZXNlbnRCZWxvd0VsZW1lbnQgJiYgY2FuQWxpZ25Ub0VsZW1lbnRMZWZ0KQorICAgICAgICByZXR1
cm4gVUlFZGdlSW5zZXRzTWFrZSh0b3BJbnNldEZvckJvdHRvbUFsaWdubWVudCwgbGVmdEluc2V0
Rm9yTGVmdEFsaWdubWVudCwgMCwgMCk7CisKKyAgICAvLyBUcnkgdG8gcHJlc2VudCB0aGUgcGlj
a2VyIHVuZGVybmVhdGggdGhlIGVsZW1lbnQuCisgICAgaWYgKGNhblByZXNlbnRCZWxvd0VsZW1l
bnQpCisgICAgICAgIHJldHVybiBVSUVkZ2VJbnNldHNNYWtlKHRvcEluc2V0Rm9yQm90dG9tQWxp
Z25tZW50LCAwLCAwLCAwKTsKKworICAgIENHRmxvYXQgYm90dG9tSW5zZXRGb3JUb3BBbGlnbm1l
bnQgPSBDR1JlY3RHZXRIZWlnaHQod2luZG93Qm91bmRzKSAtIENHUmVjdEdldE1pblkoZWxlbWVu
dEZyYW1lSW5XaW5kb3dDb29yZGluYXRlcykgKyBrRGF0ZVRpbWVQaWNrZXJDb250cm9sTWFyZ2lu
OworCisgICAgQk9PTCBjYW5QcmVzZW50QWJvdmVFbGVtZW50ID0gKGJvdHRvbUluc2V0Rm9yVG9w
QWxpZ25tZW50ICsgcGlja2VyU2l6ZS5oZWlnaHQpIDwgQ0dSZWN0R2V0SGVpZ2h0KHdpbmRvd0Jv
dW5kcyk7CisKKyAgICAvLyBUcnkgdG8gcHJlc2VudCB0aGUgcGlja2VyIGZyb20gdGhlIHRvcCBy
aWdodCBvZiB0aGUgZWxlbWVudC4KKyAgICBpZiAoY2FuUHJlc2VudEFib3ZlRWxlbWVudCAmJiBj
YW5BbGlnblRvRWxlbWVudFJpZ2h0KQorICAgICAgICByZXR1cm4gVUlFZGdlSW5zZXRzTWFrZSgw
LCAwLCBib3R0b21JbnNldEZvclRvcEFsaWdubWVudCwgcmlnaHRJbnNldEZvclJpZ2h0QWxpZ25t
ZW50KTsKKworICAgIC8vIFRyeSB0byBwcmVzZW50IHRoZSBwaWNrZXIgZnJvbSB0aGUgdG9wIGxl
ZnQgb2YgdGhlIGVsZW1lbnQuCisgICAgaWYgKGNhblByZXNlbnRBYm92ZUVsZW1lbnQgJiYgY2Fu
QWxpZ25Ub0VsZW1lbnRMZWZ0KQorICAgICAgICByZXR1cm4gVUlFZGdlSW5zZXRzTWFrZSgwLCBs
ZWZ0SW5zZXRGb3JMZWZ0QWxpZ25tZW50LCBib3R0b21JbnNldEZvclRvcEFsaWdubWVudCwgMCk7
CisKKyAgICAvLyBUcnkgdG8gcHJlc2VudCB0aGUgcGlja2VyIGFib3ZlIHRoZSBlbGVtZW50Lgor
ICAgIGlmIChjYW5QcmVzZW50QWJvdmVFbGVtZW50KQorICAgICAgICByZXR1cm4gVUlFZGdlSW5z
ZXRzTWFrZSgwLCAwLCBib3R0b21JbnNldEZvclRvcEFsaWdubWVudCwgMCk7CisKKyAgICBDR0Zs
b2F0IHJpZ2h0SW5zZXRGb3JQcmVzZW50aW5nQmVzaWRlRWxlbWVudExlZnQgPSBDR1JlY3RHZXRX
aWR0aCh3aW5kb3dCb3VuZHMpIC0gQ0dSZWN0R2V0TWluWChlbGVtZW50RnJhbWVJbldpbmRvd0Nv
b3JkaW5hdGVzKSArIGtEYXRlVGltZVBpY2tlckNvbnRyb2xNYXJnaW47CisgICAgQk9PTCBjYW5Q
cmVzZW50QmVzaWRlRWxlbWVudExlZnQgPSAocmlnaHRJbnNldEZvclByZXNlbnRpbmdCZXNpZGVF
bGVtZW50TGVmdCArIHBpY2tlclNpemUud2lkdGgpIDwgQ0dSZWN0R2V0V2lkdGgod2luZG93Qm91
bmRzKTsKKworICAgIC8vIFRyeSB0byBwcmVzZW50IHRoZSBwaWNrZXIgdG8gdGhlIGxlZnQgb2Yg
dGhlIGVsZW1lbnQuCisgICAgaWYgKGNhblByZXNlbnRCZXNpZGVFbGVtZW50TGVmdCkKKyAgICAg
ICAgcmV0dXJuIFVJRWRnZUluc2V0c01ha2UoMCwgMCwgMCwgcmlnaHRJbnNldEZvclByZXNlbnRp
bmdCZXNpZGVFbGVtZW50TGVmdCk7CisKKyAgICBDR0Zsb2F0IGxlZnRJbnNldEZvclByZXNlbnRp
bmdCZXNpZGVFbGVtZW50UmlnaHQgPSBDR1JlY3RHZXRNYXhYKGVsZW1lbnRGcmFtZUluV2luZG93
Q29vcmRpbmF0ZXMpICsga0RhdGVUaW1lUGlja2VyQ29udHJvbE1hcmdpbjsKKyAgICBCT09MIGNh
blByZXNlbnRCZXNpZGVFbGVtZW50UmlnaHQgPSAobGVmdEluc2V0Rm9yUHJlc2VudGluZ0Jlc2lk
ZUVsZW1lbnRSaWdodCArIHBpY2tlclNpemUud2lkdGgpIDwgQ0dSZWN0R2V0V2lkdGgod2luZG93
Qm91bmRzKTsKKworICAgIC8vIFRyeSB0byBwcmVzZW50IHRoZSBwaWNrZXIgdG8gdGhlIHJpZ2h0
IG9mIHRoZSBlbGVtZW50LgorICAgIGlmIChjYW5QcmVzZW50QmVzaWRlRWxlbWVudFJpZ2h0KQor
ICAgICAgICByZXR1cm4gVUlFZGdlSW5zZXRzTWFrZSgwLCBsZWZ0SW5zZXRGb3JQcmVzZW50aW5n
QmVzaWRlRWxlbWVudFJpZ2h0LCAwLCAwKTsKKworICAgIC8vIFByZXNlbnQgdGhlIHBpY2tlciBm
cm9tIHRoZSBjZW50ZXIgb2YgdGhlIGVsZW1lbnQuCisgICAgcmV0dXJuIFVJRWRnZUluc2V0c1pl
cm87Cit9CisKIC0gKFVJVGFyZ2V0ZWRQcmV2aWV3ICopY29udGV4dE1lbnVJbnRlcmFjdGlvbjoo
VUlDb250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcHJldmlld0ZvckhpZ2hsaWdo
dGluZ01lbnVXaXRoQ29uZmlndXJhdGlvbjooVUlDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24gKilj
b25maWd1cmF0aW9uCiB7CiAgICAgcmV0dXJuIFtfdmlldyBfY3JlYXRlVGFyZ2V0ZWRDb250ZXh0
TWVudUhpbnRQcmV2aWV3Rm9yRm9jdXNlZEVsZW1lbnRdOwpAQCAtMTY0LDU4ICszOTQsMTcgQEAg
c3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIGtNaWxsaXNlY29uZHNQZXJTZWNvbmQgPSAxMDAw
OwogICAgIF9VSUNvbnRleHRNZW51U3R5bGUgKnN0eWxlID0gW19VSUNvbnRleHRNZW51U3R5bGUg
ZGVmYXVsdFN0eWxlXTsKICAgICBzdHlsZS5oYXNJbnRlcmFjdGl2ZVByZXZpZXcgPSBZRVM7CiAg
ICAgc3R5bGUucHJlZmVycmVkQmFja2dyb3VuZEVmZmVjdHMgPSBAWyBbVUlWaXN1YWxFZmZlY3Qg
ZW1wdHlFZmZlY3RdIF07Ci0gICAgc3R5bGUucHJlZmVycmVkTGF5b3V0ID0gX1VJQ29udGV4dE1l
bnVMYXlvdXRBdXRvbWF0aWM7CisgICAgc3R5bGUucHJlZmVycmVkTGF5b3V0ID0gX1VJQ29udGV4
dE1lbnVMYXlvdXRQcmV2aWV3T25seTsKKyAgICBzdHlsZS5wcmVmZXJzQ2VudGVyZWRQcmV2aWV3
V2hlbkFjdGlvbnNBcmVBYnNlbnQgPSBOTzsKKyAgICBzdHlsZS5pZ25vcmVzRGVmYXVsdFNpemlu
Z1J1bGVzID0gWUVTOworICAgIHN0eWxlLnByZWZlcnJlZEVkZ2VJbnNldHMgPSBbc2VsZiBfcHJl
ZmVycmVkRWRnZUluc2V0c0ZvckRhdGVUaW1lUGlja2VyXTsKICAgICByZXR1cm4gc3R5bGU7CiB9
CiAKIC0gKFVJQ29udGV4dE1lbnVDb25maWd1cmF0aW9uICopY29udGV4dE1lbnVJbnRlcmFjdGlv
bjooVUlDb250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gY29uZmlndXJhdGlvbkZv
ck1lbnVBdExvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uCiB7CiAgICAgcmV0dXJuIFtVSUNvbnRl
eHRNZW51Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uV2l0aElkZW50aWZpZXI6QCJfVUlEYXRl
UGlja2VyQ29tcGFjdEVkaXRvciIgcHJldmlld1Byb3ZpZGVyOl57Ci0gICAgICAgIFtfdmlld0Nv
bnRyb2xsZXIgc2V0VmlldzpuaWxdOwotICAgICAgICBfdmlld0NvbnRyb2xsZXIgPSBhZG9wdE5T
KFtbV0tEYXRlVGltZUNvbnRleHRNZW51Vmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKLSAg
ICAgICAgUmV0YWluUHRyPFVJTmF2aWdhdGlvbkNvbnRyb2xsZXI+IG5hdmlnYXRpb25Db250cm9s
bGVyID0gYWRvcHROUyhbW1VJTmF2aWdhdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoUm9v
dFZpZXdDb250cm9sbGVyOl92aWV3Q29udHJvbGxlci5nZXQoKV0pOwotICAgICAgICAKLSAgICAg
ICAgTlNTdHJpbmcgKnJlc2V0U3RyaW5nID0gV0VCX1VJX1NUUklOR19LRVkoIlJlc2V0IiwgIlJl
c2V0IEJ1dHRvbiBEYXRlL1RpbWUgQ29udGV4dCBNZW51IiwgIlJlc2V0IGJ1dHRvbiBpbiBkYXRl
IGlucHV0IGNvbnRleHQgbWVudSIpOwotICAgICAgICBOU1N0cmluZyAqb2tTdHJpbmcgPSBXRUJf
VUlfU1RSSU5HX0tFWSgiT0siLCAiT0sgKE9LIGJ1dHRvbiB0aXRsZSBpbiBkYXRlL3RpbWUgcGlj
a2VyKSIsICJUaXRsZSBvZiB0aGUgT0sgYnV0dG9uIGluIGRhdGUvdGltZSBmb3JtIGNvbnRyb2xz
LiIpOwotCi0gICAgICAgIFJldGFpblB0cjxVSUJhckJ1dHRvbkl0ZW0+IG9rQmFyQnV0dG9uID0g
YWRvcHROUyhbW1VJQmFyQnV0dG9uSXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpva1N0cmluZyBz
dHlsZTpVSUJhckJ1dHRvbkl0ZW1TdHlsZURvbmUgdGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3Rv
cihvazopXSk7Ci0gICAgICAgIFJldGFpblB0cjxVSUJhckJ1dHRvbkl0ZW0+IGJsYW5rQmFyQnV0
dG9uID0gYWRvcHROUyhbW1VJQmFyQnV0dG9uSXRlbSBhbGxvY10gaW5pdFdpdGhCYXJCdXR0b25T
eXN0ZW1JdGVtOlVJQmFyQnV0dG9uU3lzdGVtSXRlbUZsZXhpYmxlU3BhY2UgdGFyZ2V0Om5pbCBh
Y3Rpb246bmlsXSk7Ci0gICAgICAgIFJldGFpblB0cjxVSUJhckJ1dHRvbkl0ZW0+IHJlc2V0QmFy
QnV0dG9uID0gYWRvcHROUyhbW1VJQmFyQnV0dG9uSXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpy
ZXNldFN0cmluZyBzdHlsZTpVSUJhckJ1dHRvbkl0ZW1TdHlsZVBsYWluIHRhcmdldDpzZWxmIGFj
dGlvbjpAc2VsZWN0b3IocmVzZXQ6KV0pOwotICAgICAgICAKLSAgICAgICAgW192aWV3Q29udHJv
bGxlciBzZXRUb29sYmFySXRlbXM6QFtyZXNldEJhckJ1dHRvbi5nZXQoKSwgYmxhbmtCYXJCdXR0
b24uZ2V0KCksIG9rQmFyQnV0dG9uLmdldCgpXV07Ci0gICAgICAgIFtuYXZpZ2F0aW9uQ29udHJv
bGxlciBzZXRUb29sYmFySGlkZGVuOk5PXTsKLSAgICAgICAgCi0gICAgICAgIGF1dG8gY2VudGVy
aW5nVmlldyA9IGFkb3B0TlMoW1tVSVZpZXcgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgCi0gICAg
ICAgIFtjZW50ZXJpbmdWaWV3IGFkZFN1YnZpZXc6X2RhdGVQaWNrZXIuZ2V0KCldOwotICAgICAg
ICAKLSAgICAgICAgX2RhdGVQaWNrZXIuZ2V0KCkudHJhbnNsYXRlc0F1dG9yZXNpemluZ01hc2tJ
bnRvQ29uc3RyYWludHMgPSBOTzsKLSAgICAgICAgYXV0byB3aWR0aENvbnN0cmFpbnQgPSBbW2Nl
bnRlcmluZ1ZpZXcgd2lkdGhBbmNob3JdIGNvbnN0cmFpbnRHcmVhdGVyVGhhbk9yRXF1YWxUb0Fu
Y2hvcjpbX2RhdGVQaWNrZXIgd2lkdGhBbmNob3JdXTsKLSAgICAgICAgYXV0byBoZWlnaHRDb25z
dHJhaW50ID0gW1tjZW50ZXJpbmdWaWV3IGhlaWdodEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9B
bmNob3I6W19kYXRlUGlja2VyIGhlaWdodEFuY2hvcl1dOwotICAgICAgICBhdXRvIGhvcml6b250
YWxDb25zdHJhaW50ID0gW1tjZW50ZXJpbmdWaWV3IGNlbnRlclhBbmNob3JdIGNvbnN0cmFpbnRF
cXVhbFRvQW5jaG9yOltfZGF0ZVBpY2tlciBjZW50ZXJYQW5jaG9yXV07Ci0gICAgICAgIGF1dG8g
dmVydGljYWxDb25zdHJhaW50ID0gW1tjZW50ZXJpbmdWaWV3IGNlbnRlcllBbmNob3JdIGNvbnN0
cmFpbnRFcXVhbFRvQW5jaG9yOltfZGF0ZVBpY2tlciBjZW50ZXJZQW5jaG9yXV07Ci0KLSAgICAg
ICAgW05TTGF5b3V0Q29uc3RyYWludCBhY3RpdmF0ZUNvbnN0cmFpbnRzOkBbdmVydGljYWxDb25z
dHJhaW50LCBob3Jpem9udGFsQ29uc3RyYWludCwgd2lkdGhDb25zdHJhaW50LCBoZWlnaHRDb25z
dHJhaW50XV07Ci0KLSAgICAgICAgW192aWV3Q29udHJvbGxlciBzZXRWaWV3OmNlbnRlcmluZ1Zp
ZXcuZ2V0KCldOwotCi0gICAgICAgIE5TU3RyaW5nICp0aXRsZVRleHQgPSBfdmlldy5pbnB1dExh
YmVsVGV4dDsKLSAgICAgICAgaWYgKCFbdGl0bGVUZXh0IGlzRXF1YWw6QCIiXSkgewotICAgICAg
ICAgICAgUmV0YWluUHRyPFVJTGFiZWw+IHRpdGxlID0gYWRvcHROUyhbW1VJTGFiZWwgYWxsb2Nd
IGluaXRdKTsKLSAgICAgICAgICAgIFt0aXRsZSBzZXRGb250OltVSUZvbnQgcHJlZmVycmVkRm9u
dEZvclRleHRTdHlsZTpVSUZvbnRUZXh0U3R5bGVGb290bm90ZV1dOwotICAgICAgICAgICAgW3Rp
dGxlIHNldFRleHQ6dGl0bGVUZXh0XTsKLSAgICAgICAgICAgIFt0aXRsZSBzZXRUZXh0Q29sb3I6
W1VJQ29sb3Igc2Vjb25kYXJ5TGFiZWxDb2xvcl1dOwotICAgICAgICAgICAgW3RpdGxlIHNldFRl
eHRBbGlnbm1lbnQ6TlNUZXh0QWxpZ25tZW50TmF0dXJhbF07Ci0gICAgICAgICAgICBSZXRhaW5Q
dHI8VUlCYXJCdXR0b25JdGVtPiB0aXRsZUJ1dHRvbiA9IGFkb3B0TlMoW1tVSUJhckJ1dHRvbkl0
ZW0gYWxsb2NdIGluaXRXaXRoQ3VzdG9tVmlldzp0aXRsZS5nZXQoKV0pOwotICAgICAgICAgICAg
W192aWV3Q29udHJvbGxlciBuYXZpZ2F0aW9uSXRlbV0ubGVmdEJhckJ1dHRvbkl0ZW0gPSB0aXRs
ZUJ1dHRvbi5nZXQoKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBbbmF2aWdhdGlvbkNv
bnRyb2xsZXIgc2V0TmF2aWdhdGlvbkJhckhpZGRlbjpZRVMgYW5pbWF0ZWQ6Tk9dOwotICAgICAg
ICAKLSAgICAgICAgW25hdmlnYXRpb25Db250cm9sbGVyIG5hdmlnYXRpb25CYXJdLnRyYW5zbHVj
ZW50ID0gTk87Ci0gICAgICAgIFtuYXZpZ2F0aW9uQ29udHJvbGxlciBuYXZpZ2F0aW9uQmFyXS5i
YXJUaW50Q29sb3IgPSBbVUlDb2xvciBzeXN0ZW1CYWNrZ3JvdW5kQ29sb3JdOwotICAgICAgICBb
bmF2aWdhdGlvbkNvbnRyb2xsZXIgdG9vbGJhcl0udHJhbnNsdWNlbnQgPSBOTzsKLSAgICAgICAg
W25hdmlnYXRpb25Db250cm9sbGVyIHRvb2xiYXJdLmJhclRpbnRDb2xvciA9IFtVSUNvbG9yIHN5
c3RlbUJhY2tncm91bmRDb2xvcl07Ci0gICAgICAgIHJldHVybiBuYXZpZ2F0aW9uQ29udHJvbGxl
ci5nZXQoKTsKKyAgICAgICAgcmV0dXJuIF9kYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmdl
dCgpOwogICAgIH0gYWN0aW9uUHJvdmlkZXI6bmlsXTsKIH0KIApAQCAtMjY3LDEwMCArNDU2LDc5
IEBAIHN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBrTWlsbGlzZWNvbmRzUGVyU2Vjb25kID0g
MTAwMDsKIAogI2VuZGlmCiAKLS0gKHZvaWQpcmVzZXQ6KGlkKXNlbmRlcgorLSAodm9pZClkYXRl
VGltZVBpY2tlclZpZXdDb250cm9sbGVyRGlkQ2hhbmdlRGF0ZTooV0tEYXRlVGltZVBpY2tlclZp
ZXdDb250cm9sbGVyICopZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlcgoreworICAgIFtzZWxm
IF9kYXRlQ2hhbmdlZF07Cit9CisKKy0gKHZvaWQpZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxl
ckRpZFByZXNzUmVzZXRCdXR0b246KFdLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciAqKWRh
dGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIKIHsKICAgICBbc2VsZiBzZXREYXRlVGltZVBpY2tl
clRvSW5pdGlhbFZhbHVlXTsKICAgICBbX3ZpZXcgcGFnZV0tPnNldEZvY3VzZWRFbGVtZW50VmFs
dWUoU3RyaW5nKCkpOwogfQogCi0tICh2b2lkKW9rOihpZClzZW5kZXIKKy0gKHZvaWQpZGF0ZVRp
bWVQaWNrZXJWaWV3Q29udHJvbGxlckRpZFByZXNzRG9uZUJ1dHRvbjooV0tEYXRlVGltZVBpY2tl
clZpZXdDb250cm9sbGVyICopZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlcgogewogI2lmIFVT
RShVSUNPTlRFWFRNRU5VKQogICAgIFtfZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0aW9uIGRp
c21pc3NNZW51XTsKICNlbmRpZgogfQogCi0tIChOU1N0cmluZyAqKWNhbGVuZGFyVHlwZQotewot
ICAgIHJldHVybiBbX2RhdGVQaWNrZXIgY2FsZW5kYXJdLmNhbGVuZGFySWRlbnRpZmllcjsKLX0K
LQotLSAoZG91YmxlKWhvdXIKLXsKLSAgICBOU0NhbGVuZGFyICpjYWxlbmRhciA9IFtOU0NhbGVu
ZGFyIGN1cnJlbnRDYWxlbmRhcl07Ci0gICAgTlNEYXRlQ29tcG9uZW50cyAqY29tcG9uZW50cyA9
IFtjYWxlbmRhciBjb21wb25lbnRzOk5TQ2FsZW5kYXJVbml0SG91ciBmcm9tRGF0ZTpbX2RhdGVQ
aWNrZXIgZGF0ZV1dOwotCi0gICAgcmV0dXJuIFtjb21wb25lbnRzIGhvdXJdOwotfQotCi0tIChk
b3VibGUpbWludXRlCistIChCT09MKXNob3VsZEZvcmNlR3JlZ29yaWFuQ2FsZW5kYXIKIHsKLSAg
ICBOU0NhbGVuZGFyICpjYWxlbmRhciA9IFtOU0NhbGVuZGFyIGN1cnJlbnRDYWxlbmRhcl07Ci0g
ICAgTlNEYXRlQ29tcG9uZW50cyAqY29tcG9uZW50cyA9IFtjYWxlbmRhciBjb21wb25lbnRzOk5T
Q2FsZW5kYXJVbml0TWludXRlIGZyb21EYXRlOltfZGF0ZVBpY2tlciBkYXRlXV07Ci0KLSAgICBy
ZXR1cm4gW2NvbXBvbmVudHMgbWludXRlXTsKKyAgICBhdXRvIGF1dG9maWxsRmllbGROYW1lID0g
X3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5hdXRvZmlsbEZpZWxkTmFtZTsKKyAgICBy
ZXR1cm4gYXV0b2ZpbGxGaWVsZE5hbWUgPT0gV2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWU6OkNj
RXhwTW9udGgKKyAgICAgICAgfHwgYXV0b2ZpbGxGaWVsZE5hbWUgPT0gV2ViQ29yZTo6QXV0b2Zp
bGxGaWVsZE5hbWU6OkNjRXhwCisgICAgICAgIHx8IGF1dG9maWxsRmllbGROYW1lID09IFdlYkNv
cmU6OkF1dG9maWxsRmllbGROYW1lOjpDY0V4cFllYXI7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwog
ewotICAgIFtfZGF0ZVBpY2tlciByZW1vdmVUYXJnZXQ6c2VsZiBhY3Rpb246TlVMTCBmb3JDb250
cm9sRXZlbnRzOlVJQ29udHJvbEV2ZW50VmFsdWVDaGFuZ2VkXTsKICNpZiBVU0UoVUlDT05URVhU
TUVOVSkKICAgICBbc2VsZiByZW1vdmVDb250ZXh0TWVudUludGVyYWN0aW9uXTsKICNlbmRpZgog
ICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotLSAoQk9PTClzaG91bGRQcmVzZW50R3JlZ29yaWFu
Q2FsZW5kYXI6KGNvbnN0IFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYpbm9kZUlu
Zm8KLXsKLSAgICByZXR1cm4gbm9kZUluZm8uYXV0b2ZpbGxGaWVsZE5hbWUgPT0gV2ViQ29yZTo6
QXV0b2ZpbGxGaWVsZE5hbWU6OkNjRXhwTW9udGgKLSAgICAgICAgfHwgbm9kZUluZm8uYXV0b2Zp
bGxGaWVsZE5hbWUgPT0gV2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWU6OkNjRXhwCi0gICAgICAg
IHx8IG5vZGVJbmZvLmF1dG9maWxsRmllbGROYW1lID09IFdlYkNvcmU6OkF1dG9maWxsRmllbGRO
YW1lOjpDY0V4cFllYXI7Ci19Ci0KLS0gKFVJVmlldyAqKWNvbnRyb2xWaWV3Ci17Ci0gICAgcmV0
dXJuIF9kYXRlUGlja2VyLmdldCgpOwotfQotCiAtIChOU0ludGVnZXIpX3RpbWVab25lT2Zmc2V0
RnJvbUdNVDooTlNEYXRlICopZGF0ZQogewogICAgIGlmICghX3Nob3VsZFJlbW92ZVRpbWVab25l
SW5mb3JtYXRpb24pCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIFtfZGF0ZVBpY2tl
ci5nZXQoKS50aW1lWm9uZSBzZWNvbmRzRnJvbUdNVEZvckRhdGU6ZGF0ZV07CisgICAgcmV0dXJu
IFtbX2RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgdGltZVpvbmVdIHNlY29uZHNGcm9tR01U
Rm9yRGF0ZTpkYXRlXTsKIH0KIAogLSAoTlNTdHJpbmcgKilfc2FuaXRpemVJbnB1dFZhbHVlRm9y
Rm9ybWF0dGVyOihOU1N0cmluZyAqKXZhbHVlCiB7CiAgICAgLy8gVGhlICJ0aW1lIiBpbnB1dCB0
eXBlIG1heSBoYXZlIHNlY29uZHMgYW5kIG1pbGxpc2Vjb25kcyBpbmZvcm1hdGlvbiB3aGljaCB3
ZQogICAgIC8vIGp1c3QgaWdub3JlLiBGb3IgZXhhbXBsZTogIjAxOjU2OjIwLjM5MSIgaXMgc2hv
cnRlbmVkIHRvIGp1c3QgIjAxOjU2Ii4KLSAgICBpZiAoX2lzVGltZUlucHV0KQorICAgIGlmIChf
dmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID09IFdlYktpdDo6SW5w
dXRUeXBlOjpUaW1lKQogICAgICAgICByZXR1cm4gW3ZhbHVlIHN1YnN0cmluZ1RvSW5kZXg6W2tU
aW1lRm9ybWF0U3RyaW5nIGxlbmd0aF1dOwogCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi0tICh2
b2lkKV9kYXRlQ2hhbmdlZFNldEFzTnVtYmVyCi17Ci0gICAgTlNEYXRlICpkYXRlID0gW19kYXRl
UGlja2VyIGRhdGVdOwotICAgIFtfdmlldyB1cGRhdGVGb2N1c2VkRWxlbWVudFZhbHVlQXNOdW1i
ZXI6KFtkYXRlIHRpbWVJbnRlcnZhbFNpbmNlMTk3MF0gKyBbc2VsZiBfdGltZVpvbmVPZmZzZXRG
cm9tR01UOmRhdGVdKSAqIGtNaWxsaXNlY29uZHNQZXJTZWNvbmRdOwotfQotCiAtIChSZXRhaW5Q
dHI8TlNEYXRlRm9ybWF0dGVyPilkYXRlRm9ybWF0dGVyRm9yUGlja2VyCiB7CiAgICAgUmV0YWlu
UHRyPE5TTG9jYWxlPiBlbmdsaXNoTG9jYWxlID0gYWRvcHROUyhbW05TTG9jYWxlIGFsbG9jXSBp
bml0V2l0aExvY2FsZUlkZW50aWZpZXI6QCJlbl9VU19QT1NJWCJdKTsKICAgICBSZXRhaW5QdHI8
TlNEYXRlRm9ybWF0dGVyPiBkYXRlRm9ybWF0dGVyID0gYWRvcHROUyhbW05TRGF0ZUZvcm1hdHRl
ciBhbGxvY10gaW5pdF0pOwotICAgIFtkYXRlRm9ybWF0dGVyIHNldFRpbWVab25lOl9kYXRlUGlj
a2VyLmdldCgpLnRpbWVab25lXTsKKyAgICBbZGF0ZUZvcm1hdHRlciBzZXRUaW1lWm9uZTpbX2Rh
dGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgdGltZVpvbmVdXTsKICAgICBbZGF0ZUZvcm1hdHRl
ciBzZXREYXRlRm9ybWF0Ol9mb3JtYXRTdHJpbmddOwogICAgIFtkYXRlRm9ybWF0dGVyIHNldExv
Y2FsZTplbmdsaXNoTG9jYWxlLmdldCgpXTsKICAgICByZXR1cm4gZGF0ZUZvcm1hdHRlcjsKIH0K
IAorLSAodm9pZClfZGF0ZUNoYW5nZWRTZXRBc051bWJlcgoreworICAgIE5TRGF0ZSAqZGF0ZSA9
IFtfZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciBkYXRlXTsKKyAgICBbX3ZpZXcgdXBkYXRl
Rm9jdXNlZEVsZW1lbnRWYWx1ZUFzTnVtYmVyOihbZGF0ZSB0aW1lSW50ZXJ2YWxTaW5jZTE5NzBd
ICsgW3NlbGYgX3RpbWVab25lT2Zmc2V0RnJvbUdNVDpkYXRlXSkgKiBrTWlsbGlzZWNvbmRzUGVy
U2Vjb25kXTsKK30KKwogLSAodm9pZClfZGF0ZUNoYW5nZWRTZXRBc1N0cmluZwogewogICAgIC8v
IEZvcmNlIEVuZ2xpc2ggbG9jYWxlIGJlY2F1c2UgdGhhdCBpcyB3aGF0IEhUTUw1IHZhbHVlIHBh
cnNpbmcgZXhwZWN0cy4KICAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBkYXRlRm9ybWF0
dGVyID0gW3NlbGYgZGF0ZUZvcm1hdHRlckZvclBpY2tlcl07Ci0gICAgW192aWV3IHVwZGF0ZUZv
Y3VzZWRFbGVtZW50VmFsdWU6W2RhdGVGb3JtYXR0ZXIgc3RyaW5nRnJvbURhdGU6W19kYXRlUGlj
a2VyIGRhdGVdXV07CisgICAgW192aWV3IHVwZGF0ZUZvY3VzZWRFbGVtZW50VmFsdWU6W2RhdGVG
b3JtYXR0ZXIgc3RyaW5nRnJvbURhdGU6W19kYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyIGRh
dGVdXV07CiB9CiAKIC0gKHZvaWQpX2RhdGVDaGFuZ2VkCkBAIC0zNzUsNDMgKzU0MywzOCBAQCBz
dGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwga01pbGxpc2Vjb25kc1BlclNlY29uZCA9IDEwMDA7
CiAgICAgICAgIFtzZWxmIF9kYXRlQ2hhbmdlZFNldEFzTnVtYmVyXTsKIH0KIAotLSAodm9pZClf
ZGF0ZUNoYW5nZUhhbmRsZXI6KGlkKXNlbmRlcgotewotICAgIFtzZWxmIF9kYXRlQ2hhbmdlZF07
Ci19Ci0KIC0gKHZvaWQpc2V0RGF0ZVRpbWVQaWNrZXJUb0luaXRpYWxWYWx1ZQogewogICAgIGlm
IChbX2luaXRpYWxWYWx1ZSBpc0VxdWFsOiBAIiJdKSB7Ci0gICAgICAgIFtfZGF0ZVBpY2tlciBz
ZXREYXRlOltOU0RhdGUgZGF0ZV1dOworICAgICAgICBbX2RhdGVUaW1lUGlja2VyVmlld0NvbnRy
b2xsZXIgc2V0RGF0ZTpbTlNEYXRlIGRhdGVdXTsKICAgICAgICAgW3NlbGYgX2RhdGVDaGFuZ2Vk
XTsKICAgICB9IGVsc2UgaWYgKF9mb3JtYXRTdHJpbmcpIHsKICAgICAgICAgLy8gQ29udmVydCB0
aGUgc3RyaW5nIHZhbHVlIHRvIGEgZGF0ZSBvYmplY3QgZm9yIHRoZSBmaWVsZHMgd2hlcmUgd2Ug
aGF2ZSBhIGZvcm1hdCBzdHJpbmcuCiAgICAgICAgIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+
IGRhdGVGb3JtYXR0ZXIgPSBbc2VsZiBkYXRlRm9ybWF0dGVyRm9yUGlja2VyXTsKICAgICAgICAg
TlNEYXRlICpwYXJzZWREYXRlID0gW2RhdGVGb3JtYXR0ZXIgZGF0ZUZyb21TdHJpbmc6W3NlbGYg
X3Nhbml0aXplSW5wdXRWYWx1ZUZvckZvcm1hdHRlcjpfaW5pdGlhbFZhbHVlLmdldCgpXV07Ci0g
ICAgICAgIFtfZGF0ZVBpY2tlciBzZXREYXRlOnBhcnNlZERhdGUgPyBwYXJzZWREYXRlIDogW05T
RGF0ZSBkYXRlXV07CisgICAgICAgIFtfZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciBzZXRE
YXRlOnBhcnNlZERhdGUgPyBwYXJzZWREYXRlIDogW05TRGF0ZSBkYXRlXV07CiAgICAgfSBlbHNl
IHsKICAgICAgICAgLy8gQ29udmVydCB0aGUgbnVtYmVyIHZhbHVlIHRvIGEgZGF0ZSBvYmplY3Qg
Zm9yIHRoZSBmaWVsZHMgYWZmZWN0ZWQgYnkgdGltZXpvbmVzLgogICAgICAgICBOU1RpbWVJbnRl
cnZhbCBzZWNvbmRzU2luY2UxOTcwID0gX2luaXRpYWxWYWx1ZUFzTnVtYmVyIC8ga01pbGxpc2Vj
b25kc1BlclNlY29uZDsKICAgICAgICAgTlNJbnRlZ2VyIHRpbWVab25lT2Zmc2V0ID0gW3NlbGYg
X3RpbWVab25lT2Zmc2V0RnJvbUdNVDpbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2Ux
OTcwOnNlY29uZHNTaW5jZTE5NzBdXTsKICAgICAgICAgTlNUaW1lSW50ZXJ2YWwgYWRqdXN0ZWRT
ZWNvbmRzU2luY2UxOTcwID0gc2Vjb25kc1NpbmNlMTk3MCAtIHRpbWVab25lT2Zmc2V0OwotICAg
ICAgICBbX2RhdGVQaWNrZXIgc2V0RGF0ZTpbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2lu
Y2UxOTcwOmFkanVzdGVkU2Vjb25kc1NpbmNlMTk3MF1dOworICAgICAgICBbX2RhdGVUaW1lUGlj
a2VyVmlld0NvbnRyb2xsZXIgc2V0RGF0ZTpbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2lu
Y2UxOTcwOmFkanVzdGVkU2Vjb25kc1NpbmNlMTk3MF1dOwogICAgIH0KIH0KIAotLSAodm9pZClj
b250cm9sQmVnaW5FZGl0aW5nCistIChVSVZpZXcgKiljb250cm9sVmlldwogewotICAgIGlmIChf
cHJlc2VudGluZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX3ByZXNlbnRpbmcgPSBZRVM7Cisg
ICAgcmV0dXJuIG5pbDsKK30KIAorLSAodm9pZCljb250cm9sQmVnaW5FZGl0aW5nCit7CiAgICAg
YXV0byBlbGVtZW50VHlwZSA9IF92aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVu
dFR5cGU7CiAgICAgaWYgKGVsZW1lbnRUeXBlID09IFdlYktpdDo6SW5wdXRUeXBlOjpUaW1lIHx8
IGVsZW1lbnRUeXBlID09IFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsKQogICAgICAg
ICBbX3ZpZXcgc3RhcnRSZWxpbnF1aXNoaW5nRmlyc3RSZXNwb25kZXJUb0ZvY3VzZWRFbGVtZW50
XTsKIAogICAgIC8vIFNldCB0aGUgdGltZSB6b25lIGluIGNhc2UgaXQgY2hhbmdlZC4KLSAgICBf
ZGF0ZVBpY2tlci5nZXQoKS50aW1lWm9uZSA9IFtOU1RpbWVab25lIGxvY2FsVGltZVpvbmVdOwor
ICAgIFtfZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciBzZXRUaW1lWm9uZTpOU1RpbWVab25l
LmxvY2FsVGltZVpvbmVdOwogCiAgICAgLy8gQ3VycmVudGx5IG5vIHZhbHVlIGZvciB0aGUgPGlu
cHV0Pi4gU3RhcnQgdGhlIHBpY2tlciB3aXRoIHRoZSBjdXJyZW50IHRpbWUuCiAgICAgLy8gQWxz
bywgdXBkYXRlIHRoZSBhY3R1YWwgPGlucHV0PiB2YWx1ZS4KQEAgLTQyNCwyOCArNTg3LDQzIEBA
IHN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBrTWlsbGlzZWNvbmRzUGVyU2Vjb25kID0gMTAw
MDsKICNlbmRpZgogfQogCi0tICh2b2lkKXNldEhvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZToo
TlNJbnRlZ2VyKW1pbnV0ZQorLSAodm9pZCljb250cm9sRW5kRWRpdGluZwogewotICAgIE5TU3Ry
aW5nICp0aW1lU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlLjJsZDolLjJs
ZCIsIChsb25nKWhvdXIsIChsb25nKW1pbnV0ZV07Ci0gICAgW19kYXRlUGlja2VyIHNldERhdGU6
W1tzZWxmIGRhdGVGb3JtYXR0ZXJGb3JQaWNrZXJdIGRhdGVGcm9tU3RyaW5nOnRpbWVTdHJpbmdd
XTsKLSAgICBbc2VsZiBfZGF0ZUNoYW5nZWRdOworICAgIFtfdmlldyBzdG9wUmVsaW5xdWlzaGlu
Z0ZpcnN0UmVzcG9uZGVyVG9Gb2N1c2VkRWxlbWVudF07CisKKyNpZiBVU0UoVUlDT05URVhUTUVO
VSkKKyAgICBbc2VsZiByZW1vdmVDb250ZXh0TWVudUludGVyYWN0aW9uXTsKKyNlbmRpZgogfQog
Ci0tIChXS0RhdGVUaW1lQ29udGV4dE1lbnVWaWV3Q29udHJvbGxlciAqKXZpZXdDb250cm9sbGVy
CistIChOU1N0cmluZyAqKWNhbGVuZGFyVHlwZQogewotICAgIHJldHVybiBfdmlld0NvbnRyb2xs
ZXIuZ2V0KCk7CisgICAgcmV0dXJuIFtfZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciBjYWxl
bmRhcl0uY2FsZW5kYXJJZGVudGlmaWVyOwogfQogCi0tICh2b2lkKWNvbnRyb2xFbmRFZGl0aW5n
CistIChkb3VibGUpaG91cgogewotICAgIF9wcmVzZW50aW5nID0gTk87CisgICAgTlNDYWxlbmRh
ciAqY2FsZW5kYXIgPSBbTlNDYWxlbmRhciBjdXJyZW50Q2FsZW5kYXJdOworICAgIE5TRGF0ZUNv
bXBvbmVudHMgKmNvbXBvbmVudHMgPSBbY2FsZW5kYXIgY29tcG9uZW50czpOU0NhbGVuZGFyVW5p
dEhvdXIgZnJvbURhdGU6W19kYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyIGRhdGVdXTsKIAot
ICAgIFtfdmlldyBzdG9wUmVsaW5xdWlzaGluZ0ZpcnN0UmVzcG9uZGVyVG9Gb2N1c2VkRWxlbWVu
dF07CisgICAgcmV0dXJuIGNvbXBvbmVudHMuaG91cjsKK30KIAotI2lmIFVTRShVSUNPTlRFWFRN
RU5VKQotICAgIFtzZWxmIHJlbW92ZUNvbnRleHRNZW51SW50ZXJhY3Rpb25dOwotI2VuZGlmCist
IChkb3VibGUpbWludXRlCit7CisgICAgTlNDYWxlbmRhciAqY2FsZW5kYXIgPSBbTlNDYWxlbmRh
ciBjdXJyZW50Q2FsZW5kYXJdOworICAgIE5TRGF0ZUNvbXBvbmVudHMgKmNvbXBvbmVudHMgPSBb
Y2FsZW5kYXIgY29tcG9uZW50czpOU0NhbGVuZGFyVW5pdE1pbnV0ZSBmcm9tRGF0ZTpbX2RhdGVU
aW1lUGlja2VyVmlld0NvbnRyb2xsZXIgZGF0ZV1dOworCisgICAgcmV0dXJuIGNvbXBvbmVudHMu
bWludXRlOwogfQorCistICh2b2lkKXNldEhvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJ
bnRlZ2VyKW1pbnV0ZQoreworICAgIE5TU3RyaW5nICp0aW1lU3RyaW5nID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCIlLjJsZDolLjJsZCIsIChsb25nKWhvdXIsIChsb25nKW1pbnV0ZV07
CisgICAgW19kYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyIHNldERhdGU6W1tzZWxmIGRhdGVG
b3JtYXR0ZXJGb3JQaWNrZXJdIGRhdGVGcm9tU3RyaW5nOnRpbWVTdHJpbmddXTsKKyAgICBbc2Vs
ZiBfZGF0ZUNoYW5nZWRdOworfQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS0RhdGVUaW1l
SW5wdXRDb250cm9sCg==
</data>
<flag name="review"
          id="446806"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426597</attachid>
            <date>2021-04-20 14:52:08 -0700</date>
            <delta_ts>2021-04-20 15:45:23 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-224794-20210420175207.patch</filename>
            <type>text/plain</type>
            <size>43481</size>
            <attacher name="Aditya Keerthi">akeerthi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IzNjU5ZDFkYWY0YTdh
MzEyODVhOTFkNDgzOWJmOWE3MTE0NjgwNi4uMDRiZjg0OWY2NThkMTczOTE4MWQ1ZmQ2NDEyN2Rl
YjEzMDQzODQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA0LTIwICBBZGl0
eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXVtGQ1JdIFVw
ZGF0ZSBkYXRlL3RpbWUgcGlja2VyIGFwcGVhcmFuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDc5NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzY3ODU4NTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAg
ICogZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczoKKworICAgICAgICBSZW1vdmUgbm93IHVu
dXNlZCBzdHJpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Zm9y
bUNvbnRyb2xEb25lQnV0dG9uVGl0bGUpOgorCisgICAgICAgIE1vdmVkIGRlZmluaXRpb24gb3V0
IG9mIFBMQVRGT1JNKFdBVENIT1MpIGluIExvY2FsaXplZFN0cmluZ3MuY3BwIGFuZAorICAgICAg
ICBpbnRvIExvY2FsaXplZFN0cmluZ3NDb2NvYSwgc28gdGhhdCB0aGUgIkRvbmUiIHN0cmluZyBj
YW4gYmUgdXNlZCBieQorICAgICAgICBQTEFURk9STShJT1NfRkFNSUxZKS4KKwogMjAyMS0wNC0x
MyAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11b
RkNSXSBJbmRldGVybWluYXRlIHByb2dyZXNzIGJhcnMgc2hvdWxkIHVwZGF0ZSBhdCA2MGZwcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCAxYjBjZmYwMDYzN2M5ZGVmODYxYjNlZWI3MzYwMDg5YzZkMTBiMDQ3Li5mZmEw
OTcxZThiODczOTRkM2FkY2I5ODUwOTQwZmIzZTBjZjUyZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDc4IEBACisyMDIxLTA0LTIwICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4K
KworICAgICAgICBbaU9TXVtGQ1JdIFVwZGF0ZSBkYXRlL3RpbWUgcGlja2VyIGFwcGVhcmFuY2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDc5NAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY3ODU4NTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
V2Vuc29uIEhzaWVoLgorCisgICAgICAgIERhdGUvdGltZSBwaWNrZXJzIHNob3VsZCBoYXZlIGEg
c3lzdGVtIG1hdGVyaWFsIGJhY2tncm91bmQgYW5kIHNob3VsZAorICAgICAgICBhdm9pZCBvYnNj
dXJpbmcgdGhlIGFzc29jaWF0ZWQgZWxlbWVudCB3aGVuIHBvc3NpYmxlLgorCisgICAgICAgICog
UGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oOgorCisgICAgICAgIEFkZCBuZXcgU1BJIGRlY2xh
cmF0aW9ucyB0byBzdXBwb3J0IGRhdGUvdGltZSBwaWNrZXIgbW9kaWZpY2F0aW9ucy4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAg
ICAoY3JlYXRlVGFyZ2V0ZWRQcmV2aWV3KToKKyAgICAgICAgKGNyZWF0ZUZhbGxiYWNrVGFyZ2V0
ZWRQcmV2aWV3KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY3JlYXRlVGFyZ2V0ZWRDb250
ZXh0TWVudUhpbnRQcmV2aWV3Rm9yRm9jdXNlZEVsZW1lbnRdKToKKworICAgICAgICBTZXQgdGhl
IFVJVGFyZ2V0ZWRQcmV2aWV3IGJhY2tncm91bmQgY29sb3IgdG8gY2xlYXJDb2xvciB3aGVuCisg
ICAgICAgIHByZXNlbnRpbmcgYSBkYXRlL3RpbWUgcGlja2VyLCBzbyB0aGF0IHRoZSBwcmVzZW50
ZWQgcGlja2VyIGhhcyBhCisgICAgICAgIHZpc2libGUgbWF0ZXJpYWwgZWZmZWN0LiBXaXRob3V0
IHRoaXMgY2hhbmdlLCB0aGUgcGlja2VyIHdvdWxkIGhhdmUgYQorICAgICAgICBzb2xpZCB3aGl0
ZSBvciBibGFjayBiYWNrZ3JvdW5kLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0RhdGVUaW1lSW5wdXRDb250cm9sLm1tOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyVmll
d0NvbnRyb2xsZXIgaW5pdFdpdGhEZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBp
Y2tlclZpZXdDb250cm9sbGVyIHZpZXdEaWRMb2FkXSk6CisKKyAgICAgICAgQWRkIGEgc3lzdGVt
IG1hdGVyaWFsIGJhY2tncm91bmQgdG8gdGhlIGRhdGUgcGlja2VyIHVzaW5nCisgICAgICAgIFVJ
VmlzdWFsRWZmZWN0Vmlldy4KKworICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyVmlld0NvbnRy
b2xsZXIgZGF0ZVBpY2tlckNoYW5nZWQ6XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXJW
aWV3Q29udHJvbGxlciByZXNldEJ1dHRvblByZXNzZWQ6XSk6CisgICAgICAgICgtW1dLRGF0ZVRp
bWVQaWNrZXJWaWV3Q29udHJvbGxlciBkb25lQnV0dG9uUHJlc3NlZDpdKToKKyAgICAgICAgKC1b
V0tEYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyIGRhdGVQaWNrZXJJbnNldHNdKToKKyAgICAg
ICAgKC1bV0tEYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyIHByZWZlcnJlZERhdGVQaWNrZXJT
aXplXSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciBwcmVmZXJy
ZWRDb250ZW50U2l6ZV0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xs
ZXIgZGF0ZV0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgc2V0
RGF0ZTpdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyIHNldERh
dGVQaWNrZXJNb2RlOl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xs
ZXIgdGltZVpvbmVdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVy
IHNldFRpbWVab25lOl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xs
ZXIgY2FsZW5kYXJdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBpbml0V2l0aFZpZXc6
ZGF0ZVBpY2tlck1vZGU6XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgX3ByZWZlcnJl
ZEVkZ2VJbnNldHNGb3JEYXRlVGltZVBpY2tlcl0pOgorCisgICAgICAgIEF0dGVtcHQgdG8gcHJl
c2VudCB0aGUgZGF0ZSBwaWNrZXIgaW4gYSB3YXkgdGhhdCBkb2VzIG5vdCBvYnNjdXJlIHRoZQor
ICAgICAgICBlbGVtZW50LgorCisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgX2NvbnRleHRN
ZW51SW50ZXJhY3Rpb246c3R5bGVGb3JNZW51V2l0aENvbmZpZ3VyYXRpb246XSk6CisgICAgICAg
ICgtW1dLRGF0ZVRpbWVQaWNrZXIgY29udGV4dE1lbnVJbnRlcmFjdGlvbjpjb25maWd1cmF0aW9u
Rm9yTWVudUF0TG9jYXRpb246XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgZGF0ZVRp
bWVQaWNrZXJWaWV3Q29udHJvbGxlckRpZENoYW5nZURhdGU6XSk6CisgICAgICAgICgtW1dLRGF0
ZVRpbWVQaWNrZXIgZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlckRpZFByZXNzUmVzZXRCdXR0
b246XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgZGF0ZVRpbWVQaWNrZXJWaWV3Q29u
dHJvbGxlckRpZFByZXNzRG9uZUJ1dHRvbjpdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tl
ciBzaG91bGRGb3JjZUdyZWdvcmlhbkNhbGVuZGFyXSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQ
aWNrZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIF90aW1lWm9uZU9m
ZnNldEZyb21HTVQ6XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgX3Nhbml0aXplSW5w
dXRWYWx1ZUZvckZvcm1hdHRlcjpdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBkYXRl
Rm9ybWF0dGVyRm9yUGlja2VyXSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgX2RhdGVD
aGFuZ2VkU2V0QXNOdW1iZXJdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBfZGF0ZUNo
YW5nZWRTZXRBc1N0cmluZ10pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIHNldERhdGVU
aW1lUGlja2VyVG9Jbml0aWFsVmFsdWVdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBj
b250cm9sVmlld10pOgorCisgICAgICAgIFVwZGF0ZWQgdGhpcyBtZXRob2QgdG8gcmV0dXJuIG5p
bCwgbWF0Y2hpbmcgb3RoZXIgZm9ybSBjb250cm9scyB0aGF0CisgICAgICAgIGRvIG5vdCBwcmVz
ZW50IGEga2V5Ym9hcmQgaW5wdXQgdmlldyAoZXhhbXBsZTogPHNlbGVjdD4pLgorCisgICAgICAg
ICgtW1dLRGF0ZVRpbWVQaWNrZXIgY29udHJvbEJlZ2luRWRpdGluZ10pOgorICAgICAgICAoLVtX
S0RhdGVUaW1lUGlja2VyIGNvbnRyb2xFbmRFZGl0aW5nXSk6CisgICAgICAgICgtW1dLRGF0ZVRp
bWVQaWNrZXIgY2FsZW5kYXJUeXBlXSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgaG91
cl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIG1pbnV0ZV0pOgorICAgICAgICAoLVtX
S0RhdGVUaW1lUGlja2VyIHNldEhvdXI6bWludXRlOl0pOgorCiAyMDIxLTA0LTA5ICBBZGl0eWEg
S2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtGQ1JdIENvbG9y
IHBpY2tlciBzaGVldCBzaG91bGQgdXNlIGRlZmF1bHQgaGVpZ2h0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzIGIvU291cmNlL1dlYkNvcmUv
ZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwppbmRleCAyNTkyOWExNGE4N2Q3YzM1NzM5N2Zm
ZDIzZDk0M2RjMmEzM2JmOWJjLi45YWU0MTM3MTUyODhhNjI5OTlmNWRjNGMzZTY2ZjE1YzJlZGM1
ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJp
bmdzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKQEAg
LTMzMSw3ICszMzEsNyBAQAogLyogTGFiZWwgZm9yIHRoZSBkb25hdGUgd2l0aCBBcHBsZSBQYXkg
YnV0dG9uLiAqLwogIkRvbmF0ZSB3aXRoIEFwcGxlIFBheSIgPSAiRG9uYXRlIHdpdGggQXBwbGUg
UGF5IjsKIAotLyogVGl0bGUgb2YgdGhlIERvbmUgYnV0dG9uIGZvciB6b29tZWQgZm9ybSBjb250
cm9scy4gKi8KKy8qIFRpdGxlIG9mIHRoZSBEb25lIGJ1dHRvbiBmb3IgZm9ybSBjb250cm9scy4g
Ki8KICJEb25lIiA9ICJEb25lIjsKIAogLyogRGlzYWxsb3cgYnV0dG9uIHRpdGxlIGluIGdlb2xv
Y2F0aW9uIHByb21wdCAqLwpAQCAtNTg2LDkgKzU4Niw2IEBACiAvKiBPcHRpb24gaW4gc2VnbWVu
dGVkIGNvbnRyb2wgZm9yIGluc2VydGluZyBhIG51bWJlcmVkIGxpc3QgaW4gdGV4dCBlZGl0aW5n
ICovCiAiTnVtYmVyZWQgbGlzdCIgPSAiTnVtYmVyZWQgbGlzdCI7CiAKLS8qIFRpdGxlIG9mIHRo
ZSBPSyBidXR0b24gaW4gZGF0ZS90aW1lIGZvcm0gY29udHJvbHMuICovCi0iT0sgKE9LIGJ1dHRv
biB0aXRsZSBpbiBkYXRlL3RpbWUgcGlja2VyKSIgPSAiT0siOwotCiAvKiBUaXRsZSBvZiB0aGUg
T0sgYnV0dG9uIGZvciB0aGUgbnVtYmVyIHBhZCBpbiB6b29tZWQgZm9ybSBjb250cm9scy4gKi8K
ICJPSyAoT0sgYnV0dG9uIHRpdGxlIGluIGV4dHJhIHpvb21lZCBudW1iZXIgcGFkKSIgPSAiT0si
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCmluZGV4
IGM1YzllZGI5NmIzZjQ5Mjc1NTA0M2MxYTk3ZWZmZTgxYTM4Mzk4NGIuLmNjMzU1M2ZmYjk3M2Y5
MjgwZjdiNTdkNDRlOGY0NWEzYWNiYTU4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvY2FsaXplZFN0cmluZ3MuY3BwCkBAIC0xMTg5LDExICsxMTg5LDYgQEAgU3RyaW5nIG51bWJl
clBhZE9LQnV0dG9uVGl0bGUoKQogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWSgiT0siLCAi
T0sgKE9LIGJ1dHRvbiB0aXRsZSBpbiBleHRyYSB6b29tZWQgbnVtYmVyIHBhZCkiLCAiVGl0bGUg
b2YgdGhlIE9LIGJ1dHRvbiBmb3IgdGhlIG51bWJlciBwYWQgaW4gem9vbWVkIGZvcm0gY29udHJv
bHMuIik7CiB9CiAKLVN0cmluZyBmb3JtQ29udHJvbERvbmVCdXR0b25UaXRsZSgpCi17Ci0gICAg
cmV0dXJuIFdFQl9VSV9TVFJJTkcoIkRvbmUiLCAiVGl0bGUgb2YgdGhlIERvbmUgYnV0dG9uIGZv
ciB6b29tZWQgZm9ybSBjb250cm9scy4iKTsKLX0KLQogU3RyaW5nIGZvcm1Db250cm9sQ2FuY2Vs
QnV0dG9uVGl0bGUoKQogewogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJDYW5jZWwiLCAiQ2Fu
Y2VsIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKaW5kZXgg
NGEyMjQ1ZmUxODE2ZTU0ZDhhYzBmM2YwYjlkNDNhZTdjNDU1ZDg1Ni4uZGJmN2ViNzkzZGY1NzQw
MWM3NWMwYTgzNzFjODc4ZjUwMjgxMmVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xv
Y2FsaXplZFN0cmluZ3MuaApAQCAtMjY1LDYgKzI2NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBTdHJpbmcgZmlsZUJ1dHRvbkNob29zZU11bHRpcGxlTWVkaWFGaWxlc0xhYmVsKCk7CiAg
ICAgU3RyaW5nIGZpbGVCdXR0b25Ob01lZGlhRmlsZVNlbGVjdGVkTGFiZWwoKTsKICAgICBTdHJp
bmcgZmlsZUJ1dHRvbk5vTWVkaWFGaWxlc1NlbGVjdGVkTGFiZWwoKTsKKworICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBmb3JtQ29udHJvbERvbmVCdXR0b25UaXRsZSgpOwogI2VuZGlmCiAKICAg
ICBTdHJpbmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBJbnRTaXpl
JiBzaXplKTsKQEAgLTMzNCw3ICszMzYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgUExB
VEZPUk0oV0FUQ0hPUykKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbnVtYmVyUGFkT0tCdXR0
b25UaXRsZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmb3JtQ29udHJvbENhbmNlbEJ1
dHRvblRpdGxlKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZvcm1Db250cm9sRG9uZUJ1
dHRvblRpdGxlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZvcm1Db250cm9sSGlkZUJ1
dHRvblRpdGxlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZvcm1Db250cm9sR29CdXR0
b25UaXRsZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmb3JtQ29udHJvbFNlYXJjaEJ1
dHRvblRpdGxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9M
b2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9M
b2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0KaW5kZXggZGYyYzIxYmRmNjk5MmFkOWY1ZjhlMjBjMjgy
MjE1YjBjNjk4NWM2Yi4uZjY4Y2U0NWIzZjNmNzllNjkyZTIwNmNlZjllODgyYWJiN2FlOTUzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5n
c0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0
cmluZ3NDb2NvYS5tbQpAQCAtMjY3LDYgKzI2NywxMiBAQCBTdHJpbmcgZmlsZUJ1dHRvbk5vTWVk
aWFGaWxlc1NlbGVjdGVkTGFiZWwoKQogewogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJubyBt
ZWRpYSBzZWxlY3RlZCAobXVsdGlwbGUpIiwgIlRleHQgdG8gZGlzcGxheSBpbiBmaWxlIGJ1dHRv
biB1c2VkIGluIEhUTUwgZm9ybXMgZm9yIG1lZGlhIGZpbGVzIHdoZW4gbm8gbWVkaWEgZmlsZXMg
YXJlIHNlbGVjdGVkIGFuZCB0aGUgYnV0dG9uIGFsbG93cyBtdWx0aXBsZSBmaWxlcyB0byBiZSBz
ZWxlY3RlZCIpOwogfQorCisKK1N0cmluZyBmb3JtQ29udHJvbERvbmVCdXR0b25UaXRsZSgpCit7
CisgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIkRvbmUiLCAiVGl0bGUgb2YgdGhlIERvbmUgYnV0
dG9uIGZvciBmb3JtIGNvbnRyb2xzLiIpOworfQogI2VuZGlmCiAKIFN0cmluZyB2YWxpZGF0aW9u
TWVzc2FnZVRvb0xvbmdUZXh0KGludCwgaW50IG1heExlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKaW5kZXggYTc1ODA3MzQ5ZGMxOGQ0YzViYzgzYzJiYjY1
OWRiZDY0OTk4M2UwMC4uMzU1YjY4NGQ4ZmQ4ODkzNDFmYzM4MDIzMDcxMDEyZmNhNGFmMDMzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKQEAgLTIxNiw2ICsy
MTYsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBVSURhdGVQaWNrZXJTdHlsZSkgewog
I2lmIEhBVkUoVUlEQVRFUElDS0VSX1NUWUxFKQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWR3
cml0ZSwgYXNzaWduKSBVSURhdGVQaWNrZXJTdHlsZSBwcmVmZXJyZWREYXRlUGlja2VyU3R5bGU7
CiAjZW5kaWYKKy0gKFVJRWRnZUluc2V0cylfYXBwbGllZEluc2V0c1RvRWRnZU9mQ29udGVudDsK
IEBlbmQKIAogQGludGVyZmFjZSBVSURldmljZSAoKQpAQCAtMTIxMiw2ICsxMjEzLDcgQEAgdHlw
ZWRlZiBOU19PUFRJT05TKE5TSW50ZWdlciwgVUlXS0RvY3VtZW50UmVxdWVzdEZsYWdzKSB7CiAK
IHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBfVUlDb250ZXh0TWVudUxheW91dCkgewogICAg
IF9VSUNvbnRleHRNZW51TGF5b3V0QWN0aW9uc09ubHkgPSAxLAorICAgIF9VSUNvbnRleHRNZW51
TGF5b3V0UHJldmlld09ubHkgPSAyLAogICAgIF9VSUNvbnRleHRNZW51TGF5b3V0Q29tcGFjdE1l
bnUgPSAzLAogICAgIF9VSUNvbnRleHRNZW51TGF5b3V0QXV0b21hdGljID0gMTAwLAogfTsKQEAg
LTEyMjAsNiArMTIyMiw4IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBfVUlDb250ZXh0
TWVudUxheW91dCkgewogQHByb3BlcnR5IChub25hdG9taWMpIF9VSUNvbnRleHRNZW51TGF5b3V0
IHByZWZlcnJlZExheW91dDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBVSUVkZ2VJbnNldHMgcHJl
ZmVycmVkRWRnZUluc2V0czsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGhhc0ludGVyYWN0
aXZlUHJldmlldzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHByZWZlcnNDZW50ZXJlZFBy
ZXZpZXdXaGVuQWN0aW9uc0FyZUFic2VudDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGln
bm9yZXNEZWZhdWx0U2l6aW5nUnVsZXM7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBO
U0FycmF5ICpwcmVmZXJyZWRCYWNrZ3JvdW5kRWZmZWN0czsKICsgKGluc3RhbmNldHlwZSlkZWZh
dWx0U3R5bGU7CiBAZW5kCkBAIC0xNDk0LDYgKzE0OTgsNyBAQCBleHRlcm4gTlNTdHJpbmcgKiBj
b25zdCBVSVByZXZpZXdEYXRhQXR0YWNobWVudExpc3RJc0NvbnRlbnRNYW5hZ2VkOwogI2VuZGlm
CiAKIFVJRWRnZUluc2V0cyBVSUVkZ2VJbnNldHNBZGQoVUlFZGdlSW5zZXRzIGxocywgVUlFZGdl
SW5zZXRzIHJocywgVUlSZWN0RWRnZSk7CitVSUVkZ2VJbnNldHMgVUlFZGdlSW5zZXRzU3VidHJh
Y3QoVUlFZGdlSW5zZXRzIGxocywgVUlFZGdlSW5zZXRzIHJocywgVUlSZWN0RWRnZSk7CiAKIGV4
dGVybiBOU1N0cmluZyAqY29uc3QgVUlCYWNrbGlnaHRMZXZlbENoYW5nZWROb3RpZmljYXRpb247
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCmluZGV4IGFkMTk3NmJmYTBiZDNjNDZjNWViMWI4MDEwNTdlMGIwNTE4
ZTQ1MmYuLjYwNzRhN2FiMzZmNjZmOTg3MTM4Mjc1NDNkODBiNTZhNTk3MDFhOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQpAQCAtODMzOCw3ICs4MzM4LDcgQEAgc3RhdGljIFJldGFpblB0cjxVSVRhcmdldGVk
UHJldmlldz4gY3JlYXRlVGFyZ2V0ZWRQcmV2aWV3KFVJSW1hZ2UgKmltYWdlLCBVSVZpZXcKICAg
ICByZXR1cm4gYWRvcHROUyhbW1VJVGFyZ2V0ZWRQcmV2aWV3IGFsbG9jXSBpbml0V2l0aFZpZXc6
aW1hZ2VWaWV3LmdldCgpIHBhcmFtZXRlcnM6cGFyYW1ldGVycy5nZXQoKSB0YXJnZXQ6dGFyZ2V0
LmdldCgpXSk7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8VUlUYXJnZXRlZFByZXZpZXc+IGNyZWF0
ZUZhbGxiYWNrVGFyZ2V0ZWRQcmV2aWV3KFVJVmlldyAqcm9vdFZpZXcsIFVJVmlldyAqY29udGFp
bmVyVmlldywgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBmcmFtZUluUm9vdFZpZXdDb29yZGlu
YXRlcykKK3N0YXRpYyBSZXRhaW5QdHI8VUlUYXJnZXRlZFByZXZpZXc+IGNyZWF0ZUZhbGxiYWNr
VGFyZ2V0ZWRQcmV2aWV3KFVJVmlldyAqcm9vdFZpZXcsIFVJVmlldyAqY29udGFpbmVyVmlldywg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBmcmFtZUluUm9vdFZpZXdDb29yZGluYXRlcywgVUlD
b2xvciAqYmFja2dyb3VuZENvbG9yKQogewogICAgIGlmICghY29udGFpbmVyVmlldy53aW5kb3cp
CiAgICAgICAgIHJldHVybiBuaWw7CkBAIC04MzQ3LDYgKzgzNDcsOSBAQCBzdGF0aWMgUmV0YWlu
UHRyPFVJVGFyZ2V0ZWRQcmV2aWV3PiBjcmVhdGVGYWxsYmFja1RhcmdldGVkUHJldmlldyhVSVZp
ZXcgKnJvb3RWaQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0g
YWRvcHROUyhbW1VJUHJldmlld1BhcmFtZXRlcnMgYWxsb2NdIGluaXRdKTsKKyAgICBpZiAoYmFj
a2dyb3VuZENvbG9yKQorICAgICAgICBbcGFyYW1ldGVycyBzZXRCYWNrZ3JvdW5kQ29sb3I6YmFj
a2dyb3VuZENvbG9yXTsKKwogICAgIFVJVmlldyAqc25hcHNob3RWaWV3ID0gW3Jvb3RWaWV3IHJl
c2l6YWJsZVNuYXBzaG90Vmlld0Zyb21SZWN0OmZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzIGFm
dGVyU2NyZWVuVXBkYXRlczpOTyB3aXRoQ2FwSW5zZXRzOlVJRWRnZUluc2V0c1plcm9dOwogCiAg
ICAgQ0dSZWN0IGZyYW1lSW5Db250YWluZXJWaWV3Q29vcmRpbmF0ZXMgPSBbcm9vdFZpZXcgY29u
dmVydFJlY3Q6ZnJhbWVJblJvb3RWaWV3Q29vcmRpbmF0ZXMgdG9WaWV3OmNvbnRhaW5lclZpZXdd
OwpAQCAtODM2NCw3ICs4MzY3LDE5IEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlUYXJnZXRlZFByZXZp
ZXc+IGNyZWF0ZUZhbGxiYWNrVGFyZ2V0ZWRQcmV2aWV3KFVJVmlldyAqcm9vdFZpCiAKIC0gKFVJ
VGFyZ2V0ZWRQcmV2aWV3ICopX2NyZWF0ZVRhcmdldGVkQ29udGV4dE1lbnVIaW50UHJldmlld0Zv
ckZvY3VzZWRFbGVtZW50CiB7Ci0gICAgUmV0YWluUHRyPFVJVGFyZ2V0ZWRQcmV2aWV3PiB0YXJn
ZXRlZFByZXZpZXcgPSBjcmVhdGVGYWxsYmFja1RhcmdldGVkUHJldmlldyhzZWxmLCBzZWxmLmNv
bnRhaW5lckZvckNvbnRleHRNZW51SGludFByZXZpZXdzLCBfZm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbi5pbnRlcmFjdGlvblJlY3QpOworICAgIGF1dG8gYmFja2dyb3VuZENvbG9yID0gWyZdKCkg
LT4gVUlDb2xvciAqIHsKKyAgICAgICAgc3dpdGNoIChfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlv
bi5lbGVtZW50VHlwZSkgeworICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlOgor
ICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpNb250aDoKKyAgICAgICAgY2FzZSBXZWJL
aXQ6OklucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKKyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0
VHlwZTo6VGltZToKKyAgICAgICAgICAgIHJldHVybiBVSUNvbG9yLmNsZWFyQ29sb3I7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICB9CisgICAgfSgp
OworCisgICAgYXV0byB0YXJnZXRlZFByZXZpZXcgPSBjcmVhdGVGYWxsYmFja1RhcmdldGVkUHJl
dmlldyhzZWxmLCBzZWxmLmNvbnRhaW5lckZvckNvbnRleHRNZW51SGludFByZXZpZXdzLCBfZm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5pbnRlcmFjdGlvblJlY3QsIGJhY2tncm91bmRDb2xvcik7
CiAKICAgICBbc2VsZiBfdXBkYXRlVGFyZ2V0ZWRQcmV2aWV3U2Nyb2xsVmlld1VzaW5nQ29udGFp
bmVyU2Nyb2xsaW5nTm9kZUlEOl9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmNvbnRhaW5lclNj
cm9sbGluZ05vZGVJRF07CiAKQEAgLTgzODcsNyArODQwMiw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8
VUlUYXJnZXRlZFByZXZpZXc+IGNyZWF0ZUZhbGxiYWNrVGFyZ2V0ZWRQcmV2aWV3KFVJVmlldyAq
cm9vdFZpCiAgICAgfQogCiAgICAgaWYgKCF0YXJnZXRlZFByZXZpZXcpCi0gICAgICAgIHRhcmdl
dGVkUHJldmlldyA9IGNyZWF0ZUZhbGxiYWNrVGFyZ2V0ZWRQcmV2aWV3KHNlbGYsIHNlbGYuY29u
dGFpbmVyRm9yQ29udGV4dE1lbnVIaW50UHJldmlld3MsIF9wb3NpdGlvbkluZm9ybWF0aW9uLmJv
dW5kcyk7CisgICAgICAgIHRhcmdldGVkUHJldmlldyA9IGNyZWF0ZUZhbGxiYWNrVGFyZ2V0ZWRQ
cmV2aWV3KHNlbGYsIHNlbGYuY29udGFpbmVyRm9yQ29udGV4dE1lbnVIaW50UHJldmlld3MsIF9w
b3NpdGlvbkluZm9ybWF0aW9uLmJvdW5kcywgbmlsKTsKIAogICAgIFtzZWxmIF91cGRhdGVUYXJn
ZXRlZFByZXZpZXdTY3JvbGxWaWV3VXNpbmdDb250YWluZXJTY3JvbGxpbmdOb2RlSUQ6X3Bvc2l0
aW9uSW5mb3JtYXRpb24uY29udGFpbmVyU2Nyb2xsaW5nTm9kZUlEXTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29u
dHJvbC5tbQppbmRleCAzMGQxNTY0M2ZhN2QyNDgyZThmNjk3YzQ1YzJhMDNlZGFiYWNmZTI1Li40
OGFjZjZkMmIwNTNjMTEyYTdhZGUwNzUwYTIzNTRiMmNhNWFhYmZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29u
dHJvbC5tbQpAQCAtMzMsNjAgKzMzLDI0NyBAQAogI2ltcG9ydCAiV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oIgogI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCi0jaW1wb3J0IDxVSUtpdC9VSUJhckJ1dHRvbkl0ZW0uaD4KICNp
bXBvcnQgPFVJS2l0L1VJRGF0ZVBpY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRT
dHJpbmdzLmg+CiAjaW1wb3J0IDxhbGdvcml0aG0+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAKLUBpbnRlcmZhY2UgV0tEYXRlVGltZUNvbnRleHRNZW51Vmlld0NvbnRyb2xsZXIgOiBVSVZp
ZXdDb250cm9sbGVyCitAY2xhc3MgV0tEYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyOworCitA
cHJvdG9jb2wgV0tEYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyRGVsZWdhdGUgPE5TT2JqZWN0
PgorLSAodm9pZClkYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyRGlkQ2hhbmdlRGF0ZTooV0tE
YXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyICopZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxl
cjsKKy0gKHZvaWQpZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlckRpZFByZXNzUmVzZXRCdXR0
b246KFdLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciAqKWRhdGVUaW1lUGlja2VyVmlld0Nv
bnRyb2xsZXI7CistICh2b2lkKWRhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXJEaWRQcmVzc0Rv
bmVCdXR0b246KFdLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciAqKWRhdGVUaW1lUGlja2Vy
Vmlld0NvbnRyb2xsZXI7CisKKy0gKEJPT0wpc2hvdWxkRm9yY2VHcmVnb3JpYW5DYWxlbmRhcjsK
K0BlbmQKKworQGludGVyZmFjZSBXS0RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgOiBVSVZp
ZXdDb250cm9sbGVyCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEZWxlZ2F0ZTooaWQ8V0tEYXRl
VGltZVBpY2tlclZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlOworQGVuZAorCitAaW1w
bGVtZW50YXRpb24gV0tEYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyIHsKKyAgICBDR1NpemUg
X2NvbnRlbnRTaXplOworCisgICAgUmV0YWluUHRyPFVJRGF0ZVBpY2tlcj4gX2RhdGVQaWNrZXI7
CisgICAgV2Vha09iakNQdHI8aWQgPFdLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlckRlbGVn
YXRlPj4gX2RlbGVnYXRlOworfQorCitzdGF0aWMgY29uc3QgQ0dGbG9hdCBrRGF0ZVRpbWVQaWNr
ZXJCdXR0b25Gb250U2l6ZSA9IDE3Oworc3RhdGljIGNvbnN0IENHRmxvYXQga0RhdGVUaW1lUGlj
a2VyVG9vbGJhckhlaWdodCA9IDQ0Oworc3RhdGljIGNvbnN0IENHRmxvYXQga0RhdGVUaW1lUGlj
a2VyU2VwYXJhdG9ySGVpZ2h0ID0gMTsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IGtEYXRlVGltZVBp
Y2tlclZpZXdNYXJnaW4gPSAxNjsKKworc3RhdGljIGNvbnN0IENHRmxvYXQga0RhdGVUaW1lUGlj
a2VyRGVmYXVsdFdpZHRoID0gMzIwOworc3RhdGljIGNvbnN0IENHRmxvYXQga0RhdGVUaW1lUGlj
a2VyVGltZUNvbnRyb2xXaWR0aCA9IDIxODsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IGtEYXRlVGlt
ZVBpY2tlclRpbWVDb250cm9sSGVpZ2h0ID0gMTcyOworCistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhEZWxlZ2F0ZTooaWQgPFdLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlPilk
ZWxlZ2F0ZQoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1
cm4gbmlsOworCisgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfZGF0ZVBpY2tlciA9
IGFkb3B0TlMoW1tVSURhdGVQaWNrZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbX2RhdGVQaWNrZXIg
YWRkVGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihkYXRlUGlja2VyQ2hhbmdlZDopIGZvckNv
bnRyb2xFdmVudHM6VUlDb250cm9sRXZlbnRWYWx1ZUNoYW5nZWRdOworICAgIFtfZGF0ZVBpY2tl
ciBzZXRUcmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFza0ludG9Db25zdHJhaW50czpOT107CisKKyAg
ICBpZiAoW19kZWxlZ2F0ZSBzaG91bGRGb3JjZUdyZWdvcmlhbkNhbGVuZGFyXSkKKyAgICAgICAg
W19kYXRlUGlja2VyIHNldENhbGVuZGFyOltOU0NhbGVuZGFyIGNhbGVuZGFyV2l0aElkZW50aWZp
ZXI6TlNDYWxlbmRhcklkZW50aWZpZXJHcmVnb3JpYW5dXTsKKworICAgIHJldHVybiBzZWxmOwor
fQorCistICh2b2lkKXZpZXdEaWRMb2FkCit7CisgICAgW3N1cGVyIHZpZXdEaWRMb2FkXTsKKwor
ICAgIENHU2l6ZSBjb250ZW50U2l6ZSA9IHNlbGYucHJlZmVycmVkQ29udGVudFNpemU7CisKKyAg
ICBhdXRvIGJhY2tncm91bmRWaWV3ID0gYWRvcHROUyhbW1VJVmlzdWFsRWZmZWN0VmlldyBhbGxv
Y10gaW5pdFdpdGhFZmZlY3Q6W1VJQmx1ckVmZmVjdCBlZmZlY3RXaXRoU3R5bGU6VUlCbHVyRWZm
ZWN0U3R5bGVTeXN0ZW1NYXRlcmlhbF1dKTsKKyAgICBbYmFja2dyb3VuZFZpZXcgc2V0RnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCBjb250ZW50U2l6ZS53aWR0aCwgY29udGVudFNpemUuaGVpZ2h0KV07
CisgICAgW3NlbGYudmlldyBhZGRTdWJ2aWV3OmJhY2tncm91bmRWaWV3LmdldCgpXTsKKworICAg
IFtbYmFja2dyb3VuZFZpZXcgY29udGVudFZpZXddIGFkZFN1YnZpZXc6X2RhdGVQaWNrZXIuZ2V0
KCldOworCisgICAgQ0dTaXplIGRhdGVQaWNrZXJTaXplID0gc2VsZi5wcmVmZXJyZWREYXRlUGlj
a2VyU2l6ZTsKKyAgICBVSUVkZ2VJbnNldHMgZGF0ZVBpY2tlckluc2V0cyA9IFtzZWxmIGRhdGVQ
aWNrZXJJbnNldHNdOworCisgICAgW05TTGF5b3V0Q29uc3RyYWludCBhY3RpdmF0ZUNvbnN0cmFp
bnRzOkBbCisgICAgICAgIFtbX2RhdGVQaWNrZXIgdG9wQW5jaG9yXSBjb25zdHJhaW50RXF1YWxU
b0FuY2hvcjpbYmFja2dyb3VuZFZpZXcgY29udGVudFZpZXddLnRvcEFuY2hvciBjb25zdGFudDpk
YXRlUGlja2VySW5zZXRzLnRvcF0sCisgICAgICAgIFtbX2RhdGVQaWNrZXIgbGVhZGluZ0FuY2hv
cl0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6W2JhY2tncm91bmRWaWV3IGNvbnRlbnRWaWV3XS5s
ZWFkaW5nQW5jaG9yIGNvbnN0YW50OmRhdGVQaWNrZXJJbnNldHMubGVmdF0sCisgICAgICAgIFtb
X2RhdGVQaWNrZXIgd2lkdGhBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6ZGF0ZVBp
Y2tlclNpemUud2lkdGhdLAorICAgICAgICBbW19kYXRlUGlja2VyIGhlaWdodEFuY2hvcl0gY29u
c3RyYWludEVxdWFsVG9Db25zdGFudDpkYXRlUGlja2VyU2l6ZS5oZWlnaHRdLAorICAgIF1dOwor
CisgICAgYXV0byB0b29sYmFyVmlldyA9IGFkb3B0TlMoW1tVSVZpZXcgYWxsb2NdIGluaXRdKTsK
KyAgICBbdG9vbGJhclZpZXcgc2V0VHJhbnNsYXRlc0F1dG9yZXNpemluZ01hc2tJbnRvQ29uc3Ry
YWludHM6Tk9dOworICAgIFtbYmFja2dyb3VuZFZpZXcgY29udGVudFZpZXddIGFkZFN1YnZpZXc6
dG9vbGJhclZpZXcuZ2V0KCldOworCisgICAgW05TTGF5b3V0Q29uc3RyYWludCBhY3RpdmF0ZUNv
bnN0cmFpbnRzOkBbCisgICAgICAgIFtbdG9vbGJhclZpZXcgYm90dG9tQW5jaG9yXSBjb25zdHJh
aW50RXF1YWxUb0FuY2hvcjpbYmFja2dyb3VuZFZpZXcgY29udGVudFZpZXddLmJvdHRvbUFuY2hv
cl0sCisgICAgICAgIFtbdG9vbGJhclZpZXcgbGVhZGluZ0FuY2hvcl0gY29uc3RyYWludEVxdWFs
VG9BbmNob3I6W2JhY2tncm91bmRWaWV3IGNvbnRlbnRWaWV3XS5sZWFkaW5nQW5jaG9yXSwKKyAg
ICAgICAgW1t0b29sYmFyVmlldyBoZWlnaHRBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3Rh
bnQ6a0RhdGVUaW1lUGlja2VyVG9vbGJhckhlaWdodF0sCisgICAgICAgIFtbdG9vbGJhclZpZXcg
d2lkdGhBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltiYWNrZ3JvdW5kVmlldyBjb250
ZW50Vmlld10ud2lkdGhBbmNob3JdLAorICAgIF1dOworCisgICAgYXV0byBzZXBhcmF0b3JWaWV3
ID0gYWRvcHROUyhbW1VJVmlldyBhbGxvY10gaW5pdF0pOworICAgIFtzZXBhcmF0b3JWaWV3IHNl
dEJhY2tncm91bmRDb2xvcjpVSUNvbG9yLnNlcGFyYXRvckNvbG9yXTsKKworICAgIE5TU3RyaW5n
ICpyZXNldFN0cmluZyA9IFdFQl9VSV9TVFJJTkdfS0VZKCJSZXNldCIsICJSZXNldCBCdXR0b24g
RGF0ZS9UaW1lIENvbnRleHQgTWVudSIsICJSZXNldCBidXR0b24gaW4gZGF0ZSBpbnB1dCBjb250
ZXh0IG1lbnUiKTsKKyAgICBVSUJ1dHRvbiAqcmVzZXRCdXR0b24gPSBbVUlCdXR0b24gYnV0dG9u
V2l0aFR5cGU6VUlCdXR0b25UeXBlU3lzdGVtXTsKKyAgICByZXNldEJ1dHRvbi50aXRsZUxhYmVs
LmZvbnQgPSBbVUlGb250IHN5c3RlbUZvbnRPZlNpemU6a0RhdGVUaW1lUGlja2VyQnV0dG9uRm9u
dFNpemVdOworICAgIFtyZXNldEJ1dHRvbiBzZXRUaXRsZTpyZXNldFN0cmluZyBmb3JTdGF0ZTpV
SUNvbnRyb2xTdGF0ZU5vcm1hbF07CisgICAgW3Jlc2V0QnV0dG9uIGFkZFRhcmdldDpzZWxmIGFj
dGlvbjpAc2VsZWN0b3IocmVzZXRCdXR0b25QcmVzc2VkOikgZm9yQ29udHJvbEV2ZW50czpVSUNv
bnRyb2xFdmVudFRvdWNoVXBJbnNpZGVdOworCisgICAgTlNTdHJpbmcgKmRvbmVTdHJpbmcgPSBX
ZWJDb3JlOjpmb3JtQ29udHJvbERvbmVCdXR0b25UaXRsZSgpOworICAgIFVJQnV0dG9uICpkb25l
QnV0dG9uID0gW1VJQnV0dG9uIGJ1dHRvbldpdGhUeXBlOlVJQnV0dG9uVHlwZVN5c3RlbV07Cisg
ICAgZG9uZUJ1dHRvbi50aXRsZUxhYmVsLmZvbnQgPSBbVUlGb250IGJvbGRTeXN0ZW1Gb250T2ZT
aXplOmtEYXRlVGltZVBpY2tlckJ1dHRvbkZvbnRTaXplXTsKKyAgICBbZG9uZUJ1dHRvbiBzZXRU
aXRsZTpkb25lU3RyaW5nIGZvclN0YXRlOlVJQ29udHJvbFN0YXRlTm9ybWFsXTsKKyAgICBbZG9u
ZUJ1dHRvbiBhZGRUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKGRvbmVCdXR0b25QcmVzc2Vk
OikgZm9yQ29udHJvbEV2ZW50czpVSUNvbnRyb2xFdmVudFRvdWNoVXBJbnNpZGVdOworCisgICAg
Zm9yIChVSVZpZXcgKnN1YnZpZXcgaW4gQFtzZXBhcmF0b3JWaWV3LmdldCgpLCByZXNldEJ1dHRv
biwgZG9uZUJ1dHRvbl0pIHsKKyAgICAgICAgc3Vidmlldy50cmFuc2xhdGVzQXV0b3Jlc2l6aW5n
TWFza0ludG9Db25zdHJhaW50cyA9IE5POworICAgICAgICBbdG9vbGJhclZpZXcgYWRkU3Vidmll
dzpzdWJ2aWV3XTsKKyAgICB9CisKKyAgICBbTlNMYXlvdXRDb25zdHJhaW50IGFjdGl2YXRlQ29u
c3RyYWludHM6QFsKKyAgICAgICAgW1tzZXBhcmF0b3JWaWV3IHRvcEFuY2hvcl0gY29uc3RyYWlu
dEVxdWFsVG9BbmNob3I6W3Rvb2xiYXJWaWV3IHRvcEFuY2hvcl1dLAorICAgICAgICBbW3NlcGFy
YXRvclZpZXcgbGVhZGluZ0FuY2hvcl0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6W3Rvb2xiYXJW
aWV3IGxlYWRpbmdBbmNob3JdXSwKKyAgICAgICAgW1tzZXBhcmF0b3JWaWV3IGhlaWdodEFuY2hv
cl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDprRGF0ZVRpbWVQaWNrZXJTZXBhcmF0b3JIZWln
aHRdLAorICAgICAgICBbW3NlcGFyYXRvclZpZXcgd2lkdGhBbmNob3JdIGNvbnN0cmFpbnRFcXVh
bFRvQW5jaG9yOlt0b29sYmFyVmlldyB3aWR0aEFuY2hvcl1dLAorICAgIF1dOworCisgICAgW05T
TGF5b3V0Q29uc3RyYWludCBhY3RpdmF0ZUNvbnN0cmFpbnRzOkBbCisgICAgICAgIFtyZXNldEJ1
dHRvbi5sZWFkaW5nQW5jaG9yIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOlt0b29sYmFyVmlldyBs
ZWFkaW5nQW5jaG9yXSBjb25zdGFudDprRGF0ZVRpbWVQaWNrZXJWaWV3TWFyZ2luXSwKKyAgICAg
ICAgW3Jlc2V0QnV0dG9uLnRvcEFuY2hvciBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbdG9vbGJh
clZpZXcgdG9wQW5jaG9yXV0sCisgICAgICAgIFtyZXNldEJ1dHRvbi5ib3R0b21BbmNob3IgY29u
c3RyYWludEVxdWFsVG9BbmNob3I6W3Rvb2xiYXJWaWV3IGJvdHRvbUFuY2hvcl1dLAorICAgIF1d
OworCisgICAgW05TTGF5b3V0Q29uc3RyYWludCBhY3RpdmF0ZUNvbnN0cmFpbnRzOkBbCisgICAg
ICAgIFtkb25lQnV0dG9uLnRyYWlsaW5nQW5jaG9yIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOlt0
b29sYmFyVmlldyB0cmFpbGluZ0FuY2hvcl0gY29uc3RhbnQ6LWtEYXRlVGltZVBpY2tlclZpZXdN
YXJnaW5dLAorICAgICAgICBbZG9uZUJ1dHRvbi50b3BBbmNob3IgY29uc3RyYWludEVxdWFsVG9B
bmNob3I6W3Rvb2xiYXJWaWV3IHRvcEFuY2hvcl1dLAorICAgICAgICBbZG9uZUJ1dHRvbi5ib3R0
b21BbmNob3IgY29uc3RyYWludEVxdWFsVG9BbmNob3I6W3Rvb2xiYXJWaWV3IGJvdHRvbUFuY2hv
cl1dLAorICAgIF1dOworfQorCistICh2b2lkKWRhdGVQaWNrZXJDaGFuZ2VkOihpZClzZW5kZXIK
K3sKKyAgICBbX2RlbGVnYXRlIGRhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXJEaWRDaGFuZ2VE
YXRlOnNlbGZdOworfQorCistICh2b2lkKXJlc2V0QnV0dG9uUHJlc3NlZDooaWQpc2VuZGVyCit7
CisgICAgW19kZWxlZ2F0ZSBkYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyRGlkUHJlc3NSZXNl
dEJ1dHRvbjpzZWxmXTsKK30KKworLSAodm9pZClkb25lQnV0dG9uUHJlc3NlZDooaWQpc2VuZGVy
Cit7CisgICAgW19kZWxlZ2F0ZSBkYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyRGlkUHJlc3NE
b25lQnV0dG9uOnNlbGZdOworfQorCistIChVSUVkZ2VJbnNldHMpZGF0ZVBpY2tlckluc2V0cwor
eworICAgIFVJRWRnZUluc2V0cyBleHBlY3RlZEluc2V0cyA9IFVJRWRnZUluc2V0c01ha2Uoa0Rh
dGVUaW1lUGlja2VyVmlld01hcmdpbiwga0RhdGVUaW1lUGlja2VyVmlld01hcmdpbiwga0RhdGVU
aW1lUGlja2VyVmlld01hcmdpbiwga0RhdGVUaW1lUGlja2VyVmlld01hcmdpbik7CisgICAgVUlF
ZGdlSW5zZXRzIGFwcGxpZWRJbnNldHMgPSBbX2RhdGVQaWNrZXIgX2FwcGxpZWRJbnNldHNUb0Vk
Z2VPZkNvbnRlbnRdOworICAgIHJldHVybiBVSUVkZ2VJbnNldHNTdWJ0cmFjdChleHBlY3RlZElu
c2V0cywgYXBwbGllZEluc2V0cywgVUlSZWN0RWRnZUFsbCk7Cit9CisKKy0gKENHU2l6ZSlwcmVm
ZXJyZWREYXRlUGlja2VyU2l6ZQoreworICAgIENHU2l6ZSBmaXR0aW5nU2l6ZSA9IFVJTGF5b3V0
Rml0dGluZ0NvbXByZXNzZWRTaXplOworICAgIFVJTGF5b3V0UHJpb3JpdHkgaG9yaXpvbnRhbFBy
aW9yaXR5ID0gVUlMYXlvdXRQcmlvcml0eUZpdHRpbmdTaXplTGV2ZWw7CisgICAgVUlMYXlvdXRQ
cmlvcml0eSB2ZXJ0aWNhbFByaW9yaXR5ID0gVUlMYXlvdXRQcmlvcml0eUZpdHRpbmdTaXplTGV2
ZWw7CisgICAgaWYgKFtfZGF0ZVBpY2tlciBkYXRlUGlja2VyTW9kZV0gIT0gVUlEYXRlUGlja2Vy
TW9kZVRpbWUpCisgICAgICAgIGZpdHRpbmdTaXplLndpZHRoID0ga0RhdGVUaW1lUGlja2VyRGVm
YXVsdFdpZHRoOworICAgIGVsc2UgeworICAgICAgICBmaXR0aW5nU2l6ZS53aWR0aCA9IGtEYXRl
VGltZVBpY2tlclRpbWVDb250cm9sV2lkdGg7CisgICAgICAgIGZpdHRpbmdTaXplLmhlaWdodCA9
IGtEYXRlVGltZVBpY2tlclRpbWVDb250cm9sSGVpZ2h0OworICAgICAgICBob3Jpem9udGFsUHJp
b3JpdHkgPSBVSUxheW91dFByaW9yaXR5UmVxdWlyZWQ7CisgICAgICAgIHZlcnRpY2FsUHJpb3Jp
dHkgPSBVSUxheW91dFByaW9yaXR5UmVxdWlyZWQ7CisgICAgfQorCisgICAgQ0dTaXplIGxheW91
dFNpemUgPSBbX2RhdGVQaWNrZXIgc3lzdGVtTGF5b3V0U2l6ZUZpdHRpbmdTaXplOmZpdHRpbmdT
aXplIHdpdGhIb3Jpem9udGFsRml0dGluZ1ByaW9yaXR5Omhvcml6b250YWxQcmlvcml0eSB2ZXJ0
aWNhbEZpdHRpbmdQcmlvcml0eTp2ZXJ0aWNhbFByaW9yaXR5XTsKKyAgICByZXR1cm4gbGF5b3V0
U2l6ZTsKK30KKworLSAoQ0dTaXplKXByZWZlcnJlZENvbnRlbnRTaXplCit7CisgICAgLy8gQ2Fj
aGUgdGhlIGNvbnRlbnQgc2l6ZSB0byB3b3JrYXJvdW5kIHJkYXI6Ly83NDc0OTk0Mi4KKyAgICBp
ZiAoQ0dTaXplRXF1YWxUb1NpemUoX2NvbnRlbnRTaXplLCBDR1NpemVaZXJvKSkgeworICAgICAg
ICBDR1NpemUgZGF0ZVBpY2tlclNpemUgPSBbc2VsZiBwcmVmZXJyZWREYXRlUGlja2VyU2l6ZV07
CisgICAgICAgIFVJRWRnZUluc2V0cyBkYXRlUGlja2VySW5zZXRzID0gW3NlbGYgZGF0ZVBpY2tl
ckluc2V0c107CisKKyAgICAgICAgX2NvbnRlbnRTaXplID0gQ0dTaXplTWFrZShkYXRlUGlja2Vy
U2l6ZS53aWR0aCArIGRhdGVQaWNrZXJJbnNldHMubGVmdCArIGRhdGVQaWNrZXJJbnNldHMucmln
aHQsIGRhdGVQaWNrZXJTaXplLmhlaWdodCArIGtEYXRlVGltZVBpY2tlclRvb2xiYXJIZWlnaHQg
KyBkYXRlUGlja2VySW5zZXRzLnRvcCArIGRhdGVQaWNrZXJJbnNldHMuYm90dG9tKTsKKyAgICB9
CisKKyAgICByZXR1cm4gX2NvbnRlbnRTaXplOworfQorCistIChOU0RhdGUgKilkYXRlCit7Cisg
ICAgcmV0dXJuIFtfZGF0ZVBpY2tlciBkYXRlXTsKK30KKworLSAodm9pZClzZXREYXRlOihOU0Rh
dGUgKilkYXRlCit7CisgICAgW19kYXRlUGlja2VyIHNldERhdGU6ZGF0ZV07Cit9CisKKy0gKHZv
aWQpc2V0RGF0ZVBpY2tlck1vZGU6KFVJRGF0ZVBpY2tlck1vZGUpbW9kZQoreworICAgIFtfZGF0
ZVBpY2tlciBzZXREYXRlUGlja2VyTW9kZTptb2RlXTsKKworI2lmIEhBVkUoVUlEQVRFUElDS0VS
X1NUWUxFKQorICAgIGlmIChtb2RlID09IFVJRGF0ZVBpY2tlck1vZGVUaW1lIHx8IG1vZGUgPT0g
KFVJRGF0ZVBpY2tlck1vZGUpVUlEYXRlUGlja2VyTW9kZVllYXJBbmRNb250aCkKKyAgICAgICAg
W19kYXRlUGlja2VyIHNldFByZWZlcnJlZERhdGVQaWNrZXJTdHlsZTpVSURhdGVQaWNrZXJTdHls
ZVdoZWVsc107CisgICAgZWxzZQorICAgICAgICBbX2RhdGVQaWNrZXIgc2V0UHJlZmVycmVkRGF0
ZVBpY2tlclN0eWxlOlVJRGF0ZVBpY2tlclN0eWxlSW5saW5lXTsKKyNlbmRpZgorfQorCistIChO
U1RpbWVab25lICopdGltZVpvbmUKK3sKKyAgICByZXR1cm4gW19kYXRlUGlja2VyIHRpbWVab25l
XTsKK30KKworLSAodm9pZClzZXRUaW1lWm9uZTooTlNUaW1lWm9uZSAqKXRpbWVab25lCit7Cisg
ICAgcmV0dXJuIFtfZGF0ZVBpY2tlciBzZXRUaW1lWm9uZTp0aW1lWm9uZV07Cit9CisKKy0gKE5T
Q2FsZW5kYXIgKiljYWxlbmRhcgoreworICAgIHJldHVybiBbX2RhdGVQaWNrZXIgY2FsZW5kYXJd
OworfQorCiBAZW5kCiAKIEBpbnRlcmZhY2UgV0tEYXRlVGltZVBpY2tlciA6IE5TT2JqZWN0PFdL
Rm9ybUNvbnRyb2wKICNpZiBVU0UoVUlDT05URVhUTUVOVSkKICwgVUlDb250ZXh0TWVudUludGVy
YWN0aW9uRGVsZWdhdGUKICNlbmRpZgorLCBXS0RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZQogPiB7Ci0gICAgUmV0YWluUHRyPFVJRGF0ZVBpY2tlcj4gX2RhdGVQaWNrZXI7CiAg
ICAgTlNTdHJpbmcgKl9mb3JtYXRTdHJpbmc7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfaW5p
dGlhbFZhbHVlOwogICAgIE5TVGltZUludGVydmFsIF9pbml0aWFsVmFsdWVBc051bWJlcjsKICAg
ICBCT09MIF9zaG91bGRSZW1vdmVUaW1lWm9uZUluZm9ybWF0aW9uOwotICAgIEJPT0wgX2lzVGlt
ZUlucHV0OwogICAgIFdLQ29udGVudFZpZXcgKl92aWV3OwogICAgIENHUG9pbnQgX2ludGVyYWN0
aW9uUG9pbnQ7Ci0gICAgUmV0YWluUHRyPFdLRGF0ZVRpbWVDb250ZXh0TWVudVZpZXdDb250cm9s
bGVyPiBfdmlld0NvbnRyb2xsZXI7CiAjaWYgVVNFKFVJQ09OVEVYVE1FTlUpCiAgICAgUmV0YWlu
UHRyPFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbj4gX2RhdGVUaW1lQ29udGV4dE1lbnVJbnRlcmFj
dGlvbjsKICNlbmRpZgotICAgIEJPT0wgX3ByZXNlbnRpbmc7Ci0gICAgQk9PTCBfcHJlc2Vydmlu
Z0ZvY3VzOworICAgIFJldGFpblB0cjxXS0RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXI+IF9k
YXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyOwogfQorCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldyBkYXRlUGlja2VyTW9kZTooVUlEYXRlUGlja2Vy
TW9kZSltb2RlOwotLSAoV0tEYXRlVGltZUNvbnRleHRNZW51Vmlld0NvbnRyb2xsZXIgKil2aWV3
Q29udHJvbGxlcjsKKwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAq
Y2FsZW5kYXJUeXBlOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBkb3VibGUgaG91
cjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgZG91YmxlIG1pbnV0ZTsKIC0gKHZv
aWQpc2V0SG91cjooTlNJbnRlZ2VyKWhvdXIgbWludXRlOihOU0ludGVnZXIpbWludXRlOwotQGVu
ZAotCi1AaW1wbGVtZW50YXRpb24gV0tEYXRlVGltZUNvbnRleHRNZW51Vmlld0NvbnRyb2xsZXIK
LQotLSAoQ0dTaXplKXByZWZlcnJlZENvbnRlbnRTaXplCi17Ci0gICAgLy8gRklYTUU6IFdvcmth
cm91bmQsIHNob3VsZCBiZSBhYmxlIHRvIGJlIHJlYWRkcmVzc2VkIGFmdGVyIDxyZGFyOi8vcHJv
YmxlbS82NDE0MzUzND4KLSAgICBVSVZpZXcgKnZpZXcgPSBzZWxmLnZpZXcuc3Vidmlld3NbMF07
Ci0gICAgaWYgKFVJRWRnZUluc2V0c0VxdWFsVG9FZGdlSW5zZXRzKHZpZXcubGF5b3V0TWFyZ2lu
cywgVUlFZGdlSW5zZXRzWmVybykpIHsKLSAgICAgICAgdmlldy50cmFuc2xhdGVzQXV0b3Jlc2l6
aW5nTWFza0ludG9Db25zdHJhaW50cyA9IE5POwotICAgICAgICBbdmlldyBsYXlvdXRJZk5lZWRl
ZF07Ci0gICAgICAgIHZpZXcudHJhbnNsYXRlc0F1dG9yZXNpemluZ01hc2tJbnRvQ29uc3RyYWlu
dHMgPSBZRVM7Ci0gICAgICAgIHZpZXcubGF5b3V0TWFyZ2lucyA9IFVJRWRnZUluc2V0c01ha2Uo
MTYsIDE2LCAxNiwgMTYpOwotICAgIH0KLSAgICBhdXRvIHNpemUgPSBbdmlldyBzeXN0ZW1MYXlv
dXRTaXplRml0dGluZ1NpemU6VUlMYXlvdXRGaXR0aW5nQ29tcHJlc3NlZFNpemVdOwotICAgIAot
ICAgIHNpemUud2lkdGggPSBzdGQ6Om1heDxDR0Zsb2F0PihzaXplLndpZHRoLCAyNTAuMCk7Ci0g
ICAgcmV0dXJuIHNpemU7Ci19CiAKIEBlbmQKIApAQCAtOTcsMjcgKzI4NCwxNyBAQCBzdGF0aWMg
TlNTdHJpbmcgKiBjb25zdCBrTW9udGhGb3JtYXRTdHJpbmcgPSBAInl5eXktTU0iOyAvLyAiMjAx
MS0wMSIuCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBrVGltZUZvcm1hdFN0cmluZyA9IEAiSEg6
bW0iOyAvLyAiMTM6NDUiLgogc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIGtNaWxsaXNlY29u
ZHNQZXJTZWNvbmQgPSAxMDAwOwogCi0jaWYgSEFWRShVSURBVEVQSUNLRVJfU1RZTEUpCi0tIChV
SURhdGVQaWNrZXJTdHlsZSlkYXRlUGlja2VyU3R5bGUKLXsKLSAgICBzd2l0Y2ggKF92aWV3LmZv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKLSAgICBjYXNlIFdlYktpdDo6
SW5wdXRUeXBlOjpNb250aDoKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUaW1lOgotICAg
ICAgICByZXR1cm4gVUlEYXRlUGlja2VyU3R5bGVXaGVlbHM7Ci0gICAgZGVmYXVsdDoKLSAgICAg
ICAgcmV0dXJuIFVJRGF0ZVBpY2tlclN0eWxlSW5saW5lOwotICAgIH0KLX0KLSNlbmRpZgorc3Rh
dGljIGNvbnN0IENHRmxvYXQga0RhdGVUaW1lUGlja2VyQ29udHJvbE1hcmdpbiA9IDY7CiAKIC0g
KGlkKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcgZGF0ZVBpY2tlck1vZGU6KFVJ
RGF0ZVBpY2tlck1vZGUpbW9kZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQog
ICAgICAgICByZXR1cm4gbmlsOworCiAgICAgX3ZpZXcgPSB2aWV3OwogICAgIF9pbnRlcmFjdGlv
blBvaW50ID0gW192aWV3IGxhc3RJbnRlcmFjdGlvbkxvY2F0aW9uXTsKICAgICBfc2hvdWxkUmVt
b3ZlVGltZVpvbmVJbmZvcm1hdGlvbiA9IE5POwotICAgIF9pc1RpbWVJbnB1dCA9IE5POworCiAg
ICAgc3dpdGNoICh2aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsK
ICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlOgogICAgICAgICBfZm9ybWF0U3RyaW5n
ID0ga0RhdGVGb3JtYXRTdHJpbmc7CkBAIC0xMjcsNyArMzA0LDYgQEAgc3RhdGljIGNvbnN0IE5T
VGltZUludGVydmFsIGtNaWxsaXNlY29uZHNQZXJTZWNvbmQgPSAxMDAwOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUaW1lOgogICAgICAgICBfZm9ybWF0U3Ry
aW5nID0ga1RpbWVGb3JtYXRTdHJpbmc7Ci0gICAgICAgIF9pc1RpbWVJbnB1dCA9IFlFUzsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoK
ICAgICAgICAgX3Nob3VsZFJlbW92ZVRpbWVab25lSW5mb3JtYXRpb24gPSBZRVM7CkBAIC0xMzUs
MjUgKzMxMSw3OSBAQCBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwga01pbGxpc2Vjb25kc1Bl
clNlY29uZCA9IDEwMDA7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IAotICAgIF9kYXRlUGlja2VyID0gYWRvcHROUyhbW1VJRGF0ZVBpY2tlciBhbGxvY10gaW5pdF0p
OwogCi0gICAgW19kYXRlUGlja2VyIHNldERhdGVQaWNrZXJNb2RlOm1vZGVdOwotICAgIFtfZGF0
ZVBpY2tlciBzZXRIaWRkZW46Tk9dOwotICAgIAotI2lmIEhBVkUoVUlEQVRFUElDS0VSX1NUWUxF
KQotICAgIFtfZGF0ZVBpY2tlciBzZXRQcmVmZXJyZWREYXRlUGlja2VyU3R5bGU6W3NlbGYgZGF0
ZVBpY2tlclN0eWxlXV07Ci0jZW5kaWYKLSAgICBpZiAoW3NlbGYgc2hvdWxkUHJlc2VudEdyZWdv
cmlhbkNhbGVuZGFyOnZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbl0pCi0gICAgICAgIF9k
YXRlUGlja2VyLmdldCgpLmNhbGVuZGFyID0gW05TQ2FsZW5kYXIgY2FsZW5kYXJXaXRoSWRlbnRp
ZmllcjpOU0NhbGVuZGFySWRlbnRpZmllckdyZWdvcmlhbl07Ci0gICAgCi0gICAgW19kYXRlUGlj
a2VyIGFkZFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX2RhdGVDaGFuZ2VIYW5kbGVyOikg
Zm9yQ29udHJvbEV2ZW50czpVSUNvbnRyb2xFdmVudFZhbHVlQ2hhbmdlZF07Ci0gICAgCisgICAg
X2RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV0tEYXRlVGltZVBpY2tl
clZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOnNlbGZdKTsKKyAgICBbX2Rh
dGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgc2V0RGF0ZVBpY2tlck1vZGU6bW9kZV07CisKICAg
ICByZXR1cm4gc2VsZjsKIH0KIAogI2lmIFVTRShVSUNPTlRFWFRNRU5VKQogCistIChVSUVkZ2VJ
bnNldHMpX3ByZWZlcnJlZEVkZ2VJbnNldHNGb3JEYXRlVGltZVBpY2tlcgoreworICAgIENHU2l6
ZSBwaWNrZXJTaXplID0gW19kYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyIHByZWZlcnJlZENv
bnRlbnRTaXplXTsKKyAgICBDR1JlY3Qgd2luZG93Qm91bmRzID0gX3ZpZXcudGV4dEVmZmVjdHNX
aW5kb3cuYm91bmRzOworICAgIENHUmVjdCBlbGVtZW50RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVz
ID0gW192aWV3IGNvbnZlcnRSZWN0Ol92aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uaW50
ZXJhY3Rpb25SZWN0IHRvVmlldzpuaWxdOworCisgICAgLy8gQXR0ZW1wdCB0byBwcmVzZW50IHRo
ZSBkYXRlIHBpY2tlciBpbiBhIHdheSB0aGF0IGRvZXMgbm90IG9ic2N1cmUgdGhlIGVsZW1lbnQu
CisKKyAgICBDR0Zsb2F0IHRvcEluc2V0Rm9yQm90dG9tQWxpZ25tZW50ID0gQ0dSZWN0R2V0TWF4
WShlbGVtZW50RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzKSArIGtEYXRlVGltZVBpY2tlckNvbnRy
b2xNYXJnaW47CisgICAgQ0dGbG9hdCByaWdodEluc2V0Rm9yUmlnaHRBbGlnbm1lbnQgPSBDR1Jl
Y3RHZXRXaWR0aCh3aW5kb3dCb3VuZHMpIC0gQ0dSZWN0R2V0TWF4WChlbGVtZW50RnJhbWVJbldp
bmRvd0Nvb3JkaW5hdGVzKTsKKworICAgIEJPT0wgY2FuUHJlc2VudEJlbG93RWxlbWVudCA9ICh0
b3BJbnNldEZvckJvdHRvbUFsaWdubWVudCArIHBpY2tlclNpemUuaGVpZ2h0KSA8IENHUmVjdEdl
dEhlaWdodCh3aW5kb3dCb3VuZHMpOworICAgIEJPT0wgY2FuQWxpZ25Ub0VsZW1lbnRSaWdodCA9
IChyaWdodEluc2V0Rm9yUmlnaHRBbGlnbm1lbnQgKyBwaWNrZXJTaXplLndpZHRoKSA8IENHUmVj
dEdldFdpZHRoKHdpbmRvd0JvdW5kcyk7CisKKyAgICAvLyBUcnkgdG8gcHJlc2VudCB0aGUgcGlj
a2VyIGZyb20gdGhlIGJvdHRvbSByaWdodCBvZiB0aGUgZWxlbWVudC4KKyAgICBpZiAoY2FuUHJl
c2VudEJlbG93RWxlbWVudCAmJiBjYW5BbGlnblRvRWxlbWVudFJpZ2h0KQorICAgICAgICByZXR1
cm4gVUlFZGdlSW5zZXRzTWFrZSh0b3BJbnNldEZvckJvdHRvbUFsaWdubWVudCwgMCwgMCwgcmln
aHRJbnNldEZvclJpZ2h0QWxpZ25tZW50KTsKKworICAgIENHRmxvYXQgbGVmdEluc2V0Rm9yTGVm
dEFsaWdubWVudCA9IENHUmVjdEdldE1pblgoZWxlbWVudEZyYW1lSW5XaW5kb3dDb29yZGluYXRl
cyk7CisKKyAgICBCT09MIGNhbkFsaWduVG9FbGVtZW50TGVmdCA9IChsZWZ0SW5zZXRGb3JMZWZ0
QWxpZ25tZW50ICsgcGlja2VyU2l6ZS53aWR0aCkgPD0gQ0dSZWN0R2V0V2lkdGgod2luZG93Qm91
bmRzKTsKKworICAgIC8vIFRyeSB0byBwcmVzZW50IHRoZSBwaWNrZXIgZnJvbSB0aGUgYm90dG9t
IGxlZnQgb2YgdGhlIGVsZW1lbnQuCisgICAgaWYgKGNhblByZXNlbnRCZWxvd0VsZW1lbnQgJiYg
Y2FuQWxpZ25Ub0VsZW1lbnRMZWZ0KQorICAgICAgICByZXR1cm4gVUlFZGdlSW5zZXRzTWFrZSh0
b3BJbnNldEZvckJvdHRvbUFsaWdubWVudCwgbGVmdEluc2V0Rm9yTGVmdEFsaWdubWVudCwgMCwg
MCk7CisKKyAgICAvLyBUcnkgdG8gcHJlc2VudCB0aGUgcGlja2VyIHVuZGVybmVhdGggdGhlIGVs
ZW1lbnQuCisgICAgaWYgKGNhblByZXNlbnRCZWxvd0VsZW1lbnQpCisgICAgICAgIHJldHVybiBV
SUVkZ2VJbnNldHNNYWtlKHRvcEluc2V0Rm9yQm90dG9tQWxpZ25tZW50LCAwLCAwLCAwKTsKKwor
ICAgIENHRmxvYXQgYm90dG9tSW5zZXRGb3JUb3BBbGlnbm1lbnQgPSBDR1JlY3RHZXRIZWlnaHQo
d2luZG93Qm91bmRzKSAtIENHUmVjdEdldE1pblkoZWxlbWVudEZyYW1lSW5XaW5kb3dDb29yZGlu
YXRlcykgKyBrRGF0ZVRpbWVQaWNrZXJDb250cm9sTWFyZ2luOworCisgICAgQk9PTCBjYW5QcmVz
ZW50QWJvdmVFbGVtZW50ID0gKGJvdHRvbUluc2V0Rm9yVG9wQWxpZ25tZW50ICsgcGlja2VyU2l6
ZS5oZWlnaHQpIDwgQ0dSZWN0R2V0SGVpZ2h0KHdpbmRvd0JvdW5kcyk7CisKKyAgICAvLyBUcnkg
dG8gcHJlc2VudCB0aGUgcGlja2VyIGZyb20gdGhlIHRvcCByaWdodCBvZiB0aGUgZWxlbWVudC4K
KyAgICBpZiAoY2FuUHJlc2VudEFib3ZlRWxlbWVudCAmJiBjYW5BbGlnblRvRWxlbWVudFJpZ2h0
KQorICAgICAgICByZXR1cm4gVUlFZGdlSW5zZXRzTWFrZSgwLCAwLCBib3R0b21JbnNldEZvclRv
cEFsaWdubWVudCwgcmlnaHRJbnNldEZvclJpZ2h0QWxpZ25tZW50KTsKKworICAgIC8vIFRyeSB0
byBwcmVzZW50IHRoZSBwaWNrZXIgZnJvbSB0aGUgdG9wIGxlZnQgb2YgdGhlIGVsZW1lbnQuCisg
ICAgaWYgKGNhblByZXNlbnRBYm92ZUVsZW1lbnQgJiYgY2FuQWxpZ25Ub0VsZW1lbnRMZWZ0KQor
ICAgICAgICByZXR1cm4gVUlFZGdlSW5zZXRzTWFrZSgwLCBsZWZ0SW5zZXRGb3JMZWZ0QWxpZ25t
ZW50LCBib3R0b21JbnNldEZvclRvcEFsaWdubWVudCwgMCk7CisKKyAgICAvLyBUcnkgdG8gcHJl
c2VudCB0aGUgcGlja2VyIGFib3ZlIHRoZSBlbGVtZW50LgorICAgIGlmIChjYW5QcmVzZW50QWJv
dmVFbGVtZW50KQorICAgICAgICByZXR1cm4gVUlFZGdlSW5zZXRzTWFrZSgwLCAwLCBib3R0b21J
bnNldEZvclRvcEFsaWdubWVudCwgMCk7CisKKyAgICBDR0Zsb2F0IHJpZ2h0SW5zZXRGb3JQcmVz
ZW50aW5nQmVzaWRlRWxlbWVudExlZnQgPSBDR1JlY3RHZXRXaWR0aCh3aW5kb3dCb3VuZHMpIC0g
Q0dSZWN0R2V0TWluWChlbGVtZW50RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzKSArIGtEYXRlVGlt
ZVBpY2tlckNvbnRyb2xNYXJnaW47CisgICAgQk9PTCBjYW5QcmVzZW50QmVzaWRlRWxlbWVudExl
ZnQgPSAocmlnaHRJbnNldEZvclByZXNlbnRpbmdCZXNpZGVFbGVtZW50TGVmdCArIHBpY2tlclNp
emUud2lkdGgpIDwgQ0dSZWN0R2V0V2lkdGgod2luZG93Qm91bmRzKTsKKworICAgIC8vIFRyeSB0
byBwcmVzZW50IHRoZSBwaWNrZXIgdG8gdGhlIGxlZnQgb2YgdGhlIGVsZW1lbnQuCisgICAgaWYg
KGNhblByZXNlbnRCZXNpZGVFbGVtZW50TGVmdCkKKyAgICAgICAgcmV0dXJuIFVJRWRnZUluc2V0
c01ha2UoMCwgMCwgMCwgcmlnaHRJbnNldEZvclByZXNlbnRpbmdCZXNpZGVFbGVtZW50TGVmdCk7
CisKKyAgICBDR0Zsb2F0IGxlZnRJbnNldEZvclByZXNlbnRpbmdCZXNpZGVFbGVtZW50UmlnaHQg
PSBDR1JlY3RHZXRNYXhYKGVsZW1lbnRGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMpICsga0RhdGVU
aW1lUGlja2VyQ29udHJvbE1hcmdpbjsKKyAgICBCT09MIGNhblByZXNlbnRCZXNpZGVFbGVtZW50
UmlnaHQgPSAobGVmdEluc2V0Rm9yUHJlc2VudGluZ0Jlc2lkZUVsZW1lbnRSaWdodCArIHBpY2tl
clNpemUud2lkdGgpIDwgQ0dSZWN0R2V0V2lkdGgod2luZG93Qm91bmRzKTsKKworICAgIC8vIFRy
eSB0byBwcmVzZW50IHRoZSBwaWNrZXIgdG8gdGhlIHJpZ2h0IG9mIHRoZSBlbGVtZW50LgorICAg
IGlmIChjYW5QcmVzZW50QmVzaWRlRWxlbWVudFJpZ2h0KQorICAgICAgICByZXR1cm4gVUlFZGdl
SW5zZXRzTWFrZSgwLCBsZWZ0SW5zZXRGb3JQcmVzZW50aW5nQmVzaWRlRWxlbWVudFJpZ2h0LCAw
LCAwKTsKKworICAgIC8vIFByZXNlbnQgdGhlIHBpY2tlciBmcm9tIHRoZSBjZW50ZXIgb2YgdGhl
IGVsZW1lbnQuCisgICAgcmV0dXJuIFVJRWRnZUluc2V0c1plcm87Cit9CisKIC0gKFVJVGFyZ2V0
ZWRQcmV2aWV3ICopY29udGV4dE1lbnVJbnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUludGVyYWN0
aW9uICopaW50ZXJhY3Rpb24gcHJldmlld0ZvckhpZ2hsaWdodGluZ01lbnVXaXRoQ29uZmlndXJh
dGlvbjooVUlDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCiB7CiAgICAg
cmV0dXJuIFtfdmlldyBfY3JlYXRlVGFyZ2V0ZWRDb250ZXh0TWVudUhpbnRQcmV2aWV3Rm9yRm9j
dXNlZEVsZW1lbnRdOwpAQCAtMTY0LDU4ICszOTQsMTcgQEAgc3RhdGljIGNvbnN0IE5TVGltZUlu
dGVydmFsIGtNaWxsaXNlY29uZHNQZXJTZWNvbmQgPSAxMDAwOwogICAgIF9VSUNvbnRleHRNZW51
U3R5bGUgKnN0eWxlID0gW19VSUNvbnRleHRNZW51U3R5bGUgZGVmYXVsdFN0eWxlXTsKICAgICBz
dHlsZS5oYXNJbnRlcmFjdGl2ZVByZXZpZXcgPSBZRVM7CiAgICAgc3R5bGUucHJlZmVycmVkQmFj
a2dyb3VuZEVmZmVjdHMgPSBAWyBbVUlWaXN1YWxFZmZlY3QgZW1wdHlFZmZlY3RdIF07Ci0gICAg
c3R5bGUucHJlZmVycmVkTGF5b3V0ID0gX1VJQ29udGV4dE1lbnVMYXlvdXRBdXRvbWF0aWM7Cisg
ICAgc3R5bGUucHJlZmVycmVkTGF5b3V0ID0gX1VJQ29udGV4dE1lbnVMYXlvdXRQcmV2aWV3T25s
eTsKKyAgICBzdHlsZS5wcmVmZXJzQ2VudGVyZWRQcmV2aWV3V2hlbkFjdGlvbnNBcmVBYnNlbnQg
PSBOTzsKKyAgICBzdHlsZS5pZ25vcmVzRGVmYXVsdFNpemluZ1J1bGVzID0gWUVTOworICAgIHN0
eWxlLnByZWZlcnJlZEVkZ2VJbnNldHMgPSBbc2VsZiBfcHJlZmVycmVkRWRnZUluc2V0c0ZvckRh
dGVUaW1lUGlja2VyXTsKICAgICByZXR1cm4gc3R5bGU7CiB9CiAKIC0gKFVJQ29udGV4dE1lbnVD
b25maWd1cmF0aW9uICopY29udGV4dE1lbnVJbnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUludGVy
YWN0aW9uICopaW50ZXJhY3Rpb24gY29uZmlndXJhdGlvbkZvck1lbnVBdExvY2F0aW9uOihDR1Bv
aW50KWxvY2F0aW9uCiB7CiAgICAgcmV0dXJuIFtVSUNvbnRleHRNZW51Q29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uV2l0aElkZW50aWZpZXI6QCJfVUlEYXRlUGlja2VyQ29tcGFjdEVkaXRvciIg
cHJldmlld1Byb3ZpZGVyOl57Ci0gICAgICAgIFtfdmlld0NvbnRyb2xsZXIgc2V0VmlldzpuaWxd
OwotICAgICAgICBfdmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV0tEYXRlVGltZUNvbnRleHRN
ZW51Vmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgUmV0YWluUHRyPFVJTmF2
aWdhdGlvbkNvbnRyb2xsZXI+IG5hdmlnYXRpb25Db250cm9sbGVyID0gYWRvcHROUyhbW1VJTmF2
aWdhdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoUm9vdFZpZXdDb250cm9sbGVyOl92aWV3
Q29udHJvbGxlci5nZXQoKV0pOwotICAgICAgICAKLSAgICAgICAgTlNTdHJpbmcgKnJlc2V0U3Ry
aW5nID0gV0VCX1VJX1NUUklOR19LRVkoIlJlc2V0IiwgIlJlc2V0IEJ1dHRvbiBEYXRlL1RpbWUg
Q29udGV4dCBNZW51IiwgIlJlc2V0IGJ1dHRvbiBpbiBkYXRlIGlucHV0IGNvbnRleHQgbWVudSIp
OwotICAgICAgICBOU1N0cmluZyAqb2tTdHJpbmcgPSBXRUJfVUlfU1RSSU5HX0tFWSgiT0siLCAi
T0sgKE9LIGJ1dHRvbiB0aXRsZSBpbiBkYXRlL3RpbWUgcGlja2VyKSIsICJUaXRsZSBvZiB0aGUg
T0sgYnV0dG9uIGluIGRhdGUvdGltZSBmb3JtIGNvbnRyb2xzLiIpOwotCi0gICAgICAgIFJldGFp
blB0cjxVSUJhckJ1dHRvbkl0ZW0+IG9rQmFyQnV0dG9uID0gYWRvcHROUyhbW1VJQmFyQnV0dG9u
SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpva1N0cmluZyBzdHlsZTpVSUJhckJ1dHRvbkl0ZW1T
dHlsZURvbmUgdGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihvazopXSk7Ci0gICAgICAgIFJl
dGFpblB0cjxVSUJhckJ1dHRvbkl0ZW0+IGJsYW5rQmFyQnV0dG9uID0gYWRvcHROUyhbW1VJQmFy
QnV0dG9uSXRlbSBhbGxvY10gaW5pdFdpdGhCYXJCdXR0b25TeXN0ZW1JdGVtOlVJQmFyQnV0dG9u
U3lzdGVtSXRlbUZsZXhpYmxlU3BhY2UgdGFyZ2V0Om5pbCBhY3Rpb246bmlsXSk7Ci0gICAgICAg
IFJldGFpblB0cjxVSUJhckJ1dHRvbkl0ZW0+IHJlc2V0QmFyQnV0dG9uID0gYWRvcHROUyhbW1VJ
QmFyQnV0dG9uSXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpyZXNldFN0cmluZyBzdHlsZTpVSUJh
ckJ1dHRvbkl0ZW1TdHlsZVBsYWluIHRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IocmVzZXQ6
KV0pOwotICAgICAgICAKLSAgICAgICAgW192aWV3Q29udHJvbGxlciBzZXRUb29sYmFySXRlbXM6
QFtyZXNldEJhckJ1dHRvbi5nZXQoKSwgYmxhbmtCYXJCdXR0b24uZ2V0KCksIG9rQmFyQnV0dG9u
LmdldCgpXV07Ci0gICAgICAgIFtuYXZpZ2F0aW9uQ29udHJvbGxlciBzZXRUb29sYmFySGlkZGVu
Ok5PXTsKLSAgICAgICAgCi0gICAgICAgIGF1dG8gY2VudGVyaW5nVmlldyA9IGFkb3B0TlMoW1tV
SVZpZXcgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgCi0gICAgICAgIFtjZW50ZXJpbmdWaWV3IGFk
ZFN1YnZpZXc6X2RhdGVQaWNrZXIuZ2V0KCldOwotICAgICAgICAKLSAgICAgICAgX2RhdGVQaWNr
ZXIuZ2V0KCkudHJhbnNsYXRlc0F1dG9yZXNpemluZ01hc2tJbnRvQ29uc3RyYWludHMgPSBOTzsK
LSAgICAgICAgYXV0byB3aWR0aENvbnN0cmFpbnQgPSBbW2NlbnRlcmluZ1ZpZXcgd2lkdGhBbmNo
b3JdIGNvbnN0cmFpbnRHcmVhdGVyVGhhbk9yRXF1YWxUb0FuY2hvcjpbX2RhdGVQaWNrZXIgd2lk
dGhBbmNob3JdXTsKLSAgICAgICAgYXV0byBoZWlnaHRDb25zdHJhaW50ID0gW1tjZW50ZXJpbmdW
aWV3IGhlaWdodEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6W19kYXRlUGlja2VyIGhl
aWdodEFuY2hvcl1dOwotICAgICAgICBhdXRvIGhvcml6b250YWxDb25zdHJhaW50ID0gW1tjZW50
ZXJpbmdWaWV3IGNlbnRlclhBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltfZGF0ZVBp
Y2tlciBjZW50ZXJYQW5jaG9yXV07Ci0gICAgICAgIGF1dG8gdmVydGljYWxDb25zdHJhaW50ID0g
W1tjZW50ZXJpbmdWaWV3IGNlbnRlcllBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltf
ZGF0ZVBpY2tlciBjZW50ZXJZQW5jaG9yXV07Ci0KLSAgICAgICAgW05TTGF5b3V0Q29uc3RyYWlu
dCBhY3RpdmF0ZUNvbnN0cmFpbnRzOkBbdmVydGljYWxDb25zdHJhaW50LCBob3Jpem9udGFsQ29u
c3RyYWludCwgd2lkdGhDb25zdHJhaW50LCBoZWlnaHRDb25zdHJhaW50XV07Ci0KLSAgICAgICAg
W192aWV3Q29udHJvbGxlciBzZXRWaWV3OmNlbnRlcmluZ1ZpZXcuZ2V0KCldOwotCi0gICAgICAg
IE5TU3RyaW5nICp0aXRsZVRleHQgPSBfdmlldy5pbnB1dExhYmVsVGV4dDsKLSAgICAgICAgaWYg
KCFbdGl0bGVUZXh0IGlzRXF1YWw6QCIiXSkgewotICAgICAgICAgICAgUmV0YWluUHRyPFVJTGFi
ZWw+IHRpdGxlID0gYWRvcHROUyhbW1VJTGFiZWwgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgICAg
IFt0aXRsZSBzZXRGb250OltVSUZvbnQgcHJlZmVycmVkRm9udEZvclRleHRTdHlsZTpVSUZvbnRU
ZXh0U3R5bGVGb290bm90ZV1dOwotICAgICAgICAgICAgW3RpdGxlIHNldFRleHQ6dGl0bGVUZXh0
XTsKLSAgICAgICAgICAgIFt0aXRsZSBzZXRUZXh0Q29sb3I6W1VJQ29sb3Igc2Vjb25kYXJ5TGFi
ZWxDb2xvcl1dOwotICAgICAgICAgICAgW3RpdGxlIHNldFRleHRBbGlnbm1lbnQ6TlNUZXh0QWxp
Z25tZW50TmF0dXJhbF07Ci0gICAgICAgICAgICBSZXRhaW5QdHI8VUlCYXJCdXR0b25JdGVtPiB0
aXRsZUJ1dHRvbiA9IGFkb3B0TlMoW1tVSUJhckJ1dHRvbkl0ZW0gYWxsb2NdIGluaXRXaXRoQ3Vz
dG9tVmlldzp0aXRsZS5nZXQoKV0pOwotICAgICAgICAgICAgW192aWV3Q29udHJvbGxlciBuYXZp
Z2F0aW9uSXRlbV0ubGVmdEJhckJ1dHRvbkl0ZW0gPSB0aXRsZUJ1dHRvbi5nZXQoKTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBbbmF2aWdhdGlvbkNvbnRyb2xsZXIgc2V0TmF2aWdhdGlv
bkJhckhpZGRlbjpZRVMgYW5pbWF0ZWQ6Tk9dOwotICAgICAgICAKLSAgICAgICAgW25hdmlnYXRp
b25Db250cm9sbGVyIG5hdmlnYXRpb25CYXJdLnRyYW5zbHVjZW50ID0gTk87Ci0gICAgICAgIFtu
YXZpZ2F0aW9uQ29udHJvbGxlciBuYXZpZ2F0aW9uQmFyXS5iYXJUaW50Q29sb3IgPSBbVUlDb2xv
ciBzeXN0ZW1CYWNrZ3JvdW5kQ29sb3JdOwotICAgICAgICBbbmF2aWdhdGlvbkNvbnRyb2xsZXIg
dG9vbGJhcl0udHJhbnNsdWNlbnQgPSBOTzsKLSAgICAgICAgW25hdmlnYXRpb25Db250cm9sbGVy
IHRvb2xiYXJdLmJhclRpbnRDb2xvciA9IFtVSUNvbG9yIHN5c3RlbUJhY2tncm91bmRDb2xvcl07
Ci0gICAgICAgIHJldHVybiBuYXZpZ2F0aW9uQ29udHJvbGxlci5nZXQoKTsKKyAgICAgICAgcmV0
dXJuIF9kYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmdldCgpOwogICAgIH0gYWN0aW9uUHJv
dmlkZXI6bmlsXTsKIH0KIApAQCAtMjY3LDEwMCArNDU2LDc5IEBAIHN0YXRpYyBjb25zdCBOU1Rp
bWVJbnRlcnZhbCBrTWlsbGlzZWNvbmRzUGVyU2Vjb25kID0gMTAwMDsKIAogI2VuZGlmCiAKLS0g
KHZvaWQpcmVzZXQ6KGlkKXNlbmRlcgorLSAodm9pZClkYXRlVGltZVBpY2tlclZpZXdDb250cm9s
bGVyRGlkQ2hhbmdlRGF0ZTooV0tEYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyICopZGF0ZVRp
bWVQaWNrZXJWaWV3Q29udHJvbGxlcgoreworICAgIFtzZWxmIF9kYXRlQ2hhbmdlZF07Cit9CisK
Ky0gKHZvaWQpZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlckRpZFByZXNzUmVzZXRCdXR0b246
KFdLRGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciAqKWRhdGVUaW1lUGlja2VyVmlld0NvbnRy
b2xsZXIKIHsKICAgICBbc2VsZiBzZXREYXRlVGltZVBpY2tlclRvSW5pdGlhbFZhbHVlXTsKICAg
ICBbX3ZpZXcgcGFnZV0tPnNldEZvY3VzZWRFbGVtZW50VmFsdWUoU3RyaW5nKCkpOwogfQogCi0t
ICh2b2lkKW9rOihpZClzZW5kZXIKKy0gKHZvaWQpZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxl
ckRpZFByZXNzRG9uZUJ1dHRvbjooV0tEYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyICopZGF0
ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlcgogewogI2lmIFVTRShVSUNPTlRFWFRNRU5VKQogICAg
IFtfZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0aW9uIGRpc21pc3NNZW51XTsKICNlbmRpZgog
fQogCi0tIChOU1N0cmluZyAqKWNhbGVuZGFyVHlwZQotewotICAgIHJldHVybiBbX2RhdGVQaWNr
ZXIgY2FsZW5kYXJdLmNhbGVuZGFySWRlbnRpZmllcjsKLX0KLQotLSAoZG91YmxlKWhvdXIKKy0g
KEJPT0wpc2hvdWxkRm9yY2VHcmVnb3JpYW5DYWxlbmRhcgogewotICAgIE5TQ2FsZW5kYXIgKmNh
bGVuZGFyID0gW05TQ2FsZW5kYXIgY3VycmVudENhbGVuZGFyXTsKLSAgICBOU0RhdGVDb21wb25l
bnRzICpjb21wb25lbnRzID0gW2NhbGVuZGFyIGNvbXBvbmVudHM6TlNDYWxlbmRhclVuaXRIb3Vy
IGZyb21EYXRlOltfZGF0ZVBpY2tlciBkYXRlXV07Ci0KLSAgICByZXR1cm4gW2NvbXBvbmVudHMg
aG91cl07Ci19Ci0KLS0gKGRvdWJsZSltaW51dGUKLXsKLSAgICBOU0NhbGVuZGFyICpjYWxlbmRh
ciA9IFtOU0NhbGVuZGFyIGN1cnJlbnRDYWxlbmRhcl07Ci0gICAgTlNEYXRlQ29tcG9uZW50cyAq
Y29tcG9uZW50cyA9IFtjYWxlbmRhciBjb21wb25lbnRzOk5TQ2FsZW5kYXJVbml0TWludXRlIGZy
b21EYXRlOltfZGF0ZVBpY2tlciBkYXRlXV07Ci0KLSAgICByZXR1cm4gW2NvbXBvbmVudHMgbWlu
dXRlXTsKKyAgICBhdXRvIGF1dG9maWxsRmllbGROYW1lID0gX3ZpZXcuZm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbi5hdXRvZmlsbEZpZWxkTmFtZTsKKyAgICByZXR1cm4gYXV0b2ZpbGxGaWVsZE5h
bWUgPT0gV2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWU6OkNjRXhwTW9udGgKKyAgICAgICAgfHwg
YXV0b2ZpbGxGaWVsZE5hbWUgPT0gV2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWU6OkNjRXhwCisg
ICAgICAgIHx8IGF1dG9maWxsRmllbGROYW1lID09IFdlYkNvcmU6OkF1dG9maWxsRmllbGROYW1l
OjpDY0V4cFllYXI7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIFtfZGF0ZVBpY2tlciBy
ZW1vdmVUYXJnZXQ6c2VsZiBhY3Rpb246TlVMTCBmb3JDb250cm9sRXZlbnRzOlVJQ29udHJvbEV2
ZW50VmFsdWVDaGFuZ2VkXTsKICNpZiBVU0UoVUlDT05URVhUTUVOVSkKICAgICBbc2VsZiByZW1v
dmVDb250ZXh0TWVudUludGVyYWN0aW9uXTsKICNlbmRpZgogICAgIFtzdXBlciBkZWFsbG9jXTsK
IH0KIAotLSAoQk9PTClzaG91bGRQcmVzZW50R3JlZ29yaWFuQ2FsZW5kYXI6KGNvbnN0IFdlYktp
dDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYpbm9kZUluZm8KLXsKLSAgICByZXR1cm4gbm9k
ZUluZm8uYXV0b2ZpbGxGaWVsZE5hbWUgPT0gV2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWU6OkNj
RXhwTW9udGgKLSAgICAgICAgfHwgbm9kZUluZm8uYXV0b2ZpbGxGaWVsZE5hbWUgPT0gV2ViQ29y
ZTo6QXV0b2ZpbGxGaWVsZE5hbWU6OkNjRXhwCi0gICAgICAgIHx8IG5vZGVJbmZvLmF1dG9maWxs
RmllbGROYW1lID09IFdlYkNvcmU6OkF1dG9maWxsRmllbGROYW1lOjpDY0V4cFllYXI7Ci19Ci0K
LS0gKFVJVmlldyAqKWNvbnRyb2xWaWV3Ci17Ci0gICAgcmV0dXJuIF9kYXRlUGlja2VyLmdldCgp
OwotfQotCiAtIChOU0ludGVnZXIpX3RpbWVab25lT2Zmc2V0RnJvbUdNVDooTlNEYXRlICopZGF0
ZQogewogICAgIGlmICghX3Nob3VsZFJlbW92ZVRpbWVab25lSW5mb3JtYXRpb24pCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgcmV0dXJuIFtfZGF0ZVBpY2tlci5nZXQoKS50aW1lWm9uZSBzZWNv
bmRzRnJvbUdNVEZvckRhdGU6ZGF0ZV07CisgICAgcmV0dXJuIFtbX2RhdGVUaW1lUGlja2VyVmll
d0NvbnRyb2xsZXIgdGltZVpvbmVdIHNlY29uZHNGcm9tR01URm9yRGF0ZTpkYXRlXTsKIH0KIAog
LSAoTlNTdHJpbmcgKilfc2FuaXRpemVJbnB1dFZhbHVlRm9yRm9ybWF0dGVyOihOU1N0cmluZyAq
KXZhbHVlCiB7CiAgICAgLy8gVGhlICJ0aW1lIiBpbnB1dCB0eXBlIG1heSBoYXZlIHNlY29uZHMg
YW5kIG1pbGxpc2Vjb25kcyBpbmZvcm1hdGlvbiB3aGljaCB3ZQogICAgIC8vIGp1c3QgaWdub3Jl
LiBGb3IgZXhhbXBsZTogIjAxOjU2OjIwLjM5MSIgaXMgc2hvcnRlbmVkIHRvIGp1c3QgIjAxOjU2
Ii4KLSAgICBpZiAoX2lzVGltZUlucHV0KQorICAgIGlmIChfdmlldy5mb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uLmVsZW1lbnRUeXBlID09IFdlYktpdDo6SW5wdXRUeXBlOjpUaW1lKQogICAgICAg
ICByZXR1cm4gW3ZhbHVlIHN1YnN0cmluZ1RvSW5kZXg6W2tUaW1lRm9ybWF0U3RyaW5nIGxlbmd0
aF1dOwogCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi0tICh2b2lkKV9kYXRlQ2hhbmdlZFNldEFz
TnVtYmVyCi17Ci0gICAgTlNEYXRlICpkYXRlID0gW19kYXRlUGlja2VyIGRhdGVdOwotICAgIFtf
dmlldyB1cGRhdGVGb2N1c2VkRWxlbWVudFZhbHVlQXNOdW1iZXI6KFtkYXRlIHRpbWVJbnRlcnZh
bFNpbmNlMTk3MF0gKyBbc2VsZiBfdGltZVpvbmVPZmZzZXRGcm9tR01UOmRhdGVdKSAqIGtNaWxs
aXNlY29uZHNQZXJTZWNvbmRdOwotfQotCiAtIChSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPilk
YXRlRm9ybWF0dGVyRm9yUGlja2VyCiB7CiAgICAgUmV0YWluUHRyPE5TTG9jYWxlPiBlbmdsaXNo
TG9jYWxlID0gYWRvcHROUyhbW05TTG9jYWxlIGFsbG9jXSBpbml0V2l0aExvY2FsZUlkZW50aWZp
ZXI6QCJlbl9VU19QT1NJWCJdKTsKICAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBkYXRl
Rm9ybWF0dGVyID0gYWRvcHROUyhbW05TRGF0ZUZvcm1hdHRlciBhbGxvY10gaW5pdF0pOwotICAg
IFtkYXRlRm9ybWF0dGVyIHNldFRpbWVab25lOl9kYXRlUGlja2VyLmdldCgpLnRpbWVab25lXTsK
KyAgICBbZGF0ZUZvcm1hdHRlciBzZXRUaW1lWm9uZTpbX2RhdGVUaW1lUGlja2VyVmlld0NvbnRy
b2xsZXIgdGltZVpvbmVdXTsKICAgICBbZGF0ZUZvcm1hdHRlciBzZXREYXRlRm9ybWF0Ol9mb3Jt
YXRTdHJpbmddOwogICAgIFtkYXRlRm9ybWF0dGVyIHNldExvY2FsZTplbmdsaXNoTG9jYWxlLmdl
dCgpXTsKICAgICByZXR1cm4gZGF0ZUZvcm1hdHRlcjsKIH0KIAorLSAodm9pZClfZGF0ZUNoYW5n
ZWRTZXRBc051bWJlcgoreworICAgIE5TRGF0ZSAqZGF0ZSA9IFtfZGF0ZVRpbWVQaWNrZXJWaWV3
Q29udHJvbGxlciBkYXRlXTsKKyAgICBbX3ZpZXcgdXBkYXRlRm9jdXNlZEVsZW1lbnRWYWx1ZUFz
TnVtYmVyOihkYXRlLnRpbWVJbnRlcnZhbFNpbmNlMTk3MCArIFtzZWxmIF90aW1lWm9uZU9mZnNl
dEZyb21HTVQ6ZGF0ZV0pICoga01pbGxpc2Vjb25kc1BlclNlY29uZF07Cit9CisKIC0gKHZvaWQp
X2RhdGVDaGFuZ2VkU2V0QXNTdHJpbmcKIHsKICAgICAvLyBGb3JjZSBFbmdsaXNoIGxvY2FsZSBi
ZWNhdXNlIHRoYXQgaXMgd2hhdCBIVE1MNSB2YWx1ZSBwYXJzaW5nIGV4cGVjdHMuCiAgICAgUmV0
YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gZGF0ZUZvcm1hdHRlciA9IFtzZWxmIGRhdGVGb3JtYXR0
ZXJGb3JQaWNrZXJdOwotICAgIFtfdmlldyB1cGRhdGVGb2N1c2VkRWxlbWVudFZhbHVlOltkYXRl
Rm9ybWF0dGVyIHN0cmluZ0Zyb21EYXRlOltfZGF0ZVBpY2tlciBkYXRlXV1dOworICAgIFtfdmll
dyB1cGRhdGVGb2N1c2VkRWxlbWVudFZhbHVlOltkYXRlRm9ybWF0dGVyIHN0cmluZ0Zyb21EYXRl
OltfZGF0ZVRpbWVQaWNrZXJWaWV3Q29udHJvbGxlciBkYXRlXV1dOwogfQogCiAtICh2b2lkKV9k
YXRlQ2hhbmdlZApAQCAtMzc1LDQzICs1NDMsMzggQEAgc3RhdGljIGNvbnN0IE5TVGltZUludGVy
dmFsIGtNaWxsaXNlY29uZHNQZXJTZWNvbmQgPSAxMDAwOwogICAgICAgICBbc2VsZiBfZGF0ZUNo
YW5nZWRTZXRBc051bWJlcl07CiB9CiAKLS0gKHZvaWQpX2RhdGVDaGFuZ2VIYW5kbGVyOihpZClz
ZW5kZXIKLXsKLSAgICBbc2VsZiBfZGF0ZUNoYW5nZWRdOwotfQotCiAtICh2b2lkKXNldERhdGVU
aW1lUGlja2VyVG9Jbml0aWFsVmFsdWUKIHsKICAgICBpZiAoW19pbml0aWFsVmFsdWUgaXNFcXVh
bDogQCIiXSkgewotICAgICAgICBbX2RhdGVQaWNrZXIgc2V0RGF0ZTpbTlNEYXRlIGRhdGVdXTsK
KyAgICAgICAgW19kYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyIHNldERhdGU6W05TRGF0ZSBk
YXRlXV07CiAgICAgICAgIFtzZWxmIF9kYXRlQ2hhbmdlZF07CiAgICAgfSBlbHNlIGlmIChfZm9y
bWF0U3RyaW5nKSB7CiAgICAgICAgIC8vIENvbnZlcnQgdGhlIHN0cmluZyB2YWx1ZSB0byBhIGRh
dGUgb2JqZWN0IGZvciB0aGUgZmllbGRzIHdoZXJlIHdlIGhhdmUgYSBmb3JtYXQgc3RyaW5nLgog
ICAgICAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBkYXRlRm9ybWF0dGVyID0gW3NlbGYg
ZGF0ZUZvcm1hdHRlckZvclBpY2tlcl07CiAgICAgICAgIE5TRGF0ZSAqcGFyc2VkRGF0ZSA9IFtk
YXRlRm9ybWF0dGVyIGRhdGVGcm9tU3RyaW5nOltzZWxmIF9zYW5pdGl6ZUlucHV0VmFsdWVGb3JG
b3JtYXR0ZXI6X2luaXRpYWxWYWx1ZS5nZXQoKV1dOwotICAgICAgICBbX2RhdGVQaWNrZXIgc2V0
RGF0ZTpwYXJzZWREYXRlID8gcGFyc2VkRGF0ZSA6IFtOU0RhdGUgZGF0ZV1dOworICAgICAgICBb
X2RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgc2V0RGF0ZTpwYXJzZWREYXRlID8gcGFyc2Vk
RGF0ZSA6IFtOU0RhdGUgZGF0ZV1dOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIENvbnZlcnQg
dGhlIG51bWJlciB2YWx1ZSB0byBhIGRhdGUgb2JqZWN0IGZvciB0aGUgZmllbGRzIGFmZmVjdGVk
IGJ5IHRpbWV6b25lcy4KICAgICAgICAgTlNUaW1lSW50ZXJ2YWwgc2Vjb25kc1NpbmNlMTk3MCA9
IF9pbml0aWFsVmFsdWVBc051bWJlciAvIGtNaWxsaXNlY29uZHNQZXJTZWNvbmQ7CiAgICAgICAg
IE5TSW50ZWdlciB0aW1lWm9uZU9mZnNldCA9IFtzZWxmIF90aW1lWm9uZU9mZnNldEZyb21HTVQ6
W05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpzZWNvbmRzU2luY2UxOTcwXV07
CiAgICAgICAgIE5TVGltZUludGVydmFsIGFkanVzdGVkU2Vjb25kc1NpbmNlMTk3MCA9IHNlY29u
ZHNTaW5jZTE5NzAgLSB0aW1lWm9uZU9mZnNldDsKLSAgICAgICAgW19kYXRlUGlja2VyIHNldERh
dGU6W05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDphZGp1c3RlZFNlY29uZHNT
aW5jZTE5NzBdXTsKKyAgICAgICAgW19kYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVyIHNldERh
dGU6W05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDphZGp1c3RlZFNlY29uZHNT
aW5jZTE5NzBdXTsKICAgICB9CiB9CiAKLS0gKHZvaWQpY29udHJvbEJlZ2luRWRpdGluZworLSAo
VUlWaWV3ICopY29udHJvbFZpZXcKIHsKLSAgICBpZiAoX3ByZXNlbnRpbmcpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIF9wcmVzZW50aW5nID0gWUVTOworICAgIHJldHVybiBuaWw7Cit9CiAKKy0g
KHZvaWQpY29udHJvbEJlZ2luRWRpdGluZworewogICAgIGF1dG8gZWxlbWVudFR5cGUgPSBfdmll
dy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlOwogICAgIGlmIChlbGVtZW50
VHlwZSA9PSBXZWJLaXQ6OklucHV0VHlwZTo6VGltZSB8fCBlbGVtZW50VHlwZSA9PSBXZWJLaXQ6
OklucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbCkKICAgICAgICAgW192aWV3IHN0YXJ0UmVsaW5xdWlz
aGluZ0ZpcnN0UmVzcG9uZGVyVG9Gb2N1c2VkRWxlbWVudF07CiAKICAgICAvLyBTZXQgdGhlIHRp
bWUgem9uZSBpbiBjYXNlIGl0IGNoYW5nZWQuCi0gICAgX2RhdGVQaWNrZXIuZ2V0KCkudGltZVpv
bmUgPSBbTlNUaW1lWm9uZSBsb2NhbFRpbWVab25lXTsKKyAgICBbX2RhdGVUaW1lUGlja2VyVmll
d0NvbnRyb2xsZXIgc2V0VGltZVpvbmU6TlNUaW1lWm9uZS5sb2NhbFRpbWVab25lXTsKIAogICAg
IC8vIEN1cnJlbnRseSBubyB2YWx1ZSBmb3IgdGhlIDxpbnB1dD4uIFN0YXJ0IHRoZSBwaWNrZXIg
d2l0aCB0aGUgY3VycmVudCB0aW1lLgogICAgIC8vIEFsc28sIHVwZGF0ZSB0aGUgYWN0dWFsIDxp
bnB1dD4gdmFsdWUuCkBAIC00MjQsMjggKzU4Nyw0MyBAQCBzdGF0aWMgY29uc3QgTlNUaW1lSW50
ZXJ2YWwga01pbGxpc2Vjb25kc1BlclNlY29uZCA9IDEwMDA7CiAjZW5kaWYKIH0KIAotLSAodm9p
ZClzZXRIb3VyOihOU0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51dGUKKy0gKHZv
aWQpY29udHJvbEVuZEVkaXRpbmcKIHsKLSAgICBOU1N0cmluZyAqdGltZVN0cmluZyA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJS4ybGQ6JS4ybGQiLCAobG9uZylob3VyLCAobG9uZylt
aW51dGVdOwotICAgIFtfZGF0ZVBpY2tlciBzZXREYXRlOltbc2VsZiBkYXRlRm9ybWF0dGVyRm9y
UGlja2VyXSBkYXRlRnJvbVN0cmluZzp0aW1lU3RyaW5nXV07Ci0gICAgW3NlbGYgX2RhdGVDaGFu
Z2VkXTsKKyAgICBbX3ZpZXcgc3RvcFJlbGlucXVpc2hpbmdGaXJzdFJlc3BvbmRlclRvRm9jdXNl
ZEVsZW1lbnRdOworCisjaWYgVVNFKFVJQ09OVEVYVE1FTlUpCisgICAgW3NlbGYgcmVtb3ZlQ29u
dGV4dE1lbnVJbnRlcmFjdGlvbl07CisjZW5kaWYKIH0KIAotLSAoV0tEYXRlVGltZUNvbnRleHRN
ZW51Vmlld0NvbnRyb2xsZXIgKil2aWV3Q29udHJvbGxlcgorLSAoTlNTdHJpbmcgKiljYWxlbmRh
clR5cGUKIHsKLSAgICByZXR1cm4gX3ZpZXdDb250cm9sbGVyLmdldCgpOworICAgIHJldHVybiBb
X2RhdGVUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgY2FsZW5kYXJdLmNhbGVuZGFySWRlbnRpZmll
cjsKIH0KIAotLSAodm9pZCljb250cm9sRW5kRWRpdGluZworLSAoZG91YmxlKWhvdXIKIHsKLSAg
ICBfcHJlc2VudGluZyA9IE5POworICAgIE5TQ2FsZW5kYXIgKmNhbGVuZGFyID0gW05TQ2FsZW5k
YXIgY3VycmVudENhbGVuZGFyXTsKKyAgICBOU0RhdGVDb21wb25lbnRzICpjb21wb25lbnRzID0g
W2NhbGVuZGFyIGNvbXBvbmVudHM6TlNDYWxlbmRhclVuaXRIb3VyIGZyb21EYXRlOltfZGF0ZVRp
bWVQaWNrZXJWaWV3Q29udHJvbGxlciBkYXRlXV07CiAKLSAgICBbX3ZpZXcgc3RvcFJlbGlucXVp
c2hpbmdGaXJzdFJlc3BvbmRlclRvRm9jdXNlZEVsZW1lbnRdOworICAgIHJldHVybiBjb21wb25l
bnRzLmhvdXI7Cit9CiAKLSNpZiBVU0UoVUlDT05URVhUTUVOVSkKLSAgICBbc2VsZiByZW1vdmVD
b250ZXh0TWVudUludGVyYWN0aW9uXTsKLSNlbmRpZgorLSAoZG91YmxlKW1pbnV0ZQoreworICAg
IE5TQ2FsZW5kYXIgKmNhbGVuZGFyID0gW05TQ2FsZW5kYXIgY3VycmVudENhbGVuZGFyXTsKKyAg
ICBOU0RhdGVDb21wb25lbnRzICpjb21wb25lbnRzID0gW2NhbGVuZGFyIGNvbXBvbmVudHM6TlND
YWxlbmRhclVuaXRNaW51dGUgZnJvbURhdGU6W19kYXRlVGltZVBpY2tlclZpZXdDb250cm9sbGVy
IGRhdGVdXTsKKworICAgIHJldHVybiBjb21wb25lbnRzLm1pbnV0ZTsKK30KKworLSAodm9pZClz
ZXRIb3VyOihOU0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51dGUKK3sKKyAgICBO
U1N0cmluZyAqdGltZVN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJS4ybGQ6
JS4ybGQiLCAobG9uZylob3VyLCAobG9uZyltaW51dGVdOworICAgIFtfZGF0ZVRpbWVQaWNrZXJW
aWV3Q29udHJvbGxlciBzZXREYXRlOltbc2VsZiBkYXRlRm9ybWF0dGVyRm9yUGlja2VyXSBkYXRl
RnJvbVN0cmluZzp0aW1lU3RyaW5nXV07CisgICAgW3NlbGYgX2RhdGVDaGFuZ2VkXTsKIH0KKwog
QGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tEYXRlVGltZUlucHV0Q29udHJvbAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>