<?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>116448</bug_id>
          
          <creation_ts>2013-05-20 11:02:26 -0700</creation_ts>
          <short_desc>[BlackBerry] Make PagePopup implementation independent from WebCore</short_desc>
          <delta_ts>2013-05-21 03:55:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>anilsson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>rwlbuis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>891256</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-05-20 11:02:26 -0700</bug_when>
    <thetext>PAGE_POPUP feature will be removed and the whole implementation in BlackBerry can be made independent from WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891265</commentid>
    <comment_count>1</comment_count>
      <attachid>202295</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-05-20 11:14:42 -0700</bug_when>
    <thetext>Created attachment 202295
Patch

The pickers are now in the  BB::WebKit namespace instead of WebCore, maybe we could move all those files (pickers, pagePopup and pagePopupClient) to WebKitSupport, but I&apos;ve left them for now in WebCoreSupport to make it easier to review. If you think this should be in WebKitSupport I&apos;ll move them in a follow up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891270</commentid>
    <comment_count>2</comment_count>
      <attachid>202295</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-20 11:18:26 -0700</bug_when>
    <thetext>Comment on attachment 202295
Patch

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

&gt; Source/WebKit/blackberry/ChangeLog:14
&gt; +        (BlackBerry::WebKit::WebPagePrivate::~WebPagePrivate): Destriy the

Typo, “Destriy&quot;

&gt; Source/WebKit/blackberry/ChangeLog:22
&gt; +        (BlackBerry::WebKit::WebPagePrivate::hasOpenedPopup): Whether

Return whether?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891665</commentid>
    <comment_count>3</comment_count>
      <attachid>202295</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-21 02:40:22 -0700</bug_when>
    <thetext>Comment on attachment 202295
Patch

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

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:468
&gt; +    // Destroy popup if we have.

If we have one? I think this is self-explanatory, and doesn&apos;t need any comment.

&gt; Source/WebKit/blackberry/WebCoreSupport/ChromeClientBlackBerry.cpp:-153
&gt; -    // Destroy popup if we have.

Now I see where you got that comment from =)

&gt; Source/WebKit/blackberry/WebCoreSupport/PagePopupBlackBerryClient.h:36
&gt; +class PagePopupBlackBerryClient {

The &quot;BlackBerry&quot; in the name seems redundant, since we&apos;re in the BlackBerry::WebKit namespace. However, perhaps you can rename the classes to just PagePopup/PagePopupClient once the cross platform ones have been removed.

&gt; Source/WebKit/blackberry/WebCoreSupport/PagePopupBlackBerryClient.h:44
&gt; +    //  - window.setValueAndClosePopup(number, string).

Does it really support this, if we dont define ENABLE(PAGE_POPUP)? Don&apos;t you need to inject some native function into JavaScript that does this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891671</commentid>
    <comment_count>4</comment_count>
      <attachid>202295</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-21 02:46:01 -0700</bug_when>
    <thetext>Comment on attachment 202295
Patch

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

&gt;&gt; Source/WebKit/blackberry/WebCoreSupport/PagePopupBlackBerryClient.h:44
&gt;&gt; +    //  - window.setValueAndClosePopup(number, string).
&gt; 
&gt; Does it really support this, if we dont define ENABLE(PAGE_POPUP)? Don&apos;t you need to inject some native function into JavaScript that does this?

I found it, PagePopupBlackBerry::installDOMFunction(Frame* frame)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891673</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-05-21 03:02:29 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 202295 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=202295&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/blackberry/Api/WebPage.cpp:468
&gt; &gt; +    // Destroy popup if we have.
&gt; 
&gt; If we have one? I think this is self-explanatory, and doesn&apos;t need any comment.
&gt; 
&gt; &gt; Source/WebKit/blackberry/WebCoreSupport/ChromeClientBlackBerry.cpp:-153
&gt; &gt; -    // Destroy popup if we have.
&gt; 
&gt; Now I see where you got that comment from =)

:-) I&apos;ll remove it anyway.

