<?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>115360</bug_id>
          
          <creation_ts>2013-04-29 08:41:12 -0700</creation_ts>
          <short_desc>[BlackBerry] Replace disappearing fillBuffer() API with graphics context drawing</short_desc>
          <delta_ts>2013-04-29 17:11:39 -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>WebKit BlackBerry</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="Jakob Petsovits">jpetsovits</reporter>
          <assigned_to name="Jakob Petsovits">jpetsovits</assigned_to>
          <cc>anilsson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kpiascik</cc>
    
    <cc>mlattanzio</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>882609</commentid>
    <comment_count>0</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-04-29 08:41:12 -0700</bug_when>
    <thetext>Instead of using fillBuffer() to draw directly to the target buffer, we now lock a Drawable on it and fill it with PlatformGraphicsContext::addPredefinedPattern().

As a bonus, this also includes related clean-ups - simpler checkerboard painting code, removal of fillWindow(), clearWindow() and paintDefaultBackground(), as well as getting rid of the DEBUG_CHECKERBOARD define which has been useless for performance tracing purposes for a while now.

Internally tracked as PR 303048. Patch below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882619</commentid>
    <comment_count>1</comment_count>
      <attachid>200019</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-04-29 08:54:47 -0700</bug_when>
    <thetext>Created attachment 200019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882621</commentid>
    <comment_count>2</comment_count>
      <attachid>200019</attachid>
    <who name="Mike Lattanzio">mlattanzio</who>
    <bug_when>2013-04-29 08:57:33 -0700</bug_when>
    <thetext>Comment on attachment 200019
Patch

Looks great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882631</commentid>
    <comment_count>3</comment_count>
      <attachid>200019</attachid>
    <who name="Konrad Piascik">kpiascik</who>
    <bug_when>2013-04-29 09:14:32 -0700</bug_when>
    <thetext>Comment on attachment 200019
Patch

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

just those few nits...otherwise looks good

&gt; Source/WebKit/blackberry/Api/BackingStore.cpp:1270
&gt;                  std::vector&lt;Platform::IntRect&gt; dirtyRenderedRects = renderedRegion.rects();

std vs WTF vector

&gt; Source/WebKit/blackberry/Api/BackingStore.cpp:1304
&gt; +            std::vector&lt;Platform::IntRect&gt; overScrollRects = overScrollRegion.rects();

std vs WTF vector?

&gt; Source/WebKit/blackberry/Api/BackingStore.cpp:1338
&gt; +            overlayContext-&gt;setStrokeColor(0xff0000ff);

do you want to maybe save the state of the context before modifying it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882682</commentid>
    <comment_count>4</comment_count>
      <attachid>200028</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-04-29 11:01:07 -0700</bug_when>
    <thetext>Created attachment 200028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882685</commentid>
    <comment_count>5</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-04-29 11:04:07 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 200019 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=200019&amp;action=review
&gt; 
&gt; just those few nits...otherwise looks good
&gt; 
&gt; &gt; Source/WebKit/blackberry/Api/BackingStore.cpp:1270
&gt; &gt;                  std::vector&lt;Platform::IntRect&gt; dirtyRenderedRects = renderedRegion.rects();
&gt; 
&gt; std vs WTF vector

This one actually gets its list of rects from Platform::IntRectRegion, which returns them as std::vector. Given that we drop those again right afterwards, I don&apos;t believe it makes sense to convert this to WTF::Vector.

However, in an attempt to appease you, I made an improvement by taking the rects inside the for-loop as const reference and therefore avoiding a copy (unless the compiler took care of that by itself even otherwise).

&gt; &gt; Source/WebKit/blackberry/Api/BackingStore.cpp:1338
&gt; &gt; +            overlayContext-&gt;setStrokeColor(0xff0000ff);
&gt; 
&gt; do you want to maybe save the state of the context before modifying it?

Yes, I think I want that. Added in the new version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882722</commentid>
    <comment_count>6</comment_count>
      <attachid>200028</attachid>
    <who name="Konrad Piascik">kpiascik</who>
    <bug_when>2013-04-29 12:28:37 -0700</bug_when>
    <thetext>Comment on attachment 200028
Patch

Ok.  Looks good, I&apos;d r+ but not a reviewer yet :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882812</commentid>
    <comment_count>7</comment_count>
      <attachid>200028</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-04-29 16:25:47 -0700</bug_when>
    <thetext>Comment on attachment 200028
Patch

Ok, good to see so much code removal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882844</commentid>
    <comment_count>8</comment_count>
      <attachid>200028</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-29 17:11:37 -0700</bug_when>
    <thetext>Comment on attachment 200028
Patch

Clearing flags on attachment: 200028

Committed r149336: &lt;http://trac.webkit.org/changeset/149336&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882845</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-29 17:11:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200019</attachid>
            <date>2013-04-29 08:54:47 -0700</date>
            <delta_ts>2013-04-29 11:01:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115360-20130429115347.patch</filename>
            <type>text/plain</type>
            <size>22326</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Mjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCAwZjdhMjJkYzgxNDBlOTZhZWRhMzIzMTY3YTlmZDc5YjExOTNiYTlmLi45OTVhNGM1NjFm
