<?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>78739</bug_id>
          
          <creation_ts>2012-02-15 13:55:39 -0800</creation_ts>
          <short_desc>[chromium] Wire up ScrollingCoordinator to chromium compositor</short_desc>
          <delta_ts>2012-02-21 11:32:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>
          
          <blocked>78862</blocked>
    
    <blocked>78864</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>skyostil</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>557523</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-15 13:55:39 -0800</bug_when>
    <thetext>[chromium] Wire up ScrollingCoordinator to chromium compositor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557524</commentid>
    <comment_count>1</comment_count>
      <attachid>127229</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-15 13:56:55 -0800</bug_when>
    <thetext>Created attachment 127229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557526</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-15 13:58:43 -0800</bug_when>
    <thetext>This depends on https://bugs.webkit.org/show_bug.cgi?id=78401</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557561</commentid>
    <comment_count>3</comment_count>
      <attachid>127229</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-02-15 14:39:08 -0800</bug_when>
    <thetext>Comment on attachment 127229
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3050
&gt; +            page()-&gt;settings()-&gt;setScrollingCoordinatorEnabled(true);
&gt; +            page()-&gt;scrollingCoordinator()-&gt;setClient(scrollingCoordinatorClientImpl());

This is just a nit, but this function is getting to be a mess, and it&apos;s sad that you have to repeat these two sets of calls in two places.  Can you refactor it any to unify what needs to happen when compositing is successfully turned on or off?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557628</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-15 15:21:09 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 127229 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127229&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3050
&gt; &gt; +            page()-&gt;settings()-&gt;setScrollingCoordinatorEnabled(true);
&gt; &gt; +            page()-&gt;scrollingCoordinator()-&gt;setClient(scrollingCoordinatorClientImpl());
&gt; 
&gt; This is just a nit, but this function is getting to be a mess, and it&apos;s sad that you have to repeat these two sets of calls in two places.  Can you refactor it any to unify what needs to happen when compositing is successfully turned on or off?

Yes it&apos;s ugly.  I&apos;m not completely in love with having to reach down to the ScrollingCoordinator from up here in WebKit, but don&apos;t see a better way to interface with what&apos;s there today.  If we go this route I&apos;ll add some helper functions to tighten this up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557747</commentid>
    <comment_count>5</comment_count>
      <attachid>127278</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-15 17:05:21 -0800</bug_when>
    <thetext>Created attachment 127278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557748</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-15 17:06:16 -0800</bug_when>
    <thetext>This moves wheel tracking down to be per layer and cleans up a few other things (including setting/clear the client).  I think this is looking fairly plausible to land, once 78401 or something like it lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558609</commentid>
    <comment_count>7</comment_count>
      <attachid>127278</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-02-16 15:42:11 -0800</bug_when>
    <thetext>Comment on attachment 127278
Patch

This looks good to me.  I dig the wheel handlers on layers change.  Thanks also for cleaning up WebViewImpl a little.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558692</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-16 16:55:47 -0800</bug_when>
    <thetext>I think I&apos;ll do a bit more chopping - ScrollingTreeState isn&apos;t really a useful intermediate for us since we buffer the tree via the commit flow, so I think I&apos;ll just route the setters on ScrollingCoordinator straight through to the LayerChromium tree.  That should get rid of a bit of gobble-dee-gook.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558861</commentid>
    <comment_count>9</comment_count>
      <attachid>127510</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-16 20:34:42 -0800</bug_when>
    <thetext>Created attachment 127510
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558862</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-16 20:35:26 -0800</bug_when>
    <thetext>Even svelter.  This pretty much completely ignored the ScrollingTreeState buffering, since we buffer changes through commit.  Doesn&apos;t fully work yet (esp. transitioning out of compositing mode mode) but getting closer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559468</commentid>
    <comment_count>11</comment_count>
      <attachid>127642</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-17 13:23:34 -0800</bug_when>
    <thetext>Created attachment 127642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559469</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-17 13:24:46 -0800</bug_when>
    <thetext>I&apos;m pretty sure everything works here except that when we transition out of compositing mode we need to convince WebCore that the ScrollingCoordinator isn&apos;t in charge of that view any more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560499</commentid>
    <comment_count>13</comment_count>
      <attachid>127883</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-20 17:59:45 -0800</bug_when>
    <thetext>Created attachment 127883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560502</commentid>
    <comment_count>14</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-20 18:04:11 -0800</bug_when>
    <thetext>There are some bugs when switching pages but I think this is in pretty good shape.  I&apos;ll break it up into a few pieces to land (at the very least separating the cross-platform code from the Chromium-specific bits, and possibly separating the properties into their own patches).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560510</commentid>
    <comment_count>15</comment_count>
      <attachid>127885</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-20 18:12:56 -0800</bug_when>
    <thetext>Created attachment 127885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560519</commentid>
    <comment_count>16</comment_count>
      <attachid>127888</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-20 18:25:09 -0800</bug_when>
    <thetext>Created attachment 127888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560694</commentid>
    <comment_count>17</comment_count>
      <attachid>127888</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-20 23:32:28 -0800</bug_when>
    <thetext>Comment on attachment 127888
Patch

Attachment 127888 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11556051

New failing tests:
compositing/checkerboard.html
compositing/geometry/limit-layer-bounds-clipping-ancestor.html
compositing/geometry/foreground-layer.html
compositing/layer-creation/overlap-transformed-layer.html
compositing/images/clip-on-directly-composited-image.html
compositing/geometry/clip.html
compositing/iframes/connect-compositing-iframe2.html
compositing/geometry/fixed-position-transform-composited-page-scale.html
compositing/layer-creation/scroll-partial-update.html
accessibility/aria-describedby-on-input.html
compositing/geometry/fixed-position-composited-switch.html
compositing/iframes/become-overlapped-iframe.html
compositing/geometry/layer-due-to-layer-children-switch.html
compositing/geometry/fixed-position-iframe-composited-page-scale.html
compositing/iframes/connect-compositing-iframe3.html
compositing/iframes/enter-compositing-iframe.html
compositing/geometry/limit-layer-bounds-fixed-positioned.html
compositing/geometry/layer-due-to-layer-children-deep-switch.html
compositing/geometry/ancestor-overflow-change.html
compositing/layer-creation/overlap-clipping.html
compositing/geometry/fixed-position-composited-page-scale.html
compositing/iframes/connect-compositing-iframe.html
compositing/iframes/become-composited-nested-iframes.html
compositing/layer-creation/overflow-scroll-overlap.html
compositing/iframes/connect-compositing-iframe-delayed.html
compositing/layer-creation/rotate3d-overlap.html
compositing/layer-creation/overlap-child-layer.html
compositing/geometry/fixed-position-iframe-composited-page-scale-down.html
compositing/iframes/composited-parent-iframe.html
compositing/geometry/fixed-position-transform-composited-page-scale-down.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561083</commentid>
    <comment_count>18</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-21 11:32:04 -0800</bug_when>
    <thetext>Cross-platform changes here: https://bugs.webkit.org/show_bug.cgi?id=79126

Wheel event handler here: https://bugs.webkit.org/show_bug.cgi?id=79133

I&apos;ll do the remaining properties as separate patches, so closing this bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127229</attachid>
            <date>2012-02-15 13:56:55 -0800</date>
            <delta_ts>2012-02-15 17:05:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78739-20120215135653.patch</filename>
            <type>text/plain</type>
            <size>16531</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjUyZDA4MWYwNmNkNTc2
NmY2NzVkNGQ4MjFlMWQ3NTNjOGZlMzhhNS4uNTUyNWUzNDM0MDQ5YTI5ZTljMTZlYWNiZGMxZGUw
MjdjOTIwZGJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAyLTE1ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBX
aXJlIHVwIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIHRvIGNocm9taXVtIGNvbXBvc2l0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NzM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAo
T09QUyEpCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAo
U2Nyb2xsaW5nQ29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OnNldENsaWVudCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JDbGllbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudDo6flNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2NoZWR1bGVU
cmVlU3RhdGVDb21taXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdDb29yZGluYXRvcjo6Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQpOgorCiAyMDEyLTAy
LTE0ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTW92
ZSBTY3JvbGxpbmdDb29yZGluYXRvciBvdXQgb2YgRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykg
aWZkZWYgYW5kIGVuYWJsZSBvbiBhbGwgcGxhdGZvcm1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IGM2ZWU4MTBjZmY5MWY4ZDU4ZTVhYTg0NGUwMzNkMGVmZGNiNjQ0M2QuLjllY2UyN2U0
Y2YwYjIyNTIyZjYxYzllZDZhZjFiZjg0ODkxMjIwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTItMDItMTUgIEphbWVzIFJvYmluc29uICA8amFtZXNy
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFdpcmUgdXAgU2Nyb2xsaW5nQ29v
cmRpbmF0b3IgdG8gY2hyb21pdW0gY29tcG9zaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg3MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwOgorICAgICAgICAqIHNyYy9TY3JvbGxpbmdDb29yZGluYXRvckNsaWVu
dEltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlNj
cm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbDo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsOjp+
U2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xs
aW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsOjpzY2hlZHVsZUNvbW1pdCk6CisgICAgICAgIChXZWJL
aXQ6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbDo6Y29tbWl0KToKKyAgICAgICAgKiBz
cmMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
bGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJ
bXBsOjpjcmVhdGUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpudW1iZXJPZldoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OnNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbCk6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAg
KFdlYktpdCk6CisKIDIwMTItMDItMTQgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTWFrZSBTY3JpcHRzTmF2aWdhdG9yIGRl
ZmF1bHQgZmlsZSBzZWxlY3Rvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IGEzYTZhNTE0YzYyZjUyNTFjYjVjMGYx
NTczZThjODAxYWM4ZGQ4YmYuLjhhYjBiN2RlYzRmNzBkNmQ3ZmRhYTYxODQ4ZTMxYjdjZjliYzUy
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXll
ci5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRv
ckNsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IApAQCAtMTA0LDYgKzEwNSwxMiBAQCBwdWJsaWM6CiAgICAgLy8gRGlzcGF0Y2hlZCBieSB0aGUg
c2Nyb2xsaW5nIHRyZWUgd2hlbmV2ZXIgdGhlIG1haW4gZnJhbWUgc2Nyb2xsIHBvc2l0aW9uIGNo
YW5nZXMgYW5kIHRoZSBzY3JvbGwgbGF5ZXIgcG9zaXRpb24gbmVlZHMgdG8gYmUgdXBkYXRlZCBh
cyB3ZWxsLgogICAgIHZvaWQgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsUG9zaXRpb25BbmRTY3JvbGxM
YXllclBvc2l0aW9uKGNvbnN0IEludFBvaW50Jik7CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkK
KyAgICB2b2lkIHNldENsaWVudChTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudCogY2xpZW50KSB7
IG1fY2xpZW50ID0gY2xpZW50OyB9CisjZW5kaWYKKworICAgIHZvaWQgY29tbWl0VHJlZVN0YXRl
SWZOZWVkZWQoKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTY3JvbGxpbmdDb29yZGluYXRv
cihQYWdlKik7CiAKQEAgLTExNiw3ICsxMjMsNiBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFRI
UkVBREVEX1NDUk9MTElORykKICAgICB2b2lkIHNjcm9sbGluZ1RyZWVTdGF0ZUNvbW1pdHRlclRp
bWVyRmlyZWQoVGltZXI8U2Nyb2xsaW5nQ29vcmRpbmF0b3I+Kik7Ci0gICAgdm9pZCBjb21taXRU
cmVlU3RhdGVJZk5lZWRlZCgpOwogICAgIHZvaWQgY29tbWl0VHJlZVN0YXRlKCk7CiAjZW5kaWYK
IApAQCAtMTI2LDYgKzEzMiwxMCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTY3JvbGxpbmdUcmVl
PiBtX3Njcm9sbGluZ1RyZWU7CiAgICAgVGltZXI8U2Nyb2xsaW5nQ29vcmRpbmF0b3I+IG1fc2Ny
b2xsaW5nVHJlZVN0YXRlQ29tbWl0dGVyVGltZXI7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKENI
Uk9NSVVNKQorICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50KiBtX2NsaWVudDsKKyNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjIyMmFjYTExY2UwYjI4ZWI3NGVjMWRkMDFhZDM4OThhMjVjMzJkNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yQ2xpZW50LmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yQ2xpZW50X2gKKyNkZWZpbmUgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGll
bnRfaAorCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgU2Nyb2xsaW5nVHJlZVN0YXRlOworCitjbGFzcyBTY3JvbGxpbmdDb29yZGluYXRv
ckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tbWl0KCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjb21taXQoUGFzc093blB0cjxTY3JvbGxpbmdUcmVlU3RhdGU+
KSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5TY3JvbGxpbmdDb29yZGluYXRvckNs
aWVudCgpIHsgfQorfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cAppbmRleCA5MDQ5MjNkZWNlNGM0NTEyYjJkMzJmMTk5YzJhZmZhMTViYjMzZWQ4Li41ZWJmYzcx
ZWIwMjgxZmUxZGQzY2UzMjdlNjRlNmEwNjZkOTFhOTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuY3BwCkBAIC0yNSwxNCArMjUsMjQgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCisj
aW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50Q2hyb21pdW0uaCIKKyNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKKyNpbmNs
dWRlICJTY3JvbGxpbmdUcmVlU3RhdGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lk
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpCiB7Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCEKKyAgICBpZiAo
bV9zY3JvbGxpbmdUcmVlU3RhdGUtPmNoYW5nZWRQcm9wZXJ0aWVzKCkpCisgICAgICAgIG1fY2xp
ZW50LT5zY2hlZHVsZUNvbW1pdCgpOworfQorCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpj
b21taXRUcmVlU3RhdGVJZk5lZWRlZCgpCit7CisgICAgaWYgKG1fc2Nyb2xsaW5nVHJlZVN0YXRl
LT5jaGFuZ2VkUHJvcGVydGllcygpKQorICAgICAgICBtX2NsaWVudC0+Y29tbWl0KG1fc2Nyb2xs
aW5nVHJlZVN0YXRlLT5jb21taXQoKSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OmZyYW1lVmlld1Njcm9sbExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyosIGNvbnN0IEdyYXBoaWNz
TGF5ZXIqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGYyNWM4N2Q3Y2ViYzJlMzYz
NjljZWU4MTY0Yzk1NGZiNDE5MDI2YWEuLjA3NWVlZDRhNjU3NTBmZjUxZDM1ZDk5MmQwZTVkYWUw
YTQ5MGM2M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTQ2MSw2ICs0NjEsOCBA
QAogICAgICAgICAgICAgICAgICdzcmMvUmVzb3VyY2VIYW5kbGUuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1Njcm9sbGJhckdyb3VwLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TY3Jv
bGxiYXJHcm91cC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Q2xpZW50SW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvU2hhcmVkV29ya2VyUmVwb3Np
dG9yeS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvU29ja2V0U3RyZWFtSGFuZGxlLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggZmIw
N2I0YzEwM2ZiMjc5YTI0YzRmMTY3OGViNTk4OGYzMjE3M2JhNi4uYWYyYjYyZWNlZDU2ZjU0MzM4
ZTVkYTk2YWZkNjJjYWY3Zjc5ZWFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJQb3B1
cE1lbnVDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU3RhdGUuaCIKICNpbmNs
dWRlICJTZWFyY2hQb3B1cE1lbnVDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9TY3JvbGxpbmdDb29yZGluYXRvckNsaWVudEltcGwuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjlmODMyOTIyMjFiNDJjOGJjN2RhOTMzYTQyMjdmYjhlOTVhNzdjYTAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TY3JvbGxpbmdDb29yZGluYXRv
ckNsaWVudEltcGwuY3BwCkBAIC0wLDAgKzEsMzMgQEAKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbC5oIgorCisjaW5jbHVkZSAi
U2Nyb2xsaW5nVHJlZVN0YXRlLmgiCisjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudEltcGw6OlNj
cm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3QqIGxh
eWVyVHJlZUhvc3QpCisgICAgOiBtX2xheWVyVHJlZUhvc3QobGF5ZXJUcmVlSG9zdCkKK3sKK30K
KworU2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsOjp+U2Nyb2xsaW5nQ29vcmRpbmF0b3JD
bGllbnRJbXBsKCkKK3sKK30KKwordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudEltcGw6
OnNjaGVkdWxlQ29tbWl0KCkKK3sKKyAgICBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0
KCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsOjpjb21taXQoUGFz
c093blB0cjxXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RhdGU+IHBvcFNjcm9sbGluZ1RyZWVTdGF0
ZSkKK3sKKyAgICBPd25QdHI8V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0YXRlPiBzY3JvbGxpbmdU
cmVlU3RhdGUocG9wU2Nyb2xsaW5nVHJlZVN0YXRlKTsKKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhzY3JvbGxpbmdUcmVlU3RhdGUtPndoZWVsRXZlbnRI
YW5kbGVyQ291bnQoKSA+IDApOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9wYWdhdGUg
dGhlIG90aGVyIHByb3BlcnRpZXMgb2YgU2Nyb2xsaW5nVHJlZVN0YXRlCisgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIHB1c2ggcHJvcGVydGllcyBvbiBsYXllcnMsIG5vdCBvbiB0aGUgaG9zdC4K
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TY3Jv
bGxpbmdDb29yZGluYXRvckNsaWVudEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYThjYTdlOWNiZWZiYTM1
MDg5ZmM5YjBjM2EyYjRkMWM3YjlmZGZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsLmgKQEAgLTAsMCAr
MSwzNyBAQAorCisjaWZuZGVmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbF9oCisjZGVm
aW5lIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbF9oCisKKyNpbmNsdWRlICJTY3JvbGxp
bmdDb29yZGluYXRvckNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7CitjbGFzcyBTY3JvbGxpbmdU
cmVlU3RhdGU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTY3JvbGxpbmdDb29y
ZGluYXRvckNsaWVudEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JD
bGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xp
ZW50SW1wbCk7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8U2Nyb2xsaW5nQ29vcmRp
bmF0b3JDbGllbnRJbXBsPiBjcmVhdGUoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0KiBsYXllclRy
ZWVIb3N0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTY3JvbGxpbmdDb29y
ZGluYXRvckNsaWVudEltcGwobGF5ZXJUcmVlSG9zdCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5T
Y3JvbGxpbmdDb29yZGluYXRvckNsaWVudEltcGwoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzY2hl
ZHVsZUNvbW1pdCgpOworICAgIHZpcnR1YWwgdm9pZCBjb21taXQoUGFzc093blB0cjxXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlU3RhdGU+KTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBTY3JvbGxp
bmdDb29yZGluYXRvckNsaWVudEltcGwoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Kik7CisKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0PiBtX2xheWVyVHJlZUhvc3Q7Cit9Owor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CmluZGV4IDU1YjlhMWRhY2Y0YTk5ZDJlNzc4ZTc5NzJkZDQwYzNjMDlmMmE4OTYuLjU1YTdlMWRk
NzZmYWU1N2M0N2Q0OWE0ZmJjNmMwMzQ0ZWI4NzlhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTk5LDYgKzk5LDggQEAKICNpbmNsdWRlICJSZW5k
ZXJXaWRnZXQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNjaGVt
ZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKKyNpbmNsdWRl
ICJTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudEltcGwuaCIKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKQEAgLTgwMywxMyArODA1LDggQEAgYm9vbCBXZWJWaWV3SW1wbDo6dG91Y2hFdmVudChjb25z
dCBXZWJUb3VjaEV2ZW50JiBldmVudCkKIAogdm9pZCBXZWJWaWV3SW1wbDo6bnVtYmVyT2ZXaGVl
bEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkIG51bWJlck9mV2hlZWxIYW5kbGVycykKIHsK
LSAgICBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMgPSBudW1iZXJPZldoZWVsSGFuZGxlcnMgPiAw
OwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPm51bWJlck9mV2hlZWxFdmVu
dEhhbmRsZXJzQ2hhbmdlZChudW1iZXJPZldoZWVsSGFuZGxlcnMpOwotI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKLSAgICBpZiAobV9sYXllclRyZWVIb3N0KQotICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMobV9oYXZlV2hlZWxFdmVudEhh
bmRsZXJzKTsKLSNlbmRpZgogfQogCiAjaWYgIU9TKERBUldJTikKQEAgLTExNzIsNiArMTE2OSwx
MSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpsYXlvdXQoKQogCiAgICAgICAgIHdlYmZyYW1lLT5sYXlv
dXQoKTsKICAgICB9CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYg
KG1fbGF5ZXJUcmVlSG9zdCkKKyAgICAgICAgcGFnZSgpLT5zY3JvbGxpbmdDb29yZGluYXRvcigp
LT5jb21taXRUcmVlU3RhdGVJZk5lZWRlZCgpOworI2VuZGlmCiB9CiAKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCkBAIC0yOTg3LDYgKzI5ODksMTMgQEAgcHJpdmF0ZToKICAgICBX
ZWJWaWV3SW1wbCogbV93ZWJWaWV3SW1wbDsKIH07CiAKK1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2xp
ZW50SW1wbCogV2ViVmlld0ltcGw6OnNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbCgpCit7
CisgICAgaWYgKCFtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbCkKKyAgICAgICAgbV9z
Y3JvbGxpbmdDb29yZGluYXRvckNsaWVudEltcGwgPSBTY3JvbGxpbmdDb29yZGluYXRvckNsaWVu
dEltcGw6OmNyZWF0ZShtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOworICAgIHJldHVybiBtX3Njcm9s
bGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbC5nZXQoKTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6
c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogewogICAgIFBs
YXRmb3JtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIkdQVS5zZXRJc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBY3RpdmUiLCBhY3RpdmUgKiAyICsgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdBY3RpdmUsIDQpOwpAQCAtMzAwMCwxMiArMzAwOSwxNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpz
ZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgIC8v
IGZsaWNrZXJpbmcgd2hlbiBjb21wb3NpdGluZyB0dXJucyBvZmYuCiAgICAgICAgIGlmIChtX2xh
eWVyVHJlZUhvc3QpCiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaEFsbFJlbmRl
cmluZygpOworICAgICAgICBwYWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCktPnNldENsaWVu
dCgwKTsKKyAgICAgICAgcGFnZSgpLT5zZXR0aW5ncygpLT5zZXRTY3JvbGxpbmdDb29yZGluYXRv
ckVuYWJsZWQoZmFsc2UpOwogICAgICAgICBtX2NsaWVudC0+ZGlkRGVhY3RpdmF0ZUNvbXBvc2l0
b3IoKTsKICAgICB9IGVsc2UgaWYgKG1fbGF5ZXJUcmVlSG9zdCkgewogICAgICAgICBtX2lzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9IHRydWU7CiAgICAgICAgIHVwZGF0ZUxheWVyVHJl
ZVZpZXdwb3J0KCk7CiAKICAgICAgICAgbV9jbGllbnQtPmRpZEFjdGl2YXRlQ29tcG9zaXRvciht
X2xheWVyVHJlZUhvc3QtPmNvbXBvc2l0b3JJZGVudGlmaWVyKCkpOworICAgICAgICBwYWdlKCkt
PnNldHRpbmdzKCktPnNldFNjcm9sbGluZ0Nvb3JkaW5hdG9yRW5hYmxlZCh0cnVlKTsKKyAgICAg
ICAgcGFnZSgpLT5zY3JvbGxpbmdDb29yZGluYXRvcigpLT5zZXRDbGllbnQoc2Nyb2xsaW5nQ29v
cmRpbmF0b3JDbGllbnRJbXBsKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFRSQUNFX0VWRU5U
KCJXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKHRydWUpIiwg
dGhpcywgMCk7CiAKQEAgLTMwMjYsNyArMzAzOSw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKIAogICAgICAgICBtX2xh
eWVyVHJlZUhvc3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlzLCBjY1NldHRpbmdzKTsK
ICAgICAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkgewotICAgICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5zZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk7
CiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cyht
X21pbmltdW1QYWdlU2NhbGVGYWN0b3IsIG1fbWF4aW11bVBhZ2VTY2FsZUZhY3Rvcik7CiAgICAg
ICAgICAgICB1cGRhdGVMYXllclRyZWVWaWV3cG9ydCgpOwogICAgICAgICAgICAgbV9jbGllbnQt
PmRpZEFjdGl2YXRlQ29tcG9zaXRvcihtX2xheWVyVHJlZUhvc3QtPmNvbXBvc2l0b3JJZGVudGlm
aWVyKCkpOwpAQCAtMzAzNCwxMCArMzA0NiwxNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgICAgICBtX2Nv
bXBvc2l0b3JDcmVhdGlvbkZhaWxlZCA9IGZhbHNlOwogICAgICAgICAgICAgaWYgKG1fcGFnZU92
ZXJsYXlzKQogICAgICAgICAgICAgICAgIG1fcGFnZU92ZXJsYXlzLT51cGRhdGUoKTsKKyAgICAg
ICAgICAgIHBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0U2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVk
KHRydWUpOworICAgICAgICAgICAgcGFnZSgpLT5zY3JvbGxpbmdDb29yZGluYXRvcigpLT5zZXRD
bGllbnQoc2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsKCkpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LmNsZWFyKCk7CiAgICAgICAgICAgICBtX25v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jbGVhcigpOwogICAgICAgICAgICAgbV9pc0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdBY3RpdmUgPSBmYWxzZTsKKyAgICAgICAgICAgIHBhZ2UoKS0+c2Nyb2xs
aW5nQ29vcmRpbmF0b3IoKS0+c2V0Q2xpZW50KDApOworICAgICAgICAgICAgcGFnZSgpLT5zZXR0
aW5ncygpLT5zZXRTY3JvbGxpbmdDb29yZGluYXRvckVuYWJsZWQoZmFsc2UpOwogICAgICAgICAg
ICAgbV9jbGllbnQtPmRpZERlYWN0aXZhdGVDb21wb3NpdG9yKCk7CiAgICAgICAgICAgICBtX2Nv
bXBvc2l0b3JDcmVhdGlvbkZhaWxlZCA9IHRydWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDE5N2Y1ODJlNGU5ZWQwYzUyYTY4OGExMWZm
ZTFlMDUzMDlmYjRjNmYuLjY0NjVkYmIyZjQxYjJjYzNiNTlhZjk3YTc5MDg5MWY2MjdjOTRjMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNzksNiArNzks
NyBAQCBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OwogY2xhc3MgRHJhZ1Njcm9s
bFRpbWVyOwogY2xhc3MgR2VvbG9jYXRpb25DbGllbnRQcm94eTsKIGNsYXNzIE5vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdDsKK2NsYXNzIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbDsKIGNs
YXNzIFNwZWVjaElucHV0Q2xpZW50SW1wbDsKIGNsYXNzIFVzZXJNZWRpYUNsaWVudEltcGw7CiBj
bGFzcyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OwpAQCAtNjczLDcgKzY3NCw2IEBAIHByaXZhdGU6
CiAgICAgLy8gSWYgdHJ1ZSwgdGhlIGdyYXBoaWNzIGNvbnRleHQgaXMgYmVpbmcgcmVzdG9yZWQu
CiAgICAgYm9vbCBtX3JlY3JlYXRpbmdHcmFwaGljc0NvbnRleHQ7CiAjZW5kaWYKLSAgICBib29s
IG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsKICAgICBzdGF0aWMgY29uc3QgV2ViSW5wdXRFdmVu
dCogbV9jdXJyZW50SW5wdXRFdmVudDsKIAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCkBAIC02
ODksNiArNjg5LDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFVz
ZXJNZWRpYUNsaWVudEltcGwgbV91c2VyTWVkaWFDbGllbnRJbXBsOwogI2VuZGlmCisKKyAgICBT
Y3JvbGxpbmdDb29yZGluYXRvckNsaWVudEltcGwqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50
SW1wbCgpOworICAgIE93blB0cjxTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudEltcGw+IG1fc2Ny
b2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127278</attachid>
            <date>2012-02-15 17:05:21 -0800</date>
            <delta_ts>2012-02-16 20:34:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78739-20120215170520.patch</filename>
            <type>text/plain</type>
            <size>35484</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjUyZDA4MWYwNmNkNTc2
