<?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>112256</bug_id>
          
          <creation_ts>2013-03-13 07:20:53 -0700</creation_ts>
          <short_desc>Add touch support to the calendar picker</short_desc>
          <delta_ts>2013-03-18 04:04:55 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keishi Hattori">keishi</reporter>
          <assigned_to name="Keishi Hattori">keishi</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>854282</commentid>
    <comment_count>0</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2013-03-13 07:20:53 -0700</bug_when>
    <thetext>Add touch support to the calendar picker</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855436</commentid>
    <comment_count>1</comment_count>
      <attachid>193175</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2013-03-14 12:57:28 -0700</bug_when>
    <thetext>Created attachment 193175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855458</commentid>
    <comment_count>2</comment_count>
      <attachid>193175</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-14 13:44:21 -0700</bug_when>
    <thetext>Comment on attachment 193175
Patch

Attachment 193175 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17214063

New failing tests:
platform/chromium/fast/forms/calendar-picker/calendar-picker-mouse-operations.html
platform/chromium/fast/forms/calendar-picker/month-picker-mouse-operations.html
platform/chromium/fast/forms/calendar-picker/week-picker-key-operations.html
platform/chromium/fast/forms/calendar-picker/calendar-picker-key-operations.html
platform/chromium/fast/forms/calendar-picker/month-picker-key-operations.html
platform/chromium/fast/forms/calendar-picker/week-picker-mouse-operations.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855770</commentid>
    <comment_count>3</comment_count>
      <attachid>193249</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2013-03-15 00:26:48 -0700</bug_when>
    <thetext>Created attachment 193249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856758</commentid>
    <comment_count>4</comment_count>
      <attachid>193249</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-03-17 14:53:11 -0700</bug_when>
    <thetext>Comment on attachment 193249
Patch

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

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:1137
&gt; +function FlingGestureAnimator(initialVelocity, initialValue) {

Need a JsDoc comment

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:1177
&gt; +FlingGestureAnimator.P0 = -5707.62;
&gt; +FlingGestureAnimator.P1 = 0.172;
&gt; +FlingGestureAnimator.P2 = 0.0037;

The names P0/P1/P2 are not descriptive. Please add comments or rename them.
They should be private.

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:3311
&gt; +    // you shouldn&apos;t be able to do gesture scroll.

nit: y -&gt; Y</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856814</commentid>
    <comment_count>5</comment_count>
      <attachid>193483</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2013-03-17 20:56:55 -0700</bug_when>
    <thetext>Created attachment 193483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856818</commentid>
    <comment_count>6</comment_count>
      <attachid>193485</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2013-03-17 21:06:41 -0700</bug_when>
    <thetext>Created attachment 193485
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856824</commentid>
    <comment_count>7</comment_count>
      <attachid>193485</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-17 21:54:10 -0700</bug_when>
    <thetext>Comment on attachment 193485
Patch

Attachment 193485 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17129498

New failing tests:
platform/chromium/fast/forms/calendar-picker/month-picker-touch-operations.html
platform/chromium/fast/forms/calendar-picker/calendar-picker-mouse-operations.html
platform/chromium/fast/forms/calendar-picker/month-picker-mouse-operations.html
platform/chromium/fast/forms/calendar-picker/calendar-picker-touch-operations.html
platform/chromium/fast/forms/calendar-picker/week-picker-key-operations.html
platform/chromium/fast/forms/calendar-picker/calendar-picker-key-operations.html
platform/chromium/fast/forms/calendar-picker/month-picker-key-operations.html
platform/chromium/fast/forms/calendar-picker/week-picker-touch-operations.html
platform/chromium/fast/forms/calendar-picker/week-picker-mouse-operations.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856954</commentid>
    <comment_count>8</comment_count>
      <attachid>193517</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2013-03-18 03:32:19 -0700</bug_when>
    <thetext>Created attachment 193517
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856969</commentid>
    <comment_count>9</comment_count>
      <attachid>193517</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-18 04:04:50 -0700</bug_when>
    <thetext>Comment on attachment 193517
Patch

Clearing flags on attachment: 193517

Committed r146052: &lt;http://trac.webkit.org/changeset/146052&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856970</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-18 04:04:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193175</attachid>
            <date>2013-03-14 12:57:28 -0700</date>
            <delta_ts>2013-03-15 00:26:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112256-20130315045324.patch</filename>
            <type>text/plain</type>
            <size>43375</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjBlOTk5ZDQ5OTgwMjIz
MjljMzJiZjAzNTJkNjI5MjdjN2ZlYjhjNC4uZmVlMjM2ZTk3MGFiNTY3MTVjZDI1YjAwNzdmNzVl
NjdjM2EwMzIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEzLTAzLTE0ICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCB0b3VjaCBzdXBw
b3J0IHRvIHRoZSBjYWxlbmRhciBwaWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMjI1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jcmVhc2VzIHRoZSBoaXQgdGFyZ2V0IHNp
emVzIGZvciB0b3VjaCBhbmQgYWRkcyB0b3VjaCBldmVudAorICAgICAgICBzdXBwb3J0IHRvIHRo
ZSBzY3JvbGwgdmlldywgc2Nyb2xsIGJhciBhbmQgbmF2aWdhdGlvbiBidXR0b24uCisKKyAgICAg
ICAgVGVzdHM6IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2Nh
bGVuZGFyLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRm
b3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL21vbnRoLXBpY2tlci10b3Vj
aC1vcGVyYXRpb25zLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3Qv
Zm9ybXMvY2FsZW5kYXItcGlja2VyL3dlZWstcGlja2VyLXRvdWNoLW9wZXJhdGlvbnMuaHRtbAor
CisgICAgICAgICogUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanM6CisgICAg
ICAgIChoYXNJbmFjY3VyYXRlUG9pbnRpbmdEZXZpY2UpOgorICAgICAgICAoQW5pbWF0b3IpOiBT
dXBlciBjbGFzcyBmb3IgVHJhbnNpdGlvbkFuaW1hdG9yIGFuZCBGbGluZ0dlc3R1cmVBbmltYXRv
ci4KKyAgICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5zdGFydCk6CisgICAgICAgIChBbmltYXRv
ci5wcm90b3R5cGUuc3RvcCk6CisgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUub25BbmltYXRp
b25GcmFtZSk6CisgICAgICAgIChUcmFuc2l0aW9uQW5pbWF0b3IpOiBTYW1lIGFzIHRoZSBvbGQg
QW5pbWF0b3IuIFRyYW5zaXRpb24gZnJvbSBvbmUgdmFsdWUgdG8gYW5vdGhlci4KKyAgICAgICAg
KFRyYW5zaXRpb25BbmltYXRvci5wcm90b3R5cGUuc2V0RnJvbSk6CisgICAgICAgIChUcmFuc2l0
aW9uQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0KToKKyAgICAgICAgKFRyYW5zaXRpb25BbmltYXRv
ci5wcm90b3R5cGUuc3RvcCk6CisgICAgICAgIChUcmFuc2l0aW9uQW5pbWF0b3IucHJvdG90eXBl
LnNldFRvKToKKyAgICAgICAgKFRyYW5zaXRpb25BbmltYXRvci5wcm90b3R5cGUub25BbmltYXRp
b25GcmFtZSk6CisgICAgICAgIChGbGluZ0dlc3R1cmVBbmltYXRvcik6QW5pbWF0ZXMgdGhlIGZs
aW5nIHNjcm9sbC4gCisgICAgICAgIChGbGluZ0dlc3R1cmVBbmltYXRvci5wcm90b3R5cGUuX3Zh
bHVlQXRUaW1lKTogUmV0dXJucyB0aGUgdmFsdWUgYXQgdGhlIGdpdmVuIHRpbWUuCisgICAgICAg
IChGbGluZ0dlc3R1cmVBbmltYXRvci5wcm90b3R5cGUuX3ZlbG9jaXR5QXRUaW1lKTogUmV0dXJu
cyB0aGUgdmFsdWUgY2hhbmdlIHZlbG9jaXR5IGF0IHRoZSBnaXZlbiB0aW1lLgorICAgICAgICAo
RmxpbmdHZXN0dXJlQW5pbWF0b3IucHJvdG90eXBlLl90aW1lQXRWZWxvY2l0eSk6IFJldHVybnMg
dGhlIHRpbWUgd2hlbiB0aGUgdmFsdWUgaXMgY2hhbmdpbmcgYXQgdGhlIGdpdmVuIHZlbG9jaXR5
LgorICAgICAgICAoRmxpbmdHZXN0dXJlQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0KToKKyAgICAg
ICAgKEZsaW5nR2VzdHVyZUFuaW1hdG9yLnByb3RvdHlwZS5vbkFuaW1hdGlvbkZyYW1lKToKKyAg
ICAgICAgKFNjcm9sbFZpZXcpOiBBZGRlZCBzdXBwb3J0IGZvciB0b3VjaCBnZXN0dXJlIHNjcm9s
bGluZy4KKyAgICAgICAgKFNjcm9sbFZpZXcucHJvdG90eXBlLm9uVG91Y2hTdGFydCk6CisgICAg
ICAgIChTY3JvbGxWaWV3LnByb3RvdHlwZS5vbldpbmRvd1RvdWNoTW92ZSk6CisgICAgICAgIChT
Y3JvbGxWaWV3LnByb3RvdHlwZS5vbldpbmRvd1RvdWNoRW5kKToKKyAgICAgICAgKFNjcm9sbFZp
ZXcucHJvdG90eXBlLm9uRmxpbmdHZXN0dXJlQW5pbWF0b3JTdGVwKToKKyAgICAgICAgKFNjcm9s
bFZpZXcucHJvdG90eXBlLnNjcm9sbFRvKToKKyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIpOiBB
ZGRlZCBzdXBwb3J0IGZvciB0b3VjaC4KKyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90
eXBlLm9uVG91Y2hTdGFydCk6CisgICAgICAgIChTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5v
bldpbmRvd1RvdWNoTW92ZSk6CisgICAgICAgIChTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5v
bldpbmRvd1RvdWNoRW5kKToKKyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLl9z
ZXRUaHVtYlBvc2l0aW9uRnJvbUV2ZW50UG9zaXRpb24pOiBBY2NlcHQgTW91c2VFdmVudCBvciBU
b3VjaC4KKyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLm9uTW91c2VEb3duKToK
KyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLm9uV2luZG93TW91c2VNb3ZlKToK
KyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLm9uV2luZG93TW91c2VVcCk6Cisg
ICAgICAgIChZZWFyTGlzdENlbGwpOgorICAgICAgICAoWWVhckxpc3RWaWV3KToKKyAgICAgICAg
KFllYXJMaXN0Vmlldy5wcm90b3R5cGUub25Ub3VjaFN0YXJ0KToKKyAgICAgICAgKFllYXJMaXN0
Vmlldy5wcm90b3R5cGUuX2FuaW1hdGVSb3cpOgorICAgICAgICAoQ2FsZW5kYXJOYXZpZ2F0aW9u
QnV0dG9uKTogQWRkIHRvdWNoIHN1cHBvcnQgZm9yIGxvbmcgcHJlc3MuCisgICAgICAgIChDYWxl
bmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uVG91Y2hTdGFydCk6CisgICAgICAgIChD
YWxlbmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uV2luZG93VG91Y2hFbmQpOgorICAg
ICAgICAoQ2FsZW5kYXJOYXZpZ2F0aW9uQnV0dG9uLnByb3RvdHlwZS5vbk1vdXNlRG93bik6Cisg
ICAgICAgIChDYWxlbmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uV2luZG93TW91c2VV
cCk6CisgICAgICAgIChDYWxlbmRhclRhYmxlVmlldyk6IERpc2FibGUgdG91Y2ggZ2VzdHVyZSBz
Y3JvbGxpbmcgaW4gdGhlIGNhbGVuZGFyIHRhYmxlLgorCiAyMDEzLTAzLTEyICBIYXlhdG8gSXRv
ICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ3Jhc2hdIFRvdWNoIEV2ZW50cyBy
ZXRhcmdldGluZyBjYXVzZXMgY3Jhc2hlcyBvbiBjaHJvbWUgb24gYW5kcm9pZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpz
IGIvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMK
aW5kZXggNjJlMzhjYTY3MjBjZTgzZDU1M2NhMmJiZTEwNjg1OTNhMzUxOTgzNS4uODBmODUwNjBi
MWU1OGFlNDlmOTA2OTZhMDVjMTNkZjZmZWZhZjE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMKQEAgLTY4LDYgKzY4
LDEzIEBAIHZhciBnbG9iYWwgPSB7CiAvLyBVdGlsaXR5IGZ1bmN0aW9ucwogCiAvKioKKyAqIEBy
ZXR1cm4geyFib29sfQorICovCitmdW5jdGlvbiBoYXNJbmFjY3VyYXRlUG9pbnRpbmdEZXZpY2Uo
KSB7CisgICAgcmV0dXJuIG1hdGNoTWVkaWEoIihwb2ludGVyOiBjb2Fyc2UpIikubWF0Y2hlczsK
K30KKworLyoqCiAgKiBAcmV0dXJuIHshc3RyaW5nfSBsb3dlcmNhc2UgbG9jYWxlIG5hbWUuIGUu
Zy4gImVuLXVzIgogICovCiBmdW5jdGlvbiBnZXRMb2NhbGUoKSB7CkBAIC0xMDAzLDIxICsxMDEw
LDYgQEAgZnVuY3Rpb24gQW5pbWF0b3IoKSB7CiAgICAgdGhpcy5pZCA9IEFuaW1hdG9yLl9sYXN0
SWQrKzsKICAgICAvKioKICAgICAgKiBAdHlwZSB7IW51bWJlcn0KLSAgICAgKiBAcHJvdGVjdGVk
Ci0gICAgICovCi0gICAgdGhpcy5fZnJvbSA9IDA7Ci0gICAgLyoqCi0gICAgICogQHR5cGUgeyFu
dW1iZXJ9Ci0gICAgICogQHByb3RlY3RlZAotICAgICAqLwotICAgIHRoaXMuX3RvID0gMDsKLSAg
ICAvKioKLSAgICAgKiBAdHlwZSB7IW51bWJlcn0KLSAgICAgKiBAcHJvdGVjdGVkCi0gICAgICov
Ci0gICAgdGhpcy5fZGVsdGEgPSAwOwotICAgIC8qKgotICAgICAqIEB0eXBlIHshbnVtYmVyfQog
ICAgICAqLwogICAgIHRoaXMuZHVyYXRpb24gPSAxMDA7CiAgICAgLyoqCkBAIC0xMDI1LDIzICsx
MDE3LDE5IEBAIGZ1bmN0aW9uIEFuaW1hdG9yKCkgewogICAgICAqLwogICAgIHRoaXMuc3RlcCA9
IG51bGw7CiAgICAgLyoqCi0gICAgICogQHR5cGUgeyFudW1iZXJ9CisgICAgICogQHR5cGUgeyFi
b29sZWFufQogICAgICAqIEBwcm90ZWN0ZWQKICAgICAgKi8KLSAgICB0aGlzLl9sYXN0U3RlcFRp
bWUgPSAwOworICAgIHRoaXMuX2lzUnVubmluZyA9IGZhbHNlOwogICAgIC8qKgogICAgICAqIEB0
eXBlIHshbnVtYmVyfQogICAgICAqLwotICAgIHRoaXMucHJvZ3Jlc3MgPSAwLjA7CisgICAgdGhp
cy5jdXJyZW50VmFsdWUgPSAwOwogICAgIC8qKgogICAgICAqIEB0eXBlIHshbnVtYmVyfQogICAg
ICAqIEBwcm90ZWN0ZWQKICAgICAgKi8KLSAgICB0aGlzLl9pc1J1bm5pbmcgPSBmYWxzZTsKLSAg
ICAvKioKLSAgICAgKiBAdHlwZSB7IWZ1bmN0aW9ufQotICAgICAqLwotICAgIHRoaXMudGltaW5n
RnVuY3Rpb24gPSBBbmltYXRpb25UaW1pbmdGdW5jdGlvbi5MaW5lYXI7CisgICAgdGhpcy5fbGFz
dFN0ZXBUaW1lID0gMDsKIH0KIAogQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShF
dmVudEVtaXR0ZXIucHJvdG90eXBlKTsKQEAgLTEwNTcsNTMgKzEwNDUsMTczIEBAIEFuaW1hdG9y
LnByb3RvdHlwZS5pc1J1bm5pbmcgPSBmdW5jdGlvbigpIHsKICAgICByZXR1cm4gdGhpcy5faXNS
dW5uaW5nOwogfTsKIAorQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24oKSB7Cisg
ICAgdGhpcy5fbGFzdFN0ZXBUaW1lID0gRGF0ZS5ub3coKTsKKyAgICB0aGlzLl9pc1J1bm5pbmcg
PSB0cnVlOworICAgIEFuaW1hdGlvbk1hbmFnZXIuc2hhcmVkLmFkZCh0aGlzKTsKK307CisKK0Fu
aW1hdG9yLnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKCF0aGlzLl9pc1J1
bm5pbmcpCisgICAgICAgIHJldHVybjsKKyAgICB0aGlzLl9pc1J1bm5pbmcgPSBmYWxzZTsKKyAg
ICBBbmltYXRpb25NYW5hZ2VyLnNoYXJlZC5yZW1vdmUodGhpcyk7CisgICAgdGhpcy5kaXNwYXRj
aEV2ZW50KEFuaW1hdG9yLkV2ZW50VHlwZURpZEFuaW1hdGlvblN0b3AsIHRoaXMpOworfTsKKwor
LyoqCisgKiBAcGFyYW0geyFudW1iZXJ9IG5vdworICovCitBbmltYXRvci5wcm90b3R5cGUub25B
bmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKG5vdykgeworICAgIHRoaXMuX2xhc3RTdGVwVGltZSA9
IG5vdzsKKyAgICB0aGlzLnN0ZXAodGhpcyk7Cit9OworCitmdW5jdGlvbiBUcmFuc2l0aW9uQW5p
bWF0b3IoKSB7CisgICAgQW5pbWF0b3IuY2FsbCh0aGlzKTsKKyAgICAvKioKKyAgICAgKiBAdHlw
ZSB7IW51bWJlcn0KKyAgICAgKiBAcHJvdGVjdGVkCisgICAgICovCisgICAgdGhpcy5fZnJvbSA9
IDA7CisgICAgLyoqCisgICAgICogQHR5cGUgeyFudW1iZXJ9CisgICAgICogQHByb3RlY3RlZAor
ICAgICAqLworICAgIHRoaXMuX3RvID0gMDsKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7IW51bWJl
cn0KKyAgICAgKiBAcHJvdGVjdGVkCisgICAgICovCisgICAgdGhpcy5fZGVsdGEgPSAwOworICAg
IC8qKgorICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAgICAqLworICAgIHRoaXMucHJvZ3Jlc3Mg
PSAwLjA7CisgICAgLyoqCisgICAgICogQHR5cGUgeyFmdW5jdGlvbn0KKyAgICAgKi8KKyAgICB0
aGlzLnRpbWluZ0Z1bmN0aW9uID0gQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24uTGluZWFyOworfQor
CitUcmFuc2l0aW9uQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShBbmltYXRvci5w
cm90b3R5cGUpOworCiAvKioKICAqIEBwYXJhbSB7IW51bWJlcn0gdmFsdWUKICAqLwotQW5pbWF0
b3IucHJvdG90eXBlLnNldEZyb20gPSBmdW5jdGlvbih2YWx1ZSkgeworVHJhbnNpdGlvbkFuaW1h
dG9yLnByb3RvdHlwZS5zZXRGcm9tID0gZnVuY3Rpb24odmFsdWUpIHsKICAgICB0aGlzLl9mcm9t
ID0gdmFsdWU7CiAgICAgdGhpcy5fZGVsdGEgPSB0aGlzLl90byAtIHRoaXMuX2Zyb207CiB9Owog
CitUcmFuc2l0aW9uQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24oKSB7CisgICAg
Y29uc29sZS5hc3NlcnQoaXNGaW5pdGUodGhpcy5kdXJhdGlvbikpOworICAgIHRoaXMucHJvZ3Jl
c3MgPSAwLjA7CisgICAgdGhpcy5jdXJyZW50VmFsdWUgPSB0aGlzLl9mcm9tOworICAgIEFuaW1h
dG9yLnByb3RvdHlwZS5zdGFydC5jYWxsKHRoaXMpOworfTsKKworVHJhbnNpdGlvbkFuaW1hdG9y
LnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24oKSB7CisgICAgQW5pbWF0b3IucHJvdG90eXBlLnN0
b3AuY2FsbCh0aGlzKTsKK307CisKIC8qKgogICogQHBhcmFtIHshbnVtYmVyfSB2YWx1ZQogICov
Ci1BbmltYXRvci5wcm90b3R5cGUuc2V0VG8gPSBmdW5jdGlvbih2YWx1ZSkgeworVHJhbnNpdGlv
bkFuaW1hdG9yLnByb3RvdHlwZS5zZXRUbyA9IGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgdGhpcy5f
dG8gPSB2YWx1ZTsKICAgICB0aGlzLl9kZWx0YSA9IHRoaXMuX3RvIC0gdGhpcy5fZnJvbTsKIH07
CiAKLUFuaW1hdG9yLnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0aW9uKCkgewotICAgIHRoaXMuX2xh
c3RTdGVwVGltZSA9IERhdGUubm93KCk7Ci0gICAgdGhpcy5wcm9ncmVzcyA9IDAuMDsKLSAgICB0
aGlzLl9pc1J1bm5pbmcgPSB0cnVlOwotICAgIHRoaXMuY3VycmVudFZhbHVlID0gdGhpcy5fZnJv
bTsKLSAgICBBbmltYXRpb25NYW5hZ2VyLnNoYXJlZC5hZGQodGhpcyk7CisvKioKKyAqIEBwYXJh
bSB7IW51bWJlcn0gbm93CisgKi8KK1RyYW5zaXRpb25BbmltYXRvci5wcm90b3R5cGUub25Bbmlt
YXRpb25GcmFtZSA9IGZ1bmN0aW9uKG5vdykgeworICAgIHRoaXMucHJvZ3Jlc3MgKz0gKG5vdyAt
IHRoaXMuX2xhc3RTdGVwVGltZSkgLyB0aGlzLmR1cmF0aW9uOworICAgIHRoaXMucHJvZ3Jlc3Mg
PSBNYXRoLm1pbigxLjAsIHRoaXMucHJvZ3Jlc3MpOworICAgIHRoaXMuc3RlcCh0aGlzKTsKKyAg
ICB0aGlzLl9sYXN0U3RlcFRpbWUgPSBub3c7CisgICAgdGhpcy5jdXJyZW50VmFsdWUgPSB0aGlz
LnRpbWluZ0Z1bmN0aW9uKHRoaXMucHJvZ3Jlc3MpICogdGhpcy5fZGVsdGEgKyB0aGlzLl9mcm9t
OworICAgIGlmICh0aGlzLnByb2dyZXNzID09PSAxLjApIHsKKyAgICAgICAgdGhpcy5zdG9wKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiB9OwogCi1BbmltYXRvci5wcm90b3R5cGUuc3RvcCA9
IGZ1bmN0aW9uKCkgewotICAgIGlmICghdGhpcy5faXNSdW5uaW5nKQotICAgICAgICByZXR1cm47
Ci0gICAgdGhpcy5faXNSdW5uaW5nID0gZmFsc2U7Ci0gICAgdGhpcy5jdXJyZW50VmFsdWUgPSB0
aGlzLl90bzsKLSAgICB0aGlzLnN0ZXAodGhpcyk7Ci0gICAgQW5pbWF0aW9uTWFuYWdlci5zaGFy
ZWQucmVtb3ZlKHRoaXMpOwotICAgIHRoaXMuZGlzcGF0Y2hFdmVudChBbmltYXRvci5FdmVudFR5
cGVEaWRBbmltYXRpb25TdG9wLCB0aGlzKTsKK2Z1bmN0aW9uIEZsaW5nR2VzdHVyZUFuaW1hdG9y
KGluaXRpYWxWZWxvY2l0eSwgaW5pdGlhbFZhbHVlKSB7CisgICAgQW5pbWF0b3IuY2FsbCh0aGlz
KTsKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7IW51bWJlcn0KKyAgICAgKi8KKyAgICB0aGlzLmlu
aXRpYWxWZWxvY2l0eSA9IGluaXRpYWxWZWxvY2l0eTsKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7
IW51bWJlcn0KKyAgICAgKi8KKyAgICB0aGlzLmluaXRpYWxWYWx1ZSA9IGluaXRpYWxWYWx1ZTsK
KyAgICAvKioKKyAgICAgKiBAdHlwZSB7IW51bWJlcn0KKyAgICAgKiBAcHJvdGVjdGVkCisgICAg
ICovCisgICAgdGhpcy5fZWxhcHNlZFRpbWUgPSAwOworICAgIHZhciBzdGFydFZlbG9jaXR5ID0g
TWF0aC5hYnModGhpcy5pbml0aWFsVmVsb2NpdHkpOworICAgIGlmIChzdGFydFZlbG9jaXR5ID4g
dGhpcy5fdmVsb2NpdHlBdFRpbWUoMCkpCisgICAgICAgIHN0YXJ0VmVsb2NpdHkgPSB0aGlzLl92
ZWxvY2l0eUF0VGltZSgwKTsKKyAgICBpZiAoc3RhcnRWZWxvY2l0eSA8IDApCisgICAgICAgIHN0
YXJ0VmVsb2NpdHkgPSAwOworICAgIC8qKgorICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAgICAq
IEBwcm90ZWN0ZWQKKyAgICAgKi8KKyAgICB0aGlzLl90aW1lT2Zmc2V0ID0gdGhpcy5fdGltZUF0
VmVsb2NpdHkoc3RhcnRWZWxvY2l0eSk7CisgICAgLyoqCisgICAgICogQHR5cGUgeyFudW1iZXJ9
CisgICAgICogQHByb3RlY3RlZAorICAgICAqLworICAgIHRoaXMuX3Bvc2l0aW9uT2Zmc2V0ID0g
dGhpcy5fdmFsdWVBdFRpbWUodGhpcy5fdGltZU9mZnNldCk7CisgICAgLyoqCisgICAgICogQHR5
cGUgeyFudW1iZXJ9CisgICAgICovCisgICAgdGhpcy5kdXJhdGlvbiA9IHRoaXMuX3RpbWVBdFZl
bG9jaXR5KDApOworfQorCitGbGluZ0dlc3R1cmVBbmltYXRvci5wcm90b3R5cGUgPSBPYmplY3Qu
Y3JlYXRlKEFuaW1hdG9yLnByb3RvdHlwZSk7CisKK0ZsaW5nR2VzdHVyZUFuaW1hdG9yLlAwID0g
LTU3MDcuNjI7CitGbGluZ0dlc3R1cmVBbmltYXRvci5QMSA9IDAuMTcyOworRmxpbmdHZXN0dXJl
QW5pbWF0b3IuUDIgPSAwLjAwMzc7CisKK0ZsaW5nR2VzdHVyZUFuaW1hdG9yLnByb3RvdHlwZS5f
dmFsdWVBdFRpbWUgPSBmdW5jdGlvbih0KSB7CisgICAgcmV0dXJuIEZsaW5nR2VzdHVyZUFuaW1h
dG9yLlAwICogTWF0aC5leHAoLUZsaW5nR2VzdHVyZUFuaW1hdG9yLlAyICogdCkgLSBGbGluZ0dl
c3R1cmVBbmltYXRvci5QMSAqIHQgLSBGbGluZ0dlc3R1cmVBbmltYXRvci5QMDsKK307CisKK0Zs
aW5nR2VzdHVyZUFuaW1hdG9yLnByb3RvdHlwZS5fdmVsb2NpdHlBdFRpbWUgPSBmdW5jdGlvbih0
KSB7CisgICAgcmV0dXJuIC1GbGluZ0dlc3R1cmVBbmltYXRvci5QMCAqIEZsaW5nR2VzdHVyZUFu
aW1hdG9yLlAyICogTWF0aC5leHAoLUZsaW5nR2VzdHVyZUFuaW1hdG9yLlAyICogdCkgLSBGbGlu
Z0dlc3R1cmVBbmltYXRvci5QMTsKK307CisKK0ZsaW5nR2VzdHVyZUFuaW1hdG9yLnByb3RvdHlw
ZS5fdGltZUF0VmVsb2NpdHkgPSBmdW5jdGlvbih2KSB7CisgICAgcmV0dXJuIC1NYXRoLmxvZygo
diArIEZsaW5nR2VzdHVyZUFuaW1hdG9yLlAxKSAvICgtRmxpbmdHZXN0dXJlQW5pbWF0b3IuUDAg
KiBGbGluZ0dlc3R1cmVBbmltYXRvci5QMikpIC8gRmxpbmdHZXN0dXJlQW5pbWF0b3IuUDI7Cit9
OworCitGbGluZ0dlc3R1cmVBbmltYXRvci5wcm90b3R5cGUuc3RhcnQgPSBmdW5jdGlvbigpIHsK
KyAgICB0aGlzLl9sYXN0U3RlcFRpbWUgPSBEYXRlLm5vdygpOworICAgIEFuaW1hdG9yLnByb3Rv
dHlwZS5zdGFydC5jYWxsKHRoaXMpOwogfTsKIAogLyoqCiAgKiBAcGFyYW0geyFudW1iZXJ9IG5v
dwogICovCi1BbmltYXRvci5wcm90b3R5cGUub25BbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKG5v
dykgewotICAgIHRoaXMucHJvZ3Jlc3MgKz0gKG5vdyAtIHRoaXMuX2xhc3RTdGVwVGltZSkgLyB0
aGlzLmR1cmF0aW9uOwotICAgIGlmICh0aGlzLnByb2dyZXNzID49IDEuMCkgewotICAgICAgICB0
aGlzLnByb2dyZXNzID0gMS4wOworRmxpbmdHZXN0dXJlQW5pbWF0b3IucHJvdG90eXBlLm9uQW5p
bWF0aW9uRnJhbWUgPSBmdW5jdGlvbihub3cpIHsKKyAgICB0aGlzLl9lbGFwc2VkVGltZSArPSBu
b3cgLSB0aGlzLl9sYXN0U3RlcFRpbWU7CisgICAgdGhpcy5fbGFzdFN0ZXBUaW1lID0gbm93Owor
ICAgIGlmICh0aGlzLl9lbGFwc2VkVGltZSArIHRoaXMuX3RpbWVPZmZzZXQgPj0gdGhpcy5kdXJh
dGlvbikgewogICAgICAgICB0aGlzLnN0b3AoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICB0aGlzLmN1cnJlbnRWYWx1ZSA9IHRoaXMudGltaW5nRnVuY3Rpb24odGhpcy5wcm9ncmVzcykg
KiB0aGlzLl9kZWx0YSArIHRoaXMuX2Zyb207CisgICAgdmFyIHBvc2l0aW9uID0gdGhpcy5fdmFs
dWVBdFRpbWUodGhpcy5fZWxhcHNlZFRpbWUgKyB0aGlzLl90aW1lT2Zmc2V0KSAtIHRoaXMuX3Bv
c2l0aW9uT2Zmc2V0OworICAgIGlmICh0aGlzLmluaXRpYWxWZWxvY2l0eSA8IDApCisgICAgICAg
IHBvc2l0aW9uID0gLXBvc2l0aW9uOworICAgIHRoaXMuY3VycmVudFZhbHVlID0gcG9zaXRpb24g
KyB0aGlzLmluaXRpYWxWYWx1ZTsKICAgICB0aGlzLnN0ZXAodGhpcyk7Ci0gICAgdGhpcy5fbGFz
dFN0ZXBUaW1lID0gbm93OwogfTsKIAogLyoqCkBAIC0xMjA5LDE1ICsxMzE3LDI2IEBAIGZ1bmN0
aW9uIFNjcm9sbFZpZXcoKSB7CiAgICAgICogQHR5cGUge0FuaW1hdG9yfQogICAgICAqIEBwcm90
ZWN0ZWQKICAgICAgKi8KLSAgICB0aGlzLl9zY3JvbGxBbmltYXRvciA9IG5ldyBBbmltYXRvcigp
OwotICAgIHRoaXMuX3Njcm9sbEFuaW1hdG9yLnN0ZXAgPSB0aGlzLm9uU2Nyb2xsQW5pbWF0b3JT
dGVwOwotCisgICAgdGhpcy5fc2Nyb2xsQW5pbWF0b3IgPSBudWxsOwogICAgIC8qKgogICAgICAq
IEB0eXBlIHs/T2JqZWN0fQogICAgICAqLwogICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsOworICAg
IC8qKgorICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAgICAqLworICAgIHRoaXMuX2xhc3RUb3Vj
aFBvc2l0aW9uID0gMDsKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7IW51bWJlcn0KKyAgICAgKi8K
KyAgICB0aGlzLl9sYXN0VG91Y2hWZWxvY2l0eSA9IDA7CisgICAgLyoqCisgICAgICogQHR5cGUg
eyFudW1iZXJ9CisgICAgICovCisgICAgdGhpcy5fbGFzdFRvdWNoVGltZVN0YW1wID0gMDsKIAog
ICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwgdGhpcy5vbk1v
dXNlV2hlZWwsIGZhbHNlKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91
Y2hzdGFydCIsIHRoaXMub25Ub3VjaFN0YXJ0LCBmYWxzZSk7CiAKICAgICAvKioKICAgICAgKiBU
aGUgY29udGVudCBvZmZzZXQgaXMgcGFydGl0aW9uZWQgc28gdGhlIGl0IGNhbiBnbyBiZXlvbmQg
dGhlIENTUyBsaW1pdApAQCAtMTIzNSw2ICsxMzU0LDU1IEBAIFNjcm9sbFZpZXcuQ2xhc3NOYW1l
U2Nyb2xsVmlldyA9ICJzY3JvbGwtdmlldyI7CiBTY3JvbGxWaWV3LkNsYXNzTmFtZVNjcm9sbFZp
ZXdDb250ZW50ID0gInNjcm9sbC12aWV3LWNvbnRlbnQiOwogCiAvKioKKyAqIEBwYXJhbSB7IUV2
ZW50fSBldmVudAorICovCitTY3JvbGxWaWV3LnByb3RvdHlwZS5vblRvdWNoU3RhcnQgPSBmdW5j
dGlvbihldmVudCkgeworICAgIHZhciB0b3VjaCA9IGV2ZW50LnRvdWNoZXNbMF07CisgICAgdGhp
cy5fbGFzdFRvdWNoUG9zaXRpb24gPSB0b3VjaC5jbGllbnRZOworICAgIHRoaXMuX2xhc3RUb3Vj
aFZlbG9jaXR5ID0gMDsKKyAgICB0aGlzLl9sYXN0VG91Y2hUaW1lU3RhbXAgPSBldmVudC50aW1l
U3RhbXA7CisgICAgaWYgKHRoaXMuX3Njcm9sbEFuaW1hdG9yKQorICAgICAgICB0aGlzLl9zY3Jv
bGxBbmltYXRvci5zdG9wKCk7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92
ZSIsIHRoaXMub25XaW5kb3dUb3VjaE1vdmUsIGZhbHNlKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigidG91Y2hlbmQiLCB0aGlzLm9uV2luZG93VG91Y2hFbmQsIGZhbHNlKTsKK307CisK
Ky8qKgorICogQHBhcmFtIHshRXZlbnR9IGV2ZW50CisgKi8KK1Njcm9sbFZpZXcucHJvdG90eXBl
Lm9uV2luZG93VG91Y2hNb3ZlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB2YXIgdG91Y2ggPSBl
dmVudC50b3VjaGVzWzBdOworICAgIHZhciBkZWx0YVRpbWUgPSBldmVudC50aW1lU3RhbXAgLSB0
aGlzLl9sYXN0VG91Y2hUaW1lU3RhbXA7CisgICAgdmFyIGRlbHRhWSA9IHRoaXMuX2xhc3RUb3Vj
aFBvc2l0aW9uIC0gdG91Y2guY2xpZW50WTsKKyAgICB0aGlzLnNjcm9sbEJ5KGRlbHRhWSwgZmFs
c2UpOworICAgIHRoaXMuX2xhc3RUb3VjaFZlbG9jaXR5ID0gZGVsdGFZIC8gZGVsdGFUaW1lOwor
ICAgIHRoaXMuX2xhc3RUb3VjaFBvc2l0aW9uID0gdG91Y2guY2xpZW50WTsKKyAgICB0aGlzLl9s
YXN0VG91Y2hUaW1lU3RhbXAgPSBldmVudC50aW1lU3RhbXA7CisgICAgZXZlbnQuc3RvcFByb3Bh
Z2F0aW9uKCk7CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK307CisKKy8qKgorICogQHBh
cmFtIHshRXZlbnR9IGV2ZW50CisgKi8KK1Njcm9sbFZpZXcucHJvdG90eXBlLm9uV2luZG93VG91
Y2hFbmQgPSBmdW5jdGlvbihldmVudCkgeworICAgIGlmIChNYXRoLmFicyh0aGlzLl9sYXN0VG91
Y2hWZWxvY2l0eSkgPiAwLjAxKSB7CisgICAgICAgIHRoaXMuX3Njcm9sbEFuaW1hdG9yID0gbmV3
IEZsaW5nR2VzdHVyZUFuaW1hdG9yKHRoaXMuX2xhc3RUb3VjaFZlbG9jaXR5LCB0aGlzLl9jb250
ZW50T2Zmc2V0KTsKKyAgICAgICAgdGhpcy5fc2Nyb2xsQW5pbWF0b3Iuc3RlcCA9IHRoaXMub25G
bGluZ0dlc3R1cmVBbmltYXRvclN0ZXA7CisgICAgICAgIHRoaXMuX3Njcm9sbEFuaW1hdG9yLnN0
YXJ0KCk7CisgICAgfQorICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUi
LCB0aGlzLm9uV2luZG93VG91Y2hNb3ZlLCBmYWxzZSk7CisgICAgd2luZG93LnJlbW92ZUV2ZW50
TGlzdGVuZXIoInRvdWNoZW5kIiwgdGhpcy5vbldpbmRvd1RvdWNoRW5kLCBmYWxzZSk7Cit9Owor
CisvKioKKyAqIEBwYXJhbSB7IUFuaW1hdG9yfSBhbmltYXRvcgorICovCitTY3JvbGxWaWV3LnBy
b3RvdHlwZS5vbkZsaW5nR2VzdHVyZUFuaW1hdG9yU3RlcCA9IGZ1bmN0aW9uKGFuaW1hdG9yKSB7
CisgICAgdGhpcy5zY3JvbGxUbyhhbmltYXRvci5jdXJyZW50VmFsdWUsIGZhbHNlKTsKK307CisK
Ky8qKgogICogQHJldHVybiB7IUFuaW1hdG9yfQogICovCiBTY3JvbGxWaWV3LnByb3RvdHlwZS5z
Y3JvbGxBbmltYXRvciA9IGZ1bmN0aW9uKCkgewpAQCAtMTI5Niw2ICsxNDY0LDEwIEBAIFNjcm9s
bFZpZXcucHJvdG90eXBlLnNjcm9sbFRvID0gZnVuY3Rpb24ob2Zmc2V0LCBhbmltYXRlKSB7CiAg
ICAgICAgIHRoaXMuc2V0Q29udGVudE9mZnNldChvZmZzZXQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQorICAgIGlmICh0aGlzLl9zY3JvbGxBbmltYXRvcikKKyAgICAgICAgdGhpcy5fc2Nyb2xs
QW5pbWF0b3Iuc3RvcCgpOworICAgIHRoaXMuX3Njcm9sbEFuaW1hdG9yID0gbmV3IFRyYW5zaXRp
b25BbmltYXRvcigpOworICAgIHRoaXMuX3Njcm9sbEFuaW1hdG9yLnN0ZXAgPSB0aGlzLm9uU2Ny
b2xsQW5pbWF0b3JTdGVwOwogICAgIHRoaXMuX3Njcm9sbEFuaW1hdG9yLnNldEZyb20odGhpcy5f
Y29udGVudE9mZnNldCk7CiAgICAgdGhpcy5fc2Nyb2xsQW5pbWF0b3Iuc2V0VG8ob2Zmc2V0KTsK
ICAgICB0aGlzLl9zY3JvbGxBbmltYXRvci5kdXJhdGlvbiA9IDMwMDsKQEAgLTE3NjQsNiArMTkz
Niw3IEBAIGZ1bmN0aW9uIFNjcnViYnlTY3JvbGxCYXIoc2Nyb2xsVmlldykgewogICAgIHRoaXMu
X3RpbWVyID0gbnVsbDsKICAgICAKICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2Vkb3duIiwgdGhpcy5vbk1vdXNlRG93biwgZmFsc2UpOworICAgIHRoaXMuZWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwgdGhpcy5vblRvdWNoU3RhcnQsIGZhbHNlKTsK
IH0KIAogU2NydWJieVNjcm9sbEJhci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFZpZXcucHJv
dG90eXBlKTsKQEAgLTE3NzUsNiArMTk0OCw0OCBAQCBTY3J1YmJ5U2Nyb2xsQmFyLkNsYXNzTmFt
ZVNjcnViYnlTY3JvbGxCYXIgPSAic2NydWJieS1zY3JvbGwtYmFyIjsKIFNjcnViYnlTY3JvbGxC
YXIuQ2xhc3NOYW1lU2NydWJieVNjcm9sbFRodW1iID0gInNjcnViYnktc2Nyb2xsLXRodW1iIjsK
IAogLyoqCisgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKKyAqLworU2NydWJieVNjcm9sbEJhci5w
cm90b3R5cGUub25Ub3VjaFN0YXJ0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB2YXIgdG91Y2gg
PSBldmVudC50b3VjaGVzWzBdOworICAgIHRoaXMuX3NldFRodW1iUG9zaXRpb25Gcm9tRXZlbnRQ
b3NpdGlvbih0b3VjaC5jbGllbnRZKTsKKyAgICBpZiAodGhpcy5fdGh1bWJTdHlsZVRvcEFuaW1h
dG9yKQorICAgICAgICB0aGlzLl90aHVtYlN0eWxlVG9wQW5pbWF0b3Iuc3RvcCgpOworICAgIHRo
aXMuX3RpbWVyID0gc2V0SW50ZXJ2YWwodGhpcy5vblNjcm9sbFRpbWVyLCBTY3J1YmJ5U2Nyb2xs
QmFyLlNjcm9sbEludGVydmFsKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2ht
b3ZlIiwgdGhpcy5vbldpbmRvd1RvdWNoTW92ZSwgZmFsc2UpOworICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJ0b3VjaGVuZCIsIHRoaXMub25XaW5kb3dUb3VjaEVuZCwgZmFsc2UpOworICAg
IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cit9
OworCisvKioKKyAqIEBwYXJhbSB7P0V2ZW50fSBldmVudAorICovCitTY3J1YmJ5U2Nyb2xsQmFy
LnByb3RvdHlwZS5vbldpbmRvd1RvdWNoTW92ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgdmFy
IHRvdWNoID0gZXZlbnQudG91Y2hlc1swXTsKKyAgICB0aGlzLl9zZXRUaHVtYlBvc2l0aW9uRnJv
bUV2ZW50UG9zaXRpb24odG91Y2guY2xpZW50WSk7CisgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9u
KCk7CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK307CisKKy8qKgorICogQHBhcmFtIHs/
RXZlbnR9IGV2ZW50CisgKi8KK1NjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLm9uV2luZG93VG91
Y2hFbmQgPSBmdW5jdGlvbihldmVudCkgeworICAgIHRoaXMuX3RodW1iU3R5bGVUb3BBbmltYXRv
ciA9IG5ldyBUcmFuc2l0aW9uQW5pbWF0b3IoKTsKKyAgICB0aGlzLl90aHVtYlN0eWxlVG9wQW5p
bWF0b3Iuc3RlcCA9IHRoaXMub25UaHVtYlN0eWxlVG9wQW5pbWF0aW9uU3RlcDsKKyAgICB0aGlz
Ll90aHVtYlN0eWxlVG9wQW5pbWF0b3Iuc2V0RnJvbSh0aGlzLnRodW1iLm9mZnNldFRvcCk7Cisg
ICAgdGhpcy5fdGh1bWJTdHlsZVRvcEFuaW1hdG9yLnNldFRvKCh0aGlzLl9oZWlnaHQgLSB0aGlz
Ll90aHVtYkhlaWdodCkgLyAyKTsKKyAgICB0aGlzLl90aHVtYlN0eWxlVG9wQW5pbWF0b3IudGlt
aW5nRnVuY3Rpb24gPSBBbmltYXRpb25UaW1pbmdGdW5jdGlvbi5FYXNlSW5PdXQ7CisgICAgdGhp
cy5fdGh1bWJTdHlsZVRvcEFuaW1hdG9yLmR1cmF0aW9uID0gMTAwOworICAgIHRoaXMuX3RodW1i
U3R5bGVUb3BBbmltYXRvci5zdGFydCgpOworCisgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVu
ZXIoInRvdWNobW92ZSIsIHRoaXMub25XaW5kb3dUb3VjaE1vdmUsIGZhbHNlKTsKKyAgICB3aW5k
b3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCB0aGlzLm9uV2luZG93VG91Y2hFbmQs
IGZhbHNlKTsKKyAgICBjbGVhckludGVydmFsKHRoaXMuX3RpbWVyKTsKK307CisKKy8qKgogICog
QHJldHVybiB7IW51bWJlcn0gSGVpZ2h0IG9mIHRoZSB2aWV3IGluIHBpeGVscy4KICAqLwogU2Ny
dWJieVNjcm9sbEJhci5wcm90b3R5cGUuaGVpZ2h0ID0gZnVuY3Rpb24oKSB7CkBAIC0xODA2LDEy
ICsyMDIxLDEyIEBAIFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLnNldFRodW1iSGVpZ2h0ID0g
ZnVuY3Rpb24oaGVpZ2h0KSB7CiB9OwogCiAvKioKLSAqIEBwYXJhbSB7P0V2ZW50fSBldmVudAor
ICogQHBhcmFtIHtudW1iZXJ9IHBvc2l0aW9uCiAgKi8KLVNjcnViYnlTY3JvbGxCYXIucHJvdG90
eXBlLl9zZXRUaHVtYlBvc2l0aW9uRnJvbUV2ZW50ID0gZnVuY3Rpb24oZXZlbnQpIHsKK1NjcnVi
YnlTY3JvbGxCYXIucHJvdG90eXBlLl9zZXRUaHVtYlBvc2l0aW9uRnJvbUV2ZW50UG9zaXRpb24g
PSBmdW5jdGlvbihwb3NpdGlvbikgewogICAgIHZhciB0aHVtYk1pbiA9IFNjcnViYnlTY3JvbGxC
YXIuVGh1bWJNYXJnaW47CiAgICAgdmFyIHRodW1iTWF4ID0gdGhpcy5faGVpZ2h0IC0gdGhpcy5f
dGh1bWJIZWlnaHQgLSBTY3J1YmJ5U2Nyb2xsQmFyLlRodW1iTWFyZ2luICogMjsKLSAgICB2YXIg
eSA9IGV2ZW50LmNsaWVudFkgLSB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCku
dG9wIC0gdGhpcy5lbGVtZW50LmNsaWVudFRvcCArIHRoaXMuZWxlbWVudC5zY3JvbGxUb3A7Cisg
ICAgdmFyIHkgPSBwb3NpdGlvbiAtIHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KS50b3AgLSB0aGlzLmVsZW1lbnQuY2xpZW50VG9wICsgdGhpcy5lbGVtZW50LnNjcm9sbFRvcDsK
ICAgICB2YXIgdGh1bWJQb3NpdGlvbiA9IHkgLSB0aGlzLl90aHVtYkhlaWdodCAvIDI7CiAgICAg
dGh1bWJQb3NpdGlvbiA9IE1hdGgubWF4KHRodW1iUG9zaXRpb24sIHRodW1iTWluKTsKICAgICB0
aHVtYlBvc2l0aW9uID0gTWF0aC5taW4odGh1bWJQb3NpdGlvbiwgdGh1bWJNYXgpOwpAQCAtMTgy
MywyNyArMjAzOCwyOSBAQCBTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5fc2V0VGh1bWJQb3Np
dGlvbkZyb21FdmVudCA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgKiBAcGFyYW0gez9FdmVudH0gZXZl
bnQKICAqLwogU2NydWJieVNjcm9sbEJhci5wcm90b3R5cGUub25Nb3VzZURvd24gPSBmdW5jdGlv
bihldmVudCkgewotICAgIHRoaXMuX3NldFRodW1iUG9zaXRpb25Gcm9tRXZlbnQoZXZlbnQpOwor
ICAgIHRoaXMuX3NldFRodW1iUG9zaXRpb25Gcm9tRXZlbnRQb3NpdGlvbihldmVudC5jbGllbnRZ
KTsKIAogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLm9uV2lu
ZG93TW91c2VNb3ZlLCBmYWxzZSk7CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
dXAiLCB0aGlzLm9uV2luZG93TW91c2VVcCwgZmFsc2UpOwogICAgIGlmICh0aGlzLl90aHVtYlN0
eWxlVG9wQW5pbWF0b3IpCiAgICAgICAgIHRoaXMuX3RodW1iU3R5bGVUb3BBbmltYXRvci5zdG9w
KCk7CiAgICAgdGhpcy5fdGltZXIgPSBzZXRJbnRlcnZhbCh0aGlzLm9uU2Nyb2xsVGltZXIsIFNj
cnViYnlTY3JvbGxCYXIuU2Nyb2xsSW50ZXJ2YWwpOworICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlv
bigpOworICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiB9OwogCiAvKioKICAqIEBwYXJhbSB7
P0V2ZW50fSBldmVudAogICovCiBTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5vbldpbmRvd01v
dXNlTW92ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgdGhpcy5fc2V0VGh1bWJQb3NpdGlvbkZy
b21FdmVudChldmVudCk7CisgICAgdGhpcy5fc2V0VGh1bWJQb3NpdGlvbkZyb21FdmVudFBvc2l0
aW9uKGV2ZW50LmNsaWVudFkpOwogfTsKIAogLyoqCiAgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQK
ICAqLwogU2NydWJieVNjcm9sbEJhci5wcm90b3R5cGUub25XaW5kb3dNb3VzZVVwID0gZnVuY3Rp
b24oZXZlbnQpIHsKLSAgICB0aGlzLl90aHVtYlN0eWxlVG9wQW5pbWF0b3IgPSBuZXcgQW5pbWF0
b3IoKTsKKyAgICB0aGlzLl90aHVtYlN0eWxlVG9wQW5pbWF0b3IgPSBuZXcgVHJhbnNpdGlvbkFu
aW1hdG9yKCk7CiAgICAgdGhpcy5fdGh1bWJTdHlsZVRvcEFuaW1hdG9yLnN0ZXAgPSB0aGlzLm9u
VGh1bWJTdHlsZVRvcEFuaW1hdGlvblN0ZXA7CiAgICAgdGhpcy5fdGh1bWJTdHlsZVRvcEFuaW1h
dG9yLnNldEZyb20odGhpcy50aHVtYi5vZmZzZXRUb3ApOwogICAgIHRoaXMuX3RodW1iU3R5bGVU
b3BBbmltYXRvci5zZXRUbygodGhpcy5faGVpZ2h0IC0gdGhpcy5fdGh1bWJIZWlnaHQpIC8gMik7
CkBAIC0xODg2LDYgKzIxMDMsOCBAQCBmdW5jdGlvbiBZZWFyTGlzdENlbGwoc2hvcnRNb250aExh
YmVscykgewogICAgICAqLwogICAgIHRoaXMubGFiZWwgPSBjcmVhdGVFbGVtZW50KCJkaXYiLCBZ
ZWFyTGlzdENlbGwuQ2xhc3NOYW1lTGFiZWwsICItLS0tIik7CiAgICAgdGhpcy5lbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMubGFiZWwpOworICAgIHRoaXMubGFiZWwuc3R5bGUuaGVpZ2h0ID0gKFll
YXJMaXN0Q2VsbC5IZWlnaHQgLSBZZWFyTGlzdENlbGwuQm9yZGVyQm90dG9tV2lkdGgpICsgInB4
IjsKKyAgICB0aGlzLmxhYmVsLnN0eWxlLmxpbmVIZWlnaHQgPSAoWWVhckxpc3RDZWxsLkhlaWdo
dCAtIFllYXJMaXN0Q2VsbC5Cb3JkZXJCb3R0b21XaWR0aCkgKyAicHgiOwogCiAgICAgLyoqCiAg
ICAgICogQHR5cGUgeyFBcnJheX0gQXJyYXkgb2YgdGhlIDEyIG1vbnRoIGJ1dHRvbiBlbGVtZW50
cy4KQEAgLTE5MjAsMTAgKzIxMzksMTEgQEAgZnVuY3Rpb24gWWVhckxpc3RDZWxsKHNob3J0TW9u
dGhMYWJlbHMpIHsKIAogWWVhckxpc3RDZWxsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTGlz
dENlbGwucHJvdG90eXBlKTsKIAotWWVhckxpc3RDZWxsLkhlaWdodCA9IDI1OworWWVhckxpc3RD
ZWxsLkhlaWdodCA9IGhhc0luYWNjdXJhdGVQb2ludGluZ0RldmljZSgpID8gMzEgOiAyNTsKK1ll
YXJMaXN0Q2VsbC5Cb3JkZXJCb3R0b21XaWR0aCA9IDE7CiBZZWFyTGlzdENlbGwuQnV0dG9uUm93
cyA9IDM7CiBZZWFyTGlzdENlbGwuQnV0dG9uQ29sdW1ucyA9IDQ7Ci1ZZWFyTGlzdENlbGwuU2Vs
ZWN0ZWRIZWlnaHQgPSAxMjE7CitZZWFyTGlzdENlbGwuU2VsZWN0ZWRIZWlnaHQgPSBoYXNJbmFj
Y3VyYXRlUG9pbnRpbmdEZXZpY2UoKSA/IDEyNyA6IDEyMTsKIFllYXJMaXN0Q2VsbC5DbGFzc05h
bWVZZWFyTGlzdENlbGwgPSAieWVhci1saXN0LWNlbGwiOwogWWVhckxpc3RDZWxsLkNsYXNzTmFt
ZUxhYmVsID0gImxhYmVsIjsKIFllYXJMaXN0Q2VsbC5DbGFzc05hbWVNb250aENob29zZXIgPSAi
bW9udGgtY2hvb3NlciI7CkBAIC0yMDI4LDYgKzIyNDgsNyBAQCBmdW5jdGlvbiBZZWFyTGlzdFZp
ZXcobWluaW11bU1vbnRoLCBtYXhpbXVtTW9udGgpIHsKICAgICB0aGlzLmVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5vbk1vdXNlT3ZlciwgZmFsc2UpOwogICAgIHRo
aXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsIHRoaXMub25Nb3VzZU91dCwg
ZmFsc2UpOwogICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhp
cy5vbktleURvd24sIGZhbHNlKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
dG91Y2hzdGFydCIsIHRoaXMub25Ub3VjaFN0YXJ0LCBmYWxzZSk7CiB9CiAKIFllYXJMaXN0Vmll
dy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKExpc3RWaWV3LnByb3RvdHlwZSk7CkBAIC0yMDM5
LDYgKzIyNjAsMTkgQEAgWWVhckxpc3RWaWV3LkV2ZW50VHlwZVllYXJMaXN0Vmlld0RpZFNlbGVj
dE1vbnRoID0gInllYXJMaXN0Vmlld0RpZFNlbGVjdE1vbnRoIjsKIC8qKgogICogQHBhcmFtIHs/
RXZlbnR9IGV2ZW50CiAgKi8KK1llYXJMaXN0Vmlldy5wcm90b3R5cGUub25Ub3VjaFN0YXJ0ID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB2YXIgdG91Y2ggPSBldmVudC50b3VjaGVzWzBdOworICAg
IHZhciBtb250aEJ1dHRvbkVsZW1lbnQgPSBlbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKHRv
dWNoLnRhcmdldCwgWWVhckxpc3RDZWxsLkNsYXNzTmFtZU1vbnRoQnV0dG9uKTsKKyAgICBpZiAo
IW1vbnRoQnV0dG9uRWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIHZhciBjZWxsRWxlbWVu
dCA9IGVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MobW9udGhCdXR0b25FbGVtZW50LCBZZWFy
TGlzdENlbGwuQ2xhc3NOYW1lWWVhckxpc3RDZWxsKTsKKyAgICB2YXIgY2VsbCA9IGNlbGxFbGVt
ZW50LiR2aWV3OworICAgIHRoaXMuaGlnaGxpZ2h0TW9udGgobmV3IE1vbnRoKGNlbGwucm93ICsg
MSwgcGFyc2VJbnQobW9udGhCdXR0b25FbGVtZW50LmRhdGFzZXQubW9udGgsIDEwKSkpOworfTsK
KworLyoqCisgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKKyAqLwogWWVhckxpc3RWaWV3LnByb3Rv
dHlwZS5vbk1vdXNlT3ZlciA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgdmFyIG1vbnRoQnV0dG9u
RWxlbWVudCA9IGVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoZXZlbnQudGFyZ2V0LCBZZWFy
TGlzdENlbGwuQ2xhc3NOYW1lTW9udGhCdXR0b24pOwogICAgIGlmICghbW9udGhCdXR0b25FbGVt
ZW50KQpAQCAtMjA5OSw3ICsyMzMzLDcgQEAgWWVhckxpc3RWaWV3LnByb3RvdHlwZS5fYW5pbWF0
ZVJvdyA9IGZ1bmN0aW9uKHJvdywgZGlyZWN0aW9uKSB7CiAgICAgICAgIGZyb21WYWx1ZSA9IG9s
ZEFuaW1hdG9yLmN1cnJlbnRWYWx1ZTsKICAgICB9CiAgICAgdmFyIGNlbGwgPSB0aGlzLmNlbGxB
dFJvdyhyb3cpOwotICAgIHZhciBhbmltYXRvciA9IG5ldyBBbmltYXRvcigpOworICAgIHZhciBh
bmltYXRvciA9IG5ldyBUcmFuc2l0aW9uQW5pbWF0b3IoKTsKICAgICBhbmltYXRvci5zdGVwID0g
dGhpcy5vbkNlbGxIZWlnaHRBbmltYXRvclN0ZXA7CiAgICAgYW5pbWF0b3Iuc2V0RnJvbShmcm9t
VmFsdWUpOwogICAgIGFuaW1hdG9yLnNldFRvKGRpcmVjdGlvbiA9PT0gWWVhckxpc3RWaWV3LlJv
d0FuaW1hdGlvbkRpcmVjdGlvbi5PcGVuaW5nID8gWWVhckxpc3RDZWxsLlNlbGVjdGVkSGVpZ2h0
IDogWWVhckxpc3RDZWxsLkhlaWdodCk7CkBAIC0yNTc3LDkgKzI4MTEsMTMgQEAgZnVuY3Rpb24g
Q2FsZW5kYXJOYXZpZ2F0aW9uQnV0dG9uKCkgewogICAgICAqIEB0eXBlIHtudW1iZXJ9IEludGVy
dmFsIGJldHdlZW4gcmVhcGVhdGluZyBjbGlja3MgaW4gbWlsbGlzZWNvbmRzLgogICAgICAqLwog
ICAgIHRoaXMucmVhcGVhdGluZ0NsaWNrc0ludGVydmFsID0gQ2FsZW5kYXJOYXZpZ2F0aW9uQnV0
dG9uLkRlZmF1bHRSZXBlYXRpbmdDbGlja3NJbnRlcnZhbDsKKyAgICAvKioKKyAgICAgKiBAdHlw
ZSB7P251bWJlcn0gVGhlIElEIGZvciB0aGUgdGltZW91dCB0aGF0IHRyaWdnZXJzIHRoZSByZXBl
YXRpbmcgY2xpY2tzLgorICAgICAqLwogICAgIHRoaXMuX3RpbWVyID0gbnVsbDsKICAgICB0aGlz
LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLm9uQ2xpY2ssIGZhbHNlKTsK
ICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5vbk1v
dXNlRG93biwgZmFsc2UpOworICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3Vj
aHN0YXJ0IiwgdGhpcy5vblRvdWNoU3RhcnQsIGZhbHNlKTsKIH07CiAKIENhbGVuZGFyTmF2aWdh
dGlvbkJ1dHRvbi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFZpZXcucHJvdG90eXBlKTsKQEAg
LTI2MDksNyArMjg0NywzMCBAQCBDYWxlbmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9u
Q2xpY2sgPSBmdW5jdGlvbihldmVudCkgewogLyoqCiAgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQK
ICAqLworQ2FsZW5kYXJOYXZpZ2F0aW9uQnV0dG9uLnByb3RvdHlwZS5vblRvdWNoU3RhcnQgPSBm
dW5jdGlvbihldmVudCkgeworICAgIGlmICh0aGlzLl90aW1lciAhPT0gbnVsbCkKKyAgICAgICAg
cmV0dXJuOworICAgIHRoaXMuX3RpbWVyID0gc2V0VGltZW91dCh0aGlzLm9uUmVwZWF0aW5nQ2xp
Y2ssIHRoaXMucmVwZWF0aW5nQ2xpY2tzU3RhcnRpbmdUaHJlc2hvbGQpOworICAgIHdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIHRoaXMub25XaW5kb3dUb3VjaEVuZCwgZmFsc2Up
OworfTsKKworLyoqCisgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKKyAqLworQ2FsZW5kYXJOYXZp
Z2F0aW9uQnV0dG9uLnByb3RvdHlwZS5vbldpbmRvd1RvdWNoRW5kID0gZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICBpZiAodGhpcy5fdGltZXIgPT09IG51bGwpCisgICAgICAgIHJldHVybjsKKyAgICBj
bGVhclRpbWVvdXQodGhpcy5fdGltZXIpOworICAgIHRoaXMuX3RpbWVyID0gbnVsbDsKKyAgICB3
aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCB0aGlzLm9uV2luZG93TW91c2VV
cCwgZmFsc2UpOworfTsKKworLyoqCisgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKKyAqLwogQ2Fs
ZW5kYXJOYXZpZ2F0aW9uQnV0dG9uLnByb3RvdHlwZS5vbk1vdXNlRG93biA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgaWYgKHRoaXMuX3RpbWVyICE9PSBudWxsKQorICAgICAgICByZXR1cm47CiAg
ICAgdGhpcy5fdGltZXIgPSBzZXRUaW1lb3V0KHRoaXMub25SZXBlYXRpbmdDbGljaywgdGhpcy5y
ZXBlYXRpbmdDbGlja3NTdGFydGluZ1RocmVzaG9sZCk7CiAgICAgd2luZG93LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNldXAiLCB0aGlzLm9uV2luZG93TW91c2VVcCwgZmFsc2UpOwogfTsKQEAgLTI2
MTgsNyArMjg3OSwxMCBAQCBDYWxlbmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uTW91
c2VEb3duID0gZnVuY3Rpb24oZXZlbnQpIHsKICAqIEBwYXJhbSB7P0V2ZW50fSBldmVudAogICov
CiBDYWxlbmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uV2luZG93TW91c2VVcCA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgaWYgKHRoaXMuX3RpbWVyID09PSBudWxsKQorICAgICAgICBy
ZXR1cm47CiAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKTsKKyAgICB0aGlzLl90aW1lciA9
IG51bGw7CiAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLm9u
V2luZG93TW91c2VVcCwgZmFsc2UpOwogfTsKIApAQCAtMjc0Myw3ICszMDA3LDcgQEAgZnVuY3Rp
b24gRGF5Q2VsbCgpIHsKIERheUNlbGwucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMaXN0Q2Vs
bC5wcm90b3R5cGUpOwogCiBEYXlDZWxsLldpZHRoID0gMzQ7Ci1EYXlDZWxsLkhlaWdodCA9IDIw
OworRGF5Q2VsbC5IZWlnaHQgPSBoYXNJbmFjY3VyYXRlUG9pbnRpbmdEZXZpY2UoKSA/IDM0IDog
MjA7CiBEYXlDZWxsLkJvcmRlcldpZHRoID0gMTsKIERheUNlbGwuQ2xhc3NOYW1lRGF5Q2VsbCA9
ICJkYXktY2VsbCI7CiBEYXlDZWxsLkNsYXNzTmFtZUhpZ2hsaWdodGVkID0gImhpZ2hsaWdodGVk
IjsKQEAgLTMwNDgsNiArMzMxMiw4IEBAIGZ1bmN0aW9uIENhbGVuZGFyVGFibGVWaWV3KGNhbGVu
ZGFyUGlja2VyKSB7CiAKICAgICAvLyB5b3Ugc2hvdWxkbid0IGJlIGFibGUgdG8gdXNlIHRoZSBt
b3VzZSB3aGVlbCB0byBzY3JvbGwuCiAgICAgdGhpcy5zY3JvbGxWaWV3LmVsZW1lbnQucmVtb3Zl
RXZlbnRMaXN0ZW5lcigibW91c2V3aGVlbCIsIHRoaXMuc2Nyb2xsVmlldy5vbk1vdXNlV2hlZWws
IGZhbHNlKTsKKyAgICAvLyB5b3Ugc2hvdWxkbid0IGJlIGFibGUgdG8gZG8gZ2VzdHVyZSBzY3Jv
bGwuCisgICAgdGhpcy5zY3JvbGxWaWV3LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91
Y2hzdGFydCIsIHRoaXMuc2Nyb2xsVmlldy5vblRvdWNoU3RhcnQsIGZhbHNlKTsKIH0KIAogQ2Fs
ZW5kYXJUYWJsZVZpZXcucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMaXN0Vmlldy5wcm90b3R5
cGUpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGQzZDdkYzIzYWEyOGI0MTNhYzE0ZDIyMDhlZGI2NzZmYWY3OTRhNjkuLjg2
NzVmNTUwNzg3YjQ3OWZhNjFjOTAxNWMxZDllZjdiM2MyNzEyNDIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MSBAQAorMjAxMy0wMy0xNCAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBBZGQgdG91Y2ggc3VwcG9ydCB0byB0aGUgY2FsZW5kYXIgcGlja2VyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIyNTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci10b3VjaC1vcGVy
YXRpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
ZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLXRvdWNoLW9wZXJhdGlv
bnMuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9j
YWxlbmRhci1waWNrZXIvbW9udGgtcGlja2VyLW1vdXNlLW9wZXJhdGlvbnMuaHRtbDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9tb250aC1w
aWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL21vbnRoLXBpY2tlci10
b3VjaC1vcGVyYXRpb25zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL3Jlc291cmNlcy9jYWxlbmRhci1waWNrZXItY29t
bW9uLmpzOgorICAgICAgICAoaG92ZXJPdmVyTW9udGhQb3B1cEJ1dHRvbik6CisgICAgICAgIChj
bGlja01vbnRoUG9wdXBCdXR0b24pOiBVc2UgaG92ZXJPdmVyTW9udGhQb3B1cEJ1dHRvbi4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci93ZWVr
LXBpY2tlci10b3VjaC1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvd2Vlay1waWNrZXIt
dG91Y2gtb3BlcmF0aW9ucy5odG1sOiBBZGRlZC4KKwogMjAxMy0wMy0xMiAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBVcGRhdGUgdGVzdCBleHBlY3RhdGlvbiBm
b3IgdGhlIGJ1ZyAxMTE1MjEuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXItdG91Y2gtb3Bl
cmF0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ2ZjBjY2ZmMTVlNjc2MzBkMjk3OTI3ZTJmOGQ5ODI5
YTUwMjhjZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci10b3VjaC1vcGVyYXRp
b25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitUZXN0cyBpZiBjYWxlbmRhciBwaWNr
ZXIgbW91c2Ugb3BlcmF0aW9ucyB3b3JrIGFzIGV4cGVjdGVkLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworQ2hlY2sgdGhhdCBwYWdlIHBvcHVwIGRvZXNuJ3QgZXhpc3QgYXQgZmly
c3QuCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb2NrLXBhZ2UtcG9wdXAiKSBpcyBu
dWxsCitPcGVuIHRoZSBtb250aCBwb3B1cC4KK1BBU1MgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tl
ci5tb250aFBvcHVwVmlldy5pc1Zpc2libGUgaXMgZmFsc2UKK1BBU1MgcG9wdXBXaW5kb3cuZ2xv
YmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5pc1Zpc2libGUgaXMgdHJ1ZQorQ2hlY2sgdGhhdCB0
b3VjaCBzd2lwaW5nIHNjcm9sbHMgdGhlIGxpc3QgaW4gdGhlIG1vbnRoIHBvcHVwLgorUEFTUyBj
aGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpID4gMCBpcyB0cnVlCitQQVNTIGNoZWNrWWVh
ckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCkgPCAwIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlj
a2VyLXRvdWNoLW9wZXJhdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci10b3VjaC1vcGVyYXRp
b25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFiNjg4Yzc1ODdkMjdhOTQ2MTNiNTAzNmE5YzZiYTBiZmNj
NjUzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci10b3VjaC1vcGVyYXRpb25z
Lmh0bWwKQEAgLTAsMCArMSw2MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2Zvcm1zL3Jl
c291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4u
L2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3BpY2tlci1jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9jYWxlbmRhci1waWNrZXItY29tbW9uLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxpbnB1dCB0eXBlPWRhdGUgaWQ9ZGF0ZSB2YWx1ZT0iMjAwMC0wMS0wMiI+Cis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIGlmIGNhbGVuZGFyIHBpY2tlciBtb3VzZSBvcGVy
YXRpb25zIHdvcmsgYXMgZXhwZWN0ZWQuIik7CisKK2RlYnVnKCdDaGVjayB0aGF0IHBhZ2UgcG9w
dXAgZG9lc25cJ3QgZXhpc3QgYXQgZmlyc3QuJyk7CitzaG91bGRCZU51bGwoJ2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJtb2NrLXBhZ2UtcG9wdXAiKScpOworCitvcGVuUGlja2VyKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdkYXRlJyksIHRlc3QpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAg
IGRlYnVnKCdPcGVuIHRoZSBtb250aCBwb3B1cC4nKTsKKyAgICBzaG91bGRCZUZhbHNlKCdwb3B1
cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRoUG9wdXBWaWV3LmlzVmlzaWJsZScpOworICAgIGNs
aWNrTW9udGhQb3B1cEJ1dHRvbigpOworICAgIHNob3VsZEJlVHJ1ZSgncG9wdXBXaW5kb3cuZ2xv
YmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5pc1Zpc2libGUnKTsKKworICAgIGRlYnVnKCdDaGVj
ayB0aGF0IHRvdWNoIHN3aXBpbmcgc2Nyb2xscyB0aGUgbGlzdCBpbiB0aGUgbW9udGggcG9wdXAu
Jyk7CisKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFRvdWNoRXZlbnRFbXVsYXRp
b25FbmFibGVkKHRydWUpOworICAgIGNoZWNrWWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCk7CisK
KyAgICBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRoUG9wdXBWaWV3LnllYXJMaXN0Vmll
dy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGVzdEFmdGVyU3dpcGluZ0Rv
d24sIGZhbHNlKTsKKyAgICBob3Zlck92ZXJNb250aEJ1dHRvbigyMDAwLCAwKTsKKyAgICBldmVu
dFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBob3Zlck92ZXJNb250aEJ1dHRvbigyMDAwLCAxMSk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiB0ZXN0QWZ0ZXJTd2lw
aW5nRG93bigpIHsKKyAgICBzaG91bGRCZVRydWUoJ2NoZWNrWWVhckxpc3RWaWV3U2Nyb2xsT2Zm
c2V0KCkgPiAwJyk7CisgICAgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmll
dy55ZWFyTGlzdFZpZXcuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRl
c3RBZnRlclN3aXBpbmdEb3duLCBmYWxzZSk7CisgICAgc2V0VGltZW91dCh0ZXN0U3dpcGluZ1Vw
LCAwKTsKK30KKworZnVuY3Rpb24gdGVzdFN3aXBpbmdVcCgpIHsKKyAgICBjaGVja1llYXJMaXN0
Vmlld1Njcm9sbE9mZnNldCgpOworICAgIHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQ
b3B1cFZpZXcueWVhckxpc3RWaWV3LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQn
LCB0ZXN0QWZ0ZXJTd2lwaW5nVXAsIGZhbHNlKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24o
KTsKKyAgICBob3Zlck92ZXJNb250aFBvcHVwQnV0dG9uKCk7CisgICAgZXZlbnRTZW5kZXIubW91
c2VVcCgpOworfQorCitmdW5jdGlvbiB0ZXN0QWZ0ZXJTd2lwaW5nVXAoKSB7CisgICAgc2hvdWxk
QmVUcnVlKCdjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpIDwgMCcpOworICAgIHBvcHVw
V2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVhckxpc3RWaWV3LmVsZW1lbnQu
cmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0ZXN0QWZ0ZXJTd2lwaW5nVXAsIGZhbHNl
KTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9tb250aC1waWNrZXItbW91c2Utb3BlcmF0aW9u
cy5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRh
ci1waWNrZXIvbW9udGgtcGlja2VyLW1vdXNlLW9wZXJhdGlvbnMuaHRtbAppbmRleCBhNDQxNjFl
ZDE5YTY1ZjM1NjkyMThmZDkxZGQ1NWJlYzk1ZTQzNzViLi5jNmRiZDI2NzU3YWQyNDRiNjhjNjQ3
MTY2YWEwMTc3N2I0ZmNmYjcyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9tb250aC1waWNrZXItbW91c2Utb3BlcmF0
aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMv
Y2FsZW5kYXItcGlja2VyL21vbnRoLXBpY2tlci1tb3VzZS1vcGVyYXRpb25zLmh0bWwKQEAgLTU2
LDYgKzU2LDYxIEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdoaWdobGlnaHRlZERheUNlbGxzKCknLCAnMjAwMC0wMS0wMSwyMDAwLTAxLTAyLDIwMDAtMDEt
MDMsMjAwMC0wMS0wNCwyMDAwLTAxLTA1LDIwMDAtMDEtMDYsMjAwMC0wMS0wNywyMDAwLTAxLTA4
LDIwMDAtMDEtMDksMjAwMC0wMS0xMCwyMDAwLTAxLTExLDIwMDAtMDEtMTIsMjAwMC0wMS0xMywy
MDAwLTAxLTE0LDIwMDAtMDEtMTUsMjAwMC0wMS0xNiwyMDAwLTAxLTE3LDIwMDAtMDEtMTgsMjAw
MC0wMS0xOSwyMDAwLTAxLTIwLDIwMDAtMDEtMjEsMjAwMC0wMS0yMiwyMDAwLTAxLTIzLDIwMDAt
MDEtMjQsMjAwMC0wMS0yNSwyMDAwLTAxLTI2LDIwMDAtMDEtMjcsMjAwMC0wMS0yOCwyMDAwLTAx
LTI5LDIwMDAtMDEtMzAsMjAwMC0wMS0zMScpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vbnRoIikudmFsdWUnLCAnMjAwMC0wMScpOwogCisg
ICAgZGVidWcoJ0NoZWNrIHRoYXQgY2xpY2tpbmcgdGhlIG1vbnRoIHBvcHVwIGJ1dHRvbiBvcGVu
cyB0aGUgbW9udGggcG9wdXAuJyk7CisgICAgc2hvdWxkQmVGYWxzZSgncG9wdXBXaW5kb3cuZ2xv
YmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5pc1Zpc2libGUnKTsKKyAgICBjbGlja01vbnRoUG9w
dXBCdXR0b24oKTsKKyAgICBzaG91bGRCZVRydWUoJ3BvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIu
bW9udGhQb3B1cFZpZXcuaXNWaXNpYmxlJyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdo
aWdobGlnaHRlZE1vbnRoQnV0dG9uKCknLCAnMjAwMC0wMicpOworCisgICAgZGVidWcoJ0NoZWNr
IHRoYXQgaG92ZXJpbmcgb3ZlciBhIG1vbnRoIGJ1dHRvbiBoaWdobGlnaHRzIGl0LicpOworCisg
ICAgaG92ZXJPdmVyTW9udGhCdXR0b24oMjAwMCwgOSk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdoaWdobGlnaHRlZE1vbnRoQnV0dG9uKCknLCAnMjAwMC0xMCcpOworCisgICAgZGVidWco
J0NoZWNrIHRoYXQgbW9udGggd2hlZWwgc2Nyb2xscyB0aGUgbGlzdCBpbiB0aGUgbW9udGggcG9w
dXAuJyk7CisKKyAgICBjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnkoMCwgMTIwKTsKKyAgICBzaG91bGRCZVRydWUoJ2NoZWNrWWVh
ckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCkgPiAwJyk7CisKKyAgICBjaGVja1llYXJMaXN0Vmlld1Nj
cm9sbE9mZnNldCgpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnkoMCwgLTEyMCk7Cisg
ICAgc2hvdWxkQmVUcnVlKCdjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpIDwgMCcpOwor
CisgICAgZGVidWcoJ0NoZWNrIHRoYXQgY2xpY2tpbmcgdGhlIG1vbnRoIHBvcHVwIHNldHMgdGhl
IG1vbnRoLicpOworCisgICAgY2xpY2tNb250aEJ1dHRvbigyMDAwLCA1KTsKKyAgICBzaG91bGRC
ZUZhbHNlKCdwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRoUG9wdXBWaWV3LmlzVmlzaWJs
ZScpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnY3VycmVudE1vbnRoKCknLCAnMjAwMC0w
NicpOworCisgICAgZGVidWcoJ1Jlb3BlbiBtb250aCBwb3B1cC4nKTsKKyAgICBjbGlja01vbnRo
UG9wdXBCdXR0b24oKTsKKyAgICBzaG91bGRCZVRydWUoJ3BvcHVwV2luZG93Lmdsb2JhbC5waWNr
ZXIubW9udGhQb3B1cFZpZXcuaXNWaXNpYmxlJyk7CisKKyAgICBkZWJ1ZygnQ2hlY2sgdGhhdCB0
b3VjaCBzd2lwaW5nIHNjcm9sbHMgdGhlIGxpc3QgaW4gdGhlIG1vbnRoIHBvcHVwLicpOworCisg
ICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxl
ZCh0cnVlKTsKKyAgICBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRoUG9wdXBWaWV3Lnll
YXJMaXN0Vmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGVzdEFmdGVy
U3dpcGluZ0Rvd24sIGZhbHNlKTsKKyAgICBob3Zlck92ZXJNb250aEJ1dHRvbigyMDAwLCAwKTsK
KyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBob3Zlck92ZXJNb250aEJ1dHRvbigy
MDAwLCAxMSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiB0ZXN0
QWZ0ZXJTd2lwaW5nRG93bigpIHsKKyAgICBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRo
UG9wdXBWaWV3LnllYXJMaXN0Vmlldy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNo
ZW5kJywgdGVzdEFmdGVyU3dpcGluZ0Rvd24sIGZhbHNlKTsKKyAgICBwb3B1cFdpbmRvdy5nbG9i
YWwucGlja2VyLm1vbnRoUG9wdXBWaWV3LnllYXJMaXN0Vmlldy5lbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoJ3RvdWNoZW5kJywgdGVzdEFmdGVyU3dpcGluZ1VwLCBmYWxzZSk7CisgICAgc2hvdWxk
QmVUcnVlKCdjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpID4gMCcpOworICAgIGhvdmVy
T3Zlck1vbnRoQnV0dG9uKDIwMDAsIDExKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsK
KyAgICBob3Zlck92ZXJNb250aEJ1dHRvbigyMDAwLCAwKTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZVVwKCk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RBZnRlclN3aXBp
bmdVcCgpIHsKKyAgICBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRoUG9wdXBWaWV3Lnll
YXJMaXN0Vmlldy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGVzdEFm
dGVyU3dpcGluZ1VwLCBmYWxzZSk7CisgICAgc2hvdWxkQmVUcnVlKCdjaGVja1llYXJMaXN0Vmll
d1Njcm9sbE9mZnNldCgpIDwgMCcpOwogICAgIGZpbmlzaEpTVGVzdCgpOwogfQogPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2Nh
bGVuZGFyLXBpY2tlci9tb250aC1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tl
ci9tb250aC1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTZlZDkxN2ZlOTkzN2M0YzdkNDdkODMyNDQxM2U3MjhhZTRjYTRkNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlj
a2VyL21vbnRoLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE3IEBACitUZXN0cyBpZiBtb250aCBwaWNrZXIgbW91c2Ugb3BlcmF0aW9ucyB3b3JrIGFzIGV4
cGVjdGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQ2hlY2sgdGhhdCBwYWdl
IHBvcHVwIGRvZXNuJ3QgZXhpc3QgYXQgZmlyc3QuCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJtb2NrLXBhZ2UtcG9wdXAiKSBpcyBudWxsCitPcGVuIHRoZSBtb250aCBwb3B1cC4KK1BB
U1MgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5pc1Zpc2libGUgaXMg
ZmFsc2UKK1BBU1MgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5pc1Zp
c2libGUgaXMgdHJ1ZQorQ2hlY2sgdGhhdCB0b3VjaCBzd2lwaW5nIHNjcm9sbHMgdGhlIGxpc3Qg
aW4gdGhlIG1vbnRoIHBvcHVwLgorUEFTUyBjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgp
ID4gMCBpcyB0cnVlCitQQVNTIGNoZWNrWWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCkgPCAwIGlz
IHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9j
YWxlbmRhci1waWNrZXIvbW9udGgtcGlja2VyLXRvdWNoLW9wZXJhdGlvbnMuaHRtbCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL21vbnRo
LXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc1NTliOWJiMGI3NDc5
ZGY5ZDVkNzM1NjBiYmU2NTM1ZDBiNTM3NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL21vbnRoLXBpY2tl
ci10b3VjaC1vcGVyYXRpb25zLmh0bWwKQEAgLTAsMCArMSw2MSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li8uLi9mYXN0L2Zvcm1zL3Jlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3BpY2tlci1jb21tb24uanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jYWxlbmRhci1waWNrZXItY29tbW9u
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxpbnB1dCB0eXBlPW1vbnRoIGlkPW1vbnRoIHZh
bHVlPSIyMDAwLTAxIj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgaWYgbW9udGggcGlj
a2VyIG1vdXNlIG9wZXJhdGlvbnMgd29yayBhcyBleHBlY3RlZC4iKTsKKworZGVidWcoJ0NoZWNr
IHRoYXQgcGFnZSBwb3B1cCBkb2VzblwndCBleGlzdCBhdCBmaXJzdC4nKTsKK3Nob3VsZEJlTnVs
bCgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vY2stcGFnZS1wb3B1cCIpJyk7CisKK29wZW5Q
aWNrZXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vbnRoJyksIHRlc3QpOworCitmdW5jdGlv
biB0ZXN0KCkgeworICAgIGRlYnVnKCdPcGVuIHRoZSBtb250aCBwb3B1cC4nKTsKKyAgICBzaG91
bGRCZUZhbHNlKCdwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRoUG9wdXBWaWV3LmlzVmlz
aWJsZScpOworICAgIGNsaWNrTW9udGhQb3B1cEJ1dHRvbigpOworICAgIHNob3VsZEJlVHJ1ZSgn
cG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5pc1Zpc2libGUnKTsKKwor
ICAgIGRlYnVnKCdDaGVjayB0aGF0IHRvdWNoIHN3aXBpbmcgc2Nyb2xscyB0aGUgbGlzdCBpbiB0
aGUgbW9udGggcG9wdXAuJyk7CisKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFRv
dWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKHRydWUpOworICAgIGNoZWNrWWVhckxpc3RWaWV3U2Ny
b2xsT2Zmc2V0KCk7CisKKyAgICBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRoUG9wdXBW
aWV3LnllYXJMaXN0Vmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGVz
dEFmdGVyU3dpcGluZ0Rvd24sIGZhbHNlKTsKKyAgICBob3Zlck92ZXJNb250aEJ1dHRvbigyMDAw
LCAwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBob3Zlck92ZXJNb250aEJ1
dHRvbigyMDAwLCAxMSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlv
biB0ZXN0QWZ0ZXJTd2lwaW5nRG93bigpIHsKKyAgICBzaG91bGRCZVRydWUoJ2NoZWNrWWVhckxp
c3RWaWV3U2Nyb2xsT2Zmc2V0KCkgPiAwJyk7CisgICAgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tl
ci5tb250aFBvcHVwVmlldy55ZWFyTGlzdFZpZXcuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVy
KCd0b3VjaGVuZCcsIHRlc3RBZnRlclN3aXBpbmdEb3duLCBmYWxzZSk7CisgICAgc2V0VGltZW91
dCh0ZXN0U3dpcGluZ1VwLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdFN3aXBpbmdVcCgpIHsKKyAg
ICBjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpOworICAgIHBvcHVwV2luZG93Lmdsb2Jh
bC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVhckxpc3RWaWV3LmVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigndG91Y2hlbmQnLCB0ZXN0QWZ0ZXJTd2lwaW5nVXAsIGZhbHNlKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZURvd24oKTsKKyAgICBob3Zlck92ZXJNb250aFBvcHVwQnV0dG9uKCk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiB0ZXN0QWZ0ZXJTd2lwaW5nVXAo
KSB7CisgICAgc2hvdWxkQmVUcnVlKCdjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpIDwg
MCcpOworICAgIHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVhckxp
c3RWaWV3LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0ZXN0QWZ0ZXJT
d2lwaW5nVXAsIGZhbHNlKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9yZXNvdXJjZXMvY2Fs
ZW5kYXItcGlja2VyLWNvbW1vbi5qcyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL3Jlc291cmNlcy9jYWxlbmRhci1waWNrZXItY29tbW9u
LmpzCmluZGV4IGI1YjA4MGZjYjFlY2U5N2JhMDk0MzBkYzliMDdhNjliOTJhMjZiMjIuLjk1ZWIz
ZDhhNDJjOWRlNmFlMDA0ZjhlNDcyN2MxNTk0MzFiNjQ4N2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL3Jlc291cmNl
cy9jYWxlbmRhci1waWNrZXItY29tbW9uLmpzCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL3Jlc291cmNlcy9jYWxlbmRhci1waWNr
ZXItY29tbW9uLmpzCkBAIC04MCw2ICs4MCw2MiBAQCBmdW5jdGlvbiBjbGlja0RheUNlbGxBdChj
b2x1bW4sIHJvdykgewogICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKIH0KIAorZnVuY3Rpb24g
aGlnaGxpZ2h0ZWRNb250aEJ1dHRvbigpIHsKKyAgICBza2lwQW5pbWF0aW9uKCk7CisgICAgdmFy
IHllYXIgPSBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRoUG9wdXBWaWV3LnllYXJMaXN0
Vmlldy5zZWxlY3RlZFJvdyArIDE7CisgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5tYXAuY2Fs
bChwb3B1cFdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIubW9udGgtYnV0dG9uLmhp
Z2hsaWdodGVkIiksIGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBwb3B1
cFdpbmRvdy5Nb250aCh5ZWFyLCBOdW1iZXIoZWxlbWVudC5kYXRhc2V0Lm1vbnRoKSkudG9TdHJp
bmcoKTsKKyAgICB9KS5zb3J0KCkuam9pbigpOworfQorCitmdW5jdGlvbiBob3Zlck92ZXJNb250
aFBvcHVwQnV0dG9uKCkgeworICAgIHNraXBBbmltYXRpb24oKTsKKyAgICB2YXIgYnV0dG9uRWxl
bWVudCA9IHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIuY2FsZW5kYXJIZWFkZXJWaWV3Lm1vbnRo
UG9wdXBCdXR0b24uZWxlbWVudDsKKyAgICB2YXIgb2Zmc2V0ID0gY3VtdWxhdGl2ZU9mZnNldChi
dXR0b25FbGVtZW50KTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhvZmZzZXRbMF0gKyBi
dXR0b25FbGVtZW50Lm9mZnNldFdpZHRoIC8gMiwgb2Zmc2V0WzFdICsgYnV0dG9uRWxlbWVudC5v
ZmZzZXRIZWlnaHQgLyAyKTsKK30KKworZnVuY3Rpb24gY2xpY2tNb250aFBvcHVwQnV0dG9uKCkg
eworICAgIGhvdmVyT3Zlck1vbnRoUG9wdXBCdXR0b24oKTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK2Z1bmN0aW9uIGhvdmVy
T3Zlck1vbnRoQnV0dG9uKHllYXIsIG1vbnRoKSB7CisgICAgc2tpcEFuaW1hdGlvbigpOworICAg
IHZhciByb3cgPSB5ZWFyIC0gMTsKKyAgICB2YXIgcm93Q2VsbCA9IHBvcHVwV2luZG93Lmdsb2Jh
bC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVhckxpc3RWaWV3LmNlbGxBdFJvdyhyb3cpOworCisg
ICAgdmFyIHJvd1Njcm9sbE9mZnNldCA9IHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQ
b3B1cFZpZXcueWVhckxpc3RWaWV3LnNjcm9sbE9mZnNldEZvclJvdyhyb3cpOworICAgIHZhciBz
Y3JvbGxPZmZzZXQgPSBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRoUG9wdXBWaWV3Lnll
YXJMaXN0Vmlldy5zY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQoKTsKKyAgICB2YXIgcm93T2Zmc2V0
RnJvbVZpZXdwb3J0VG9wID0gcm93U2Nyb2xsT2Zmc2V0IC0gc2Nyb2xsT2Zmc2V0OworCisgICAg
dmFyIGJ1dHRvbiA9IHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVh
ckxpc3RWaWV3LmJ1dHRvbkZvck1vbnRoKG5ldyBwb3B1cFdpbmRvdy5Nb250aCh5ZWFyLCBtb250
aCkpOworICAgIHZhciBidXR0b25PZmZzZXQgPSBjdW11bGF0aXZlT2Zmc2V0KGJ1dHRvbik7Cisg
ICAgdmFyIHJvd0NlbGxPZmZzZXQgPSBjdW11bGF0aXZlT2Zmc2V0KHJvd0NlbGwuZWxlbWVudCk7
CisgICAgdmFyIGJ1dHRvbk9mZnNldFJlbGF0aXZlVG9Sb3dDZWxsID0gW2J1dHRvbk9mZnNldFsw
XSAtIHJvd0NlbGxPZmZzZXRbMF0sIGJ1dHRvbk9mZnNldFsxXSAtIHJvd0NlbGxPZmZzZXRbMV1d
OworCisgICAgdmFyIHNjcm9sbFZpZXdPZmZzZXQgPSBjdW11bGF0aXZlT2Zmc2V0KHBvcHVwV2lu
ZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVhckxpc3RWaWV3LnNjcm9sbFZpZXcu
ZWxlbWVudCk7CisgICAgdmFyIGJ1dHRvblggPSBzY3JvbGxWaWV3T2Zmc2V0WzBdICsgYnV0dG9u
T2Zmc2V0UmVsYXRpdmVUb1Jvd0NlbGxbMF0gKyBidXR0b24ub2Zmc2V0V2lkdGggLyAyOworICAg
IHZhciBidXR0b25ZID0gc2Nyb2xsVmlld09mZnNldFsxXSArIGJ1dHRvbk9mZnNldFJlbGF0aXZl
VG9Sb3dDZWxsWzFdICsgcm93T2Zmc2V0RnJvbVZpZXdwb3J0VG9wICsgYnV0dG9uLm9mZnNldEhl
aWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oYnV0dG9uWCwgYnV0dG9uWSk7
Cit9CisKK2Z1bmN0aW9uIGNsaWNrTW9udGhCdXR0b24oeWVhciwgbW9udGgpIHsKKyAgICBob3Zl
ck92ZXJNb250aEJ1dHRvbih5ZWFyLCBtb250aCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3du
KCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCit2YXIgbGFzdFllYXJMaXN0Vmll
d1Njcm9sbE9mZnNldCA9IE5hTjsKK2Z1bmN0aW9uIGNoZWNrWWVhckxpc3RWaWV3U2Nyb2xsT2Zm
c2V0KCkgeworICAgIHNraXBBbmltYXRpb24oKTsKKyAgICB2YXIgc2Nyb2xsT2Zmc2V0ID0gcG9w
dXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy55ZWFyTGlzdFZpZXcuc2Nyb2xs
Vmlldy5jb250ZW50T2Zmc2V0KCk7CisgICAgdmFyIGNoYW5nZSA9IGxhc3RZZWFyTGlzdFZpZXdT
Y3JvbGxPZmZzZXQgLSBzY3JvbGxPZmZzZXQ7CisgICAgbGFzdFllYXJMaXN0Vmlld1Njcm9sbE9m
ZnNldCA9IHNjcm9sbE9mZnNldDsKKyAgICByZXR1cm4gY2hhbmdlOworfQorCiBmdW5jdGlvbiBp
c0NhbGVuZGFyVGFibGVTY3JvbGxpbmdXaXRoQW5pbWF0aW9uKCkgewogICAgIHJldHVybiBwb3B1
cFdpbmRvdy5nbG9iYWwucGlja2VyLmNhbGVuZGFyVGFibGVWaWV3LnNjcm9sbFZpZXcuc2Nyb2xs
QW5pbWF0b3IoKS5pc1J1bm5pbmcoKTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL3dlZWstcGlja2VyLXRvdWNo
LW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvd2Vlay1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ2ZjBjY2ZmMTVlNjc2MzBkMjk3OTI3ZTJmOGQ5ODI5
YTUwMjhjZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL3dlZWstcGlja2VyLXRvdWNoLW9wZXJhdGlvbnMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1Rlc3RzIGlmIGNhbGVuZGFyIHBpY2tlciBt
b3VzZSBvcGVyYXRpb25zIHdvcmsgYXMgZXhwZWN0ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitDaGVjayB0aGF0IHBhZ2UgcG9wdXAgZG9lc24ndCBleGlzdCBhdCBmaXJzdC4K
K1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vY2stcGFnZS1wb3B1cCIpIGlzIG51bGwK
K09wZW4gdGhlIG1vbnRoIHBvcHVwLgorUEFTUyBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1v
bnRoUG9wdXBWaWV3LmlzVmlzaWJsZSBpcyBmYWxzZQorUEFTUyBwb3B1cFdpbmRvdy5nbG9iYWwu
cGlja2VyLm1vbnRoUG9wdXBWaWV3LmlzVmlzaWJsZSBpcyB0cnVlCitDaGVjayB0aGF0IHRvdWNo
IHN3aXBpbmcgc2Nyb2xscyB0aGUgbGlzdCBpbiB0aGUgbW9udGggcG9wdXAuCitQQVNTIGNoZWNr
WWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCkgPiAwIGlzIHRydWUKK1BBU1MgY2hlY2tZZWFyTGlz
dFZpZXdTY3JvbGxPZmZzZXQoKSA8IDAgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci93ZWVrLXBpY2tlci10b3Vj
aC1vcGVyYXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zv
cm1zL2NhbGVuZGFyLXBpY2tlci93ZWVrLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTNhNTJkOTBiYTM0MDUxMzY3NzZlMjA3YmU5MDllMDMyZWNiMTgwZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2Fs
ZW5kYXItcGlja2VyL3dlZWstcGlja2VyLXRvdWNoLW9wZXJhdGlvbnMuaHRtbApAQCAtMCwwICsx
LDYxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL2NvbW1vbi5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vZmFzdC9mb3Jtcy9yZXNv
dXJjZXMvcGlja2VyLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2NhbGVuZGFyLXBpY2tlci1jb21tb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGlucHV0
IHR5cGU9d2VlayBpZD13ZWVrIHZhbHVlPSIyMDAwLVcwMSI+Cis8c2NyaXB0PgorZGVzY3JpcHRp
b24oIlRlc3RzIGlmIGNhbGVuZGFyIHBpY2tlciBtb3VzZSBvcGVyYXRpb25zIHdvcmsgYXMgZXhw
ZWN0ZWQuIik7CisKK2RlYnVnKCdDaGVjayB0aGF0IHBhZ2UgcG9wdXAgZG9lc25cJ3QgZXhpc3Qg
YXQgZmlyc3QuJyk7CitzaG91bGRCZU51bGwoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb2Nr
LXBhZ2UtcG9wdXAiKScpOworCitvcGVuUGlja2VyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3
ZWVrJyksIHRlc3QpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGRlYnVnKCdPcGVuIHRoZSBt
b250aCBwb3B1cC4nKTsKKyAgICBzaG91bGRCZUZhbHNlKCdwb3B1cFdpbmRvdy5nbG9iYWwucGlj
a2VyLm1vbnRoUG9wdXBWaWV3LmlzVmlzaWJsZScpOworICAgIGNsaWNrTW9udGhQb3B1cEJ1dHRv
bigpOworICAgIHNob3VsZEJlVHJ1ZSgncG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBv
cHVwVmlldy5pc1Zpc2libGUnKTsKKworICAgIGRlYnVnKCdDaGVjayB0aGF0IHRvdWNoIHN3aXBp
bmcgc2Nyb2xscyB0aGUgbGlzdCBpbiB0aGUgbW9udGggcG9wdXAuJyk7CisKKyAgICB3aW5kb3cu
aW50ZXJuYWxzLnNldHRpbmdzLnNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKHRydWUpOwor
ICAgIGNoZWNrWWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCk7CisKKyAgICBwb3B1cFdpbmRvdy5n
bG9iYWwucGlja2VyLm1vbnRoUG9wdXBWaWV3LnllYXJMaXN0Vmlldy5lbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGVzdEFmdGVyU3dpcGluZ0Rvd24sIGZhbHNlKTsKKyAgICBo
b3Zlck92ZXJNb250aEJ1dHRvbigyMDAwLCAwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24o
KTsKKyAgICBob3Zlck92ZXJNb250aEJ1dHRvbigyMDAwLCAxMSk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOworfQorCitmdW5jdGlvbiB0ZXN0QWZ0ZXJTd2lwaW5nRG93bigpIHsKKyAgICBz
aG91bGRCZVRydWUoJ2NoZWNrWWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCkgPiAwJyk7CisgICAg
cG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy55ZWFyTGlzdFZpZXcuZWxl
bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRlc3RBZnRlclN3aXBpbmdEb3du
LCBmYWxzZSk7CisgICAgc2V0VGltZW91dCh0ZXN0U3dpcGluZ1VwLCAwKTsKK30KKworZnVuY3Rp
b24gdGVzdFN3aXBpbmdVcCgpIHsKKyAgICBjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgp
OworICAgIHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVhckxpc3RW
aWV3LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0ZXN0QWZ0ZXJTd2lwaW5n
VXAsIGZhbHNlKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBob3Zlck92ZXJN
b250aFBvcHVwQnV0dG9uKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5j
dGlvbiB0ZXN0QWZ0ZXJTd2lwaW5nVXAoKSB7CisgICAgc2hvdWxkQmVUcnVlKCdjaGVja1llYXJM
aXN0Vmlld1Njcm9sbE9mZnNldCgpIDwgMCcpOworICAgIHBvcHVwV2luZG93Lmdsb2JhbC5waWNr
ZXIubW9udGhQb3B1cFZpZXcueWVhckxpc3RWaWV3LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5l
cigndG91Y2hlbmQnLCB0ZXN0QWZ0ZXJTd2lwaW5nVXAsIGZhbHNlKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193249</attachid>
            <date>2013-03-15 00:26:48 -0700</date>
            <delta_ts>2013-03-17 20:56:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112256-20130315162243.patch</filename>
            <type>text/plain</type>
            <size>40129</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjBlOTk5ZDQ5OTgwMjIz
MjljMzJiZjAzNTJkNjI5MjdjN2ZlYjhjNC4uZmVlMjM2ZTk3MGFiNTY3MTVjZDI1YjAwNzdmNzVl
NjdjM2EwMzIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEzLTAzLTE0ICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCB0b3VjaCBzdXBw
b3J0IHRvIHRoZSBjYWxlbmRhciBwaWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMjI1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jcmVhc2VzIHRoZSBoaXQgdGFyZ2V0IHNp
emVzIGZvciB0b3VjaCBhbmQgYWRkcyB0b3VjaCBldmVudAorICAgICAgICBzdXBwb3J0IHRvIHRo
ZSBzY3JvbGwgdmlldywgc2Nyb2xsIGJhciBhbmQgbmF2aWdhdGlvbiBidXR0b24uCisKKyAgICAg
ICAgVGVzdHM6IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2Nh
bGVuZGFyLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRm
b3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL21vbnRoLXBpY2tlci10b3Vj
aC1vcGVyYXRpb25zLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3Qv
Zm9ybXMvY2FsZW5kYXItcGlja2VyL3dlZWstcGlja2VyLXRvdWNoLW9wZXJhdGlvbnMuaHRtbAor
CisgICAgICAgICogUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanM6CisgICAg
ICAgIChoYXNJbmFjY3VyYXRlUG9pbnRpbmdEZXZpY2UpOgorICAgICAgICAoQW5pbWF0b3IpOiBT
dXBlciBjbGFzcyBmb3IgVHJhbnNpdGlvbkFuaW1hdG9yIGFuZCBGbGluZ0dlc3R1cmVBbmltYXRv
ci4KKyAgICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5zdGFydCk6CisgICAgICAgIChBbmltYXRv
ci5wcm90b3R5cGUuc3RvcCk6CisgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUub25BbmltYXRp
b25GcmFtZSk6CisgICAgICAgIChUcmFuc2l0aW9uQW5pbWF0b3IpOiBTYW1lIGFzIHRoZSBvbGQg
QW5pbWF0b3IuIFRyYW5zaXRpb24gZnJvbSBvbmUgdmFsdWUgdG8gYW5vdGhlci4KKyAgICAgICAg
KFRyYW5zaXRpb25BbmltYXRvci5wcm90b3R5cGUuc2V0RnJvbSk6CisgICAgICAgIChUcmFuc2l0
aW9uQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0KToKKyAgICAgICAgKFRyYW5zaXRpb25BbmltYXRv
ci5wcm90b3R5cGUuc3RvcCk6CisgICAgICAgIChUcmFuc2l0aW9uQW5pbWF0b3IucHJvdG90eXBl
LnNldFRvKToKKyAgICAgICAgKFRyYW5zaXRpb25BbmltYXRvci5wcm90b3R5cGUub25BbmltYXRp
b25GcmFtZSk6CisgICAgICAgIChGbGluZ0dlc3R1cmVBbmltYXRvcik6QW5pbWF0ZXMgdGhlIGZs
aW5nIHNjcm9sbC4gCisgICAgICAgIChGbGluZ0dlc3R1cmVBbmltYXRvci5wcm90b3R5cGUuX3Zh
bHVlQXRUaW1lKTogUmV0dXJucyB0aGUgdmFsdWUgYXQgdGhlIGdpdmVuIHRpbWUuCisgICAgICAg
IChGbGluZ0dlc3R1cmVBbmltYXRvci5wcm90b3R5cGUuX3ZlbG9jaXR5QXRUaW1lKTogUmV0dXJu
cyB0aGUgdmFsdWUgY2hhbmdlIHZlbG9jaXR5IGF0IHRoZSBnaXZlbiB0aW1lLgorICAgICAgICAo
RmxpbmdHZXN0dXJlQW5pbWF0b3IucHJvdG90eXBlLl90aW1lQXRWZWxvY2l0eSk6IFJldHVybnMg
dGhlIHRpbWUgd2hlbiB0aGUgdmFsdWUgaXMgY2hhbmdpbmcgYXQgdGhlIGdpdmVuIHZlbG9jaXR5
LgorICAgICAgICAoRmxpbmdHZXN0dXJlQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0KToKKyAgICAg
ICAgKEZsaW5nR2VzdHVyZUFuaW1hdG9yLnByb3RvdHlwZS5vbkFuaW1hdGlvbkZyYW1lKToKKyAg
ICAgICAgKFNjcm9sbFZpZXcpOiBBZGRlZCBzdXBwb3J0IGZvciB0b3VjaCBnZXN0dXJlIHNjcm9s
bGluZy4KKyAgICAgICAgKFNjcm9sbFZpZXcucHJvdG90eXBlLm9uVG91Y2hTdGFydCk6CisgICAg
ICAgIChTY3JvbGxWaWV3LnByb3RvdHlwZS5vbldpbmRvd1RvdWNoTW92ZSk6CisgICAgICAgIChT
Y3JvbGxWaWV3LnByb3RvdHlwZS5vbldpbmRvd1RvdWNoRW5kKToKKyAgICAgICAgKFNjcm9sbFZp
ZXcucHJvdG90eXBlLm9uRmxpbmdHZXN0dXJlQW5pbWF0b3JTdGVwKToKKyAgICAgICAgKFNjcm9s
bFZpZXcucHJvdG90eXBlLnNjcm9sbFRvKToKKyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIpOiBB
ZGRlZCBzdXBwb3J0IGZvciB0b3VjaC4KKyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90
eXBlLm9uVG91Y2hTdGFydCk6CisgICAgICAgIChTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5v
bldpbmRvd1RvdWNoTW92ZSk6CisgICAgICAgIChTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5v
bldpbmRvd1RvdWNoRW5kKToKKyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLl9z
ZXRUaHVtYlBvc2l0aW9uRnJvbUV2ZW50UG9zaXRpb24pOiBBY2NlcHQgTW91c2VFdmVudCBvciBU
b3VjaC4KKyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLm9uTW91c2VEb3duKToK
KyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLm9uV2luZG93TW91c2VNb3ZlKToK
KyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLm9uV2luZG93TW91c2VVcCk6Cisg
ICAgICAgIChZZWFyTGlzdENlbGwpOgorICAgICAgICAoWWVhckxpc3RWaWV3KToKKyAgICAgICAg
KFllYXJMaXN0Vmlldy5wcm90b3R5cGUub25Ub3VjaFN0YXJ0KToKKyAgICAgICAgKFllYXJMaXN0
Vmlldy5wcm90b3R5cGUuX2FuaW1hdGVSb3cpOgorICAgICAgICAoQ2FsZW5kYXJOYXZpZ2F0aW9u
QnV0dG9uKTogQWRkIHRvdWNoIHN1cHBvcnQgZm9yIGxvbmcgcHJlc3MuCisgICAgICAgIChDYWxl
bmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uVG91Y2hTdGFydCk6CisgICAgICAgIChD
YWxlbmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uV2luZG93VG91Y2hFbmQpOgorICAg
ICAgICAoQ2FsZW5kYXJOYXZpZ2F0aW9uQnV0dG9uLnByb3RvdHlwZS5vbk1vdXNlRG93bik6Cisg
ICAgICAgIChDYWxlbmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uV2luZG93TW91c2VV
cCk6CisgICAgICAgIChDYWxlbmRhclRhYmxlVmlldyk6IERpc2FibGUgdG91Y2ggZ2VzdHVyZSBz
Y3JvbGxpbmcgaW4gdGhlIGNhbGVuZGFyIHRhYmxlLgorCiAyMDEzLTAzLTEyICBIYXlhdG8gSXRv
ICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ3Jhc2hdIFRvdWNoIEV2ZW50cyBy
ZXRhcmdldGluZyBjYXVzZXMgY3Jhc2hlcyBvbiBjaHJvbWUgb24gYW5kcm9pZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpz
IGIvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMK
aW5kZXggNjJlMzhjYTY3MjBjZTgzZDU1M2NhMmJiZTEwNjg1OTNhMzUxOTgzNS4uNmY3MGFkZjk3
MWQxYmRiZjg2M2VmOWM2ZmMwNjE5MTFlZDk4NTNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMKQEAgLTY4LDYgKzY4
LDEzIEBAIHZhciBnbG9iYWwgPSB7CiAvLyBVdGlsaXR5IGZ1bmN0aW9ucwogCiAvKioKKyAqIEBy
ZXR1cm4geyFib29sfQorICovCitmdW5jdGlvbiBoYXNJbmFjY3VyYXRlUG9pbnRpbmdEZXZpY2Uo
KSB7CisgICAgcmV0dXJuIG1hdGNoTWVkaWEoIihwb2ludGVyOiBjb2Fyc2UpIikubWF0Y2hlczsK
K30KKworLyoqCiAgKiBAcmV0dXJuIHshc3RyaW5nfSBsb3dlcmNhc2UgbG9jYWxlIG5hbWUuIGUu
Zy4gImVuLXVzIgogICovCiBmdW5jdGlvbiBnZXRMb2NhbGUoKSB7CkBAIC0xMDAzLDIxICsxMDEw
LDYgQEAgZnVuY3Rpb24gQW5pbWF0b3IoKSB7CiAgICAgdGhpcy5pZCA9IEFuaW1hdG9yLl9sYXN0
SWQrKzsKICAgICAvKioKICAgICAgKiBAdHlwZSB7IW51bWJlcn0KLSAgICAgKiBAcHJvdGVjdGVk
Ci0gICAgICovCi0gICAgdGhpcy5fZnJvbSA9IDA7Ci0gICAgLyoqCi0gICAgICogQHR5cGUgeyFu
dW1iZXJ9Ci0gICAgICogQHByb3RlY3RlZAotICAgICAqLwotICAgIHRoaXMuX3RvID0gMDsKLSAg
ICAvKioKLSAgICAgKiBAdHlwZSB7IW51bWJlcn0KLSAgICAgKiBAcHJvdGVjdGVkCi0gICAgICov
Ci0gICAgdGhpcy5fZGVsdGEgPSAwOwotICAgIC8qKgotICAgICAqIEB0eXBlIHshbnVtYmVyfQog
ICAgICAqLwogICAgIHRoaXMuZHVyYXRpb24gPSAxMDA7CiAgICAgLyoqCkBAIC0xMDI1LDIzICsx
MDE3LDE5IEBAIGZ1bmN0aW9uIEFuaW1hdG9yKCkgewogICAgICAqLwogICAgIHRoaXMuc3RlcCA9
IG51bGw7CiAgICAgLyoqCi0gICAgICogQHR5cGUgeyFudW1iZXJ9CisgICAgICogQHR5cGUgeyFi
b29sZWFufQogICAgICAqIEBwcm90ZWN0ZWQKICAgICAgKi8KLSAgICB0aGlzLl9sYXN0U3RlcFRp
bWUgPSAwOworICAgIHRoaXMuX2lzUnVubmluZyA9IGZhbHNlOwogICAgIC8qKgogICAgICAqIEB0
eXBlIHshbnVtYmVyfQogICAgICAqLwotICAgIHRoaXMucHJvZ3Jlc3MgPSAwLjA7CisgICAgdGhp
cy5jdXJyZW50VmFsdWUgPSAwOwogICAgIC8qKgogICAgICAqIEB0eXBlIHshbnVtYmVyfQogICAg
ICAqIEBwcm90ZWN0ZWQKICAgICAgKi8KLSAgICB0aGlzLl9pc1J1bm5pbmcgPSBmYWxzZTsKLSAg
ICAvKioKLSAgICAgKiBAdHlwZSB7IWZ1bmN0aW9ufQotICAgICAqLwotICAgIHRoaXMudGltaW5n
RnVuY3Rpb24gPSBBbmltYXRpb25UaW1pbmdGdW5jdGlvbi5MaW5lYXI7CisgICAgdGhpcy5fbGFz
dFN0ZXBUaW1lID0gMDsKIH0KIAogQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShF
dmVudEVtaXR0ZXIucHJvdG90eXBlKTsKQEAgLTEwNTcsNTMgKzEwNDUsMTY5IEBAIEFuaW1hdG9y
LnByb3RvdHlwZS5pc1J1bm5pbmcgPSBmdW5jdGlvbigpIHsKICAgICByZXR1cm4gdGhpcy5faXNS
dW5uaW5nOwogfTsKIAorQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24oKSB7Cisg
ICAgdGhpcy5fbGFzdFN0ZXBUaW1lID0gRGF0ZS5ub3coKTsKKyAgICB0aGlzLl9pc1J1bm5pbmcg
PSB0cnVlOworICAgIEFuaW1hdGlvbk1hbmFnZXIuc2hhcmVkLmFkZCh0aGlzKTsKK307CisKK0Fu
aW1hdG9yLnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKCF0aGlzLl9pc1J1
bm5pbmcpCisgICAgICAgIHJldHVybjsKKyAgICB0aGlzLl9pc1J1bm5pbmcgPSBmYWxzZTsKKyAg
ICBBbmltYXRpb25NYW5hZ2VyLnNoYXJlZC5yZW1vdmUodGhpcyk7CisgICAgdGhpcy5kaXNwYXRj
aEV2ZW50KEFuaW1hdG9yLkV2ZW50VHlwZURpZEFuaW1hdGlvblN0b3AsIHRoaXMpOworfTsKKwor
LyoqCisgKiBAcGFyYW0geyFudW1iZXJ9IG5vdworICovCitBbmltYXRvci5wcm90b3R5cGUub25B
bmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKG5vdykgeworICAgIHRoaXMuX2xhc3RTdGVwVGltZSA9
IG5vdzsKKyAgICB0aGlzLnN0ZXAodGhpcyk7Cit9OworCitmdW5jdGlvbiBUcmFuc2l0aW9uQW5p
bWF0b3IoKSB7CisgICAgQW5pbWF0b3IuY2FsbCh0aGlzKTsKKyAgICAvKioKKyAgICAgKiBAdHlw
ZSB7IW51bWJlcn0KKyAgICAgKiBAcHJvdGVjdGVkCisgICAgICovCisgICAgdGhpcy5fZnJvbSA9
IDA7CisgICAgLyoqCisgICAgICogQHR5cGUgeyFudW1iZXJ9CisgICAgICogQHByb3RlY3RlZAor
ICAgICAqLworICAgIHRoaXMuX3RvID0gMDsKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7IW51bWJl
cn0KKyAgICAgKiBAcHJvdGVjdGVkCisgICAgICovCisgICAgdGhpcy5fZGVsdGEgPSAwOworICAg
IC8qKgorICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAgICAqLworICAgIHRoaXMucHJvZ3Jlc3Mg
PSAwLjA7CisgICAgLyoqCisgICAgICogQHR5cGUgeyFmdW5jdGlvbn0KKyAgICAgKi8KKyAgICB0
aGlzLnRpbWluZ0Z1bmN0aW9uID0gQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24uTGluZWFyOworfQor
CitUcmFuc2l0aW9uQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShBbmltYXRvci5w
cm90b3R5cGUpOworCiAvKioKICAqIEBwYXJhbSB7IW51bWJlcn0gdmFsdWUKICAqLwotQW5pbWF0
b3IucHJvdG90eXBlLnNldEZyb20gPSBmdW5jdGlvbih2YWx1ZSkgeworVHJhbnNpdGlvbkFuaW1h
dG9yLnByb3RvdHlwZS5zZXRGcm9tID0gZnVuY3Rpb24odmFsdWUpIHsKICAgICB0aGlzLl9mcm9t
ID0gdmFsdWU7CiAgICAgdGhpcy5fZGVsdGEgPSB0aGlzLl90byAtIHRoaXMuX2Zyb207CiB9Owog
CitUcmFuc2l0aW9uQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24oKSB7CisgICAg
Y29uc29sZS5hc3NlcnQoaXNGaW5pdGUodGhpcy5kdXJhdGlvbikpOworICAgIHRoaXMucHJvZ3Jl
c3MgPSAwLjA7CisgICAgdGhpcy5jdXJyZW50VmFsdWUgPSB0aGlzLl9mcm9tOworICAgIEFuaW1h
dG9yLnByb3RvdHlwZS5zdGFydC5jYWxsKHRoaXMpOworfTsKKwogLyoqCiAgKiBAcGFyYW0geyFu
dW1iZXJ9IHZhbHVlCiAgKi8KLUFuaW1hdG9yLnByb3RvdHlwZS5zZXRUbyA9IGZ1bmN0aW9uKHZh
bHVlKSB7CitUcmFuc2l0aW9uQW5pbWF0b3IucHJvdG90eXBlLnNldFRvID0gZnVuY3Rpb24odmFs
dWUpIHsKICAgICB0aGlzLl90byA9IHZhbHVlOwogICAgIHRoaXMuX2RlbHRhID0gdGhpcy5fdG8g
LSB0aGlzLl9mcm9tOwogfTsKIAotQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24o
KSB7Ci0gICAgdGhpcy5fbGFzdFN0ZXBUaW1lID0gRGF0ZS5ub3coKTsKLSAgICB0aGlzLnByb2dy
ZXNzID0gMC4wOwotICAgIHRoaXMuX2lzUnVubmluZyA9IHRydWU7Ci0gICAgdGhpcy5jdXJyZW50
VmFsdWUgPSB0aGlzLl9mcm9tOwotICAgIEFuaW1hdGlvbk1hbmFnZXIuc2hhcmVkLmFkZCh0aGlz
KTsKKy8qKgorICogQHBhcmFtIHshbnVtYmVyfSBub3cKKyAqLworVHJhbnNpdGlvbkFuaW1hdG9y
LnByb3RvdHlwZS5vbkFuaW1hdGlvbkZyYW1lID0gZnVuY3Rpb24obm93KSB7CisgICAgdGhpcy5w
cm9ncmVzcyArPSAobm93IC0gdGhpcy5fbGFzdFN0ZXBUaW1lKSAvIHRoaXMuZHVyYXRpb247Cisg
ICAgdGhpcy5wcm9ncmVzcyA9IE1hdGgubWluKDEuMCwgdGhpcy5wcm9ncmVzcyk7CisgICAgdGhp
cy5fbGFzdFN0ZXBUaW1lID0gbm93OworICAgIHRoaXMuY3VycmVudFZhbHVlID0gdGhpcy50aW1p
bmdGdW5jdGlvbih0aGlzLnByb2dyZXNzKSAqIHRoaXMuX2RlbHRhICsgdGhpcy5fZnJvbTsKKyAg
ICB0aGlzLnN0ZXAodGhpcyk7CisgICAgaWYgKHRoaXMucHJvZ3Jlc3MgPT09IDEuMCkgeworICAg
ICAgICB0aGlzLnN0b3AoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIH07CiAKLUFuaW1hdG9y
LnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24oKSB7Ci0gICAgaWYgKCF0aGlzLl9pc1J1bm5pbmcp
Ci0gICAgICAgIHJldHVybjsKLSAgICB0aGlzLl9pc1J1bm5pbmcgPSBmYWxzZTsKLSAgICB0aGlz
LmN1cnJlbnRWYWx1ZSA9IHRoaXMuX3RvOwotICAgIHRoaXMuc3RlcCh0aGlzKTsKLSAgICBBbmlt
YXRpb25NYW5hZ2VyLnNoYXJlZC5yZW1vdmUodGhpcyk7Ci0gICAgdGhpcy5kaXNwYXRjaEV2ZW50
KEFuaW1hdG9yLkV2ZW50VHlwZURpZEFuaW1hdGlvblN0b3AsIHRoaXMpOworZnVuY3Rpb24gRmxp
bmdHZXN0dXJlQW5pbWF0b3IoaW5pdGlhbFZlbG9jaXR5LCBpbml0aWFsVmFsdWUpIHsKKyAgICBB
bmltYXRvci5jYWxsKHRoaXMpOworICAgIC8qKgorICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAg
ICAqLworICAgIHRoaXMuaW5pdGlhbFZlbG9jaXR5ID0gaW5pdGlhbFZlbG9jaXR5OworICAgIC8q
KgorICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAgICAqLworICAgIHRoaXMuaW5pdGlhbFZhbHVl
ID0gaW5pdGlhbFZhbHVlOworICAgIC8qKgorICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAgICAq
IEBwcm90ZWN0ZWQKKyAgICAgKi8KKyAgICB0aGlzLl9lbGFwc2VkVGltZSA9IDA7CisgICAgdmFy
IHN0YXJ0VmVsb2NpdHkgPSBNYXRoLmFicyh0aGlzLmluaXRpYWxWZWxvY2l0eSk7CisgICAgaWYg
KHN0YXJ0VmVsb2NpdHkgPiB0aGlzLl92ZWxvY2l0eUF0VGltZSgwKSkKKyAgICAgICAgc3RhcnRW
ZWxvY2l0eSA9IHRoaXMuX3ZlbG9jaXR5QXRUaW1lKDApOworICAgIGlmIChzdGFydFZlbG9jaXR5
IDwgMCkKKyAgICAgICAgc3RhcnRWZWxvY2l0eSA9IDA7CisgICAgLyoqCisgICAgICogQHR5cGUg
eyFudW1iZXJ9CisgICAgICogQHByb3RlY3RlZAorICAgICAqLworICAgIHRoaXMuX3RpbWVPZmZz
ZXQgPSB0aGlzLl90aW1lQXRWZWxvY2l0eShzdGFydFZlbG9jaXR5KTsKKyAgICAvKioKKyAgICAg
KiBAdHlwZSB7IW51bWJlcn0KKyAgICAgKiBAcHJvdGVjdGVkCisgICAgICovCisgICAgdGhpcy5f
cG9zaXRpb25PZmZzZXQgPSB0aGlzLl92YWx1ZUF0VGltZSh0aGlzLl90aW1lT2Zmc2V0KTsKKyAg
ICAvKioKKyAgICAgKiBAdHlwZSB7IW51bWJlcn0KKyAgICAgKi8KKyAgICB0aGlzLmR1cmF0aW9u
ID0gdGhpcy5fdGltZUF0VmVsb2NpdHkoMCk7Cit9CisKK0ZsaW5nR2VzdHVyZUFuaW1hdG9yLnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQW5pbWF0b3IucHJvdG90eXBlKTsKKworRmxpbmdHZXN0
dXJlQW5pbWF0b3IuUDAgPSAtNTcwNy42MjsKK0ZsaW5nR2VzdHVyZUFuaW1hdG9yLlAxID0gMC4x
NzI7CitGbGluZ0dlc3R1cmVBbmltYXRvci5QMiA9IDAuMDAzNzsKKworRmxpbmdHZXN0dXJlQW5p
bWF0b3IucHJvdG90eXBlLl92YWx1ZUF0VGltZSA9IGZ1bmN0aW9uKHQpIHsKKyAgICByZXR1cm4g
RmxpbmdHZXN0dXJlQW5pbWF0b3IuUDAgKiBNYXRoLmV4cCgtRmxpbmdHZXN0dXJlQW5pbWF0b3Iu
UDIgKiB0KSAtIEZsaW5nR2VzdHVyZUFuaW1hdG9yLlAxICogdCAtIEZsaW5nR2VzdHVyZUFuaW1h
dG9yLlAwOworfTsKKworRmxpbmdHZXN0dXJlQW5pbWF0b3IucHJvdG90eXBlLl92ZWxvY2l0eUF0
VGltZSA9IGZ1bmN0aW9uKHQpIHsKKyAgICByZXR1cm4gLUZsaW5nR2VzdHVyZUFuaW1hdG9yLlAw
ICogRmxpbmdHZXN0dXJlQW5pbWF0b3IuUDIgKiBNYXRoLmV4cCgtRmxpbmdHZXN0dXJlQW5pbWF0
b3IuUDIgKiB0KSAtIEZsaW5nR2VzdHVyZUFuaW1hdG9yLlAxOworfTsKKworRmxpbmdHZXN0dXJl
QW5pbWF0b3IucHJvdG90eXBlLl90aW1lQXRWZWxvY2l0eSA9IGZ1bmN0aW9uKHYpIHsKKyAgICBy
ZXR1cm4gLU1hdGgubG9nKCh2ICsgRmxpbmdHZXN0dXJlQW5pbWF0b3IuUDEpIC8gKC1GbGluZ0dl
c3R1cmVBbmltYXRvci5QMCAqIEZsaW5nR2VzdHVyZUFuaW1hdG9yLlAyKSkgLyBGbGluZ0dlc3R1
cmVBbmltYXRvci5QMjsKK307CisKK0ZsaW5nR2VzdHVyZUFuaW1hdG9yLnByb3RvdHlwZS5zdGFy
dCA9IGZ1bmN0aW9uKCkgeworICAgIHRoaXMuX2xhc3RTdGVwVGltZSA9IERhdGUubm93KCk7Cisg
ICAgQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0LmNhbGwodGhpcyk7CiB9OwogCiAvKioKICAqIEBw
YXJhbSB7IW51bWJlcn0gbm93CiAgKi8KLUFuaW1hdG9yLnByb3RvdHlwZS5vbkFuaW1hdGlvbkZy
YW1lID0gZnVuY3Rpb24obm93KSB7Ci0gICAgdGhpcy5wcm9ncmVzcyArPSAobm93IC0gdGhpcy5f
bGFzdFN0ZXBUaW1lKSAvIHRoaXMuZHVyYXRpb247Ci0gICAgaWYgKHRoaXMucHJvZ3Jlc3MgPj0g
MS4wKSB7Ci0gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSAxLjA7CitGbGluZ0dlc3R1cmVBbmltYXRv
ci5wcm90b3R5cGUub25BbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKG5vdykgeworICAgIHRoaXMu
X2VsYXBzZWRUaW1lICs9IG5vdyAtIHRoaXMuX2xhc3RTdGVwVGltZTsKKyAgICB0aGlzLl9sYXN0
U3RlcFRpbWUgPSBub3c7CisgICAgaWYgKHRoaXMuX2VsYXBzZWRUaW1lICsgdGhpcy5fdGltZU9m
ZnNldCA+PSB0aGlzLmR1cmF0aW9uKSB7CiAgICAgICAgIHRoaXMuc3RvcCgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIHRoaXMuY3VycmVudFZhbHVlID0gdGhpcy50aW1pbmdGdW5jdGlv
bih0aGlzLnByb2dyZXNzKSAqIHRoaXMuX2RlbHRhICsgdGhpcy5fZnJvbTsKKyAgICB2YXIgcG9z
aXRpb24gPSB0aGlzLl92YWx1ZUF0VGltZSh0aGlzLl9lbGFwc2VkVGltZSArIHRoaXMuX3RpbWVP
ZmZzZXQpIC0gdGhpcy5fcG9zaXRpb25PZmZzZXQ7CisgICAgaWYgKHRoaXMuaW5pdGlhbFZlbG9j
aXR5IDwgMCkKKyAgICAgICAgcG9zaXRpb24gPSAtcG9zaXRpb247CisgICAgdGhpcy5jdXJyZW50
VmFsdWUgPSBwb3NpdGlvbiArIHRoaXMuaW5pdGlhbFZhbHVlOwogICAgIHRoaXMuc3RlcCh0aGlz
KTsKLSAgICB0aGlzLl9sYXN0U3RlcFRpbWUgPSBub3c7CiB9OwogCiAvKioKQEAgLTEyMDksMTUg
KzEzMTMsMjYgQEAgZnVuY3Rpb24gU2Nyb2xsVmlldygpIHsKICAgICAgKiBAdHlwZSB7QW5pbWF0
b3J9CiAgICAgICogQHByb3RlY3RlZAogICAgICAqLwotICAgIHRoaXMuX3Njcm9sbEFuaW1hdG9y
ID0gbmV3IEFuaW1hdG9yKCk7Ci0gICAgdGhpcy5fc2Nyb2xsQW5pbWF0b3Iuc3RlcCA9IHRoaXMu
b25TY3JvbGxBbmltYXRvclN0ZXA7Ci0KKyAgICB0aGlzLl9zY3JvbGxBbmltYXRvciA9IG51bGw7
CiAgICAgLyoqCiAgICAgICogQHR5cGUgez9PYmplY3R9CiAgICAgICovCiAgICAgdGhpcy5kZWxl
Z2F0ZSA9IG51bGw7CisgICAgLyoqCisgICAgICogQHR5cGUgeyFudW1iZXJ9CisgICAgICovCisg
ICAgdGhpcy5fbGFzdFRvdWNoUG9zaXRpb24gPSAwOworICAgIC8qKgorICAgICAqIEB0eXBlIHsh
bnVtYmVyfQorICAgICAqLworICAgIHRoaXMuX2xhc3RUb3VjaFZlbG9jaXR5ID0gMDsKKyAgICAv
KioKKyAgICAgKiBAdHlwZSB7IW51bWJlcn0KKyAgICAgKi8KKyAgICB0aGlzLl9sYXN0VG91Y2hU
aW1lU3RhbXAgPSAwOwogCiAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
d2hlZWwiLCB0aGlzLm9uTW91c2VXaGVlbCwgZmFsc2UpOworICAgIHRoaXMuZWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwgdGhpcy5vblRvdWNoU3RhcnQsIGZhbHNlKTsKIAog
ICAgIC8qKgogICAgICAqIFRoZSBjb250ZW50IG9mZnNldCBpcyBwYXJ0aXRpb25lZCBzbyB0aGUg
aXQgY2FuIGdvIGJleW9uZCB0aGUgQ1NTIGxpbWl0CkBAIC0xMjM1LDYgKzEzNTAsNTUgQEAgU2Ny
b2xsVmlldy5DbGFzc05hbWVTY3JvbGxWaWV3ID0gInNjcm9sbC12aWV3IjsKIFNjcm9sbFZpZXcu
Q2xhc3NOYW1lU2Nyb2xsVmlld0NvbnRlbnQgPSAic2Nyb2xsLXZpZXctY29udGVudCI7CiAKIC8q
KgorICogQHBhcmFtIHshRXZlbnR9IGV2ZW50CisgKi8KK1Njcm9sbFZpZXcucHJvdG90eXBlLm9u
VG91Y2hTdGFydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgdmFyIHRvdWNoID0gZXZlbnQudG91
Y2hlc1swXTsKKyAgICB0aGlzLl9sYXN0VG91Y2hQb3NpdGlvbiA9IHRvdWNoLmNsaWVudFk7Cisg
ICAgdGhpcy5fbGFzdFRvdWNoVmVsb2NpdHkgPSAwOworICAgIHRoaXMuX2xhc3RUb3VjaFRpbWVT
dGFtcCA9IGV2ZW50LnRpbWVTdGFtcDsKKyAgICBpZiAodGhpcy5fc2Nyb2xsQW5pbWF0b3IpCisg
ICAgICAgIHRoaXMuX3Njcm9sbEFuaW1hdG9yLnN0b3AoKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigidG91Y2htb3ZlIiwgdGhpcy5vbldpbmRvd1RvdWNoTW92ZSwgZmFsc2UpOworICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIHRoaXMub25XaW5kb3dUb3VjaEVu
ZCwgZmFsc2UpOworfTsKKworLyoqCisgKiBAcGFyYW0geyFFdmVudH0gZXZlbnQKKyAqLworU2Ny
b2xsVmlldy5wcm90b3R5cGUub25XaW5kb3dUb3VjaE1vdmUgPSBmdW5jdGlvbihldmVudCkgewor
ICAgIHZhciB0b3VjaCA9IGV2ZW50LnRvdWNoZXNbMF07CisgICAgdmFyIGRlbHRhVGltZSA9IGV2
ZW50LnRpbWVTdGFtcCAtIHRoaXMuX2xhc3RUb3VjaFRpbWVTdGFtcDsKKyAgICB2YXIgZGVsdGFZ
ID0gdGhpcy5fbGFzdFRvdWNoUG9zaXRpb24gLSB0b3VjaC5jbGllbnRZOworICAgIHRoaXMuc2Ny
b2xsQnkoZGVsdGFZLCBmYWxzZSk7CisgICAgdGhpcy5fbGFzdFRvdWNoVmVsb2NpdHkgPSBkZWx0
YVkgLyBkZWx0YVRpbWU7CisgICAgdGhpcy5fbGFzdFRvdWNoUG9zaXRpb24gPSB0b3VjaC5jbGll
bnRZOworICAgIHRoaXMuX2xhc3RUb3VjaFRpbWVTdGFtcCA9IGV2ZW50LnRpbWVTdGFtcDsKKyAg
ICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwor
fTsKKworLyoqCisgKiBAcGFyYW0geyFFdmVudH0gZXZlbnQKKyAqLworU2Nyb2xsVmlldy5wcm90
b3R5cGUub25XaW5kb3dUb3VjaEVuZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgaWYgKE1hdGgu
YWJzKHRoaXMuX2xhc3RUb3VjaFZlbG9jaXR5KSA+IDAuMDEpIHsKKyAgICAgICAgdGhpcy5fc2Ny
b2xsQW5pbWF0b3IgPSBuZXcgRmxpbmdHZXN0dXJlQW5pbWF0b3IodGhpcy5fbGFzdFRvdWNoVmVs
b2NpdHksIHRoaXMuX2NvbnRlbnRPZmZzZXQpOworICAgICAgICB0aGlzLl9zY3JvbGxBbmltYXRv
ci5zdGVwID0gdGhpcy5vbkZsaW5nR2VzdHVyZUFuaW1hdG9yU3RlcDsKKyAgICAgICAgdGhpcy5f
c2Nyb2xsQW5pbWF0b3Iuc3RhcnQoKTsKKyAgICB9CisgICAgd2luZG93LnJlbW92ZUV2ZW50TGlz
dGVuZXIoInRvdWNobW92ZSIsIHRoaXMub25XaW5kb3dUb3VjaE1vdmUsIGZhbHNlKTsKKyAgICB3
aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCB0aGlzLm9uV2luZG93VG91Y2hF
bmQsIGZhbHNlKTsKK307CisKKy8qKgorICogQHBhcmFtIHshQW5pbWF0b3J9IGFuaW1hdG9yCisg
Ki8KK1Njcm9sbFZpZXcucHJvdG90eXBlLm9uRmxpbmdHZXN0dXJlQW5pbWF0b3JTdGVwID0gZnVu
Y3Rpb24oYW5pbWF0b3IpIHsKKyAgICB0aGlzLnNjcm9sbFRvKGFuaW1hdG9yLmN1cnJlbnRWYWx1
ZSwgZmFsc2UpOworfTsKKworLyoqCiAgKiBAcmV0dXJuIHshQW5pbWF0b3J9CiAgKi8KIFNjcm9s
bFZpZXcucHJvdG90eXBlLnNjcm9sbEFuaW1hdG9yID0gZnVuY3Rpb24oKSB7CkBAIC0xMjk2LDYg
KzE0NjAsMTAgQEAgU2Nyb2xsVmlldy5wcm90b3R5cGUuc2Nyb2xsVG8gPSBmdW5jdGlvbihvZmZz
ZXQsIGFuaW1hdGUpIHsKICAgICAgICAgdGhpcy5zZXRDb250ZW50T2Zmc2V0KG9mZnNldCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKHRoaXMuX3Njcm9sbEFuaW1hdG9yKQorICAg
ICAgICB0aGlzLl9zY3JvbGxBbmltYXRvci5zdG9wKCk7CisgICAgdGhpcy5fc2Nyb2xsQW5pbWF0
b3IgPSBuZXcgVHJhbnNpdGlvbkFuaW1hdG9yKCk7CisgICAgdGhpcy5fc2Nyb2xsQW5pbWF0b3Iu
c3RlcCA9IHRoaXMub25TY3JvbGxBbmltYXRvclN0ZXA7CiAgICAgdGhpcy5fc2Nyb2xsQW5pbWF0
b3Iuc2V0RnJvbSh0aGlzLl9jb250ZW50T2Zmc2V0KTsKICAgICB0aGlzLl9zY3JvbGxBbmltYXRv
ci5zZXRUbyhvZmZzZXQpOwogICAgIHRoaXMuX3Njcm9sbEFuaW1hdG9yLmR1cmF0aW9uID0gMzAw
OwpAQCAtMTc2NCw2ICsxOTMyLDcgQEAgZnVuY3Rpb24gU2NydWJieVNjcm9sbEJhcihzY3JvbGxW
aWV3KSB7CiAgICAgdGhpcy5fdGltZXIgPSBudWxsOwogICAgIAogICAgIHRoaXMuZWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLm9uTW91c2VEb3duLCBmYWxzZSk7Cisg
ICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCB0aGlzLm9uVG91
Y2hTdGFydCwgZmFsc2UpOwogfQogCiBTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUoVmlldy5wcm90b3R5cGUpOwpAQCAtMTc3NSw2ICsxOTQ0LDQ4IEBAIFNjcnViYnlT
Y3JvbGxCYXIuQ2xhc3NOYW1lU2NydWJieVNjcm9sbEJhciA9ICJzY3J1YmJ5LXNjcm9sbC1iYXIi
OwogU2NydWJieVNjcm9sbEJhci5DbGFzc05hbWVTY3J1YmJ5U2Nyb2xsVGh1bWIgPSAic2NydWJi
eS1zY3JvbGwtdGh1bWIiOwogCiAvKioKKyAqIEBwYXJhbSB7P0V2ZW50fSBldmVudAorICovCitT
Y3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5vblRvdWNoU3RhcnQgPSBmdW5jdGlvbihldmVudCkg
eworICAgIHZhciB0b3VjaCA9IGV2ZW50LnRvdWNoZXNbMF07CisgICAgdGhpcy5fc2V0VGh1bWJQ
b3NpdGlvbkZyb21FdmVudFBvc2l0aW9uKHRvdWNoLmNsaWVudFkpOworICAgIGlmICh0aGlzLl90
aHVtYlN0eWxlVG9wQW5pbWF0b3IpCisgICAgICAgIHRoaXMuX3RodW1iU3R5bGVUb3BBbmltYXRv
ci5zdG9wKCk7CisgICAgdGhpcy5fdGltZXIgPSBzZXRJbnRlcnZhbCh0aGlzLm9uU2Nyb2xsVGlt
ZXIsIFNjcnViYnlTY3JvbGxCYXIuU2Nyb2xsSW50ZXJ2YWwpOworICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJ0b3VjaG1vdmUiLCB0aGlzLm9uV2luZG93VG91Y2hNb3ZlLCBmYWxzZSk7Cisg
ICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgdGhpcy5vbldpbmRvd1RvdWNo
RW5kLCBmYWxzZSk7CisgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsKK307CisKKy8qKgorICogQHBhcmFtIHs/RXZlbnR9IGV2ZW50CisgKi8K
K1NjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLm9uV2luZG93VG91Y2hNb3ZlID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICB2YXIgdG91Y2ggPSBldmVudC50b3VjaGVzWzBdOworICAgIHRoaXMuX3Nl
dFRodW1iUG9zaXRpb25Gcm9tRXZlbnRQb3NpdGlvbih0b3VjaC5jbGllbnRZKTsKKyAgICBldmVu
dC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworfTsKKwor
LyoqCisgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKKyAqLworU2NydWJieVNjcm9sbEJhci5wcm90
b3R5cGUub25XaW5kb3dUb3VjaEVuZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgdGhpcy5fdGh1
bWJTdHlsZVRvcEFuaW1hdG9yID0gbmV3IFRyYW5zaXRpb25BbmltYXRvcigpOworICAgIHRoaXMu
X3RodW1iU3R5bGVUb3BBbmltYXRvci5zdGVwID0gdGhpcy5vblRodW1iU3R5bGVUb3BBbmltYXRp
b25TdGVwOworICAgIHRoaXMuX3RodW1iU3R5bGVUb3BBbmltYXRvci5zZXRGcm9tKHRoaXMudGh1
bWIub2Zmc2V0VG9wKTsKKyAgICB0aGlzLl90aHVtYlN0eWxlVG9wQW5pbWF0b3Iuc2V0VG8oKHRo
aXMuX2hlaWdodCAtIHRoaXMuX3RodW1iSGVpZ2h0KSAvIDIpOworICAgIHRoaXMuX3RodW1iU3R5
bGVUb3BBbmltYXRvci50aW1pbmdGdW5jdGlvbiA9IEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLkVh
c2VJbk91dDsKKyAgICB0aGlzLl90aHVtYlN0eWxlVG9wQW5pbWF0b3IuZHVyYXRpb24gPSAxMDA7
CisgICAgdGhpcy5fdGh1bWJTdHlsZVRvcEFuaW1hdG9yLnN0YXJ0KCk7CisKKyAgICB3aW5kb3cu
cmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwgdGhpcy5vbldpbmRvd1RvdWNoTW92ZSwg
ZmFsc2UpOworICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIHRoaXMu
b25XaW5kb3dUb3VjaEVuZCwgZmFsc2UpOworICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fdGltZXIp
OworfTsKKworLyoqCiAgKiBAcmV0dXJuIHshbnVtYmVyfSBIZWlnaHQgb2YgdGhlIHZpZXcgaW4g
cGl4ZWxzLgogICovCiBTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5oZWlnaHQgPSBmdW5jdGlv
bigpIHsKQEAgLTE4MDYsMTIgKzIwMTcsMTIgQEAgU2NydWJieVNjcm9sbEJhci5wcm90b3R5cGUu
c2V0VGh1bWJIZWlnaHQgPSBmdW5jdGlvbihoZWlnaHQpIHsKIH07CiAKIC8qKgotICogQHBhcmFt
IHs/RXZlbnR9IGV2ZW50CisgKiBAcGFyYW0ge251bWJlcn0gcG9zaXRpb24KICAqLwotU2NydWJi
eVNjcm9sbEJhci5wcm90b3R5cGUuX3NldFRodW1iUG9zaXRpb25Gcm9tRXZlbnQgPSBmdW5jdGlv
bihldmVudCkgeworU2NydWJieVNjcm9sbEJhci5wcm90b3R5cGUuX3NldFRodW1iUG9zaXRpb25G
cm9tRXZlbnRQb3NpdGlvbiA9IGZ1bmN0aW9uKHBvc2l0aW9uKSB7CiAgICAgdmFyIHRodW1iTWlu
ID0gU2NydWJieVNjcm9sbEJhci5UaHVtYk1hcmdpbjsKICAgICB2YXIgdGh1bWJNYXggPSB0aGlz
Ll9oZWlnaHQgLSB0aGlzLl90aHVtYkhlaWdodCAtIFNjcnViYnlTY3JvbGxCYXIuVGh1bWJNYXJn
aW4gKiAyOwotICAgIHZhciB5ID0gZXZlbnQuY2xpZW50WSAtIHRoaXMuZWxlbWVudC5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKS50b3AgLSB0aGlzLmVsZW1lbnQuY2xpZW50VG9wICsgdGhpcy5lbGVt
ZW50LnNjcm9sbFRvcDsKKyAgICB2YXIgeSA9IHBvc2l0aW9uIC0gdGhpcy5lbGVtZW50LmdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpLnRvcCAtIHRoaXMuZWxlbWVudC5jbGllbnRUb3AgKyB0aGlzLmVs
ZW1lbnQuc2Nyb2xsVG9wOwogICAgIHZhciB0aHVtYlBvc2l0aW9uID0geSAtIHRoaXMuX3RodW1i
SGVpZ2h0IC8gMjsKICAgICB0aHVtYlBvc2l0aW9uID0gTWF0aC5tYXgodGh1bWJQb3NpdGlvbiwg
dGh1bWJNaW4pOwogICAgIHRodW1iUG9zaXRpb24gPSBNYXRoLm1pbih0aHVtYlBvc2l0aW9uLCB0
aHVtYk1heCk7CkBAIC0xODIzLDI3ICsyMDM0LDI5IEBAIFNjcnViYnlTY3JvbGxCYXIucHJvdG90
eXBlLl9zZXRUaHVtYlBvc2l0aW9uRnJvbUV2ZW50ID0gZnVuY3Rpb24oZXZlbnQpIHsKICAqIEBw
YXJhbSB7P0V2ZW50fSBldmVudAogICovCiBTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5vbk1v
dXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgdGhpcy5fc2V0VGh1bWJQb3NpdGlvbkZy
b21FdmVudChldmVudCk7CisgICAgdGhpcy5fc2V0VGh1bWJQb3NpdGlvbkZyb21FdmVudFBvc2l0
aW9uKGV2ZW50LmNsaWVudFkpOwogCiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
bW92ZSIsIHRoaXMub25XaW5kb3dNb3VzZU1vdmUsIGZhbHNlKTsKICAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2V1cCIsIHRoaXMub25XaW5kb3dNb3VzZVVwLCBmYWxzZSk7CiAgICAg
aWYgKHRoaXMuX3RodW1iU3R5bGVUb3BBbmltYXRvcikKICAgICAgICAgdGhpcy5fdGh1bWJTdHls
ZVRvcEFuaW1hdG9yLnN0b3AoKTsKICAgICB0aGlzLl90aW1lciA9IHNldEludGVydmFsKHRoaXMu
b25TY3JvbGxUaW1lciwgU2NydWJieVNjcm9sbEJhci5TY3JvbGxJbnRlcnZhbCk7CisgICAgZXZl
bnQuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKIH07CiAK
IC8qKgogICogQHBhcmFtIHs/RXZlbnR9IGV2ZW50CiAgKi8KIFNjcnViYnlTY3JvbGxCYXIucHJv
dG90eXBlLm9uV2luZG93TW91c2VNb3ZlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICB0aGlzLl9z
ZXRUaHVtYlBvc2l0aW9uRnJvbUV2ZW50KGV2ZW50KTsKKyAgICB0aGlzLl9zZXRUaHVtYlBvc2l0
aW9uRnJvbUV2ZW50UG9zaXRpb24oZXZlbnQuY2xpZW50WSk7CiB9OwogCiAvKioKICAqIEBwYXJh
bSB7P0V2ZW50fSBldmVudAogICovCiBTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5vbldpbmRv
d01vdXNlVXAgPSBmdW5jdGlvbihldmVudCkgewotICAgIHRoaXMuX3RodW1iU3R5bGVUb3BBbmlt
YXRvciA9IG5ldyBBbmltYXRvcigpOworICAgIHRoaXMuX3RodW1iU3R5bGVUb3BBbmltYXRvciA9
IG5ldyBUcmFuc2l0aW9uQW5pbWF0b3IoKTsKICAgICB0aGlzLl90aHVtYlN0eWxlVG9wQW5pbWF0
b3Iuc3RlcCA9IHRoaXMub25UaHVtYlN0eWxlVG9wQW5pbWF0aW9uU3RlcDsKICAgICB0aGlzLl90
aHVtYlN0eWxlVG9wQW5pbWF0b3Iuc2V0RnJvbSh0aGlzLnRodW1iLm9mZnNldFRvcCk7CiAgICAg
dGhpcy5fdGh1bWJTdHlsZVRvcEFuaW1hdG9yLnNldFRvKCh0aGlzLl9oZWlnaHQgLSB0aGlzLl90
aHVtYkhlaWdodCkgLyAyKTsKQEAgLTE4ODYsNiArMjA5OSw4IEBAIGZ1bmN0aW9uIFllYXJMaXN0
Q2VsbChzaG9ydE1vbnRoTGFiZWxzKSB7CiAgICAgICovCiAgICAgdGhpcy5sYWJlbCA9IGNyZWF0
ZUVsZW1lbnQoImRpdiIsIFllYXJMaXN0Q2VsbC5DbGFzc05hbWVMYWJlbCwgIi0tLS0iKTsKICAg
ICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5sYWJlbCk7CisgICAgdGhpcy5sYWJlbC5z
dHlsZS5oZWlnaHQgPSAoWWVhckxpc3RDZWxsLkhlaWdodCAtIFllYXJMaXN0Q2VsbC5Cb3JkZXJC
b3R0b21XaWR0aCkgKyAicHgiOworICAgIHRoaXMubGFiZWwuc3R5bGUubGluZUhlaWdodCA9IChZ
ZWFyTGlzdENlbGwuSGVpZ2h0IC0gWWVhckxpc3RDZWxsLkJvcmRlckJvdHRvbVdpZHRoKSArICJw
eCI7CiAKICAgICAvKioKICAgICAgKiBAdHlwZSB7IUFycmF5fSBBcnJheSBvZiB0aGUgMTIgbW9u
dGggYnV0dG9uIGVsZW1lbnRzLgpAQCAtMTkyMCwxMCArMjEzNSwxMSBAQCBmdW5jdGlvbiBZZWFy
TGlzdENlbGwoc2hvcnRNb250aExhYmVscykgewogCiBZZWFyTGlzdENlbGwucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShMaXN0Q2VsbC5wcm90b3R5cGUpOwogCi1ZZWFyTGlzdENlbGwuSGVpZ2h0
ID0gMjU7CitZZWFyTGlzdENlbGwuSGVpZ2h0ID0gaGFzSW5hY2N1cmF0ZVBvaW50aW5nRGV2aWNl
KCkgPyAzMSA6IDI1OworWWVhckxpc3RDZWxsLkJvcmRlckJvdHRvbVdpZHRoID0gMTsKIFllYXJM
aXN0Q2VsbC5CdXR0b25Sb3dzID0gMzsKIFllYXJMaXN0Q2VsbC5CdXR0b25Db2x1bW5zID0gNDsK
LVllYXJMaXN0Q2VsbC5TZWxlY3RlZEhlaWdodCA9IDEyMTsKK1llYXJMaXN0Q2VsbC5TZWxlY3Rl
ZEhlaWdodCA9IGhhc0luYWNjdXJhdGVQb2ludGluZ0RldmljZSgpID8gMTI3IDogMTIxOwogWWVh
ckxpc3RDZWxsLkNsYXNzTmFtZVllYXJMaXN0Q2VsbCA9ICJ5ZWFyLWxpc3QtY2VsbCI7CiBZZWFy
TGlzdENlbGwuQ2xhc3NOYW1lTGFiZWwgPSAibGFiZWwiOwogWWVhckxpc3RDZWxsLkNsYXNzTmFt
ZU1vbnRoQ2hvb3NlciA9ICJtb250aC1jaG9vc2VyIjsKQEAgLTIwMjgsNiArMjI0NCw3IEBAIGZ1
bmN0aW9uIFllYXJMaXN0VmlldyhtaW5pbXVtTW9udGgsIG1heGltdW1Nb250aCkgewogICAgIHRo
aXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCB0aGlzLm9uTW91c2VPdmVy
LCBmYWxzZSk7CiAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0Iiwg
dGhpcy5vbk1vdXNlT3V0LCBmYWxzZSk7CiAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImtleWRvd24iLCB0aGlzLm9uS2V5RG93biwgZmFsc2UpOworICAgIHRoaXMuZWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwgdGhpcy5vblRvdWNoU3RhcnQsIGZhbHNlKTsK
IH0KIAogWWVhckxpc3RWaWV3LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTGlzdFZpZXcucHJv
dG90eXBlKTsKQEAgLTIwMzksNiArMjI1NiwxOSBAQCBZZWFyTGlzdFZpZXcuRXZlbnRUeXBlWWVh
ckxpc3RWaWV3RGlkU2VsZWN0TW9udGggPSAieWVhckxpc3RWaWV3RGlkU2VsZWN0TW9udGgiOwog
LyoqCiAgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKICAqLworWWVhckxpc3RWaWV3LnByb3RvdHlw
ZS5vblRvdWNoU3RhcnQgPSBmdW5jdGlvbihldmVudCkgeworICAgIHZhciB0b3VjaCA9IGV2ZW50
LnRvdWNoZXNbMF07CisgICAgdmFyIG1vbnRoQnV0dG9uRWxlbWVudCA9IGVuY2xvc2luZ05vZGVP
clNlbGZXaXRoQ2xhc3ModG91Y2gudGFyZ2V0LCBZZWFyTGlzdENlbGwuQ2xhc3NOYW1lTW9udGhC
dXR0b24pOworICAgIGlmICghbW9udGhCdXR0b25FbGVtZW50KQorICAgICAgICByZXR1cm47Cisg
ICAgdmFyIGNlbGxFbGVtZW50ID0gZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcyhtb250aEJ1
dHRvbkVsZW1lbnQsIFllYXJMaXN0Q2VsbC5DbGFzc05hbWVZZWFyTGlzdENlbGwpOworICAgIHZh
ciBjZWxsID0gY2VsbEVsZW1lbnQuJHZpZXc7CisgICAgdGhpcy5oaWdobGlnaHRNb250aChuZXcg
TW9udGgoY2VsbC5yb3cgKyAxLCBwYXJzZUludChtb250aEJ1dHRvbkVsZW1lbnQuZGF0YXNldC5t
b250aCwgMTApKSk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7P0V2ZW50fSBldmVudAorICovCiBZ
ZWFyTGlzdFZpZXcucHJvdG90eXBlLm9uTW91c2VPdmVyID0gZnVuY3Rpb24oZXZlbnQpIHsKICAg
ICB2YXIgbW9udGhCdXR0b25FbGVtZW50ID0gZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcyhl
dmVudC50YXJnZXQsIFllYXJMaXN0Q2VsbC5DbGFzc05hbWVNb250aEJ1dHRvbik7CiAgICAgaWYg
KCFtb250aEJ1dHRvbkVsZW1lbnQpCkBAIC0yMDk5LDcgKzIzMjksNyBAQCBZZWFyTGlzdFZpZXcu
cHJvdG90eXBlLl9hbmltYXRlUm93ID0gZnVuY3Rpb24ocm93LCBkaXJlY3Rpb24pIHsKICAgICAg
ICAgZnJvbVZhbHVlID0gb2xkQW5pbWF0b3IuY3VycmVudFZhbHVlOwogICAgIH0KICAgICB2YXIg
Y2VsbCA9IHRoaXMuY2VsbEF0Um93KHJvdyk7Ci0gICAgdmFyIGFuaW1hdG9yID0gbmV3IEFuaW1h
dG9yKCk7CisgICAgdmFyIGFuaW1hdG9yID0gbmV3IFRyYW5zaXRpb25BbmltYXRvcigpOwogICAg
IGFuaW1hdG9yLnN0ZXAgPSB0aGlzLm9uQ2VsbEhlaWdodEFuaW1hdG9yU3RlcDsKICAgICBhbmlt
YXRvci5zZXRGcm9tKGZyb21WYWx1ZSk7CiAgICAgYW5pbWF0b3Iuc2V0VG8oZGlyZWN0aW9uID09
PSBZZWFyTGlzdFZpZXcuUm93QW5pbWF0aW9uRGlyZWN0aW9uLk9wZW5pbmcgPyBZZWFyTGlzdENl
bGwuU2VsZWN0ZWRIZWlnaHQgOiBZZWFyTGlzdENlbGwuSGVpZ2h0KTsKQEAgLTI1NzcsOSArMjgw
NywxMyBAQCBmdW5jdGlvbiBDYWxlbmRhck5hdmlnYXRpb25CdXR0b24oKSB7CiAgICAgICogQHR5
cGUge251bWJlcn0gSW50ZXJ2YWwgYmV0d2VlbiByZWFwZWF0aW5nIGNsaWNrcyBpbiBtaWxsaXNl
Y29uZHMuCiAgICAgICovCiAgICAgdGhpcy5yZWFwZWF0aW5nQ2xpY2tzSW50ZXJ2YWwgPSBDYWxl
bmRhck5hdmlnYXRpb25CdXR0b24uRGVmYXVsdFJlcGVhdGluZ0NsaWNrc0ludGVydmFsOworICAg
IC8qKgorICAgICAqIEB0eXBlIHs/bnVtYmVyfSBUaGUgSUQgZm9yIHRoZSB0aW1lb3V0IHRoYXQg
dHJpZ2dlcnMgdGhlIHJlcGVhdGluZyBjbGlja3MuCisgICAgICovCiAgICAgdGhpcy5fdGltZXIg
PSBudWxsOwogICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMu
b25DbGljaywgZmFsc2UpOwogICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZWRvd24iLCB0aGlzLm9uTW91c2VEb3duLCBmYWxzZSk7CisgICAgdGhpcy5lbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCB0aGlzLm9uVG91Y2hTdGFydCwgZmFsc2UpOwogfTsK
IAogQ2FsZW5kYXJOYXZpZ2F0aW9uQnV0dG9uLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoVmll
dy5wcm90b3R5cGUpOwpAQCAtMjYwOSw3ICsyODQzLDMwIEBAIENhbGVuZGFyTmF2aWdhdGlvbkJ1
dHRvbi5wcm90b3R5cGUub25DbGljayA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAvKioKICAqIEBwYXJh
bSB7P0V2ZW50fSBldmVudAogICovCitDYWxlbmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBl
Lm9uVG91Y2hTdGFydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgaWYgKHRoaXMuX3RpbWVyICE9
PSBudWxsKQorICAgICAgICByZXR1cm47CisgICAgdGhpcy5fdGltZXIgPSBzZXRUaW1lb3V0KHRo
aXMub25SZXBlYXRpbmdDbGljaywgdGhpcy5yZXBlYXRpbmdDbGlja3NTdGFydGluZ1RocmVzaG9s
ZCk7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgdGhpcy5vbldpbmRv
d1RvdWNoRW5kLCBmYWxzZSk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7P0V2ZW50fSBldmVudAor
ICovCitDYWxlbmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uV2luZG93VG91Y2hFbmQg
PSBmdW5jdGlvbihldmVudCkgeworICAgIGlmICh0aGlzLl90aW1lciA9PT0gbnVsbCkKKyAgICAg
ICAgcmV0dXJuOworICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lcik7CisgICAgdGhpcy5fdGlt
ZXIgPSBudWxsOworICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIHRo
aXMub25XaW5kb3dNb3VzZVVwLCBmYWxzZSk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7P0V2ZW50
fSBldmVudAorICovCiBDYWxlbmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uTW91c2VE
b3duID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBpZiAodGhpcy5fdGltZXIgIT09IG51bGwpCisg
ICAgICAgIHJldHVybjsKICAgICB0aGlzLl90aW1lciA9IHNldFRpbWVvdXQodGhpcy5vblJlcGVh
dGluZ0NsaWNrLCB0aGlzLnJlcGVhdGluZ0NsaWNrc1N0YXJ0aW5nVGhyZXNob2xkKTsKICAgICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIHRoaXMub25XaW5kb3dNb3VzZVVwLCBm
YWxzZSk7CiB9OwpAQCAtMjYxOCw3ICsyODc1LDEwIEBAIENhbGVuZGFyTmF2aWdhdGlvbkJ1dHRv
bi5wcm90b3R5cGUub25Nb3VzZURvd24gPSBmdW5jdGlvbihldmVudCkgewogICogQHBhcmFtIHs/
RXZlbnR9IGV2ZW50CiAgKi8KIENhbGVuZGFyTmF2aWdhdGlvbkJ1dHRvbi5wcm90b3R5cGUub25X
aW5kb3dNb3VzZVVwID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBpZiAodGhpcy5fdGltZXIgPT09
IG51bGwpCisgICAgICAgIHJldHVybjsKICAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpOwor
ICAgIHRoaXMuX3RpbWVyID0gbnVsbDsKICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigi
bW91c2V1cCIsIHRoaXMub25XaW5kb3dNb3VzZVVwLCBmYWxzZSk7CiB9OwogCkBAIC0yNzQzLDcg
KzMwMDMsNyBAQCBmdW5jdGlvbiBEYXlDZWxsKCkgewogRGF5Q2VsbC5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKExpc3RDZWxsLnByb3RvdHlwZSk7CiAKIERheUNlbGwuV2lkdGggPSAzNDsKLURh
eUNlbGwuSGVpZ2h0ID0gMjA7CitEYXlDZWxsLkhlaWdodCA9IGhhc0luYWNjdXJhdGVQb2ludGlu
Z0RldmljZSgpID8gMzQgOiAyMDsKIERheUNlbGwuQm9yZGVyV2lkdGggPSAxOwogRGF5Q2VsbC5D
bGFzc05hbWVEYXlDZWxsID0gImRheS1jZWxsIjsKIERheUNlbGwuQ2xhc3NOYW1lSGlnaGxpZ2h0
ZWQgPSAiaGlnaGxpZ2h0ZWQiOwpAQCAtMzA0OCw2ICszMzA4LDggQEAgZnVuY3Rpb24gQ2FsZW5k
YXJUYWJsZVZpZXcoY2FsZW5kYXJQaWNrZXIpIHsKIAogICAgIC8vIHlvdSBzaG91bGRuJ3QgYmUg
YWJsZSB0byB1c2UgdGhlIG1vdXNlIHdoZWVsIHRvIHNjcm9sbC4KICAgICB0aGlzLnNjcm9sbFZp
ZXcuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwgdGhpcy5zY3JvbGxW
aWV3Lm9uTW91c2VXaGVlbCwgZmFsc2UpOworICAgIC8vIHlvdSBzaG91bGRuJ3QgYmUgYWJsZSB0
byBkbyBnZXN0dXJlIHNjcm9sbC4KKyAgICB0aGlzLnNjcm9sbFZpZXcuZWxlbWVudC5yZW1vdmVF
dmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwgdGhpcy5zY3JvbGxWaWV3Lm9uVG91Y2hTdGFydCwg
ZmFsc2UpOwogfQogCiBDYWxlbmRhclRhYmxlVmlldy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRl
KExpc3RWaWV3LnByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDNkN2RjMjNhYTI4YjQxM2FjMTRkMjIwOGVk
YjY3NmZhZjc5NGE2OS4uZTgwNjQ2OWEyOTNmNjNjZWYzMTVjZWExZjRmMjgzNzU4MGI4NjZhMSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTAzLTE0ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNo
aUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCB0b3VjaCBzdXBwb3J0IHRvIHRoZSBjYWxlbmRh
ciBwaWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMjI1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXIt
cGlja2VyLXRvdWNoLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNr
ZXItdG91Y2gtb3BlcmF0aW9ucy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9tb250aC1waWNrZXItdG91Y2gtb3BlcmF0
aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL21vbnRoLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5k
YXItcGlja2VyL3Jlc291cmNlcy9jYWxlbmRhci1waWNrZXItY29tbW9uLmpzOgorICAgICAgICAo
aG92ZXJPdmVyTW9udGhQb3B1cEJ1dHRvbik6CisgICAgICAgIChjbGlja01vbnRoUG9wdXBCdXR0
b24pOiBVc2UgaG92ZXJPdmVyTW9udGhQb3B1cEJ1dHRvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci93ZWVrLXBpY2tlci10b3VjaC1vcGVy
YXRpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
ZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvd2Vlay1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy5o
dG1sOiBBZGRlZC4KKwogMjAxMy0wMy0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVcGRhdGUgdGVzdCBleHBlY3RhdGlvbiBmb3IgdGhlIGJ1ZyAxMTE1MjEu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2Nh
bGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBp
Y2tlci9jYWxlbmRhci1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTQ2ZjBjY2ZmMTVlNjc2MzBkMjk3OTI3ZTJmOGQ5ODI5YTUwMjhjZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5k
YXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE3IEBACitUZXN0cyBpZiBjYWxlbmRhciBwaWNrZXIgbW91c2Ugb3BlcmF0aW9u
cyB3b3JrIGFzIGV4cGVjdGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQ2hl
Y2sgdGhhdCBwYWdlIHBvcHVwIGRvZXNuJ3QgZXhpc3QgYXQgZmlyc3QuCitQQVNTIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJtb2NrLXBhZ2UtcG9wdXAiKSBpcyBudWxsCitPcGVuIHRoZSBtb250
aCBwb3B1cC4KK1BBU1MgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5p
c1Zpc2libGUgaXMgZmFsc2UKK1BBU1MgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBv
cHVwVmlldy5pc1Zpc2libGUgaXMgdHJ1ZQorQ2hlY2sgdGhhdCB0b3VjaCBzd2lwaW5nIHNjcm9s
bHMgdGhlIGxpc3QgaW4gdGhlIG1vbnRoIHBvcHVwLgorUEFTUyBjaGVja1llYXJMaXN0Vmlld1Nj
cm9sbE9mZnNldCgpID4gMCBpcyB0cnVlCitQQVNTIGNoZWNrWWVhckxpc3RWaWV3U2Nyb2xsT2Zm
c2V0KCkgPCAwIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLXRvdWNoLW9wZXJhdGlv
bnMuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5k
YXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTdlMTQzYzIyNjkxOWViOTU2OTY3ODA2ODc4NmFiNTFjNmViOGQ2MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXIt
cGlja2VyL2NhbGVuZGFyLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwKQEAgLTAsMCArMSw2
MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2Zvcm1zL3Jlc291cmNlcy9jb21tb24uanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvZm9ybXMvcmVzb3Vy
Y2VzL3BpY2tlci1jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9j
YWxlbmRhci1waWNrZXItY29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxpbnB1dCB0
eXBlPWRhdGUgaWQ9ZGF0ZSB2YWx1ZT0iMjAwMC0wMS0wMiI+Cis8c2NyaXB0PgorZGVzY3JpcHRp
b24oIlRlc3RzIGlmIGNhbGVuZGFyIHBpY2tlciBtb3VzZSBvcGVyYXRpb25zIHdvcmsgYXMgZXhw
ZWN0ZWQuIik7CisKK2RlYnVnKCdDaGVjayB0aGF0IHBhZ2UgcG9wdXAgZG9lc25cJ3QgZXhpc3Qg
YXQgZmlyc3QuJyk7CitzaG91bGRCZU51bGwoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb2Nr
LXBhZ2UtcG9wdXAiKScpOworCitvcGVuUGlja2VyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdk
YXRlJyksIHRlc3QpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGRlYnVnKCdPcGVuIHRoZSBt
b250aCBwb3B1cC4nKTsKKyAgICBzaG91bGRCZUZhbHNlKCdwb3B1cFdpbmRvdy5nbG9iYWwucGlj
a2VyLm1vbnRoUG9wdXBWaWV3LmlzVmlzaWJsZScpOworICAgIGNsaWNrTW9udGhQb3B1cEJ1dHRv
bigpOworICAgIHNob3VsZEJlVHJ1ZSgncG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBv
cHVwVmlldy5pc1Zpc2libGUnKTsKKworICAgIGRlYnVnKCdDaGVjayB0aGF0IHRvdWNoIHN3aXBp
bmcgc2Nyb2xscyB0aGUgbGlzdCBpbiB0aGUgbW9udGggcG9wdXAuJyk7CisKKyAgICB3aW5kb3cu
aW50ZXJuYWxzLnNldHRpbmdzLnNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKHRydWUpOwor
ICAgIGNoZWNrWWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCk7CisKKyAgICBwb3B1cFdpbmRvdy5n
bG9iYWwucGlja2VyLm1vbnRoUG9wdXBWaWV3LnllYXJMaXN0Vmlldy5lbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGVzdEFmdGVyU3dpcGluZ0Rvd24sIGZhbHNlKTsKKyAgICBo
b3Zlck92ZXJNb250aEJ1dHRvbigyMDAwLCAwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24o
KTsKKyAgICBob3Zlck92ZXJNb250aEJ1dHRvbigyMDAwLCAxMSk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOworfQorCitmdW5jdGlvbiB0ZXN0QWZ0ZXJTd2lwaW5nRG93bigpIHsKKyAgICBz
aG91bGRCZVRydWUoJ2NoZWNrWWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCkgPiAwJyk7CisgICAg
cG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy55ZWFyTGlzdFZpZXcuZWxl
bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRlc3RBZnRlclN3aXBpbmdEb3du
LCBmYWxzZSk7CisgICAgc2V0VGltZW91dCh0ZXN0U3dpcGluZ1VwLCAwKTsKK30KKworZnVuY3Rp
b24gdGVzdFN3aXBpbmdVcCgpIHsKKyAgICBjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgp
OworICAgIHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVhckxpc3RW
aWV3LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0ZXN0QWZ0ZXJTd2lwaW5n
VXAsIGZhbHNlKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBob3Zlck92ZXJN
b250aFBvcHVwQnV0dG9uKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5j
dGlvbiB0ZXN0QWZ0ZXJTd2lwaW5nVXAoKSB7CisgICAgc2hvdWxkQmVUcnVlKCdjaGVja1llYXJM
aXN0Vmlld1Njcm9sbE9mZnNldCgpIDwgMCcpOworICAgIHBvcHVwV2luZG93Lmdsb2JhbC5waWNr
ZXIubW9udGhQb3B1cFZpZXcueWVhckxpc3RWaWV3LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5l
cigndG91Y2hlbmQnLCB0ZXN0QWZ0ZXJTd2lwaW5nVXAsIGZhbHNlKTsKKyAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldHRpbmdzLnNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKGZhbHNlKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9tb250aC1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVu
ZGFyLXBpY2tlci9tb250aC1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTZlZDkxN2ZlOTkzN2M0YzdkNDdkODMyNDQxM2U3MjhhZTRjYTRkNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2Fs
ZW5kYXItcGlja2VyL21vbnRoLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE3IEBACitUZXN0cyBpZiBtb250aCBwaWNrZXIgbW91c2Ugb3BlcmF0aW9ucyB3
b3JrIGFzIGV4cGVjdGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQ2hlY2sg
dGhhdCBwYWdlIHBvcHVwIGRvZXNuJ3QgZXhpc3QgYXQgZmlyc3QuCitQQVNTIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJtb2NrLXBhZ2UtcG9wdXAiKSBpcyBudWxsCitPcGVuIHRoZSBtb250aCBw
b3B1cC4KK1BBU1MgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5pc1Zp
c2libGUgaXMgZmFsc2UKK1BBU1MgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVw
Vmlldy5pc1Zpc2libGUgaXMgdHJ1ZQorQ2hlY2sgdGhhdCB0b3VjaCBzd2lwaW5nIHNjcm9sbHMg
dGhlIGxpc3QgaW4gdGhlIG1vbnRoIHBvcHVwLgorUEFTUyBjaGVja1llYXJMaXN0Vmlld1Njcm9s
bE9mZnNldCgpID4gMCBpcyB0cnVlCitQQVNTIGNoZWNrWWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0
KCkgPCAwIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvbW9udGgtcGlja2VyLXRvdWNoLW9wZXJhdGlvbnMuaHRt
bCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlj
a2VyL21vbnRoLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU2ZTRi
NDc5MmM5YTcwZmQ3MTM2YWMyNThiMGMzM2I5MGEzMmMxZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL21v
bnRoLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwKQEAgLTAsMCArMSw2MiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi8uLi9mYXN0L2Zvcm1zL3Jlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3BpY2tlci1j
b21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jYWxlbmRhci1waWNr
ZXItY29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxpbnB1dCB0eXBlPW1vbnRoIGlk
PW1vbnRoIHZhbHVlPSIyMDAwLTAxIj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgaWYg
bW9udGggcGlja2VyIG1vdXNlIG9wZXJhdGlvbnMgd29yayBhcyBleHBlY3RlZC4iKTsKKworZGVi
dWcoJ0NoZWNrIHRoYXQgcGFnZSBwb3B1cCBkb2VzblwndCBleGlzdCBhdCBmaXJzdC4nKTsKK3No
b3VsZEJlTnVsbCgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vY2stcGFnZS1wb3B1cCIpJyk7
CisKK29wZW5QaWNrZXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vbnRoJyksIHRlc3QpOwor
CitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGRlYnVnKCdPcGVuIHRoZSBtb250aCBwb3B1cC4nKTsK
KyAgICBzaG91bGRCZUZhbHNlKCdwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRoUG9wdXBW
aWV3LmlzVmlzaWJsZScpOworICAgIGNsaWNrTW9udGhQb3B1cEJ1dHRvbigpOworICAgIHNob3Vs
ZEJlVHJ1ZSgncG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5pc1Zpc2li
bGUnKTsKKworICAgIGRlYnVnKCdDaGVjayB0aGF0IHRvdWNoIHN3aXBpbmcgc2Nyb2xscyB0aGUg
bGlzdCBpbiB0aGUgbW9udGggcG9wdXAuJyk7CisKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRp
bmdzLnNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKHRydWUpOworICAgIGNoZWNrWWVhckxp
c3RWaWV3U2Nyb2xsT2Zmc2V0KCk7CisKKyAgICBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1v
bnRoUG9wdXBWaWV3LnllYXJMaXN0Vmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNo
ZW5kJywgdGVzdEFmdGVyU3dpcGluZ0Rvd24sIGZhbHNlKTsKKyAgICBob3Zlck92ZXJNb250aEJ1
dHRvbigyMDAwLCAwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBob3Zlck92
ZXJNb250aEJ1dHRvbigyMDAwLCAxMSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQor
CitmdW5jdGlvbiB0ZXN0QWZ0ZXJTd2lwaW5nRG93bigpIHsKKyAgICBzaG91bGRCZVRydWUoJ2No
ZWNrWWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCkgPiAwJyk7CisgICAgcG9wdXBXaW5kb3cuZ2xv
YmFsLnBpY2tlci5tb250aFBvcHVwVmlldy55ZWFyTGlzdFZpZXcuZWxlbWVudC5yZW1vdmVFdmVu
dExpc3RlbmVyKCd0b3VjaGVuZCcsIHRlc3RBZnRlclN3aXBpbmdEb3duLCBmYWxzZSk7CisgICAg
c2V0VGltZW91dCh0ZXN0U3dpcGluZ1VwLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdFN3aXBpbmdV
cCgpIHsKKyAgICBjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpOworICAgIHBvcHVwV2lu
ZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVhckxpc3RWaWV3LmVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0ZXN0QWZ0ZXJTd2lwaW5nVXAsIGZhbHNlKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBob3Zlck92ZXJNb250aFBvcHVwQnV0dG9u
KCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiB0ZXN0QWZ0ZXJT
d2lwaW5nVXAoKSB7CisgICAgc2hvdWxkQmVUcnVlKCdjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9m
ZnNldCgpIDwgMCcpOworICAgIHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZp
ZXcueWVhckxpc3RWaWV3LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0
ZXN0QWZ0ZXJTd2lwaW5nVXAsIGZhbHNlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdz
LnNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKGZhbHNlKTsKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFy
LXBpY2tlci9yZXNvdXJjZXMvY2FsZW5kYXItcGlja2VyLWNvbW1vbi5qcyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL3Jlc291cmNlcy9j
YWxlbmRhci1waWNrZXItY29tbW9uLmpzCmluZGV4IGI1YjA4MGZjYjFlY2U5N2JhMDk0MzBkYzli
MDdhNjliOTJhMjZiMjIuLjg2NDViNjIzNjEwZWM4MGNiNzkwN2NjYjQxMWU0MjgwNjcyNjQzYWMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2Fs
ZW5kYXItcGlja2VyL3Jlc291cmNlcy9jYWxlbmRhci1waWNrZXItY29tbW9uLmpzCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL3Jl
c291cmNlcy9jYWxlbmRhci1waWNrZXItY29tbW9uLmpzCkBAIC04MCw2ICs4MCw2MyBAQCBmdW5j
dGlvbiBjbGlja0RheUNlbGxBdChjb2x1bW4sIHJvdykgewogICAgIGV2ZW50U2VuZGVyLm1vdXNl
VXAoKTsKIH0KIAorZnVuY3Rpb24gaGlnaGxpZ2h0ZWRNb250aEJ1dHRvbigpIHsKKyAgICBza2lw
QW5pbWF0aW9uKCk7CisgICAgdmFyIHllYXIgPSBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1v
bnRoUG9wdXBWaWV3LnllYXJMaXN0Vmlldy5zZWxlY3RlZFJvdyArIDE7CisgICAgcmV0dXJuIEFy
cmF5LnByb3RvdHlwZS5tYXAuY2FsbChwb3B1cFdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9y
QWxsKCIubW9udGgtYnV0dG9uLmhpZ2hsaWdodGVkIiksIGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAg
ICAgICAgcmV0dXJuIG5ldyBwb3B1cFdpbmRvdy5Nb250aCh5ZWFyLCBOdW1iZXIoZWxlbWVudC5k
YXRhc2V0Lm1vbnRoKSkudG9TdHJpbmcoKTsKKyAgICB9KS5zb3J0KCkuam9pbigpOworfQorCitm
dW5jdGlvbiBob3Zlck92ZXJNb250aFBvcHVwQnV0dG9uKCkgeworICAgIHNraXBBbmltYXRpb24o
KTsKKyAgICB2YXIgYnV0dG9uRWxlbWVudCA9IHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIuY2Fs
ZW5kYXJIZWFkZXJWaWV3Lm1vbnRoUG9wdXBCdXR0b24uZWxlbWVudDsKKyAgICB2YXIgb2Zmc2V0
ID0gY3VtdWxhdGl2ZU9mZnNldChidXR0b25FbGVtZW50KTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhvZmZzZXRbMF0gKyBidXR0b25FbGVtZW50Lm9mZnNldFdpZHRoIC8gMiwgb2Zmc2V0
WzFdICsgYnV0dG9uRWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyKTsKK30KKworZnVuY3Rpb24gY2xp
Y2tNb250aFBvcHVwQnV0dG9uKCkgeworICAgIGhvdmVyT3Zlck1vbnRoUG9wdXBCdXR0b24oKTsK
KyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7
Cit9CisKK2Z1bmN0aW9uIGhvdmVyT3Zlck1vbnRoQnV0dG9uKHllYXIsIG1vbnRoKSB7CisgICAg
c2tpcEFuaW1hdGlvbigpOworICAgIHZhciByb3cgPSB5ZWFyIC0gMTsKKyAgICB2YXIgcm93Q2Vs
bCA9IHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVhckxpc3RWaWV3
LmNlbGxBdFJvdyhyb3cpOworCisgICAgdmFyIHJvd1Njcm9sbE9mZnNldCA9IHBvcHVwV2luZG93
Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVhckxpc3RWaWV3LnNjcm9sbE9mZnNldEZv
clJvdyhyb3cpOworICAgIHZhciBzY3JvbGxPZmZzZXQgPSBwb3B1cFdpbmRvdy5nbG9iYWwucGlj
a2VyLm1vbnRoUG9wdXBWaWV3LnllYXJMaXN0Vmlldy5zY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQo
KTsKKyAgICB2YXIgcm93T2Zmc2V0RnJvbVZpZXdwb3J0VG9wID0gcm93U2Nyb2xsT2Zmc2V0IC0g
c2Nyb2xsT2Zmc2V0OworCisgICAgdmFyIGJ1dHRvbiA9IHBvcHVwV2luZG93Lmdsb2JhbC5waWNr
ZXIubW9udGhQb3B1cFZpZXcueWVhckxpc3RWaWV3LmJ1dHRvbkZvck1vbnRoKG5ldyBwb3B1cFdp
bmRvdy5Nb250aCh5ZWFyLCBtb250aCkpOworICAgIHZhciBidXR0b25PZmZzZXQgPSBjdW11bGF0
aXZlT2Zmc2V0KGJ1dHRvbik7CisgICAgdmFyIHJvd0NlbGxPZmZzZXQgPSBjdW11bGF0aXZlT2Zm
c2V0KHJvd0NlbGwuZWxlbWVudCk7CisgICAgdmFyIGJ1dHRvbk9mZnNldFJlbGF0aXZlVG9Sb3dD
ZWxsID0gW2J1dHRvbk9mZnNldFswXSAtIHJvd0NlbGxPZmZzZXRbMF0sIGJ1dHRvbk9mZnNldFsx
XSAtIHJvd0NlbGxPZmZzZXRbMV1dOworCisgICAgdmFyIHNjcm9sbFZpZXdPZmZzZXQgPSBjdW11
bGF0aXZlT2Zmc2V0KHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVh
ckxpc3RWaWV3LnNjcm9sbFZpZXcuZWxlbWVudCk7CisgICAgdmFyIGJ1dHRvblggPSBzY3JvbGxW
aWV3T2Zmc2V0WzBdICsgYnV0dG9uT2Zmc2V0UmVsYXRpdmVUb1Jvd0NlbGxbMF0gKyBidXR0b24u
b2Zmc2V0V2lkdGggLyAyOworICAgIHZhciBidXR0b25ZID0gc2Nyb2xsVmlld09mZnNldFsxXSAr
IGJ1dHRvbk9mZnNldFJlbGF0aXZlVG9Sb3dDZWxsWzFdICsgcm93T2Zmc2V0RnJvbVZpZXdwb3J0
VG9wICsgYnV0dG9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oYnV0dG9uWCwgYnV0dG9uWSk7Cit9CisKK2Z1bmN0aW9uIGNsaWNrTW9udGhCdXR0b24oeWVh
ciwgbW9udGgpIHsKKyAgICBob3Zlck92ZXJNb250aEJ1dHRvbih5ZWFyLCBtb250aCk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQor
Cit2YXIgbGFzdFllYXJMaXN0Vmlld1Njcm9sbE9mZnNldCA9IE5hTjsKK2Z1bmN0aW9uIGNoZWNr
WWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCkgeworICAgIHNraXBBbmltYXRpb24oKTsKKyAgICB2
YXIgc2Nyb2xsT2Zmc2V0ID0gcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmll
dy55ZWFyTGlzdFZpZXcuc2Nyb2xsVmlldy5jb250ZW50T2Zmc2V0KCk7CisgICAgdmFyIGNoYW5n
ZSA9IGxhc3RZZWFyTGlzdFZpZXdTY3JvbGxPZmZzZXQgLSBzY3JvbGxPZmZzZXQ7CisgICAgbGFz
dFllYXJMaXN0Vmlld1Njcm9sbE9mZnNldCA9IHNjcm9sbE9mZnNldDsKKyAgICByZXR1cm4gY2hh
bmdlOworfQorCiBmdW5jdGlvbiBpc0NhbGVuZGFyVGFibGVTY3JvbGxpbmdXaXRoQW5pbWF0aW9u
KCkgewotICAgIHJldHVybiBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLmNhbGVuZGFyVGFibGVW
aWV3LnNjcm9sbFZpZXcuc2Nyb2xsQW5pbWF0b3IoKS5pc1J1bm5pbmcoKTsKKyAgICB2YXIgYW5p
bWF0b3IgPSBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLmNhbGVuZGFyVGFibGVWaWV3LnNjcm9s
bFZpZXcuc2Nyb2xsQW5pbWF0b3IoKTsKKyAgICByZXR1cm4gISFhbmltYXRvciAmJiBhbmltYXRv
ci5pc1J1bm5pbmcoKTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL3dlZWstcGlja2VyLXRvdWNoLW9wZXJhdGlv
bnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jt
cy9jYWxlbmRhci1waWNrZXIvd2Vlay1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTQ2ZjBjY2ZmMTVlNjc2MzBkMjk3OTI3ZTJmOGQ5ODI5YTUwMjhjZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9y
bXMvY2FsZW5kYXItcGlja2VyL3dlZWstcGlja2VyLXRvdWNoLW9wZXJhdGlvbnMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTcgQEAKK1Rlc3RzIGlmIGNhbGVuZGFyIHBpY2tlciBtb3VzZSBvcGVy
YXRpb25zIHdvcmsgYXMgZXhwZWN0ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitDaGVjayB0aGF0IHBhZ2UgcG9wdXAgZG9lc24ndCBleGlzdCBhdCBmaXJzdC4KK1BBU1MgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vY2stcGFnZS1wb3B1cCIpIGlzIG51bGwKK09wZW4gdGhl
IG1vbnRoIHBvcHVwLgorUEFTUyBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRoUG9wdXBW
aWV3LmlzVmlzaWJsZSBpcyBmYWxzZQorUEFTUyBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1v
bnRoUG9wdXBWaWV3LmlzVmlzaWJsZSBpcyB0cnVlCitDaGVjayB0aGF0IHRvdWNoIHN3aXBpbmcg
c2Nyb2xscyB0aGUgbGlzdCBpbiB0aGUgbW9udGggcG9wdXAuCitQQVNTIGNoZWNrWWVhckxpc3RW
aWV3U2Nyb2xsT2Zmc2V0KCkgPiAwIGlzIHRydWUKK1BBU1MgY2hlY2tZZWFyTGlzdFZpZXdTY3Jv
bGxPZmZzZXQoKSA8IDAgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci93ZWVrLXBpY2tlci10b3VjaC1vcGVyYXRp
b25zLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVu
ZGFyLXBpY2tlci93ZWVrLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTUzYjFkYzRhZTc3ZjliNGI0MWEwMjZiZmVhY2Q0YTZlM2YzYzViYgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlj
a2VyL3dlZWstcGlja2VyLXRvdWNoLW9wZXJhdGlvbnMuaHRtbApAQCAtMCwwICsxLDYyIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL2NvbW1vbi5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vZmFzdC9mb3Jtcy9yZXNvdXJjZXMvcGlj
a2VyLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NhbGVuZGFy
LXBpY2tlci1jb21tb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGlucHV0IHR5cGU9d2Vl
ayBpZD13ZWVrIHZhbHVlPSIyMDAwLVcwMSI+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Rz
IGlmIGNhbGVuZGFyIHBpY2tlciBtb3VzZSBvcGVyYXRpb25zIHdvcmsgYXMgZXhwZWN0ZWQuIik7
CisKK2RlYnVnKCdDaGVjayB0aGF0IHBhZ2UgcG9wdXAgZG9lc25cJ3QgZXhpc3QgYXQgZmlyc3Qu
Jyk7CitzaG91bGRCZU51bGwoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb2NrLXBhZ2UtcG9w
dXAiKScpOworCitvcGVuUGlja2VyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ZWVrJyksIHRl
c3QpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGRlYnVnKCdPcGVuIHRoZSBtb250aCBwb3B1
cC4nKTsKKyAgICBzaG91bGRCZUZhbHNlKCdwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRo
UG9wdXBWaWV3LmlzVmlzaWJsZScpOworICAgIGNsaWNrTW9udGhQb3B1cEJ1dHRvbigpOworICAg
IHNob3VsZEJlVHJ1ZSgncG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5p
c1Zpc2libGUnKTsKKworICAgIGRlYnVnKCdDaGVjayB0aGF0IHRvdWNoIHN3aXBpbmcgc2Nyb2xs
cyB0aGUgbGlzdCBpbiB0aGUgbW9udGggcG9wdXAuJyk7CisKKyAgICB3aW5kb3cuaW50ZXJuYWxz
LnNldHRpbmdzLnNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKHRydWUpOworICAgIGNoZWNr
WWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCk7CisKKyAgICBwb3B1cFdpbmRvdy5nbG9iYWwucGlj
a2VyLm1vbnRoUG9wdXBWaWV3LnllYXJMaXN0Vmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
J3RvdWNoZW5kJywgdGVzdEFmdGVyU3dpcGluZ0Rvd24sIGZhbHNlKTsKKyAgICBob3Zlck92ZXJN
b250aEJ1dHRvbigyMDAwLCAwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBo
b3Zlck92ZXJNb250aEJ1dHRvbigyMDAwLCAxMSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgp
OworfQorCitmdW5jdGlvbiB0ZXN0QWZ0ZXJTd2lwaW5nRG93bigpIHsKKyAgICBzaG91bGRCZVRy
dWUoJ2NoZWNrWWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCkgPiAwJyk7CisgICAgcG9wdXBXaW5k
b3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy55ZWFyTGlzdFZpZXcuZWxlbWVudC5yZW1v
dmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRlc3RBZnRlclN3aXBpbmdEb3duLCBmYWxzZSk7
CisgICAgc2V0VGltZW91dCh0ZXN0U3dpcGluZ1VwLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdFN3
aXBpbmdVcCgpIHsKKyAgICBjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpOworICAgIHBv
cHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVhckxpc3RWaWV3LmVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0ZXN0QWZ0ZXJTd2lwaW5nVXAsIGZhbHNl
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBob3Zlck92ZXJNb250aFBvcHVw
QnV0dG9uKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiB0ZXN0
QWZ0ZXJTd2lwaW5nVXAoKSB7CisgICAgc2hvdWxkQmVUcnVlKCdjaGVja1llYXJMaXN0Vmlld1Nj
cm9sbE9mZnNldCgpIDwgMCcpOworICAgIHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQ
b3B1cFZpZXcueWVhckxpc3RWaWV3LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hl
bmQnLCB0ZXN0QWZ0ZXJTd2lwaW5nVXAsIGZhbHNlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNl
dHRpbmdzLnNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKGZhbHNlKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193483</attachid>
            <date>2013-03-17 20:56:55 -0700</date>
            <delta_ts>2013-03-17 21:06:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112256-20130318125246.patch</filename>
            <type>text/plain</type>
            <size>38577</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdkODdlMDMwMTA5Njg0
ODU5MGY1ODllY2ZkMmMxZGEzZmM3ZDIxOS4uNTM3YWZhODBlMmExNTFhZjhiOGE2ODU1YTY3MzFk
NGVhMzRhYjgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEzLTAzLTE0ICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCB0b3VjaCBzdXBw
b3J0IHRvIHRoZSBjYWxlbmRhciBwaWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMjI1NgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFt
dXJhLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jcmVhc2VzIHRoZSBoaXQgdGFyZ2V0IHNpemVz
IGZvciB0b3VjaCBhbmQgYWRkcyB0b3VjaCBldmVudAorICAgICAgICBzdXBwb3J0IHRvIHRoZSBz
Y3JvbGwgdmlldywgc2Nyb2xsIGJhciBhbmQgbmF2aWdhdGlvbiBidXR0b24uCisKKyAgICAgICAg
VGVzdHM6IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVu
ZGFyLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3Jt
L2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL21vbnRoLXBpY2tlci10b3VjaC1v
cGVyYXRpb25zLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9y
bXMvY2FsZW5kYXItcGlja2VyL3dlZWstcGlja2VyLXRvdWNoLW9wZXJhdGlvbnMuaHRtbAorCisg
ICAgICAgICogUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanM6CisgICAgICAg
IChoYXNJbmFjY3VyYXRlUG9pbnRpbmdEZXZpY2UpOgorICAgICAgICAoQW5pbWF0b3IpOiBTdXBl
ciBjbGFzcyBmb3IgVHJhbnNpdGlvbkFuaW1hdG9yIGFuZCBGbGluZ0dlc3R1cmVBbmltYXRvci4K
KyAgICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5zdGFydCk6CisgICAgICAgIChBbmltYXRvci5w
cm90b3R5cGUuc3RvcCk6CisgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUub25BbmltYXRpb25G
cmFtZSk6CisgICAgICAgIChUcmFuc2l0aW9uQW5pbWF0b3IpOiBTYW1lIGFzIHRoZSBvbGQgQW5p
bWF0b3IuIFRyYW5zaXRpb24gZnJvbSBvbmUgdmFsdWUgdG8gYW5vdGhlci4KKyAgICAgICAgKFRy
YW5zaXRpb25BbmltYXRvci5wcm90b3R5cGUuc2V0RnJvbSk6CisgICAgICAgIChUcmFuc2l0aW9u
QW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0KToKKyAgICAgICAgKFRyYW5zaXRpb25BbmltYXRvci5w
cm90b3R5cGUuc3RvcCk6CisgICAgICAgIChUcmFuc2l0aW9uQW5pbWF0b3IucHJvdG90eXBlLnNl
dFRvKToKKyAgICAgICAgKFRyYW5zaXRpb25BbmltYXRvci5wcm90b3R5cGUub25BbmltYXRpb25G
cmFtZSk6CisgICAgICAgIChGbGluZ0dlc3R1cmVBbmltYXRvcik6QW5pbWF0ZXMgdGhlIGZsaW5n
IHNjcm9sbC4gCisgICAgICAgIChGbGluZ0dlc3R1cmVBbmltYXRvci5wcm90b3R5cGUuX3ZhbHVl
QXRUaW1lKTogUmV0dXJucyB0aGUgdmFsdWUgYXQgdGhlIGdpdmVuIHRpbWUuCisgICAgICAgIChG
bGluZ0dlc3R1cmVBbmltYXRvci5wcm90b3R5cGUuX3ZlbG9jaXR5QXRUaW1lKTogUmV0dXJucyB0
aGUgdmFsdWUgY2hhbmdlIHZlbG9jaXR5IGF0IHRoZSBnaXZlbiB0aW1lLgorICAgICAgICAoRmxp
bmdHZXN0dXJlQW5pbWF0b3IucHJvdG90eXBlLl90aW1lQXRWZWxvY2l0eSk6IFJldHVybnMgdGhl
IHRpbWUgd2hlbiB0aGUgdmFsdWUgaXMgY2hhbmdpbmcgYXQgdGhlIGdpdmVuIHZlbG9jaXR5Lgor
ICAgICAgICAoRmxpbmdHZXN0dXJlQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0KToKKyAgICAgICAg
KEZsaW5nR2VzdHVyZUFuaW1hdG9yLnByb3RvdHlwZS5vbkFuaW1hdGlvbkZyYW1lKToKKyAgICAg
ICAgKFNjcm9sbFZpZXcpOiBBZGRlZCBzdXBwb3J0IGZvciB0b3VjaCBnZXN0dXJlIHNjcm9sbGlu
Zy4KKyAgICAgICAgKFNjcm9sbFZpZXcucHJvdG90eXBlLm9uVG91Y2hTdGFydCk6CisgICAgICAg
IChTY3JvbGxWaWV3LnByb3RvdHlwZS5vbldpbmRvd1RvdWNoTW92ZSk6CisgICAgICAgIChTY3Jv
bGxWaWV3LnByb3RvdHlwZS5vbldpbmRvd1RvdWNoRW5kKToKKyAgICAgICAgKFNjcm9sbFZpZXcu
cHJvdG90eXBlLm9uRmxpbmdHZXN0dXJlQW5pbWF0b3JTdGVwKToKKyAgICAgICAgKFNjcm9sbFZp
ZXcucHJvdG90eXBlLnNjcm9sbFRvKToKKyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIpOiBBZGRl
ZCBzdXBwb3J0IGZvciB0b3VjaC4KKyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBl
Lm9uVG91Y2hTdGFydCk6CisgICAgICAgIChTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5vbldp
bmRvd1RvdWNoTW92ZSk6CisgICAgICAgIChTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5vbldp
bmRvd1RvdWNoRW5kKToKKyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLl9zZXRU
aHVtYlBvc2l0aW9uRnJvbUV2ZW50UG9zaXRpb24pOiBBY2NlcHQgTW91c2VFdmVudCBvciBUb3Vj
aC4KKyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLm9uTW91c2VEb3duKToKKyAg
ICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLm9uV2luZG93TW91c2VNb3ZlKToKKyAg
ICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLm9uV2luZG93TW91c2VVcCk6CisgICAg
ICAgIChZZWFyTGlzdENlbGwpOgorICAgICAgICAoWWVhckxpc3RWaWV3KToKKyAgICAgICAgKFll
YXJMaXN0Vmlldy5wcm90b3R5cGUub25Ub3VjaFN0YXJ0KToKKyAgICAgICAgKFllYXJMaXN0Vmll
dy5wcm90b3R5cGUuX2FuaW1hdGVSb3cpOgorICAgICAgICAoQ2FsZW5kYXJOYXZpZ2F0aW9uQnV0
dG9uKTogQWRkIHRvdWNoIHN1cHBvcnQgZm9yIGxvbmcgcHJlc3MuCisgICAgICAgIChDYWxlbmRh
ck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uVG91Y2hTdGFydCk6CisgICAgICAgIChDYWxl
bmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uV2luZG93VG91Y2hFbmQpOgorICAgICAg
ICAoQ2FsZW5kYXJOYXZpZ2F0aW9uQnV0dG9uLnByb3RvdHlwZS5vbk1vdXNlRG93bik6CisgICAg
ICAgIChDYWxlbmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uV2luZG93TW91c2VVcCk6
CisgICAgICAgIChDYWxlbmRhclRhYmxlVmlldyk6IERpc2FibGUgdG91Y2ggZ2VzdHVyZSBzY3Jv
bGxpbmcgaW4gdGhlIGNhbGVuZGFyIHRhYmxlLgorCiAyMDEzLTAzLTE3ICBBbGV4ZXkgUHJvc2t1
cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIEVuY2Fwc3VsYXRlIFBsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsIGEgbGl0dGxlIGJldHRlciB5ZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzIGIvU291cmNlL1dl
YkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMKaW5kZXggNjJlMzhj
YTY3MjBjZTgzZDU1M2NhMmJiZTEwNjg1OTNhMzUxOTgzNS4uNWQxYTExNzk1NWIzNDYyZWJmYTlk
Y2NlZWNlZWIxMjA2MDY1OTk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2Vz
L3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvUmVzb3Vy
Y2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMKQEAgLTY4LDYgKzY4LDEzIEBAIHZhciBn
bG9iYWwgPSB7CiAvLyBVdGlsaXR5IGZ1bmN0aW9ucwogCiAvKioKKyAqIEByZXR1cm4geyFib29s
fQorICovCitmdW5jdGlvbiBoYXNJbmFjY3VyYXRlUG9pbnRpbmdEZXZpY2UoKSB7CisgICAgcmV0
dXJuIG1hdGNoTWVkaWEoIihwb2ludGVyOiBjb2Fyc2UpIikubWF0Y2hlczsKK30KKworLyoqCiAg
KiBAcmV0dXJuIHshc3RyaW5nfSBsb3dlcmNhc2UgbG9jYWxlIG5hbWUuIGUuZy4gImVuLXVzIgog
ICovCiBmdW5jdGlvbiBnZXRMb2NhbGUoKSB7CkBAIC0xMDAzLDYgKzEwMTAsNzEgQEAgZnVuY3Rp
b24gQW5pbWF0b3IoKSB7CiAgICAgdGhpcy5pZCA9IEFuaW1hdG9yLl9sYXN0SWQrKzsKICAgICAv
KioKICAgICAgKiBAdHlwZSB7IW51bWJlcn0KKyAgICAgKi8KKyAgICB0aGlzLmR1cmF0aW9uID0g
MTAwOworICAgIC8qKgorICAgICAqIEB0eXBlIHs/ZnVuY3Rpb259CisgICAgICovCisgICAgdGhp
cy5zdGVwID0gbnVsbDsKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7IWJvb2xlYW59CisgICAgICog
QHByb3RlY3RlZAorICAgICAqLworICAgIHRoaXMuX2lzUnVubmluZyA9IGZhbHNlOworICAgIC8q
KgorICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAgICAqLworICAgIHRoaXMuY3VycmVudFZhbHVl
ID0gMDsKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7IW51bWJlcn0KKyAgICAgKiBAcHJvdGVjdGVk
CisgICAgICovCisgICAgdGhpcy5fbGFzdFN0ZXBUaW1lID0gMDsKK30KKworQW5pbWF0b3IucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShFdmVudEVtaXR0ZXIucHJvdG90eXBlKTsKKworQW5pbWF0
b3IuX2xhc3RJZCA9IDA7CisKK0FuaW1hdG9yLkV2ZW50VHlwZURpZEFuaW1hdGlvblN0b3AgPSAi
ZGlkQW5pbWF0aW9uU3RvcCI7CisKKy8qKgorICogQHJldHVybiB7IWJvb2xlYW59CisgKi8KK0Fu
aW1hdG9yLnByb3RvdHlwZS5pc1J1bm5pbmcgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhp
cy5faXNSdW5uaW5nOworfTsKKworQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24o
KSB7CisgICAgdGhpcy5fbGFzdFN0ZXBUaW1lID0gRGF0ZS5ub3coKTsKKyAgICB0aGlzLl9pc1J1
bm5pbmcgPSB0cnVlOworICAgIEFuaW1hdGlvbk1hbmFnZXIuc2hhcmVkLmFkZCh0aGlzKTsKK307
CisKK0FuaW1hdG9yLnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKCF0aGlz
Ll9pc1J1bm5pbmcpCisgICAgICAgIHJldHVybjsKKyAgICB0aGlzLl9pc1J1bm5pbmcgPSBmYWxz
ZTsKKyAgICBBbmltYXRpb25NYW5hZ2VyLnNoYXJlZC5yZW1vdmUodGhpcyk7CisgICAgdGhpcy5k
aXNwYXRjaEV2ZW50KEFuaW1hdG9yLkV2ZW50VHlwZURpZEFuaW1hdGlvblN0b3AsIHRoaXMpOwor
fTsKKworLyoqCisgKiBAcGFyYW0geyFudW1iZXJ9IG5vdworICovCitBbmltYXRvci5wcm90b3R5
cGUub25BbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKG5vdykgeworICAgIHRoaXMuX2xhc3RTdGVw
VGltZSA9IG5vdzsKKyAgICB0aGlzLnN0ZXAodGhpcyk7Cit9OworCisvKioKKyAqIEBjb25zdHJ1
Y3RvcgorICogQGV4dGVuZHMgQW5pbWF0b3IKKyAqLworZnVuY3Rpb24gVHJhbnNpdGlvbkFuaW1h
dG9yKCkgeworICAgIEFuaW1hdG9yLmNhbGwodGhpcyk7CisgICAgLyoqCisgICAgICogQHR5cGUg
eyFudW1iZXJ9CiAgICAgICogQHByb3RlY3RlZAogICAgICAqLwogICAgIHRoaXMuX2Zyb20gPSAw
OwpAQCAtMTAxOSw5MSArMTA5MSwxNDQgQEAgZnVuY3Rpb24gQW5pbWF0b3IoKSB7CiAgICAgLyoq
CiAgICAgICogQHR5cGUgeyFudW1iZXJ9CiAgICAgICovCi0gICAgdGhpcy5kdXJhdGlvbiA9IDEw
MDsKKyAgICB0aGlzLnByb2dyZXNzID0gMC4wOwogICAgIC8qKgotICAgICAqIEB0eXBlIHs/ZnVu
Y3Rpb259CisgICAgICogQHR5cGUgeyFmdW5jdGlvbn0KICAgICAgKi8KLSAgICB0aGlzLnN0ZXAg
PSBudWxsOworICAgIHRoaXMudGltaW5nRnVuY3Rpb24gPSBBbmltYXRpb25UaW1pbmdGdW5jdGlv
bi5MaW5lYXI7Cit9CisKK1RyYW5zaXRpb25BbmltYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3Jl
YXRlKEFuaW1hdG9yLnByb3RvdHlwZSk7CisKKy8qKgorICogQHBhcmFtIHshbnVtYmVyfSB2YWx1
ZQorICovCitUcmFuc2l0aW9uQW5pbWF0b3IucHJvdG90eXBlLnNldEZyb20gPSBmdW5jdGlvbih2
YWx1ZSkgeworICAgIHRoaXMuX2Zyb20gPSB2YWx1ZTsKKyAgICB0aGlzLl9kZWx0YSA9IHRoaXMu
X3RvIC0gdGhpcy5fZnJvbTsKK307CisKK1RyYW5zaXRpb25BbmltYXRvci5wcm90b3R5cGUuc3Rh
cnQgPSBmdW5jdGlvbigpIHsKKyAgICBjb25zb2xlLmFzc2VydChpc0Zpbml0ZSh0aGlzLmR1cmF0
aW9uKSk7CisgICAgdGhpcy5wcm9ncmVzcyA9IDAuMDsKKyAgICB0aGlzLmN1cnJlbnRWYWx1ZSA9
IHRoaXMuX2Zyb207CisgICAgQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0LmNhbGwodGhpcyk7Cit9
OworCisvKioKKyAqIEBwYXJhbSB7IW51bWJlcn0gdmFsdWUKKyAqLworVHJhbnNpdGlvbkFuaW1h
dG9yLnByb3RvdHlwZS5zZXRUbyA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgdGhpcy5fdG8gPSB2
YWx1ZTsKKyAgICB0aGlzLl9kZWx0YSA9IHRoaXMuX3RvIC0gdGhpcy5fZnJvbTsKK307CisKKy8q
KgorICogQHBhcmFtIHshbnVtYmVyfSBub3cKKyAqLworVHJhbnNpdGlvbkFuaW1hdG9yLnByb3Rv
dHlwZS5vbkFuaW1hdGlvbkZyYW1lID0gZnVuY3Rpb24obm93KSB7CisgICAgdGhpcy5wcm9ncmVz
cyArPSAobm93IC0gdGhpcy5fbGFzdFN0ZXBUaW1lKSAvIHRoaXMuZHVyYXRpb247CisgICAgdGhp
cy5wcm9ncmVzcyA9IE1hdGgubWluKDEuMCwgdGhpcy5wcm9ncmVzcyk7CisgICAgdGhpcy5fbGFz
dFN0ZXBUaW1lID0gbm93OworICAgIHRoaXMuY3VycmVudFZhbHVlID0gdGhpcy50aW1pbmdGdW5j
dGlvbih0aGlzLnByb2dyZXNzKSAqIHRoaXMuX2RlbHRhICsgdGhpcy5fZnJvbTsKKyAgICB0aGlz
LnN0ZXAodGhpcyk7CisgICAgaWYgKHRoaXMucHJvZ3Jlc3MgPT09IDEuMCkgeworICAgICAgICB0
aGlzLnN0b3AoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK307CisKKy8qKgorICogQGNvbnN0
cnVjdG9yCisgKiBAZXh0ZW5kcyBBbmltYXRvcgorICogQHBhcmFtIHshbnVtYmVyfSBpbml0aWFs
VmVsb2NpdHkKKyAqIEBwYXJhbSB7IW51bWJlcn0gaW5pdGlhbFZhbHVlCisgKi8KK2Z1bmN0aW9u
IEZsaW5nR2VzdHVyZUFuaW1hdG9yKGluaXRpYWxWZWxvY2l0eSwgaW5pdGlhbFZhbHVlKSB7Cisg
ICAgQW5pbWF0b3IuY2FsbCh0aGlzKTsKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7IW51bWJlcn0K
KyAgICAgKi8KKyAgICB0aGlzLmluaXRpYWxWZWxvY2l0eSA9IGluaXRpYWxWZWxvY2l0eTsKKyAg
ICAvKioKKyAgICAgKiBAdHlwZSB7IW51bWJlcn0KKyAgICAgKi8KKyAgICB0aGlzLmluaXRpYWxW
YWx1ZSA9IGluaXRpYWxWYWx1ZTsKICAgICAvKioKICAgICAgKiBAdHlwZSB7IW51bWJlcn0KICAg
ICAgKiBAcHJvdGVjdGVkCiAgICAgICovCi0gICAgdGhpcy5fbGFzdFN0ZXBUaW1lID0gMDsKKyAg
ICB0aGlzLl9lbGFwc2VkVGltZSA9IDA7CisgICAgdmFyIHN0YXJ0VmVsb2NpdHkgPSBNYXRoLmFi
cyh0aGlzLmluaXRpYWxWZWxvY2l0eSk7CisgICAgaWYgKHN0YXJ0VmVsb2NpdHkgPiB0aGlzLl92
ZWxvY2l0eUF0VGltZSgwKSkKKyAgICAgICAgc3RhcnRWZWxvY2l0eSA9IHRoaXMuX3ZlbG9jaXR5
QXRUaW1lKDApOworICAgIGlmIChzdGFydFZlbG9jaXR5IDwgMCkKKyAgICAgICAgc3RhcnRWZWxv
Y2l0eSA9IDA7CiAgICAgLyoqCiAgICAgICogQHR5cGUgeyFudW1iZXJ9CisgICAgICogQHByb3Rl
Y3RlZAogICAgICAqLwotICAgIHRoaXMucHJvZ3Jlc3MgPSAwLjA7CisgICAgdGhpcy5fdGltZU9m
ZnNldCA9IHRoaXMuX3RpbWVBdFZlbG9jaXR5KHN0YXJ0VmVsb2NpdHkpOwogICAgIC8qKgogICAg
ICAqIEB0eXBlIHshbnVtYmVyfQogICAgICAqIEBwcm90ZWN0ZWQKICAgICAgKi8KLSAgICB0aGlz
Ll9pc1J1bm5pbmcgPSBmYWxzZTsKKyAgICB0aGlzLl9wb3NpdGlvbk9mZnNldCA9IHRoaXMuX3Zh
bHVlQXRUaW1lKHRoaXMuX3RpbWVPZmZzZXQpOwogICAgIC8qKgotICAgICAqIEB0eXBlIHshZnVu
Y3Rpb259CisgICAgICogQHR5cGUgeyFudW1iZXJ9CiAgICAgICovCi0gICAgdGhpcy50aW1pbmdG
dW5jdGlvbiA9IEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLkxpbmVhcjsKKyAgICB0aGlzLmR1cmF0
aW9uID0gdGhpcy5fdGltZUF0VmVsb2NpdHkoMCk7CiB9CiAKLUFuaW1hdG9yLnByb3RvdHlwZSA9
IE9iamVjdC5jcmVhdGUoRXZlbnRFbWl0dGVyLnByb3RvdHlwZSk7CitGbGluZ0dlc3R1cmVBbmlt
YXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEFuaW1hdG9yLnByb3RvdHlwZSk7CiAKLUFu
aW1hdG9yLl9sYXN0SWQgPSAwOwotCi1BbmltYXRvci5FdmVudFR5cGVEaWRBbmltYXRpb25TdG9w
ID0gImRpZEFuaW1hdGlvblN0b3AiOworLy8gVmVsb2NpdHkgaXMgc3ViamVjdCB0byBleHBvbmVu
dGlhbCBkZWNheS4gVGhlc2UgcGFyYW1ldGVycyBhcmUgY29lZmZpY2llbnRzCisvLyB0aGF0IGRl
dGVybWluZSB0aGUgY3VydmUuCitGbGluZ0dlc3R1cmVBbmltYXRvci5fUDAgPSAtNTcwNy42MjsK
K0ZsaW5nR2VzdHVyZUFuaW1hdG9yLl9QMSA9IDAuMTcyOworRmxpbmdHZXN0dXJlQW5pbWF0b3Iu
X1AyID0gMC4wMDM3OwogCiAvKioKLSAqIEByZXR1cm4geyFib29sZWFufQorICogQHBhcmFtIHsh
bnVtYmVyfSB0CiAgKi8KLUFuaW1hdG9yLnByb3RvdHlwZS5pc1J1bm5pbmcgPSBmdW5jdGlvbigp
IHsKLSAgICByZXR1cm4gdGhpcy5faXNSdW5uaW5nOworRmxpbmdHZXN0dXJlQW5pbWF0b3IucHJv
dG90eXBlLl92YWx1ZUF0VGltZSA9IGZ1bmN0aW9uKHQpIHsKKyAgICByZXR1cm4gRmxpbmdHZXN0
dXJlQW5pbWF0b3IuX1AwICogTWF0aC5leHAoLUZsaW5nR2VzdHVyZUFuaW1hdG9yLl9QMiAqIHQp
IC0gRmxpbmdHZXN0dXJlQW5pbWF0b3IuX1AxICogdCAtIEZsaW5nR2VzdHVyZUFuaW1hdG9yLl9Q
MDsKIH07CiAKIC8qKgotICogQHBhcmFtIHshbnVtYmVyfSB2YWx1ZQorICogQHBhcmFtIHshbnVt
YmVyfSB0CiAgKi8KLUFuaW1hdG9yLnByb3RvdHlwZS5zZXRGcm9tID0gZnVuY3Rpb24odmFsdWUp
IHsKLSAgICB0aGlzLl9mcm9tID0gdmFsdWU7Ci0gICAgdGhpcy5fZGVsdGEgPSB0aGlzLl90byAt
IHRoaXMuX2Zyb207CitGbGluZ0dlc3R1cmVBbmltYXRvci5wcm90b3R5cGUuX3ZlbG9jaXR5QXRU
aW1lID0gZnVuY3Rpb24odCkgeworICAgIHJldHVybiAtRmxpbmdHZXN0dXJlQW5pbWF0b3IuX1Aw
ICogRmxpbmdHZXN0dXJlQW5pbWF0b3IuX1AyICogTWF0aC5leHAoLUZsaW5nR2VzdHVyZUFuaW1h
dG9yLl9QMiAqIHQpIC0gRmxpbmdHZXN0dXJlQW5pbWF0b3IuX1AxOwogfTsKIAogLyoqCi0gKiBA
cGFyYW0geyFudW1iZXJ9IHZhbHVlCisgKiBAcGFyYW0geyFudW1iZXJ9IHYKICAqLwotQW5pbWF0
b3IucHJvdG90eXBlLnNldFRvID0gZnVuY3Rpb24odmFsdWUpIHsKLSAgICB0aGlzLl90byA9IHZh
bHVlOwotICAgIHRoaXMuX2RlbHRhID0gdGhpcy5fdG8gLSB0aGlzLl9mcm9tOworRmxpbmdHZXN0
dXJlQW5pbWF0b3IucHJvdG90eXBlLl90aW1lQXRWZWxvY2l0eSA9IGZ1bmN0aW9uKHYpIHsKKyAg
ICByZXR1cm4gLU1hdGgubG9nKCh2ICsgRmxpbmdHZXN0dXJlQW5pbWF0b3IuX1AxKSAvICgtRmxp
bmdHZXN0dXJlQW5pbWF0b3IuX1AwICogRmxpbmdHZXN0dXJlQW5pbWF0b3IuX1AyKSkgLyBGbGlu
Z0dlc3R1cmVBbmltYXRvci5fUDI7CiB9OwogCi1BbmltYXRvci5wcm90b3R5cGUuc3RhcnQgPSBm
dW5jdGlvbigpIHsKK0ZsaW5nR2VzdHVyZUFuaW1hdG9yLnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0
aW9uKCkgewogICAgIHRoaXMuX2xhc3RTdGVwVGltZSA9IERhdGUubm93KCk7Ci0gICAgdGhpcy5w
cm9ncmVzcyA9IDAuMDsKLSAgICB0aGlzLl9pc1J1bm5pbmcgPSB0cnVlOwotICAgIHRoaXMuY3Vy
cmVudFZhbHVlID0gdGhpcy5fZnJvbTsKLSAgICBBbmltYXRpb25NYW5hZ2VyLnNoYXJlZC5hZGQo
dGhpcyk7Ci19OwotCi1BbmltYXRvci5wcm90b3R5cGUuc3RvcCA9IGZ1bmN0aW9uKCkgewotICAg
IGlmICghdGhpcy5faXNSdW5uaW5nKQotICAgICAgICByZXR1cm47Ci0gICAgdGhpcy5faXNSdW5u
aW5nID0gZmFsc2U7Ci0gICAgdGhpcy5jdXJyZW50VmFsdWUgPSB0aGlzLl90bzsKLSAgICB0aGlz
LnN0ZXAodGhpcyk7Ci0gICAgQW5pbWF0aW9uTWFuYWdlci5zaGFyZWQucmVtb3ZlKHRoaXMpOwot
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudChBbmltYXRvci5FdmVudFR5cGVEaWRBbmltYXRpb25TdG9w
LCB0aGlzKTsKKyAgICBBbmltYXRvci5wcm90b3R5cGUuc3RhcnQuY2FsbCh0aGlzKTsKIH07CiAK
IC8qKgogICogQHBhcmFtIHshbnVtYmVyfSBub3cKICAqLwotQW5pbWF0b3IucHJvdG90eXBlLm9u
QW5pbWF0aW9uRnJhbWUgPSBmdW5jdGlvbihub3cpIHsKLSAgICB0aGlzLnByb2dyZXNzICs9IChu
b3cgLSB0aGlzLl9sYXN0U3RlcFRpbWUpIC8gdGhpcy5kdXJhdGlvbjsKLSAgICBpZiAodGhpcy5w
cm9ncmVzcyA+PSAxLjApIHsKLSAgICAgICAgdGhpcy5wcm9ncmVzcyA9IDEuMDsKK0ZsaW5nR2Vz
dHVyZUFuaW1hdG9yLnByb3RvdHlwZS5vbkFuaW1hdGlvbkZyYW1lID0gZnVuY3Rpb24obm93KSB7
CisgICAgdGhpcy5fZWxhcHNlZFRpbWUgKz0gbm93IC0gdGhpcy5fbGFzdFN0ZXBUaW1lOworICAg
IHRoaXMuX2xhc3RTdGVwVGltZSA9IG5vdzsKKyAgICBpZiAodGhpcy5fZWxhcHNlZFRpbWUgKyB0
aGlzLl90aW1lT2Zmc2V0ID49IHRoaXMuZHVyYXRpb24pIHsKICAgICAgICAgdGhpcy5zdG9wKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgdGhpcy5jdXJyZW50VmFsdWUgPSB0aGlzLnRp
bWluZ0Z1bmN0aW9uKHRoaXMucHJvZ3Jlc3MpICogdGhpcy5fZGVsdGEgKyB0aGlzLl9mcm9tOwor
ICAgIHZhciBwb3NpdGlvbiA9IHRoaXMuX3ZhbHVlQXRUaW1lKHRoaXMuX2VsYXBzZWRUaW1lICsg
dGhpcy5fdGltZU9mZnNldCkgLSB0aGlzLl9wb3NpdGlvbk9mZnNldDsKKyAgICBpZiAodGhpcy5p
bml0aWFsVmVsb2NpdHkgPCAwKQorICAgICAgICBwb3NpdGlvbiA9IC1wb3NpdGlvbjsKKyAgICB0
aGlzLmN1cnJlbnRWYWx1ZSA9IHBvc2l0aW9uICsgdGhpcy5pbml0aWFsVmFsdWU7CiAgICAgdGhp
cy5zdGVwKHRoaXMpOwotICAgIHRoaXMuX2xhc3RTdGVwVGltZSA9IG5vdzsKIH07CiAKIC8qKgpA
QCAtMTIwOSwxNSArMTMzNCwyNiBAQCBmdW5jdGlvbiBTY3JvbGxWaWV3KCkgewogICAgICAqIEB0
eXBlIHtBbmltYXRvcn0KICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICovCi0gICAgdGhpcy5fc2Ny
b2xsQW5pbWF0b3IgPSBuZXcgQW5pbWF0b3IoKTsKLSAgICB0aGlzLl9zY3JvbGxBbmltYXRvci5z
dGVwID0gdGhpcy5vblNjcm9sbEFuaW1hdG9yU3RlcDsKLQorICAgIHRoaXMuX3Njcm9sbEFuaW1h
dG9yID0gbnVsbDsKICAgICAvKioKICAgICAgKiBAdHlwZSB7P09iamVjdH0KICAgICAgKi8KICAg
ICB0aGlzLmRlbGVnYXRlID0gbnVsbDsKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7IW51bWJlcn0K
KyAgICAgKi8KKyAgICB0aGlzLl9sYXN0VG91Y2hQb3NpdGlvbiA9IDA7CisgICAgLyoqCisgICAg
ICogQHR5cGUgeyFudW1iZXJ9CisgICAgICovCisgICAgdGhpcy5fbGFzdFRvdWNoVmVsb2NpdHkg
PSAwOworICAgIC8qKgorICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAgICAqLworICAgIHRoaXMu
X2xhc3RUb3VjaFRpbWVTdGFtcCA9IDA7CiAKICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2V3aGVlbCIsIHRoaXMub25Nb3VzZVdoZWVsLCBmYWxzZSk7CisgICAgdGhpcy5l
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCB0aGlzLm9uVG91Y2hTdGFydCwg
ZmFsc2UpOwogCiAgICAgLyoqCiAgICAgICogVGhlIGNvbnRlbnQgb2Zmc2V0IGlzIHBhcnRpdGlv
bmVkIHNvIHRoZSBpdCBjYW4gZ28gYmV5b25kIHRoZSBDU1MgbGltaXQKQEAgLTEyMzUsNiArMTM3
MSw1NSBAQCBTY3JvbGxWaWV3LkNsYXNzTmFtZVNjcm9sbFZpZXcgPSAic2Nyb2xsLXZpZXciOwog
U2Nyb2xsVmlldy5DbGFzc05hbWVTY3JvbGxWaWV3Q29udGVudCA9ICJzY3JvbGwtdmlldy1jb250
ZW50IjsKIAogLyoqCisgKiBAcGFyYW0geyFFdmVudH0gZXZlbnQKKyAqLworU2Nyb2xsVmlldy5w
cm90b3R5cGUub25Ub3VjaFN0YXJ0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB2YXIgdG91Y2gg
PSBldmVudC50b3VjaGVzWzBdOworICAgIHRoaXMuX2xhc3RUb3VjaFBvc2l0aW9uID0gdG91Y2gu
Y2xpZW50WTsKKyAgICB0aGlzLl9sYXN0VG91Y2hWZWxvY2l0eSA9IDA7CisgICAgdGhpcy5fbGFz
dFRvdWNoVGltZVN0YW1wID0gZXZlbnQudGltZVN0YW1wOworICAgIGlmICh0aGlzLl9zY3JvbGxB
bmltYXRvcikKKyAgICAgICAgdGhpcy5fc2Nyb2xsQW5pbWF0b3Iuc3RvcCgpOworICAgIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCB0aGlzLm9uV2luZG93VG91Y2hNb3ZlLCBm
YWxzZSk7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgdGhpcy5vbldp
bmRvd1RvdWNoRW5kLCBmYWxzZSk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7IUV2ZW50fSBldmVu
dAorICovCitTY3JvbGxWaWV3LnByb3RvdHlwZS5vbldpbmRvd1RvdWNoTW92ZSA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgdmFyIHRvdWNoID0gZXZlbnQudG91Y2hlc1swXTsKKyAgICB2YXIgZGVs
dGFUaW1lID0gZXZlbnQudGltZVN0YW1wIC0gdGhpcy5fbGFzdFRvdWNoVGltZVN0YW1wOworICAg
IHZhciBkZWx0YVkgPSB0aGlzLl9sYXN0VG91Y2hQb3NpdGlvbiAtIHRvdWNoLmNsaWVudFk7Cisg
ICAgdGhpcy5zY3JvbGxCeShkZWx0YVksIGZhbHNlKTsKKyAgICB0aGlzLl9sYXN0VG91Y2hWZWxv
Y2l0eSA9IGRlbHRhWSAvIGRlbHRhVGltZTsKKyAgICB0aGlzLl9sYXN0VG91Y2hQb3NpdGlvbiA9
IHRvdWNoLmNsaWVudFk7CisgICAgdGhpcy5fbGFzdFRvdWNoVGltZVN0YW1wID0gZXZlbnQudGlt
ZVN0YW1wOworICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgIGV2ZW50LnByZXZlbnRE
ZWZhdWx0KCk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7IUV2ZW50fSBldmVudAorICovCitTY3Jv
bGxWaWV3LnByb3RvdHlwZS5vbldpbmRvd1RvdWNoRW5kID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICBpZiAoTWF0aC5hYnModGhpcy5fbGFzdFRvdWNoVmVsb2NpdHkpID4gMC4wMSkgeworICAgICAg
ICB0aGlzLl9zY3JvbGxBbmltYXRvciA9IG5ldyBGbGluZ0dlc3R1cmVBbmltYXRvcih0aGlzLl9s
YXN0VG91Y2hWZWxvY2l0eSwgdGhpcy5fY29udGVudE9mZnNldCk7CisgICAgICAgIHRoaXMuX3Nj
cm9sbEFuaW1hdG9yLnN0ZXAgPSB0aGlzLm9uRmxpbmdHZXN0dXJlQW5pbWF0b3JTdGVwOworICAg
ICAgICB0aGlzLl9zY3JvbGxBbmltYXRvci5zdGFydCgpOworICAgIH0KKyAgICB3aW5kb3cucmVt
b3ZlRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwgdGhpcy5vbldpbmRvd1RvdWNoTW92ZSwgZmFs
c2UpOworICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIHRoaXMub25X
aW5kb3dUb3VjaEVuZCwgZmFsc2UpOworfTsKKworLyoqCisgKiBAcGFyYW0geyFBbmltYXRvcn0g
YW5pbWF0b3IKKyAqLworU2Nyb2xsVmlldy5wcm90b3R5cGUub25GbGluZ0dlc3R1cmVBbmltYXRv
clN0ZXAgPSBmdW5jdGlvbihhbmltYXRvcikgeworICAgIHRoaXMuc2Nyb2xsVG8oYW5pbWF0b3Iu
Y3VycmVudFZhbHVlLCBmYWxzZSk7Cit9OworCisvKioKICAqIEByZXR1cm4geyFBbmltYXRvcn0K
ICAqLwogU2Nyb2xsVmlldy5wcm90b3R5cGUuc2Nyb2xsQW5pbWF0b3IgPSBmdW5jdGlvbigpIHsK
QEAgLTEyOTYsNiArMTQ4MSwxMCBAQCBTY3JvbGxWaWV3LnByb3RvdHlwZS5zY3JvbGxUbyA9IGZ1
bmN0aW9uKG9mZnNldCwgYW5pbWF0ZSkgewogICAgICAgICB0aGlzLnNldENvbnRlbnRPZmZzZXQo
b2Zmc2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAodGhpcy5fc2Nyb2xsQW5p
bWF0b3IpCisgICAgICAgIHRoaXMuX3Njcm9sbEFuaW1hdG9yLnN0b3AoKTsKKyAgICB0aGlzLl9z
Y3JvbGxBbmltYXRvciA9IG5ldyBUcmFuc2l0aW9uQW5pbWF0b3IoKTsKKyAgICB0aGlzLl9zY3Jv
bGxBbmltYXRvci5zdGVwID0gdGhpcy5vblNjcm9sbEFuaW1hdG9yU3RlcDsKICAgICB0aGlzLl9z
Y3JvbGxBbmltYXRvci5zZXRGcm9tKHRoaXMuX2NvbnRlbnRPZmZzZXQpOwogICAgIHRoaXMuX3Nj
cm9sbEFuaW1hdG9yLnNldFRvKG9mZnNldCk7CiAgICAgdGhpcy5fc2Nyb2xsQW5pbWF0b3IuZHVy
YXRpb24gPSAzMDA7CkBAIC0xNzY0LDYgKzE5NTMsNyBAQCBmdW5jdGlvbiBTY3J1YmJ5U2Nyb2xs
QmFyKHNjcm9sbFZpZXcpIHsKICAgICB0aGlzLl90aW1lciA9IG51bGw7CiAgICAgCiAgICAgdGhp
cy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMub25Nb3VzZURvd24s
IGZhbHNlKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIs
IHRoaXMub25Ub3VjaFN0YXJ0LCBmYWxzZSk7CiB9CiAKIFNjcnViYnlTY3JvbGxCYXIucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZShWaWV3LnByb3RvdHlwZSk7CkBAIC0xNzc1LDYgKzE5NjUsNDgg
QEAgU2NydWJieVNjcm9sbEJhci5DbGFzc05hbWVTY3J1YmJ5U2Nyb2xsQmFyID0gInNjcnViYnkt
c2Nyb2xsLWJhciI7CiBTY3J1YmJ5U2Nyb2xsQmFyLkNsYXNzTmFtZVNjcnViYnlTY3JvbGxUaHVt
YiA9ICJzY3J1YmJ5LXNjcm9sbC10aHVtYiI7CiAKIC8qKgorICogQHBhcmFtIHs/RXZlbnR9IGV2
ZW50CisgKi8KK1NjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLm9uVG91Y2hTdGFydCA9IGZ1bmN0
aW9uKGV2ZW50KSB7CisgICAgdmFyIHRvdWNoID0gZXZlbnQudG91Y2hlc1swXTsKKyAgICB0aGlz
Ll9zZXRUaHVtYlBvc2l0aW9uRnJvbUV2ZW50UG9zaXRpb24odG91Y2guY2xpZW50WSk7CisgICAg
aWYgKHRoaXMuX3RodW1iU3R5bGVUb3BBbmltYXRvcikKKyAgICAgICAgdGhpcy5fdGh1bWJTdHls
ZVRvcEFuaW1hdG9yLnN0b3AoKTsKKyAgICB0aGlzLl90aW1lciA9IHNldEludGVydmFsKHRoaXMu
b25TY3JvbGxUaW1lciwgU2NydWJieVNjcm9sbEJhci5TY3JvbGxJbnRlcnZhbCk7CisgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsIHRoaXMub25XaW5kb3dUb3VjaE1vdmUs
IGZhbHNlKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCB0aGlzLm9u
V2luZG93VG91Y2hFbmQsIGZhbHNlKTsKKyAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAg
ICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworfTsKKworLyoqCisgKiBAcGFyYW0gez9FdmVudH0g
ZXZlbnQKKyAqLworU2NydWJieVNjcm9sbEJhci5wcm90b3R5cGUub25XaW5kb3dUb3VjaE1vdmUg
PSBmdW5jdGlvbihldmVudCkgeworICAgIHZhciB0b3VjaCA9IGV2ZW50LnRvdWNoZXNbMF07Cisg
ICAgdGhpcy5fc2V0VGh1bWJQb3NpdGlvbkZyb21FdmVudFBvc2l0aW9uKHRvdWNoLmNsaWVudFkp
OworICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgIGV2ZW50LnByZXZlbnREZWZhdWx0
KCk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7P0V2ZW50fSBldmVudAorICovCitTY3J1YmJ5U2Ny
b2xsQmFyLnByb3RvdHlwZS5vbldpbmRvd1RvdWNoRW5kID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICB0aGlzLl90aHVtYlN0eWxlVG9wQW5pbWF0b3IgPSBuZXcgVHJhbnNpdGlvbkFuaW1hdG9yKCk7
CisgICAgdGhpcy5fdGh1bWJTdHlsZVRvcEFuaW1hdG9yLnN0ZXAgPSB0aGlzLm9uVGh1bWJTdHls
ZVRvcEFuaW1hdGlvblN0ZXA7CisgICAgdGhpcy5fdGh1bWJTdHlsZVRvcEFuaW1hdG9yLnNldEZy
b20odGhpcy50aHVtYi5vZmZzZXRUb3ApOworICAgIHRoaXMuX3RodW1iU3R5bGVUb3BBbmltYXRv
ci5zZXRUbygodGhpcy5faGVpZ2h0IC0gdGhpcy5fdGh1bWJIZWlnaHQpIC8gMik7CisgICAgdGhp
cy5fdGh1bWJTdHlsZVRvcEFuaW1hdG9yLnRpbWluZ0Z1bmN0aW9uID0gQW5pbWF0aW9uVGltaW5n
RnVuY3Rpb24uRWFzZUluT3V0OworICAgIHRoaXMuX3RodW1iU3R5bGVUb3BBbmltYXRvci5kdXJh
dGlvbiA9IDEwMDsKKyAgICB0aGlzLl90aHVtYlN0eWxlVG9wQW5pbWF0b3Iuc3RhcnQoKTsKKwor
ICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCB0aGlzLm9uV2luZG93
VG91Y2hNb3ZlLCBmYWxzZSk7CisgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNo
ZW5kIiwgdGhpcy5vbldpbmRvd1RvdWNoRW5kLCBmYWxzZSk7CisgICAgY2xlYXJJbnRlcnZhbCh0
aGlzLl90aW1lcik7Cit9OworCisvKioKICAqIEByZXR1cm4geyFudW1iZXJ9IEhlaWdodCBvZiB0
aGUgdmlldyBpbiBwaXhlbHMuCiAgKi8KIFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLmhlaWdo
dCA9IGZ1bmN0aW9uKCkgewpAQCAtMTgwNiwxMiArMjAzOCwxMiBAQCBTY3J1YmJ5U2Nyb2xsQmFy
LnByb3RvdHlwZS5zZXRUaHVtYkhlaWdodCA9IGZ1bmN0aW9uKGhlaWdodCkgewogfTsKIAogLyoq
Ci0gKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKKyAqIEBwYXJhbSB7bnVtYmVyfSBwb3NpdGlvbgog
ICovCi1TY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5fc2V0VGh1bWJQb3NpdGlvbkZyb21FdmVu
dCA9IGZ1bmN0aW9uKGV2ZW50KSB7CitTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5fc2V0VGh1
bWJQb3NpdGlvbkZyb21FdmVudFBvc2l0aW9uID0gZnVuY3Rpb24ocG9zaXRpb24pIHsKICAgICB2
YXIgdGh1bWJNaW4gPSBTY3J1YmJ5U2Nyb2xsQmFyLlRodW1iTWFyZ2luOwogICAgIHZhciB0aHVt
Yk1heCA9IHRoaXMuX2hlaWdodCAtIHRoaXMuX3RodW1iSGVpZ2h0IC0gU2NydWJieVNjcm9sbEJh
ci5UaHVtYk1hcmdpbiAqIDI7Ci0gICAgdmFyIHkgPSBldmVudC5jbGllbnRZIC0gdGhpcy5lbGVt
ZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCAtIHRoaXMuZWxlbWVudC5jbGllbnRUb3Ag
KyB0aGlzLmVsZW1lbnQuc2Nyb2xsVG9wOworICAgIHZhciB5ID0gcG9zaXRpb24gLSB0aGlzLmVs
ZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIC0gdGhpcy5lbGVtZW50LmNsaWVudFRv
cCArIHRoaXMuZWxlbWVudC5zY3JvbGxUb3A7CiAgICAgdmFyIHRodW1iUG9zaXRpb24gPSB5IC0g
dGhpcy5fdGh1bWJIZWlnaHQgLyAyOwogICAgIHRodW1iUG9zaXRpb24gPSBNYXRoLm1heCh0aHVt
YlBvc2l0aW9uLCB0aHVtYk1pbik7CiAgICAgdGh1bWJQb3NpdGlvbiA9IE1hdGgubWluKHRodW1i
UG9zaXRpb24sIHRodW1iTWF4KTsKQEAgLTE4MjMsMjcgKzIwNTUsMjkgQEAgU2NydWJieVNjcm9s
bEJhci5wcm90b3R5cGUuX3NldFRodW1iUG9zaXRpb25Gcm9tRXZlbnQgPSBmdW5jdGlvbihldmVu
dCkgewogICogQHBhcmFtIHs/RXZlbnR9IGV2ZW50CiAgKi8KIFNjcnViYnlTY3JvbGxCYXIucHJv
dG90eXBlLm9uTW91c2VEb3duID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICB0aGlzLl9zZXRUaHVt
YlBvc2l0aW9uRnJvbUV2ZW50KGV2ZW50KTsKKyAgICB0aGlzLl9zZXRUaHVtYlBvc2l0aW9uRnJv
bUV2ZW50UG9zaXRpb24oZXZlbnQuY2xpZW50WSk7CiAKICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5vbldpbmRvd01vdXNlTW92ZSwgZmFsc2UpOwogICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcy5vbldpbmRvd01vdXNlVXAsIGZh
bHNlKTsKICAgICBpZiAodGhpcy5fdGh1bWJTdHlsZVRvcEFuaW1hdG9yKQogICAgICAgICB0aGlz
Ll90aHVtYlN0eWxlVG9wQW5pbWF0b3Iuc3RvcCgpOwogICAgIHRoaXMuX3RpbWVyID0gc2V0SW50
ZXJ2YWwodGhpcy5vblNjcm9sbFRpbWVyLCBTY3J1YmJ5U2Nyb2xsQmFyLlNjcm9sbEludGVydmFs
KTsKKyAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICBldmVudC5wcmV2ZW50RGVmYXVs
dCgpOwogfTsKIAogLyoqCiAgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKICAqLwogU2NydWJieVNj
cm9sbEJhci5wcm90b3R5cGUub25XaW5kb3dNb3VzZU1vdmUgPSBmdW5jdGlvbihldmVudCkgewot
ICAgIHRoaXMuX3NldFRodW1iUG9zaXRpb25Gcm9tRXZlbnQoZXZlbnQpOworICAgIHRoaXMuX3Nl
dFRodW1iUG9zaXRpb25Gcm9tRXZlbnRQb3NpdGlvbihldmVudC5jbGllbnRZKTsKIH07CiAKIC8q
KgogICogQHBhcmFtIHs/RXZlbnR9IGV2ZW50CiAgKi8KIFNjcnViYnlTY3JvbGxCYXIucHJvdG90
eXBlLm9uV2luZG93TW91c2VVcCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgdGhpcy5fdGh1bWJT
dHlsZVRvcEFuaW1hdG9yID0gbmV3IEFuaW1hdG9yKCk7CisgICAgdGhpcy5fdGh1bWJTdHlsZVRv
cEFuaW1hdG9yID0gbmV3IFRyYW5zaXRpb25BbmltYXRvcigpOwogICAgIHRoaXMuX3RodW1iU3R5
bGVUb3BBbmltYXRvci5zdGVwID0gdGhpcy5vblRodW1iU3R5bGVUb3BBbmltYXRpb25TdGVwOwog
ICAgIHRoaXMuX3RodW1iU3R5bGVUb3BBbmltYXRvci5zZXRGcm9tKHRoaXMudGh1bWIub2Zmc2V0
VG9wKTsKICAgICB0aGlzLl90aHVtYlN0eWxlVG9wQW5pbWF0b3Iuc2V0VG8oKHRoaXMuX2hlaWdo
dCAtIHRoaXMuX3RodW1iSGVpZ2h0KSAvIDIpOwpAQCAtMTg4Niw2ICsyMTIwLDggQEAgZnVuY3Rp
b24gWWVhckxpc3RDZWxsKHNob3J0TW9udGhMYWJlbHMpIHsKICAgICAgKi8KICAgICB0aGlzLmxh
YmVsID0gY3JlYXRlRWxlbWVudCgiZGl2IiwgWWVhckxpc3RDZWxsLkNsYXNzTmFtZUxhYmVsLCAi
LS0tLSIpOwogICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmxhYmVsKTsKKyAgICB0
aGlzLmxhYmVsLnN0eWxlLmhlaWdodCA9IChZZWFyTGlzdENlbGwuSGVpZ2h0IC0gWWVhckxpc3RD
ZWxsLkJvcmRlckJvdHRvbVdpZHRoKSArICJweCI7CisgICAgdGhpcy5sYWJlbC5zdHlsZS5saW5l
SGVpZ2h0ID0gKFllYXJMaXN0Q2VsbC5IZWlnaHQgLSBZZWFyTGlzdENlbGwuQm9yZGVyQm90dG9t
V2lkdGgpICsgInB4IjsKIAogICAgIC8qKgogICAgICAqIEB0eXBlIHshQXJyYXl9IEFycmF5IG9m
IHRoZSAxMiBtb250aCBidXR0b24gZWxlbWVudHMuCkBAIC0xOTIwLDEwICsyMTU2LDExIEBAIGZ1
bmN0aW9uIFllYXJMaXN0Q2VsbChzaG9ydE1vbnRoTGFiZWxzKSB7CiAKIFllYXJMaXN0Q2VsbC5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKExpc3RDZWxsLnByb3RvdHlwZSk7CiAKLVllYXJMaXN0
Q2VsbC5IZWlnaHQgPSAyNTsKK1llYXJMaXN0Q2VsbC5IZWlnaHQgPSBoYXNJbmFjY3VyYXRlUG9p
bnRpbmdEZXZpY2UoKSA/IDMxIDogMjU7CitZZWFyTGlzdENlbGwuQm9yZGVyQm90dG9tV2lkdGgg
PSAxOwogWWVhckxpc3RDZWxsLkJ1dHRvblJvd3MgPSAzOwogWWVhckxpc3RDZWxsLkJ1dHRvbkNv
bHVtbnMgPSA0OwotWWVhckxpc3RDZWxsLlNlbGVjdGVkSGVpZ2h0ID0gMTIxOworWWVhckxpc3RD
ZWxsLlNlbGVjdGVkSGVpZ2h0ID0gaGFzSW5hY2N1cmF0ZVBvaW50aW5nRGV2aWNlKCkgPyAxMjcg
OiAxMjE7CiBZZWFyTGlzdENlbGwuQ2xhc3NOYW1lWWVhckxpc3RDZWxsID0gInllYXItbGlzdC1j
ZWxsIjsKIFllYXJMaXN0Q2VsbC5DbGFzc05hbWVMYWJlbCA9ICJsYWJlbCI7CiBZZWFyTGlzdENl
bGwuQ2xhc3NOYW1lTW9udGhDaG9vc2VyID0gIm1vbnRoLWNob29zZXIiOwpAQCAtMjAyOCw2ICsy
MjY1LDcgQEAgZnVuY3Rpb24gWWVhckxpc3RWaWV3KG1pbmltdW1Nb250aCwgbWF4aW11bU1vbnRo
KSB7CiAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIHRoaXMu
b25Nb3VzZU92ZXIsIGZhbHNlKTsKICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2VvdXQiLCB0aGlzLm9uTW91c2VPdXQsIGZhbHNlKTsKICAgICB0aGlzLmVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMub25LZXlEb3duLCBmYWxzZSk7CisgICAgdGhp
cy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCB0aGlzLm9uVG91Y2hTdGFy
dCwgZmFsc2UpOwogfQogCiBZZWFyTGlzdFZpZXcucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShM
aXN0Vmlldy5wcm90b3R5cGUpOwpAQCAtMjAzOSw2ICsyMjc3LDE5IEBAIFllYXJMaXN0Vmlldy5F
dmVudFR5cGVZZWFyTGlzdFZpZXdEaWRTZWxlY3RNb250aCA9ICJ5ZWFyTGlzdFZpZXdEaWRTZWxl
Y3RNb250aCI7CiAvKioKICAqIEBwYXJhbSB7P0V2ZW50fSBldmVudAogICovCitZZWFyTGlzdFZp
ZXcucHJvdG90eXBlLm9uVG91Y2hTdGFydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgdmFyIHRv
dWNoID0gZXZlbnQudG91Y2hlc1swXTsKKyAgICB2YXIgbW9udGhCdXR0b25FbGVtZW50ID0gZW5j
bG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcyh0b3VjaC50YXJnZXQsIFllYXJMaXN0Q2VsbC5DbGFz
c05hbWVNb250aEJ1dHRvbik7CisgICAgaWYgKCFtb250aEJ1dHRvbkVsZW1lbnQpCisgICAgICAg
IHJldHVybjsKKyAgICB2YXIgY2VsbEVsZW1lbnQgPSBlbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENs
YXNzKG1vbnRoQnV0dG9uRWxlbWVudCwgWWVhckxpc3RDZWxsLkNsYXNzTmFtZVllYXJMaXN0Q2Vs
bCk7CisgICAgdmFyIGNlbGwgPSBjZWxsRWxlbWVudC4kdmlldzsKKyAgICB0aGlzLmhpZ2hsaWdo
dE1vbnRoKG5ldyBNb250aChjZWxsLnJvdyArIDEsIHBhcnNlSW50KG1vbnRoQnV0dG9uRWxlbWVu
dC5kYXRhc2V0Lm1vbnRoLCAxMCkpKTsKK307CisKKy8qKgorICogQHBhcmFtIHs/RXZlbnR9IGV2
ZW50CisgKi8KIFllYXJMaXN0Vmlldy5wcm90b3R5cGUub25Nb3VzZU92ZXIgPSBmdW5jdGlvbihl
dmVudCkgewogICAgIHZhciBtb250aEJ1dHRvbkVsZW1lbnQgPSBlbmNsb3NpbmdOb2RlT3JTZWxm
V2l0aENsYXNzKGV2ZW50LnRhcmdldCwgWWVhckxpc3RDZWxsLkNsYXNzTmFtZU1vbnRoQnV0dG9u
KTsKICAgICBpZiAoIW1vbnRoQnV0dG9uRWxlbWVudCkKQEAgLTIwOTksNyArMjM1MCw3IEBAIFll
YXJMaXN0Vmlldy5wcm90b3R5cGUuX2FuaW1hdGVSb3cgPSBmdW5jdGlvbihyb3csIGRpcmVjdGlv
bikgewogICAgICAgICBmcm9tVmFsdWUgPSBvbGRBbmltYXRvci5jdXJyZW50VmFsdWU7CiAgICAg
fQogICAgIHZhciBjZWxsID0gdGhpcy5jZWxsQXRSb3cocm93KTsKLSAgICB2YXIgYW5pbWF0b3Ig
PSBuZXcgQW5pbWF0b3IoKTsKKyAgICB2YXIgYW5pbWF0b3IgPSBuZXcgVHJhbnNpdGlvbkFuaW1h
dG9yKCk7CiAgICAgYW5pbWF0b3Iuc3RlcCA9IHRoaXMub25DZWxsSGVpZ2h0QW5pbWF0b3JTdGVw
OwogICAgIGFuaW1hdG9yLnNldEZyb20oZnJvbVZhbHVlKTsKICAgICBhbmltYXRvci5zZXRUbyhk
aXJlY3Rpb24gPT09IFllYXJMaXN0Vmlldy5Sb3dBbmltYXRpb25EaXJlY3Rpb24uT3BlbmluZyA/
IFllYXJMaXN0Q2VsbC5TZWxlY3RlZEhlaWdodCA6IFllYXJMaXN0Q2VsbC5IZWlnaHQpOwpAQCAt
MjU3Nyw5ICsyODI4LDEzIEBAIGZ1bmN0aW9uIENhbGVuZGFyTmF2aWdhdGlvbkJ1dHRvbigpIHsK
ICAgICAgKiBAdHlwZSB7bnVtYmVyfSBJbnRlcnZhbCBiZXR3ZWVuIHJlYXBlYXRpbmcgY2xpY2tz
IGluIG1pbGxpc2Vjb25kcy4KICAgICAgKi8KICAgICB0aGlzLnJlYXBlYXRpbmdDbGlja3NJbnRl
cnZhbCA9IENhbGVuZGFyTmF2aWdhdGlvbkJ1dHRvbi5EZWZhdWx0UmVwZWF0aW5nQ2xpY2tzSW50
ZXJ2YWw7CisgICAgLyoqCisgICAgICogQHR5cGUgez9udW1iZXJ9IFRoZSBJRCBmb3IgdGhlIHRp
bWVvdXQgdGhhdCB0cmlnZ2VycyB0aGUgcmVwZWF0aW5nIGNsaWNrcy4KKyAgICAgKi8KICAgICB0
aGlzLl90aW1lciA9IG51bGw7CiAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgdGhpcy5vbkNsaWNrLCBmYWxzZSk7CiAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlZG93biIsIHRoaXMub25Nb3VzZURvd24sIGZhbHNlKTsKKyAgICB0aGlzLmVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIHRoaXMub25Ub3VjaFN0YXJ0LCBm
YWxzZSk7CiB9OwogCiBDYWxlbmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShWaWV3LnByb3RvdHlwZSk7CkBAIC0yNjA5LDcgKzI4NjQsMzAgQEAgQ2FsZW5kYXJO
YXZpZ2F0aW9uQnV0dG9uLnByb3RvdHlwZS5vbkNsaWNrID0gZnVuY3Rpb24oZXZlbnQpIHsKIC8q
KgogICogQHBhcmFtIHs/RXZlbnR9IGV2ZW50CiAgKi8KK0NhbGVuZGFyTmF2aWdhdGlvbkJ1dHRv
bi5wcm90b3R5cGUub25Ub3VjaFN0YXJ0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBpZiAodGhp
cy5fdGltZXIgIT09IG51bGwpCisgICAgICAgIHJldHVybjsKKyAgICB0aGlzLl90aW1lciA9IHNl
dFRpbWVvdXQodGhpcy5vblJlcGVhdGluZ0NsaWNrLCB0aGlzLnJlcGVhdGluZ0NsaWNrc1N0YXJ0
aW5nVGhyZXNob2xkKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCB0
aGlzLm9uV2luZG93VG91Y2hFbmQsIGZhbHNlKTsKK307CisKKy8qKgorICogQHBhcmFtIHs/RXZl
bnR9IGV2ZW50CisgKi8KK0NhbGVuZGFyTmF2aWdhdGlvbkJ1dHRvbi5wcm90b3R5cGUub25XaW5k
b3dUb3VjaEVuZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgaWYgKHRoaXMuX3RpbWVyID09PSBu
dWxsKQorICAgICAgICByZXR1cm47CisgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKTsKKyAg
ICB0aGlzLl90aW1lciA9IG51bGw7CisgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRv
dWNoZW5kIiwgdGhpcy5vbldpbmRvd01vdXNlVXAsIGZhbHNlKTsKK307CisKKy8qKgorICogQHBh
cmFtIHs/RXZlbnR9IGV2ZW50CisgKi8KIENhbGVuZGFyTmF2aWdhdGlvbkJ1dHRvbi5wcm90b3R5
cGUub25Nb3VzZURvd24gPSBmdW5jdGlvbihldmVudCkgeworICAgIGlmICh0aGlzLl90aW1lciAh
PT0gbnVsbCkKKyAgICAgICAgcmV0dXJuOwogICAgIHRoaXMuX3RpbWVyID0gc2V0VGltZW91dCh0
aGlzLm9uUmVwZWF0aW5nQ2xpY2ssIHRoaXMucmVwZWF0aW5nQ2xpY2tzU3RhcnRpbmdUaHJlc2hv
bGQpOwogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcy5vbldpbmRv
d01vdXNlVXAsIGZhbHNlKTsKIH07CkBAIC0yNjE4LDcgKzI4OTYsMTAgQEAgQ2FsZW5kYXJOYXZp
Z2F0aW9uQnV0dG9uLnByb3RvdHlwZS5vbk1vdXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAg
KiBAcGFyYW0gez9FdmVudH0gZXZlbnQKICAqLwogQ2FsZW5kYXJOYXZpZ2F0aW9uQnV0dG9uLnBy
b3RvdHlwZS5vbldpbmRvd01vdXNlVXAgPSBmdW5jdGlvbihldmVudCkgeworICAgIGlmICh0aGlz
Ll90aW1lciA9PT0gbnVsbCkKKyAgICAgICAgcmV0dXJuOwogICAgIGNsZWFyVGltZW91dCh0aGlz
Ll90aW1lcik7CisgICAgdGhpcy5fdGltZXIgPSBudWxsOwogICAgIHdpbmRvdy5yZW1vdmVFdmVu
dExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcy5vbldpbmRvd01vdXNlVXAsIGZhbHNlKTsKIH07CiAK
QEAgLTI3NDMsNyArMzAyNCw3IEBAIGZ1bmN0aW9uIERheUNlbGwoKSB7CiBEYXlDZWxsLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoTGlzdENlbGwucHJvdG90eXBlKTsKIAogRGF5Q2VsbC5XaWR0
aCA9IDM0OwotRGF5Q2VsbC5IZWlnaHQgPSAyMDsKK0RheUNlbGwuSGVpZ2h0ID0gaGFzSW5hY2N1
cmF0ZVBvaW50aW5nRGV2aWNlKCkgPyAzNCA6IDIwOwogRGF5Q2VsbC5Cb3JkZXJXaWR0aCA9IDE7
CiBEYXlDZWxsLkNsYXNzTmFtZURheUNlbGwgPSAiZGF5LWNlbGwiOwogRGF5Q2VsbC5DbGFzc05h
bWVIaWdobGlnaHRlZCA9ICJoaWdobGlnaHRlZCI7CkBAIC0zMDQ2LDggKzMzMjcsMTAgQEAgZnVu
Y3Rpb24gQ2FsZW5kYXJUYWJsZVZpZXcoY2FsZW5kYXJQaWNrZXIpIHsKICAgICB0aGlzLmVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5vbk1vdXNlT3ZlciwgZmFsc2Up
OwogICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsIHRoaXMub25N
b3VzZU91dCwgZmFsc2UpOwogCi0gICAgLy8geW91IHNob3VsZG4ndCBiZSBhYmxlIHRvIHVzZSB0
aGUgbW91c2Ugd2hlZWwgdG8gc2Nyb2xsLgorICAgIC8vIFlvdSBzaG91bGRuJ3QgYmUgYWJsZSB0
byB1c2UgdGhlIG1vdXNlIHdoZWVsIHRvIHNjcm9sbC4KICAgICB0aGlzLnNjcm9sbFZpZXcuZWxl
bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwgdGhpcy5zY3JvbGxWaWV3Lm9u
TW91c2VXaGVlbCwgZmFsc2UpOworICAgIC8vIFlvdSBzaG91bGRuJ3QgYmUgYWJsZSB0byBkbyBn
ZXN0dXJlIHNjcm9sbC4KKyAgICB0aGlzLnNjcm9sbFZpZXcuZWxlbWVudC5yZW1vdmVFdmVudExp
c3RlbmVyKCJ0b3VjaHN0YXJ0IiwgdGhpcy5zY3JvbGxWaWV3Lm9uVG91Y2hTdGFydCwgZmFsc2Up
OwogfQogCiBDYWxlbmRhclRhYmxlVmlldy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKExpc3RW
aWV3LnByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTU4M2Q5MzgzY2YxYzA2ZGYwMWY0ZGMyZWEyODk3MDEx
YTY2MWE5NC4uZTEyZWY5ZWNlOGRlOTkyYWFlOTU3YmQ2MGRhZTIxODBhYmM1OGU0NSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIwIEBACisyMDEzLTAzLTE0ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJr
aXQub3JnPgorCisgICAgICAgIEFkZCB0b3VjaCBzdXBwb3J0IHRvIHRoZSBjYWxlbmRhciBwaWNr
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjI1
NgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgorCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLXRv
dWNoLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXItdG91Y2gt
b3BlcmF0aW9ucy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9tb250aC1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMv
Y2FsZW5kYXItcGlja2VyL21vbnRoLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2Vy
L3Jlc291cmNlcy9jYWxlbmRhci1waWNrZXItY29tbW9uLmpzOgorICAgICAgICAoaG92ZXJPdmVy
TW9udGhQb3B1cEJ1dHRvbik6CisgICAgICAgIChjbGlja01vbnRoUG9wdXBCdXR0b24pOiBVc2Ug
aG92ZXJPdmVyTW9udGhQb3B1cEJ1dHRvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci93ZWVrLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jt
cy9jYWxlbmRhci1waWNrZXIvd2Vlay1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy5odG1sOiBBZGRl
ZC4KKwogMjAxMy0wMy0xNyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgSU5QVVRfTVVMVElQTEVfRklFTERTX1VJOiBEb24ndCB1cGRhdGUgc2hhZG93IHRyZWUg
YnkgdXBkYXRpbmcgYW55IGF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLXRv
dWNoLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLXRvdWNoLW9wZXJh
dGlvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0NmYwY2NmZjE1ZTY3NjMwZDI5NzkyN2Uy
ZjhkOTgyOWE1MDI4Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXItdG91Y2gt
b3BlcmF0aW9ucy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGVzdHMgaWYgY2FsZW5k
YXIgcGlja2VyIG1vdXNlIG9wZXJhdGlvbnMgd29yayBhcyBleHBlY3RlZC4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK0NoZWNrIHRoYXQgcGFnZSBwb3B1cCBkb2Vzbid0IGV4aXN0
IGF0IGZpcnN0LgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW9jay1wYWdlLXBvcHVw
IikgaXMgbnVsbAorT3BlbiB0aGUgbW9udGggcG9wdXAuCitQQVNTIHBvcHVwV2luZG93Lmdsb2Jh
bC5waWNrZXIubW9udGhQb3B1cFZpZXcuaXNWaXNpYmxlIGlzIGZhbHNlCitQQVNTIHBvcHVwV2lu
ZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcuaXNWaXNpYmxlIGlzIHRydWUKK0NoZWNr
IHRoYXQgdG91Y2ggc3dpcGluZyBzY3JvbGxzIHRoZSBsaXN0IGluIHRoZSBtb250aCBwb3B1cC4K
K1BBU1MgY2hlY2tZZWFyTGlzdFZpZXdTY3JvbGxPZmZzZXQoKSA+IDAgaXMgdHJ1ZQorUEFTUyBj
aGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpIDwgMCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVu
ZGFyLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXItdG91Y2gt
b3BlcmF0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3ZTE0M2MyMjY5MTllYjk1Njk2NzgwNjg3ODZh
YjUxYzZlYjhkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXItdG91Y2gtb3Bl
cmF0aW9ucy5odG1sCkBAIC0wLDAgKzEsNjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vZmFzdC9m
b3Jtcy9yZXNvdXJjZXMvY29tbW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi8uLi9mYXN0L2Zvcm1zL3Jlc291cmNlcy9waWNrZXItY29tbW9uLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FsZW5kYXItcGlja2VyLWNvbW1vbi5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8aW5wdXQgdHlwZT1kYXRlIGlkPWRhdGUgdmFsdWU9IjIwMDAtMDEt
MDIiPgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyBpZiBjYWxlbmRhciBwaWNrZXIgbW91
c2Ugb3BlcmF0aW9ucyB3b3JrIGFzIGV4cGVjdGVkLiIpOworCitkZWJ1ZygnQ2hlY2sgdGhhdCBw
YWdlIHBvcHVwIGRvZXNuXCd0IGV4aXN0IGF0IGZpcnN0LicpOworc2hvdWxkQmVOdWxsKCdkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibW9jay1wYWdlLXBvcHVwIiknKTsKKworb3BlblBpY2tlcihk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0ZScpLCB0ZXN0KTsKKworZnVuY3Rpb24gdGVzdCgp
IHsKKyAgICBkZWJ1ZygnT3BlbiB0aGUgbW9udGggcG9wdXAuJyk7CisgICAgc2hvdWxkQmVGYWxz
ZSgncG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5pc1Zpc2libGUnKTsK
KyAgICBjbGlja01vbnRoUG9wdXBCdXR0b24oKTsKKyAgICBzaG91bGRCZVRydWUoJ3BvcHVwV2lu
ZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcuaXNWaXNpYmxlJyk7CisKKyAgICBkZWJ1
ZygnQ2hlY2sgdGhhdCB0b3VjaCBzd2lwaW5nIHNjcm9sbHMgdGhlIGxpc3QgaW4gdGhlIG1vbnRo
IHBvcHVwLicpOworCisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRUb3VjaEV2ZW50
RW11bGF0aW9uRW5hYmxlZCh0cnVlKTsKKyAgICBjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNl
dCgpOworCisgICAgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy55ZWFy
TGlzdFZpZXcuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRlc3RBZnRlclN3
aXBpbmdEb3duLCBmYWxzZSk7CisgICAgaG92ZXJPdmVyTW9udGhCdXR0b24oMjAwMCwgMCk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgaG92ZXJPdmVyTW9udGhCdXR0b24oMjAw
MCwgMTEpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gdGVzdEFm
dGVyU3dpcGluZ0Rvd24oKSB7CisgICAgc2hvdWxkQmVUcnVlKCdjaGVja1llYXJMaXN0Vmlld1Nj
cm9sbE9mZnNldCgpID4gMCcpOworICAgIHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQ
b3B1cFZpZXcueWVhckxpc3RWaWV3LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hl
bmQnLCB0ZXN0QWZ0ZXJTd2lwaW5nRG93biwgZmFsc2UpOworICAgIHNldFRpbWVvdXQodGVzdFN3
aXBpbmdVcCwgMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTd2lwaW5nVXAoKSB7CisgICAgY2hlY2tZ
ZWFyTGlzdFZpZXdTY3JvbGxPZmZzZXQoKTsKKyAgICBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2Vy
Lm1vbnRoUG9wdXBWaWV3LnllYXJMaXN0Vmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Rv
dWNoZW5kJywgdGVzdEFmdGVyU3dpcGluZ1VwLCBmYWxzZSk7CisgICAgZXZlbnRTZW5kZXIubW91
c2VEb3duKCk7CisgICAgaG92ZXJPdmVyTW9udGhQb3B1cEJ1dHRvbigpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gdGVzdEFmdGVyU3dpcGluZ1VwKCkgeworICAg
IHNob3VsZEJlVHJ1ZSgnY2hlY2tZZWFyTGlzdFZpZXdTY3JvbGxPZmZzZXQoKSA8IDAnKTsKKyAg
ICBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRoUG9wdXBWaWV3LnllYXJMaXN0Vmlldy5l
bGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGVzdEFmdGVyU3dpcGluZ1Vw
LCBmYWxzZSk7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRUb3VjaEV2ZW50RW11
bGF0aW9uRW5hYmxlZChmYWxzZSk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvbW9udGgtcGlj
a2VyLXRvdWNoLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvbW9udGgtcGlja2VyLXRvdWNoLW9w
ZXJhdGlvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2ZWQ5MTdmZTk5MzdjNGM3ZDQ3ZDgz
MjQ0MTNlNzI4YWU0Y2E0ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9tb250aC1waWNrZXItdG91Y2gt
b3BlcmF0aW9ucy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGVzdHMgaWYgbW9udGgg
cGlja2VyIG1vdXNlIG9wZXJhdGlvbnMgd29yayBhcyBleHBlY3RlZC4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK0NoZWNrIHRoYXQgcGFnZSBwb3B1cCBkb2Vzbid0IGV4aXN0IGF0
IGZpcnN0LgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW9jay1wYWdlLXBvcHVwIikg
aXMgbnVsbAorT3BlbiB0aGUgbW9udGggcG9wdXAuCitQQVNTIHBvcHVwV2luZG93Lmdsb2JhbC5w
aWNrZXIubW9udGhQb3B1cFZpZXcuaXNWaXNpYmxlIGlzIGZhbHNlCitQQVNTIHBvcHVwV2luZG93
Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcuaXNWaXNpYmxlIGlzIHRydWUKK0NoZWNrIHRo
YXQgdG91Y2ggc3dpcGluZyBzY3JvbGxzIHRoZSBsaXN0IGluIHRoZSBtb250aCBwb3B1cC4KK1BB
U1MgY2hlY2tZZWFyTGlzdFZpZXdTY3JvbGxPZmZzZXQoKSA+IDAgaXMgdHJ1ZQorUEFTUyBjaGVj
a1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpIDwgMCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL21vbnRoLXBp
Y2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9tb250aC1waWNrZXItdG91Y2gtb3BlcmF0aW9u
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY1NmU0YjQ3OTJjOWE3MGZkNzEzNmFjMjU4YjBjMzNiOTBhMzJj
MWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9tb250aC1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy5odG1s
CkBAIC0wLDAgKzEsNjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vZmFzdC9mb3Jtcy9yZXNvdXJj
ZXMvY29tbW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0
L2Zvcm1zL3Jlc291cmNlcy9waWNrZXItY29tbW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvY2FsZW5kYXItcGlja2VyLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8aW5wdXQgdHlwZT1tb250aCBpZD1tb250aCB2YWx1ZT0iMjAwMC0wMSI+Cis8c2NyaXB0
PgorZGVzY3JpcHRpb24oIlRlc3RzIGlmIG1vbnRoIHBpY2tlciBtb3VzZSBvcGVyYXRpb25zIHdv
cmsgYXMgZXhwZWN0ZWQuIik7CisKK2RlYnVnKCdDaGVjayB0aGF0IHBhZ2UgcG9wdXAgZG9lc25c
J3QgZXhpc3QgYXQgZmlyc3QuJyk7CitzaG91bGRCZU51bGwoJ2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJtb2NrLXBhZ2UtcG9wdXAiKScpOworCitvcGVuUGlja2VyKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdtb250aCcpLCB0ZXN0KTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBkZWJ1Zygn
T3BlbiB0aGUgbW9udGggcG9wdXAuJyk7CisgICAgc2hvdWxkQmVGYWxzZSgncG9wdXBXaW5kb3cu
Z2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5pc1Zpc2libGUnKTsKKyAgICBjbGlja01vbnRo
UG9wdXBCdXR0b24oKTsKKyAgICBzaG91bGRCZVRydWUoJ3BvcHVwV2luZG93Lmdsb2JhbC5waWNr
ZXIubW9udGhQb3B1cFZpZXcuaXNWaXNpYmxlJyk7CisKKyAgICBkZWJ1ZygnQ2hlY2sgdGhhdCB0
b3VjaCBzd2lwaW5nIHNjcm9sbHMgdGhlIGxpc3QgaW4gdGhlIG1vbnRoIHBvcHVwLicpOworCisg
ICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxl
ZCh0cnVlKTsKKyAgICBjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpOworCisgICAgcG9w
dXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy55ZWFyTGlzdFZpZXcuZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRlc3RBZnRlclN3aXBpbmdEb3duLCBmYWxz
ZSk7CisgICAgaG92ZXJPdmVyTW9udGhCdXR0b24oMjAwMCwgMCk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VEb3duKCk7CisgICAgaG92ZXJPdmVyTW9udGhCdXR0b24oMjAwMCwgMTEpOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gdGVzdEFmdGVyU3dpcGluZ0Rvd24o
KSB7CisgICAgc2hvdWxkQmVUcnVlKCdjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpID4g
MCcpOworICAgIHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVhckxp
c3RWaWV3LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0ZXN0QWZ0ZXJT
d2lwaW5nRG93biwgZmFsc2UpOworICAgIHNldFRpbWVvdXQodGVzdFN3aXBpbmdVcCwgMCk7Cit9
CisKK2Z1bmN0aW9uIHRlc3RTd2lwaW5nVXAoKSB7CisgICAgY2hlY2tZZWFyTGlzdFZpZXdTY3Jv
bGxPZmZzZXQoKTsKKyAgICBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRoUG9wdXBWaWV3
LnllYXJMaXN0Vmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGVzdEFm
dGVyU3dpcGluZ1VwLCBmYWxzZSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAg
aG92ZXJPdmVyTW9udGhQb3B1cEJ1dHRvbigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsK
K30KKworZnVuY3Rpb24gdGVzdEFmdGVyU3dpcGluZ1VwKCkgeworICAgIHNob3VsZEJlVHJ1ZSgn
Y2hlY2tZZWFyTGlzdFZpZXdTY3JvbGxPZmZzZXQoKSA8IDAnKTsKKyAgICBwb3B1cFdpbmRvdy5n
bG9iYWwucGlja2VyLm1vbnRoUG9wdXBWaWV3LnllYXJMaXN0Vmlldy5lbGVtZW50LnJlbW92ZUV2
ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGVzdEFmdGVyU3dpcGluZ1VwLCBmYWxzZSk7CisgICAg
d2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChm
YWxzZSk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvcmVzb3VyY2VzL2NhbGVuZGFyLXBpY2tl
ci1jb21tb24uanMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2Nh
bGVuZGFyLXBpY2tlci9yZXNvdXJjZXMvY2FsZW5kYXItcGlja2VyLWNvbW1vbi5qcwppbmRleCAw
N2QxYTE4YTA5Nzk5YTU5OWI2NTFlZmFhYmJkZTMwNjUwNWVjMjY3Li41ZjM5ZTUxYjljYmI0YWU3
MTVkNTRmMGM5MjE1NDU3MjkzNjcxNDA2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9yZXNvdXJjZXMvY2FsZW5kYXIt
cGlja2VyLWNvbW1vbi5qcworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9yZXNvdXJjZXMvY2FsZW5kYXItcGlja2VyLWNvbW1vbi5q
cwpAQCAtODgsNyArODgsNyBAQCBmdW5jdGlvbiBoaWdobGlnaHRlZE1vbnRoQnV0dG9uKCkgewog
ICAgIH0pLnNvcnQoKS5qb2luKCk7CiB9CiAKLWZ1bmN0aW9uIGNsaWNrTW9udGhQb3B1cEJ1dHRv
bigpIHsKK2Z1bmN0aW9uIGhvdmVyT3Zlck1vbnRoUG9wdXBCdXR0b24oKSB7CiAgICAgc2tpcEFu
aW1hdGlvbigpOwogICAgIHZhciBidXR0b25FbGVtZW50ID0gcG9wdXBXaW5kb3cuZ2xvYmFsLnBp
Y2tlci5jYWxlbmRhckhlYWRlclZpZXcubW9udGhQb3B1cEJ1dHRvbi5lbGVtZW50OwogICAgIHZh
ciBvZmZzZXQgPSBjdW11bGF0aXZlT2Zmc2V0KGJ1dHRvbkVsZW1lbnQpOwpAQCAtOTcsNiArOTcs
MTIgQEAgZnVuY3Rpb24gY2xpY2tNb250aFBvcHVwQnV0dG9uKCkgewogICAgIGV2ZW50U2VuZGVy
Lm1vdXNlVXAoKTsKIH0KIAorZnVuY3Rpb24gY2xpY2tNb250aFBvcHVwQnV0dG9uKCkgeworICAg
IGhvdmVyT3Zlck1vbnRoUG9wdXBCdXR0b24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24o
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKIGZ1bmN0aW9uIGNsaWNrWWVhckxp
c3RDZWxsKHllYXIpIHsKICAgICBza2lwQW5pbWF0aW9uKCk7CiAgICAgdmFyIHJvdyA9IHllYXIg
LSAxOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jt
cy9jYWxlbmRhci1waWNrZXIvd2Vlay1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBp
Y2tlci93ZWVrLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xNDZmMGNjZmYxNWU2NzYzMGQyOTc5MjdlMmY4ZDk4MjlhNTAyOGNkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1w
aWNrZXIvd2Vlay1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNyBAQAorVGVzdHMgaWYgY2FsZW5kYXIgcGlja2VyIG1vdXNlIG9wZXJhdGlvbnMgd29yayBh
cyBleHBlY3RlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0NoZWNrIHRoYXQg
cGFnZSBwb3B1cCBkb2Vzbid0IGV4aXN0IGF0IGZpcnN0LgorUEFTUyBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibW9jay1wYWdlLXBvcHVwIikgaXMgbnVsbAorT3BlbiB0aGUgbW9udGggcG9wdXAu
CitQQVNTIHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcuaXNWaXNpYmxl
IGlzIGZhbHNlCitQQVNTIHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcu
aXNWaXNpYmxlIGlzIHRydWUKK0NoZWNrIHRoYXQgdG91Y2ggc3dpcGluZyBzY3JvbGxzIHRoZSBs
aXN0IGluIHRoZSBtb250aCBwb3B1cC4KK1BBU1MgY2hlY2tZZWFyTGlzdFZpZXdTY3JvbGxPZmZz
ZXQoKSA+IDAgaXMgdHJ1ZQorUEFTUyBjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpIDwg
MCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9y
bXMvY2FsZW5kYXItcGlja2VyL3dlZWstcGlja2VyLXRvdWNoLW9wZXJhdGlvbnMuaHRtbCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL3dl
ZWstcGlja2VyLXRvdWNoLW9wZXJhdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTNiMWRjNGFlNzdm
OWI0YjQxYTAyNmJmZWFjZDRhNmUzZjNjNWJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvd2Vlay1waWNr
ZXItdG91Y2gtb3BlcmF0aW9ucy5odG1sCkBAIC0wLDAgKzEsNjIgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vLi4vZmFzdC9mb3Jtcy9yZXNvdXJjZXMvY29tbW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2Zvcm1zL3Jlc291cmNlcy9waWNrZXItY29tbW9uLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FsZW5kYXItcGlja2VyLWNvbW1v
bi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8aW5wdXQgdHlwZT13ZWVrIGlkPXdlZWsgdmFs
dWU9IjIwMDAtVzAxIj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgaWYgY2FsZW5kYXIg
cGlja2VyIG1vdXNlIG9wZXJhdGlvbnMgd29yayBhcyBleHBlY3RlZC4iKTsKKworZGVidWcoJ0No
ZWNrIHRoYXQgcGFnZSBwb3B1cCBkb2VzblwndCBleGlzdCBhdCBmaXJzdC4nKTsKK3Nob3VsZEJl
TnVsbCgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vY2stcGFnZS1wb3B1cCIpJyk7CisKK29w
ZW5QaWNrZXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dlZWsnKSwgdGVzdCk7CisKK2Z1bmN0
aW9uIHRlc3QoKSB7CisgICAgZGVidWcoJ09wZW4gdGhlIG1vbnRoIHBvcHVwLicpOworICAgIHNo
b3VsZEJlRmFsc2UoJ3BvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcuaXNW
aXNpYmxlJyk7CisgICAgY2xpY2tNb250aFBvcHVwQnV0dG9uKCk7CisgICAgc2hvdWxkQmVUcnVl
KCdwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRoUG9wdXBWaWV3LmlzVmlzaWJsZScpOwor
CisgICAgZGVidWcoJ0NoZWNrIHRoYXQgdG91Y2ggc3dpcGluZyBzY3JvbGxzIHRoZSBsaXN0IGlu
IHRoZSBtb250aCBwb3B1cC4nKTsKKworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0
VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQodHJ1ZSk7CisgICAgY2hlY2tZZWFyTGlzdFZpZXdT
Y3JvbGxPZmZzZXQoKTsKKworICAgIHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1
cFZpZXcueWVhckxpc3RWaWV3LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0
ZXN0QWZ0ZXJTd2lwaW5nRG93biwgZmFsc2UpOworICAgIGhvdmVyT3Zlck1vbnRoQnV0dG9uKDIw
MDAsIDApOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGhvdmVyT3Zlck1vbnRo
QnV0dG9uKDIwMDAsIDExKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RBZnRlclN3aXBpbmdEb3duKCkgeworICAgIHNob3VsZEJlVHJ1ZSgnY2hlY2tZZWFy
TGlzdFZpZXdTY3JvbGxPZmZzZXQoKSA+IDAnKTsKKyAgICBwb3B1cFdpbmRvdy5nbG9iYWwucGlj
a2VyLm1vbnRoUG9wdXBWaWV3LnllYXJMaXN0Vmlldy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVu
ZXIoJ3RvdWNoZW5kJywgdGVzdEFmdGVyU3dpcGluZ0Rvd24sIGZhbHNlKTsKKyAgICBzZXRUaW1l
b3V0KHRlc3RTd2lwaW5nVXAsIDApOworfQorCitmdW5jdGlvbiB0ZXN0U3dpcGluZ1VwKCkgewor
ICAgIGNoZWNrWWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCk7CisgICAgcG9wdXBXaW5kb3cuZ2xv
YmFsLnBpY2tlci5tb250aFBvcHVwVmlldy55ZWFyTGlzdFZpZXcuZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCd0b3VjaGVuZCcsIHRlc3RBZnRlclN3aXBpbmdVcCwgZmFsc2UpOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlRG93bigpOworICAgIGhvdmVyT3Zlck1vbnRoUG9wdXBCdXR0b24oKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RBZnRlclN3aXBpbmdV
cCgpIHsKKyAgICBzaG91bGRCZVRydWUoJ2NoZWNrWWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCkg
PCAwJyk7CisgICAgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy55ZWFy
TGlzdFZpZXcuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRlc3RBZnRl
clN3aXBpbmdVcCwgZmFsc2UpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0VG91
Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoZmFsc2UpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193485</attachid>
            <date>2013-03-17 21:06:41 -0700</date>
            <delta_ts>2013-03-18 03:32:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112256-20130318130232.patch</filename>
            <type>text/plain</type>
            <size>38771</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdkODdlMDMwMTA5Njg0
ODU5MGY1ODllY2ZkMmMxZGEzZmM3ZDIxOS4uNTM3YWZhODBlMmExNTFhZjhiOGE2ODU1YTY3MzFk
NGVhMzRhYjgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEzLTAzLTE0ICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCB0b3VjaCBzdXBw
b3J0IHRvIHRoZSBjYWxlbmRhciBwaWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMjI1NgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFt
dXJhLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jcmVhc2VzIHRoZSBoaXQgdGFyZ2V0IHNpemVz
IGZvciB0b3VjaCBhbmQgYWRkcyB0b3VjaCBldmVudAorICAgICAgICBzdXBwb3J0IHRvIHRoZSBz
Y3JvbGwgdmlldywgc2Nyb2xsIGJhciBhbmQgbmF2aWdhdGlvbiBidXR0b24uCisKKyAgICAgICAg
VGVzdHM6IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVu
ZGFyLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3Jt
L2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL21vbnRoLXBpY2tlci10b3VjaC1v
cGVyYXRpb25zLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9y
bXMvY2FsZW5kYXItcGlja2VyL3dlZWstcGlja2VyLXRvdWNoLW9wZXJhdGlvbnMuaHRtbAorCisg
ICAgICAgICogUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanM6CisgICAgICAg
IChoYXNJbmFjY3VyYXRlUG9pbnRpbmdEZXZpY2UpOgorICAgICAgICAoQW5pbWF0b3IpOiBTdXBl
ciBjbGFzcyBmb3IgVHJhbnNpdGlvbkFuaW1hdG9yIGFuZCBGbGluZ0dlc3R1cmVBbmltYXRvci4K
KyAgICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5zdGFydCk6CisgICAgICAgIChBbmltYXRvci5w
cm90b3R5cGUuc3RvcCk6CisgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUub25BbmltYXRpb25G
cmFtZSk6CisgICAgICAgIChUcmFuc2l0aW9uQW5pbWF0b3IpOiBTYW1lIGFzIHRoZSBvbGQgQW5p
bWF0b3IuIFRyYW5zaXRpb24gZnJvbSBvbmUgdmFsdWUgdG8gYW5vdGhlci4KKyAgICAgICAgKFRy
YW5zaXRpb25BbmltYXRvci5wcm90b3R5cGUuc2V0RnJvbSk6CisgICAgICAgIChUcmFuc2l0aW9u
QW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0KToKKyAgICAgICAgKFRyYW5zaXRpb25BbmltYXRvci5w
cm90b3R5cGUuc3RvcCk6CisgICAgICAgIChUcmFuc2l0aW9uQW5pbWF0b3IucHJvdG90eXBlLnNl
dFRvKToKKyAgICAgICAgKFRyYW5zaXRpb25BbmltYXRvci5wcm90b3R5cGUub25BbmltYXRpb25G
cmFtZSk6CisgICAgICAgIChGbGluZ0dlc3R1cmVBbmltYXRvcik6QW5pbWF0ZXMgdGhlIGZsaW5n
IHNjcm9sbC4gCisgICAgICAgIChGbGluZ0dlc3R1cmVBbmltYXRvci5wcm90b3R5cGUuX3ZhbHVl
QXRUaW1lKTogUmV0dXJucyB0aGUgdmFsdWUgYXQgdGhlIGdpdmVuIHRpbWUuCisgICAgICAgIChG
bGluZ0dlc3R1cmVBbmltYXRvci5wcm90b3R5cGUuX3ZlbG9jaXR5QXRUaW1lKTogUmV0dXJucyB0
aGUgdmFsdWUgY2hhbmdlIHZlbG9jaXR5IGF0IHRoZSBnaXZlbiB0aW1lLgorICAgICAgICAoRmxp
bmdHZXN0dXJlQW5pbWF0b3IucHJvdG90eXBlLl90aW1lQXRWZWxvY2l0eSk6IFJldHVybnMgdGhl
IHRpbWUgd2hlbiB0aGUgdmFsdWUgaXMgY2hhbmdpbmcgYXQgdGhlIGdpdmVuIHZlbG9jaXR5Lgor
ICAgICAgICAoRmxpbmdHZXN0dXJlQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0KToKKyAgICAgICAg
KEZsaW5nR2VzdHVyZUFuaW1hdG9yLnByb3RvdHlwZS5vbkFuaW1hdGlvbkZyYW1lKToKKyAgICAg
ICAgKFNjcm9sbFZpZXcpOiBBZGRlZCBzdXBwb3J0IGZvciB0b3VjaCBnZXN0dXJlIHNjcm9sbGlu
Zy4KKyAgICAgICAgKFNjcm9sbFZpZXcucHJvdG90eXBlLm9uVG91Y2hTdGFydCk6CisgICAgICAg
IChTY3JvbGxWaWV3LnByb3RvdHlwZS5vbldpbmRvd1RvdWNoTW92ZSk6CisgICAgICAgIChTY3Jv
bGxWaWV3LnByb3RvdHlwZS5vbldpbmRvd1RvdWNoRW5kKToKKyAgICAgICAgKFNjcm9sbFZpZXcu
cHJvdG90eXBlLm9uRmxpbmdHZXN0dXJlQW5pbWF0b3JTdGVwKToKKyAgICAgICAgKFNjcm9sbFZp
ZXcucHJvdG90eXBlLnNjcm9sbFRvKToKKyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIpOiBBZGRl
ZCBzdXBwb3J0IGZvciB0b3VjaC4KKyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBl
Lm9uVG91Y2hTdGFydCk6CisgICAgICAgIChTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5vbldp
bmRvd1RvdWNoTW92ZSk6CisgICAgICAgIChTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5vbldp
bmRvd1RvdWNoRW5kKToKKyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLl9zZXRU
aHVtYlBvc2l0aW9uRnJvbUV2ZW50UG9zaXRpb24pOiBBY2NlcHQgTW91c2VFdmVudCBvciBUb3Vj
aC4KKyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLm9uTW91c2VEb3duKToKKyAg
ICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLm9uV2luZG93TW91c2VNb3ZlKToKKyAg
ICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLm9uV2luZG93TW91c2VVcCk6CisgICAg
ICAgIChZZWFyTGlzdENlbGwpOgorICAgICAgICAoWWVhckxpc3RWaWV3KToKKyAgICAgICAgKFll
YXJMaXN0Vmlldy5wcm90b3R5cGUub25Ub3VjaFN0YXJ0KToKKyAgICAgICAgKFllYXJMaXN0Vmll
dy5wcm90b3R5cGUuX2FuaW1hdGVSb3cpOgorICAgICAgICAoQ2FsZW5kYXJOYXZpZ2F0aW9uQnV0
dG9uKTogQWRkIHRvdWNoIHN1cHBvcnQgZm9yIGxvbmcgcHJlc3MuCisgICAgICAgIChDYWxlbmRh
ck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uVG91Y2hTdGFydCk6CisgICAgICAgIChDYWxl
bmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uV2luZG93VG91Y2hFbmQpOgorICAgICAg
ICAoQ2FsZW5kYXJOYXZpZ2F0aW9uQnV0dG9uLnByb3RvdHlwZS5vbk1vdXNlRG93bik6CisgICAg
ICAgIChDYWxlbmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uV2luZG93TW91c2VVcCk6
CisgICAgICAgIChDYWxlbmRhclRhYmxlVmlldyk6IERpc2FibGUgdG91Y2ggZ2VzdHVyZSBzY3Jv
bGxpbmcgaW4gdGhlIGNhbGVuZGFyIHRhYmxlLgorCiAyMDEzLTAzLTE3ICBBbGV4ZXkgUHJvc2t1
cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIEVuY2Fwc3VsYXRlIFBsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsIGEgbGl0dGxlIGJldHRlciB5ZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzIGIvU291cmNlL1dl
YkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMKaW5kZXggNjJlMzhj
YTY3MjBjZTgzZDU1M2NhMmJiZTEwNjg1OTNhMzUxOTgzNS4uODhjOTRhNDBkMjEyNzY0ODU5NjA3
MWU4MDBkZWNlYjIxOGFjYWFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2Vz
L3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvUmVzb3Vy
Y2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMKQEAgLTI5LDkgKzI5LDYgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotLy8gRklYTUU6Ci0vLyAgLSBUb3VjaCBldmVudAotLy8gIC0gQWRq
dXN0IGhpdCB0YXJnZXQgc2l6ZSBmb3IgdG91Y2gKIAogLyoqCiAgKiBAZW51bSB7bnVtYmVyfQpA
QCAtNjgsNiArNjUsMTMgQEAgdmFyIGdsb2JhbCA9IHsKIC8vIFV0aWxpdHkgZnVuY3Rpb25zCiAK
IC8qKgorICogQHJldHVybiB7IWJvb2x9CisgKi8KK2Z1bmN0aW9uIGhhc0luYWNjdXJhdGVQb2lu
dGluZ0RldmljZSgpIHsKKyAgICByZXR1cm4gbWF0Y2hNZWRpYSgiKHBvaW50ZXI6IGNvYXJzZSki
KS5tYXRjaGVzOworfQorCisvKioKICAqIEByZXR1cm4geyFzdHJpbmd9IGxvd2VyY2FzZSBsb2Nh
bGUgbmFtZS4gZS5nLiAiZW4tdXMiCiAgKi8KIGZ1bmN0aW9uIGdldExvY2FsZSgpIHsKQEAgLTEw
MDMsNiArMTAwNyw3MSBAQCBmdW5jdGlvbiBBbmltYXRvcigpIHsKICAgICB0aGlzLmlkID0gQW5p
bWF0b3IuX2xhc3RJZCsrOwogICAgIC8qKgogICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAgICAq
LworICAgIHRoaXMuZHVyYXRpb24gPSAxMDA7CisgICAgLyoqCisgICAgICogQHR5cGUgez9mdW5j
dGlvbn0KKyAgICAgKi8KKyAgICB0aGlzLnN0ZXAgPSBudWxsOworICAgIC8qKgorICAgICAqIEB0
eXBlIHshYm9vbGVhbn0KKyAgICAgKiBAcHJvdGVjdGVkCisgICAgICovCisgICAgdGhpcy5faXNS
dW5uaW5nID0gZmFsc2U7CisgICAgLyoqCisgICAgICogQHR5cGUgeyFudW1iZXJ9CisgICAgICov
CisgICAgdGhpcy5jdXJyZW50VmFsdWUgPSAwOworICAgIC8qKgorICAgICAqIEB0eXBlIHshbnVt
YmVyfQorICAgICAqIEBwcm90ZWN0ZWQKKyAgICAgKi8KKyAgICB0aGlzLl9sYXN0U3RlcFRpbWUg
PSAwOworfQorCitBbmltYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEV2ZW50RW1pdHRl
ci5wcm90b3R5cGUpOworCitBbmltYXRvci5fbGFzdElkID0gMDsKKworQW5pbWF0b3IuRXZlbnRU
eXBlRGlkQW5pbWF0aW9uU3RvcCA9ICJkaWRBbmltYXRpb25TdG9wIjsKKworLyoqCisgKiBAcmV0
dXJuIHshYm9vbGVhbn0KKyAqLworQW5pbWF0b3IucHJvdG90eXBlLmlzUnVubmluZyA9IGZ1bmN0
aW9uKCkgeworICAgIHJldHVybiB0aGlzLl9pc1J1bm5pbmc7Cit9OworCitBbmltYXRvci5wcm90
b3R5cGUuc3RhcnQgPSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLl9sYXN0U3RlcFRpbWUgPSBEYXRl
Lm5vdygpOworICAgIHRoaXMuX2lzUnVubmluZyA9IHRydWU7CisgICAgQW5pbWF0aW9uTWFuYWdl
ci5zaGFyZWQuYWRkKHRoaXMpOworfTsKKworQW5pbWF0b3IucHJvdG90eXBlLnN0b3AgPSBmdW5j
dGlvbigpIHsKKyAgICBpZiAoIXRoaXMuX2lzUnVubmluZykKKyAgICAgICAgcmV0dXJuOworICAg
IHRoaXMuX2lzUnVubmluZyA9IGZhbHNlOworICAgIEFuaW1hdGlvbk1hbmFnZXIuc2hhcmVkLnJl
bW92ZSh0aGlzKTsKKyAgICB0aGlzLmRpc3BhdGNoRXZlbnQoQW5pbWF0b3IuRXZlbnRUeXBlRGlk
QW5pbWF0aW9uU3RvcCwgdGhpcyk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7IW51bWJlcn0gbm93
CisgKi8KK0FuaW1hdG9yLnByb3RvdHlwZS5vbkFuaW1hdGlvbkZyYW1lID0gZnVuY3Rpb24obm93
KSB7CisgICAgdGhpcy5fbGFzdFN0ZXBUaW1lID0gbm93OworICAgIHRoaXMuc3RlcCh0aGlzKTsK
K307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyBBbmltYXRvcgorICovCitm
dW5jdGlvbiBUcmFuc2l0aW9uQW5pbWF0b3IoKSB7CisgICAgQW5pbWF0b3IuY2FsbCh0aGlzKTsK
KyAgICAvKioKKyAgICAgKiBAdHlwZSB7IW51bWJlcn0KICAgICAgKiBAcHJvdGVjdGVkCiAgICAg
ICovCiAgICAgdGhpcy5fZnJvbSA9IDA7CkBAIC0xMDE5LDkxICsxMDg4LDE0NCBAQCBmdW5jdGlv
biBBbmltYXRvcigpIHsKICAgICAvKioKICAgICAgKiBAdHlwZSB7IW51bWJlcn0KICAgICAgKi8K
LSAgICB0aGlzLmR1cmF0aW9uID0gMTAwOworICAgIHRoaXMucHJvZ3Jlc3MgPSAwLjA7CiAgICAg
LyoqCi0gICAgICogQHR5cGUgez9mdW5jdGlvbn0KKyAgICAgKiBAdHlwZSB7IWZ1bmN0aW9ufQog
ICAgICAqLwotICAgIHRoaXMuc3RlcCA9IG51bGw7CisgICAgdGhpcy50aW1pbmdGdW5jdGlvbiA9
IEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLkxpbmVhcjsKK30KKworVHJhbnNpdGlvbkFuaW1hdG9y
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQW5pbWF0b3IucHJvdG90eXBlKTsKKworLyoqCisg
KiBAcGFyYW0geyFudW1iZXJ9IHZhbHVlCisgKi8KK1RyYW5zaXRpb25BbmltYXRvci5wcm90b3R5
cGUuc2V0RnJvbSA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgdGhpcy5fZnJvbSA9IHZhbHVlOwor
ICAgIHRoaXMuX2RlbHRhID0gdGhpcy5fdG8gLSB0aGlzLl9mcm9tOworfTsKKworVHJhbnNpdGlv
bkFuaW1hdG9yLnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0aW9uKCkgeworICAgIGNvbnNvbGUuYXNz
ZXJ0KGlzRmluaXRlKHRoaXMuZHVyYXRpb24pKTsKKyAgICB0aGlzLnByb2dyZXNzID0gMC4wOwor
ICAgIHRoaXMuY3VycmVudFZhbHVlID0gdGhpcy5fZnJvbTsKKyAgICBBbmltYXRvci5wcm90b3R5
cGUuc3RhcnQuY2FsbCh0aGlzKTsKK307CisKKy8qKgorICogQHBhcmFtIHshbnVtYmVyfSB2YWx1
ZQorICovCitUcmFuc2l0aW9uQW5pbWF0b3IucHJvdG90eXBlLnNldFRvID0gZnVuY3Rpb24odmFs
dWUpIHsKKyAgICB0aGlzLl90byA9IHZhbHVlOworICAgIHRoaXMuX2RlbHRhID0gdGhpcy5fdG8g
LSB0aGlzLl9mcm9tOworfTsKKworLyoqCisgKiBAcGFyYW0geyFudW1iZXJ9IG5vdworICovCitU
cmFuc2l0aW9uQW5pbWF0b3IucHJvdG90eXBlLm9uQW5pbWF0aW9uRnJhbWUgPSBmdW5jdGlvbihu
b3cpIHsKKyAgICB0aGlzLnByb2dyZXNzICs9IChub3cgLSB0aGlzLl9sYXN0U3RlcFRpbWUpIC8g
dGhpcy5kdXJhdGlvbjsKKyAgICB0aGlzLnByb2dyZXNzID0gTWF0aC5taW4oMS4wLCB0aGlzLnBy
b2dyZXNzKTsKKyAgICB0aGlzLl9sYXN0U3RlcFRpbWUgPSBub3c7CisgICAgdGhpcy5jdXJyZW50
VmFsdWUgPSB0aGlzLnRpbWluZ0Z1bmN0aW9uKHRoaXMucHJvZ3Jlc3MpICogdGhpcy5fZGVsdGEg
KyB0aGlzLl9mcm9tOworICAgIHRoaXMuc3RlcCh0aGlzKTsKKyAgICBpZiAodGhpcy5wcm9ncmVz
cyA9PT0gMS4wKSB7CisgICAgICAgIHRoaXMuc3RvcCgpOworICAgICAgICByZXR1cm47CisgICAg
fQorfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIEFuaW1hdG9yCisgKiBA
cGFyYW0geyFudW1iZXJ9IGluaXRpYWxWZWxvY2l0eQorICogQHBhcmFtIHshbnVtYmVyfSBpbml0
aWFsVmFsdWUKKyAqLworZnVuY3Rpb24gRmxpbmdHZXN0dXJlQW5pbWF0b3IoaW5pdGlhbFZlbG9j
aXR5LCBpbml0aWFsVmFsdWUpIHsKKyAgICBBbmltYXRvci5jYWxsKHRoaXMpOworICAgIC8qKgor
ICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAgICAqLworICAgIHRoaXMuaW5pdGlhbFZlbG9jaXR5
ID0gaW5pdGlhbFZlbG9jaXR5OworICAgIC8qKgorICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAg
ICAqLworICAgIHRoaXMuaW5pdGlhbFZhbHVlID0gaW5pdGlhbFZhbHVlOwogICAgIC8qKgogICAg
ICAqIEB0eXBlIHshbnVtYmVyfQogICAgICAqIEBwcm90ZWN0ZWQKICAgICAgKi8KLSAgICB0aGlz
Ll9sYXN0U3RlcFRpbWUgPSAwOworICAgIHRoaXMuX2VsYXBzZWRUaW1lID0gMDsKKyAgICB2YXIg
c3RhcnRWZWxvY2l0eSA9IE1hdGguYWJzKHRoaXMuaW5pdGlhbFZlbG9jaXR5KTsKKyAgICBpZiAo
c3RhcnRWZWxvY2l0eSA+IHRoaXMuX3ZlbG9jaXR5QXRUaW1lKDApKQorICAgICAgICBzdGFydFZl
bG9jaXR5ID0gdGhpcy5fdmVsb2NpdHlBdFRpbWUoMCk7CisgICAgaWYgKHN0YXJ0VmVsb2NpdHkg
PCAwKQorICAgICAgICBzdGFydFZlbG9jaXR5ID0gMDsKICAgICAvKioKICAgICAgKiBAdHlwZSB7
IW51bWJlcn0KKyAgICAgKiBAcHJvdGVjdGVkCiAgICAgICovCi0gICAgdGhpcy5wcm9ncmVzcyA9
IDAuMDsKKyAgICB0aGlzLl90aW1lT2Zmc2V0ID0gdGhpcy5fdGltZUF0VmVsb2NpdHkoc3RhcnRW
ZWxvY2l0eSk7CiAgICAgLyoqCiAgICAgICogQHR5cGUgeyFudW1iZXJ9CiAgICAgICogQHByb3Rl
Y3RlZAogICAgICAqLwotICAgIHRoaXMuX2lzUnVubmluZyA9IGZhbHNlOworICAgIHRoaXMuX3Bv
c2l0aW9uT2Zmc2V0ID0gdGhpcy5fdmFsdWVBdFRpbWUodGhpcy5fdGltZU9mZnNldCk7CiAgICAg
LyoqCi0gICAgICogQHR5cGUgeyFmdW5jdGlvbn0KKyAgICAgKiBAdHlwZSB7IW51bWJlcn0KICAg
ICAgKi8KLSAgICB0aGlzLnRpbWluZ0Z1bmN0aW9uID0gQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24u
TGluZWFyOworICAgIHRoaXMuZHVyYXRpb24gPSB0aGlzLl90aW1lQXRWZWxvY2l0eSgwKTsKIH0K
IAotQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFdmVudEVtaXR0ZXIucHJvdG90
eXBlKTsKK0ZsaW5nR2VzdHVyZUFuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQW5p
bWF0b3IucHJvdG90eXBlKTsKIAotQW5pbWF0b3IuX2xhc3RJZCA9IDA7Ci0KLUFuaW1hdG9yLkV2
ZW50VHlwZURpZEFuaW1hdGlvblN0b3AgPSAiZGlkQW5pbWF0aW9uU3RvcCI7CisvLyBWZWxvY2l0
eSBpcyBzdWJqZWN0IHRvIGV4cG9uZW50aWFsIGRlY2F5LiBUaGVzZSBwYXJhbWV0ZXJzIGFyZSBj
b2VmZmljaWVudHMKKy8vIHRoYXQgZGV0ZXJtaW5lIHRoZSBjdXJ2ZS4KK0ZsaW5nR2VzdHVyZUFu
aW1hdG9yLl9QMCA9IC01NzA3LjYyOworRmxpbmdHZXN0dXJlQW5pbWF0b3IuX1AxID0gMC4xNzI7
CitGbGluZ0dlc3R1cmVBbmltYXRvci5fUDIgPSAwLjAwMzc7CiAKIC8qKgotICogQHJldHVybiB7
IWJvb2xlYW59CisgKiBAcGFyYW0geyFudW1iZXJ9IHQKICAqLwotQW5pbWF0b3IucHJvdG90eXBl
LmlzUnVubmluZyA9IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiB0aGlzLl9pc1J1bm5pbmc7CitG
bGluZ0dlc3R1cmVBbmltYXRvci5wcm90b3R5cGUuX3ZhbHVlQXRUaW1lID0gZnVuY3Rpb24odCkg
eworICAgIHJldHVybiBGbGluZ0dlc3R1cmVBbmltYXRvci5fUDAgKiBNYXRoLmV4cCgtRmxpbmdH
ZXN0dXJlQW5pbWF0b3IuX1AyICogdCkgLSBGbGluZ0dlc3R1cmVBbmltYXRvci5fUDEgKiB0IC0g
RmxpbmdHZXN0dXJlQW5pbWF0b3IuX1AwOwogfTsKIAogLyoqCi0gKiBAcGFyYW0geyFudW1iZXJ9
IHZhbHVlCisgKiBAcGFyYW0geyFudW1iZXJ9IHQKICAqLwotQW5pbWF0b3IucHJvdG90eXBlLnNl
dEZyb20gPSBmdW5jdGlvbih2YWx1ZSkgewotICAgIHRoaXMuX2Zyb20gPSB2YWx1ZTsKLSAgICB0
aGlzLl9kZWx0YSA9IHRoaXMuX3RvIC0gdGhpcy5fZnJvbTsKK0ZsaW5nR2VzdHVyZUFuaW1hdG9y
LnByb3RvdHlwZS5fdmVsb2NpdHlBdFRpbWUgPSBmdW5jdGlvbih0KSB7CisgICAgcmV0dXJuIC1G
bGluZ0dlc3R1cmVBbmltYXRvci5fUDAgKiBGbGluZ0dlc3R1cmVBbmltYXRvci5fUDIgKiBNYXRo
LmV4cCgtRmxpbmdHZXN0dXJlQW5pbWF0b3IuX1AyICogdCkgLSBGbGluZ0dlc3R1cmVBbmltYXRv
ci5fUDE7CiB9OwogCiAvKioKLSAqIEBwYXJhbSB7IW51bWJlcn0gdmFsdWUKKyAqIEBwYXJhbSB7
IW51bWJlcn0gdgogICovCi1BbmltYXRvci5wcm90b3R5cGUuc2V0VG8gPSBmdW5jdGlvbih2YWx1
ZSkgewotICAgIHRoaXMuX3RvID0gdmFsdWU7Ci0gICAgdGhpcy5fZGVsdGEgPSB0aGlzLl90byAt
IHRoaXMuX2Zyb207CitGbGluZ0dlc3R1cmVBbmltYXRvci5wcm90b3R5cGUuX3RpbWVBdFZlbG9j
aXR5ID0gZnVuY3Rpb24odikgeworICAgIHJldHVybiAtTWF0aC5sb2coKHYgKyBGbGluZ0dlc3R1
cmVBbmltYXRvci5fUDEpIC8gKC1GbGluZ0dlc3R1cmVBbmltYXRvci5fUDAgKiBGbGluZ0dlc3R1
cmVBbmltYXRvci5fUDIpKSAvIEZsaW5nR2VzdHVyZUFuaW1hdG9yLl9QMjsKIH07CiAKLUFuaW1h
dG9yLnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0aW9uKCkgeworRmxpbmdHZXN0dXJlQW5pbWF0b3Iu
cHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24oKSB7CiAgICAgdGhpcy5fbGFzdFN0ZXBUaW1lID0g
RGF0ZS5ub3coKTsKLSAgICB0aGlzLnByb2dyZXNzID0gMC4wOwotICAgIHRoaXMuX2lzUnVubmlu
ZyA9IHRydWU7Ci0gICAgdGhpcy5jdXJyZW50VmFsdWUgPSB0aGlzLl9mcm9tOwotICAgIEFuaW1h
dGlvbk1hbmFnZXIuc2hhcmVkLmFkZCh0aGlzKTsKLX07Ci0KLUFuaW1hdG9yLnByb3RvdHlwZS5z
dG9wID0gZnVuY3Rpb24oKSB7Ci0gICAgaWYgKCF0aGlzLl9pc1J1bm5pbmcpCi0gICAgICAgIHJl
dHVybjsKLSAgICB0aGlzLl9pc1J1bm5pbmcgPSBmYWxzZTsKLSAgICB0aGlzLmN1cnJlbnRWYWx1
ZSA9IHRoaXMuX3RvOwotICAgIHRoaXMuc3RlcCh0aGlzKTsKLSAgICBBbmltYXRpb25NYW5hZ2Vy
LnNoYXJlZC5yZW1vdmUodGhpcyk7Ci0gICAgdGhpcy5kaXNwYXRjaEV2ZW50KEFuaW1hdG9yLkV2
ZW50VHlwZURpZEFuaW1hdGlvblN0b3AsIHRoaXMpOworICAgIEFuaW1hdG9yLnByb3RvdHlwZS5z
dGFydC5jYWxsKHRoaXMpOwogfTsKIAogLyoqCiAgKiBAcGFyYW0geyFudW1iZXJ9IG5vdwogICov
Ci1BbmltYXRvci5wcm90b3R5cGUub25BbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKG5vdykgewot
ICAgIHRoaXMucHJvZ3Jlc3MgKz0gKG5vdyAtIHRoaXMuX2xhc3RTdGVwVGltZSkgLyB0aGlzLmR1
cmF0aW9uOwotICAgIGlmICh0aGlzLnByb2dyZXNzID49IDEuMCkgewotICAgICAgICB0aGlzLnBy
b2dyZXNzID0gMS4wOworRmxpbmdHZXN0dXJlQW5pbWF0b3IucHJvdG90eXBlLm9uQW5pbWF0aW9u
RnJhbWUgPSBmdW5jdGlvbihub3cpIHsKKyAgICB0aGlzLl9lbGFwc2VkVGltZSArPSBub3cgLSB0
aGlzLl9sYXN0U3RlcFRpbWU7CisgICAgdGhpcy5fbGFzdFN0ZXBUaW1lID0gbm93OworICAgIGlm
ICh0aGlzLl9lbGFwc2VkVGltZSArIHRoaXMuX3RpbWVPZmZzZXQgPj0gdGhpcy5kdXJhdGlvbikg
ewogICAgICAgICB0aGlzLnN0b3AoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICB0aGlz
LmN1cnJlbnRWYWx1ZSA9IHRoaXMudGltaW5nRnVuY3Rpb24odGhpcy5wcm9ncmVzcykgKiB0aGlz
Ll9kZWx0YSArIHRoaXMuX2Zyb207CisgICAgdmFyIHBvc2l0aW9uID0gdGhpcy5fdmFsdWVBdFRp
bWUodGhpcy5fZWxhcHNlZFRpbWUgKyB0aGlzLl90aW1lT2Zmc2V0KSAtIHRoaXMuX3Bvc2l0aW9u
T2Zmc2V0OworICAgIGlmICh0aGlzLmluaXRpYWxWZWxvY2l0eSA8IDApCisgICAgICAgIHBvc2l0
aW9uID0gLXBvc2l0aW9uOworICAgIHRoaXMuY3VycmVudFZhbHVlID0gcG9zaXRpb24gKyB0aGlz
LmluaXRpYWxWYWx1ZTsKICAgICB0aGlzLnN0ZXAodGhpcyk7Ci0gICAgdGhpcy5fbGFzdFN0ZXBU
aW1lID0gbm93OwogfTsKIAogLyoqCkBAIC0xMjA5LDE1ICsxMzMxLDI2IEBAIGZ1bmN0aW9uIFNj
cm9sbFZpZXcoKSB7CiAgICAgICogQHR5cGUge0FuaW1hdG9yfQogICAgICAqIEBwcm90ZWN0ZWQK
ICAgICAgKi8KLSAgICB0aGlzLl9zY3JvbGxBbmltYXRvciA9IG5ldyBBbmltYXRvcigpOwotICAg
IHRoaXMuX3Njcm9sbEFuaW1hdG9yLnN0ZXAgPSB0aGlzLm9uU2Nyb2xsQW5pbWF0b3JTdGVwOwot
CisgICAgdGhpcy5fc2Nyb2xsQW5pbWF0b3IgPSBudWxsOwogICAgIC8qKgogICAgICAqIEB0eXBl
IHs/T2JqZWN0fQogICAgICAqLwogICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsOworICAgIC8qKgor
ICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAgICAqLworICAgIHRoaXMuX2xhc3RUb3VjaFBvc2l0
aW9uID0gMDsKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7IW51bWJlcn0KKyAgICAgKi8KKyAgICB0
aGlzLl9sYXN0VG91Y2hWZWxvY2l0eSA9IDA7CisgICAgLyoqCisgICAgICogQHR5cGUgeyFudW1i
ZXJ9CisgICAgICovCisgICAgdGhpcy5fbGFzdFRvdWNoVGltZVN0YW1wID0gMDsKIAogICAgIHRo
aXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwgdGhpcy5vbk1vdXNlV2hl
ZWwsIGZhbHNlKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFy
dCIsIHRoaXMub25Ub3VjaFN0YXJ0LCBmYWxzZSk7CiAKICAgICAvKioKICAgICAgKiBUaGUgY29u
dGVudCBvZmZzZXQgaXMgcGFydGl0aW9uZWQgc28gdGhlIGl0IGNhbiBnbyBiZXlvbmQgdGhlIENT
UyBsaW1pdApAQCAtMTIzNSw2ICsxMzY4LDU1IEBAIFNjcm9sbFZpZXcuQ2xhc3NOYW1lU2Nyb2xs
VmlldyA9ICJzY3JvbGwtdmlldyI7CiBTY3JvbGxWaWV3LkNsYXNzTmFtZVNjcm9sbFZpZXdDb250
ZW50ID0gInNjcm9sbC12aWV3LWNvbnRlbnQiOwogCiAvKioKKyAqIEBwYXJhbSB7IUV2ZW50fSBl
dmVudAorICovCitTY3JvbGxWaWV3LnByb3RvdHlwZS5vblRvdWNoU3RhcnQgPSBmdW5jdGlvbihl
dmVudCkgeworICAgIHZhciB0b3VjaCA9IGV2ZW50LnRvdWNoZXNbMF07CisgICAgdGhpcy5fbGFz
dFRvdWNoUG9zaXRpb24gPSB0b3VjaC5jbGllbnRZOworICAgIHRoaXMuX2xhc3RUb3VjaFZlbG9j
aXR5ID0gMDsKKyAgICB0aGlzLl9sYXN0VG91Y2hUaW1lU3RhbXAgPSBldmVudC50aW1lU3RhbXA7
CisgICAgaWYgKHRoaXMuX3Njcm9sbEFuaW1hdG9yKQorICAgICAgICB0aGlzLl9zY3JvbGxBbmlt
YXRvci5zdG9wKCk7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsIHRo
aXMub25XaW5kb3dUb3VjaE1vdmUsIGZhbHNlKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigidG91Y2hlbmQiLCB0aGlzLm9uV2luZG93VG91Y2hFbmQsIGZhbHNlKTsKK307CisKKy8qKgor
ICogQHBhcmFtIHshRXZlbnR9IGV2ZW50CisgKi8KK1Njcm9sbFZpZXcucHJvdG90eXBlLm9uV2lu
ZG93VG91Y2hNb3ZlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB2YXIgdG91Y2ggPSBldmVudC50
b3VjaGVzWzBdOworICAgIHZhciBkZWx0YVRpbWUgPSBldmVudC50aW1lU3RhbXAgLSB0aGlzLl9s
YXN0VG91Y2hUaW1lU3RhbXA7CisgICAgdmFyIGRlbHRhWSA9IHRoaXMuX2xhc3RUb3VjaFBvc2l0
aW9uIC0gdG91Y2guY2xpZW50WTsKKyAgICB0aGlzLnNjcm9sbEJ5KGRlbHRhWSwgZmFsc2UpOwor
ICAgIHRoaXMuX2xhc3RUb3VjaFZlbG9jaXR5ID0gZGVsdGFZIC8gZGVsdGFUaW1lOworICAgIHRo
aXMuX2xhc3RUb3VjaFBvc2l0aW9uID0gdG91Y2guY2xpZW50WTsKKyAgICB0aGlzLl9sYXN0VG91
Y2hUaW1lU3RhbXAgPSBldmVudC50aW1lU3RhbXA7CisgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9u
KCk7CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK307CisKKy8qKgorICogQHBhcmFtIHsh
RXZlbnR9IGV2ZW50CisgKi8KK1Njcm9sbFZpZXcucHJvdG90eXBlLm9uV2luZG93VG91Y2hFbmQg
PSBmdW5jdGlvbihldmVudCkgeworICAgIGlmIChNYXRoLmFicyh0aGlzLl9sYXN0VG91Y2hWZWxv
Y2l0eSkgPiAwLjAxKSB7CisgICAgICAgIHRoaXMuX3Njcm9sbEFuaW1hdG9yID0gbmV3IEZsaW5n
R2VzdHVyZUFuaW1hdG9yKHRoaXMuX2xhc3RUb3VjaFZlbG9jaXR5LCB0aGlzLl9jb250ZW50T2Zm
c2V0KTsKKyAgICAgICAgdGhpcy5fc2Nyb2xsQW5pbWF0b3Iuc3RlcCA9IHRoaXMub25GbGluZ0dl
c3R1cmVBbmltYXRvclN0ZXA7CisgICAgICAgIHRoaXMuX3Njcm9sbEFuaW1hdG9yLnN0YXJ0KCk7
CisgICAgfQorICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCB0aGlz
Lm9uV2luZG93VG91Y2hNb3ZlLCBmYWxzZSk7CisgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVu
ZXIoInRvdWNoZW5kIiwgdGhpcy5vbldpbmRvd1RvdWNoRW5kLCBmYWxzZSk7Cit9OworCisvKioK
KyAqIEBwYXJhbSB7IUFuaW1hdG9yfSBhbmltYXRvcgorICovCitTY3JvbGxWaWV3LnByb3RvdHlw
ZS5vbkZsaW5nR2VzdHVyZUFuaW1hdG9yU3RlcCA9IGZ1bmN0aW9uKGFuaW1hdG9yKSB7CisgICAg
dGhpcy5zY3JvbGxUbyhhbmltYXRvci5jdXJyZW50VmFsdWUsIGZhbHNlKTsKK307CisKKy8qKgog
ICogQHJldHVybiB7IUFuaW1hdG9yfQogICovCiBTY3JvbGxWaWV3LnByb3RvdHlwZS5zY3JvbGxB
bmltYXRvciA9IGZ1bmN0aW9uKCkgewpAQCAtMTI5Niw2ICsxNDc4LDEwIEBAIFNjcm9sbFZpZXcu
cHJvdG90eXBlLnNjcm9sbFRvID0gZnVuY3Rpb24ob2Zmc2V0LCBhbmltYXRlKSB7CiAgICAgICAg
IHRoaXMuc2V0Q29udGVudE9mZnNldChvZmZzZXQpOwogICAgICAgICByZXR1cm47CiAgICAgfQor
ICAgIGlmICh0aGlzLl9zY3JvbGxBbmltYXRvcikKKyAgICAgICAgdGhpcy5fc2Nyb2xsQW5pbWF0
b3Iuc3RvcCgpOworICAgIHRoaXMuX3Njcm9sbEFuaW1hdG9yID0gbmV3IFRyYW5zaXRpb25Bbmlt
YXRvcigpOworICAgIHRoaXMuX3Njcm9sbEFuaW1hdG9yLnN0ZXAgPSB0aGlzLm9uU2Nyb2xsQW5p
bWF0b3JTdGVwOwogICAgIHRoaXMuX3Njcm9sbEFuaW1hdG9yLnNldEZyb20odGhpcy5fY29udGVu
dE9mZnNldCk7CiAgICAgdGhpcy5fc2Nyb2xsQW5pbWF0b3Iuc2V0VG8ob2Zmc2V0KTsKICAgICB0
aGlzLl9zY3JvbGxBbmltYXRvci5kdXJhdGlvbiA9IDMwMDsKQEAgLTE3NjQsNiArMTk1MCw3IEBA
IGZ1bmN0aW9uIFNjcnViYnlTY3JvbGxCYXIoc2Nyb2xsVmlldykgewogICAgIHRoaXMuX3RpbWVy
ID0gbnVsbDsKICAgICAKICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vk
b3duIiwgdGhpcy5vbk1vdXNlRG93biwgZmFsc2UpOworICAgIHRoaXMuZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwgdGhpcy5vblRvdWNoU3RhcnQsIGZhbHNlKTsKIH0KIAog
U2NydWJieVNjcm9sbEJhci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFZpZXcucHJvdG90eXBl
KTsKQEAgLTE3NzUsNiArMTk2Miw0OCBAQCBTY3J1YmJ5U2Nyb2xsQmFyLkNsYXNzTmFtZVNjcnVi
YnlTY3JvbGxCYXIgPSAic2NydWJieS1zY3JvbGwtYmFyIjsKIFNjcnViYnlTY3JvbGxCYXIuQ2xh
c3NOYW1lU2NydWJieVNjcm9sbFRodW1iID0gInNjcnViYnktc2Nyb2xsLXRodW1iIjsKIAogLyoq
CisgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKKyAqLworU2NydWJieVNjcm9sbEJhci5wcm90b3R5
cGUub25Ub3VjaFN0YXJ0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB2YXIgdG91Y2ggPSBldmVu
dC50b3VjaGVzWzBdOworICAgIHRoaXMuX3NldFRodW1iUG9zaXRpb25Gcm9tRXZlbnRQb3NpdGlv
bih0b3VjaC5jbGllbnRZKTsKKyAgICBpZiAodGhpcy5fdGh1bWJTdHlsZVRvcEFuaW1hdG9yKQor
ICAgICAgICB0aGlzLl90aHVtYlN0eWxlVG9wQW5pbWF0b3Iuc3RvcCgpOworICAgIHRoaXMuX3Rp
bWVyID0gc2V0SW50ZXJ2YWwodGhpcy5vblNjcm9sbFRpbWVyLCBTY3J1YmJ5U2Nyb2xsQmFyLlNj
cm9sbEludGVydmFsKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwg
dGhpcy5vbldpbmRvd1RvdWNoTW92ZSwgZmFsc2UpOworICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJ0b3VjaGVuZCIsIHRoaXMub25XaW5kb3dUb3VjaEVuZCwgZmFsc2UpOworICAgIGV2ZW50
LnN0b3BQcm9wYWdhdGlvbigpOworICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cit9OworCisv
KioKKyAqIEBwYXJhbSB7P0V2ZW50fSBldmVudAorICovCitTY3J1YmJ5U2Nyb2xsQmFyLnByb3Rv
dHlwZS5vbldpbmRvd1RvdWNoTW92ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgdmFyIHRvdWNo
ID0gZXZlbnQudG91Y2hlc1swXTsKKyAgICB0aGlzLl9zZXRUaHVtYlBvc2l0aW9uRnJvbUV2ZW50
UG9zaXRpb24odG91Y2guY2xpZW50WSk7CisgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Cisg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK307CisKKy8qKgorICogQHBhcmFtIHs/RXZlbnR9
IGV2ZW50CisgKi8KK1NjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLm9uV2luZG93VG91Y2hFbmQg
PSBmdW5jdGlvbihldmVudCkgeworICAgIHRoaXMuX3RodW1iU3R5bGVUb3BBbmltYXRvciA9IG5l
dyBUcmFuc2l0aW9uQW5pbWF0b3IoKTsKKyAgICB0aGlzLl90aHVtYlN0eWxlVG9wQW5pbWF0b3Iu
c3RlcCA9IHRoaXMub25UaHVtYlN0eWxlVG9wQW5pbWF0aW9uU3RlcDsKKyAgICB0aGlzLl90aHVt
YlN0eWxlVG9wQW5pbWF0b3Iuc2V0RnJvbSh0aGlzLnRodW1iLm9mZnNldFRvcCk7CisgICAgdGhp
cy5fdGh1bWJTdHlsZVRvcEFuaW1hdG9yLnNldFRvKCh0aGlzLl9oZWlnaHQgLSB0aGlzLl90aHVt
YkhlaWdodCkgLyAyKTsKKyAgICB0aGlzLl90aHVtYlN0eWxlVG9wQW5pbWF0b3IudGltaW5nRnVu
Y3Rpb24gPSBBbmltYXRpb25UaW1pbmdGdW5jdGlvbi5FYXNlSW5PdXQ7CisgICAgdGhpcy5fdGh1
bWJTdHlsZVRvcEFuaW1hdG9yLmR1cmF0aW9uID0gMTAwOworICAgIHRoaXMuX3RodW1iU3R5bGVU
b3BBbmltYXRvci5zdGFydCgpOworCisgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRv
dWNobW92ZSIsIHRoaXMub25XaW5kb3dUb3VjaE1vdmUsIGZhbHNlKTsKKyAgICB3aW5kb3cucmVt
b3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCB0aGlzLm9uV2luZG93VG91Y2hFbmQsIGZhbHNl
KTsKKyAgICBjbGVhckludGVydmFsKHRoaXMuX3RpbWVyKTsKK307CisKKy8qKgogICogQHJldHVy
biB7IW51bWJlcn0gSGVpZ2h0IG9mIHRoZSB2aWV3IGluIHBpeGVscy4KICAqLwogU2NydWJieVNj
cm9sbEJhci5wcm90b3R5cGUuaGVpZ2h0ID0gZnVuY3Rpb24oKSB7CkBAIC0xODA2LDEyICsyMDM1
LDEyIEBAIFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLnNldFRodW1iSGVpZ2h0ID0gZnVuY3Rp
b24oaGVpZ2h0KSB7CiB9OwogCiAvKioKLSAqIEBwYXJhbSB7P0V2ZW50fSBldmVudAorICogQHBh
cmFtIHtudW1iZXJ9IHBvc2l0aW9uCiAgKi8KLVNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLl9z
ZXRUaHVtYlBvc2l0aW9uRnJvbUV2ZW50ID0gZnVuY3Rpb24oZXZlbnQpIHsKK1NjcnViYnlTY3Jv
bGxCYXIucHJvdG90eXBlLl9zZXRUaHVtYlBvc2l0aW9uRnJvbUV2ZW50UG9zaXRpb24gPSBmdW5j
dGlvbihwb3NpdGlvbikgewogICAgIHZhciB0aHVtYk1pbiA9IFNjcnViYnlTY3JvbGxCYXIuVGh1
bWJNYXJnaW47CiAgICAgdmFyIHRodW1iTWF4ID0gdGhpcy5faGVpZ2h0IC0gdGhpcy5fdGh1bWJI
ZWlnaHQgLSBTY3J1YmJ5U2Nyb2xsQmFyLlRodW1iTWFyZ2luICogMjsKLSAgICB2YXIgeSA9IGV2
ZW50LmNsaWVudFkgLSB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIC0g
dGhpcy5lbGVtZW50LmNsaWVudFRvcCArIHRoaXMuZWxlbWVudC5zY3JvbGxUb3A7CisgICAgdmFy
IHkgPSBwb3NpdGlvbiAtIHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3Ag
LSB0aGlzLmVsZW1lbnQuY2xpZW50VG9wICsgdGhpcy5lbGVtZW50LnNjcm9sbFRvcDsKICAgICB2
YXIgdGh1bWJQb3NpdGlvbiA9IHkgLSB0aGlzLl90aHVtYkhlaWdodCAvIDI7CiAgICAgdGh1bWJQ
b3NpdGlvbiA9IE1hdGgubWF4KHRodW1iUG9zaXRpb24sIHRodW1iTWluKTsKICAgICB0aHVtYlBv
c2l0aW9uID0gTWF0aC5taW4odGh1bWJQb3NpdGlvbiwgdGh1bWJNYXgpOwpAQCAtMTgyMywyNyAr
MjA1MiwyOSBAQCBTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5fc2V0VGh1bWJQb3NpdGlvbkZy
b21FdmVudCA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKICAq
LwogU2NydWJieVNjcm9sbEJhci5wcm90b3R5cGUub25Nb3VzZURvd24gPSBmdW5jdGlvbihldmVu
dCkgewotICAgIHRoaXMuX3NldFRodW1iUG9zaXRpb25Gcm9tRXZlbnQoZXZlbnQpOworICAgIHRo
aXMuX3NldFRodW1iUG9zaXRpb25Gcm9tRXZlbnRQb3NpdGlvbihldmVudC5jbGllbnRZKTsKIAog
ICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLm9uV2luZG93TW91
c2VNb3ZlLCBmYWxzZSk7CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0
aGlzLm9uV2luZG93TW91c2VVcCwgZmFsc2UpOwogICAgIGlmICh0aGlzLl90aHVtYlN0eWxlVG9w
QW5pbWF0b3IpCiAgICAgICAgIHRoaXMuX3RodW1iU3R5bGVUb3BBbmltYXRvci5zdG9wKCk7CiAg
ICAgdGhpcy5fdGltZXIgPSBzZXRJbnRlcnZhbCh0aGlzLm9uU2Nyb2xsVGltZXIsIFNjcnViYnlT
Y3JvbGxCYXIuU2Nyb2xsSW50ZXJ2YWwpOworICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwor
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiB9OwogCiAvKioKICAqIEBwYXJhbSB7P0V2ZW50
fSBldmVudAogICovCiBTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5vbldpbmRvd01vdXNlTW92
ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgdGhpcy5fc2V0VGh1bWJQb3NpdGlvbkZyb21FdmVu
dChldmVudCk7CisgICAgdGhpcy5fc2V0VGh1bWJQb3NpdGlvbkZyb21FdmVudFBvc2l0aW9uKGV2
ZW50LmNsaWVudFkpOwogfTsKIAogLyoqCiAgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKICAqLwog
U2NydWJieVNjcm9sbEJhci5wcm90b3R5cGUub25XaW5kb3dNb3VzZVVwID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICB0aGlzLl90aHVtYlN0eWxlVG9wQW5pbWF0b3IgPSBuZXcgQW5pbWF0b3IoKTsK
KyAgICB0aGlzLl90aHVtYlN0eWxlVG9wQW5pbWF0b3IgPSBuZXcgVHJhbnNpdGlvbkFuaW1hdG9y
KCk7CiAgICAgdGhpcy5fdGh1bWJTdHlsZVRvcEFuaW1hdG9yLnN0ZXAgPSB0aGlzLm9uVGh1bWJT
dHlsZVRvcEFuaW1hdGlvblN0ZXA7CiAgICAgdGhpcy5fdGh1bWJTdHlsZVRvcEFuaW1hdG9yLnNl
dEZyb20odGhpcy50aHVtYi5vZmZzZXRUb3ApOwogICAgIHRoaXMuX3RodW1iU3R5bGVUb3BBbmlt
YXRvci5zZXRUbygodGhpcy5faGVpZ2h0IC0gdGhpcy5fdGh1bWJIZWlnaHQpIC8gMik7CkBAIC0x
ODg2LDYgKzIxMTcsOCBAQCBmdW5jdGlvbiBZZWFyTGlzdENlbGwoc2hvcnRNb250aExhYmVscykg
ewogICAgICAqLwogICAgIHRoaXMubGFiZWwgPSBjcmVhdGVFbGVtZW50KCJkaXYiLCBZZWFyTGlz
dENlbGwuQ2xhc3NOYW1lTGFiZWwsICItLS0tIik7CiAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMubGFiZWwpOworICAgIHRoaXMubGFiZWwuc3R5bGUuaGVpZ2h0ID0gKFllYXJMaXN0
Q2VsbC5IZWlnaHQgLSBZZWFyTGlzdENlbGwuQm9yZGVyQm90dG9tV2lkdGgpICsgInB4IjsKKyAg
ICB0aGlzLmxhYmVsLnN0eWxlLmxpbmVIZWlnaHQgPSAoWWVhckxpc3RDZWxsLkhlaWdodCAtIFll
YXJMaXN0Q2VsbC5Cb3JkZXJCb3R0b21XaWR0aCkgKyAicHgiOwogCiAgICAgLyoqCiAgICAgICog
QHR5cGUgeyFBcnJheX0gQXJyYXkgb2YgdGhlIDEyIG1vbnRoIGJ1dHRvbiBlbGVtZW50cy4KQEAg
LTE5MjAsMTAgKzIxNTMsMTEgQEAgZnVuY3Rpb24gWWVhckxpc3RDZWxsKHNob3J0TW9udGhMYWJl
bHMpIHsKIAogWWVhckxpc3RDZWxsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTGlzdENlbGwu
cHJvdG90eXBlKTsKIAotWWVhckxpc3RDZWxsLkhlaWdodCA9IDI1OworWWVhckxpc3RDZWxsLkhl
aWdodCA9IGhhc0luYWNjdXJhdGVQb2ludGluZ0RldmljZSgpID8gMzEgOiAyNTsKK1llYXJMaXN0
Q2VsbC5Cb3JkZXJCb3R0b21XaWR0aCA9IDE7CiBZZWFyTGlzdENlbGwuQnV0dG9uUm93cyA9IDM7
CiBZZWFyTGlzdENlbGwuQnV0dG9uQ29sdW1ucyA9IDQ7Ci1ZZWFyTGlzdENlbGwuU2VsZWN0ZWRI
ZWlnaHQgPSAxMjE7CitZZWFyTGlzdENlbGwuU2VsZWN0ZWRIZWlnaHQgPSBoYXNJbmFjY3VyYXRl
UG9pbnRpbmdEZXZpY2UoKSA/IDEyNyA6IDEyMTsKIFllYXJMaXN0Q2VsbC5DbGFzc05hbWVZZWFy
TGlzdENlbGwgPSAieWVhci1saXN0LWNlbGwiOwogWWVhckxpc3RDZWxsLkNsYXNzTmFtZUxhYmVs
ID0gImxhYmVsIjsKIFllYXJMaXN0Q2VsbC5DbGFzc05hbWVNb250aENob29zZXIgPSAibW9udGgt
Y2hvb3NlciI7CkBAIC0yMDI4LDYgKzIyNjIsNyBAQCBmdW5jdGlvbiBZZWFyTGlzdFZpZXcobWlu
aW11bU1vbnRoLCBtYXhpbXVtTW9udGgpIHsKICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2VvdmVyIiwgdGhpcy5vbk1vdXNlT3ZlciwgZmFsc2UpOwogICAgIHRoaXMuZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsIHRoaXMub25Nb3VzZU91dCwgZmFsc2Up
OwogICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5vbktl
eURvd24sIGZhbHNlKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hz
dGFydCIsIHRoaXMub25Ub3VjaFN0YXJ0LCBmYWxzZSk7CiB9CiAKIFllYXJMaXN0Vmlldy5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKExpc3RWaWV3LnByb3RvdHlwZSk7CkBAIC0yMDM5LDYgKzIy
NzQsMTkgQEAgWWVhckxpc3RWaWV3LkV2ZW50VHlwZVllYXJMaXN0Vmlld0RpZFNlbGVjdE1vbnRo
ID0gInllYXJMaXN0Vmlld0RpZFNlbGVjdE1vbnRoIjsKIC8qKgogICogQHBhcmFtIHs/RXZlbnR9
IGV2ZW50CiAgKi8KK1llYXJMaXN0Vmlldy5wcm90b3R5cGUub25Ub3VjaFN0YXJ0ID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICB2YXIgdG91Y2ggPSBldmVudC50b3VjaGVzWzBdOworICAgIHZhciBt
b250aEJ1dHRvbkVsZW1lbnQgPSBlbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKHRvdWNoLnRh
cmdldCwgWWVhckxpc3RDZWxsLkNsYXNzTmFtZU1vbnRoQnV0dG9uKTsKKyAgICBpZiAoIW1vbnRo
QnV0dG9uRWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIHZhciBjZWxsRWxlbWVudCA9IGVu
Y2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MobW9udGhCdXR0b25FbGVtZW50LCBZZWFyTGlzdENl
bGwuQ2xhc3NOYW1lWWVhckxpc3RDZWxsKTsKKyAgICB2YXIgY2VsbCA9IGNlbGxFbGVtZW50LiR2
aWV3OworICAgIHRoaXMuaGlnaGxpZ2h0TW9udGgobmV3IE1vbnRoKGNlbGwucm93ICsgMSwgcGFy
c2VJbnQobW9udGhCdXR0b25FbGVtZW50LmRhdGFzZXQubW9udGgsIDEwKSkpOworfTsKKworLyoq
CisgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKKyAqLwogWWVhckxpc3RWaWV3LnByb3RvdHlwZS5v
bk1vdXNlT3ZlciA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgdmFyIG1vbnRoQnV0dG9uRWxlbWVu
dCA9IGVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoZXZlbnQudGFyZ2V0LCBZZWFyTGlzdENl
bGwuQ2xhc3NOYW1lTW9udGhCdXR0b24pOwogICAgIGlmICghbW9udGhCdXR0b25FbGVtZW50KQpA
QCAtMjA5OSw3ICsyMzQ3LDcgQEAgWWVhckxpc3RWaWV3LnByb3RvdHlwZS5fYW5pbWF0ZVJvdyA9
IGZ1bmN0aW9uKHJvdywgZGlyZWN0aW9uKSB7CiAgICAgICAgIGZyb21WYWx1ZSA9IG9sZEFuaW1h
dG9yLmN1cnJlbnRWYWx1ZTsKICAgICB9CiAgICAgdmFyIGNlbGwgPSB0aGlzLmNlbGxBdFJvdyhy
b3cpOwotICAgIHZhciBhbmltYXRvciA9IG5ldyBBbmltYXRvcigpOworICAgIHZhciBhbmltYXRv
ciA9IG5ldyBUcmFuc2l0aW9uQW5pbWF0b3IoKTsKICAgICBhbmltYXRvci5zdGVwID0gdGhpcy5v
bkNlbGxIZWlnaHRBbmltYXRvclN0ZXA7CiAgICAgYW5pbWF0b3Iuc2V0RnJvbShmcm9tVmFsdWUp
OwogICAgIGFuaW1hdG9yLnNldFRvKGRpcmVjdGlvbiA9PT0gWWVhckxpc3RWaWV3LlJvd0FuaW1h
dGlvbkRpcmVjdGlvbi5PcGVuaW5nID8gWWVhckxpc3RDZWxsLlNlbGVjdGVkSGVpZ2h0IDogWWVh
ckxpc3RDZWxsLkhlaWdodCk7CkBAIC0yNTc3LDkgKzI4MjUsMTMgQEAgZnVuY3Rpb24gQ2FsZW5k
YXJOYXZpZ2F0aW9uQnV0dG9uKCkgewogICAgICAqIEB0eXBlIHtudW1iZXJ9IEludGVydmFsIGJl
dHdlZW4gcmVhcGVhdGluZyBjbGlja3MgaW4gbWlsbGlzZWNvbmRzLgogICAgICAqLwogICAgIHRo
aXMucmVhcGVhdGluZ0NsaWNrc0ludGVydmFsID0gQ2FsZW5kYXJOYXZpZ2F0aW9uQnV0dG9uLkRl
ZmF1bHRSZXBlYXRpbmdDbGlja3NJbnRlcnZhbDsKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7P251
bWJlcn0gVGhlIElEIGZvciB0aGUgdGltZW91dCB0aGF0IHRyaWdnZXJzIHRoZSByZXBlYXRpbmcg
Y2xpY2tzLgorICAgICAqLwogICAgIHRoaXMuX3RpbWVyID0gbnVsbDsKICAgICB0aGlzLmVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLm9uQ2xpY2ssIGZhbHNlKTsKICAgICB0
aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5vbk1vdXNlRG93
biwgZmFsc2UpOworICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0
IiwgdGhpcy5vblRvdWNoU3RhcnQsIGZhbHNlKTsKIH07CiAKIENhbGVuZGFyTmF2aWdhdGlvbkJ1
dHRvbi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFZpZXcucHJvdG90eXBlKTsKQEAgLTI2MDks
NyArMjg2MSwzMCBAQCBDYWxlbmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uQ2xpY2sg
PSBmdW5jdGlvbihldmVudCkgewogLyoqCiAgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKICAqLwor
Q2FsZW5kYXJOYXZpZ2F0aW9uQnV0dG9uLnByb3RvdHlwZS5vblRvdWNoU3RhcnQgPSBmdW5jdGlv
bihldmVudCkgeworICAgIGlmICh0aGlzLl90aW1lciAhPT0gbnVsbCkKKyAgICAgICAgcmV0dXJu
OworICAgIHRoaXMuX3RpbWVyID0gc2V0VGltZW91dCh0aGlzLm9uUmVwZWF0aW5nQ2xpY2ssIHRo
aXMucmVwZWF0aW5nQ2xpY2tzU3RhcnRpbmdUaHJlc2hvbGQpOworICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJ0b3VjaGVuZCIsIHRoaXMub25XaW5kb3dUb3VjaEVuZCwgZmFsc2UpOworfTsK
KworLyoqCisgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKKyAqLworQ2FsZW5kYXJOYXZpZ2F0aW9u
QnV0dG9uLnByb3RvdHlwZS5vbldpbmRvd1RvdWNoRW5kID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICBpZiAodGhpcy5fdGltZXIgPT09IG51bGwpCisgICAgICAgIHJldHVybjsKKyAgICBjbGVhclRp
bWVvdXQodGhpcy5fdGltZXIpOworICAgIHRoaXMuX3RpbWVyID0gbnVsbDsKKyAgICB3aW5kb3cu
cmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCB0aGlzLm9uV2luZG93TW91c2VVcCwgZmFs
c2UpOworfTsKKworLyoqCisgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKKyAqLwogQ2FsZW5kYXJO
YXZpZ2F0aW9uQnV0dG9uLnByb3RvdHlwZS5vbk1vdXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgaWYgKHRoaXMuX3RpbWVyICE9PSBudWxsKQorICAgICAgICByZXR1cm47CiAgICAgdGhp
cy5fdGltZXIgPSBzZXRUaW1lb3V0KHRoaXMub25SZXBlYXRpbmdDbGljaywgdGhpcy5yZXBlYXRp
bmdDbGlja3NTdGFydGluZ1RocmVzaG9sZCk7CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNldXAiLCB0aGlzLm9uV2luZG93TW91c2VVcCwgZmFsc2UpOwogfTsKQEAgLTI2MTgsNyAr
Mjg5MywxMCBAQCBDYWxlbmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uTW91c2VEb3du
ID0gZnVuY3Rpb24oZXZlbnQpIHsKICAqIEBwYXJhbSB7P0V2ZW50fSBldmVudAogICovCiBDYWxl
bmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uV2luZG93TW91c2VVcCA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgaWYgKHRoaXMuX3RpbWVyID09PSBudWxsKQorICAgICAgICByZXR1cm47
CiAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKTsKKyAgICB0aGlzLl90aW1lciA9IG51bGw7
CiAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLm9uV2luZG93
TW91c2VVcCwgZmFsc2UpOwogfTsKIApAQCAtMjc0Myw3ICszMDIxLDcgQEAgZnVuY3Rpb24gRGF5
Q2VsbCgpIHsKIERheUNlbGwucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMaXN0Q2VsbC5wcm90
b3R5cGUpOwogCiBEYXlDZWxsLldpZHRoID0gMzQ7Ci1EYXlDZWxsLkhlaWdodCA9IDIwOworRGF5
Q2VsbC5IZWlnaHQgPSBoYXNJbmFjY3VyYXRlUG9pbnRpbmdEZXZpY2UoKSA/IDM0IDogMjA7CiBE
YXlDZWxsLkJvcmRlcldpZHRoID0gMTsKIERheUNlbGwuQ2xhc3NOYW1lRGF5Q2VsbCA9ICJkYXkt
Y2VsbCI7CiBEYXlDZWxsLkNsYXNzTmFtZUhpZ2hsaWdodGVkID0gImhpZ2hsaWdodGVkIjsKQEAg
LTMwNDYsOCArMzMyNCwxMCBAQCBmdW5jdGlvbiBDYWxlbmRhclRhYmxlVmlldyhjYWxlbmRhclBp
Y2tlcikgewogICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCB0
aGlzLm9uTW91c2VPdmVyLCBmYWxzZSk7CiAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlb3V0IiwgdGhpcy5vbk1vdXNlT3V0LCBmYWxzZSk7CiAKLSAgICAvLyB5b3Ugc2hv
dWxkbid0IGJlIGFibGUgdG8gdXNlIHRoZSBtb3VzZSB3aGVlbCB0byBzY3JvbGwuCisgICAgLy8g
WW91IHNob3VsZG4ndCBiZSBhYmxlIHRvIHVzZSB0aGUgbW91c2Ugd2hlZWwgdG8gc2Nyb2xsLgog
ICAgIHRoaXMuc2Nyb2xsVmlldy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNld2hl
ZWwiLCB0aGlzLnNjcm9sbFZpZXcub25Nb3VzZVdoZWVsLCBmYWxzZSk7CisgICAgLy8gWW91IHNo
b3VsZG4ndCBiZSBhYmxlIHRvIGRvIGdlc3R1cmUgc2Nyb2xsLgorICAgIHRoaXMuc2Nyb2xsVmll
dy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCB0aGlzLnNjcm9sbFZp
ZXcub25Ub3VjaFN0YXJ0LCBmYWxzZSk7CiB9CiAKIENhbGVuZGFyVGFibGVWaWV3LnByb3RvdHlw
ZSA9IE9iamVjdC5jcmVhdGUoTGlzdFZpZXcucHJvdG90eXBlKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlNTgzZDkzODNj
ZjFjMDZkZjAxZjRkYzJlYTI4OTcwMTFhNjYxYTk0Li5lMTJlZjllY2U4ZGU5OTJhYWU5NTdiZDYw
ZGFlMjE4MGFiYzU4ZTQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTMtMDMtMTQgIEtlaXNo
aSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHRvdWNoIHN1cHBv
cnQgdG8gdGhlIGNhbGVuZGFyIHBpY2tlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMjU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11
cmEuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBp
Y2tlci9jYWxlbmRhci1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2Vy
L2NhbGVuZGFyLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL21vbnRoLXBpY2tl
ci10b3VjaC1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvbW9udGgtcGlja2VyLXRvdWNo
LW9wZXJhdGlvbnMuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvcmVzb3VyY2VzL2NhbGVuZGFyLXBpY2tlci1jb21tb24u
anM6CisgICAgICAgIChob3Zlck92ZXJNb250aFBvcHVwQnV0dG9uKToKKyAgICAgICAgKGNsaWNr
TW9udGhQb3B1cEJ1dHRvbik6IFVzZSBob3Zlck92ZXJNb250aFBvcHVwQnV0dG9uLgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL3dlZWstcGlj
a2VyLXRvdWNoLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci93ZWVrLXBpY2tlci10b3Vj
aC1vcGVyYXRpb25zLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAzLTE3ICBLZW50IFRhbXVyYSAgPHRr
ZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJTlBVVF9NVUxUSVBMRV9GSUVMRFNfVUk6IERv
bid0IHVwZGF0ZSBzaGFkb3cgdHJlZSBieSB1cGRhdGluZyBhbnkgYXR0cmlidXRlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBp
Y2tlci9jYWxlbmRhci1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxl
bmRhci1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ2
ZjBjY2ZmMTVlNjc2MzBkMjk3OTI3ZTJmOGQ5ODI5YTUwMjhjZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2Vy
L2NhbGVuZGFyLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE3IEBACitUZXN0cyBpZiBjYWxlbmRhciBwaWNrZXIgbW91c2Ugb3BlcmF0aW9ucyB3b3JrIGFz
IGV4cGVjdGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQ2hlY2sgdGhhdCBw
YWdlIHBvcHVwIGRvZXNuJ3QgZXhpc3QgYXQgZmlyc3QuCitQQVNTIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJtb2NrLXBhZ2UtcG9wdXAiKSBpcyBudWxsCitPcGVuIHRoZSBtb250aCBwb3B1cC4K
K1BBU1MgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5pc1Zpc2libGUg
aXMgZmFsc2UKK1BBU1MgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5p
c1Zpc2libGUgaXMgdHJ1ZQorQ2hlY2sgdGhhdCB0b3VjaCBzd2lwaW5nIHNjcm9sbHMgdGhlIGxp
c3QgaW4gdGhlIG1vbnRoIHBvcHVwLgorUEFTUyBjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNl
dCgpID4gMCBpcyB0cnVlCitQQVNTIGNoZWNrWWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCkgPCAw
IGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jt
cy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLXRvdWNoLW9wZXJhdGlvbnMuaHRtbCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2Vy
L2NhbGVuZGFyLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdlMTQz
YzIyNjkxOWViOTU2OTY3ODA2ODc4NmFiNTFjNmViOGQ2MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2Nh
bGVuZGFyLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwKQEAgLTAsMCArMSw2MiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi8uLi9mYXN0L2Zvcm1zL3Jlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3BpY2tl
ci1jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jYWxlbmRhci1w
aWNrZXItY29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxpbnB1dCB0eXBlPWRhdGUg
aWQ9ZGF0ZSB2YWx1ZT0iMjAwMC0wMS0wMiI+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Rz
IGlmIGNhbGVuZGFyIHBpY2tlciBtb3VzZSBvcGVyYXRpb25zIHdvcmsgYXMgZXhwZWN0ZWQuIik7
CisKK2RlYnVnKCdDaGVjayB0aGF0IHBhZ2UgcG9wdXAgZG9lc25cJ3QgZXhpc3QgYXQgZmlyc3Qu
Jyk7CitzaG91bGRCZU51bGwoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb2NrLXBhZ2UtcG9w
dXAiKScpOworCitvcGVuUGlja2VyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRlJyksIHRl
c3QpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGRlYnVnKCdPcGVuIHRoZSBtb250aCBwb3B1
cC4nKTsKKyAgICBzaG91bGRCZUZhbHNlKCdwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRo
UG9wdXBWaWV3LmlzVmlzaWJsZScpOworICAgIGNsaWNrTW9udGhQb3B1cEJ1dHRvbigpOworICAg
IHNob3VsZEJlVHJ1ZSgncG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5p
c1Zpc2libGUnKTsKKworICAgIGRlYnVnKCdDaGVjayB0aGF0IHRvdWNoIHN3aXBpbmcgc2Nyb2xs
cyB0aGUgbGlzdCBpbiB0aGUgbW9udGggcG9wdXAuJyk7CisKKyAgICB3aW5kb3cuaW50ZXJuYWxz
LnNldHRpbmdzLnNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKHRydWUpOworICAgIGNoZWNr
WWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCk7CisKKyAgICBwb3B1cFdpbmRvdy5nbG9iYWwucGlj
a2VyLm1vbnRoUG9wdXBWaWV3LnllYXJMaXN0Vmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
J3RvdWNoZW5kJywgdGVzdEFmdGVyU3dpcGluZ0Rvd24sIGZhbHNlKTsKKyAgICBob3Zlck92ZXJN
b250aEJ1dHRvbigyMDAwLCAwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBo
b3Zlck92ZXJNb250aEJ1dHRvbigyMDAwLCAxMSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgp
OworfQorCitmdW5jdGlvbiB0ZXN0QWZ0ZXJTd2lwaW5nRG93bigpIHsKKyAgICBzaG91bGRCZVRy
dWUoJ2NoZWNrWWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCkgPiAwJyk7CisgICAgcG9wdXBXaW5k
b3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy55ZWFyTGlzdFZpZXcuZWxlbWVudC5yZW1v
dmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRlc3RBZnRlclN3aXBpbmdEb3duLCBmYWxzZSk7
CisgICAgc2V0VGltZW91dCh0ZXN0U3dpcGluZ1VwLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdFN3
aXBpbmdVcCgpIHsKKyAgICBjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpOworICAgIHBv
cHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVhckxpc3RWaWV3LmVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0ZXN0QWZ0ZXJTd2lwaW5nVXAsIGZhbHNl
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBob3Zlck92ZXJNb250aFBvcHVw
QnV0dG9uKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiB0ZXN0
QWZ0ZXJTd2lwaW5nVXAoKSB7CisgICAgc2hvdWxkQmVUcnVlKCdjaGVja1llYXJMaXN0Vmlld1Nj
cm9sbE9mZnNldCgpIDwgMCcpOworICAgIHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQ
b3B1cFZpZXcueWVhckxpc3RWaWV3LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hl
bmQnLCB0ZXN0QWZ0ZXJTd2lwaW5nVXAsIGZhbHNlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNl
dHRpbmdzLnNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKGZhbHNlKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2Nh
bGVuZGFyLXBpY2tlci9tb250aC1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tl
ci9tb250aC1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTZlZDkxN2ZlOTkzN2M0YzdkNDdkODMyNDQxM2U3MjhhZTRjYTRkNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlj
a2VyL21vbnRoLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE3IEBACitUZXN0cyBpZiBtb250aCBwaWNrZXIgbW91c2Ugb3BlcmF0aW9ucyB3b3JrIGFzIGV4
cGVjdGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQ2hlY2sgdGhhdCBwYWdl
IHBvcHVwIGRvZXNuJ3QgZXhpc3QgYXQgZmlyc3QuCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJtb2NrLXBhZ2UtcG9wdXAiKSBpcyBudWxsCitPcGVuIHRoZSBtb250aCBwb3B1cC4KK1BB
U1MgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5pc1Zpc2libGUgaXMg
ZmFsc2UKK1BBU1MgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5pc1Zp
c2libGUgaXMgdHJ1ZQorQ2hlY2sgdGhhdCB0b3VjaCBzd2lwaW5nIHNjcm9sbHMgdGhlIGxpc3Qg
aW4gdGhlIG1vbnRoIHBvcHVwLgorUEFTUyBjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgp
ID4gMCBpcyB0cnVlCitQQVNTIGNoZWNrWWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCkgPCAwIGlz
IHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9j
YWxlbmRhci1waWNrZXIvbW9udGgtcGlja2VyLXRvdWNoLW9wZXJhdGlvbnMuaHRtbCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL21vbnRo
LXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU2ZTRiNDc5MmM5YTcw
ZmQ3MTM2YWMyNThiMGMzM2I5MGEzMmMxZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL21vbnRoLXBpY2tl
ci10b3VjaC1vcGVyYXRpb25zLmh0bWwKQEAgLTAsMCArMSw2MiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li8uLi9mYXN0L2Zvcm1zL3Jlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3BpY2tlci1jb21tb24uanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jYWxlbmRhci1waWNrZXItY29tbW9u
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxpbnB1dCB0eXBlPW1vbnRoIGlkPW1vbnRoIHZh
bHVlPSIyMDAwLTAxIj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgaWYgbW9udGggcGlj
a2VyIG1vdXNlIG9wZXJhdGlvbnMgd29yayBhcyBleHBlY3RlZC4iKTsKKworZGVidWcoJ0NoZWNr
IHRoYXQgcGFnZSBwb3B1cCBkb2VzblwndCBleGlzdCBhdCBmaXJzdC4nKTsKK3Nob3VsZEJlTnVs
bCgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vY2stcGFnZS1wb3B1cCIpJyk7CisKK29wZW5Q
aWNrZXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vbnRoJyksIHRlc3QpOworCitmdW5jdGlv
biB0ZXN0KCkgeworICAgIGRlYnVnKCdPcGVuIHRoZSBtb250aCBwb3B1cC4nKTsKKyAgICBzaG91
bGRCZUZhbHNlKCdwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRoUG9wdXBWaWV3LmlzVmlz
aWJsZScpOworICAgIGNsaWNrTW9udGhQb3B1cEJ1dHRvbigpOworICAgIHNob3VsZEJlVHJ1ZSgn
cG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5pc1Zpc2libGUnKTsKKwor
ICAgIGRlYnVnKCdDaGVjayB0aGF0IHRvdWNoIHN3aXBpbmcgc2Nyb2xscyB0aGUgbGlzdCBpbiB0
aGUgbW9udGggcG9wdXAuJyk7CisKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFRv
dWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKHRydWUpOworICAgIGNoZWNrWWVhckxpc3RWaWV3U2Ny
b2xsT2Zmc2V0KCk7CisKKyAgICBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRoUG9wdXBW
aWV3LnllYXJMaXN0Vmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGVz
dEFmdGVyU3dpcGluZ0Rvd24sIGZhbHNlKTsKKyAgICBob3Zlck92ZXJNb250aEJ1dHRvbigyMDAw
LCAwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBob3Zlck92ZXJNb250aEJ1
dHRvbigyMDAwLCAxMSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlv
biB0ZXN0QWZ0ZXJTd2lwaW5nRG93bigpIHsKKyAgICBzaG91bGRCZVRydWUoJ2NoZWNrWWVhckxp
c3RWaWV3U2Nyb2xsT2Zmc2V0KCkgPiAwJyk7CisgICAgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tl
ci5tb250aFBvcHVwVmlldy55ZWFyTGlzdFZpZXcuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVy
KCd0b3VjaGVuZCcsIHRlc3RBZnRlclN3aXBpbmdEb3duLCBmYWxzZSk7CisgICAgc2V0VGltZW91
dCh0ZXN0U3dpcGluZ1VwLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdFN3aXBpbmdVcCgpIHsKKyAg
ICBjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpOworICAgIHBvcHVwV2luZG93Lmdsb2Jh
bC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVhckxpc3RWaWV3LmVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigndG91Y2hlbmQnLCB0ZXN0QWZ0ZXJTd2lwaW5nVXAsIGZhbHNlKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZURvd24oKTsKKyAgICBob3Zlck92ZXJNb250aFBvcHVwQnV0dG9uKCk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiB0ZXN0QWZ0ZXJTd2lwaW5nVXAo
KSB7CisgICAgc2hvdWxkQmVUcnVlKCdjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpIDwg
MCcpOworICAgIHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVhckxp
c3RWaWV3LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0ZXN0QWZ0ZXJT
d2lwaW5nVXAsIGZhbHNlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFRvdWNo
RXZlbnRFbXVsYXRpb25FbmFibGVkKGZhbHNlKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9y
ZXNvdXJjZXMvY2FsZW5kYXItcGlja2VyLWNvbW1vbi5qcyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL3Jlc291cmNlcy9jYWxlbmRhci1w
aWNrZXItY29tbW9uLmpzCmluZGV4IDA3ZDFhMThhMDk3OTlhNTk5YjY1MWVmYWFiYmRlMzA2NTA1
ZWMyNjcuLjVmMzllNTFiOWNiYjRhZTcxNWQ1NGYwYzkyMTU0NTcyOTM2NzE0MDYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlj
a2VyL3Jlc291cmNlcy9jYWxlbmRhci1waWNrZXItY29tbW9uLmpzCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL3Jlc291cmNlcy9j
YWxlbmRhci1waWNrZXItY29tbW9uLmpzCkBAIC04OCw3ICs4OCw3IEBAIGZ1bmN0aW9uIGhpZ2hs
aWdodGVkTW9udGhCdXR0b24oKSB7CiAgICAgfSkuc29ydCgpLmpvaW4oKTsKIH0KIAotZnVuY3Rp
b24gY2xpY2tNb250aFBvcHVwQnV0dG9uKCkgeworZnVuY3Rpb24gaG92ZXJPdmVyTW9udGhQb3B1
cEJ1dHRvbigpIHsKICAgICBza2lwQW5pbWF0aW9uKCk7CiAgICAgdmFyIGJ1dHRvbkVsZW1lbnQg
PSBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLmNhbGVuZGFySGVhZGVyVmlldy5tb250aFBvcHVw
QnV0dG9uLmVsZW1lbnQ7CiAgICAgdmFyIG9mZnNldCA9IGN1bXVsYXRpdmVPZmZzZXQoYnV0dG9u
RWxlbWVudCk7CkBAIC05Nyw2ICs5NywxMiBAQCBmdW5jdGlvbiBjbGlja01vbnRoUG9wdXBCdXR0
b24oKSB7CiAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwogfQogCitmdW5jdGlvbiBjbGlja01v
bnRoUG9wdXBCdXR0b24oKSB7CisgICAgaG92ZXJPdmVyTW9udGhQb3B1cEJ1dHRvbigpOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30K
KwogZnVuY3Rpb24gY2xpY2tZZWFyTGlzdENlbGwoeWVhcikgewogICAgIHNraXBBbmltYXRpb24o
KTsKICAgICB2YXIgcm93ID0geWVhciAtIDE7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci93ZWVrLXBpY2tlci10b3Vj
aC1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL3dlZWstcGlja2VyLXRvdWNoLW9wZXJhdGlvbnMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0NmYwY2NmZjE1ZTY3NjMwZDI5NzkyN2UyZjhkOTgy
OWE1MDI4Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci93ZWVrLXBpY2tlci10b3VjaC1vcGVyYXRpb25z
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitUZXN0cyBpZiBjYWxlbmRhciBwaWNrZXIg
bW91c2Ugb3BlcmF0aW9ucyB3b3JrIGFzIGV4cGVjdGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworQ2hlY2sgdGhhdCBwYWdlIHBvcHVwIGRvZXNuJ3QgZXhpc3QgYXQgZmlyc3Qu
CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb2NrLXBhZ2UtcG9wdXAiKSBpcyBudWxs
CitPcGVuIHRoZSBtb250aCBwb3B1cC4KK1BBU1MgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5t
b250aFBvcHVwVmlldy5pc1Zpc2libGUgaXMgZmFsc2UKK1BBU1MgcG9wdXBXaW5kb3cuZ2xvYmFs
LnBpY2tlci5tb250aFBvcHVwVmlldy5pc1Zpc2libGUgaXMgdHJ1ZQorQ2hlY2sgdGhhdCB0b3Vj
aCBzd2lwaW5nIHNjcm9sbHMgdGhlIGxpc3QgaW4gdGhlIG1vbnRoIHBvcHVwLgorUEFTUyBjaGVj
a1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpID4gMCBpcyB0cnVlCitQQVNTIGNoZWNrWWVhckxp
c3RWaWV3U2Nyb2xsT2Zmc2V0KCkgPCAwIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvd2Vlay1waWNrZXItdG91
Y2gtb3BlcmF0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9m
b3Jtcy9jYWxlbmRhci1waWNrZXIvd2Vlay1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE1M2IxZGM0YWU3N2Y5YjRiNDFhMDI2YmZlYWNkNGE2ZTNmM2M1YmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2Nh
bGVuZGFyLXBpY2tlci93ZWVrLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwKQEAgLTAsMCAr
MSw2MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2Zvcm1zL3Jlc291cmNlcy9jb21tb24u
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvZm9ybXMvcmVz
b3VyY2VzL3BpY2tlci1jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9jYWxlbmRhci1waWNrZXItY29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxpbnB1
dCB0eXBlPXdlZWsgaWQ9d2VlayB2YWx1ZT0iMjAwMC1XMDEiPgorPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCJUZXN0cyBpZiBjYWxlbmRhciBwaWNrZXIgbW91c2Ugb3BlcmF0aW9ucyB3b3JrIGFzIGV4
cGVjdGVkLiIpOworCitkZWJ1ZygnQ2hlY2sgdGhhdCBwYWdlIHBvcHVwIGRvZXNuXCd0IGV4aXN0
IGF0IGZpcnN0LicpOworc2hvdWxkQmVOdWxsKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW9j
ay1wYWdlLXBvcHVwIiknKTsKKworb3BlblBpY2tlcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
d2VlaycpLCB0ZXN0KTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBkZWJ1ZygnT3BlbiB0aGUg
bW9udGggcG9wdXAuJyk7CisgICAgc2hvdWxkQmVGYWxzZSgncG9wdXBXaW5kb3cuZ2xvYmFsLnBp
Y2tlci5tb250aFBvcHVwVmlldy5pc1Zpc2libGUnKTsKKyAgICBjbGlja01vbnRoUG9wdXBCdXR0
b24oKTsKKyAgICBzaG91bGRCZVRydWUoJ3BvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQ
b3B1cFZpZXcuaXNWaXNpYmxlJyk7CisKKyAgICBkZWJ1ZygnQ2hlY2sgdGhhdCB0b3VjaCBzd2lw
aW5nIHNjcm9sbHMgdGhlIGxpc3QgaW4gdGhlIG1vbnRoIHBvcHVwLicpOworCisgICAgd2luZG93
LmludGVybmFscy5zZXR0aW5ncy5zZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCh0cnVlKTsK
KyAgICBjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpOworCisgICAgcG9wdXBXaW5kb3cu
Z2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy55ZWFyTGlzdFZpZXcuZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCd0b3VjaGVuZCcsIHRlc3RBZnRlclN3aXBpbmdEb3duLCBmYWxzZSk7CisgICAg
aG92ZXJPdmVyTW9udGhCdXR0b24oMjAwMCwgMCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3du
KCk7CisgICAgaG92ZXJPdmVyTW9udGhCdXR0b24oMjAwMCwgMTEpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gdGVzdEFmdGVyU3dpcGluZ0Rvd24oKSB7CisgICAg
c2hvdWxkQmVUcnVlKCdjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpID4gMCcpOworICAg
IHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVhckxpc3RWaWV3LmVs
ZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0ZXN0QWZ0ZXJTd2lwaW5nRG93
biwgZmFsc2UpOworICAgIHNldFRpbWVvdXQodGVzdFN3aXBpbmdVcCwgMCk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RTd2lwaW5nVXAoKSB7CisgICAgY2hlY2tZZWFyTGlzdFZpZXdTY3JvbGxPZmZzZXQo
KTsKKyAgICBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRoUG9wdXBWaWV3LnllYXJMaXN0
Vmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGVzdEFmdGVyU3dpcGlu
Z1VwLCBmYWxzZSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgaG92ZXJPdmVy
TW9udGhQb3B1cEJ1dHRvbigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVu
Y3Rpb24gdGVzdEFmdGVyU3dpcGluZ1VwKCkgeworICAgIHNob3VsZEJlVHJ1ZSgnY2hlY2tZZWFy
TGlzdFZpZXdTY3JvbGxPZmZzZXQoKSA8IDAnKTsKKyAgICBwb3B1cFdpbmRvdy5nbG9iYWwucGlj
a2VyLm1vbnRoUG9wdXBWaWV3LnllYXJMaXN0Vmlldy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVu
ZXIoJ3RvdWNoZW5kJywgdGVzdEFmdGVyU3dpcGluZ1VwLCBmYWxzZSk7CisgICAgd2luZG93Lmlu
dGVybmFscy5zZXR0aW5ncy5zZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChmYWxzZSk7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193517</attachid>
            <date>2013-03-18 03:32:19 -0700</date>
            <delta_ts>2013-03-18 04:04:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112256-20130318192811.patch</filename>
            <type>text/plain</type>
            <size>39113</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdkODdlMDMwMTA5Njg0
ODU5MGY1ODllY2ZkMmMxZGEzZmM3ZDIxOS4uNTM3YWZhODBlMmExNTFhZjhiOGE2ODU1YTY3MzFk
NGVhMzRhYjgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEzLTAzLTE0ICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCB0b3VjaCBzdXBw
b3J0IHRvIHRoZSBjYWxlbmRhciBwaWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMjI1NgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFt
dXJhLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jcmVhc2VzIHRoZSBoaXQgdGFyZ2V0IHNpemVz
IGZvciB0b3VjaCBhbmQgYWRkcyB0b3VjaCBldmVudAorICAgICAgICBzdXBwb3J0IHRvIHRoZSBz
Y3JvbGwgdmlldywgc2Nyb2xsIGJhciBhbmQgbmF2aWdhdGlvbiBidXR0b24uCisKKyAgICAgICAg
VGVzdHM6IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVu
ZGFyLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3Jt
L2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL21vbnRoLXBpY2tlci10b3VjaC1v
cGVyYXRpb25zLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9y
bXMvY2FsZW5kYXItcGlja2VyL3dlZWstcGlja2VyLXRvdWNoLW9wZXJhdGlvbnMuaHRtbAorCisg
ICAgICAgICogUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanM6CisgICAgICAg
IChoYXNJbmFjY3VyYXRlUG9pbnRpbmdEZXZpY2UpOgorICAgICAgICAoQW5pbWF0b3IpOiBTdXBl
ciBjbGFzcyBmb3IgVHJhbnNpdGlvbkFuaW1hdG9yIGFuZCBGbGluZ0dlc3R1cmVBbmltYXRvci4K
KyAgICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5zdGFydCk6CisgICAgICAgIChBbmltYXRvci5w
cm90b3R5cGUuc3RvcCk6CisgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUub25BbmltYXRpb25G
cmFtZSk6CisgICAgICAgIChUcmFuc2l0aW9uQW5pbWF0b3IpOiBTYW1lIGFzIHRoZSBvbGQgQW5p
bWF0b3IuIFRyYW5zaXRpb24gZnJvbSBvbmUgdmFsdWUgdG8gYW5vdGhlci4KKyAgICAgICAgKFRy
YW5zaXRpb25BbmltYXRvci5wcm90b3R5cGUuc2V0RnJvbSk6CisgICAgICAgIChUcmFuc2l0aW9u
QW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0KToKKyAgICAgICAgKFRyYW5zaXRpb25BbmltYXRvci5w
cm90b3R5cGUuc3RvcCk6CisgICAgICAgIChUcmFuc2l0aW9uQW5pbWF0b3IucHJvdG90eXBlLnNl
dFRvKToKKyAgICAgICAgKFRyYW5zaXRpb25BbmltYXRvci5wcm90b3R5cGUub25BbmltYXRpb25G
cmFtZSk6CisgICAgICAgIChGbGluZ0dlc3R1cmVBbmltYXRvcik6QW5pbWF0ZXMgdGhlIGZsaW5n
IHNjcm9sbC4gCisgICAgICAgIChGbGluZ0dlc3R1cmVBbmltYXRvci5wcm90b3R5cGUuX3ZhbHVl
QXRUaW1lKTogUmV0dXJucyB0aGUgdmFsdWUgYXQgdGhlIGdpdmVuIHRpbWUuCisgICAgICAgIChG
bGluZ0dlc3R1cmVBbmltYXRvci5wcm90b3R5cGUuX3ZlbG9jaXR5QXRUaW1lKTogUmV0dXJucyB0
aGUgdmFsdWUgY2hhbmdlIHZlbG9jaXR5IGF0IHRoZSBnaXZlbiB0aW1lLgorICAgICAgICAoRmxp
bmdHZXN0dXJlQW5pbWF0b3IucHJvdG90eXBlLl90aW1lQXRWZWxvY2l0eSk6IFJldHVybnMgdGhl
IHRpbWUgd2hlbiB0aGUgdmFsdWUgaXMgY2hhbmdpbmcgYXQgdGhlIGdpdmVuIHZlbG9jaXR5Lgor
ICAgICAgICAoRmxpbmdHZXN0dXJlQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0KToKKyAgICAgICAg
KEZsaW5nR2VzdHVyZUFuaW1hdG9yLnByb3RvdHlwZS5vbkFuaW1hdGlvbkZyYW1lKToKKyAgICAg
ICAgKFNjcm9sbFZpZXcpOiBBZGRlZCBzdXBwb3J0IGZvciB0b3VjaCBnZXN0dXJlIHNjcm9sbGlu
Zy4KKyAgICAgICAgKFNjcm9sbFZpZXcucHJvdG90eXBlLm9uVG91Y2hTdGFydCk6CisgICAgICAg
IChTY3JvbGxWaWV3LnByb3RvdHlwZS5vbldpbmRvd1RvdWNoTW92ZSk6CisgICAgICAgIChTY3Jv
bGxWaWV3LnByb3RvdHlwZS5vbldpbmRvd1RvdWNoRW5kKToKKyAgICAgICAgKFNjcm9sbFZpZXcu
cHJvdG90eXBlLm9uRmxpbmdHZXN0dXJlQW5pbWF0b3JTdGVwKToKKyAgICAgICAgKFNjcm9sbFZp
ZXcucHJvdG90eXBlLnNjcm9sbFRvKToKKyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIpOiBBZGRl
ZCBzdXBwb3J0IGZvciB0b3VjaC4KKyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBl
Lm9uVG91Y2hTdGFydCk6CisgICAgICAgIChTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5vbldp
bmRvd1RvdWNoTW92ZSk6CisgICAgICAgIChTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5vbldp
bmRvd1RvdWNoRW5kKToKKyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLl9zZXRU
aHVtYlBvc2l0aW9uRnJvbUV2ZW50UG9zaXRpb24pOiBBY2NlcHQgTW91c2VFdmVudCBvciBUb3Vj
aC4KKyAgICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLm9uTW91c2VEb3duKToKKyAg
ICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLm9uV2luZG93TW91c2VNb3ZlKToKKyAg
ICAgICAgKFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLm9uV2luZG93TW91c2VVcCk6CisgICAg
ICAgIChZZWFyTGlzdENlbGwpOgorICAgICAgICAoWWVhckxpc3RWaWV3KToKKyAgICAgICAgKFll
YXJMaXN0Vmlldy5wcm90b3R5cGUub25Ub3VjaFN0YXJ0KToKKyAgICAgICAgKFllYXJMaXN0Vmll
dy5wcm90b3R5cGUuX2FuaW1hdGVSb3cpOgorICAgICAgICAoQ2FsZW5kYXJOYXZpZ2F0aW9uQnV0
dG9uKTogQWRkIHRvdWNoIHN1cHBvcnQgZm9yIGxvbmcgcHJlc3MuCisgICAgICAgIChDYWxlbmRh
ck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uVG91Y2hTdGFydCk6CisgICAgICAgIChDYWxl
bmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uV2luZG93VG91Y2hFbmQpOgorICAgICAg
ICAoQ2FsZW5kYXJOYXZpZ2F0aW9uQnV0dG9uLnByb3RvdHlwZS5vbk1vdXNlRG93bik6CisgICAg
ICAgIChDYWxlbmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uV2luZG93TW91c2VVcCk6
CisgICAgICAgIChDYWxlbmRhclRhYmxlVmlldyk6IERpc2FibGUgdG91Y2ggZ2VzdHVyZSBzY3Jv
bGxpbmcgaW4gdGhlIGNhbGVuZGFyIHRhYmxlLgorCiAyMDEzLTAzLTE3ICBBbGV4ZXkgUHJvc2t1
cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIEVuY2Fwc3VsYXRlIFBsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsIGEgbGl0dGxlIGJldHRlciB5ZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzIGIvU291cmNlL1dl
YkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMKaW5kZXggNjJlMzhj
YTY3MjBjZTgzZDU1M2NhMmJiZTEwNjg1OTNhMzUxOTgzNS4uODhjOTRhNDBkMjEyNzY0ODU5NjA3
MWU4MDBkZWNlYjIxOGFjYWFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2Vz
L3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvUmVzb3Vy
Y2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMKQEAgLTI5LDkgKzI5LDYgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotLy8gRklYTUU6Ci0vLyAgLSBUb3VjaCBldmVudAotLy8gIC0gQWRq
dXN0IGhpdCB0YXJnZXQgc2l6ZSBmb3IgdG91Y2gKIAogLyoqCiAgKiBAZW51bSB7bnVtYmVyfQpA
QCAtNjgsNiArNjUsMTMgQEAgdmFyIGdsb2JhbCA9IHsKIC8vIFV0aWxpdHkgZnVuY3Rpb25zCiAK
IC8qKgorICogQHJldHVybiB7IWJvb2x9CisgKi8KK2Z1bmN0aW9uIGhhc0luYWNjdXJhdGVQb2lu
dGluZ0RldmljZSgpIHsKKyAgICByZXR1cm4gbWF0Y2hNZWRpYSgiKHBvaW50ZXI6IGNvYXJzZSki
KS5tYXRjaGVzOworfQorCisvKioKICAqIEByZXR1cm4geyFzdHJpbmd9IGxvd2VyY2FzZSBsb2Nh
bGUgbmFtZS4gZS5nLiAiZW4tdXMiCiAgKi8KIGZ1bmN0aW9uIGdldExvY2FsZSgpIHsKQEAgLTEw
MDMsNiArMTAwNyw3MSBAQCBmdW5jdGlvbiBBbmltYXRvcigpIHsKICAgICB0aGlzLmlkID0gQW5p
bWF0b3IuX2xhc3RJZCsrOwogICAgIC8qKgogICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAgICAq
LworICAgIHRoaXMuZHVyYXRpb24gPSAxMDA7CisgICAgLyoqCisgICAgICogQHR5cGUgez9mdW5j
dGlvbn0KKyAgICAgKi8KKyAgICB0aGlzLnN0ZXAgPSBudWxsOworICAgIC8qKgorICAgICAqIEB0
eXBlIHshYm9vbGVhbn0KKyAgICAgKiBAcHJvdGVjdGVkCisgICAgICovCisgICAgdGhpcy5faXNS
dW5uaW5nID0gZmFsc2U7CisgICAgLyoqCisgICAgICogQHR5cGUgeyFudW1iZXJ9CisgICAgICov
CisgICAgdGhpcy5jdXJyZW50VmFsdWUgPSAwOworICAgIC8qKgorICAgICAqIEB0eXBlIHshbnVt
YmVyfQorICAgICAqIEBwcm90ZWN0ZWQKKyAgICAgKi8KKyAgICB0aGlzLl9sYXN0U3RlcFRpbWUg
PSAwOworfQorCitBbmltYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEV2ZW50RW1pdHRl
ci5wcm90b3R5cGUpOworCitBbmltYXRvci5fbGFzdElkID0gMDsKKworQW5pbWF0b3IuRXZlbnRU
eXBlRGlkQW5pbWF0aW9uU3RvcCA9ICJkaWRBbmltYXRpb25TdG9wIjsKKworLyoqCisgKiBAcmV0
dXJuIHshYm9vbGVhbn0KKyAqLworQW5pbWF0b3IucHJvdG90eXBlLmlzUnVubmluZyA9IGZ1bmN0
aW9uKCkgeworICAgIHJldHVybiB0aGlzLl9pc1J1bm5pbmc7Cit9OworCitBbmltYXRvci5wcm90
b3R5cGUuc3RhcnQgPSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLl9sYXN0U3RlcFRpbWUgPSBEYXRl
Lm5vdygpOworICAgIHRoaXMuX2lzUnVubmluZyA9IHRydWU7CisgICAgQW5pbWF0aW9uTWFuYWdl
ci5zaGFyZWQuYWRkKHRoaXMpOworfTsKKworQW5pbWF0b3IucHJvdG90eXBlLnN0b3AgPSBmdW5j
dGlvbigpIHsKKyAgICBpZiAoIXRoaXMuX2lzUnVubmluZykKKyAgICAgICAgcmV0dXJuOworICAg
IHRoaXMuX2lzUnVubmluZyA9IGZhbHNlOworICAgIEFuaW1hdGlvbk1hbmFnZXIuc2hhcmVkLnJl
bW92ZSh0aGlzKTsKKyAgICB0aGlzLmRpc3BhdGNoRXZlbnQoQW5pbWF0b3IuRXZlbnRUeXBlRGlk
QW5pbWF0aW9uU3RvcCwgdGhpcyk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7IW51bWJlcn0gbm93
CisgKi8KK0FuaW1hdG9yLnByb3RvdHlwZS5vbkFuaW1hdGlvbkZyYW1lID0gZnVuY3Rpb24obm93
KSB7CisgICAgdGhpcy5fbGFzdFN0ZXBUaW1lID0gbm93OworICAgIHRoaXMuc3RlcCh0aGlzKTsK
K307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyBBbmltYXRvcgorICovCitm
dW5jdGlvbiBUcmFuc2l0aW9uQW5pbWF0b3IoKSB7CisgICAgQW5pbWF0b3IuY2FsbCh0aGlzKTsK
KyAgICAvKioKKyAgICAgKiBAdHlwZSB7IW51bWJlcn0KICAgICAgKiBAcHJvdGVjdGVkCiAgICAg
ICovCiAgICAgdGhpcy5fZnJvbSA9IDA7CkBAIC0xMDE5LDkxICsxMDg4LDE0NCBAQCBmdW5jdGlv
biBBbmltYXRvcigpIHsKICAgICAvKioKICAgICAgKiBAdHlwZSB7IW51bWJlcn0KICAgICAgKi8K
LSAgICB0aGlzLmR1cmF0aW9uID0gMTAwOworICAgIHRoaXMucHJvZ3Jlc3MgPSAwLjA7CiAgICAg
LyoqCi0gICAgICogQHR5cGUgez9mdW5jdGlvbn0KKyAgICAgKiBAdHlwZSB7IWZ1bmN0aW9ufQog
ICAgICAqLwotICAgIHRoaXMuc3RlcCA9IG51bGw7CisgICAgdGhpcy50aW1pbmdGdW5jdGlvbiA9
IEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLkxpbmVhcjsKK30KKworVHJhbnNpdGlvbkFuaW1hdG9y
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQW5pbWF0b3IucHJvdG90eXBlKTsKKworLyoqCisg
KiBAcGFyYW0geyFudW1iZXJ9IHZhbHVlCisgKi8KK1RyYW5zaXRpb25BbmltYXRvci5wcm90b3R5
cGUuc2V0RnJvbSA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgdGhpcy5fZnJvbSA9IHZhbHVlOwor
ICAgIHRoaXMuX2RlbHRhID0gdGhpcy5fdG8gLSB0aGlzLl9mcm9tOworfTsKKworVHJhbnNpdGlv
bkFuaW1hdG9yLnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0aW9uKCkgeworICAgIGNvbnNvbGUuYXNz
ZXJ0KGlzRmluaXRlKHRoaXMuZHVyYXRpb24pKTsKKyAgICB0aGlzLnByb2dyZXNzID0gMC4wOwor
ICAgIHRoaXMuY3VycmVudFZhbHVlID0gdGhpcy5fZnJvbTsKKyAgICBBbmltYXRvci5wcm90b3R5
cGUuc3RhcnQuY2FsbCh0aGlzKTsKK307CisKKy8qKgorICogQHBhcmFtIHshbnVtYmVyfSB2YWx1
ZQorICovCitUcmFuc2l0aW9uQW5pbWF0b3IucHJvdG90eXBlLnNldFRvID0gZnVuY3Rpb24odmFs
dWUpIHsKKyAgICB0aGlzLl90byA9IHZhbHVlOworICAgIHRoaXMuX2RlbHRhID0gdGhpcy5fdG8g
LSB0aGlzLl9mcm9tOworfTsKKworLyoqCisgKiBAcGFyYW0geyFudW1iZXJ9IG5vdworICovCitU
cmFuc2l0aW9uQW5pbWF0b3IucHJvdG90eXBlLm9uQW5pbWF0aW9uRnJhbWUgPSBmdW5jdGlvbihu
b3cpIHsKKyAgICB0aGlzLnByb2dyZXNzICs9IChub3cgLSB0aGlzLl9sYXN0U3RlcFRpbWUpIC8g
dGhpcy5kdXJhdGlvbjsKKyAgICB0aGlzLnByb2dyZXNzID0gTWF0aC5taW4oMS4wLCB0aGlzLnBy
b2dyZXNzKTsKKyAgICB0aGlzLl9sYXN0U3RlcFRpbWUgPSBub3c7CisgICAgdGhpcy5jdXJyZW50
VmFsdWUgPSB0aGlzLnRpbWluZ0Z1bmN0aW9uKHRoaXMucHJvZ3Jlc3MpICogdGhpcy5fZGVsdGEg
KyB0aGlzLl9mcm9tOworICAgIHRoaXMuc3RlcCh0aGlzKTsKKyAgICBpZiAodGhpcy5wcm9ncmVz
cyA9PT0gMS4wKSB7CisgICAgICAgIHRoaXMuc3RvcCgpOworICAgICAgICByZXR1cm47CisgICAg
fQorfTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIEFuaW1hdG9yCisgKiBA
cGFyYW0geyFudW1iZXJ9IGluaXRpYWxWZWxvY2l0eQorICogQHBhcmFtIHshbnVtYmVyfSBpbml0
aWFsVmFsdWUKKyAqLworZnVuY3Rpb24gRmxpbmdHZXN0dXJlQW5pbWF0b3IoaW5pdGlhbFZlbG9j
aXR5LCBpbml0aWFsVmFsdWUpIHsKKyAgICBBbmltYXRvci5jYWxsKHRoaXMpOworICAgIC8qKgor
ICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAgICAqLworICAgIHRoaXMuaW5pdGlhbFZlbG9jaXR5
ID0gaW5pdGlhbFZlbG9jaXR5OworICAgIC8qKgorICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAg
ICAqLworICAgIHRoaXMuaW5pdGlhbFZhbHVlID0gaW5pdGlhbFZhbHVlOwogICAgIC8qKgogICAg
ICAqIEB0eXBlIHshbnVtYmVyfQogICAgICAqIEBwcm90ZWN0ZWQKICAgICAgKi8KLSAgICB0aGlz
Ll9sYXN0U3RlcFRpbWUgPSAwOworICAgIHRoaXMuX2VsYXBzZWRUaW1lID0gMDsKKyAgICB2YXIg
c3RhcnRWZWxvY2l0eSA9IE1hdGguYWJzKHRoaXMuaW5pdGlhbFZlbG9jaXR5KTsKKyAgICBpZiAo
c3RhcnRWZWxvY2l0eSA+IHRoaXMuX3ZlbG9jaXR5QXRUaW1lKDApKQorICAgICAgICBzdGFydFZl
bG9jaXR5ID0gdGhpcy5fdmVsb2NpdHlBdFRpbWUoMCk7CisgICAgaWYgKHN0YXJ0VmVsb2NpdHkg
PCAwKQorICAgICAgICBzdGFydFZlbG9jaXR5ID0gMDsKICAgICAvKioKICAgICAgKiBAdHlwZSB7
IW51bWJlcn0KKyAgICAgKiBAcHJvdGVjdGVkCiAgICAgICovCi0gICAgdGhpcy5wcm9ncmVzcyA9
IDAuMDsKKyAgICB0aGlzLl90aW1lT2Zmc2V0ID0gdGhpcy5fdGltZUF0VmVsb2NpdHkoc3RhcnRW
ZWxvY2l0eSk7CiAgICAgLyoqCiAgICAgICogQHR5cGUgeyFudW1iZXJ9CiAgICAgICogQHByb3Rl
Y3RlZAogICAgICAqLwotICAgIHRoaXMuX2lzUnVubmluZyA9IGZhbHNlOworICAgIHRoaXMuX3Bv
c2l0aW9uT2Zmc2V0ID0gdGhpcy5fdmFsdWVBdFRpbWUodGhpcy5fdGltZU9mZnNldCk7CiAgICAg
LyoqCi0gICAgICogQHR5cGUgeyFmdW5jdGlvbn0KKyAgICAgKiBAdHlwZSB7IW51bWJlcn0KICAg
ICAgKi8KLSAgICB0aGlzLnRpbWluZ0Z1bmN0aW9uID0gQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24u
TGluZWFyOworICAgIHRoaXMuZHVyYXRpb24gPSB0aGlzLl90aW1lQXRWZWxvY2l0eSgwKTsKIH0K
IAotQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFdmVudEVtaXR0ZXIucHJvdG90
eXBlKTsKK0ZsaW5nR2VzdHVyZUFuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQW5p
bWF0b3IucHJvdG90eXBlKTsKIAotQW5pbWF0b3IuX2xhc3RJZCA9IDA7Ci0KLUFuaW1hdG9yLkV2
ZW50VHlwZURpZEFuaW1hdGlvblN0b3AgPSAiZGlkQW5pbWF0aW9uU3RvcCI7CisvLyBWZWxvY2l0
eSBpcyBzdWJqZWN0IHRvIGV4cG9uZW50aWFsIGRlY2F5LiBUaGVzZSBwYXJhbWV0ZXJzIGFyZSBj
b2VmZmljaWVudHMKKy8vIHRoYXQgZGV0ZXJtaW5lIHRoZSBjdXJ2ZS4KK0ZsaW5nR2VzdHVyZUFu
aW1hdG9yLl9QMCA9IC01NzA3LjYyOworRmxpbmdHZXN0dXJlQW5pbWF0b3IuX1AxID0gMC4xNzI7
CitGbGluZ0dlc3R1cmVBbmltYXRvci5fUDIgPSAwLjAwMzc7CiAKIC8qKgotICogQHJldHVybiB7
IWJvb2xlYW59CisgKiBAcGFyYW0geyFudW1iZXJ9IHQKICAqLwotQW5pbWF0b3IucHJvdG90eXBl
LmlzUnVubmluZyA9IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiB0aGlzLl9pc1J1bm5pbmc7CitG
bGluZ0dlc3R1cmVBbmltYXRvci5wcm90b3R5cGUuX3ZhbHVlQXRUaW1lID0gZnVuY3Rpb24odCkg
eworICAgIHJldHVybiBGbGluZ0dlc3R1cmVBbmltYXRvci5fUDAgKiBNYXRoLmV4cCgtRmxpbmdH
ZXN0dXJlQW5pbWF0b3IuX1AyICogdCkgLSBGbGluZ0dlc3R1cmVBbmltYXRvci5fUDEgKiB0IC0g
RmxpbmdHZXN0dXJlQW5pbWF0b3IuX1AwOwogfTsKIAogLyoqCi0gKiBAcGFyYW0geyFudW1iZXJ9
IHZhbHVlCisgKiBAcGFyYW0geyFudW1iZXJ9IHQKICAqLwotQW5pbWF0b3IucHJvdG90eXBlLnNl
dEZyb20gPSBmdW5jdGlvbih2YWx1ZSkgewotICAgIHRoaXMuX2Zyb20gPSB2YWx1ZTsKLSAgICB0
aGlzLl9kZWx0YSA9IHRoaXMuX3RvIC0gdGhpcy5fZnJvbTsKK0ZsaW5nR2VzdHVyZUFuaW1hdG9y
LnByb3RvdHlwZS5fdmVsb2NpdHlBdFRpbWUgPSBmdW5jdGlvbih0KSB7CisgICAgcmV0dXJuIC1G
bGluZ0dlc3R1cmVBbmltYXRvci5fUDAgKiBGbGluZ0dlc3R1cmVBbmltYXRvci5fUDIgKiBNYXRo
LmV4cCgtRmxpbmdHZXN0dXJlQW5pbWF0b3IuX1AyICogdCkgLSBGbGluZ0dlc3R1cmVBbmltYXRv
ci5fUDE7CiB9OwogCiAvKioKLSAqIEBwYXJhbSB7IW51bWJlcn0gdmFsdWUKKyAqIEBwYXJhbSB7
IW51bWJlcn0gdgogICovCi1BbmltYXRvci5wcm90b3R5cGUuc2V0VG8gPSBmdW5jdGlvbih2YWx1
ZSkgewotICAgIHRoaXMuX3RvID0gdmFsdWU7Ci0gICAgdGhpcy5fZGVsdGEgPSB0aGlzLl90byAt
IHRoaXMuX2Zyb207CitGbGluZ0dlc3R1cmVBbmltYXRvci5wcm90b3R5cGUuX3RpbWVBdFZlbG9j
aXR5ID0gZnVuY3Rpb24odikgeworICAgIHJldHVybiAtTWF0aC5sb2coKHYgKyBGbGluZ0dlc3R1
cmVBbmltYXRvci5fUDEpIC8gKC1GbGluZ0dlc3R1cmVBbmltYXRvci5fUDAgKiBGbGluZ0dlc3R1
cmVBbmltYXRvci5fUDIpKSAvIEZsaW5nR2VzdHVyZUFuaW1hdG9yLl9QMjsKIH07CiAKLUFuaW1h
dG9yLnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0aW9uKCkgeworRmxpbmdHZXN0dXJlQW5pbWF0b3Iu
cHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24oKSB7CiAgICAgdGhpcy5fbGFzdFN0ZXBUaW1lID0g
RGF0ZS5ub3coKTsKLSAgICB0aGlzLnByb2dyZXNzID0gMC4wOwotICAgIHRoaXMuX2lzUnVubmlu
ZyA9IHRydWU7Ci0gICAgdGhpcy5jdXJyZW50VmFsdWUgPSB0aGlzLl9mcm9tOwotICAgIEFuaW1h
dGlvbk1hbmFnZXIuc2hhcmVkLmFkZCh0aGlzKTsKLX07Ci0KLUFuaW1hdG9yLnByb3RvdHlwZS5z
dG9wID0gZnVuY3Rpb24oKSB7Ci0gICAgaWYgKCF0aGlzLl9pc1J1bm5pbmcpCi0gICAgICAgIHJl
dHVybjsKLSAgICB0aGlzLl9pc1J1bm5pbmcgPSBmYWxzZTsKLSAgICB0aGlzLmN1cnJlbnRWYWx1
ZSA9IHRoaXMuX3RvOwotICAgIHRoaXMuc3RlcCh0aGlzKTsKLSAgICBBbmltYXRpb25NYW5hZ2Vy
LnNoYXJlZC5yZW1vdmUodGhpcyk7Ci0gICAgdGhpcy5kaXNwYXRjaEV2ZW50KEFuaW1hdG9yLkV2
ZW50VHlwZURpZEFuaW1hdGlvblN0b3AsIHRoaXMpOworICAgIEFuaW1hdG9yLnByb3RvdHlwZS5z
dGFydC5jYWxsKHRoaXMpOwogfTsKIAogLyoqCiAgKiBAcGFyYW0geyFudW1iZXJ9IG5vdwogICov
Ci1BbmltYXRvci5wcm90b3R5cGUub25BbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKG5vdykgewot
ICAgIHRoaXMucHJvZ3Jlc3MgKz0gKG5vdyAtIHRoaXMuX2xhc3RTdGVwVGltZSkgLyB0aGlzLmR1
cmF0aW9uOwotICAgIGlmICh0aGlzLnByb2dyZXNzID49IDEuMCkgewotICAgICAgICB0aGlzLnBy
b2dyZXNzID0gMS4wOworRmxpbmdHZXN0dXJlQW5pbWF0b3IucHJvdG90eXBlLm9uQW5pbWF0aW9u
RnJhbWUgPSBmdW5jdGlvbihub3cpIHsKKyAgICB0aGlzLl9lbGFwc2VkVGltZSArPSBub3cgLSB0
aGlzLl9sYXN0U3RlcFRpbWU7CisgICAgdGhpcy5fbGFzdFN0ZXBUaW1lID0gbm93OworICAgIGlm
ICh0aGlzLl9lbGFwc2VkVGltZSArIHRoaXMuX3RpbWVPZmZzZXQgPj0gdGhpcy5kdXJhdGlvbikg
ewogICAgICAgICB0aGlzLnN0b3AoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICB0aGlz
LmN1cnJlbnRWYWx1ZSA9IHRoaXMudGltaW5nRnVuY3Rpb24odGhpcy5wcm9ncmVzcykgKiB0aGlz
Ll9kZWx0YSArIHRoaXMuX2Zyb207CisgICAgdmFyIHBvc2l0aW9uID0gdGhpcy5fdmFsdWVBdFRp
bWUodGhpcy5fZWxhcHNlZFRpbWUgKyB0aGlzLl90aW1lT2Zmc2V0KSAtIHRoaXMuX3Bvc2l0aW9u
T2Zmc2V0OworICAgIGlmICh0aGlzLmluaXRpYWxWZWxvY2l0eSA8IDApCisgICAgICAgIHBvc2l0
aW9uID0gLXBvc2l0aW9uOworICAgIHRoaXMuY3VycmVudFZhbHVlID0gcG9zaXRpb24gKyB0aGlz
LmluaXRpYWxWYWx1ZTsKICAgICB0aGlzLnN0ZXAodGhpcyk7Ci0gICAgdGhpcy5fbGFzdFN0ZXBU
aW1lID0gbm93OwogfTsKIAogLyoqCkBAIC0xMjA5LDE1ICsxMzMxLDI2IEBAIGZ1bmN0aW9uIFNj
cm9sbFZpZXcoKSB7CiAgICAgICogQHR5cGUge0FuaW1hdG9yfQogICAgICAqIEBwcm90ZWN0ZWQK
ICAgICAgKi8KLSAgICB0aGlzLl9zY3JvbGxBbmltYXRvciA9IG5ldyBBbmltYXRvcigpOwotICAg
IHRoaXMuX3Njcm9sbEFuaW1hdG9yLnN0ZXAgPSB0aGlzLm9uU2Nyb2xsQW5pbWF0b3JTdGVwOwot
CisgICAgdGhpcy5fc2Nyb2xsQW5pbWF0b3IgPSBudWxsOwogICAgIC8qKgogICAgICAqIEB0eXBl
IHs/T2JqZWN0fQogICAgICAqLwogICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsOworICAgIC8qKgor
ICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAgICAqLworICAgIHRoaXMuX2xhc3RUb3VjaFBvc2l0
aW9uID0gMDsKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7IW51bWJlcn0KKyAgICAgKi8KKyAgICB0
aGlzLl9sYXN0VG91Y2hWZWxvY2l0eSA9IDA7CisgICAgLyoqCisgICAgICogQHR5cGUgeyFudW1i
ZXJ9CisgICAgICovCisgICAgdGhpcy5fbGFzdFRvdWNoVGltZVN0YW1wID0gMDsKIAogICAgIHRo
aXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwgdGhpcy5vbk1vdXNlV2hl
ZWwsIGZhbHNlKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFy
dCIsIHRoaXMub25Ub3VjaFN0YXJ0LCBmYWxzZSk7CiAKICAgICAvKioKICAgICAgKiBUaGUgY29u
dGVudCBvZmZzZXQgaXMgcGFydGl0aW9uZWQgc28gdGhlIGl0IGNhbiBnbyBiZXlvbmQgdGhlIENT
UyBsaW1pdApAQCAtMTIzNSw2ICsxMzY4LDU1IEBAIFNjcm9sbFZpZXcuQ2xhc3NOYW1lU2Nyb2xs
VmlldyA9ICJzY3JvbGwtdmlldyI7CiBTY3JvbGxWaWV3LkNsYXNzTmFtZVNjcm9sbFZpZXdDb250
ZW50ID0gInNjcm9sbC12aWV3LWNvbnRlbnQiOwogCiAvKioKKyAqIEBwYXJhbSB7IUV2ZW50fSBl
dmVudAorICovCitTY3JvbGxWaWV3LnByb3RvdHlwZS5vblRvdWNoU3RhcnQgPSBmdW5jdGlvbihl
dmVudCkgeworICAgIHZhciB0b3VjaCA9IGV2ZW50LnRvdWNoZXNbMF07CisgICAgdGhpcy5fbGFz
dFRvdWNoUG9zaXRpb24gPSB0b3VjaC5jbGllbnRZOworICAgIHRoaXMuX2xhc3RUb3VjaFZlbG9j
aXR5ID0gMDsKKyAgICB0aGlzLl9sYXN0VG91Y2hUaW1lU3RhbXAgPSBldmVudC50aW1lU3RhbXA7
CisgICAgaWYgKHRoaXMuX3Njcm9sbEFuaW1hdG9yKQorICAgICAgICB0aGlzLl9zY3JvbGxBbmlt
YXRvci5zdG9wKCk7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsIHRo
aXMub25XaW5kb3dUb3VjaE1vdmUsIGZhbHNlKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigidG91Y2hlbmQiLCB0aGlzLm9uV2luZG93VG91Y2hFbmQsIGZhbHNlKTsKK307CisKKy8qKgor
ICogQHBhcmFtIHshRXZlbnR9IGV2ZW50CisgKi8KK1Njcm9sbFZpZXcucHJvdG90eXBlLm9uV2lu
ZG93VG91Y2hNb3ZlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB2YXIgdG91Y2ggPSBldmVudC50
b3VjaGVzWzBdOworICAgIHZhciBkZWx0YVRpbWUgPSBldmVudC50aW1lU3RhbXAgLSB0aGlzLl9s
YXN0VG91Y2hUaW1lU3RhbXA7CisgICAgdmFyIGRlbHRhWSA9IHRoaXMuX2xhc3RUb3VjaFBvc2l0
aW9uIC0gdG91Y2guY2xpZW50WTsKKyAgICB0aGlzLnNjcm9sbEJ5KGRlbHRhWSwgZmFsc2UpOwor
ICAgIHRoaXMuX2xhc3RUb3VjaFZlbG9jaXR5ID0gZGVsdGFZIC8gZGVsdGFUaW1lOworICAgIHRo
aXMuX2xhc3RUb3VjaFBvc2l0aW9uID0gdG91Y2guY2xpZW50WTsKKyAgICB0aGlzLl9sYXN0VG91
Y2hUaW1lU3RhbXAgPSBldmVudC50aW1lU3RhbXA7CisgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9u
KCk7CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK307CisKKy8qKgorICogQHBhcmFtIHsh
RXZlbnR9IGV2ZW50CisgKi8KK1Njcm9sbFZpZXcucHJvdG90eXBlLm9uV2luZG93VG91Y2hFbmQg
PSBmdW5jdGlvbihldmVudCkgeworICAgIGlmIChNYXRoLmFicyh0aGlzLl9sYXN0VG91Y2hWZWxv
Y2l0eSkgPiAwLjAxKSB7CisgICAgICAgIHRoaXMuX3Njcm9sbEFuaW1hdG9yID0gbmV3IEZsaW5n
R2VzdHVyZUFuaW1hdG9yKHRoaXMuX2xhc3RUb3VjaFZlbG9jaXR5LCB0aGlzLl9jb250ZW50T2Zm
c2V0KTsKKyAgICAgICAgdGhpcy5fc2Nyb2xsQW5pbWF0b3Iuc3RlcCA9IHRoaXMub25GbGluZ0dl
c3R1cmVBbmltYXRvclN0ZXA7CisgICAgICAgIHRoaXMuX3Njcm9sbEFuaW1hdG9yLnN0YXJ0KCk7
CisgICAgfQorICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCB0aGlz
Lm9uV2luZG93VG91Y2hNb3ZlLCBmYWxzZSk7CisgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVu
ZXIoInRvdWNoZW5kIiwgdGhpcy5vbldpbmRvd1RvdWNoRW5kLCBmYWxzZSk7Cit9OworCisvKioK
KyAqIEBwYXJhbSB7IUFuaW1hdG9yfSBhbmltYXRvcgorICovCitTY3JvbGxWaWV3LnByb3RvdHlw
ZS5vbkZsaW5nR2VzdHVyZUFuaW1hdG9yU3RlcCA9IGZ1bmN0aW9uKGFuaW1hdG9yKSB7CisgICAg
dGhpcy5zY3JvbGxUbyhhbmltYXRvci5jdXJyZW50VmFsdWUsIGZhbHNlKTsKK307CisKKy8qKgog
ICogQHJldHVybiB7IUFuaW1hdG9yfQogICovCiBTY3JvbGxWaWV3LnByb3RvdHlwZS5zY3JvbGxB
bmltYXRvciA9IGZ1bmN0aW9uKCkgewpAQCAtMTI5Niw2ICsxNDc4LDEwIEBAIFNjcm9sbFZpZXcu
cHJvdG90eXBlLnNjcm9sbFRvID0gZnVuY3Rpb24ob2Zmc2V0LCBhbmltYXRlKSB7CiAgICAgICAg
IHRoaXMuc2V0Q29udGVudE9mZnNldChvZmZzZXQpOwogICAgICAgICByZXR1cm47CiAgICAgfQor
ICAgIGlmICh0aGlzLl9zY3JvbGxBbmltYXRvcikKKyAgICAgICAgdGhpcy5fc2Nyb2xsQW5pbWF0
b3Iuc3RvcCgpOworICAgIHRoaXMuX3Njcm9sbEFuaW1hdG9yID0gbmV3IFRyYW5zaXRpb25Bbmlt
YXRvcigpOworICAgIHRoaXMuX3Njcm9sbEFuaW1hdG9yLnN0ZXAgPSB0aGlzLm9uU2Nyb2xsQW5p
bWF0b3JTdGVwOwogICAgIHRoaXMuX3Njcm9sbEFuaW1hdG9yLnNldEZyb20odGhpcy5fY29udGVu
dE9mZnNldCk7CiAgICAgdGhpcy5fc2Nyb2xsQW5pbWF0b3Iuc2V0VG8ob2Zmc2V0KTsKICAgICB0
aGlzLl9zY3JvbGxBbmltYXRvci5kdXJhdGlvbiA9IDMwMDsKQEAgLTE3NjQsNiArMTk1MCw3IEBA
IGZ1bmN0aW9uIFNjcnViYnlTY3JvbGxCYXIoc2Nyb2xsVmlldykgewogICAgIHRoaXMuX3RpbWVy
ID0gbnVsbDsKICAgICAKICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vk
b3duIiwgdGhpcy5vbk1vdXNlRG93biwgZmFsc2UpOworICAgIHRoaXMuZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwgdGhpcy5vblRvdWNoU3RhcnQsIGZhbHNlKTsKIH0KIAog
U2NydWJieVNjcm9sbEJhci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFZpZXcucHJvdG90eXBl
KTsKQEAgLTE3NzUsNiArMTk2Miw0OCBAQCBTY3J1YmJ5U2Nyb2xsQmFyLkNsYXNzTmFtZVNjcnVi
YnlTY3JvbGxCYXIgPSAic2NydWJieS1zY3JvbGwtYmFyIjsKIFNjcnViYnlTY3JvbGxCYXIuQ2xh
c3NOYW1lU2NydWJieVNjcm9sbFRodW1iID0gInNjcnViYnktc2Nyb2xsLXRodW1iIjsKIAogLyoq
CisgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKKyAqLworU2NydWJieVNjcm9sbEJhci5wcm90b3R5
cGUub25Ub3VjaFN0YXJ0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB2YXIgdG91Y2ggPSBldmVu
dC50b3VjaGVzWzBdOworICAgIHRoaXMuX3NldFRodW1iUG9zaXRpb25Gcm9tRXZlbnRQb3NpdGlv
bih0b3VjaC5jbGllbnRZKTsKKyAgICBpZiAodGhpcy5fdGh1bWJTdHlsZVRvcEFuaW1hdG9yKQor
ICAgICAgICB0aGlzLl90aHVtYlN0eWxlVG9wQW5pbWF0b3Iuc3RvcCgpOworICAgIHRoaXMuX3Rp
bWVyID0gc2V0SW50ZXJ2YWwodGhpcy5vblNjcm9sbFRpbWVyLCBTY3J1YmJ5U2Nyb2xsQmFyLlNj
cm9sbEludGVydmFsKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwg
dGhpcy5vbldpbmRvd1RvdWNoTW92ZSwgZmFsc2UpOworICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJ0b3VjaGVuZCIsIHRoaXMub25XaW5kb3dUb3VjaEVuZCwgZmFsc2UpOworICAgIGV2ZW50
LnN0b3BQcm9wYWdhdGlvbigpOworICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cit9OworCisv
KioKKyAqIEBwYXJhbSB7P0V2ZW50fSBldmVudAorICovCitTY3J1YmJ5U2Nyb2xsQmFyLnByb3Rv
dHlwZS5vbldpbmRvd1RvdWNoTW92ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgdmFyIHRvdWNo
ID0gZXZlbnQudG91Y2hlc1swXTsKKyAgICB0aGlzLl9zZXRUaHVtYlBvc2l0aW9uRnJvbUV2ZW50
UG9zaXRpb24odG91Y2guY2xpZW50WSk7CisgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Cisg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK307CisKKy8qKgorICogQHBhcmFtIHs/RXZlbnR9
IGV2ZW50CisgKi8KK1NjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLm9uV2luZG93VG91Y2hFbmQg
PSBmdW5jdGlvbihldmVudCkgeworICAgIHRoaXMuX3RodW1iU3R5bGVUb3BBbmltYXRvciA9IG5l
dyBUcmFuc2l0aW9uQW5pbWF0b3IoKTsKKyAgICB0aGlzLl90aHVtYlN0eWxlVG9wQW5pbWF0b3Iu
c3RlcCA9IHRoaXMub25UaHVtYlN0eWxlVG9wQW5pbWF0aW9uU3RlcDsKKyAgICB0aGlzLl90aHVt
YlN0eWxlVG9wQW5pbWF0b3Iuc2V0RnJvbSh0aGlzLnRodW1iLm9mZnNldFRvcCk7CisgICAgdGhp
cy5fdGh1bWJTdHlsZVRvcEFuaW1hdG9yLnNldFRvKCh0aGlzLl9oZWlnaHQgLSB0aGlzLl90aHVt
YkhlaWdodCkgLyAyKTsKKyAgICB0aGlzLl90aHVtYlN0eWxlVG9wQW5pbWF0b3IudGltaW5nRnVu
Y3Rpb24gPSBBbmltYXRpb25UaW1pbmdGdW5jdGlvbi5FYXNlSW5PdXQ7CisgICAgdGhpcy5fdGh1
bWJTdHlsZVRvcEFuaW1hdG9yLmR1cmF0aW9uID0gMTAwOworICAgIHRoaXMuX3RodW1iU3R5bGVU
b3BBbmltYXRvci5zdGFydCgpOworCisgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRv
dWNobW92ZSIsIHRoaXMub25XaW5kb3dUb3VjaE1vdmUsIGZhbHNlKTsKKyAgICB3aW5kb3cucmVt
b3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCB0aGlzLm9uV2luZG93VG91Y2hFbmQsIGZhbHNl
KTsKKyAgICBjbGVhckludGVydmFsKHRoaXMuX3RpbWVyKTsKK307CisKKy8qKgogICogQHJldHVy
biB7IW51bWJlcn0gSGVpZ2h0IG9mIHRoZSB2aWV3IGluIHBpeGVscy4KICAqLwogU2NydWJieVNj
cm9sbEJhci5wcm90b3R5cGUuaGVpZ2h0ID0gZnVuY3Rpb24oKSB7CkBAIC0xODA2LDEyICsyMDM1
LDEyIEBAIFNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLnNldFRodW1iSGVpZ2h0ID0gZnVuY3Rp
b24oaGVpZ2h0KSB7CiB9OwogCiAvKioKLSAqIEBwYXJhbSB7P0V2ZW50fSBldmVudAorICogQHBh
cmFtIHtudW1iZXJ9IHBvc2l0aW9uCiAgKi8KLVNjcnViYnlTY3JvbGxCYXIucHJvdG90eXBlLl9z
ZXRUaHVtYlBvc2l0aW9uRnJvbUV2ZW50ID0gZnVuY3Rpb24oZXZlbnQpIHsKK1NjcnViYnlTY3Jv
bGxCYXIucHJvdG90eXBlLl9zZXRUaHVtYlBvc2l0aW9uRnJvbUV2ZW50UG9zaXRpb24gPSBmdW5j
dGlvbihwb3NpdGlvbikgewogICAgIHZhciB0aHVtYk1pbiA9IFNjcnViYnlTY3JvbGxCYXIuVGh1
bWJNYXJnaW47CiAgICAgdmFyIHRodW1iTWF4ID0gdGhpcy5faGVpZ2h0IC0gdGhpcy5fdGh1bWJI
ZWlnaHQgLSBTY3J1YmJ5U2Nyb2xsQmFyLlRodW1iTWFyZ2luICogMjsKLSAgICB2YXIgeSA9IGV2
ZW50LmNsaWVudFkgLSB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIC0g
dGhpcy5lbGVtZW50LmNsaWVudFRvcCArIHRoaXMuZWxlbWVudC5zY3JvbGxUb3A7CisgICAgdmFy
IHkgPSBwb3NpdGlvbiAtIHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3Ag
LSB0aGlzLmVsZW1lbnQuY2xpZW50VG9wICsgdGhpcy5lbGVtZW50LnNjcm9sbFRvcDsKICAgICB2
YXIgdGh1bWJQb3NpdGlvbiA9IHkgLSB0aGlzLl90aHVtYkhlaWdodCAvIDI7CiAgICAgdGh1bWJQ
b3NpdGlvbiA9IE1hdGgubWF4KHRodW1iUG9zaXRpb24sIHRodW1iTWluKTsKICAgICB0aHVtYlBv
c2l0aW9uID0gTWF0aC5taW4odGh1bWJQb3NpdGlvbiwgdGh1bWJNYXgpOwpAQCAtMTgyMywyNyAr
MjA1MiwyOSBAQCBTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5fc2V0VGh1bWJQb3NpdGlvbkZy
b21FdmVudCA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKICAq
LwogU2NydWJieVNjcm9sbEJhci5wcm90b3R5cGUub25Nb3VzZURvd24gPSBmdW5jdGlvbihldmVu
dCkgewotICAgIHRoaXMuX3NldFRodW1iUG9zaXRpb25Gcm9tRXZlbnQoZXZlbnQpOworICAgIHRo
aXMuX3NldFRodW1iUG9zaXRpb25Gcm9tRXZlbnRQb3NpdGlvbihldmVudC5jbGllbnRZKTsKIAog
ICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLm9uV2luZG93TW91
c2VNb3ZlLCBmYWxzZSk7CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0
aGlzLm9uV2luZG93TW91c2VVcCwgZmFsc2UpOwogICAgIGlmICh0aGlzLl90aHVtYlN0eWxlVG9w
QW5pbWF0b3IpCiAgICAgICAgIHRoaXMuX3RodW1iU3R5bGVUb3BBbmltYXRvci5zdG9wKCk7CiAg
ICAgdGhpcy5fdGltZXIgPSBzZXRJbnRlcnZhbCh0aGlzLm9uU2Nyb2xsVGltZXIsIFNjcnViYnlT
Y3JvbGxCYXIuU2Nyb2xsSW50ZXJ2YWwpOworICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwor
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiB9OwogCiAvKioKICAqIEBwYXJhbSB7P0V2ZW50
fSBldmVudAogICovCiBTY3J1YmJ5U2Nyb2xsQmFyLnByb3RvdHlwZS5vbldpbmRvd01vdXNlTW92
ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgdGhpcy5fc2V0VGh1bWJQb3NpdGlvbkZyb21FdmVu
dChldmVudCk7CisgICAgdGhpcy5fc2V0VGh1bWJQb3NpdGlvbkZyb21FdmVudFBvc2l0aW9uKGV2
ZW50LmNsaWVudFkpOwogfTsKIAogLyoqCiAgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKICAqLwog
U2NydWJieVNjcm9sbEJhci5wcm90b3R5cGUub25XaW5kb3dNb3VzZVVwID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICB0aGlzLl90aHVtYlN0eWxlVG9wQW5pbWF0b3IgPSBuZXcgQW5pbWF0b3IoKTsK
KyAgICB0aGlzLl90aHVtYlN0eWxlVG9wQW5pbWF0b3IgPSBuZXcgVHJhbnNpdGlvbkFuaW1hdG9y
KCk7CiAgICAgdGhpcy5fdGh1bWJTdHlsZVRvcEFuaW1hdG9yLnN0ZXAgPSB0aGlzLm9uVGh1bWJT
dHlsZVRvcEFuaW1hdGlvblN0ZXA7CiAgICAgdGhpcy5fdGh1bWJTdHlsZVRvcEFuaW1hdG9yLnNl
dEZyb20odGhpcy50aHVtYi5vZmZzZXRUb3ApOwogICAgIHRoaXMuX3RodW1iU3R5bGVUb3BBbmlt
YXRvci5zZXRUbygodGhpcy5faGVpZ2h0IC0gdGhpcy5fdGh1bWJIZWlnaHQpIC8gMik7CkBAIC0x
ODg2LDYgKzIxMTcsOCBAQCBmdW5jdGlvbiBZZWFyTGlzdENlbGwoc2hvcnRNb250aExhYmVscykg
ewogICAgICAqLwogICAgIHRoaXMubGFiZWwgPSBjcmVhdGVFbGVtZW50KCJkaXYiLCBZZWFyTGlz
dENlbGwuQ2xhc3NOYW1lTGFiZWwsICItLS0tIik7CiAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMubGFiZWwpOworICAgIHRoaXMubGFiZWwuc3R5bGUuaGVpZ2h0ID0gKFllYXJMaXN0
Q2VsbC5IZWlnaHQgLSBZZWFyTGlzdENlbGwuQm9yZGVyQm90dG9tV2lkdGgpICsgInB4IjsKKyAg
ICB0aGlzLmxhYmVsLnN0eWxlLmxpbmVIZWlnaHQgPSAoWWVhckxpc3RDZWxsLkhlaWdodCAtIFll
YXJMaXN0Q2VsbC5Cb3JkZXJCb3R0b21XaWR0aCkgKyAicHgiOwogCiAgICAgLyoqCiAgICAgICog
QHR5cGUgeyFBcnJheX0gQXJyYXkgb2YgdGhlIDEyIG1vbnRoIGJ1dHRvbiBlbGVtZW50cy4KQEAg
LTE5MjAsMTAgKzIxNTMsMTEgQEAgZnVuY3Rpb24gWWVhckxpc3RDZWxsKHNob3J0TW9udGhMYWJl
bHMpIHsKIAogWWVhckxpc3RDZWxsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTGlzdENlbGwu
cHJvdG90eXBlKTsKIAotWWVhckxpc3RDZWxsLkhlaWdodCA9IDI1OworWWVhckxpc3RDZWxsLkhl
aWdodCA9IGhhc0luYWNjdXJhdGVQb2ludGluZ0RldmljZSgpID8gMzEgOiAyNTsKK1llYXJMaXN0
Q2VsbC5Cb3JkZXJCb3R0b21XaWR0aCA9IDE7CiBZZWFyTGlzdENlbGwuQnV0dG9uUm93cyA9IDM7
CiBZZWFyTGlzdENlbGwuQnV0dG9uQ29sdW1ucyA9IDQ7Ci1ZZWFyTGlzdENlbGwuU2VsZWN0ZWRI
ZWlnaHQgPSAxMjE7CitZZWFyTGlzdENlbGwuU2VsZWN0ZWRIZWlnaHQgPSBoYXNJbmFjY3VyYXRl
UG9pbnRpbmdEZXZpY2UoKSA/IDEyNyA6IDEyMTsKIFllYXJMaXN0Q2VsbC5DbGFzc05hbWVZZWFy
TGlzdENlbGwgPSAieWVhci1saXN0LWNlbGwiOwogWWVhckxpc3RDZWxsLkNsYXNzTmFtZUxhYmVs
ID0gImxhYmVsIjsKIFllYXJMaXN0Q2VsbC5DbGFzc05hbWVNb250aENob29zZXIgPSAibW9udGgt
Y2hvb3NlciI7CkBAIC0yMDI4LDYgKzIyNjIsNyBAQCBmdW5jdGlvbiBZZWFyTGlzdFZpZXcobWlu
aW11bU1vbnRoLCBtYXhpbXVtTW9udGgpIHsKICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2VvdmVyIiwgdGhpcy5vbk1vdXNlT3ZlciwgZmFsc2UpOwogICAgIHRoaXMuZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsIHRoaXMub25Nb3VzZU91dCwgZmFsc2Up
OwogICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5vbktl
eURvd24sIGZhbHNlKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hz
dGFydCIsIHRoaXMub25Ub3VjaFN0YXJ0LCBmYWxzZSk7CiB9CiAKIFllYXJMaXN0Vmlldy5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKExpc3RWaWV3LnByb3RvdHlwZSk7CkBAIC0yMDM5LDYgKzIy
NzQsMTkgQEAgWWVhckxpc3RWaWV3LkV2ZW50VHlwZVllYXJMaXN0Vmlld0RpZFNlbGVjdE1vbnRo
ID0gInllYXJMaXN0Vmlld0RpZFNlbGVjdE1vbnRoIjsKIC8qKgogICogQHBhcmFtIHs/RXZlbnR9
IGV2ZW50CiAgKi8KK1llYXJMaXN0Vmlldy5wcm90b3R5cGUub25Ub3VjaFN0YXJ0ID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICB2YXIgdG91Y2ggPSBldmVudC50b3VjaGVzWzBdOworICAgIHZhciBt
b250aEJ1dHRvbkVsZW1lbnQgPSBlbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKHRvdWNoLnRh
cmdldCwgWWVhckxpc3RDZWxsLkNsYXNzTmFtZU1vbnRoQnV0dG9uKTsKKyAgICBpZiAoIW1vbnRo
QnV0dG9uRWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIHZhciBjZWxsRWxlbWVudCA9IGVu
Y2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MobW9udGhCdXR0b25FbGVtZW50LCBZZWFyTGlzdENl
bGwuQ2xhc3NOYW1lWWVhckxpc3RDZWxsKTsKKyAgICB2YXIgY2VsbCA9IGNlbGxFbGVtZW50LiR2
aWV3OworICAgIHRoaXMuaGlnaGxpZ2h0TW9udGgobmV3IE1vbnRoKGNlbGwucm93ICsgMSwgcGFy
c2VJbnQobW9udGhCdXR0b25FbGVtZW50LmRhdGFzZXQubW9udGgsIDEwKSkpOworfTsKKworLyoq
CisgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKKyAqLwogWWVhckxpc3RWaWV3LnByb3RvdHlwZS5v
bk1vdXNlT3ZlciA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgdmFyIG1vbnRoQnV0dG9uRWxlbWVu
dCA9IGVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoZXZlbnQudGFyZ2V0LCBZZWFyTGlzdENl
bGwuQ2xhc3NOYW1lTW9udGhCdXR0b24pOwogICAgIGlmICghbW9udGhCdXR0b25FbGVtZW50KQpA
QCAtMjA5OSw3ICsyMzQ3LDcgQEAgWWVhckxpc3RWaWV3LnByb3RvdHlwZS5fYW5pbWF0ZVJvdyA9
IGZ1bmN0aW9uKHJvdywgZGlyZWN0aW9uKSB7CiAgICAgICAgIGZyb21WYWx1ZSA9IG9sZEFuaW1h
dG9yLmN1cnJlbnRWYWx1ZTsKICAgICB9CiAgICAgdmFyIGNlbGwgPSB0aGlzLmNlbGxBdFJvdyhy
b3cpOwotICAgIHZhciBhbmltYXRvciA9IG5ldyBBbmltYXRvcigpOworICAgIHZhciBhbmltYXRv
ciA9IG5ldyBUcmFuc2l0aW9uQW5pbWF0b3IoKTsKICAgICBhbmltYXRvci5zdGVwID0gdGhpcy5v
bkNlbGxIZWlnaHRBbmltYXRvclN0ZXA7CiAgICAgYW5pbWF0b3Iuc2V0RnJvbShmcm9tVmFsdWUp
OwogICAgIGFuaW1hdG9yLnNldFRvKGRpcmVjdGlvbiA9PT0gWWVhckxpc3RWaWV3LlJvd0FuaW1h
dGlvbkRpcmVjdGlvbi5PcGVuaW5nID8gWWVhckxpc3RDZWxsLlNlbGVjdGVkSGVpZ2h0IDogWWVh
ckxpc3RDZWxsLkhlaWdodCk7CkBAIC0yNTc3LDkgKzI4MjUsMTMgQEAgZnVuY3Rpb24gQ2FsZW5k
YXJOYXZpZ2F0aW9uQnV0dG9uKCkgewogICAgICAqIEB0eXBlIHtudW1iZXJ9IEludGVydmFsIGJl
dHdlZW4gcmVhcGVhdGluZyBjbGlja3MgaW4gbWlsbGlzZWNvbmRzLgogICAgICAqLwogICAgIHRo
aXMucmVhcGVhdGluZ0NsaWNrc0ludGVydmFsID0gQ2FsZW5kYXJOYXZpZ2F0aW9uQnV0dG9uLkRl
ZmF1bHRSZXBlYXRpbmdDbGlja3NJbnRlcnZhbDsKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7P251
bWJlcn0gVGhlIElEIGZvciB0aGUgdGltZW91dCB0aGF0IHRyaWdnZXJzIHRoZSByZXBlYXRpbmcg
Y2xpY2tzLgorICAgICAqLwogICAgIHRoaXMuX3RpbWVyID0gbnVsbDsKICAgICB0aGlzLmVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLm9uQ2xpY2ssIGZhbHNlKTsKICAgICB0
aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5vbk1vdXNlRG93
biwgZmFsc2UpOworICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0
IiwgdGhpcy5vblRvdWNoU3RhcnQsIGZhbHNlKTsKIH07CiAKIENhbGVuZGFyTmF2aWdhdGlvbkJ1
dHRvbi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFZpZXcucHJvdG90eXBlKTsKQEAgLTI2MDks
NyArMjg2MSwzMCBAQCBDYWxlbmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uQ2xpY2sg
PSBmdW5jdGlvbihldmVudCkgewogLyoqCiAgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKICAqLwor
Q2FsZW5kYXJOYXZpZ2F0aW9uQnV0dG9uLnByb3RvdHlwZS5vblRvdWNoU3RhcnQgPSBmdW5jdGlv
bihldmVudCkgeworICAgIGlmICh0aGlzLl90aW1lciAhPT0gbnVsbCkKKyAgICAgICAgcmV0dXJu
OworICAgIHRoaXMuX3RpbWVyID0gc2V0VGltZW91dCh0aGlzLm9uUmVwZWF0aW5nQ2xpY2ssIHRo
aXMucmVwZWF0aW5nQ2xpY2tzU3RhcnRpbmdUaHJlc2hvbGQpOworICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJ0b3VjaGVuZCIsIHRoaXMub25XaW5kb3dUb3VjaEVuZCwgZmFsc2UpOworfTsK
KworLyoqCisgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKKyAqLworQ2FsZW5kYXJOYXZpZ2F0aW9u
QnV0dG9uLnByb3RvdHlwZS5vbldpbmRvd1RvdWNoRW5kID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICBpZiAodGhpcy5fdGltZXIgPT09IG51bGwpCisgICAgICAgIHJldHVybjsKKyAgICBjbGVhclRp
bWVvdXQodGhpcy5fdGltZXIpOworICAgIHRoaXMuX3RpbWVyID0gbnVsbDsKKyAgICB3aW5kb3cu
cmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCB0aGlzLm9uV2luZG93TW91c2VVcCwgZmFs
c2UpOworfTsKKworLyoqCisgKiBAcGFyYW0gez9FdmVudH0gZXZlbnQKKyAqLwogQ2FsZW5kYXJO
YXZpZ2F0aW9uQnV0dG9uLnByb3RvdHlwZS5vbk1vdXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgaWYgKHRoaXMuX3RpbWVyICE9PSBudWxsKQorICAgICAgICByZXR1cm47CiAgICAgdGhp
cy5fdGltZXIgPSBzZXRUaW1lb3V0KHRoaXMub25SZXBlYXRpbmdDbGljaywgdGhpcy5yZXBlYXRp
bmdDbGlja3NTdGFydGluZ1RocmVzaG9sZCk7CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNldXAiLCB0aGlzLm9uV2luZG93TW91c2VVcCwgZmFsc2UpOwogfTsKQEAgLTI2MTgsNyAr
Mjg5MywxMCBAQCBDYWxlbmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uTW91c2VEb3du
ID0gZnVuY3Rpb24oZXZlbnQpIHsKICAqIEBwYXJhbSB7P0V2ZW50fSBldmVudAogICovCiBDYWxl
bmRhck5hdmlnYXRpb25CdXR0b24ucHJvdG90eXBlLm9uV2luZG93TW91c2VVcCA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgaWYgKHRoaXMuX3RpbWVyID09PSBudWxsKQorICAgICAgICByZXR1cm47
CiAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKTsKKyAgICB0aGlzLl90aW1lciA9IG51bGw7
CiAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLm9uV2luZG93
TW91c2VVcCwgZmFsc2UpOwogfTsKIApAQCAtMjc0Myw3ICszMDIxLDcgQEAgZnVuY3Rpb24gRGF5
Q2VsbCgpIHsKIERheUNlbGwucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMaXN0Q2VsbC5wcm90
b3R5cGUpOwogCiBEYXlDZWxsLldpZHRoID0gMzQ7Ci1EYXlDZWxsLkhlaWdodCA9IDIwOworRGF5
Q2VsbC5IZWlnaHQgPSBoYXNJbmFjY3VyYXRlUG9pbnRpbmdEZXZpY2UoKSA/IDM0IDogMjA7CiBE
YXlDZWxsLkJvcmRlcldpZHRoID0gMTsKIERheUNlbGwuQ2xhc3NOYW1lRGF5Q2VsbCA9ICJkYXkt
Y2VsbCI7CiBEYXlDZWxsLkNsYXNzTmFtZUhpZ2hsaWdodGVkID0gImhpZ2hsaWdodGVkIjsKQEAg
LTMwNDYsOCArMzMyNCwxMCBAQCBmdW5jdGlvbiBDYWxlbmRhclRhYmxlVmlldyhjYWxlbmRhclBp
Y2tlcikgewogICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCB0
aGlzLm9uTW91c2VPdmVyLCBmYWxzZSk7CiAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlb3V0IiwgdGhpcy5vbk1vdXNlT3V0LCBmYWxzZSk7CiAKLSAgICAvLyB5b3Ugc2hv
dWxkbid0IGJlIGFibGUgdG8gdXNlIHRoZSBtb3VzZSB3aGVlbCB0byBzY3JvbGwuCisgICAgLy8g
WW91IHNob3VsZG4ndCBiZSBhYmxlIHRvIHVzZSB0aGUgbW91c2Ugd2hlZWwgdG8gc2Nyb2xsLgog
ICAgIHRoaXMuc2Nyb2xsVmlldy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNld2hl
ZWwiLCB0aGlzLnNjcm9sbFZpZXcub25Nb3VzZVdoZWVsLCBmYWxzZSk7CisgICAgLy8gWW91IHNo
b3VsZG4ndCBiZSBhYmxlIHRvIGRvIGdlc3R1cmUgc2Nyb2xsLgorICAgIHRoaXMuc2Nyb2xsVmll
dy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCB0aGlzLnNjcm9sbFZp
ZXcub25Ub3VjaFN0YXJ0LCBmYWxzZSk7CiB9CiAKIENhbGVuZGFyVGFibGVWaWV3LnByb3RvdHlw
ZSA9IE9iamVjdC5jcmVhdGUoTGlzdFZpZXcucHJvdG90eXBlKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlNTgzZDkzODNj
ZjFjMDZkZjAxZjRkYzJlYTI4OTcwMTFhNjYxYTk0Li5lMTJlZjllY2U4ZGU5OTJhYWU5NTdiZDYw
ZGFlMjE4MGFiYzU4ZTQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTMtMDMtMTQgIEtlaXNo
aSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHRvdWNoIHN1cHBv
cnQgdG8gdGhlIGNhbGVuZGFyIHBpY2tlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMjU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11
cmEuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBp
Y2tlci9jYWxlbmRhci1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2Vy
L2NhbGVuZGFyLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL21vbnRoLXBpY2tl
ci10b3VjaC1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvbW9udGgtcGlja2VyLXRvdWNo
LW9wZXJhdGlvbnMuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvcmVzb3VyY2VzL2NhbGVuZGFyLXBpY2tlci1jb21tb24u
anM6CisgICAgICAgIChob3Zlck92ZXJNb250aFBvcHVwQnV0dG9uKToKKyAgICAgICAgKGNsaWNr
TW9udGhQb3B1cEJ1dHRvbik6IFVzZSBob3Zlck92ZXJNb250aFBvcHVwQnV0dG9uLgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL3dlZWstcGlj
a2VyLXRvdWNoLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci93ZWVrLXBpY2tlci10b3Vj
aC1vcGVyYXRpb25zLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAzLTE3ICBLZW50IFRhbXVyYSAgPHRr
ZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJTlBVVF9NVUxUSVBMRV9GSUVMRFNfVUk6IERv
bid0IHVwZGF0ZSBzaGFkb3cgdHJlZSBieSB1cGRhdGluZyBhbnkgYXR0cmlidXRlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBp
Y2tlci9jYWxlbmRhci1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxl
bmRhci1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ2
ZjBjY2ZmMTVlNjc2MzBkMjk3OTI3ZTJmOGQ5ODI5YTUwMjhjZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2Vy
L2NhbGVuZGFyLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE3IEBACitUZXN0cyBpZiBjYWxlbmRhciBwaWNrZXIgbW91c2Ugb3BlcmF0aW9ucyB3b3JrIGFz
IGV4cGVjdGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQ2hlY2sgdGhhdCBw
YWdlIHBvcHVwIGRvZXNuJ3QgZXhpc3QgYXQgZmlyc3QuCitQQVNTIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJtb2NrLXBhZ2UtcG9wdXAiKSBpcyBudWxsCitPcGVuIHRoZSBtb250aCBwb3B1cC4K
K1BBU1MgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5pc1Zpc2libGUg
aXMgZmFsc2UKK1BBU1MgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5p
c1Zpc2libGUgaXMgdHJ1ZQorQ2hlY2sgdGhhdCB0b3VjaCBzd2lwaW5nIHNjcm9sbHMgdGhlIGxp
c3QgaW4gdGhlIG1vbnRoIHBvcHVwLgorUEFTUyBjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNl
dCgpID4gMCBpcyB0cnVlCitQQVNTIGNoZWNrWWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCkgPCAw
IGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jt
cy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLXRvdWNoLW9wZXJhdGlvbnMuaHRtbCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2Vy
L2NhbGVuZGFyLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdlMTQz
YzIyNjkxOWViOTU2OTY3ODA2ODc4NmFiNTFjNmViOGQ2MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2Nh
bGVuZGFyLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwKQEAgLTAsMCArMSw2MiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi8uLi9mYXN0L2Zvcm1zL3Jlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3BpY2tl
ci1jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jYWxlbmRhci1w
aWNrZXItY29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxpbnB1dCB0eXBlPWRhdGUg
aWQ9ZGF0ZSB2YWx1ZT0iMjAwMC0wMS0wMiI+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Rz
IGlmIGNhbGVuZGFyIHBpY2tlciBtb3VzZSBvcGVyYXRpb25zIHdvcmsgYXMgZXhwZWN0ZWQuIik7
CisKK2RlYnVnKCdDaGVjayB0aGF0IHBhZ2UgcG9wdXAgZG9lc25cJ3QgZXhpc3QgYXQgZmlyc3Qu
Jyk7CitzaG91bGRCZU51bGwoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb2NrLXBhZ2UtcG9w
dXAiKScpOworCitvcGVuUGlja2VyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRlJyksIHRl
c3QpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGRlYnVnKCdPcGVuIHRoZSBtb250aCBwb3B1
cC4nKTsKKyAgICBzaG91bGRCZUZhbHNlKCdwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRo
UG9wdXBWaWV3LmlzVmlzaWJsZScpOworICAgIGNsaWNrTW9udGhQb3B1cEJ1dHRvbigpOworICAg
IHNob3VsZEJlVHJ1ZSgncG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5p
c1Zpc2libGUnKTsKKworICAgIGRlYnVnKCdDaGVjayB0aGF0IHRvdWNoIHN3aXBpbmcgc2Nyb2xs
cyB0aGUgbGlzdCBpbiB0aGUgbW9udGggcG9wdXAuJyk7CisKKyAgICB3aW5kb3cuaW50ZXJuYWxz
LnNldHRpbmdzLnNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKHRydWUpOworICAgIGNoZWNr
WWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCk7CisKKyAgICBwb3B1cFdpbmRvdy5nbG9iYWwucGlj
a2VyLm1vbnRoUG9wdXBWaWV3LnllYXJMaXN0Vmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
J3RvdWNoZW5kJywgdGVzdEFmdGVyU3dpcGluZ0Rvd24sIGZhbHNlKTsKKyAgICBob3Zlck92ZXJN
b250aEJ1dHRvbigyMDAwLCAwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBo
b3Zlck92ZXJNb250aEJ1dHRvbigyMDAwLCAxMSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgp
OworfQorCitmdW5jdGlvbiB0ZXN0QWZ0ZXJTd2lwaW5nRG93bigpIHsKKyAgICBzaG91bGRCZVRy
dWUoJ2NoZWNrWWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCkgPiAwJyk7CisgICAgcG9wdXBXaW5k
b3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy55ZWFyTGlzdFZpZXcuZWxlbWVudC5yZW1v
dmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRlc3RBZnRlclN3aXBpbmdEb3duLCBmYWxzZSk7
CisgICAgc2V0VGltZW91dCh0ZXN0U3dpcGluZ1VwLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdFN3
aXBpbmdVcCgpIHsKKyAgICBjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpOworICAgIHBv
cHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVhckxpc3RWaWV3LmVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0ZXN0QWZ0ZXJTd2lwaW5nVXAsIGZhbHNl
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBob3Zlck92ZXJNb250aFBvcHVw
QnV0dG9uKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiB0ZXN0
QWZ0ZXJTd2lwaW5nVXAoKSB7CisgICAgc2hvdWxkQmVUcnVlKCdjaGVja1llYXJMaXN0Vmlld1Nj
cm9sbE9mZnNldCgpIDwgMCcpOworICAgIHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQ
b3B1cFZpZXcueWVhckxpc3RWaWV3LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hl
bmQnLCB0ZXN0QWZ0ZXJTd2lwaW5nVXAsIGZhbHNlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNl
dHRpbmdzLnNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKGZhbHNlKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2Nh
bGVuZGFyLXBpY2tlci9tb250aC1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tl
ci9tb250aC1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTZlZDkxN2ZlOTkzN2M0YzdkNDdkODMyNDQxM2U3MjhhZTRjYTRkNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlj
a2VyL21vbnRoLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE3IEBACitUZXN0cyBpZiBtb250aCBwaWNrZXIgbW91c2Ugb3BlcmF0aW9ucyB3b3JrIGFzIGV4
cGVjdGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQ2hlY2sgdGhhdCBwYWdl
IHBvcHVwIGRvZXNuJ3QgZXhpc3QgYXQgZmlyc3QuCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJtb2NrLXBhZ2UtcG9wdXAiKSBpcyBudWxsCitPcGVuIHRoZSBtb250aCBwb3B1cC4KK1BB
U1MgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5pc1Zpc2libGUgaXMg
ZmFsc2UKK1BBU1MgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5pc1Zp
c2libGUgaXMgdHJ1ZQorQ2hlY2sgdGhhdCB0b3VjaCBzd2lwaW5nIHNjcm9sbHMgdGhlIGxpc3Qg
aW4gdGhlIG1vbnRoIHBvcHVwLgorUEFTUyBjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgp
ID4gMCBpcyB0cnVlCitQQVNTIGNoZWNrWWVhckxpc3RWaWV3U2Nyb2xsT2Zmc2V0KCkgPCAwIGlz
IHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9j
YWxlbmRhci1waWNrZXIvbW9udGgtcGlja2VyLXRvdWNoLW9wZXJhdGlvbnMuaHRtbCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL21vbnRo
LXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU2ZTRiNDc5MmM5YTcw
ZmQ3MTM2YWMyNThiMGMzM2I5MGEzMmMxZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL21vbnRoLXBpY2tl
ci10b3VjaC1vcGVyYXRpb25zLmh0bWwKQEAgLTAsMCArMSw2MiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li8uLi9mYXN0L2Zvcm1zL3Jlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3BpY2tlci1jb21tb24uanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jYWxlbmRhci1waWNrZXItY29tbW9u
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxpbnB1dCB0eXBlPW1vbnRoIGlkPW1vbnRoIHZh
bHVlPSIyMDAwLTAxIj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgaWYgbW9udGggcGlj
a2VyIG1vdXNlIG9wZXJhdGlvbnMgd29yayBhcyBleHBlY3RlZC4iKTsKKworZGVidWcoJ0NoZWNr
IHRoYXQgcGFnZSBwb3B1cCBkb2VzblwndCBleGlzdCBhdCBmaXJzdC4nKTsKK3Nob3VsZEJlTnVs
bCgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vY2stcGFnZS1wb3B1cCIpJyk7CisKK29wZW5Q
aWNrZXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vbnRoJyksIHRlc3QpOworCitmdW5jdGlv
biB0ZXN0KCkgeworICAgIGRlYnVnKCdPcGVuIHRoZSBtb250aCBwb3B1cC4nKTsKKyAgICBzaG91
bGRCZUZhbHNlKCdwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRoUG9wdXBWaWV3LmlzVmlz
aWJsZScpOworICAgIGNsaWNrTW9udGhQb3B1cEJ1dHRvbigpOworICAgIHNob3VsZEJlVHJ1ZSgn
cG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy5pc1Zpc2libGUnKTsKKwor
ICAgIGRlYnVnKCdDaGVjayB0aGF0IHRvdWNoIHN3aXBpbmcgc2Nyb2xscyB0aGUgbGlzdCBpbiB0
aGUgbW9udGggcG9wdXAuJyk7CisKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFRv
dWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKHRydWUpOworICAgIGNoZWNrWWVhckxpc3RWaWV3U2Ny
b2xsT2Zmc2V0KCk7CisKKyAgICBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRoUG9wdXBW
aWV3LnllYXJMaXN0Vmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGVz
dEFmdGVyU3dpcGluZ0Rvd24sIGZhbHNlKTsKKyAgICBob3Zlck92ZXJNb250aEJ1dHRvbigyMDAw
LCAwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBob3Zlck92ZXJNb250aEJ1
dHRvbigyMDAwLCAxMSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlv
biB0ZXN0QWZ0ZXJTd2lwaW5nRG93bigpIHsKKyAgICBzaG91bGRCZVRydWUoJ2NoZWNrWWVhckxp
c3RWaWV3U2Nyb2xsT2Zmc2V0KCkgPiAwJyk7CisgICAgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tl
ci5tb250aFBvcHVwVmlldy55ZWFyTGlzdFZpZXcuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVy
KCd0b3VjaGVuZCcsIHRlc3RBZnRlclN3aXBpbmdEb3duLCBmYWxzZSk7CisgICAgc2V0VGltZW91
dCh0ZXN0U3dpcGluZ1VwLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdFN3aXBpbmdVcCgpIHsKKyAg
ICBjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpOworICAgIHBvcHVwV2luZG93Lmdsb2Jh
bC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVhckxpc3RWaWV3LmVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigndG91Y2hlbmQnLCB0ZXN0QWZ0ZXJTd2lwaW5nVXAsIGZhbHNlKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZURvd24oKTsKKyAgICBob3Zlck92ZXJNb250aFBvcHVwQnV0dG9uKCk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiB0ZXN0QWZ0ZXJTd2lwaW5nVXAo
KSB7CisgICAgc2hvdWxkQmVUcnVlKCdjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpIDwg
MCcpOworICAgIHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVhckxp
c3RWaWV3LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0ZXN0QWZ0ZXJT
d2lwaW5nVXAsIGZhbHNlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFRvdWNo
RXZlbnRFbXVsYXRpb25FbmFibGVkKGZhbHNlKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9y
ZXNvdXJjZXMvY2FsZW5kYXItcGlja2VyLWNvbW1vbi5qcyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL3Jlc291cmNlcy9jYWxlbmRhci1w
aWNrZXItY29tbW9uLmpzCmluZGV4IDA3ZDFhMThhMDk3OTlhNTk5YjY1MWVmYWFiYmRlMzA2NTA1
ZWMyNjcuLmY4MjAzMDhkYjRjZTM4MTdhYjMwMDE0ZTgxM2RiZjAyOGZiMjA3YzYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlj
a2VyL3Jlc291cmNlcy9jYWxlbmRhci1waWNrZXItY29tbW9uLmpzCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL3Jlc291cmNlcy9j
YWxlbmRhci1waWNrZXItY29tbW9uLmpzCkBAIC04OCwxMSArODgsMTUgQEAgZnVuY3Rpb24gaGln
aGxpZ2h0ZWRNb250aEJ1dHRvbigpIHsKICAgICB9KS5zb3J0KCkuam9pbigpOwogfQogCi1mdW5j
dGlvbiBjbGlja01vbnRoUG9wdXBCdXR0b24oKSB7CitmdW5jdGlvbiBob3Zlck92ZXJNb250aFBv
cHVwQnV0dG9uKCkgewogICAgIHNraXBBbmltYXRpb24oKTsKICAgICB2YXIgYnV0dG9uRWxlbWVu
dCA9IHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIuY2FsZW5kYXJIZWFkZXJWaWV3Lm1vbnRoUG9w
dXBCdXR0b24uZWxlbWVudDsKICAgICB2YXIgb2Zmc2V0ID0gY3VtdWxhdGl2ZU9mZnNldChidXR0
b25FbGVtZW50KTsKICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhvZmZzZXRbMF0gKyBidXR0
b25FbGVtZW50Lm9mZnNldFdpZHRoIC8gMiwgb2Zmc2V0WzFdICsgYnV0dG9uRWxlbWVudC5vZmZz
ZXRIZWlnaHQgLyAyKTsKK30KKworZnVuY3Rpb24gY2xpY2tNb250aFBvcHVwQnV0dG9uKCkgewor
ICAgIGhvdmVyT3Zlck1vbnRoUG9wdXBCdXR0b24oKTsKICAgICBldmVudFNlbmRlci5tb3VzZURv
d24oKTsKICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CiB9CkBAIC0xNTAsNSArMTU0LDggQEAg
ZnVuY3Rpb24gY2hlY2tZZWFyTGlzdFZpZXdTY3JvbGxPZmZzZXQoKSB7CiB9CiAKIGZ1bmN0aW9u
IGlzQ2FsZW5kYXJUYWJsZVNjcm9sbGluZ1dpdGhBbmltYXRpb24oKSB7Ci0gICAgcmV0dXJuIHBv
cHVwV2luZG93Lmdsb2JhbC5waWNrZXIuY2FsZW5kYXJUYWJsZVZpZXcuc2Nyb2xsVmlldy5zY3Jv
bGxBbmltYXRvcigpLmlzUnVubmluZygpOworICAgIHZhciBhbmltYXRvciA9IHBvcHVwV2luZG93
Lmdsb2JhbC5waWNrZXIuY2FsZW5kYXJUYWJsZVZpZXcuc2Nyb2xsVmlldy5zY3JvbGxBbmltYXRv
cigpOworICAgIGlmICghYW5pbWF0b3IpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gYW5pbWF0b3IuaXNSdW5uaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci93ZWVrLXBpY2tlci10b3Vj
aC1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL3dlZWstcGlja2VyLXRvdWNoLW9wZXJhdGlvbnMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0NmYwY2NmZjE1ZTY3NjMwZDI5NzkyN2UyZjhkOTgy
OWE1MDI4Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci93ZWVrLXBpY2tlci10b3VjaC1vcGVyYXRpb25z
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitUZXN0cyBpZiBjYWxlbmRhciBwaWNrZXIg
bW91c2Ugb3BlcmF0aW9ucyB3b3JrIGFzIGV4cGVjdGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworQ2hlY2sgdGhhdCBwYWdlIHBvcHVwIGRvZXNuJ3QgZXhpc3QgYXQgZmlyc3Qu
CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb2NrLXBhZ2UtcG9wdXAiKSBpcyBudWxs
CitPcGVuIHRoZSBtb250aCBwb3B1cC4KK1BBU1MgcG9wdXBXaW5kb3cuZ2xvYmFsLnBpY2tlci5t
b250aFBvcHVwVmlldy5pc1Zpc2libGUgaXMgZmFsc2UKK1BBU1MgcG9wdXBXaW5kb3cuZ2xvYmFs
LnBpY2tlci5tb250aFBvcHVwVmlldy5pc1Zpc2libGUgaXMgdHJ1ZQorQ2hlY2sgdGhhdCB0b3Vj
aCBzd2lwaW5nIHNjcm9sbHMgdGhlIGxpc3QgaW4gdGhlIG1vbnRoIHBvcHVwLgorUEFTUyBjaGVj
a1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpID4gMCBpcyB0cnVlCitQQVNTIGNoZWNrWWVhckxp
c3RWaWV3U2Nyb2xsT2Zmc2V0KCkgPCAwIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvd2Vlay1waWNrZXItdG91
Y2gtb3BlcmF0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9m
b3Jtcy9jYWxlbmRhci1waWNrZXIvd2Vlay1waWNrZXItdG91Y2gtb3BlcmF0aW9ucy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE1M2IxZGM0YWU3N2Y5YjRiNDFhMDI2YmZlYWNkNGE2ZTNmM2M1YmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2Nh
bGVuZGFyLXBpY2tlci93ZWVrLXBpY2tlci10b3VjaC1vcGVyYXRpb25zLmh0bWwKQEAgLTAsMCAr
MSw2MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2Zvcm1zL3Jlc291cmNlcy9jb21tb24u
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvZm9ybXMvcmVz
b3VyY2VzL3BpY2tlci1jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9jYWxlbmRhci1waWNrZXItY29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxpbnB1
dCB0eXBlPXdlZWsgaWQ9d2VlayB2YWx1ZT0iMjAwMC1XMDEiPgorPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCJUZXN0cyBpZiBjYWxlbmRhciBwaWNrZXIgbW91c2Ugb3BlcmF0aW9ucyB3b3JrIGFzIGV4
cGVjdGVkLiIpOworCitkZWJ1ZygnQ2hlY2sgdGhhdCBwYWdlIHBvcHVwIGRvZXNuXCd0IGV4aXN0
IGF0IGZpcnN0LicpOworc2hvdWxkQmVOdWxsKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW9j
ay1wYWdlLXBvcHVwIiknKTsKKworb3BlblBpY2tlcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
d2VlaycpLCB0ZXN0KTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBkZWJ1ZygnT3BlbiB0aGUg
bW9udGggcG9wdXAuJyk7CisgICAgc2hvdWxkQmVGYWxzZSgncG9wdXBXaW5kb3cuZ2xvYmFsLnBp
Y2tlci5tb250aFBvcHVwVmlldy5pc1Zpc2libGUnKTsKKyAgICBjbGlja01vbnRoUG9wdXBCdXR0
b24oKTsKKyAgICBzaG91bGRCZVRydWUoJ3BvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQ
b3B1cFZpZXcuaXNWaXNpYmxlJyk7CisKKyAgICBkZWJ1ZygnQ2hlY2sgdGhhdCB0b3VjaCBzd2lw
aW5nIHNjcm9sbHMgdGhlIGxpc3QgaW4gdGhlIG1vbnRoIHBvcHVwLicpOworCisgICAgd2luZG93
LmludGVybmFscy5zZXR0aW5ncy5zZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCh0cnVlKTsK
KyAgICBjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpOworCisgICAgcG9wdXBXaW5kb3cu
Z2xvYmFsLnBpY2tlci5tb250aFBvcHVwVmlldy55ZWFyTGlzdFZpZXcuZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCd0b3VjaGVuZCcsIHRlc3RBZnRlclN3aXBpbmdEb3duLCBmYWxzZSk7CisgICAg
aG92ZXJPdmVyTW9udGhCdXR0b24oMjAwMCwgMCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3du
KCk7CisgICAgaG92ZXJPdmVyTW9udGhCdXR0b24oMjAwMCwgMTEpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gdGVzdEFmdGVyU3dpcGluZ0Rvd24oKSB7CisgICAg
c2hvdWxkQmVUcnVlKCdjaGVja1llYXJMaXN0Vmlld1Njcm9sbE9mZnNldCgpID4gMCcpOworICAg
IHBvcHVwV2luZG93Lmdsb2JhbC5waWNrZXIubW9udGhQb3B1cFZpZXcueWVhckxpc3RWaWV3LmVs
ZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0ZXN0QWZ0ZXJTd2lwaW5nRG93
biwgZmFsc2UpOworICAgIHNldFRpbWVvdXQodGVzdFN3aXBpbmdVcCwgMCk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RTd2lwaW5nVXAoKSB7CisgICAgY2hlY2tZZWFyTGlzdFZpZXdTY3JvbGxPZmZzZXQo
KTsKKyAgICBwb3B1cFdpbmRvdy5nbG9iYWwucGlja2VyLm1vbnRoUG9wdXBWaWV3LnllYXJMaXN0
Vmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGVzdEFmdGVyU3dpcGlu
Z1VwLCBmYWxzZSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgaG92ZXJPdmVy
TW9udGhQb3B1cEJ1dHRvbigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVu
Y3Rpb24gdGVzdEFmdGVyU3dpcGluZ1VwKCkgeworICAgIHNob3VsZEJlVHJ1ZSgnY2hlY2tZZWFy
TGlzdFZpZXdTY3JvbGxPZmZzZXQoKSA8IDAnKTsKKyAgICBwb3B1cFdpbmRvdy5nbG9iYWwucGlj
a2VyLm1vbnRoUG9wdXBWaWV3LnllYXJMaXN0Vmlldy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVu
ZXIoJ3RvdWNoZW5kJywgdGVzdEFmdGVyU3dpcGluZ1VwLCBmYWxzZSk7CisgICAgd2luZG93Lmlu
dGVybmFscy5zZXR0aW5ncy5zZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChmYWxzZSk7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>