<?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>168534</bug_id>
          
          <creation_ts>2017-02-17 14:55:25 -0800</creation_ts>
          <short_desc>Add a new drag code path and use it for dragging plain text</short_desc>
          <delta_ts>2017-02-20 11:34:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1278461</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2017-02-17 14:55:25 -0800</bug_when>
    <thetext>Add a new drag code path and use it for dragging plain text</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278475</commentid>
    <comment_count>1</comment_count>
      <attachid>301997</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2017-02-17 15:19:42 -0800</bug_when>
    <thetext>Created attachment 301997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278477</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-17 15:21:50 -0800</bug_when>
    <thetext>Attachment 301997 did not pass style-queue:


ERROR: Tools/DumpRenderTree/mac/DumpRenderTreePasteboard.mm:221:  Missing space around : in range-based for statement  [whitespace/colon] [4]
ERROR: Tools/DumpRenderTree/mac/DumpRenderTreePasteboard.mm:224:  Extra space in capture list.  [whitespace/brackets] [4]
ERROR: Source/WebKit/mac/WebView/WebHTMLView.mm:4712:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/mac/WebView/WebHTMLView.mm:4714:  The parameter name &quot;page&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/mac/WebCoreSupport/WebDragClient.mm:155:  Extra space in capture list.  [whitespace/brackets] [4]
Total errors found: 5 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278478</commentid>
    <comment_count>3</comment_count>
      <attachid>301998</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2017-02-17 15:24:25 -0800</bug_when>
    <thetext>Created attachment 301998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278480</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-17 15:26:41 -0800</bug_when>
    <thetext>Attachment 301998 did not pass style-queue:


ERROR: Tools/DumpRenderTree/mac/DumpRenderTreePasteboard.mm:221:  Missing space around : in range-based for statement  [whitespace/colon] [4]
ERROR: Tools/DumpRenderTree/mac/DumpRenderTreePasteboard.mm:224:  Extra space in capture list.  [whitespace/brackets] [4]
ERROR: Source/WebKit/mac/WebView/WebHTMLView.mm:4712:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/mac/WebView/WebHTMLView.mm:4714:  The parameter name &quot;page&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/mac/WebCoreSupport/WebDragClient.mm:155:  Extra space in capture list.  [whitespace/brackets] [4]
Total errors found: 5 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278493</commentid>
    <comment_count>5</comment_count>
      <attachid>302005</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2017-02-17 15:59:51 -0800</bug_when>
    <thetext>Created attachment 302005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278494</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-17 16:01:56 -0800</bug_when>
    <thetext>Attachment 302005 did not pass style-queue:


ERROR: Tools/DumpRenderTree/mac/DumpRenderTreePasteboard.mm:221:  Missing space around : in range-based for statement  [whitespace/colon] [4]
ERROR: Tools/DumpRenderTree/mac/DumpRenderTreePasteboard.mm:224:  Extra space in capture list.  [whitespace/brackets] [4]
ERROR: Source/WebKit/mac/WebView/WebHTMLView.mm:4712:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/mac/WebView/WebHTMLView.mm:4714:  The parameter name &quot;page&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/mac/WebCoreSupport/WebDragClient.mm:155:  Extra space in capture list.  [whitespace/brackets] [4]
Total errors found: 5 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278595</commentid>
    <comment_count>7</comment_count>
      <attachid>302005</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-02-17 21:06:02 -0800</bug_when>
    <thetext>Comment on attachment 302005
Patch

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

&gt; Source/WebCore/page/DragController.cpp:746
&gt; +    float x = (mouseDraggedPoint.x() - draggingRect.x()) / (float)draggingRect.width();
&gt; +    float y = (mouseDraggedPoint.y() - draggingRect.y()) / (float)draggingRect.height();

Do we still like static_cast&lt;float&gt;?

&gt; Source/WebKit/mac/WebCoreSupport/WebDragClient.mm:153
&gt; +    // FIXME: We should be able to make a fake event with the mosue dragged coordinates.

mouse</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279010</commentid>
    <comment_count>8</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2017-02-20 11:34:46 -0800</bug_when>
    <thetext>Committed r212663: &lt;http://trac.webkit.org/changeset/212663&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301997</attachid>
            <date>2017-02-17 15:19:42 -0800</date>
            <delta_ts>2017-02-17 15:24:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168534-20170217151703.patch</filename>
            <type>text/plain</type>
            <size>49942</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRmMTdiYTc4ODYyZGEz