NmY2NzVkNGQ4MjFlMWQ3NTNjOGZlMzhhNS4uNTUyNWUzNDM0MDQ5YTI5ZTljMTZlYWNiZGMxZGUw
MjdjOTIwZGJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAyLTE1ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBX
aXJlIHVwIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIHRvIGNocm9taXVtIGNvbXBvc2l0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NzM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAo
T09QUyEpCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAo
U2Nyb2xsaW5nQ29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OnNldENsaWVudCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JDbGllbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudDo6flNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2NoZWR1bGVU
cmVlU3RhdGVDb21taXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdDb29yZGluYXRvcjo6Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQpOgorCiAyMDEyLTAy
LTE0ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTW92
ZSBTY3JvbGxpbmdDb29yZGluYXRvciBvdXQgb2YgRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykg
aWZkZWYgYW5kIGVuYWJsZSBvbiBhbGwgcGxhdGZvcm1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IGM2ZWU4MTBjZmY5MWY4ZDU4ZTVhYTg0NGUwMzNkMGVmZGNiNjQ0M2QuLjllY2UyN2U0
Y2YwYjIyNTIyZjYxYzllZDZhZjFiZjg0ODkxMjIwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTItMDItMTUgIEphbWVzIFJvYmluc29uICA8amFtZXNy
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFdpcmUgdXAgU2Nyb2xsaW5nQ29v
cmRpbmF0b3IgdG8gY2hyb21pdW0gY29tcG9zaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg3MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwOgorICAgICAgICAqIHNyYy9TY3JvbGxpbmdDb29yZGluYXRvckNsaWVu
dEltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlNj
cm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbDo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsOjp+
U2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xs
aW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsOjpzY2hlZHVsZUNvbW1pdCk6CisgICAgICAgIChXZWJL
aXQ6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbDo6Y29tbWl0KToKKyAgICAgICAgKiBz
cmMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
bGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJ
bXBsOjpjcmVhdGUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpudW1iZXJPZldoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OnNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbCk6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAg
KFdlYktpdCk6CisKIDIwMTItMDItMTQgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTWFrZSBTY3JpcHRzTmF2aWdhdG9yIGRl
ZmF1bHQgZmlsZSBzZWxlY3Rvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwOWY3OTMyNGU1ZmQxMDRk
OGI5NzA3MTdhMzY5YzU2OTQwYjIzMzM4Li43YmIxMTllYzFlNGU0MWNkOTVmOGVhMGU5OWUyMDQ3
MDNiYjY4MDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNzIwLDYgKzI3MjAsNyBAQAogICAgICAg
ICAgICAgJ3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmgnLAogICAgICAgICAgICAg
J3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5jcHAnLAogICAgICAgICAgICAgJ3Bh
Z2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCcsCisgICAgICAg
ICAgICAncGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nVHJlZVN0YXRlLmNwcCcsCiAg
ICAgICAgICAgICAncGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwJywKICAgICAgICAgICAg
ICdwYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwJywKICAgICAgICAgICAgICdwYWdlL3dpbi9G
cmFtZUNHV2luLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCBhM2E2YTUxNGM2MmY1MjUxY2I1YzBmMTU3M2U4
YzgwMWFjOGRkOGJmLi44YWIwYjdkZWM0ZjcwZDZkN2ZkYWE2MTg0OGUzMWI3Y2Y5YmM1MjQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGll
bnQuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAg
LTEwNCw2ICsxMDUsMTIgQEAgcHVibGljOgogICAgIC8vIERpc3BhdGNoZWQgYnkgdGhlIHNjcm9s
bGluZyB0cmVlIHdoZW5ldmVyIHRoZSBtYWluIGZyYW1lIHNjcm9sbCBwb3NpdGlvbiBjaGFuZ2Vz
IGFuZCB0aGUgc2Nyb2xsIGxheWVyIHBvc2l0aW9uIG5lZWRzIHRvIGJlIHVwZGF0ZWQgYXMgd2Vs
bC4KICAgICB2b2lkIHVwZGF0ZU1haW5GcmFtZVNjcm9sbFBvc2l0aW9uQW5kU2Nyb2xsTGF5ZXJQ
b3NpdGlvbihjb25zdCBJbnRQb2ludCYpOwogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAg
dm9pZCBzZXRDbGllbnQoU2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnQqIGNsaWVudCkgeyBtX2Ns
aWVudCA9IGNsaWVudDsgfQorI2VuZGlmCisKKyAgICB2b2lkIGNvbW1pdFRyZWVTdGF0ZUlmTmVl
ZGVkKCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5nQ29vcmRpbmF0b3IoUGFn
ZSopOwogCkBAIC0xMTYsNyArMTIzLDYgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShUSFJFQURF
RF9TQ1JPTExJTkcpCiAgICAgdm9pZCBzY3JvbGxpbmdUcmVlU3RhdGVDb21taXR0ZXJUaW1lckZp
cmVkKFRpbWVyPFNjcm9sbGluZ0Nvb3JkaW5hdG9yPiopOwotICAgIHZvaWQgY29tbWl0VHJlZVN0
YXRlSWZOZWVkZWQoKTsKICAgICB2b2lkIGNvbW1pdFRyZWVTdGF0ZSgpOwogI2VuZGlmCiAKQEAg
LTEyNiw2ICsxMzIsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2Nyb2xsaW5nVHJlZT4gbV9z
Y3JvbGxpbmdUcmVlOwogICAgIFRpbWVyPFNjcm9sbGluZ0Nvb3JkaW5hdG9yPiBtX3Njcm9sbGlu
Z1RyZWVTdGF0ZUNvbW1pdHRlclRpbWVyOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShDSFJPTUlV
TSkKKyAgICBTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudCogbV9jbGllbnQ7CisjZW5kaWYKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvckNsaWVudC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjYyMjJhY2ExMWNlMGIyOGViNzRlYzFkZDAxYWQzODk4YTI1YzMyZDQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvckNs
aWVudC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JvbGxpbmdD
b29yZGluYXRvckNsaWVudF9oCisjZGVmaW5lIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50X2gK
KworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIFNjcm9sbGluZ1RyZWVTdGF0ZTsKKworY2xhc3MgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGll
bnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbW1pdCgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY29tbWl0KFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZVN0YXRlPikgPSAw
OworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+U2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnQo
KSB7IH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmNwcAppbmRleCBmMzZkMWM1MDZkMjZiYTg2ZTY5
OGE2NTY0Yzc3MzZjMjA3MmU1MjlmLi42MjliMGMwZmE2YzdjMmE5YjcyNGUyZGFlOWI1Yzc1ZTNj
NzE2N2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVTdGF0ZS5jcHAKQEAgLTI3LDYgKzI3LDEwIEBACiAKICNpbmNsdWRlICJTY3JvbGxp
bmdUcmVlU3RhdGUuaCIKIAorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorI2luY2x1ZGUgIkxheWVy
Q2hyb21pdW0uaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NPd25QdHI8
U2Nyb2xsaW5nVHJlZVN0YXRlPiBTY3JvbGxpbmdUcmVlU3RhdGU6OmNyZWF0ZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5oCmluZGV4
IDhkYzczNzdjYmYxYjcyMjM5ZTE3NmU0YzBmMTIxNmVkYzk0MzE4YzYuLmNmNDRkY2ZhNzA1MmRh
ZjkxZmJhYWFkYzAyMTBjMGFjZmE1ZWU2ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5oCkBAIC0xMjAsNiArMTIwLDggQEAgcHJp
dmF0ZToKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4g
bV9wbGF0Zm9ybVNjcm9sbExheWVyOworI2VsaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgUmVm
UHRyPFBsYXRmb3JtTGF5ZXI+IG1fcGxhdGZvcm1TY3JvbGxMYXllcjsKICNlbmRpZgogCiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21p
dW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDkwNDkyM2RlY2U0YzQ1MTJiMmQzMmYx
OTljMmFmZmExNWJiMzNlZDguLjlmZWM2MTg5YzU3OTMwOGU0YmMxOWJjZjA0ZTFkNmEzOWNkNWQ3
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTI1LDIwICsyNSwzMyBAQAog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJD
aHJvbWVDbGllbnRDaHJvbWl1bS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgorI2luY2x1ZGUgIlNj
cm9sbGluZ1RyZWVTdGF0ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnNjaGVkdWxlVHJlZVN0YXRlQ29tbWl0KCkKIHsKLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IQorICAgIGlmIChtX3Njcm9s
bGluZ1RyZWVTdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSkKKyAgICAgICAgbV9jbGllbnQtPnNj
aGVkdWxlQ29tbWl0KCk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmll
d1Njcm9sbExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyosIGNvbnN0IEdyYXBoaWNzTGF5ZXIqKQor
dm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKQogewot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQhCisgICAg
aWYgKG1fc2Nyb2xsaW5nVHJlZVN0YXRlLT5jaGFuZ2VkUHJvcGVydGllcygpKQorICAgICAgICBt
X2NsaWVudC0+Y29tbWl0KG1fc2Nyb2xsaW5nVHJlZVN0YXRlLT5jb21taXQoKSk7Cit9CisKK3Zv
aWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Njcm9sbExheWVyRGlkQ2hhbmdlKEZy
YW1lVmlldyogZnJhbWVWaWV3LCBjb25zdCBHcmFwaGljc0xheWVyKiBzY3JvbGxMYXllcikKK3sK
KyAgICBpZiAoZnJhbWVWaWV3LT5mcmFtZSgpICE9IG1fcGFnZS0+bWFpbkZyYW1lKCkpCisgICAg
ICAgIHJldHVybjsgLy8gRklYTUU6IEhhbmRsZSBub24tcm9vdCBGcmFtZVZpZXdzLgorCisgICAg
bV9zY3JvbGxpbmdUcmVlU3RhdGUtPnNldFNjcm9sbExheWVyKHNjcm9sbExheWVyKTsKIH0KIAog
dm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3SG9yaXpvbnRhbFNjcm9sbGJhckxh
eWVyRGlkQ2hhbmdlKEZyYW1lVmlldyosIEdyYXBoaWNzTGF5ZXIqIGhvcml6b250YWxTY3JvbGxi
YXJMYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9t
aXVtL1Njcm9sbGluZ1RyZWVTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9jaHJvbWl1bS9TY3JvbGxpbmdUcmVlU3RhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3ZTk3NzNiZTYw
NGY2ZWU4YzNkOGM0MTU4ZWVmMDljMTEyYjMyNzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdUcmVlU3RhdGUuY3BwCkBA
IC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5j
bHVkZSAiU2Nyb2xsaW5nVHJlZVN0YXRlLmgiCisKKyNpbmNsdWRlICJMYXllckNocm9taXVtLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGxhdGZvcm1MYXllciogU2Nyb2xsaW5nVHJlZVN0
YXRlOjpwbGF0Zm9ybVNjcm9sbExheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wbGF0Zm9y
bVNjcm9sbExheWVyLmdldCgpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTdGF0ZTo6c2V0U2Ny
b2xsTGF5ZXIoY29uc3QgR3JhcGhpY3NMYXllciogbGF5ZXIpCit7CisgICAgbV9wbGF0Zm9ybVNj
cm9sbExheWVyID0gbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKK30KKworfQorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uY3BwCmluZGV4IDRiY2YyOTdmZjkyNDY4Yzk4NGY1YjRmY2MxMmJmZjUzYjI2NmQ2NzQu
LjI1NzZiY2E2Y2VhNjFlNWEwZGJkNzRkNDUwMTE3YjUyY2Q3ZDMyODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uY3BwCkBAIC02MCw2ICs2MCw3IEBAIExheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0o
KQogICAgICwgbV9sYXllcklkKHNfbmV4dExheWVySWQrKykKICAgICAsIG1fcGFyZW50KDApCiAg
ICAgLCBtX3Njcm9sbGFibGUoZmFsc2UpCisgICAgLCBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMo
ZmFsc2UpCiAgICAgLCBtX2FuY2hvclBvaW50KDAuNSwgMC41KQogICAgICwgbV9iYWNrZ3JvdW5k
Q29sb3IoMCwgMCwgMCwgMCkKICAgICAsIG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KGZhbHNl
KQpAQCAtMzY5LDYgKzM3MCwxNCBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNldFNjcm9sbGFibGUo
Ym9vbCBzY3JvbGxhYmxlKQogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKK3ZvaWQgTGF5ZXJD
aHJvbWl1bTo6c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sIGhhdmVXaGVlbEV2ZW50SGFu
ZGxlcnMpCit7CisgICAgaWYgKG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyA9PSBoYXZlV2hlZWxF
dmVudEhhbmRsZXJzKQorICAgICAgICByZXR1cm47CisgICAgbV9oYXZlV2hlZWxFdmVudEhhbmRs
ZXJzID0gaGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQor
CiB2b2lkIExheWVyQ2hyb21pdW06OnNldERvdWJsZVNpZGVkKGJvb2wgZG91YmxlU2lkZWQpCiB7
CiAgICAgaWYgKG1fZG91YmxlU2lkZWQgPT0gZG91YmxlU2lkZWQpCkBAIC00MjMsNiArNDMyLDcg
QEAgdm9pZCBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXll
cikKICAgICBsYXllci0+c2V0SXNOb25Db21wb3NpdGVkQ29udGVudChtX2lzTm9uQ29tcG9zaXRl
ZENvbnRlbnQpOwogICAgIGxheWVyLT5zZXRNYXNrc1RvQm91bmRzKG1fbWFza3NUb0JvdW5kcyk7
CiAgICAgbGF5ZXItPnNldFNjcm9sbGFibGUobV9zY3JvbGxhYmxlKTsKKyAgICBsYXllci0+c2V0
SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMpOwogICAgIGxh
eWVyLT5zZXROYW1lKG1fbmFtZSk7CiAgICAgbGF5ZXItPnNldE9wYXF1ZShtX29wYXF1ZSk7CiAg
ICAgbGF5ZXItPnNldE9wYWNpdHkobV9vcGFjaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCAz
YTFlOTZjNWZkYTQ5ZTgxYjQ1ZGU3YzZjNDExOWVkMmIzOTg2M2YxLi4zYWI5OWI0MWY5N2M2ZmFj
MzZhM2Q4YzM0MzE0NGMyMGU2M2QyMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0xMzMsNiAr
MTMzLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Nyb2xsYWJsZShib29sKTsKICAgICBib29s
IHNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGU7IH0KIAorICAgIHZvaWQg
c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sKTsKKyAgICBib29sIGhhdmVXaGVlbEV2ZW50
SGFuZGxlcnMoKSBjb25zdCB7IHJldHVybiBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnM7IH0KKwog
ICAgIEludFNpemUgc2Nyb2xsRGVsdGEoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7IH0KIAog
ICAgIGZsb2F0IHBhZ2VTY2FsZURlbHRhKCkgY29uc3QgeyByZXR1cm4gMTsgfQpAQCAtMjY0LDYg
KzI2Nyw3IEBAIHByaXZhdGU6CiAgICAgSW50UmVjdCBtX3Zpc2libGVMYXllclJlY3Q7CiAgICAg
SW50UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKICAgICBib29sIG1fc2Nyb2xsYWJsZTsKKyAgICBi
b29sIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsKICAgICBGbG9hdFBvaW50IG1fcG9zaXRpb247
CiAgICAgRmxvYXRQb2ludCBtX2FuY2hvclBvaW50OwogICAgIENvbG9yIG1fYmFja2dyb3VuZENv
bG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NJbnB1dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgKaW5kZXggMDU3ZDc5YjFhMTE4OGM5YjAxOWIx
YjMwZjdkZGY2MjNjMTAxMTFmZS4uNmMwNTU5OTRjNThlY2E0MTEzMTlhOWM5OWQxNDNmOWMxN2Yz
ZTJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NJbnB1dEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCkBAIC00NiwxMyArNDYsMTQgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhdygpID0gMDsKIAogICAgIGVudW0g
U2Nyb2xsU3RhdHVzIHsgU2Nyb2xsRmFpbGVkLCBTY3JvbGxTdGFydGVkLCBTY3JvbGxJZ25vcmVk
IH07CisgICAgZW51bSBTY3JvbGxJbnB1dFR5cGUgeyBHZXN0dXJlLCBXaGVlbCB9OwogCiAgICAg
Ly8gQXR0ZW1wdCB0byBzdGFydCBzY3JvbGxpbmcgYSBsYXllciBhdCBhIGdpdmVuIHBvaW50IGlu
IHdpbmRvdwogICAgIC8vIGNvb3JkaW5hdGVzLiBSZXR1cm5zIFNjcm9sbFN0YXJ0ZWQgaWYgdGhl
IGxheWVyIGF0IHRoZSBjb29yZGluYXRlcyBjYW4KICAgICAvLyBiZSBzY3JvbGxlZCwgU2Nyb2xs
RmFpbGVkIGlmIHRoZSBzY3JvbGwgZXZlbnQgc2hvdWxkIGluc3RlYWQgYmUKICAgICAvLyBkZWxl
Z2F0ZWQgdG8gdGhlIG1haW4gdGhyZWFkLCBvciBTY3JvbGxJZ25vcmVkIGlmIHRoZXJlIGlzIG5v
dGhpbmcgdG8KICAgICAvLyBiZSBzY3JvbGxlZCBhdCB0aGUgZ2l2ZW4gY29vcmRpbmF0ZXMuCi0g
ICAgdmlydHVhbCBTY3JvbGxTdGF0dXMgc2Nyb2xsQmVnaW4oY29uc3QgSW50UG9pbnQmKSA9IDA7
CisgICAgdmlydHVhbCBTY3JvbGxTdGF0dXMgc2Nyb2xsQmVnaW4oY29uc3QgSW50UG9pbnQmLCBT
Y3JvbGxJbnB1dFR5cGUpID0gMDsKIAogICAgIC8vIFNjcm9sbCB0aGUgbGF5ZXIgc2VsZWN0ZWQg
d2l0aCBzY3JvbGxCZWdpbigpLiBJZiB0aGVyZSBpcyBubyByb29tIHRvCiAgICAgLy8gbW92ZSB0
aGUgbGF5ZXIgaW4gdGhlIHJlcXVlc3RlZCBkaXJlY3Rpb24sIGl0cyBmaXJzdCBhbmNlc3RvciBs
YXllciB0aGF0CkBAIC02NCw3ICs2NSw2IEBAIHB1YmxpYzoKICAgICAvLyBjYWxsZWQgaWYgc2Ny
b2xsQmVnaW4oKSByZXR1cm5lZCBTY3JvbGxTdGFydGVkLgogICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGxFbmQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycygp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlQmVnaW4oKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHBpbmNoR2VzdHVyZVVwZGF0ZShmbG9hdCBtYWduaWZ5RGVsdGEsIGNvbnN0IElu
dFBvaW50JiBhbmNob3IpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlRW5kKCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmluZGV4IDBiZmI3MzcwN2E0YjVkN2UxNmVmMjg5
N2Y4MmVkM2Y5NGZlMTFjMGYuLmVjMmMzMTI3YmZmM2IwNjgzNzM0MmM2ZWI5OWU2NDI3NTZiY2Ji
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAgQ0NMYXllcklt
cGw6OkNDTGF5ZXJJbXBsKGludCBpZCkKICAgICAsIG1fYW5jaG9yUG9pbnQoMC41LCAwLjUpCiAg
ICAgLCBtX2FuY2hvclBvaW50WigwKQogICAgICwgbV9zY3JvbGxhYmxlKGZhbHNlKQorICAgICwg
bV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzKGZhbHNlKQogICAgICwgbV9iYWNrZ3JvdW5kQ292ZXJz
Vmlld3BvcnQoZmFsc2UpCiAgICAgLCBtX2RvdWJsZVNpZGVkKHRydWUpCiAgICAgLCBtX2xheWVy
UHJvcGVydHlDaGFuZ2VkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggOGZiYWJhZTg2
YTZiZDZhYzhkNjVjYjdlN2UwNmNhNmM5YmU2OTE4MC4uYmMzMzY5ZWYwYmNkMGY2MDdmMGQzNzQy
ZTk1ZDYxZDgyNzMzMmVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC0xODAsNiArMTgwLDkg
QEAgcHVibGljOgogICAgIGJvb2wgc2Nyb2xsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xs
YWJsZTsgfQogICAgIHZvaWQgc2V0U2Nyb2xsYWJsZShib29sIHNjcm9sbGFibGUpIHsgbV9zY3Jv
bGxhYmxlID0gc2Nyb2xsYWJsZTsgfQogCisgICAgYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJz
KCkgY29uc3QgeyByZXR1cm4gbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzOyB9CisgICAgdm9pZCBz
ZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycykgeyBt
X2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMgPSBoYXZlV2hlZWxFdmVudEhhbmRsZXJzOyB9CisKICAg
ICBjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gbV92aXNp
YmxlTGF5ZXJSZWN0OyB9CiAgICAgdm9pZCBzZXRWaXNpYmxlTGF5ZXJSZWN0KGNvbnN0IEludFJl
Y3QmIHZpc2libGVMYXllclJlY3QpIHsgbV92aXNpYmxlTGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVy
UmVjdDsgfQogCkBAIC0yNDIsNiArMjQ1LDcgQEAgcHJpdmF0ZToKICAgICBJbnRTaXplIG1fY29u
dGVudEJvdW5kczsKICAgICBJbnRQb2ludCBtX3Njcm9sbFBvc2l0aW9uOwogICAgIGJvb2wgbV9z
Y3JvbGxhYmxlOworICAgIGJvb2wgbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzOwogICAgIENvbG9y
IG1fYmFja2dyb3VuZENvbG9yOwogICAgIGJvb2wgbV9iYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGY4MTQ0ZTEwMmM1YmZmOTVl
ZDM0MjhjOTYyMjJiYmQyMjliNjVkNjIuLmM1ZGFhZTM2MTAzOWIyMjM3NGVjY2U3N2JmOTIzNGE1
ZThiMWNkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtNjgsNyArNjgs
NiBAQCBDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGll
bnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncwogICAgICwgbV9sYXllclJlbmRlcmVySW5pdGlh
bGl6ZWQoZmFsc2UpCiAgICAgLCBtX3NldHRpbmdzKHNldHRpbmdzKQogICAgICwgbV92aXNpYmxl
KHRydWUpCi0gICAgLCBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMoZmFsc2UpCiAgICAgLCBtX3Bh
Z2VTY2FsZSgxKQogICAgICwgbV9taW5QYWdlU2NhbGUoMSkKICAgICAsIG1fbWF4UGFnZVNjYWxl
KDEpCkBAIC0xNzcsNyArMTc2LDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1p
dE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKICAgICAgICAgaG9z
dEltcGwtPnNldFJvb3RMYXllcigwKTsKIAogICAgIGhvc3RJbXBsLT5zZXRTb3VyY2VGcmFtZU51
bWJlcihmcmFtZU51bWJlcigpKTsKLSAgICBob3N0SW1wbC0+c2V0SGF2ZVdoZWVsRXZlbnRIYW5k
bGVycyhtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMpOwogICAgIGhvc3RJbXBsLT5zZXRWaWV3cG9y
dFNpemUodmlld3BvcnRTaXplKCkpOwogICAgIGhvc3RJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JB
bmRMaW1pdHMocGFnZVNjYWxlKCksIG1fbWluUGFnZVNjYWxlLCBtX21heFBhZ2VTY2FsZSk7CiAK
QEAgLTM0OCwxNCArMzQ2LDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRpZEJlY29tZUludmlz
aWJsZU9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW0KICAgICAgICAgaG9z
dEltcGwtPnNldFJvb3RMYXllcigwKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldEhh
dmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKQotewotICAg
IGlmIChtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMgPT0gaGF2ZVdoZWVsRXZlbnRIYW5kbGVycykK
LSAgICAgICAgcmV0dXJuOwotICAgIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyA9IGhhdmVXaGVl
bEV2ZW50SGFuZGxlcnM7Ci0gICAgbV9wcm94eS0+c2V0TmVlZHNDb21taXQoKTsKLX0KLQogdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUm
IHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJh
dGlvblNlYykKIHsKICAgICBtX3Byb3h5LT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQ
b3NpdGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgZHVyYXRpb25TZWMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuaAppbmRleCBkODFiOGU0ZGFmZjFmMGU2ZmQ4ODc4ZWIxMmIxMDZjZDM3ZDczZDhm
Li4wNzBhMjhkMGViNzJlNTNkZjgyYmFiN2MxOTA4YmQxZjYwOWQ2OTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaApAQCAtMTgzLDggKzE4Myw2IEBAIHB1YmxpYzoKICAgICBib29sIHZp
c2libGUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7IH0KICAgICB2b2lkIHNldFZpc2libGUo
Ym9vbCk7CiAKLSAgICB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCk7Ci0KICAg
ICAvLyBSZXR1cm5zIGZhbHNlIGlmIHdlIHNob3VsZCBhYm9ydCB0aGlzIGZyYW1lIGR1ZSB0byBp
bml0aWFsaXphdGlvbiBmYWlsdXJlLgogICAgIGJvb2wgdXBkYXRlTGF5ZXJzKCk7CiAKQEAgLTIz
OCw3ICsyMzYsNiBAQCBwcml2YXRlOgogCiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAg
ICBib29sIG1fdmlzaWJsZTsKLSAgICBib29sIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsKICAg
ICB0eXBlZGVmIEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0M0QqLCBSZWZQdHI8UmF0ZUxpbWl0ZXI+
ID4gUmF0ZUxpbWl0ZXJNYXA7CiAgICAgUmF0ZUxpbWl0ZXJNYXAgbV9yYXRlTGltaXRlcnM7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggZTQ2YWUzMjQ5ZjM4
MTVjZDliMDE5MWE5Mjg3MWZhMTdmMmE5ZGI4Ni4uYTdkYmQ4ZTIyYzMxY2Y3Y2I5OTljNmU1M2Ex
ZjMyOTA5YTM1NTM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
QEAgLTUxLDcgKzUxLDYgQEAgQ0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1w
bChjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWUKICAgICAsIG1fZnJhbWVO
dW1iZXIoMCkKICAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCiAgICAgLCBtX3Zpc2libGUodHJ1
ZSkKLSAgICAsIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhmYWxzZSkKICAgICAsIG1fcGFnZVNj
YWxlKDEpCiAgICAgLCBtX3BhZ2VTY2FsZURlbHRhKDEpCiAgICAgLCBtX3NlbnRQYWdlU2NhbGVE
ZWx0YSgxKQpAQCAtNDU2LDEyICs0NTUsMTUgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpz
ZXROZWVkc1JlZHJhdygpCiAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFk
KCk7CiB9CiAKLUNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgQ0NMYXllclRyZWVI
b3N0SW1wbDo6c2Nyb2xsQmVnaW4oY29uc3QgSW50UG9pbnQmKQorQ0NJbnB1dEhhbmRsZXJDbGll
bnQ6OlNjcm9sbFN0YXR1cyBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3JvbGxCZWdpbihjb25zdCBJ
bnRQb2ludCYsIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJbnB1dFR5cGUgdHlwZSkKIHsK
ICAgICAvLyBUT0RPOiBDaGVjayBmb3Igc2Nyb2xsYWJsZSBzdWJsYXllcnMuCiAgICAgaWYgKCFt
X3Njcm9sbExheWVySW1wbCB8fCAhbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbGFibGUoKSkKICAg
ICAgICAgcmV0dXJuIFNjcm9sbElnbm9yZWQ7CiAKKyAgICBpZiAodHlwZSA9PSBDQ0lucHV0SGFu
ZGxlckNsaWVudDo6V2hlZWwgJiYgbV9zY3JvbGxMYXllckltcGwtPmhhdmVXaGVlbEV2ZW50SGFu
ZGxlcnMoKSkKKyAgICAgICAgcmV0dXJuIFNjcm9sbEZhaWxlZDsKKwogICAgIHJldHVybiBTY3Jv
bGxTdGFydGVkOwogfQogCkBAIC00ODAsMTEgKzQ4Miw2IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0
SW1wbDo6c2Nyb2xsRW5kKCkKIHsKIH0KIAotYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpoYXZl
V2hlZWxFdmVudEhhbmRsZXJzKCkKLXsKLSAgICByZXR1cm4gbV9oYXZlV2hlZWxFdmVudEhhbmRs
ZXJzOwotfQotCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnBpbmNoR2VzdHVyZUJlZ2luKCkK
IHsKICAgICBtX3BpbmNoR2VzdHVyZUFjdGl2ZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmgKaW5kZXggNWVlMDM5OWY1YjQ1NzIyNWE5MWRmZjZiNzc3Y2Q1ZDhhNzZk
NmE5Zi4uMjY4YjVkMTI1YmI0M2ViMzRhYWIyNTFjYzlkOGM0MTUwMWZmOGIwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtNTksMTAgKzU5LDkgQEAgcHVibGljOgog
CiAgICAgLy8gQ0NJbnB1dEhhbmRsZXJDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFs
IHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKLSAgICB2aXJ0dWFsIENDSW5wdXRIYW5kbGVyQ2xpZW50
OjpTY3JvbGxTdGF0dXMgc2Nyb2xsQmVnaW4oY29uc3QgSW50UG9pbnQmKTsKKyAgICB2aXJ0dWFs
IENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsQmVnaW4oY29uc3QgSW50
UG9pbnQmLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsSW5wdXRUeXBlKTsKICAgICB2aXJ0
dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGxFbmQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpOwogICAg
IHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVCZWdpbigpOwogICAgIHZpcnR1YWwgdm9pZCBwaW5j
aEdlc3R1cmVVcGRhdGUoZmxvYXQsIGNvbnN0IEludFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lk
IHBpbmNoR2VzdHVyZUVuZCgpOwpAQCAtOTgsNyArOTcsNiBAQCBwdWJsaWM6CiAKICAgICBib29s
IHZpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7IH0KICAgICB2b2lkIHNldFZpc2li
bGUoYm9vbCk7Ci0gICAgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wgaGF2ZVdo
ZWVsRXZlbnRIYW5kbGVycykgeyBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMgPSBoYXZlV2hlZWxF
dmVudEhhbmRsZXJzOyB9CiAKICAgICBpbnQgc291cmNlRnJhbWVOdW1iZXIoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXJjZUZyYW1lTnVtYmVyOyB9CiAgICAgdm9pZCBzZXRTb3VyY2VGcmFtZU51bWJl
cihpbnQgZnJhbWVOdW1iZXIpIHsgbV9zb3VyY2VGcmFtZU51bWJlciA9IGZyYW1lTnVtYmVyOyB9
CkBAIC0xNDMsNyArMTQxLDYgQEAgcHJpdmF0ZToKICAgICBDQ1NldHRpbmdzIG1fc2V0dGluZ3M7
CiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBib29sIG1fdmlzaWJsZTsKLSAgICBi
b29sIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsKIAogICAgIGZsb2F0IG1fcGFnZVNjYWxlOwog
ICAgIGZsb2F0IG1fcGFnZVNjYWxlRGVsdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5k
ZXggZjI1Yzg3ZDdjZWJjMmUzNjM2OWNlZTgxNjRjOTU0ZmI0MTkwMjZhYS4uMDc1ZWVkNGE2NTc1
MGZmNTFkMzVkOTkyZDBlNWRhZTBhNDkwYzYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cApAQCAtNDYxLDYgKzQ2MSw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9SZXNvdXJjZUhhbmRs
ZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvU2Nyb2xsYmFyR3JvdXAuY3BwJywKICAgICAg
ICAgICAgICAgICAnc3JjL1Njcm9sbGJhckdyb3VwLmgnLAorICAgICAgICAgICAgICAgICdzcmMv
U2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3Ny
Yy9TY3JvbGxpbmdDb29yZGluYXRvckNsaWVudEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Tb2Nr
ZXRTdHJlYW1IYW5kbGUuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1NwZWVjaElucHV0Q2xp
ZW50SW1wbC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcAppbmRleCBmYjA3YjRjMTAzZmIyNzlhMjRjNGYxNjc4ZWI1OTg4ZjMyMTczYmE2
Li5hZjJiNjJlY2VkNTZmNTQzMzhlNWRhOTZhZmQ2MmNhZjdmNzllYWMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtNjYsNiArNjYs
NyBAQAogI2luY2x1ZGUgIlBvcHVwTWVudUNocm9taXVtLmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lk
Z2V0LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNjcm9sbGlu
Z1RyZWVTdGF0ZS5oIgogI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudUNocm9taXVtLmgiCiAjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5j
cHAKaW5kZXggYzliZTA4YTg0N2E2ZmJiYmI3OGVhY2FmYzJiM2EwMmYzNGIwYjdiMi4uYmI1NDJh
ZmNhYzUxNTYwZWQ5N2Q5OWM2NTcwMGU4Zjc5Y2Y0OWJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCkBAIC0x
MDMsNiArMTAzLDcgQEAgdm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFZpZXdwb3J0
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdwb3J0U2l6ZSwKIAogICAgIG1fdmlld3BvcnRT
aXplID0gdmlld3BvcnRTaXplOwogICAgIHNjcm9sbExheWVyKCktPnNldFNjcm9sbFBvc2l0aW9u
KHNjcm9sbFBvc2l0aW9uKTsKKyAgICBzY3JvbGxMYXllcigpLT5zZXRQb3NpdGlvbihXZWJDb3Jl
OjpGbG9hdFBvaW50KC1zY3JvbGxQb3NpdGlvbi54KCksIC1zY3JvbGxQb3NpdGlvbi55KCkpKTsK
ICAgICAvLyBEdWUgdG8gdGhlIHBvc3NpYmlsaXR5IG9mIHBpbmNoIHpvb20sIHRoZSBub25jb21w
b3NpdGVkIGxheWVyIGlzIGFsd2F5cwogICAgIC8vIGFzc3VtZWQgdG8gYmUgc2Nyb2xsYWJsZS4K
ICAgICBzY3JvbGxMYXllcigpLT5zZXRTY3JvbGxhYmxlKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaAppbmRleCBi
ZTlmNTA5YTIxZTYyNzEyZWIzYzBhODlkZTc4MmJiMWQyODY1ODA4Li5iMjlmYmM1YzBmMGU0NDgz
YzRmYzM5Y2Q2YjRlNjE4NmY1NGQ4NjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaApAQCAtMjcsNiArMjcsNyBAQAog
I2RlZmluZSBOb25Db21wb3NpdGVkQ29udGVudEhvc3RfaAogCiAjaW5jbHVkZSAiR3JhcGhpY3NM
YXllckNsaWVudC5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5o
IgogCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9TY3JvbGxpbmdDb29yZGluYXRvckNsaWVudEltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hM2EwYjU2ZDk1YWUzYjZhYmNjOWI3YWY4NWM0YTBmYmNjN2ZiYWY4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JDbGllbnRJbXBsLmNwcApAQCAtMCwwICsxLDM0IEBACisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudEltcGwuaCIKKworI2lu
Y2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU3RhdGUuaCIK
KyNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbDo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGll
bnRJbXBsKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKKyAgICA6IG1f
bGF5ZXJUcmVlSG9zdChsYXllclRyZWVIb3N0KQoreworfQorCitTY3JvbGxpbmdDb29yZGluYXRv
ckNsaWVudEltcGw6On5TY3JvbGxpbmdDb29yZGluYXRvckNsaWVudEltcGwoKQoreworfQorCit2
b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbDo6c2NoZWR1bGVDb21taXQoKQorewor
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXQoKTsKK30KKwordm9pZCBTY3JvbGxp
bmdDb29yZGluYXRvckNsaWVudEltcGw6OmNvbW1pdChQYXNzT3duUHRyPFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWVTdGF0ZT4gcG9wU2Nyb2xsaW5nVHJlZVN0YXRlKQoreworICAgIE93blB0cjxXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlU3RhdGU+IHNjcm9sbGluZ1RyZWVTdGF0ZShwb3BTY3JvbGxpbmdU
cmVlU3RhdGUpOworCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb3BhZ2F0ZSB0aGUgb3Ro
ZXIgcHJvcGVydGllcyBvZiBTY3JvbGxpbmdUcmVlU3RhdGUKKyAgICBpZiAoV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bSogc2Nyb2xsaW5nTGF5ZXIgPSBzY3JvbGxpbmdUcmVlU3RhdGUtPnBsYXRmb3Jt
U2Nyb2xsTGF5ZXIoKSkKKyAgICAgICAgc2Nyb2xsaW5nTGF5ZXItPnNldEhhdmVXaGVlbEV2ZW50
SGFuZGxlcnMoc2Nyb2xsaW5nVHJlZVN0YXRlLT53aGVlbEV2ZW50SGFuZGxlckNvdW50KCkgPiAw
KTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU2Nyb2xs
aW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9T
Y3JvbGxpbmdDb29yZGluYXRvckNsaWVudEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYThjYTdlOWNiZWZi
YTM1MDg5ZmM5YjBjM2EyYjRkMWM3YjlmZGZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsLmgKQEAgLTAs
MCArMSwzNyBAQAorCisjaWZuZGVmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbF9oCisj
ZGVmaW5lIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbF9oCisKKyNpbmNsdWRlICJTY3Jv
bGxpbmdDb29yZGluYXRvckNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7CitjbGFzcyBTY3JvbGxp
bmdUcmVlU3RhdGU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTY3JvbGxpbmdD
b29yZGluYXRvckNsaWVudEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0
b3JDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcm9sbGluZ0Nvb3JkaW5hdG9y
Q2xpZW50SW1wbCk7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8U2Nyb2xsaW5nQ29v
cmRpbmF0b3JDbGllbnRJbXBsPiBjcmVhdGUoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0KiBsYXll
clRyZWVIb3N0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTY3JvbGxpbmdD
b29yZGluYXRvckNsaWVudEltcGwobGF5ZXJUcmVlSG9zdCkpOworICAgIH0KKyAgICB2aXJ0dWFs
IH5TY3JvbGxpbmdDb29yZGluYXRvckNsaWVudEltcGwoKTsKKworICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZUNvbW1pdCgpOworICAgIHZpcnR1YWwgdm9pZCBjb21taXQoUGFzc093blB0cjxXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlU3RhdGU+KTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBTY3Jv
bGxpbmdDb29yZGluYXRvckNsaWVudEltcGwoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Kik7CisK
KyAgICBSZWZQdHI8V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0PiBtX2xheWVyVHJlZUhvc3Q7Cit9
OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCmluZGV4IDQwYzE1MWRmZDE5
Yzc4ZTdkY2Q0YWE5Y2NlNTA1NTIxNzU5MzQ0YTMuLjM5NzMwOGI1MjljYzQxNzQ3MTg3YzdmODY3
ZDEyMWI5YjIzZmNhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKQEAgLTEyMSw5ICsxMjEs
OSBAQCB2b2lkIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVJbnB1dEV2ZW50
KGNvbnN0IFdlYklucHV0RXZlbnQmIGV2ZW50KQogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxU
aHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKIAotICAgIGlmIChldmVudC50eXBlID09
IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWwgJiYgIW1faW5wdXRIYW5kbGVyQ2xpZW50LT5oYXZl
V2hlZWxFdmVudEhhbmRsZXJzKCkpIHsKKyAgICBpZiAoZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2
ZW50OjpNb3VzZVdoZWVsKSB7CiAgICAgICAgIGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCA9ICpzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQqPigmZXZlbnQp
OwotICAgICAgICBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzIHNjcm9sbFN0YXR1
cyA9IG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCZWdpbihJbnRQb2ludCh3aGVlbEV2ZW50
LngsIHdoZWVsRXZlbnQueSkpOworICAgICAgICBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xs
U3RhdHVzIHNjcm9sbFN0YXR1cyA9IG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCZWdpbihJ
bnRQb2ludCh3aGVlbEV2ZW50LngsIHdoZWVsRXZlbnQueSksIENDSW5wdXRIYW5kbGVyQ2xpZW50
OjpXaGVlbCk7CiAgICAgICAgIHN3aXRjaCAoc2Nyb2xsU3RhdHVzKSB7CiAgICAgICAgIGNhc2Ug
Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQ6CiAgICAgICAgICAgICBtX2lucHV0
SGFuZGxlckNsaWVudC0+c2Nyb2xsQnkoSW50U2l6ZSgtd2hlZWxFdmVudC5kZWx0YVgsIC13aGVl
bEV2ZW50LmRlbHRhWSkpOwpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGw6OmhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgZXZl
bnQpCiAgICAgICAgIG1fZXhwZWN0U2Nyb2xsVXBkYXRlRW5kID0gdHJ1ZTsKICNlbmRpZgogICAg
ICAgICBjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCA9ICpzdGF0aWNfY2FzdDxj
b25zdCBXZWJHZXN0dXJlRXZlbnQqPigmZXZlbnQpOwotICAgICAgICBDQ0lucHV0SGFuZGxlckNs
aWVudDo6U2Nyb2xsU3RhdHVzIHNjcm9sbFN0YXR1cyA9IG1faW5wdXRIYW5kbGVyQ2xpZW50LT5z
Y3JvbGxCZWdpbihJbnRQb2ludChnZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpKTsKKyAg
ICAgICAgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBzY3JvbGxTdGF0dXMgPSBt
X2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoZ2VzdHVyZUV2ZW50Lngs
IGdlc3R1cmVFdmVudC55KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6Okdlc3R1cmUpOwogICAgICAg
ICBzd2l0Y2ggKHNjcm9sbFN0YXR1cykgewogICAgICAgICBjYXNlIENDSW5wdXRIYW5kbGVyQ2xp
ZW50OjpTY3JvbGxTdGFydGVkOgogICAgICAgICAgICAgbV9zY3JvbGxTdGFydGVkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA1NWI5YTFk
YWNmNGE5OWQyZTc3OGU3OTcyZGQ0MGMzYzA5ZjJhODk2Li43NmZmMDNhM2JmM2VjZmM2ZmRmNWFk
OWU0MzY1MTIyNWVhZjg3ZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCkBAIC05OSw2ICs5OSw4IEBACiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgor
I2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nQ29v
cmRpbmF0b3JDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNs
dWRlICJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC04MDMsMTMg
KzgwNSw4IEBAIGJvb2wgV2ViVmlld0ltcGw6OnRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVu
dCYgZXZlbnQpCiAKIHZvaWQgV2ViVmlld0ltcGw6Om51bWJlck9mV2hlZWxFdmVudEhhbmRsZXJz
Q2hhbmdlZCh1bnNpZ25lZCBudW1iZXJPZldoZWVsSGFuZGxlcnMpCiB7Ci0gICAgbV9oYXZlV2hl
ZWxFdmVudEhhbmRsZXJzID0gbnVtYmVyT2ZXaGVlbEhhbmRsZXJzID4gMDsKICAgICBpZiAobV9j
bGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5udW1iZXJPZldoZWVsRXZlbnRIYW5kbGVyc0NoYW5n
ZWQobnVtYmVyT2ZXaGVlbEhhbmRsZXJzKTsKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCi0gICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5z
ZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk7Ci0jZW5k
aWYKIH0KIAogI2lmICFPUyhEQVJXSU4pCkBAIC0xMTcyLDYgKzExNjksMTEgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6bGF5b3V0KCkKIAogICAgICAgICB3ZWJmcmFtZS0+bGF5b3V0KCk7CiAgICAgfQor
CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIGlmIChtX2xheWVyVHJlZUhv
c3QpCisgICAgICAgIHBhZ2UoKS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKS0+Y29tbWl0VHJlZVN0
YXRlSWZOZWVkZWQoKTsKKyNlbmRpZgogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQpAQCAtMjk4Nyw2ICsyOTg5LDIwIEBAIHByaXZhdGU6CiAgICAgV2ViVmlld0ltcGwqIG1f
d2ViVmlld0ltcGw7CiB9OwogCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRTY3JvbGxpbmdDb29yZGlu
YXRvckNsaWVudCgpCit7CisgICAgaWYgKCFtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1w
bCkKKyAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRvckNsaWVudEltcGwgPSBTY3JvbGxpbmdD
b29yZGluYXRvckNsaWVudEltcGw6OmNyZWF0ZShtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOworICAg
IHBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0U2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkKHRydWUp
OworICAgIHBhZ2UoKS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKS0+c2V0Q2xpZW50KG1fc2Nyb2xs
aW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsLmdldCgpKTsKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6
Y2xlYXJTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudCgpCit7CisgICAgcGFnZSgpLT5zY3JvbGxp
bmdDb29yZGluYXRvcigpLT5zZXRDbGllbnQoMCk7CisgICAgcGFnZSgpLT5zZXR0aW5ncygpLT5z
ZXRTY3JvbGxpbmdDb29yZGluYXRvckVuYWJsZWQoZmFsc2UpOworfQorCiB2b2lkIFdlYlZpZXdJ
bXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiB7CiAg
ICAgUGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiR1BVLnNldElzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSIsIGFjdGl2ZSAqIDIgKyBtX2lzQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0FjdGl2ZSwgNCk7CkBAIC0zMDAwLDEyICszMDE2LDE0IEBAIHZvaWQgV2ViVmlld0lt
cGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAg
ICAgLy8gZmxpY2tlcmluZyB3aGVuIGNvbXBvc2l0aW5nIHR1cm5zIG9mZi4KICAgICAgICAgaWYg
KG1fbGF5ZXJUcmVlSG9zdCkKICAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZmluaXNoQWxs
UmVuZGVyaW5nKCk7CisgICAgICAgIGNsZWFyU2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnQoKTsK
ICAgICAgICAgbV9jbGllbnQtPmRpZERlYWN0aXZhdGVDb21wb3NpdG9yKCk7CiAgICAgfSBlbHNl
IGlmIChtX2xheWVyVHJlZUhvc3QpIHsKICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdBY3RpdmUgPSB0cnVlOwogICAgICAgICB1cGRhdGVMYXllclRyZWVWaWV3cG9ydCgpOwogCiAg
ICAgICAgIG1fY2xpZW50LT5kaWRBY3RpdmF0ZUNvbXBvc2l0b3IobV9sYXllclRyZWVIb3N0LT5j
b21wb3NpdG9ySWRlbnRpZmllcigpKTsKKyAgICAgICAgc2V0U2Nyb2xsaW5nQ29vcmRpbmF0b3JD
bGllbnQoKTsKICAgICB9IGVsc2UgewogICAgICAgICBUUkFDRV9FVkVOVCgiV2ViVmlld0ltcGw6
OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSh0cnVlKSIsIHRoaXMsIDApOwogCkBA
IC0zMDI2LDcgKzMwNDQsNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0ID0g
Q0NMYXllclRyZWVIb3N0OjpjcmVhdGUodGhpcywgY2NTZXR0aW5ncyk7CiAgICAgICAgIGlmICht
X2xheWVyVHJlZUhvc3QpIHsKLSAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0SGF2ZVdo
ZWVsRXZlbnRIYW5kbGVycyhtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMpOwogICAgICAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5zZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMobV9taW5pbXVtUGFnZVNj
YWxlRmFjdG9yLCBtX21heGltdW1QYWdlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgdXBkYXRl
TGF5ZXJUcmVlVmlld3BvcnQoKTsKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRBY3RpdmF0ZUNv
bXBvc2l0b3IobV9sYXllclRyZWVIb3N0LT5jb21wb3NpdG9ySWRlbnRpZmllcigpKTsKQEAgLTMw
MzQsMTAgKzMwNTEsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICAgICAgbV9jb21wb3NpdG9yQ3JlYXRp
b25GYWlsZWQgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChtX3BhZ2VPdmVybGF5cykKICAgICAg
ICAgICAgICAgICBtX3BhZ2VPdmVybGF5cy0+dXBkYXRlKCk7CisgICAgICAgICAgICBzZXRTY3Jv
bGxpbmdDb29yZGluYXRvckNsaWVudCgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
bV9sYXllclRyZWVIb3N0LmNsZWFyKCk7CiAgICAgICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250
ZW50SG9zdC5jbGVhcigpOwogICAgICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdB
Y3RpdmUgPSBmYWxzZTsKKyAgICAgICAgICAgIGNsZWFyU2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGll
bnQoKTsKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWREZWFjdGl2YXRlQ29tcG9zaXRvcigpOwog
ICAgICAgICAgICAgbV9jb21wb3NpdG9yQ3JlYXRpb25GYWlsZWQgPSB0cnVlOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCAxOTdmNTgyZTRl
OWVkMGM1MmE2ODhhMTFmZmUxZTA1MzA5ZmI0YzZmLi5jYjg1ZDE4MTc5NDY1ZGZhZWQzNWZhZTg2
NTlmNmM1ZmJjYmQzNDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKQEAgLTc5LDYgKzc5LDcgQEAgY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTsK
IGNsYXNzIERyYWdTY3JvbGxUaW1lcjsKIGNsYXNzIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk7CiBj
bGFzcyBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q7CitjbGFzcyBTY3JvbGxpbmdDb29yZGluYXRv
ckNsaWVudEltcGw7CiBjbGFzcyBTcGVlY2hJbnB1dENsaWVudEltcGw7CiBjbGFzcyBVc2VyTWVk
aWFDbGllbnRJbXBsOwogY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKQEAgLTUyOCw2ICs1
MjksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKTsKICNl
bmRpZgogCisgICAgdm9pZCBzZXRTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudCgpOworICAgIHZv
aWQgY2xlYXJTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudCgpOworCiAjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKICAgICB2b2lkIHBvaW50ZXJMb2NrTW91c2VFdmVudChjb25zdCBXZWJJbnB1dEV2
ZW50Jik7CiAjZW5kaWYKQEAgLTY3Myw3ICs2NzcsNiBAQCBwcml2YXRlOgogICAgIC8vIElmIHRy
dWUsIHRoZSBncmFwaGljcyBjb250ZXh0IGlzIGJlaW5nIHJlc3RvcmVkLgogICAgIGJvb2wgbV9y
ZWNyZWF0aW5nR3JhcGhpY3NDb250ZXh0OwogI2VuZGlmCi0gICAgYm9vbCBtX2hhdmVXaGVlbEV2
ZW50SGFuZGxlcnM7CiAgICAgc3RhdGljIGNvbnN0IFdlYklucHV0RXZlbnQqIG1fY3VycmVudElu
cHV0RXZlbnQ7CiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQpAQCAtNjg5LDYgKzY5Miw4IEBA
IHByaXZhdGU6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBVc2VyTWVkaWFDbGllbnRJ
bXBsIG1fdXNlck1lZGlhQ2xpZW50SW1wbDsKICNlbmRpZgorCisgICAgT3duUHRyPFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yQ2xpZW50SW1wbD4gbV9zY3JvbGxpbmdDb29yZGluYXRvckNsaWVudEltcGw7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127510</attachid>
            <date>2012-02-16 20:34:42 -0800</date>
            <delta_ts>2012-02-17 13:23:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78739-20120216203441.patch</filename>
            <type>text/plain</type>
            <size>23208</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3OTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjdlNDA4NzAwNmQ4N2My