ZDIzZGE2ZWExZjBkODc5NTI3N2FlZDU1OWNlOTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMy0wNC0yOSAgSmFrb2IgUGV0c292aXRzICA8anBl
dHNvdml0c0BibGFja2JlcnJ5LmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gUmVwbGFjZSBk
aXNhcHBlYXJpbmcgZmlsbEJ1ZmZlcigpIEFQSSB3aXRoIGdyYXBoaWNzIGNvbnRleHQgZHJhd2lu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1MzYw
CisgICAgICAgIEludGVybmFsIFBSIDMwMzA0OC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIHVzaW5nIGZpbGxCdWZmZXIoKSB0byBk
cmF3IGRpcmVjdGx5IHRvIHRoZQorICAgICAgICB0YXJnZXQgYnVmZmVyLCB3ZSBub3cgbG9jayBh
IERyYXdhYmxlIG9uIGl0IGFuZCBmaWxsIGl0CisgICAgICAgIHdpdGggUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQ6OmFkZFByZWRlZmluZWRQYXR0ZXJuKCkuCisKKyAgICAgICAgQXMgYSBib251cywg
dGhpcyBhbHNvIGluY2x1ZGVzIHJlbGF0ZWQgY2xlYW4tdXBzIC0KKyAgICAgICAgc2ltcGxlciBj
aGVja2VyYm9hcmQgcGFpbnRpbmcgY29kZSwgcmVtb3ZhbCBvZgorICAgICAgICBmaWxsV2luZG93
KCksIGNsZWFyV2luZG93KCkgYW5kIHBhaW50RGVmYXVsdEJhY2tncm91bmQoKSwKKyAgICAgICAg
YXMgd2VsbCBhcyBnZXR0aW5nIHJpZCBvZiB0aGUgREVCVUdfQ0hFQ0tFUkJPQVJEIGRlZmluZQor
ICAgICAgICB3aGljaCBoYXMgYmVlbiB1c2VsZXNzIGZvciBwZXJmb3JtYW5jZSB0cmFjaW5nIHB1
cnBvc2VzCisgICAgICAgIGZvciBhIHdoaWxlIG5vdy4KKworICAgICAgICAqIEFwaS9CYWNraW5n
U3RvcmUuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2
YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzKToKKyAgICAgICAgKiBBcGkvQmFja2luZ1N0b3JlX3Au
aDoKKwogMjAxMy0wNC0yNiAgTmltYSBHaGFuYXZhdGlhbiAgPG5naGFuYXZhdGlhbkBibGFja2Jl
cnJ5LmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gQ2hlY2sgZm9yIHZhbGlkIGVsZW1lbnQg
aW4gZWxlbWVudFRvdWNoZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9B
cGkvQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2lu
Z1N0b3JlLmNwcAppbmRleCBmNWE2NTE4OGI2NGQ2OWEzMGVmNWE1YTkxNTdhZDQ4YTZkYzRiNzY5
Li5mMzUxMjYyMGQ1ZDY2OTczMjhjYTc5ODY5ZTkyM2FjZTMxNjJhOGUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwCkBAIC00MCw2ICs0MCw3IEBA
CiAKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1FeGVjdXRhYmxlTWVzc2FnZS5oPgogI2lu
Y2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUdyYXBoaWNzLmg+CisjaW5jbHVkZSA8QmxhY2tCZXJy
eVBsYXRmb3JtR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3Jt
SW50UmVjdFJlZ2lvbi5oPgogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUxvZy5oPgogI2lu
Y2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybU1lc3NhZ2UuaD4KQEAgLTQ4LDYgKzQ5LDcgQEAKICNp
bmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1TZXR0aW5ncy5oPgogI2luY2x1ZGUgPEJsYWNrQmVy
cnlQbGF0Zm9ybVZpZXdwb3J0QWNjZXNzb3IuaD4KICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZv
cm1XaW5kb3cuaD4KKyNpbmNsdWRlIDxncmFwaGljcy9BZmZpbmVUcmFuc2Zvcm0uaD4KIAogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkBA
IC01Nyw3ICs1OSw2IEBACiAjZGVmaW5lIEVOQUJMRV9TQ1JPTExCQVJTIDEKICNkZWZpbmUgRU5B
QkxFX1JFUEFJTlRPTlNDUk9MTCAxCiAjZGVmaW5lIERFQlVHX0JBQ0tJTkdTVE9SRSAwCi0jZGVm
aW5lIERFQlVHX0NIRUNLRVJCT0FSRCAwCiAjZGVmaW5lIERFQlVHX1dFQkNPUkVfUkVRVUVTVFMg
MAogI2RlZmluZSBERUJVR19WSVNVQUxJWkUgMAogI2RlZmluZSBERUJVR19USUxFTUFUUklYIDAK
QEAgLTExMjEsMzggKzExMjIsNiBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnJlbmRlckFu
ZEJsaXRJbW1lZGlhdGVseShjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgcmVjdAogICAgIHJlbmRl
ckpvYigpOwogfQogCi12b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnBhaW50RGVmYXVsdEJhY2tn
cm91bmQoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGRzdFJlY3QsIFBsYXRmb3JtOjpWaWV3cG9y
dEFjY2Vzc29yKiB2aWV3cG9ydEFjY2Vzc29yLCBib29sKQotewotICAgIFBsYXRmb3JtOjpJbnRS
ZWN0IGNsaXBwZWREc3RSZWN0ID0gZHN0UmVjdDsKLQotICAgIC8vIEJlY2F1c2Ugb2Ygcm91bmRp
bmcgaXQgaXMgcG9zc2libGUgdGhhdCBvdmVyU2Nyb2xsUmVjdCBjb3VsZCBiZSBvZmYtYnktb25l
IGxhcmdlcgotICAgIC8vIHRoYW4gdGhlIHN1cmZhY2Ugc2l6ZSBvZiB0aGUgd2luZG93LiBXZSBw
cmV2ZW50IHRoaXMgaGVyZSwgYnkgY2xhbXBpbmcKLSAgICAvLyBpdCB0byBlbnN1cmUgdGhhdCBj
YW4ndCBoYXBwZW4uCi0gICAgY2xpcHBlZERzdFJlY3QuaW50ZXJzZWN0KFBsYXRmb3JtOjpJbnRS
ZWN0KFBsYXRmb3JtOjpJbnRQb2ludCgwLCAwKSwgc3VyZmFjZVNpemUoKSkpOwotCi0gICAgaWYg
KGNsaXBwZWREc3RSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gV2Ug
aGF2ZSB0byBwYWludCB0aGUgZGVmYXVsdCBiYWNrZ3JvdW5kIGluIHRoZSBjYXNlIG9mIG92ZXJ6
b29tIGFuZAotICAgIC8vIG1ha2Ugc3VyZSBpdCBpcyBpbnZhbGlkYXRlZC4KLSAgICBjb25zdCBQ
bGF0Zm9ybTo6SW50UmVjdCBwaXhlbENvbnRlbnRzUmVjdCA9IHZpZXdwb3J0QWNjZXNzb3ItPnBp
eGVsQ29udGVudHNSZWN0KCk7Ci0gICAgUGxhdGZvcm06OkludFJlY3RSZWdpb24gb3ZlclNjcm9s
bFJlZ2lvbiA9IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uOjpzdWJ0cmFjdFJlZ2lvbnMoCi0gICAg
ICAgIGNsaXBwZWREc3RSZWN0LCB2aWV3cG9ydEFjY2Vzc29yLT5waXhlbFZpZXdwb3J0RnJvbUNv
bnRlbnRzKHBpeGVsQ29udGVudHNSZWN0KSk7Ci0KLSAgICBzdGQ6OnZlY3RvcjxQbGF0Zm9ybTo6
SW50UmVjdD4gb3ZlclNjcm9sbFJlY3RzID0gb3ZlclNjcm9sbFJlZ2lvbi5yZWN0cygpOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3ZlclNjcm9sbFJlY3RzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0IG92ZXJTY3JvbGxSZWN0ID0gb3ZlclNjcm9sbFJlY3Rz
LmF0KGkpOwotCi0gICAgICAgIGlmIChtX3dlYlBhZ2UtPnNldHRpbmdzKCktPmlzRW5hYmxlRGVm
YXVsdE92ZXJTY3JvbGxCYWNrZ3JvdW5kKCkpIHsKLSAgICAgICAgICAgIGZpbGxXaW5kb3coQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpEZWZhdWx0QmFja2dyb3VuZFBhdHRlcm4sCi0g
ICAgICAgICAgICAgICAgb3ZlclNjcm9sbFJlY3QsIG92ZXJTY3JvbGxSZWN0LmxvY2F0aW9uKCks
IDEuMCAvKmNvbnRlbnRzU2NhbGUqLyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBD
b2xvciBjb2xvcihtX3dlYlBhZ2UtPnNldHRpbmdzKCktPm92ZXJTY3JvbGxDb2xvcigpKTsKLSAg
ICAgICAgICAgIGNsZWFyV2luZG93KG92ZXJTY3JvbGxSZWN0LCBjb2xvci5yZWQoKSwgY29sb3Iu
Z3JlZW4oKSwgY29sb3IuYmx1ZSgpLCBjb2xvci5hbHBoYSgpKTsKLSAgICAgICAgfQotICAgIH0K
LX0KLQogdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzKGJvb2wg
Zm9yY2UpCiB7CiAgICAgaWYgKCFCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRo
cmVhZE1lc3NhZ2VDbGllbnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpIHsKQEAgLTExOTAsNiArMTE1
OSw4IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFZpc2libGVDb250ZW50cyhib29s
IGZvcmNlKQogICAgIGlmICghdmlld3BvcnRBY2Nlc3NvcikKICAgICAgICAgcmV0dXJuOwogICAg
IGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0IGRzdFJlY3QgPSB2aWV3cG9ydEFjY2Vzc29yLT5kZXN0
aW5hdGlvblN1cmZhY2VSZWN0KCk7CisgICAgaWYgKGRzdFJlY3QuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CiAKICAgICBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCBwaXhlbFZpZXdwb3J0UmVj
dCA9IHZpZXdwb3J0QWNjZXNzb3ItPnBpeGVsVmlld3BvcnRSZWN0KCk7CiAgICAgY29uc3QgUGxh
dGZvcm06OkZsb2F0UmVjdCBkb2N1bWVudFZpZXdwb3J0UmVjdCA9IHZpZXdwb3J0QWNjZXNzb3It
PmRvY3VtZW50RnJvbVBpeGVsQ29udGVudHMocGl4ZWxWaWV3cG9ydFJlY3QpOwpAQCAtMTIxOSwy
MiArMTE5MCwxNiBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVu
dHMoYm9vbCBmb3JjZSkKICAgICBpZiAoZHN0QnVmZmVyKSB7CiAgICAgICAgIC8vIE9uIHRoZSBH
UFUsIGNsZWFyaW5nIGlzIGZyZWUgYW5kIGFsbG93cyBmb3Igb3B0aW1pemF0aW9ucywKICAgICAg
ICAgLy8gc28gd2UgYWx3YXlzIHdhbnQgdG8gZG8gdGhpcyBmaXJzdCBmb3IgdGhlIHdob2xlIHN1
cmZhY2UuCi0gICAgICAgIC8vIERvbid0IGNhbGwgY2xlYXJXaW5kb3coKSBhcyB3ZSBkb24ndCB3
YW50IHRvIGFkZCBpdCB0byB0aGUgcG9zdGVkIHJlY3QuCiAgICAgICAgIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpHcmFwaGljczo6Y2xlYXJCdWZmZXIoZHN0QnVmZmVyLAogICAgICAgICAgICAgbV93
ZWJQYWdlQmFja2dyb3VuZENvbG9yLnJlZCgpLCBtX3dlYlBhZ2VCYWNrZ3JvdW5kQ29sb3IuZ3Jl
ZW4oKSwKICAgICAgICAgICAgIG1fd2ViUGFnZUJhY2tncm91bmRDb2xvci5ibHVlKCksIG1fd2Vi
UGFnZUJhY2tncm91bmRDb2xvci5hbHBoYSgpKTsKICAgICB9IGVsc2UKICAgICAgICAgUGxhdGZv
cm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxXYXJuLCAiRW1wdHkgd2luZG93IGJ1ZmZl
ciwgY2FuJ3QgYmxpdCBjb250ZW50cy4iKTsKIAotI2lmIERFQlVHX0NIRUNLRVJCT0FSRAotICAg
IGJvb2wgYmxpdENoZWNrZXJlZCA9IGZhbHNlOwotI2VuZGlmCi0KKyAgICAvLyBOb3cgZ28gYWJv
dXQgYWN0dWFsbHkgY29tcG9zaXRpbmcgdGhlIGNvbnRlbnRzLgogICAgIFZlY3RvcjxUaWxlQnVm
ZmVyKj4gYmxpdHRlZFRpbGVzOwogCiAgICAgaWYgKGlzQWN0aXZlKCkgJiYgIW1fd2ViUGFnZS0+
ZC0+Y29tcG9zaXRvckRyYXdzUm9vdExheWVyKCkpIHsKLSAgICAgICAgcGFpbnREZWZhdWx0QmFj
a2dyb3VuZChkc3RSZWN0LCB2aWV3cG9ydEFjY2Vzc29yLCBmYWxzZSAvKmZsdXNoKi8pOwotCiAg
ICAgICAgIEJhY2tpbmdTdG9yZUdlb21ldHJ5KiBnZW9tZXRyeSA9IGZyb250U3RhdGUoKTsKICAg
ICAgICAgVGlsZU1hcCBjdXJyZW50TWFwID0gZ2VvbWV0cnktPnRpbGVNYXAoKTsKICAgICAgICAg
ZG91YmxlIGN1cnJlbnRTY2FsZSA9IGdlb21ldHJ5LT5zY2FsZSgpOwpAQCAtMTI1OCwzNCArMTIy
MywyMSBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMoYm9v
bCBmb3JjZSkKICAgICAgICAgaWYgKCF0cmFuc2Zvcm1lZFNyY1JlY3QuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgdHJhbnNmb3JtYXRpb24gPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVj
dChGbG9hdFJlY3QoRmxvYXRQb2ludCgwLjAsIDAuMCksIFdlYkNvcmU6OkludFNpemUodHJhbnNm
b3JtZWRTcmNSZWN0LnNpemUoKSkpLCBXZWJDb3JlOjpJbnRSZWN0KGRzdFJlY3QpKTsKIAotICAg
ICAgICAvLyBEb24ndCBjbGlwIHRvIGNvbnRlbnRzIGlmIGl0IGlzIGVtcHR5IHNvIHdlIGNhbiBz
dGlsbCBwYWludCBkZWZhdWx0IGJhY2tncm91bmQuCi0gICAgICAgIGlmICghdHJhbnNmb3JtZWRD
b250ZW50c1JlY3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBjbGlwcGVkVHJhbnNmb3JtZWRT
cmNSZWN0LmludGVyc2VjdCh0cmFuc2Zvcm1lZENvbnRlbnRzUmVjdCk7Ci0gICAgICAgICAgICBp
ZiAoY2xpcHBlZFRyYW5zZm9ybWVkU3JjUmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAg
ICBtX3dlYlBhZ2UtPmNsaWVudCgpLT5wb3N0VG9TdXJmYWNlKGRzdFJlY3QpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgUGxhdGZvcm06Oklu
dFJlY3RSZWdpb24gdHJhbnNmb3JtZWRTcmNSZWdpb24gPSBjbGlwcGVkVHJhbnNmb3JtZWRTcmNS
ZWN0OwotICAgICAgICAgICAgUGxhdGZvcm06OkludFJlY3RSZWdpb24gYmFja2luZ1N0b3JlUmVn
aW9uID0gZ2VvbWV0cnktPmJhY2tpbmdTdG9yZVJlY3QoKTsKLSAgICAgICAgICAgIFBsYXRmb3Jt
OjpJbnRSZWN0UmVnaW9uIGNoZWNrZXJlZFJlZ2lvbgotICAgICAgICAgICAgICAgID0gUGxhdGZv
cm06OkludFJlY3RSZWdpb246OnN1YnRyYWN0UmVnaW9ucyh0cmFuc2Zvcm1lZFNyY1JlZ2lvbiwg
YmFja2luZ1N0b3JlUmVnaW9uKTsKLQotICAgICAgICAgICAgLy8gQmxpdCBjaGVja2VyZWQgdG8g
dGhvc2UgcGFydHMgdGhhdCBhcmUgbm90IGNvdmVyZWQgYnkgdGhlIGJhY2tpbmdTdG9yZVJlY3Qu
Ci0gICAgICAgICAgICBzdGQ6OnZlY3RvcjxQbGF0Zm9ybTo6SW50UmVjdD4gY2hlY2tlcmVkUmVj
dHMgPSBjaGVja2VyZWRSZWdpb24ucmVjdHMoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY2hlY2tlcmVkUmVjdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBQ
bGF0Zm9ybTo6SW50UmVjdCBjbGlwcGVkRHN0UmVjdCA9IHRyYW5zZm9ybWF0aW9uLm1hcFJlY3Qo
UGxhdGZvcm06OkludFJlY3QoCi0gICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtOjpJbnRQb2lu
dChjaGVja2VyZWRSZWN0cy5hdChpKS54KCkgLSBvcmlnaW4ueCgpLCBjaGVja2VyZWRSZWN0cy5h
dChpKS55KCkgLSBvcmlnaW4ueSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoZWNrZXJlZFJlY3RzLmF0KGkpLnNpemUoKSkpOwotICAgICAgICAgICAgICAgIC8v
IFRvIGVsaW1pbmF0ZSAxIHBpeGVsIGluZmxhdGlvbiBkdWUgdG8gdHJhbnNmb3JtYXRpb24gcm91
bmRpbmcuCi0gICAgICAgICAgICAgICAgY2xpcHBlZERzdFJlY3QuaW50ZXJzZWN0KGRzdFJlY3Qp
OwotI2lmIERFQlVHX0NIRUNLRVJCT0FSRAotICAgICAgICAgICAgICAgIGJsaXRDaGVja2VyZWQg
PSB0cnVlOwotI2VuZGlmCi0KLSAgICAgICAgICAgICAgICBmaWxsV2luZG93KEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpHcmFwaGljczo6Q2hlY2tlcmJvYXJkUGF0dGVybiwKLSAgICAgICAgICAgICAg
ICAgICAgY2xpcHBlZERzdFJlY3QsIGNoZWNrZXJlZFJlY3RzLmF0KGkpLmxvY2F0aW9uKCksIHRy
YW5zZm9ybWF0aW9uLmEoKSk7CisgICAgICAgIFBsYXRmb3JtOjpHcmFwaGljczo6UGxhdGZvcm1H
cmFwaGljc0NvbnRleHQqIGRlc3RpbmF0aW9uQ29udGV4dCA9IGxvY2tCdWZmZXJEcmF3YWJsZShk
c3RCdWZmZXIpOworICAgICAgICBpZiAoIWRlc3RpbmF0aW9uQ29udGV4dCkKKyAgICAgICAgICAg
IFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsV2FybiwgIkNvdWxkIG5vdCBs
b2NrIGRyYXdhYmxlIGZvciB0aGUgZGVzdGluYXRpb24gYnVmZmVyLCBub3QgZHJhd2luZyBjaGVj
a2VyYm9hcmQuIik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gRm9yIHB1YmxpYyBi
dWlsZHMsIGtlZXAgcGFnZSBiYWNrZ3JvdW5kIGNvbG9yIChhcyBmaWxsZWQgYnkKKyAgICAgICAg
ICAgIC8vIGNsZWFyQnVmZmVyKCkgYWJvdmUpIHRvIGNvbnZleSB0aGUgaW1wcmVzc2lvbiBvZiBs
ZXNzIGNoZWNrZXJib2FyZC4KKyAgICAgICAgICAgIGlmICghQmxhY2tCZXJyeTo6UGxhdGZvcm06
OlNldHRpbmdzOjppc1B1YmxpY0J1aWxkKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBGb3IgZGV2
ZWxvcGVyIGJ1aWxkcywga2VlcCB0aGUgY2hlY2tlcmJvYXJkIHRvIGdldCBpdCBmaXhlZCBiZXR0
ZXIuCisgICAgICAgICAgICAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpBZmZpbmVUcmFuc2Zvcm0g
c3JjVHJhbnNmb3JtOworICAgICAgICAgICAgICAgIHNyY1RyYW5zZm9ybS5zY2FsZSh0cmFuc2Zv
cm1hdGlvbi5hKCkpOworICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uQ29udGV4dC0+YWRkUHJl
ZGVmaW5lZFBhdHRlcm4oCisgICAgICAgICAgICAgICAgICAgIHZpZXdwb3J0QWNjZXNzb3ItPnBp
eGVsVmlld3BvcnRGcm9tQ29udGVudHModmlld3BvcnRBY2Nlc3Nvci0+cGl4ZWxDb250ZW50c1Jl
Y3QoKSksCisgICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtOjpHcmFwaGljczo6Q2hlY2tlcmJv
YXJkLCBzcmNUcmFuc2Zvcm0pOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVsZWFzZUJ1
ZmZlckRyYXdhYmxlKGRzdEJ1ZmZlcik7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHZXQgdGhl
IGxpc3Qgb2YgdGlsZSByZWN0cyB0aGF0IG1ha2V1cCB0aGUgY29udGVudC4KQEAgLTEzMTIsMjkg
KzEyNjQsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMo
Ym9vbCBmb3JjZSkKIAogICAgICAgICAgICAgVGlsZUJ1ZmZlciogdGlsZUJ1ZmZlciA9IGN1cnJl
bnRNYXAuZ2V0KGluZGV4KTsKIAotICAgICAgICAgICAgYm9vbCBpc1RpbGVDb3JyZXNwb25kaW5n
VG9CdWZmZXIgPSBnZW9tZXRyeS0+aXNUaWxlQ29ycmVzcG9uZGluZ1RvQnVmZmVyKGluZGV4LCB0
aWxlQnVmZmVyKTsKLSAgICAgICAgICAgIGJvb2wgcmVuZGVyZWQgPSB0aWxlQnVmZmVyICYmIHRp
bGVCdWZmZXItPmlzUmVuZGVyZWQodGlsZVJlY3Quc2Vjb25kLCBjdXJyZW50U2NhbGUpOwotICAg
ICAgICAgICAgYm9vbCBwYWludENoZWNrZXJlZCA9ICFpc1RpbGVDb3JyZXNwb25kaW5nVG9CdWZm
ZXIgfHwgIXJlbmRlcmVkOwotCi0gICAgICAgICAgICBpZiAocGFpbnRDaGVja2VyZWQpIHsKLSAg
ICAgICAgICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdCBkaXJ0eVJlY3RUID0gdHJhbnNmb3JtYXRp
b24ubWFwUmVjdChkaXJ0eVJlY3QpOwotCi0gICAgICAgICAgICAgICAgaWYgKCF0cmFuc2Zvcm1h
dGlvbi5pc0lkZW50aXR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gQmVjYXVzZSBvZiBy
b3VuZGluZyBpdCBpcyBwb3NzaWJsZSB0aGF0IGRpcnR5UmVjdCBjb3VsZCBiZSBvZmYtYnktb25l
IGxhcmdlcgotICAgICAgICAgICAgICAgICAgICAvLyB0aGFuIHRoZSBzdXJmYWNlIHNpemUgb2Yg
dGhlIGRzdCBidWZmZXIuIFdlIHByZXZlbnQgdGhpcyBoZXJlLCBieSBjbGFtcGluZwotICAgICAg
ICAgICAgICAgICAgICAvLyBpdCB0byBlbnN1cmUgdGhhdCBjYW4ndCBoYXBwZW4uCi0gICAgICAg
ICAgICAgICAgICAgIGRpcnR5UmVjdFQuaW50ZXJzZWN0KFBsYXRmb3JtOjpJbnRSZWN0KFBsYXRm
b3JtOjpJbnRQb2ludCgwLCAwKSwgc3VyZmFjZVNpemUoKSkpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBjb25zdCBQbGF0Zm9ybTo6SW50UG9pbnQgY29udGVudHNPcmlnaW4o
ZGlydHlSZWN0LngoKSArIG9yaWdpbi54KCksIGRpcnR5UmVjdC55KCkgKyBvcmlnaW4ueSgpKTsK
LSNpZiBERUJVR19DSEVDS0VSQk9BUkQKLSAgICAgICAgICAgICAgICBibGl0Q2hlY2tlcmVkID0g
dHJ1ZTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIGZpbGxXaW5kb3coQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkdyYXBoaWNzOjpDaGVja2VyYm9hcmRQYXR0ZXJuLAotICAgICAgICAgICAgICAgICAg
ICBkaXJ0eVJlY3RULCBjb250ZW50c09yaWdpbiwgdHJhbnNmb3JtYXRpb24uYSgpKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQmxpdCB0aGUgdmlzaWJsZSBidWZmZXIgaGVyZSBp
ZiB3ZSBoYXZlIHZpc2libGUgem9vbSBqb2JzLgotICAgICAgICAgICAgaWYgKGlzVGlsZUNvcnJl
c3BvbmRpbmdUb0J1ZmZlcikgeworICAgICAgICAgICAgaWYgKGdlb21ldHJ5LT5pc1RpbGVDb3Jy
ZXNwb25kaW5nVG9CdWZmZXIoaW5kZXgsIHRpbGVCdWZmZXIpKSB7CiAgICAgICAgICAgICAgICAg
Ly8gSW50ZXJzZWN0IHRoZSByZW5kZXJlZCByZWdpb24uCiAgICAgICAgICAgICAgICAgUGxhdGZv
cm06OkludFJlY3RSZWdpb24gcmVuZGVyZWRSZWdpb24gPSB0aWxlQnVmZmVyLT5yZW5kZXJlZFJl
Z2lvbigpOwogICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPFBsYXRmb3JtOjpJbnRSZWN0PiBk
aXJ0eVJlbmRlcmVkUmVjdHMgPSByZW5kZXJlZFJlZ2lvbi5yZWN0cygpOwpAQCAtMTM1Nyw1MiAr
MTI4Nyw2NSBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMo
Ym9vbCBmb3JjZSkKICAgICAgICAgU3VyZmFjZVBvb2w6Omdsb2JhbFN1cmZhY2VQb29sKCktPm5v
dGlmeUJ1ZmZlcnNDb21wb3NpdGVkKGJsaXR0ZWRUaWxlcyk7CiAKICNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSogY29tcG9z
aXRvciA9IG1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRvcigpKSB7CisgICAgaWYgKFdlYlBhZ2VDb21w
b3NpdG9yUHJpdmF0ZSogY29tcG9zaXRvciA9IG1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRvcigpKQog
ICAgICAgICBjb21wb3NpdG9yLT5kcmF3TGF5ZXJzKGRzdFJlY3QsIGRvY3VtZW50U3JjUmVjdCk7
Ci0gICAgICAgIGlmIChjb21wb3NpdG9yLT5kcmF3c1Jvb3RMYXllcigpKQotICAgICAgICAgICAg
cGFpbnREZWZhdWx0QmFja2dyb3VuZChkc3RSZWN0LCB2aWV3cG9ydEFjY2Vzc29yLCBmYWxzZSAv
KmZsdXNoKi8pOwotICAgIH0KICNlbmRpZgogCisgICAgLy8gT3ZlcmxheSBhbiBvdmVyc2Nyb2xs
IHBhdHRlcm4gKG9yIGNvbG9yKSBmb3IgYXJlYXMgb3V0c2lkZSBvZiB0aGUgcGFnZSBjb250ZW50
cy4KKyAgICBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCBwaXhlbENvbnRlbnRzUmVjdCA9IHZpZXdw
b3J0QWNjZXNzb3ItPnBpeGVsQ29udGVudHNSZWN0KCk7CisgICAgUGxhdGZvcm06OkludFJlY3RS
ZWdpb24gb3ZlclNjcm9sbFJlZ2lvbiA9IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uOjpzdWJ0cmFj
dFJlZ2lvbnMoCisgICAgICAgIGRzdFJlY3QsIHZpZXdwb3J0QWNjZXNzb3ItPnBpeGVsVmlld3Bv
cnRGcm9tQ29udGVudHMocGl4ZWxDb250ZW50c1JlY3QpKTsKKworICAgIGlmICghb3ZlclNjcm9s
bFJlZ2lvbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpQbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dCogZGVzdGluYXRpb25Db250ZXh0ID0gbG9ja0J1ZmZlckRyYXdhYmxl
KGRzdEJ1ZmZlcik7CisgICAgICAgIGlmICghZGVzdGluYXRpb25Db250ZXh0KQorICAgICAgICAg
ICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxXYXJuLCAiQ291bGQgbm90
IGxvY2sgZHJhd2FibGUgZm9yIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIsIG5vdCBkcmF3aW5nIG92
ZXJzY3JvbGwuIik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3RkOjp2ZWN0b3I8UGxh
dGZvcm06OkludFJlY3Q+IG92ZXJTY3JvbGxSZWN0cyA9IG92ZXJTY3JvbGxSZWdpb24ucmVjdHMo
KTsKKworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvdmVyU2Nyb2xsUmVjdHMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdCBvdmVyU2Ny
b2xsUmVjdCA9IG92ZXJTY3JvbGxSZWN0cy5hdChpKTsKKworICAgICAgICAgICAgICAgIGlmICht
X3dlYlBhZ2UtPnNldHRpbmdzKCktPmlzRW5hYmxlRGVmYXVsdE92ZXJTY3JvbGxCYWNrZ3JvdW5k
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpBZmZpbmVUcmFu
c2Zvcm0gc3JjVHJhbnNmb3JtOworICAgICAgICAgICAgICAgICAgICBzcmNUcmFuc2Zvcm0udHJh
bnNsYXRlKC1vdmVyU2Nyb2xsUmVjdC54KCksIC1vdmVyU2Nyb2xsUmVjdC55KCkpOworICAgICAg
ICAgICAgICAgICAgICBkZXN0aW5hdGlvbkNvbnRleHQtPmFkZFByZWRlZmluZWRQYXR0ZXJuKG92
ZXJTY3JvbGxSZWN0LCBQbGF0Zm9ybTo6R3JhcGhpY3M6Ok92ZXJzY3JvbGwsIHNyY1RyYW5zZm9y
bSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZGVzdGlu
YXRpb25Db250ZXh0LT5zZXRGaWxsQ29sb3IobV93ZWJQYWdlLT5zZXR0aW5ncygpLT5vdmVyU2Ny
b2xsQ29sb3IoKSk7CisgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uQ29udGV4dC0+YWRk
RmlsbFJlY3Qob3ZlclNjcm9sbFJlY3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJlbGVhc2VCdWZmZXJEcmF3YWJsZShkc3RCdWZmZXIpOworICAgICAg
ICB9CisgICAgfQorCiAjaWYgREVCVUdfVklTVUFMSVpFCiAgICAgaWYgKGRlYnVnVmlld3BvcnRB
Y2Nlc3NvcikgewotICAgICAgICBQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogdGFyZ2V0QnVm
ZmVyID0gYnVmZmVyKCk7Ci0gICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0IHdrVmlld3BvcnQgPSBk
ZWJ1Z1ZpZXdwb3J0QWNjZXNzb3ItPnJvdW5kVG9QaXhlbEZyb21Eb2N1bWVudENvbnRlbnRzKFBs
YXRmb3JtOjpJbnRSZWN0KG1fY2xpZW50LT52aXNpYmxlQ29udGVudHNSZWN0KCkpKTsKLSAgICAg
ICAgUGxhdGZvcm06OkludFJlY3QgdWlWaWV3cG9ydCA9IGRlYnVnVmlld3BvcnRBY2Nlc3Nvci0+
cm91bmRUb1BpeGVsRnJvbURvY3VtZW50Q29udGVudHMoZG9jdW1lbnRWaWV3cG9ydFJlY3QpOwot
ICAgICAgICB3a1ZpZXdwb3J0Lm1vdmUoLXBpeGVsU3JjUmVjdC54KCksIC1waXhlbFNyY1JlY3Qu
eSgpKTsKLSAgICAgICAgdWlWaWV3cG9ydC5tb3ZlKC1waXhlbFNyY1JlY3QueCgpLCAtcGl4ZWxT
cmNSZWN0LnkoKSk7Ci0KLSAgICAgICAgLy8gRHJhdyBhIGJsdWUgcmVjdCBmb3IgdGhlIHdlYmtp
dCB0aHJlYWQgdmlld3BvcnQuCi0gICAgICAgIFBsYXRmb3JtOjpHcmFwaGljczo6Y2xlYXJCdWZm
ZXIodGFyZ2V0QnVmZmVyLCBQbGF0Zm9ybTo6SW50UmVjdCh3a1ZpZXdwb3J0LngoKSwgd2tWaWV3
cG9ydC55KCksIHdrVmlld3BvcnQud2lkdGgoKSwgMSksIDAsIDAsIDI1NSwgMjU1KTsKLSAgICAg
ICAgUGxhdGZvcm06OkdyYXBoaWNzOjpjbGVhckJ1ZmZlcih0YXJnZXRCdWZmZXIsIFBsYXRmb3Jt
OjpJbnRSZWN0KHdrVmlld3BvcnQueCgpLCB3a1ZpZXdwb3J0LnkoKSwgMSwgd2tWaWV3cG9ydC5o
ZWlnaHQoKSksIDAsIDAsIDI1NSwgMjU1KTsKLSAgICAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpj
bGVhckJ1ZmZlcih0YXJnZXRCdWZmZXIsIFBsYXRmb3JtOjpJbnRSZWN0KHdrVmlld3BvcnQueCgp
LCB3a1ZpZXdwb3J0LmJvdHRvbSgpIC0gMSwgd2tWaWV3cG9ydC53aWR0aCgpLCAxKSwgMCwgMCwg
MjU1LCAyNTUpOwotICAgICAgICBQbGF0Zm9ybTo6R3JhcGhpY3M6OmNsZWFyQnVmZmVyKHRhcmdl
dEJ1ZmZlciwgUGxhdGZvcm06OkludFJlY3Qod2tWaWV3cG9ydC5yaWdodCgpIC0gMSwgd2tWaWV3
cG9ydC55KCksIDEsIHdrVmlld3BvcnQuaGVpZ2h0KCkpLCAwLCAwLCAyNTUsIDI1NSk7Ci0KLSAg
ICAgICAgLy8gRHJhdyBhIHJlZCByZWN0IGZvciB0aGUgdWkgdGhyZWFkIHZpZXdwb3J0LgotICAg
ICAgICBQbGF0Zm9ybTo6R3JhcGhpY3M6OmNsZWFyQnVmZmVyKHRhcmdldEJ1ZmZlciwgUGxhdGZv
cm06OkludFJlY3QodWlWaWV3cG9ydC54KCksIHVpVmlld3BvcnQueSgpLCB1aVZpZXdwb3J0Lndp
ZHRoKCksIDEpLCAyNTUsIDAsIDAsIDI1NSk7Ci0gICAgICAgIFBsYXRmb3JtOjpHcmFwaGljczo6
Y2xlYXJCdWZmZXIodGFyZ2V0QnVmZmVyLCBQbGF0Zm9ybTo6SW50UmVjdCh1aVZpZXdwb3J0Lngo
KSwgdWlWaWV3cG9ydC55KCksIDEsIHVpVmlld3BvcnQuaGVpZ2h0KCkpLCAyNTUsIDAsIDAsIDI1
NSk7Ci0gICAgICAgIFBsYXRmb3JtOjpHcmFwaGljczo6Y2xlYXJCdWZmZXIodGFyZ2V0QnVmZmVy
LCBQbGF0Zm9ybTo6SW50UmVjdCh1aVZpZXdwb3J0LngoKSwgdWlWaWV3cG9ydC5ib3R0b20oKSAt
IDEsIHVpVmlld3BvcnQud2lkdGgoKSwgMSksIDI1NSwgMCwgMCwgMjU1KTsKLSAgICAgICAgUGxh
dGZvcm06OkdyYXBoaWNzOjpjbGVhckJ1ZmZlcih0YXJnZXRCdWZmZXIsIFBsYXRmb3JtOjpJbnRS
ZWN0KHVpVmlld3BvcnQucmlnaHQoKSAtIDEsIHVpVmlld3BvcnQueSgpLCAxLCB1aVZpZXdwb3J0
LmhlaWdodCgpKSwgMjU1LCAwLCAwLCAyNTUpOworICAgICAgICBQbGF0Zm9ybTo6R3JhcGhpY3M6
OlBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBkZXN0aW5hdGlvbkNvbnRleHQgPSBsb2NrQnVmZmVy
RHJhd2FibGUoZHN0QnVmZmVyKTsKKyAgICAgICAgaWYgKCFkZXN0aW5hdGlvbkNvbnRleHQpCisg
ICAgICAgICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbFdhcm4sICJD
b3VsZCBub3QgbG9jayBkcmF3YWJsZSBmb3IgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciwgbm90IGRy
YXdpbmcgdmlld3BvcnQgZGVidWcgcmVjdHMuIik7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgUGxhdGZvcm06OkZsb2F0UmVjdCB3a1ZpZXdwb3J0ID0gZGVidWdWaWV3cG9ydEFjY2Vzc29y
LT5yb3VuZFRvUGl4ZWxGcm9tRG9jdW1lbnRDb250ZW50cyhQbGF0Zm9ybTo6SW50UmVjdChtX2Ns
aWVudC0+dmlzaWJsZUNvbnRlbnRzUmVjdCgpKSk7CisgICAgICAgICAgICBQbGF0Zm9ybTo6Rmxv
YXRSZWN0IHVpVmlld3BvcnQgPSBkZWJ1Z1ZpZXdwb3J0QWNjZXNzb3ItPnJvdW5kVG9QaXhlbEZy
b21Eb2N1bWVudENvbnRlbnRzKGRvY3VtZW50Vmlld3BvcnRSZWN0KTsKKyAgICAgICAgICAgIHdr
Vmlld3BvcnQubW92ZSgtcGl4ZWxTcmNSZWN0LngoKSwgLXBpeGVsU3JjUmVjdC55KCkpOworICAg
ICAgICAgICAgdWlWaWV3cG9ydC5tb3ZlKC1waXhlbFNyY1JlY3QueCgpLCAtcGl4ZWxTcmNSZWN0
LnkoKSk7CiAKLSAgICAgICAgZGVsZXRlIGRlYnVnVmlld3BvcnRBY2Nlc3NvcjsKLSAgICB9Ci0j
ZW5kaWYKKyAgICAgICAgICAgIC8vIFNocmluayBieSBoYWxmIGEgcGl4ZWwgdG8gbWFrZSBwaXhl
bC1wZXJmZWN0IHN0cm9rZSByZWN0YW5nbGVzLgorICAgICAgICAgICAgd2tWaWV3cG9ydC5pbmZs
YXRlKC0wLjUsIC0wLjUpOworICAgICAgICAgICAgdWlWaWV3cG9ydC5pbmZsYXRlKC0wLjUsIC0w
LjUpOwogCi0jaWYgREVCVUdfQ0hFQ0tFUkJPQVJECi0gICAgc3RhdGljIGRvdWJsZSBsYXN0Q2hl
Y2tlcmVkVGltZSA9IDA7CisgICAgICAgICAgICAvLyBEcmF3IGEgYmx1ZSByZWN0IGZvciB0aGUg
d2Via2l0IHRocmVhZCB2aWV3cG9ydC4KKyAgICAgICAgICAgIG92ZXJsYXlDb250ZXh0LT5zZXRT
dHJva2VDb2xvcigweGZmMDAwMGZmKTsKKyAgICAgICAgICAgIG92ZXJsYXlDb250ZXh0LT5hZGRT
dHJva2VSZWN0KHdrVmlld3BvcnQsIDEuMCk7CiAKLSAgICBpZiAoYmxpdENoZWNrZXJlZCAmJiAh
bGFzdENoZWNrZXJlZFRpbWUpIHsKLSAgICAgICAgbGFzdENoZWNrZXJlZFRpbWUgPSBXVEY6OmN1
cnJlbnRUaW1lKCk7Ci0gICAgICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xl
dmVsQ3JpdGljYWwsCi0gICAgICAgICAgICAiQmxpdHRpbmcgY2hlY2tlcmVkIHBhdHRlcm4gYXQg
JWYiLCBsYXN0Q2hlY2tlcmVkVGltZSk7Ci0gICAgfSBlbHNlIGlmIChibGl0Q2hlY2tlcmVkICYm
IGxhc3RDaGVja2VyZWRUaW1lKSB7Ci0gICAgICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZv
cm06OkxvZ0xldmVsQ3JpdGljYWwsCi0gICAgICAgICAgICAiQmxpdHRpbmcgY2hlY2tlcmVkIHBh
dHRlcm4gYXQgJWYiLCBXVEY6OmN1cnJlbnRUaW1lKCkpOwotICAgIH0gZWxzZSBpZiAoIWJsaXRD
aGVja2VyZWQgJiYgbGFzdENoZWNrZXJlZFRpbWUpIHsKLSAgICAgICAgZG91YmxlIHRpbWUgPSBX
VEY6OmN1cnJlbnRUaW1lKCk7Ci0gICAgICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06
OkxvZ0xldmVsQ3JpdGljYWwsCi0gICAgICAgICAgICAiQmxpdHRpbmcgb3ZlciBjaGVja2VyZWQg
cGF0dGVybiBhdCAlZiB0b29rICVmIiwgdGltZSwgdGltZSAtIGxhc3RDaGVja2VyZWRUaW1lKTsK
LSAgICAgICAgbGFzdENoZWNrZXJlZFRpbWUgPSAwOworICAgICAgICAgICAgLy8gRHJhdyBhIHJl
ZCByZWN0IGZvciB0aGUgdWkgdGhyZWFkIHZpZXdwb3J0LgorICAgICAgICAgICAgb3ZlcmxheUNv
bnRleHQtPnNldFN0cm9rZUNvbG9yKDB4MDAwMGZmZmYpOworICAgICAgICAgICAgb3ZlcmxheUNv
bnRleHQtPmFkZFN0cm9rZVJlY3QodWlWaWV3cG9ydCwgMS4wKTsKKworICAgICAgICAgICAgcmVs
ZWFzZUJ1ZmZlckRyYXdhYmxlKGRzdEJ1ZmZlcik7CisgICAgICAgIH0KKworICAgICAgICBkZWxl
dGUgZGVidWdWaWV3cG9ydEFjY2Vzc29yOwogICAgIH0KICNlbmRpZgogCkBAIC0xOTU3LDMwICsx
OTAwLDYgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0VG9XaW5kb3coY29uc3QgUGxh
dGZvcm06OkludFJlY3QmIGRzdFJlY3QsCiAKIH0KIAotdm9pZCBCYWNraW5nU3RvcmVQcml2YXRl
OjpmaWxsV2luZG93KFBsYXRmb3JtOjpHcmFwaGljczo6RmlsbFBhdHRlcm4gcGF0dGVybiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQbGF0Zm9ybTo6SW50UmVj
dCYgZHN0UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQ
bGF0Zm9ybTo6SW50UG9pbnQmIGNvbnRlbnRzT3JpZ2luLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvdWJsZSBjb250ZW50c1NjYWxlKQotewotICAgIEFTU0VSVChCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXND
dXJyZW50VGhyZWFkKCkpOwotCi0gICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpC
dWZmZXIqIGRzdEJ1ZmZlciA9IGJ1ZmZlcigpOwotICAgIEFTU0VSVChkc3RCdWZmZXIpOwotICAg
IGlmICghZHN0QnVmZmVyKQotICAgICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpM
b2dMZXZlbFdhcm4sICJFbXB0eSB3aW5kb3cgYnVmZmVyLCBjb3VsZG4ndCBmaWxsV2luZG93Iik7
Ci0KLSAgICBpZiAocGF0dGVybiA9PSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkNo
ZWNrZXJib2FyZFBhdHRlcm4gJiYgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlNldHRpbmdzOjppc1B1
YmxpY0J1aWxkKCkpIHsKLSAgICAgICAgLy8gRm9yIHB1YmxpYyBidWlsZHMsIGNvbnZleSB0aGUg
aW1wcmVzc2lvbiBvZiBsZXNzIGNoZWNrZXJib2FyZC4KLSAgICAgICAgLy8gRm9yIGRldmVsb3Bl
ciBidWlsZHMsIGtlZXAgdGhlIGNoZWNrZXJib2FyZCB0byBnZXQgaXQgZml4ZWQgYmV0dGVyLgot
ICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmNsZWFyQnVmZmVyKGRzdEJ1
ZmZlciwgZHN0UmVjdCwKLSAgICAgICAgICAgIG1fd2ViUGFnZUJhY2tncm91bmRDb2xvci5yZWQo
KSwgbV93ZWJQYWdlQmFja2dyb3VuZENvbG9yLmdyZWVuKCksCi0gICAgICAgICAgICBtX3dlYlBh
Z2VCYWNrZ3JvdW5kQ29sb3IuYmx1ZSgpLCBtX3dlYlBhZ2VCYWNrZ3JvdW5kQ29sb3IuYWxwaGEo
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
R3JhcGhpY3M6OmZpbGxCdWZmZXIoZHN0QnVmZmVyLCBwYXR0ZXJuLCBkc3RSZWN0LCBjb250ZW50
c09yaWdpbiwgY29udGVudHNTY2FsZSk7Ci19Ci0KIFdlYkNvcmU6OkNvbG9yIEJhY2tpbmdTdG9y
ZVByaXZhdGU6OndlYlBhZ2VCYWNrZ3JvdW5kQ29sb3JVc2VySW50ZXJmYWNlVGhyZWFkKCkgY29u
c3QKIHsKICAgICBBU1NFUlQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJl
YWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVudFRocmVhZCgpKTsKQEAgLTIwMDEsMzggKzE5MjAs
NiBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNldFdlYlBhZ2VCYWNrZ3JvdW5kQ29sb3Io
Y29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQogICAgIG1fd2ViUGFnZUJhY2tncm91bmRDb2xv
ciA9IGNvbG9yOwogfQogCi12b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmNsZWFyV2luZG93KGNv
bnN0IFBsYXRmb3JtOjpJbnRSZWN0JiByZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciBncmVlbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBibHVlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGFscGhhKQotewotICAgIGlmICghQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3Vy
cmVudFRocmVhZCgpKSB7Ci0gICAgICAgIHR5cGVkZWYgdm9pZCAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpCYWNraW5nU3RvcmVQcml2YXRlOjoqRnVuY3Rpb25UeXBlKShjb25zdCBQbGF0Zm9ybTo6SW50
UmVjdCYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKTsKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmRpc3BhdGNoTWVzc2FnZSgK
LSAgICAgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpjcmVhdGVNZXRob2RDYWxsTWVzc2Fn
ZTxGdW5jdGlvblR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQmFja2luZ1N0b3JlUHJpdmF0ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyPigKLSAg
ICAgICAgICAgICAgICAmQmFja2luZ1N0b3JlUHJpdmF0ZTo6Y2xlYXJXaW5kb3csIHRoaXMsIHJl
Y3QsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogZHN0QnVmZmVyID0g
YnVmZmVyKCk7Ci0gICAgQVNTRVJUKGRzdEJ1ZmZlcik7Ci0gICAgaWYgKCFkc3RCdWZmZXIpCi0g
ICAgICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsV2FybiwgIkVtcHR5
IHdpbmRvdyBidWZmZXIsIGNvdWxkbid0IGNsZWFyV2luZG93Iik7Ci0KLSAgICBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmNsZWFyQnVmZmVyKGRzdEJ1ZmZlciwgcmVjdCwgcmVkLCBn
cmVlbiwgYmx1ZSwgYWxwaGEpOwotfQotCiBib29sIEJhY2tpbmdTdG9yZVByaXZhdGU6OmlzU2Ny
b2xsaW5nT3Jab29taW5nKCkgY29uc3QKIHsKICAgICBBU1NFUlQoQmxhY2tCZXJyeTo6UGxhdGZv
cm06OndlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmVfcC5oIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmVfcC5oCmluZGV4IGE2MjI0
YTk0ZjM1YWIwZDkzZWI1YTRmZTNmODU0NWI4ZDIyZDA3NjIuLjg1NWZhNjg1NTU4ODRhYTBlYWRm
MjBlMDZlZmRkMGZhN2U5OTM5NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvQmFja2luZ1N0b3JlX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L0JhY2tpbmdTdG9yZV9wLmgKQEAgLTE4Niw3ICsxODYsNiBAQCBwdWJsaWM6CiAgICAgLy8gSGVs
cGVyIHJlbmRlciBtZXRob2RzLgogICAgIHZvaWQgcmVuZGVyQW5kQmxpdFZpc2libGVDb250ZW50
c0ltbWVkaWF0ZWx5KCk7CiAgICAgdm9pZCByZW5kZXJBbmRCbGl0SW1tZWRpYXRlbHkoY29uc3Qg
UGxhdGZvcm06OkludFJlY3QmKTsKLSAgICB2b2lkIHBhaW50RGVmYXVsdEJhY2tncm91bmQoY29u
c3QgUGxhdGZvcm06OkludFJlY3QmIGRzdFJlY3QsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpWaWV3
cG9ydEFjY2Vzc29yKiwgYm9vbCBmbHVzaCk7CiAgICAgdm9pZCBibGl0VmlzaWJsZUNvbnRlbnRz
KGJvb2wgZm9yY2UgPSBmYWxzZSk7CiAgICAgdm9pZCBibGl0T25JZGxlKCk7CiAKQEAgLTI3OSwx
MyArMjc4LDEwIEBAIHB1YmxpYzoKICAgICBib29sIHJlbmRlckNvbnRlbnRzKEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OkludFJlY3QmIGRzdFJlY3QsIGRvdWJsZSBzY2FsZSwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkZsb2F0UG9pbnQmIGRvY3VtZW50U2Nyb2xsUG9zaXRpb24sIExheWVyc1RvUmVuZGVyKSBj
b25zdDsKIAogICAgIHZvaWQgYmxpdFRvV2luZG93KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBk
c3RSZWN0LCBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogc3Jj
QnVmZmVyLCBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgc3JjUmVjdCwgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkdyYXBoaWNzOjpCbGVuZE1vZGUsIHVuc2lnbmVkIGNoYXIgZ2xvYmFsQWxwaGEpOwot
ICAgIHZvaWQgZmlsbFdpbmRvdyhQbGF0Zm9ybTo6R3JhcGhpY3M6OkZpbGxQYXR0ZXJuLCBjb25z
dCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0UmVjdCwgY29uc3QgUGxhdGZvcm06OkludFBvaW50JiBj
b250ZW50c09yaWdpbiwgZG91YmxlIGNvbnRlbnRzU2NhbGUpOwogCiAgICAgV2ViQ29yZTo6Q29s
b3Igd2ViUGFnZUJhY2tncm91bmRDb2xvclVzZXJJbnRlcmZhY2VUaHJlYWQoKSBjb25zdDsgLy8g
dXNlIFdlYlNldHRpbmdzOjpiYWNrZ3JvdW5kQ29sb3IoKSBmb3IgdGhlIFdlYktpdCB0aHJlYWQK
ICAgICB2b2lkIHNldFdlYlBhZ2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3Im
KTsKIAotICAgIHZvaWQgY2xlYXJXaW5kb3coY29uc3QgUGxhdGZvcm06OkludFJlY3QmLCB1bnNp
Z25lZCBjaGFyIHJlZCwgdW5zaWduZWQgY2hhciBncmVlbiwgdW5zaWduZWQgY2hhciBibHVlLCB1
bnNpZ25lZCBjaGFyIGFscGhhID0gMjU1KTsKLQogICAgIGJvb2wgaXNTY3JvbGxpbmdPclpvb21p
bmcoKSBjb25zdDsKICAgICB2b2lkIHNldFNjcm9sbGluZ09yWm9vbWluZyhib29sIHNjcm9sbGlu
Z09yWm9vbWluZywgYm9vbCBzaG91bGRCbGl0ID0gdHJ1ZSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200028</attachid>
            <date>2013-04-29 11:01:07 -0700</date>
            <delta_ts>2013-04-29 17:11:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115360-20130429140006.patch</filename>
            <type>text/plain</type>
            <size>22888</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Mjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCAwZjdhMjJkYzgxNDBlOTZhZWRhMzIzMTY3YTlmZDc5YjExOTNiYTlmLi45OTVhNGM1NjFm