&gt; &gt; Source/WebKit/blackberry/WebCoreSupport/PagePopupBlackBerryClient.h:36
&gt; &gt; +class PagePopupBlackBerryClient {
&gt; 
&gt; The &quot;BlackBerry&quot; in the name seems redundant, since we&apos;re in the BlackBerry::WebKit namespace. However, perhaps you can rename the classes to just PagePopup/PagePopupClient once the cross platform ones have been removed.

Exactly, that was my idea. At the moment we would need to use a different #ifndef #define block for the PagePopupClient header if we use the same name. I think it will be easier to rename it when we move the files to WebKitSupport, making this patch as simple as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891674</commentid>
    <comment_count>6</comment_count>
      <attachid>202401</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-05-21 03:09:32 -0700</bug_when>
    <thetext>Created attachment 202401
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891694</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-21 03:54:15 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 202401:

svg/batik/text/smallFonts.svg bug 115040 (author: oliver@apple.com)
svg/batik/text/textEffect2.svg bug 116286 (authors: darin@apple.com and zimmermann@kde.org)
svg/batik/paints/patternRegions.svg bug 116380 (author: zimmermann@kde.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891695</commentid>
    <comment_count>8</comment_count>
      <attachid>202401</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-21 03:55:34 -0700</bug_when>
    <thetext>Comment on attachment 202401
Patch for landing

Clearing flags on attachment: 202401

Committed r150434: &lt;http://trac.webkit.org/changeset/150434&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891696</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-21 03:55:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202295</attachid>
            <date>2013-05-20 11:14:42 -0700</date>
            <delta_ts>2013-05-21 03:09:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bb-page-popup.diff</filename>
            <type>text/plain</type>
            <size>43579</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlZTY3OThkLi44ZjM1NDFh
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTMtMDUtMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtCbGFja0JlcnJ5XSBNYWtlIFBhZ2VQb3B1cCBpbXBsZW1lbnRhdGlvbiBpbmRl
cGVuZGVudCBmcm9tIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNjQ0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNCbGFja0JlcnJ5LmNtYWtlOiBEbyBu
b3QgZW5hYmxlIFBBR0VfUE9QVVAKKyAgICAgICAgZmVhdHVyZS4KKwogMjAxMy0wNS0yMCAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VG
TF0gUmVlbmFibGVkIElOREVYRURfREFUQUJBU0UgYWZ0ZXIgcjE1MDM0NApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBk
ZmRmMDVjLi5mNzhjNjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEzLTA1LTIwICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbQmxh
Y2tCZXJyeV0gTWFrZSBQYWdlUG9wdXAgaW1wbGVtZW50YXRpb24gaW5kZXBlbmRlbnQgZnJvbSBX
ZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTY0NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZTogQWRkCisgICAgICAgIGJsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudC5jcHAgdG8KKyAgICAgICAgY29tcGls
YXRpb24uCisKIDIwMTMtMDUtMTggIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW0NNYWtlXSBSZXBsYWNlICpfTElCUkFSWV9OQU1FIHdpdGggKl9PVVRQ
VVRfTkFNRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggOWJiMTM3ZS4uOWQ3MTRh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNzcgQEAKIDIwMTMt
MDUtMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCisgICAg
ICAgIFtCbGFja0JlcnJ5XSBNYWtlIFBhZ2VQb3B1cCBpbXBsZW1lbnRhdGlvbiBpbmRlcGVuZGVu
dCBmcm9tIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExNjQ0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBvdXIgb3duIGltcGxlbWVudGF0aW9uIG9mIFBhZ2VQb3B1cENsaWVudCBhbmQg
bWFrZSBhbGwgdGhlCisgICAgICAgIHBpY2tlcnMgaW5oZXJpdCBmcm9tIGl0LiBVbnVzZWQgbWV0
aG9kcyBoYXZlIGJlZW4gcmVtb3ZlZCBhbmQKKyAgICAgICAgY29tbW9uIGltcGxlbWVudGF0aW9u
IGhhdmUgYmVlbiBtb3ZlZCBmcm9tIHRoZSBwaWNrZXJzIHRvIHRoZQorICAgICAgICBwYXJlbnQg
Y2xhc3MuCisKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjp+V2ViUGFnZVByaXZhdGUpOiBEZXN0cml5IHRoZQor
ICAgICAgICBwb3B1cCBpZiB0aGVyZSdzIG9uZSBhY3RpdmUuCisgICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpzZXRWaXNpYmxlKTogQ2FsbAorICAgICAgICBjbG9z
ZVBhZ2VQb3B1cCgpIGRpcmVjdGx5LgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQ
YWdlUHJpdmF0ZTo6b3BlblBhZ2VQb3B1cCk6IENyZWF0ZSBhIG5ldworICAgICAgICBQYWdlUG9w
dXBCbGFja0JlcnJ5IGZvciB0aGUgZ2l2ZW4gY2xpZW50LgorICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6Y2xvc2VQYWdlUG9wdXApOiBDbG9zZSB0aGUKKyAgICAg
ICAgYWN0aXZlIHBvcHVwIGlmIHRoZXJlJ3Mgb25lLgorICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0OjpXZWJQYWdlUHJpdmF0ZTo6aGFzT3BlbmVkUG9wdXApOiBXaGV0aGVyCisgICAgICAgIHRo
ZXJlJ3MgYW4gYWN0aXZlIHBvcHVwLgorICAgICAgICAqIEFwaS9XZWJQYWdlLmg6CisgICAgICAg
ICogQXBpL1dlYlBhZ2VfcC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50QmxhY2tCZXJy
eTo6Y2hyb21lRGVzdHJveWVkKTogUmVtb3ZlCisgICAgICAgIGNsb3NlUGFnZVBvcHVwKCkgY2Fs
bCBzaW5jZSB0aGlzIGlzIG5vdyBoYW5kbGVkIGJ5CisgICAgICAgIFdlYlBhZ2VQcml2YXRlLgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50QmxhY2tCZXJyeTo6aGFzT3BlbmVkUG9wdXAp
OiBDYWxsCisgICAgICAgIFdlYlBhZ2VQcml2YXRlOjpoYXNPcGVuZWRQb3B1cCgpLgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuaDoKKyAgICAgICAgKENo
cm9tZUNsaWVudEJsYWNrQmVycnkpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0NvbG9yUGlj
a2VyQ2xpZW50LmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6Q29sb3JQaWNrZXJD
bGllbnQ6OkNvbG9yUGlja2VyQ2xpZW50KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
Q29sb3JQaWNrZXJDbGllbnQ6OmRpZENsb3NlUG9wdXApOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0NvbG9yUGlja2VyQ2xpZW50Lmg6CisgICAgICAgIChDb2xvclBpY2tlckNsaWVudCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRGF0ZVBpY2tlckNsaWVudC5jcHA6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OkRhdGVQaWNrZXJDbGllbnQ6OkRhdGVQaWNrZXJDbGllbnQpOgor
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEYXRlUGlja2VyQ2xpZW50OjpkaWRDbG9zZVBv
cHVwKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EYXRlUGlja2VyQ2xpZW50Lmg6CisgICAg
ICAgIChEYXRlUGlja2VyQ2xpZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlUG9w
dXBCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6UGFnZVBvcHVw
QmxhY2tCZXJyeTo6UGFnZVBvcHVwQmxhY2tCZXJyeSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OlBhZ2VQb3B1cEJsYWNrQmVycnk6OmNsb3NlUG9wdXApOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuaDoKKyAgICAgICAgKFBhZ2VQb3B1cEJsYWNr
QmVycnkpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpQYWdlUG9wdXBCbGFja0JlcnJ5
OjpTaGFyZWRDbGllbnRQb2ludGVyOjpTaGFyZWRDbGllbnRQb2ludGVyKToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6UGFnZVBvcHVwQmxhY2tCZXJyeTo6U2hhcmVkQ2xpZW50UG9pbnRl
cjo6Z2V0KToKKyAgICAgICAgKFNoYXJlZENsaWVudFBvaW50ZXIpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnlDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6UGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudDo6UGFnZVBvcHVw
QmxhY2tCZXJyeUNsaWVudCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlBhZ2VQb3B1
cEJsYWNrQmVycnlDbGllbnQ6OmNsb3NlUG9wdXApOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0OjpQYWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50OjpkaWRDbG9zZVBvcHVwKToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6UGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudDo6Y29udGVudFNp
emUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpQYWdlUG9wdXBCbGFja0JlcnJ5Q2xp
ZW50Ojp3cml0ZURvY3VtZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBC
bGFja0JlcnJ5Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoUGFnZVBvcHVwQmxhY2tCZXJyeUNs
aWVudCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlBhZ2VQb3B1cEJsYWNrQmVycnlD
bGllbnQ6On5QYWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9TZWxlY3RQb3B1cENsaWVudC5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OlNlbGVjdFBvcHVwQ2xpZW50OjpTZWxlY3RQb3B1cENsaWVudCk6CisgICAgICAgIChCbGFja0Jl
cnJ5OjpXZWJLaXQ6OlNlbGVjdFBvcHVwQ2xpZW50OjpkaWRDbG9zZVBvcHVwKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9TZWxlY3RQb3B1cENsaWVudC5oOgorICAgICAgICAoU2VsZWN0UG9w
dXBDbGllbnQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcDoKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpvcGVuRGF0ZVBvcHVwKTog
RG8gbm90IGNhbGwKKyAgICAgICAgY2xvc2VQYWdlUG9wdXAoKSBzaW5jZSB0aGlzIGlzIGFscmVh
ZHkgZG9uZSBieSBvcGVuUGFnZVBvcHVwKCkgYW5kCisgICAgICAgIHVzZSBvcGVuUGFnZVBvcHVw
KCkgZnJvbSBXZWJQYWdlUHJpdmF0ZSBkaXJlY3RseS4KKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6SW5wdXRIYW5kbGVyOjpvcGVuQ29sb3JQb3B1cCk6IERpdHRvLgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6Om9wZW5TZWxlY3RQb3B1cCk6IERpdHRvLgor
CisyMDEzLTA1LTIwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
KwogICAgICAgICBbQmxhY2tCZXJyeV0gRG8gbm90IHVzZSBza2lhIGluIEZyYW1lTG9hZGVyQ2xp
ZW50QmxhY2tCZXJyeTo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYzMDIKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtQmxhY2tCZXJyeS5jbWFrZQppbmRleCA3ZTNjMDE3Li5hMzgzM2ZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQpAQCAtMTAyLDYgKzEwMiw3IEBAIGxpc3QoQVBQRU5E
IFdlYktpdF9TT1VSQ0VTCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrSW5m
b0NsaWVudEJsYWNrQmVycnkuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9Ob3Rp
ZmljYXRpb25DbGllbnRCbGFja0JlcnJ5LmNwcAogICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5jcHAKKyAgICBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0
L1BhZ2VQb3B1cEJsYWNrQmVycnlDbGllbnQuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmNwcAogICAgIGJsYWNrYmVycnkvV2Vi
Q29yZVN1cHBvcnQvTmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50QmxhY2tCZXJyeS5jcHAKICAg
ICBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1NlbGVjdFBvcHVwQ2xpZW50LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggNTEwZjVhOC4uMTExNzg4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC0xMDEsNiArMTAx
LDcgQEAKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNp
bmNsdWRlICJQYWdlUG9wdXBCbGFja0JlcnJ5LmgiCisjaW5jbHVkZSAiUGFnZVBvcHVwQmxhY2tC
ZXJyeUNsaWVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVG91Y2hFdmVudC5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCkBAIC00
NjQsNiArNDY1LDkgQEAgV2ViUGFnZVByaXZhdGU6On5XZWJQYWdlUHJpdmF0ZSgpCiAgICAgY2Fu
Y2VsQ2FsbE9uTWFpblRocmVhZChoYW5kbGVTZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zT25NYWlu
VGhyZWFkLCB0aGlzKTsKICNlbmRpZgogCisgICAgLy8gRGVzdHJveSBwb3B1cCBpZiB3ZSBoYXZl
LgorICAgIGNsb3NlUGFnZVBvcHVwKCk7CisKICAgICBkZWxldGUgbV93ZWJTZXR0aW5nczsKICAg
ICBtX3dlYlNldHRpbmdzID0gMDsKIApAQCAtMzE0OSw4ICszMTUzLDcgQEAgdm9pZCBXZWJQYWdl
UHJpdmF0ZTo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgICAgICAgICBpZiAoIW1fcGFn
ZS0+c2NyaXB0ZWRBbmltYXRpb25zU3VzcGVuZGVkKCkpCiAgICAgICAgICAgICAgICAgbV9wYWdl
LT5zdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25zKCk7CiAKLSAgICAgICAgICAgIGlmIChtX3dlYlBh
Z2UtPmhhc09wZW5lZFBvcHVwKCkpCi0gICAgICAgICAgICAgICAgbV9wYWdlLT5jaHJvbWUoKS5j
bGllbnQoKS0+Y2xvc2VQYWdlUG9wdXAoMCk7CisgICAgICAgICAgICBjbG9zZVBhZ2VQb3B1cCgp
OwogICAgICAgICB9CiAKICAgICAgICAgbV92aXNpYmxlID0gdmlzaWJsZTsKQEAgLTYwNjYsMjYg
KzYwNjksMzUgQEAgdm9pZCBXZWJQYWdlOjpyZW1vdmVDb21wb3NpdGluZ1RocmVhZE92ZXJsYXko
V2ViT3ZlcmxheSogb3ZlcmxheSkKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2U6OnBvcHVwT3Bl
bmVkKFBhZ2VQb3B1cEJsYWNrQmVycnkqIHdlYlBvcHVwKQorYm9vbCBXZWJQYWdlUHJpdmF0ZTo6
b3BlblBhZ2VQb3B1cChQYWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50KiBwb3B1cENsaWVudCwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgb3JpZ2luQm91bmRzSW5Sb290VmlldykKIHsKLSAgICBBU1NF
UlQoIWQtPm1fc2VsZWN0UG9wdXApOwotICAgIGQtPm1fc2VsZWN0UG9wdXAgPSB3ZWJQb3B1cDsK
LX0KKyAgICBjbG9zZVBhZ2VQb3B1cCgpOworICAgIG1fc2VsZWN0UG9wdXAgPSBuZXcgUGFnZVBv
cHVwQmxhY2tCZXJyeSh0aGlzLCBwb3B1cENsaWVudCk7CiAKLXZvaWQgV2ViUGFnZTo6cG9wdXBD
bG9zZWQoKQotewotICAgIEFTU0VSVChkLT5tX3NlbGVjdFBvcHVwKTsKLSAgICBkLT5tX3NlbGVj
dFBvcHVwID0gMDsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IHBvcHVwUmVjdCA9IG1fcGFnZS0+Y2hy
b21lKCkuY2xpZW50KCktPnJvb3RWaWV3VG9TY3JlZW4ob3JpZ2luQm91bmRzSW5Sb290Vmlldyk7
CisgICAgcG9wdXBSZWN0LnNldFNpemUocG9wdXBDbGllbnQtPmNvbnRlbnRTaXplKCkpOworICAg
IGlmICghbV9jbGllbnQtPmNyZWF0ZVBvcHVwV2ViVmlldyhwb3B1cFJlY3QpKSB7CisgICAgICAg
IGNsb3NlUGFnZVBvcHVwKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJQYWdlOjpoYXNPcGVuZWRQb3B1cCgpIGNvbnN0Cit2
b2lkIFdlYlBhZ2VQcml2YXRlOjpjbG9zZVBhZ2VQb3B1cCgpCiB7Ci0gICAgcmV0dXJuIGQtPm1f
c2VsZWN0UG9wdXA7CisgICAgaWYgKCFtX3NlbGVjdFBvcHVwKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3NlbGVjdFBvcHVwLT5jbG9zZVBvcHVwKCk7CisgICAgbV9jbGllbnQtPmNsb3NlUG9w
dXBXZWJWaWV3KCk7CisgICAgZGVsZXRlIG1fc2VsZWN0UG9wdXA7CisgICAgbV9zZWxlY3RQb3B1
cCA9IDA7CiB9CiAKLVBhZ2VQb3B1cEJsYWNrQmVycnkqIFdlYlBhZ2U6OnBvcHVwKCkKK2Jvb2wg
V2ViUGFnZVByaXZhdGU6Omhhc09wZW5lZFBvcHVwKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZC0+
bV9zZWxlY3RQb3B1cDsKKyAgICByZXR1cm4gbV9zZWxlY3RQb3B1cDsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJpdmF0ZTo6c2V0SW5zcGVjdG9yT3ZlcmxheUNsaWVudChJbnNwZWN0b3JPdmVybGF5OjpJ
bnNwZWN0b3JPdmVybGF5Q2xpZW50KiBpbnNwZWN0b3JPdmVybGF5Q2xpZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuaAppbmRleCBiNzRhNWM0Li5hZDMyMmExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuaApAQCAtMzYsNyArMzYsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBDaHJvbWVDbGllbnRCbGFja0JlcnJ5OwogY2xhc3MgRnJhbWU7
CiBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk7Ci1jbGFzcyBQYWdlUG9wdXBCbGFj
a0JlcnJ5OwogfQogCiBjbGFzcyBXZWJET01Eb2N1bWVudDsKQEAgLTYyLDYgKzYxLDcgQEAgY2xh
c3MgQmFja2luZ1N0b3JlOwogY2xhc3MgQmFja2luZ1N0b3JlQ2xpZW50OwogY2xhc3MgQmFja2lu
Z1N0b3JlUHJpdmF0ZTsKIGNsYXNzIEluUmVnaW9uU2Nyb2xsZXI7CitjbGFzcyBQYWdlUG9wdXBC
bGFja0JlcnJ5OwogY2xhc3MgUmVuZGVyUXVldWU7CiBjbGFzcyBXZWJDb29raWVKYXI7CiBjbGFz
cyBXZWJPdmVybGF5OwpAQCAtMzY4LDEwICszNjgsNiBAQCBwdWJsaWM6CiAKICAgICAvLyBQb3B1
cCBjbGllbnQKICAgICB2b2lkIGluaXRQb3B1cFdlYlZpZXcoQmxhY2tCZXJyeTo6V2ViS2l0OjpX
ZWJQYWdlKik7Ci0gICAgdm9pZCBwb3B1cE9wZW5lZChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0Jl
cnJ5KiB3ZWJQb3B1cCk7Ci0gICAgdm9pZCBwb3B1cENsb3NlZCgpOwotICAgIGJvb2wgaGFzT3Bl
bmVkUG9wdXAoKSBjb25zdDsKLSAgICBXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5KiBwb3B1
cCgpOwogCiAgICAgdm9pZCBhdXRvZmlsbFRleHRGaWVsZChjb25zdCBCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6U3RyaW5nJik7CiAKQEAgLTM5MywxMyArMzg5LDEzIEBAIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIFdlYktpdDo6QmFja2luZ1N0b3JlOwogICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6
OkJhY2tpbmdTdG9yZUNsaWVudDsKICAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpCYWNraW5nU3Rv
cmVQcml2YXRlOworICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlBhZ2VQb3B1cEJsYWNrQmVycnk7
CiAgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6UmVuZGVyUXVldWU7CiAgICAgZnJpZW5kIGNsYXNz
IFdlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3I7CiAgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6V2Vi
UGFnZUdyb3VwTG9hZERlZmVycmVyOwogICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OldlYlBhZ2VQ
cml2YXRlOwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpDaHJvbWVDbGllbnRCbGFja0JlcnJ5
OwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk7
Ci0gICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk7CiAgICAgV2Vi
UGFnZVByaXZhdGUqIGQ7CiB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0FwaS9XZWJQYWdlX3AuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFn
ZV9wLmgKaW5kZXggM2JlODQ2NC4uZWU5YzEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2VfcC5oCkBAIC02OCw3ICs2OCw2IEBAIGNsYXNzIFJlbmRlckxheWVyOwogY2xh
c3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgU2Nyb2xsVmlldzsKIGNsYXNzIFRyYW5zZm9ybWF0aW9u
TWF0cml4OwotY2xhc3MgUGFnZVBvcHVwQmxhY2tCZXJyeTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGNsYXNzIFRpbWVyOwogfQogCkBAIC04MCw2ICs3OSw4IEBAIGNsYXNzIEJhY2tpbmdTdG9yZUNs
aWVudDsKIGNsYXNzIER1bXBSZW5kZXJUcmVlQ2xpZW50OwogY2xhc3MgSW5QYWdlU2VhcmNoTWFu
YWdlcjsKIGNsYXNzIElucHV0SGFuZGxlcjsKK2NsYXNzIFBhZ2VQb3B1cEJsYWNrQmVycnk7Citj
bGFzcyBQYWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50OwogY2xhc3MgU2VsZWN0aW9uSGFuZGxlcjsK
IGNsYXNzIFRvdWNoRXZlbnRIYW5kbGVyOwogY2xhc3MgV2ViQ29va2llSmFyOwpAQCAtNDEyLDcg
KzQxMyw5IEBAIHB1YmxpYzoKIAogICAgIEJhY2tpbmdTdG9yZUNsaWVudCogYmFja2luZ1N0b3Jl
Q2xpZW50KCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldFBhcmVudFBvcHVwKFdlYkNvcmU6OlBhZ2VQ
b3B1cEJsYWNrQmVycnkqIHdlYlBvcHVwKTsKKyAgICBib29sIG9wZW5QYWdlUG9wdXAoUGFnZVBv
cHVwQmxhY2tCZXJyeUNsaWVudCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIG9yaWdpbkJvdW5k
c0luUm9vdFZpZXcpOworICAgIHZvaWQgY2xvc2VQYWdlUG9wdXAoKTsKKyAgICBib29sIGhhc09w
ZW5lZFBvcHVwKCkgY29uc3Q7CiAKICAgICAvLyBDbGVhbiB1cCBhbnkgZG9jdW1lbnQgcmVsYXRl
ZCBkYXRhIHdlIG1pZ2h0IGJlIGhvbGRpbmcuCiAgICAgdm9pZCBjbGVhckRvY3VtZW50RGF0YShj
b25zdCBXZWJDb3JlOjpEb2N1bWVudCopOwpAQCAtNjM1LDcgKzYzOCw3IEBAIHB1YmxpYzoKICAg
ICBXZWJDb3JlOjpUaW1lcjxXZWJQYWdlUHJpdmF0ZT4gbV9kZWZlcnJlZFRhc2tzVGltZXI7CiAK
ICAgICAvLyBUaGUgcG9wdXAgdGhhdCBvcGVuZWQgaW4gdGhpcyB3ZWJwYWdlCi0gICAgV2ViQ29y
ZTo6UGFnZVBvcHVwQmxhY2tCZXJyeSogbV9zZWxlY3RQb3B1cDsKKyAgICBQYWdlUG9wdXBCbGFj
a0JlcnJ5KiBtX3NlbGVjdFBvcHVwOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OkF1dG9maWxsTWFu
YWdlcj4gbV9hdXRvZmlsbE1hbmFnZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5
LmNwcAppbmRleCAzY2NkNzIxLi5jOTc3N2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNr
QmVycnkuY3BwCkBAIC00Nyw4ICs0Nyw2IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cExvYWREZWZlcnJlci5oIgotI2luY2x1
ZGUgIlBhZ2VQb3B1cEJsYWNrQmVycnkuaCIKLSNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIK
ICNpbmNsdWRlICJQb3B1cE1lbnVCbGFja0JlcnJ5LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5o
IgogI2luY2x1ZGUgIlNWR1pvb21BbmRQYW4uaCIKQEAgLTE1MCw4ICsxNDgsNiBAQCBib29sIENo
cm9tZUNsaWVudEJsYWNrQmVycnk6OnJ1bkphdmFTY3JpcHRQcm9tcHQoRnJhbWUqIGZyYW1lLCBj
b25zdCBTdHJpbmcmIG1lcwogCiB2b2lkIENocm9tZUNsaWVudEJsYWNrQmVycnk6OmNocm9tZURl
c3Ryb3llZCgpCiB7Ci0gICAgLy8gRGVzdHJveSBwb3B1cCBpZiB3ZSBoYXZlLgotICAgIGNsb3Nl
UGFnZVBvcHVwKDApOwogICAgIGRlbGV0ZSB0aGlzOwogfQogCkBAIC0zMDAsNyArMjk2LDcgQEAg
Ym9vbCBDaHJvbWVDbGllbnRCbGFja0JlcnJ5OjpzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01l
bnVXcml0aW5nRGlyZWN0aW9uKCkKIAogYm9vbCBDaHJvbWVDbGllbnRCbGFja0JlcnJ5OjpoYXNP
cGVuZWRQb3B1cCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZVByaXZhdGUtPm1fd2Vi
UGFnZS0+aGFzT3BlbmVkUG9wdXAoKTsKKyAgICByZXR1cm4gbV93ZWJQYWdlUHJpdmF0ZS0+aGFz
T3BlbmVkUG9wdXAoKTsKIH0KIAogUGFzc1JlZlB0cjxQb3B1cE1lbnU+IENocm9tZUNsaWVudEJs
YWNrQmVycnk6OmNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QK
QEAgLTMxMywyOSArMzA5LDYgQEAgUGFzc1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IENocm9tZUNs
aWVudEJsYWNrQmVycnk6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE0KICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNlYXJjaFBvcHVwTWVudUJsYWNrQmVycnkoY2xpZW50KSk7CiB9CiAKLVBh
Z2VQb3B1cCogQ2hyb21lQ2xpZW50QmxhY2tCZXJyeTo6b3BlblBhZ2VQb3B1cChQYWdlUG9wdXBD
bGllbnQqIGNsaWVudCwgY29uc3QgSW50UmVjdCYgb3JpZ2luQm91bmRzSW5Sb290VmlldykKLXsK
LSAgICBjbG9zZVBhZ2VQb3B1cCgwKTsKLQotICAgIFBhZ2VQb3B1cEJsYWNrQmVycnkqIHdlYlBv
cHVwID0gbmV3IFBhZ2VQb3B1cEJsYWNrQmVycnkobV93ZWJQYWdlUHJpdmF0ZSwgY2xpZW50LCBy
b290Vmlld1RvU2NyZWVuKG9yaWdpbkJvdW5kc0luUm9vdFZpZXcpKTsKLSAgICBtX3dlYlBhZ2VQ
cml2YXRlLT5tX3dlYlBhZ2UtPnBvcHVwT3BlbmVkKHdlYlBvcHVwKTsKLSAgICBpZiAod2ViUG9w
dXAtPnNlbmRDcmVhdGVQb3B1cFdlYlZpZXdSZXF1ZXN0KCkpCi0gICAgICAgIHJldHVybiB3ZWJQ
b3B1cDsKLQotICAgIGNsb3NlUGFnZVBvcHVwKDApOwotICAgIHJldHVybiAwOwotfQotCi12b2lk
IENocm9tZUNsaWVudEJsYWNrQmVycnk6OmNsb3NlUGFnZVBvcHVwKFBhZ2VQb3B1cCopCi17Ci0g
ICAgaWYgKCFoYXNPcGVuZWRQb3B1cCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBQYWdlUG9w
dXBCbGFja0JlcnJ5KiB3ZWJQb3B1cCA9IG1fd2ViUGFnZVByaXZhdGUtPm1fd2ViUGFnZS0+cG9w
dXAoKTsKLSAgICB3ZWJQb3B1cC0+Y2xvc2VQb3B1cCgpOwotICAgIGRlbGV0ZSB3ZWJQb3B1cDsK
LX0KLQogdm9pZCBDaHJvbWVDbGllbnRCbGFja0JlcnJ5OjpzZXRUb29sYmFyc1Zpc2libGUoYm9v
bCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuaCBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5
LmgKaW5kZXggZjZlNWMyMS4uYjM5ZTkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJy
eS5oCkBAIC0yOCw4ICsyOCw2IEBAIGNsYXNzIFdlYlBhZ2VQcml2YXRlOwogfQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci1jbGFzcyBQYWdlUG9wdXA7Ci1jbGFzcyBQYWdlUG9wdXBDbGllbnQ7CiAK
IGNsYXNzIENocm9tZUNsaWVudEJsYWNrQmVycnkgOiBwdWJsaWMgQ2hyb21lQ2xpZW50IHsKIHB1
YmxpYzoKQEAgLTE0MCw5ICsxMzgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVu
dShQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFnZVBv
cHVwKiBvcGVuUGFnZVBvcHVwKFdlYkNvcmU6OlBhZ2VQb3B1cENsaWVudCosIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VQYWdlUG9wdXAoV2ViQ29yZTo6
UGFnZVBvcHVwKik7Ci0KICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgdmly
dHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lKiwgR3JhcGhpY3NMYXllciop
OwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
Q29sb3JQaWNrZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L0NvbG9yUGlja2VyQ2xpZW50LmNwcAppbmRleCAyNGRlMzVjLi40ZjEzYjg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ29sb3JQaWNr
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9y
dC9Db2xvclBpY2tlckNsaWVudC5jcHAKQEAgLTE5LDE2ICsxOSw4IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ29sb3JQaWNrZXJDbGllbnQuaCIKIAotI2luY2x1ZGUgIkNocm9t
ZS5oIgotI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0j
aW5jbHVkZSAiRG9jdW1lbnRXcml0ZXIuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVk
ZSAiUGFnZVBvcHVwLmgiCiAjaW5jbHVkZSAiUG9wdXBQaWNrZXIuaCIKLSNpbmNsdWRlICJSZW5k
ZXJPYmplY3QuaCIKICNpbmNsdWRlICJXZWJQYWdlX3AuaCIKIAogI2luY2x1ZGUgPEJsYWNrQmVy
cnlQbGF0Zm9ybVN0cmluZy5oPgpAQCAtMzYsMTIgKzI4LDE1IEBACiAjaW5jbHVkZSA8TG9jYWxp
emVSZXNvdXJjZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotbmFt
ZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBC
bGFja0JlcnJ5IHsKK25hbWVzcGFjZSBXZWJLaXQgewogCiBERUZJTkVfU1RBVElDX0xPQ0FMKEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpMb2NhbGl6ZVJlc291cmNlLCBzX3Jlc291cmNlLCAoKSk7CiAK
LUNvbG9yUGlja2VyQ2xpZW50OjpDb2xvclBpY2tlckNsaWVudChjb25zdCBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6U3RyaW5nJiB2YWx1ZSwgQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0
ZSogd2ViUGFnZSwgSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKLSAgICA6IG1fd2ViUGFnZSh3
ZWJQYWdlKQorQ29sb3JQaWNrZXJDbGllbnQ6OkNvbG9yUGlja2VyQ2xpZW50KGNvbnN0IEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIHZhbHVlLCBCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBh
Z2VQcml2YXRlKiB3ZWJQYWdlLCBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQor
ICAgIDogUGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudCh3ZWJQYWdlKQogICAgICwgbV9lbGVtZW50
KGVsZW1lbnQpCiB7CiAgICAgZ2VuZXJhdGVIVE1MKHZhbHVlKTsKQEAgLTg0LDI4ICs3OSw2IEBA
IHZvaWQgQ29sb3JQaWNrZXJDbGllbnQ6OmdlbmVyYXRlSFRNTChjb25zdCBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6U3RyaW5nJiB2YWx1ZSkKICAgICBtX3NvdXJjZSA9IHNvdXJjZS50b1N0cmluZygp
OwogfQogCi12b2lkIENvbG9yUGlja2VyQ2xpZW50OjpjbG9zZVBvcHVwKCkKLXsKLSAgICBBU1NF
UlQobV93ZWJQYWdlKTsKLSAgICBtX3dlYlBhZ2UtPm1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkt
PmNsb3NlUGFnZVBvcHVwKDApOwotfQotCi1JbnRTaXplIENvbG9yUGlja2VyQ2xpZW50Ojpjb250
ZW50U2l6ZSgpCi17Ci0gICAgLy8gRklYTUU6IHdpbGwgZ2VuZXJhdGUgY29udGVudCBzaXplIGR5
bmFtaWNhbGx5Ci0gICAgcmV0dXJuIEludFNpemUoMzIwLCAyNTYpOwotfQotCi1TdHJpbmcgQ29s
b3JQaWNrZXJDbGllbnQ6Omh0bWxTb3VyY2UoKSBjb25zdAotewotICAgIHJldHVybiBtX3NvdXJj
ZTsKLX0KLQotTG9jYWxlJiBDb2xvclBpY2tlckNsaWVudDo6bG9jYWxlKCkKLXsKLSAgICByZXR1
cm4gbV9lbGVtZW50LT5kb2N1bWVudCgpLT5nZXRDYWNoZWRMb2NhbGUoKTsKLX0KLQogdm9pZCBD
b2xvclBpY2tlckNsaWVudDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9lbGVtZW50KTsKQEAgLTExNiwyMCArODksMTEgQEAg
dm9pZCBDb2xvclBpY2tlckNsaWVudDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKICAgICBjbG9zZVBvcHVwKCk7CiB9CiAKLXZvaWQgQ29sb3JQaWNrZXJD
bGllbnQ6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQogdm9pZCBDb2xvclBpY2tlckNsaWVudDo6ZGlkQ2xvc2VQb3B1cCgpCiB7Ci0gICAgbV93
ZWJQYWdlID0gMDsKKyAgICBQYWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50OjpkaWRDbG9zZVBvcHVw
KCk7CiAgICAgbV9lbGVtZW50ID0gMDsKIH0KIAotdm9pZCBDb2xvclBpY2tlckNsaWVudDo6d3Jp
dGVEb2N1bWVudChEb2N1bWVudFdyaXRlciYgd3JpdGVyKQotewotICAgIENTdHJpbmcgc291cmNl
U3RyaW5nID0gbV9zb3VyY2UudXRmOCgpOwotICAgIHdyaXRlci5hZGREYXRhKHNvdXJjZVN0cmlu
Zy5kYXRhKCksIHNvdXJjZVN0cmluZy5sZW5ndGgoKSk7CiB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ29sb3JQaWNrZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9Db2xvclBpY2tlckNsaWVu
dC5oCmluZGV4IGVhNmI0YTAuLjdhMWI3N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9Db2xvclBpY2tlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9Db2xvclBpY2tlckNsaWVudC5oCkBAIC0x
OSw0MSArMTksMzMgQEAKICNpZm5kZWYgQ29sb3JQaWNrZXJDbGllbnRfaAogI2RlZmluZSBDb2xv
clBpY2tlckNsaWVudF9oCiAKLSNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKKyNpbmNsdWRl
ICJQYWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50LmgiCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRm
b3JtSW5wdXRFdmVudHMuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSFRNTElucHV0
RWxlbWVudDsKK30KKwogbmFtZXNwYWNlIEJsYWNrQmVycnkgewogbmFtZXNwYWNlIFBsYXRmb3Jt
IHsKIGNsYXNzIFN0cmluZzsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJQYWdl
UHJpdmF0ZTsKLX0KLX0KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgRG9jdW1lbnRXcml0
ZXI7Ci1jbGFzcyBIVE1MSW5wdXRFbGVtZW50OwotCi1jbGFzcyBDb2xvclBpY2tlckNsaWVudCA6
IHB1YmxpYyBQYWdlUG9wdXBDbGllbnQgeworY2xhc3MgQ29sb3JQaWNrZXJDbGllbnQgOiBwdWJs
aWMgUGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgQ29sb3JQaWNrZXJD
bGllbnQoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgdmFsdWUsIEJsYWNrQmVy
cnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGUqLCBIVE1MSW5wdXRFbGVtZW50Kik7CisgICAgQ29s
b3JQaWNrZXJDbGllbnQoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgdmFsdWUs
IEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGUqLCBXZWJDb3JlOjpIVE1MSW5wdXRF
bGVtZW50Kik7CiAKLSAgICB2b2lkIGdlbmVyYXRlSFRNTChjb25zdCBCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6U3RyaW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCB3cml0ZURvY3VtZW50KERvY3VtZW50V3Jp
dGVyJik7Ci0gICAgSW50U2l6ZSBjb250ZW50U2l6ZSgpOwotICAgIFN0cmluZyBodG1sU291cmNl
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBMb2NhbGUmIGxvY2FsZSgpOwogICAgIHZvaWQgc2V0VmFs
dWVBbmRDbG9zZVBvcHVwKGludCwgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRWYWx1ZShj
b25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNsb3NlUG9wdXAoKTsKICAgICB2b2lkIGRpZENsb3Nl
UG9wdXAoKTsKIAogcHJpdmF0ZToKLSAgICBTdHJpbmcgbV9zb3VyY2U7Ci0gICAgQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZSogbV93ZWJQYWdlOwotICAgIFJlZlB0cjxIVE1MSW5w
dXRFbGVtZW50PiBtX2VsZW1lbnQ7CisgICAgdm9pZCBnZW5lcmF0ZUhUTUwoY29uc3QgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgdmFsdWUpOworCisgICAgUmVmUHRyPFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQ+IG1fZWxlbWVudDsKIH07Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
K30KK30KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L0RhdGVQaWNrZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L0RhdGVQaWNrZXJDbGllbnQuY3BwCmluZGV4IDllMjkxYWUuLjdmMzhm
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9E
YXRlUGlja2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvRGF0ZVBpY2tlckNsaWVudC5jcHAKQEAgLTE5LDE3ICsxOSwxMCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRhdGVQaWNrZXJDbGllbnQuaCIKIAotI2luY2x1ZGUg
IkNocm9tZS5oIgotI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRXcml0ZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgot
I2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQYWdlUG9wdXAuaCIKICNpbmNsdWRlICJQb3B1
cFBpY2tlci5oIgotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIldlYlBhZ2Vf
cC5oIgogCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtU3RyaW5nLmg+CkBAIC0zOCwxNSAr
MzEsMTcgQEAKICNpbmNsdWRlIDx1bmljb2RlL2R0Zm10c3ltLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5h
bWVzcGFjZSBpY3U7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBCbGFja0JlcnJ5
IHsKK25hbWVzcGFjZSBXZWJLaXQgewogCiBERUZJTkVfU1RBVElDX0xPQ0FMKEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpMb2NhbGl6ZVJlc291cmNlLCBzX3Jlc291cmNlLCAoKSk7CiAKLURhdGVQaWNr
ZXJDbGllbnQ6OkRhdGVQaWNrZXJDbGllbnQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkJsYWNrQmVy
cnlJbnB1dFR5cGUgdHlwZSwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgdmFs
dWUsIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIG1pbiwgY29uc3QgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgbWF4LCBkb3VibGUgc3RlcCwgQmxhY2tCZXJyeTo6V2Vi
S2l0OjpXZWJQYWdlUHJpdmF0ZSogd2ViUGFnZSwgSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkK
LSAgICA6IG1fdHlwZSh0eXBlKQotICAgICwgbV93ZWJQYWdlKHdlYlBhZ2UpCitEYXRlUGlja2Vy
Q2xpZW50OjpEYXRlUGlja2VyQ2xpZW50KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCbGFja0JlcnJ5
SW5wdXRUeXBlIHR5cGUsIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIHZhbHVl
LCBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBtaW4sIGNvbnN0IEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpTdHJpbmcmIG1heCwgZG91YmxlIHN0ZXAsIEJsYWNrQmVycnk6OldlYktp
dDo6V2ViUGFnZVByaXZhdGUqIHdlYlBhZ2UsIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqIGVs
ZW1lbnQpCisgICAgOiBQYWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50KHdlYlBhZ2UpCisgICAgLCBt
X3R5cGUodHlwZSkKICAgICAsIG1fZWxlbWVudChlbGVtZW50KQogewogICAgIGdlbmVyYXRlSFRN
TCh0eXBlLCB2YWx1ZSwgbWluLCBtYXgsIHN0ZXApOwpAQCAtMTM4LDI4ICsxMzMsNiBAQCB2b2lk
IERhdGVQaWNrZXJDbGllbnQ6OmdlbmVyYXRlSFRNTChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Qmxh
Y2tCZXJyeUlucHV0VHlwZSB0eQogICAgIG1fc291cmNlID0gc291cmNlLnRvU3RyaW5nKCk7CiB9
CiAKLXZvaWQgRGF0ZVBpY2tlckNsaWVudDo6Y2xvc2VQb3B1cCgpCi17Ci0gICAgQVNTRVJUKG1f
d2ViUGFnZSk7Ci0gICAgbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5jbG9z
ZVBhZ2VQb3B1cCgwKTsKLX0KLQotSW50U2l6ZSBEYXRlUGlja2VyQ2xpZW50Ojpjb250ZW50U2l6
ZSgpCi17Ci0gICAgLy8gRml4bWU6IHdpbGwgZ2VuZXJhdGUgY29udGVudCBzaXplIGR5bmFtaWNh
bGx5Ci0gICAgcmV0dXJuIEludFNpemUoMzIwLCAyNTYpOwotfQotCi1TdHJpbmcgRGF0ZVBpY2tl
ckNsaWVudDo6aHRtbFNvdXJjZSgpCi17Ci0gICAgcmV0dXJuIG1fc291cmNlOwotfQotCi1Mb2Nh
bGUmIERhdGVQaWNrZXJDbGllbnQ6OmxvY2FsZSgpCi17Ci0gICAgcmV0dXJuIG1fZWxlbWVudC0+
ZG9jdW1lbnQoKS0+Z2V0Q2FjaGVkTG9jYWxlKCk7Ci19Ci0KIHZvaWQgRGF0ZVBpY2tlckNsaWVu
dDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICAvLyBSZXR1cm4gLTEgaWYgdXNlciBjYW5jZWwgdGhlIHNlbGVjdGlvbi4KQEAgLTE3MywyMiAr
MTQ2LDEyIEBAIHZvaWQgRGF0ZVBpY2tlckNsaWVudDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKGlu
dCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBjbG9zZVBvcHVwKCk7CiB9CiAKLXZvaWQgRGF0
ZVBpY2tlckNsaWVudDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCiB2b2lkIERhdGVQaWNrZXJDbGllbnQ6OmRpZENsb3NlUG9wdXAoKQogewot
ICAgIG1fd2ViUGFnZSA9IDA7CisgICAgUGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudDo6ZGlkQ2xv
c2VQb3B1cCgpOwogICAgIG1fZWxlbWVudCA9IDA7CiB9CiAKLXZvaWQgRGF0ZVBpY2tlckNsaWVu
dDo6d3JpdGVEb2N1bWVudChEb2N1bWVudFdyaXRlciYgd3JpdGVyKQotewotICAgIHdyaXRlci5h
ZGREYXRhKG1fc291cmNlLnV0ZjgoKS5kYXRhKCksIG1fc291cmNlLnV0ZjgoKS5sZW5ndGgoKSk7
Ci19Ci0KIC8vIFVEQVRfZm9vIGFyZSBmb3IgbGFiZWxzIHRoYXQgYXJlIG1lYW50IHRvIGJlIGZv
cm1hdHRlZCBhcyBwYXJ0IG9mIGEgZGF0ZS4KIC8vIFVEQVRfU1RBTkRBTE9ORV9mb28gYXJlIGZv
ciBsYWJlbHMgdGhhdCBhcmUgZGlzcGxheWVkIHNlcGFyYXRlbHkgZnJvbSBvdGhlciBkYXRlIGNv
bXBvbmVudHMuCiAvLyBGb3IgZXhhbXBsZSwgVURBVF9TSE9SVF9NT05USFMgaW4gQ2F0YWxhbiBw
dXRzIGEgcHJlcG9zaXRpb24gaW4gZnJvbnQgb2YgdGhlIG1vbnRoIGJ1dCBVREFUX1NUQU5EQUxP
TkVfU0hPUlRfTU9OVEhTIGRvZXMgbm90LgpAQCAtMjM5LDQgKzIwMiw2IEBAIGNvbnN0IFN0cmlu
ZyBEYXRlUGlja2VyQ2xpZW50OjpnZW5lcmF0ZURhdGVMYWJlbHMoVURhdGVGb3JtYXRTeW1ib2xU
eXBlIHN5bWJvbFR5CiAgICAgcHJpbnRlZExhYmVscy5hcHBlbmRMaXRlcmFsKCJdIik7CiAgICAg
cmV0dXJuIHByaW50ZWRMYWJlbHMudG9TdHJpbmcoKTsKIH0KKworfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0RhdGVQaWNrZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9EYXRlUGlja2VyQ2xp
ZW50LmgKaW5kZXggNGM1Y2Y4ZC4uZTgzOWY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0RhdGVQaWNrZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRGF0ZVBpY2tlckNsaWVudC5oCkBAIC0x
OSwxMCArMTksMTQgQEAKICNpZm5kZWYgRGF0ZVBpY2tlckNsaWVudF9oCiAjZGVmaW5lIERhdGVQ
aWNrZXJDbGllbnRfaAogCi0jaW5jbHVkZSAiUGFnZVBvcHVwQ2xpZW50LmgiCisjaW5jbHVkZSAi
UGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudC5oIgogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9y
bUlucHV0RXZlbnRzLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91ZGF0Lmg+CiAKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7Cit9CisKIG5hbWVzcGFjZSBCbGFja0Jl
cnJ5IHsKIG5hbWVzcGFjZSBQbGF0Zm9ybSB7CiBjbGFzcyBTdHJpbmc7CkBAIC0zMCwzNiArMzQs
MjMgQEAgY2xhc3MgU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQ
cml2YXRlOwotfQotfQogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBEb2N1bWVudFdyaXRl
cjsKLWNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7Ci0KLWNsYXNzIERhdGVQaWNrZXJDbGllbnQgOiBw
dWJsaWMgUGFnZVBvcHVwQ2xpZW50IHsKK2NsYXNzIERhdGVQaWNrZXJDbGllbnQgOiBwdWJsaWMg
UGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgRGF0ZVBpY2tlckNsaWVu
dChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6QmxhY2tCZXJyeUlucHV0VHlwZSwgY29uc3QgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgdmFsdWUsIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpTdHJpbmcmIG1pbiwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgbWF4LCBk
b3VibGUgc3RlcCwgQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZSosIEhUTUxJbnB1
dEVsZW1lbnQqKTsKKyAgICBEYXRlUGlja2VyQ2xpZW50KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpC
bGFja0JlcnJ5SW5wdXRUeXBlLCBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiB2
YWx1ZSwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgbWluLCBjb25zdCBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBtYXgsIGRvdWJsZSBzdGVwLCBCbGFja0JlcnJ5OjpX
ZWJLaXQ6OldlYlBhZ2VQcml2YXRlKiwgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCopOwogICAg
IH5EYXRlUGlja2VyQ2xpZW50KCk7CiAKLSAgICB2b2lkIGdlbmVyYXRlSFRNTChCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6QmxhY2tCZXJyeUlucHV0VHlwZSwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OlN0cmluZyYgdmFsdWUsIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIG1p
biwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgbWF4LCBkb3VibGUgc3RlcCk7
Ci0KLSAgICB2b2lkIHdyaXRlRG9jdW1lbnQoRG9jdW1lbnRXcml0ZXImKTsKLSAgICB2aXJ0dWFs
IEludFNpemUgY29udGVudFNpemUoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBodG1sU291cmNlKCk7
Ci0gICAgdmlydHVhbCBMb2NhbGUmIGxvY2FsZSgpOwogICAgIHZvaWQgc2V0VmFsdWVBbmRDbG9z
ZVBvcHVwKGludCwgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJp
bmcmKTsKICAgICB2b2lkIGRpZENsb3NlUG9wdXAoKTsKLSAgICB2b2lkIGNsb3NlUG9wdXAoKTsK
IAogcHJpdmF0ZToKKyAgICB2b2lkIGdlbmVyYXRlSFRNTChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
QmxhY2tCZXJyeUlucHV0VHlwZSwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYg
dmFsdWUsIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIG1pbiwgY29uc3QgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgbWF4LCBkb3VibGUgc3RlcCk7CiAgICAgc3RhdGlj
IGNvbnN0IFN0cmluZyBnZW5lcmF0ZURhdGVMYWJlbHMoVURhdGVGb3JtYXRTeW1ib2xUeXBlKTsK
IAogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCbGFja0JlcnJ5SW5wdXRUeXBlIG1fdHlwZTsK
LSAgICBTdHJpbmcgbV9zb3VyY2U7Ci0gICAgQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJp
dmF0ZSogbV93ZWJQYWdlOwotICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBtX2VsZW1lbnQ7
CisgICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ+IG1fZWxlbWVudDsKIH07Ci19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK30KK30KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuY3Bw
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNr
QmVycnkuY3BwCmluZGV4IDI3MjkzMTYuLmMzZmQ0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tC
ZXJyeS5jcHAKQEAgLTE2LDIwICsxNiwxOCBAQAogICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCiAg
Ki8KICNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUgIlBhZ2VQb3B1cEJsYWNrQmVycnku
aCIKIAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRXcml0
ZXIuaCIKICNpbmNsdWRlICJFbXB0eUNsaWVudHMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
ICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIK
ICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTUmV0YWluUHRyLmgiCi0jaW5jbHVk
ZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgotI2luY2x1ZGUgIlBhZ2VQb3B1cENs
aWVudC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIktVUkwu
aCIKKyNpbmNsdWRlICJQYWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50LmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZV9wLmgiCkBA
IC00MSwxNiArMzksMTYgQEAKIAogI2RlZmluZSBQQURESU5HIDgwCiAKLXVzaW5nIG5hbWVzcGFj
ZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M7Ci11c2luZyBuYW1lc3BhY2UgQmxhY2tC
ZXJyeTo6V2ViS2l0OwotbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSBCbGFja0JlcnJ5IHsKK25hbWVzcGFjZSBXZWJLaXQgewogCi1QYWdl
UG9wdXBCbGFja0JlcnJ5OjpQYWdlUG9wdXBCbGFja0JlcnJ5KEJsYWNrQmVycnk6OldlYktpdDo6
V2ViUGFnZVByaXZhdGUqIHdlYlBhZ2UsIFBhZ2VQb3B1cENsaWVudCogY2xpZW50LCBjb25zdCBJ
bnRSZWN0JiByZWN0KQorUGFnZVBvcHVwQmxhY2tCZXJyeTo6UGFnZVBvcHVwQmxhY2tCZXJyeShX
ZWJQYWdlUHJpdmF0ZSogd2ViUGFnZSwgUGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudCogY2xpZW50
KQogICAgIDogbV93ZWJQYWdlUHJpdmF0ZSh3ZWJQYWdlKQogICAgICwgbV9jbGllbnQoYWRvcHRQ
dHIoY2xpZW50KSkKICAgICAsIG1fc2hhcmVkQ2xpZW50UG9pbnRlcihhZG9wdFJlZihuZXcgUGFn
ZVBvcHVwQmxhY2tCZXJyeTo6U2hhcmVkQ2xpZW50UG9pbnRlcihjbGllbnQpKSkKIHsKLSAgICBt
X3JlY3QgPSBJbnRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSwgY2xpZW50LT5jb250ZW50U2l6ZSgp
LndpZHRoKCksIGNsaWVudC0+Y29udGVudFNpemUoKS5oZWlnaHQoKSk7CiB9CiAKIFBhZ2VQb3B1
cEJsYWNrQmVycnk6On5QYWdlUG9wdXBCbGFja0JlcnJ5KCkKQEAgLTU4LDExICs1Niw2IEBAIFBh
Z2VQb3B1cEJsYWNrQmVycnk6On5QYWdlUG9wdXBCbGFja0JlcnJ5KCkKICAgICBBU1NFUlQoIW1f
c2hhcmVkQ2xpZW50UG9pbnRlci0+Z2V0KCkpOwogfQogCi1ib29sIFBhZ2VQb3B1cEJsYWNrQmVy
cnk6OnNlbmRDcmVhdGVQb3B1cFdlYlZpZXdSZXF1ZXN0KCkKLXsKLSAgICByZXR1cm4gbV93ZWJQ
YWdlUHJpdmF0ZS0+Y2xpZW50KCktPmNyZWF0ZVBvcHVwV2ViVmlldyhtX3JlY3QpOwotfQotCiBi
b29sIFBhZ2VQb3B1cEJsYWNrQmVycnk6OmluaXQoV2ViUGFnZSogd2VicGFnZSkKIHsKICAgICAv
LyBEb24ndCB1c2UgYmFja2luZyBzdG9yZSBmb3IgdGhlIHBvcC11cCB3ZWIgcGFnZS4KQEAgLTE4
Nyw5ICsxODAsNyBAQCB2b2lkIFBhZ2VQb3B1cEJsYWNrQmVycnk6OmNsb3NlUG9wdXAoKQogICAg
IG1fc2hhcmVkQ2xpZW50UG9pbnRlci0+Y2xlYXIoKTsKIAogICAgIG1fY2xpZW50LT5kaWRDbG9z
ZVBvcHVwKCk7Ci0gICAgbV93ZWJQYWdlUHJpdmF0ZS0+Y2xpZW50KCktPmNsb3NlUG9wdXBXZWJW
aWV3KCk7Ci0gICAgbV93ZWJQYWdlUHJpdmF0ZS0+bV93ZWJQYWdlLT5wb3B1cENsb3NlZCgpOwog
fQogCiB9Ci0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3Jl
U3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5LmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5oCmluZGV4IDA4YzM1YTYuLmY1NjZk
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9Q
YWdlUG9wdXBCbGFja0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuaApAQCAtMjAsNTMgKzIwLDQ2IEBACiAjZGVm
aW5lIFBhZ2VQb3B1cEJsYWNrQmVycnlfaAogCiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1
ZGUgIlBhZ2VQb3B1cC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGcmFtZTsKK30KIAog
bmFtZXNwYWNlIEJsYWNrQmVycnkgewogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdl
OwogY2xhc3MgV2ViUGFnZVByaXZhdGU7Ci19Ci19CitjbGFzcyBQYWdlUG9wdXBCbGFja0JlcnJ5
Q2xpZW50OwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBGcmFtZTsKLWNsYXNzIFBhZ2U7
Ci1jbGFzcyBQYWdlUG9wdXBDbGllbnQ7Ci1jbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7Ci0KLWNs
YXNzIFBhZ2VQb3B1cEJsYWNrQmVycnkgOiBwdWJsaWMgUGFnZVBvcHVwIHsKK2NsYXNzIFBhZ2VQ
b3B1cEJsYWNrQmVycnkgewogcHVibGljOgotICAgIFBhZ2VQb3B1cEJsYWNrQmVycnkoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZSosIFBhZ2VQb3B1cENsaWVudCosIGNvbnN0IElu
dFJlY3QmKTsKKyAgICBQYWdlUG9wdXBCbGFja0JlcnJ5KEJsYWNrQmVycnk6OldlYktpdDo6V2Vi
UGFnZVByaXZhdGUqLCBQYWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50Kik7CiAgICAgflBhZ2VQb3B1
cEJsYWNrQmVycnkoKTsKIAotICAgIGJvb2wgc2VuZENyZWF0ZVBvcHVwV2ViVmlld1JlcXVlc3Qo
KTsKICAgICBib29sIGluaXQoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKik7CiAgICAgdm9p
ZCBjbG9zZVBvcHVwKCk7Ci0gICAgdm9pZCBzZXRSZWN0KCk7CiAKICAgICBjbGFzcyBTaGFyZWRD
bGllbnRQb2ludGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkQ2xpZW50UG9pbnRlcj4gewog
ICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgU2hhcmVkQ2xpZW50UG9pbnRlcihQYWdlUG9w
dXBDbGllbnQqIGNsaWVudCkgOiBtX2NsaWVudChjbGllbnQpIHsgfQorICAgICAgICBleHBsaWNp
dCBTaGFyZWRDbGllbnRQb2ludGVyKFBhZ2VQb3B1cEJsYWNrQmVycnlDbGllbnQqIGNsaWVudCkg
OiBtX2NsaWVudChjbGllbnQpIHsgfQogICAgICAgICB2b2lkIGNsZWFyKCkgeyBtX2NsaWVudCA9
IDA7IH0KLSAgICAgICAgUGFnZVBvcHVwQ2xpZW50KiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2Ns
aWVudDsgfQorICAgICAgICBQYWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50KiBnZXQoKSBjb25zdCB7
IHJldHVybiBtX2NsaWVudDsgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIFBhZ2VQb3B1cENsaWVu
dCogbV9jbGllbnQ7CisgICAgICAgIFBhZ2VQb3B1cEJsYWNrQmVycnlDbGllbnQqIG1fY2xpZW50
OwogICAgIH07CiAKIHByaXZhdGU6CiAgICAgdm9pZCBnZW5lcmF0ZUhUTUwoQmxhY2tCZXJyeTo6
V2ViS2l0OjpXZWJQYWdlKik7Ci0gICAgdm9pZCBpbnN0YWxsRE9NRnVuY3Rpb24oRnJhbWUqKTsK
KyAgICB2b2lkIGluc3RhbGxET01GdW5jdGlvbihXZWJDb3JlOjpGcmFtZSopOwogCiAgICAgQmxh
Y2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZSogbV93ZWJQYWdlUHJpdmF0ZTsKLSAgICBP
d25QdHI8UGFnZVBvcHVwQ2xpZW50PiBtX2NsaWVudDsKKyAgICBPd25QdHI8UGFnZVBvcHVwQmxh
Y2tCZXJyeUNsaWVudD4gbV9jbGllbnQ7CiAgICAgUmVmUHRyPFNoYXJlZENsaWVudFBvaW50ZXI+
IG1fc2hhcmVkQ2xpZW50UG9pbnRlcjsKLSAgICBJbnRSZWN0IG1fcmVjdDsKIH07CiAKIH0KK30K
IAogI2VuZGlmIC8vIFBhZ2VQb3B1cEJsYWNrQmVycnlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnlDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJs
YWNrQmVycnlDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3
NDc0NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudC5jcHAKQEAgLTAsMCArMSw2MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv
ZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudC5oIgorCisjaW5jbHVkZSAi
RG9jdW1lbnRXcml0ZXIuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiV2ViUGFn
ZV9wLmgiCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtU3RyaW5nLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgQmxhY2tCZXJyeSB7CituYW1lc3BhY2UgV2Vi
S2l0IHsKKworUGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudDo6UGFnZVBvcHVwQmxhY2tCZXJyeUNs
aWVudChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlKiB3ZWJQYWdlKQorICAgIDog
bV93ZWJQYWdlKHdlYlBhZ2UpCit7Cit9CisKK3ZvaWQgUGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVu
dDo6Y2xvc2VQb3B1cCgpCit7CisgICAgQVNTRVJUKG1fd2ViUGFnZSk7CisgICAgbV93ZWJQYWdl
LT5jbG9zZVBhZ2VQb3B1cCgpOworfQorCit2b2lkIFBhZ2VQb3B1cEJsYWNrQmVycnlDbGllbnQ6
OmRpZENsb3NlUG9wdXAoKQoreworICAgIG1fd2ViUGFnZSA9IDA7Cit9CisKK0ludFNpemUgUGFn
ZVBvcHVwQmxhY2tCZXJyeUNsaWVudDo6Y29udGVudFNpemUoKQoreworICAgIC8vIEZJWE1FOiB3
aWxsIGdlbmVyYXRlIGNvbnRlbnQgc2l6ZSBkeW5hbWljYWxseQorICAgIHJldHVybiBJbnRTaXpl
KDMyMCwgMjU2KTsKK30KKwordm9pZCBQYWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50Ojp3cml0ZURv
Y3VtZW50KERvY3VtZW50V3JpdGVyJiB3cml0ZXIpCit7CisgICAgd3JpdGVyLmFkZERhdGEobV9z
b3VyY2UudXRmOCgpLmRhdGEoKSwgbV9zb3VyY2UudXRmOCgpLmxlbmd0aCgpKTsKK30KKworfQor
fQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
UGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnlDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5mNTQyM2RjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnlDbGllbnQu
aApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg
d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICov
CisKKworI2lmbmRlZiBQYWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50X2gKKyNkZWZpbmUgUGFnZVBv
cHVwQmxhY2tCZXJyeUNsaWVudF9oCisKKyNpbmNsdWRlICJEb2N1bWVudFdyaXRlci5oIgorI2lu
Y2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRG9jdW1lbnRXcml0ZXI7CitjbGFzcyBIVE1MSW5wdXRF
bGVtZW50OworfQorCituYW1lc3BhY2UgQmxhY2tCZXJyeSB7CituYW1lc3BhY2UgV2ViS2l0IHsK
K2NsYXNzIFdlYlBhZ2VQcml2YXRlOworCitjbGFzcyBQYWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgY29udGVudFNpemUoKTsK
KworICAgIC8vIFByb3ZpZGUgYW4gSFRNTCBzb3VyY2UgdGhyb3VnaCB0aGUgc3BlY2lmaWVkIERv
Y3VtZW50V3JpdGVyLiBUaGUgSFRNTAorICAgIC8vIHNvdXJjZSBpcyByZW5kZXJlZCBpbiBhIFBh
Z2VQb3B1cC4KKyAgICAvLyBUaGUgY29udGVudCBIVE1MIHN1cHBvcnRzOgorICAgIC8vICAtIE5v
IDxzZWxlY3Q+IHBvcHVwcworICAgIC8vICAtIHdpbmRvdy5zZXRWYWx1ZUFuZENsb3NlUG9wdXAo
bnVtYmVyLCBzdHJpbmcpLgorICAgIHZpcnR1YWwgdm9pZCB3cml0ZURvY3VtZW50KFdlYkNvcmU6
OkRvY3VtZW50V3JpdGVyJik7CisKKyAgICAvLyBUaGlzIGlzIGNhbGxlZCBieSB0aGUgY29udGVu
dCBIVE1MIG9mIGEgUGFnZVBvcHVwLgorICAgIC8vIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoaXMg
ZnVuY3Rpb24gc2hvdWxkIGNhbGwgQ2hyb21lQ2xpZW50OjpjbG9zZVBhZ2VQb3B1cCgpLgorICAg
IHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFuZENsb3NlUG9wdXAoaW50IG51bVZhbHVlLCBjb25zdCBT
dHJpbmcmIHN0cmluZ1ZhbHVlKSA9IDA7CisKKyAgICAvLyBUaGlzIGlzIGNhbGxlZCBieSB0aGUg
Y29udGVudCBIVE1MIG9mIGEgUGFnZVBvcHVwLgorICAgIHZpcnR1YWwgdm9pZCBjbG9zZVBvcHVw
KCk7CisKKyAgICAvLyBUaGlzIGlzIGNhbGxlZCB3aGVuZXZlciBhIFBhZ2VQb3B1cCB3YXMgY2xv
c2VkLgorICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVBvcHVwKCk7CisKKyAgICB2aXJ0dWFsIH5Q
YWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50KCkgeyB9CisKK3Byb3RlY3RlZDoKKyAgICBQYWdlUG9w
dXBCbGFja0JlcnJ5Q2xpZW50KEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGUqKTsK
KworICAgIEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGUqIG1fd2ViUGFnZTsKKyAg
ICBTdHJpbmcgbV9zb3VyY2U7Cit9OworCit9Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1NlbGVjdFBvcHVwQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9TZWxlY3RQb3B1cENs
aWVudC5jcHAKaW5kZXggNjY5Y2YzYy4uYzE1ZmQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1NlbGVjdFBvcHVwQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvU2VsZWN0UG9wdXBDbGllbnQu
Y3BwCkBAIC0xNywxOCArMTcsMTAgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNp
bmNsdWRlICJTZWxlY3RQb3B1cENsaWVudC5oIgogCi0jaW5jbHVkZSAiQ2hyb21lLmgiCi0jaW5j
bHVkZSAiQ2hyb21lQ2xpZW50LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJE
b2N1bWVudFdyaXRlci5oIgogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2lu
Y2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQYWdlUG9wdXAuaCIKICNpbmNsdWRlICJQb3B1cFBp
Y2tlci5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIldlYlBhZ2VfcC5o
IgpAQCAtNDAsMTUgKzMyLDE4IEBACiAKICNkZWZpbmUgQ0VMTF9IRUlHSFQgMzAKIAotbmFtZXNw
YWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBCbGFj
a0JlcnJ5IHsKK25hbWVzcGFjZSBXZWJLaXQgewogCiBERUZJTkVfU1RBVElDX0xPQ0FMKEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpMb2NhbGl6ZVJlc291cmNlLCBzX3Jlc291cmNlLCAoKSk7CiAKIFNl
bGVjdFBvcHVwQ2xpZW50OjpTZWxlY3RQb3B1cENsaWVudChib29sIG11bHRpcGxlLCBpbnQgc2l6
ZSwgY29uc3QgU2NvcGVBcnJheTxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nPiYgbGFiZWxz
LCBib29sKiBlbmFibGVkcywKICAgICBjb25zdCBpbnQqIGl0ZW1UeXBlLCBib29sKiBzZWxlY3Rl
ZHMsIEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGUqIHdlYlBhZ2UsIEhUTUxTZWxl
Y3RFbGVtZW50KiBlbGVtZW50KQotICAgIDogbV9tdWx0aXBsZShtdWx0aXBsZSkKKyAgICA6IFBh
Z2VQb3B1cEJsYWNrQmVycnlDbGllbnQod2ViUGFnZSkKKyAgICAsIG1fbXVsdGlwbGUobXVsdGlw
bGUpCiAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKQogICAgICwg
bV9lbGVtZW50KGVsZW1lbnQpCiAgICAgLCBtX25vdGlmeUNoYW5nZVRpbWVyKHRoaXMsICZTZWxl
Y3RQb3B1cENsaWVudDo6bm90aWZ5U2VsZWN0aW9uQ2hhbmdlKQogewpAQCAtNTksMTUgKzU0LDYg
QEAgU2VsZWN0UG9wdXBDbGllbnQ6On5TZWxlY3RQb3B1cENsaWVudCgpCiB7CiB9CiAKLXZvaWQg
U2VsZWN0UG9wdXBDbGllbnQ6OnVwZGF0ZShib29sIG11bHRpcGxlLCBpbnQgc2l6ZSwgY29uc3Qg
U2NvcGVBcnJheTxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nPiYgbGFiZWxzLCBib29sKiBl
bmFibGVkcywKLSAgICBjb25zdCBpbnQqIGl0ZW1UeXBlLCBib29sKiBzZWxlY3RlZHMsIEJsYWNr
QmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGUqLCBIVE1MU2VsZWN0RWxlbWVudCogZWxlbWVu
dCkKLXsKLSAgICBtX211bHRpcGxlID0gbXVsdGlwbGU7Ci0gICAgbV9zaXplID0gc2l6ZTsKLSAg
ICBtX2VsZW1lbnQgPSBlbGVtZW50OwotICAgIGdlbmVyYXRlSFRNTChtdWx0aXBsZSwgc2l6ZSwg
bGFiZWxzLCBlbmFibGVkcywgaXRlbVR5cGUsIHNlbGVjdGVkcyk7Ci19Ci0KIHZvaWQgU2VsZWN0
UG9wdXBDbGllbnQ6OmdlbmVyYXRlSFRNTChib29sLCBpbnQgc2l6ZSwgY29uc3QgU2NvcGVBcnJh
eTxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nPiYgbGFiZWxzLCBib29sKiBlbmFibGVkcywK
ICAgICBjb25zdCBpbnQqIGl0ZW1UeXBlLCBib29sKiBzZWxlY3RlZHMpCiB7CkBAIC0xNDgsMjgg
KzEzNCw2IEBAIHZvaWQgU2VsZWN0UG9wdXBDbGllbnQ6OmdlbmVyYXRlSFRNTChib29sLCBpbnQg
c2l6ZSwgY29uc3QgU2NvcGVBcnJheTxCbGFja0JlcnJ5CiAgICAgbV9zb3VyY2UgPSBzb3VyY2Uu
dG9TdHJpbmcoKTsKIH0KIAotdm9pZCBTZWxlY3RQb3B1cENsaWVudDo6Y2xvc2VQb3B1cCgpCi17
Ci0gICAgQVNTRVJUKG1fd2ViUGFnZSk7Ci0gICAgbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgp
LmNsaWVudCgpLT5jbG9zZVBhZ2VQb3B1cCgwKTsKLX0KLQotSW50U2l6ZSBTZWxlY3RQb3B1cENs
aWVudDo6Y29udGVudFNpemUoKQotewotICAgIC8vIEZpeG1lOiB3aWxsIGdlbmVyYXRlIGNvbnRl
bnQgc2l6ZSBkeW5hbWljYWxseQotICAgIHJldHVybiBJbnRTaXplKDMyMCwgMjU2KTsKLX0KLQot
U3RyaW5nIFNlbGVjdFBvcHVwQ2xpZW50OjpodG1sU291cmNlKCkKLXsKLSAgICByZXR1cm4gbV9z
b3VyY2U7Ci19Ci0KLUxvY2FsZSYgU2VsZWN0UG9wdXBDbGllbnQ6OmxvY2FsZSgpCi17Ci0gICAg
cmV0dXJuIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+Z2V0Q2FjaGVkTG9jYWxlKCk7Ci19Ci0KIHZv
aWQgU2VsZWN0UG9wdXBDbGllbnQ6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQsIGNvbnN0IFN0
cmluZyYgc3RyaW5nVmFsdWUpCiB7CiAgICAgQVNTRVJUKG1fZWxlbWVudCk7CkBAIC0yMDksMjIg
KzE3MywxMiBAQCB2b2lkIFNlbGVjdFBvcHVwQ2xpZW50OjpzZXRWYWx1ZUFuZENsb3NlUG9wdXAo
aW50LCBjb25zdCBTdHJpbmcmIHN0cmluZ1ZhbHVlKQogICAgIG1fbm90aWZ5Q2hhbmdlVGltZXIu
c3RhcnRPbmVTaG90KDApOwogfQogCi12b2lkIFNlbGVjdFBvcHVwQ2xpZW50OjpzZXRWYWx1ZShj
b25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgU2VsZWN0
UG9wdXBDbGllbnQ6OmRpZENsb3NlUG9wdXAoKQogewotICAgIG1fd2ViUGFnZSA9IDA7CisgICAg
UGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudDo6ZGlkQ2xvc2VQb3B1cCgpOwogICAgIG1fZWxlbWVu
dCA9IDA7CiB9CiAKLXZvaWQgU2VsZWN0UG9wdXBDbGllbnQ6OndyaXRlRG9jdW1lbnQoRG9jdW1l
bnRXcml0ZXImIHdyaXRlcikKLXsKLSAgICB3cml0ZXIuYWRkRGF0YShtX3NvdXJjZS51dGY4KCku
ZGF0YSgpLCBtX3NvdXJjZS51dGY4KCkubGVuZ3RoKCkpOwotfQotCiB2b2lkIFNlbGVjdFBvcHVw
Q2xpZW50Ojpub3RpZnlTZWxlY3Rpb25DaGFuZ2UoV2ViQ29yZTo6VGltZXI8U2VsZWN0UG9wdXBD
bGllbnQ+KikKIHsKICAgICBpZiAobV9lbGVtZW50KQpAQCAtMjMzLDQgKzE4Nyw0IEBAIHZvaWQg
U2VsZWN0UG9wdXBDbGllbnQ6Om5vdGlmeVNlbGVjdGlvbkNoYW5nZShXZWJDb3JlOjpUaW1lcjxT
ZWxlY3RQb3B1cENsaWVudD4qCiB9CiAKIH0KLQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1NlbGVjdFBvcHVwQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvU2VsZWN0UG9wdXBDbGllbnQuaAppbmRl
eCAzNmE2MDI5Li40YWVkOTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvU2VsZWN0UG9wdXBDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvU2VsZWN0UG9wdXBDbGllbnQuaApAQCAtMjAsNTEgKzIw
LDQwIEBACiAjZGVmaW5lIFNlbGVjdFBvcHVwQ2xpZW50X2gKIAogI2luY2x1ZGUgIkludFNpemUu
aCIKLSNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKKyNpbmNsdWRlICJQYWdlUG9wdXBCbGFj
a0JlcnJ5Q2xpZW50LmgiCiAjaW5jbHVkZSAiU2NvcGVQb2ludGVyLmgiCiAjaW5jbHVkZSAiVGlt
ZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgSFRNTFNlbGVjdEVsZW1lbnQ7Cit9CisKIG5hbWVzcGFjZSBCbGFja0JlcnJ5
IHsKIG5hbWVzcGFjZSBQbGF0Zm9ybSB7CiBjbGFzcyBTdHJpbmc7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewotY2xhc3MgV2ViUGFnZVByaXZhdGU7Ci19Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLWNsYXNzIERvY3VtZW50V3JpdGVyOwotY2xhc3MgSFRNTFNlbGVjdEVsZW1lbnQ7Ci1jbGFz
cyBQYWdlUG9wdXA7CiAKLWNsYXNzIFNlbGVjdFBvcHVwQ2xpZW50IDogcHVibGljIFBhZ2VQb3B1
cENsaWVudCB7CitjbGFzcyBTZWxlY3RQb3B1cENsaWVudCA6IHB1YmxpYyBQYWdlUG9wdXBCbGFj
a0JlcnJ5Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBTZWxlY3RQb3B1cENsaWVudChib29sIG11bHRp
cGxlLCBpbnQgc2l6ZSwgY29uc3QgU2NvcGVBcnJheTxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3Ry
aW5nPiYgbGFiZWxzLCBib29sKiBlbmFibGVkcywgY29uc3QgaW50KiBpdGVtVHlwZSwgYm9vbCog
c2VsZWN0ZWRzLCBCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlKiwgSFRNTFNlbGVj
dEVsZW1lbnQqKTsKKyAgICBTZWxlY3RQb3B1cENsaWVudChib29sIG11bHRpcGxlLCBpbnQgc2l6
ZSwgY29uc3QgU2NvcGVBcnJheTxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nPiYgbGFiZWxz
LCBib29sKiBlbmFibGVkcywgY29uc3QgaW50KiBpdGVtVHlwZSwgYm9vbCogc2VsZWN0ZWRzLCBC
bGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlKiwgV2ViQ29yZTo6SFRNTFNlbGVjdEVs
ZW1lbnQqKTsKICAgICB+U2VsZWN0UG9wdXBDbGllbnQoKTsKIAotICAgIHZvaWQgdXBkYXRlKGJv
b2wgbXVsdGlwbGUsIGludCBzaXplLCBjb25zdCBTY29wZUFycmF5PEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpTdHJpbmc+JiBsYWJlbHMsIGJvb2wqIGVuYWJsZWRzLCBjb25zdCBpbnQqIGl0ZW1UeXBl
LCBib29sKiBzZWxlY3RlZHMsIEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGUqLCBI
VE1MU2VsZWN0RWxlbWVudCopOworICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFuZENsb3NlUG9w
dXAoaW50LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2VQb3B1cCgp
OwogCitwcml2YXRlOgogICAgIHZvaWQgZ2VuZXJhdGVIVE1MKGJvb2wgbXVsdGlwbGUsIGludCBz
aXplLCBjb25zdCBTY29wZUFycmF5PEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmc+JiBsYWJl
bHMsIGJvb2wqIGVuYWJsZWRzLCBjb25zdCBpbnQqIGl0ZW1UeXBlLCBib29sKiBzZWxlY3RlZHMp
OwogICAgIHZvaWQgbm90aWZ5U2VsZWN0aW9uQ2hhbmdlKFdlYkNvcmU6OlRpbWVyPFNlbGVjdFBv
cHVwQ2xpZW50PiAqKTsKIAotICAgIHZvaWQgd3JpdGVEb2N1bWVudChEb2N1bWVudFdyaXRlciYp
OwotICAgIHZpcnR1YWwgSW50U2l6ZSBjb250ZW50U2l6ZSgpOwotICAgIHZpcnR1YWwgU3RyaW5n
IGh0bWxTb3VyY2UoKTsKLSAgICB2aXJ0dWFsIExvY2FsZSYgbG9jYWxlKCk7Ci0gICAgdmlydHVh
bCB2b2lkIHNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQsIGNvbnN0IFN0cmluZyYpOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xv
c2VQb3B1cCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVBvcHVwKCk7Ci0KICAgICBib29s
IG1fbXVsdGlwbGU7CiAgICAgdW5zaWduZWQgbV9zaXplOwotICAgIFN0cmluZyBtX3NvdXJjZTsK
LSAgICBCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlKiBtX3dlYlBhZ2U7Ci0gICAg
UmVmUHRyPEhUTUxTZWxlY3RFbGVtZW50PiBtX2VsZW1lbnQ7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkhUTUxTZWxlY3RFbGVtZW50PiBtX2VsZW1lbnQ7CiAgICAgV2ViQ29yZTo6VGltZXI8U2VsZWN0
UG9wdXBDbGllbnQ+IG1fbm90aWZ5Q2hhbmdlVGltZXI7CiB9OwotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCit9Cit9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3BwCmluZGV4IDU5NWVhMzMuLjQzYjY5MTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
SW5wdXRIYW5kbGVyLmNwcApAQCAtMTIxMiwxNSArMTIxMiwxMyBAQCBib29sIElucHV0SGFuZGxl
cjo6b3BlbkRhdGVQb3B1cChIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50LCBCbGFja0JlcnJ5SW5w
dXRUeXBlCiAgICAgICAgIC8vIERhdGUgaW5wdXQgaGF2ZSBidXR0b24gYXBwZWFyYW5jZSwgd2Ug
aGlkZSBjYXJldCB3aGVuIHRoZXkgZ2V0IGNsaWNrZWQuCiAgICAgICAgIGVsZW1lbnQtPmRvY3Vt
ZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigpLT5zZXRDYXJldFZpc2libGUoZmFsc2UpOwogCi0g
ICAgICAgIC8vIENoZWNrIGlmIHBvcHVwIGFscmVhZHkgZXhpc3RzLCBjbG9zZSBpdCBpZiBkb2Vz
LgotICAgICAgICBtX3dlYlBhZ2UtPm1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPmNsb3NlUGFn
ZVBvcHVwKDApOwogICAgICAgICBXVEY6OlN0cmluZyB2YWx1ZSA9IGVsZW1lbnQtPnZhbHVlKCk7
CiAgICAgICAgIFdURjo6U3RyaW5nIG1pbiA9IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShIVE1MTmFt
ZXM6Om1pbkF0dHIpLnN0cmluZygpOwogICAgICAgICBXVEY6OlN0cmluZyBtYXggPSBlbGVtZW50
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjptYXhBdHRyKS5zdHJpbmcoKTsKICAgICAgICAgZG91
YmxlIHN0ZXAgPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdGVwQXR0cikudG9E
b3VibGUoKTsKIAogICAgICAgICBEYXRlUGlja2VyQ2xpZW50KiBjbGllbnQgPSBuZXcgRGF0ZVBp
Y2tlckNsaWVudCh0eXBlLCB2YWx1ZSwgbWluLCBtYXgsIHN0ZXAsICBtX3dlYlBhZ2UsIGVsZW1l
bnQpOwotICAgICAgICByZXR1cm4gbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgp
LT5vcGVuUGFnZVBvcHVwKGNsaWVudCwgIFdlYkNvcmU6OkludFJlY3QoKSk7CisgICAgICAgIHJl
dHVybiBtX3dlYlBhZ2UtPm9wZW5QYWdlUG9wdXAoY2xpZW50LCAgV2ViQ29yZTo6SW50UmVjdCgp
KTsKICAgICAgICAgfQogICAgIGRlZmF1bHQ6IC8vIE90aGVyIHR5cGVzIG5vdCBzdXBwb3J0ZWQK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTIzOCwxMSArMTIzNiw4IEBAIGJvb2wgSW5wdXRI
YW5kbGVyOjpvcGVuQ29sb3JQb3B1cChIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogICAgIG1f
Y3VycmVudEZvY3VzRWxlbWVudCA9IGVsZW1lbnQ7CiAgICAgbV9jdXJyZW50Rm9jdXNFbGVtZW50
VHlwZSA9IFRleHRQb3B1cDsKIAotICAgIC8vIENoZWNrIGlmIHBvcHVwIGFscmVhZHkgZXhpc3Rz
LCBjbG9zZSBpdCBpZiBkb2VzLgotICAgIG1fd2ViUGFnZS0+bV9wYWdlLT5jaHJvbWUoKS5jbGll
bnQoKS0+Y2xvc2VQYWdlUG9wdXAoMCk7Ci0KICAgICBDb2xvclBpY2tlckNsaWVudCogY2xpZW50
ID0gbmV3IENvbG9yUGlja2VyQ2xpZW50KGVsZW1lbnQtPnZhbHVlKCksIG1fd2ViUGFnZSwgZWxl
bWVudCk7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS0+bV9wYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+
b3BlblBhZ2VQb3B1cChjbGllbnQsICBXZWJDb3JlOjpJbnRSZWN0KCkpOworICAgIHJldHVybiBt
X3dlYlBhZ2UtPm9wZW5QYWdlUG9wdXAoY2xpZW50LCBXZWJDb3JlOjpJbnRSZWN0KCkpOwogfQog
CiB2b2lkIElucHV0SGFuZGxlcjo6c2V0SW5wdXRWYWx1ZShjb25zdCBXVEY6OlN0cmluZyYgdmFs
dWUpCkBAIC0xOTcxLDkgKzE5NjYsNiBAQCBib29sIElucHV0SGFuZGxlcjo6b3BlblNlbGVjdFBv
cHVwKEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QpCiAgICAgU2NvcGVBcnJheTxCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6U3RyaW5nPiBsYWJlbHM7CiAgICAgbGFiZWxzLnJlc2V0KG5ldyBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6U3RyaW5nW3NpemVdKTsKIAotICAgIC8vIENoZWNrIGlmIHBvcHVwIGFs
cmVhZHkgZXhpc3RzLCBjbG9zZSBpdCBpZiBkb2VzLgotICAgIG1fd2ViUGFnZS0+bV9wYWdlLT5j
aHJvbWUoKS5jbGllbnQoKS0+Y2xvc2VQYWdlUG9wdXAoMCk7Ci0KICAgICBib29sKiBlbmFibGVk
cyA9IDA7CiAgICAgaW50KiBpdGVtVHlwZXMgPSAwOwogICAgIGJvb2wqIHNlbGVjdGVkcyA9IDA7
CkBAIC0yMDA2LDcgKzE5OTgsNyBAQCBib29sIElucHV0SGFuZGxlcjo6b3BlblNlbGVjdFBvcHVw
KEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QpCiAgICAgU2VsZWN0UG9wdXBDbGllbnQqIHNlbGVj
dENsaWVudCA9IG5ldyBTZWxlY3RQb3B1cENsaWVudChtdWx0aXBsZSwgc2l6ZSwgbGFiZWxzLCBl
bmFibGVkcywgaXRlbVR5cGVzLCBzZWxlY3RlZHMsIG1fd2ViUGFnZSwgc2VsZWN0KTsKICAgICBX
ZWJDb3JlOjpJbnRSZWN0IGVsZW1lbnRSZWN0SW5Sb290VmlldyA9IHNlbGVjdC0+ZG9jdW1lbnQo
KS0+dmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoZW5jbG9zaW5nSW50UmVjdChzZWxlY3QtPmdl
dFJlY3QoKSkpOwogICAgIC8vIEZhaWwgdG8gY3JlYXRlIEhUTUwgcG9wdXAsIHVzZSB0aGUgb2xk
IHBhdGgKLSAgICBpZiAoIW1fd2ViUGFnZS0+bV9wYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+b3Bl
blBhZ2VQb3B1cChzZWxlY3RDbGllbnQsIGVsZW1lbnRSZWN0SW5Sb290VmlldykpCisgICAgaWYg
KCFtX3dlYlBhZ2UtPm9wZW5QYWdlUG9wdXAoc2VsZWN0Q2xpZW50LCBlbGVtZW50UmVjdEluUm9v
dFZpZXcpKQogICAgICAgICBtX3dlYlBhZ2UtPm1fY2xpZW50LT5vcGVuUG9wdXBMaXN0KG11bHRp
cGxlLCBzaXplLCBsYWJlbHMsIGVuYWJsZWRzLCBpdGVtVHlwZXMsIHNlbGVjdGVkcyk7CiAgICAg
ZGVsZXRlW10gZW5hYmxlZHM7CiAgICAgZGVsZXRlW10gaXRlbVR5cGVzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL2NtYWtlL09wdGlvbnNCbGFja0JlcnJ5LmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlv
bnNCbGFja0JlcnJ5LmNtYWtlCmluZGV4IDkxMTEzMTEuLmVjNGMxOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9jbWFrZS9PcHRpb25zQmxhY2tCZXJyeS5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0
aW9uc0JsYWNrQmVycnkuY21ha2UKQEAgLTE4MSw3ICsxODEsNiBAQCBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMgT04pCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUV09SS19JTkZPIE9OKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05PVElGSUNBVElPTlMgT04pCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRT
IE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1BBR0VfUE9QVVAg
T04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUEFHRV9WSVNJQklM
SVRZX0FQSSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9SRVBB
SU5UX1RIUk9UVExJTkcgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUgT04pCg==
</data>
<flag name="review"
          id="223721"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202401</attachid>
            <date>2013-05-21 03:09:32 -0700</date>
            <delta_ts>2013-05-21 03:55:34 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bb-page-popup.diff</filename>
            <type>text/plain</type>
            <size>43556</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlZTY3OThkLi45OTc4Njhj
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTMtMDUtMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtCbGFja0JlcnJ5XSBNYWtlIFBhZ2VQb3B1cCBpbXBsZW1lbnRhdGlvbiBpbmRl
cGVuZGVudCBmcm9tIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNjQ0OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nv
bi4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zQmxhY2tCZXJyeS5jbWFrZTogRG8g
bm90IGVuYWJsZSBQQUdFX1BPUFVQCisgICAgICAgIGZlYXR1cmUuCisKIDIwMTMtMDUtMjAgIENo
cmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFtF
RkxdIFJlZW5hYmxlZCBJTkRFWEVEX0RBVEFCQVNFIGFmdGVyIHIxNTAzNDQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
ZGZkZjA1Yy4uNzZmMjFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wNS0yMCAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0Js
YWNrQmVycnldIE1ha2UgUGFnZVBvcHVwIGltcGxlbWVudGF0aW9uIGluZGVwZW5kZW50IGZyb20g
V2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTE2NDQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgorCisgICAgICAg
ICogUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlOiBBZGQKKyAgICAgICAgYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50LmNwcCB0bworICAgICAgICBjb21w
aWxhdGlvbi4KKwogMjAxMy0wNS0xOCAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBbQ01ha2VdIFJlcGxhY2UgKl9MSUJSQVJZX05BTUUgd2l0aCAqX09V
VFBVVF9OQU1FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5j
bWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCmluZGV4IDdlM2Mw
MTcuLmEzODMzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC0x
MDIsNiArMTAyLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtJbmZvQ2xpZW50QmxhY2tCZXJyeS5jcHAKICAgICBibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvbkNsaWVudEJsYWNrQmVycnkuY3BwCiAg
ICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5LmNwcAorICAg
IGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudC5jcHAK
ICAgICBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVy
cnkuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9OYXZpZ2F0b3JDb250ZW50VXRp
bHNDbGllbnRCbGFja0JlcnJ5LmNwcAogICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvU2Vs
ZWN0UG9wdXBDbGllbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNw
cAppbmRleCA1MTBmNWE4Li5jNDJjYWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkv
V2ViUGFnZS5jcHAKQEAgLTEwMSw2ICsxMDEsNyBAQAogI2luY2x1ZGUgIlBhZ2VDYWNoZS5oIgog
I2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBhZ2VQb3B1cEJsYWNrQmVycnkuaCIK
KyNpbmNsdWRlICJQYWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1Ub3VjaEV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVk
ZSAiUGx1Z2luRGF0YWJhc2UuaCIKQEAgLTQ2NCw2ICs0NjUsOCBAQCBXZWJQYWdlUHJpdmF0ZTo6
fldlYlBhZ2VQcml2YXRlKCkKICAgICBjYW5jZWxDYWxsT25NYWluVGhyZWFkKGhhbmRsZVNlcnZp
Y2VTY3JpcHRlZEFuaW1hdGlvbnNPbk1haW5UaHJlYWQsIHRoaXMpOwogI2VuZGlmCiAKKyAgICBj
bG9zZVBhZ2VQb3B1cCgpOworCiAgICAgZGVsZXRlIG1fd2ViU2V0dGluZ3M7CiAgICAgbV93ZWJT
ZXR0aW5ncyA9IDA7CiAKQEAgLTMxNDksOCArMzE1Miw3IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6
OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgICAgICAgICAgaWYgKCFtX3BhZ2UtPnNjcmlw
dGVkQW5pbWF0aW9uc1N1c3BlbmRlZCgpKQogICAgICAgICAgICAgICAgIG1fcGFnZS0+c3VzcGVu
ZFNjcmlwdGVkQW5pbWF0aW9ucygpOwogCi0gICAgICAgICAgICBpZiAobV93ZWJQYWdlLT5oYXNP
cGVuZWRQb3B1cCgpKQotICAgICAgICAgICAgICAgIG1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkt
PmNsb3NlUGFnZVBvcHVwKDApOworICAgICAgICAgICAgY2xvc2VQYWdlUG9wdXAoKTsKICAgICAg
ICAgfQogCiAgICAgICAgIG1fdmlzaWJsZSA9IHZpc2libGU7CkBAIC02MDY2LDI2ICs2MDY4LDM1
IEBAIHZvaWQgV2ViUGFnZTo6cmVtb3ZlQ29tcG9zaXRpbmdUaHJlYWRPdmVybGF5KFdlYk92ZXJs
YXkqIG92ZXJsYXkpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQYWdlOjpwb3B1cE9wZW5lZChQYWdl
UG9wdXBCbGFja0JlcnJ5KiB3ZWJQb3B1cCkKK2Jvb2wgV2ViUGFnZVByaXZhdGU6Om9wZW5QYWdl
UG9wdXAoUGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudCogcG9wdXBDbGllbnQsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIG9yaWdpbkJvdW5kc0luUm9vdFZpZXcpCiB7Ci0gICAgQVNTRVJUKCFkLT5t
X3NlbGVjdFBvcHVwKTsKLSAgICBkLT5tX3NlbGVjdFBvcHVwID0gd2ViUG9wdXA7Ci19CisgICAg
Y2xvc2VQYWdlUG9wdXAoKTsKKyAgICBtX3NlbGVjdFBvcHVwID0gbmV3IFBhZ2VQb3B1cEJsYWNr
QmVycnkodGhpcywgcG9wdXBDbGllbnQpOwogCi12b2lkIFdlYlBhZ2U6OnBvcHVwQ2xvc2VkKCkK
LXsKLSAgICBBU1NFUlQoZC0+bV9zZWxlY3RQb3B1cCk7Ci0gICAgZC0+bV9zZWxlY3RQb3B1cCA9
IDA7CisgICAgV2ViQ29yZTo6SW50UmVjdCBwb3B1cFJlY3QgPSBtX3BhZ2UtPmNocm9tZSgpLmNs
aWVudCgpLT5yb290Vmlld1RvU2NyZWVuKG9yaWdpbkJvdW5kc0luUm9vdFZpZXcpOworICAgIHBv
cHVwUmVjdC5zZXRTaXplKHBvcHVwQ2xpZW50LT5jb250ZW50U2l6ZSgpKTsKKyAgICBpZiAoIW1f
Y2xpZW50LT5jcmVhdGVQb3B1cFdlYlZpZXcocG9wdXBSZWN0KSkgeworICAgICAgICBjbG9zZVBh
Z2VQb3B1cCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgV2ViUGFnZTo6aGFzT3BlbmVkUG9wdXAoKSBjb25zdAordm9pZCBXZWJQ
YWdlUHJpdmF0ZTo6Y2xvc2VQYWdlUG9wdXAoKQogewotICAgIHJldHVybiBkLT5tX3NlbGVjdFBv
cHVwOworICAgIGlmICghbV9zZWxlY3RQb3B1cCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9z
ZWxlY3RQb3B1cC0+Y2xvc2VQb3B1cCgpOworICAgIG1fY2xpZW50LT5jbG9zZVBvcHVwV2ViVmll
dygpOworICAgIGRlbGV0ZSBtX3NlbGVjdFBvcHVwOworICAgIG1fc2VsZWN0UG9wdXAgPSAwOwog
fQogCi1QYWdlUG9wdXBCbGFja0JlcnJ5KiBXZWJQYWdlOjpwb3B1cCgpCitib29sIFdlYlBhZ2VQ
cml2YXRlOjpoYXNPcGVuZWRQb3B1cCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGQtPm1fc2VsZWN0
UG9wdXA7CisgICAgcmV0dXJuIG1fc2VsZWN0UG9wdXA7CiB9CiAKIHZvaWQgV2ViUGFnZVByaXZh
dGU6OnNldEluc3BlY3Rvck92ZXJsYXlDbGllbnQoSW5zcGVjdG9yT3ZlcmxheTo6SW5zcGVjdG9y
T3ZlcmxheUNsaWVudCogaW5zcGVjdG9yT3ZlcmxheUNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0FwaS9XZWJQYWdlLmgKaW5kZXggYjc0YTVjNC4uYWQzMjJhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9XZWJQYWdlLmgKQEAgLTM2LDcgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQ2hyb21lQ2xpZW50QmxhY2tCZXJyeTsKIGNsYXNzIEZyYW1lOwogY2xhc3Mg
RnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OwotY2xhc3MgUGFnZVBvcHVwQmxhY2tCZXJyeTsK
IH0KIAogY2xhc3MgV2ViRE9NRG9jdW1lbnQ7CkBAIC02Miw2ICs2MSw3IEBAIGNsYXNzIEJhY2tp
bmdTdG9yZTsKIGNsYXNzIEJhY2tpbmdTdG9yZUNsaWVudDsKIGNsYXNzIEJhY2tpbmdTdG9yZVBy
aXZhdGU7CiBjbGFzcyBJblJlZ2lvblNjcm9sbGVyOworY2xhc3MgUGFnZVBvcHVwQmxhY2tCZXJy
eTsKIGNsYXNzIFJlbmRlclF1ZXVlOwogY2xhc3MgV2ViQ29va2llSmFyOwogY2xhc3MgV2ViT3Zl
cmxheTsKQEAgLTM2OCwxMCArMzY4LDYgQEAgcHVibGljOgogCiAgICAgLy8gUG9wdXAgY2xpZW50
CiAgICAgdm9pZCBpbml0UG9wdXBXZWJWaWV3KEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZSop
OwotICAgIHZvaWQgcG9wdXBPcGVuZWQoV2ViQ29yZTo6UGFnZVBvcHVwQmxhY2tCZXJyeSogd2Vi
UG9wdXApOwotICAgIHZvaWQgcG9wdXBDbG9zZWQoKTsKLSAgICBib29sIGhhc09wZW5lZFBvcHVw
KCkgY29uc3Q7Ci0gICAgV2ViQ29yZTo6UGFnZVBvcHVwQmxhY2tCZXJyeSogcG9wdXAoKTsKIAog
ICAgIHZvaWQgYXV0b2ZpbGxUZXh0RmllbGQoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0
cmluZyYpOwogCkBAIC0zOTMsMTMgKzM4OSwxMyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBXZWJLaXQ6OkJhY2tpbmdTdG9yZTsKICAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpCYWNraW5n
U3RvcmVDbGllbnQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0
ZTsKKyAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpQYWdlUG9wdXBCbGFja0JlcnJ5OwogICAgIGZy
aWVuZCBjbGFzcyBXZWJLaXQ6OlJlbmRlclF1ZXVlOwogICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6
OldlYlBhZ2VDb21wb3NpdG9yOwogICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OldlYlBhZ2VHcm91
cExvYWREZWZlcnJlcjsKICAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTsK
ICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6Q2hyb21lQ2xpZW50QmxhY2tCZXJyeTsKICAgICBm
cmllbmQgY2xhc3MgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OwotICAgIGZy
aWVuZCBjbGFzcyBXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5OwogICAgIFdlYlBhZ2VQcml2
YXRlKiBkOwogfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkv
V2ViUGFnZV9wLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCmlu
ZGV4IDNiZTg0NjQuLmVlOWMxMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViUGFnZV9wLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQ
YWdlX3AuaApAQCAtNjgsNyArNjgsNiBAQCBjbGFzcyBSZW5kZXJMYXllcjsKIGNsYXNzIFJlbmRl
ck9iamVjdDsKIGNsYXNzIFNjcm9sbFZpZXc7CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsK
LWNsYXNzIFBhZ2VQb3B1cEJsYWNrQmVycnk7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBU
aW1lcjsKIH0KIApAQCAtODAsNiArNzksOCBAQCBjbGFzcyBCYWNraW5nU3RvcmVDbGllbnQ7CiBj
bGFzcyBEdW1wUmVuZGVyVHJlZUNsaWVudDsKIGNsYXNzIEluUGFnZVNlYXJjaE1hbmFnZXI7CiBj
bGFzcyBJbnB1dEhhbmRsZXI7CitjbGFzcyBQYWdlUG9wdXBCbGFja0JlcnJ5OworY2xhc3MgUGFn
ZVBvcHVwQmxhY2tCZXJyeUNsaWVudDsKIGNsYXNzIFNlbGVjdGlvbkhhbmRsZXI7CiBjbGFzcyBU
b3VjaEV2ZW50SGFuZGxlcjsKIGNsYXNzIFdlYkNvb2tpZUphcjsKQEAgLTQxMiw3ICs0MTMsOSBA
QCBwdWJsaWM6CiAKICAgICBCYWNraW5nU3RvcmVDbGllbnQqIGJhY2tpbmdTdG9yZUNsaWVudCgp
IGNvbnN0OwogCi0gICAgdm9pZCBzZXRQYXJlbnRQb3B1cChXZWJDb3JlOjpQYWdlUG9wdXBCbGFj
a0JlcnJ5KiB3ZWJQb3B1cCk7CisgICAgYm9vbCBvcGVuUGFnZVBvcHVwKFBhZ2VQb3B1cEJsYWNr
QmVycnlDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBvcmlnaW5Cb3VuZHNJblJvb3RW
aWV3KTsKKyAgICB2b2lkIGNsb3NlUGFnZVBvcHVwKCk7CisgICAgYm9vbCBoYXNPcGVuZWRQb3B1
cCgpIGNvbnN0OwogCiAgICAgLy8gQ2xlYW4gdXAgYW55IGRvY3VtZW50IHJlbGF0ZWQgZGF0YSB3
ZSBtaWdodCBiZSBob2xkaW5nLgogICAgIHZvaWQgY2xlYXJEb2N1bWVudERhdGEoY29uc3QgV2Vi
Q29yZTo6RG9jdW1lbnQqKTsKQEAgLTYzNSw3ICs2MzgsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29y
ZTo6VGltZXI8V2ViUGFnZVByaXZhdGU+IG1fZGVmZXJyZWRUYXNrc1RpbWVyOwogCiAgICAgLy8g
VGhlIHBvcHVwIHRoYXQgb3BlbmVkIGluIHRoaXMgd2VicGFnZQotICAgIFdlYkNvcmU6OlBhZ2VQ
b3B1cEJsYWNrQmVycnkqIG1fc2VsZWN0UG9wdXA7CisgICAgUGFnZVBvcHVwQmxhY2tCZXJyeSog
bV9zZWxlY3RQb3B1cDsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpBdXRvZmlsbE1hbmFnZXI+IG1f
YXV0b2ZpbGxNYW5hZ2VyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCA5YmIx
MzdlLi4yZDJmNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw3
NyBAQAogMjAxMy0wNS0yMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKKyAgICAgICAgW0JsYWNrQmVycnldIE1ha2UgUGFnZVBvcHVwIGltcGxlbWVudGF0aW9u
IGluZGVwZW5kZW50IGZyb20gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE2NDQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENh
cmxzc29uLgorCisgICAgICAgIEFkZCBvdXIgb3duIGltcGxlbWVudGF0aW9uIG9mIFBhZ2VQb3B1
cENsaWVudCBhbmQgbWFrZSBhbGwgdGhlCisgICAgICAgIHBpY2tlcnMgaW5oZXJpdCBmcm9tIGl0
LiBVbnVzZWQgbWV0aG9kcyBoYXZlIGJlZW4gcmVtb3ZlZCBhbmQKKyAgICAgICAgY29tbW9uIGlt
cGxlbWVudGF0aW9uIGhhdmUgYmVlbiBtb3ZlZCBmcm9tIHRoZSBwaWNrZXJzIHRvIHRoZQorICAg
ICAgICBwYXJlbnQgY2xhc3MuCisKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjp+V2ViUGFnZVByaXZhdGUpOiBE
ZXN0cm95IHRoZQorICAgICAgICBwb3B1cCBpZiB0aGVyZSdzIG9uZSBhY3RpdmUuCisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpzZXRWaXNpYmxlKTogQ2FsbAor
ICAgICAgICBjbG9zZVBhZ2VQb3B1cCgpIGRpcmVjdGx5LgorICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6b3BlblBhZ2VQb3B1cCk6IENyZWF0ZSBhIG5ldworICAg
ICAgICBQYWdlUG9wdXBCbGFja0JlcnJ5IGZvciB0aGUgZ2l2ZW4gY2xpZW50LgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6Y2xvc2VQYWdlUG9wdXApOiBDbG9z
ZSB0aGUKKyAgICAgICAgYWN0aXZlIHBvcHVwIGlmIHRoZXJlJ3Mgb25lLgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6aGFzT3BlbmVkUG9wdXApOiBSZXR1cm4K
KyAgICAgICAgd2hldGhlciB0aGVyZSdzIGFuIGFjdGl2ZSBwb3B1cC4KKyAgICAgICAgKiBBcGkv
V2ViUGFnZS5oOgorICAgICAgICAqIEFwaS9XZWJQYWdlX3AuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudEJsYWNrQmVycnk6OmNocm9tZURlc3Ryb3llZCk6IFJlbW92ZQorICAgICAgICBj
bG9zZVBhZ2VQb3B1cCgpIGNhbGwgc2luY2UgdGhpcyBpcyBub3cgaGFuZGxlZCBieQorICAgICAg
ICBXZWJQYWdlUHJpdmF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEJsYWNrQmVy
cnk6Omhhc09wZW5lZFBvcHVwKTogQ2FsbAorICAgICAgICBXZWJQYWdlUHJpdmF0ZTo6aGFzT3Bl
bmVkUG9wdXAoKS4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0Jl
cnJ5Lmg6CisgICAgICAgIChDaHJvbWVDbGllbnRCbGFja0JlcnJ5KToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9Db2xvclBpY2tlckNsaWVudC5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OkNvbG9yUGlja2VyQ2xpZW50OjpDb2xvclBpY2tlckNsaWVudCk6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OkNvbG9yUGlja2VyQ2xpZW50OjpkaWRDbG9zZVBvcHVwKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db2xvclBpY2tlckNsaWVudC5oOgorICAgICAgICAoQ29s
b3JQaWNrZXJDbGllbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0RhdGVQaWNrZXJDbGll
bnQuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEYXRlUGlja2VyQ2xpZW50OjpE
YXRlUGlja2VyQ2xpZW50KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RGF0ZVBpY2tl
ckNsaWVudDo6ZGlkQ2xvc2VQb3B1cCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRGF0ZVBp
Y2tlckNsaWVudC5oOgorICAgICAgICAoRGF0ZVBpY2tlckNsaWVudCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OlBhZ2VQb3B1cEJsYWNrQmVycnk6OlBhZ2VQb3B1cEJsYWNrQmVycnkpOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpQYWdlUG9wdXBCbGFja0JlcnJ5OjpjbG9zZVBvcHVw
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5Lmg6CisgICAg
ICAgIChQYWdlUG9wdXBCbGFja0JlcnJ5KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
UGFnZVBvcHVwQmxhY2tCZXJyeTo6U2hhcmVkQ2xpZW50UG9pbnRlcjo6U2hhcmVkQ2xpZW50UG9p
bnRlcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlBhZ2VQb3B1cEJsYWNrQmVycnk6
OlNoYXJlZENsaWVudFBvaW50ZXI6OmdldCk6CisgICAgICAgIChTaGFyZWRDbGllbnRQb2ludGVy
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50LmNw
cDogQWRkZWQuCisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlBhZ2VQb3B1cEJsYWNrQmVy
cnlDbGllbnQ6OlBhZ2VQb3B1cEJsYWNrQmVycnlDbGllbnQpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpQYWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50OjpjbG9zZVBvcHVwKToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6UGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudDo6ZGlkQ2xv
c2VQb3B1cCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlBhZ2VQb3B1cEJsYWNrQmVy
cnlDbGllbnQ6OmNvbnRlbnRTaXplKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6UGFn
ZVBvcHVwQmxhY2tCZXJyeUNsaWVudDo6d3JpdGVEb2N1bWVudCk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFBh
Z2VQb3B1cEJsYWNrQmVycnlDbGllbnQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpQ
YWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50Ojp+UGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VsZWN0UG9wdXBDbGllbnQuY3BwOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpTZWxlY3RQb3B1cENsaWVudDo6U2VsZWN0UG9wdXBDbGllbnQp
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTZWxlY3RQb3B1cENsaWVudDo6ZGlkQ2xv
c2VQb3B1cCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VsZWN0UG9wdXBDbGllbnQuaDoK
KyAgICAgICAgKFNlbGVjdFBvcHVwQ2xpZW50KToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0lu
cHV0SGFuZGxlci5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxl
cjo6b3BlbkRhdGVQb3B1cCk6IERvIG5vdCBjYWxsCisgICAgICAgIGNsb3NlUGFnZVBvcHVwKCkg
c2luY2UgdGhpcyBpcyBhbHJlYWR5IGRvbmUgYnkgb3BlblBhZ2VQb3B1cCgpIGFuZAorICAgICAg
ICB1c2Ugb3BlblBhZ2VQb3B1cCgpIGZyb20gV2ViUGFnZVByaXZhdGUgZGlyZWN0bHkuCisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6b3BlbkNvbG9yUG9wdXApOiBE
aXR0by4KKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpvcGVuU2Vs
ZWN0UG9wdXApOiBEaXR0by4KKworMjAxMy0wNS0yMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAgICAgW0JsYWNrQmVycnldIERvIG5vdCB1c2Ugc2tp
YSBpbiBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OmRpc3BhdGNoRGlkUmVjZWl2ZUljb24o
KQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MzAy
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcAppbmRleCAzY2NkNzIxLi5jOTc3
N2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50QmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3BwCkBAIC00Nyw4ICs0Nyw2
IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUg
IlBhZ2VHcm91cExvYWREZWZlcnJlci5oIgotI2luY2x1ZGUgIlBhZ2VQb3B1cEJsYWNrQmVycnku
aCIKLSNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKICNpbmNsdWRlICJQb3B1cE1lbnVCbGFj
a0JlcnJ5LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNWR1pvb21BbmRQ
YW4uaCIKQEAgLTE1MCw4ICsxNDgsNiBAQCBib29sIENocm9tZUNsaWVudEJsYWNrQmVycnk6OnJ1
bkphdmFTY3JpcHRQcm9tcHQoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1lcwogCiB2b2lk
IENocm9tZUNsaWVudEJsYWNrQmVycnk6OmNocm9tZURlc3Ryb3llZCgpCiB7Ci0gICAgLy8gRGVz
dHJveSBwb3B1cCBpZiB3ZSBoYXZlLgotICAgIGNsb3NlUGFnZVBvcHVwKDApOwogICAgIGRlbGV0
ZSB0aGlzOwogfQogCkBAIC0zMDAsNyArMjk2LDcgQEAgYm9vbCBDaHJvbWVDbGllbnRCbGFja0Jl
cnJ5OjpzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkKIAog
Ym9vbCBDaHJvbWVDbGllbnRCbGFja0JlcnJ5OjpoYXNPcGVuZWRQb3B1cCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fd2ViUGFnZVByaXZhdGUtPm1fd2ViUGFnZS0+aGFzT3BlbmVkUG9wdXAoKTsK
KyAgICByZXR1cm4gbV93ZWJQYWdlUHJpdmF0ZS0+aGFzT3BlbmVkUG9wdXAoKTsKIH0KIAogUGFz
c1JlZlB0cjxQb3B1cE1lbnU+IENocm9tZUNsaWVudEJsYWNrQmVycnk6OmNyZWF0ZVBvcHVwTWVu
dShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKQEAgLTMxMywyOSArMzA5LDYgQEAgUGFz
c1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IENocm9tZUNsaWVudEJsYWNrQmVycnk6OmNyZWF0ZVNl
YXJjaFBvcHVwTWVudShQb3B1cE0KICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlYXJjaFBvcHVw
TWVudUJsYWNrQmVycnkoY2xpZW50KSk7CiB9CiAKLVBhZ2VQb3B1cCogQ2hyb21lQ2xpZW50Qmxh
Y2tCZXJyeTo6b3BlblBhZ2VQb3B1cChQYWdlUG9wdXBDbGllbnQqIGNsaWVudCwgY29uc3QgSW50
UmVjdCYgb3JpZ2luQm91bmRzSW5Sb290VmlldykKLXsKLSAgICBjbG9zZVBhZ2VQb3B1cCgwKTsK
LQotICAgIFBhZ2VQb3B1cEJsYWNrQmVycnkqIHdlYlBvcHVwID0gbmV3IFBhZ2VQb3B1cEJsYWNr
QmVycnkobV93ZWJQYWdlUHJpdmF0ZSwgY2xpZW50LCByb290Vmlld1RvU2NyZWVuKG9yaWdpbkJv
dW5kc0luUm9vdFZpZXcpKTsKLSAgICBtX3dlYlBhZ2VQcml2YXRlLT5tX3dlYlBhZ2UtPnBvcHVw
T3BlbmVkKHdlYlBvcHVwKTsKLSAgICBpZiAod2ViUG9wdXAtPnNlbmRDcmVhdGVQb3B1cFdlYlZp
ZXdSZXF1ZXN0KCkpCi0gICAgICAgIHJldHVybiB3ZWJQb3B1cDsKLQotICAgIGNsb3NlUGFnZVBv
cHVwKDApOwotICAgIHJldHVybiAwOwotfQotCi12b2lkIENocm9tZUNsaWVudEJsYWNrQmVycnk6
OmNsb3NlUGFnZVBvcHVwKFBhZ2VQb3B1cCopCi17Ci0gICAgaWYgKCFoYXNPcGVuZWRQb3B1cCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBQYWdlUG9wdXBCbGFja0JlcnJ5KiB3ZWJQb3B1cCA9
IG1fd2ViUGFnZVByaXZhdGUtPm1fd2ViUGFnZS0+cG9wdXAoKTsKLSAgICB3ZWJQb3B1cC0+Y2xv
c2VQb3B1cCgpOwotICAgIGRlbGV0ZSB3ZWJQb3B1cDsKLX0KLQogdm9pZCBDaHJvbWVDbGllbnRC
bGFja0JlcnJ5OjpzZXRUb29sYmFyc1Zpc2libGUoYm9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmgKaW5kZXggZjZlNWMyMS4uYjM5ZTkw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEJsYWNrQmVycnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5oCkBAIC0yOCw4ICsyOCw2IEBAIGNs
YXNzIFdlYlBhZ2VQcml2YXRlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBQYWdl
UG9wdXA7Ci1jbGFzcyBQYWdlUG9wdXBDbGllbnQ7CiAKIGNsYXNzIENocm9tZUNsaWVudEJsYWNr
QmVycnkgOiBwdWJsaWMgQ2hyb21lQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTE0MCw5ICsxMzgsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRlUG9wdXBN
ZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTZWFy
Y2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFnZVBvcHVwKiBvcGVuUGFnZVBvcHVwKFdlYkNv
cmU6OlBhZ2VQb3B1cENsaWVudCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgY2xvc2VQYWdlUG9wdXAoV2ViQ29yZTo6UGFnZVBvcHVwKik7Ci0KICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFw
aGljc0xheWVyKEZyYW1lKiwgR3JhcGhpY3NMYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ29sb3JQaWNrZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NvbG9yUGlja2VyQ2xpZW50
LmNwcAppbmRleCAyNGRlMzVjLi40ZjEzYjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ29sb3JQaWNrZXJDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9Db2xvclBpY2tlckNsaWVudC5jcHAK
QEAgLTE5LDE2ICsxOSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29sb3JQ
aWNrZXJDbGllbnQuaCIKIAotI2luY2x1ZGUgIkNocm9tZS5oIgotI2luY2x1ZGUgIkNocm9tZUNs
aWVudC5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRXcml0ZXIu
aCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUGFnZVBvcHVwLmgiCiAjaW5jbHVk
ZSAiUG9wdXBQaWNrZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJX
ZWJQYWdlX3AuaCIKIAogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVN0cmluZy5oPgpAQCAt
MzYsMTIgKzI4LDE1IEBACiAjaW5jbHVkZSA8TG9jYWxpemVSZXNvdXJjZS5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBCbGFja0JlcnJ5IHsKK25hbWVzcGFjZSBX
ZWJLaXQgewogCiBERUZJTkVfU1RBVElDX0xPQ0FMKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2Nh
bGl6ZVJlc291cmNlLCBzX3Jlc291cmNlLCAoKSk7CiAKLUNvbG9yUGlja2VyQ2xpZW50OjpDb2xv
clBpY2tlckNsaWVudChjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiB2YWx1ZSwg
QmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZSogd2ViUGFnZSwgSFRNTElucHV0RWxl
bWVudCogZWxlbWVudCkKLSAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQorQ29sb3JQaWNrZXJDbGll
bnQ6OkNvbG9yUGlja2VyQ2xpZW50KGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcm
IHZhbHVlLCBCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlKiB3ZWJQYWdlLCBXZWJD
b3JlOjpIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQorICAgIDogUGFnZVBvcHVwQmxhY2tCZXJy
eUNsaWVudCh3ZWJQYWdlKQogICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCiB7CiAgICAgZ2VuZXJh
dGVIVE1MKHZhbHVlKTsKQEAgLTg0LDI4ICs3OSw2IEBAIHZvaWQgQ29sb3JQaWNrZXJDbGllbnQ6
OmdlbmVyYXRlSFRNTChjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiB2YWx1ZSkK
ICAgICBtX3NvdXJjZSA9IHNvdXJjZS50b1N0cmluZygpOwogfQogCi12b2lkIENvbG9yUGlja2Vy
Q2xpZW50OjpjbG9zZVBvcHVwKCkKLXsKLSAgICBBU1NFUlQobV93ZWJQYWdlKTsKLSAgICBtX3dl
YlBhZ2UtPm1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPmNsb3NlUGFnZVBvcHVwKDApOwotfQot
Ci1JbnRTaXplIENvbG9yUGlja2VyQ2xpZW50Ojpjb250ZW50U2l6ZSgpCi17Ci0gICAgLy8gRklY
TUU6IHdpbGwgZ2VuZXJhdGUgY29udGVudCBzaXplIGR5bmFtaWNhbGx5Ci0gICAgcmV0dXJuIElu
dFNpemUoMzIwLCAyNTYpOwotfQotCi1TdHJpbmcgQ29sb3JQaWNrZXJDbGllbnQ6Omh0bWxTb3Vy
Y2UoKSBjb25zdAotewotICAgIHJldHVybiBtX3NvdXJjZTsKLX0KLQotTG9jYWxlJiBDb2xvclBp
Y2tlckNsaWVudDo6bG9jYWxlKCkKLXsKLSAgICByZXR1cm4gbV9lbGVtZW50LT5kb2N1bWVudCgp
LT5nZXRDYWNoZWRMb2NhbGUoKTsKLX0KLQogdm9pZCBDb2xvclBpY2tlckNsaWVudDo6c2V0VmFs
dWVBbmRDbG9zZVBvcHVwKGludCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQo
bV9lbGVtZW50KTsKQEAgLTExNiwyMCArODksMTEgQEAgdm9pZCBDb2xvclBpY2tlckNsaWVudDo6
c2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBjbG9z
ZVBvcHVwKCk7CiB9CiAKLXZvaWQgQ29sb3JQaWNrZXJDbGllbnQ6OnNldFZhbHVlKGNvbnN0IFN0
cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBDb2xvclBpY2tlckNs
aWVudDo6ZGlkQ2xvc2VQb3B1cCgpCiB7Ci0gICAgbV93ZWJQYWdlID0gMDsKKyAgICBQYWdlUG9w
dXBCbGFja0JlcnJ5Q2xpZW50OjpkaWRDbG9zZVBvcHVwKCk7CiAgICAgbV9lbGVtZW50ID0gMDsK
IH0KIAotdm9pZCBDb2xvclBpY2tlckNsaWVudDo6d3JpdGVEb2N1bWVudChEb2N1bWVudFdyaXRl
ciYgd3JpdGVyKQotewotICAgIENTdHJpbmcgc291cmNlU3RyaW5nID0gbV9zb3VyY2UudXRmOCgp
OwotICAgIHdyaXRlci5hZGREYXRhKHNvdXJjZVN0cmluZy5kYXRhKCksIHNvdXJjZVN0cmluZy5s
ZW5ndGgoKSk7CiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
Q29yZVN1cHBvcnQvQ29sb3JQaWNrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJDb3JlU3VwcG9ydC9Db2xvclBpY2tlckNsaWVudC5oCmluZGV4IGVhNmI0YTAuLjdhMWI3
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9D
b2xvclBpY2tlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3Jl
U3VwcG9ydC9Db2xvclBpY2tlckNsaWVudC5oCkBAIC0xOSw0MSArMTksMzMgQEAKICNpZm5kZWYg
Q29sb3JQaWNrZXJDbGllbnRfaAogI2RlZmluZSBDb2xvclBpY2tlckNsaWVudF9oCiAKLSNpbmNs
dWRlICJQYWdlUG9wdXBDbGllbnQuaCIKKyNpbmNsdWRlICJQYWdlUG9wdXBCbGFja0JlcnJ5Q2xp
ZW50LmgiCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtSW5wdXRFdmVudHMuaD4KIAorbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSFRNTElucHV0RWxlbWVudDsKK30KKwogbmFtZXNwYWNl
IEJsYWNrQmVycnkgewogbmFtZXNwYWNlIFBsYXRmb3JtIHsKIGNsYXNzIFN0cmluZzsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJQYWdlUHJpdmF0ZTsKLX0KLX0KIAotbmFtZXNw
YWNlIFdlYkNvcmUgewotY2xhc3MgRG9jdW1lbnRXcml0ZXI7Ci1jbGFzcyBIVE1MSW5wdXRFbGVt
ZW50OwotCi1jbGFzcyBDb2xvclBpY2tlckNsaWVudCA6IHB1YmxpYyBQYWdlUG9wdXBDbGllbnQg
eworY2xhc3MgQ29sb3JQaWNrZXJDbGllbnQgOiBwdWJsaWMgUGFnZVBvcHVwQmxhY2tCZXJyeUNs
aWVudCB7CiBwdWJsaWM6Ci0gICAgQ29sb3JQaWNrZXJDbGllbnQoY29uc3QgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OlN0cmluZyYgdmFsdWUsIEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZh
dGUqLCBIVE1MSW5wdXRFbGVtZW50Kik7CisgICAgQ29sb3JQaWNrZXJDbGllbnQoY29uc3QgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgdmFsdWUsIEJsYWNrQmVycnk6OldlYktpdDo6V2Vi
UGFnZVByaXZhdGUqLCBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Kik7CiAKLSAgICB2b2lkIGdl
bmVyYXRlSFRNTChjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiB2YWx1ZSk7Ci0g
ICAgdm9pZCB3cml0ZURvY3VtZW50KERvY3VtZW50V3JpdGVyJik7Ci0gICAgSW50U2l6ZSBjb250
ZW50U2l6ZSgpOwotICAgIFN0cmluZyBodG1sU291cmNlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBM
b2NhbGUmIGxvY2FsZSgpOwogICAgIHZvaWQgc2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCwgY29u
c3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lk
IGNsb3NlUG9wdXAoKTsKICAgICB2b2lkIGRpZENsb3NlUG9wdXAoKTsKIAogcHJpdmF0ZToKLSAg
ICBTdHJpbmcgbV9zb3VyY2U7Ci0gICAgQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0
ZSogbV93ZWJQYWdlOwotICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBtX2VsZW1lbnQ7Cisg
ICAgdm9pZCBnZW5lcmF0ZUhUTUwoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYg
dmFsdWUpOworCisgICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ+IG1fZWxlbWVu
dDsKIH07Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK30KK30KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0RhdGVQaWNrZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0RhdGVQaWNr
ZXJDbGllbnQuY3BwCmluZGV4IDllMjkxYWUuLjdmMzhmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9EYXRlUGlja2VyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRGF0ZVBpY2tlckNsaWVu
dC5jcHAKQEAgLTE5LDE3ICsxOSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkRhdGVQaWNrZXJDbGllbnQuaCIKIAotI2luY2x1ZGUgIkNocm9tZS5oIgotI2luY2x1ZGUgIkNo
cm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRX
cml0ZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQu
aCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNs
dWRlICJQYWdlUG9wdXAuaCIKICNpbmNsdWRlICJQb3B1cFBpY2tlci5oIgotI2luY2x1ZGUgIlJl
bmRlck9iamVjdC5oIgogI2luY2x1ZGUgIldlYlBhZ2VfcC5oIgogCiAjaW5jbHVkZSA8QmxhY2tC
ZXJyeVBsYXRmb3JtU3RyaW5nLmg+CkBAIC0zOCwxNSArMzEsMTcgQEAKICNpbmNsdWRlIDx1bmlj
b2RlL2R0Zm10c3ltLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBpY3U7CiAKLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBCbGFja0JlcnJ5IHsKK25hbWVzcGFjZSBXZWJLaXQgewog
CiBERUZJTkVfU1RBVElDX0xPQ0FMKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2NhbGl6ZVJlc291
cmNlLCBzX3Jlc291cmNlLCAoKSk7CiAKLURhdGVQaWNrZXJDbGllbnQ6OkRhdGVQaWNrZXJDbGll
bnQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkJsYWNrQmVycnlJbnB1dFR5cGUgdHlwZSwgY29uc3Qg
QmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgdmFsdWUsIGNvbnN0IEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpTdHJpbmcmIG1pbiwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYg
bWF4LCBkb3VibGUgc3RlcCwgQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZSogd2Vi
UGFnZSwgSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKLSAgICA6IG1fdHlwZSh0eXBlKQotICAg
ICwgbV93ZWJQYWdlKHdlYlBhZ2UpCitEYXRlUGlja2VyQ2xpZW50OjpEYXRlUGlja2VyQ2xpZW50
KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCbGFja0JlcnJ5SW5wdXRUeXBlIHR5cGUsIGNvbnN0IEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIHZhbHVlLCBjb25zdCBCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6U3RyaW5nJiBtaW4sIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIG1h
eCwgZG91YmxlIHN0ZXAsIEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGUqIHdlYlBh
Z2UsIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBQYWdlUG9wdXBC
bGFja0JlcnJ5Q2xpZW50KHdlYlBhZ2UpCisgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fZWxl
bWVudChlbGVtZW50KQogewogICAgIGdlbmVyYXRlSFRNTCh0eXBlLCB2YWx1ZSwgbWluLCBtYXgs
IHN0ZXApOwpAQCAtMTM4LDI4ICsxMzMsNiBAQCB2b2lkIERhdGVQaWNrZXJDbGllbnQ6OmdlbmVy
YXRlSFRNTChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6QmxhY2tCZXJyeUlucHV0VHlwZSB0eQogICAg
IG1fc291cmNlID0gc291cmNlLnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQgRGF0ZVBpY2tlckNsaWVu
dDo6Y2xvc2VQb3B1cCgpCi17Ci0gICAgQVNTRVJUKG1fd2ViUGFnZSk7Ci0gICAgbV93ZWJQYWdl
LT5tX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5jbG9zZVBhZ2VQb3B1cCgwKTsKLX0KLQotSW50
U2l6ZSBEYXRlUGlja2VyQ2xpZW50Ojpjb250ZW50U2l6ZSgpCi17Ci0gICAgLy8gRml4bWU6IHdp
bGwgZ2VuZXJhdGUgY29udGVudCBzaXplIGR5bmFtaWNhbGx5Ci0gICAgcmV0dXJuIEludFNpemUo
MzIwLCAyNTYpOwotfQotCi1TdHJpbmcgRGF0ZVBpY2tlckNsaWVudDo6aHRtbFNvdXJjZSgpCi17
Ci0gICAgcmV0dXJuIG1fc291cmNlOwotfQotCi1Mb2NhbGUmIERhdGVQaWNrZXJDbGllbnQ6Omxv
Y2FsZSgpCi17Ci0gICAgcmV0dXJuIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+Z2V0Q2FjaGVkTG9j
YWxlKCk7Ci19Ci0KIHZvaWQgRGF0ZVBpY2tlckNsaWVudDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVw
KGludCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBSZXR1cm4gLTEgaWYgdXNlciBj
YW5jZWwgdGhlIHNlbGVjdGlvbi4KQEAgLTE3MywyMiArMTQ2LDEyIEBAIHZvaWQgRGF0ZVBpY2tl
ckNsaWVudDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
ICAgICBjbG9zZVBvcHVwKCk7CiB9CiAKLXZvaWQgRGF0ZVBpY2tlckNsaWVudDo6c2V0VmFsdWUo
Y29uc3QgU3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB2b2lkIERhdGVQ
aWNrZXJDbGllbnQ6OmRpZENsb3NlUG9wdXAoKQogewotICAgIG1fd2ViUGFnZSA9IDA7CisgICAg
UGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudDo6ZGlkQ2xvc2VQb3B1cCgpOwogICAgIG1fZWxlbWVu
dCA9IDA7CiB9CiAKLXZvaWQgRGF0ZVBpY2tlckNsaWVudDo6d3JpdGVEb2N1bWVudChEb2N1bWVu
dFdyaXRlciYgd3JpdGVyKQotewotICAgIHdyaXRlci5hZGREYXRhKG1fc291cmNlLnV0ZjgoKS5k
YXRhKCksIG1fc291cmNlLnV0ZjgoKS5sZW5ndGgoKSk7Ci19Ci0KIC8vIFVEQVRfZm9vIGFyZSBm
b3IgbGFiZWxzIHRoYXQgYXJlIG1lYW50IHRvIGJlIGZvcm1hdHRlZCBhcyBwYXJ0IG9mIGEgZGF0
ZS4KIC8vIFVEQVRfU1RBTkRBTE9ORV9mb28gYXJlIGZvciBsYWJlbHMgdGhhdCBhcmUgZGlzcGxh
eWVkIHNlcGFyYXRlbHkgZnJvbSBvdGhlciBkYXRlIGNvbXBvbmVudHMuCiAvLyBGb3IgZXhhbXBs
ZSwgVURBVF9TSE9SVF9NT05USFMgaW4gQ2F0YWxhbiBwdXRzIGEgcHJlcG9zaXRpb24gaW4gZnJv
bnQgb2YgdGhlIG1vbnRoIGJ1dCBVREFUX1NUQU5EQUxPTkVfU0hPUlRfTU9OVEhTIGRvZXMgbm90
LgpAQCAtMjM5LDQgKzIwMiw2IEBAIGNvbnN0IFN0cmluZyBEYXRlUGlja2VyQ2xpZW50OjpnZW5l
cmF0ZURhdGVMYWJlbHMoVURhdGVGb3JtYXRTeW1ib2xUeXBlIHN5bWJvbFR5CiAgICAgcHJpbnRl
ZExhYmVscy5hcHBlbmRMaXRlcmFsKCJdIik7CiAgICAgcmV0dXJuIHByaW50ZWRMYWJlbHMudG9T
dHJpbmcoKTsKIH0KKworfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L0RhdGVQaWNrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9EYXRlUGlja2VyQ2xpZW50LmgKaW5kZXggNGM1Y2Y4ZC4uZTgz
OWY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0
L0RhdGVQaWNrZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvRGF0ZVBpY2tlckNsaWVudC5oCkBAIC0xOSwxMCArMTksMTQgQEAKICNpZm5kZWYg
RGF0ZVBpY2tlckNsaWVudF9oCiAjZGVmaW5lIERhdGVQaWNrZXJDbGllbnRfaAogCi0jaW5jbHVk
ZSAiUGFnZVBvcHVwQ2xpZW50LmgiCisjaW5jbHVkZSAiUGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVu
dC5oIgogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUlucHV0RXZlbnRzLmg+CiAjaW5jbHVk
ZSA8dW5pY29kZS91ZGF0Lmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEhUTUxJbnB1
dEVsZW1lbnQ7Cit9CisKIG5hbWVzcGFjZSBCbGFja0JlcnJ5IHsKIG5hbWVzcGFjZSBQbGF0Zm9y
bSB7CiBjbGFzcyBTdHJpbmc7CkBAIC0zMCwzNiArMzQsMjMgQEAgY2xhc3MgU3RyaW5nOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcml2YXRlOwotfQotfQogCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci1jbGFzcyBEb2N1bWVudFdyaXRlcjsKLWNsYXNzIEhUTUxJbnB1dEVsZW1l
bnQ7Ci0KLWNsYXNzIERhdGVQaWNrZXJDbGllbnQgOiBwdWJsaWMgUGFnZVBvcHVwQ2xpZW50IHsK
K2NsYXNzIERhdGVQaWNrZXJDbGllbnQgOiBwdWJsaWMgUGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVu
dCB7CiBwdWJsaWM6Ci0gICAgRGF0ZVBpY2tlckNsaWVudChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
QmxhY2tCZXJyeUlucHV0VHlwZSwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYg
dmFsdWUsIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIG1pbiwgY29uc3QgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgbWF4LCBkb3VibGUgc3RlcCwgQmxhY2tCZXJyeTo6
V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZSosIEhUTUxJbnB1dEVsZW1lbnQqKTsKKyAgICBEYXRlUGlj
a2VyQ2xpZW50KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCbGFja0JlcnJ5SW5wdXRUeXBlLCBjb25z
dCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiB2YWx1ZSwgY29uc3QgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OlN0cmluZyYgbWluLCBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5n
JiBtYXgsIGRvdWJsZSBzdGVwLCBCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlKiwg
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCopOwogICAgIH5EYXRlUGlja2VyQ2xpZW50KCk7CiAK
LSAgICB2b2lkIGdlbmVyYXRlSFRNTChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6QmxhY2tCZXJyeUlu
cHV0VHlwZSwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgdmFsdWUsIGNvbnN0
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIG1pbiwgY29uc3QgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OlN0cmluZyYgbWF4LCBkb3VibGUgc3RlcCk7Ci0KLSAgICB2b2lkIHdyaXRlRG9jdW1l
bnQoRG9jdW1lbnRXcml0ZXImKTsKLSAgICB2aXJ0dWFsIEludFNpemUgY29udGVudFNpemUoKTsK
LSAgICB2aXJ0dWFsIFN0cmluZyBodG1sU291cmNlKCk7Ci0gICAgdmlydHVhbCBMb2NhbGUmIGxv
Y2FsZSgpOwogICAgIHZvaWQgc2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCwgY29uc3QgU3RyaW5n
Jik7Ci0gICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRpZENsb3Nl
UG9wdXAoKTsKLSAgICB2b2lkIGNsb3NlUG9wdXAoKTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGdl
bmVyYXRlSFRNTChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6QmxhY2tCZXJyeUlucHV0VHlwZSwgY29u
c3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgdmFsdWUsIGNvbnN0IEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpTdHJpbmcmIG1pbiwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmlu
ZyYgbWF4LCBkb3VibGUgc3RlcCk7CiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyBnZW5lcmF0ZURh
dGVMYWJlbHMoVURhdGVGb3JtYXRTeW1ib2xUeXBlKTsKIAogICAgIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpCbGFja0JlcnJ5SW5wdXRUeXBlIG1fdHlwZTsKLSAgICBTdHJpbmcgbV9zb3VyY2U7Ci0g
ICAgQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZSogbV93ZWJQYWdlOwotICAgIFJl
ZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBtX2VsZW1lbnQ7CisgICAgUmVmUHRyPFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQ+IG1fZWxlbWVudDsKIH07Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
K30KK30KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuY3BwCmluZGV4IDI3MjkzMTYu
LmMzZmQ0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5jcHAKQEAgLTE2LDIwICsxNiwx
OCBAQAogICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCiAgKi8KICNpbmNsdWRlICJjb25maWcuaCIK
LQogI2luY2x1ZGUgIlBhZ2VQb3B1cEJsYWNrQmVycnkuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50
TG9hZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRXcml0ZXIuaCIKICNpbmNsdWRlICJFbXB0eUNs
aWVudHMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgog
I2luY2x1ZGUgIkpTUmV0YWluUHRyLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBh
Z2VHcm91cC5oIgotI2luY2x1ZGUgIlBhZ2VQb3B1cENsaWVudC5oIgotI2luY2x1ZGUgIlBsYXRm
b3JtTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJQYWdlUG9wdXBC
bGFja0JlcnJ5Q2xpZW50LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJQ
YWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZV9wLmgiCkBAIC00MSwxNiArMzksMTYgQEAKIAogI2Rl
ZmluZSBQQURESU5HIDgwCiAKLXVzaW5nIG5hbWVzcGFjZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
R3JhcGhpY3M7Ci11c2luZyBuYW1lc3BhY2UgQmxhY2tCZXJyeTo6V2ViS2l0OwotbmFtZXNwYWNl
IFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBCbGFja0Jl
cnJ5IHsKK25hbWVzcGFjZSBXZWJLaXQgewogCi1QYWdlUG9wdXBCbGFja0JlcnJ5OjpQYWdlUG9w
dXBCbGFja0JlcnJ5KEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGUqIHdlYlBhZ2Us
IFBhZ2VQb3B1cENsaWVudCogY2xpZW50LCBjb25zdCBJbnRSZWN0JiByZWN0KQorUGFnZVBvcHVw
QmxhY2tCZXJyeTo6UGFnZVBvcHVwQmxhY2tCZXJyeShXZWJQYWdlUHJpdmF0ZSogd2ViUGFnZSwg
UGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudCogY2xpZW50KQogICAgIDogbV93ZWJQYWdlUHJpdmF0
ZSh3ZWJQYWdlKQogICAgICwgbV9jbGllbnQoYWRvcHRQdHIoY2xpZW50KSkKICAgICAsIG1fc2hh
cmVkQ2xpZW50UG9pbnRlcihhZG9wdFJlZihuZXcgUGFnZVBvcHVwQmxhY2tCZXJyeTo6U2hhcmVk
Q2xpZW50UG9pbnRlcihjbGllbnQpKSkKIHsKLSAgICBtX3JlY3QgPSBJbnRSZWN0KHJlY3QueCgp
LCByZWN0LnkoKSwgY2xpZW50LT5jb250ZW50U2l6ZSgpLndpZHRoKCksIGNsaWVudC0+Y29udGVu
dFNpemUoKS5oZWlnaHQoKSk7CiB9CiAKIFBhZ2VQb3B1cEJsYWNrQmVycnk6On5QYWdlUG9wdXBC
bGFja0JlcnJ5KCkKQEAgLTU4LDExICs1Niw2IEBAIFBhZ2VQb3B1cEJsYWNrQmVycnk6On5QYWdl
UG9wdXBCbGFja0JlcnJ5KCkKICAgICBBU1NFUlQoIW1fc2hhcmVkQ2xpZW50UG9pbnRlci0+Z2V0
KCkpOwogfQogCi1ib29sIFBhZ2VQb3B1cEJsYWNrQmVycnk6OnNlbmRDcmVhdGVQb3B1cFdlYlZp
ZXdSZXF1ZXN0KCkKLXsKLSAgICByZXR1cm4gbV93ZWJQYWdlUHJpdmF0ZS0+Y2xpZW50KCktPmNy
ZWF0ZVBvcHVwV2ViVmlldyhtX3JlY3QpOwotfQotCiBib29sIFBhZ2VQb3B1cEJsYWNrQmVycnk6
OmluaXQoV2ViUGFnZSogd2VicGFnZSkKIHsKICAgICAvLyBEb24ndCB1c2UgYmFja2luZyBzdG9y
ZSBmb3IgdGhlIHBvcC11cCB3ZWIgcGFnZS4KQEAgLTE4Nyw5ICsxODAsNyBAQCB2b2lkIFBhZ2VQ
b3B1cEJsYWNrQmVycnk6OmNsb3NlUG9wdXAoKQogICAgIG1fc2hhcmVkQ2xpZW50UG9pbnRlci0+
Y2xlYXIoKTsKIAogICAgIG1fY2xpZW50LT5kaWRDbG9zZVBvcHVwKCk7Ci0gICAgbV93ZWJQYWdl
UHJpdmF0ZS0+Y2xpZW50KCktPmNsb3NlUG9wdXBXZWJWaWV3KCk7Ci0gICAgbV93ZWJQYWdlUHJp
dmF0ZS0+bV93ZWJQYWdlLT5wb3B1cENsb3NlZCgpOwogfQogCiB9Ci0KK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0Jl
cnJ5LmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVw
QmxhY2tCZXJyeS5oCmluZGV4IDA4YzM1YTYuLmY1NjZkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5LmgKKysr
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNr
QmVycnkuaApAQCAtMjAsNTMgKzIwLDQ2IEBACiAjZGVmaW5lIFBhZ2VQb3B1cEJsYWNrQmVycnlf
aAogCiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIlBhZ2VQb3B1cC5oIgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBGcmFtZTsKK30KIAogbmFtZXNwYWNlIEJsYWNrQmVycnkgewog
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViUGFnZVByaXZhdGU7
Ci19Ci19CitjbGFzcyBQYWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50OwogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBGcmFtZTsKLWNsYXNzIFBhZ2U7Ci1jbGFzcyBQYWdlUG9wdXBDbGllbnQ7
Ci1jbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7Ci0KLWNsYXNzIFBhZ2VQb3B1cEJsYWNrQmVycnkg
OiBwdWJsaWMgUGFnZVBvcHVwIHsKK2NsYXNzIFBhZ2VQb3B1cEJsYWNrQmVycnkgewogcHVibGlj
OgotICAgIFBhZ2VQb3B1cEJsYWNrQmVycnkoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJp
dmF0ZSosIFBhZ2VQb3B1cENsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICBQYWdlUG9wdXBC
bGFja0JlcnJ5KEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGUqLCBQYWdlUG9wdXBC
bGFja0JlcnJ5Q2xpZW50Kik7CiAgICAgflBhZ2VQb3B1cEJsYWNrQmVycnkoKTsKIAotICAgIGJv
b2wgc2VuZENyZWF0ZVBvcHVwV2ViVmlld1JlcXVlc3QoKTsKICAgICBib29sIGluaXQoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpXZWJQYWdlKik7CiAgICAgdm9pZCBjbG9zZVBvcHVwKCk7Ci0gICAgdm9p
ZCBzZXRSZWN0KCk7CiAKICAgICBjbGFzcyBTaGFyZWRDbGllbnRQb2ludGVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8U2hhcmVkQ2xpZW50UG9pbnRlcj4gewogICAgIHB1YmxpYzoKLSAgICAgICAgZXhw
bGljaXQgU2hhcmVkQ2xpZW50UG9pbnRlcihQYWdlUG9wdXBDbGllbnQqIGNsaWVudCkgOiBtX2Ns
aWVudChjbGllbnQpIHsgfQorICAgICAgICBleHBsaWNpdCBTaGFyZWRDbGllbnRQb2ludGVyKFBh
Z2VQb3B1cEJsYWNrQmVycnlDbGllbnQqIGNsaWVudCkgOiBtX2NsaWVudChjbGllbnQpIHsgfQog
ICAgICAgICB2b2lkIGNsZWFyKCkgeyBtX2NsaWVudCA9IDA7IH0KLSAgICAgICAgUGFnZVBvcHVw
Q2xpZW50KiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorICAgICAgICBQYWdlUG9w
dXBCbGFja0JlcnJ5Q2xpZW50KiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQogICAg
IHByaXZhdGU6Ci0gICAgICAgIFBhZ2VQb3B1cENsaWVudCogbV9jbGllbnQ7CisgICAgICAgIFBh
Z2VQb3B1cEJsYWNrQmVycnlDbGllbnQqIG1fY2xpZW50OwogICAgIH07CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBnZW5lcmF0ZUhUTUwoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKik7Ci0gICAg
dm9pZCBpbnN0YWxsRE9NRnVuY3Rpb24oRnJhbWUqKTsKKyAgICB2b2lkIGluc3RhbGxET01GdW5j
dGlvbihXZWJDb3JlOjpGcmFtZSopOwogCiAgICAgQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdl
UHJpdmF0ZSogbV93ZWJQYWdlUHJpdmF0ZTsKLSAgICBPd25QdHI8UGFnZVBvcHVwQ2xpZW50PiBt
X2NsaWVudDsKKyAgICBPd25QdHI8UGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudD4gbV9jbGllbnQ7
CiAgICAgUmVmUHRyPFNoYXJlZENsaWVudFBvaW50ZXI+IG1fc2hhcmVkQ2xpZW50UG9pbnRlcjsK
LSAgICBJbnRSZWN0IG1fcmVjdDsKIH07CiAKIH0KK30KIAogI2VuZGlmIC8vIFBhZ2VQb3B1cEJs
YWNrQmVycnlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnlDbGllbnQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMWVlNjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tC
ZXJyeUNsaWVudC5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x
MzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGFnZVBvcHVw
QmxhY2tCZXJyeUNsaWVudC5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnRXcml0ZXIuaCIKKyNpbmNs
dWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiV2ViUGFnZV9wLmgiCisjaW5jbHVkZSA8QmxhY2tC
ZXJyeVBsYXRmb3JtU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgQmxhY2tCZXJyeSB7CituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFnZVBvcHVwQmxhY2tC
ZXJyeUNsaWVudDo6UGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudChCbGFja0JlcnJ5OjpXZWJLaXQ6
OldlYlBhZ2VQcml2YXRlKiB3ZWJQYWdlKQorICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCit7Cit9
CisKK3ZvaWQgUGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudDo6Y2xvc2VQb3B1cCgpCit7CisgICAg
QVNTRVJUKG1fd2ViUGFnZSk7CisgICAgbV93ZWJQYWdlLT5jbG9zZVBhZ2VQb3B1cCgpOworfQor
Cit2b2lkIFBhZ2VQb3B1cEJsYWNrQmVycnlDbGllbnQ6OmRpZENsb3NlUG9wdXAoKQoreworICAg
IG1fd2ViUGFnZSA9IDA7Cit9CisKK0ludFNpemUgUGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudDo6
Y29udGVudFNpemUoKQoreworICAgIC8vIEZJWE1FOiB3aWxsIGdlbmVyYXRlIGNvbnRlbnQgc2l6
ZSBkeW5hbWljYWxseS4KKyAgICByZXR1cm4gSW50U2l6ZSgzMjAsIDI1Nik7Cit9CisKK3ZvaWQg
UGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudDo6d3JpdGVEb2N1bWVudChEb2N1bWVudFdyaXRlciYg
d3JpdGVyKQoreworICAgIHdyaXRlci5hZGREYXRhKG1fc291cmNlLnV0ZjgoKS5kYXRhKCksIG1f
c291cmNlLnV0ZjgoKS5sZW5ndGgoKSk7Cit9CisKK30KK30KKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnlDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBC
bGFja0JlcnJ5Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU0
MjNkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3Jl
U3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50LmgKQEAgLTAsMCArMSw2OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisKKyNpZm5kZWYgUGFnZVBvcHVw
QmxhY2tCZXJyeUNsaWVudF9oCisjZGVmaW5lIFBhZ2VQb3B1cEJsYWNrQmVycnlDbGllbnRfaAor
CisjaW5jbHVkZSAiRG9jdW1lbnRXcml0ZXIuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IERvY3VtZW50V3JpdGVyOworY2xhc3MgSFRNTElucHV0RWxlbWVudDsKK30KKworbmFtZXNwYWNl
IEJsYWNrQmVycnkgeworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJQYWdlUHJpdmF0ZTsK
KworY2xhc3MgUGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVh
bCBXZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRTaXplKCk7CisKKyAgICAvLyBQcm92aWRlIGFuIEhU
TUwgc291cmNlIHRocm91Z2ggdGhlIHNwZWNpZmllZCBEb2N1bWVudFdyaXRlci4gVGhlIEhUTUwK
KyAgICAvLyBzb3VyY2UgaXMgcmVuZGVyZWQgaW4gYSBQYWdlUG9wdXAuCisgICAgLy8gVGhlIGNv
bnRlbnQgSFRNTCBzdXBwb3J0czoKKyAgICAvLyAgLSBObyA8c2VsZWN0PiBwb3B1cHMKKyAgICAv
LyAgLSB3aW5kb3cuc2V0VmFsdWVBbmRDbG9zZVBvcHVwKG51bWJlciwgc3RyaW5nKS4KKyAgICB2
aXJ0dWFsIHZvaWQgd3JpdGVEb2N1bWVudChXZWJDb3JlOjpEb2N1bWVudFdyaXRlciYpOworCisg
ICAgLy8gVGhpcyBpcyBjYWxsZWQgYnkgdGhlIGNvbnRlbnQgSFRNTCBvZiBhIFBhZ2VQb3B1cC4K
KyAgICAvLyBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBjYWxsIENo
cm9tZUNsaWVudDo6Y2xvc2VQYWdlUG9wdXAoKS4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVB
bmRDbG9zZVBvcHVwKGludCBudW1WYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSkgPSAw
OworCisgICAgLy8gVGhpcyBpcyBjYWxsZWQgYnkgdGhlIGNvbnRlbnQgSFRNTCBvZiBhIFBhZ2VQ
b3B1cC4KKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VQb3B1cCgpOworCisgICAgLy8gVGhpcyBpcyBj
YWxsZWQgd2hlbmV2ZXIgYSBQYWdlUG9wdXAgd2FzIGNsb3NlZC4KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2xvc2VQb3B1cCgpOworCisgICAgdmlydHVhbCB+UGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVu
dCgpIHsgfQorCitwcm90ZWN0ZWQ6CisgICAgUGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudChCbGFj
a0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlKik7CisKKyAgICBCbGFja0JlcnJ5OjpXZWJL
aXQ6OldlYlBhZ2VQcml2YXRlKiBtX3dlYlBhZ2U7CisgICAgU3RyaW5nIG1fc291cmNlOworfTsK
KworfQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9TZWxlY3RQb3B1cENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViQ29yZVN1cHBvcnQvU2VsZWN0UG9wdXBDbGllbnQuY3BwCmluZGV4IDY2OWNmM2Mu
LmMxNWZkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9TZWxlY3RQb3B1cENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L1NlbGVjdFBvcHVwQ2xpZW50LmNwcApAQCAtMTcsMTggKzE3LDEwIEBA
CiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5jbHVkZSAiU2VsZWN0UG9wdXBDbGll
bnQuaCIKIAotI2luY2x1ZGUgIkNocm9tZS5oIgotI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgot
I2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRXcml0ZXIuaCIKICNpbmNs
dWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVk
ZSAiUGFnZVBvcHVwLmgiCiAjaW5jbHVkZSAiUG9wdXBQaWNrZXIuaCIKICNpbmNsdWRlICJSZW5k
ZXJPYmplY3QuaCIKICNpbmNsdWRlICJXZWJQYWdlX3AuaCIKQEAgLTQwLDE1ICszMiwxOCBAQAog
CiAjZGVmaW5lIENFTExfSEVJR0hUIDMwCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgQmxhY2tCZXJyeSB7CituYW1lc3BhY2UgV2Vi
S2l0IHsKIAogREVGSU5FX1NUQVRJQ19MT0NBTChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9jYWxp
emVSZXNvdXJjZSwgc19yZXNvdXJjZSwgKCkpOwogCiBTZWxlY3RQb3B1cENsaWVudDo6U2VsZWN0
UG9wdXBDbGllbnQoYm9vbCBtdWx0aXBsZSwgaW50IHNpemUsIGNvbnN0IFNjb3BlQXJyYXk8Qmxh
Y2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZz4mIGxhYmVscywgYm9vbCogZW5hYmxlZHMsCiAgICAg
Y29uc3QgaW50KiBpdGVtVHlwZSwgYm9vbCogc2VsZWN0ZWRzLCBCbGFja0JlcnJ5OjpXZWJLaXQ6
OldlYlBhZ2VQcml2YXRlKiB3ZWJQYWdlLCBIVE1MU2VsZWN0RWxlbWVudCogZWxlbWVudCkKLSAg
ICA6IG1fbXVsdGlwbGUobXVsdGlwbGUpCisgICAgOiBQYWdlUG9wdXBCbGFja0JlcnJ5Q2xpZW50
KHdlYlBhZ2UpCisgICAgLCBtX211bHRpcGxlKG11bHRpcGxlKQogICAgICwgbV9zaXplKHNpemUp
Ci0gICAgLCBtX3dlYlBhZ2Uod2ViUGFnZSkKICAgICAsIG1fZWxlbWVudChlbGVtZW50KQogICAg
ICwgbV9ub3RpZnlDaGFuZ2VUaW1lcih0aGlzLCAmU2VsZWN0UG9wdXBDbGllbnQ6Om5vdGlmeVNl
bGVjdGlvbkNoYW5nZSkKIHsKQEAgLTU5LDE1ICs1NCw2IEBAIFNlbGVjdFBvcHVwQ2xpZW50Ojp+
U2VsZWN0UG9wdXBDbGllbnQoKQogewogfQogCi12b2lkIFNlbGVjdFBvcHVwQ2xpZW50Ojp1cGRh
dGUoYm9vbCBtdWx0aXBsZSwgaW50IHNpemUsIGNvbnN0IFNjb3BlQXJyYXk8QmxhY2tCZXJyeTo6
UGxhdGZvcm06OlN0cmluZz4mIGxhYmVscywgYm9vbCogZW5hYmxlZHMsCi0gICAgY29uc3QgaW50
KiBpdGVtVHlwZSwgYm9vbCogc2VsZWN0ZWRzLCBCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQ
cml2YXRlKiwgSFRNTFNlbGVjdEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgbV9tdWx0aXBsZSA9
IG11bHRpcGxlOwotICAgIG1fc2l6ZSA9IHNpemU7Ci0gICAgbV9lbGVtZW50ID0gZWxlbWVudDsK
LSAgICBnZW5lcmF0ZUhUTUwobXVsdGlwbGUsIHNpemUsIGxhYmVscywgZW5hYmxlZHMsIGl0ZW1U
eXBlLCBzZWxlY3RlZHMpOwotfQotCiB2b2lkIFNlbGVjdFBvcHVwQ2xpZW50OjpnZW5lcmF0ZUhU
TUwoYm9vbCwgaW50IHNpemUsIGNvbnN0IFNjb3BlQXJyYXk8QmxhY2tCZXJyeTo6UGxhdGZvcm06
OlN0cmluZz4mIGxhYmVscywgYm9vbCogZW5hYmxlZHMsCiAgICAgY29uc3QgaW50KiBpdGVtVHlw
ZSwgYm9vbCogc2VsZWN0ZWRzKQogewpAQCAtMTQ4LDI4ICsxMzQsNiBAQCB2b2lkIFNlbGVjdFBv
cHVwQ2xpZW50OjpnZW5lcmF0ZUhUTUwoYm9vbCwgaW50IHNpemUsIGNvbnN0IFNjb3BlQXJyYXk8
QmxhY2tCZXJyeQogICAgIG1fc291cmNlID0gc291cmNlLnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQg
U2VsZWN0UG9wdXBDbGllbnQ6OmNsb3NlUG9wdXAoKQotewotICAgIEFTU0VSVChtX3dlYlBhZ2Up
OwotICAgIG1fd2ViUGFnZS0+bV9wYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+Y2xvc2VQYWdlUG9w
dXAoMCk7Ci19Ci0KLUludFNpemUgU2VsZWN0UG9wdXBDbGllbnQ6OmNvbnRlbnRTaXplKCkKLXsK
LSAgICAvLyBGaXhtZTogd2lsbCBnZW5lcmF0ZSBjb250ZW50IHNpemUgZHluYW1pY2FsbHkKLSAg
ICByZXR1cm4gSW50U2l6ZSgzMjAsIDI1Nik7Ci19Ci0KLVN0cmluZyBTZWxlY3RQb3B1cENsaWVu
dDo6aHRtbFNvdXJjZSgpCi17Ci0gICAgcmV0dXJuIG1fc291cmNlOwotfQotCi1Mb2NhbGUmIFNl
bGVjdFBvcHVwQ2xpZW50Ojpsb2NhbGUoKQotewotICAgIHJldHVybiBtX2VsZW1lbnQtPmRvY3Vt
ZW50KCktPmdldENhY2hlZExvY2FsZSgpOwotfQotCiB2b2lkIFNlbGVjdFBvcHVwQ2xpZW50Ojpz
ZXRWYWx1ZUFuZENsb3NlUG9wdXAoaW50LCBjb25zdCBTdHJpbmcmIHN0cmluZ1ZhbHVlKQogewog
ICAgIEFTU0VSVChtX2VsZW1lbnQpOwpAQCAtMjA5LDIyICsxNzMsMTIgQEAgdm9pZCBTZWxlY3RQ
b3B1cENsaWVudDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCwgY29uc3QgU3RyaW5nJiBzdHJp
bmdWYWx1ZSkKICAgICBtX25vdGlmeUNoYW5nZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAot
dm9pZCBTZWxlY3RQb3B1cENsaWVudDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJikKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCiB2b2lkIFNlbGVjdFBvcHVwQ2xpZW50OjpkaWRDbG9zZVBv
cHVwKCkKIHsKLSAgICBtX3dlYlBhZ2UgPSAwOworICAgIFBhZ2VQb3B1cEJsYWNrQmVycnlDbGll
bnQ6OmRpZENsb3NlUG9wdXAoKTsKICAgICBtX2VsZW1lbnQgPSAwOwogfQogCi12b2lkIFNlbGVj
dFBvcHVwQ2xpZW50Ojp3cml0ZURvY3VtZW50KERvY3VtZW50V3JpdGVyJiB3cml0ZXIpCi17Ci0g
ICAgd3JpdGVyLmFkZERhdGEobV9zb3VyY2UudXRmOCgpLmRhdGEoKSwgbV9zb3VyY2UudXRmOCgp
Lmxlbmd0aCgpKTsKLX0KLQogdm9pZCBTZWxlY3RQb3B1cENsaWVudDo6bm90aWZ5U2VsZWN0aW9u
Q2hhbmdlKFdlYkNvcmU6OlRpbWVyPFNlbGVjdFBvcHVwQ2xpZW50PiopCiB7CiAgICAgaWYgKG1f
ZWxlbWVudCkKQEAgLTIzMyw0ICsxODcsNCBAQCB2b2lkIFNlbGVjdFBvcHVwQ2xpZW50Ojpub3Rp
ZnlTZWxlY3Rpb25DaGFuZ2UoV2ViQ29yZTo6VGltZXI8U2VsZWN0UG9wdXBDbGllbnQ+KgogfQog
CiB9Ci0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9TZWxlY3RQb3B1cENsaWVudC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L1NlbGVjdFBvcHVwQ2xpZW50LmgKaW5kZXggMzZhNjAyOS4uNGFlZDk4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1NlbGVjdFBv
cHVwQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0
L1NlbGVjdFBvcHVwQ2xpZW50LmgKQEAgLTIwLDUxICsyMCw0MCBAQAogI2RlZmluZSBTZWxlY3RQ
b3B1cENsaWVudF9oCiAKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiUGFnZVBvcHVw
Q2xpZW50LmgiCisjaW5jbHVkZSAiUGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudC5oIgogI2luY2x1
ZGUgIlNjb3BlUG9pbnRlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEhUTUxTZWxlY3RF
bGVtZW50OworfQorCiBuYW1lc3BhY2UgQmxhY2tCZXJyeSB7CiBuYW1lc3BhY2UgUGxhdGZvcm0g
ewogY2xhc3MgU3RyaW5nOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYlBhZ2VQ
cml2YXRlOwotfQotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBEb2N1bWVudFdyaXRl
cjsKLWNsYXNzIEhUTUxTZWxlY3RFbGVtZW50OwotY2xhc3MgUGFnZVBvcHVwOwogCi1jbGFzcyBT
ZWxlY3RQb3B1cENsaWVudCA6IHB1YmxpYyBQYWdlUG9wdXBDbGllbnQgeworY2xhc3MgU2VsZWN0
UG9wdXBDbGllbnQgOiBwdWJsaWMgUGFnZVBvcHVwQmxhY2tCZXJyeUNsaWVudCB7CiBwdWJsaWM6
Ci0gICAgU2VsZWN0UG9wdXBDbGllbnQoYm9vbCBtdWx0aXBsZSwgaW50IHNpemUsIGNvbnN0IFNj
b3BlQXJyYXk8QmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZz4mIGxhYmVscywgYm9vbCogZW5h
YmxlZHMsIGNvbnN0IGludCogaXRlbVR5cGUsIGJvb2wqIHNlbGVjdGVkcywgQmxhY2tCZXJyeTo6
V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZSosIEhUTUxTZWxlY3RFbGVtZW50Kik7CisgICAgU2VsZWN0
UG9wdXBDbGllbnQoYm9vbCBtdWx0aXBsZSwgaW50IHNpemUsIGNvbnN0IFNjb3BlQXJyYXk8Qmxh
Y2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZz4mIGxhYmVscywgYm9vbCogZW5hYmxlZHMsIGNvbnN0
IGludCogaXRlbVR5cGUsIGJvb2wqIHNlbGVjdGVkcywgQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQ
YWdlUHJpdmF0ZSosIFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Kik7CiAgICAgflNlbGVjdFBv
cHVwQ2xpZW50KCk7CiAKLSAgICB2b2lkIHVwZGF0ZShib29sIG11bHRpcGxlLCBpbnQgc2l6ZSwg
Y29uc3QgU2NvcGVBcnJheTxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nPiYgbGFiZWxzLCBi
b29sKiBlbmFibGVkcywgY29uc3QgaW50KiBpdGVtVHlwZSwgYm9vbCogc2VsZWN0ZWRzLCBCbGFj
a0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlKiwgSFRNTFNlbGVjdEVsZW1lbnQqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCwgY29uc3QgU3RyaW5nJik7
CisgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlUG9wdXAoKTsKIAorcHJpdmF0ZToKICAgICB2b2lk
IGdlbmVyYXRlSFRNTChib29sIG11bHRpcGxlLCBpbnQgc2l6ZSwgY29uc3QgU2NvcGVBcnJheTxC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nPiYgbGFiZWxzLCBib29sKiBlbmFibGVkcywgY29u
c3QgaW50KiBpdGVtVHlwZSwgYm9vbCogc2VsZWN0ZWRzKTsKICAgICB2b2lkIG5vdGlmeVNlbGVj
dGlvbkNoYW5nZShXZWJDb3JlOjpUaW1lcjxTZWxlY3RQb3B1cENsaWVudD4gKik7CiAKLSAgICB2
b2lkIHdyaXRlRG9jdW1lbnQoRG9jdW1lbnRXcml0ZXImKTsKLSAgICB2aXJ0dWFsIEludFNpemUg
Y29udGVudFNpemUoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBodG1sU291cmNlKCk7Ci0gICAgdmly
dHVhbCBMb2NhbGUmIGxvY2FsZSgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFuZENsb3Nl
UG9wdXAoaW50LCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29u
c3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlUG9wdXAoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2xvc2VQb3B1cCgpOwotCiAgICAgYm9vbCBtX211bHRpcGxlOwogICAgIHVuc2ln
bmVkIG1fc2l6ZTsKLSAgICBTdHJpbmcgbV9zb3VyY2U7Ci0gICAgQmxhY2tCZXJyeTo6V2ViS2l0
OjpXZWJQYWdlUHJpdmF0ZSogbV93ZWJQYWdlOwotICAgIFJlZlB0cjxIVE1MU2VsZWN0RWxlbWVu
dD4gbV9lbGVtZW50OworICAgIFJlZlB0cjxXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudD4gbV9l
bGVtZW50OwogICAgIFdlYkNvcmU6OlRpbWVyPFNlbGVjdFBvcHVwQ2xpZW50PiBtX25vdGlmeUNo
YW5nZVRpbWVyOwogfTsKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworfQorfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRI
YW5kbGVyLmNwcAppbmRleCA1OTVlYTMzLi40M2I2OTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHAKQEAgLTEy
MTIsMTUgKzEyMTIsMTMgQEAgYm9vbCBJbnB1dEhhbmRsZXI6Om9wZW5EYXRlUG9wdXAoSFRNTElu
cHV0RWxlbWVudCogZWxlbWVudCwgQmxhY2tCZXJyeUlucHV0VHlwZQogICAgICAgICAvLyBEYXRl
IGlucHV0IGhhdmUgYnV0dG9uIGFwcGVhcmFuY2UsIHdlIGhpZGUgY2FyZXQgd2hlbiB0aGV5IGdl
dCBjbGlja2VkLgogICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rp
b24oKS0+c2V0Q2FyZXRWaXNpYmxlKGZhbHNlKTsKIAotICAgICAgICAvLyBDaGVjayBpZiBwb3B1
cCBhbHJlYWR5IGV4aXN0cywgY2xvc2UgaXQgaWYgZG9lcy4KLSAgICAgICAgbV93ZWJQYWdlLT5t
X3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5jbG9zZVBhZ2VQb3B1cCgwKTsKICAgICAgICAgV1RG
OjpTdHJpbmcgdmFsdWUgPSBlbGVtZW50LT52YWx1ZSgpOwogICAgICAgICBXVEY6OlN0cmluZyBt
aW4gPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjptaW5BdHRyKS5zdHJpbmcoKTsK
ICAgICAgICAgV1RGOjpTdHJpbmcgbWF4ID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKEhUTUxOYW1l
czo6bWF4QXR0cikuc3RyaW5nKCk7CiAgICAgICAgIGRvdWJsZSBzdGVwID0gZWxlbWVudC0+Z2V0
QXR0cmlidXRlKEhUTUxOYW1lczo6c3RlcEF0dHIpLnRvRG91YmxlKCk7CiAKICAgICAgICAgRGF0
ZVBpY2tlckNsaWVudCogY2xpZW50ID0gbmV3IERhdGVQaWNrZXJDbGllbnQodHlwZSwgdmFsdWUs
IG1pbiwgbWF4LCBzdGVwLCAgbV93ZWJQYWdlLCBlbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIG1f
d2ViUGFnZS0+bV9wYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+b3BlblBhZ2VQb3B1cChjbGllbnQs
ICBXZWJDb3JlOjpJbnRSZWN0KCkpOworICAgICAgICByZXR1cm4gbV93ZWJQYWdlLT5vcGVuUGFn
ZVBvcHVwKGNsaWVudCwgIFdlYkNvcmU6OkludFJlY3QoKSk7CiAgICAgICAgIH0KICAgICBkZWZh
dWx0OiAvLyBPdGhlciB0eXBlcyBub3Qgc3VwcG9ydGVkCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTEyMzgsMTEgKzEyMzYsOCBAQCBib29sIElucHV0SGFuZGxlcjo6b3BlbkNvbG9yUG9wdXAo
SFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKICAgICBtX2N1cnJlbnRGb2N1c0VsZW1lbnQgPSBl
bGVtZW50OwogICAgIG1fY3VycmVudEZvY3VzRWxlbWVudFR5cGUgPSBUZXh0UG9wdXA7CiAKLSAg
ICAvLyBDaGVjayBpZiBwb3B1cCBhbHJlYWR5IGV4aXN0cywgY2xvc2UgaXQgaWYgZG9lcy4KLSAg
ICBtX3dlYlBhZ2UtPm1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPmNsb3NlUGFnZVBvcHVwKDAp
OwotCiAgICAgQ29sb3JQaWNrZXJDbGllbnQqIGNsaWVudCA9IG5ldyBDb2xvclBpY2tlckNsaWVu
dChlbGVtZW50LT52YWx1ZSgpLCBtX3dlYlBhZ2UsIGVsZW1lbnQpOwotICAgIHJldHVybiBtX3dl
YlBhZ2UtPm1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPm9wZW5QYWdlUG9wdXAoY2xpZW50LCAg
V2ViQ29yZTo6SW50UmVjdCgpKTsKKyAgICByZXR1cm4gbV93ZWJQYWdlLT5vcGVuUGFnZVBvcHVw
KGNsaWVudCwgV2ViQ29yZTo6SW50UmVjdCgpKTsKIH0KIAogdm9pZCBJbnB1dEhhbmRsZXI6OnNl
dElucHV0VmFsdWUoY29uc3QgV1RGOjpTdHJpbmcmIHZhbHVlKQpAQCAtMTk3MSw5ICsxOTY2LDYg
QEAgYm9vbCBJbnB1dEhhbmRsZXI6Om9wZW5TZWxlY3RQb3B1cChIVE1MU2VsZWN0RWxlbWVudCog
c2VsZWN0KQogICAgIFNjb3BlQXJyYXk8QmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZz4gbGFi
ZWxzOwogICAgIGxhYmVscy5yZXNldChuZXcgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZ1tz
aXplXSk7CiAKLSAgICAvLyBDaGVjayBpZiBwb3B1cCBhbHJlYWR5IGV4aXN0cywgY2xvc2UgaXQg
aWYgZG9lcy4KLSAgICBtX3dlYlBhZ2UtPm1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPmNsb3Nl
UGFnZVBvcHVwKDApOwotCiAgICAgYm9vbCogZW5hYmxlZHMgPSAwOwogICAgIGludCogaXRlbVR5
cGVzID0gMDsKICAgICBib29sKiBzZWxlY3RlZHMgPSAwOwpAQCAtMjAwNiw3ICsxOTk4LDcgQEAg
Ym9vbCBJbnB1dEhhbmRsZXI6Om9wZW5TZWxlY3RQb3B1cChIVE1MU2VsZWN0RWxlbWVudCogc2Vs
ZWN0KQogICAgIFNlbGVjdFBvcHVwQ2xpZW50KiBzZWxlY3RDbGllbnQgPSBuZXcgU2VsZWN0UG9w
dXBDbGllbnQobXVsdGlwbGUsIHNpemUsIGxhYmVscywgZW5hYmxlZHMsIGl0ZW1UeXBlcywgc2Vs
ZWN0ZWRzLCBtX3dlYlBhZ2UsIHNlbGVjdCk7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBlbGVtZW50
UmVjdEluUm9vdFZpZXcgPSBzZWxlY3QtPmRvY3VtZW50KCktPnZpZXcoKS0+Y29udGVudHNUb1Jv
b3RWaWV3KGVuY2xvc2luZ0ludFJlY3Qoc2VsZWN0LT5nZXRSZWN0KCkpKTsKICAgICAvLyBGYWls
IHRvIGNyZWF0ZSBIVE1MIHBvcHVwLCB1c2UgdGhlIG9sZCBwYXRoCi0gICAgaWYgKCFtX3dlYlBh
Z2UtPm1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPm9wZW5QYWdlUG9wdXAoc2VsZWN0Q2xpZW50
LCBlbGVtZW50UmVjdEluUm9vdFZpZXcpKQorICAgIGlmICghbV93ZWJQYWdlLT5vcGVuUGFnZVBv
cHVwKHNlbGVjdENsaWVudCwgZWxlbWVudFJlY3RJblJvb3RWaWV3KSkKICAgICAgICAgbV93ZWJQ
YWdlLT5tX2NsaWVudC0+b3BlblBvcHVwTGlzdChtdWx0aXBsZSwgc2l6ZSwgbGFiZWxzLCBlbmFi
bGVkcywgaXRlbVR5cGVzLCBzZWxlY3RlZHMpOwogICAgIGRlbGV0ZVtdIGVuYWJsZWRzOwogICAg
IGRlbGV0ZVtdIGl0ZW1UeXBlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zQmxh
Y2tCZXJyeS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zQmxhY2tCZXJyeS5jbWFrZQppbmRl
eCA5MTExMzExLi5lYzRjMTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0JsYWNr
QmVycnkuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNCbGFja0JlcnJ5LmNtYWtlCkBA
IC0xODEsNyArMTgxLDYgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X05BVklHQVRPUl9DT05URU5UX1VUSUxTIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX05FVFdPUktfSU5GTyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9OT1RJRklDQVRJT05TIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUyBPTikKLVdFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9QQUdFX1BPUFVQIE9OKQogV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkgT04pCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUkVQQUlOVF9USFJPVFRMSU5HIE9OKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FIE9OKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>