YjJjNTI5YzhkYzc5Njk1Mzc2NDg2NmZlZC4uNTI1ZDdlNDhiMTYwY2RmZTQ2ZDZhNjE2N2RmMzBm
NDY3OTFkNGIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAyLTE1ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBX
aXJlIHVwIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIHRvIGNocm9taXVtIGNvbXBvc2l0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NzM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAo
T09QUyEpCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAo
U2Nyb2xsaW5nQ29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OnNldENsaWVudCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JDbGllbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudDo6flNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2NoZWR1bGVU
cmVlU3RhdGVDb21taXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdDb29yZGluYXRvcjo6Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQpOgorCiAyMDEyLTAy
LTE0ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTW92
ZSBTY3JvbGxpbmdDb29yZGluYXRvciBvdXQgb2YgRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykg
aWZkZWYgYW5kIGVuYWJsZSBvbiBhbGwgcGxhdGZvcm1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDMxYzM4ZWVhMTFkNGVlOTc5MzcwZjA0NWJmNWQxYTg2ZWUzMjViOGUuLjE1MDA2YjQw
OWRiZjNkNWMyNTc4YTY1ZTBkNGZhODMyODRmZjVkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0yNDksNiArMjQ5LDM1IEBACiAgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXcu
Y3BwOgogICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0
b3IgQ0NTZXR0aW5ncyk6CiAKKzIwMTItMDItMTUgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFdpcmUgdXAgU2Nyb2xsaW5nQ29vcmRp
bmF0b3IgdG8gY2hyb21pdW0gY29tcG9zaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg3MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogc3JjL0Nocm9tZUNs
aWVudEltcGwuY3BwOgorICAgICAgICAqIHNyYy9TY3JvbGxpbmdDb29yZGluYXRvckNsaWVudElt
cGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlNjcm9s
bGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbDo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJbXBs
KToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsOjp+U2Ny
b2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5n
Q29vcmRpbmF0b3JDbGllbnRJbXBsOjpzY2hlZHVsZUNvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6
OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbDo6Y29tbWl0KToKKyAgICAgICAgKiBzcmMv
U2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJbXBsLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoU2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGll
bnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDbGllbnRJbXBs
OjpjcmVhdGUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpudW1iZXJPZldoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQWN0aXZlKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdl
YktpdCk6CisKIDIwMTItMDItMTQgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTWFrZSBTY3JpcHRzTmF2aWdhdG9yIGRlZmF1
bHQgZmlsZSBzZWxlY3Rvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCAxMjA3
YTM1ZWNmNmJlN2VmYWQ4NDBlY2QxNzljNWM4Zjg0OWFjNmVhLi41Y2UxMzkwMWYxN2UxMDUyMDIz
ODUwMDBkNzdmYjg3ZTEyNzkzOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBA
IC0yNywxMiArMjcsMTUgQEAKIAogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAK
KyNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVN0YXRl
LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
c2NoZWR1bGVUcmVlU3RhdGVDb21taXQoKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQhCisgICAgaWYgKExheWVyQ2hyb21pdW0qIHNjcm9sbExh
eWVyID0gbV9zY3JvbGxpbmdUcmVlU3RhdGUtPnBsYXRmb3JtU2Nyb2xsTGF5ZXIoKSkKKyAgICAg
ICAgc2Nyb2xsTGF5ZXItPnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMobV9zY3JvbGxpbmdUcmVl
U3RhdGUtPndoZWVsRXZlbnRIYW5kbGVyQ291bnQoKSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OmZyYW1lVmlld0hvcml6b250YWxTY3JvbGxiYXJMYXllckRpZENoYW5nZShGcmFt
ZVZpZXcqLCBHcmFwaGljc0xheWVyKiBob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uY3BwCmluZGV4IDRiY2YyOTdmZjkyNDY4Yzk4NGY1YjRmY2MxMmJmZjUzYjI2NmQ2
NzQuLjI1NzZiY2E2Y2VhNjFlNWEwZGJkNzRkNDUwMTE3YjUyY2Q3ZDMyODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uY3BwCkBAIC02MCw2ICs2MCw3IEBAIExheWVyQ2hyb21pdW06OkxheWVyQ2hyb21p
dW0oKQogICAgICwgbV9sYXllcklkKHNfbmV4dExheWVySWQrKykKICAgICAsIG1fcGFyZW50KDAp
CiAgICAgLCBtX3Njcm9sbGFibGUoZmFsc2UpCisgICAgLCBtX2hhdmVXaGVlbEV2ZW50SGFuZGxl
cnMoZmFsc2UpCiAgICAgLCBtX2FuY2hvclBvaW50KDAuNSwgMC41KQogICAgICwgbV9iYWNrZ3Jv
dW5kQ29sb3IoMCwgMCwgMCwgMCkKICAgICAsIG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KGZh
bHNlKQpAQCAtMzY5LDYgKzM3MCwxNCBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNldFNjcm9sbGFi
bGUoYm9vbCBzY3JvbGxhYmxlKQogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKK3ZvaWQgTGF5
ZXJDaHJvbWl1bTo6c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sIGhhdmVXaGVlbEV2ZW50
SGFuZGxlcnMpCit7CisgICAgaWYgKG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyA9PSBoYXZlV2hl
ZWxFdmVudEhhbmRsZXJzKQorICAgICAgICByZXR1cm47CisgICAgbV9oYXZlV2hlZWxFdmVudEhh
bmRsZXJzID0gaGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsKKyAgICBzZXROZWVkc0NvbW1pdCgpOwor
fQorCiB2b2lkIExheWVyQ2hyb21pdW06OnNldERvdWJsZVNpZGVkKGJvb2wgZG91YmxlU2lkZWQp
CiB7CiAgICAgaWYgKG1fZG91YmxlU2lkZWQgPT0gZG91YmxlU2lkZWQpCkBAIC00MjMsNiArNDMy
LDcgQEAgdm9pZCBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBs
YXllcikKICAgICBsYXllci0+c2V0SXNOb25Db21wb3NpdGVkQ29udGVudChtX2lzTm9uQ29tcG9z
aXRlZENvbnRlbnQpOwogICAgIGxheWVyLT5zZXRNYXNrc1RvQm91bmRzKG1fbWFza3NUb0JvdW5k
cyk7CiAgICAgbGF5ZXItPnNldFNjcm9sbGFibGUobV9zY3JvbGxhYmxlKTsKKyAgICBsYXllci0+
c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMpOwogICAg
IGxheWVyLT5zZXROYW1lKG1fbmFtZSk7CiAgICAgbGF5ZXItPnNldE9wYXF1ZShtX29wYXF1ZSk7
CiAgICAgbGF5ZXItPnNldE9wYWNpdHkobV9vcGFjaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRl
eCAzYTFlOTZjNWZkYTQ5ZTgxYjQ1ZGU3YzZjNDExOWVkMmIzOTg2M2YxLi4zYWI5OWI0MWY5N2M2
ZmFjMzZhM2Q4YzM0MzE0NGMyMGU2M2QyMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0xMzMs
NiArMTMzLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Nyb2xsYWJsZShib29sKTsKICAgICBi
b29sIHNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGU7IH0KIAorICAgIHZv
aWQgc2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sKTsKKyAgICBib29sIGhhdmVXaGVlbEV2
ZW50SGFuZGxlcnMoKSBjb25zdCB7IHJldHVybiBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnM7IH0K
KwogICAgIEludFNpemUgc2Nyb2xsRGVsdGEoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7IH0K
IAogICAgIGZsb2F0IHBhZ2VTY2FsZURlbHRhKCkgY29uc3QgeyByZXR1cm4gMTsgfQpAQCAtMjY0
LDYgKzI2Nyw3IEBAIHByaXZhdGU6CiAgICAgSW50UmVjdCBtX3Zpc2libGVMYXllclJlY3Q7CiAg
ICAgSW50UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKICAgICBib29sIG1fc2Nyb2xsYWJsZTsKKyAg
ICBib29sIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsKICAgICBGbG9hdFBvaW50IG1fcG9zaXRp
b247CiAgICAgRmxvYXRQb2ludCBtX2FuY2hvclBvaW50OwogICAgIENvbG9yIG1fYmFja2dyb3Vu
ZENvbG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgKaW5kZXggMDU3ZDc5YjFhMTE4OGM5YjAx
OWIxYjMwZjdkZGY2MjNjMTAxMTFmZS4uNmMwNTU5OTRjNThlY2E0MTEzMTlhOWM5OWQxNDNmOWMx
N2YzZTJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCkBAIC00NiwxMyArNDYsMTQgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhdygpID0gMDsKIAogICAgIGVu
dW0gU2Nyb2xsU3RhdHVzIHsgU2Nyb2xsRmFpbGVkLCBTY3JvbGxTdGFydGVkLCBTY3JvbGxJZ25v
cmVkIH07CisgICAgZW51bSBTY3JvbGxJbnB1dFR5cGUgeyBHZXN0dXJlLCBXaGVlbCB9OwogCiAg
ICAgLy8gQXR0ZW1wdCB0byBzdGFydCBzY3JvbGxpbmcgYSBsYXllciBhdCBhIGdpdmVuIHBvaW50
IGluIHdpbmRvdwogICAgIC8vIGNvb3JkaW5hdGVzLiBSZXR1cm5zIFNjcm9sbFN0YXJ0ZWQgaWYg
dGhlIGxheWVyIGF0IHRoZSBjb29yZGluYXRlcyBjYW4KICAgICAvLyBiZSBzY3JvbGxlZCwgU2Ny
b2xsRmFpbGVkIGlmIHRoZSBzY3JvbGwgZXZlbnQgc2hvdWxkIGluc3RlYWQgYmUKICAgICAvLyBk
ZWxlZ2F0ZWQgdG8gdGhlIG1haW4gdGhyZWFkLCBvciBTY3JvbGxJZ25vcmVkIGlmIHRoZXJlIGlz
IG5vdGhpbmcgdG8KICAgICAvLyBiZSBzY3JvbGxlZCBhdCB0aGUgZ2l2ZW4gY29vcmRpbmF0ZXMu
Ci0gICAgdmlydHVhbCBTY3JvbGxTdGF0dXMgc2Nyb2xsQmVnaW4oY29uc3QgSW50UG9pbnQmKSA9
IDA7CisgICAgdmlydHVhbCBTY3JvbGxTdGF0dXMgc2Nyb2xsQmVnaW4oY29uc3QgSW50UG9pbnQm
LCBTY3JvbGxJbnB1dFR5cGUpID0gMDsKIAogICAgIC8vIFNjcm9sbCB0aGUgbGF5ZXIgc2VsZWN0
ZWQgd2l0aCBzY3JvbGxCZWdpbigpLiBJZiB0aGVyZSBpcyBubyByb29tIHRvCiAgICAgLy8gbW92
ZSB0aGUgbGF5ZXIgaW4gdGhlIHJlcXVlc3RlZCBkaXJlY3Rpb24sIGl0cyBmaXJzdCBhbmNlc3Rv
ciBsYXllciB0aGF0CkBAIC02NCw3ICs2NSw2IEBAIHB1YmxpYzoKICAgICAvLyBjYWxsZWQgaWYg
c2Nyb2xsQmVnaW4oKSByZXR1cm5lZCBTY3JvbGxTdGFydGVkLgogICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGxFbmQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVy
cygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlQmVnaW4oKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZVVwZGF0ZShmbG9hdCBtYWduaWZ5RGVsdGEsIGNvbnN0
IEludFBvaW50JiBhbmNob3IpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlRW5k
KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmluZGV4IGExMzYxNjdkN2FmZWM0YTY3MWU3
YTY5ODA4NWQ0ZGQ2NjBlZGEzMTEuLmM3MGVhMGNjNGE1NDY2MmQyYzdiN2Y3YTFlNzU3NzFmYTdm
ZjFhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAgQ0NMYXll
ckltcGw6OkNDTGF5ZXJJbXBsKGludCBpZCkKICAgICAsIG1fYW5jaG9yUG9pbnQoMC41LCAwLjUp
CiAgICAgLCBtX2FuY2hvclBvaW50WigwKQogICAgICwgbV9zY3JvbGxhYmxlKGZhbHNlKQorICAg
ICwgbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzKGZhbHNlKQogICAgICwgbV9iYWNrZ3JvdW5kQ292
ZXJzVmlld3BvcnQoZmFsc2UpCiAgICAgLCBtX2RvdWJsZVNpZGVkKHRydWUpCiAgICAgLCBtX2xh
eWVyUHJvcGVydHlDaGFuZ2VkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggOGZiYWJh
ZTg2YTZiZDZhYzhkNjVjYjdlN2UwNmNhNmM5YmU2OTE4MC4uYmMzMzY5ZWYwYmNkMGY2MDdmMGQz
NzQyZTk1ZDYxZDgyNzMzMmVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC0xODAsNiArMTgw
LDkgQEAgcHVibGljOgogICAgIGJvb2wgc2Nyb2xsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Ny
b2xsYWJsZTsgfQogICAgIHZvaWQgc2V0U2Nyb2xsYWJsZShib29sIHNjcm9sbGFibGUpIHsgbV9z
Y3JvbGxhYmxlID0gc2Nyb2xsYWJsZTsgfQogCisgICAgYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRs
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzOyB9CisgICAgdm9p
ZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycykg
eyBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMgPSBoYXZlV2hlZWxFdmVudEhhbmRsZXJzOyB9CisK
ICAgICBjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gbV92
aXNpYmxlTGF5ZXJSZWN0OyB9CiAgICAgdm9pZCBzZXRWaXNpYmxlTGF5ZXJSZWN0KGNvbnN0IElu
dFJlY3QmIHZpc2libGVMYXllclJlY3QpIHsgbV92aXNpYmxlTGF5ZXJSZWN0ID0gdmlzaWJsZUxh
eWVyUmVjdDsgfQogCkBAIC0yNDIsNiArMjQ1LDcgQEAgcHJpdmF0ZToKICAgICBJbnRTaXplIG1f
Y29udGVudEJvdW5kczsKICAgICBJbnRQb2ludCBtX3Njcm9sbFBvc2l0aW9uOwogICAgIGJvb2wg
bV9zY3JvbGxhYmxlOworICAgIGJvb2wgbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzOwogICAgIENv
bG9yIG1fYmFja2dyb3VuZENvbG9yOwogICAgIGJvb2wgbV9iYWNrZ3JvdW5kQ292ZXJzVmlld3Bv
cnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGY4MTQ0ZTEwMmM1YmZm
OTVlZDM0MjhjOTYyMjJiYmQyMjliNjVkNjIuLmM1ZGFhZTM2MTAzOWIyMjM3NGVjY2U3N2JmOTIz
NGE1ZThiMWNkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtNjgsNyAr
NjgsNiBAQCBDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RD
bGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncwogICAgICwgbV9sYXllclJlbmRlcmVySW5p
dGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX3NldHRpbmdzKHNldHRpbmdzKQogICAgICwgbV92aXNp
YmxlKHRydWUpCi0gICAgLCBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMoZmFsc2UpCiAgICAgLCBt
X3BhZ2VTY2FsZSgxKQogICAgICwgbV9taW5QYWdlU2NhbGUoMSkKICAgICAsIG1fbWF4UGFnZVNj
YWxlKDEpCkBAIC0xNzcsNyArMTc2LDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENv
bW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKICAgICAgICAg
aG9zdEltcGwtPnNldFJvb3RMYXllcigwKTsKIAogICAgIGhvc3RJbXBsLT5zZXRTb3VyY2VGcmFt
ZU51bWJlcihmcmFtZU51bWJlcigpKTsKLSAgICBob3N0SW1wbC0+c2V0SGF2ZVdoZWVsRXZlbnRI
YW5kbGVycyhtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMpOwogICAgIGhvc3RJbXBsLT5zZXRWaWV3
cG9ydFNpemUodmlld3BvcnRTaXplKCkpOwogICAgIGhvc3RJbXBsLT5zZXRQYWdlU2NhbGVGYWN0
b3JBbmRMaW1pdHMocGFnZVNjYWxlKCksIG1fbWluUGFnZVNjYWxlLCBtX21heFBhZ2VTY2FsZSk7
CiAKQEAgLTM0OCwxNCArMzQ2LDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRpZEJlY29tZUlu
dmlzaWJsZU9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW0KICAgICAgICAg
aG9zdEltcGwtPnNldFJvb3RMYXllcigwKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNl
dEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKQotewot
ICAgIGlmIChtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMgPT0gaGF2ZVdoZWVsRXZlbnRIYW5kbGVy
cykKLSAgICAgICAgcmV0dXJuOwotICAgIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyA9IGhhdmVX
aGVlbEV2ZW50SGFuZGxlcnM7Ci0gICAgbV9wcm94eS0+c2V0TmVlZHNDb21taXQoKTsKLX0KLQog
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNp
emUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBk
dXJhdGlvblNlYykKIHsKICAgICBtX3Byb3h5LT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJn
ZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgZHVyYXRpb25TZWMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaAppbmRleCBkODFiOGU0ZGFmZjFmMGU2ZmQ4ODc4ZWIxMmIxMDZjZDM3ZDcz
ZDhmLi4wNzBhMjhkMGViNzJlNTNkZjgyYmFiN2MxOTA4YmQxZjYwOWQ2OTYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMTgzLDggKzE4Myw2IEBAIHB1YmxpYzoKICAgICBib29s
IHZpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7IH0KICAgICB2b2lkIHNldFZpc2li
bGUoYm9vbCk7CiAKLSAgICB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCk7Ci0K
ICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHdlIHNob3VsZCBhYm9ydCB0aGlzIGZyYW1lIGR1ZSB0
byBpbml0aWFsaXphdGlvbiBmYWlsdXJlLgogICAgIGJvb2wgdXBkYXRlTGF5ZXJzKCk7CiAKQEAg
LTIzOCw3ICsyMzYsNiBAQCBwcml2YXRlOgogCiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsK
ICAgICBib29sIG1fdmlzaWJsZTsKLSAgICBib29sIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsK
ICAgICB0eXBlZGVmIEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0M0QqLCBSZWZQdHI8UmF0ZUxpbWl0
ZXI+ID4gUmF0ZUxpbWl0ZXJNYXA7CiAgICAgUmF0ZUxpbWl0ZXJNYXAgbV9yYXRlTGltaXRlcnM7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggZTQ2YWUzMjQ5
ZjM4MTVjZDliMDE5MWE5Mjg3MWZhMTdmMmE5ZGI4Ni4uYTdkYmQ4ZTIyYzMxY2Y3Y2I5OTljNmU1
M2ExZjMyOTA5YTM1NTM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAKQEAgLTUxLDcgKzUxLDYgQEAgQ0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0
SW1wbChjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWUKICAgICAsIG1fZnJh
bWVOdW1iZXIoMCkKICAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCiAgICAgLCBtX3Zpc2libGUo
dHJ1ZSkKLSAgICAsIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhmYWxzZSkKICAgICAsIG1fcGFn
ZVNjYWxlKDEpCiAgICAgLCBtX3BhZ2VTY2FsZURlbHRhKDEpCiAgICAgLCBtX3NlbnRQYWdlU2Nh
bGVEZWx0YSgxKQpAQCAtNDU2LDEyICs0NTUsMTUgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpzZXROZWVkc1JlZHJhdygpCiAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBsVGhy
ZWFkKCk7CiB9CiAKLUNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6c2Nyb2xsQmVnaW4oY29uc3QgSW50UG9pbnQmKQorQ0NJbnB1dEhhbmRsZXJD
bGllbnQ6OlNjcm9sbFN0YXR1cyBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3JvbGxCZWdpbihjb25z
dCBJbnRQb2ludCYsIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJbnB1dFR5cGUgdHlwZSkK
IHsKICAgICAvLyBUT0RPOiBDaGVjayBmb3Igc2Nyb2xsYWJsZSBzdWJsYXllcnMuCiAgICAgaWYg
KCFtX3Njcm9sbExheWVySW1wbCB8fCAhbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbGFibGUoKSkK
ICAgICAgICAgcmV0dXJuIFNjcm9sbElnbm9yZWQ7CiAKKyAgICBpZiAodHlwZSA9PSBDQ0lucHV0
SGFuZGxlckNsaWVudDo6V2hlZWwgJiYgbV9zY3JvbGxMYXllckltcGwtPmhhdmVXaGVlbEV2ZW50
SGFuZGxlcnMoKSkKKyAgICAgICAgcmV0dXJuIFNjcm9sbEZhaWxlZDsKKwogICAgIHJldHVybiBT
Y3JvbGxTdGFydGVkOwogfQogCkBAIC00ODAsMTEgKzQ4Miw2IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6c2Nyb2xsRW5kKCkKIHsKIH0KIAotYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpo
YXZlV2hlZWxFdmVudEhhbmRsZXJzKCkKLXsKLSAgICByZXR1cm4gbV9oYXZlV2hlZWxFdmVudEhh
bmRsZXJzOwotfQotCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnBpbmNoR2VzdHVyZUJlZ2lu
KCkKIHsKICAgICBtX3BpbmNoR2VzdHVyZUFjdGl2ZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggNWVlMDM5OWY1YjQ1NzIyNWE5MWRmZjZiNzc3Y2Q1ZDhh
NzZkNmE5Zi4uMjY4YjVkMTI1YmI0M2ViMzRhYWIyNTFjYzlkOGM0MTUwMWZmOGIwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtNTksMTAgKzU5LDkgQEAgcHVibGlj
OgogCiAgICAgLy8gQ0NJbnB1dEhhbmRsZXJDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0
dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKLSAgICB2aXJ0dWFsIENDSW5wdXRIYW5kbGVyQ2xp
ZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsQmVnaW4oY29uc3QgSW50UG9pbnQmKTsKKyAgICB2aXJ0
dWFsIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsQmVnaW4oY29uc3Qg
SW50UG9pbnQmLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsSW5wdXRUeXBlKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGxFbmQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpOwog
ICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVCZWdpbigpOwogICAgIHZpcnR1YWwgdm9pZCBw
aW5jaEdlc3R1cmVVcGRhdGUoZmxvYXQsIGNvbnN0IEludFBvaW50Jik7CiAgICAgdmlydHVhbCB2
b2lkIHBpbmNoR2VzdHVyZUVuZCgpOwpAQCAtOTgsNyArOTcsNiBAQCBwdWJsaWM6CiAKICAgICBi
b29sIHZpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7IH0KICAgICB2b2lkIHNldFZp
c2libGUoYm9vbCk7Ci0gICAgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wgaGF2
ZVdoZWVsRXZlbnRIYW5kbGVycykgeyBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMgPSBoYXZlV2hl
ZWxFdmVudEhhbmRsZXJzOyB9CiAKICAgICBpbnQgc291cmNlRnJhbWVOdW1iZXIoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZUZyYW1lTnVtYmVyOyB9CiAgICAgdm9pZCBzZXRTb3VyY2VGcmFtZU51
bWJlcihpbnQgZnJhbWVOdW1iZXIpIHsgbV9zb3VyY2VGcmFtZU51bWJlciA9IGZyYW1lTnVtYmVy
OyB9CkBAIC0xNDMsNyArMTQxLDYgQEAgcHJpdmF0ZToKICAgICBDQ1NldHRpbmdzIG1fc2V0dGlu
Z3M7CiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBib29sIG1fdmlzaWJsZTsKLSAg
ICBib29sIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsKIAogICAgIGZsb2F0IG1fcGFnZVNjYWxl
OwogICAgIGZsb2F0IG1fcGFnZVNjYWxlRGVsdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAppbmRleCBjOWJlMDhh
ODQ3YTZmYmJiYjc4ZWFjYWZjMmIzYTAyZjM0YjBiN2IyLi5iYjU0MmFmY2FjNTE1NjBlZDk3ZDk5
YzY1NzAwZThmNzljZjQ5YmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKQEAgLTEwMyw2ICsxMDMsNyBAQCB2
b2lkIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0Vmlld3BvcnQoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgdmlld3BvcnRTaXplLAogCiAgICAgbV92aWV3cG9ydFNpemUgPSB2aWV3cG9ydFNp
emU7CiAgICAgc2Nyb2xsTGF5ZXIoKS0+c2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24p
OworICAgIHNjcm9sbExheWVyKCktPnNldFBvc2l0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQoLXNj
cm9sbFBvc2l0aW9uLngoKSwgLXNjcm9sbFBvc2l0aW9uLnkoKSkpOwogICAgIC8vIER1ZSB0byB0
aGUgcG9zc2liaWxpdHkgb2YgcGluY2ggem9vbSwgdGhlIG5vbmNvbXBvc2l0ZWQgbGF5ZXIgaXMg
YWx3YXlzCiAgICAgLy8gYXNzdW1lZCB0byBiZSBzY3JvbGxhYmxlLgogICAgIHNjcm9sbExheWVy
KCktPnNldFNjcm9sbGFibGUodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKaW5kZXggNDBj
MTUxZGZkMTljNzhlN2RjZDRhYTljY2U1MDU1MjE3NTkzNDRhMy4uMzk3MzA4YjUyOWNjNDE3NDcx
ODdjN2Y4NjdkMTIxYjliMjNmY2FlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcApAQCAtMTIx
LDkgKzEyMSw5IEBAIHZvaWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUlu
cHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQpCiAgICAgQVNTRVJUKENDUHJveHk6
OmlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCi0gICAgaWYgKGV2ZW50
LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbCAmJiAhbV9pbnB1dEhhbmRsZXJDbGll
bnQtPmhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoKSkgeworICAgIGlmIChldmVudC50eXBlID09IFdl
YklucHV0RXZlbnQ6Ok1vdXNlV2hlZWwpIHsKICAgICAgICAgY29uc3QgV2ViTW91c2VXaGVlbEV2
ZW50JiB3aGVlbEV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCo+
KCZldmVudCk7Ci0gICAgICAgIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgc2Ny
b2xsU3RhdHVzID0gbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJlZ2luKEludFBvaW50KHdo
ZWVsRXZlbnQueCwgd2hlZWxFdmVudC55KSk7CisgICAgICAgIENDSW5wdXRIYW5kbGVyQ2xpZW50
OjpTY3JvbGxTdGF0dXMgc2Nyb2xsU3RhdHVzID0gbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9s
bEJlZ2luKEludFBvaW50KHdoZWVsRXZlbnQueCwgd2hlZWxFdmVudC55KSwgQ0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OldoZWVsKTsKICAgICAgICAgc3dpdGNoIChzY3JvbGxTdGF0dXMpIHsKICAgICAg
ICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZDoKICAgICAgICAgICAg
IG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCeShJbnRTaXplKC13aGVlbEV2ZW50LmRlbHRh
WCwgLXdoZWVsRXZlbnQuZGVsdGFZKSk7CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2
ZW50JiBldmVudCkKICAgICAgICAgbV9leHBlY3RTY3JvbGxVcGRhdGVFbmQgPSB0cnVlOwogI2Vu
ZGlmCiAgICAgICAgIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50ID0gKnN0YXRp
Y19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+KCZldmVudCk7Ci0gICAgICAgIENDSW5wdXRI
YW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsU3RhdHVzID0gbV9pbnB1dEhhbmRsZXJD
bGllbnQtPnNjcm9sbEJlZ2luKEludFBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZlbnQu
eSkpOworICAgICAgICBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzIHNjcm9sbFN0
YXR1cyA9IG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCZWdpbihJbnRQb2ludChnZXN0dXJl
RXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6R2VzdHVyZSk7
CiAgICAgICAgIHN3aXRjaCAoc2Nyb2xsU3RhdHVzKSB7CiAgICAgICAgIGNhc2UgQ0NJbnB1dEhh
bmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQ6CiAgICAgICAgICAgICBtX3Njcm9sbFN0YXJ0ZWQg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4
IGVmMTA2NDNjYmVjNmU0ODY0ZjFhODY5MmVlOTBlNjA1Zjk0NmQ0ZjcuLmZlOGVhNzcxOGM0Y2Qx
ZDBjNDcwNmFjNWViYmY3NDU0YjM0NzU1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKQEAgLTk5LDYgKzk5LDcgQEAKICNpbmNsdWRlICJSZW5kZXJXaWRn
ZXQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lz
dHJ5LmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKQEAgLTc5NiwxMyArNzk3LDggQEAgYm9vbCBXZWJWaWV3SW1wbDo6dG91Y2hFdmVu
dChjb25zdCBXZWJUb3VjaEV2ZW50JiBldmVudCkKIAogdm9pZCBXZWJWaWV3SW1wbDo6bnVtYmVy
T2ZXaGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkIG51bWJlck9mV2hlZWxIYW5kbGVy
cykKIHsKLSAgICBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMgPSBudW1iZXJPZldoZWVsSGFuZGxl
cnMgPiAwOwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPm51bWJlck9mV2hl
ZWxFdmVudEhhbmRsZXJzQ2hhbmdlZChudW1iZXJPZldoZWVsSGFuZGxlcnMpOwotI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBpZiAobV9sYXllclRyZWVIb3N0KQotICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMobV9oYXZlV2hlZWxF
dmVudEhhbmRsZXJzKTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpudW1iZXJPZlRv
dWNoRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQgbnVtYmVyT2ZUb3VjaEhhbmRsZXJzKQpA
QCAtMjk5OSwxMiArMjk5NSwxNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgIC8vIGZsaWNrZXJpbmcgd2hl
biBjb21wb3NpdGluZyB0dXJucyBvZmYuCiAgICAgICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCiAg
ICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaEFsbFJlbmRlcmluZygpOworICAgICAg
ICBwYWdlKCktPnNldHRpbmdzKCktPnNldFNjcm9sbGluZ0Nvb3JkaW5hdG9yRW5hYmxlZChmYWxz
ZSk7CiAgICAgICAgIG1fY2xpZW50LT5kaWREZWFjdGl2YXRlQ29tcG9zaXRvcigpOwogICAgIH0g
ZWxzZSBpZiAobV9sYXllclRyZWVIb3N0KSB7CiAgICAgICAgIG1faXNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQWN0aXZlID0gdHJ1ZTsKICAgICAgICAgdXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKTsK
IAogICAgICAgICBtX2NsaWVudC0+ZGlkQWN0aXZhdGVDb21wb3NpdG9yKG1fbGF5ZXJUcmVlSG9z
dC0+Y29tcG9zaXRvcklkZW50aWZpZXIoKSk7CisgICAgICAgIHBhZ2UoKS0+c2V0dGluZ3MoKS0+
c2V0U2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkKHRydWUpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIFRSQUNFX0VWRU5UKCJXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5n
QWN0aXZlKHRydWUpIiwgdGhpcywgMCk7CiAKQEAgLTMwMjUsNyArMzAyMyw2IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkK
IAogICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlz
LCBjY1NldHRpbmdzKTsKICAgICAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkgewotICAgICAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5zZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKG1faGF2ZVdoZWVs
RXZlbnRIYW5kbGVycyk7CiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFBhZ2VTY2Fs
ZUZhY3RvckxpbWl0cyhtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IsIG1fbWF4aW11bVBhZ2VTY2Fs
ZUZhY3Rvcik7CiAgICAgICAgICAgICB1cGRhdGVMYXllclRyZWVWaWV3cG9ydCgpOwogICAgICAg
ICAgICAgbV9jbGllbnQtPmRpZEFjdGl2YXRlQ29tcG9zaXRvcihtX2xheWVyVHJlZUhvc3QtPmNv
bXBvc2l0b3JJZGVudGlmaWVyKCkpOwpAQCAtMzAzMywxMCArMzAzMCwxMiBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAg
ICAgICAgICAgICBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZCA9IGZhbHNlOwogICAgICAgICAg
ICAgaWYgKG1fcGFnZU92ZXJsYXlzKQogICAgICAgICAgICAgICAgIG1fcGFnZU92ZXJsYXlzLT51
cGRhdGUoKTsKKyAgICAgICAgICAgIHBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0U2Nyb2xsaW5nQ29v
cmRpbmF0b3JFbmFibGVkKHRydWUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV9s
YXllclRyZWVIb3N0LmNsZWFyKCk7CiAgICAgICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50
SG9zdC5jbGVhcigpOwogICAgICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3Rp
dmUgPSBmYWxzZTsKKyAgICAgICAgICAgIHBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0U2Nyb2xsaW5n
Q29vcmRpbmF0b3JFbmFibGVkKGZhbHNlKTsKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWREZWFj
dGl2YXRlQ29tcG9zaXRvcigpOwogICAgICAgICAgICAgbV9jb21wb3NpdG9yQ3JlYXRpb25GYWls
ZWQgPSB0cnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaAppbmRleCBkNDJiMmNiZGRmZjFkNTNmM2I5MjVjOTM4MjMxNWU1NDk1MDg0Y2I5Li40NDI3
MzA2ZGQ1ZWFiZjJkNDU0YjhiYmM4YzY5OWMxOGFjMzViNTA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTY3NCw3ICs2NzQsNiBAQCBwcml2YXRlOgogICAg
IC8vIElmIHRydWUsIHRoZSBncmFwaGljcyBjb250ZXh0IGlzIGJlaW5nIHJlc3RvcmVkLgogICAg
IGJvb2wgbV9yZWNyZWF0aW5nR3JhcGhpY3NDb250ZXh0OwogI2VuZGlmCi0gICAgYm9vbCBtX2hh
dmVXaGVlbEV2ZW50SGFuZGxlcnM7CiAgICAgc3RhdGljIGNvbnN0IFdlYklucHV0RXZlbnQqIG1f
Y3VycmVudElucHV0RXZlbnQ7CiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcAppbmRleCBmNTk4OTNkZTkwNjQxOGY4Y2JkNzU3NDBhZTI5MzllMjNjYzIzNTBhLi5iNTYz
N2M0OTFhNzAzMjU1MDY3ZDE2ZjkyOTk1NTU5OGU2NzUzNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApA
QCAtMTYzLDcgKzE2Myw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xs
Um9vdENhbGxzQ29tbWl0QW5kUmVkcmF3KQogICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0aW9uKElu
dFBvaW50KDAsIDApKTsKICAgICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEw
MCwgMTAwKSk7CiAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOwotICAgIEVYUEVD
VF9FUShtX2hvc3RJbXBsLT5zY3JvbGxCZWdpbihJbnRQb2ludCgwLCAwKSksIENDSW5wdXRIYW5k
bGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKTsKKyAgICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Ny
b2xsQmVnaW4oSW50UG9pbnQoMCwgMCksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpXaGVlbCksIEND
SW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKTsKICAgICBtX2hvc3RJbXBsLT5zY3Jv
bGxCeShJbnRTaXplKDAsIDEwKSk7CiAgICAgbV9ob3N0SW1wbC0+c2Nyb2xsRW5kKCk7CiAgICAg
RVhQRUNUX1RSVUUobV9kaWRSZXF1ZXN0UmVkcmF3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGxUZXN0LmNwcAppbmRleCBhZDU4MTA1MjRkNjRlYWRkZTVhMWMzNDVjNTY4OGFiMmExYTJmZWJk
Li40MzlkZDUyYjQ4YTBlZmY5YjQzZTQzZDQ2OTFiOWQzN2UzOTdmMzEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKSBPVkVSUklERSB7IH0KLSAg
ICB2aXJ0dWFsIFNjcm9sbFN0YXR1cyBzY3JvbGxCZWdpbihjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYpIE9WRVJSSURFCisgICAgdmlydHVhbCBTY3JvbGxTdGF0dXMgc2Nyb2xsQmVnaW4oY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xs
SW5wdXRUeXBlKSBPVkVSUklERQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc2Nyb2xsU3RhdHVz
OwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127642</attachid>
            <date>2012-02-17 13:23:34 -0800</date>
            <delta_ts>2012-02-20 17:59:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78739-20120217132333.patch</filename>
            <type>text/plain</type>
            <size>23314</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg2NmEyZTA4MmIwMDgw