NWVmYTc0NmVmNGZiMDc4YzQ5MzRlZmUzYS4uNzg4M2U2ZWRjNGZmMjMzMDNjMDIyNTQ3MzVlYmJk
ZjBiMzM0YWM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ1IEBACiAyMDE3LTAyLTE3ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgQWRkIGEgbmV3IGRy
YWcgY29kZSBwYXRoIGFuZCB1c2UgaXQgZm9yIGRyYWdnaW5nIHBsYWluIHRleHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODUzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBuZXcgY29kZSBwYXRo
IGlzIGN1cnJlbnRseSBvbmx5IHVzZWQgZm9yIHBsYWluIHRleHQgc2VsZWN0aW9uIGRyYWdnaW5n
LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHBhZ2UvRHJhZ0NsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudDo6dXNl
TGVnYWN5RHJhZ0NsaWVudCk6CisgICAgICAgIEFkZCBhIG5ldyBtZW1iZXIgZnVuY3Rpb24uIFRo
aXMgY3VycmVudGx5IHJldHVybnMgdHJ1ZSBldmVyeXdoZXJlIGV4Y2VwdCBsZWdhY3kgV2ViS2l0
IG9uIE1hYy4KKworICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudDo6YmVnaW5EcmFnKToKKyAg
ICAgICAgQWRkIG5ldyBlbXB0eSBtZW1iZXIgZnVuY3Rpb24uCisKKyAgICAgICAgKiBwYWdlL0Ry
YWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYWdJbWFnZUFuY2hvclBvaW50
Rm9yU2VsZWN0aW9uRHJhZyk6CisgICAgICAgIEhlbHBlciBmdW5jdGlvbiB0aGF0IHJldHVybnMg
dGhlIGFuY2hvciBwb2ludCBmb3IgYSBzZWxlY3Rpb24gZHJhZyBpbWFnZS4KKworICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgIElmIHdlIGNhbiB1
c2UgdGhlIG5ldyBjb2RlIHBhdGgsIHNldCB1cCBhIGRyYWcgaXRlbSB3aXRoIGFuIGltYWdlIGFu
ZCBwYXN0ZWJvYXJkIGRhdGEuCisKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpi
ZWdpbkRyYWcpOgorICAgICAgICBOZXcgZnVuY3Rpb24gdGhhdCBjYWxscyBvdXQgdG8gdGhlIGNs
aWVudC4KKworICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgQWRkIG5l
dyBtZW1iZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vRHJhZ0l0ZW0uaDoKKyAgICAgICAgQWRk
IGEgbmV3IGNsYXNzIC0gaXQncyBlc3NlbnRpYWxseSBhIHR1cGxlIG9mIGEgZHJhZyBpbWFnZSwg
YW4gYW5jaG9yIHBvaW50IGFuZCB0aGUgcGFzdGVib2FyZCBkYXRhIHRoZSBpdGVtIHJlcHJlc2Vu
dHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5oOgorICAgICAg
ICBSZW5hbWUgY3JlYXRlUGFzdGVib2FyZFdyaXRpbmcgdG8gY3JlYXRlUGFzdGVib2FyZFdyaXRl
ci4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgIFVzZSB0aGUgVVRJ
IHBhc3RlYm9hcmQgdHlwZS4KKworMjAxNy0wMi0xNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgorCiAgICAgICAgIEJlZ2luIG92ZXJoYXVsaW5nIHRoZSBwYXN0ZWJvYXJk
IGltcGxlbWVudGF0aW9uCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjg1MjUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGRhOTYzNWIxMWJmZDFiMzA3MTk2
MWM3NTNmZWM3YWFmNjY2NDQ4NDEuLmI2N2I1ZDA3ZGQzOGIxMWU1NmMxODNjYWE4YmViYjJjMGNm
MDc1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxNy0wMi0xNyAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIG5ldyBk
cmFnIGNvZGUgcGF0aCBhbmQgdXNlIGl0IGZvciBkcmFnZ2luZyBwbGFpbiB0ZXh0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg1MzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkRyYWdDbGllbnQuaDoKKyAgICAgICAgQWRkIG5ldyBtZW1iZXJzLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbToKKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6
OnVzZUxlZ2FjeURyYWdDbGllbnQpOgorICAgICAgICBSZXR1cm4gZmFsc2UgaGVyZS4KKworICAg
ICAgICAoV2ViRHJhZ0NsaWVudDo6YmVnaW5EcmFnKToKKyAgICAgICAgTmV3IGNsaWVudCBtZW1i
ZXIgZnVuY3Rpb24uIENyZWF0ZSBhbiBOU0RyYWdnaW5nSXRlbSBhbmQgdXNlIGl0IHRvIGJlZ2lu
IGEgZHJhZ2dpbmcgc2Vzc2lvbi4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06
CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGRyYWdnaW5nU2Vzc2lvbjpzb3VyY2VPcGVyYXRpb25N
YXNrRm9yRHJhZ2dpbmdDb250ZXh0Ol0pOgorICAgICAgICBHZXQgdGhlIHNvdXJjZSBvcGVyYXRp
b24gbWFzayBmcm9tIFdlYkNvcmUuCisKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZHJhZ2dpbmdT
ZXNzaW9uOmVuZGVkQXRQb2ludDpvcGVyYXRpb246XSk6CisgICAgICAgIFNlbmQgYSBmYWtlIG1v
dXNlIHVwIGV2ZW50LgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlld0ludGVybmFsLmg6
CisgICAgICAgIERlY2xhcmUgdGhhdCBXZWJIVE1MVmlldyBjb25mb3JtcyB0byBOU0RyYWdnaW5n
U291cmNlLgorCiAyMDE3LTAyLTE1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICBTdG9wIGJhY2tpbmcgdXAgbG9jYWxTdG9yYWdlIGRhdGFiYXNlcyB0byBpQ2xv
dWQgYnkgZGVmYXVsdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA1NDg3NTQzZGJkNGU1YjdjNmMzMzEyZjk2NjJiNzJmYWQ3NmI2
ZGE3Li5kZTE1YjgxMmZkYTk4NTg5ZGVlZDkyNmYyZWE5YjYwYWQ2MzgzOWQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NTMs
NiArOTUzLDcgQEAKIAkJMUFGNENFRUMxOEJDM0MxQjAwQkMyRDM0IC8qIFZpc2l0ZWRMaW5rU3Rv
cmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFG
NENFRUIxOEJDM0MxQjAwQkMyRDM0IC8qIFZpc2l0ZWRMaW5rU3RvcmUuY3BwICovOyB9OwogCQkx
QUY1RTRENDFFNTY3MzVCMDA0QTFGMDEgLyogUGFzdGVib2FyZFdyaXRlckRhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGNUU0RDIxRTU2NzM1
QTAwNEExRjAxIC8qIFBhc3RlYm9hcmRXcml0ZXJEYXRhLmNwcCAqLzsgfTsKIAkJMUFGNUU0RDUx
RTU2NzM1QjAwNEExRjAxIC8qIFBhc3RlYm9hcmRXcml0ZXJEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUY1RTREMzFFNTY3MzVBMDA0QTFGMDEg
LyogUGFzdGVib2FyZFdyaXRlckRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkxQUY1RTREOTFFNTY3N0E5MDA0QTFGMDEgLyogRHJhZ0l0ZW0u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRjVFNEQ3
MUU1Njc3QTkwMDRBMUYwMSAvKiBEcmFnSXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBRjVFNEUyMUU1Nzc5QjEwMDRBMUYwMSAvKiBQYXN0
ZWJvYXJkV3JpdGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUFGNUU0RTAxRTU3NzlCMTAwNEExRjAxIC8qIFBhc3RlYm9hcmRXcml0ZXIubW0gKi87
IH07CiAJCTFBRjVFNEUzMUU1Nzc5QjEwMDRBMUYwMSAvKiBQYXN0ZWJvYXJkV3JpdGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUY1RTRFMTFFNTc3
OUIxMDA0QTFGMDEgLyogUGFzdGVib2FyZFdyaXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBRjYyRUU2MTREQTIyQTcwMDQxNTU2QyAvKiBT
Y3JvbGxpbmdDb29yZGluYXRvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBRjYyRUUzMTREQTIyQTcwMDQxNTU2QyAvKiBTY3JvbGxpbmdDb29y
ZGluYXRvck1hYy5tbSAqLzsgfTsKQEAgLTgxMzYsNiArODEzNyw3IEBACiAJCTFBRjRDRUVCMThC
QzNDMUIwMEJDMkQzNCAvKiBWaXNpdGVkTGlua1N0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFZpc2l0ZWRMaW5rU3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQUY1RTREMjFFNTY3MzVBMDA0QTFGMDEgLyogUGFzdGVib2FyZFdyaXRl
ckRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFzdGVib2Fy
ZFdyaXRlckRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUY1RTREMzFF
NTY3MzVBMDA0QTFGMDEgLyogUGFzdGVib2FyZFdyaXRlckRhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGFzdGVib2FyZFdyaXRlckRhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUFGNUU0RDcxRTU2NzdBOTAwNEExRjAxIC8qIERyYWdJdGVtLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYWdJdGVtLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFBRjVFNEUwMUU1Nzc5QjEwMDRBMUYwMSAvKiBQYXN0ZWJvYXJkV3Jp
dGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzdGVib2Fy
ZFdyaXRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFGNUU0RTExRTU3NzlC
MTAwNEExRjAxIC8qIFBhc3RlYm9hcmRXcml0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUGFzdGVib2FyZFdyaXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQUY2MkVFMzE0REEyMkE3MDA0MTU1NkMgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdDb29yZGlu
YXRvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyOTE5LDYgKzIyOTIx
LDcgQEAKIAkJCQlBN0I2RTY5RDBCMjkxQTk2MDBEMDUyOUYgLyogRHJhZ0RhdGEuaCAqLywKIAkJ
CQlBN0NGQjNDRjBCN0VEMTBBMDA3MEMzMkQgLyogRHJhZ0ltYWdlLmNwcCAqLywKIAkJCQlBN0NG
QjNEMDBCN0VEMTBBMDA3MEMzMkQgLyogRHJhZ0ltYWdlLmggKi8sCisJCQkJMUFGNUU0RDcxRTU2
NzdBOTAwNEExRjAxIC8qIERyYWdJdGVtLmggKi8sCiAJCQkJMUNBMTlFMTUwREMyNTVDQTAwNjVB
OTk0IC8qIEV2ZW50TG9vcC5oICovLAogCQkJCTI2MkVDNDFDMUQxMTBCMUYwMEJBNzhGQyAvKiBF
dmVudFRyYWNraW5nUmVnaW9ucy5jcHAgKi8sCiAJCQkJMjYyRUM0MTkxRDA3OEYzRDAwQkE3OEZD
IC8qIEV2ZW50VHJhY2tpbmdSZWdpb25zLmggKi8sCkBAIC0yODczMCw2ICsyODczMyw3IEBACiAJ
CQkJMEMzRjFGNUIxMEM4ODcxMjAwRDcyQ0UxIC8qIFdlYkdMVW5pZm9ybUxvY2F0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2Rjk5NUEyNjFBNzA3OEIxMDBBNzM1RjQgLyogV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzdBMTdBNzgxMkYyODY0MjAwNEUwMkY2
IC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBRjVF
NEQ5MUU1Njc3QTkwMDRBMUYwMSAvKiBEcmFnSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVF
MjEyM0MxRTQ5MjRBNDAwQ0UxMDQ0IC8qIFdlYkhlYXBBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTU4NDBFMjUxODdCOEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTU4NEZFMzAxODY0Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVk
U2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVudC5oCmlu
ZGV4IDdjNmEwODg5MWJlZGJlYmM3ZWEzMWQ1NGRkZDFkNDYzZmZhZTBiOGUuLmIwMjIwN2Q4YzM0
ZmMzYTExNjgwNGM1YTA0NmRkNTc5NGVmZjZkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVudC5o
CkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRyYWdBY3Rpb25z
LmgiCi0jaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCisjaW5jbHVkZSAiRHJhZ0l0ZW0uaCIKICNpbmNs
dWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKIApAQCAtNDIsNiArNDIs
OCBAQCBjbGFzcyBEcmFnQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhZ0Nv
bnRyb2xsZXJEZXN0cm95ZWQoKSA9IDA7CiAKKyAgICB2aXJ0dWFsIGJvb2wgdXNlTGVnYWN5RHJh
Z0NsaWVudCgpIHsgcmV0dXJuIHRydWU7IH0KKwogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9y
bURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24sIGNvbnN0IERyYWdE
YXRhJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24o
RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgSW50UG9pbnQmLCBEYXRhVHJhbnNmZXImKSA9IDA7CiAg
ICAgdmlydHVhbCBEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uTWFza0ZvckRyYWcoY29uc3Qg
RHJhZ0RhdGEmKSA9IDA7CkBAIC01MCw2ICs1Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc3RhcnREcmFnKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdJbWFnZU9yaWdpbiwg
Y29uc3QgSW50UG9pbnQmIGV2ZW50UG9zLCBjb25zdCBGbG9hdFBvaW50JiBkcmFnSW1hZ2VBbmNo
b3IsIERhdGFUcmFuc2ZlciYsIEZyYW1lJiwgRHJhZ1NvdXJjZUFjdGlvbikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkcmFnRW5kZWQoKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBiZWdpbkRyYWco
RHJhZ0l0ZW0sIEZyYW1lJiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRQb2ludCYsIERhdGFU
cmFuc2ZlciYsIERyYWdTb3VyY2VBY3Rpb24pIHsgfQorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgLy8gTWFjLXNwZWNpZmljIGhlbHBlciBmdW5jdGlvbiB0byBhbGxvdyBhY2Nlc3MgdG8gd2Vi
IGFyY2hpdmVzIGFuZCBOU1Bhc3RlYm9hcmQgZXh0cmFzIGluIFdlYktpdC4KICAgICAvLyBUaGlz
IGlzIG5vdCBhYnN0cmFjdCBhcyB0aGF0IHdvdWxkIHJlcXVpcmUgYW5vdGhlciAjaWYgUExBVEZP
Uk0oQ09DT0EpIGZvciB0aGUgU1ZHSW1hZ2UgY2xpZW50IGVtcHR5IGltcGxlbnRhdGlvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggZDE2NzIyMWMxNzMzNGQwMWNm
MjhiOWJkY2VlYjk1OTExMDA3ZjlhOC4uNGZkYWRmYzRkMmU3YmMzMDY5Y2NkMTI3OGM0ZDNmMmU3
NDNhMzU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTczOCw2
ICs3MzgsMTYgQEAgc3RhdGljIEludFBvaW50IGRyYWdMb2NGb3JESFRNTERyYWcoY29uc3QgSW50
UG9pbnQmIG1vdXNlRHJhZ2dlZFBvaW50LCBjb25zdCBJbnQKICAgICByZXR1cm4gSW50UG9pbnQo
ZHJhZ09yaWdpbi54KCkgLSBkcmFnSW1hZ2VPZmZzZXQueCgpLCBkcmFnT3JpZ2luLnkoKSArIHlP
ZmZzZXQpOwogfQogCitzdGF0aWMgRmxvYXRQb2ludCBkcmFnSW1hZ2VBbmNob3JQb2ludEZvclNl
bGVjdGlvbkRyYWcoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRQb2ludCYgbW91c2VEcmFnZ2VkUG9p
bnQpCit7CisgICAgSW50UmVjdCBkcmFnZ2luZ1JlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGZyYW1l
LnNlbGVjdGlvbigpLnNlbGVjdGlvbkJvdW5kcygpKTsKKworICAgIGZsb2F0IHggPSAobW91c2VE
cmFnZ2VkUG9pbnQueCgpIC0gZHJhZ2dpbmdSZWN0LngoKSkgLyAoZmxvYXQpZHJhZ2dpbmdSZWN0
LndpZHRoKCk7CisgICAgZmxvYXQgeSA9IChtb3VzZURyYWdnZWRQb2ludC55KCkgLSBkcmFnZ2lu
Z1JlY3QueSgpKSAvIChmbG9hdClkcmFnZ2luZ1JlY3QuaGVpZ2h0KCk7CisKKyAgICByZXR1cm4g
RmxvYXRQb2ludCB7IHgsIHkgfTsKK30KKwogc3RhdGljIEludFBvaW50IGRyYWdMb2NGb3JTZWxl
Y3Rpb25EcmFnKEZyYW1lJiBzcmMpCiB7CiAgICAgSW50UmVjdCBkcmFnZ2luZ1JlY3QgPSBlbmNs
b3NpbmdJbnRSZWN0KHNyYy5zZWxlY3Rpb24oKS5zZWxlY3Rpb25Cb3VuZHMoKSk7CkBAIC03OTIs
NiArODAyLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNv
bnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICBtX3NvdXJjZURyYWdPcGVy
YXRpb24gPSBzcmNPcDsKIAogICAgIERyYWdJbWFnZSBkcmFnSW1hZ2U7CisgICAgRmxvYXRQb2lu
dCBkcmFnSW1hZ2VBbmNob3JQb2ludDsKICAgICBJbnRQb2ludCBkcmFnTG9jKDAsIDApOwogICAg
IEludFBvaW50IGRyYWdJbWFnZU9mZnNldCgwLCAwKTsKIApAQCAtODE4LDkgKzgyOSwxMyBAQCBi
b29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRl
JiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgIEFTU0VSVChzdGF0ZS5zb3VyY2UpOwogICAgIEVs
ZW1lbnQmIGVsZW1lbnQgPSAqc3RhdGUuc291cmNlOwogCisgICAgYm9vbCBtdXN0VXNlTGVnYWN5
RHJhZ0NsaWVudCA9IGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuaGFzRGF0YSgpIHx8IG1fY2xp
ZW50LnVzZUxlZ2FjeURyYWdDbGllbnQoKTsKKwogICAgIEludFJlY3QgZHJhZ0ltYWdlQm91bmRz
OwogICAgIEltYWdlKiBpbWFnZSA9IGdldEltYWdlKGVsZW1lbnQpOwogICAgIGlmIChzdGF0ZS50
eXBlID09IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pIHsKKyAgICAgICAgUGFzdGVib2FyZFdy
aXRlckRhdGEgcGFzdGVib2FyZFdyaXRlckRhdGE7CisKICAgICAgICAgaWYgKCFkYXRhVHJhbnNm
ZXIucGFzdGVib2FyZCgpLmhhc0RhdGEoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMg
ZW50aXJlIGJsb2NrIGlzIGFsbW9zdCBpZGVudGljYWwgdG8gdGhlIGNvZGUgaW4gRWRpdG9yOjpj
b3B5LCBhbmQgdGhlIGNvZGUgc2hvdWxkIGJlIHNoYXJlZC4KICAgICAgICAgICAgIFJlZlB0cjxS
YW5nZT4gc2VsZWN0aW9uUmFuZ2UgPSBzcmMuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2Uo
KTsKQEAgLTgzNiw5ICs4NTEsMTggQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZy
YW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KIAogICAgICAg
ICAgICAgc3JjLmVkaXRvcigpLndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChzZWxlY3Rp
b25SYW5nZS5nZXQoKSk7CiAKLSAgICAgICAgICAgIGlmIChlbmNsb3NpbmdUZXh0Rm9ybUNvbnRy
b2woc3JjLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpKQotICAgICAgICAgICAgICAg
IGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkud3JpdGVQbGFpblRleHQoc3JjLmVkaXRvcigpLnNl
bGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlcigpLCBQYXN0ZWJvYXJkOjpDYW5ub3RTbWFydFJlcGxh
Y2UpOwotICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoZW5jbG9zaW5nVGV4dEZv
cm1Db250cm9sKHNyYy5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKSkgeworICAgICAg
ICAgICAgICAgIGlmIChtdXN0VXNlTGVnYWN5RHJhZ0NsaWVudCkKKyAgICAgICAgICAgICAgICAg
ICAgZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS53cml0ZVBsYWluVGV4dChzcmMuZWRpdG9yKCku
c2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5zZmVyKCksIFBhc3RlYm9hcmQ6OkNhbm5vdFNtYXJ0UmVw
bGFjZSk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFBhc3Rl
Ym9hcmRXcml0ZXJEYXRhOjpQbGFpblRleHQgcGxhaW5UZXh0OworICAgICAgICAgICAgICAgICAg
ICBwbGFpblRleHQuY2FuU21hcnRDb3B5T3JEZWxldGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgcGxhaW5UZXh0LnRleHQgPSBzcmMuZWRpdG9yKCkuc2VsZWN0ZWRUZXh0Rm9yRGF0YVRy
YW5zZmVyKCk7CisgICAgICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRhLnNldFBs
YWluVGV4dChXVEZNb3ZlKHBsYWluVGV4dCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbXVzdFVzZUxlZ2FjeURyYWdDbGllbnQgPSB0
cnVlOworCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKICAgICAgICAgICAg
ICAgICBzcmMuZWRpdG9yKCkud3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoZGF0YVRyYW5zZmVy
LnBhc3RlYm9hcmQoKSk7CiAjZWxzZQpAQCAtODUzLDEzICs4NzcsMjUgQEAgYm9vbCBEcmFnQ29u
dHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERy
YWdPcGVyYXRpb24KICAgICAgICAgaWYgKCFkcmFnSW1hZ2UpIHsKICAgICAgICAgICAgIGRyYWdJ
bWFnZSA9IERyYWdJbWFnZSB7IGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihjcmVhdGVEcmFn
SW1hZ2VGb3JTZWxlY3Rpb24oc3JjKSwgRHJhZ0ltYWdlQWxwaGEpIH07CiAgICAgICAgICAgICBk
cmFnTG9jID0gZHJhZ0xvY0ZvclNlbGVjdGlvbkRyYWcoc3JjKTsKKyAgICAgICAgICAgIGRyYWdJ
bWFnZUFuY2hvclBvaW50ID0gZHJhZ0ltYWdlQW5jaG9yUG9pbnRGb3JTZWxlY3Rpb25EcmFnKHNy
YywgbW91c2VEcmFnZ2VkUG9pbnQpOwogICAgICAgICAgICAgbV9kcmFnT2Zmc2V0ID0gSW50UG9p
bnQoZHJhZ09yaWdpbi54KCkgLSBkcmFnTG9jLngoKSwgZHJhZ09yaWdpbi55KCkgLSBkcmFnTG9j
LnkoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWRyYWdJbWFnZSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICBkb1N5c3RlbURyYWcoV1RGTW92ZShkcmFnSW1hZ2Up
LCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBkcmFnSW1hZ2VCb3VuZHMsIGRhdGFUcmFuc2Zlciwgc3Jj
LCBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKTsKKyAgICAgICAgaWYgKG11c3RVc2VMZWdhY3lE
cmFnQ2xpZW50KSB7CisgICAgICAgICAgICBkb1N5c3RlbURyYWcoV1RGTW92ZShkcmFnSW1hZ2Up
LCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBkcmFnSW1hZ2VCb3VuZHMsIGRhdGFUcmFuc2Zlciwgc3Jj
LCBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisKKyAgICAgICAgRHJhZ0l0ZW0gZHJhZ0l0ZW07CisgICAgICAgIGRyYWdJdGVt
LmltYWdlID0gV1RGTW92ZShkcmFnSW1hZ2UpOworICAgICAgICBkcmFnSXRlbS5pbWFnZUFuY2hv
clBvaW50ID0gZHJhZ0ltYWdlQW5jaG9yUG9pbnQ7CisgICAgICAgIGRyYWdJdGVtLmRhdGEgPSBX
VEZNb3ZlKHBhc3RlYm9hcmRXcml0ZXJEYXRhKTsKKworICAgICAgICBiZWdpbkRyYWcoV1RGTW92
ZShkcmFnSXRlbSksIHNyYywgZHJhZ09yaWdpbiwgbW91c2VEcmFnZ2VkUG9pbnQsIGRhdGFUcmFu
c2ZlciwgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbik7CisKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCkBAIC0xMDA3LDYgKzEwNDMsMjcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZG9J
bWFnZURyYWcoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIGMK
ICAgICBkb1N5c3RlbURyYWcoV1RGTW92ZShkcmFnSW1hZ2UpLCBkcmFnSW1hZ2VPZmZzZXQsIGRy
YWdPcmlnaW4sIGVsZW1lbnQuYm91bmRzSW5Sb290Vmlld1NwYWNlKCksIGRhdGFUcmFuc2Zlciwg
ZnJhbWUsIERyYWdTb3VyY2VBY3Rpb25JbWFnZSk7CiB9CiAKK3ZvaWQgRHJhZ0NvbnRyb2xsZXI6
OmJlZ2luRHJhZyhEcmFnSXRlbSBkcmFnSXRlbSwgRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRQb2lu
dCYgbW91c2VEb3duUG9pbnQsIGNvbnN0IEludFBvaW50JiBtb3VzZURyYWdnZWRQb2ludCwgRGF0
YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIERyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlv
bikKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50LnVzZUxlZ2FjeURyYWdDbGllbnQoKSk7CisKKyAg
ICBtX2RpZEluaXRpYXRlRHJhZyA9IHRydWU7CisgICAgbV9kcmFnSW5pdGlhdG9yID0gZnJhbWUu
ZG9jdW1lbnQoKTsKKworICAgIC8vIFByb3RlY3QgdGhpcyBmcmFtZSBhbmQgdmlldywgYXMgYSBs
b2FkIG1heSBvY2N1ciBtaWQgZHJhZyBhbmQgYXR0ZW1wdCB0byB1bmxvYWQgdGhpcyBmcmFtZQor
ICAgIFJlZjxNYWluRnJhbWU+IGZyYW1lUHJvdGVjdG9yKG1fcGFnZS5tYWluRnJhbWUoKSk7Cisg
ICAgUmVmUHRyPEZyYW1lVmlldz4gdmlld1Byb3RlY3RvciA9IGZyYW1lUHJvdGVjdG9yLT52aWV3
KCk7CisKKyAgICBtX2NsaWVudC5iZWdpbkRyYWcoV1RGTW92ZShkcmFnSXRlbSksIGZyYW1lLCBt
b3VzZURvd25Qb2ludCwgbW91c2VEcmFnZ2VkUG9pbnQsIGRhdGFUcmFuc2ZlciwgZHJhZ1NvdXJj
ZUFjdGlvbik7CisKKyAgICAvLyBEcmFnQ2xpZW50OjpiZWdpbkRyYWcgY2FuIGNhdXNlIHRoZSBk
cmFnIGNvbnRyb2xsZXIgdG8gYmUgZGVsZXRlZC4KKyAgICBpZiAoIWZyYW1lUHJvdGVjdG9yLT5w
YWdlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZG4ndCBi
ZSBuZWVkZWQuCisgICAgY2xlYW51cEFmdGVyU3lzdGVtRHJhZygpOworfQorCiB2b2lkIERyYWdD
b250cm9sbGVyOjpkb1N5c3RlbURyYWcoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYg
ZHJhZ0xvYywgY29uc3QgSW50UG9pbnQmIGV2ZW50UG9zLCBjb25zdCBJbnRSZWN0JiBkcmFnSW1h
Z2VCb3VuZHMsIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYgZnJhbWUsIERyYWdT
b3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbikKIHsKICAgICBGbG9hdFBvaW50IGRyYWdJbWFn
ZUFuY2hvciA9IHsgMC41LCAwLjUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaApp
bmRleCBkM2MyMDkxNDk2MDIwZWQ1MjY5YTJjZmRmZWI4ZmIzNTYxMGYzMzIxLi42N2M0OGU0MjU0
YTJiNGM1ZTg2Y2NkYWVlYTQwYTAwNDU5ZDE2MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5oCkBAIC0zMywxOSArMzMsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0g
ICAgY2xhc3MgRGF0YVRyYW5zZmVyOwotICAgIGNsYXNzIERvY3VtZW50OwotICAgIGNsYXNzIERy
YWdDbGllbnQ7Ci0gICAgY2xhc3MgRHJhZ0RhdGE7Ci0gICAgY2xhc3MgRWxlbWVudDsKLSAgICBj
bGFzcyBGcmFtZTsKLSAgICBjbGFzcyBGcmFtZVNlbGVjdGlvbjsKLSAgICBjbGFzcyBIVE1MSW5w
dXRFbGVtZW50OwotICAgIGNsYXNzIEludFJlY3Q7Ci0gICAgY2xhc3MgUGFnZTsKLSAgICBjbGFz
cyBQbGF0Zm9ybU1vdXNlRXZlbnQ7Ci0KLSAgICBzdHJ1Y3QgRHJhZ1N0YXRlOworY2xhc3MgRGF0
YVRyYW5zZmVyOworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBEcmFnQ2xpZW50OworY2xhc3MgRHJh
Z0RhdGE7CitjbGFzcyBFbGVtZW50OworY2xhc3MgRnJhbWU7CitjbGFzcyBGcmFtZVNlbGVjdGlv
bjsKK2NsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgUGFnZTsK
K2NsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKKworc3RydWN0IERyYWdJdGVtOworc3RydWN0IERy
YWdTdGF0ZTsKIAogICAgIGNsYXNzIERyYWdDb250cm9sbGVyIHsKICAgICAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoRHJhZ0NvbnRyb2xsZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAg
LTExMyw2ICsxMTQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBkb0lt
YWdlRHJhZyhFbGVtZW50JiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRSZWN0JiwgRGF0YVRy
YW5zZmVyJiwgRnJhbWUmLCBJbnRQb2ludCYpOwogICAgICAgICB2b2lkIGRvU3lzdGVtRHJhZyhE
cmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRSZWN0
JiBkcmFnSW1hZ2VCb3VuZHMsIERhdGFUcmFuc2ZlciYsIEZyYW1lJiwgRHJhZ1NvdXJjZUFjdGlv
bik7CisKKyAgICAgICAgdm9pZCBiZWdpbkRyYWcoRHJhZ0l0ZW0sIEZyYW1lJiwgY29uc3QgSW50
UG9pbnQmIG1vdXNlRG93blBvaW50LCBjb25zdCBJbnRQb2ludCYgbW91c2VEcmFnZ2VkUG9pbnQs
IERhdGFUcmFuc2ZlciYsIERyYWdTb3VyY2VBY3Rpb24pOworCiAgICAgICAgIHZvaWQgY2xlYW51
cEFmdGVyU3lzdGVtRHJhZygpOwogICAgICAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFn
ZShEYXRhVHJhbnNmZXImLCBFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJl
bCk7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFn
SXRlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg3MTMxZTEyMmYwN2ZhODQxZTA1OTBhZjE5YTllNjIyYmM0Nzkz
ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSXRlbS5o
CkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkRyYWdJbWFnZS5oIgorI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRlICJQYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBEcmFnSXRl
bSBmaW5hbCB7CisgICAgRHJhZ0ltYWdlIGltYWdlOworCisgICAgLy8gV2hlcmUgdGhlIGltYWdl
IHNob3VsZCBiZSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBjdXJzb3IuCisgICAgRmxvYXRQ
b2ludCBpbWFnZUFuY2hvclBvaW50OworCisgICAgUGFzdGVib2FyZFdyaXRlckRhdGEgZGF0YTsK
K307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkV3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRl
ci5oCmluZGV4IDA2NTIyYzZkYTZmZmM0NGRhNzA5NDBkOWExYTQzMzE5ZmNhODM4NzkuLjM3OGQ3
NDRkYWY4OTE0YzZkYmU2N2JkNzFmZDkxZTk1ZjUyMTJiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRhOwogCi1XRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8aWQgPE5TUGFzdGVib2FyZFdyaXRpbmc+PiBjcmVhdGVQYXN0ZWJv
YXJkV3JpdGluZyhjb25zdCBQYXN0ZWJvYXJkV3JpdGVyRGF0YSYpOworV0VCQ09SRV9FWFBPUlQg
UmV0YWluUHRyPGlkIDxOU1Bhc3RlYm9hcmRXcml0aW5nPj4gY3JlYXRlUGFzdGVib2FyZFdyaXRl
cihjb25zdCBQYXN0ZWJvYXJkV3JpdGVyRGF0YSYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KaW5kZXggNGM1ZjJhYzU5ZDZjZGQ0
MGE5NTRhMTlhYjM1MTMyN2UzNTA4MzFhYy4uM2ExODE2NWUxMzk1NTQ0NGRlNDRiY2VkZDU5NGEz
MGZkMDI5MTUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRXcml0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRXcml0ZXIubW0KQEAgLTMzLDE0ICszMywxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJldGFpblB0cjxpZCA8TlNQYXN0ZWJvYXJkV3JpdGluZz4+IGNyZWF0ZVBhc3RlYm9hcmRXcml0
aW5nKGNvbnN0IFBhc3RlYm9hcmRXcml0ZXJEYXRhJiBkYXRhKQorUmV0YWluUHRyPGlkIDxOU1Bh
c3RlYm9hcmRXcml0aW5nPj4gY3JlYXRlUGFzdGVib2FyZFdyaXRlcihjb25zdCBQYXN0ZWJvYXJk
V3JpdGVyRGF0YSYgZGF0YSkKIHsKICAgICBhdXRvIHBhc3RlYm9hcmRJdGVtID0gYWRvcHROUyhb
W05TUGFzdGVib2FyZEl0ZW0gYWxsb2NdIGluaXRdKTsKIAogICAgIGlmIChhdXRvJiBwbGFpblRl
eHQgPSBkYXRhLnBsYWluVGV4dCgpKSB7CiAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJp
bmc6cGxhaW5UZXh0LT50ZXh0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107Ci0gICAg
ICAgIGlmIChwbGFpblRleHQtPmNhblNtYXJ0Q29weU9yRGVsZXRlKQotICAgICAgICAgICAgW3Bh
c3RlYm9hcmRJdGVtIHNldERhdGE6bmlsIGZvclR5cGU6X05YU21hcnRQYXN0ZV07CisgICAgICAg
IGlmIChwbGFpblRleHQtPmNhblNtYXJ0Q29weU9yRGVsZXRlKSB7CisgICAgICAgICAgICBhdXRv
IHNtYXJ0UGFzdGVUeXBlID0gYWRvcHROUygoX19icmlkZ2UgTlNTdHJpbmcgKilVVFR5cGVDcmVh
dGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBlLCAoX19i
cmlkZ2UgQ0ZTdHJpbmdSZWYpX05YU21hcnRQYXN0ZSwgbnVsbHB0cikpOworICAgICAgICAgICAg
W3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6bmlsIGZvclR5cGU6c21hcnRQYXN0ZVR5cGUuZ2V0KCld
OworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IGI2
ZGM4NTUxZmI4ZTRkMTdiNzJiM2ViYWYzOGVhZDBmYzM2ZGZjYjIuLmZhNDRhN2Y2NWU4Mzk3NDEw
ODJiMjVmMjhjMTZiNGMyOGE5ZWU4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKQEAgLTMyLDEyICszMiwxOCBAQAogY2xhc3MgV2Vi
RHJhZ0NsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEcmFnQ2xpZW50IHsKIHB1YmxpYzoKICAgICBX
ZWJEcmFnQ2xpZW50KFdlYlZpZXcqKTsKKworICAgIGJvb2wgdXNlTGVnYWN5RHJhZ0NsaWVudCgp
IG92ZXJyaWRlOworCiAgICAgdm9pZCB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihX
ZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oV2ViQ29yZTo6
RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpEYXRh
VHJhbnNmZXImKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24g
YWN0aW9uTWFza0ZvckRyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRyYWdDb250cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6
RHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiB3aW5kb3dQb2ludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdGFydERyYWco
V2ViQ29yZTo6RHJhZ0ltYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZHJhZ1BvcywgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIGV2ZW50UG9zLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJiwgV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpEcmFn
U291cmNlQWN0aW9uKSBvdmVycmlkZTsKKworICAgIHZvaWQgYmVnaW5EcmFnKFdlYkNvcmU6OkRy
YWdJdGVtLCBXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtb3VzZURv
d25Qb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1vdXNlRHJhZ2dlZFBvc2l0aW9u
LCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uKSBvdmVy
cmlkZTsKKwogICAgIHZvaWQgZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwogI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCBkZWNsYXJlQW5kV3JpdGVBdHRhY2htZW50KGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQpp
bmRleCBiMDIyYmNhZWQ3NjY2YzkzODRmNzE5ODdiZjU1Y2Q3NmM3ZjgwNDg4Li5mYzk5ZTFiMGM2
ZDc0MjMyMGM2NWFhZDYwNWIzYTc2MWNhZTAzZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KQEAgLTMyLDggKzMyLDggQEAKICNp
bXBvcnQgIldlYkRPTU9wZXJhdGlvbnMuaCIKICNpbXBvcnQgIldlYkZyYW1lLmgiCiAjaW1wb3J0
ICJXZWJGcmFtZUludGVybmFsLmgiCisjaW1wb3J0ICJXZWJGcmFtZVZpZXcuaCIKICNpbXBvcnQg
IldlYkhUTUxWaWV3SW50ZXJuYWwuaCIKLSNpbXBvcnQgIldlYkhUTUxWaWV3UHJpdmF0ZS5oIgog
I2ltcG9ydCAiV2ViS2l0TG9nZ2luZy5oIgogI2ltcG9ydCAiV2ViS2l0TlNTdHJpbmdFeHRyYXMu
aCIKICNpbXBvcnQgIldlYk5TVVJMRXh0cmFzLmgiCkBAIC01NSw2ICs1NSw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZFdyaXRl
ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNjYsNiArNjcsMTEgQEAgV2Vi
RHJhZ0NsaWVudDo6V2ViRHJhZ0NsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogCiAjaWYgUExBVEZP
Uk0oTUFDKQogCitib29sIFdlYkRyYWdDbGllbnQ6OnVzZUxlZ2FjeURyYWdDbGllbnQoKQorewor
ICAgIHJldHVybiBmYWxzZTsKK30KKwogc3RhdGljIFdlYkhUTUxWaWV3ICpnZXRUb3BIVE1MVmll
dyhGcmFtZSogZnJhbWUpCiB7CiAgICAgQVNTRVJUKGZyYW1lKTsKQEAgLTEzMCw2ICsxMzYsMjUg
QEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0ltYWdlIGRyYWdJbWFnZSwgY29u
c3QgSW50UG9pbnQmIGF0LCBjb25zdCBJbnQKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AK
IH0KIAordm9pZCBXZWJEcmFnQ2xpZW50OjpiZWdpbkRyYWcoRHJhZ0l0ZW0gZHJhZ0l0ZW0sIEZy
YW1lJiBmcmFtZSwgY29uc3QgSW50UG9pbnQmIG1vdXNlRG93blBvc2l0aW9uLCBjb25zdCBJbnRQ
b2ludCYgbW91c2VEcmFnZ2VkUG9zaXRpb24sIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBE
cmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb24pCit7CisgICAgQVNTRVJUKCFkYXRhVHJh
bnNmZXIucGFzdGVib2FyZCgpLmhhc0RhdGEoKSk7CisKKyAgICBSZXRhaW5QdHI8V2ViSFRNTFZp
ZXc+IHRvcFdlYkhUTUxWaWV3ID0gZHluYW1pY19vYmpjX2Nhc3Q8V2ViSFRNTFZpZXc+KG1fd2Vi
Vmlldy5tYWluRnJhbWUuZnJhbWVWaWV3LmRvY3VtZW50Vmlldyk7CisgICAgQVNTRVJUKHRvcFdl
YkhUTUxWaWV3KTsKKworICAgIGF1dG8gZHJhZ2dpbmdJdGVtID0gYWRvcHROUyhbW05TRHJhZ2dp
bmdJdGVtIGFsbG9jXSBpbml0V2l0aFBhc3RlYm9hcmRXcml0ZXI6Y3JlYXRlUGFzdGVib2FyZFdy
aXRlcihkcmFnSXRlbS5kYXRhKS5nZXQoKV0pOworCisgICAgTlNTaXplIGRyYWdJbWFnZVNpemUg
PSBbZHJhZ0l0ZW0uaW1hZ2UuZ2V0KCkgc2l6ZV07CisKKyAgICBOU1JlY3QgZHJhZ2dpbmdGcmFt
ZSA9IE5TTWFrZVJlY3QobW91c2VEcmFnZ2VkUG9zaXRpb24ueCgpIC0gZHJhZ0ltYWdlU2l6ZS53
aWR0aCAqIGRyYWdJdGVtLmltYWdlQW5jaG9yUG9pbnQueCgpLCBtb3VzZURyYWdnZWRQb3NpdGlv
bi55KCkgLSBkcmFnSW1hZ2VTaXplLmhlaWdodCAqIGRyYWdJdGVtLmltYWdlQW5jaG9yUG9pbnQu
eSgpLCBkcmFnSW1hZ2VTaXplLndpZHRoLCBkcmFnSW1hZ2VTaXplLmhlaWdodCk7CisgICAgW2Ry
YWdnaW5nSXRlbSBzZXREcmFnZ2luZ0ZyYW1lOmRyYWdnaW5nRnJhbWUgY29udGVudHM6ZHJhZ0l0
ZW0uaW1hZ2UuZ2V0KCkuZ2V0KCldOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxl
IHRvIG1ha2UgYSBmYWtlIGV2ZW50IHdpdGggdGhlIG1vc3VlIGRyYWdnZWQgY29vcmRpbmF0ZXMu
CisgICAgTlNFdmVudCAqZXZlbnQgPSBmcmFtZS5ldmVudEhhbmRsZXIoKS5jdXJyZW50TlNFdmVu
dCgpOworICAgIFt0b3BXZWJIVE1MVmlldy5nZXQoKSBiZWdpbkRyYWdnaW5nU2Vzc2lvbldpdGhJ
dGVtczpAWyBkcmFnZ2luZ0l0ZW0uZ2V0KCkgXSBldmVudDpldmVudCBzb3VyY2U6dG9wV2ViSFRN
TFZpZXcuZ2V0KCldOworfQorCiB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgV2ViQ29yZTo6RnJhbWUqIGZyYW1l
KQogewogICAgIEFTU0VSVChwYXN0ZWJvYXJkTmFtZSk7CkBAIC0xNDcsNiArMTcyLDEwIEBAIHZv
aWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlQXR0YWNobWVudChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBFbGVtCiAKICNlbHNlCiAKK2Jvb2wgV2ViRHJhZ0NsaWVudDo6dXNl
TGVnYWN5RHJhZ0NsaWVudCgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQogV2ViQ29yZTo6RHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uIFdlYkRyYWdDbGllbnQ6OmFjdGlvbk1hc2tGb3JEcmFnKGNvbnN0
IFdlYkNvcmU6OkRyYWdEYXRhJikKIHsKICAgICByZXR1cm4gRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
Tm9uZTsKQEAgLTE2OSw2ICsxOTgsMTAgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWco
V2ViQ29yZTo6RHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFBvaW4KIHsKIH0K
IAordm9pZCBXZWJEcmFnQ2xpZW50OjpiZWdpbkRyYWcoRHJhZ0l0ZW0sIEZyYW1lJiwgY29uc3Qg
SW50UG9pbnQmLCBjb25zdCBJbnRQb2ludCYsIERhdGFUcmFuc2ZlciYsIERyYWdTb3VyY2VBY3Rp
b24pCit7Cit9CisKIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdl
KGNvbnN0IFN0cmluZyYsIEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBXZWJD
b3JlOjpGcmFtZSopCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQppbmRleCA4NDU3NjU2YTZhYzY0NDQ3YzYwZDVkN2QzYmE5MmFhZDJkMTkwMzNmLi5kZWUwMzI0
OTVlNjg4MzkwNzYyMDYzNjU2YjdkMmZiOWRjZTE4M2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTQ2OTEsNiArNDY5MSw0MiBAQCBzdGF0aWMgYm9vbCBt
YXRjaGVzRXh0ZW5zaW9uT3JFcXVpdmFsZW50KE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcg
KmV4dGVuc2lvbgogICAgIAogICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6W3Bh
dGggbGFzdFBhdGhDb21wb25lbnRdXTsKIH0KKworLy8gTUFSSzogTlNEcmFnZ2luZ1NvdXJjZQor
CistIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdTZXNzaW9uOihOU0RyYWdnaW5nU2Vzc2lvbiAq
KXNlc3Npb24gc291cmNlT3BlcmF0aW9uTWFza0ZvckRyYWdnaW5nQ29udGV4dDooTlNEcmFnZ2lu
Z0NvbnRleHQpY29udGV4dAoreworICAgIEFTU0VSVCghW3NlbGYgX3dlYlZpZXddIHx8IFtzZWxm
IF9pc1RvcEhUTUxWaWV3XSk7CisKKyAgICBQYWdlKiBwYWdlID0gY29yZShbc2VsZiBfd2ViVmll
d10pOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7
CisKKyAgICByZXR1cm4gKE5TRHJhZ09wZXJhdGlvbilwYWdlLT5kcmFnQ29udHJvbGxlcigpLnNv
dXJjZURyYWdPcGVyYXRpb24oKTsKK30KKworLSAodm9pZClkcmFnZ2luZ1Nlc3Npb246KE5TRHJh
Z2dpbmdTZXNzaW9uICopc2Vzc2lvbiBlbmRlZEF0UG9pbnQ6KE5TUG9pbnQpc2NyZWVuUG9pbnQg
b3BlcmF0aW9uOihOU0RyYWdPcGVyYXRpb24pb3BlcmF0aW9uCit7CisgICAgQVNTRVJUKCFbc2Vs
ZiBfd2ViVmlld10gfHwgW3NlbGYgX2lzVG9wSFRNTFZpZXddKTsKKworICAgIE5TUG9pbnQgd2lu
ZG93TG9jYXRpb24gPSBbc2VsZi53aW5kb3cgY29udmVydFJlY3RGcm9tU2NyZWVuOnsgc2NyZWVu
UG9pbnQsIE5TWmVyb1NpemUgfV0ub3JpZ2luOworCisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3Jl
KFtzZWxmIF93ZWJWaWV3XSkpCisgICAgICAgIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0Vu
ZGVkKCk7CisKKyAgICBbW3NlbGYgX2ZyYW1lXSBfZHJhZ1NvdXJjZUVuZGVkQXQ6d2luZG93TG9j
YXRpb24gb3BlcmF0aW9uOm9wZXJhdGlvbl07CisKKyAgICAvLyBQcmV2ZW50IHF1ZXVlZCBtb3Vz
ZURyYWdnZWQgZXZlbnRzIGZyb20gY29taW5nIGFmdGVyIHRoZSBkcmFnIGFuZCBmYWtlIG1vdXNl
VXAgZXZlbnQuCisgICAgX3ByaXZhdGUtPmlnbm9yaW5nTW91c2VEcmFnZ2VkRXZlbnRzID0gWUVT
OworCisgICAgLy8gT25jZSB0aGUgZHJhZ2dpbmcgbWFjaGluZXJ5IGtpY2tzIGluLCB3ZSBubyBs
b25nZXIgZ2V0IG1vdXNlIGRyYWdzIG9yIHRoZSB1cCBldmVudC4KKyAgICAvLyBXZWJDb3JlIGV4
cGVjdHMgdG8gZ2V0IGJhbGFuY2VkIGRvd24vdXAncywgc28gd2UgbXVzdCBmYWtlIHVwIGEgbW91
c2V1cC4KKyAgICBOU0V2ZW50ICpmYWtlRXZlbnQgPSBbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5
cGU6TlNFdmVudFR5cGVMZWZ0TW91c2VVcCBsb2NhdGlvbjp3aW5kb3dMb2NhdGlvbiBtb2RpZmll
ckZsYWdzOltOU0FwcCBjdXJyZW50RXZlbnRdLm1vZGlmaWVyRmxhZ3MgdGltZXN0YW1wOltOU0Rh
dGUgdGltZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRlXSB3aW5kb3dOdW1iZXI6c2VsZi53aW5k
b3cuIHdpbmRvd051bWJlciBjb250ZXh0Om51bGxwdHIgZXZlbnROdW1iZXI6MCBjbGlja0NvdW50
OjAgcHJlc3N1cmU6MF07CisKKyAgICAvLyBUaGlzIHdpbGwgYWxzbyB1cGRhdGUgdGhlIG1vdXNl
b3ZlciBzdGF0ZS4KKyAgICBbc2VsZiBtb3VzZVVwOmZha2VFdmVudF07Cit9CisKICNlbmRpZiAv
LyBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShNQUMpCiAKICNpZiAhUExBVEZPUk0o
SU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlld0lu
dGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwu
aAppbmRleCBlNWJiMWVjYzFkMDJkMjRkNTBmM2I5MmY4OTIxZDUyYWI4NjI5ZjNhLi5hNGQ5Y2Q5
MzhiMWFhMjczMzM2Yzk0ZTdmNjhiMTE1OTE5ODM5ZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwuaApAQCAtMzgsNiArMzgsMTEgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiB9CiAKKyNpZiBQTEFU
Rk9STShNQUMpCitAaW50ZXJmYWNlIFdlYkhUTUxWaWV3ICgpIDxOU0RyYWdnaW5nU291cmNlPgor
QGVuZAorI2VuZGlmCisKIEBpbnRlcmZhY2UgV2ViSFRNTFZpZXcgKFdlYkludGVybmFsKQogLSAo
dm9pZClfc2VsZWN0aW9uQ2hhbmdlZDsKICNpZiAhUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIzODkzNzJmYzQxMzE2YmQw
MjZhYjk4MDhmNWJlYmVlZGIyMTcxNWEuLmRhNDkzZTg5NTQzM2EyYTY5Y2FiOTQwMzkxMWVhMDkx
MTk2ZjM3ZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNy0wMi0xNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIG5ldyBkcmFnIGNvZGUgcGF0aCBhbmQgdXNl
IGl0IGZvciBkcmFnZ2luZyBwbGFpbiB0ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGhlIHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgdG8g
aGFuZGxlIE5TRHJhZ2dpbmdTZXNzaW9uLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tOiBSZW5hbWVkIGZyb20gVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tLgorICAgICAg
ICAoLVtMb2NhbFBhc3RlYm9hcmQgd3JpdGVPYmplY3RzOl0pOgorICAgICAgICBJbXBsZW1lbnQg
dGhpcyBpbiB0ZXJtcyBvZiB0aGUgbGVnYWN5IHBhc3RlYm9hcmQgQVBJLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06CisgICAgICAgIChk
cnRfV2ViSFRNTFZpZXdfYmVnaW5EcmFnZ2luZ1Nlc3Npb25XaXRoSXRlbXNFdmVudFNvdXJjZSk6
CisgICAgICAgICgrW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgaW5pdGlhbGl6ZV0pOgorICAgICAg
ICBTd2l6emxlIHRoZSBkcmFnIG1ldGhvZCBpbnN0ZWFkIG9mIGFkZGluZyBhIGRlbGVnYXRlIG1l
dGhvZCAobGlrZSB0aGUgb2xkIGNvZGUgZG9lcykuCisKIDIwMTctMDItMTcgIEFha2FzaCBKYWlu
ICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0b29scyB0aGF0IHdlcmUg
YnJva2VuIGJ5IEVmbCByZW1vdmFsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9E
dW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNjhk
ZDM1NDA4ZmQ3ZTY1MTg0YjhmNTg2MTE5M2NlY2ZlNTM5NzcwLi43ZWVjZTA4YjlmOWQ0MjdmMTkz
OTQzOTdjMjhlZjlhYzBkNzlhYzk2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9E
dW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEw
OSw3ICsxMDksNyBAQAogCQlBMTE1OEQ1OTE4OTI3NDM2MDA4OEMxN0IgLyogUGl4ZWxEdW1wU3Vw
cG9ydElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMTU4RDU3MTg5MjczRUIwMDg4QzE3QiAvKiBQaXhlbER1bXBTdXBwb3J0SU9TLm1tICovOyB9
OwogCQlBMTM0RTUzMTE4OEZDMjcwMDA5MDFEMDYgLyogRHVtcFJlbmRlclRyZWVNYWluLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEzNEU1MkYxODhG
QzI3MDAwOTAxRDA2IC8qIER1bXBSZW5kZXJUcmVlTWFpbi5tbSAqLzsgfTsKIAkJQTEzNEU1MzYx
ODkwNUVGRjAwOTAxRDA2IC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzBFMjYxNDBFMkRBNEM2MDAxQjZC
QzMgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSAqLzsgfTsKLQkJQThCOTFBREEwQ0YzQjMy
RjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThCOTFBRDcwQ0YzQjMyRjAwOEY5MUZGIC8q
IER1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tICovOyB9OworCQlBOEI5MUFEQTBDRjNCMzJGMDA4
RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThCOTFBRDcwQ0YzQjMyRjAwOEY5MUZGIC8qIER1
bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbSAqLzsgfTsKIAkJQThCOTFBREMwQ0YzQjMyRjAwOEY5
MUZGIC8qIER1bXBSZW5kZXJUcmVlV2luZG93Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThCOTFBRDkwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5k
ZXJUcmVlV2luZG93Lm1tICovOyB9OwogCQlBOEQ3OUNFQjBGQzI4QjJDMDA0QUM4RkUgLyogRHVt
cFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdTb3VyY2UubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RDc5Q0U5MEZDMjhCMkMwMDRBQzhGRSAvKiBEdW1wUmVu
ZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5tICovOyB9OwogCQlBOUJCN0M1QzFDNTA1Mjc4MDAy
QzUyNUIgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOUJCN0M1QjFDNTA1Mjc4MDAyQzUyNUIgLyog
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0gKi87IH07CkBAIC0zNDMsNyArMzQzLDcgQEAK
IAkJQTgwM0ZGNzQwOUNBQUQwODAwOUIyQTM3IC8qIER1bXBSZW5kZXJUcmVlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7
IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBEdW1wUmVuZGVyVHJlZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBODE3MDkwMzA4QjE2NEQzMDBDQ0I5RkIgLyogSmF2YVNjcmlwdENv
cmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcms7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUE4NEY2MDg5MDhCMTM2REEw
MEU5NzQ1RiAvKiBDb2NvYS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENvY29hLmZyYW1l
d29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvY29hLmZyYW1ld29yazsg
c291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKLQkJQThCOTFBRDcwQ0YzQjMyRjAwOEY5MUZG
IC8qIER1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9i
amM7IG5hbWUgPSBEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubTsgcGF0aCA9IG1hYy9EdW1wUmVu
ZGVyVHJlZVBhc3RlYm9hcmQubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThCOTFB
RDcwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IER1bXBSZW5kZXJUcmVlUGFzdGVib2Fy
ZC5tbTsgcGF0aCA9IG1hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE4QjkxQUQ5MENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVy
VHJlZVdpbmRvdy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IER1
bXBSZW5kZXJUcmVlV2luZG93Lm1tOyBwYXRoID0gbWFjL0R1bXBSZW5kZXJUcmVlV2luZG93Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEI5MUFERDBDRjNCMzcyMDA4RjkxRkYg
LyogRHVtcFJlbmRlclRyZWVXaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gRHVtcFJlbmRlclRyZWVXaW5kb3cuaDsgcGF0aCA9IG1hYy9EdW1wUmVuZGVyVHJlZVdpbmRv
dy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEI5MUFERjBDRjNCMzcyMDA4Rjkx
RkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IER1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5oOyBwYXRoID0gbWFjL0R1bXBSZW5k
ZXJUcmVlUGFzdGVib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzgwLDcg
Kzc4MCw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUE4Qjkx
QURGMENGM0IzNzIwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQuaCAqLywKLQkJ
CQlBOEI5MUFENzBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm0g
Ki8sCisJCQkJQThCOTFBRDcwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlUGFzdGVi
b2FyZC5tbSAqLywKIAkJCQkyREEyRTNBMzFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRy
ZWVTcGVsbENoZWNrZXIuaCAqLywKIAkJCQkyREEyRTNBNDFFMUJBNTQxMDBBM0JCRDAgLyogRHVt
cFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gKi8sCiAJCQkJQThCOTFBREQwQ0YzQjM3MjAwOEY5
MUZGIC8qIER1bXBSZW5kZXJUcmVlV2luZG93LmggKi8sCkBAIC0xMTExLDcgKzExMTEsNyBAQAog
CQkJCTk4MzBGMzFGMTVDODExODEwMDVBQjIwNiAvKiBEdW1wUmVuZGVyVHJlZUNvbW1vbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI3QjBDOUIwOEYxMDAxMTQzNjkgLyogRHVtcFJlbmRl
clRyZWVEcmFnZ2luZ0luZm8ubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEQ3OUNFQjBGQzI4QjJD
MDA0QUM4RkUgLyogRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdTb3VyY2UubSBpbiBTb3VyY2Vz
ICovLAotCQkJCUE4QjkxQURBMENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVBhc3Rl
Ym9hcmQubSBpbiBTb3VyY2VzICovLAorCQkJCUE4QjkxQURBMENGM0IzMkYwMDhGOTFGRiAvKiBE
dW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEI5MUFEQzBD
RjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVXaW5kb3cubW0gaW4gU291cmNlcyAqLywK
IAkJCQlCQ0ExOEI2MjBDOUIwOEMyMDAxMTQzNjkgLyogRWRpdGluZ0RlbGVnYXRlLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNBMThCNzAwQzlCMDhEQjAwMTE0MzY5IC8qIEV2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNDJiMWU2NTNmNmM0YzY0MGQzZWZkMzcxNWM1NjY5NzU5ZDRlODYxYS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm0KKysrIC9kZXYvbnVsbApAQCAtMSwyMTgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICAgICAgICAgICAoQykgMjAwNyBHcmFoYW0gRGVu
bmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKLSAqICAgICAgICAgICAoQykgMjAwNyBFcmlj
IFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0g
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJEdW1wUmVuZGVy
VHJlZU1hYy5oIgotI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLmgiCi0KLSNpZiAh
UExBVEZPUk0oSU9TKQotCi0jaW1wb3J0IDxXZWJLaXQvV2ViVHlwZXNJbnRlcm5hbC5oPgotCi1A
aW50ZXJmYWNlIExvY2FsUGFzdGVib2FyZCA6IE5TUGFzdGVib2FyZAotewotICAgIE5TTXV0YWJs
ZUFycmF5ICp0eXBlc0FycmF5OwotICAgIE5TTXV0YWJsZVNldCAqdHlwZXNTZXQ7Ci0gICAgTlNN
dXRhYmxlRGljdGlvbmFyeSAqZGF0YUJ5VHlwZTsKLSAgICBOU0ludGVnZXIgY2hhbmdlQ291bnQ7
Ci0gICAgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lOwotfQotCi0tKGlkKWluaXRXaXRoTmFtZToo
TlNTdHJpbmcgKiluYW1lOwotQGVuZAotCi1zdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFyeSAqbG9j
YWxQYXN0ZWJvYXJkczsKLQotQGltcGxlbWVudGF0aW9uIER1bXBSZW5kZXJUcmVlUGFzdGVib2Fy
ZAotCi0vLyBSZXR1cm4gYSBsb2NhbCBwYXN0ZWJvYXJkIHNvIHdlIGRvbid0IGRpc3R1cmIgdGhl
IHJlYWwgcGFzdGVib2FyZHMgd2hlbiBydW5uaW5nIHRlc3RzLgotKyAoTlNQYXN0ZWJvYXJkICop
X3Bhc3RlYm9hcmRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgc3RhdGljIGludCBu
dW1iZXIgPSAwOwotICAgIGlmICghbmFtZSkKLSAgICAgICAgbmFtZSA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiTG9jYWxQYXN0ZWJvYXJkJWQiLCArK251bWJlcl07Ci0gICAgaWYgKCFs
b2NhbFBhc3RlYm9hcmRzKQotICAgICAgICBsb2NhbFBhc3RlYm9hcmRzID0gW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLSAgICBMb2NhbFBhc3RlYm9hcmQgKnBhc3RlYm9hcmQg
PSBbbG9jYWxQYXN0ZWJvYXJkcyBvYmplY3RGb3JLZXk6bmFtZV07Ci0gICAgaWYgKHBhc3RlYm9h
cmQpCi0gICAgICAgIHJldHVybiBwYXN0ZWJvYXJkOwotICAgIHBhc3RlYm9hcmQgPSBbW0xvY2Fs
UGFzdGVib2FyZCBhbGxvY10gaW5pdFdpdGhOYW1lOm5hbWVdOwotICAgIFtsb2NhbFBhc3RlYm9h
cmRzIHNldE9iamVjdDpwYXN0ZWJvYXJkIGZvcktleTpuYW1lXTsKLSAgICBbcGFzdGVib2FyZCBy
ZWxlYXNlXTsKLSAgICByZXR1cm4gcGFzdGVib2FyZDsKLX0KLQotKyAodm9pZClyZWxlYXNlTG9j
YWxQYXN0ZWJvYXJkcwotewotICAgIFtsb2NhbFBhc3RlYm9hcmRzIHJlbGVhc2VdOwotICAgIGxv
Y2FsUGFzdGVib2FyZHMgPSBuaWw7Ci19Ci0KLS8vIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgSlMg
c28gdGhhdCBpdCBkb2Vzbid0IGhhdmUgdG8gdHJ5IGFuZCBjcmVhdGUgYSBOU0FycmF5IG9uIHRo
ZSBvYmpjIHNpZGUgaW5zdGVhZAotLy8gb2YgdGhlIHVzdWFsIFdlYlNjcmlwdE9iamVjdCB0aGF0
IGlzIHBhc3NlZCBhcm91bmQKLS0gKE5TSW50ZWdlcilkZWNsYXJlVHlwZTooTlNTdHJpbmcgKil0
eXBlIG93bmVyOihpZCluZXdPd25lcgotewotICAgIHJldHVybiBbc2VsZiBkZWNsYXJlVHlwZXM6
W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OnR5cGVdIG93bmVyOm5ld093bmVyXTsKLX0KLQotQGVu
ZAotCi1AaW1wbGVtZW50YXRpb24gTG9jYWxQYXN0ZWJvYXJkCi0KLSsgKGlkKWFsbG9jCi17Ci0g
ICAgcmV0dXJuIE5TQWxsb2NhdGVPYmplY3Qoc2VsZiwgMCwgMCk7Ci19Ci0KLS0gKGlkKWluaXRX
aXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAg
ICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgdHlwZXNBcnJheSA9IFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAgIHR5cGVzU2V0ID0gW1tOU011dGFibGVTZXQg
YWxsb2NdIGluaXRdOwotICAgIGRhdGFCeVR5cGUgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxs
b2NdIGluaXRdOwotICAgIHBhc3RlYm9hcmROYW1lID0gW25hbWUgY29weV07Ci0gICAgcmV0dXJu
IHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFt0eXBlc0FycmF5IHJlbGVhc2Vd
OwotICAgIFt0eXBlc1NldCByZWxlYXNlXTsKLSAgICBbZGF0YUJ5VHlwZSByZWxlYXNlXTsKLSAg
ICBbcGFzdGVib2FyZE5hbWUgcmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0t
IChOU1N0cmluZyAqKW5hbWUKLXsKLSAgICByZXR1cm4gcGFzdGVib2FyZE5hbWU7Ci19Ci0KLS0g
KHZvaWQpcmVsZWFzZUdsb2JhbGx5Ci17Ci19Ci0KLS0gKE5TSW50ZWdlcilkZWNsYXJlVHlwZXM6
KE5TQXJyYXkgKiluZXdUeXBlcyBvd25lcjooaWQpbmV3T3duZXIKLXsKLSAgICBbdHlwZXNBcnJh
eSByZW1vdmVBbGxPYmplY3RzXTsKLSAgICBbdHlwZXNTZXQgcmVtb3ZlQWxsT2JqZWN0c107Ci0g
ICAgW2RhdGFCeVR5cGUgcmVtb3ZlQWxsT2JqZWN0c107Ci0gICAgcmV0dXJuIFtzZWxmIGFkZFR5
cGVzOm5ld1R5cGVzIG93bmVyOm5ld093bmVyXTsKLX0KLQotLSAoTlNJbnRlZ2VyKWFkZFR5cGVz
OihOU0FycmF5ICopbmV3VHlwZXMgb3duZXI6KGlkKW5ld093bmVyCi17Ci0gICAgdW5zaWduZWQg
Y291bnQgPSBbbmV3VHlwZXMgY291bnRdOwotICAgIHVuc2lnbmVkIGk7Ci0gICAgZm9yIChpID0g
MDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgTlNTdHJpbmcgKnR5cGUgPSBbbmV3VHlwZXMg
b2JqZWN0QXRJbmRleDppXTsKLSAgICAgICAgTlNTdHJpbmcgKnNldFR5cGUgPSBbdHlwZXNTZXQg
bWVtYmVyOnR5cGVdOwotICAgICAgICBpZiAoIXNldFR5cGUpIHsKLSAgICAgICAgICAgIHNldFR5
cGUgPSBbdHlwZSBjb3B5XTsKLSAgICAgICAgICAgIFt0eXBlc0FycmF5IGFkZE9iamVjdDpzZXRU
eXBlXTsKLSAgICAgICAgICAgIFt0eXBlc1NldCBhZGRPYmplY3Q6c2V0VHlwZV07Ci0gICAgICAg
ICAgICBbc2V0VHlwZSByZWxlYXNlXTsKLSAgICAgICAgfQotICAgICAgICBpZiAobmV3T3duZXIg
JiYgW25ld093bmVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFzdGVib2FyZDpwcm92
aWRlRGF0YUZvclR5cGU6KV0pCi0gICAgICAgICAgICBbbmV3T3duZXIgcGFzdGVib2FyZDpzZWxm
IHByb3ZpZGVEYXRhRm9yVHlwZTpzZXRUeXBlXTsKLSAgICB9Ci0gICAgcmV0dXJuICsrY2hhbmdl
Q291bnQ7Ci19Ci0KLS0gKE5TSW50ZWdlciljaGFuZ2VDb3VudAotewotICAgIHJldHVybiBjaGFu
Z2VDb3VudDsKLX0KLQotLSAoTlNBcnJheSAqKXR5cGVzCi17Ci0gICAgcmV0dXJuIHR5cGVzQXJy
YXk7Ci19Ci0KLS0gKE5TU3RyaW5nICopYXZhaWxhYmxlVHlwZUZyb21BcnJheTooTlNBcnJheSAq
KXR5cGVzCi17Ci0gICAgdW5zaWduZWQgY291bnQgPSBbdHlwZXMgY291bnRdOwotICAgIHVuc2ln
bmVkIGk7Ci0gICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgTlNTdHJp
bmcgKnR5cGUgPSBbdHlwZXMgb2JqZWN0QXRJbmRleDppXTsKLSAgICAgICAgTlNTdHJpbmcgKnNl
dFR5cGUgPSBbdHlwZXNTZXQgbWVtYmVyOnR5cGVdOwotICAgICAgICBpZiAoc2V0VHlwZSkKLSAg
ICAgICAgICAgIHJldHVybiBzZXRUeXBlOwotICAgIH0KLSAgICByZXR1cm4gbmlsOwotfQotCi0t
IChCT09MKXNldERhdGE6KE5TRGF0YSAqKWRhdGEgZm9yVHlwZTooTlNTdHJpbmcgKilkYXRhVHlw
ZQotewotICAgIGlmIChkYXRhID09IG5pbCkKLSAgICAgICAgZGF0YSA9IFtOU0RhdGEgZGF0YV07
Ci0gICAgaWYgKCFbdHlwZXNTZXQgY29udGFpbnNPYmplY3Q6ZGF0YVR5cGVdKQotICAgICAgICBy
ZXR1cm4gTk87Ci0gICAgW2RhdGFCeVR5cGUgc2V0T2JqZWN0OmRhdGEgZm9yS2V5OmRhdGFUeXBl
XTsKLSAgICArK2NoYW5nZUNvdW50OwotICAgIHJldHVybiBZRVM7Ci19Ci0KLS0gKE5TRGF0YSAq
KWRhdGFGb3JUeXBlOihOU1N0cmluZyAqKWRhdGFUeXBlCi17Ci0gICAgcmV0dXJuIFtkYXRhQnlU
eXBlIG9iamVjdEZvcktleTpkYXRhVHlwZV07Ci19Ci0KLS0gKEJPT0wpc2V0UHJvcGVydHlMaXN0
OihpZClwcm9wZXJ0eUxpc3QgZm9yVHlwZTooTlNTdHJpbmcgKilkYXRhVHlwZQotewotICAgIENG
RGF0YVJlZiBkYXRhID0gTlVMTDsKLSAgICBpZiAocHJvcGVydHlMaXN0KQotICAgICAgICBkYXRh
ID0gQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVYTUxEYXRhKE5VTEwsIHByb3BlcnR5TGlzdCk7Ci0gICAg
Qk9PTCByZXN1bHQgPSBbc2VsZiBzZXREYXRhOihOU0RhdGEgKilkYXRhIGZvclR5cGU6ZGF0YVR5
cGVdOwotICAgIGlmIChkYXRhKQotICAgICAgICBDRlJlbGVhc2UoZGF0YSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotLSAoQk9PTClzZXRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGZvclR5
cGU6KE5TU3RyaW5nICopZGF0YVR5cGUKLXsKLSAgICBDRkRhdGFSZWYgZGF0YSA9IE5VTEw7Ci0g
ICAgaWYgKHN0cmluZykgewotICAgICAgICBpZiAoW3N0cmluZyBsZW5ndGhdID09IDApCi0gICAg
ICAgICAgICBkYXRhID0gQ0ZEYXRhQ3JlYXRlKE5VTEwsIE5VTEwsIDApOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBkYXRhID0gQ0ZTdHJpbmdDcmVhdGVFeHRlcm5hbFJlcHJlc2VudGF0aW9u
KE5VTEwsIChDRlN0cmluZ1JlZilzdHJpbmcsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgMCk7Ci0g
ICAgfQotICAgIEJPT0wgcmVzdWx0ID0gW3NlbGYgc2V0RGF0YTooTlNEYXRhICopZGF0YSBmb3JU
eXBlOmRhdGFUeXBlXTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgQ0ZSZWxlYXNlKGRhdGEpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUBlbmQKLQotI2VuZGlmIC8vICFQTEFURk9STShJT1Mp
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0
ZWJvYXJkLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVi
b2FyZC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNTdiZjViMjVhNDZkYmI2YTZmYzZiZDhjMzBiMzE3NDk3Zjhi
MTBlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlUGFzdGVib2FyZC5tbQpAQCAtMCwwICsxLDIzOSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
ICAgICAgICAgICAoQykgMjAwNyBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNv
bSkKKyAqICAgICAgICAgICAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQuaCIKKworI2ltcG9y
dCAiRHVtcFJlbmRlclRyZWVNYWMuaCIKKworI2lmICFQTEFURk9STShJT1MpCisKKyNpbXBvcnQg
PFdlYktpdC9XZWJUeXBlc0ludGVybmFsLmg+CisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgor
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitAaW50ZXJmYWNlIExvY2FsUGFzdGVib2FyZCA6
IE5TUGFzdGVib2FyZCB7CisgICAgTlNNdXRhYmxlQXJyYXkgKnR5cGVzQXJyYXk7CisgICAgTlNN
dXRhYmxlU2V0ICp0eXBlc1NldDsKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpkYXRhQnlUeXBl
OworICAgIE5TSW50ZWdlciBjaGFuZ2VDb3VudDsKKyAgICBOU1N0cmluZyAqcGFzdGVib2FyZE5h
bWU7Cit9CisKKy0oaWQpaW5pdFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWU7CitAZW5kCisKK3N0
YXRpYyBOU011dGFibGVEaWN0aW9uYXJ5ICpsb2NhbFBhc3RlYm9hcmRzOworCitAaW1wbGVtZW50
YXRpb24gRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkCisKKy8vIFJldHVybiBhIGxvY2FsIHBhc3Rl
Ym9hcmQgc28gd2UgZG9uJ3QgZGlzdHVyYiB0aGUgcmVhbCBwYXN0ZWJvYXJkcyB3aGVuIHJ1bm5p
bmcgdGVzdHMuCisrIChOU1Bhc3RlYm9hcmQgKilfcGFzdGVib2FyZFdpdGhOYW1lOihOU1N0cmlu
ZyAqKW5hbWUKK3sKKyAgICBzdGF0aWMgaW50IG51bWJlciA9IDA7CisgICAgaWYgKCFuYW1lKQor
ICAgICAgICBuYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJMb2NhbFBhc3RlYm9h
cmQlZCIsICsrbnVtYmVyXTsKKyAgICBpZiAoIWxvY2FsUGFzdGVib2FyZHMpCisgICAgICAgIGxv
Y2FsUGFzdGVib2FyZHMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAg
IExvY2FsUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtsb2NhbFBhc3RlYm9hcmRzIG9iamVjdEZv
cktleTpuYW1lXTsKKyAgICBpZiAocGFzdGVib2FyZCkKKyAgICAgICAgcmV0dXJuIHBhc3RlYm9h
cmQ7CisgICAgcGFzdGVib2FyZCA9IFtbTG9jYWxQYXN0ZWJvYXJkIGFsbG9jXSBpbml0V2l0aE5h
bWU6bmFtZV07CisgICAgW2xvY2FsUGFzdGVib2FyZHMgc2V0T2JqZWN0OnBhc3RlYm9hcmQgZm9y
S2V5Om5hbWVdOworICAgIFtwYXN0ZWJvYXJkIHJlbGVhc2VdOworICAgIHJldHVybiBwYXN0ZWJv
YXJkOworfQorCisrICh2b2lkKXJlbGVhc2VMb2NhbFBhc3RlYm9hcmRzCit7CisgICAgW2xvY2Fs
UGFzdGVib2FyZHMgcmVsZWFzZV07CisgICAgbG9jYWxQYXN0ZWJvYXJkcyA9IG5pbDsKK30KKwor
Ly8gQ29udmVuaWVuY2UgbWV0aG9kIGZvciBKUyBzbyB0aGF0IGl0IGRvZXNuJ3QgaGF2ZSB0byB0
cnkgYW5kIGNyZWF0ZSBhIE5TQXJyYXkgb24gdGhlIG9iamMgc2lkZSBpbnN0ZWFkCisvLyBvZiB0
aGUgdXN1YWwgV2ViU2NyaXB0T2JqZWN0IHRoYXQgaXMgcGFzc2VkIGFyb3VuZAorLSAoTlNJbnRl
Z2VyKWRlY2xhcmVUeXBlOihOU1N0cmluZyAqKXR5cGUgb3duZXI6KGlkKW5ld093bmVyCit7Cisg
ICAgcmV0dXJuIFtzZWxmIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6dHlw
ZV0gb3duZXI6bmV3T3duZXJdOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBMb2NhbFBh
c3RlYm9hcmQKKworKyAoaWQpYWxsb2MKK3sKKyAgICByZXR1cm4gTlNBbGxvY2F0ZU9iamVjdChz
ZWxmLCAwLCAwKTsKK30KKworLSAoaWQpaW5pdFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKK3sK
KyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICB0eXBlc0FycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07Cisg
ICAgdHlwZXNTZXQgPSBbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF07CisgICAgZGF0YUJ5VHlw
ZSA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgcGFzdGVib2FyZE5h
bWUgPSBbbmFtZSBjb3B5XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9j
Cit7CisgICAgW3R5cGVzQXJyYXkgcmVsZWFzZV07CisgICAgW3R5cGVzU2V0IHJlbGVhc2VdOwor
ICAgIFtkYXRhQnlUeXBlIHJlbGVhc2VdOworICAgIFtwYXN0ZWJvYXJkTmFtZSByZWxlYXNlXTsK
KyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKE5TU3RyaW5nICopbmFtZQoreworICAgIHJl
dHVybiBwYXN0ZWJvYXJkTmFtZTsKK30KKworLSAodm9pZClyZWxlYXNlR2xvYmFsbHkKK3sKK30K
KworLSAoTlNJbnRlZ2VyKWRlY2xhcmVUeXBlczooTlNBcnJheSAqKW5ld1R5cGVzIG93bmVyOihp
ZCluZXdPd25lcgoreworICAgIFt0eXBlc0FycmF5IHJlbW92ZUFsbE9iamVjdHNdOworICAgIFt0
eXBlc1NldCByZW1vdmVBbGxPYmplY3RzXTsKKyAgICBbZGF0YUJ5VHlwZSByZW1vdmVBbGxPYmpl
Y3RzXTsKKyAgICByZXR1cm4gW3NlbGYgYWRkVHlwZXM6bmV3VHlwZXMgb3duZXI6bmV3T3duZXJd
OworfQorCistIChOU0ludGVnZXIpYWRkVHlwZXM6KE5TQXJyYXkgKiluZXdUeXBlcyBvd25lcjoo
aWQpbmV3T3duZXIKK3sKKyAgICB1bnNpZ25lZCBjb3VudCA9IFtuZXdUeXBlcyBjb3VudF07Cisg
ICAgdW5zaWduZWQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAg
ICBOU1N0cmluZyAqdHlwZSA9IFtuZXdUeXBlcyBvYmplY3RBdEluZGV4OmldOworICAgICAgICBO
U1N0cmluZyAqc2V0VHlwZSA9IFt0eXBlc1NldCBtZW1iZXI6dHlwZV07CisgICAgICAgIGlmICgh
c2V0VHlwZSkgeworICAgICAgICAgICAgc2V0VHlwZSA9IFt0eXBlIGNvcHldOworICAgICAgICAg
ICAgW3R5cGVzQXJyYXkgYWRkT2JqZWN0OnNldFR5cGVdOworICAgICAgICAgICAgW3R5cGVzU2V0
IGFkZE9iamVjdDpzZXRUeXBlXTsKKyAgICAgICAgICAgIFtzZXRUeXBlIHJlbGVhc2VdOworICAg
ICAgICB9CisgICAgICAgIGlmIChuZXdPd25lciAmJiBbbmV3T3duZXIgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihwYXN0ZWJvYXJkOnByb3ZpZGVEYXRhRm9yVHlwZTopXSkKKyAgICAgICAg
ICAgIFtuZXdPd25lciBwYXN0ZWJvYXJkOnNlbGYgcHJvdmlkZURhdGFGb3JUeXBlOnNldFR5cGVd
OworICAgIH0KKyAgICByZXR1cm4gKytjaGFuZ2VDb3VudDsKK30KKworLSAoTlNJbnRlZ2VyKWNo
YW5nZUNvdW50Cit7CisgICAgcmV0dXJuIGNoYW5nZUNvdW50OworfQorCistIChOU0FycmF5ICop
dHlwZXMKK3sKKyAgICByZXR1cm4gdHlwZXNBcnJheTsKK30KKworLSAoTlNTdHJpbmcgKilhdmFp
bGFibGVUeXBlRnJvbUFycmF5OihOU0FycmF5ICopdHlwZXMKK3sKKyAgICB1bnNpZ25lZCBjb3Vu
dCA9IFt0eXBlcyBjb3VudF07CisgICAgdW5zaWduZWQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkgeworICAgICAgICBOU1N0cmluZyAqdHlwZSA9IFt0eXBlcyBvYmplY3RBdElu
ZGV4OmldOworICAgICAgICBOU1N0cmluZyAqc2V0VHlwZSA9IFt0eXBlc1NldCBtZW1iZXI6dHlw
ZV07CisgICAgICAgIGlmIChzZXRUeXBlKQorICAgICAgICAgICAgcmV0dXJuIHNldFR5cGU7Cisg
ICAgfQorICAgIHJldHVybiBuaWw7Cit9CisKKy0gKEJPT0wpc2V0RGF0YTooTlNEYXRhICopZGF0
YSBmb3JUeXBlOihOU1N0cmluZyAqKWRhdGFUeXBlCit7CisgICAgaWYgKGRhdGEgPT0gbmlsKQor
ICAgICAgICBkYXRhID0gW05TRGF0YSBkYXRhXTsKKyAgICBpZiAoIVt0eXBlc1NldCBjb250YWlu
c09iamVjdDpkYXRhVHlwZV0pCisgICAgICAgIHJldHVybiBOTzsKKyAgICBbZGF0YUJ5VHlwZSBz
ZXRPYmplY3Q6ZGF0YSBmb3JLZXk6ZGF0YVR5cGVdOworICAgICsrY2hhbmdlQ291bnQ7CisgICAg
cmV0dXJuIFlFUzsKK30KKworLSAoTlNEYXRhICopZGF0YUZvclR5cGU6KE5TU3RyaW5nICopZGF0
YVR5cGUKK3sKKyAgICByZXR1cm4gW2RhdGFCeVR5cGUgb2JqZWN0Rm9yS2V5OmRhdGFUeXBlXTsK
K30KKworLSAoQk9PTClzZXRQcm9wZXJ0eUxpc3Q6KGlkKXByb3BlcnR5TGlzdCBmb3JUeXBlOihO
U1N0cmluZyAqKWRhdGFUeXBlCit7CisgICAgQ0ZEYXRhUmVmIGRhdGEgPSBOVUxMOworICAgIGlm
IChwcm9wZXJ0eUxpc3QpCisgICAgICAgIGRhdGEgPSBDRlByb3BlcnR5TGlzdENyZWF0ZVhNTERh
dGEoTlVMTCwgcHJvcGVydHlMaXN0KTsKKyAgICBCT09MIHJlc3VsdCA9IFtzZWxmIHNldERhdGE6
KE5TRGF0YSAqKWRhdGEgZm9yVHlwZTpkYXRhVHlwZV07CisgICAgaWYgKGRhdGEpCisgICAgICAg
IENGUmVsZWFzZShkYXRhKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChCT09MKXNldFN0
cmluZzooTlNTdHJpbmcgKilzdHJpbmcgZm9yVHlwZTooTlNTdHJpbmcgKilkYXRhVHlwZQorewor
ICAgIENGRGF0YVJlZiBkYXRhID0gTlVMTDsKKyAgICBpZiAoc3RyaW5nKSB7CisgICAgICAgIGlm
ICghc3RyaW5nLmxlbmd0aCkKKyAgICAgICAgICAgIGRhdGEgPSBDRkRhdGFDcmVhdGUoTlVMTCwg
TlVMTCwgMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRhdGEgPSBDRlN0cmluZ0NyZWF0
ZUV4dGVybmFsUmVwcmVzZW50YXRpb24oTlVMTCwgKENGU3RyaW5nUmVmKXN0cmluZywga0NGU3Ry
aW5nRW5jb2RpbmdVVEY4LCAwKTsKKyAgICB9CisgICAgQk9PTCByZXN1bHQgPSBbc2VsZiBzZXRE
YXRhOihOU0RhdGEgKilkYXRhIGZvclR5cGU6ZGF0YVR5cGVdOworICAgIGlmIChkYXRhKQorICAg
ICAgICBDRlJlbGVhc2UoZGF0YSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAoQk9PTCl3
cml0ZU9iamVjdHM6KE5TQXJyYXk8aWQgPE5TUGFzdGVib2FyZFdyaXRpbmc+PiAqKW9iamVjdHMK
K3sKKyAgICBmb3IgKGlkIDxOU1Bhc3RlYm9hcmRXcml0aW5nPiBvYmplY3QgaW4gb2JqZWN0cykg
eworICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlIGluIFtvYmplY3Qgd3JpdGFibGVUeXBlc0Zv
clBhc3RlYm9hcmQ6c2VsZl0pIHsKKyAgICAgICAgICAgIGF1dG8gcGFzdGVib2FyZFR5cGUgPSBh
ZG9wdE5TKChfX2JyaWRnZSBOU1N0cmluZyAqKVVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xh
c3MoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXR5cGUsIGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBlKSk7
CisKKyAgICAgICAgICAgIFtzZWxmIGFkZFR5cGVzOkBbIHBhc3RlYm9hcmRUeXBlLmdldCgpIF0g
b3duZXI6c2VsZl07CisKKyAgICAgICAgICAgIGlkIHByb3BlcnR5TGlzdCA9IFtvYmplY3QgcGFz
dGVib2FyZFByb3BlcnR5TGlzdEZvclR5cGU6dHlwZV07CisgICAgICAgICAgICBpZiAoW3Byb3Bl
cnR5TGlzdCBpc0tpbmRPZkNsYXNzOk5TRGF0YS5jbGFzc10pCisgICAgICAgICAgICAgICAgW3Nl
bGYgc2V0RGF0YTpwcm9wZXJ0eUxpc3QgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZS5nZXQoKV07Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gWUVTOworfQorCitAZW5kCisKKyNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRT
ZW5kaW5nQ29udHJvbGxlci5tbQppbmRleCBjZmQ1NjQxODY2ZDIyMmU3NzNmZWY4NDY5N2Y2NmUz
MjRmYTQxM2VlLi5hNTUwOTcwMzVmYjUzZTZiNzY0YTA5MTc2NDVhOGE1Y2Y5MmY1OGQxIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5t
bQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5t
bQpAQCAtNDMsNiArNDMsOCBAQAogCiAjaWYgIVBMQVRGT1JNKElPUykKICNpbXBvcnQgPENhcmJv
bi9DYXJib24uaD4gLy8gZm9yIEdldEN1cnJlbnRFdmVudFRpbWUoKQorI2ltcG9ydCA8V2ViS2l0
L1dlYkhUTUxWaWV3Lmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9t
YWMvQXBwS2l0Q29tcGF0aWJpbGl0eURlY2xhcmF0aW9ucy5oPgogI2VuZGlmCiAKQEAgLTEzOCw2
ICsxNDAsMzUgQEAgQk9PTCByZXBsYXlpbmdTYXZlZEV2ZW50czsKIAogQGltcGxlbWVudGF0aW9u
IEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIKIAorI2lmIFBMQVRGT1JNKE1BQykKK3N0YXRpYyBOU0Ry
YWdnaW5nU2Vzc2lvbiAqZHJ0X1dlYkhUTUxWaWV3X2JlZ2luRHJhZ2dpbmdTZXNzaW9uV2l0aEl0
ZW1zRXZlbnRTb3VyY2UoV2ViSFRNTFZpZXcgKnNlbGYsIGlkIF9jbWQsIE5TQXJyYXk8TlNEcmFn
Z2luZ0l0ZW0gKj4gKml0ZW1zLCBOU0V2ZW50ICpldmVudCwgaWQ8TlNEcmFnZ2luZ1NvdXJjZT4g
c291cmNlKQoreworICAgIEFTU0VSVCghZHJhZ2dpbmdJbmZvKTsKKworICAgIFdlYkZyYW1lVmll
dyAqd2ViRnJhbWVWaWV3ID0gXiB7CisgICAgICAgIGZvciAoTlNWaWV3ICpzdXBlcnZpZXcgPSBz
ZWxmLnN1cGVydmlldzsgc3VwZXJ2aWV3OyBzdXBlcnZpZXcgPSBzdXBlcnZpZXcuc3VwZXJ2aWV3
KSB7CisgICAgICAgICAgICBpZiAoW3N1cGVydmlldyBpc0tpbmRPZkNsYXNzOldlYkZyYW1lVmll
dy5jbGFzc10pCisgICAgICAgICAgICAgICAgcmV0dXJuIChXZWJGcmFtZVZpZXcgKilzdXBlcnZp
ZXc7CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIChXZWJGcmFtZVZpZXcgKiluaWw7CisgICAgfSgpOworCisgICAgV2ViVmlldyAqd2Vi
VmlldyA9IHdlYkZyYW1lVmlldy53ZWJGcmFtZS53ZWJWaWV3OworCisgICAgTlNQYXN0ZWJvYXJk
ICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aE5hbWU6TlNEcmFnUGJv
YXJkXTsKKyAgICBmb3IgKE5TRHJhZ2dpbmdJdGVtICppdGVtIGluIGl0ZW1zKQorICAgICAgICBb
cGFzdGVib2FyZCB3cml0ZU9iamVjdHM6QFsgaXRlbS5pdGVtIF1dOworCisgICAgZHJhZ2dpbmdJ
bmZvID0gW1tEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpu
aWwgb2Zmc2V0Ok5TWmVyb1NpemUgcGFzdGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2Vd
OworICAgIFt3ZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpkcmFnZ2luZ0luZm9dOworICAgIFtFdmVu
dFNlbmRpbmdDb250cm9sbGVyIHJlcGxheVNhdmVkRXZlbnRzXTsKKworICAgIHJldHVybiBudWxs
cHRyOworfQorI2VuZGlmCisKICsgKHZvaWQpaW5pdGlhbGl6ZQogewogICAgIHdlYmtpdERvbUV2
ZW50TmFtZXMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czoKQEAgLTE4OCw2ICsy
MTksMTUgQEAgQk9PTCByZXBsYXlpbmdTYXZlZEV2ZW50czsKICAgICAgICAgQCJ1bmxvYWQiLAog
ICAgICAgICBAInpvb20iLAogICAgICAgICBuaWxdOworCisjaWYgUExBVEZPUk0oTUFDKQorICAg
IC8vIEFkZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiAtW1dlYkhUTUxWaWV3IGJlZ2luRHJhZ2dpbmdT
ZXNzaW9uV2l0aEl0ZW1zOmV2ZW50OnNvdXJjZTpdLgorICAgIFNFTCBzZWxlY3RvciA9IEBzZWxl
Y3RvcihiZWdpbkRyYWdnaW5nU2Vzc2lvbldpdGhJdGVtczpldmVudDpzb3VyY2U6KTsKKyAgICBj
b25zdCBjaGFyKiB0eXBlRW5jb2RpbmcgPSBtZXRob2RfZ2V0VHlwZUVuY29kaW5nKGNsYXNzX2dl
dEluc3RhbmNlTWV0aG9kKE5TVmlldy5jbGFzcywgc2VsZWN0b3IpKTsKKworICAgIGlmICghY2xh
c3NfYWRkTWV0aG9kKFdlYkhUTUxWaWV3LmNsYXNzLCBzZWxlY3RvciwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KGRydF9XZWJIVE1MVmlld19iZWdpbkRyYWdnaW5nU2Vzc2lvbldpdGhJdGVtc0V2ZW50
U291cmNlKSwgdHlwZUVuY29kaW5nKSkKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisj
ZW5kaWYKIH0KIAogKyAoQk9PTClpc1NlbGVjdG9yRXhjbHVkZWRGcm9tV2ViU2NyaXB0OihTRUwp
YVNlbGVjdG9yCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301998</attachid>
            <date>2017-02-17 15:24:25 -0800</date>
            <delta_ts>2017-02-17 15:59:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168534-20170217152146.patch</filename>
            <type>text/plain</type>
            <size>49938</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGExMTFkYzcwOGFmMmMw
ODU2MzE1YmZhNWUyOTI2ZDFkNmI3ZjAyYS4uMjliOWRmOTIwMWQxNGYxNWEwNWZjYmUzNDZiMTJj
MDkzZWE5ZTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE3LTAyLTE3ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgbmV3IGRy
YWcgY29kZSBwYXRoIGFuZCB1c2UgaXQgZm9yIGRyYWdnaW5nIHBsYWluIHRleHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODUzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBuZXcgY29kZSBwYXRo
IGlzIGN1cnJlbnRseSBvbmx5IHVzZWQgZm9yIHBsYWluIHRleHQgc2VsZWN0aW9uIGRyYWdnaW5n
LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHBhZ2UvRHJhZ0NsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudDo6dXNl
TGVnYWN5RHJhZ0NsaWVudCk6CisgICAgICAgIEFkZCBhIG5ldyBtZW1iZXIgZnVuY3Rpb24uIFRo
aXMgY3VycmVudGx5IHJldHVybnMgdHJ1ZSBldmVyeXdoZXJlIGV4Y2VwdCBsZWdhY3kgV2ViS2l0
IG9uIE1hYy4KKworICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudDo6YmVnaW5EcmFnKToKKyAg
ICAgICAgQWRkIG5ldyBlbXB0eSBtZW1iZXIgZnVuY3Rpb24uCisKKyAgICAgICAgKiBwYWdlL0Ry
YWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYWdJbWFnZUFuY2hvclBvaW50
Rm9yU2VsZWN0aW9uRHJhZyk6CisgICAgICAgIEhlbHBlciBmdW5jdGlvbiB0aGF0IHJldHVybnMg
dGhlIGFuY2hvciBwb2ludCBmb3IgYSBzZWxlY3Rpb24gZHJhZyBpbWFnZS4KKworICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgIElmIHdlIGNhbiB1
c2UgdGhlIG5ldyBjb2RlIHBhdGgsIHNldCB1cCBhIGRyYWcgaXRlbSB3aXRoIGFuIGltYWdlIGFu
ZCBwYXN0ZWJvYXJkIGRhdGEuCisKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpi
ZWdpbkRyYWcpOgorICAgICAgICBOZXcgZnVuY3Rpb24gdGhhdCBjYWxscyBvdXQgdG8gdGhlIGNs
aWVudC4KKworICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgQWRkIG5l
dyBtZW1iZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vRHJhZ0l0ZW0uaDoKKyAgICAgICAgQWRk
IGEgbmV3IGNsYXNzIC0gaXQncyBlc3NlbnRpYWxseSBhIHR1cGxlIG9mIGEgZHJhZyBpbWFnZSwg
YW4gYW5jaG9yIHBvaW50IGFuZCB0aGUgcGFzdGVib2FyZCBkYXRhIHRoZSBpdGVtIHJlcHJlc2Vu
dHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5oOgorICAgICAg
ICBSZW5hbWUgY3JlYXRlUGFzdGVib2FyZFdyaXRpbmcgdG8gY3JlYXRlUGFzdGVib2FyZFdyaXRl
ci4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgIFVzZSB0aGUgVVRJ
IHBhc3RlYm9hcmQgdHlwZS4KKwogMjAxNy0wMi0xNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvcmluZzogTWFrZSBzdXJlIHRvIHVucHJlcGFyZSBX
ZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQyB3aGVuIGl0cyBvd25lciBpcyBkZXN0cm95ZWQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKaW5kZXggZGE5NjM1YjExYmZkMWIzMDcxOTYxYzc1M2ZlYzdhYWY2NjY0
NDg0MS4uYjY3YjVkMDdkZDM4YjExZTU2YzE4M2NhYThiZWJiMmMwY2YwNzVmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTAyLTE3ICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgbmV3IGRyYWcgY29kZSBwYXRoIGFu
ZCB1c2UgaXQgZm9yIGRyYWdnaW5nIHBsYWluIHRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5o
OgorICAgICAgICBBZGQgbmV3IG1lbWJlcnMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6dXNlTGVnYWN5RHJhZ0Ns
aWVudCk6CisgICAgICAgIFJldHVybiBmYWxzZSBoZXJlLgorCisgICAgICAgIChXZWJEcmFnQ2xp
ZW50OjpiZWdpbkRyYWcpOgorICAgICAgICBOZXcgY2xpZW50IG1lbWJlciBmdW5jdGlvbi4gQ3Jl
YXRlIGFuIE5TRHJhZ2dpbmdJdGVtIGFuZCB1c2UgaXQgdG8gYmVnaW4gYSBkcmFnZ2luZyBzZXNz
aW9uLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2Vi
SFRNTFZpZXcgZHJhZ2dpbmdTZXNzaW9uOnNvdXJjZU9wZXJhdGlvbk1hc2tGb3JEcmFnZ2luZ0Nv
bnRleHQ6XSk6CisgICAgICAgIEdldCB0aGUgc291cmNlIG9wZXJhdGlvbiBtYXNrIGZyb20gV2Vi
Q29yZS4KKworICAgICAgICAoLVtXZWJIVE1MVmlldyBkcmFnZ2luZ1Nlc3Npb246ZW5kZWRBdFBv
aW50Om9wZXJhdGlvbjpdKToKKyAgICAgICAgU2VuZCBhIGZha2UgbW91c2UgdXAgZXZlbnQuCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgRGVjbGFy
ZSB0aGF0IFdlYkhUTUxWaWV3IGNvbmZvcm1zIHRvIE5TRHJhZ2dpbmdTb3VyY2UuCisKIDIwMTct
MDItMTUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3Ag
YmFja2luZyB1cCBsb2NhbFN0b3JhZ2UgZGF0YWJhc2VzIHRvIGlDbG91ZCBieSBkZWZhdWx0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGE0NTg4Yjk2NzVmMDI5MTM5N2ExNzIwMDQxZDBjNDhjOWE4NGYxMzEuLjI2YTUzZDhlZTBk
ODc3Y2Q3ODNiYmUxYmE4ZDAxYTAyOTQzZmE2OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk1Miw2ICs5NTIsNyBAQAogCQkx
QUY0Q0VFQzE4QkMzQzFCMDBCQzJEMzQgLyogVmlzaXRlZExpbmtTdG9yZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUY0Q0VFQjE4QkMzQzFCMDBC
QzJEMzQgLyogVmlzaXRlZExpbmtTdG9yZS5jcHAgKi87IH07CiAJCTFBRjVFNEQ0MUU1NjczNUIw
MDRBMUYwMSAvKiBQYXN0ZWJvYXJkV3JpdGVyRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUY1RTREMjFFNTY3MzVBMDA0QTFGMDEgLyogUGFz
dGVib2FyZFdyaXRlckRhdGEuY3BwICovOyB9OwogCQkxQUY1RTRENTFFNTY3MzVCMDA0QTFGMDEg
LyogUGFzdGVib2FyZFdyaXRlckRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBRjVFNEQzMUU1NjczNUEwMDRBMUYwMSAvKiBQYXN0ZWJvYXJkV3Jp
dGVyRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTFBRjVFNEQ5MUU1Njc3QTkwMDRBMUYwMSAvKiBEcmFnSXRlbS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGNUU0RDcxRTU2NzdBOTAwNEExRjAx
IC8qIERyYWdJdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMUFGNUU0RTIxRTU3NzlCMTAwNEExRjAxIC8qIFBhc3RlYm9hcmRXcml0ZXIubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUY1RTRFMDFF
NTc3OUIxMDA0QTFGMDEgLyogUGFzdGVib2FyZFdyaXRlci5tbSAqLzsgfTsKIAkJMUFGNUU0RTMx
RTU3NzlCMTAwNEExRjAxIC8qIFBhc3RlYm9hcmRXcml0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRjVFNEUxMUU1Nzc5QjEwMDRBMUYwMSAvKiBQ
YXN0ZWJvYXJkV3JpdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMUFGNjJFRTYxNERBMjJBNzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUFGNjJFRTMxNERBMjJBNzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tICov
OyB9OwpAQCAtODEzMyw2ICs4MTM0LDcgQEAKIAkJMUFGNENFRUIxOEJDM0MxQjAwQkMyRDM0IC8q
IFZpc2l0ZWRMaW5rU3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVmlzaXRlZExpbmtTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFB
RjVFNEQyMUU1NjczNUEwMDRBMUYwMSAvKiBQYXN0ZWJvYXJkV3JpdGVyRGF0YS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXN0ZWJvYXJkV3JpdGVyRGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRjVFNEQzMUU1NjczNUEwMDRBMUYwMSAv
KiBQYXN0ZWJvYXJkV3JpdGVyRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQYXN0ZWJvYXJkV3JpdGVyRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QUY1RTRENzFFNTY3N0E5MDA0QTFGMDEgLyogRHJhZ0l0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRHJhZ0l0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUFGNUU0RTAxRTU3NzlCMTAwNEExRjAxIC8qIFBhc3RlYm9hcmRXcml0ZXIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXN0ZWJvYXJkV3JpdGVyLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUY1RTRFMTFFNTc3OUIxMDA0QTFGMDEgLyogUGFz
dGVib2FyZFdyaXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXN0ZWJv
YXJkV3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRjYyRUUzMTREQTIy
QTcwMDQxNTU2QyAvKiBTY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI5MTQsNiArMjI5MTYsNyBAQAogCQkJCUE3QjZF
NjlEMEIyOTFBOTYwMEQwNTI5RiAvKiBEcmFnRGF0YS5oICovLAogCQkJCUE3Q0ZCM0NGMEI3RUQx
MEEwMDcwQzMyRCAvKiBEcmFnSW1hZ2UuY3BwICovLAogCQkJCUE3Q0ZCM0QwMEI3RUQxMEEwMDcw
QzMyRCAvKiBEcmFnSW1hZ2UuaCAqLywKKwkJCQkxQUY1RTRENzFFNTY3N0E5MDA0QTFGMDEgLyog
RHJhZ0l0ZW0uaCAqLywKIAkJCQkxQ0ExOUUxNTBEQzI1NUNBMDA2NUE5OTQgLyogRXZlbnRMb29w
LmggKi8sCiAJCQkJMjYyRUM0MUMxRDExMEIxRjAwQkE3OEZDIC8qIEV2ZW50VHJhY2tpbmdSZWdp
b25zLmNwcCAqLywKIAkJCQkyNjJFQzQxOTFEMDc4RjNEMDBCQTc4RkMgLyogRXZlbnRUcmFja2lu
Z1JlZ2lvbnMuaCAqLywKQEAgLTI4NzI0LDYgKzI4NzI3LDcgQEAKIAkJCQkwQzNGMUY1QjEwQzg4
NzEyMDBENzJDRTEgLyogV2ViR0xVbmlmb3JtTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTZGOTk1QTI2MUE3MDc4QjEwMEE3MzVGNCAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk3N0ExN0E3ODEyRjI4NjQyMDA0RTAyRjYgLyogV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUFGNUU0RDkxRTU2NzdBOTAwNEEx
RjAxIC8qIERyYWdJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUUyMTIzQzFFNDkyNEE0MDBD
RTEwNDQgLyogV2ViSGVhcEFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyNTE4N0I4
QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNTg0RkUzMDE4NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgKaW5kZXggN2M2YTA4ODkxYmVk
YmViYzdlYTMxZDU0ZGRkMWQ0NjNmZmFlMGI4ZS4uYjAyMjA3ZDhjMzRmYzNhMTE2ODA0YzVhMDQ2
ZGQ1Nzk0ZWZmNmRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgKQEAgLTI2LDcgKzI2LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKLSNpbmNsdWRlICJE
cmFnSW1hZ2UuaCIKKyNpbmNsdWRlICJEcmFnSXRlbS5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQu
aCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogCkBAIC00Miw2ICs0Miw4IEBAIGNsYXNzIERyYWdD
bGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3ll
ZCgpID0gMDsKIAorICAgIHZpcnR1YWwgYm9vbCB1c2VMZWdhY3lEcmFnQ2xpZW50KCkgeyByZXR1
cm4gdHJ1ZTsgfQorCiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbiwgY29uc3QgRHJhZ0RhdGEmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9u
LCBjb25zdCBJbnRQb2ludCYsIERhdGFUcmFuc2ZlciYpID0gMDsKICAgICB2aXJ0dWFsIERyYWdE
ZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBEcmFnRGF0YSYpID0gMDsK
QEAgLTUwLDYgKzUyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoRHJh
Z0ltYWdlLCBjb25zdCBJbnRQb2ludCYgZHJhZ0ltYWdlT3JpZ2luLCBjb25zdCBJbnRQb2ludCYg
ZXZlbnRQb3MsIGNvbnN0IEZsb2F0UG9pbnQmIGRyYWdJbWFnZUFuY2hvciwgRGF0YVRyYW5zZmVy
JiwgRnJhbWUmLCBEcmFnU291cmNlQWN0aW9uKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYWdF
bmRlZCgpIHsgfQogCisgICAgdmlydHVhbCB2b2lkIGJlZ2luRHJhZyhEcmFnSXRlbSwgRnJhbWUm
LCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJiwgRHJhZ1Nv
dXJjZUFjdGlvbikgeyB9CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBNYWMtc3BlY2lm
aWMgaGVscGVyIGZ1bmN0aW9uIHRvIGFsbG93IGFjY2VzcyB0byB3ZWIgYXJjaGl2ZXMgYW5kIE5T
UGFzdGVib2FyZCBleHRyYXMgaW4gV2ViS2l0LgogICAgIC8vIFRoaXMgaXMgbm90IGFic3RyYWN0
IGFzIHRoYXQgd291bGQgcmVxdWlyZSBhbm90aGVyICNpZiBQTEFURk9STShDT0NPQSkgZm9yIHRo
ZSBTVkdJbWFnZSBjbGllbnQgZW1wdHkgaW1wbGVudGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAppbmRleCBkMTY3MjIxYzE3MzM0ZDAxY2YyOGI5YmRjZWViOTU5MTEw
MDdmOWE4Li40ZmRhZGZjNGQyZTdiYzMwNjljY2QxMjc4YzRkM2YyZTc0M2EzNTQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNzM4LDYgKzczOCwxNiBAQCBzdGF0
aWMgSW50UG9pbnQgZHJhZ0xvY0ZvckRIVE1MRHJhZyhjb25zdCBJbnRQb2ludCYgbW91c2VEcmFn
Z2VkUG9pbnQsIGNvbnN0IEludAogICAgIHJldHVybiBJbnRQb2ludChkcmFnT3JpZ2luLngoKSAt
IGRyYWdJbWFnZU9mZnNldC54KCksIGRyYWdPcmlnaW4ueSgpICsgeU9mZnNldCk7CiB9CiAKK3N0
YXRpYyBGbG9hdFBvaW50IGRyYWdJbWFnZUFuY2hvclBvaW50Rm9yU2VsZWN0aW9uRHJhZyhGcmFt
ZSYgZnJhbWUsIGNvbnN0IEludFBvaW50JiBtb3VzZURyYWdnZWRQb2ludCkKK3sKKyAgICBJbnRS
ZWN0IGRyYWdnaW5nUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoZnJhbWUuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uQm91bmRzKCkpOworCisgICAgZmxvYXQgeCA9IChtb3VzZURyYWdnZWRQb2ludC54KCkg
LSBkcmFnZ2luZ1JlY3QueCgpKSAvIChmbG9hdClkcmFnZ2luZ1JlY3Qud2lkdGgoKTsKKyAgICBm
bG9hdCB5ID0gKG1vdXNlRHJhZ2dlZFBvaW50LnkoKSAtIGRyYWdnaW5nUmVjdC55KCkpIC8gKGZs
b2F0KWRyYWdnaW5nUmVjdC5oZWlnaHQoKTsKKworICAgIHJldHVybiBGbG9hdFBvaW50IHsgeCwg
eSB9OworfQorCiBzdGF0aWMgSW50UG9pbnQgZHJhZ0xvY0ZvclNlbGVjdGlvbkRyYWcoRnJhbWUm
IHNyYykKIHsKICAgICBJbnRSZWN0IGRyYWdnaW5nUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qoc3Jj
LnNlbGVjdGlvbigpLnNlbGVjdGlvbkJvdW5kcygpKTsKQEAgLTc5Miw2ICs4MDIsNyBAQCBib29s
IERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBz
dGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgIG1fc291cmNlRHJhZ09wZXJhdGlvbiA9IHNyY09wOwog
CiAgICAgRHJhZ0ltYWdlIGRyYWdJbWFnZTsKKyAgICBGbG9hdFBvaW50IGRyYWdJbWFnZUFuY2hv
clBvaW50OwogICAgIEludFBvaW50IGRyYWdMb2MoMCwgMCk7CiAgICAgSW50UG9pbnQgZHJhZ0lt
YWdlT2Zmc2V0KDAsIDApOwogCkBAIC04MTgsOSArODI5LDEzIEBAIGJvb2wgRHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3Bl
cmF0aW9uCiAgICAgQVNTRVJUKHN0YXRlLnNvdXJjZSk7CiAgICAgRWxlbWVudCYgZWxlbWVudCA9
ICpzdGF0ZS5zb3VyY2U7CiAKKyAgICBib29sIG11c3RVc2VMZWdhY3lEcmFnQ2xpZW50ID0gZGF0
YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5oYXNEYXRhKCkgfHwgbV9jbGllbnQudXNlTGVnYWN5RHJh
Z0NsaWVudCgpOworCiAgICAgSW50UmVjdCBkcmFnSW1hZ2VCb3VuZHM7CiAgICAgSW1hZ2UqIGlt
YWdlID0gZ2V0SW1hZ2UoZWxlbWVudCk7CiAgICAgaWYgKHN0YXRlLnR5cGUgPT0gRHJhZ1NvdXJj
ZUFjdGlvblNlbGVjdGlvbikgeworICAgICAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBwYXN0ZWJv
YXJkV3JpdGVyRGF0YTsKKwogICAgICAgICBpZiAoIWRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCku
aGFzRGF0YSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBlbnRpcmUgYmxvY2sgaXMg
YWxtb3N0IGlkZW50aWNhbCB0byB0aGUgY29kZSBpbiBFZGl0b3I6OmNvcHksIGFuZCB0aGUgY29k
ZSBzaG91bGQgYmUgc2hhcmVkLgogICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25S
YW5nZSA9IHNyYy5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwpAQCAtODM2LDkgKzg1
MSwxOCBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3Qg
RHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogCiAgICAgICAgICAgICBzcmMuZWRpdG9y
KCkud2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKHNlbGVjdGlvblJhbmdlLmdldCgpKTsK
IAotICAgICAgICAgICAgaWYgKGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChzcmMuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkuc3RhcnQoKSkpCi0gICAgICAgICAgICAgICAgZGF0YVRyYW5zZmVyLnBh
c3RlYm9hcmQoKS53cml0ZVBsYWluVGV4dChzcmMuZWRpdG9yKCkuc2VsZWN0ZWRUZXh0Rm9yRGF0
YVRyYW5zZmVyKCksIFBhc3RlYm9hcmQ6OkNhbm5vdFNtYXJ0UmVwbGFjZSk7Ci0gICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2woc3JjLnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKG11
c3RVc2VMZWdhY3lEcmFnQ2xpZW50KQorICAgICAgICAgICAgICAgICAgICBkYXRhVHJhbnNmZXIu
cGFzdGVib2FyZCgpLndyaXRlUGxhaW5UZXh0KHNyYy5lZGl0b3IoKS5zZWxlY3RlZFRleHRGb3JE
YXRhVHJhbnNmZXIoKSwgUGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsKKyAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUGFzdGVib2FyZFdyaXRlckRhdGE6
OlBsYWluVGV4dCBwbGFpblRleHQ7CisgICAgICAgICAgICAgICAgICAgIHBsYWluVGV4dC5jYW5T
bWFydENvcHlPckRlbGV0ZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBwbGFpblRleHQu
dGV4dCA9IHNyYy5lZGl0b3IoKS5zZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIoKTsKKyAgICAg
ICAgICAgICAgICAgICAgcGFzdGVib2FyZFdyaXRlckRhdGEuc2V0UGxhaW5UZXh0KFdURk1vdmUo
cGxhaW5UZXh0KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBtdXN0VXNlTGVnYWN5RHJhZ0NsaWVudCA9IHRydWU7CisKICNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQogICAgICAgICAgICAgICAgIHNyYy5lZGl0b3Io
KS53cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpKTsK
ICNlbHNlCkBAIC04NTMsMTMgKzg3NywyNSBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERy
YWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAg
ICAgICBpZiAoIWRyYWdJbWFnZSkgewogICAgICAgICAgICAgZHJhZ0ltYWdlID0gRHJhZ0ltYWdl
IHsgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKGNyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlv
bihzcmMpLCBEcmFnSW1hZ2VBbHBoYSkgfTsKICAgICAgICAgICAgIGRyYWdMb2MgPSBkcmFnTG9j
Rm9yU2VsZWN0aW9uRHJhZyhzcmMpOworICAgICAgICAgICAgZHJhZ0ltYWdlQW5jaG9yUG9pbnQg
PSBkcmFnSW1hZ2VBbmNob3JQb2ludEZvclNlbGVjdGlvbkRyYWcoc3JjLCBtb3VzZURyYWdnZWRQ
b2ludCk7CiAgICAgICAgICAgICBtX2RyYWdPZmZzZXQgPSBJbnRQb2ludChkcmFnT3JpZ2luLngo
KSAtIGRyYWdMb2MueCgpLCBkcmFnT3JpZ2luLnkoKSAtIGRyYWdMb2MueSgpKTsKICAgICAgICAg
fQogCiAgICAgICAgIGlmICghZHJhZ0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgIGRvU3lzdGVtRHJhZyhXVEZNb3ZlKGRyYWdJbWFnZSksIGRyYWdMb2MsIGRyYWdP
cmlnaW4sIGRyYWdJbWFnZUJvdW5kcywgZGF0YVRyYW5zZmVyLCBzcmMsIERyYWdTb3VyY2VBY3Rp
b25TZWxlY3Rpb24pOworICAgICAgICBpZiAobXVzdFVzZUxlZ2FjeURyYWdDbGllbnQpIHsKKyAg
ICAgICAgICAgIGRvU3lzdGVtRHJhZyhXVEZNb3ZlKGRyYWdJbWFnZSksIGRyYWdMb2MsIGRyYWdP
cmlnaW4sIGRyYWdJbWFnZUJvdW5kcywgZGF0YVRyYW5zZmVyLCBzcmMsIERyYWdTb3VyY2VBY3Rp
b25TZWxlY3Rpb24pOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAg
ICAgICBEcmFnSXRlbSBkcmFnSXRlbTsKKyAgICAgICAgZHJhZ0l0ZW0uaW1hZ2UgPSBXVEZNb3Zl
KGRyYWdJbWFnZSk7CisgICAgICAgIGRyYWdJdGVtLmltYWdlQW5jaG9yUG9pbnQgPSBkcmFnSW1h
Z2VBbmNob3JQb2ludDsKKyAgICAgICAgZHJhZ0l0ZW0uZGF0YSA9IFdURk1vdmUocGFzdGVib2Fy
ZFdyaXRlckRhdGEpOworCisgICAgICAgIGJlZ2luRHJhZyhXVEZNb3ZlKGRyYWdJdGVtKSwgc3Jj
LCBkcmFnT3JpZ2luLCBtb3VzZURyYWdnZWRQb2ludCwgZGF0YVRyYW5zZmVyLCBEcmFnU291cmNl
QWN0aW9uU2VsZWN0aW9uKTsKKwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTEw
MDcsNiArMTA0MywyNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpkb0ltYWdlRHJhZyhFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgYwogICAgIGRvU3lzdGVtRHJh
ZyhXVEZNb3ZlKGRyYWdJbWFnZSksIGRyYWdJbWFnZU9mZnNldCwgZHJhZ09yaWdpbiwgZWxlbWVu
dC5ib3VuZHNJblJvb3RWaWV3U3BhY2UoKSwgZGF0YVRyYW5zZmVyLCBmcmFtZSwgRHJhZ1NvdXJj
ZUFjdGlvbkltYWdlKTsKIH0KIAordm9pZCBEcmFnQ29udHJvbGxlcjo6YmVnaW5EcmFnKERyYWdJ
dGVtIGRyYWdJdGVtLCBGcmFtZSYgZnJhbWUsIGNvbnN0IEludFBvaW50JiBtb3VzZURvd25Qb2lu
dCwgY29uc3QgSW50UG9pbnQmIG1vdXNlRHJhZ2dlZFBvaW50LCBEYXRhVHJhbnNmZXImIGRhdGFU
cmFuc2ZlciwgRHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uKQoreworICAgIEFTU0VS
VCghbV9jbGllbnQudXNlTGVnYWN5RHJhZ0NsaWVudCgpKTsKKworICAgIG1fZGlkSW5pdGlhdGVE
cmFnID0gdHJ1ZTsKKyAgICBtX2RyYWdJbml0aWF0b3IgPSBmcmFtZS5kb2N1bWVudCgpOworCisg
ICAgLy8gUHJvdGVjdCB0aGlzIGZyYW1lIGFuZCB2aWV3LCBhcyBhIGxvYWQgbWF5IG9jY3VyIG1p
ZCBkcmFnIGFuZCBhdHRlbXB0IHRvIHVubG9hZCB0aGlzIGZyYW1lCisgICAgUmVmPE1haW5GcmFt
ZT4gZnJhbWVQcm90ZWN0b3IobV9wYWdlLm1haW5GcmFtZSgpKTsKKyAgICBSZWZQdHI8RnJhbWVW
aWV3PiB2aWV3UHJvdGVjdG9yID0gZnJhbWVQcm90ZWN0b3ItPnZpZXcoKTsKKworICAgIG1fY2xp
ZW50LmJlZ2luRHJhZyhXVEZNb3ZlKGRyYWdJdGVtKSwgZnJhbWUsIG1vdXNlRG93blBvaW50LCBt
b3VzZURyYWdnZWRQb2ludCwgZGF0YVRyYW5zZmVyLCBkcmFnU291cmNlQWN0aW9uKTsKKworICAg
IC8vIERyYWdDbGllbnQ6OmJlZ2luRHJhZyBjYW4gY2F1c2UgdGhlIGRyYWcgY29udHJvbGxlciB0
byBiZSBkZWxldGVkLgorICAgIGlmICghZnJhbWVQcm90ZWN0b3ItPnBhZ2UoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkbid0IGJlIG5lZWRlZC4KKyAgICBj
bGVhbnVwQWZ0ZXJTeXN0ZW1EcmFnKCk7Cit9CisKIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRvU3lz
dGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBkcmFnTG9jLCBjb25zdCBJ
bnRQb2ludCYgZXZlbnRQb3MsIGNvbnN0IEludFJlY3QmIGRyYWdJbWFnZUJvdW5kcywgRGF0YVRy
YW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1lJiBmcmFtZSwgRHJhZ1NvdXJjZUFjdGlvbiBkcmFn
U291cmNlQWN0aW9uKQogewogICAgIEZsb2F0UG9pbnQgZHJhZ0ltYWdlQW5jaG9yID0geyAwLjUs
IDAuNSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCmluZGV4IGQzYzIwOTE0OTYw
MjBlZDUyNjlhMmNmZGZlYjhmYjM1NjEwZjMzMjEuLjY3YzQ4ZTQyNTRhMmI0YzVlODZjY2RhZWVh
NDBhMDA0NTlkMTYwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTMz
LDE5ICszMywyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBEYXRhVHJh
bnNmZXI7Ci0gICAgY2xhc3MgRG9jdW1lbnQ7Ci0gICAgY2xhc3MgRHJhZ0NsaWVudDsKLSAgICBj
bGFzcyBEcmFnRGF0YTsKLSAgICBjbGFzcyBFbGVtZW50OwotICAgIGNsYXNzIEZyYW1lOwotICAg
IGNsYXNzIEZyYW1lU2VsZWN0aW9uOwotICAgIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7Ci0gICAg
Y2xhc3MgSW50UmVjdDsKLSAgICBjbGFzcyBQYWdlOwotICAgIGNsYXNzIFBsYXRmb3JtTW91c2VF
dmVudDsKLQotICAgIHN0cnVjdCBEcmFnU3RhdGU7CitjbGFzcyBEYXRhVHJhbnNmZXI7CitjbGFz
cyBEb2N1bWVudDsKK2NsYXNzIERyYWdDbGllbnQ7CitjbGFzcyBEcmFnRGF0YTsKK2NsYXNzIEVs
ZW1lbnQ7CitjbGFzcyBGcmFtZTsKK2NsYXNzIEZyYW1lU2VsZWN0aW9uOworY2xhc3MgSFRNTElu
cHV0RWxlbWVudDsKK2NsYXNzIEludFJlY3Q7CitjbGFzcyBQYWdlOworY2xhc3MgUGxhdGZvcm1N
b3VzZUV2ZW50OworCitzdHJ1Y3QgRHJhZ0l0ZW07CitzdHJ1Y3QgRHJhZ1N0YXRlOwogCiAgICAg
Y2xhc3MgRHJhZ0NvbnRyb2xsZXIgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEcmFn
Q29udHJvbGxlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTEzLDYgKzExNCw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGRvSW1hZ2VEcmFnKEVsZW1lbnQm
LCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFJlY3QmLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYs
IEludFBvaW50Jik7CiAgICAgICAgIHZvaWQgZG9TeXN0ZW1EcmFnKERyYWdJbWFnZSwgY29uc3Qg
SW50UG9pbnQmLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFJlY3QmIGRyYWdJbWFnZUJvdW5k
cywgRGF0YVRyYW5zZmVyJiwgRnJhbWUmLCBEcmFnU291cmNlQWN0aW9uKTsKKworICAgICAgICB2
b2lkIGJlZ2luRHJhZyhEcmFnSXRlbSwgRnJhbWUmLCBjb25zdCBJbnRQb2ludCYgbW91c2VEb3du
UG9pbnQsIGNvbnN0IEludFBvaW50JiBtb3VzZURyYWdnZWRQb2ludCwgRGF0YVRyYW5zZmVyJiwg
RHJhZ1NvdXJjZUFjdGlvbik7CisKICAgICAgICAgdm9pZCBjbGVhbnVwQWZ0ZXJTeXN0ZW1EcmFn
KCk7CiAgICAgICAgIHZvaWQgZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKERhdGFUcmFuc2ZlciYs
IEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKICNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RHJhZ0l0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJdGVtLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODcxMzFlMTIyZjA3ZmE4NDFlMDU5MGFmMTlhOWU2MjJiYzQ3OTNlNwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJdGVtLmgKQEAgLTAsMCArMSw0MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCisj
aW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIlBhc3RlYm9hcmRXcml0ZXJEYXRhLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IERyYWdJdGVtIGZpbmFsIHsKKyAgICBE
cmFnSW1hZ2UgaW1hZ2U7CisKKyAgICAvLyBXaGVyZSB0aGUgaW1hZ2Ugc2hvdWxkIGJlIHBvc2l0
aW9uZWQgcmVsYXRpdmUgdG8gdGhlIGN1cnNvci4KKyAgICBGbG9hdFBvaW50IGltYWdlQW5jaG9y
UG9pbnQ7CisKKyAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBkYXRhOworfTsKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLmgKaW5kZXggMDY1MjJj
NmRhNmZmYzQ0ZGE3MDk0MGQ5YTFhNDMzMTlmY2E4Mzg3OS4uMzc4ZDc0NGRhZjg5MTRjNmRiZTY3
YmQ3MWZkOTFlOTVmNTIxMmI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRXcml0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZFdyaXRlci5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGE7CiAKLVdFQkNPUkVfRVhQT1JUIFJldGFpblB0
cjxpZCA8TlNQYXN0ZWJvYXJkV3JpdGluZz4+IGNyZWF0ZVBhc3RlYm9hcmRXcml0aW5nKGNvbnN0
IFBhc3RlYm9hcmRXcml0ZXJEYXRhJik7CitXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8aWQgPE5T
UGFzdGVib2FyZFdyaXRpbmc+PiBjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKGNvbnN0IFBhc3RlYm9h
cmRXcml0ZXJEYXRhJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZFdyaXRlci5tbQppbmRleCA0YzVmMmFjNTlkNmNkZDQwYTk1NGExOWFiMzUxMzI3
ZTM1MDgzMWFjLi4zYTE4MTY1ZTEzOTU1NDQ0ZGU0NGJjZWRkNTk0YTMwZmQwMjkxNTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAt
MzMsMTQgKzMzLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmV0YWluUHRyPGlkIDxO
U1Bhc3RlYm9hcmRXcml0aW5nPj4gY3JlYXRlUGFzdGVib2FyZFdyaXRpbmcoY29uc3QgUGFzdGVi
b2FyZFdyaXRlckRhdGEmIGRhdGEpCitSZXRhaW5QdHI8aWQgPE5TUGFzdGVib2FyZFdyaXRpbmc+
PiBjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKGNvbnN0IFBhc3RlYm9hcmRXcml0ZXJEYXRhJiBkYXRh
KQogewogICAgIGF1dG8gcGFzdGVib2FyZEl0ZW0gPSBhZG9wdE5TKFtbTlNQYXN0ZWJvYXJkSXRl
bSBhbGxvY10gaW5pdF0pOwogCiAgICAgaWYgKGF1dG8mIHBsYWluVGV4dCA9IGRhdGEucGxhaW5U
ZXh0KCkpIHsKICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzpwbGFpblRleHQtPnRl
eHQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsKLSAgICAgICAgaWYgKHBsYWluVGV4
dC0+Y2FuU21hcnRDb3B5T3JEZWxldGUpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0
RGF0YTpuaWwgZm9yVHlwZTpfTlhTbWFydFBhc3RlXTsKKyAgICAgICAgaWYgKHBsYWluVGV4dC0+
Y2FuU21hcnRDb3B5T3JEZWxldGUpIHsKKyAgICAgICAgICAgIGF1dG8gc21hcnRQYXN0ZVR5cGUg
PSBhZG9wdE5TKChfX2JyaWRnZSBOU1N0cmluZyAqKVVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50
aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NOU1Bib2FyZFR5cGUsIChfX2JyaWRnZSBDRlN0cmluZ1Jl
ZilfTlhTbWFydFBhc3RlLCBudWxscHRyKSk7CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0g
c2V0RGF0YTpuaWwgZm9yVHlwZTpzbWFydFBhc3RlVHlwZS5nZXQoKV07CisgICAgICAgIH0KICAg
ICB9CiAKICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggYjZkYzg1NTFmYjhlNGQxN2I3
MmIzZWJhZjM4ZWFkMGZjMzZkZmNiMi4uZmE0NGE3ZjY1ZTgzOTc0MTA4MmIyNWYyOGMxNmI0YzI4
YTllZThhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQuaApAQCAtMzIsMTIgKzMyLDE4IEBACiBjbGFzcyBXZWJEcmFnQ2xpZW50IDogcHVi
bGljIFdlYkNvcmU6OkRyYWdDbGllbnQgewogcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQoV2Vi
VmlldyopOworCisgICAgYm9vbCB1c2VMZWdhY3lEcmFnQ2xpZW50KCkgb3ZlcnJpZGU7CisKICAg
ICB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0
aW5hdGlvbkFjdGlvbiwgY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmKSBvdmVycmlkZTsKICAgICB2
b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9u
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYpIG92ZXJy
aWRlOwogICAgIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJh
Zyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhZ0NvbnRy
b2xsZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9u
IGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHdp
bmRvd1BvaW50KSBvdmVycmlkZTsKICAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpEcmFnSW1h
Z2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkcmFnUG9zLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgZXZlbnRQb3MsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJDb3JlOjpEYXRh
VHJhbnNmZXImLCBXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24pIG92
ZXJyaWRlOworCisgICAgdm9pZCBiZWdpbkRyYWcoV2ViQ29yZTo6RHJhZ0l0ZW0sIFdlYkNvcmU6
OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1vdXNlRG93blBvc2l0aW9uLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgbW91c2VEcmFnZ2VkUG9zaXRpb24sIFdlYkNvcmU6OkRhdGFU
cmFuc2ZlciYsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24pIG92ZXJyaWRlOworCiAgICAgdm9p
ZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
V2ViQ29yZTo6RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYsIFdl
YkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
ICAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZUF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgV2ViQ29yZTo6RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0
cmluZyYgcGF0aCwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCmluZGV4IGIwMjJiY2FlZDc2
NjZjOTM4NGY3MTk4N2JmNTVjZDc2YzdmODA0ODguLmZjOTllMWIwYzZkNzQyMzIwYzY1YWFkNjA1
YjNhNzYxY2FlMDNkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5tbQpAQCAtMzIsOCArMzIsOCBAQAogI2ltcG9ydCAiV2ViRE9NT3Bl
cmF0aW9ucy5oIgogI2ltcG9ydCAiV2ViRnJhbWUuaCIKICNpbXBvcnQgIldlYkZyYW1lSW50ZXJu
YWwuaCIKKyNpbXBvcnQgIldlYkZyYW1lVmlldy5oIgogI2ltcG9ydCAiV2ViSFRNTFZpZXdJbnRl
cm5hbC5oIgotI2ltcG9ydCAiV2ViSFRNTFZpZXdQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJLaXRM
b2dnaW5nLmgiCiAjaW1wb3J0ICJXZWJLaXROU1N0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAiV2Vi
TlNVUkxFeHRyYXMuaCIKQEAgLTU1LDYgKzU1LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvTWFpbkZy
YW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVi
b2FyZC5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkV3JpdGVyLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC02Niw2ICs2NywxMSBAQCBXZWJEcmFnQ2xpZW50OjpXZWJE
cmFnQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCiAKICNpZiBQTEFURk9STShNQUMpCiAKK2Jvb2wg
V2ViRHJhZ0NsaWVudDo6dXNlTGVnYWN5RHJhZ0NsaWVudCgpCit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCiBzdGF0aWMgV2ViSFRNTFZpZXcgKmdldFRvcEhUTUxWaWV3KEZyYW1lKiBmcmFtZSkK
IHsKICAgICBBU1NFUlQoZnJhbWUpOwpAQCAtMTMwLDYgKzEzNiwyNSBAQCB2b2lkIFdlYkRyYWdD
bGllbnQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2UgZHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYgYXQs
IGNvbnN0IEludAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogfQogCit2b2lkIFdlYkRy
YWdDbGllbnQ6OmJlZ2luRHJhZyhEcmFnSXRlbSBkcmFnSXRlbSwgRnJhbWUmIGZyYW1lLCBjb25z
dCBJbnRQb2ludCYgbW91c2VEb3duUG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBtb3VzZURyYWdn
ZWRQb3NpdGlvbiwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIERyYWdTb3VyY2VBY3Rpb24g
ZHJhZ1NvdXJjZUFjdGlvbikKK3sKKyAgICBBU1NFUlQoIWRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJk
KCkuaGFzRGF0YSgpKTsKKworICAgIFJldGFpblB0cjxXZWJIVE1MVmlldz4gdG9wV2ViSFRNTFZp
ZXcgPSBkeW5hbWljX29iamNfY2FzdDxXZWJIVE1MVmlldz4obV93ZWJWaWV3Lm1haW5GcmFtZS5m
cmFtZVZpZXcuZG9jdW1lbnRWaWV3KTsKKyAgICBBU1NFUlQodG9wV2ViSFRNTFZpZXcpOworCisg
ICAgYXV0byBkcmFnZ2luZ0l0ZW0gPSBhZG9wdE5TKFtbTlNEcmFnZ2luZ0l0ZW0gYWxsb2NdIGlu
aXRXaXRoUGFzdGVib2FyZFdyaXRlcjpjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKGRyYWdJdGVtLmRh
dGEpLmdldCgpXSk7CisKKyAgICBOU1NpemUgZHJhZ0ltYWdlU2l6ZSA9IFtkcmFnSXRlbS5pbWFn
ZS5nZXQoKSBzaXplXTsKKworICAgIE5TUmVjdCBkcmFnZ2luZ0ZyYW1lID0gTlNNYWtlUmVjdCht
b3VzZURyYWdnZWRQb3NpdGlvbi54KCkgLSBkcmFnSW1hZ2VTaXplLndpZHRoICogZHJhZ0l0ZW0u
aW1hZ2VBbmNob3JQb2ludC54KCksIG1vdXNlRHJhZ2dlZFBvc2l0aW9uLnkoKSAtIGRyYWdJbWFn
ZVNpemUuaGVpZ2h0ICogZHJhZ0l0ZW0uaW1hZ2VBbmNob3JQb2ludC55KCksIGRyYWdJbWFnZVNp
emUud2lkdGgsIGRyYWdJbWFnZVNpemUuaGVpZ2h0KTsKKyAgICBbZHJhZ2dpbmdJdGVtIHNldERy
YWdnaW5nRnJhbWU6ZHJhZ2dpbmdGcmFtZSBjb250ZW50czpkcmFnSXRlbS5pbWFnZS5nZXQoKS5n
ZXQoKV07CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gbWFrZSBhIGZha2Ug
ZXZlbnQgd2l0aCB0aGUgbW9zdWUgZHJhZ2dlZCBjb29yZGluYXRlcy4KKyAgICBOU0V2ZW50ICpl
dmVudCA9IGZyYW1lLmV2ZW50SGFuZGxlcigpLmN1cnJlbnROU0V2ZW50KCk7CisgICAgW3RvcFdl
YkhUTUxWaWV3LmdldCgpIGJlZ2luRHJhZ2dpbmdTZXNzaW9uV2l0aEl0ZW1zOkBbIGRyYWdnaW5n
SXRlbS5nZXQoKSBdIGV2ZW50OmV2ZW50IHNvdXJjZTp0b3BXZWJIVE1MVmlldy5nZXQoKV07Cit9
CisKIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBXZWJDb3JlOjpGcmFtZSogZnJhbWUpCiB7CiAgICAgQVNTRVJU
KHBhc3RlYm9hcmROYW1lKTsKQEAgLTE0Nyw2ICsxNzIsMTAgQEAgdm9pZCBXZWJEcmFnQ2xpZW50
OjpkZWNsYXJlQW5kV3JpdGVBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IEVsZW0KIAogI2Vsc2UKIAorYm9vbCBXZWJEcmFnQ2xpZW50Ojp1c2VMZWdhY3lEcmFnQ2xpZW50
KCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CiBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rp
b24gV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0Rh
dGEmKQogewogICAgIHJldHVybiBEcmFnRGVzdGluYXRpb25BY3Rpb25Ob25lOwpAQCAtMTY5LDYg
KzE5OCwxMCBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhXZWJDb3JlOjpEcmFnSW1h
Z2UsIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UG9pbgogewogfQogCit2b2lkIFdlYkRyYWdD
bGllbnQ6OmJlZ2luRHJhZyhEcmFnSXRlbSwgRnJhbWUmLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0
IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJiwgRHJhZ1NvdXJjZUFjdGlvbikKK3sKK30KKwogdm9p
ZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiwg
RWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZyYW1lKikKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDg0NTc2NTZh
NmFjNjQ0NDdjNjBkNWQ3ZDNiYTkyYWFkMmQxOTAzM2YuLmRlZTAzMjQ5NWU2ODgzOTA3NjIwNjM2
NTZiN2QyZmI5ZGNlMTgzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQpAQCAtNDY5MSw2ICs0NjkxLDQyIEBAIHN0YXRpYyBib29sIG1hdGNoZXNFeHRlbnNpb25P
ckVxdWl2YWxlbnQoTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uCiAgICAg
CiAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpbcGF0aCBsYXN0UGF0aENvbXBv
bmVudF1dOwogfQorCisvLyBNQVJLOiBOU0RyYWdnaW5nU291cmNlCisKKy0gKE5TRHJhZ09wZXJh
dGlvbilkcmFnZ2luZ1Nlc3Npb246KE5TRHJhZ2dpbmdTZXNzaW9uICopc2Vzc2lvbiBzb3VyY2VP
cGVyYXRpb25NYXNrRm9yRHJhZ2dpbmdDb250ZXh0OihOU0RyYWdnaW5nQ29udGV4dCljb250ZXh0
Cit7CisgICAgQVNTRVJUKCFbc2VsZiBfd2ViVmlld10gfHwgW3NlbGYgX2lzVG9wSFRNTFZpZXdd
KTsKKworICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKFtzZWxmIF93ZWJWaWV3XSk7CisgICAgaWYgKCFw
YWdlKQorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsKKworICAgIHJldHVybiAo
TlNEcmFnT3BlcmF0aW9uKXBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlv
bigpOworfQorCistICh2b2lkKWRyYWdnaW5nU2Vzc2lvbjooTlNEcmFnZ2luZ1Nlc3Npb24gKilz
ZXNzaW9uIGVuZGVkQXRQb2ludDooTlNQb2ludClzY3JlZW5Qb2ludCBvcGVyYXRpb246KE5TRHJh
Z09wZXJhdGlvbilvcGVyYXRpb24KK3sKKyAgICBBU1NFUlQoIVtzZWxmIF93ZWJWaWV3XSB8fCBb
c2VsZiBfaXNUb3BIVE1MVmlld10pOworCisgICAgTlNQb2ludCB3aW5kb3dMb2NhdGlvbiA9IFtz
ZWxmLndpbmRvdyBjb252ZXJ0UmVjdEZyb21TY3JlZW46eyBzY3JlZW5Qb2ludCwgTlNaZXJvU2l6
ZSB9XS5vcmlnaW47CisKKyAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmUoW3NlbGYgX3dlYlZpZXdd
KSkKKyAgICAgICAgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW5kZWQoKTsKKworICAgIFtb
c2VsZiBfZnJhbWVdIF9kcmFnU291cmNlRW5kZWRBdDp3aW5kb3dMb2NhdGlvbiBvcGVyYXRpb246
b3BlcmF0aW9uXTsKKworICAgIC8vIFByZXZlbnQgcXVldWVkIG1vdXNlRHJhZ2dlZCBldmVudHMg
ZnJvbSBjb21pbmcgYWZ0ZXIgdGhlIGRyYWcgYW5kIGZha2UgbW91c2VVcCBldmVudC4KKyAgICBf
cHJpdmF0ZS0+aWdub3JpbmdNb3VzZURyYWdnZWRFdmVudHMgPSBZRVM7CisKKyAgICAvLyBPbmNl
IHRoZSBkcmFnZ2luZyBtYWNoaW5lcnkga2lja3MgaW4sIHdlIG5vIGxvbmdlciBnZXQgbW91c2Ug
ZHJhZ3Mgb3IgdGhlIHVwIGV2ZW50LgorICAgIC8vIFdlYkNvcmUgZXhwZWN0cyB0byBnZXQgYmFs
YW5jZWQgZG93bi91cCdzLCBzbyB3ZSBtdXN0IGZha2UgdXAgYSBtb3VzZXVwLgorICAgIE5TRXZl
bnQgKmZha2VFdmVudCA9IFtOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUxl
ZnRNb3VzZVVwIGxvY2F0aW9uOndpbmRvd0xvY2F0aW9uIG1vZGlmaWVyRmxhZ3M6W05TQXBwIGN1
cnJlbnRFdmVudF0ubW9kaWZpZXJGbGFncyB0aW1lc3RhbXA6W05TRGF0ZSB0aW1lSW50ZXJ2YWxT
aW5jZVJlZmVyZW5jZURhdGVdIHdpbmRvd051bWJlcjpzZWxmLndpbmRvdy4gd2luZG93TnVtYmVy
IGNvbnRleHQ6bnVsbHB0ciBldmVudE51bWJlcjowIGNsaWNrQ291bnQ6MCBwcmVzc3VyZTowXTsK
KworICAgIC8vIFRoaXMgd2lsbCBhbHNvIHVwZGF0ZSB0aGUgbW91c2VvdmVyIHN0YXRlLgorICAg
IFtzZWxmIG1vdXNlVXA6ZmFrZUV2ZW50XTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NV
UFBPUlQpICYmIFBMQVRGT1JNKE1BQykKIAogI2lmICFQTEFURk9STShJT1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXdJbnRlcm5hbC5oCmluZGV4IGU1YmIxZWNj
MWQwMmQyNGQ1MGYzYjkyZjg5MjFkNTJhYjg2MjlmM2EuLmE0ZDljZDkzOGIxYWEyNzMzMzZjOTRl
N2Y2OGIxMTU5MTk4MzllYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXdJbnRlcm5hbC5oCkBAIC0zOCw2ICszOCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgS2V5Ym9hcmRFdmVudDsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykKK0BpbnRl
cmZhY2UgV2ViSFRNTFZpZXcgKCkgPE5TRHJhZ2dpbmdTb3VyY2U+CitAZW5kCisjZW5kaWYKKwog
QGludGVyZmFjZSBXZWJIVE1MVmlldyAoV2ViSW50ZXJuYWwpCiAtICh2b2lkKV9zZWxlY3Rpb25D
aGFuZ2VkOwogI2lmICFQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTRkNWFmODM3M2I2M2JkYjY5ZTI0MzVjZGJiZTQ4YTRm
ZDllMzg2Yy4uMDgzYzMyMGRjN2YxYmIyMDhhYTYyNDQyZmU0YWI4M2Y4ZmRiZDY2MyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDE3LTAyLTE3ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGEgbmV3IGRyYWcgY29kZSBwYXRoIGFuZCB1c2UgaXQgZm9yIGRyYWdnaW5n
IHBsYWluIHRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2ODUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZSB0aGUgdGVzdGluZyBpbmZyYXN0cnVjdHVyZSB0byBoYW5kbGUgTlNEcmFnZ2lu
Z1Nlc3Npb24uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZVBhc3RlYm9hcmQubW06IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm0uCisgICAgICAgICgtW0xvY2FsUGFzdGVi
b2FyZCB3cml0ZU9iamVjdHM6XSk6CisgICAgICAgIEltcGxlbWVudCB0aGlzIGluIHRlcm1zIG9m
IHRoZSBsZWdhY3kgcGFzdGVib2FyZCBBUEkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbToKKyAgICAgICAgKGRydF9XZWJIVE1MVmlld19i
ZWdpbkRyYWdnaW5nU2Vzc2lvbldpdGhJdGVtc0V2ZW50U291cmNlKToKKyAgICAgICAgKCtbRXZl
bnRTZW5kaW5nQ29udHJvbGxlciBpbml0aWFsaXplXSk6CisgICAgICAgIFN3aXp6bGUgdGhlIGRy
YWcgbWV0aG9kIGluc3RlYWQgb2YgYWRkaW5nIGEgZGVsZWdhdGUgbWV0aG9kIChsaWtlIHRoZSBv
bGQgY29kZSBkb2VzKS4KKwogMjAxNy0wMi0xNyAgU3Jpbml2YXNhbiBWaWpheWFyYWdoYXZhbiAg
PHN2aWpheWFyYWdoYXZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgRVdTIHNob3VsZCBydW4gSmF2
YVNjcmlwdENvcmUgdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ2OGRkMzU0
MDhmZDdlNjUxODRiOGY1ODYxMTkzY2VjZmU1Mzk3NzAuLjdlZWNlMDhiOWY5ZDQyN2YxOTM5NDM5
N2MyOGVmOWFjMGQ3OWFjOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA5LDcg
KzEwOSw3IEBACiAJCUExMTU4RDU5MTg5Mjc0MzYwMDg4QzE3QiAvKiBQaXhlbER1bXBTdXBwb3J0
SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEx
NThENTcxODkyNzNFQjAwODhDMTdCIC8qIFBpeGVsRHVtcFN1cHBvcnRJT1MubW0gKi87IH07CiAJ
CUExMzRFNTMxMTg4RkMyNzAwMDkwMUQwNiAvKiBEdW1wUmVuZGVyVHJlZU1haW4ubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTM0RTUyRjE4OEZDMjcw
MDA5MDFEMDYgLyogRHVtcFJlbmRlclRyZWVNYWluLm1tICovOyB9OwogCQlBMTM0RTUzNjE4OTA1
RUZGMDA5MDFEMDYgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMEUyNjE0MEUyREE0QzYwMDFCNkJDMyAv
KiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tICovOyB9OwotCQlBOEI5MUFEQTBDRjNCMzJGMDA4
RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEI5MUFENzBDRjNCMzJGMDA4RjkxRkYgLyogRHVt
cFJlbmRlclRyZWVQYXN0ZWJvYXJkLm0gKi87IH07CisJCUE4QjkxQURBMENGM0IzMkYwMDhGOTFG
RiAvKiBEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEI5MUFENzBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJl
bmRlclRyZWVQYXN0ZWJvYXJkLm1tICovOyB9OwogCQlBOEI5MUFEQzBDRjNCMzJGMDA4RjkxRkYg
LyogRHVtcFJlbmRlclRyZWVXaW5kb3cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOEI5MUFEOTBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRy
ZWVXaW5kb3cubW0gKi87IH07CiAJCUE4RDc5Q0VCMEZDMjhCMkMwMDRBQzhGRSAvKiBEdW1wUmVu
ZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThENzlDRTkwRkMyOEIyQzAwNEFDOEZFIC8qIER1bXBSZW5kZXJU
cmVlRmlsZURyYWdnaW5nU291cmNlLm0gKi87IH07CiAJCUE5QkI3QzVDMUM1MDUyNzgwMDJDNTI1
QiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE5QkI3QzVCMUM1MDUyNzgwMDJDNTI1QiAvKiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSAqLzsgfTsKQEAgLTM0Myw3ICszNDMsNyBAQAogCQlB
ODAzRkY3NDA5Q0FBRDA4MDA5QjJBMzcgLyogRHVtcFJlbmRlclRyZWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgZmls
ZUVuY29kaW5nID0gNDsgcGF0aCA9IER1bXBSZW5kZXJUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE4MTcwOTAzMDhCMTY0RDMwMENDQjlGQiAvKiBKYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB3cmFwcGVyLmZyYW1ld29yazsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJQTg0RjYwODkwOEIxMzZEQTAwRTk3
NDVGIC8qIENvY29hLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29jb2EuZnJhbWV3b3Jr
OyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29jb2EuZnJhbWV3b3JrOyBzb3Vy
Y2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwotCQlBOEI5MUFENzBDRjNCMzJGMDA4RjkxRkYgLyog
RHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsg
bmFtZSA9IER1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tOyBwYXRoID0gbWFjL0R1bXBSZW5kZXJU
cmVlUGFzdGVib2FyZC5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEI5MUFENzBD
RjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1t
OyBwYXRoID0gbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQThCOTFBRDkwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVl
V2luZG93Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRHVtcFJl
bmRlclRyZWVXaW5kb3cubW07IHBhdGggPSBtYWMvRHVtcFJlbmRlclRyZWVXaW5kb3cubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QjkxQUREMENGM0IzNzIwMDhGOTFGRiAvKiBE
dW1wUmVuZGVyVHJlZVdpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
dW1wUmVuZGVyVHJlZVdpbmRvdy5oOyBwYXRoID0gbWFjL0R1bXBSZW5kZXJUcmVlV2luZG93Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QjkxQURGMENGM0IzNzIwMDhGOTFGRiAv
KiBEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLmg7IHBhdGggPSBtYWMvRHVtcFJlbmRlclRy
ZWVQYXN0ZWJvYXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03ODAsNyArNzgw
LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQThCOTFBREYw
Q0YzQjM3MjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5oICovLAotCQkJCUE4
QjkxQUQ3MENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubSAqLywK
KwkJCQlBOEI5MUFENzBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJk
Lm1tICovLAogCQkJCTJEQTJFM0EzMUUxQkE1NDEwMEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNw
ZWxsQ2hlY2tlci5oICovLAogCQkJCTJEQTJFM0E0MUUxQkE1NDEwMEEzQkJEMCAvKiBEdW1wUmVu
ZGVyVHJlZVNwZWxsQ2hlY2tlci5tbSAqLywKIAkJCQlBOEI5MUFERDBDRjNCMzcyMDA4RjkxRkYg
LyogRHVtcFJlbmRlclRyZWVXaW5kb3cuaCAqLywKQEAgLTExMTEsNyArMTExMSw3IEBACiAJCQkJ
OTgzMEYzMUYxNUM4MTE4MTAwNUFCMjA2IC8qIER1bXBSZW5kZXJUcmVlQ29tbW9uLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDQTE4QjdCMEM5QjA4RjEwMDExNDM2OSAvKiBEdW1wUmVuZGVyVHJl
ZURyYWdnaW5nSW5mby5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4RDc5Q0VCMEZDMjhCMkMwMDRB
QzhGRSAvKiBEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJQThCOTFBREEwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlUGFzdGVib2Fy
ZC5tIGluIFNvdXJjZXMgKi8sCisJCQkJQThCOTFBREEwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBS
ZW5kZXJUcmVlUGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4QjkxQURDMENGM0Iz
MkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUJDQTE4QjYyMEM5QjA4QzIwMDExNDM2OSAvKiBFZGl0aW5nRGVsZWdhdGUubW0gaW4gU291cmNl
cyAqLywKIAkJCQlCQ0ExOEI3MDBDOUIwOERCMDAxMTQzNjkgLyogRXZlbnRTZW5kaW5nQ29udHJv
bGxlci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0MmIxZTY1M2Y2YzRjNjQwZDNlZmQzNzE1YzU2Njk3NTlkNGU4NjFhLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubQorKysgL2Rldi9udWxsCkBAIC0xLDIxOCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlLCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogICAgICAgICAgIChDKSAyMDA3IEdyYWhhbSBEZW5uaXMg
KGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQotICogICAgICAgICAgIChDKSAyMDA3IEVyaWMgU2Vp
ZGVsIDxlcmljQHdlYmtpdC5vcmc+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkR1bXBSZW5kZXJUcmVl
TWFjLmgiCi0jaW1wb3J0ICJEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQuaCIKLQotI2lmICFQTEFU
Rk9STShJT1MpCi0KLSNpbXBvcnQgPFdlYktpdC9XZWJUeXBlc0ludGVybmFsLmg+Ci0KLUBpbnRl
cmZhY2UgTG9jYWxQYXN0ZWJvYXJkIDogTlNQYXN0ZWJvYXJkCi17Ci0gICAgTlNNdXRhYmxlQXJy
YXkgKnR5cGVzQXJyYXk7Ci0gICAgTlNNdXRhYmxlU2V0ICp0eXBlc1NldDsKLSAgICBOU011dGFi
bGVEaWN0aW9uYXJ5ICpkYXRhQnlUeXBlOwotICAgIE5TSW50ZWdlciBjaGFuZ2VDb3VudDsKLSAg
ICBOU1N0cmluZyAqcGFzdGVib2FyZE5hbWU7Ci19Ci0KLS0oaWQpaW5pdFdpdGhOYW1lOihOU1N0
cmluZyAqKW5hbWU7Ci1AZW5kCi0KLXN0YXRpYyBOU011dGFibGVEaWN0aW9uYXJ5ICpsb2NhbFBh
c3RlYm9hcmRzOwotCi1AaW1wbGVtZW50YXRpb24gRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkCi0K
LS8vIFJldHVybiBhIGxvY2FsIHBhc3RlYm9hcmQgc28gd2UgZG9uJ3QgZGlzdHVyYiB0aGUgcmVh
bCBwYXN0ZWJvYXJkcyB3aGVuIHJ1bm5pbmcgdGVzdHMuCi0rIChOU1Bhc3RlYm9hcmQgKilfcGFz
dGVib2FyZFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBzdGF0aWMgaW50IG51bWJl
ciA9IDA7Ci0gICAgaWYgKCFuYW1lKQotICAgICAgICBuYW1lID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJMb2NhbFBhc3RlYm9hcmQlZCIsICsrbnVtYmVyXTsKLSAgICBpZiAoIWxvY2Fs
UGFzdGVib2FyZHMpCi0gICAgICAgIGxvY2FsUGFzdGVib2FyZHMgPSBbW05TTXV0YWJsZURpY3Rp
b25hcnkgYWxsb2NdIGluaXRdOwotICAgIExvY2FsUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFts
b2NhbFBhc3RlYm9hcmRzIG9iamVjdEZvcktleTpuYW1lXTsKLSAgICBpZiAocGFzdGVib2FyZCkK
LSAgICAgICAgcmV0dXJuIHBhc3RlYm9hcmQ7Ci0gICAgcGFzdGVib2FyZCA9IFtbTG9jYWxQYXN0
ZWJvYXJkIGFsbG9jXSBpbml0V2l0aE5hbWU6bmFtZV07Ci0gICAgW2xvY2FsUGFzdGVib2FyZHMg
c2V0T2JqZWN0OnBhc3RlYm9hcmQgZm9yS2V5Om5hbWVdOwotICAgIFtwYXN0ZWJvYXJkIHJlbGVh
c2VdOwotICAgIHJldHVybiBwYXN0ZWJvYXJkOwotfQotCi0rICh2b2lkKXJlbGVhc2VMb2NhbFBh
c3RlYm9hcmRzCi17Ci0gICAgW2xvY2FsUGFzdGVib2FyZHMgcmVsZWFzZV07Ci0gICAgbG9jYWxQ
YXN0ZWJvYXJkcyA9IG5pbDsKLX0KLQotLy8gQ29udmVuaWVuY2UgbWV0aG9kIGZvciBKUyBzbyB0
aGF0IGl0IGRvZXNuJ3QgaGF2ZSB0byB0cnkgYW5kIGNyZWF0ZSBhIE5TQXJyYXkgb24gdGhlIG9i
amMgc2lkZSBpbnN0ZWFkCi0vLyBvZiB0aGUgdXN1YWwgV2ViU2NyaXB0T2JqZWN0IHRoYXQgaXMg
cGFzc2VkIGFyb3VuZAotLSAoTlNJbnRlZ2VyKWRlY2xhcmVUeXBlOihOU1N0cmluZyAqKXR5cGUg
b3duZXI6KGlkKW5ld093bmVyCi17Ci0gICAgcmV0dXJuIFtzZWxmIGRlY2xhcmVUeXBlczpbTlNB
cnJheSBhcnJheVdpdGhPYmplY3Q6dHlwZV0gb3duZXI6bmV3T3duZXJdOwotfQotCi1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBMb2NhbFBhc3RlYm9hcmQKLQotKyAoaWQpYWxsb2MKLXsKLSAgICBy
ZXR1cm4gTlNBbGxvY2F0ZU9iamVjdChzZWxmLCAwLCAwKTsKLX0KLQotLSAoaWQpaW5pdFdpdGhO
YW1lOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlm
ICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB0eXBlc0FycmF5ID0gW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdF07Ci0gICAgdHlwZXNTZXQgPSBbW05TTXV0YWJsZVNldCBhbGxv
Y10gaW5pdF07Ci0gICAgZGF0YUJ5VHlwZSA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10g
aW5pdF07Ci0gICAgcGFzdGVib2FyZE5hbWUgPSBbbmFtZSBjb3B5XTsKLSAgICByZXR1cm4gc2Vs
ZjsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW3R5cGVzQXJyYXkgcmVsZWFzZV07Ci0g
ICAgW3R5cGVzU2V0IHJlbGVhc2VdOwotICAgIFtkYXRhQnlUeXBlIHJlbGVhc2VdOwotICAgIFtw
YXN0ZWJvYXJkTmFtZSByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKE5T
U3RyaW5nICopbmFtZQotewotICAgIHJldHVybiBwYXN0ZWJvYXJkTmFtZTsKLX0KLQotLSAodm9p
ZClyZWxlYXNlR2xvYmFsbHkKLXsKLX0KLQotLSAoTlNJbnRlZ2VyKWRlY2xhcmVUeXBlczooTlNB
cnJheSAqKW5ld1R5cGVzIG93bmVyOihpZCluZXdPd25lcgotewotICAgIFt0eXBlc0FycmF5IHJl
bW92ZUFsbE9iamVjdHNdOwotICAgIFt0eXBlc1NldCByZW1vdmVBbGxPYmplY3RzXTsKLSAgICBb
ZGF0YUJ5VHlwZSByZW1vdmVBbGxPYmplY3RzXTsKLSAgICByZXR1cm4gW3NlbGYgYWRkVHlwZXM6
bmV3VHlwZXMgb3duZXI6bmV3T3duZXJdOwotfQotCi0tIChOU0ludGVnZXIpYWRkVHlwZXM6KE5T
QXJyYXkgKiluZXdUeXBlcyBvd25lcjooaWQpbmV3T3duZXIKLXsKLSAgICB1bnNpZ25lZCBjb3Vu
dCA9IFtuZXdUeXBlcyBjb3VudF07Ci0gICAgdW5zaWduZWQgaTsKLSAgICBmb3IgKGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgewotICAgICAgICBOU1N0cmluZyAqdHlwZSA9IFtuZXdUeXBlcyBvYmpl
Y3RBdEluZGV4OmldOwotICAgICAgICBOU1N0cmluZyAqc2V0VHlwZSA9IFt0eXBlc1NldCBtZW1i
ZXI6dHlwZV07Ci0gICAgICAgIGlmICghc2V0VHlwZSkgewotICAgICAgICAgICAgc2V0VHlwZSA9
IFt0eXBlIGNvcHldOwotICAgICAgICAgICAgW3R5cGVzQXJyYXkgYWRkT2JqZWN0OnNldFR5cGVd
OwotICAgICAgICAgICAgW3R5cGVzU2V0IGFkZE9iamVjdDpzZXRUeXBlXTsKLSAgICAgICAgICAg
IFtzZXRUeXBlIHJlbGVhc2VdOwotICAgICAgICB9Ci0gICAgICAgIGlmIChuZXdPd25lciAmJiBb
bmV3T3duZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYXN0ZWJvYXJkOnByb3ZpZGVE
YXRhRm9yVHlwZTopXSkKLSAgICAgICAgICAgIFtuZXdPd25lciBwYXN0ZWJvYXJkOnNlbGYgcHJv
dmlkZURhdGFGb3JUeXBlOnNldFR5cGVdOwotICAgIH0KLSAgICByZXR1cm4gKytjaGFuZ2VDb3Vu
dDsKLX0KLQotLSAoTlNJbnRlZ2VyKWNoYW5nZUNvdW50Ci17Ci0gICAgcmV0dXJuIGNoYW5nZUNv
dW50OwotfQotCi0tIChOU0FycmF5ICopdHlwZXMKLXsKLSAgICByZXR1cm4gdHlwZXNBcnJheTsK
LX0KLQotLSAoTlNTdHJpbmcgKilhdmFpbGFibGVUeXBlRnJvbUFycmF5OihOU0FycmF5ICopdHlw
ZXMKLXsKLSAgICB1bnNpZ25lZCBjb3VudCA9IFt0eXBlcyBjb3VudF07Ci0gICAgdW5zaWduZWQg
aTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBOU1N0cmluZyAq
dHlwZSA9IFt0eXBlcyBvYmplY3RBdEluZGV4OmldOwotICAgICAgICBOU1N0cmluZyAqc2V0VHlw
ZSA9IFt0eXBlc1NldCBtZW1iZXI6dHlwZV07Ci0gICAgICAgIGlmIChzZXRUeXBlKQotICAgICAg
ICAgICAgcmV0dXJuIHNldFR5cGU7Ci0gICAgfQotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKEJP
T0wpc2V0RGF0YTooTlNEYXRhICopZGF0YSBmb3JUeXBlOihOU1N0cmluZyAqKWRhdGFUeXBlCi17
Ci0gICAgaWYgKGRhdGEgPT0gbmlsKQotICAgICAgICBkYXRhID0gW05TRGF0YSBkYXRhXTsKLSAg
ICBpZiAoIVt0eXBlc1NldCBjb250YWluc09iamVjdDpkYXRhVHlwZV0pCi0gICAgICAgIHJldHVy
biBOTzsKLSAgICBbZGF0YUJ5VHlwZSBzZXRPYmplY3Q6ZGF0YSBmb3JLZXk6ZGF0YVR5cGVdOwot
ICAgICsrY2hhbmdlQ291bnQ7Ci0gICAgcmV0dXJuIFlFUzsKLX0KLQotLSAoTlNEYXRhICopZGF0
YUZvclR5cGU6KE5TU3RyaW5nICopZGF0YVR5cGUKLXsKLSAgICByZXR1cm4gW2RhdGFCeVR5cGUg
b2JqZWN0Rm9yS2V5OmRhdGFUeXBlXTsKLX0KLQotLSAoQk9PTClzZXRQcm9wZXJ0eUxpc3Q6KGlk
KXByb3BlcnR5TGlzdCBmb3JUeXBlOihOU1N0cmluZyAqKWRhdGFUeXBlCi17Ci0gICAgQ0ZEYXRh
UmVmIGRhdGEgPSBOVUxMOwotICAgIGlmIChwcm9wZXJ0eUxpc3QpCi0gICAgICAgIGRhdGEgPSBD
RlByb3BlcnR5TGlzdENyZWF0ZVhNTERhdGEoTlVMTCwgcHJvcGVydHlMaXN0KTsKLSAgICBCT09M
IHJlc3VsdCA9IFtzZWxmIHNldERhdGE6KE5TRGF0YSAqKWRhdGEgZm9yVHlwZTpkYXRhVHlwZV07
Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIENGUmVsZWFzZShkYXRhKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi0tIChCT09MKXNldFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgZm9yVHlwZToo
TlNTdHJpbmcgKilkYXRhVHlwZQotewotICAgIENGRGF0YVJlZiBkYXRhID0gTlVMTDsKLSAgICBp
ZiAoc3RyaW5nKSB7Ci0gICAgICAgIGlmIChbc3RyaW5nIGxlbmd0aF0gPT0gMCkKLSAgICAgICAg
ICAgIGRhdGEgPSBDRkRhdGFDcmVhdGUoTlVMTCwgTlVMTCwgMCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGRhdGEgPSBDRlN0cmluZ0NyZWF0ZUV4dGVybmFsUmVwcmVzZW50YXRpb24oTlVM
TCwgKENGU3RyaW5nUmVmKXN0cmluZywga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCAwKTsKLSAgICB9
Ci0gICAgQk9PTCByZXN1bHQgPSBbc2VsZiBzZXREYXRhOihOU0RhdGEgKilkYXRhIGZvclR5cGU6
ZGF0YVR5cGVdOwotICAgIGlmIChkYXRhKQotICAgICAgICBDRlJlbGVhc2UoZGF0YSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9h
cmQubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJk
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1N2JmNWIyNWE0NmRiYjZhNmZjNmJkOGMzMGIzMTc0OTdmOGIxMGUK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWVQYXN0ZWJvYXJkLm1tCkBAIC0wLDAgKzEsMjM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA1LCAyMDA2LCAyMDA3IEFwcGxlLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICAg
ICAgICAgIChDKSAyMDA3IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQor
ICogICAgICAgICAgIChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAK
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5oIgorCisjaW1wb3J0ICJE
dW1wUmVuZGVyVHJlZU1hYy5oIgorCisjaWYgIVBMQVRGT1JNKElPUykKKworI2ltcG9ydCA8V2Vi
S2l0L1dlYlR5cGVzSW50ZXJuYWwuaD4KKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK0BpbnRlcmZhY2UgTG9jYWxQYXN0ZWJvYXJkIDogTlNQ
YXN0ZWJvYXJkIHsKKyAgICBOU011dGFibGVBcnJheSAqdHlwZXNBcnJheTsKKyAgICBOU011dGFi
bGVTZXQgKnR5cGVzU2V0OworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmRhdGFCeVR5cGU7Cisg
ICAgTlNJbnRlZ2VyIGNoYW5nZUNvdW50OworICAgIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZTsK
K30KKworLShpZClpbml0V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZTsKK0BlbmQKKworc3RhdGlj
IE5TTXV0YWJsZURpY3Rpb25hcnkgKmxvY2FsUGFzdGVib2FyZHM7CisKK0BpbXBsZW1lbnRhdGlv
biBEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQKKworLy8gUmV0dXJuIGEgbG9jYWwgcGFzdGVib2Fy
ZCBzbyB3ZSBkb24ndCBkaXN0dXJiIHRoZSByZWFsIHBhc3RlYm9hcmRzIHdoZW4gcnVubmluZyB0
ZXN0cy4KKysgKE5TUGFzdGVib2FyZCAqKV9wYXN0ZWJvYXJkV2l0aE5hbWU6KE5TU3RyaW5nICop
bmFtZQoreworICAgIHN0YXRpYyBpbnQgbnVtYmVyID0gMDsKKyAgICBpZiAoIW5hbWUpCisgICAg
ICAgIG5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkxvY2FsUGFzdGVib2FyZCVk
IiwgKytudW1iZXJdOworICAgIGlmICghbG9jYWxQYXN0ZWJvYXJkcykKKyAgICAgICAgbG9jYWxQ
YXN0ZWJvYXJkcyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgTG9j
YWxQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW2xvY2FsUGFzdGVib2FyZHMgb2JqZWN0Rm9yS2V5
Om5hbWVdOworICAgIGlmIChwYXN0ZWJvYXJkKQorICAgICAgICByZXR1cm4gcGFzdGVib2FyZDsK
KyAgICBwYXN0ZWJvYXJkID0gW1tMb2NhbFBhc3RlYm9hcmQgYWxsb2NdIGluaXRXaXRoTmFtZTpu
YW1lXTsKKyAgICBbbG9jYWxQYXN0ZWJvYXJkcyBzZXRPYmplY3Q6cGFzdGVib2FyZCBmb3JLZXk6
bmFtZV07CisgICAgW3Bhc3RlYm9hcmQgcmVsZWFzZV07CisgICAgcmV0dXJuIHBhc3RlYm9hcmQ7
Cit9CisKKysgKHZvaWQpcmVsZWFzZUxvY2FsUGFzdGVib2FyZHMKK3sKKyAgICBbbG9jYWxQYXN0
ZWJvYXJkcyByZWxlYXNlXTsKKyAgICBsb2NhbFBhc3RlYm9hcmRzID0gbmlsOworfQorCisvLyBD
b252ZW5pZW5jZSBtZXRob2QgZm9yIEpTIHNvIHRoYXQgaXQgZG9lc24ndCBoYXZlIHRvIHRyeSBh
bmQgY3JlYXRlIGEgTlNBcnJheSBvbiB0aGUgb2JqYyBzaWRlIGluc3RlYWQKKy8vIG9mIHRoZSB1
c3VhbCBXZWJTY3JpcHRPYmplY3QgdGhhdCBpcyBwYXNzZWQgYXJvdW5kCistIChOU0ludGVnZXIp
ZGVjbGFyZVR5cGU6KE5TU3RyaW5nICopdHlwZSBvd25lcjooaWQpbmV3T3duZXIKK3sKKyAgICBy
ZXR1cm4gW3NlbGYgZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDp0eXBlXSBv
d25lcjpuZXdPd25lcl07Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIExvY2FsUGFzdGVi
b2FyZAorCisrIChpZClhbGxvYworeworICAgIHJldHVybiBOU0FsbG9jYXRlT2JqZWN0KHNlbGYs
IDAsIDApOworfQorCistIChpZClpbml0V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAg
IHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmls
OworICAgIHR5cGVzQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKyAgICB0
eXBlc1NldCA9IFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XTsKKyAgICBkYXRhQnlUeXBlID0g
W1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICBwYXN0ZWJvYXJkTmFtZSA9
IFtuYW1lIGNvcHldOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sK
KyAgICBbdHlwZXNBcnJheSByZWxlYXNlXTsKKyAgICBbdHlwZXNTZXQgcmVsZWFzZV07CisgICAg
W2RhdGFCeVR5cGUgcmVsZWFzZV07CisgICAgW3Bhc3RlYm9hcmROYW1lIHJlbGVhc2VdOworICAg
IFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAoTlNTdHJpbmcgKiluYW1lCit7CisgICAgcmV0dXJu
IHBhc3RlYm9hcmROYW1lOworfQorCistICh2b2lkKXJlbGVhc2VHbG9iYWxseQoreworfQorCist
IChOU0ludGVnZXIpZGVjbGFyZVR5cGVzOihOU0FycmF5ICopbmV3VHlwZXMgb3duZXI6KGlkKW5l
d093bmVyCit7CisgICAgW3R5cGVzQXJyYXkgcmVtb3ZlQWxsT2JqZWN0c107CisgICAgW3R5cGVz
U2V0IHJlbW92ZUFsbE9iamVjdHNdOworICAgIFtkYXRhQnlUeXBlIHJlbW92ZUFsbE9iamVjdHNd
OworICAgIHJldHVybiBbc2VsZiBhZGRUeXBlczpuZXdUeXBlcyBvd25lcjpuZXdPd25lcl07Cit9
CisKKy0gKE5TSW50ZWdlcilhZGRUeXBlczooTlNBcnJheSAqKW5ld1R5cGVzIG93bmVyOihpZClu
ZXdPd25lcgoreworICAgIHVuc2lnbmVkIGNvdW50ID0gW25ld1R5cGVzIGNvdW50XTsKKyAgICB1
bnNpZ25lZCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIE5T
U3RyaW5nICp0eXBlID0gW25ld1R5cGVzIG9iamVjdEF0SW5kZXg6aV07CisgICAgICAgIE5TU3Ry
aW5nICpzZXRUeXBlID0gW3R5cGVzU2V0IG1lbWJlcjp0eXBlXTsKKyAgICAgICAgaWYgKCFzZXRU
eXBlKSB7CisgICAgICAgICAgICBzZXRUeXBlID0gW3R5cGUgY29weV07CisgICAgICAgICAgICBb
dHlwZXNBcnJheSBhZGRPYmplY3Q6c2V0VHlwZV07CisgICAgICAgICAgICBbdHlwZXNTZXQgYWRk
T2JqZWN0OnNldFR5cGVdOworICAgICAgICAgICAgW3NldFR5cGUgcmVsZWFzZV07CisgICAgICAg
IH0KKyAgICAgICAgaWYgKG5ld093bmVyICYmIFtuZXdPd25lciByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHBhc3RlYm9hcmQ6cHJvdmlkZURhdGFGb3JUeXBlOildKQorICAgICAgICAgICAg
W25ld093bmVyIHBhc3RlYm9hcmQ6c2VsZiBwcm92aWRlRGF0YUZvclR5cGU6c2V0VHlwZV07Cisg
ICAgfQorICAgIHJldHVybiArK2NoYW5nZUNvdW50OworfQorCistIChOU0ludGVnZXIpY2hhbmdl
Q291bnQKK3sKKyAgICByZXR1cm4gY2hhbmdlQ291bnQ7Cit9CisKKy0gKE5TQXJyYXkgKil0eXBl
cworeworICAgIHJldHVybiB0eXBlc0FycmF5OworfQorCistIChOU1N0cmluZyAqKWF2YWlsYWJs
ZVR5cGVGcm9tQXJyYXk6KE5TQXJyYXkgKil0eXBlcworeworICAgIHVuc2lnbmVkIGNvdW50ID0g
W3R5cGVzIGNvdW50XTsKKyAgICB1bnNpZ25lZCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKSB7CisgICAgICAgIE5TU3RyaW5nICp0eXBlID0gW3R5cGVzIG9iamVjdEF0SW5kZXg6
aV07CisgICAgICAgIE5TU3RyaW5nICpzZXRUeXBlID0gW3R5cGVzU2V0IG1lbWJlcjp0eXBlXTsK
KyAgICAgICAgaWYgKHNldFR5cGUpCisgICAgICAgICAgICByZXR1cm4gc2V0VHlwZTsKKyAgICB9
CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAoQk9PTClzZXREYXRhOihOU0RhdGEgKilkYXRhIGZv
clR5cGU6KE5TU3RyaW5nICopZGF0YVR5cGUKK3sKKyAgICBpZiAoZGF0YSA9PSBuaWwpCisgICAg
ICAgIGRhdGEgPSBbTlNEYXRhIGRhdGFdOworICAgIGlmICghW3R5cGVzU2V0IGNvbnRhaW5zT2Jq
ZWN0OmRhdGFUeXBlXSkKKyAgICAgICAgcmV0dXJuIE5POworICAgIFtkYXRhQnlUeXBlIHNldE9i
amVjdDpkYXRhIGZvcktleTpkYXRhVHlwZV07CisgICAgKytjaGFuZ2VDb3VudDsKKyAgICByZXR1
cm4gWUVTOworfQorCistIChOU0RhdGEgKilkYXRhRm9yVHlwZTooTlNTdHJpbmcgKilkYXRhVHlw
ZQoreworICAgIHJldHVybiBbZGF0YUJ5VHlwZSBvYmplY3RGb3JLZXk6ZGF0YVR5cGVdOworfQor
CistIChCT09MKXNldFByb3BlcnR5TGlzdDooaWQpcHJvcGVydHlMaXN0IGZvclR5cGU6KE5TU3Ry
aW5nICopZGF0YVR5cGUKK3sKKyAgICBDRkRhdGFSZWYgZGF0YSA9IE5VTEw7CisgICAgaWYgKHBy
b3BlcnR5TGlzdCkKKyAgICAgICAgZGF0YSA9IENGUHJvcGVydHlMaXN0Q3JlYXRlWE1MRGF0YShO
VUxMLCBwcm9wZXJ0eUxpc3QpOworICAgIEJPT0wgcmVzdWx0ID0gW3NlbGYgc2V0RGF0YTooTlNE
YXRhICopZGF0YSBmb3JUeXBlOmRhdGFUeXBlXTsKKyAgICBpZiAoZGF0YSkKKyAgICAgICAgQ0ZS
ZWxlYXNlKGRhdGEpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKEJPT0wpc2V0U3RyaW5n
OihOU1N0cmluZyAqKXN0cmluZyBmb3JUeXBlOihOU1N0cmluZyAqKWRhdGFUeXBlCit7CisgICAg
Q0ZEYXRhUmVmIGRhdGEgPSBOVUxMOworICAgIGlmIChzdHJpbmcpIHsKKyAgICAgICAgaWYgKCFz
dHJpbmcubGVuZ3RoKQorICAgICAgICAgICAgZGF0YSA9IENGRGF0YUNyZWF0ZShOVUxMLCBOVUxM
LCAwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGF0YSA9IENGU3RyaW5nQ3JlYXRlRXh0
ZXJuYWxSZXByZXNlbnRhdGlvbihOVUxMLCAoQ0ZTdHJpbmdSZWYpc3RyaW5nLCBrQ0ZTdHJpbmdF
bmNvZGluZ1VURjgsIDApOworICAgIH0KKyAgICBCT09MIHJlc3VsdCA9IFtzZWxmIHNldERhdGE6
KE5TRGF0YSAqKWRhdGEgZm9yVHlwZTpkYXRhVHlwZV07CisgICAgaWYgKGRhdGEpCisgICAgICAg
IENGUmVsZWFzZShkYXRhKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChCT09MKXdyaXRl
T2JqZWN0czooTlNBcnJheTxpZCA8TlNQYXN0ZWJvYXJkV3JpdGluZz4+ICopb2JqZWN0cworewor
ICAgIGZvciAoaWQgPE5TUGFzdGVib2FyZFdyaXRpbmc+IG9iamVjdCBpbiBvYmplY3RzKSB7Cisg
ICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gW29iamVjdCB3cml0YWJsZVR5cGVzRm9yUGFz
dGVib2FyZDpzZWxmXSkgeworICAgICAgICAgICAgYXV0byBwYXN0ZWJvYXJkVHlwZSA9IGFkb3B0
TlMoKF9fYnJpZGdlIE5TU3RyaW5nICopVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcygo
X19icmlkZ2UgQ0ZTdHJpbmdSZWYpdHlwZSwga1VUVGFnQ2xhc3NOU1Bib2FyZFR5cGUpKTsKKwor
ICAgICAgICAgICAgW3NlbGYgYWRkVHlwZXM6QFsgcGFzdGVib2FyZFR5cGUuZ2V0KCkgXSBvd25l
cjpzZWxmXTsKKworICAgICAgICAgICAgaWQgcHJvcGVydHlMaXN0ID0gW29iamVjdCBwYXN0ZWJv
YXJkUHJvcGVydHlMaXN0Rm9yVHlwZTp0eXBlXTsKKyAgICAgICAgICAgIGlmIChbcHJvcGVydHlM
aXN0IGlzS2luZE9mQ2xhc3M6TlNEYXRhLmNsYXNzXSkKKyAgICAgICAgICAgICAgICBbc2VsZiBz
ZXREYXRhOnByb3BlcnR5TGlzdCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlLmdldCgpXTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiBZRVM7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vICFQ
TEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRT
ZW5kaW5nQ29udHJvbGxlci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRp
bmdDb250cm9sbGVyLm1tCmluZGV4IGNmZDU2NDE4NjZkMjIyZTc3M2ZlZjg0Njk3ZjY2ZTMyNGZh
NDEzZWUuLmE1NTA5NzAzNWZiNTNlNmI3NjRhMDkxNzY0NWE4YTVjZjkyZjU4ZDEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCkBA
IC00Myw2ICs0Myw4IEBACiAKICNpZiAhUExBVEZPUk0oSU9TKQogI2ltcG9ydCA8Q2FyYm9uL0Nh
cmJvbi5oPiAvLyBmb3IgR2V0Q3VycmVudEV2ZW50VGltZSgpCisjaW1wb3J0IDxXZWJLaXQvV2Vi
SFRNTFZpZXcuaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2ltcG9ydCA8d3RmL21hYy9B
cHBLaXRDb21wYXRpYmlsaXR5RGVjbGFyYXRpb25zLmg+CiAjZW5kaWYKIApAQCAtMTM4LDYgKzE0
MCwzNSBAQCBCT09MIHJlcGxheWluZ1NhdmVkRXZlbnRzOwogCiBAaW1wbGVtZW50YXRpb24gRXZl
bnRTZW5kaW5nQ29udHJvbGxlcgogCisjaWYgUExBVEZPUk0oTUFDKQorc3RhdGljIE5TRHJhZ2dp
bmdTZXNzaW9uICpkcnRfV2ViSFRNTFZpZXdfYmVnaW5EcmFnZ2luZ1Nlc3Npb25XaXRoSXRlbXNF
dmVudFNvdXJjZShXZWJIVE1MVmlldyAqc2VsZiwgaWQgX2NtZCwgTlNBcnJheTxOU0RyYWdnaW5n
SXRlbSAqPiAqaXRlbXMsIE5TRXZlbnQgKmV2ZW50LCBpZDxOU0RyYWdnaW5nU291cmNlPiBzb3Vy
Y2UpCit7CisgICAgQVNTRVJUKCFkcmFnZ2luZ0luZm8pOworCisgICAgV2ViRnJhbWVWaWV3ICp3
ZWJGcmFtZVZpZXcgPSBeIHsKKyAgICAgICAgZm9yIChOU1ZpZXcgKnN1cGVydmlldyA9IHNlbGYu
c3VwZXJ2aWV3OyBzdXBlcnZpZXc7IHN1cGVydmlldyA9IHN1cGVydmlldy5zdXBlcnZpZXcpIHsK
KyAgICAgICAgICAgIGlmIChbc3VwZXJ2aWV3IGlzS2luZE9mQ2xhc3M6V2ViRnJhbWVWaWV3LmNs
YXNzXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gKFdlYkZyYW1lVmlldyAqKXN1cGVydmlldzsK
KyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gKFdlYkZyYW1lVmlldyAqKW5pbDsKKyAgICB9KCk7CisKKyAgICBXZWJWaWV3ICp3ZWJWaWV3
ID0gd2ViRnJhbWVWaWV3LndlYkZyYW1lLndlYlZpZXc7CisKKyAgICBOU1Bhc3RlYm9hcmQgKnBh
c3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpOU0RyYWdQYm9hcmRd
OworICAgIGZvciAoTlNEcmFnZ2luZ0l0ZW0gKml0ZW0gaW4gaXRlbXMpCisgICAgICAgIFtwYXN0
ZWJvYXJkIHdyaXRlT2JqZWN0czpAWyBpdGVtLml0ZW0gXV07CisKKyAgICBkcmFnZ2luZ0luZm8g
PSBbW0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvIGFsbG9jXSBpbml0V2l0aEltYWdlOm5pbCBv
ZmZzZXQ6TlNaZXJvU2l6ZSBwYXN0ZWJvYXJkOnBhc3RlYm9hcmQgc291cmNlOnNvdXJjZV07Cisg
ICAgW3dlYlZpZXcgZHJhZ2dpbmdVcGRhdGVkOmRyYWdnaW5nSW5mb107CisgICAgW0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIgcmVwbGF5U2F2ZWRFdmVudHNdOworCisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisjZW5kaWYKKwogKyAodm9pZClpbml0aWFsaXplCiB7CiAgICAgd2Via2l0RG9tRXZlbnRO
YW1lcyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOgpAQCAtMTg4LDYgKzIxOSwx
NSBAQCBCT09MIHJlcGxheWluZ1NhdmVkRXZlbnRzOwogICAgICAgICBAInVubG9hZCIsCiAgICAg
ICAgIEAiem9vbSIsCiAgICAgICAgIG5pbF07CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgLy8g
QWRkIGFuIGltcGxlbWVudGF0aW9uIG9mIC1bV2ViSFRNTFZpZXcgYmVnaW5EcmFnZ2luZ1Nlc3Np
b25XaXRoSXRlbXM6ZXZlbnQ6c291cmNlOl0uCisgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9y
KGJlZ2luRHJhZ2dpbmdTZXNzaW9uV2l0aEl0ZW1zOmV2ZW50OnNvdXJjZTopOworICAgIGNvbnN0
IGNoYXIqIHR5cGVFbmNvZGluZyA9IG1ldGhvZF9nZXRUeXBlRW5jb2RpbmcoY2xhc3NfZ2V0SW5z
dGFuY2VNZXRob2QoTlNWaWV3LmNsYXNzLCBzZWxlY3RvcikpOworCisgICAgaWYgKCFjbGFzc19h
ZGRNZXRob2QoV2ViSFRNTFZpZXcuY2xhc3MsIHNlbGVjdG9yLCByZWludGVycHJldF9jYXN0PElN
UD4oZHJ0X1dlYkhUTUxWaWV3X2JlZ2luRHJhZ2dpbmdTZXNzaW9uV2l0aEl0ZW1zRXZlbnRTb3Vy
Y2UpLCB0eXBlRW5jb2RpbmcpKQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRp
ZgogfQogCiArIChCT09MKWlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6KFNFTClhU2Vs
ZWN0b3IK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302005</attachid>
            <date>2017-02-17 15:59:51 -0800</date>
            <delta_ts>2017-02-17 21:06:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168534-20170217155713.patch</filename>
            <type>text/plain</type>
            <size>49938</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGExMTFkYzcwOGFmMmMw
ODU2MzE1YmZhNWUyOTI2ZDFkNmI3ZjAyYS4uMjliOWRmOTIwMWQxNGYxNWEwNWZjYmUzNDZiMTJj
MDkzZWE5ZTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE3LTAyLTE3ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgbmV3IGRy
YWcgY29kZSBwYXRoIGFuZCB1c2UgaXQgZm9yIGRyYWdnaW5nIHBsYWluIHRleHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODUzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBuZXcgY29kZSBwYXRo
IGlzIGN1cnJlbnRseSBvbmx5IHVzZWQgZm9yIHBsYWluIHRleHQgc2VsZWN0aW9uIGRyYWdnaW5n
LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHBhZ2UvRHJhZ0NsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudDo6dXNl
TGVnYWN5RHJhZ0NsaWVudCk6CisgICAgICAgIEFkZCBhIG5ldyBtZW1iZXIgZnVuY3Rpb24uIFRo
aXMgY3VycmVudGx5IHJldHVybnMgdHJ1ZSBldmVyeXdoZXJlIGV4Y2VwdCBsZWdhY3kgV2ViS2l0
IG9uIE1hYy4KKworICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudDo6YmVnaW5EcmFnKToKKyAg
ICAgICAgQWRkIG5ldyBlbXB0eSBtZW1iZXIgZnVuY3Rpb24uCisKKyAgICAgICAgKiBwYWdlL0Ry
YWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYWdJbWFnZUFuY2hvclBvaW50
Rm9yU2VsZWN0aW9uRHJhZyk6CisgICAgICAgIEhlbHBlciBmdW5jdGlvbiB0aGF0IHJldHVybnMg
dGhlIGFuY2hvciBwb2ludCBmb3IgYSBzZWxlY3Rpb24gZHJhZyBpbWFnZS4KKworICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgIElmIHdlIGNhbiB1
c2UgdGhlIG5ldyBjb2RlIHBhdGgsIHNldCB1cCBhIGRyYWcgaXRlbSB3aXRoIGFuIGltYWdlIGFu
ZCBwYXN0ZWJvYXJkIGRhdGEuCisKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpi
ZWdpbkRyYWcpOgorICAgICAgICBOZXcgZnVuY3Rpb24gdGhhdCBjYWxscyBvdXQgdG8gdGhlIGNs
aWVudC4KKworICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgQWRkIG5l
dyBtZW1iZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vRHJhZ0l0ZW0uaDoKKyAgICAgICAgQWRk
IGEgbmV3IGNsYXNzIC0gaXQncyBlc3NlbnRpYWxseSBhIHR1cGxlIG9mIGEgZHJhZyBpbWFnZSwg
YW4gYW5jaG9yIHBvaW50IGFuZCB0aGUgcGFzdGVib2FyZCBkYXRhIHRoZSBpdGVtIHJlcHJlc2Vu
dHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5oOgorICAgICAg
ICBSZW5hbWUgY3JlYXRlUGFzdGVib2FyZFdyaXRpbmcgdG8gY3JlYXRlUGFzdGVib2FyZFdyaXRl
ci4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgIFVzZSB0aGUgVVRJ
IHBhc3RlYm9hcmQgdHlwZS4KKwogMjAxNy0wMi0xNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvcmluZzogTWFrZSBzdXJlIHRvIHVucHJlcGFyZSBX
ZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQyB3aGVuIGl0cyBvd25lciBpcyBkZXN0cm95ZWQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKaW5kZXggZGE5NjM1YjExYmZkMWIzMDcxOTYxYzc1M2ZlYzdhYWY2NjY0
NDg0MS4uYjY3YjVkMDdkZDM4YjExZTU2YzE4M2NhYThiZWJiMmMwY2YwNzVmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTAyLTE3ICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgbmV3IGRyYWcgY29kZSBwYXRoIGFu
ZCB1c2UgaXQgZm9yIGRyYWdnaW5nIHBsYWluIHRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5o
OgorICAgICAgICBBZGQgbmV3IG1lbWJlcnMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6dXNlTGVnYWN5RHJhZ0Ns
aWVudCk6CisgICAgICAgIFJldHVybiBmYWxzZSBoZXJlLgorCisgICAgICAgIChXZWJEcmFnQ2xp
ZW50OjpiZWdpbkRyYWcpOgorICAgICAgICBOZXcgY2xpZW50IG1lbWJlciBmdW5jdGlvbi4gQ3Jl
YXRlIGFuIE5TRHJhZ2dpbmdJdGVtIGFuZCB1c2UgaXQgdG8gYmVnaW4gYSBkcmFnZ2luZyBzZXNz
aW9uLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2Vi
SFRNTFZpZXcgZHJhZ2dpbmdTZXNzaW9uOnNvdXJjZU9wZXJhdGlvbk1hc2tGb3JEcmFnZ2luZ0Nv
bnRleHQ6XSk6CisgICAgICAgIEdldCB0aGUgc291cmNlIG9wZXJhdGlvbiBtYXNrIGZyb20gV2Vi
Q29yZS4KKworICAgICAgICAoLVtXZWJIVE1MVmlldyBkcmFnZ2luZ1Nlc3Npb246ZW5kZWRBdFBv
aW50Om9wZXJhdGlvbjpdKToKKyAgICAgICAgU2VuZCBhIGZha2UgbW91c2UgdXAgZXZlbnQuCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgRGVjbGFy
ZSB0aGF0IFdlYkhUTUxWaWV3IGNvbmZvcm1zIHRvIE5TRHJhZ2dpbmdTb3VyY2UuCisKIDIwMTct
MDItMTUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3Ag
YmFja2luZyB1cCBsb2NhbFN0b3JhZ2UgZGF0YWJhc2VzIHRvIGlDbG91ZCBieSBkZWZhdWx0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGE0NTg4Yjk2NzVmMDI5MTM5N2ExNzIwMDQxZDBjNDhjOWE4NGYxMzEuLjI2YTUzZDhlZTBk
ODc3Y2Q3ODNiYmUxYmE4ZDAxYTAyOTQzZmE2OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk1Miw2ICs5NTIsNyBAQAogCQkx
QUY0Q0VFQzE4QkMzQzFCMDBCQzJEMzQgLyogVmlzaXRlZExpbmtTdG9yZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUY0Q0VFQjE4QkMzQzFCMDBC
QzJEMzQgLyogVmlzaXRlZExpbmtTdG9yZS5jcHAgKi87IH07CiAJCTFBRjVFNEQ0MUU1NjczNUIw
MDRBMUYwMSAvKiBQYXN0ZWJvYXJkV3JpdGVyRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUY1RTREMjFFNTY3MzVBMDA0QTFGMDEgLyogUGFz
dGVib2FyZFdyaXRlckRhdGEuY3BwICovOyB9OwogCQkxQUY1RTRENTFFNTY3MzVCMDA0QTFGMDEg
LyogUGFzdGVib2FyZFdyaXRlckRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBRjVFNEQzMUU1NjczNUEwMDRBMUYwMSAvKiBQYXN0ZWJvYXJkV3Jp
dGVyRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTFBRjVFNEQ5MUU1Njc3QTkwMDRBMUYwMSAvKiBEcmFnSXRlbS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGNUU0RDcxRTU2NzdBOTAwNEExRjAx
IC8qIERyYWdJdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMUFGNUU0RTIxRTU3NzlCMTAwNEExRjAxIC8qIFBhc3RlYm9hcmRXcml0ZXIubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUY1RTRFMDFF
NTc3OUIxMDA0QTFGMDEgLyogUGFzdGVib2FyZFdyaXRlci5tbSAqLzsgfTsKIAkJMUFGNUU0RTMx
RTU3NzlCMTAwNEExRjAxIC8qIFBhc3RlYm9hcmRXcml0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRjVFNEUxMUU1Nzc5QjEwMDRBMUYwMSAvKiBQ
YXN0ZWJvYXJkV3JpdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMUFGNjJFRTYxNERBMjJBNzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUFGNjJFRTMxNERBMjJBNzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tICov
OyB9OwpAQCAtODEzMyw2ICs4MTM0LDcgQEAKIAkJMUFGNENFRUIxOEJDM0MxQjAwQkMyRDM0IC8q
IFZpc2l0ZWRMaW5rU3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVmlzaXRlZExpbmtTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFB
RjVFNEQyMUU1NjczNUEwMDRBMUYwMSAvKiBQYXN0ZWJvYXJkV3JpdGVyRGF0YS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXN0ZWJvYXJkV3JpdGVyRGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRjVFNEQzMUU1NjczNUEwMDRBMUYwMSAv
KiBQYXN0ZWJvYXJkV3JpdGVyRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQYXN0ZWJvYXJkV3JpdGVyRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QUY1RTRENzFFNTY3N0E5MDA0QTFGMDEgLyogRHJhZ0l0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRHJhZ0l0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUFGNUU0RTAxRTU3NzlCMTAwNEExRjAxIC8qIFBhc3RlYm9hcmRXcml0ZXIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXN0ZWJvYXJkV3JpdGVyLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUY1RTRFMTFFNTc3OUIxMDA0QTFGMDEgLyogUGFz
dGVib2FyZFdyaXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXN0ZWJv
YXJkV3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRjYyRUUzMTREQTIy
QTcwMDQxNTU2QyAvKiBTY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI5MTQsNiArMjI5MTYsNyBAQAogCQkJCUE3QjZF
NjlEMEIyOTFBOTYwMEQwNTI5RiAvKiBEcmFnRGF0YS5oICovLAogCQkJCUE3Q0ZCM0NGMEI3RUQx
MEEwMDcwQzMyRCAvKiBEcmFnSW1hZ2UuY3BwICovLAogCQkJCUE3Q0ZCM0QwMEI3RUQxMEEwMDcw
QzMyRCAvKiBEcmFnSW1hZ2UuaCAqLywKKwkJCQkxQUY1RTRENzFFNTY3N0E5MDA0QTFGMDEgLyog
RHJhZ0l0ZW0uaCAqLywKIAkJCQkxQ0ExOUUxNTBEQzI1NUNBMDA2NUE5OTQgLyogRXZlbnRMb29w
LmggKi8sCiAJCQkJMjYyRUM0MUMxRDExMEIxRjAwQkE3OEZDIC8qIEV2ZW50VHJhY2tpbmdSZWdp
b25zLmNwcCAqLywKIAkJCQkyNjJFQzQxOTFEMDc4RjNEMDBCQTc4RkMgLyogRXZlbnRUcmFja2lu
Z1JlZ2lvbnMuaCAqLywKQEAgLTI4NzI0LDYgKzI4NzI3LDcgQEAKIAkJCQkwQzNGMUY1QjEwQzg4
NzEyMDBENzJDRTEgLyogV2ViR0xVbmlmb3JtTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTZGOTk1QTI2MUE3MDc4QjEwMEE3MzVGNCAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk3N0ExN0E3ODEyRjI4NjQyMDA0RTAyRjYgLyogV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUFGNUU0RDkxRTU2NzdBOTAwNEEx
RjAxIC8qIERyYWdJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUUyMTIzQzFFNDkyNEE0MDBD
RTEwNDQgLyogV2ViSGVhcEFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyNTE4N0I4
QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNTg0RkUzMDE4NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgKaW5kZXggN2M2YTA4ODkxYmVk
YmViYzdlYTMxZDU0ZGRkMWQ0NjNmZmFlMGI4ZS4uYjAyMjA3ZDhjMzRmYzNhMTE2ODA0YzVhMDQ2
ZGQ1Nzk0ZWZmNmRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgKQEAgLTI2LDcgKzI2LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKLSNpbmNsdWRlICJE
cmFnSW1hZ2UuaCIKKyNpbmNsdWRlICJEcmFnSXRlbS5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQu
aCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogCkBAIC00Miw2ICs0Miw4IEBAIGNsYXNzIERyYWdD
bGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3ll
ZCgpID0gMDsKIAorICAgIHZpcnR1YWwgYm9vbCB1c2VMZWdhY3lEcmFnQ2xpZW50KCkgeyByZXR1
cm4gdHJ1ZTsgfQorCiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbiwgY29uc3QgRHJhZ0RhdGEmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9u
LCBjb25zdCBJbnRQb2ludCYsIERhdGFUcmFuc2ZlciYpID0gMDsKICAgICB2aXJ0dWFsIERyYWdE
ZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBEcmFnRGF0YSYpID0gMDsK
QEAgLTUwLDYgKzUyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoRHJh
Z0ltYWdlLCBjb25zdCBJbnRQb2ludCYgZHJhZ0ltYWdlT3JpZ2luLCBjb25zdCBJbnRQb2ludCYg
ZXZlbnRQb3MsIGNvbnN0IEZsb2F0UG9pbnQmIGRyYWdJbWFnZUFuY2hvciwgRGF0YVRyYW5zZmVy
JiwgRnJhbWUmLCBEcmFnU291cmNlQWN0aW9uKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYWdF
bmRlZCgpIHsgfQogCisgICAgdmlydHVhbCB2b2lkIGJlZ2luRHJhZyhEcmFnSXRlbSwgRnJhbWUm
LCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJiwgRHJhZ1Nv
dXJjZUFjdGlvbikgeyB9CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBNYWMtc3BlY2lm
aWMgaGVscGVyIGZ1bmN0aW9uIHRvIGFsbG93IGFjY2VzcyB0byB3ZWIgYXJjaGl2ZXMgYW5kIE5T
UGFzdGVib2FyZCBleHRyYXMgaW4gV2ViS2l0LgogICAgIC8vIFRoaXMgaXMgbm90IGFic3RyYWN0
IGFzIHRoYXQgd291bGQgcmVxdWlyZSBhbm90aGVyICNpZiBQTEFURk9STShDT0NPQSkgZm9yIHRo
ZSBTVkdJbWFnZSBjbGllbnQgZW1wdHkgaW1wbGVudGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAppbmRleCBkMTY3MjIxYzE3MzM0ZDAxY2YyOGI5YmRjZWViOTU5MTEw
MDdmOWE4Li40ZmRhZGZjNGQyZTdiYzMwNjljY2QxMjc4YzRkM2YyZTc0M2EzNTQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNzM4LDYgKzczOCwxNiBAQCBzdGF0
aWMgSW50UG9pbnQgZHJhZ0xvY0ZvckRIVE1MRHJhZyhjb25zdCBJbnRQb2ludCYgbW91c2VEcmFn
Z2VkUG9pbnQsIGNvbnN0IEludAogICAgIHJldHVybiBJbnRQb2ludChkcmFnT3JpZ2luLngoKSAt
IGRyYWdJbWFnZU9mZnNldC54KCksIGRyYWdPcmlnaW4ueSgpICsgeU9mZnNldCk7CiB9CiAKK3N0
YXRpYyBGbG9hdFBvaW50IGRyYWdJbWFnZUFuY2hvclBvaW50Rm9yU2VsZWN0aW9uRHJhZyhGcmFt
ZSYgZnJhbWUsIGNvbnN0IEludFBvaW50JiBtb3VzZURyYWdnZWRQb2ludCkKK3sKKyAgICBJbnRS
ZWN0IGRyYWdnaW5nUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoZnJhbWUuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uQm91bmRzKCkpOworCisgICAgZmxvYXQgeCA9IChtb3VzZURyYWdnZWRQb2ludC54KCkg
LSBkcmFnZ2luZ1JlY3QueCgpKSAvIChmbG9hdClkcmFnZ2luZ1JlY3Qud2lkdGgoKTsKKyAgICBm
bG9hdCB5ID0gKG1vdXNlRHJhZ2dlZFBvaW50LnkoKSAtIGRyYWdnaW5nUmVjdC55KCkpIC8gKGZs
b2F0KWRyYWdnaW5nUmVjdC5oZWlnaHQoKTsKKworICAgIHJldHVybiBGbG9hdFBvaW50IHsgeCwg
eSB9OworfQorCiBzdGF0aWMgSW50UG9pbnQgZHJhZ0xvY0ZvclNlbGVjdGlvbkRyYWcoRnJhbWUm
IHNyYykKIHsKICAgICBJbnRSZWN0IGRyYWdnaW5nUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qoc3Jj
LnNlbGVjdGlvbigpLnNlbGVjdGlvbkJvdW5kcygpKTsKQEAgLTc5Miw2ICs4MDIsNyBAQCBib29s
IERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBz
dGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgIG1fc291cmNlRHJhZ09wZXJhdGlvbiA9IHNyY09wOwog
CiAgICAgRHJhZ0ltYWdlIGRyYWdJbWFnZTsKKyAgICBGbG9hdFBvaW50IGRyYWdJbWFnZUFuY2hv
clBvaW50OwogICAgIEludFBvaW50IGRyYWdMb2MoMCwgMCk7CiAgICAgSW50UG9pbnQgZHJhZ0lt
YWdlT2Zmc2V0KDAsIDApOwogCkBAIC04MTgsOSArODI5LDEzIEBAIGJvb2wgRHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3Bl
cmF0aW9uCiAgICAgQVNTRVJUKHN0YXRlLnNvdXJjZSk7CiAgICAgRWxlbWVudCYgZWxlbWVudCA9
ICpzdGF0ZS5zb3VyY2U7CiAKKyAgICBib29sIG11c3RVc2VMZWdhY3lEcmFnQ2xpZW50ID0gZGF0
YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5oYXNEYXRhKCkgfHwgbV9jbGllbnQudXNlTGVnYWN5RHJh
Z0NsaWVudCgpOworCiAgICAgSW50UmVjdCBkcmFnSW1hZ2VCb3VuZHM7CiAgICAgSW1hZ2UqIGlt
YWdlID0gZ2V0SW1hZ2UoZWxlbWVudCk7CiAgICAgaWYgKHN0YXRlLnR5cGUgPT0gRHJhZ1NvdXJj
ZUFjdGlvblNlbGVjdGlvbikgeworICAgICAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBwYXN0ZWJv
YXJkV3JpdGVyRGF0YTsKKwogICAgICAgICBpZiAoIWRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCku
aGFzRGF0YSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBlbnRpcmUgYmxvY2sgaXMg
YWxtb3N0IGlkZW50aWNhbCB0byB0aGUgY29kZSBpbiBFZGl0b3I6OmNvcHksIGFuZCB0aGUgY29k
ZSBzaG91bGQgYmUgc2hhcmVkLgogICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25S
YW5nZSA9IHNyYy5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwpAQCAtODM2LDkgKzg1
MSwxOCBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3Qg
RHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogCiAgICAgICAgICAgICBzcmMuZWRpdG9y
KCkud2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKHNlbGVjdGlvblJhbmdlLmdldCgpKTsK
IAotICAgICAgICAgICAgaWYgKGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChzcmMuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkuc3RhcnQoKSkpCi0gICAgICAgICAgICAgICAgZGF0YVRyYW5zZmVyLnBh
c3RlYm9hcmQoKS53cml0ZVBsYWluVGV4dChzcmMuZWRpdG9yKCkuc2VsZWN0ZWRUZXh0Rm9yRGF0
YVRyYW5zZmVyKCksIFBhc3RlYm9hcmQ6OkNhbm5vdFNtYXJ0UmVwbGFjZSk7Ci0gICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2woc3JjLnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKG11
c3RVc2VMZWdhY3lEcmFnQ2xpZW50KQorICAgICAgICAgICAgICAgICAgICBkYXRhVHJhbnNmZXIu
cGFzdGVib2FyZCgpLndyaXRlUGxhaW5UZXh0KHNyYy5lZGl0b3IoKS5zZWxlY3RlZFRleHRGb3JE
YXRhVHJhbnNmZXIoKSwgUGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsKKyAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUGFzdGVib2FyZFdyaXRlckRhdGE6
OlBsYWluVGV4dCBwbGFpblRleHQ7CisgICAgICAgICAgICAgICAgICAgIHBsYWluVGV4dC5jYW5T
bWFydENvcHlPckRlbGV0ZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBwbGFpblRleHQu
dGV4dCA9IHNyYy5lZGl0b3IoKS5zZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIoKTsKKyAgICAg
ICAgICAgICAgICAgICAgcGFzdGVib2FyZFdyaXRlckRhdGEuc2V0UGxhaW5UZXh0KFdURk1vdmUo
cGxhaW5UZXh0KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBtdXN0VXNlTGVnYWN5RHJhZ0NsaWVudCA9IHRydWU7CisKICNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQogICAgICAgICAgICAgICAgIHNyYy5lZGl0b3Io
KS53cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpKTsK
ICNlbHNlCkBAIC04NTMsMTMgKzg3NywyNSBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERy
YWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAg
ICAgICBpZiAoIWRyYWdJbWFnZSkgewogICAgICAgICAgICAgZHJhZ0ltYWdlID0gRHJhZ0ltYWdl
IHsgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKGNyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlv
bihzcmMpLCBEcmFnSW1hZ2VBbHBoYSkgfTsKICAgICAgICAgICAgIGRyYWdMb2MgPSBkcmFnTG9j
Rm9yU2VsZWN0aW9uRHJhZyhzcmMpOworICAgICAgICAgICAgZHJhZ0ltYWdlQW5jaG9yUG9pbnQg
PSBkcmFnSW1hZ2VBbmNob3JQb2ludEZvclNlbGVjdGlvbkRyYWcoc3JjLCBtb3VzZURyYWdnZWRQ
b2ludCk7CiAgICAgICAgICAgICBtX2RyYWdPZmZzZXQgPSBJbnRQb2ludChkcmFnT3JpZ2luLngo
KSAtIGRyYWdMb2MueCgpLCBkcmFnT3JpZ2luLnkoKSAtIGRyYWdMb2MueSgpKTsKICAgICAgICAg
fQogCiAgICAgICAgIGlmICghZHJhZ0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgIGRvU3lzdGVtRHJhZyhXVEZNb3ZlKGRyYWdJbWFnZSksIGRyYWdMb2MsIGRyYWdP
cmlnaW4sIGRyYWdJbWFnZUJvdW5kcywgZGF0YVRyYW5zZmVyLCBzcmMsIERyYWdTb3VyY2VBY3Rp
b25TZWxlY3Rpb24pOworICAgICAgICBpZiAobXVzdFVzZUxlZ2FjeURyYWdDbGllbnQpIHsKKyAg
ICAgICAgICAgIGRvU3lzdGVtRHJhZyhXVEZNb3ZlKGRyYWdJbWFnZSksIGRyYWdMb2MsIGRyYWdP
cmlnaW4sIGRyYWdJbWFnZUJvdW5kcywgZGF0YVRyYW5zZmVyLCBzcmMsIERyYWdTb3VyY2VBY3Rp
b25TZWxlY3Rpb24pOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAg
ICAgICBEcmFnSXRlbSBkcmFnSXRlbTsKKyAgICAgICAgZHJhZ0l0ZW0uaW1hZ2UgPSBXVEZNb3Zl
KGRyYWdJbWFnZSk7CisgICAgICAgIGRyYWdJdGVtLmltYWdlQW5jaG9yUG9pbnQgPSBkcmFnSW1h
Z2VBbmNob3JQb2ludDsKKyAgICAgICAgZHJhZ0l0ZW0uZGF0YSA9IFdURk1vdmUocGFzdGVib2Fy
ZFdyaXRlckRhdGEpOworCisgICAgICAgIGJlZ2luRHJhZyhXVEZNb3ZlKGRyYWdJdGVtKSwgc3Jj
LCBkcmFnT3JpZ2luLCBtb3VzZURyYWdnZWRQb2ludCwgZGF0YVRyYW5zZmVyLCBEcmFnU291cmNl
QWN0aW9uU2VsZWN0aW9uKTsKKwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTEw
MDcsNiArMTA0MywyNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpkb0ltYWdlRHJhZyhFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgYwogICAgIGRvU3lzdGVtRHJh
ZyhXVEZNb3ZlKGRyYWdJbWFnZSksIGRyYWdJbWFnZU9mZnNldCwgZHJhZ09yaWdpbiwgZWxlbWVu
dC5ib3VuZHNJblJvb3RWaWV3U3BhY2UoKSwgZGF0YVRyYW5zZmVyLCBmcmFtZSwgRHJhZ1NvdXJj
ZUFjdGlvbkltYWdlKTsKIH0KIAordm9pZCBEcmFnQ29udHJvbGxlcjo6YmVnaW5EcmFnKERyYWdJ
dGVtIGRyYWdJdGVtLCBGcmFtZSYgZnJhbWUsIGNvbnN0IEludFBvaW50JiBtb3VzZURvd25Qb2lu
dCwgY29uc3QgSW50UG9pbnQmIG1vdXNlRHJhZ2dlZFBvaW50LCBEYXRhVHJhbnNmZXImIGRhdGFU
cmFuc2ZlciwgRHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uKQoreworICAgIEFTU0VS
VCghbV9jbGllbnQudXNlTGVnYWN5RHJhZ0NsaWVudCgpKTsKKworICAgIG1fZGlkSW5pdGlhdGVE
cmFnID0gdHJ1ZTsKKyAgICBtX2RyYWdJbml0aWF0b3IgPSBmcmFtZS5kb2N1bWVudCgpOworCisg
ICAgLy8gUHJvdGVjdCB0aGlzIGZyYW1lIGFuZCB2aWV3LCBhcyBhIGxvYWQgbWF5IG9jY3VyIG1p
ZCBkcmFnIGFuZCBhdHRlbXB0IHRvIHVubG9hZCB0aGlzIGZyYW1lCisgICAgUmVmPE1haW5GcmFt
ZT4gZnJhbWVQcm90ZWN0b3IobV9wYWdlLm1haW5GcmFtZSgpKTsKKyAgICBSZWZQdHI8RnJhbWVW
aWV3PiB2aWV3UHJvdGVjdG9yID0gZnJhbWVQcm90ZWN0b3ItPnZpZXcoKTsKKworICAgIG1fY2xp
ZW50LmJlZ2luRHJhZyhXVEZNb3ZlKGRyYWdJdGVtKSwgZnJhbWUsIG1vdXNlRG93blBvaW50LCBt
b3VzZURyYWdnZWRQb2ludCwgZGF0YVRyYW5zZmVyLCBkcmFnU291cmNlQWN0aW9uKTsKKworICAg
IC8vIERyYWdDbGllbnQ6OmJlZ2luRHJhZyBjYW4gY2F1c2UgdGhlIGRyYWcgY29udHJvbGxlciB0
byBiZSBkZWxldGVkLgorICAgIGlmICghZnJhbWVQcm90ZWN0b3ItPnBhZ2UoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkbid0IGJlIG5lZWRlZC4KKyAgICBj
bGVhbnVwQWZ0ZXJTeXN0ZW1EcmFnKCk7Cit9CisKIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRvU3lz
dGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBkcmFnTG9jLCBjb25zdCBJ
bnRQb2ludCYgZXZlbnRQb3MsIGNvbnN0IEludFJlY3QmIGRyYWdJbWFnZUJvdW5kcywgRGF0YVRy
YW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1lJiBmcmFtZSwgRHJhZ1NvdXJjZUFjdGlvbiBkcmFn
U291cmNlQWN0aW9uKQogewogICAgIEZsb2F0UG9pbnQgZHJhZ0ltYWdlQW5jaG9yID0geyAwLjUs
IDAuNSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCmluZGV4IGQzYzIwOTE0OTYw
MjBlZDUyNjlhMmNmZGZlYjhmYjM1NjEwZjMzMjEuLjY3YzQ4ZTQyNTRhMmI0YzVlODZjY2RhZWVh
NDBhMDA0NTlkMTYwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTMz
LDE5ICszMywyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBEYXRhVHJh
bnNmZXI7Ci0gICAgY2xhc3MgRG9jdW1lbnQ7Ci0gICAgY2xhc3MgRHJhZ0NsaWVudDsKLSAgICBj
bGFzcyBEcmFnRGF0YTsKLSAgICBjbGFzcyBFbGVtZW50OwotICAgIGNsYXNzIEZyYW1lOwotICAg
IGNsYXNzIEZyYW1lU2VsZWN0aW9uOwotICAgIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7Ci0gICAg
Y2xhc3MgSW50UmVjdDsKLSAgICBjbGFzcyBQYWdlOwotICAgIGNsYXNzIFBsYXRmb3JtTW91c2VF
dmVudDsKLQotICAgIHN0cnVjdCBEcmFnU3RhdGU7CitjbGFzcyBEYXRhVHJhbnNmZXI7CitjbGFz
cyBEb2N1bWVudDsKK2NsYXNzIERyYWdDbGllbnQ7CitjbGFzcyBEcmFnRGF0YTsKK2NsYXNzIEVs
ZW1lbnQ7CitjbGFzcyBGcmFtZTsKK2NsYXNzIEZyYW1lU2VsZWN0aW9uOworY2xhc3MgSFRNTElu
cHV0RWxlbWVudDsKK2NsYXNzIEludFJlY3Q7CitjbGFzcyBQYWdlOworY2xhc3MgUGxhdGZvcm1N
b3VzZUV2ZW50OworCitzdHJ1Y3QgRHJhZ0l0ZW07CitzdHJ1Y3QgRHJhZ1N0YXRlOwogCiAgICAg
Y2xhc3MgRHJhZ0NvbnRyb2xsZXIgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEcmFn
Q29udHJvbGxlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTEzLDYgKzExNCw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGRvSW1hZ2VEcmFnKEVsZW1lbnQm
LCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFJlY3QmLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYs
IEludFBvaW50Jik7CiAgICAgICAgIHZvaWQgZG9TeXN0ZW1EcmFnKERyYWdJbWFnZSwgY29uc3Qg
SW50UG9pbnQmLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFJlY3QmIGRyYWdJbWFnZUJvdW5k
cywgRGF0YVRyYW5zZmVyJiwgRnJhbWUmLCBEcmFnU291cmNlQWN0aW9uKTsKKworICAgICAgICB2
b2lkIGJlZ2luRHJhZyhEcmFnSXRlbSwgRnJhbWUmLCBjb25zdCBJbnRQb2ludCYgbW91c2VEb3du
UG9pbnQsIGNvbnN0IEludFBvaW50JiBtb3VzZURyYWdnZWRQb2ludCwgRGF0YVRyYW5zZmVyJiwg
RHJhZ1NvdXJjZUFjdGlvbik7CisKICAgICAgICAgdm9pZCBjbGVhbnVwQWZ0ZXJTeXN0ZW1EcmFn
KCk7CiAgICAgICAgIHZvaWQgZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKERhdGFUcmFuc2ZlciYs
IEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKICNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RHJhZ0l0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJdGVtLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODcxMzFlMTIyZjA3ZmE4NDFlMDU5MGFmMTlhOWU2MjJiYzQ3OTNlNwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJdGVtLmgKQEAgLTAsMCArMSw0MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCisj
aW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIlBhc3RlYm9hcmRXcml0ZXJEYXRhLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IERyYWdJdGVtIGZpbmFsIHsKKyAgICBE
cmFnSW1hZ2UgaW1hZ2U7CisKKyAgICAvLyBXaGVyZSB0aGUgaW1hZ2Ugc2hvdWxkIGJlIHBvc2l0
aW9uZWQgcmVsYXRpdmUgdG8gdGhlIGN1cnNvci4KKyAgICBGbG9hdFBvaW50IGltYWdlQW5jaG9y
UG9pbnQ7CisKKyAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBkYXRhOworfTsKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLmgKaW5kZXggMDY1MjJj
NmRhNmZmYzQ0ZGE3MDk0MGQ5YTFhNDMzMTlmY2E4Mzg3OS4uMzc4ZDc0NGRhZjg5MTRjNmRiZTY3
YmQ3MWZkOTFlOTVmNTIxMmI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRXcml0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZFdyaXRlci5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGE7CiAKLVdFQkNPUkVfRVhQT1JUIFJldGFpblB0
cjxpZCA8TlNQYXN0ZWJvYXJkV3JpdGluZz4+IGNyZWF0ZVBhc3RlYm9hcmRXcml0aW5nKGNvbnN0
IFBhc3RlYm9hcmRXcml0ZXJEYXRhJik7CitXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8aWQgPE5T
UGFzdGVib2FyZFdyaXRpbmc+PiBjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKGNvbnN0IFBhc3RlYm9h
cmRXcml0ZXJEYXRhJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZFdyaXRlci5tbQppbmRleCA0YzVmMmFjNTlkNmNkZDQwYTk1NGExOWFiMzUxMzI3
ZTM1MDgzMWFjLi4zYTE4MTY1ZTEzOTU1NDQ0ZGU0NGJjZWRkNTk0YTMwZmQwMjkxNTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAt
MzMsMTQgKzMzLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmV0YWluUHRyPGlkIDxO
U1Bhc3RlYm9hcmRXcml0aW5nPj4gY3JlYXRlUGFzdGVib2FyZFdyaXRpbmcoY29uc3QgUGFzdGVi
b2FyZFdyaXRlckRhdGEmIGRhdGEpCitSZXRhaW5QdHI8aWQgPE5TUGFzdGVib2FyZFdyaXRpbmc+
PiBjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKGNvbnN0IFBhc3RlYm9hcmRXcml0ZXJEYXRhJiBkYXRh
KQogewogICAgIGF1dG8gcGFzdGVib2FyZEl0ZW0gPSBhZG9wdE5TKFtbTlNQYXN0ZWJvYXJkSXRl
bSBhbGxvY10gaW5pdF0pOwogCiAgICAgaWYgKGF1dG8mIHBsYWluVGV4dCA9IGRhdGEucGxhaW5U
ZXh0KCkpIHsKICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzpwbGFpblRleHQtPnRl
eHQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsKLSAgICAgICAgaWYgKHBsYWluVGV4
dC0+Y2FuU21hcnRDb3B5T3JEZWxldGUpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0
RGF0YTpuaWwgZm9yVHlwZTpfTlhTbWFydFBhc3RlXTsKKyAgICAgICAgaWYgKHBsYWluVGV4dC0+
Y2FuU21hcnRDb3B5T3JEZWxldGUpIHsKKyAgICAgICAgICAgIGF1dG8gc21hcnRQYXN0ZVR5cGUg
PSBhZG9wdE5TKChfX2JyaWRnZSBOU1N0cmluZyAqKVVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50
aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NOU1Bib2FyZFR5cGUsIChfX2JyaWRnZSBDRlN0cmluZ1Jl
ZilfTlhTbWFydFBhc3RlLCBudWxscHRyKSk7CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0g
c2V0RGF0YTpuaWwgZm9yVHlwZTpzbWFydFBhc3RlVHlwZS5nZXQoKV07CisgICAgICAgIH0KICAg
ICB9CiAKICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggYjZkYzg1NTFmYjhlNGQxN2I3
MmIzZWJhZjM4ZWFkMGZjMzZkZmNiMi4uZmE0NGE3ZjY1ZTgzOTc0MTA4MmIyNWYyOGMxNmI0YzI4
YTllZThhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQuaApAQCAtMzIsMTIgKzMyLDE4IEBACiBjbGFzcyBXZWJEcmFnQ2xpZW50IDogcHVi
bGljIFdlYkNvcmU6OkRyYWdDbGllbnQgewogcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQoV2Vi
VmlldyopOworCisgICAgYm9vbCB1c2VMZWdhY3lEcmFnQ2xpZW50KCkgb3ZlcnJpZGU7CisKICAg
ICB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0
aW5hdGlvbkFjdGlvbiwgY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmKSBvdmVycmlkZTsKICAgICB2
b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9u
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYpIG92ZXJy
aWRlOwogICAgIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJh
Zyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhZ0NvbnRy
b2xsZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9u
IGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHdp
bmRvd1BvaW50KSBvdmVycmlkZTsKICAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpEcmFnSW1h
Z2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkcmFnUG9zLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgZXZlbnRQb3MsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJDb3JlOjpEYXRh
VHJhbnNmZXImLCBXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24pIG92
ZXJyaWRlOworCisgICAgdm9pZCBiZWdpbkRyYWcoV2ViQ29yZTo6RHJhZ0l0ZW0sIFdlYkNvcmU6
OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1vdXNlRG93blBvc2l0aW9uLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgbW91c2VEcmFnZ2VkUG9zaXRpb24sIFdlYkNvcmU6OkRhdGFU
cmFuc2ZlciYsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24pIG92ZXJyaWRlOworCiAgICAgdm9p
ZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
V2ViQ29yZTo6RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYsIFdl
YkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
ICAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZUF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgV2ViQ29yZTo6RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0
cmluZyYgcGF0aCwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCmluZGV4IGIwMjJiY2FlZDc2
NjZjOTM4NGY3MTk4N2JmNTVjZDc2YzdmODA0ODguLmZjOTllMWIwYzZkNzQyMzIwYzY1YWFkNjA1
YjNhNzYxY2FlMDNkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5tbQpAQCAtMzIsOCArMzIsOCBAQAogI2ltcG9ydCAiV2ViRE9NT3Bl
cmF0aW9ucy5oIgogI2ltcG9ydCAiV2ViRnJhbWUuaCIKICNpbXBvcnQgIldlYkZyYW1lSW50ZXJu
YWwuaCIKKyNpbXBvcnQgIldlYkZyYW1lVmlldy5oIgogI2ltcG9ydCAiV2ViSFRNTFZpZXdJbnRl
cm5hbC5oIgotI2ltcG9ydCAiV2ViSFRNTFZpZXdQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJLaXRM
b2dnaW5nLmgiCiAjaW1wb3J0ICJXZWJLaXROU1N0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAiV2Vi
TlNVUkxFeHRyYXMuaCIKQEAgLTU1LDYgKzU1LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvTWFpbkZy
YW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVi
b2FyZC5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkV3JpdGVyLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC02Niw2ICs2NywxMSBAQCBXZWJEcmFnQ2xpZW50OjpXZWJE
cmFnQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCiAKICNpZiBQTEFURk9STShNQUMpCiAKK2Jvb2wg
V2ViRHJhZ0NsaWVudDo6dXNlTGVnYWN5RHJhZ0NsaWVudCgpCit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCiBzdGF0aWMgV2ViSFRNTFZpZXcgKmdldFRvcEhUTUxWaWV3KEZyYW1lKiBmcmFtZSkK
IHsKICAgICBBU1NFUlQoZnJhbWUpOwpAQCAtMTMwLDYgKzEzNiwyNSBAQCB2b2lkIFdlYkRyYWdD
bGllbnQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2UgZHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYgYXQs
IGNvbnN0IEludAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogfQogCit2b2lkIFdlYkRy
YWdDbGllbnQ6OmJlZ2luRHJhZyhEcmFnSXRlbSBkcmFnSXRlbSwgRnJhbWUmIGZyYW1lLCBjb25z
dCBJbnRQb2ludCYgbW91c2VEb3duUG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBtb3VzZURyYWdn
ZWRQb3NpdGlvbiwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIERyYWdTb3VyY2VBY3Rpb24g
ZHJhZ1NvdXJjZUFjdGlvbikKK3sKKyAgICBBU1NFUlQoIWRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJk
KCkuaGFzRGF0YSgpKTsKKworICAgIFJldGFpblB0cjxXZWJIVE1MVmlldz4gdG9wV2ViSFRNTFZp
ZXcgPSBkeW5hbWljX29iamNfY2FzdDxXZWJIVE1MVmlldz4obV93ZWJWaWV3Lm1haW5GcmFtZS5m
cmFtZVZpZXcuZG9jdW1lbnRWaWV3KTsKKyAgICBBU1NFUlQodG9wV2ViSFRNTFZpZXcpOworCisg
ICAgYXV0byBkcmFnZ2luZ0l0ZW0gPSBhZG9wdE5TKFtbTlNEcmFnZ2luZ0l0ZW0gYWxsb2NdIGlu
aXRXaXRoUGFzdGVib2FyZFdyaXRlcjpjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKGRyYWdJdGVtLmRh
dGEpLmdldCgpXSk7CisKKyAgICBOU1NpemUgZHJhZ0ltYWdlU2l6ZSA9IFtkcmFnSXRlbS5pbWFn
ZS5nZXQoKSBzaXplXTsKKworICAgIE5TUmVjdCBkcmFnZ2luZ0ZyYW1lID0gTlNNYWtlUmVjdCht
b3VzZURyYWdnZWRQb3NpdGlvbi54KCkgLSBkcmFnSW1hZ2VTaXplLndpZHRoICogZHJhZ0l0ZW0u
aW1hZ2VBbmNob3JQb2ludC54KCksIG1vdXNlRHJhZ2dlZFBvc2l0aW9uLnkoKSAtIGRyYWdJbWFn
ZVNpemUuaGVpZ2h0ICogZHJhZ0l0ZW0uaW1hZ2VBbmNob3JQb2ludC55KCksIGRyYWdJbWFnZVNp
emUud2lkdGgsIGRyYWdJbWFnZVNpemUuaGVpZ2h0KTsKKyAgICBbZHJhZ2dpbmdJdGVtIHNldERy
YWdnaW5nRnJhbWU6ZHJhZ2dpbmdGcmFtZSBjb250ZW50czpkcmFnSXRlbS5pbWFnZS5nZXQoKS5n
ZXQoKV07CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gbWFrZSBhIGZha2Ug
ZXZlbnQgd2l0aCB0aGUgbW9zdWUgZHJhZ2dlZCBjb29yZGluYXRlcy4KKyAgICBOU0V2ZW50ICpl
dmVudCA9IGZyYW1lLmV2ZW50SGFuZGxlcigpLmN1cnJlbnROU0V2ZW50KCk7CisgICAgW3RvcFdl
YkhUTUxWaWV3LmdldCgpIGJlZ2luRHJhZ2dpbmdTZXNzaW9uV2l0aEl0ZW1zOkBbIGRyYWdnaW5n
SXRlbS5nZXQoKSBdIGV2ZW50OmV2ZW50IHNvdXJjZTp0b3BXZWJIVE1MVmlldy5nZXQoKV07Cit9
CisKIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBXZWJDb3JlOjpGcmFtZSogZnJhbWUpCiB7CiAgICAgQVNTRVJU
KHBhc3RlYm9hcmROYW1lKTsKQEAgLTE0Nyw2ICsxNzIsMTAgQEAgdm9pZCBXZWJEcmFnQ2xpZW50
OjpkZWNsYXJlQW5kV3JpdGVBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IEVsZW0KIAogI2Vsc2UKIAorYm9vbCBXZWJEcmFnQ2xpZW50Ojp1c2VMZWdhY3lEcmFnQ2xpZW50
KCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CiBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rp
b24gV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0Rh
dGEmKQogewogICAgIHJldHVybiBEcmFnRGVzdGluYXRpb25BY3Rpb25Ob25lOwpAQCAtMTY5LDYg
KzE5OCwxMCBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhXZWJDb3JlOjpEcmFnSW1h
Z2UsIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UG9pbgogewogfQogCit2b2lkIFdlYkRyYWdD
bGllbnQ6OmJlZ2luRHJhZyhEcmFnSXRlbSwgRnJhbWUmLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0
IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJiwgRHJhZ1NvdXJjZUFjdGlvbikKK3sKK30KKwogdm9p
ZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiwg
RWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZyYW1lKikKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDg0NTc2NTZh
NmFjNjQ0NDdjNjBkNWQ3ZDNiYTkyYWFkMmQxOTAzM2YuLmRlZTAzMjQ5NWU2ODgzOTA3NjIwNjM2
NTZiN2QyZmI5ZGNlMTgzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQpAQCAtNDY5MSw2ICs0NjkxLDQyIEBAIHN0YXRpYyBib29sIG1hdGNoZXNFeHRlbnNpb25P
ckVxdWl2YWxlbnQoTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uCiAgICAg
CiAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpbcGF0aCBsYXN0UGF0aENvbXBv
bmVudF1dOwogfQorCisvLyBNQVJLOiBOU0RyYWdnaW5nU291cmNlCisKKy0gKE5TRHJhZ09wZXJh
dGlvbilkcmFnZ2luZ1Nlc3Npb246KE5TRHJhZ2dpbmdTZXNzaW9uICopc2Vzc2lvbiBzb3VyY2VP
cGVyYXRpb25NYXNrRm9yRHJhZ2dpbmdDb250ZXh0OihOU0RyYWdnaW5nQ29udGV4dCljb250ZXh0
Cit7CisgICAgQVNTRVJUKCFbc2VsZiBfd2ViVmlld10gfHwgW3NlbGYgX2lzVG9wSFRNTFZpZXdd
KTsKKworICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKFtzZWxmIF93ZWJWaWV3XSk7CisgICAgaWYgKCFw
YWdlKQorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsKKworICAgIHJldHVybiAo
TlNEcmFnT3BlcmF0aW9uKXBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlv
bigpOworfQorCistICh2b2lkKWRyYWdnaW5nU2Vzc2lvbjooTlNEcmFnZ2luZ1Nlc3Npb24gKilz
ZXNzaW9uIGVuZGVkQXRQb2ludDooTlNQb2ludClzY3JlZW5Qb2ludCBvcGVyYXRpb246KE5TRHJh
Z09wZXJhdGlvbilvcGVyYXRpb24KK3sKKyAgICBBU1NFUlQoIVtzZWxmIF93ZWJWaWV3XSB8fCBb
c2VsZiBfaXNUb3BIVE1MVmlld10pOworCisgICAgTlNQb2ludCB3aW5kb3dMb2NhdGlvbiA9IFtz
ZWxmLndpbmRvdyBjb252ZXJ0UmVjdEZyb21TY3JlZW46eyBzY3JlZW5Qb2ludCwgTlNaZXJvU2l6
ZSB9XS5vcmlnaW47CisKKyAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmUoW3NlbGYgX3dlYlZpZXdd
KSkKKyAgICAgICAgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW5kZWQoKTsKKworICAgIFtb
c2VsZiBfZnJhbWVdIF9kcmFnU291cmNlRW5kZWRBdDp3aW5kb3dMb2NhdGlvbiBvcGVyYXRpb246
b3BlcmF0aW9uXTsKKworICAgIC8vIFByZXZlbnQgcXVldWVkIG1vdXNlRHJhZ2dlZCBldmVudHMg
ZnJvbSBjb21pbmcgYWZ0ZXIgdGhlIGRyYWcgYW5kIGZha2UgbW91c2VVcCBldmVudC4KKyAgICBf
cHJpdmF0ZS0+aWdub3JpbmdNb3VzZURyYWdnZWRFdmVudHMgPSBZRVM7CisKKyAgICAvLyBPbmNl
IHRoZSBkcmFnZ2luZyBtYWNoaW5lcnkga2lja3MgaW4sIHdlIG5vIGxvbmdlciBnZXQgbW91c2Ug
ZHJhZ3Mgb3IgdGhlIHVwIGV2ZW50LgorICAgIC8vIFdlYkNvcmUgZXhwZWN0cyB0byBnZXQgYmFs
YW5jZWQgZG93bi91cCdzLCBzbyB3ZSBtdXN0IGZha2UgdXAgYSBtb3VzZXVwLgorICAgIE5TRXZl
bnQgKmZha2VFdmVudCA9IFtOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUxl
ZnRNb3VzZVVwIGxvY2F0aW9uOndpbmRvd0xvY2F0aW9uIG1vZGlmaWVyRmxhZ3M6W05TQXBwIGN1
cnJlbnRFdmVudF0ubW9kaWZpZXJGbGFncyB0aW1lc3RhbXA6W05TRGF0ZSB0aW1lSW50ZXJ2YWxT
aW5jZVJlZmVyZW5jZURhdGVdIHdpbmRvd051bWJlcjpzZWxmLndpbmRvdy4gd2luZG93TnVtYmVy
IGNvbnRleHQ6bnVsbHB0ciBldmVudE51bWJlcjowIGNsaWNrQ291bnQ6MCBwcmVzc3VyZTowXTsK
KworICAgIC8vIFRoaXMgd2lsbCBhbHNvIHVwZGF0ZSB0aGUgbW91c2VvdmVyIHN0YXRlLgorICAg
IFtzZWxmIG1vdXNlVXA6ZmFrZUV2ZW50XTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NV
UFBPUlQpICYmIFBMQVRGT1JNKE1BQykKIAogI2lmICFQTEFURk9STShJT1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXdJbnRlcm5hbC5oCmluZGV4IGU1YmIxZWNj
MWQwMmQyNGQ1MGYzYjkyZjg5MjFkNTJhYjg2MjlmM2EuLmE0ZDljZDkzOGIxYWEyNzMzMzZjOTRl
N2Y2OGIxMTU5MTk4MzllYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXdJbnRlcm5hbC5oCkBAIC0zOCw2ICszOCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgS2V5Ym9hcmRFdmVudDsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykKK0BpbnRl
cmZhY2UgV2ViSFRNTFZpZXcgKCkgPE5TRHJhZ2dpbmdTb3VyY2U+CitAZW5kCisjZW5kaWYKKwog
QGludGVyZmFjZSBXZWJIVE1MVmlldyAoV2ViSW50ZXJuYWwpCiAtICh2b2lkKV9zZWxlY3Rpb25D
aGFuZ2VkOwogI2lmICFQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTRkNWFmODM3M2I2M2JkYjY5ZTI0MzVjZGJiZTQ4YTRm
ZDllMzg2Yy4uMDgzYzMyMGRjN2YxYmIyMDhhYTYyNDQyZmU0YWI4M2Y4ZmRiZDY2MyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDE3LTAyLTE3ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGEgbmV3IGRyYWcgY29kZSBwYXRoIGFuZCB1c2UgaXQgZm9yIGRyYWdnaW5n
IHBsYWluIHRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2ODUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZSB0aGUgdGVzdGluZyBpbmZyYXN0cnVjdHVyZSB0byBoYW5kbGUgTlNEcmFnZ2lu
Z1Nlc3Npb24uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZVBhc3RlYm9hcmQubW06IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm0uCisgICAgICAgICgtW0xvY2FsUGFzdGVi
b2FyZCB3cml0ZU9iamVjdHM6XSk6CisgICAgICAgIEltcGxlbWVudCB0aGlzIGluIHRlcm1zIG9m
IHRoZSBsZWdhY3kgcGFzdGVib2FyZCBBUEkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbToKKyAgICAgICAgKGRydF9XZWJIVE1MVmlld19i
ZWdpbkRyYWdnaW5nU2Vzc2lvbldpdGhJdGVtc0V2ZW50U291cmNlKToKKyAgICAgICAgKCtbRXZl
bnRTZW5kaW5nQ29udHJvbGxlciBpbml0aWFsaXplXSk6CisgICAgICAgIFN3aXp6bGUgdGhlIGRy
YWcgbWV0aG9kIGluc3RlYWQgb2YgYWRkaW5nIGEgZGVsZWdhdGUgbWV0aG9kIChsaWtlIHRoZSBv
bGQgY29kZSBkb2VzKS4KKwogMjAxNy0wMi0xNyAgU3Jpbml2YXNhbiBWaWpheWFyYWdoYXZhbiAg
PHN2aWpheWFyYWdoYXZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgRVdTIHNob3VsZCBydW4gSmF2
YVNjcmlwdENvcmUgdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ2OGRkMzU0
MDhmZDdlNjUxODRiOGY1ODYxMTkzY2VjZmU1Mzk3NzAuLjdlZWNlMDhiOWY5ZDQyN2YxOTM5NDM5
N2MyOGVmOWFjMGQ3OWFjOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA5LDcg
KzEwOSw3IEBACiAJCUExMTU4RDU5MTg5Mjc0MzYwMDg4QzE3QiAvKiBQaXhlbER1bXBTdXBwb3J0
SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEx
NThENTcxODkyNzNFQjAwODhDMTdCIC8qIFBpeGVsRHVtcFN1cHBvcnRJT1MubW0gKi87IH07CiAJ
CUExMzRFNTMxMTg4RkMyNzAwMDkwMUQwNiAvKiBEdW1wUmVuZGVyVHJlZU1haW4ubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTM0RTUyRjE4OEZDMjcw
MDA5MDFEMDYgLyogRHVtcFJlbmRlclRyZWVNYWluLm1tICovOyB9OwogCQlBMTM0RTUzNjE4OTA1
RUZGMDA5MDFEMDYgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMEUyNjE0MEUyREE0QzYwMDFCNkJDMyAv
KiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tICovOyB9OwotCQlBOEI5MUFEQTBDRjNCMzJGMDA4
RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEI5MUFENzBDRjNCMzJGMDA4RjkxRkYgLyogRHVt
cFJlbmRlclRyZWVQYXN0ZWJvYXJkLm0gKi87IH07CisJCUE4QjkxQURBMENGM0IzMkYwMDhGOTFG
RiAvKiBEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEI5MUFENzBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJl
bmRlclRyZWVQYXN0ZWJvYXJkLm1tICovOyB9OwogCQlBOEI5MUFEQzBDRjNCMzJGMDA4RjkxRkYg
LyogRHVtcFJlbmRlclRyZWVXaW5kb3cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOEI5MUFEOTBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRy
ZWVXaW5kb3cubW0gKi87IH07CiAJCUE4RDc5Q0VCMEZDMjhCMkMwMDRBQzhGRSAvKiBEdW1wUmVu
ZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThENzlDRTkwRkMyOEIyQzAwNEFDOEZFIC8qIER1bXBSZW5kZXJU
cmVlRmlsZURyYWdnaW5nU291cmNlLm0gKi87IH07CiAJCUE5QkI3QzVDMUM1MDUyNzgwMDJDNTI1
QiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE5QkI3QzVCMUM1MDUyNzgwMDJDNTI1QiAvKiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSAqLzsgfTsKQEAgLTM0Myw3ICszNDMsNyBAQAogCQlB
ODAzRkY3NDA5Q0FBRDA4MDA5QjJBMzcgLyogRHVtcFJlbmRlclRyZWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgZmls
ZUVuY29kaW5nID0gNDsgcGF0aCA9IER1bXBSZW5kZXJUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE4MTcwOTAzMDhCMTY0RDMwMENDQjlGQiAvKiBKYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB3cmFwcGVyLmZyYW1ld29yazsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJQTg0RjYwODkwOEIxMzZEQTAwRTk3
NDVGIC8qIENvY29hLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29jb2EuZnJhbWV3b3Jr
OyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29jb2EuZnJhbWV3b3JrOyBzb3Vy
Y2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwotCQlBOEI5MUFENzBDRjNCMzJGMDA4RjkxRkYgLyog
RHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsg
bmFtZSA9IER1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tOyBwYXRoID0gbWFjL0R1bXBSZW5kZXJU
cmVlUGFzdGVib2FyZC5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEI5MUFENzBD
RjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1t
OyBwYXRoID0gbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQThCOTFBRDkwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVl
V2luZG93Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRHVtcFJl
bmRlclRyZWVXaW5kb3cubW07IHBhdGggPSBtYWMvRHVtcFJlbmRlclRyZWVXaW5kb3cubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QjkxQUREMENGM0IzNzIwMDhGOTFGRiAvKiBE
dW1wUmVuZGVyVHJlZVdpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
dW1wUmVuZGVyVHJlZVdpbmRvdy5oOyBwYXRoID0gbWFjL0R1bXBSZW5kZXJUcmVlV2luZG93Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QjkxQURGMENGM0IzNzIwMDhGOTFGRiAv
KiBEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLmg7IHBhdGggPSBtYWMvRHVtcFJlbmRlclRy
ZWVQYXN0ZWJvYXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03ODAsNyArNzgw
LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQThCOTFBREYw
Q0YzQjM3MjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5oICovLAotCQkJCUE4
QjkxQUQ3MENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubSAqLywK
KwkJCQlBOEI5MUFENzBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJk
Lm1tICovLAogCQkJCTJEQTJFM0EzMUUxQkE1NDEwMEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNw
ZWxsQ2hlY2tlci5oICovLAogCQkJCTJEQTJFM0E0MUUxQkE1NDEwMEEzQkJEMCAvKiBEdW1wUmVu
ZGVyVHJlZVNwZWxsQ2hlY2tlci5tbSAqLywKIAkJCQlBOEI5MUFERDBDRjNCMzcyMDA4RjkxRkYg
LyogRHVtcFJlbmRlclRyZWVXaW5kb3cuaCAqLywKQEAgLTExMTEsNyArMTExMSw3IEBACiAJCQkJ
OTgzMEYzMUYxNUM4MTE4MTAwNUFCMjA2IC8qIER1bXBSZW5kZXJUcmVlQ29tbW9uLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDQTE4QjdCMEM5QjA4RjEwMDExNDM2OSAvKiBEdW1wUmVuZGVyVHJl
ZURyYWdnaW5nSW5mby5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4RDc5Q0VCMEZDMjhCMkMwMDRB
QzhGRSAvKiBEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJQThCOTFBREEwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlUGFzdGVib2Fy
ZC5tIGluIFNvdXJjZXMgKi8sCisJCQkJQThCOTFBREEwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBS
ZW5kZXJUcmVlUGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4QjkxQURDMENGM0Iz
MkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUJDQTE4QjYyMEM5QjA4QzIwMDExNDM2OSAvKiBFZGl0aW5nRGVsZWdhdGUubW0gaW4gU291cmNl
cyAqLywKIAkJCQlCQ0ExOEI3MDBDOUIwOERCMDAxMTQzNjkgLyogRXZlbnRTZW5kaW5nQ29udHJv
bGxlci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0MmIxZTY1M2Y2YzRjNjQwZDNlZmQzNzE1YzU2Njk3NTlkNGU4NjFhLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubQorKysgL2Rldi9udWxsCkBAIC0xLDIxOCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlLCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogICAgICAgICAgIChDKSAyMDA3IEdyYWhhbSBEZW5uaXMg
KGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQotICogICAgICAgICAgIChDKSAyMDA3IEVyaWMgU2Vp
ZGVsIDxlcmljQHdlYmtpdC5vcmc+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkR1bXBSZW5kZXJUcmVl
TWFjLmgiCi0jaW1wb3J0ICJEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQuaCIKLQotI2lmICFQTEFU
Rk9STShJT1MpCi0KLSNpbXBvcnQgPFdlYktpdC9XZWJUeXBlc0ludGVybmFsLmg+Ci0KLUBpbnRl
cmZhY2UgTG9jYWxQYXN0ZWJvYXJkIDogTlNQYXN0ZWJvYXJkCi17Ci0gICAgTlNNdXRhYmxlQXJy
YXkgKnR5cGVzQXJyYXk7Ci0gICAgTlNNdXRhYmxlU2V0ICp0eXBlc1NldDsKLSAgICBOU011dGFi
bGVEaWN0aW9uYXJ5ICpkYXRhQnlUeXBlOwotICAgIE5TSW50ZWdlciBjaGFuZ2VDb3VudDsKLSAg
ICBOU1N0cmluZyAqcGFzdGVib2FyZE5hbWU7Ci19Ci0KLS0oaWQpaW5pdFdpdGhOYW1lOihOU1N0
cmluZyAqKW5hbWU7Ci1AZW5kCi0KLXN0YXRpYyBOU011dGFibGVEaWN0aW9uYXJ5ICpsb2NhbFBh
c3RlYm9hcmRzOwotCi1AaW1wbGVtZW50YXRpb24gRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkCi0K
LS8vIFJldHVybiBhIGxvY2FsIHBhc3RlYm9hcmQgc28gd2UgZG9uJ3QgZGlzdHVyYiB0aGUgcmVh
bCBwYXN0ZWJvYXJkcyB3aGVuIHJ1bm5pbmcgdGVzdHMuCi0rIChOU1Bhc3RlYm9hcmQgKilfcGFz
dGVib2FyZFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBzdGF0aWMgaW50IG51bWJl
ciA9IDA7Ci0gICAgaWYgKCFuYW1lKQotICAgICAgICBuYW1lID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJMb2NhbFBhc3RlYm9hcmQlZCIsICsrbnVtYmVyXTsKLSAgICBpZiAoIWxvY2Fs
UGFzdGVib2FyZHMpCi0gICAgICAgIGxvY2FsUGFzdGVib2FyZHMgPSBbW05TTXV0YWJsZURpY3Rp
b25hcnkgYWxsb2NdIGluaXRdOwotICAgIExvY2FsUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFts
b2NhbFBhc3RlYm9hcmRzIG9iamVjdEZvcktleTpuYW1lXTsKLSAgICBpZiAocGFzdGVib2FyZCkK
LSAgICAgICAgcmV0dXJuIHBhc3RlYm9hcmQ7Ci0gICAgcGFzdGVib2FyZCA9IFtbTG9jYWxQYXN0
ZWJvYXJkIGFsbG9jXSBpbml0V2l0aE5hbWU6bmFtZV07Ci0gICAgW2xvY2FsUGFzdGVib2FyZHMg
c2V0T2JqZWN0OnBhc3RlYm9hcmQgZm9yS2V5Om5hbWVdOwotICAgIFtwYXN0ZWJvYXJkIHJlbGVh
c2VdOwotICAgIHJldHVybiBwYXN0ZWJvYXJkOwotfQotCi0rICh2b2lkKXJlbGVhc2VMb2NhbFBh
c3RlYm9hcmRzCi17Ci0gICAgW2xvY2FsUGFzdGVib2FyZHMgcmVsZWFzZV07Ci0gICAgbG9jYWxQ
YXN0ZWJvYXJkcyA9IG5pbDsKLX0KLQotLy8gQ29udmVuaWVuY2UgbWV0aG9kIGZvciBKUyBzbyB0
aGF0IGl0IGRvZXNuJ3QgaGF2ZSB0byB0cnkgYW5kIGNyZWF0ZSBhIE5TQXJyYXkgb24gdGhlIG9i
amMgc2lkZSBpbnN0ZWFkCi0vLyBvZiB0aGUgdXN1YWwgV2ViU2NyaXB0T2JqZWN0IHRoYXQgaXMg
cGFzc2VkIGFyb3VuZAotLSAoTlNJbnRlZ2VyKWRlY2xhcmVUeXBlOihOU1N0cmluZyAqKXR5cGUg
b3duZXI6KGlkKW5ld093bmVyCi17Ci0gICAgcmV0dXJuIFtzZWxmIGRlY2xhcmVUeXBlczpbTlNB
cnJheSBhcnJheVdpdGhPYmplY3Q6dHlwZV0gb3duZXI6bmV3T3duZXJdOwotfQotCi1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBMb2NhbFBhc3RlYm9hcmQKLQotKyAoaWQpYWxsb2MKLXsKLSAgICBy
ZXR1cm4gTlNBbGxvY2F0ZU9iamVjdChzZWxmLCAwLCAwKTsKLX0KLQotLSAoaWQpaW5pdFdpdGhO
YW1lOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlm
ICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB0eXBlc0FycmF5ID0gW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdF07Ci0gICAgdHlwZXNTZXQgPSBbW05TTXV0YWJsZVNldCBhbGxv
Y10gaW5pdF07Ci0gICAgZGF0YUJ5VHlwZSA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10g
aW5pdF07Ci0gICAgcGFzdGVib2FyZE5hbWUgPSBbbmFtZSBjb3B5XTsKLSAgICByZXR1cm4gc2Vs
ZjsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW3R5cGVzQXJyYXkgcmVsZWFzZV07Ci0g
ICAgW3R5cGVzU2V0IHJlbGVhc2VdOwotICAgIFtkYXRhQnlUeXBlIHJlbGVhc2VdOwotICAgIFtw
YXN0ZWJvYXJkTmFtZSByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKE5T
U3RyaW5nICopbmFtZQotewotICAgIHJldHVybiBwYXN0ZWJvYXJkTmFtZTsKLX0KLQotLSAodm9p
ZClyZWxlYXNlR2xvYmFsbHkKLXsKLX0KLQotLSAoTlNJbnRlZ2VyKWRlY2xhcmVUeXBlczooTlNB
cnJheSAqKW5ld1R5cGVzIG93bmVyOihpZCluZXdPd25lcgotewotICAgIFt0eXBlc0FycmF5IHJl
bW92ZUFsbE9iamVjdHNdOwotICAgIFt0eXBlc1NldCByZW1vdmVBbGxPYmplY3RzXTsKLSAgICBb
ZGF0YUJ5VHlwZSByZW1vdmVBbGxPYmplY3RzXTsKLSAgICByZXR1cm4gW3NlbGYgYWRkVHlwZXM6
bmV3VHlwZXMgb3duZXI6bmV3T3duZXJdOwotfQotCi0tIChOU0ludGVnZXIpYWRkVHlwZXM6KE5T
QXJyYXkgKiluZXdUeXBlcyBvd25lcjooaWQpbmV3T3duZXIKLXsKLSAgICB1bnNpZ25lZCBjb3Vu
dCA9IFtuZXdUeXBlcyBjb3VudF07Ci0gICAgdW5zaWduZWQgaTsKLSAgICBmb3IgKGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgewotICAgICAgICBOU1N0cmluZyAqdHlwZSA9IFtuZXdUeXBlcyBvYmpl
Y3RBdEluZGV4OmldOwotICAgICAgICBOU1N0cmluZyAqc2V0VHlwZSA9IFt0eXBlc1NldCBtZW1i
ZXI6dHlwZV07Ci0gICAgICAgIGlmICghc2V0VHlwZSkgewotICAgICAgICAgICAgc2V0VHlwZSA9
IFt0eXBlIGNvcHldOwotICAgICAgICAgICAgW3R5cGVzQXJyYXkgYWRkT2JqZWN0OnNldFR5cGVd
OwotICAgICAgICAgICAgW3R5cGVzU2V0IGFkZE9iamVjdDpzZXRUeXBlXTsKLSAgICAgICAgICAg
IFtzZXRUeXBlIHJlbGVhc2VdOwotICAgICAgICB9Ci0gICAgICAgIGlmIChuZXdPd25lciAmJiBb
bmV3T3duZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYXN0ZWJvYXJkOnByb3ZpZGVE
YXRhRm9yVHlwZTopXSkKLSAgICAgICAgICAgIFtuZXdPd25lciBwYXN0ZWJvYXJkOnNlbGYgcHJv
dmlkZURhdGFGb3JUeXBlOnNldFR5cGVdOwotICAgIH0KLSAgICByZXR1cm4gKytjaGFuZ2VDb3Vu
dDsKLX0KLQotLSAoTlNJbnRlZ2VyKWNoYW5nZUNvdW50Ci17Ci0gICAgcmV0dXJuIGNoYW5nZUNv
dW50OwotfQotCi0tIChOU0FycmF5ICopdHlwZXMKLXsKLSAgICByZXR1cm4gdHlwZXNBcnJheTsK
LX0KLQotLSAoTlNTdHJpbmcgKilhdmFpbGFibGVUeXBlRnJvbUFycmF5OihOU0FycmF5ICopdHlw
ZXMKLXsKLSAgICB1bnNpZ25lZCBjb3VudCA9IFt0eXBlcyBjb3VudF07Ci0gICAgdW5zaWduZWQg
aTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBOU1N0cmluZyAq
dHlwZSA9IFt0eXBlcyBvYmplY3RBdEluZGV4OmldOwotICAgICAgICBOU1N0cmluZyAqc2V0VHlw
ZSA9IFt0eXBlc1NldCBtZW1iZXI6dHlwZV07Ci0gICAgICAgIGlmIChzZXRUeXBlKQotICAgICAg
ICAgICAgcmV0dXJuIHNldFR5cGU7Ci0gICAgfQotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKEJP
T0wpc2V0RGF0YTooTlNEYXRhICopZGF0YSBmb3JUeXBlOihOU1N0cmluZyAqKWRhdGFUeXBlCi17
Ci0gICAgaWYgKGRhdGEgPT0gbmlsKQotICAgICAgICBkYXRhID0gW05TRGF0YSBkYXRhXTsKLSAg
ICBpZiAoIVt0eXBlc1NldCBjb250YWluc09iamVjdDpkYXRhVHlwZV0pCi0gICAgICAgIHJldHVy
biBOTzsKLSAgICBbZGF0YUJ5VHlwZSBzZXRPYmplY3Q6ZGF0YSBmb3JLZXk6ZGF0YVR5cGVdOwot
ICAgICsrY2hhbmdlQ291bnQ7Ci0gICAgcmV0dXJuIFlFUzsKLX0KLQotLSAoTlNEYXRhICopZGF0
YUZvclR5cGU6KE5TU3RyaW5nICopZGF0YVR5cGUKLXsKLSAgICByZXR1cm4gW2RhdGFCeVR5cGUg
b2JqZWN0Rm9yS2V5OmRhdGFUeXBlXTsKLX0KLQotLSAoQk9PTClzZXRQcm9wZXJ0eUxpc3Q6KGlk
KXByb3BlcnR5TGlzdCBmb3JUeXBlOihOU1N0cmluZyAqKWRhdGFUeXBlCi17Ci0gICAgQ0ZEYXRh
UmVmIGRhdGEgPSBOVUxMOwotICAgIGlmIChwcm9wZXJ0eUxpc3QpCi0gICAgICAgIGRhdGEgPSBD
RlByb3BlcnR5TGlzdENyZWF0ZVhNTERhdGEoTlVMTCwgcHJvcGVydHlMaXN0KTsKLSAgICBCT09M
IHJlc3VsdCA9IFtzZWxmIHNldERhdGE6KE5TRGF0YSAqKWRhdGEgZm9yVHlwZTpkYXRhVHlwZV07
Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIENGUmVsZWFzZShkYXRhKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi0tIChCT09MKXNldFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgZm9yVHlwZToo
TlNTdHJpbmcgKilkYXRhVHlwZQotewotICAgIENGRGF0YVJlZiBkYXRhID0gTlVMTDsKLSAgICBp
ZiAoc3RyaW5nKSB7Ci0gICAgICAgIGlmIChbc3RyaW5nIGxlbmd0aF0gPT0gMCkKLSAgICAgICAg
ICAgIGRhdGEgPSBDRkRhdGFDcmVhdGUoTlVMTCwgTlVMTCwgMCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGRhdGEgPSBDRlN0cmluZ0NyZWF0ZUV4dGVybmFsUmVwcmVzZW50YXRpb24oTlVM
TCwgKENGU3RyaW5nUmVmKXN0cmluZywga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCAwKTsKLSAgICB9
Ci0gICAgQk9PTCByZXN1bHQgPSBbc2VsZiBzZXREYXRhOihOU0RhdGEgKilkYXRhIGZvclR5cGU6
ZGF0YVR5cGVdOwotICAgIGlmIChkYXRhKQotICAgICAgICBDRlJlbGVhc2UoZGF0YSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9h
cmQubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJk
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1N2JmNWIyNWE0NmRiYjZhNmZjNmJkOGMzMGIzMTc0OTdmOGIxMGUK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWVQYXN0ZWJvYXJkLm1tCkBAIC0wLDAgKzEsMjM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA1LCAyMDA2LCAyMDA3IEFwcGxlLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICAg
ICAgICAgIChDKSAyMDA3IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQor
ICogICAgICAgICAgIChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAK
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5oIgorCisjaW1wb3J0ICJE
dW1wUmVuZGVyVHJlZU1hYy5oIgorCisjaWYgIVBMQVRGT1JNKElPUykKKworI2ltcG9ydCA8V2Vi
S2l0L1dlYlR5cGVzSW50ZXJuYWwuaD4KKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK0BpbnRlcmZhY2UgTG9jYWxQYXN0ZWJvYXJkIDogTlNQ
YXN0ZWJvYXJkIHsKKyAgICBOU011dGFibGVBcnJheSAqdHlwZXNBcnJheTsKKyAgICBOU011dGFi
bGVTZXQgKnR5cGVzU2V0OworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmRhdGFCeVR5cGU7Cisg
ICAgTlNJbnRlZ2VyIGNoYW5nZUNvdW50OworICAgIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZTsK
K30KKworLShpZClpbml0V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZTsKK0BlbmQKKworc3RhdGlj
IE5TTXV0YWJsZURpY3Rpb25hcnkgKmxvY2FsUGFzdGVib2FyZHM7CisKK0BpbXBsZW1lbnRhdGlv
biBEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQKKworLy8gUmV0dXJuIGEgbG9jYWwgcGFzdGVib2Fy
ZCBzbyB3ZSBkb24ndCBkaXN0dXJiIHRoZSByZWFsIHBhc3RlYm9hcmRzIHdoZW4gcnVubmluZyB0
ZXN0cy4KKysgKE5TUGFzdGVib2FyZCAqKV9wYXN0ZWJvYXJkV2l0aE5hbWU6KE5TU3RyaW5nICop
bmFtZQoreworICAgIHN0YXRpYyBpbnQgbnVtYmVyID0gMDsKKyAgICBpZiAoIW5hbWUpCisgICAg
ICAgIG5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkxvY2FsUGFzdGVib2FyZCVk
IiwgKytudW1iZXJdOworICAgIGlmICghbG9jYWxQYXN0ZWJvYXJkcykKKyAgICAgICAgbG9jYWxQ
YXN0ZWJvYXJkcyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgTG9j
YWxQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW2xvY2FsUGFzdGVib2FyZHMgb2JqZWN0Rm9yS2V5
Om5hbWVdOworICAgIGlmIChwYXN0ZWJvYXJkKQorICAgICAgICByZXR1cm4gcGFzdGVib2FyZDsK
KyAgICBwYXN0ZWJvYXJkID0gW1tMb2NhbFBhc3RlYm9hcmQgYWxsb2NdIGluaXRXaXRoTmFtZTpu
YW1lXTsKKyAgICBbbG9jYWxQYXN0ZWJvYXJkcyBzZXRPYmplY3Q6cGFzdGVib2FyZCBmb3JLZXk6
bmFtZV07CisgICAgW3Bhc3RlYm9hcmQgcmVsZWFzZV07CisgICAgcmV0dXJuIHBhc3RlYm9hcmQ7
Cit9CisKKysgKHZvaWQpcmVsZWFzZUxvY2FsUGFzdGVib2FyZHMKK3sKKyAgICBbbG9jYWxQYXN0
ZWJvYXJkcyByZWxlYXNlXTsKKyAgICBsb2NhbFBhc3RlYm9hcmRzID0gbmlsOworfQorCisvLyBD
b252ZW5pZW5jZSBtZXRob2QgZm9yIEpTIHNvIHRoYXQgaXQgZG9lc24ndCBoYXZlIHRvIHRyeSBh
bmQgY3JlYXRlIGEgTlNBcnJheSBvbiB0aGUgb2JqYyBzaWRlIGluc3RlYWQKKy8vIG9mIHRoZSB1
c3VhbCBXZWJTY3JpcHRPYmplY3QgdGhhdCBpcyBwYXNzZWQgYXJvdW5kCistIChOU0ludGVnZXIp
ZGVjbGFyZVR5cGU6KE5TU3RyaW5nICopdHlwZSBvd25lcjooaWQpbmV3T3duZXIKK3sKKyAgICBy
ZXR1cm4gW3NlbGYgZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDp0eXBlXSBv
d25lcjpuZXdPd25lcl07Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIExvY2FsUGFzdGVi
b2FyZAorCisrIChpZClhbGxvYworeworICAgIHJldHVybiBOU0FsbG9jYXRlT2JqZWN0KHNlbGYs
IDAsIDApOworfQorCistIChpZClpbml0V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAg
IHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmls
OworICAgIHR5cGVzQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKyAgICB0
eXBlc1NldCA9IFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XTsKKyAgICBkYXRhQnlUeXBlID0g
W1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICBwYXN0ZWJvYXJkTmFtZSA9
IFtuYW1lIGNvcHldOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sK
KyAgICBbdHlwZXNBcnJheSByZWxlYXNlXTsKKyAgICBbdHlwZXNTZXQgcmVsZWFzZV07CisgICAg
W2RhdGFCeVR5cGUgcmVsZWFzZV07CisgICAgW3Bhc3RlYm9hcmROYW1lIHJlbGVhc2VdOworICAg
IFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAoTlNTdHJpbmcgKiluYW1lCit7CisgICAgcmV0dXJu
IHBhc3RlYm9hcmROYW1lOworfQorCistICh2b2lkKXJlbGVhc2VHbG9iYWxseQoreworfQorCist
IChOU0ludGVnZXIpZGVjbGFyZVR5cGVzOihOU0FycmF5ICopbmV3VHlwZXMgb3duZXI6KGlkKW5l
d093bmVyCit7CisgICAgW3R5cGVzQXJyYXkgcmVtb3ZlQWxsT2JqZWN0c107CisgICAgW3R5cGVz
U2V0IHJlbW92ZUFsbE9iamVjdHNdOworICAgIFtkYXRhQnlUeXBlIHJlbW92ZUFsbE9iamVjdHNd
OworICAgIHJldHVybiBbc2VsZiBhZGRUeXBlczpuZXdUeXBlcyBvd25lcjpuZXdPd25lcl07Cit9
CisKKy0gKE5TSW50ZWdlcilhZGRUeXBlczooTlNBcnJheSAqKW5ld1R5cGVzIG93bmVyOihpZClu
ZXdPd25lcgoreworICAgIHVuc2lnbmVkIGNvdW50ID0gW25ld1R5cGVzIGNvdW50XTsKKyAgICB1
bnNpZ25lZCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIE5T
U3RyaW5nICp0eXBlID0gW25ld1R5cGVzIG9iamVjdEF0SW5kZXg6aV07CisgICAgICAgIE5TU3Ry
aW5nICpzZXRUeXBlID0gW3R5cGVzU2V0IG1lbWJlcjp0eXBlXTsKKyAgICAgICAgaWYgKCFzZXRU
eXBlKSB7CisgICAgICAgICAgICBzZXRUeXBlID0gW3R5cGUgY29weV07CisgICAgICAgICAgICBb
dHlwZXNBcnJheSBhZGRPYmplY3Q6c2V0VHlwZV07CisgICAgICAgICAgICBbdHlwZXNTZXQgYWRk
T2JqZWN0OnNldFR5cGVdOworICAgICAgICAgICAgW3NldFR5cGUgcmVsZWFzZV07CisgICAgICAg
IH0KKyAgICAgICAgaWYgKG5ld093bmVyICYmIFtuZXdPd25lciByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHBhc3RlYm9hcmQ6cHJvdmlkZURhdGFGb3JUeXBlOildKQorICAgICAgICAgICAg
W25ld093bmVyIHBhc3RlYm9hcmQ6c2VsZiBwcm92aWRlRGF0YUZvclR5cGU6c2V0VHlwZV07Cisg
ICAgfQorICAgIHJldHVybiArK2NoYW5nZUNvdW50OworfQorCistIChOU0ludGVnZXIpY2hhbmdl
Q291bnQKK3sKKyAgICByZXR1cm4gY2hhbmdlQ291bnQ7Cit9CisKKy0gKE5TQXJyYXkgKil0eXBl
cworeworICAgIHJldHVybiB0eXBlc0FycmF5OworfQorCistIChOU1N0cmluZyAqKWF2YWlsYWJs
ZVR5cGVGcm9tQXJyYXk6KE5TQXJyYXkgKil0eXBlcworeworICAgIHVuc2lnbmVkIGNvdW50ID0g
W3R5cGVzIGNvdW50XTsKKyAgICB1bnNpZ25lZCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKSB7CisgICAgICAgIE5TU3RyaW5nICp0eXBlID0gW3R5cGVzIG9iamVjdEF0SW5kZXg6
aV07CisgICAgICAgIE5TU3RyaW5nICpzZXRUeXBlID0gW3R5cGVzU2V0IG1lbWJlcjp0eXBlXTsK
KyAgICAgICAgaWYgKHNldFR5cGUpCisgICAgICAgICAgICByZXR1cm4gc2V0VHlwZTsKKyAgICB9
CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAoQk9PTClzZXREYXRhOihOU0RhdGEgKilkYXRhIGZv
clR5cGU6KE5TU3RyaW5nICopZGF0YVR5cGUKK3sKKyAgICBpZiAoZGF0YSA9PSBuaWwpCisgICAg
ICAgIGRhdGEgPSBbTlNEYXRhIGRhdGFdOworICAgIGlmICghW3R5cGVzU2V0IGNvbnRhaW5zT2Jq
ZWN0OmRhdGFUeXBlXSkKKyAgICAgICAgcmV0dXJuIE5POworICAgIFtkYXRhQnlUeXBlIHNldE9i
amVjdDpkYXRhIGZvcktleTpkYXRhVHlwZV07CisgICAgKytjaGFuZ2VDb3VudDsKKyAgICByZXR1
cm4gWUVTOworfQorCistIChOU0RhdGEgKilkYXRhRm9yVHlwZTooTlNTdHJpbmcgKilkYXRhVHlw
ZQoreworICAgIHJldHVybiBbZGF0YUJ5VHlwZSBvYmplY3RGb3JLZXk6ZGF0YVR5cGVdOworfQor
CistIChCT09MKXNldFByb3BlcnR5TGlzdDooaWQpcHJvcGVydHlMaXN0IGZvclR5cGU6KE5TU3Ry
aW5nICopZGF0YVR5cGUKK3sKKyAgICBDRkRhdGFSZWYgZGF0YSA9IE5VTEw7CisgICAgaWYgKHBy
b3BlcnR5TGlzdCkKKyAgICAgICAgZGF0YSA9IENGUHJvcGVydHlMaXN0Q3JlYXRlWE1MRGF0YShO
VUxMLCBwcm9wZXJ0eUxpc3QpOworICAgIEJPT0wgcmVzdWx0ID0gW3NlbGYgc2V0RGF0YTooTlNE
YXRhICopZGF0YSBmb3JUeXBlOmRhdGFUeXBlXTsKKyAgICBpZiAoZGF0YSkKKyAgICAgICAgQ0ZS
ZWxlYXNlKGRhdGEpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKEJPT0wpc2V0U3RyaW5n
OihOU1N0cmluZyAqKXN0cmluZyBmb3JUeXBlOihOU1N0cmluZyAqKWRhdGFUeXBlCit7CisgICAg
Q0ZEYXRhUmVmIGRhdGEgPSBOVUxMOworICAgIGlmIChzdHJpbmcpIHsKKyAgICAgICAgaWYgKCFz
dHJpbmcubGVuZ3RoKQorICAgICAgICAgICAgZGF0YSA9IENGRGF0YUNyZWF0ZShOVUxMLCBOVUxM
LCAwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGF0YSA9IENGU3RyaW5nQ3JlYXRlRXh0
ZXJuYWxSZXByZXNlbnRhdGlvbihOVUxMLCAoQ0ZTdHJpbmdSZWYpc3RyaW5nLCBrQ0ZTdHJpbmdF
bmNvZGluZ1VURjgsIDApOworICAgIH0KKyAgICBCT09MIHJlc3VsdCA9IFtzZWxmIHNldERhdGE6
KE5TRGF0YSAqKWRhdGEgZm9yVHlwZTpkYXRhVHlwZV07CisgICAgaWYgKGRhdGEpCisgICAgICAg
IENGUmVsZWFzZShkYXRhKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChCT09MKXdyaXRl
T2JqZWN0czooTlNBcnJheTxpZCA8TlNQYXN0ZWJvYXJkV3JpdGluZz4+ICopb2JqZWN0cworewor
ICAgIGZvciAoaWQgPE5TUGFzdGVib2FyZFdyaXRpbmc+IG9iamVjdCBpbiBvYmplY3RzKSB7Cisg
ICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gW29iamVjdCB3cml0YWJsZVR5cGVzRm9yUGFz
dGVib2FyZDpzZWxmXSkgeworICAgICAgICAgICAgYXV0byBwYXN0ZWJvYXJkVHlwZSA9IGFkb3B0
TlMoKF9fYnJpZGdlIE5TU3RyaW5nICopVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcygo
X19icmlkZ2UgQ0ZTdHJpbmdSZWYpdHlwZSwga1VUVGFnQ2xhc3NOU1Bib2FyZFR5cGUpKTsKKwor
ICAgICAgICAgICAgW3NlbGYgYWRkVHlwZXM6QFsgcGFzdGVib2FyZFR5cGUuZ2V0KCkgXSBvd25l
cjpzZWxmXTsKKworICAgICAgICAgICAgaWQgcHJvcGVydHlMaXN0ID0gW29iamVjdCBwYXN0ZWJv
YXJkUHJvcGVydHlMaXN0Rm9yVHlwZTp0eXBlXTsKKyAgICAgICAgICAgIGlmIChbcHJvcGVydHlM
aXN0IGlzS2luZE9mQ2xhc3M6TlNEYXRhLmNsYXNzXSkKKyAgICAgICAgICAgICAgICBbc2VsZiBz
ZXREYXRhOnByb3BlcnR5TGlzdCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlLmdldCgpXTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiBZRVM7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vICFQ
TEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRT
ZW5kaW5nQ29udHJvbGxlci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRp
bmdDb250cm9sbGVyLm1tCmluZGV4IGNmZDU2NDE4NjZkMjIyZTc3M2ZlZjg0Njk3ZjY2ZTMyNGZh
NDEzZWUuLmE1NTA5NzAzNWZiNTNlNmI3NjRhMDkxNzY0NWE4YTVjZjkyZjU4ZDEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCkBA
IC00Myw2ICs0Myw4IEBACiAKICNpZiAhUExBVEZPUk0oSU9TKQogI2ltcG9ydCA8Q2FyYm9uL0Nh
cmJvbi5oPiAvLyBmb3IgR2V0Q3VycmVudEV2ZW50VGltZSgpCisjaW1wb3J0IDxXZWJLaXQvV2Vi
SFRNTFZpZXcuaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2ltcG9ydCA8d3RmL21hYy9B
cHBLaXRDb21wYXRpYmlsaXR5RGVjbGFyYXRpb25zLmg+CiAjZW5kaWYKIApAQCAtMTM4LDYgKzE0
MCwzNSBAQCBCT09MIHJlcGxheWluZ1NhdmVkRXZlbnRzOwogCiBAaW1wbGVtZW50YXRpb24gRXZl
bnRTZW5kaW5nQ29udHJvbGxlcgogCisjaWYgUExBVEZPUk0oTUFDKQorc3RhdGljIE5TRHJhZ2dp
bmdTZXNzaW9uICpkcnRfV2ViSFRNTFZpZXdfYmVnaW5EcmFnZ2luZ1Nlc3Npb25XaXRoSXRlbXNF
dmVudFNvdXJjZShXZWJIVE1MVmlldyAqc2VsZiwgaWQgX2NtZCwgTlNBcnJheTxOU0RyYWdnaW5n
SXRlbSAqPiAqaXRlbXMsIE5TRXZlbnQgKmV2ZW50LCBpZDxOU0RyYWdnaW5nU291cmNlPiBzb3Vy
Y2UpCit7CisgICAgQVNTRVJUKCFkcmFnZ2luZ0luZm8pOworCisgICAgV2ViRnJhbWVWaWV3ICp3
ZWJGcmFtZVZpZXcgPSBeIHsKKyAgICAgICAgZm9yIChOU1ZpZXcgKnN1cGVydmlldyA9IHNlbGYu
c3VwZXJ2aWV3OyBzdXBlcnZpZXc7IHN1cGVydmlldyA9IHN1cGVydmlldy5zdXBlcnZpZXcpIHsK
KyAgICAgICAgICAgIGlmIChbc3VwZXJ2aWV3IGlzS2luZE9mQ2xhc3M6V2ViRnJhbWVWaWV3LmNs
YXNzXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gKFdlYkZyYW1lVmlldyAqKXN1cGVydmlldzsK
KyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gKFdlYkZyYW1lVmlldyAqKW5pbDsKKyAgICB9KCk7CisKKyAgICBXZWJWaWV3ICp3ZWJWaWV3
ID0gd2ViRnJhbWVWaWV3LndlYkZyYW1lLndlYlZpZXc7CisKKyAgICBOU1Bhc3RlYm9hcmQgKnBh
c3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpOU0RyYWdQYm9hcmRd
OworICAgIGZvciAoTlNEcmFnZ2luZ0l0ZW0gKml0ZW0gaW4gaXRlbXMpCisgICAgICAgIFtwYXN0
ZWJvYXJkIHdyaXRlT2JqZWN0czpAWyBpdGVtLml0ZW0gXV07CisKKyAgICBkcmFnZ2luZ0luZm8g
PSBbW0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvIGFsbG9jXSBpbml0V2l0aEltYWdlOm5pbCBv
ZmZzZXQ6TlNaZXJvU2l6ZSBwYXN0ZWJvYXJkOnBhc3RlYm9hcmQgc291cmNlOnNvdXJjZV07Cisg
ICAgW3dlYlZpZXcgZHJhZ2dpbmdVcGRhdGVkOmRyYWdnaW5nSW5mb107CisgICAgW0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIgcmVwbGF5U2F2ZWRFdmVudHNdOworCisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisjZW5kaWYKKwogKyAodm9pZClpbml0aWFsaXplCiB7CiAgICAgd2Via2l0RG9tRXZlbnRO
YW1lcyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOgpAQCAtMTg4LDYgKzIxOSwx
NSBAQCBCT09MIHJlcGxheWluZ1NhdmVkRXZlbnRzOwogICAgICAgICBAInVubG9hZCIsCiAgICAg
ICAgIEAiem9vbSIsCiAgICAgICAgIG5pbF07CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgLy8g
QWRkIGFuIGltcGxlbWVudGF0aW9uIG9mIC1bV2ViSFRNTFZpZXcgYmVnaW5EcmFnZ2luZ1Nlc3Np
b25XaXRoSXRlbXM6ZXZlbnQ6c291cmNlOl0uCisgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9y
KGJlZ2luRHJhZ2dpbmdTZXNzaW9uV2l0aEl0ZW1zOmV2ZW50OnNvdXJjZTopOworICAgIGNvbnN0
IGNoYXIqIHR5cGVFbmNvZGluZyA9IG1ldGhvZF9nZXRUeXBlRW5jb2RpbmcoY2xhc3NfZ2V0SW5z
dGFuY2VNZXRob2QoTlNWaWV3LmNsYXNzLCBzZWxlY3RvcikpOworCisgICAgaWYgKCFjbGFzc19h
ZGRNZXRob2QoV2ViSFRNTFZpZXcuY2xhc3MsIHNlbGVjdG9yLCByZWludGVycHJldF9jYXN0PElN
UD4oZHJ0X1dlYkhUTUxWaWV3X2JlZ2luRHJhZ2dpbmdTZXNzaW9uV2l0aEl0ZW1zRXZlbnRTb3Vy
Y2UpLCB0eXBlRW5jb2RpbmcpKQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRp
ZgogfQogCiArIChCT09MKWlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6KFNFTClhU2Vs
ZWN0b3IK
</data>
<flag name="review"
          id="323747"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>