ZDIzZGE2ZWExZjBkODc5NTI3N2FlZDU1OWNlOTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMy0wNC0yOSAgSmFrb2IgUGV0c292aXRzICA8anBl
dHNvdml0c0BibGFja2JlcnJ5LmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gUmVwbGFjZSBk
aXNhcHBlYXJpbmcgZmlsbEJ1ZmZlcigpIEFQSSB3aXRoIGdyYXBoaWNzIGNvbnRleHQgZHJhd2lu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1MzYw
CisgICAgICAgIEludGVybmFsIFBSIDMwMzA0OC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIHVzaW5nIGZpbGxCdWZmZXIoKSB0byBk
cmF3IGRpcmVjdGx5IHRvIHRoZQorICAgICAgICB0YXJnZXQgYnVmZmVyLCB3ZSBub3cgbG9jayBh
IERyYXdhYmxlIG9uIGl0IGFuZCBmaWxsIGl0CisgICAgICAgIHdpdGggUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQ6OmFkZFByZWRlZmluZWRQYXR0ZXJuKCkuCisKKyAgICAgICAgQXMgYSBib251cywg
dGhpcyBhbHNvIGluY2x1ZGVzIHJlbGF0ZWQgY2xlYW4tdXBzIC0KKyAgICAgICAgc2ltcGxlciBj
aGVja2VyYm9hcmQgcGFpbnRpbmcgY29kZSwgcmVtb3ZhbCBvZgorICAgICAgICBmaWxsV2luZG93
KCksIGNsZWFyV2luZG93KCkgYW5kIHBhaW50RGVmYXVsdEJhY2tncm91bmQoKSwKKyAgICAgICAg
YXMgd2VsbCBhcyBnZXR0aW5nIHJpZCBvZiB0aGUgREVCVUdfQ0hFQ0tFUkJPQVJEIGRlZmluZQor
ICAgICAgICB3aGljaCBoYXMgYmVlbiB1c2VsZXNzIGZvciBwZXJmb3JtYW5jZSB0cmFjaW5nIHB1
cnBvc2VzCisgICAgICAgIGZvciBhIHdoaWxlIG5vdy4KKworICAgICAgICAqIEFwaS9CYWNraW5n
U3RvcmUuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2
YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzKToKKyAgICAgICAgKiBBcGkvQmFja2luZ1N0b3JlX3Au
aDoKKwogMjAxMy0wNC0yNiAgTmltYSBHaGFuYXZhdGlhbiAgPG5naGFuYXZhdGlhbkBibGFja2Jl
cnJ5LmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gQ2hlY2sgZm9yIHZhbGlkIGVsZW1lbnQg
aW4gZWxlbWVudFRvdWNoZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9B
cGkvQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2lu
Z1N0b3JlLmNwcAppbmRleCBmNWE2NTE4OGI2NGQ2OWEzMGVmNWE1YTkxNTdhZDQ4YTZkYzRiNzY5
Li4xNTkzZGI2MjVjNDUzYWQ5N2YxZTEwNWQ5MzM1ZTIyYTNhOGZiODI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwCkBAIC00MCw2ICs0MCw3IEBA
CiAKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1FeGVjdXRhYmxlTWVzc2FnZS5oPgogI2lu
Y2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUdyYXBoaWNzLmg+CisjaW5jbHVkZSA8QmxhY2tCZXJy
eVBsYXRmb3JtR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3Jt
SW50UmVjdFJlZ2lvbi5oPgogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUxvZy5oPgogI2lu
Y2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybU1lc3NhZ2UuaD4KQEAgLTQ4LDYgKzQ5LDcgQEAKICNp
bmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1TZXR0aW5ncy5oPgogI2luY2x1ZGUgPEJsYWNrQmVy
cnlQbGF0Zm9ybVZpZXdwb3J0QWNjZXNzb3IuaD4KICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZv
cm1XaW5kb3cuaD4KKyNpbmNsdWRlIDxncmFwaGljcy9BZmZpbmVUcmFuc2Zvcm0uaD4KIAogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkBA
IC01Nyw3ICs1OSw2IEBACiAjZGVmaW5lIEVOQUJMRV9TQ1JPTExCQVJTIDEKICNkZWZpbmUgRU5B
QkxFX1JFUEFJTlRPTlNDUk9MTCAxCiAjZGVmaW5lIERFQlVHX0JBQ0tJTkdTVE9SRSAwCi0jZGVm
aW5lIERFQlVHX0NIRUNLRVJCT0FSRCAwCiAjZGVmaW5lIERFQlVHX1dFQkNPUkVfUkVRVUVTVFMg
MAogI2RlZmluZSBERUJVR19WSVNVQUxJWkUgMAogI2RlZmluZSBERUJVR19USUxFTUFUUklYIDAK
QEAgLTExMjEsMzggKzExMjIsNiBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnJlbmRlckFu
ZEJsaXRJbW1lZGlhdGVseShjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgcmVjdAogICAgIHJlbmRl
ckpvYigpOwogfQogCi12b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnBhaW50RGVmYXVsdEJhY2tn
cm91bmQoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGRzdFJlY3QsIFBsYXRmb3JtOjpWaWV3cG9y
dEFjY2Vzc29yKiB2aWV3cG9ydEFjY2Vzc29yLCBib29sKQotewotICAgIFBsYXRmb3JtOjpJbnRS
ZWN0IGNsaXBwZWREc3RSZWN0ID0gZHN0UmVjdDsKLQotICAgIC8vIEJlY2F1c2Ugb2Ygcm91bmRp
bmcgaXQgaXMgcG9zc2libGUgdGhhdCBvdmVyU2Nyb2xsUmVjdCBjb3VsZCBiZSBvZmYtYnktb25l
IGxhcmdlcgotICAgIC8vIHRoYW4gdGhlIHN1cmZhY2Ugc2l6ZSBvZiB0aGUgd2luZG93LiBXZSBw
cmV2ZW50IHRoaXMgaGVyZSwgYnkgY2xhbXBpbmcKLSAgICAvLyBpdCB0byBlbnN1cmUgdGhhdCBj
YW4ndCBoYXBwZW4uCi0gICAgY2xpcHBlZERzdFJlY3QuaW50ZXJzZWN0KFBsYXRmb3JtOjpJbnRS
ZWN0KFBsYXRmb3JtOjpJbnRQb2ludCgwLCAwKSwgc3VyZmFjZVNpemUoKSkpOwotCi0gICAgaWYg
KGNsaXBwZWREc3RSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gV2Ug
aGF2ZSB0byBwYWludCB0aGUgZGVmYXVsdCBiYWNrZ3JvdW5kIGluIHRoZSBjYXNlIG9mIG92ZXJ6
b29tIGFuZAotICAgIC8vIG1ha2Ugc3VyZSBpdCBpcyBpbnZhbGlkYXRlZC4KLSAgICBjb25zdCBQ
bGF0Zm9ybTo6SW50UmVjdCBwaXhlbENvbnRlbnRzUmVjdCA9IHZpZXdwb3J0QWNjZXNzb3ItPnBp
eGVsQ29udGVudHNSZWN0KCk7Ci0gICAgUGxhdGZvcm06OkludFJlY3RSZWdpb24gb3ZlclNjcm9s
bFJlZ2lvbiA9IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uOjpzdWJ0cmFjdFJlZ2lvbnMoCi0gICAg
ICAgIGNsaXBwZWREc3RSZWN0LCB2aWV3cG9ydEFjY2Vzc29yLT5waXhlbFZpZXdwb3J0RnJvbUNv
bnRlbnRzKHBpeGVsQ29udGVudHNSZWN0KSk7Ci0KLSAgICBzdGQ6OnZlY3RvcjxQbGF0Zm9ybTo6
SW50UmVjdD4gb3ZlclNjcm9sbFJlY3RzID0gb3ZlclNjcm9sbFJlZ2lvbi5yZWN0cygpOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3ZlclNjcm9sbFJlY3RzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0IG92ZXJTY3JvbGxSZWN0ID0gb3ZlclNjcm9sbFJlY3Rz
LmF0KGkpOwotCi0gICAgICAgIGlmIChtX3dlYlBhZ2UtPnNldHRpbmdzKCktPmlzRW5hYmxlRGVm
YXVsdE92ZXJTY3JvbGxCYWNrZ3JvdW5kKCkpIHsKLSAgICAgICAgICAgIGZpbGxXaW5kb3coQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpEZWZhdWx0QmFja2dyb3VuZFBhdHRlcm4sCi0g
ICAgICAgICAgICAgICAgb3ZlclNjcm9sbFJlY3QsIG92ZXJTY3JvbGxSZWN0LmxvY2F0aW9uKCks
IDEuMCAvKmNvbnRlbnRzU2NhbGUqLyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBD
b2xvciBjb2xvcihtX3dlYlBhZ2UtPnNldHRpbmdzKCktPm92ZXJTY3JvbGxDb2xvcigpKTsKLSAg
ICAgICAgICAgIGNsZWFyV2luZG93KG92ZXJTY3JvbGxSZWN0LCBjb2xvci5yZWQoKSwgY29sb3Iu
Z3JlZW4oKSwgY29sb3IuYmx1ZSgpLCBjb2xvci5hbHBoYSgpKTsKLSAgICAgICAgfQotICAgIH0K
LX0KLQogdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzKGJvb2wg
Zm9yY2UpCiB7CiAgICAgaWYgKCFCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRo
cmVhZE1lc3NhZ2VDbGllbnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpIHsKQEAgLTExOTAsNiArMTE1
OSw4IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFZpc2libGVDb250ZW50cyhib29s
IGZvcmNlKQogICAgIGlmICghdmlld3BvcnRBY2Nlc3NvcikKICAgICAgICAgcmV0dXJuOwogICAg
IGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0IGRzdFJlY3QgPSB2aWV3cG9ydEFjY2Vzc29yLT5kZXN0
aW5hdGlvblN1cmZhY2VSZWN0KCk7CisgICAgaWYgKGRzdFJlY3QuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CiAKICAgICBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCBwaXhlbFZpZXdwb3J0UmVj
dCA9IHZpZXdwb3J0QWNjZXNzb3ItPnBpeGVsVmlld3BvcnRSZWN0KCk7CiAgICAgY29uc3QgUGxh
dGZvcm06OkZsb2F0UmVjdCBkb2N1bWVudFZpZXdwb3J0UmVjdCA9IHZpZXdwb3J0QWNjZXNzb3It
PmRvY3VtZW50RnJvbVBpeGVsQ29udGVudHMocGl4ZWxWaWV3cG9ydFJlY3QpOwpAQCAtMTIxOSwy
MiArMTE5MCwxNiBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVu
dHMoYm9vbCBmb3JjZSkKICAgICBpZiAoZHN0QnVmZmVyKSB7CiAgICAgICAgIC8vIE9uIHRoZSBH
UFUsIGNsZWFyaW5nIGlzIGZyZWUgYW5kIGFsbG93cyBmb3Igb3B0aW1pemF0aW9ucywKICAgICAg
ICAgLy8gc28gd2UgYWx3YXlzIHdhbnQgdG8gZG8gdGhpcyBmaXJzdCBmb3IgdGhlIHdob2xlIHN1
cmZhY2UuCi0gICAgICAgIC8vIERvbid0IGNhbGwgY2xlYXJXaW5kb3coKSBhcyB3ZSBkb24ndCB3
YW50IHRvIGFkZCBpdCB0byB0aGUgcG9zdGVkIHJlY3QuCiAgICAgICAgIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpHcmFwaGljczo6Y2xlYXJCdWZmZXIoZHN0QnVmZmVyLAogICAgICAgICAgICAgbV93
ZWJQYWdlQmFja2dyb3VuZENvbG9yLnJlZCgpLCBtX3dlYlBhZ2VCYWNrZ3JvdW5kQ29sb3IuZ3Jl
ZW4oKSwKICAgICAgICAgICAgIG1fd2ViUGFnZUJhY2tncm91bmRDb2xvci5ibHVlKCksIG1fd2Vi
UGFnZUJhY2tncm91bmRDb2xvci5hbHBoYSgpKTsKICAgICB9IGVsc2UKICAgICAgICAgUGxhdGZv
cm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxXYXJuLCAiRW1wdHkgd2luZG93IGJ1ZmZl
ciwgY2FuJ3QgYmxpdCBjb250ZW50cy4iKTsKIAotI2lmIERFQlVHX0NIRUNLRVJCT0FSRAotICAg
IGJvb2wgYmxpdENoZWNrZXJlZCA9IGZhbHNlOwotI2VuZGlmCi0KKyAgICAvLyBOb3cgZ28gYWJv
dXQgYWN0dWFsbHkgY29tcG9zaXRpbmcgdGhlIGNvbnRlbnRzLgogICAgIFZlY3RvcjxUaWxlQnVm
ZmVyKj4gYmxpdHRlZFRpbGVzOwogCiAgICAgaWYgKGlzQWN0aXZlKCkgJiYgIW1fd2ViUGFnZS0+
ZC0+Y29tcG9zaXRvckRyYXdzUm9vdExheWVyKCkpIHsKLSAgICAgICAgcGFpbnREZWZhdWx0QmFj
a2dyb3VuZChkc3RSZWN0LCB2aWV3cG9ydEFjY2Vzc29yLCBmYWxzZSAvKmZsdXNoKi8pOwotCiAg
ICAgICAgIEJhY2tpbmdTdG9yZUdlb21ldHJ5KiBnZW9tZXRyeSA9IGZyb250U3RhdGUoKTsKICAg
ICAgICAgVGlsZU1hcCBjdXJyZW50TWFwID0gZ2VvbWV0cnktPnRpbGVNYXAoKTsKICAgICAgICAg
ZG91YmxlIGN1cnJlbnRTY2FsZSA9IGdlb21ldHJ5LT5zY2FsZSgpOwpAQCAtMTI1OCwzNCArMTIy
MywyMSBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMoYm9v
bCBmb3JjZSkKICAgICAgICAgaWYgKCF0cmFuc2Zvcm1lZFNyY1JlY3QuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgdHJhbnNmb3JtYXRpb24gPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVj
dChGbG9hdFJlY3QoRmxvYXRQb2ludCgwLjAsIDAuMCksIFdlYkNvcmU6OkludFNpemUodHJhbnNm
b3JtZWRTcmNSZWN0LnNpemUoKSkpLCBXZWJDb3JlOjpJbnRSZWN0KGRzdFJlY3QpKTsKIAotICAg
ICAgICAvLyBEb24ndCBjbGlwIHRvIGNvbnRlbnRzIGlmIGl0IGlzIGVtcHR5IHNvIHdlIGNhbiBz
dGlsbCBwYWludCBkZWZhdWx0IGJhY2tncm91bmQuCi0gICAgICAgIGlmICghdHJhbnNmb3JtZWRD
b250ZW50c1JlY3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBjbGlwcGVkVHJhbnNmb3JtZWRT
cmNSZWN0LmludGVyc2VjdCh0cmFuc2Zvcm1lZENvbnRlbnRzUmVjdCk7Ci0gICAgICAgICAgICBp
ZiAoY2xpcHBlZFRyYW5zZm9ybWVkU3JjUmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAg
ICBtX3dlYlBhZ2UtPmNsaWVudCgpLT5wb3N0VG9TdXJmYWNlKGRzdFJlY3QpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgUGxhdGZvcm06Oklu
dFJlY3RSZWdpb24gdHJhbnNmb3JtZWRTcmNSZWdpb24gPSBjbGlwcGVkVHJhbnNmb3JtZWRTcmNS
ZWN0OwotICAgICAgICAgICAgUGxhdGZvcm06OkludFJlY3RSZWdpb24gYmFja2luZ1N0b3JlUmVn
aW9uID0gZ2VvbWV0cnktPmJhY2tpbmdTdG9yZVJlY3QoKTsKLSAgICAgICAgICAgIFBsYXRmb3Jt
OjpJbnRSZWN0UmVnaW9uIGNoZWNrZXJlZFJlZ2lvbgotICAgICAgICAgICAgICAgID0gUGxhdGZv
cm06OkludFJlY3RSZWdpb246OnN1YnRyYWN0UmVnaW9ucyh0cmFuc2Zvcm1lZFNyY1JlZ2lvbiwg
YmFja2luZ1N0b3JlUmVnaW9uKTsKLQotICAgICAgICAgICAgLy8gQmxpdCBjaGVja2VyZWQgdG8g
dGhvc2UgcGFydHMgdGhhdCBhcmUgbm90IGNvdmVyZWQgYnkgdGhlIGJhY2tpbmdTdG9yZVJlY3Qu
Ci0gICAgICAgICAgICBzdGQ6OnZlY3RvcjxQbGF0Zm9ybTo6SW50UmVjdD4gY2hlY2tlcmVkUmVj
dHMgPSBjaGVja2VyZWRSZWdpb24ucmVjdHMoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY2hlY2tlcmVkUmVjdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBQ
bGF0Zm9ybTo6SW50UmVjdCBjbGlwcGVkRHN0UmVjdCA9IHRyYW5zZm9ybWF0aW9uLm1hcFJlY3Qo
UGxhdGZvcm06OkludFJlY3QoCi0gICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtOjpJbnRQb2lu
dChjaGVja2VyZWRSZWN0cy5hdChpKS54KCkgLSBvcmlnaW4ueCgpLCBjaGVja2VyZWRSZWN0cy5h
dChpKS55KCkgLSBvcmlnaW4ueSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoZWNrZXJlZFJlY3RzLmF0KGkpLnNpemUoKSkpOwotICAgICAgICAgICAgICAgIC8v
IFRvIGVsaW1pbmF0ZSAxIHBpeGVsIGluZmxhdGlvbiBkdWUgdG8gdHJhbnNmb3JtYXRpb24gcm91
bmRpbmcuCi0gICAgICAgICAgICAgICAgY2xpcHBlZERzdFJlY3QuaW50ZXJzZWN0KGRzdFJlY3Qp
OwotI2lmIERFQlVHX0NIRUNLRVJCT0FSRAotICAgICAgICAgICAgICAgIGJsaXRDaGVja2VyZWQg
PSB0cnVlOwotI2VuZGlmCi0KLSAgICAgICAgICAgICAgICBmaWxsV2luZG93KEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpHcmFwaGljczo6Q2hlY2tlcmJvYXJkUGF0dGVybiwKLSAgICAgICAgICAgICAg
ICAgICAgY2xpcHBlZERzdFJlY3QsIGNoZWNrZXJlZFJlY3RzLmF0KGkpLmxvY2F0aW9uKCksIHRy
YW5zZm9ybWF0aW9uLmEoKSk7CisgICAgICAgIFBsYXRmb3JtOjpHcmFwaGljczo6UGxhdGZvcm1H
cmFwaGljc0NvbnRleHQqIGRlc3RpbmF0aW9uQ29udGV4dCA9IGxvY2tCdWZmZXJEcmF3YWJsZShk
c3RCdWZmZXIpOworICAgICAgICBpZiAoIWRlc3RpbmF0aW9uQ29udGV4dCkKKyAgICAgICAgICAg
IFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsV2FybiwgIkNvdWxkIG5vdCBs
b2NrIGRyYXdhYmxlIGZvciB0aGUgZGVzdGluYXRpb24gYnVmZmVyLCBub3QgZHJhd2luZyBjaGVj
a2VyYm9hcmQuIik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gRm9yIHB1YmxpYyBi
dWlsZHMsIGtlZXAgcGFnZSBiYWNrZ3JvdW5kIGNvbG9yIChhcyBmaWxsZWQgYnkKKyAgICAgICAg
ICAgIC8vIGNsZWFyQnVmZmVyKCkgYWJvdmUpIHRvIGNvbnZleSB0aGUgaW1wcmVzc2lvbiBvZiBs
ZXNzIGNoZWNrZXJib2FyZC4KKyAgICAgICAgICAgIGlmICghQmxhY2tCZXJyeTo6UGxhdGZvcm06
OlNldHRpbmdzOjppc1B1YmxpY0J1aWxkKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBGb3IgZGV2
ZWxvcGVyIGJ1aWxkcywga2VlcCB0aGUgY2hlY2tlcmJvYXJkIHRvIGdldCBpdCBmaXhlZCBiZXR0
ZXIuCisgICAgICAgICAgICAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpBZmZpbmVUcmFuc2Zvcm0g
c3JjVHJhbnNmb3JtOworICAgICAgICAgICAgICAgIHNyY1RyYW5zZm9ybS5zY2FsZSh0cmFuc2Zv
cm1hdGlvbi5hKCkpOworICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uQ29udGV4dC0+YWRkUHJl
ZGVmaW5lZFBhdHRlcm4oCisgICAgICAgICAgICAgICAgICAgIHZpZXdwb3J0QWNjZXNzb3ItPnBp
eGVsVmlld3BvcnRGcm9tQ29udGVudHModmlld3BvcnRBY2Nlc3Nvci0+cGl4ZWxDb250ZW50c1Jl
Y3QoKSksCisgICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtOjpHcmFwaGljczo6Q2hlY2tlcmJv
YXJkLCBzcmNUcmFuc2Zvcm0pOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVsZWFzZUJ1
ZmZlckRyYXdhYmxlKGRzdEJ1ZmZlcik7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHZXQgdGhl
IGxpc3Qgb2YgdGlsZSByZWN0cyB0aGF0IG1ha2V1cCB0aGUgY29udGVudC4KQEAgLTEzMTIsMzQg
KzEyNjQsMTIgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRz
KGJvb2wgZm9yY2UpCiAKICAgICAgICAgICAgIFRpbGVCdWZmZXIqIHRpbGVCdWZmZXIgPSBjdXJy
ZW50TWFwLmdldChpbmRleCk7CiAKLSAgICAgICAgICAgIGJvb2wgaXNUaWxlQ29ycmVzcG9uZGlu
Z1RvQnVmZmVyID0gZ2VvbWV0cnktPmlzVGlsZUNvcnJlc3BvbmRpbmdUb0J1ZmZlcihpbmRleCwg
dGlsZUJ1ZmZlcik7Ci0gICAgICAgICAgICBib29sIHJlbmRlcmVkID0gdGlsZUJ1ZmZlciAmJiB0
aWxlQnVmZmVyLT5pc1JlbmRlcmVkKHRpbGVSZWN0LnNlY29uZCwgY3VycmVudFNjYWxlKTsKLSAg
ICAgICAgICAgIGJvb2wgcGFpbnRDaGVja2VyZWQgPSAhaXNUaWxlQ29ycmVzcG9uZGluZ1RvQnVm
ZmVyIHx8ICFyZW5kZXJlZDsKLQotICAgICAgICAgICAgaWYgKHBhaW50Q2hlY2tlcmVkKSB7Ci0g
ICAgICAgICAgICAgICAgUGxhdGZvcm06OkludFJlY3QgZGlydHlSZWN0VCA9IHRyYW5zZm9ybWF0
aW9uLm1hcFJlY3QoZGlydHlSZWN0KTsKLQotICAgICAgICAgICAgICAgIGlmICghdHJhbnNmb3Jt
YXRpb24uaXNJZGVudGl0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2Ugb2Yg
cm91bmRpbmcgaXQgaXMgcG9zc2libGUgdGhhdCBkaXJ0eVJlY3QgY291bGQgYmUgb2ZmLWJ5LW9u
ZSBsYXJnZXIKLSAgICAgICAgICAgICAgICAgICAgLy8gdGhhbiB0aGUgc3VyZmFjZSBzaXplIG9m
IHRoZSBkc3QgYnVmZmVyLiBXZSBwcmV2ZW50IHRoaXMgaGVyZSwgYnkgY2xhbXBpbmcKLSAgICAg
ICAgICAgICAgICAgICAgLy8gaXQgdG8gZW5zdXJlIHRoYXQgY2FuJ3QgaGFwcGVuLgotICAgICAg
ICAgICAgICAgICAgICBkaXJ0eVJlY3RULmludGVyc2VjdChQbGF0Zm9ybTo6SW50UmVjdChQbGF0
Zm9ybTo6SW50UG9pbnQoMCwgMCksIHN1cmZhY2VTaXplKCkpKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgY29uc3QgUGxhdGZvcm06OkludFBvaW50IGNvbnRlbnRzT3JpZ2lu
KGRpcnR5UmVjdC54KCkgKyBvcmlnaW4ueCgpLCBkaXJ0eVJlY3QueSgpICsgb3JpZ2luLnkoKSk7
Ci0jaWYgREVCVUdfQ0hFQ0tFUkJPQVJECi0gICAgICAgICAgICAgICAgYmxpdENoZWNrZXJlZCA9
IHRydWU7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBmaWxsV2luZG93KEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpHcmFwaGljczo6Q2hlY2tlcmJvYXJkUGF0dGVybiwKLSAgICAgICAgICAgICAgICAg
ICAgZGlydHlSZWN0VCwgY29udGVudHNPcmlnaW4sIHRyYW5zZm9ybWF0aW9uLmEoKSk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEJsaXQgdGhlIHZpc2libGUgYnVmZmVyIGhlcmUg
aWYgd2UgaGF2ZSB2aXNpYmxlIHpvb20gam9icy4KLSAgICAgICAgICAgIGlmIChpc1RpbGVDb3Jy
ZXNwb25kaW5nVG9CdWZmZXIpIHsKKyAgICAgICAgICAgIGlmIChnZW9tZXRyeS0+aXNUaWxlQ29y
cmVzcG9uZGluZ1RvQnVmZmVyKGluZGV4LCB0aWxlQnVmZmVyKSkgewogICAgICAgICAgICAgICAg
IC8vIEludGVyc2VjdCB0aGUgcmVuZGVyZWQgcmVnaW9uLgogICAgICAgICAgICAgICAgIFBsYXRm
b3JtOjpJbnRSZWN0UmVnaW9uIHJlbmRlcmVkUmVnaW9uID0gdGlsZUJ1ZmZlci0+cmVuZGVyZWRS
ZWdpb24oKTsKICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxQbGF0Zm9ybTo6SW50UmVjdD4g
ZGlydHlSZW5kZXJlZFJlY3RzID0gcmVuZGVyZWRSZWdpb24ucmVjdHMoKTsKICAgICAgICAgICAg
ICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGRpcnR5UmVuZGVyZWRSZWN0cy5zaXplKCk7ICsr
aikgewotICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdCBkaXJ0eVJlbmRlcmVk
UmVjdCA9IGludGVyc2VjdGlvbih0aWxlUmVjdC5zZWNvbmQsIGRpcnR5UmVuZGVyZWRSZWN0cy5h
dChqKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkaXJ0
eVJlbmRlcmVkUmVjdCA9IGludGVyc2VjdGlvbih0aWxlUmVjdC5zZWNvbmQsIGRpcnR5UmVuZGVy
ZWRSZWN0cy5hdChqKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJ0eVJlbmRlcmVkUmVj
dC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgICAgICAgICAgLy8gQmxpdCB0aGUgcmVuZGVyZWQgcGFydHMuCkBAIC0xMzU3LDUyICsxMjg3
LDY4IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFZpc2libGVDb250ZW50cyhib29s
IGZvcmNlKQogICAgICAgICBTdXJmYWNlUG9vbDo6Z2xvYmFsU3VyZmFjZVBvb2woKS0+bm90aWZ5
QnVmZmVyc0NvbXBvc2l0ZWQoYmxpdHRlZFRpbGVzKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKLSAgICBpZiAoV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlKiBjb21wb3NpdG9y
ID0gbV93ZWJQYWdlLT5kLT5jb21wb3NpdG9yKCkpIHsKKyAgICBpZiAoV2ViUGFnZUNvbXBvc2l0
b3JQcml2YXRlKiBjb21wb3NpdG9yID0gbV93ZWJQYWdlLT5kLT5jb21wb3NpdG9yKCkpCiAgICAg
ICAgIGNvbXBvc2l0b3ItPmRyYXdMYXllcnMoZHN0UmVjdCwgZG9jdW1lbnRTcmNSZWN0KTsKLSAg
ICAgICAgaWYgKGNvbXBvc2l0b3ItPmRyYXdzUm9vdExheWVyKCkpCi0gICAgICAgICAgICBwYWlu
dERlZmF1bHRCYWNrZ3JvdW5kKGRzdFJlY3QsIHZpZXdwb3J0QWNjZXNzb3IsIGZhbHNlIC8qZmx1
c2gqLyk7Ci0gICAgfQogI2VuZGlmCiAKKyAgICAvLyBPdmVybGF5IGFuIG92ZXJzY3JvbGwgcGF0
dGVybiAob3IgY29sb3IpIGZvciBhcmVhcyBvdXRzaWRlIG9mIHRoZSBwYWdlIGNvbnRlbnRzLgor
ICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0IHBpeGVsQ29udGVudHNSZWN0ID0gdmlld3BvcnRB
Y2Nlc3Nvci0+cGl4ZWxDb250ZW50c1JlY3QoKTsKKyAgICBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lv
biBvdmVyU2Nyb2xsUmVnaW9uID0gUGxhdGZvcm06OkludFJlY3RSZWdpb246OnN1YnRyYWN0UmVn
aW9ucygKKyAgICAgICAgZHN0UmVjdCwgdmlld3BvcnRBY2Nlc3Nvci0+cGl4ZWxWaWV3cG9ydEZy
b21Db250ZW50cyhwaXhlbENvbnRlbnRzUmVjdCkpOworCisgICAgaWYgKCFvdmVyU2Nyb2xsUmVn
aW9uLmlzRW1wdHkoKSkgeworICAgICAgICBQbGF0Zm9ybTo6R3JhcGhpY3M6OlBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0KiBkZXN0aW5hdGlvbkNvbnRleHQgPSBsb2NrQnVmZmVyRHJhd2FibGUoZHN0
QnVmZmVyKTsKKyAgICAgICAgaWYgKCFkZXN0aW5hdGlvbkNvbnRleHQpCisgICAgICAgICAgICBQ
bGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbFdhcm4sICJDb3VsZCBub3QgbG9j
ayBkcmF3YWJsZSBmb3IgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciwgbm90IGRyYXdpbmcgb3ZlcnNj
cm9sbC4iKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzdGQ6OnZlY3RvcjxQbGF0Zm9y
bTo6SW50UmVjdD4gb3ZlclNjcm9sbFJlY3RzID0gb3ZlclNjcm9sbFJlZ2lvbi5yZWN0cygpOwor
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG92ZXJTY3JvbGxSZWN0cy5zaXpl
KCk7ICsraSkgeworICAgICAgICAgICAgICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBvdmVy
U2Nyb2xsUmVjdCA9IG92ZXJTY3JvbGxSZWN0cy5hdChpKTsKKworICAgICAgICAgICAgICAgIGlm
IChtX3dlYlBhZ2UtPnNldHRpbmdzKCktPmlzRW5hYmxlRGVmYXVsdE92ZXJTY3JvbGxCYWNrZ3Jv
dW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpBZmZpbmVU
cmFuc2Zvcm0gc3JjVHJhbnNmb3JtOworICAgICAgICAgICAgICAgICAgICBzcmNUcmFuc2Zvcm0u
dHJhbnNsYXRlKC1vdmVyU2Nyb2xsUmVjdC54KCksIC1vdmVyU2Nyb2xsUmVjdC55KCkpOworICAg
ICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbkNvbnRleHQtPmFkZFByZWRlZmluZWRQYXR0ZXJu
KG92ZXJTY3JvbGxSZWN0LCBQbGF0Zm9ybTo6R3JhcGhpY3M6Ok92ZXJzY3JvbGwsIHNyY1RyYW5z
Zm9ybSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZGVz
dGluYXRpb25Db250ZXh0LT5zZXRGaWxsQ29sb3IobV93ZWJQYWdlLT5zZXR0aW5ncygpLT5vdmVy
U2Nyb2xsQ29sb3IoKSk7CisgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uQ29udGV4dC0+
YWRkRmlsbFJlY3Qob3ZlclNjcm9sbFJlY3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJlbGVhc2VCdWZmZXJEcmF3YWJsZShkc3RCdWZmZXIpOworICAg
ICAgICB9CisgICAgfQorCiAjaWYgREVCVUdfVklTVUFMSVpFCiAgICAgaWYgKGRlYnVnVmlld3Bv
cnRBY2Nlc3NvcikgewotICAgICAgICBQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogdGFyZ2V0
QnVmZmVyID0gYnVmZmVyKCk7Ci0gICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0IHdrVmlld3BvcnQg
PSBkZWJ1Z1ZpZXdwb3J0QWNjZXNzb3ItPnJvdW5kVG9QaXhlbEZyb21Eb2N1bWVudENvbnRlbnRz
KFBsYXRmb3JtOjpJbnRSZWN0KG1fY2xpZW50LT52aXNpYmxlQ29udGVudHNSZWN0KCkpKTsKLSAg
ICAgICAgUGxhdGZvcm06OkludFJlY3QgdWlWaWV3cG9ydCA9IGRlYnVnVmlld3BvcnRBY2Nlc3Nv
ci0+cm91bmRUb1BpeGVsRnJvbURvY3VtZW50Q29udGVudHMoZG9jdW1lbnRWaWV3cG9ydFJlY3Qp
OwotICAgICAgICB3a1ZpZXdwb3J0Lm1vdmUoLXBpeGVsU3JjUmVjdC54KCksIC1waXhlbFNyY1Jl
Y3QueSgpKTsKLSAgICAgICAgdWlWaWV3cG9ydC5tb3ZlKC1waXhlbFNyY1JlY3QueCgpLCAtcGl4
ZWxTcmNSZWN0LnkoKSk7Ci0KLSAgICAgICAgLy8gRHJhdyBhIGJsdWUgcmVjdCBmb3IgdGhlIHdl
YmtpdCB0aHJlYWQgdmlld3BvcnQuCi0gICAgICAgIFBsYXRmb3JtOjpHcmFwaGljczo6Y2xlYXJC
dWZmZXIodGFyZ2V0QnVmZmVyLCBQbGF0Zm9ybTo6SW50UmVjdCh3a1ZpZXdwb3J0LngoKSwgd2tW
aWV3cG9ydC55KCksIHdrVmlld3BvcnQud2lkdGgoKSwgMSksIDAsIDAsIDI1NSwgMjU1KTsKLSAg
ICAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpjbGVhckJ1ZmZlcih0YXJnZXRCdWZmZXIsIFBsYXRm
b3JtOjpJbnRSZWN0KHdrVmlld3BvcnQueCgpLCB3a1ZpZXdwb3J0LnkoKSwgMSwgd2tWaWV3cG9y
dC5oZWlnaHQoKSksIDAsIDAsIDI1NSwgMjU1KTsKLSAgICAgICAgUGxhdGZvcm06OkdyYXBoaWNz
OjpjbGVhckJ1ZmZlcih0YXJnZXRCdWZmZXIsIFBsYXRmb3JtOjpJbnRSZWN0KHdrVmlld3BvcnQu
eCgpLCB3a1ZpZXdwb3J0LmJvdHRvbSgpIC0gMSwgd2tWaWV3cG9ydC53aWR0aCgpLCAxKSwgMCwg
MCwgMjU1LCAyNTUpOwotICAgICAgICBQbGF0Zm9ybTo6R3JhcGhpY3M6OmNsZWFyQnVmZmVyKHRh
cmdldEJ1ZmZlciwgUGxhdGZvcm06OkludFJlY3Qod2tWaWV3cG9ydC5yaWdodCgpIC0gMSwgd2tW
aWV3cG9ydC55KCksIDEsIHdrVmlld3BvcnQuaGVpZ2h0KCkpLCAwLCAwLCAyNTUsIDI1NSk7Ci0K
LSAgICAgICAgLy8gRHJhdyBhIHJlZCByZWN0IGZvciB0aGUgdWkgdGhyZWFkIHZpZXdwb3J0Lgot
ICAgICAgICBQbGF0Zm9ybTo6R3JhcGhpY3M6OmNsZWFyQnVmZmVyKHRhcmdldEJ1ZmZlciwgUGxh
dGZvcm06OkludFJlY3QodWlWaWV3cG9ydC54KCksIHVpVmlld3BvcnQueSgpLCB1aVZpZXdwb3J0
LndpZHRoKCksIDEpLCAyNTUsIDAsIDAsIDI1NSk7Ci0gICAgICAgIFBsYXRmb3JtOjpHcmFwaGlj
czo6Y2xlYXJCdWZmZXIodGFyZ2V0QnVmZmVyLCBQbGF0Zm9ybTo6SW50UmVjdCh1aVZpZXdwb3J0
LngoKSwgdWlWaWV3cG9ydC55KCksIDEsIHVpVmlld3BvcnQuaGVpZ2h0KCkpLCAyNTUsIDAsIDAs
IDI1NSk7Ci0gICAgICAgIFBsYXRmb3JtOjpHcmFwaGljczo6Y2xlYXJCdWZmZXIodGFyZ2V0QnVm
ZmVyLCBQbGF0Zm9ybTo6SW50UmVjdCh1aVZpZXdwb3J0LngoKSwgdWlWaWV3cG9ydC5ib3R0b20o
KSAtIDEsIHVpVmlld3BvcnQud2lkdGgoKSwgMSksIDI1NSwgMCwgMCwgMjU1KTsKLSAgICAgICAg
UGxhdGZvcm06OkdyYXBoaWNzOjpjbGVhckJ1ZmZlcih0YXJnZXRCdWZmZXIsIFBsYXRmb3JtOjpJ
bnRSZWN0KHVpVmlld3BvcnQucmlnaHQoKSAtIDEsIHVpVmlld3BvcnQueSgpLCAxLCB1aVZpZXdw
b3J0LmhlaWdodCgpKSwgMjU1LCAwLCAwLCAyNTUpOworICAgICAgICBQbGF0Zm9ybTo6R3JhcGhp
Y3M6OlBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBkZXN0aW5hdGlvbkNvbnRleHQgPSBsb2NrQnVm
ZmVyRHJhd2FibGUoZHN0QnVmZmVyKTsKKyAgICAgICAgaWYgKCFkZXN0aW5hdGlvbkNvbnRleHQp
CisgICAgICAgICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbFdhcm4s
ICJDb3VsZCBub3QgbG9jayBkcmF3YWJsZSBmb3IgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciwgbm90
IGRyYXdpbmcgdmlld3BvcnQgZGVidWcgcmVjdHMuIik7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgZGVzdGluYXRpb25Db250ZXh0LT5zYXZlKCk7CiAKLSAgICAgICAgZGVsZXRlIGRlYnVn
Vmlld3BvcnRBY2Nlc3NvcjsKLSAgICB9Ci0jZW5kaWYKKyAgICAgICAgICAgIFBsYXRmb3JtOjpG
bG9hdFJlY3Qgd2tWaWV3cG9ydCA9IGRlYnVnVmlld3BvcnRBY2Nlc3Nvci0+cm91bmRUb1BpeGVs
RnJvbURvY3VtZW50Q29udGVudHMoUGxhdGZvcm06OkludFJlY3QobV9jbGllbnQtPnZpc2libGVD
b250ZW50c1JlY3QoKSkpOworICAgICAgICAgICAgUGxhdGZvcm06OkZsb2F0UmVjdCB1aVZpZXdw
b3J0ID0gZGVidWdWaWV3cG9ydEFjY2Vzc29yLT5yb3VuZFRvUGl4ZWxGcm9tRG9jdW1lbnRDb250
ZW50cyhkb2N1bWVudFZpZXdwb3J0UmVjdCk7CisgICAgICAgICAgICB3a1ZpZXdwb3J0Lm1vdmUo
LXBpeGVsU3JjUmVjdC54KCksIC1waXhlbFNyY1JlY3QueSgpKTsKKyAgICAgICAgICAgIHVpVmll
d3BvcnQubW92ZSgtcGl4ZWxTcmNSZWN0LngoKSwgLXBpeGVsU3JjUmVjdC55KCkpOwogCi0jaWYg
REVCVUdfQ0hFQ0tFUkJPQVJECi0gICAgc3RhdGljIGRvdWJsZSBsYXN0Q2hlY2tlcmVkVGltZSA9
IDA7CisgICAgICAgICAgICAvLyBTaHJpbmsgYnkgaGFsZiBhIHBpeGVsIHRvIG1ha2UgcGl4ZWwt
cGVyZmVjdCBzdHJva2UgcmVjdGFuZ2xlcy4KKyAgICAgICAgICAgIHdrVmlld3BvcnQuaW5mbGF0
ZSgtMC41LCAtMC41KTsKKyAgICAgICAgICAgIHVpVmlld3BvcnQuaW5mbGF0ZSgtMC41LCAtMC41
KTsKIAotICAgIGlmIChibGl0Q2hlY2tlcmVkICYmICFsYXN0Q2hlY2tlcmVkVGltZSkgewotICAg
ICAgICBsYXN0Q2hlY2tlcmVkVGltZSA9IFdURjo6Y3VycmVudFRpbWUoKTsKLSAgICAgICAgUGxh
dGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKLSAgICAgICAgICAg
ICJCbGl0dGluZyBjaGVja2VyZWQgcGF0dGVybiBhdCAlZiIsIGxhc3RDaGVja2VyZWRUaW1lKTsK
LSAgICB9IGVsc2UgaWYgKGJsaXRDaGVja2VyZWQgJiYgbGFzdENoZWNrZXJlZFRpbWUpIHsKLSAg
ICAgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKLSAg
ICAgICAgICAgICJCbGl0dGluZyBjaGVja2VyZWQgcGF0dGVybiBhdCAlZiIsIFdURjo6Y3VycmVu
dFRpbWUoKSk7Ci0gICAgfSBlbHNlIGlmICghYmxpdENoZWNrZXJlZCAmJiBsYXN0Q2hlY2tlcmVk
VGltZSkgewotICAgICAgICBkb3VibGUgdGltZSA9IFdURjo6Y3VycmVudFRpbWUoKTsKLSAgICAg
ICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKLSAgICAg
ICAgICAgICJCbGl0dGluZyBvdmVyIGNoZWNrZXJlZCBwYXR0ZXJuIGF0ICVmIHRvb2sgJWYiLCB0
aW1lLCB0aW1lIC0gbGFzdENoZWNrZXJlZFRpbWUpOwotICAgICAgICBsYXN0Q2hlY2tlcmVkVGlt
ZSA9IDA7CisgICAgICAgICAgICAvLyBEcmF3IGEgYmx1ZSByZWN0IGZvciB0aGUgd2Via2l0IHRo
cmVhZCB2aWV3cG9ydC4KKyAgICAgICAgICAgIGRlc3RpbmF0aW9uQ29udGV4dC0+c2V0U3Ryb2tl
Q29sb3IoMHhmZjAwMDBmZik7CisgICAgICAgICAgICBkZXN0aW5hdGlvbkNvbnRleHQtPmFkZFN0
cm9rZVJlY3Qod2tWaWV3cG9ydCwgMS4wKTsKKworICAgICAgICAgICAgLy8gRHJhdyBhIHJlZCBy
ZWN0IGZvciB0aGUgdWkgdGhyZWFkIHZpZXdwb3J0LgorICAgICAgICAgICAgZGVzdGluYXRpb25D
b250ZXh0LT5zZXRTdHJva2VDb2xvcigweDAwMDBmZmZmKTsKKyAgICAgICAgICAgIGRlc3RpbmF0
aW9uQ29udGV4dC0+YWRkU3Ryb2tlUmVjdCh1aVZpZXdwb3J0LCAxLjApOworCisgICAgICAgICAg
ICBkZXN0aW5hdGlvbkNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAgICAgIHJlbGVhc2VCdWZm
ZXJEcmF3YWJsZShkc3RCdWZmZXIpOworICAgICAgICB9CisKKyAgICAgICAgZGVsZXRlIGRlYnVn
Vmlld3BvcnRBY2Nlc3NvcjsKICAgICB9CiAjZW5kaWYKIApAQCAtMTk1NywzMCArMTkwMyw2IEBA
IHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFRvV2luZG93KGNvbnN0IFBsYXRmb3JtOjpJ
bnRSZWN0JiBkc3RSZWN0LAogCiB9CiAKLXZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6ZmlsbFdp
bmRvdyhQbGF0Zm9ybTo6R3JhcGhpY3M6OkZpbGxQYXR0ZXJuIHBhdHRlcm4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGRzdFJl
Y3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGxhdGZvcm06
OkludFBvaW50JiBjb250ZW50c09yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkb3VibGUgY29udGVudHNTY2FsZSkKLXsKLSAgICBBU1NFUlQoQmxhY2tCZXJyeTo6
UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVudFRo
cmVhZCgpKTsKLQotICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBk
c3RCdWZmZXIgPSBidWZmZXIoKTsKLSAgICBBU1NFUlQoZHN0QnVmZmVyKTsKLSAgICBpZiAoIWRz
dEJ1ZmZlcikKLSAgICAgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxX
YXJuLCAiRW1wdHkgd2luZG93IGJ1ZmZlciwgY291bGRuJ3QgZmlsbFdpbmRvdyIpOwotCi0gICAg
aWYgKHBhdHRlcm4gPT0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpDaGVja2VyYm9h
cmRQYXR0ZXJuICYmIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTZXR0aW5nczo6aXNQdWJsaWNCdWls
ZCgpKSB7Ci0gICAgICAgIC8vIEZvciBwdWJsaWMgYnVpbGRzLCBjb252ZXkgdGhlIGltcHJlc3Np
b24gb2YgbGVzcyBjaGVja2VyYm9hcmQuCi0gICAgICAgIC8vIEZvciBkZXZlbG9wZXIgYnVpbGRz
LCBrZWVwIHRoZSBjaGVja2VyYm9hcmQgdG8gZ2V0IGl0IGZpeGVkIGJldHRlci4KLSAgICAgICAg
QmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpjbGVhckJ1ZmZlcihkc3RCdWZmZXIsIGRz
dFJlY3QsCi0gICAgICAgICAgICBtX3dlYlBhZ2VCYWNrZ3JvdW5kQ29sb3IucmVkKCksIG1fd2Vi
UGFnZUJhY2tncm91bmRDb2xvci5ncmVlbigpLAotICAgICAgICAgICAgbV93ZWJQYWdlQmFja2dy
b3VuZENvbG9yLmJsdWUoKSwgbV93ZWJQYWdlQmFja2dyb3VuZENvbG9yLmFscGhhKCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNz
OjpmaWxsQnVmZmVyKGRzdEJ1ZmZlciwgcGF0dGVybiwgZHN0UmVjdCwgY29udGVudHNPcmlnaW4s
IGNvbnRlbnRzU2NhbGUpOwotfQotCiBXZWJDb3JlOjpDb2xvciBCYWNraW5nU3RvcmVQcml2YXRl
Ojp3ZWJQYWdlQmFja2dyb3VuZENvbG9yVXNlckludGVyZmFjZVRocmVhZCgpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKEJsYWNrQmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2Fn
ZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQoKSk7CkBAIC0yMDAxLDM4ICsxOTIzLDYgQEAgdm9p
ZCBCYWNraW5nU3RvcmVQcml2YXRlOjpzZXRXZWJQYWdlQmFja2dyb3VuZENvbG9yKGNvbnN0IFdl
YkNvcmU6OkNvbG9yJiBjb2xvcikKICAgICBtX3dlYlBhZ2VCYWNrZ3JvdW5kQ29sb3IgPSBjb2xv
cjsKIH0KIAotdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpjbGVhcldpbmRvdyhjb25zdCBQbGF0
Zm9ybTo6SW50UmVjdCYgcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciByZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgZ3JlZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgYmx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYSkKLXsKLSAgICBpZiAoIUJsYWNrQmVycnk6OlBs
YXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJl
YWQoKSkgewotICAgICAgICB0eXBlZGVmIHZvaWQgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2lu
Z1N0b3JlUHJpdmF0ZTo6KkZ1bmN0aW9uVHlwZSkoY29uc3QgUGxhdGZvcm06OkludFJlY3QmLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgY2hhcik7Ci0gICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjp1c2Vy
SW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5kaXNwYXRjaE1lc3NhZ2UoCi0gICAgICAg
ICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Y3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2U8RnVuY3Rp
b25UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEJhY2tpbmdTdG9yZVByaXZhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm06OkludFJlY3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhcj4oCi0gICAgICAgICAg
ICAgICAgJkJhY2tpbmdTdG9yZVByaXZhdGU6OmNsZWFyV2luZG93LCB0aGlzLCByZWN0LCByZWQs
IGdyZWVuLCBibHVlLCBhbHBoYSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIGRzdEJ1ZmZlciA9IGJ1ZmZlcigp
OwotICAgIEFTU0VSVChkc3RCdWZmZXIpOwotICAgIGlmICghZHN0QnVmZmVyKQotICAgICAgICBQ
bGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbFdhcm4sICJFbXB0eSB3aW5kb3cg
YnVmZmVyLCBjb3VsZG4ndCBjbGVhcldpbmRvdyIpOwotCi0gICAgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkdyYXBoaWNzOjpjbGVhckJ1ZmZlcihkc3RCdWZmZXIsIHJlY3QsIHJlZCwgZ3JlZW4sIGJs
dWUsIGFscGhhKTsKLX0KLQogYm9vbCBCYWNraW5nU3RvcmVQcml2YXRlOjppc1Njcm9sbGluZ09y
Wm9vbWluZygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKEJsYWNrQmVycnk6OlBsYXRmb3JtOjp3ZWJL
aXRUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVudFRocmVhZCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlX3AuaCBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlX3AuaAppbmRleCBhNjIyNGE5NGYzNWFi
MGQ5M2ViNWE0ZmUzZjg1NDViOGQyMmQwNzYyLi44NTVmYTY4NTU1ODg0YWEwZWFkZjIwZTA2ZWZk
ZDBmYTdlOTkzOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0Jh
Y2tpbmdTdG9yZV9wLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5n
U3RvcmVfcC5oCkBAIC0xODYsNyArMTg2LDYgQEAgcHVibGljOgogICAgIC8vIEhlbHBlciByZW5k
ZXIgbWV0aG9kcy4KICAgICB2b2lkIHJlbmRlckFuZEJsaXRWaXNpYmxlQ29udGVudHNJbW1lZGlh
dGVseSgpOwogICAgIHZvaWQgcmVuZGVyQW5kQmxpdEltbWVkaWF0ZWx5KGNvbnN0IFBsYXRmb3Jt
OjpJbnRSZWN0Jik7Ci0gICAgdm9pZCBwYWludERlZmF1bHRCYWNrZ3JvdW5kKGNvbnN0IFBsYXRm
b3JtOjpJbnRSZWN0JiBkc3RSZWN0LCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Vmlld3BvcnRBY2Nl
c3NvciosIGJvb2wgZmx1c2gpOwogICAgIHZvaWQgYmxpdFZpc2libGVDb250ZW50cyhib29sIGZv
cmNlID0gZmFsc2UpOwogICAgIHZvaWQgYmxpdE9uSWRsZSgpOwogCkBAIC0yNzksMTMgKzI3OCwx
MCBAQCBwdWJsaWM6CiAgICAgYm9vbCByZW5kZXJDb250ZW50cyhCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6R3JhcGhpY3M6OkJ1ZmZlciosIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJbnRSZWN0
JiBkc3RSZWN0LCBkb3VibGUgc2NhbGUsIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpGbG9h
dFBvaW50JiBkb2N1bWVudFNjcm9sbFBvc2l0aW9uLCBMYXllcnNUb1JlbmRlcikgY29uc3Q7CiAK
ICAgICB2b2lkIGJsaXRUb1dpbmRvdyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0UmVjdCwg
Y29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIHNyY0J1ZmZlciwg
Y29uc3QgUGxhdGZvcm06OkludFJlY3QmIHNyY1JlY3QsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpH
cmFwaGljczo6QmxlbmRNb2RlLCB1bnNpZ25lZCBjaGFyIGdsb2JhbEFscGhhKTsKLSAgICB2b2lk
IGZpbGxXaW5kb3coUGxhdGZvcm06OkdyYXBoaWNzOjpGaWxsUGF0dGVybiwgY29uc3QgUGxhdGZv
cm06OkludFJlY3QmIGRzdFJlY3QsIGNvbnN0IFBsYXRmb3JtOjpJbnRQb2ludCYgY29udGVudHNP
cmlnaW4sIGRvdWJsZSBjb250ZW50c1NjYWxlKTsKIAogICAgIFdlYkNvcmU6OkNvbG9yIHdlYlBh
Z2VCYWNrZ3JvdW5kQ29sb3JVc2VySW50ZXJmYWNlVGhyZWFkKCkgY29uc3Q7IC8vIHVzZSBXZWJT
ZXR0aW5nczo6YmFja2dyb3VuZENvbG9yKCkgZm9yIHRoZSBXZWJLaXQgdGhyZWFkCiAgICAgdm9p
ZCBzZXRXZWJQYWdlQmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CiAKLSAg
ICB2b2lkIGNsZWFyV2luZG93KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiwgdW5zaWduZWQgY2hh
ciByZWQsIHVuc2lnbmVkIGNoYXIgZ3JlZW4sIHVuc2lnbmVkIGNoYXIgYmx1ZSwgdW5zaWduZWQg
Y2hhciBhbHBoYSA9IDI1NSk7Ci0KICAgICBib29sIGlzU2Nyb2xsaW5nT3Jab29taW5nKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRTY3JvbGxpbmdPclpvb21pbmcoYm9vbCBzY3JvbGxpbmdPclpvb21p
bmcsIGJvb2wgc2hvdWxkQmxpdCA9IHRydWUpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>