NTJiYWI2YmZmMDAyNTgzOTI3YTU5MGZiYS4uM2U4YWE0YzhiMzhjZGY5Mjk0MGRkNTA4MWUxYzc1
NmUyNzRmN2Q3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAyLTE1ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBX
aXJlIHVwIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIHRvIGNocm9taXVtIGNvbXBvc2l0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NzM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAo
T09QUyEpCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAo
U2Nyb2xsaW5nQ29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OnNldENsaWVudCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JDbGllbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudDo6flNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2NoZWR1bGVU
cmVlU3RhdGVDb21taXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdDb29yZGluYXRvcjo6Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQpOgorCiAyMDEyLTAy
LTE0ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTW92
ZSBTY3JvbGxpbmdDb29yZGluYXRvciBvdXQgb2YgRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykg
aWZkZWYgYW5kIGVuYWJsZSBvbiBhbGwgcGxhdGZvcm1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggZjA0NWM4
YzVjYTk4ODE2YjQ0YWM0ZjdhNmQxYTY3NGZkNzM3YjQ5OC4uNmVjOWZlODdmNmRkOWRjYzE1MzU3
ZDI2MGYyNjcwOGQyODM5NjM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNDksNiArNDksMTAgQEAKICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDSFJPTUlV
TSkKKyNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBQYXNzUmVmUHRyPFNjcm9sbGluZ0Nvb3JkaW5hdG9yPiBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6Y3JlYXRlKFBhZ2UqIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCA1MTU3M2EwZmI3NzAzNmU4MTg4
NWJhNzIxZTBkOTBkY2UyYTA2NGJiLi5kMGNmNGQ1NWY3MGQwYWM1Nzc0Yjc4NTljNDQ0NjA3YzI2
OTk1ZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTEzNyw2ICsxMzcsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8U2Nyb2xsaW5nVHJlZT4gbV9zY3JvbGxpbmdUcmVlOwogICAgIFRpbWVyPFNjcm9sbGluZ0Nv
b3JkaW5hdG9yPiBtX3Njcm9sbGluZ1RyZWVTdGF0ZUNvbW1pdHRlclRpbWVyOwogI2VuZGlmCisK
KyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBSZWZQdHI8UGxhdGZvcm1MYXllcj4gbV9zY3Jv
bGxMYXllcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDVkYjA4MmExYTU2OWVmZGJiZmMyNDRiMzM2ZmEyOTZh
NTc2M2UwMTQuLjRhZTZjYzgzNDk2NzllMDY5MjUwZjc2ZGM4ODcxMDEzZGM2MDY4ODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1
bS9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTI3LDYgKzI3LDggQEAKIAogI2luY2x1ZGUg
IlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAKKyNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVW
aWV3SG9yaXpvbnRhbFNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyosIEdyYXBoaWNz
TGF5ZXIqIGhvcml6b250YWxTY3JvbGxiYXJMYXllcikKQEAgLTQzLDggKzQ1LDcgQEAgdm9pZCBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3VmVydGljYWxTY3JvbGxiYXJMYXllckRpZENo
YW5nZShGcmFtZVZpZXcqLAogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTY3JvbGxM
YXllcihHcmFwaGljc0xheWVyKiBzY3JvbGxMYXllcikKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IQorICAgIG1fc2Nyb2xsTGF5ZXIgPSBzY3Jv
bGxMYXllciA/IHNjcm9sbExheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiAwOwogfQogCiB2b2lkIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBSZWdp
b24mKQpAQCAtNjEsMTAgKzYyLDEwIEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNj
cm9sbFBhcmFtZXRlcnMoU2Nyb2xsRWxhc3RpY2l0eSBob3Jpem9udGFsU2Nyb2xsCiAgICAgLy8g
RklYTUU6IEltcGxlbWVudCEKIH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0V2hl
ZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25lZCkKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5zaWduZWQgd2hlZWxFdmVudEhhbmRsZXJDb3Vu
dCkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50
IQorICAgIGlmIChtX3Njcm9sbExheWVyKQorICAgICAgICBtX3Njcm9sbExheWVyLT5zZXRIYXZl
V2hlZWxFdmVudEhhbmRsZXJzKHdoZWVsRXZlbnRIYW5kbGVyQ291bnQpOwogfQogCiB2b2lkIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkKGJvb2wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDRiY2YyOTdmZjkyNDY4
Yzk4NGY1YjRmY2MxMmJmZjUzYjI2NmQ2NzQuLjI1NzZiY2E2Y2VhNjFlNWEwZGJkNzRkNDUwMTE3
YjUyY2Q3ZDMyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC02MCw2ICs2MCw3IEBAIExh
eWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0oKQogICAgICwgbV9sYXllcklkKHNfbmV4dExheWVy
SWQrKykKICAgICAsIG1fcGFyZW50KDApCiAgICAgLCBtX3Njcm9sbGFibGUoZmFsc2UpCisgICAg
LCBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMoZmFsc2UpCiAgICAgLCBtX2FuY2hvclBvaW50KDAu
NSwgMC41KQogICAgICwgbV9iYWNrZ3JvdW5kQ29sb3IoMCwgMCwgMCwgMCkKICAgICAsIG1fYmFj
a2dyb3VuZENvdmVyc1ZpZXdwb3J0KGZhbHNlKQpAQCAtMzY5LDYgKzM3MCwxNCBAQCB2b2lkIExh
eWVyQ2hyb21pdW06OnNldFNjcm9sbGFibGUoYm9vbCBzY3JvbGxhYmxlKQogICAgIHNldE5lZWRz
Q29tbWl0KCk7CiB9CiAKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0SGF2ZVdoZWVsRXZlbnRIYW5k
bGVycyhib29sIGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMpCit7CisgICAgaWYgKG1faGF2ZVdoZWVs
RXZlbnRIYW5kbGVycyA9PSBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKQorICAgICAgICByZXR1cm47
CisgICAgbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzID0gaGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsK
KyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCiB2b2lkIExheWVyQ2hyb21pdW06OnNldERvdWJs
ZVNpZGVkKGJvb2wgZG91YmxlU2lkZWQpCiB7CiAgICAgaWYgKG1fZG91YmxlU2lkZWQgPT0gZG91
YmxlU2lkZWQpCkBAIC00MjMsNiArNDMyLDcgQEAgdm9pZCBMYXllckNocm9taXVtOjpwdXNoUHJv
cGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICBsYXllci0+c2V0SXNOb25Db21wb3Np
dGVkQ29udGVudChtX2lzTm9uQ29tcG9zaXRlZENvbnRlbnQpOwogICAgIGxheWVyLT5zZXRNYXNr
c1RvQm91bmRzKG1fbWFza3NUb0JvdW5kcyk7CiAgICAgbGF5ZXItPnNldFNjcm9sbGFibGUobV9z
Y3JvbGxhYmxlKTsKKyAgICBsYXllci0+c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhtX2hhdmVX
aGVlbEV2ZW50SGFuZGxlcnMpOwogICAgIGxheWVyLT5zZXROYW1lKG1fbmFtZSk7CiAgICAgbGF5
ZXItPnNldE9wYXF1ZShtX29wYXF1ZSk7CiAgICAgbGF5ZXItPnNldE9wYWNpdHkobV9vcGFjaXR5
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBmZjJlN2QyODYyNjIyZmFkMmMwNjkzOGQ2ZjUyNTY5
MTQwZjg4M2ZhLi4zOWNmZTQyZmFlZWNkYTM2Y2RmNGY4ZjMzMjViMmQ1YzhlY2Q0ZWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5oCkBAIC0xMzMsNiArMTMzLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
U2Nyb2xsYWJsZShib29sKTsKICAgICBib29sIHNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBt
X3Njcm9sbGFibGU7IH0KIAorICAgIHZvaWQgc2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29s
KTsKKyAgICBib29sIGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoKSBjb25zdCB7IHJldHVybiBtX2hh
dmVXaGVlbEV2ZW50SGFuZGxlcnM7IH0KKwogICAgIEludFNpemUgc2Nyb2xsRGVsdGEoKSBjb25z
dCB7IHJldHVybiBJbnRTaXplKCk7IH0KIAogICAgIGZsb2F0IHBhZ2VTY2FsZURlbHRhKCkgY29u
c3QgeyByZXR1cm4gMTsgfQpAQCAtMjY0LDYgKzI2Nyw3IEBAIHByaXZhdGU6CiAgICAgSW50UmVj
dCBtX3Zpc2libGVMYXllclJlY3Q7CiAgICAgSW50UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKICAg
ICBib29sIG1fc2Nyb2xsYWJsZTsKKyAgICBib29sIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsK
ICAgICBGbG9hdFBvaW50IG1fcG9zaXRpb247CiAgICAgRmxvYXRQb2ludCBtX2FuY2hvclBvaW50
OwogICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgK
aW5kZXggMDU3ZDc5YjFhMTE4OGM5YjAxOWIxYjMwZjdkZGY2MjNjMTAxMTFmZS4uNmMwNTU5OTRj
NThlY2E0MTEzMTlhOWM5OWQxNDNmOWMxN2YzZTJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxl
ci5oCkBAIC00NiwxMyArNDYsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVk
c1JlZHJhdygpID0gMDsKIAogICAgIGVudW0gU2Nyb2xsU3RhdHVzIHsgU2Nyb2xsRmFpbGVkLCBT
Y3JvbGxTdGFydGVkLCBTY3JvbGxJZ25vcmVkIH07CisgICAgZW51bSBTY3JvbGxJbnB1dFR5cGUg
eyBHZXN0dXJlLCBXaGVlbCB9OwogCiAgICAgLy8gQXR0ZW1wdCB0byBzdGFydCBzY3JvbGxpbmcg
YSBsYXllciBhdCBhIGdpdmVuIHBvaW50IGluIHdpbmRvdwogICAgIC8vIGNvb3JkaW5hdGVzLiBS
ZXR1cm5zIFNjcm9sbFN0YXJ0ZWQgaWYgdGhlIGxheWVyIGF0IHRoZSBjb29yZGluYXRlcyBjYW4K
ICAgICAvLyBiZSBzY3JvbGxlZCwgU2Nyb2xsRmFpbGVkIGlmIHRoZSBzY3JvbGwgZXZlbnQgc2hv
dWxkIGluc3RlYWQgYmUKICAgICAvLyBkZWxlZ2F0ZWQgdG8gdGhlIG1haW4gdGhyZWFkLCBvciBT
Y3JvbGxJZ25vcmVkIGlmIHRoZXJlIGlzIG5vdGhpbmcgdG8KICAgICAvLyBiZSBzY3JvbGxlZCBh
dCB0aGUgZ2l2ZW4gY29vcmRpbmF0ZXMuCi0gICAgdmlydHVhbCBTY3JvbGxTdGF0dXMgc2Nyb2xs
QmVnaW4oY29uc3QgSW50UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCBTY3JvbGxTdGF0dXMgc2Ny
b2xsQmVnaW4oY29uc3QgSW50UG9pbnQmLCBTY3JvbGxJbnB1dFR5cGUpID0gMDsKIAogICAgIC8v
IFNjcm9sbCB0aGUgbGF5ZXIgc2VsZWN0ZWQgd2l0aCBzY3JvbGxCZWdpbigpLiBJZiB0aGVyZSBp
cyBubyByb29tIHRvCiAgICAgLy8gbW92ZSB0aGUgbGF5ZXIgaW4gdGhlIHJlcXVlc3RlZCBkaXJl
Y3Rpb24sIGl0cyBmaXJzdCBhbmNlc3RvciBsYXllciB0aGF0CkBAIC02NCw3ICs2NSw2IEBAIHB1
YmxpYzoKICAgICAvLyBjYWxsZWQgaWYgc2Nyb2xsQmVnaW4oKSByZXR1cm5lZCBTY3JvbGxTdGFy
dGVkLgogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxFbmQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGluY2hH
ZXN0dXJlQmVnaW4oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZVVwZGF0ZShm
bG9hdCBtYWduaWZ5RGVsdGEsIGNvbnN0IEludFBvaW50JiBhbmNob3IpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgcGluY2hHZXN0dXJlRW5kKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmlu
ZGV4IGExMzYxNjdkN2FmZWM0YTY3MWU3YTY5ODA4NWQ0ZGQ2NjBlZGEzMTEuLmM3MGVhMGNjNGE1
NDY2MmQyYzdiN2Y3YTFlNzU3NzFmYTdmZjFhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAK
QEAgLTQ1LDYgKzQ1LDcgQEAgQ0NMYXllckltcGw6OkNDTGF5ZXJJbXBsKGludCBpZCkKICAgICAs
IG1fYW5jaG9yUG9pbnQoMC41LCAwLjUpCiAgICAgLCBtX2FuY2hvclBvaW50WigwKQogICAgICwg
bV9zY3JvbGxhYmxlKGZhbHNlKQorICAgICwgbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzKGZhbHNl
KQogICAgICwgbV9iYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQoZmFsc2UpCiAgICAgLCBtX2RvdWJs
ZVNpZGVkKHRydWUpCiAgICAgLCBtX2xheWVyUHJvcGVydHlDaGFuZ2VkKGZhbHNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmgKaW5kZXggOGZiYWJhZTg2YTZiZDZhYzhkNjVjYjdlN2UwNmNhNmM5YmU2OTE4
MC4uYmMzMzY5ZWYwYmNkMGY2MDdmMGQzNzQyZTk1ZDYxZDgyNzMzMmVkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5oCkBAIC0xODAsNiArMTgwLDkgQEAgcHVibGljOgogICAgIGJvb2wgc2Nyb2xsYWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZTsgfQogICAgIHZvaWQgc2V0U2Nyb2xsYWJs
ZShib29sIHNjcm9sbGFibGUpIHsgbV9zY3JvbGxhYmxlID0gc2Nyb2xsYWJsZTsgfQogCisgICAg
Ym9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKCkgY29uc3QgeyByZXR1cm4gbV9oYXZlV2hlZWxF
dmVudEhhbmRsZXJzOyB9CisgICAgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wg
aGF2ZVdoZWVsRXZlbnRIYW5kbGVycykgeyBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMgPSBoYXZl
V2hlZWxFdmVudEhhbmRsZXJzOyB9CisKICAgICBjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJS
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlTGF5ZXJSZWN0OyB9CiAgICAgdm9pZCBzZXRW
aXNpYmxlTGF5ZXJSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVMYXllclJlY3QpIHsgbV92aXNp
YmxlTGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdDsgfQogCkBAIC0yNDIsNiArMjQ1LDcgQEAg
cHJpdmF0ZToKICAgICBJbnRTaXplIG1fY29udGVudEJvdW5kczsKICAgICBJbnRQb2ludCBtX3Nj
cm9sbFBvc2l0aW9uOwogICAgIGJvb2wgbV9zY3JvbGxhYmxlOworICAgIGJvb2wgbV9oYXZlV2hl
ZWxFdmVudEhhbmRsZXJzOwogICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOwogICAgIGJvb2wg
bV9iYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCmluZGV4IGU0NjJlNTMxOGJmYzdmMzc5NGRhODY1Y2VmZjMzYmFlYzVkMmU1MDEuLjBhZjky
ZWYyZjNhZDM0NDIxMzc4MzI2NDU0ZDBkZDJiOWIyN2ZjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcApAQCAtNjgsNyArNjgsNiBAQCBDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJU
cmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncwog
ICAgICwgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX3NldHRpbmdz
KHNldHRpbmdzKQogICAgICwgbV92aXNpYmxlKHRydWUpCi0gICAgLCBtX2hhdmVXaGVlbEV2ZW50
SGFuZGxlcnMoZmFsc2UpCiAgICAgLCBtX3BhZ2VTY2FsZUZhY3RvcigxKQogICAgICwgbV9taW5Q
YWdlU2NhbGVGYWN0b3IoMSkKICAgICAsIG1fbWF4UGFnZVNjYWxlRmFjdG9yKDEpCkBAIC0xNzcs
NyArMTc2LDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uSW1wbFRocmVh
ZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKICAgICAgICAgaG9zdEltcGwtPnNldFJv
b3RMYXllcigwKTsKIAogICAgIGhvc3RJbXBsLT5zZXRTb3VyY2VGcmFtZU51bWJlcihmcmFtZU51
bWJlcigpKTsKLSAgICBob3N0SW1wbC0+c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhtX2hhdmVX
aGVlbEV2ZW50SGFuZGxlcnMpOwogICAgIGhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUodmlld3Bv
cnRTaXplKCkpOwogICAgIGhvc3RJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMobV9w
YWdlU2NhbGVGYWN0b3IsIG1fbWluUGFnZVNjYWxlRmFjdG9yLCBtX21heFBhZ2VTY2FsZUZhY3Rv
cik7CiAKQEAgLTM0MCwxNCArMzM4LDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRpZEJlY29t
ZUludmlzaWJsZU9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW0KICAgICAg
ICAgaG9zdEltcGwtPnNldFJvb3RMYXllcigwKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKQot
ewotICAgIGlmIChtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMgPT0gaGF2ZVdoZWVsRXZlbnRIYW5k
bGVycykKLSAgICAgICAgcmV0dXJuOwotICAgIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyA9IGhh
dmVXaGVlbEV2ZW50SGFuZGxlcnM7Ci0gICAgbV9wcm94eS0+c2V0TmVlZHNDb21taXQoKTsKLX0K
LQogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IElu
dFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJs
ZSBkdXJhdGlvblNlYykKIHsKICAgICBtX3Byb3h5LT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0
YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgZHVyYXRpb25TZWMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaAppbmRleCBmNWUxMTM0YzgxYjQzZTIxODg2YTVkOTM1MzBlZTg4ZjE5
YTQwMzI1Li42ZjNkMmQ0OGM2ZWMyNjFlNzk3YjUyODFiY2Y0ODQ1NTAwN2UxMGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMTgwLDggKzE4MCw2IEBAIHB1YmxpYzoKICAgICBi
b29sIHZpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7IH0KICAgICB2b2lkIHNldFZp
c2libGUoYm9vbCk7CiAKLSAgICB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCk7
Ci0KICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHdlIHNob3VsZCBhYm9ydCB0aGlzIGZyYW1lIGR1
ZSB0byBpbml0aWFsaXphdGlvbiBmYWlsdXJlLgogICAgIGJvb2wgdXBkYXRlTGF5ZXJzKCk7CiAK
QEAgLTIzNSw3ICsyMzMsNiBAQCBwcml2YXRlOgogCiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6
ZTsKICAgICBib29sIG1fdmlzaWJsZTsKLSAgICBib29sIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVy
czsKICAgICB0eXBlZGVmIEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0M0QqLCBSZWZQdHI8UmF0ZUxp
bWl0ZXI+ID4gUmF0ZUxpbWl0ZXJNYXA7CiAgICAgUmF0ZUxpbWl0ZXJNYXAgbV9yYXRlTGltaXRl
cnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggZTQ2YWUz
MjQ5ZjM4MTVjZDliMDE5MWE5Mjg3MWZhMTdmMmE5ZGI4Ni4uYTdkYmQ4ZTIyYzMxY2Y3Y2I5OTlj
NmU1M2ExZjMyOTA5YTM1NTM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5jcHAKQEAgLTUxLDcgKzUxLDYgQEAgQ0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVI
b3N0SW1wbChjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWUKICAgICAsIG1f
ZnJhbWVOdW1iZXIoMCkKICAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCiAgICAgLCBtX3Zpc2li
bGUodHJ1ZSkKLSAgICAsIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhmYWxzZSkKICAgICAsIG1f
cGFnZVNjYWxlKDEpCiAgICAgLCBtX3BhZ2VTY2FsZURlbHRhKDEpCiAgICAgLCBtX3NlbnRQYWdl
U2NhbGVEZWx0YSgxKQpAQCAtNDU2LDEyICs0NTUsMTUgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpzZXROZWVkc1JlZHJhdygpCiAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBs
VGhyZWFkKCk7CiB9CiAKLUNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgQ0NMYXll
clRyZWVIb3N0SW1wbDo6c2Nyb2xsQmVnaW4oY29uc3QgSW50UG9pbnQmKQorQ0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3JvbGxCZWdpbihj
b25zdCBJbnRQb2ludCYsIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJbnB1dFR5cGUgdHlw
ZSkKIHsKICAgICAvLyBUT0RPOiBDaGVjayBmb3Igc2Nyb2xsYWJsZSBzdWJsYXllcnMuCiAgICAg
aWYgKCFtX3Njcm9sbExheWVySW1wbCB8fCAhbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbGFibGUo
KSkKICAgICAgICAgcmV0dXJuIFNjcm9sbElnbm9yZWQ7CiAKKyAgICBpZiAodHlwZSA9PSBDQ0lu
cHV0SGFuZGxlckNsaWVudDo6V2hlZWwgJiYgbV9zY3JvbGxMYXllckltcGwtPmhhdmVXaGVlbEV2
ZW50SGFuZGxlcnMoKSkKKyAgICAgICAgcmV0dXJuIFNjcm9sbEZhaWxlZDsKKwogICAgIHJldHVy
biBTY3JvbGxTdGFydGVkOwogfQogCkBAIC00ODAsMTEgKzQ4Miw2IEBAIHZvaWQgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6c2Nyb2xsRW5kKCkKIHsKIH0KIAotYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpoYXZlV2hlZWxFdmVudEhhbmRsZXJzKCkKLXsKLSAgICByZXR1cm4gbV9oYXZlV2hlZWxFdmVu
dEhhbmRsZXJzOwotfQotCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnBpbmNoR2VzdHVyZUJl
Z2luKCkKIHsKICAgICBtX3BpbmNoR2VzdHVyZUFjdGl2ZSA9IHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggNWVlMDM5OWY1YjQ1NzIyNWE5MWRmZjZiNzc3Y2Q1
ZDhhNzZkNmE5Zi4uMjY4YjVkMTI1YmI0M2ViMzRhYWIyNTFjYzlkOGM0MTUwMWZmOGIwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtNTksMTAgKzU5LDkgQEAgcHVi
bGljOgogCiAgICAgLy8gQ0NJbnB1dEhhbmRsZXJDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2
aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKLSAgICB2aXJ0dWFsIENDSW5wdXRIYW5kbGVy
Q2xpZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsQmVnaW4oY29uc3QgSW50UG9pbnQmKTsKKyAgICB2
aXJ0dWFsIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsQmVnaW4oY29u
c3QgSW50UG9pbnQmLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsSW5wdXRUeXBlKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYpOwogICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxFbmQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycygp
OwogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVCZWdpbigpOwogICAgIHZpcnR1YWwgdm9p
ZCBwaW5jaEdlc3R1cmVVcGRhdGUoZmxvYXQsIGNvbnN0IEludFBvaW50Jik7CiAgICAgdmlydHVh
bCB2b2lkIHBpbmNoR2VzdHVyZUVuZCgpOwpAQCAtOTgsNyArOTcsNiBAQCBwdWJsaWM6CiAKICAg
ICBib29sIHZpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7IH0KICAgICB2b2lkIHNl
dFZpc2libGUoYm9vbCk7Ci0gICAgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wg
aGF2ZVdoZWVsRXZlbnRIYW5kbGVycykgeyBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMgPSBoYXZl
V2hlZWxFdmVudEhhbmRsZXJzOyB9CiAKICAgICBpbnQgc291cmNlRnJhbWVOdW1iZXIoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZUZyYW1lTnVtYmVyOyB9CiAgICAgdm9pZCBzZXRTb3VyY2VGcmFt
ZU51bWJlcihpbnQgZnJhbWVOdW1iZXIpIHsgbV9zb3VyY2VGcmFtZU51bWJlciA9IGZyYW1lTnVt
YmVyOyB9CkBAIC0xNDMsNyArMTQxLDYgQEAgcHJpdmF0ZToKICAgICBDQ1NldHRpbmdzIG1fc2V0
dGluZ3M7CiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBib29sIG1fdmlzaWJsZTsK
LSAgICBib29sIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsKIAogICAgIGZsb2F0IG1fcGFnZVNj
YWxlOwogICAgIGZsb2F0IG1fcGFnZVNjYWxlRGVsdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAppbmRleCBjOWJl
MDhhODQ3YTZmYmJiYjc4ZWFjYWZjMmIzYTAyZjM0YjBiN2IyLi5iYjU0MmFmY2FjNTE1NjBlZDk3
ZDk5YzY1NzAwZThmNzljZjQ5YmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKQEAgLTEwMyw2ICsxMDMsNyBA
QCB2b2lkIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0Vmlld3BvcnQoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgdmlld3BvcnRTaXplLAogCiAgICAgbV92aWV3cG9ydFNpemUgPSB2aWV3cG9y
dFNpemU7CiAgICAgc2Nyb2xsTGF5ZXIoKS0+c2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRp
b24pOworICAgIHNjcm9sbExheWVyKCktPnNldFBvc2l0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQo
LXNjcm9sbFBvc2l0aW9uLngoKSwgLXNjcm9sbFBvc2l0aW9uLnkoKSkpOwogICAgIC8vIER1ZSB0
byB0aGUgcG9zc2liaWxpdHkgb2YgcGluY2ggem9vbSwgdGhlIG5vbmNvbXBvc2l0ZWQgbGF5ZXIg
aXMgYWx3YXlzCiAgICAgLy8gYXNzdW1lZCB0byBiZSBzY3JvbGxhYmxlLgogICAgIHNjcm9sbExh
eWVyKCktPnNldFNjcm9sbGFibGUodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKaW5kZXgg
NDBjMTUxZGZkMTljNzhlN2RjZDRhYTljY2U1MDU1MjE3NTkzNDRhMy4uMzk3MzA4YjUyOWNjNDE3
NDcxODdjN2Y4NjdkMTIxYjliMjNmY2FlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcApAQCAt
MTIxLDkgKzEyMSw5IEBAIHZvaWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRs
ZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQpCiAgICAgQVNTRVJUKENDUHJv
eHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCi0gICAgaWYgKGV2
ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbCAmJiAhbV9pbnB1dEhhbmRsZXJD
bGllbnQtPmhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoKSkgeworICAgIGlmIChldmVudC50eXBlID09
IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWwpIHsKICAgICAgICAgY29uc3QgV2ViTW91c2VXaGVl
bEV2ZW50JiB3aGVlbEV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVu
dCo+KCZldmVudCk7Ci0gICAgICAgIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMg
c2Nyb2xsU3RhdHVzID0gbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJlZ2luKEludFBvaW50
KHdoZWVsRXZlbnQueCwgd2hlZWxFdmVudC55KSk7CisgICAgICAgIENDSW5wdXRIYW5kbGVyQ2xp
ZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsU3RhdHVzID0gbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNj
cm9sbEJlZ2luKEludFBvaW50KHdoZWVsRXZlbnQueCwgd2hlZWxFdmVudC55KSwgQ0NJbnB1dEhh
bmRsZXJDbGllbnQ6OldoZWVsKTsKICAgICAgICAgc3dpdGNoIChzY3JvbGxTdGF0dXMpIHsKICAg
ICAgICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZDoKICAgICAgICAg
ICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCeShJbnRTaXplKC13aGVlbEV2ZW50LmRl
bHRhWCwgLXdoZWVsRXZlbnQuZGVsdGFZKSk7CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1
dEV2ZW50JiBldmVudCkKICAgICAgICAgbV9leHBlY3RTY3JvbGxVcGRhdGVFbmQgPSB0cnVlOwog
I2VuZGlmCiAgICAgICAgIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50ID0gKnN0
YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+KCZldmVudCk7Ci0gICAgICAgIENDSW5w
dXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsU3RhdHVzID0gbV9pbnB1dEhhbmRs
ZXJDbGllbnQtPnNjcm9sbEJlZ2luKEludFBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZl
bnQueSkpOworICAgICAgICBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzIHNjcm9s
bFN0YXR1cyA9IG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCZWdpbihJbnRQb2ludChnZXN0
dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6R2VzdHVy
ZSk7CiAgICAgICAgIHN3aXRjaCAoc2Nyb2xsU3RhdHVzKSB7CiAgICAgICAgIGNhc2UgQ0NJbnB1
dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQ6CiAgICAgICAgICAgICBtX3Njcm9sbFN0YXJ0
ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmlu
ZGV4IDgwYTFkOTY4ZjdkYzg2MmRmOWFiMWU0ZmUyNTM3MjYxMDg2YTEzMGQuLjFmNjA5ZmJjNTQ1
MDVmNDliMGZlOTA5OWEyNjUzOTNkNjc5NzYyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTk5LDYgKzk5LDcgQEAKICNpbmNsdWRlICJSZW5kZXJX
aWRnZXQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNjaGVtZVJl
Z2lzdHJ5LmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKQEAgLTk0NywxMyArOTQ4LDggQEAgdm9pZCBXZWJWaWV3SW1wbDo6Y29tcHV0
ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChjb25zdCBXZWJSZWN0JiBoaXRSZWN0LCBBdXRvWm8K
IAogdm9pZCBXZWJWaWV3SW1wbDo6bnVtYmVyT2ZXaGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVu
c2lnbmVkIG51bWJlck9mV2hlZWxIYW5kbGVycykKIHsKLSAgICBtX2hhdmVXaGVlbEV2ZW50SGFu
ZGxlcnMgPSBudW1iZXJPZldoZWVsSGFuZGxlcnMgPiAwOwogICAgIGlmIChtX2NsaWVudCkKICAg
ICAgICAgbV9jbGllbnQtPm51bWJlck9mV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZChudW1iZXJP
ZldoZWVsSGFuZGxlcnMpOwotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBp
ZiAobV9sYXllclRyZWVIb3N0KQotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldEhhdmVXaGVl
bEV2ZW50SGFuZGxlcnMobV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzKTsKLSNlbmRpZgogfQogCiB2
b2lkIFdlYlZpZXdJbXBsOjpudW1iZXJPZlRvdWNoRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWdu
ZWQgbnVtYmVyT2ZUb3VjaEhhbmRsZXJzKQpAQCAtMzE1MCwxMiArMzE0NiwxNCBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUp
CiAgICAgICAgIC8vIGZsaWNrZXJpbmcgd2hlbiBjb21wb3NpdGluZyB0dXJucyBvZmYuCiAgICAg
ICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZp
bmlzaEFsbFJlbmRlcmluZygpOworICAgICAgICBwYWdlKCktPnNldHRpbmdzKCktPnNldFNjcm9s
bGluZ0Nvb3JkaW5hdG9yRW5hYmxlZChmYWxzZSk7CiAgICAgICAgIG1fY2xpZW50LT5kaWREZWFj
dGl2YXRlQ29tcG9zaXRvcigpOwogICAgIH0gZWxzZSBpZiAobV9sYXllclRyZWVIb3N0KSB7CiAg
ICAgICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlID0gdHJ1ZTsKICAgICAgICAg
dXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKTsKIAogICAgICAgICBtX2NsaWVudC0+ZGlkQWN0aXZh
dGVDb21wb3NpdG9yKG1fbGF5ZXJUcmVlSG9zdC0+Y29tcG9zaXRvcklkZW50aWZpZXIoKSk7Cisg
ICAgICAgIHBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0U2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVk
KHRydWUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFRSQUNFX0VWRU5UKCJXZWJWaWV3SW1wbDo6
c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKHRydWUpIiwgdGhpcywgMCk7CiAKQEAg
LTMxNzYsNyArMzE3NCw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBD
Q0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlzLCBjY1NldHRpbmdzKTsKICAgICAgICAgaWYgKG1f
bGF5ZXJUcmVlSG9zdCkgewotICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRIYXZlV2hl
ZWxFdmVudEhhbmRsZXJzKG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk7CiAgICAgICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyhwYWdlU2NhbGVGYWN0
b3IoKSwgbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yLCBtX21heGltdW1QYWdlU2NhbGVGYWN0b3Ip
OwogICAgICAgICAgICAgdXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKTsKICAgICAgICAgICAgIG1f
Y2xpZW50LT5kaWRBY3RpdmF0ZUNvbXBvc2l0b3IobV9sYXllclRyZWVIb3N0LT5jb21wb3NpdG9y
SWRlbnRpZmllcigpKTsKQEAgLTMxODQsMTAgKzMxODEsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICAg
ICAgbV9jb21wb3NpdG9yQ3JlYXRpb25GYWlsZWQgPSBmYWxzZTsKICAgICAgICAgICAgIGlmICht
X3BhZ2VPdmVybGF5cykKICAgICAgICAgICAgICAgICBtX3BhZ2VPdmVybGF5cy0+dXBkYXRlKCk7
CisgICAgICAgICAgICBwYWdlKCktPnNldHRpbmdzKCktPnNldFNjcm9sbGluZ0Nvb3JkaW5hdG9y
RW5hYmxlZCh0cnVlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC5jbGVhcigpOwogICAgICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QuY2xl
YXIoKTsKICAgICAgICAgICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlID0gZmFs
c2U7CisgICAgICAgICAgICBwYWdlKCktPnNldHRpbmdzKCktPnNldFNjcm9sbGluZ0Nvb3JkaW5h
dG9yRW5hYmxlZChmYWxzZSk7CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkRGVhY3RpdmF0ZUNv
bXBvc2l0b3IoKTsKICAgICAgICAgICAgIG1fY29tcG9zaXRvckNyZWF0aW9uRmFpbGVkID0gdHJ1
ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5k
ZXggZThkNTNiYjk0NWU1NzVkYjBhN2I2MjNkNTcyYjdlZTExOGJmZjY5YS4uMzU1OGMxZGY2NDkx
MTA3NTdmZDA3OGE1YjlmMTE0MzM5YWRhMDlmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCkBAIC02OTIsNyArNjkyLDYgQEAgcHJpdmF0ZToKICAgICAvLyBJZiB0
cnVlLCB0aGUgZ3JhcGhpY3MgY29udGV4dCBpcyBiZWluZyByZXN0b3JlZC4KICAgICBib29sIG1f
cmVjcmVhdGluZ0dyYXBoaWNzQ29udGV4dDsKICNlbmRpZgotICAgIGJvb2wgbV9oYXZlV2hlZWxF
dmVudEhhbmRsZXJzOwogICAgIHN0YXRpYyBjb25zdCBXZWJJbnB1dEV2ZW50KiBtX2N1cnJlbnRJ
bnB1dEV2ZW50OwogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5k
ZXggZjU5ODkzZGU5MDY0MThmOGNiZDc1NzQwYWUyOTM5ZTIzY2MyMzUwYS4uYjU2MzdjNDkxYTcw
MzI1NTA2N2QxNmY5Mjk5NTU1OThlNjc1MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTE2Myw3
ICsxNjMsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbFJvb3RDYWxs
c0NvbW1pdEFuZFJlZHJhdykKICAgICByb290LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgw
LCAwKSk7CiAgICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50U2l6ZSgxMDAsIDEwMCkp
OwogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290KTsKLSAgICBFWFBFQ1RfRVEobV9o
b3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoMCwgMCkpLCBDQ0lucHV0SGFuZGxlckNsaWVu
dDo6U2Nyb2xsU3RhcnRlZCk7CisgICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2lu
KEludFBvaW50KDAsIDApLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6V2hlZWwpLCBDQ0lucHV0SGFu
ZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCk7CiAgICAgbV9ob3N0SW1wbC0+c2Nyb2xsQnkoSW50
U2l6ZSgwLCAxMCkpOwogICAgIG1faG9zdEltcGwtPnNjcm9sbEVuZCgpOwogICAgIEVYUEVDVF9U
UlVFKG1fZGlkUmVxdWVzdFJlZHJhdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5j
cHAKaW5kZXggYWQ1ODEwNTI0ZDY0ZWFkZGU1YTFjMzQ1YzU2ODhhYjJhMWEyZmViZC4uNDM5ZGQ1
MmI0OGEwZWZmOWI0M2U0M2Q0NjkxYjlkMzdlMzk3ZjMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGxUZXN0LmNwcApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3KCkgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVh
bCBTY3JvbGxTdGF0dXMgc2Nyb2xsQmVnaW4oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBPVkVS
UklERQorICAgIHZpcnR1YWwgU2Nyb2xsU3RhdHVzIHNjcm9sbEJlZ2luKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElucHV0VHlw
ZSkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Njcm9sbFN0YXR1czsKICAgICB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127883</attachid>
            <date>2012-02-20 17:59:45 -0800</date>
            <delta_ts>2012-02-20 18:12:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78739-20120220175944.patch</filename>
            <type>text/plain</type>
            <size>34072</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTlmMGQ5ODkwYzViMmMy
ZDNmYTQ3NDVmZDYwZGU3MGI1OWYxMDU1ZC4uYjgzNjFhNWFjZDY0ODYwY2M3NmY1MDA1MTgzYjVh
ZTBlMTYwNTZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAyLTIwICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBX
aXJlIHVwIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIHRvIGNocm9taXVtIGNvbXBvc2l0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NzM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAo
T09QUyEpCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAo
U2Nyb2xsaW5nQ29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OnNldENsaWVudCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JDbGllbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudDo6flNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2NoZWR1bGVU
cmVlU3RhdGVDb21taXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdDb29yZGluYXRvcjo6Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQpOgorCiAyMDEyLTAy
LTIwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlZCBM
b2NhbGl6YWJsZS5zdHJpbmdzIGFmdGVyIHIxMDc0NDAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKaW5kZXggYjg0ZDExMjZiZjAwMzcyMWE5NjYxOWEyOTQ0OGMxODhlNGE4ODNmNi4uZjM2OTUx
N2NlMjY5MWFmMWI2NWM0ZDAwYWUxZThmZDNhNDE4OTA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcApAQCAtMTMzOSwxMiArMTMzOSwxMCBAQCB2b2lkIEZyYW1lVmlldzo6YWRkRml4ZWRP
YmplY3QoKQogICAgICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKICAgICAgICAgICAgIHVwZGF0
ZUNhbkJsaXRPblNjcm9sbFJlY3Vyc2l2ZWx5KCk7CiAKLSNpZiBFTkFCTEUoVEhSRUFERURfU0NS
T0xMSU5HKQogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewogICAg
ICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9
IHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5n
Q29vcmRpbmF0b3ItPmZyYW1lVmlld0hhc0ZpeGVkT2JqZWN0c0RpZENoYW5nZSh0aGlzKTsKICAg
ICAgICAgfQotI2VuZGlmCiAgICAgfQogfQogCkBAIC0xMzU0LDEyICsxMzUyLDEwIEBAIHZvaWQg
RnJhbWVWaWV3OjpyZW1vdmVGaXhlZE9iamVjdCgpCiAgICAgLS1tX2ZpeGVkT2JqZWN0Q291bnQ7
CiAKICAgICBpZiAoIW1fZml4ZWRPYmplY3RDb3VudCkgewotI2lmIEVOQUJMRShUSFJFQURFRF9T
Q1JPTExJTkcpCiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7CiAg
ICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
ID0gcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKICAgICAgICAgICAgICAgICBzY3JvbGxp
bmdDb29yZGluYXRvci0+ZnJhbWVWaWV3SGFzRml4ZWRPYmplY3RzRGlkQ2hhbmdlKHRoaXMpOwog
ICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAgICAvLyBGSVhNRTogSW4gYWRkRml4ZWRPYmplY3Qo
KSB3ZSBvbmx5IGNhbGwgdGhpcyBpZiB0aGVyZSdzIGEgcGxhdGZvcm0gd2lkZ2V0LAogICAgICAg
ICAvLyB3aHkgaXNuJ3QgdGhlIHNhbWUgY2hlY2sgYmVpbmcgbWFkZSBoZXJlPwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
CmluZGV4IDg1YjA3ZjE4NzdmNjFkM2U0ZjQwOTM5MGZhMjRjMWYwODliNjBjMWEuLjNhMjI3ZDBl
ZTkwOTBmNDc4ZTQ2MmI2ZTJlOGY2OTMyNTM1MmY5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTk5LDcg
Kzk5LDE1IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvb3JkaW5hdGVzU2Nyb2xsaW5n
Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWV3CiAgICAgaWYgKGZyYW1lVmlldy0+ZnJh
bWUoKSAhPSBtX3BhZ2UtPm1haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBXZSBjdXJyZW50bHkgb25seSBzdXBwb3J0IGNvbXBvc2l0
ZWQgbW9kZS4KKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgUmVuZGVyVmll
dyogcmVuZGVyVmlldyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmNvbnRlbnRSZW5kZXJlcigpOwor
ICAgIGlmICghcmVuZGVyVmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBy
ZW5kZXJWaWV3LT51c2VzQ29tcG9zaXRpbmcoKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGZhbHNl
OwogfQogCiBzdGF0aWMgUmVnaW9uIGNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihGcmFt
ZVZpZXcqIGZyYW1lVmlldykKQEAgLTE5OSwxMCArMjA3LDEwIEBAIHZvaWQgU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcqIGZyYW1lVmll
dykKICAgICBpZiAoZnJhbWVWaWV3LT5mcmFtZSgpICE9IG1fcGFnZS0+bWFpbkZyYW1lKCkpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIHNldFNjcm9sbExheWVyKHNjcm9sbExheWVyRm9yRnJhbWVW
aWV3KGZyYW1lVmlldykpOwogICAgIGZyYW1lVmlld0xheW91dFVwZGF0ZWQoZnJhbWVWaWV3KTsK
ICAgICByZWNvbXB1dGVXaGVlbEV2ZW50SGFuZGxlckNvdW50KCk7CiAgICAgdXBkYXRlU2hvdWxk
VXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpOwotICAgIHNldFNjcm9sbExh
eWVyKHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwogfQogCiBib29sIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJhbWVWaWV3KiBm
cmFtZVZpZXcsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IDI0
ZDQwMTQ5NGYwY2E5MWNmNDI2YjUwMDYyZDgzZGNmYzhkNjJjZjguLjdmZDViMWM3MGJkNDZkNzVl
MTY3Y2NhZjVmNTEyY2E2MWZiNWU0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtNjEsNyArNjEsNyBAQCBjbGFz
cyBQbGF0Zm9ybUdlc3R1cmVFdmVudDsKIGNsYXNzIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNjcm9sbGluZ0Nvb3JkaW5hdG9yPiB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2Nyb2xsaW5nQ29vcmRpbmF0b3I+IGNyZWF0ZShQYWdl
Kik7Ci0gICAgflNjcm9sbGluZ0Nvb3JkaW5hdG9yKCk7CisgICAgdmlydHVhbCB+U2Nyb2xsaW5n
Q29vcmRpbmF0b3IoKTsKIAogICAgIHZvaWQgcGFnZURlc3Ryb3llZCgpOwogCkBAIC0xMTAsOSAr
MTEwLDEwIEBAIHB1YmxpYzoKICAgICAvLyBEaXNwYXRjaGVkIGJ5IHRoZSBzY3JvbGxpbmcgdHJl
ZSB3aGVuZXZlciB0aGUgbWFpbiBmcmFtZSBzY3JvbGwgcG9zaXRpb24gY2hhbmdlcyBhbmQgdGhl
IHNjcm9sbCBsYXllciBwb3NpdGlvbiBuZWVkcyB0byBiZSB1cGRhdGVkIGFzIHdlbGwuCiAgICAg
dm9pZCB1cGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlvbkFuZFNjcm9sbExheWVyUG9zaXRpb24o
Y29uc3QgSW50UG9pbnQmKTsKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBleHBsaWNpdCBT
Y3JvbGxpbmdDb29yZGluYXRvcihQYWdlKik7CiAKK3ByaXZhdGU6CiAgICAgdm9pZCByZWNvbXB1
dGVXaGVlbEV2ZW50SGFuZGxlckNvdW50KCk7CiAgICAgdm9pZCB1cGRhdGVTaG91bGRVcGRhdGVT
Y3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5n
Q29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKaW5kZXggMThhNmQ3YzE1MGYyNjc3MDRmMWMyYmZlZmUz
ZDc0ZTllZmRmYTE1MS4uNWNjOTNkYTI3M2U0NDhhYjk0YjJkY2EyM2VjN2ZlNWU2OTI1ZjY4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xs
aW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKQEAgLTI3LDU1
ICsyNyw3OSBAQAogCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKIAorI2luY2x1
ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJSZWdpb24uaCIKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtIDogcHVibGljIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yIHsKK3B1YmxpYzoKKyAgICBTY3JvbGxpbmdDb29yZGluYXRvckNo
cm9taXVtKFBhZ2UqIHBhZ2UpCisgICAgICAgIDogU2Nyb2xsaW5nQ29vcmRpbmF0b3IocGFnZSkK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+U2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1
bSgpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyBMYXllckNocm9taXVtKiBleHRyYWN0TGF5
ZXIoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0qPihz
Y3JvbGxpbmdDb29yZGluYXRvciktPm1fc2Nyb2xsTGF5ZXIuZ2V0KCk7CisgICAgfQorCisgICAg
c3RhdGljIHZvaWQgc2V0TGF5ZXIoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLCBMYXllckNocm9taXVtKiBsYXllcikKKyAgICB7CisgICAgICAgIHN0YXRpY19jYXN0
PFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0qPihzY3JvbGxpbmdDb29yZGluYXRvciktPm1f
c2Nyb2xsTGF5ZXIgPSBsYXllcjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IG1fc2Nyb2xsTGF5ZXI7Cit9OworCiBQYXNzUmVmUHRyPFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yPiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlKFBhZ2UqIHBhZ2UpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTY3JvbGxpbmdDb29yZGluYXRvcihwYWdlKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtKHBhZ2UpKTsKIH0K
IAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3SG9yaXpvbnRhbFNjcm9sbGJh
ckxheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyosIEdyYXBoaWNzTGF5ZXIqIGhvcml6b250YWxTY3Jv
bGxiYXJMYXllcikKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IQogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdWZXJ0
aWNhbFNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyosIEdyYXBoaWNzTGF5ZXIqIHZl
cnRpY2FsU2Nyb2xsYmFyTGF5ZXIpCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCEKIH0KIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0
U2Nyb2xsTGF5ZXIoR3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXIpCiB7Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCEKKyAgICBTY3JvbGxpbmdDb29y
ZGluYXRvckNocm9taXVtOjpzZXRMYXllcih0aGlzLCBzY3JvbGxMYXllciA/IHNjcm9sbExheWVy
LT5wbGF0Zm9ybUxheWVyKCkgOiAwKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgUmVnaW9uJikKK3ZvaWQgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFJlZ2lvbiYgcmVn
aW9uKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQhCisgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBTY3JvbGxpbmdDb29yZGluYXRvckNocm9t
aXVtOjpleHRyYWN0TGF5ZXIodGhpcyk7CisgICAgbGF5ZXItPnNldE5vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uKHJlZ2lvbik7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNjcm9s
bFBhcmFtZXRlcnMoU2Nyb2xsRWxhc3RpY2l0eSBob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSwg
U2Nyb2xsRWxhc3RpY2l0eSB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFzRW5hYmxlZEhvcml6b250
YWxTY3JvbGxiYXIsIGJvb2wgaGFzRW5hYmxlZFZlcnRpY2FsU2Nyb2xsYmFyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiB2aWV3
cG9ydFJlY3QsIGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSkKIHsKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IQogfQogCi12b2lkIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpzZXRXaGVlbEV2ZW50SGFuZGxlckNvdW50KHVuc2lnbmVkKQordm9pZCBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25lZCB3
aGVlbEV2ZW50SGFuZGxlckNvdW50KQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQhCisgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBTY3JvbGxp
bmdDb29yZGluYXRvckNocm9taXVtOjpleHRyYWN0TGF5ZXIodGhpcyk7CisgICAgbGF5ZXItPnNl
dEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMod2hlZWxFdmVudEhhbmRsZXJDb3VudCA+IDApOwogfQog
Ci12b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBv
c2l0aW9uT25NYWluVGhyZWFkKGJvb2wpCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRT
aG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKGJvb2wgc2hvdWxkKQog
ewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQhCisg
ICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtOjpl
eHRyYWN0TGF5ZXIodGhpcyk7CisgICAgbGF5ZXItPnNldFNob3VsZFNjcm9sbE9uTWFpblRocmVh
ZChzaG91bGQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDRiY2YyOTdmZjky
NDY4Yzk4NGY1YjRmY2MxMmJmZjUzYjI2NmQ2NzQuLjY3ODNhYzlkZWZkNjg3MzNjNTg0OTUyNzhh
OTRiYzE5YjM1NDNjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC0zOSw3ICszOSw2IEBA
CiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VTa2lhLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0
U2tpYS5oIgogI2VuZGlmCi0jaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5
ZXJCYWNraW5nLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgInNraWEvZXh0
L3BsYXRmb3JtX2NhbnZhcy5oIgpAQCAtNjAsNiArNTksOCBAQCBMYXllckNocm9taXVtOjpMYXll
ckNocm9taXVtKCkKICAgICAsIG1fbGF5ZXJJZChzX25leHRMYXllcklkKyspCiAgICAgLCBtX3Bh
cmVudCgwKQogICAgICwgbV9zY3JvbGxhYmxlKGZhbHNlKQorICAgICwgbV9zaG91bGRTY3JvbGxP
bk1haW5UaHJlYWQoZmFsc2UpCisgICAgLCBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMoZmFsc2Up
CiAgICAgLCBtX2FuY2hvclBvaW50KDAuNSwgMC41KQogICAgICwgbV9iYWNrZ3JvdW5kQ29sb3Io
MCwgMCwgMCwgMCkKICAgICAsIG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KGZhbHNlKQpAQCAt
MzY5LDYgKzM3MCwzMCBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNldFNjcm9sbGFibGUoYm9vbCBz
Y3JvbGxhYmxlKQogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKK3ZvaWQgTGF5ZXJDaHJvbWl1
bTo6c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKGJvb2wgc2hvdWxkU2Nyb2xsT25NYWluVGhy
ZWFkKQoreworICAgIGlmIChtX3Nob3VsZFNjcm9sbE9uTWFpblRocmVhZCA9PSBzaG91bGRTY3Jv
bGxPbk1haW5UaHJlYWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3Nob3VsZFNjcm9sbE9uTWFp
blRocmVhZCA9IHNob3VsZFNjcm9sbE9uTWFpblRocmVhZDsKKyAgICBzZXROZWVkc0NvbW1pdCgp
OworfQorCit2b2lkIExheWVyQ2hyb21pdW06OnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9v
bCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKQoreworICAgIGlmIChtX2hhdmVXaGVlbEV2ZW50SGFu
ZGxlcnMgPT0gaGF2ZVdoZWVsRXZlbnRIYW5kbGVycykKKyAgICAgICAgcmV0dXJuOworICAgIG1f
aGF2ZVdoZWVsRXZlbnRIYW5kbGVycyA9IGhhdmVXaGVlbEV2ZW50SGFuZGxlcnM7CisgICAgc2V0
TmVlZHNDb21taXQoKTsKK30KKwordm9pZCBMYXllckNocm9taXVtOjpzZXROb25GYXN0U2Nyb2xs
YWJsZVJlZ2lvbihjb25zdCBSZWdpb24mIHJlZ2lvbikKK3sKKyAgICBpZiAobV9ub25GYXN0U2Ny
b2xsYWJsZVJlZ2lvbiA9PSByZWdpb24pCisgICAgICAgIHJldHVybjsKKyAgICBtX25vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uID0gcmVnaW9uOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKIHZv
aWQgTGF5ZXJDaHJvbWl1bTo6c2V0RG91YmxlU2lkZWQoYm9vbCBkb3VibGVTaWRlZCkKIHsKICAg
ICBpZiAobV9kb3VibGVTaWRlZCA9PSBkb3VibGVTaWRlZCkKQEAgLTQyMyw2ICs0NDgsOSBAQCB2
b2lkIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQog
ICAgIGxheWVyLT5zZXRJc05vbkNvbXBvc2l0ZWRDb250ZW50KG1faXNOb25Db21wb3NpdGVkQ29u
dGVudCk7CiAgICAgbGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMobV9tYXNrc1RvQm91bmRzKTsKICAg
ICBsYXllci0+c2V0U2Nyb2xsYWJsZShtX3Njcm9sbGFibGUpOworICAgIGxheWVyLT5zZXRTaG91
bGRTY3JvbGxPbk1haW5UaHJlYWQobV9zaG91bGRTY3JvbGxPbk1haW5UaHJlYWQpOworICAgIGxh
eWVyLT5zZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk7
CisgICAgbGF5ZXItPnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKG1fbm9uRmFzdFNjcm9sbGFi
bGVSZWdpb24pOwogICAgIGxheWVyLT5zZXROYW1lKG1fbmFtZSk7CiAgICAgbGF5ZXItPnNldE9w
YXF1ZShtX29wYXF1ZSk7CiAgICAgbGF5ZXItPnNldE9wYWNpdHkobV9vcGFjaXR5KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uaAppbmRleCBmZjJlN2QyODYyNjIyZmFkMmMwNjkzOGQ2ZjUyNTY5MTQwZjg4M2Zh
Li42MGI0MjFhNWYwMjcxMmU2ZDAxZTVlOGU3ODBhZjNkMjA1NzFkNmE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJQcm9ncmFtQmluZGluZy5oIgor
I2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgog
I2luY2x1ZGUgIlNoYWRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRy
aXguaCIKQEAgLTU2LDcgKzU3LDYgQEAgY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ0xheWVy
VHJlZUhvc3Q7CiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
M0Q7Ci1jbGFzcyBSZWdpb247CiAKIC8vIEJhc2UgY2xhc3MgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJz
LiBTcGVjaWFsIGxheWVyIHR5cGVzIGFyZSBkZXJpdmVkIGZyb20KIC8vIHRoaXMgY2xhc3MuCkBA
IC0xMzEsNyArMTMxLDkgQEAgcHVibGljOgogICAgIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUG9zaXRpb247IH0KIAogICAgIHZvaWQgc2V0
U2Nyb2xsYWJsZShib29sKTsKLSAgICBib29sIHNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBt
X3Njcm9sbGFibGU7IH0KKyAgICB2b2lkIHNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChib29s
KTsKKyAgICB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCk7CisgICAgdm9pZCBz
ZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBSZWdpb24mKTsKIAogICAgIEludFNpemUg
c2Nyb2xsRGVsdGEoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7IH0KIApAQCAtMjY0LDYgKzI2
Niw5IEBAIHByaXZhdGU6CiAgICAgSW50UmVjdCBtX3Zpc2libGVMYXllclJlY3Q7CiAgICAgSW50
UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKICAgICBib29sIG1fc2Nyb2xsYWJsZTsKKyAgICBib29s
IG1fc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkOworICAgIGJvb2wgbV9oYXZlV2hlZWxFdmVudEhh
bmRsZXJzOworICAgIFJlZ2lvbiBtX25vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOwogICAgIEZsb2F0
UG9pbnQgbV9wb3NpdGlvbjsKICAgICBGbG9hdFBvaW50IG1fYW5jaG9yUG9pbnQ7CiAgICAgQ29s
b3IgbV9iYWNrZ3JvdW5kQ29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaAppbmRleCAwNTdk
NzliMWExMTg4YzliMDE5YjFiMzBmN2RkZjYyM2MxMDExMWZlLi42YzA1NTk5NGM1OGVjYTQxMTMx
OWE5Yzk5ZDE0M2Y5YzE3ZjNlMmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgKQEAgLTQ2
LDEzICs0NiwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3KCkg
PSAwOwogCiAgICAgZW51bSBTY3JvbGxTdGF0dXMgeyBTY3JvbGxGYWlsZWQsIFNjcm9sbFN0YXJ0
ZWQsIFNjcm9sbElnbm9yZWQgfTsKKyAgICBlbnVtIFNjcm9sbElucHV0VHlwZSB7IEdlc3R1cmUs
IFdoZWVsIH07CiAKICAgICAvLyBBdHRlbXB0IHRvIHN0YXJ0IHNjcm9sbGluZyBhIGxheWVyIGF0
IGEgZ2l2ZW4gcG9pbnQgaW4gd2luZG93CiAgICAgLy8gY29vcmRpbmF0ZXMuIFJldHVybnMgU2Ny
b2xsU3RhcnRlZCBpZiB0aGUgbGF5ZXIgYXQgdGhlIGNvb3JkaW5hdGVzIGNhbgogICAgIC8vIGJl
IHNjcm9sbGVkLCBTY3JvbGxGYWlsZWQgaWYgdGhlIHNjcm9sbCBldmVudCBzaG91bGQgaW5zdGVh
ZCBiZQogICAgIC8vIGRlbGVnYXRlZCB0byB0aGUgbWFpbiB0aHJlYWQsIG9yIFNjcm9sbElnbm9y
ZWQgaWYgdGhlcmUgaXMgbm90aGluZyB0bwogICAgIC8vIGJlIHNjcm9sbGVkIGF0IHRoZSBnaXZl
biBjb29yZGluYXRlcy4KLSAgICB2aXJ0dWFsIFNjcm9sbFN0YXR1cyBzY3JvbGxCZWdpbihjb25z
dCBJbnRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFsIFNjcm9sbFN0YXR1cyBzY3JvbGxCZWdpbihj
b25zdCBJbnRQb2ludCYsIFNjcm9sbElucHV0VHlwZSkgPSAwOwogCiAgICAgLy8gU2Nyb2xsIHRo
ZSBsYXllciBzZWxlY3RlZCB3aXRoIHNjcm9sbEJlZ2luKCkuIElmIHRoZXJlIGlzIG5vIHJvb20g
dG8KICAgICAvLyBtb3ZlIHRoZSBsYXllciBpbiB0aGUgcmVxdWVzdGVkIGRpcmVjdGlvbiwgaXRz
IGZpcnN0IGFuY2VzdG9yIGxheWVyIHRoYXQKQEAgLTY0LDcgKzY1LDYgQEAgcHVibGljOgogICAg
IC8vIGNhbGxlZCBpZiBzY3JvbGxCZWdpbigpIHJldHVybmVkIFNjcm9sbFN0YXJ0ZWQuCiAgICAg
dmlydHVhbCB2b2lkIHNjcm9sbEVuZCgpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBoYXZlV2hl
ZWxFdmVudEhhbmRsZXJzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVCZWdp
bigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlVXBkYXRlKGZsb2F0IG1hZ25p
ZnlEZWx0YSwgY29uc3QgSW50UG9pbnQmIGFuY2hvcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBw
aW5jaEdlc3R1cmVFbmQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggYzJiZDM0
YjBiZmI4ZTkwODc2MzQzMzFkMWNlMjYxZjJhZWJiZGQ2Ni4uNDY0NTdkZDQwOTI3MTdkZGViNTYw
ZGY2YmM5N2M0NWZlOWU2ZmQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtNDUsNiAr
NDUsOCBAQCBDQ0xheWVySW1wbDo6Q0NMYXllckltcGwoaW50IGlkKQogICAgICwgbV9hbmNob3JQ
b2ludCgwLjUsIDAuNSkKICAgICAsIG1fYW5jaG9yUG9pbnRaKDApCiAgICAgLCBtX3Njcm9sbGFi
bGUoZmFsc2UpCisgICAgLCBtX3Nob3VsZFNjcm9sbE9uTWFpblRocmVhZChmYWxzZSkKKyAgICAs
IG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhmYWxzZSkKICAgICAsIG1fYmFja2dyb3VuZENvdmVy
c1ZpZXdwb3J0KGZhbHNlKQogICAgICwgbV9kb3VibGVTaWRlZCh0cnVlKQogICAgICwgbV9sYXll
clByb3BlcnR5Q2hhbmdlZChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDllNmM1NTAw
N2VlN2UzOGQ3NWY2MzExYzlhMGY4ZGVkYTc0NzZlYWMuLmMwYjIzYjk1MmEzODQwOWIzMGIxNjc4
OGMxZWE0OTZjZGMyOTg3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiVGV4
dFN0cmVhbS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAi
Y2MvQ0NSZW5kZXJQYXNzLmgiCkBAIC0xODAsNiArMTgxLDE1IEBAIHB1YmxpYzoKICAgICBib29s
IHNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGU7IH0KICAgICB2b2lkIHNl
dFNjcm9sbGFibGUoYm9vbCBzY3JvbGxhYmxlKSB7IG1fc2Nyb2xsYWJsZSA9IHNjcm9sbGFibGU7
IH0KIAorICAgIGJvb2wgc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKCkgY29uc3QgeyByZXR1cm4g
bV9zaG91bGRTY3JvbGxPbk1haW5UaHJlYWQ7IH0KKyAgICB2b2lkIHNldFNob3VsZFNjcm9sbE9u
TWFpblRocmVhZChib29sIHNob3VsZFNjcm9sbE9uTWFpblRocmVhZCkgeyBtX3Nob3VsZFNjcm9s
bE9uTWFpblRocmVhZCA9IHNob3VsZFNjcm9sbE9uTWFpblRocmVhZDsgfQorCisgICAgYm9vbCBo
YXZlV2hlZWxFdmVudEhhbmRsZXJzKCkgY29uc3QgeyByZXR1cm4gbV9oYXZlV2hlZWxFdmVudEhh
bmRsZXJzOyB9CisgICAgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wgaGF2ZVdo
ZWVsRXZlbnRIYW5kbGVycykgeyBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMgPSBoYXZlV2hlZWxF
dmVudEhhbmRsZXJzOyB9CisKKyAgICBjb25zdCBSZWdpb24mIG5vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbjsgfQorICAgIHZv
aWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgUmVnaW9uJiByZWdpb24pIHsgbV9u
b25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiA9IHJlZ2lvbjsgfQorCiAgICAgY29uc3QgSW50UmVjdCYg
dmlzaWJsZUxheWVyUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZUxheWVyUmVjdDsgfQog
ICAgIHZvaWQgc2V0VmlzaWJsZUxheWVyUmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJS
ZWN0KSB7IG1fdmlzaWJsZUxheWVyUmVjdCA9IHZpc2libGVMYXllclJlY3Q7IH0KIApAQCAtMjQy
LDYgKzI1Miw5IEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBtX2NvbnRlbnRCb3VuZHM7CiAgICAg
SW50UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKICAgICBib29sIG1fc2Nyb2xsYWJsZTsKKyAgICBi
b29sIG1fc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkOworICAgIGJvb2wgbV9oYXZlV2hlZWxFdmVu
dEhhbmRsZXJzOworICAgIFJlZ2lvbiBtX25vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOwogICAgIENv
bG9yIG1fYmFja2dyb3VuZENvbG9yOwogICAgIGJvb2wgbV9iYWNrZ3JvdW5kQ292ZXJzVmlld3Bv
cnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGU0NjJlNTMxOGJmYzdm
Mzc5NGRhODY1Y2VmZjMzYmFlYzVkMmU1MDEuLjBhZjkyZWYyZjNhZDM0NDIxMzc4MzI2NDU0ZDBk
ZDJiOWIyN2ZjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtNjgsNyAr
NjgsNiBAQCBDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RD
bGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncwogICAgICwgbV9sYXllclJlbmRlcmVySW5p
dGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX3NldHRpbmdzKHNldHRpbmdzKQogICAgICwgbV92aXNp
YmxlKHRydWUpCi0gICAgLCBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMoZmFsc2UpCiAgICAgLCBt
X3BhZ2VTY2FsZUZhY3RvcigxKQogICAgICwgbV9taW5QYWdlU2NhbGVGYWN0b3IoMSkKICAgICAs
IG1fbWF4UGFnZVNjYWxlRmFjdG9yKDEpCkBAIC0xNzcsNyArMTc2LDYgQEAgdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBo
b3N0SW1wbCkKICAgICAgICAgaG9zdEltcGwtPnNldFJvb3RMYXllcigwKTsKIAogICAgIGhvc3RJ
bXBsLT5zZXRTb3VyY2VGcmFtZU51bWJlcihmcmFtZU51bWJlcigpKTsKLSAgICBob3N0SW1wbC0+
c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMpOwogICAg
IGhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKCkpOwogICAgIGhvc3RJbXBs
LT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMobV9wYWdlU2NhbGVGYWN0b3IsIG1fbWluUGFn
ZVNjYWxlRmFjdG9yLCBtX21heFBhZ2VTY2FsZUZhY3Rvcik7CiAKQEAgLTM0MCwxNCArMzM4LDYg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRpZEJlY29tZUludmlzaWJsZU9uSW1wbFRocmVhZChD
Q0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW0KICAgICAgICAgaG9zdEltcGwtPnNldFJvb3RMYXll
cigwKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldEhhdmVXaGVlbEV2ZW50SGFuZGxl
cnMoYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKQotewotICAgIGlmIChtX2hhdmVXaGVlbEV2
ZW50SGFuZGxlcnMgPT0gaGF2ZVdoZWVsRXZlbnRIYW5kbGVycykKLSAgICAgICAgcmV0dXJuOwot
ICAgIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyA9IGhhdmVXaGVlbEV2ZW50SGFuZGxlcnM7Ci0g
ICAgbV9wcm94eS0+c2V0TmVlZHNDb21taXQoKTsKLX0KLQogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBi
b29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKIHsKICAgICBt
X3Byb3h5LT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9y
LCBzY2FsZSwgZHVyYXRpb25TZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBm
NWUxMTM0YzgxYjQzZTIxODg2YTVkOTM1MzBlZTg4ZjE5YTQwMzI1Li42ZjNkMmQ0OGM2ZWMyNjFl
Nzk3YjUyODFiY2Y0ODQ1NTAwN2UxMGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApA
QCAtMTgwLDggKzE4MCw2IEBAIHB1YmxpYzoKICAgICBib29sIHZpc2libGUoKSBjb25zdCB7IHJl
dHVybiBtX3Zpc2libGU7IH0KICAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAKLSAgICB2b2lk
IHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCk7Ci0KICAgICAvLyBSZXR1cm5zIGZhbHNl
IGlmIHdlIHNob3VsZCBhYm9ydCB0aGlzIGZyYW1lIGR1ZSB0byBpbml0aWFsaXphdGlvbiBmYWls
dXJlLgogICAgIGJvb2wgdXBkYXRlTGF5ZXJzKCk7CiAKQEAgLTIzNSw3ICsyMzMsNiBAQCBwcml2
YXRlOgogCiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBib29sIG1fdmlzaWJsZTsK
LSAgICBib29sIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsKICAgICB0eXBlZGVmIEhhc2hNYXA8
R3JhcGhpY3NDb250ZXh0M0QqLCBSZWZQdHI8UmF0ZUxpbWl0ZXI+ID4gUmF0ZUxpbWl0ZXJNYXA7
CiAgICAgUmF0ZUxpbWl0ZXJNYXAgbV9yYXRlTGltaXRlcnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggMDU0YmViMzJlZTUzNTljYmM1YmE1NGY5MWI2YTk2
YzE1NDBmZjViNS4uZmYxZmMyMmMyNTJhYzMwYmNlM2M3ZGY2NTNhYzY5N2VjYjFjNjY0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTUyLDcgKzUyLDYgQEAg
Q0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ1NldHRpbmdz
JiBzZXR0aW5ncywgQ0NMYXllclRyZWUKICAgICAsIG1fZnJhbWVOdW1iZXIoMCkKICAgICAsIG1f
c2V0dGluZ3Moc2V0dGluZ3MpCiAgICAgLCBtX3Zpc2libGUodHJ1ZSkKLSAgICAsIG1faGF2ZVdo
ZWVsRXZlbnRIYW5kbGVycyhmYWxzZSkKICAgICAsIG1fcGFnZVNjYWxlKDEpCiAgICAgLCBtX3Bh
Z2VTY2FsZURlbHRhKDEpCiAgICAgLCBtX3NlbnRQYWdlU2NhbGVEZWx0YSgxKQpAQCAtNDY2LDEx
ICs0NjUsMjggQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXROZWVkc1JlZHJhdygpCiAg
ICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCk7CiB9CiAKLUNDSW5wdXRI
YW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsQmVn
aW4oY29uc3QgSW50UG9pbnQmKQorQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpzY3JvbGxCZWdpbihjb25zdCBJbnRQb2ludCYgcG9pbnQsIEND
SW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJbnB1dFR5cGUgdHlwZSkKIHsKICAgICAvLyBUT0RP
OiBDaGVjayBmb3Igc2Nyb2xsYWJsZSBzdWJsYXllcnMuCi0gICAgaWYgKCFtX3Njcm9sbExheWVy
SW1wbCB8fCAhbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbGFibGUoKSkKKyAgICBpZiAoIW1fc2Ny
b2xsTGF5ZXJJbXBsIHx8ICFtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsYWJsZSgpKSB7CisgICAg
ICAgIFRSQUNFX0VWRU5UKCJzY3JvbGxCZWdpbiBJZ25vcmVkIG5vIHNjcm9sbGFibGUiLCB0aGlz
LCAwKTsKICAgICAgICAgcmV0dXJuIFNjcm9sbElnbm9yZWQ7CisgICAgfQorCisgICAgaWYgKG1f
c2Nyb2xsTGF5ZXJJbXBsLT5zaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoKSkgeworICAgICAgICBU
UkFDRV9FVkVOVCgic2Nyb2xsQmVnaW4gRmFpbGVkIHNob3VsZFNjcm9sbE9uTWFpblRocmVhZCIs
IHRoaXMsIDApOworICAgICAgICByZXR1cm4gU2Nyb2xsRmFpbGVkOworICAgIH0KKworICAgIGlm
IChtX3Njcm9sbExheWVySW1wbC0+bm9uRmFzdFNjcm9sbGFibGVSZWdpb24oKS5jb250YWlucyhw
b2ludCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQoInNjcm9sbEJlZ2luIEZhaWxlZCBub25GYXN0
U2Nyb2xsYWJsZVJlZ2lvbiIsIHRoaXMsIDApOworICAgICAgICByZXR1cm4gU2Nyb2xsRmFpbGVk
OworICAgIH0KKworICAgIGlmICh0eXBlID09IENDSW5wdXRIYW5kbGVyQ2xpZW50OjpXaGVlbCAm
JiBtX3Njcm9sbExheWVySW1wbC0+aGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpKSB7CisgICAgICAg
IFRSQUNFX0VWRU5UKCJzY3JvbGxCZWdpbiBGYWlsZWQgd2hlZWxFdmVudEhhbmRsZXJzIiwgdGhp
cywgMCk7CisgICAgICAgIHJldHVybiBTY3JvbGxGYWlsZWQ7CisgICAgfQogCiAgICAgcmV0dXJu
IFNjcm9sbFN0YXJ0ZWQ7CiB9CkBAIC00OTAsMTEgKzUwNiw2IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6c2Nyb2xsRW5kKCkKIHsKIH0KIAotYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpo
YXZlV2hlZWxFdmVudEhhbmRsZXJzKCkKLXsKLSAgICByZXR1cm4gbV9oYXZlV2hlZWxFdmVudEhh
bmRsZXJzOwotfQotCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnBpbmNoR2VzdHVyZUJlZ2lu
KCkKIHsKICAgICBtX3BpbmNoR2VzdHVyZUFjdGl2ZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggODk0OTE1NDJlNDMzZmFhZmVmMjY2YTRlZjFhODlkMDgw
NjBiOWFmZC4uZTY3OTEyNzAwOWU4NDY2ZjZmMWUxYTllOTEyYTJhZDlmOTg0NTU2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtNTksMTAgKzU5LDkgQEAgcHVibGlj
OgogCiAgICAgLy8gQ0NJbnB1dEhhbmRsZXJDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0
dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKLSAgICB2aXJ0dWFsIENDSW5wdXRIYW5kbGVyQ2xp
ZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsQmVnaW4oY29uc3QgSW50UG9pbnQmKTsKKyAgICB2aXJ0
dWFsIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsQmVnaW4oY29uc3Qg
SW50UG9pbnQmLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsSW5wdXRUeXBlKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGxFbmQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpOwog
ICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVCZWdpbigpOwogICAgIHZpcnR1YWwgdm9pZCBw
aW5jaEdlc3R1cmVVcGRhdGUoZmxvYXQsIGNvbnN0IEludFBvaW50Jik7CiAgICAgdmlydHVhbCB2
b2lkIHBpbmNoR2VzdHVyZUVuZCgpOwpAQCAtOTgsNyArOTcsNiBAQCBwdWJsaWM6CiAKICAgICBi
b29sIHZpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7IH0KICAgICB2b2lkIHNldFZp
c2libGUoYm9vbCk7Ci0gICAgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wgaGF2
ZVdoZWVsRXZlbnRIYW5kbGVycykgeyBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMgPSBoYXZlV2hl
ZWxFdmVudEhhbmRsZXJzOyB9CiAKICAgICBpbnQgc291cmNlRnJhbWVOdW1iZXIoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZUZyYW1lTnVtYmVyOyB9CiAgICAgdm9pZCBzZXRTb3VyY2VGcmFtZU51
bWJlcihpbnQgZnJhbWVOdW1iZXIpIHsgbV9zb3VyY2VGcmFtZU51bWJlciA9IGZyYW1lTnVtYmVy
OyB9CkBAIC0xNDMsNyArMTQxLDYgQEAgcHJpdmF0ZToKICAgICBDQ1NldHRpbmdzIG1fc2V0dGlu
Z3M7CiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBib29sIG1fdmlzaWJsZTsKLSAg
ICBib29sIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsKIAogICAgIGZsb2F0IG1fcGFnZVNjYWxl
OwogICAgIGZsb2F0IG1fcGFnZVNjYWxlRGVsdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAppbmRleCBjOWJlMDhh
ODQ3YTZmYmJiYjc4ZWFjYWZjMmIzYTAyZjM0YjBiN2IyLi5iYjU0MmFmY2FjNTE1NjBlZDk3ZDk5
YzY1NzAwZThmNzljZjQ5YmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKQEAgLTEwMyw2ICsxMDMsNyBAQCB2
b2lkIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0Vmlld3BvcnQoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgdmlld3BvcnRTaXplLAogCiAgICAgbV92aWV3cG9ydFNpemUgPSB2aWV3cG9ydFNp
emU7CiAgICAgc2Nyb2xsTGF5ZXIoKS0+c2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24p
OworICAgIHNjcm9sbExheWVyKCktPnNldFBvc2l0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQoLXNj
cm9sbFBvc2l0aW9uLngoKSwgLXNjcm9sbFBvc2l0aW9uLnkoKSkpOwogICAgIC8vIER1ZSB0byB0
aGUgcG9zc2liaWxpdHkgb2YgcGluY2ggem9vbSwgdGhlIG5vbmNvbXBvc2l0ZWQgbGF5ZXIgaXMg
YWx3YXlzCiAgICAgLy8gYXNzdW1lZCB0byBiZSBzY3JvbGxhYmxlLgogICAgIHNjcm9sbExheWVy
KCktPnNldFNjcm9sbGFibGUodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKaW5kZXggNDBj
MTUxZGZkMTljNzhlN2RjZDRhYTljY2U1MDU1MjE3NTkzNDRhMy4uMzk3MzA4YjUyOWNjNDE3NDcx
ODdjN2Y4NjdkMTIxYjliMjNmY2FlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcApAQCAtMTIx
LDkgKzEyMSw5IEBAIHZvaWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUlu
cHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQpCiAgICAgQVNTRVJUKENDUHJveHk6
OmlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCi0gICAgaWYgKGV2ZW50
LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbCAmJiAhbV9pbnB1dEhhbmRsZXJDbGll
bnQtPmhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoKSkgeworICAgIGlmIChldmVudC50eXBlID09IFdl
YklucHV0RXZlbnQ6Ok1vdXNlV2hlZWwpIHsKICAgICAgICAgY29uc3QgV2ViTW91c2VXaGVlbEV2
ZW50JiB3aGVlbEV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCo+
KCZldmVudCk7Ci0gICAgICAgIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgc2Ny
b2xsU3RhdHVzID0gbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJlZ2luKEludFBvaW50KHdo
ZWVsRXZlbnQueCwgd2hlZWxFdmVudC55KSk7CisgICAgICAgIENDSW5wdXRIYW5kbGVyQ2xpZW50
OjpTY3JvbGxTdGF0dXMgc2Nyb2xsU3RhdHVzID0gbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9s
bEJlZ2luKEludFBvaW50KHdoZWVsRXZlbnQueCwgd2hlZWxFdmVudC55KSwgQ0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OldoZWVsKTsKICAgICAgICAgc3dpdGNoIChzY3JvbGxTdGF0dXMpIHsKICAgICAg
ICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZDoKICAgICAgICAgICAg
IG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCeShJbnRTaXplKC13aGVlbEV2ZW50LmRlbHRh
WCwgLXdoZWVsRXZlbnQuZGVsdGFZKSk7CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2
ZW50JiBldmVudCkKICAgICAgICAgbV9leHBlY3RTY3JvbGxVcGRhdGVFbmQgPSB0cnVlOwogI2Vu
ZGlmCiAgICAgICAgIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50ID0gKnN0YXRp
Y19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+KCZldmVudCk7Ci0gICAgICAgIENDSW5wdXRI
YW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsU3RhdHVzID0gbV9pbnB1dEhhbmRsZXJD
bGllbnQtPnNjcm9sbEJlZ2luKEludFBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZlbnQu
eSkpOworICAgICAgICBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzIHNjcm9sbFN0
YXR1cyA9IG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCZWdpbihJbnRQb2ludChnZXN0dXJl
RXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6R2VzdHVyZSk7
CiAgICAgICAgIHN3aXRjaCAoc2Nyb2xsU3RhdHVzKSB7CiAgICAgICAgIGNhc2UgQ0NJbnB1dEhh
bmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQ6CiAgICAgICAgICAgICBtX3Njcm9sbFN0YXJ0ZWQg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGlu
Z3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5j
cHAKaW5kZXggOTBiZDAwY2MxOTgxMzQ4MDYzOWFkZmY1ZGU0OTExYmNkNTAyYWU4OC4uZmMxYTEy
YjUzZjcxYmYzZWJhMjExMjYxM2UzOGU4OWY0ZmE0ZDYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC0zMzEsNiArMzMxLDcgQEAgdm9p
ZCBXZWJTZXR0aW5nc0ltcGw6OnNldEVkaXRpbmdCZWhhdmlvcihFZGl0aW5nQmVoYXZpb3IgYmVo
YXZpb3IpCiB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Vu
YWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIG1fc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkKGVuYWJsZWQpOworICAgIG1fc2V0dGluZ3MtPnNldFNjcm9sbGluZ0Nv
b3JkaW5hdG9yRW5hYmxlZCh0cnVlKTsKIH0KIAogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEZv
cmNlQ29tcG9zaXRpbmdNb2RlKGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA4MGExZDk2OGY3ZGM4NjJkZjlhYjFlNGZlMjUzNzI2
MTA4NmExMzBkLi43ODExNzA0NjU4ZjlkZGE0OTNhNzNmMGJiNDJiNzA1NzE5ZmFjM2U5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC05OSw2ICs5OSw3
IEBACiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUu
aCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0
eVBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC05NDcsMTMgKzk0OCw4IEBAIHZv
aWQgV2ViVmlld0ltcGw6OmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoY29uc3QgV2Vi
UmVjdCYgaGl0UmVjdCwgQXV0b1pvCiAKIHZvaWQgV2ViVmlld0ltcGw6Om51bWJlck9mV2hlZWxF
dmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCBudW1iZXJPZldoZWVsSGFuZGxlcnMpCiB7Ci0g
ICAgbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzID0gbnVtYmVyT2ZXaGVlbEhhbmRsZXJzID4gMDsK
ICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5udW1iZXJPZldoZWVsRXZlbnRI
YW5kbGVyc0NoYW5nZWQobnVtYmVyT2ZXaGVlbEhhbmRsZXJzKTsKLSNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5zZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKG1faGF2ZVdoZWVsRXZlbnRIYW5k
bGVycyk7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6bnVtYmVyT2ZUb3VjaEV2ZW50
SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkIG51bWJlck9mVG91Y2hIYW5kbGVycykKQEAgLTMxNzYs
NyArMzE3Miw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0FjdGl2ZShib29sIGFjdGl2ZSkKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBDQ0xheWVy
VHJlZUhvc3Q6OmNyZWF0ZSh0aGlzLCBjY1NldHRpbmdzKTsKICAgICAgICAgaWYgKG1fbGF5ZXJU
cmVlSG9zdCkgewotICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRIYXZlV2hlZWxFdmVu
dEhhbmRsZXJzKG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk7CiAgICAgICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyhwYWdlU2NhbGVGYWN0b3IoKSwg
bV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yLCBtX21heGltdW1QYWdlU2NhbGVGYWN0b3IpOwogICAg
ICAgICAgICAgdXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKTsKICAgICAgICAgICAgIG1fY2xpZW50
LT5kaWRBY3RpdmF0ZUNvbXBvc2l0b3IobV9sYXllclRyZWVIb3N0LT5jb21wb3NpdG9ySWRlbnRp
ZmllcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IGU4
ZDUzYmI5NDVlNTc1ZGIwYTdiNjIzZDU3MmI3ZWUxMThiZmY2OWEuLjM1NThjMWRmNjQ5MTEwNzU3
ZmQwNzhhNWI5ZjExNDMzOWFkYTA5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaApAQCAtNjkyLDcgKzY5Miw2IEBAIHByaXZhdGU6CiAgICAgLy8gSWYgdHJ1ZSwg
dGhlIGdyYXBoaWNzIGNvbnRleHQgaXMgYmVpbmcgcmVzdG9yZWQuCiAgICAgYm9vbCBtX3JlY3Jl
YXRpbmdHcmFwaGljc0NvbnRleHQ7CiAjZW5kaWYKLSAgICBib29sIG1faGF2ZVdoZWVsRXZlbnRI
YW5kbGVyczsKICAgICBzdGF0aWMgY29uc3QgV2ViSW5wdXRFdmVudCogbV9jdXJyZW50SW5wdXRF
dmVudDsKIAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDgy
MDczM2I0NzIwOGM2ZWNmZjE3Yzg4YTI1MmIzZGQ3OGQ2ZmRkZDEuLjgwYzhlNjM5YTJkNTgzODQ5
ZTdhZmJjY2FlYzZjZTRmNDM3NWFkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0xNjMsMTMgKzE2
Myw2MiBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbFJvb3RDYWxsc0Nv
bW1pdEFuZFJlZHJhdykKICAgICByb290LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgwLCAw
KSk7CiAgICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50U2l6ZSgxMDAsIDEwMCkpOwog
ICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290KTsKLSAgICBFWFBFQ1RfRVEobV9ob3N0
SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoMCwgMCkpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6
U2Nyb2xsU3RhcnRlZCk7CisgICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKElu
dFBvaW50KDAsIDApLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6V2hlZWwpLCBDQ0lucHV0SGFuZGxl
ckNsaWVudDo6U2Nyb2xsU3RhcnRlZCk7CiAgICAgbV9ob3N0SW1wbC0+c2Nyb2xsQnkoSW50U2l6
ZSgwLCAxMCkpOwogICAgIG1faG9zdEltcGwtPnNjcm9sbEVuZCgpOwogICAgIEVYUEVDVF9UUlVF
KG1fZGlkUmVxdWVzdFJlZHJhdyk7CiAgICAgRVhQRUNUX1RSVUUobV9kaWRSZXF1ZXN0Q29tbWl0
KTsKIH0KIAorVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB3aGVlbEV2ZW50SGFuZGxl
cnMpCit7CisgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0
ZSgwKTsKKyAgICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUpOworICAgIHJvb3QtPnNldFNjcm9s
bFBvc2l0aW9uKEludFBvaW50KDAsIDApKTsKKyAgICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlv
bihJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3Qp
OworICAgIHJvb3QtPnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnModHJ1ZSk7CisgICAgLy8gV2l0
aCByZWdpc3RlcmVkIGV2ZW50IGhhbmRsZXJzLCB3aGVlbCBzY3JvbGxzIGhhdmUgdG8gZ28gdG8g
dGhlIG1haW4gdGhyZWFkLgorICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3JvbGxCZWdpbihJ
bnRQb2ludCgwLCAwKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCk7CisKKyAgICAvLyBCdXQgZ2VzdHVyZSBzY3JvbGxzIGNh
biBzdGlsbCBiZSBoYW5kbGVkLgorICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3JvbGxCZWdp
bihJbnRQb2ludCgwLCAwKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6Okdlc3R1cmUpLCBDQ0lucHV0
SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCk7Cit9CisKK1RFU1RfRihDQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdCwgc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKQoreworICAgIFJlZlB0cjxDQ0xh
eWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgcm9vdC0+c2V0U2Ny
b2xsYWJsZSh0cnVlKTsKKyAgICByb290LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgwLCAw
KSk7CisgICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50U2l6ZSgxMDAsIDEwMCkpOwor
ICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290KTsKKyAgICByb290LT5zZXRTaG91bGRT
Y3JvbGxPbk1haW5UaHJlYWQodHJ1ZSk7CisgICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9s
bEJlZ2luKEludFBvaW50KDAsIDApLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6V2hlZWwpLCBDQ0lu
cHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKTsKKyAgICBFWFBFQ1RfRVEobV9ob3N0SW1w
bC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoMCwgMCksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpHZXN0
dXJlKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCk7Cit9CisKK1RFU1RfRihD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgbm9uRmFzdFNjcm9sbGFibGVSZWdpb24pCit7CisgICAg
UmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKKyAgICBy
b290LT5zZXRTY3JvbGxhYmxlKHRydWUpOworICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0aW9uKElu
dFBvaW50KDAsIDApKTsKKyAgICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEw
MCwgMTAwKSk7CisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOworICAgIHJvb3Qt
PnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CisgICAg
Ly8gQWxsIHNjcm9sbCB0eXBlcyBpbnNpZGUgdGhlIG5vbi1mYXN0IHNjcm9sbGFibGUgcmVnaW9u
IHNob3VsZCBmYWlsLgorICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3JvbGxCZWdpbihJbnRQ
b2ludCgyNSwgMjUpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6V2hlZWwpLCBDQ0lucHV0SGFuZGxl
ckNsaWVudDo6U2Nyb2xsRmFpbGVkKTsKKyAgICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xs
QmVnaW4oSW50UG9pbnQoMjUsIDI1KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6Okdlc3R1cmUpLCBD
Q0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKTsKKworICAgIC8vIEFsbCBzY3JvbGwg
dHlwZXMgb3V0c2lkZSB0aGlzIHJlZ2lvbiBzaG91bGQgc3VjY2VlZC4KKyAgICBFWFBFQ1RfRVEo
bV9ob3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoNzUsIDc1KSwgQ0NJbnB1dEhhbmRsZXJD
bGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpOworICAg
IG1faG9zdEltcGwtPnNjcm9sbEJ5KEludFNpemUoMCwgMTApKTsKKyAgICBtX2hvc3RJbXBsLT5z
Y3JvbGxFbmQoKTsKKyAgICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9p
bnQoNzUsIDc1KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6Okdlc3R1cmUpLCBDQ0lucHV0SGFuZGxl
ckNsaWVudDo6U2Nyb2xsU3RhcnRlZCk7CisgICAgbV9ob3N0SW1wbC0+c2Nyb2xsQnkoSW50U2l6
ZSgwLCAxMCkpOworICAgIG1faG9zdEltcGwtPnNjcm9sbEVuZCgpOworfQorCisKIFRFU1RfRihD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGluY2hHZXN0dXJlKQogewogICAgIHNldHVwU2Nyb2xs
QW5kQ29udGVudHNMYXllcnMoSW50U2l6ZSgxMDAsIDEwMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBkNTU1YTZiM2Q1
ZmNjMGQ3NzE1ZmZkYTJjYmY5MWU2MWY4YmJiODNiLi5mMGUxZTVjNjZlZTRjYThjY2IzODYwNDZh
YmU0NGJkMGY5Yjc5NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0xheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0xheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNTE1LDYgKzUxNSw5IEBAIFRFU1RfRihMYXllckNo
cm9taXVtVGVzdCwgY2hlY2tQcm9wZXJ0eUNoYW5nZUNhdXNlc0NvcnJlY3RCZWhhdmlvcikKICAg
ICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5
ZXItPnNldFJlcGxpY2FMYXllcihkdW1teUxheWVyLmdldCgpKSk7CiAgICAgRVhFQ1VURV9BTkRf
VkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRTdWJsYXll
clRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgwLCAwLCAwLCAwLCAwLCAwKSkpOwogICAg
IEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXll
ci0+c2V0U2Nyb2xsYWJsZSh0cnVlKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVE
U19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRTaG91bGRTY3JvbGxPbk1haW5UaHJl
YWQodHJ1ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFW
SU9SKDEsIHRlc3RMYXllci0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oUmVnaW9uKEludFJl
Y3QoMSwgMSwgMiwgMikpKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01N
SVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKHRydWUp
KTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0
ZXN0TGF5ZXItPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KDEwLCAxMCkpKTsKICAgICBFWEVD
VVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNl
dFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgwLCAwLCAwLCAwLCAwLCAwKSkpOwogICAg
IEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXll
ci0+c2V0RG91YmxlU2lkZWQoZmFsc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0
LmNwcAppbmRleCBhZDU4MTA1MjRkNjRlYWRkZTVhMWMzNDVjNTY4OGFiMmExYTJmZWJkLi40NTky
NTVlMDJhMjgzMzE5ZGZiNWU5MjlhOGQ4ZjVkOTkzNWE0NDRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbFRlc3QuY3BwCkBAIC02NywxNCArNjcsMTMgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhdygpIE9WRVJSSURFIHsgfQotICAgIHZp
cnR1YWwgU2Nyb2xsU3RhdHVzIHNjcm9sbEJlZ2luKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikg
T1ZFUlJJREUKKyAgICB2aXJ0dWFsIFNjcm9sbFN0YXR1cyBzY3JvbGxCZWdpbihjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJbnB1
dFR5cGUpIE9WRVJSSURFCiAgICAgewogICAgICAgICByZXR1cm4gbV9zY3JvbGxTdGF0dXM7CiAg
ICAgfQogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikg
T1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbEVuZCgpIE9WRVJSSURFIHsgfQog
Ci0gICAgdmlydHVhbCBib29sIGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoKSBPVkVSUklERSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVCZWdpbigpIE9WRVJS
SURFCiAgICAgewogICAgICAgICBtX3BpbmNoU3RhcnRlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127885</attachid>
            <date>2012-02-20 18:12:56 -0800</date>
            <delta_ts>2012-02-20 18:25:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78739-20120220181254.patch</filename>
            <type>text/plain</type>
            <size>34075</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTlmMGQ5ODkwYzViMmMy
ZDNmYTQ3NDVmZDYwZGU3MGI1OWYxMDU1ZC4uYjgzNjFhNWFjZDY0ODYwY2M3NmY1MDA1MTgzYjVh
ZTBlMTYwNTZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAyLTIwICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBX
aXJlIHVwIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIHRvIGNocm9taXVtIGNvbXBvc2l0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NzM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAo
T09QUyEpCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAo
U2Nyb2xsaW5nQ29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OnNldENsaWVudCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JDbGllbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudDo6flNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2NoZWR1bGVU
cmVlU3RhdGVDb21taXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdDb29yZGluYXRvcjo6Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQpOgorCiAyMDEyLTAy
LTIwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlZCBM
b2NhbGl6YWJsZS5zdHJpbmdzIGFmdGVyIHIxMDc0NDAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKaW5kZXggYjg0ZDExMjZiZjAwMzcyMWE5NjYxOWEyOTQ0OGMxODhlNGE4ODNmNi4uZjM2OTUx
N2NlMjY5MWFmMWI2NWM0ZDAwYWUxZThmZDNhNDE4OTA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcApAQCAtMTMzOSwxMiArMTMzOSwxMCBAQCB2b2lkIEZyYW1lVmlldzo6YWRkRml4ZWRP
YmplY3QoKQogICAgICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKICAgICAgICAgICAgIHVwZGF0
ZUNhbkJsaXRPblNjcm9sbFJlY3Vyc2l2ZWx5KCk7CiAKLSNpZiBFTkFCTEUoVEhSRUFERURfU0NS
T0xMSU5HKQogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewogICAg
ICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9
IHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5n
Q29vcmRpbmF0b3ItPmZyYW1lVmlld0hhc0ZpeGVkT2JqZWN0c0RpZENoYW5nZSh0aGlzKTsKICAg
ICAgICAgfQotI2VuZGlmCiAgICAgfQogfQogCkBAIC0xMzU0LDEyICsxMzUyLDEwIEBAIHZvaWQg
RnJhbWVWaWV3OjpyZW1vdmVGaXhlZE9iamVjdCgpCiAgICAgLS1tX2ZpeGVkT2JqZWN0Q291bnQ7
CiAKICAgICBpZiAoIW1fZml4ZWRPYmplY3RDb3VudCkgewotI2lmIEVOQUJMRShUSFJFQURFRF9T
Q1JPTExJTkcpCiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7CiAg
ICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
ID0gcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKICAgICAgICAgICAgICAgICBzY3JvbGxp
bmdDb29yZGluYXRvci0+ZnJhbWVWaWV3SGFzRml4ZWRPYmplY3RzRGlkQ2hhbmdlKHRoaXMpOwog
ICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAgICAvLyBGSVhNRTogSW4gYWRkRml4ZWRPYmplY3Qo
KSB3ZSBvbmx5IGNhbGwgdGhpcyBpZiB0aGVyZSdzIGEgcGxhdGZvcm0gd2lkZ2V0LAogICAgICAg
ICAvLyB3aHkgaXNuJ3QgdGhlIHNhbWUgY2hlY2sgYmVpbmcgbWFkZSBoZXJlPwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
CmluZGV4IDg1YjA3ZjE4NzdmNjFkM2U0ZjQwOTM5MGZhMjRjMWYwODliNjBjMWEuLjNhMjI3ZDBl
ZTkwOTBmNDc4ZTQ2MmI2ZTJlOGY2OTMyNTM1MmY5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTk5LDcg
Kzk5LDE1IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvb3JkaW5hdGVzU2Nyb2xsaW5n
Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWV3CiAgICAgaWYgKGZyYW1lVmlldy0+ZnJh
bWUoKSAhPSBtX3BhZ2UtPm1haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBXZSBjdXJyZW50bHkgb25seSBzdXBwb3J0IGNvbXBvc2l0
ZWQgbW9kZS4KKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgUmVuZGVyVmll
dyogcmVuZGVyVmlldyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmNvbnRlbnRSZW5kZXJlcigpOwor
ICAgIGlmICghcmVuZGVyVmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBy
ZW5kZXJWaWV3LT51c2VzQ29tcG9zaXRpbmcoKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGZhbHNl
OwogfQogCiBzdGF0aWMgUmVnaW9uIGNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihGcmFt
ZVZpZXcqIGZyYW1lVmlldykKQEAgLTE5OSwxMCArMjA3LDEwIEBAIHZvaWQgU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcqIGZyYW1lVmll
dykKICAgICBpZiAoZnJhbWVWaWV3LT5mcmFtZSgpICE9IG1fcGFnZS0+bWFpbkZyYW1lKCkpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIHNldFNjcm9sbExheWVyKHNjcm9sbExheWVyRm9yRnJhbWVW
aWV3KGZyYW1lVmlldykpOwogICAgIGZyYW1lVmlld0xheW91dFVwZGF0ZWQoZnJhbWVWaWV3KTsK
ICAgICByZWNvbXB1dGVXaGVlbEV2ZW50SGFuZGxlckNvdW50KCk7CiAgICAgdXBkYXRlU2hvdWxk
VXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpOwotICAgIHNldFNjcm9sbExh
eWVyKHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwogfQogCiBib29sIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJhbWVWaWV3KiBm
cmFtZVZpZXcsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IDI0
ZDQwMTQ5NGYwY2E5MWNmNDI2YjUwMDYyZDgzZGNmYzhkNjJjZjguLjdmZDViMWM3MGJkNDZkNzVl
MTY3Y2NhZjVmNTEyY2E2MWZiNWU0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtNjEsNyArNjEsNyBAQCBjbGFz
cyBQbGF0Zm9ybUdlc3R1cmVFdmVudDsKIGNsYXNzIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNjcm9sbGluZ0Nvb3JkaW5hdG9yPiB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2Nyb2xsaW5nQ29vcmRpbmF0b3I+IGNyZWF0ZShQYWdl
Kik7Ci0gICAgflNjcm9sbGluZ0Nvb3JkaW5hdG9yKCk7CisgICAgdmlydHVhbCB+U2Nyb2xsaW5n
Q29vcmRpbmF0b3IoKTsKIAogICAgIHZvaWQgcGFnZURlc3Ryb3llZCgpOwogCkBAIC0xMTAsOSAr
MTEwLDEwIEBAIHB1YmxpYzoKICAgICAvLyBEaXNwYXRjaGVkIGJ5IHRoZSBzY3JvbGxpbmcgdHJl
ZSB3aGVuZXZlciB0aGUgbWFpbiBmcmFtZSBzY3JvbGwgcG9zaXRpb24gY2hhbmdlcyBhbmQgdGhl
IHNjcm9sbCBsYXllciBwb3NpdGlvbiBuZWVkcyB0byBiZSB1cGRhdGVkIGFzIHdlbGwuCiAgICAg
dm9pZCB1cGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlvbkFuZFNjcm9sbExheWVyUG9zaXRpb24o
Y29uc3QgSW50UG9pbnQmKTsKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBleHBsaWNpdCBT
Y3JvbGxpbmdDb29yZGluYXRvcihQYWdlKik7CiAKK3ByaXZhdGU6CiAgICAgdm9pZCByZWNvbXB1
dGVXaGVlbEV2ZW50SGFuZGxlckNvdW50KCk7CiAgICAgdm9pZCB1cGRhdGVTaG91bGRVcGRhdGVT
Y3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5n
Q29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKaW5kZXggMThhNmQ3YzE1MGYyNjc3MDRmMWMyYmZlZmUz
ZDc0ZTllZmRmYTE1MS4uNWNjOTNkYTI3M2U0NDhhYjk0YjJkY2EyM2VjN2ZlNWU2OTI1ZjY4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xs
aW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKQEAgLTI3LDU1
ICsyNyw3OSBAQAogCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKIAorI2luY2x1
ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJSZWdpb24uaCIKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtIDogcHVibGljIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yIHsKK3B1YmxpYzoKKyAgICBTY3JvbGxpbmdDb29yZGluYXRvckNo
cm9taXVtKFBhZ2UqIHBhZ2UpCisgICAgICAgIDogU2Nyb2xsaW5nQ29vcmRpbmF0b3IocGFnZSkK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+U2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1
bSgpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyBMYXllckNocm9taXVtKiBleHRyYWN0TGF5
ZXIoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0qPihz
Y3JvbGxpbmdDb29yZGluYXRvciktPm1fc2Nyb2xsTGF5ZXIuZ2V0KCk7CisgICAgfQorCisgICAg
c3RhdGljIHZvaWQgc2V0TGF5ZXIoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLCBMYXllckNocm9taXVtKiBsYXllcikKKyAgICB7CisgICAgICAgIHN0YXRpY19jYXN0
PFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0qPihzY3JvbGxpbmdDb29yZGluYXRvciktPm1f
c2Nyb2xsTGF5ZXIgPSBsYXllcjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IG1fc2Nyb2xsTGF5ZXI7Cit9OworCiBQYXNzUmVmUHRyPFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yPiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlKFBhZ2UqIHBhZ2UpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTY3JvbGxpbmdDb29yZGluYXRvcihwYWdlKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtKHBhZ2UpKTsKIH0K
IAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3SG9yaXpvbnRhbFNjcm9sbGJh
ckxheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyosIEdyYXBoaWNzTGF5ZXIqIGhvcml6b250YWxTY3Jv
bGxiYXJMYXllcikKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IQogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdWZXJ0
aWNhbFNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyosIEdyYXBoaWNzTGF5ZXIqIHZl
cnRpY2FsU2Nyb2xsYmFyTGF5ZXIpCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCEKIH0KIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0
U2Nyb2xsTGF5ZXIoR3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXIpCiB7Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCEKKyAgICBTY3JvbGxpbmdDb29y
ZGluYXRvckNocm9taXVtOjpzZXRMYXllcih0aGlzLCBzY3JvbGxMYXllciA/IHNjcm9sbExheWVy
LT5wbGF0Zm9ybUxheWVyKCkgOiAwKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgUmVnaW9uJikKK3ZvaWQgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFJlZ2lvbiYgcmVn
aW9uKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQhCisgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBTY3JvbGxpbmdDb29yZGluYXRvckNocm9t
aXVtOjpleHRyYWN0TGF5ZXIodGhpcyk7CisgICAgbGF5ZXItPnNldE5vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uKHJlZ2lvbik7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNjcm9s
bFBhcmFtZXRlcnMoU2Nyb2xsRWxhc3RpY2l0eSBob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSwg
U2Nyb2xsRWxhc3RpY2l0eSB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFzRW5hYmxlZEhvcml6b250
YWxTY3JvbGxiYXIsIGJvb2wgaGFzRW5hYmxlZFZlcnRpY2FsU2Nyb2xsYmFyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiB2aWV3
cG9ydFJlY3QsIGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSkKIHsKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IQogfQogCi12b2lkIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpzZXRXaGVlbEV2ZW50SGFuZGxlckNvdW50KHVuc2lnbmVkKQordm9pZCBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25lZCB3
aGVlbEV2ZW50SGFuZGxlckNvdW50KQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQhCisgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBTY3JvbGxp
bmdDb29yZGluYXRvckNocm9taXVtOjpleHRyYWN0TGF5ZXIodGhpcyk7CisgICAgbGF5ZXItPnNl
dEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMod2hlZWxFdmVudEhhbmRsZXJDb3VudCA+IDApOwogfQog
Ci12b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBv
c2l0aW9uT25NYWluVGhyZWFkKGJvb2wpCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRT
aG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKGJvb2wgc2hvdWxkKQog
ewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQhCisg
ICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtOjpl
eHRyYWN0TGF5ZXIodGhpcyk7CisgICAgbGF5ZXItPnNldFNob3VsZFNjcm9sbE9uTWFpblRocmVh
ZChzaG91bGQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDRiY2YyOTdmZjky
NDY4Yzk4NGY1YjRmY2MxMmJmZjUzYjI2NmQ2NzQuLjY3ODNhYzlkZWZkNjg3MzNjNTg0OTUyNzhh
OTRiYzE5YjM1NDNjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC0zOSw3ICszOSw2IEBA
CiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VTa2lhLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0
U2tpYS5oIgogI2VuZGlmCi0jaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5
ZXJCYWNraW5nLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgInNraWEvZXh0
L3BsYXRmb3JtX2NhbnZhcy5oIgpAQCAtNjAsNiArNTksOCBAQCBMYXllckNocm9taXVtOjpMYXll
ckNocm9taXVtKCkKICAgICAsIG1fbGF5ZXJJZChzX25leHRMYXllcklkKyspCiAgICAgLCBtX3Bh
cmVudCgwKQogICAgICwgbV9zY3JvbGxhYmxlKGZhbHNlKQorICAgICwgbV9zaG91bGRTY3JvbGxP
bk1haW5UaHJlYWQoZmFsc2UpCisgICAgLCBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMoZmFsc2Up
CiAgICAgLCBtX2FuY2hvclBvaW50KDAuNSwgMC41KQogICAgICwgbV9iYWNrZ3JvdW5kQ29sb3Io
MCwgMCwgMCwgMCkKICAgICAsIG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KGZhbHNlKQpAQCAt
MzY5LDYgKzM3MCwzMCBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNldFNjcm9sbGFibGUoYm9vbCBz
Y3JvbGxhYmxlKQogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKK3ZvaWQgTGF5ZXJDaHJvbWl1
bTo6c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKGJvb2wgc2hvdWxkU2Nyb2xsT25NYWluVGhy
ZWFkKQoreworICAgIGlmIChtX3Nob3VsZFNjcm9sbE9uTWFpblRocmVhZCA9PSBzaG91bGRTY3Jv
bGxPbk1haW5UaHJlYWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3Nob3VsZFNjcm9sbE9uTWFp
blRocmVhZCA9IHNob3VsZFNjcm9sbE9uTWFpblRocmVhZDsKKyAgICBzZXROZWVkc0NvbW1pdCgp
OworfQorCit2b2lkIExheWVyQ2hyb21pdW06OnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9v
bCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKQoreworICAgIGlmIChtX2hhdmVXaGVlbEV2ZW50SGFu
ZGxlcnMgPT0gaGF2ZVdoZWVsRXZlbnRIYW5kbGVycykKKyAgICAgICAgcmV0dXJuOworICAgIG1f
aGF2ZVdoZWVsRXZlbnRIYW5kbGVycyA9IGhhdmVXaGVlbEV2ZW50SGFuZGxlcnM7CisgICAgc2V0
TmVlZHNDb21taXQoKTsKK30KKwordm9pZCBMYXllckNocm9taXVtOjpzZXROb25GYXN0U2Nyb2xs
YWJsZVJlZ2lvbihjb25zdCBSZWdpb24mIHJlZ2lvbikKK3sKKyAgICBpZiAobV9ub25GYXN0U2Ny
b2xsYWJsZVJlZ2lvbiA9PSByZWdpb24pCisgICAgICAgIHJldHVybjsKKyAgICBtX25vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uID0gcmVnaW9uOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKIHZv
aWQgTGF5ZXJDaHJvbWl1bTo6c2V0RG91YmxlU2lkZWQoYm9vbCBkb3VibGVTaWRlZCkKIHsKICAg
ICBpZiAobV9kb3VibGVTaWRlZCA9PSBkb3VibGVTaWRlZCkKQEAgLTQyMyw2ICs0NDgsOSBAQCB2
b2lkIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQog
ICAgIGxheWVyLT5zZXRJc05vbkNvbXBvc2l0ZWRDb250ZW50KG1faXNOb25Db21wb3NpdGVkQ29u
dGVudCk7CiAgICAgbGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMobV9tYXNrc1RvQm91bmRzKTsKICAg
ICBsYXllci0+c2V0U2Nyb2xsYWJsZShtX3Njcm9sbGFibGUpOworICAgIGxheWVyLT5zZXRTaG91
bGRTY3JvbGxPbk1haW5UaHJlYWQobV9zaG91bGRTY3JvbGxPbk1haW5UaHJlYWQpOworICAgIGxh
eWVyLT5zZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk7
CisgICAgbGF5ZXItPnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKG1fbm9uRmFzdFNjcm9sbGFi
bGVSZWdpb24pOwogICAgIGxheWVyLT5zZXROYW1lKG1fbmFtZSk7CiAgICAgbGF5ZXItPnNldE9w
YXF1ZShtX29wYXF1ZSk7CiAgICAgbGF5ZXItPnNldE9wYWNpdHkobV9vcGFjaXR5KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uaAppbmRleCBmZjJlN2QyODYyNjIyZmFkMmMwNjkzOGQ2ZjUyNTY5MTQwZjg4M2Zh
Li42MGI0MjFhNWYwMjcxMmU2ZDAxZTVlOGU3ODBhZjNkMjA1NzFkNmE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJQcm9ncmFtQmluZGluZy5oIgor
I2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgog
I2luY2x1ZGUgIlNoYWRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRy
aXguaCIKQEAgLTU2LDcgKzU3LDYgQEAgY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ0xheWVy
VHJlZUhvc3Q7CiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
M0Q7Ci1jbGFzcyBSZWdpb247CiAKIC8vIEJhc2UgY2xhc3MgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJz
LiBTcGVjaWFsIGxheWVyIHR5cGVzIGFyZSBkZXJpdmVkIGZyb20KIC8vIHRoaXMgY2xhc3MuCkBA
IC0xMzEsNyArMTMxLDkgQEAgcHVibGljOgogICAgIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUG9zaXRpb247IH0KIAogICAgIHZvaWQgc2V0
U2Nyb2xsYWJsZShib29sKTsKLSAgICBib29sIHNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBt
X3Njcm9sbGFibGU7IH0KKyAgICB2b2lkIHNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChib29s
KTsKKyAgICB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCk7CisgICAgdm9pZCBz
ZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBSZWdpb24mKTsKIAogICAgIEludFNpemUg
c2Nyb2xsRGVsdGEoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7IH0KIApAQCAtMjY0LDYgKzI2
Niw5IEBAIHByaXZhdGU6CiAgICAgSW50UmVjdCBtX3Zpc2libGVMYXllclJlY3Q7CiAgICAgSW50
UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKICAgICBib29sIG1fc2Nyb2xsYWJsZTsKKyAgICBib29s
IG1fc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkOworICAgIGJvb2wgbV9oYXZlV2hlZWxFdmVudEhh
bmRsZXJzOworICAgIFJlZ2lvbiBtX25vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOwogICAgIEZsb2F0
UG9pbnQgbV9wb3NpdGlvbjsKICAgICBGbG9hdFBvaW50IG1fYW5jaG9yUG9pbnQ7CiAgICAgQ29s
b3IgbV9iYWNrZ3JvdW5kQ29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaAppbmRleCAwNTdk
NzliMWExMTg4YzliMDE5YjFiMzBmN2RkZjYyM2MxMDExMWZlLi42YzA1NTk5NGM1OGVjYTQxMTMx
OWE5Yzk5ZDE0M2Y5YzE3ZjNlMmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgKQEAgLTQ2
LDEzICs0NiwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3KCkg
PSAwOwogCiAgICAgZW51bSBTY3JvbGxTdGF0dXMgeyBTY3JvbGxGYWlsZWQsIFNjcm9sbFN0YXJ0
ZWQsIFNjcm9sbElnbm9yZWQgfTsKKyAgICBlbnVtIFNjcm9sbElucHV0VHlwZSB7IEdlc3R1cmUs
IFdoZWVsIH07CiAKICAgICAvLyBBdHRlbXB0IHRvIHN0YXJ0IHNjcm9sbGluZyBhIGxheWVyIGF0
IGEgZ2l2ZW4gcG9pbnQgaW4gd2luZG93CiAgICAgLy8gY29vcmRpbmF0ZXMuIFJldHVybnMgU2Ny
b2xsU3RhcnRlZCBpZiB0aGUgbGF5ZXIgYXQgdGhlIGNvb3JkaW5hdGVzIGNhbgogICAgIC8vIGJl
IHNjcm9sbGVkLCBTY3JvbGxGYWlsZWQgaWYgdGhlIHNjcm9sbCBldmVudCBzaG91bGQgaW5zdGVh
ZCBiZQogICAgIC8vIGRlbGVnYXRlZCB0byB0aGUgbWFpbiB0aHJlYWQsIG9yIFNjcm9sbElnbm9y
ZWQgaWYgdGhlcmUgaXMgbm90aGluZyB0bwogICAgIC8vIGJlIHNjcm9sbGVkIGF0IHRoZSBnaXZl
biBjb29yZGluYXRlcy4KLSAgICB2aXJ0dWFsIFNjcm9sbFN0YXR1cyBzY3JvbGxCZWdpbihjb25z
dCBJbnRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFsIFNjcm9sbFN0YXR1cyBzY3JvbGxCZWdpbihj
b25zdCBJbnRQb2ludCYsIFNjcm9sbElucHV0VHlwZSkgPSAwOwogCiAgICAgLy8gU2Nyb2xsIHRo
ZSBsYXllciBzZWxlY3RlZCB3aXRoIHNjcm9sbEJlZ2luKCkuIElmIHRoZXJlIGlzIG5vIHJvb20g
dG8KICAgICAvLyBtb3ZlIHRoZSBsYXllciBpbiB0aGUgcmVxdWVzdGVkIGRpcmVjdGlvbiwgaXRz
IGZpcnN0IGFuY2VzdG9yIGxheWVyIHRoYXQKQEAgLTY0LDcgKzY1LDYgQEAgcHVibGljOgogICAg
IC8vIGNhbGxlZCBpZiBzY3JvbGxCZWdpbigpIHJldHVybmVkIFNjcm9sbFN0YXJ0ZWQuCiAgICAg
dmlydHVhbCB2b2lkIHNjcm9sbEVuZCgpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBoYXZlV2hl
ZWxFdmVudEhhbmRsZXJzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVCZWdp
bigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlVXBkYXRlKGZsb2F0IG1hZ25p
ZnlEZWx0YSwgY29uc3QgSW50UG9pbnQmIGFuY2hvcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBw
aW5jaEdlc3R1cmVFbmQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggYzJiZDM0
YjBiZmI4ZTkwODc2MzQzMzFkMWNlMjYxZjJhZWJiZGQ2Ni4uNDY0NTdkZDQwOTI3MTdkZGViNTYw
ZGY2YmM5N2M0NWZlOWU2ZmQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtNDUsNiAr
NDUsOCBAQCBDQ0xheWVySW1wbDo6Q0NMYXllckltcGwoaW50IGlkKQogICAgICwgbV9hbmNob3JQ
b2ludCgwLjUsIDAuNSkKICAgICAsIG1fYW5jaG9yUG9pbnRaKDApCiAgICAgLCBtX3Njcm9sbGFi
bGUoZmFsc2UpCisgICAgLCBtX3Nob3VsZFNjcm9sbE9uTWFpblRocmVhZChmYWxzZSkKKyAgICAs
IG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhmYWxzZSkKICAgICAsIG1fYmFja2dyb3VuZENvdmVy
c1ZpZXdwb3J0KGZhbHNlKQogICAgICwgbV9kb3VibGVTaWRlZCh0cnVlKQogICAgICwgbV9sYXll
clByb3BlcnR5Q2hhbmdlZChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDllNmM1NTAw
N2VlN2UzOGQ3NWY2MzExYzlhMGY4ZGVkYTc0NzZlYWMuLmMwYjIzYjk1MmEzODQwOWIzMGIxNjc4
OGMxZWE0OTZjZGMyOTg3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiVGV4
dFN0cmVhbS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAi
Y2MvQ0NSZW5kZXJQYXNzLmgiCkBAIC0xODAsNiArMTgxLDE1IEBAIHB1YmxpYzoKICAgICBib29s
IHNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGU7IH0KICAgICB2b2lkIHNl
dFNjcm9sbGFibGUoYm9vbCBzY3JvbGxhYmxlKSB7IG1fc2Nyb2xsYWJsZSA9IHNjcm9sbGFibGU7
IH0KIAorICAgIGJvb2wgc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKCkgY29uc3QgeyByZXR1cm4g
bV9zaG91bGRTY3JvbGxPbk1haW5UaHJlYWQ7IH0KKyAgICB2b2lkIHNldFNob3VsZFNjcm9sbE9u
TWFpblRocmVhZChib29sIHNob3VsZFNjcm9sbE9uTWFpblRocmVhZCkgeyBtX3Nob3VsZFNjcm9s
bE9uTWFpblRocmVhZCA9IHNob3VsZFNjcm9sbE9uTWFpblRocmVhZDsgfQorCisgICAgYm9vbCBo
YXZlV2hlZWxFdmVudEhhbmRsZXJzKCkgY29uc3QgeyByZXR1cm4gbV9oYXZlV2hlZWxFdmVudEhh
bmRsZXJzOyB9CisgICAgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wgaGF2ZVdo
ZWVsRXZlbnRIYW5kbGVycykgeyBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMgPSBoYXZlV2hlZWxF
dmVudEhhbmRsZXJzOyB9CisKKyAgICBjb25zdCBSZWdpb24mIG5vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbjsgfQorICAgIHZv
aWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgUmVnaW9uJiByZWdpb24pIHsgbV9u
b25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiA9IHJlZ2lvbjsgfQorCiAgICAgY29uc3QgSW50UmVjdCYg
dmlzaWJsZUxheWVyUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZUxheWVyUmVjdDsgfQog
ICAgIHZvaWQgc2V0VmlzaWJsZUxheWVyUmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJS
ZWN0KSB7IG1fdmlzaWJsZUxheWVyUmVjdCA9IHZpc2libGVMYXllclJlY3Q7IH0KIApAQCAtMjQy
LDYgKzI1Miw5IEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBtX2NvbnRlbnRCb3VuZHM7CiAgICAg
SW50UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKICAgICBib29sIG1fc2Nyb2xsYWJsZTsKKyAgICBi
b29sIG1fc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkOworICAgIGJvb2wgbV9oYXZlV2hlZWxFdmVu
dEhhbmRsZXJzOworICAgIFJlZ2lvbiBtX25vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOwogICAgIENv
bG9yIG1fYmFja2dyb3VuZENvbG9yOwogICAgIGJvb2wgbV9iYWNrZ3JvdW5kQ292ZXJzVmlld3Bv
cnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGU0NjJlNTMxOGJmYzdm
Mzc5NGRhODY1Y2VmZjMzYmFlYzVkMmU1MDEuLjBhZjkyZWYyZjNhZDM0NDIxMzc4MzI2NDU0ZDBk
ZDJiOWIyN2ZjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtNjgsNyAr
NjgsNiBAQCBDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RD
bGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncwogICAgICwgbV9sYXllclJlbmRlcmVySW5p
dGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX3NldHRpbmdzKHNldHRpbmdzKQogICAgICwgbV92aXNp
YmxlKHRydWUpCi0gICAgLCBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMoZmFsc2UpCiAgICAgLCBt
X3BhZ2VTY2FsZUZhY3RvcigxKQogICAgICwgbV9taW5QYWdlU2NhbGVGYWN0b3IoMSkKICAgICAs
IG1fbWF4UGFnZVNjYWxlRmFjdG9yKDEpCkBAIC0xNzcsNyArMTc2LDYgQEAgdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBo
b3N0SW1wbCkKICAgICAgICAgaG9zdEltcGwtPnNldFJvb3RMYXllcigwKTsKIAogICAgIGhvc3RJ
bXBsLT5zZXRTb3VyY2VGcmFtZU51bWJlcihmcmFtZU51bWJlcigpKTsKLSAgICBob3N0SW1wbC0+
c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMpOwogICAg
IGhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKCkpOwogICAgIGhvc3RJbXBs
LT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMobV9wYWdlU2NhbGVGYWN0b3IsIG1fbWluUGFn
ZVNjYWxlRmFjdG9yLCBtX21heFBhZ2VTY2FsZUZhY3Rvcik7CiAKQEAgLTM0MCwxNCArMzM4LDYg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRpZEJlY29tZUludmlzaWJsZU9uSW1wbFRocmVhZChD
Q0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW0KICAgICAgICAgaG9zdEltcGwtPnNldFJvb3RMYXll
cigwKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldEhhdmVXaGVlbEV2ZW50SGFuZGxl
cnMoYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKQotewotICAgIGlmIChtX2hhdmVXaGVlbEV2
ZW50SGFuZGxlcnMgPT0gaGF2ZVdoZWVsRXZlbnRIYW5kbGVycykKLSAgICAgICAgcmV0dXJuOwot
ICAgIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyA9IGhhdmVXaGVlbEV2ZW50SGFuZGxlcnM7Ci0g
ICAgbV9wcm94eS0+c2V0TmVlZHNDb21taXQoKTsKLX0KLQogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBi
b29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKIHsKICAgICBt
X3Byb3h5LT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9y
LCBzY2FsZSwgZHVyYXRpb25TZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBm
NWUxMTM0YzgxYjQzZTIxODg2YTVkOTM1MzBlZTg4ZjE5YTQwMzI1Li42ZjNkMmQ0OGM2ZWMyNjFl
Nzk3YjUyODFiY2Y0ODQ1NTAwN2UxMGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApA
QCAtMTgwLDggKzE4MCw2IEBAIHB1YmxpYzoKICAgICBib29sIHZpc2libGUoKSBjb25zdCB7IHJl
dHVybiBtX3Zpc2libGU7IH0KICAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAKLSAgICB2b2lk
IHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCk7Ci0KICAgICAvLyBSZXR1cm5zIGZhbHNl
IGlmIHdlIHNob3VsZCBhYm9ydCB0aGlzIGZyYW1lIGR1ZSB0byBpbml0aWFsaXphdGlvbiBmYWls
dXJlLgogICAgIGJvb2wgdXBkYXRlTGF5ZXJzKCk7CiAKQEAgLTIzNSw3ICsyMzMsNiBAQCBwcml2
YXRlOgogCiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBib29sIG1fdmlzaWJsZTsK
LSAgICBib29sIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsKICAgICB0eXBlZGVmIEhhc2hNYXA8
R3JhcGhpY3NDb250ZXh0M0QqLCBSZWZQdHI8UmF0ZUxpbWl0ZXI+ID4gUmF0ZUxpbWl0ZXJNYXA7
CiAgICAgUmF0ZUxpbWl0ZXJNYXAgbV9yYXRlTGltaXRlcnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggMDU0YmViMzJlZTUzNTljYmM1YmE1NGY5MWI2YTk2
YzE1NDBmZjViNS4uZmYxZmMyMmMyNTJhYzMwYmNlM2M3ZGY2NTNhYzY5N2VjYjFjNjY0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTUyLDcgKzUyLDYgQEAg
Q0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ1NldHRpbmdz
JiBzZXR0aW5ncywgQ0NMYXllclRyZWUKICAgICAsIG1fZnJhbWVOdW1iZXIoMCkKICAgICAsIG1f
c2V0dGluZ3Moc2V0dGluZ3MpCiAgICAgLCBtX3Zpc2libGUodHJ1ZSkKLSAgICAsIG1faGF2ZVdo
ZWVsRXZlbnRIYW5kbGVycyhmYWxzZSkKICAgICAsIG1fcGFnZVNjYWxlKDEpCiAgICAgLCBtX3Bh
Z2VTY2FsZURlbHRhKDEpCiAgICAgLCBtX3NlbnRQYWdlU2NhbGVEZWx0YSgxKQpAQCAtNDY2LDEx
ICs0NjUsMjggQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXROZWVkc1JlZHJhdygpCiAg
ICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCk7CiB9CiAKLUNDSW5wdXRI
YW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsQmVn
aW4oY29uc3QgSW50UG9pbnQmKQorQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpzY3JvbGxCZWdpbihjb25zdCBJbnRQb2ludCYgcG9pbnQsIEND
SW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJbnB1dFR5cGUgdHlwZSkKIHsKICAgICAvLyBUT0RP
OiBDaGVjayBmb3Igc2Nyb2xsYWJsZSBzdWJsYXllcnMuCi0gICAgaWYgKCFtX3Njcm9sbExheWVy
SW1wbCB8fCAhbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbGFibGUoKSkKKyAgICBpZiAoIW1fc2Ny
b2xsTGF5ZXJJbXBsIHx8ICFtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsYWJsZSgpKSB7CisgICAg
ICAgIFRSQUNFX0VWRU5UKCJzY3JvbGxCZWdpbiBJZ25vcmVkIG5vIHNjcm9sbGFibGUiLCB0aGlz
LCAwKTsKICAgICAgICAgcmV0dXJuIFNjcm9sbElnbm9yZWQ7CisgICAgfQorCisgICAgaWYgKG1f
c2Nyb2xsTGF5ZXJJbXBsLT5zaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoKSkgeworICAgICAgICBU
UkFDRV9FVkVOVCgic2Nyb2xsQmVnaW4gRmFpbGVkIHNob3VsZFNjcm9sbE9uTWFpblRocmVhZCIs
IHRoaXMsIDApOworICAgICAgICByZXR1cm4gU2Nyb2xsRmFpbGVkOworICAgIH0KKworICAgIGlm
IChtX3Njcm9sbExheWVySW1wbC0+bm9uRmFzdFNjcm9sbGFibGVSZWdpb24oKS5jb250YWlucyhw
b2ludCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQoInNjcm9sbEJlZ2luIEZhaWxlZCBub25GYXN0
U2Nyb2xsYWJsZVJlZ2lvbiIsIHRoaXMsIDApOworICAgICAgICByZXR1cm4gU2Nyb2xsRmFpbGVk
OworICAgIH0KKworICAgIGlmICh0eXBlID09IENDSW5wdXRIYW5kbGVyQ2xpZW50OjpXaGVlbCAm
JiBtX3Njcm9sbExheWVySW1wbC0+aGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpKSB7CisgICAgICAg
IFRSQUNFX0VWRU5UKCJzY3JvbGxCZWdpbiBGYWlsZWQgd2hlZWxFdmVudEhhbmRsZXJzIiwgdGhp
cywgMCk7CisgICAgICAgIHJldHVybiBTY3JvbGxGYWlsZWQ7CisgICAgfQogCiAgICAgcmV0dXJu
IFNjcm9sbFN0YXJ0ZWQ7CiB9CkBAIC00OTAsMTEgKzUwNiw2IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6c2Nyb2xsRW5kKCkKIHsKIH0KIAotYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpo
YXZlV2hlZWxFdmVudEhhbmRsZXJzKCkKLXsKLSAgICByZXR1cm4gbV9oYXZlV2hlZWxFdmVudEhh
bmRsZXJzOwotfQotCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnBpbmNoR2VzdHVyZUJlZ2lu
KCkKIHsKICAgICBtX3BpbmNoR2VzdHVyZUFjdGl2ZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggODk0OTE1NDJlNDMzZmFhZmVmMjY2YTRlZjFhODlkMDgw
NjBiOWFmZC4uZTY3OTEyNzAwOWU4NDY2ZjZmMWUxYTllOTEyYTJhZDlmOTg0NTU2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtNTksMTAgKzU5LDkgQEAgcHVibGlj
OgogCiAgICAgLy8gQ0NJbnB1dEhhbmRsZXJDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0
dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKLSAgICB2aXJ0dWFsIENDSW5wdXRIYW5kbGVyQ2xp
ZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsQmVnaW4oY29uc3QgSW50UG9pbnQmKTsKKyAgICB2aXJ0
dWFsIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsQmVnaW4oY29uc3Qg
SW50UG9pbnQmLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsSW5wdXRUeXBlKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGxFbmQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpOwog
ICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVCZWdpbigpOwogICAgIHZpcnR1YWwgdm9pZCBw
aW5jaEdlc3R1cmVVcGRhdGUoZmxvYXQsIGNvbnN0IEludFBvaW50Jik7CiAgICAgdmlydHVhbCB2
b2lkIHBpbmNoR2VzdHVyZUVuZCgpOwpAQCAtOTgsNyArOTcsNiBAQCBwdWJsaWM6CiAKICAgICBi
b29sIHZpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7IH0KICAgICB2b2lkIHNldFZp
c2libGUoYm9vbCk7Ci0gICAgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wgaGF2
ZVdoZWVsRXZlbnRIYW5kbGVycykgeyBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMgPSBoYXZlV2hl
ZWxFdmVudEhhbmRsZXJzOyB9CiAKICAgICBpbnQgc291cmNlRnJhbWVOdW1iZXIoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZUZyYW1lTnVtYmVyOyB9CiAgICAgdm9pZCBzZXRTb3VyY2VGcmFtZU51
bWJlcihpbnQgZnJhbWVOdW1iZXIpIHsgbV9zb3VyY2VGcmFtZU51bWJlciA9IGZyYW1lTnVtYmVy
OyB9CkBAIC0xNDMsNyArMTQxLDYgQEAgcHJpdmF0ZToKICAgICBDQ1NldHRpbmdzIG1fc2V0dGlu
Z3M7CiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBib29sIG1fdmlzaWJsZTsKLSAg
ICBib29sIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsKIAogICAgIGZsb2F0IG1fcGFnZVNjYWxl
OwogICAgIGZsb2F0IG1fcGFnZVNjYWxlRGVsdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAppbmRleCBjOWJlMDhh
ODQ3YTZmYmJiYjc4ZWFjYWZjMmIzYTAyZjM0YjBiN2IyLi5iYjU0MmFmY2FjNTE1NjBlZDk3ZDk5
YzY1NzAwZThmNzljZjQ5YmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKQEAgLTEwMyw2ICsxMDMsNyBAQCB2
b2lkIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0Vmlld3BvcnQoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgdmlld3BvcnRTaXplLAogCiAgICAgbV92aWV3cG9ydFNpemUgPSB2aWV3cG9ydFNp
emU7CiAgICAgc2Nyb2xsTGF5ZXIoKS0+c2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24p
OworICAgIHNjcm9sbExheWVyKCktPnNldFBvc2l0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQoLXNj
cm9sbFBvc2l0aW9uLngoKSwgLXNjcm9sbFBvc2l0aW9uLnkoKSkpOwogICAgIC8vIER1ZSB0byB0
aGUgcG9zc2liaWxpdHkgb2YgcGluY2ggem9vbSwgdGhlIG5vbmNvbXBvc2l0ZWQgbGF5ZXIgaXMg
YWx3YXlzCiAgICAgLy8gYXNzdW1lZCB0byBiZSBzY3JvbGxhYmxlLgogICAgIHNjcm9sbExheWVy
KCktPnNldFNjcm9sbGFibGUodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKaW5kZXggNDBj
MTUxZGZkMTljNzhlN2RjZDRhYTljY2U1MDU1MjE3NTkzNDRhMy4uMzk3MzA4YjUyOWNjNDE3NDcx
ODdjN2Y4NjdkMTIxYjliMjNmY2FlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcApAQCAtMTIx
LDkgKzEyMSw5IEBAIHZvaWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUlu
cHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQpCiAgICAgQVNTRVJUKENDUHJveHk6
OmlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCi0gICAgaWYgKGV2ZW50
LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbCAmJiAhbV9pbnB1dEhhbmRsZXJDbGll
bnQtPmhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoKSkgeworICAgIGlmIChldmVudC50eXBlID09IFdl
YklucHV0RXZlbnQ6Ok1vdXNlV2hlZWwpIHsKICAgICAgICAgY29uc3QgV2ViTW91c2VXaGVlbEV2
ZW50JiB3aGVlbEV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCo+
KCZldmVudCk7Ci0gICAgICAgIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgc2Ny
b2xsU3RhdHVzID0gbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJlZ2luKEludFBvaW50KHdo
ZWVsRXZlbnQueCwgd2hlZWxFdmVudC55KSk7CisgICAgICAgIENDSW5wdXRIYW5kbGVyQ2xpZW50
OjpTY3JvbGxTdGF0dXMgc2Nyb2xsU3RhdHVzID0gbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9s
bEJlZ2luKEludFBvaW50KHdoZWVsRXZlbnQueCwgd2hlZWxFdmVudC55KSwgQ0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OldoZWVsKTsKICAgICAgICAgc3dpdGNoIChzY3JvbGxTdGF0dXMpIHsKICAgICAg
ICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZDoKICAgICAgICAgICAg
IG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCeShJbnRTaXplKC13aGVlbEV2ZW50LmRlbHRh
WCwgLXdoZWVsRXZlbnQuZGVsdGFZKSk7CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2
ZW50JiBldmVudCkKICAgICAgICAgbV9leHBlY3RTY3JvbGxVcGRhdGVFbmQgPSB0cnVlOwogI2Vu
ZGlmCiAgICAgICAgIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50ID0gKnN0YXRp
Y19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+KCZldmVudCk7Ci0gICAgICAgIENDSW5wdXRI
YW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsU3RhdHVzID0gbV9pbnB1dEhhbmRsZXJD
bGllbnQtPnNjcm9sbEJlZ2luKEludFBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZlbnQu
eSkpOworICAgICAgICBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzIHNjcm9sbFN0
YXR1cyA9IG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCZWdpbihJbnRQb2ludChnZXN0dXJl
RXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6R2VzdHVyZSk7
CiAgICAgICAgIHN3aXRjaCAoc2Nyb2xsU3RhdHVzKSB7CiAgICAgICAgIGNhc2UgQ0NJbnB1dEhh
bmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQ6CiAgICAgICAgICAgICBtX3Njcm9sbFN0YXJ0ZWQg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGlu
Z3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5j
cHAKaW5kZXggOTBiZDAwY2MxOTgxMzQ4MDYzOWFkZmY1ZGU0OTExYmNkNTAyYWU4OC4uYThiNjdm
ODliNjVkOWUwNTI3YzQ3OTBhNjUzMDQ0OGU2OTFlYzQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC0zMzEsNiArMzMxLDcgQEAgdm9p
ZCBXZWJTZXR0aW5nc0ltcGw6OnNldEVkaXRpbmdCZWhhdmlvcihFZGl0aW5nQmVoYXZpb3IgYmVo
YXZpb3IpCiB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Vu
YWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIG1fc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkKGVuYWJsZWQpOworICAgIG1fc2V0dGluZ3MtPnNldFNjcm9sbGluZ0Nv
b3JkaW5hdG9yRW5hYmxlZChlbmFibGVkKTsKIH0KIAogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNl
dEZvcmNlQ29tcG9zaXRpbmdNb2RlKGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA4MGExZDk2OGY3ZGM4NjJkZjlhYjFlNGZlMjUz
NzI2MTA4NmExMzBkLi43ODExNzA0NjU4ZjlkZGE0OTNhNzNmMGJiNDJiNzA1NzE5ZmFjM2U5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC05OSw2ICs5
OSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGUuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ0Nv
b3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1
cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC05NDcsMTMgKzk0OCw4IEBA
IHZvaWQgV2ViVmlld0ltcGw6OmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoY29uc3Qg
V2ViUmVjdCYgaGl0UmVjdCwgQXV0b1pvCiAKIHZvaWQgV2ViVmlld0ltcGw6Om51bWJlck9mV2hl
ZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCBudW1iZXJPZldoZWVsSGFuZGxlcnMpCiB7
Ci0gICAgbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzID0gbnVtYmVyT2ZXaGVlbEhhbmRsZXJzID4g
MDsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5udW1iZXJPZldoZWVsRXZl
bnRIYW5kbGVyc0NoYW5nZWQobnVtYmVyT2ZXaGVlbEhhbmRsZXJzKTsKLSNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5zZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKG1faGF2ZVdoZWVsRXZlbnRI
YW5kbGVycyk7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6bnVtYmVyT2ZUb3VjaEV2
ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkIG51bWJlck9mVG91Y2hIYW5kbGVycykKQEAgLTMx
NzYsNyArMzE3Miw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBDQ0xh
eWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlzLCBjY1NldHRpbmdzKTsKICAgICAgICAgaWYgKG1fbGF5
ZXJUcmVlSG9zdCkgewotICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRIYXZlV2hlZWxF
dmVudEhhbmRsZXJzKG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk7CiAgICAgICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyhwYWdlU2NhbGVGYWN0b3Io
KSwgbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yLCBtX21heGltdW1QYWdlU2NhbGVGYWN0b3IpOwog
ICAgICAgICAgICAgdXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKTsKICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRBY3RpdmF0ZUNvbXBvc2l0b3IobV9sYXllclRyZWVIb3N0LT5jb21wb3NpdG9ySWRl
bnRpZmllcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4
IGU4ZDUzYmI5NDVlNTc1ZGIwYTdiNjIzZDU3MmI3ZWUxMThiZmY2OWEuLjM1NThjMWRmNjQ5MTEw
NzU3ZmQwNzhhNWI5ZjExNDMzOWFkYTA5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaApAQCAtNjkyLDcgKzY5Miw2IEBAIHByaXZhdGU6CiAgICAgLy8gSWYgdHJ1
ZSwgdGhlIGdyYXBoaWNzIGNvbnRleHQgaXMgYmVpbmcgcmVzdG9yZWQuCiAgICAgYm9vbCBtX3Jl
Y3JlYXRpbmdHcmFwaGljc0NvbnRleHQ7CiAjZW5kaWYKLSAgICBib29sIG1faGF2ZVdoZWVsRXZl
bnRIYW5kbGVyczsKICAgICBzdGF0aWMgY29uc3QgV2ViSW5wdXRFdmVudCogbV9jdXJyZW50SW5w
dXRFdmVudDsKIAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4
IDgyMDczM2I0NzIwOGM2ZWNmZjE3Yzg4YTI1MmIzZGQ3OGQ2ZmRkZDEuLjgwYzhlNjM5YTJkNTgz
ODQ5ZTdhZmJjY2FlYzZjZTRmNDM3NWFkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0xNjMsMTMg
KzE2Myw2MiBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbFJvb3RDYWxs
c0NvbW1pdEFuZFJlZHJhdykKICAgICByb290LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgw
LCAwKSk7CiAgICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50U2l6ZSgxMDAsIDEwMCkp
OwogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290KTsKLSAgICBFWFBFQ1RfRVEobV9o
b3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoMCwgMCkpLCBDQ0lucHV0SGFuZGxlckNsaWVu
dDo6U2Nyb2xsU3RhcnRlZCk7CisgICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2lu
KEludFBvaW50KDAsIDApLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6V2hlZWwpLCBDQ0lucHV0SGFu
ZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCk7CiAgICAgbV9ob3N0SW1wbC0+c2Nyb2xsQnkoSW50
U2l6ZSgwLCAxMCkpOwogICAgIG1faG9zdEltcGwtPnNjcm9sbEVuZCgpOwogICAgIEVYUEVDVF9U
UlVFKG1fZGlkUmVxdWVzdFJlZHJhdyk7CiAgICAgRVhQRUNUX1RSVUUobV9kaWRSZXF1ZXN0Q29t
bWl0KTsKIH0KIAorVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB3aGVlbEV2ZW50SGFu
ZGxlcnMpCit7CisgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNy
ZWF0ZSgwKTsKKyAgICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUpOworICAgIHJvb3QtPnNldFNj
cm9sbFBvc2l0aW9uKEludFBvaW50KDAsIDApKTsKKyAgICByb290LT5zZXRNYXhTY3JvbGxQb3Np
dGlvbihJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJv
b3QpOworICAgIHJvb3QtPnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnModHJ1ZSk7CisgICAgLy8g
V2l0aCByZWdpc3RlcmVkIGV2ZW50IGhhbmRsZXJzLCB3aGVlbCBzY3JvbGxzIGhhdmUgdG8gZ28g
dG8gdGhlIG1haW4gdGhyZWFkLgorICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3JvbGxCZWdp
bihJbnRQb2ludCgwLCAwKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhh
bmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCk7CisKKyAgICAvLyBCdXQgZ2VzdHVyZSBzY3JvbGxz
IGNhbiBzdGlsbCBiZSBoYW5kbGVkLgorICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3JvbGxC
ZWdpbihJbnRQb2ludCgwLCAwKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6Okdlc3R1cmUpLCBDQ0lu
cHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCk7Cit9CisKK1RFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKQoreworICAgIFJlZlB0cjxD
Q0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgcm9vdC0+c2V0
U2Nyb2xsYWJsZSh0cnVlKTsKKyAgICByb290LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgw
LCAwKSk7CisgICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50U2l6ZSgxMDAsIDEwMCkp
OworICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290KTsKKyAgICByb290LT5zZXRTaG91
bGRTY3JvbGxPbk1haW5UaHJlYWQodHJ1ZSk7CisgICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNj
cm9sbEJlZ2luKEludFBvaW50KDAsIDApLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6V2hlZWwpLCBD
Q0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKTsKKyAgICBFWFBFQ1RfRVEobV9ob3N0
SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoMCwgMCksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpH
ZXN0dXJlKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCk7Cit9CisKK1RFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgbm9uRmFzdFNjcm9sbGFibGVSZWdpb24pCit7Cisg
ICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKKyAg
ICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUpOworICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0aW9u
KEludFBvaW50KDAsIDApKTsKKyAgICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXpl
KDEwMCwgMTAwKSk7CisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOworICAgIHJv
b3QtPnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKEludFJlY3QoMCwgMCwgNTAsIDUwKSk7Cisg
ICAgLy8gQWxsIHNjcm9sbCB0eXBlcyBpbnNpZGUgdGhlIG5vbi1mYXN0IHNjcm9sbGFibGUgcmVn
aW9uIHNob3VsZCBmYWlsLgorICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3JvbGxCZWdpbihJ
bnRQb2ludCgyNSwgMjUpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6V2hlZWwpLCBDQ0lucHV0SGFu
ZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKTsKKyAgICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Ny
b2xsQmVnaW4oSW50UG9pbnQoMjUsIDI1KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6Okdlc3R1cmUp
LCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKTsKKworICAgIC8vIEFsbCBzY3Jv
bGwgdHlwZXMgb3V0c2lkZSB0aGlzIHJlZ2lvbiBzaG91bGQgc3VjY2VlZC4KKyAgICBFWFBFQ1Rf
RVEobV9ob3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoNzUsIDc1KSwgQ0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpOwor
ICAgIG1faG9zdEltcGwtPnNjcm9sbEJ5KEludFNpemUoMCwgMTApKTsKKyAgICBtX2hvc3RJbXBs
LT5zY3JvbGxFbmQoKTsKKyAgICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50
UG9pbnQoNzUsIDc1KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6Okdlc3R1cmUpLCBDQ0lucHV0SGFu
ZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCk7CisgICAgbV9ob3N0SW1wbC0+c2Nyb2xsQnkoSW50
U2l6ZSgwLCAxMCkpOworICAgIG1faG9zdEltcGwtPnNjcm9sbEVuZCgpOworfQorCisKIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGluY2hHZXN0dXJlKQogewogICAgIHNldHVwU2Ny
b2xsQW5kQ29udGVudHNMYXllcnMoSW50U2l6ZSgxMDAsIDEwMCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBkNTU1YTZi
M2Q1ZmNjMGQ3NzE1ZmZkYTJjYmY5MWU2MWY4YmJiODNiLi5mMGUxZTVjNjZlZTRjYThjY2IzODYw
NDZhYmU0NGJkMGY5Yjc5NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNTE1LDYgKzUxNSw5IEBAIFRFU1RfRihMYXll
ckNocm9taXVtVGVzdCwgY2hlY2tQcm9wZXJ0eUNoYW5nZUNhdXNlc0NvcnJlY3RCZWhhdmlvcikK
ICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0
TGF5ZXItPnNldFJlcGxpY2FMYXllcihkdW1teUxheWVyLmdldCgpKSk7CiAgICAgRVhFQ1VURV9B
TkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRTdWJs
YXllclRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgwLCAwLCAwLCAwLCAwLCAwKSkpOwog
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RM
YXllci0+c2V0U2Nyb2xsYWJsZSh0cnVlKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9O
RUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRTaG91bGRTY3JvbGxPbk1haW5U
aHJlYWQodHJ1ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JF
SEFWSU9SKDEsIHRlc3RMYXllci0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oUmVnaW9uKElu
dFJlY3QoMSwgMSwgMiwgMikpKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19D
T01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKHRy
dWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigx
LCB0ZXN0TGF5ZXItPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KDEwLCAxMCkpKTsKICAgICBF
WEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXIt
PnNldFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgwLCAwLCAwLCAwLCAwLCAwKSkpOwog
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RM
YXllci0+c2V0RG91YmxlU2lkZWQoZmFsc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxU
ZXN0LmNwcAppbmRleCBhZDU4MTA1MjRkNjRlYWRkZTVhMWMzNDVjNTY4OGFiMmExYTJmZWJkLi40
NTkyNTVlMDJhMjgzMzE5ZGZiNWU5MjlhOGQ4ZjVkOTkzNWE0NDRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbFRlc3QuY3BwCkBAIC02NywxNCArNjcsMTMgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhdygpIE9WRVJSSURFIHsgfQotICAg
IHZpcnR1YWwgU2Nyb2xsU3RhdHVzIHNjcm9sbEJlZ2luKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JikgT1ZFUlJJREUKKyAgICB2aXJ0dWFsIFNjcm9sbFN0YXR1cyBzY3JvbGxCZWdpbihjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJ
bnB1dFR5cGUpIE9WRVJSSURFCiAgICAgewogICAgICAgICByZXR1cm4gbV9zY3JvbGxTdGF0dXM7
CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbEVuZCgpIE9WRVJSSURFIHsg
fQogCi0gICAgdmlydHVhbCBib29sIGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoKSBPVkVSUklERSB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVCZWdpbigpIE9W
RVJSSURFCiAgICAgewogICAgICAgICBtX3BpbmNoU3RhcnRlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127888</attachid>
            <date>2012-02-20 18:25:09 -0800</date>
            <delta_ts>2012-02-20 23:32:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78739-20120220182508.patch</filename>
            <type>text/plain</type>
            <size>34099</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTlmMGQ5ODkwYzViMmMy
ZDNmYTQ3NDVmZDYwZGU3MGI1OWYxMDU1ZC4uYjgzNjFhNWFjZDY0ODYwY2M3NmY1MDA1MTgzYjVh
ZTBlMTYwNTZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAyLTIwICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBX
aXJlIHVwIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIHRvIGNocm9taXVtIGNvbXBvc2l0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NzM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAo
T09QUyEpCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAo
U2Nyb2xsaW5nQ29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OnNldENsaWVudCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JDbGllbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvckNsaWVudDo6flNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2xpZW50
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2NoZWR1bGVU
cmVlU3RhdGVDb21taXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdDb29yZGluYXRvcjo6Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQpOgorCiAyMDEyLTAy
LTIwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlZCBM
b2NhbGl6YWJsZS5zdHJpbmdzIGFmdGVyIHIxMDc0NDAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKaW5kZXggYjg0ZDExMjZiZjAwMzcyMWE5NjYxOWEyOTQ0OGMxODhlNGE4ODNmNi4uZjM2OTUx
N2NlMjY5MWFmMWI2NWM0ZDAwYWUxZThmZDNhNDE4OTA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcApAQCAtMTMzOSwxMiArMTMzOSwxMCBAQCB2b2lkIEZyYW1lVmlldzo6YWRkRml4ZWRP
YmplY3QoKQogICAgICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKICAgICAgICAgICAgIHVwZGF0
ZUNhbkJsaXRPblNjcm9sbFJlY3Vyc2l2ZWx5KCk7CiAKLSNpZiBFTkFCTEUoVEhSRUFERURfU0NS
T0xMSU5HKQogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewogICAg
ICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9
IHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5n
Q29vcmRpbmF0b3ItPmZyYW1lVmlld0hhc0ZpeGVkT2JqZWN0c0RpZENoYW5nZSh0aGlzKTsKICAg
ICAgICAgfQotI2VuZGlmCiAgICAgfQogfQogCkBAIC0xMzU0LDEyICsxMzUyLDEwIEBAIHZvaWQg
RnJhbWVWaWV3OjpyZW1vdmVGaXhlZE9iamVjdCgpCiAgICAgLS1tX2ZpeGVkT2JqZWN0Q291bnQ7
CiAKICAgICBpZiAoIW1fZml4ZWRPYmplY3RDb3VudCkgewotI2lmIEVOQUJMRShUSFJFQURFRF9T
Q1JPTExJTkcpCiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7CiAg
ICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
ID0gcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKICAgICAgICAgICAgICAgICBzY3JvbGxp
bmdDb29yZGluYXRvci0+ZnJhbWVWaWV3SGFzRml4ZWRPYmplY3RzRGlkQ2hhbmdlKHRoaXMpOwog
ICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAgICAvLyBGSVhNRTogSW4gYWRkRml4ZWRPYmplY3Qo
KSB3ZSBvbmx5IGNhbGwgdGhpcyBpZiB0aGVyZSdzIGEgcGxhdGZvcm0gd2lkZ2V0LAogICAgICAg
ICAvLyB3aHkgaXNuJ3QgdGhlIHNhbWUgY2hlY2sgYmVpbmcgbWFkZSBoZXJlPwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
CmluZGV4IDg1YjA3ZjE4NzdmNjFkM2U0ZjQwOTM5MGZhMjRjMWYwODliNjBjMWEuLjNhMjI3ZDBl
ZTkwOTBmNDc4ZTQ2MmI2ZTJlOGY2OTMyNTM1MmY5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTk5LDcg
Kzk5LDE1IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvb3JkaW5hdGVzU2Nyb2xsaW5n
Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWV3CiAgICAgaWYgKGZyYW1lVmlldy0+ZnJh
bWUoKSAhPSBtX3BhZ2UtPm1haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBXZSBjdXJyZW50bHkgb25seSBzdXBwb3J0IGNvbXBvc2l0
ZWQgbW9kZS4KKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgUmVuZGVyVmll
dyogcmVuZGVyVmlldyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmNvbnRlbnRSZW5kZXJlcigpOwor
ICAgIGlmICghcmVuZGVyVmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBy
ZW5kZXJWaWV3LT51c2VzQ29tcG9zaXRpbmcoKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGZhbHNl
OwogfQogCiBzdGF0aWMgUmVnaW9uIGNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihGcmFt
ZVZpZXcqIGZyYW1lVmlldykKQEAgLTE5OSwxMCArMjA3LDEwIEBAIHZvaWQgU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcqIGZyYW1lVmll
dykKICAgICBpZiAoZnJhbWVWaWV3LT5mcmFtZSgpICE9IG1fcGFnZS0+bWFpbkZyYW1lKCkpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIHNldFNjcm9sbExheWVyKHNjcm9sbExheWVyRm9yRnJhbWVW
aWV3KGZyYW1lVmlldykpOwogICAgIGZyYW1lVmlld0xheW91dFVwZGF0ZWQoZnJhbWVWaWV3KTsK
ICAgICByZWNvbXB1dGVXaGVlbEV2ZW50SGFuZGxlckNvdW50KCk7CiAgICAgdXBkYXRlU2hvdWxk
VXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpOwotICAgIHNldFNjcm9sbExh
eWVyKHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwogfQogCiBib29sIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJhbWVWaWV3KiBm
cmFtZVZpZXcsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IDI0
ZDQwMTQ5NGYwY2E5MWNmNDI2YjUwMDYyZDgzZGNmYzhkNjJjZjguLjdmZDViMWM3MGJkNDZkNzVl
MTY3Y2NhZjVmNTEyY2E2MWZiNWU0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtNjEsNyArNjEsNyBAQCBjbGFz
cyBQbGF0Zm9ybUdlc3R1cmVFdmVudDsKIGNsYXNzIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNjcm9sbGluZ0Nvb3JkaW5hdG9yPiB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2Nyb2xsaW5nQ29vcmRpbmF0b3I+IGNyZWF0ZShQYWdl
Kik7Ci0gICAgflNjcm9sbGluZ0Nvb3JkaW5hdG9yKCk7CisgICAgdmlydHVhbCB+U2Nyb2xsaW5n
Q29vcmRpbmF0b3IoKTsKIAogICAgIHZvaWQgcGFnZURlc3Ryb3llZCgpOwogCkBAIC0xMTAsOSAr
MTEwLDEwIEBAIHB1YmxpYzoKICAgICAvLyBEaXNwYXRjaGVkIGJ5IHRoZSBzY3JvbGxpbmcgdHJl
ZSB3aGVuZXZlciB0aGUgbWFpbiBmcmFtZSBzY3JvbGwgcG9zaXRpb24gY2hhbmdlcyBhbmQgdGhl
IHNjcm9sbCBsYXllciBwb3NpdGlvbiBuZWVkcyB0byBiZSB1cGRhdGVkIGFzIHdlbGwuCiAgICAg
dm9pZCB1cGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlvbkFuZFNjcm9sbExheWVyUG9zaXRpb24o
Y29uc3QgSW50UG9pbnQmKTsKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBleHBsaWNpdCBT
Y3JvbGxpbmdDb29yZGluYXRvcihQYWdlKik7CiAKK3ByaXZhdGU6CiAgICAgdm9pZCByZWNvbXB1
dGVXaGVlbEV2ZW50SGFuZGxlckNvdW50KCk7CiAgICAgdm9pZCB1cGRhdGVTaG91bGRVcGRhdGVT
Y3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5n
Q29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKaW5kZXggMThhNmQ3YzE1MGYyNjc3MDRmMWMyYmZlZmUz
ZDc0ZTllZmRmYTE1MS4uMjBmZjIxMmViYzM4MDRiMzFmMThlYzc3ZTU0MjY0ZTU4Mjc4M2UzYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xs
aW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKQEAgLTI3LDU1
ICsyNyw3OSBAQAogCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKIAorI2luY2x1
ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJSZWdpb24uaCIKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtIDogcHVibGljIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yIHsKK3B1YmxpYzoKKyAgICBTY3JvbGxpbmdDb29yZGluYXRvckNo
cm9taXVtKFBhZ2UqIHBhZ2UpCisgICAgICAgIDogU2Nyb2xsaW5nQ29vcmRpbmF0b3IocGFnZSkK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+U2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1
bSgpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyBMYXllckNocm9taXVtKiBleHRyYWN0TGF5
ZXIoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0qPihz
Y3JvbGxpbmdDb29yZGluYXRvciktPm1fc2Nyb2xsTGF5ZXIuZ2V0KCk7CisgICAgfQorCisgICAg
c3RhdGljIHZvaWQgc2V0TGF5ZXIoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLCBMYXllckNocm9taXVtKiBsYXllcikKKyAgICB7CisgICAgICAgIHN0YXRpY19jYXN0
PFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0qPihzY3JvbGxpbmdDb29yZGluYXRvciktPm1f
c2Nyb2xsTGF5ZXIgPSBsYXllcjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IG1fc2Nyb2xsTGF5ZXI7Cit9OworCiBQYXNzUmVmUHRyPFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yPiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlKFBhZ2UqIHBhZ2UpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTY3JvbGxpbmdDb29yZGluYXRvcihwYWdlKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtKHBhZ2UpKTsKIH0K
IAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3SG9yaXpvbnRhbFNjcm9sbGJh
ckxheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyosIEdyYXBoaWNzTGF5ZXIqIGhvcml6b250YWxTY3Jv
bGxiYXJMYXllcikKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IQogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdWZXJ0
aWNhbFNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyosIEdyYXBoaWNzTGF5ZXIqIHZl
cnRpY2FsU2Nyb2xsYmFyTGF5ZXIpCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCEKIH0KIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0
U2Nyb2xsTGF5ZXIoR3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXIpCiB7Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCEKKyAgICBTY3JvbGxpbmdDb29y
ZGluYXRvckNocm9taXVtOjpzZXRMYXllcih0aGlzLCBzY3JvbGxMYXllciA/IHNjcm9sbExheWVy
LT5wbGF0Zm9ybUxheWVyKCkgOiAwKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgUmVnaW9uJikKK3ZvaWQgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFJlZ2lvbiYgcmVn
aW9uKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQhCisgICAgaWYgKExheWVyQ2hyb21pdW0qIGxheWVyID0gU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
aHJvbWl1bTo6ZXh0cmFjdExheWVyKHRoaXMpKQorICAgICAgICBsYXllci0+c2V0Tm9uRmFzdFNj
cm9sbGFibGVSZWdpb24ocmVnaW9uKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
c2V0U2Nyb2xsUGFyYW1ldGVycyhTY3JvbGxFbGFzdGljaXR5IGhvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5LCBTY3JvbGxFbGFzdGljaXR5IHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXNFbmFibGVk
SG9yaXpvbnRhbFNjcm9sbGJhciwgYm9vbCBoYXNFbmFibGVkVmVydGljYWxTY3JvbGxiYXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJl
Y3QmIHZpZXdwb3J0UmVjdCwgY29uc3QgSW50U2l6ZSYgY29udGVudHNTaXplKQogewotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQhCiB9CiAKLXZvaWQg
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5zaWduZWQp
Cit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRXaGVlbEV2ZW50SGFuZGxlckNvdW50KHVu
c2lnbmVkIHdoZWVsRXZlbnRIYW5kbGVyQ291bnQpCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCEKKyAgICBpZiAoTGF5ZXJDaHJvbWl1bSogbGF5
ZXIgPSBTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtOjpleHRyYWN0TGF5ZXIodGhpcykpCisg
ICAgICAgIGxheWVyLT5zZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKHdoZWVsRXZlbnRIYW5kbGVy
Q291bnQgPiAwKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2hvdWxkVXBk
YXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChib29sKQordm9pZCBTY3JvbGxpbmdD
b29yZGluYXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZChib29sIHNob3VsZCkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAvLyBGSVhN
RTogSW1wbGVtZW50IQorICAgIGlmIChMYXllckNocm9taXVtKiBsYXllciA9IFNjcm9sbGluZ0Nv
b3JkaW5hdG9yQ2hyb21pdW06OmV4dHJhY3RMYXllcih0aGlzKSkKKyAgICAgICAgbGF5ZXItPnNl
dFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChzaG91bGQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uY3BwCmluZGV4IDRiY2YyOTdmZjkyNDY4Yzk4NGY1YjRmY2MxMmJmZjUzYjI2NmQ2NzQuLjY3
ODNhYzlkZWZkNjg3MzNjNTg0OTUyNzhhOTRiYzE5YjM1NDNjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uY3BwCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VTa2lhLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2VuZGlmCi0jaW5jbHVkZSAiUmVnaW9u
LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVh
bS5oIgogI2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgpAQCAtNjAsNiArNTks
OCBAQCBMYXllckNocm9taXVtOjpMYXllckNocm9taXVtKCkKICAgICAsIG1fbGF5ZXJJZChzX25l
eHRMYXllcklkKyspCiAgICAgLCBtX3BhcmVudCgwKQogICAgICwgbV9zY3JvbGxhYmxlKGZhbHNl
KQorICAgICwgbV9zaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoZmFsc2UpCisgICAgLCBtX2hhdmVX
aGVlbEV2ZW50SGFuZGxlcnMoZmFsc2UpCiAgICAgLCBtX2FuY2hvclBvaW50KDAuNSwgMC41KQog
ICAgICwgbV9iYWNrZ3JvdW5kQ29sb3IoMCwgMCwgMCwgMCkKICAgICAsIG1fYmFja2dyb3VuZENv
dmVyc1ZpZXdwb3J0KGZhbHNlKQpAQCAtMzY5LDYgKzM3MCwzMCBAQCB2b2lkIExheWVyQ2hyb21p
dW06OnNldFNjcm9sbGFibGUoYm9vbCBzY3JvbGxhYmxlKQogICAgIHNldE5lZWRzQ29tbWl0KCk7
CiB9CiAKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKGJv
b2wgc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKQoreworICAgIGlmIChtX3Nob3VsZFNjcm9sbE9u
TWFpblRocmVhZCA9PSBzaG91bGRTY3JvbGxPbk1haW5UaHJlYWQpCisgICAgICAgIHJldHVybjsK
KyAgICBtX3Nob3VsZFNjcm9sbE9uTWFpblRocmVhZCA9IHNob3VsZFNjcm9sbE9uTWFpblRocmVh
ZDsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCit2b2lkIExheWVyQ2hyb21pdW06OnNldEhh
dmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKQoreworICAg
IGlmIChtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMgPT0gaGF2ZVdoZWVsRXZlbnRIYW5kbGVycykK
KyAgICAgICAgcmV0dXJuOworICAgIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyA9IGhhdmVXaGVl
bEV2ZW50SGFuZGxlcnM7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwordm9pZCBMYXllckNo
cm9taXVtOjpzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBSZWdpb24mIHJlZ2lvbikK
K3sKKyAgICBpZiAobV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiA9PSByZWdpb24pCisgICAgICAg
IHJldHVybjsKKyAgICBtX25vbkZhc3RTY3JvbGxhYmxlUmVnaW9uID0gcmVnaW9uOworICAgIHNl
dE5lZWRzQ29tbWl0KCk7Cit9CisKIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0RG91YmxlU2lkZWQo
Ym9vbCBkb3VibGVTaWRlZCkKIHsKICAgICBpZiAobV9kb3VibGVTaWRlZCA9PSBkb3VibGVTaWRl
ZCkKQEAgLTQyMyw2ICs0NDgsOSBAQCB2b2lkIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVz
VG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgIGxheWVyLT5zZXRJc05vbkNvbXBvc2l0ZWRDb250
ZW50KG1faXNOb25Db21wb3NpdGVkQ29udGVudCk7CiAgICAgbGF5ZXItPnNldE1hc2tzVG9Cb3Vu
ZHMobV9tYXNrc1RvQm91bmRzKTsKICAgICBsYXllci0+c2V0U2Nyb2xsYWJsZShtX3Njcm9sbGFi
bGUpOworICAgIGxheWVyLT5zZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQobV9zaG91bGRTY3Jv
bGxPbk1haW5UaHJlYWQpOworICAgIGxheWVyLT5zZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKG1f
aGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk7CisgICAgbGF5ZXItPnNldE5vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uKG1fbm9uRmFzdFNjcm9sbGFibGVSZWdpb24pOwogICAgIGxheWVyLT5zZXROYW1lKG1f
bmFtZSk7CiAgICAgbGF5ZXItPnNldE9wYXF1ZShtX29wYXF1ZSk7CiAgICAgbGF5ZXItPnNldE9w
YWNpdHkobV9vcGFjaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBmZjJlN2QyODYyNjIyZmFk
MmMwNjkzOGQ2ZjUyNTY5MTQwZjg4M2ZhLi42MGI0MjFhNWYwMjcxMmU2ZDAxZTVlOGU3ODBhZjNk
MjA1NzFkNmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNs
dWRlICJQcm9ncmFtQmluZGluZy5oIgorI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlJl
bmRlclN1cmZhY2VDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlNoYWRlckNocm9taXVtLmgiCiAjaW5j
bHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKQEAgLTU2LDcgKzU3LDYgQEAgY2xhc3MgQ0NM
YXllckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7CiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVy
OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7Ci1jbGFzcyBSZWdpb247CiAKIC8vIEJhc2UgY2xh
c3MgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzLiBTcGVjaWFsIGxheWVyIHR5cGVzIGFyZSBkZXJpdmVk
IGZyb20KIC8vIHRoaXMgY2xhc3MuCkBAIC0xMzEsNyArMTMxLDkgQEAgcHVibGljOgogICAgIGNv
bnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUG9z
aXRpb247IH0KIAogICAgIHZvaWQgc2V0U2Nyb2xsYWJsZShib29sKTsKLSAgICBib29sIHNjcm9s
bGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGU7IH0KKyAgICB2b2lkIHNldFNob3Vs
ZFNjcm9sbE9uTWFpblRocmVhZChib29sKTsKKyAgICB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFu
ZGxlcnMoYm9vbCk7CisgICAgdm9pZCBzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBS
ZWdpb24mKTsKIAogICAgIEludFNpemUgc2Nyb2xsRGVsdGEoKSBjb25zdCB7IHJldHVybiBJbnRT
aXplKCk7IH0KIApAQCAtMjY0LDYgKzI2Niw5IEBAIHByaXZhdGU6CiAgICAgSW50UmVjdCBtX3Zp
c2libGVMYXllclJlY3Q7CiAgICAgSW50UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKICAgICBib29s
IG1fc2Nyb2xsYWJsZTsKKyAgICBib29sIG1fc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkOworICAg
IGJvb2wgbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzOworICAgIFJlZ2lvbiBtX25vbkZhc3RTY3Jv
bGxhYmxlUmVnaW9uOwogICAgIEZsb2F0UG9pbnQgbV9wb3NpdGlvbjsKICAgICBGbG9hdFBvaW50
IG1fYW5jaG9yUG9pbnQ7CiAgICAgQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFu
ZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJ
bnB1dEhhbmRsZXIuaAppbmRleCAwNTdkNzliMWExMTg4YzliMDE5YjFiMzBmN2RkZjYyM2MxMDEx
MWZlLi42YzA1NTk5NGM1OGVjYTQxMTMxOWE5Yzk5ZDE0M2Y5YzE3ZjNlMmMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFu
ZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDSW5wdXRIYW5kbGVyLmgKQEAgLTQ2LDEzICs0NiwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldE5lZWRzUmVkcmF3KCkgPSAwOwogCiAgICAgZW51bSBTY3JvbGxTdGF0dXMgeyBT
Y3JvbGxGYWlsZWQsIFNjcm9sbFN0YXJ0ZWQsIFNjcm9sbElnbm9yZWQgfTsKKyAgICBlbnVtIFNj
cm9sbElucHV0VHlwZSB7IEdlc3R1cmUsIFdoZWVsIH07CiAKICAgICAvLyBBdHRlbXB0IHRvIHN0
YXJ0IHNjcm9sbGluZyBhIGxheWVyIGF0IGEgZ2l2ZW4gcG9pbnQgaW4gd2luZG93CiAgICAgLy8g
Y29vcmRpbmF0ZXMuIFJldHVybnMgU2Nyb2xsU3RhcnRlZCBpZiB0aGUgbGF5ZXIgYXQgdGhlIGNv
b3JkaW5hdGVzIGNhbgogICAgIC8vIGJlIHNjcm9sbGVkLCBTY3JvbGxGYWlsZWQgaWYgdGhlIHNj
cm9sbCBldmVudCBzaG91bGQgaW5zdGVhZCBiZQogICAgIC8vIGRlbGVnYXRlZCB0byB0aGUgbWFp
biB0aHJlYWQsIG9yIFNjcm9sbElnbm9yZWQgaWYgdGhlcmUgaXMgbm90aGluZyB0bwogICAgIC8v
IGJlIHNjcm9sbGVkIGF0IHRoZSBnaXZlbiBjb29yZGluYXRlcy4KLSAgICB2aXJ0dWFsIFNjcm9s
bFN0YXR1cyBzY3JvbGxCZWdpbihjb25zdCBJbnRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFsIFNj
cm9sbFN0YXR1cyBzY3JvbGxCZWdpbihjb25zdCBJbnRQb2ludCYsIFNjcm9sbElucHV0VHlwZSkg
PSAwOwogCiAgICAgLy8gU2Nyb2xsIHRoZSBsYXllciBzZWxlY3RlZCB3aXRoIHNjcm9sbEJlZ2lu
KCkuIElmIHRoZXJlIGlzIG5vIHJvb20gdG8KICAgICAvLyBtb3ZlIHRoZSBsYXllciBpbiB0aGUg
cmVxdWVzdGVkIGRpcmVjdGlvbiwgaXRzIGZpcnN0IGFuY2VzdG9yIGxheWVyIHRoYXQKQEAgLTY0
LDcgKzY1LDYgQEAgcHVibGljOgogICAgIC8vIGNhbGxlZCBpZiBzY3JvbGxCZWdpbigpIHJldHVy
bmVkIFNjcm9sbFN0YXJ0ZWQuCiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbEVuZCgpID0gMDsKIAot
ICAgIHZpcnR1YWwgYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBwaW5jaEdlc3R1cmVCZWdpbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGluY2hH
ZXN0dXJlVXBkYXRlKGZsb2F0IG1hZ25pZnlEZWx0YSwgY29uc3QgSW50UG9pbnQmIGFuY2hvcikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVFbmQoKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5jcHAKaW5kZXggYzJiZDM0YjBiZmI4ZTkwODc2MzQzMzFkMWNlMjYxZjJhZWJiZGQ2
Ni4uNDY0NTdkZDQwOTI3MTdkZGViNTYwZGY2YmM5N2M0NWZlOWU2ZmQyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmNwcApAQCAtNDUsNiArNDUsOCBAQCBDQ0xheWVySW1wbDo6Q0NMYXllckltcGwo
aW50IGlkKQogICAgICwgbV9hbmNob3JQb2ludCgwLjUsIDAuNSkKICAgICAsIG1fYW5jaG9yUG9p
bnRaKDApCiAgICAgLCBtX3Njcm9sbGFibGUoZmFsc2UpCisgICAgLCBtX3Nob3VsZFNjcm9sbE9u
TWFpblRocmVhZChmYWxzZSkKKyAgICAsIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhmYWxzZSkK
ICAgICAsIG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KGZhbHNlKQogICAgICwgbV9kb3VibGVT
aWRlZCh0cnVlKQogICAgICwgbV9sYXllclByb3BlcnR5Q2hhbmdlZChmYWxzZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5oCmluZGV4IDllNmM1NTAwN2VlN2UzOGQ3NWY2MzExYzlhMGY4ZGVkYTc0NzZlYWMu
LmMwYjIzYjk1MmEzODQwOWIzMGIxNjc4OGMxZWE0OTZjZGMyOTg3NzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAi
UmVnaW9uLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0
aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCkBAIC0xODAsNiArMTgx
LDE1IEBAIHB1YmxpYzoKICAgICBib29sIHNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Nj
cm9sbGFibGU7IH0KICAgICB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCBzY3JvbGxhYmxlKSB7IG1f
c2Nyb2xsYWJsZSA9IHNjcm9sbGFibGU7IH0KIAorICAgIGJvb2wgc2hvdWxkU2Nyb2xsT25NYWlu
VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTY3JvbGxPbk1haW5UaHJlYWQ7IH0KKyAg
ICB2b2lkIHNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChib29sIHNob3VsZFNjcm9sbE9uTWFp
blRocmVhZCkgeyBtX3Nob3VsZFNjcm9sbE9uTWFpblRocmVhZCA9IHNob3VsZFNjcm9sbE9uTWFp
blRocmVhZDsgfQorCisgICAgYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzOyB9CisgICAgdm9pZCBzZXRIYXZlV2hlZWxF
dmVudEhhbmRsZXJzKGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycykgeyBtX2hhdmVXaGVlbEV2
ZW50SGFuZGxlcnMgPSBoYXZlV2hlZWxFdmVudEhhbmRsZXJzOyB9CisKKyAgICBjb25zdCBSZWdp
b24mIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gbV9ub25GYXN0U2Ny
b2xsYWJsZVJlZ2lvbjsgfQorICAgIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29u
c3QgUmVnaW9uJiByZWdpb24pIHsgbV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiA9IHJlZ2lvbjsg
fQorCiAgICAgY29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fdmlzaWJsZUxheWVyUmVjdDsgfQogICAgIHZvaWQgc2V0VmlzaWJsZUxheWVyUmVjdChjb25z
dCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KSB7IG1fdmlzaWJsZUxheWVyUmVjdCA9IHZpc2li
bGVMYXllclJlY3Q7IH0KIApAQCAtMjQyLDYgKzI1Miw5IEBAIHByaXZhdGU6CiAgICAgSW50U2l6
ZSBtX2NvbnRlbnRCb3VuZHM7CiAgICAgSW50UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKICAgICBi
b29sIG1fc2Nyb2xsYWJsZTsKKyAgICBib29sIG1fc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkOwor
ICAgIGJvb2wgbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzOworICAgIFJlZ2lvbiBtX25vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uOwogICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOwogICAgIGJvb2wg
bV9iYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCmluZGV4IGU0NjJlNTMxOGJmYzdmMzc5NGRhODY1Y2VmZjMzYmFlYzVkMmU1MDEuLjBhZjky
ZWYyZjNhZDM0NDIxMzc4MzI2NDU0ZDBkZDJiOWIyN2ZjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcApAQCAtNjgsNyArNjgsNiBAQCBDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJU
cmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncwog
ICAgICwgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX3NldHRpbmdz
KHNldHRpbmdzKQogICAgICwgbV92aXNpYmxlKHRydWUpCi0gICAgLCBtX2hhdmVXaGVlbEV2ZW50
SGFuZGxlcnMoZmFsc2UpCiAgICAgLCBtX3BhZ2VTY2FsZUZhY3RvcigxKQogICAgICwgbV9taW5Q
YWdlU2NhbGVGYWN0b3IoMSkKICAgICAsIG1fbWF4UGFnZVNjYWxlRmFjdG9yKDEpCkBAIC0xNzcs
NyArMTc2LDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uSW1wbFRocmVh
ZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKICAgICAgICAgaG9zdEltcGwtPnNldFJv
b3RMYXllcigwKTsKIAogICAgIGhvc3RJbXBsLT5zZXRTb3VyY2VGcmFtZU51bWJlcihmcmFtZU51
bWJlcigpKTsKLSAgICBob3N0SW1wbC0+c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhtX2hhdmVX
aGVlbEV2ZW50SGFuZGxlcnMpOwogICAgIGhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUodmlld3Bv
cnRTaXplKCkpOwogICAgIGhvc3RJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMobV9w
YWdlU2NhbGVGYWN0b3IsIG1fbWluUGFnZVNjYWxlRmFjdG9yLCBtX21heFBhZ2VTY2FsZUZhY3Rv
cik7CiAKQEAgLTM0MCwxNCArMzM4LDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRpZEJlY29t
ZUludmlzaWJsZU9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW0KICAgICAg
ICAgaG9zdEltcGwtPnNldFJvb3RMYXllcigwKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKQot
ewotICAgIGlmIChtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMgPT0gaGF2ZVdoZWVsRXZlbnRIYW5k
bGVycykKLSAgICAgICAgcmV0dXJuOwotICAgIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyA9IGhh
dmVXaGVlbEV2ZW50SGFuZGxlcnM7Ci0gICAgbV9wcm94eS0+c2V0TmVlZHNDb21taXQoKTsKLX0K
LQogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IElu
dFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJs
ZSBkdXJhdGlvblNlYykKIHsKICAgICBtX3Byb3h5LT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0
YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgZHVyYXRpb25TZWMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaAppbmRleCBmNWUxMTM0YzgxYjQzZTIxODg2YTVkOTM1MzBlZTg4ZjE5
YTQwMzI1Li42ZjNkMmQ0OGM2ZWMyNjFlNzk3YjUyODFiY2Y0ODQ1NTAwN2UxMGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMTgwLDggKzE4MCw2IEBAIHB1YmxpYzoKICAgICBi
b29sIHZpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7IH0KICAgICB2b2lkIHNldFZp
c2libGUoYm9vbCk7CiAKLSAgICB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCk7
Ci0KICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHdlIHNob3VsZCBhYm9ydCB0aGlzIGZyYW1lIGR1
ZSB0byBpbml0aWFsaXphdGlvbiBmYWlsdXJlLgogICAgIGJvb2wgdXBkYXRlTGF5ZXJzKCk7CiAK
QEAgLTIzNSw3ICsyMzMsNiBAQCBwcml2YXRlOgogCiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6
ZTsKICAgICBib29sIG1fdmlzaWJsZTsKLSAgICBib29sIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVy
czsKICAgICB0eXBlZGVmIEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0M0QqLCBSZWZQdHI8UmF0ZUxp
bWl0ZXI+ID4gUmF0ZUxpbWl0ZXJNYXA7CiAgICAgUmF0ZUxpbWl0ZXJNYXAgbV9yYXRlTGltaXRl
cnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggMDU0YmVi
MzJlZTUzNTljYmM1YmE1NGY5MWI2YTk2YzE1NDBmZjViNS4uZmYxZmMyMmMyNTJhYzMwYmNlM2M3
ZGY2NTNhYzY5N2VjYjFjNjY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5jcHAKQEAgLTUyLDcgKzUyLDYgQEAgQ0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVI
b3N0SW1wbChjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWUKICAgICAsIG1f
ZnJhbWVOdW1iZXIoMCkKICAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCiAgICAgLCBtX3Zpc2li
bGUodHJ1ZSkKLSAgICAsIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhmYWxzZSkKICAgICAsIG1f
cGFnZVNjYWxlKDEpCiAgICAgLCBtX3BhZ2VTY2FsZURlbHRhKDEpCiAgICAgLCBtX3NlbnRQYWdl
U2NhbGVEZWx0YSgxKQpAQCAtNDY2LDExICs0NjUsMjggQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpzZXROZWVkc1JlZHJhdygpCiAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBs
VGhyZWFkKCk7CiB9CiAKLUNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgQ0NMYXll
clRyZWVIb3N0SW1wbDo6c2Nyb2xsQmVnaW4oY29uc3QgSW50UG9pbnQmKQorQ0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3JvbGxCZWdpbihj
b25zdCBJbnRQb2ludCYgcG9pbnQsIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJbnB1dFR5
cGUgdHlwZSkKIHsKICAgICAvLyBUT0RPOiBDaGVjayBmb3Igc2Nyb2xsYWJsZSBzdWJsYXllcnMu
Ci0gICAgaWYgKCFtX3Njcm9sbExheWVySW1wbCB8fCAhbV9zY3JvbGxMYXllckltcGwtPnNjcm9s
bGFibGUoKSkKKyAgICBpZiAoIW1fc2Nyb2xsTGF5ZXJJbXBsIHx8ICFtX3Njcm9sbExheWVySW1w
bC0+c2Nyb2xsYWJsZSgpKSB7CisgICAgICAgIFRSQUNFX0VWRU5UKCJzY3JvbGxCZWdpbiBJZ25v
cmVkIG5vIHNjcm9sbGFibGUiLCB0aGlzLCAwKTsKICAgICAgICAgcmV0dXJuIFNjcm9sbElnbm9y
ZWQ7CisgICAgfQorCisgICAgaWYgKG1fc2Nyb2xsTGF5ZXJJbXBsLT5zaG91bGRTY3JvbGxPbk1h
aW5UaHJlYWQoKSkgeworICAgICAgICBUUkFDRV9FVkVOVCgic2Nyb2xsQmVnaW4gRmFpbGVkIHNo
b3VsZFNjcm9sbE9uTWFpblRocmVhZCIsIHRoaXMsIDApOworICAgICAgICByZXR1cm4gU2Nyb2xs
RmFpbGVkOworICAgIH0KKworICAgIGlmIChtX3Njcm9sbExheWVySW1wbC0+bm9uRmFzdFNjcm9s
bGFibGVSZWdpb24oKS5jb250YWlucyhwb2ludCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQoInNj
cm9sbEJlZ2luIEZhaWxlZCBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiIsIHRoaXMsIDApOworICAg
ICAgICByZXR1cm4gU2Nyb2xsRmFpbGVkOworICAgIH0KKworICAgIGlmICh0eXBlID09IENDSW5w
dXRIYW5kbGVyQ2xpZW50OjpXaGVlbCAmJiBtX3Njcm9sbExheWVySW1wbC0+aGF2ZVdoZWVsRXZl
bnRIYW5kbGVycygpKSB7CisgICAgICAgIFRSQUNFX0VWRU5UKCJzY3JvbGxCZWdpbiBGYWlsZWQg
d2hlZWxFdmVudEhhbmRsZXJzIiwgdGhpcywgMCk7CisgICAgICAgIHJldHVybiBTY3JvbGxGYWls
ZWQ7CisgICAgfQogCiAgICAgcmV0dXJuIFNjcm9sbFN0YXJ0ZWQ7CiB9CkBAIC00OTAsMTEgKzUw
Niw2IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsRW5kKCkKIHsKIH0KIAotYm9v
bCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpoYXZlV2hlZWxFdmVudEhhbmRsZXJzKCkKLXsKLSAgICBy
ZXR1cm4gbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzOwotfQotCiB2b2lkIENDTGF5ZXJUcmVlSG9z
dEltcGw6OnBpbmNoR2VzdHVyZUJlZ2luKCkKIHsKICAgICBtX3BpbmNoR2VzdHVyZUFjdGl2ZSA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggODk0OTE1NDJl
NDMzZmFhZmVmMjY2YTRlZjFhODlkMDgwNjBiOWFmZC4uZTY3OTEyNzAwOWU4NDY2ZjZmMWUxYTll
OTEyYTJhZDlmOTg0NTU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApA
QCAtNTksMTAgKzU5LDkgQEAgcHVibGljOgogCiAgICAgLy8gQ0NJbnB1dEhhbmRsZXJDbGllbnQg
aW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKLSAgICB2
aXJ0dWFsIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsQmVnaW4oY29u
c3QgSW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxT
dGF0dXMgc2Nyb2xsQmVnaW4oY29uc3QgSW50UG9pbnQmLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6
U2Nyb2xsSW5wdXRUeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxFbmQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaGF2
ZVdoZWVsRXZlbnRIYW5kbGVycygpOwogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVCZWdp
bigpOwogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVVcGRhdGUoZmxvYXQsIGNvbnN0IElu
dFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZUVuZCgpOwpAQCAtOTgsNyAr
OTcsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIHZpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3Zp
c2libGU7IH0KICAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7Ci0gICAgdm9pZCBzZXRIYXZlV2hl
ZWxFdmVudEhhbmRsZXJzKGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycykgeyBtX2hhdmVXaGVl
bEV2ZW50SGFuZGxlcnMgPSBoYXZlV2hlZWxFdmVudEhhbmRsZXJzOyB9CiAKICAgICBpbnQgc291
cmNlRnJhbWVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUZyYW1lTnVtYmVyOyB9CiAg
ICAgdm9pZCBzZXRTb3VyY2VGcmFtZU51bWJlcihpbnQgZnJhbWVOdW1iZXIpIHsgbV9zb3VyY2VG
cmFtZU51bWJlciA9IGZyYW1lTnVtYmVyOyB9CkBAIC0xNDMsNyArMTQxLDYgQEAgcHJpdmF0ZToK
ICAgICBDQ1NldHRpbmdzIG1fc2V0dGluZ3M7CiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsK
ICAgICBib29sIG1fdmlzaWJsZTsKLSAgICBib29sIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsK
IAogICAgIGZsb2F0IG1fcGFnZVNjYWxlOwogICAgIGZsb2F0IG1fcGFnZVNjYWxlRGVsdGE7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVu
dEhvc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0LmNwcAppbmRleCBjOWJlMDhhODQ3YTZmYmJiYjc4ZWFjYWZjMmIzYTAyZjM0YjBiN2Iy
Li5iYjU0MmFmY2FjNTE1NjBlZDk3ZDk5YzY1NzAwZThmNzljZjQ5YmZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5j
cHAKQEAgLTEwMyw2ICsxMDMsNyBAQCB2b2lkIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0
Vmlld3BvcnQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld3BvcnRTaXplLAogCiAgICAgbV92
aWV3cG9ydFNpemUgPSB2aWV3cG9ydFNpemU7CiAgICAgc2Nyb2xsTGF5ZXIoKS0+c2V0U2Nyb2xs
UG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOworICAgIHNjcm9sbExheWVyKCktPnNldFBvc2l0aW9u
KFdlYkNvcmU6OkZsb2F0UG9pbnQoLXNjcm9sbFBvc2l0aW9uLngoKSwgLXNjcm9sbFBvc2l0aW9u
LnkoKSkpOwogICAgIC8vIER1ZSB0byB0aGUgcG9zc2liaWxpdHkgb2YgcGluY2ggem9vbSwgdGhl
IG5vbmNvbXBvc2l0ZWQgbGF5ZXIgaXMgYWx3YXlzCiAgICAgLy8gYXNzdW1lZCB0byBiZSBzY3Jv
bGxhYmxlLgogICAgIHNjcm9sbExheWVyKCktPnNldFNjcm9sbGFibGUodHJ1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbC5jcHAKaW5kZXggNDBjMTUxZGZkMTljNzhlN2RjZDRhYTljY2U1MDU1MjE3NTkz
NDRhMy4uMzk3MzA4YjUyOWNjNDE3NDcxODdjN2Y4NjdkMTIxYjliMjNmY2FlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsLmNwcApAQCAtMTIxLDkgKzEyMSw5IEBAIHZvaWQgV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGw6OmhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgZXZl
bnQpCiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQobV9j
bGllbnQpOwogCi0gICAgaWYgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVl
bCAmJiAhbV9pbnB1dEhhbmRsZXJDbGllbnQtPmhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoKSkgewor
ICAgIGlmIChldmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWwpIHsKICAgICAg
ICAgY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50JiB3aGVlbEV2ZW50ID0gKnN0YXRpY19jYXN0PGNv
bnN0IFdlYk1vdXNlV2hlZWxFdmVudCo+KCZldmVudCk7Ci0gICAgICAgIENDSW5wdXRIYW5kbGVy
Q2xpZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsU3RhdHVzID0gbV9pbnB1dEhhbmRsZXJDbGllbnQt
PnNjcm9sbEJlZ2luKEludFBvaW50KHdoZWVsRXZlbnQueCwgd2hlZWxFdmVudC55KSk7CisgICAg
ICAgIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsU3RhdHVzID0gbV9p
bnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJlZ2luKEludFBvaW50KHdoZWVsRXZlbnQueCwgd2hl
ZWxFdmVudC55KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKTsKICAgICAgICAgc3dpdGNo
IChzY3JvbGxTdGF0dXMpIHsKICAgICAgICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Ny
b2xsU3RhcnRlZDoKICAgICAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCeShJ
bnRTaXplKC13aGVlbEV2ZW50LmRlbHRhWCwgLXdoZWVsRXZlbnQuZGVsdGFZKSk7CkBAIC0xNDMs
NyArMTQzLDcgQEAgdm9pZCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5w
dXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JiBldmVudCkKICAgICAgICAgbV9leHBlY3RTY3Jv
bGxVcGRhdGVFbmQgPSB0cnVlOwogI2VuZGlmCiAgICAgICAgIGNvbnN0IFdlYkdlc3R1cmVFdmVu
dCYgZ2VzdHVyZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+KCZl
dmVudCk7Ci0gICAgICAgIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xs
U3RhdHVzID0gbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJlZ2luKEludFBvaW50KGdlc3R1
cmVFdmVudC54LCBnZXN0dXJlRXZlbnQueSkpOworICAgICAgICBDQ0lucHV0SGFuZGxlckNsaWVu
dDo6U2Nyb2xsU3RhdHVzIHNjcm9sbFN0YXR1cyA9IG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3Jv
bGxCZWdpbihJbnRQb2ludChnZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpLCBDQ0lucHV0
SGFuZGxlckNsaWVudDo6R2VzdHVyZSk7CiAgICAgICAgIHN3aXRjaCAoc2Nyb2xsU3RhdHVzKSB7
CiAgICAgICAgIGNhc2UgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQ6CiAgICAg
ICAgICAgICBtX3Njcm9sbFN0YXJ0ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKaW5kZXggOTBiZDAwY2MxOTgxMzQ4MDYzOWFkZmY1
ZGU0OTExYmNkNTAyYWU4OC4uYThiNjdmODliNjVkOWUwNTI3YzQ3OTBhNjUzMDQ0OGU2OTFlYzQ5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3Bw
CkBAIC0zMzEsNiArMzMxLDcgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEVkaXRpbmdCZWhh
dmlvcihFZGl0aW5nQmVoYXZpb3IgYmVoYXZpb3IpCiB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIG1fc2V0
dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGVuYWJsZWQpOworICAgIG1f
c2V0dGluZ3MtPnNldFNjcm9sbGluZ0Nvb3JkaW5hdG9yRW5hYmxlZChlbmFibGVkKTsKIH0KIAog
dm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKGJvb2wgZW5hYmxl
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA4MGEx
ZDk2OGY3ZGM4NjJkZjlhYjFlNGZlMjUzNzI2MTA4NmExMzBkLi43ODExNzA0NjU4ZjlkZGE0OTNh
NzNmMGJiNDJiNzA1NzE5ZmFjM2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCkBAIC05OSw2ICs5OSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5o
IgorI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCkBAIC05NDcsMTMgKzk0OCw4IEBAIHZvaWQgV2ViVmlld0ltcGw6OmNvbXB1dGVTY2FsZUFu
ZFNjcm9sbEZvckhpdFJlY3QoY29uc3QgV2ViUmVjdCYgaGl0UmVjdCwgQXV0b1pvCiAKIHZvaWQg
V2ViVmlld0ltcGw6Om51bWJlck9mV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCBu
dW1iZXJPZldoZWVsSGFuZGxlcnMpCiB7Ci0gICAgbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzID0g
bnVtYmVyT2ZXaGVlbEhhbmRsZXJzID4gMDsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1f
Y2xpZW50LT5udW1iZXJPZldoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQobnVtYmVyT2ZXaGVlbEhh
bmRsZXJzKTsKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKG1fbGF5
ZXJUcmVlSG9zdCkKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRIYXZlV2hlZWxFdmVudEhh
bmRsZXJzKG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJW
aWV3SW1wbDo6bnVtYmVyT2ZUb3VjaEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkIG51bWJl
ck9mVG91Y2hIYW5kbGVycykKQEAgLTMxNzYsNyArMzE3Miw2IEBAIHZvaWQgV2ViVmlld0ltcGw6
OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKIAogICAgICAg
ICBtX2xheWVyVHJlZUhvc3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlzLCBjY1NldHRp
bmdzKTsKICAgICAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkgewotICAgICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5zZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKG1faGF2ZVdoZWVsRXZlbnRIYW5k
bGVycyk7CiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFBhZ2VTY2FsZUZhY3RvckFu
ZExpbWl0cyhwYWdlU2NhbGVGYWN0b3IoKSwgbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yLCBtX21h
eGltdW1QYWdlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgdXBkYXRlTGF5ZXJUcmVlVmlld3Bv
cnQoKTsKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRBY3RpdmF0ZUNvbXBvc2l0b3IobV9sYXll
clRyZWVIb3N0LT5jb21wb3NpdG9ySWRlbnRpZmllcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IGU4ZDUzYmI5NDVlNTc1ZGIwYTdiNjIzZDU3MmI3ZWUx
MThiZmY2OWEuLjM1NThjMWRmNjQ5MTEwNzU3ZmQwNzhhNWI5ZjExNDMzOWFkYTA5ZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNjkyLDcgKzY5Miw2IEBA
IHByaXZhdGU6CiAgICAgLy8gSWYgdHJ1ZSwgdGhlIGdyYXBoaWNzIGNvbnRleHQgaXMgYmVpbmcg
cmVzdG9yZWQuCiAgICAgYm9vbCBtX3JlY3JlYXRpbmdHcmFwaGljc0NvbnRleHQ7CiAjZW5kaWYK
LSAgICBib29sIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsKICAgICBzdGF0aWMgY29uc3QgV2Vi
SW5wdXRFdmVudCogbV9jdXJyZW50SW5wdXRFdmVudDsKIAogI2lmIEVOQUJMRShJTlBVVF9TUEVF
Q0gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDgyMDczM2I0NzIwOGM2ZWNmZjE3Yzg4YTI1MmIzZGQ3
OGQ2ZmRkZDEuLjgwYzhlNjM5YTJkNTgzODQ5ZTdhZmJjY2FlYzZjZTRmNDM3NWFkNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QuY3BwCkBAIC0xNjMsMTMgKzE2Myw2MiBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QsIHNjcm9sbFJvb3RDYWxsc0NvbW1pdEFuZFJlZHJhdykKICAgICByb290LT5zZXRT
Y3JvbGxQb3NpdGlvbihJbnRQb2ludCgwLCAwKSk7CiAgICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9z
aXRpb24oSW50U2l6ZSgxMDAsIDEwMCkpOwogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihy
b290KTsKLSAgICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoMCwg
MCkpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCk7CisgICAgRVhQRUNUX0VR
KG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDAsIDApLCBDQ0lucHV0SGFuZGxlckNs
aWVudDo6V2hlZWwpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCk7CiAgICAg
bV9ob3N0SW1wbC0+c2Nyb2xsQnkoSW50U2l6ZSgwLCAxMCkpOwogICAgIG1faG9zdEltcGwtPnNj
cm9sbEVuZCgpOwogICAgIEVYUEVDVF9UUlVFKG1fZGlkUmVxdWVzdFJlZHJhdyk7CiAgICAgRVhQ
RUNUX1RSVUUobV9kaWRSZXF1ZXN0Q29tbWl0KTsKIH0KIAorVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LCB3aGVlbEV2ZW50SGFuZGxlcnMpCit7CisgICAgUmVmUHRyPENDTGF5ZXJJbXBs
PiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKKyAgICByb290LT5zZXRTY3JvbGxhYmxl
KHRydWUpOworICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KDAsIDApKTsKKyAg
ICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgbV9o
b3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOworICAgIHJvb3QtPnNldEhhdmVXaGVlbEV2ZW50
SGFuZGxlcnModHJ1ZSk7CisgICAgLy8gV2l0aCByZWdpc3RlcmVkIGV2ZW50IGhhbmRsZXJzLCB3
aGVlbCBzY3JvbGxzIGhhdmUgdG8gZ28gdG8gdGhlIG1haW4gdGhyZWFkLgorICAgIEVYUEVDVF9F
UShtX2hvc3RJbXBsLT5zY3JvbGxCZWdpbihJbnRQb2ludCgwLCAwKSwgQ0NJbnB1dEhhbmRsZXJD
bGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCk7CisKKyAg
ICAvLyBCdXQgZ2VzdHVyZSBzY3JvbGxzIGNhbiBzdGlsbCBiZSBoYW5kbGVkLgorICAgIEVYUEVD
VF9FUShtX2hvc3RJbXBsLT5zY3JvbGxCZWdpbihJbnRQb2ludCgwLCAwKSwgQ0NJbnB1dEhhbmRs
ZXJDbGllbnQ6Okdlc3R1cmUpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCk7
Cit9CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2hvdWxkU2Nyb2xsT25NYWlu
VGhyZWFkKQoreworICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpj
cmVhdGUoMCk7CisgICAgcm9vdC0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKKyAgICByb290LT5zZXRT
Y3JvbGxQb3NpdGlvbihJbnRQb2ludCgwLCAwKSk7CisgICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9z
aXRpb24oSW50U2l6ZSgxMDAsIDEwMCkpOworICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihy
b290KTsKKyAgICByb290LT5zZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQodHJ1ZSk7CisgICAg
RVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDAsIDApLCBDQ0lucHV0
SGFuZGxlckNsaWVudDo6V2hlZWwpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVk
KTsKKyAgICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoMCwgMCks
IENDSW5wdXRIYW5kbGVyQ2xpZW50OjpHZXN0dXJlKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNj
cm9sbEZhaWxlZCk7Cit9CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgbm9uRmFz
dFNjcm9sbGFibGVSZWdpb24pCit7CisgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NM
YXllckltcGw6OmNyZWF0ZSgwKTsKKyAgICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUpOworICAg
IHJvb3QtPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KDAsIDApKTsKKyAgICByb290LT5zZXRN
YXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgbV9ob3N0SW1wbC0+c2V0
Um9vdExheWVyKHJvb3QpOworICAgIHJvb3QtPnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKElu
dFJlY3QoMCwgMCwgNTAsIDUwKSk7CisgICAgLy8gQWxsIHNjcm9sbCB0eXBlcyBpbnNpZGUgdGhl
IG5vbi1mYXN0IHNjcm9sbGFibGUgcmVnaW9uIHNob3VsZCBmYWlsLgorICAgIEVYUEVDVF9FUSht
X2hvc3RJbXBsLT5zY3JvbGxCZWdpbihJbnRQb2ludCgyNSwgMjUpLCBDQ0lucHV0SGFuZGxlckNs
aWVudDo6V2hlZWwpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKTsKKyAgICBF
WFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoMjUsIDI1KSwgQ0NJbnB1
dEhhbmRsZXJDbGllbnQ6Okdlc3R1cmUpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFp
bGVkKTsKKworICAgIC8vIEFsbCBzY3JvbGwgdHlwZXMgb3V0c2lkZSB0aGlzIHJlZ2lvbiBzaG91
bGQgc3VjY2VlZC4KKyAgICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9p
bnQoNzUsIDc1KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJD
bGllbnQ6OlNjcm9sbFN0YXJ0ZWQpOworICAgIG1faG9zdEltcGwtPnNjcm9sbEJ5KEludFNpemUo
MCwgMTApKTsKKyAgICBtX2hvc3RJbXBsLT5zY3JvbGxFbmQoKTsKKyAgICBFWFBFQ1RfRVEobV9o
b3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoNzUsIDc1KSwgQ0NJbnB1dEhhbmRsZXJDbGll
bnQ6Okdlc3R1cmUpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCk7CisgICAg
bV9ob3N0SW1wbC0+c2Nyb2xsQnkoSW50U2l6ZSgwLCAxMCkpOworICAgIG1faG9zdEltcGwtPnNj
cm9sbEVuZCgpOworfQorCisKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGluY2hH
ZXN0dXJlKQogewogICAgIHNldHVwU2Nyb2xsQW5kQ29udGVudHNMYXllcnMoSW50U2l6ZSgxMDAs
IDEwMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNo
cm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21p
dW1UZXN0LmNwcAppbmRleCBkNTU1YTZiM2Q1ZmNjMGQ3NzE1ZmZkYTJjYmY5MWU2MWY4YmJiODNi
Li5mMGUxZTVjNjZlZTRjYThjY2IzODYwNDZhYmU0NGJkMGY5Yjc5NDg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNTE1
LDYgKzUxNSw5IEBAIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgY2hlY2tQcm9wZXJ0eUNoYW5n
ZUNhdXNlc0NvcnJlY3RCZWhhdmlvcikKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURT
X0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldFJlcGxpY2FMYXllcihkdW1teUxheWVy
LmdldCgpKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJ
T1IoMSwgdGVzdExheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgwLCAwLCAwLCAwLCAwLCAwKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNf
Q09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0U2Nyb2xsYWJsZSh0cnVlKSk7CisgICAg
RVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVy
LT5zZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQodHJ1ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZF
UklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0Tm9uRmFzdFNj
cm9sbGFibGVSZWdpb24oUmVnaW9uKEludFJlY3QoMSwgMSwgMiwgMikpKSk7CisgICAgRVhFQ1VU
RV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRI
YXZlV2hlZWxFdmVudEhhbmRsZXJzKHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VU
X05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldFNjcm9sbFBvc2l0aW9uKElu
dFBvaW50KDEwLCAxMCkpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1J
VF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgwLCAwLCAwLCAwLCAwLCAwKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNf
Q09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0RG91YmxlU2lkZWQoZmFsc2UpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcAppbmRleCBhZDU4MTA1MjRkNjRlYWRkZTVh
MWMzNDVjNTY4OGFiMmExYTJmZWJkLi40NTkyNTVlMDJhMjgzMzE5ZGZiNWU5MjlhOGQ4ZjVkOTkz
NWE0NDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCkBAIC02NywxNCAr
NjcsMTMgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1Jl
ZHJhdygpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgU2Nyb2xsU3RhdHVzIHNjcm9sbEJlZ2lu
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgT1ZFUlJJREUKKyAgICB2aXJ0dWFsIFNjcm9sbFN0
YXR1cyBzY3JvbGxCZWdpbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkNDSW5w
dXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJbnB1dFR5cGUpIE9WRVJSSURFCiAgICAgewogICAgICAg
ICByZXR1cm4gbV9zY3JvbGxTdGF0dXM7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxC
eShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHNjcm9sbEVuZCgpIE9WRVJSSURFIHsgfQogCi0gICAgdmlydHVhbCBib29sIGhhdmVXaGVlbEV2
ZW50SGFuZGxlcnMoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBwaW5jaEdlc3R1cmVCZWdpbigpIE9WRVJSSURFCiAgICAgewogICAgICAgICBtX3BpbmNoU3Rh
cnRlZCA9IHRydWU7Cg==
</data>
<flag name="commit-queue"
          id="130180"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>