<?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>48140</bug_id>
          
          <creation_ts>2010-10-22 10:49:50 -0700</creation_ts>
          <short_desc>WebKit2 needs to pass the current event modifier flags when requesting a new window</short_desc>
          <delta_ts>2010-10-27 20:09:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>298067</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-22 10:49:50 -0700</bug_when>
    <thetext>Now that the policy delegates are really being handle asynchronously, we need to pass more information (such as the event that caused the new window) to ChromeClient::createWindow about how the window was requested (this is necessary because by the time the decidePolicyForNewWindowAction returns, the event will no longer be on the stack.).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298068</commentid>
    <comment_count>1</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-22 10:50:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/8579145&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298083</commentid>
    <comment_count>2</comment_count>
      <attachid>71578</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-22 11:13:56 -0700</bug_when>
    <thetext>Created attachment 71578
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298085</commentid>
    <comment_count>3</comment_count>
      <attachid>71578</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-10-22 11:16:59 -0700</bug_when>
    <thetext>Comment on attachment 71578
Patch

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

&gt; WebCore/page/ContextMenuController.cpp:144
&gt; +        if (Page* newPage = oldPage-&gt;chrome()-&gt;createWindow(frame, FrameLoadRequest(ResourceRequest(urlToLoad, frame-&gt;loader()-&gt;outgoingReferrer())), features, action))

You can just pass NavigationAction as a temporary here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298092</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-22 11:35:53 -0700</bug_when>
    <thetext>Attachment 71578 did not build on qt:
Build output: http://queues.webkit.org/results/4716027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298248</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-22 16:30:29 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/70333 might have broken GTK Linux 32-bit Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300829</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-27 20:09:14 -0700</bug_when>
    <thetext>Fixed in http://trac.webkit.org/changeset/70333.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71578</attachid>
            <date>2010-10-22 11:13:56 -0700</date>
            <delta_ts>2010-10-22 11:16:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>windowAction.diff</filename>
            <type>text/plain</type>
            <size>70348</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDMxNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTAtMTAtMjIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQy
IG5lZWRzIHRvIHBhc3MgdGhlIGN1cnJlbnQgZXZlbnQgbW9kaWZpZXIgZmxhZ3Mgd2hlbiByZXF1
ZXN0aW5nIGEgbmV3IHdpbmRvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDgxNDAKKworICAgICAgICBTdG9yZSB0aGUgTmF2aWdhdGlvbkFjdGlvbiB1
c2VkIGZvciB0aGUgbmV3V2luZG93UG9saWN5RGVjaXNpb24gaW4gdGhlIFBvbGljeUNhbGxiYWNr
CisgICAgICAgIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgYWZ0ZXIgdGhlIGRlY2lzaW9uIGhhcyBi
ZWVuIG1hZGUgaW4gZnVydGhlciBjYWxsYmFja3MuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5p
bjogRml4IGV4cG9ydCBuYW1lIGZvciBuZXcgZnVuY3Rpb24gc2lnbmF0dXJlLgorICAgICAgICAq
IGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5Q2hyb21lQ2xp
ZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNhbGxDb250aW51ZUxvYWRBZnRl
ck5ld1dpbmRvd1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29udGlu
dWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2lu
ZG93KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2FsbGJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2FsbGJhY2s6OnNldCk6CisgICAgICAgIChXZWJD
b3JlOjpQb2xpY3lDYWxsYmFjazo6Y2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDYWxs
YmFjazo6Y2FuY2VsKToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2FsbGJhY2suaDoKKyAgICAg
ICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lD
aGVja2VyOjpjaGVja05ld1dpbmRvd1BvbGljeSk6CisgICAgICAgICogcGFnZS9DaHJvbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIHBh
Z2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBw
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuTmV3
V2luZG93KToKKwogMjAxMC0xMC0yMiAgQ29zbWluIFRydXRhICA8Y3RydXRhQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCkluZGV4OiBXZWJD
b3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4J
KHJldmlzaW9uIDcwMTgzKQorKysgV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5
KQpAQCAtMTA0OSw3ICsxMDQ5LDcgQEAgX19aTks3V2ViQ29yZTVSYW5nZTE0c3RhcnRDb250YWlu
ZXJFUmkKIF9fWk5LN1dlYkNvcmU1UmFuZ2UxOWJvdW5kYXJ5UG9pbnRzVmFsaWRFdgogX19aTks3
V2ViQ29yZTVSYW5nZTllbmRPZmZzZXRFUmkKIF9fWk5LN1dlYkNvcmU1UmFuZ2U5Zmlyc3ROb2Rl
RXYKLV9fWk5LN1dlYkNvcmU2Q2hyb21lMTJjcmVhdGVXaW5kb3dFUE5TXzVGcmFtZUVSS05TXzE2
RnJhbWVMb2FkUmVxdWVzdEVSS05TXzE0V2luZG93RmVhdHVyZXNFCitfX1pOSzdXZWJDb3JlNkNo
cm9tZTEyY3JlYXRlV2luZG93RVBOU181RnJhbWVFUktOU18xNkZyYW1lTG9hZFJlcXVlc3RFUktO
U18xNFdpbmRvd0ZlYXR1cmVzRVJLTlNfMTZOYXZpZ2F0aW9uQWN0aW9uRQogX19aTks3V2ViQ29y
ZTZDdXJzb3IxNHBsYXRmb3JtQ3Vyc29yRXYKIF9fWk5LN1dlYkNvcmU2RWRpdG9yMTJzZWxlY3Rl
ZFRleHRFdgogX19aTks3V2ViQ29yZTZFZGl0b3IxM2NhbkVkaXRSaWNobHlFdgpJbmRleDogV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDcwMTgzKQorKysgV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZm9jdXNlZE5vZGVDaGFuZ2VkKE5vZGUqKSB7IH0KIAotICAgIHZpcnR1
YWwgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNv
bnN0IFdpbmRvd0ZlYXR1cmVzJikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgUGFnZSogY3Jl
YXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0Zl
YXR1cmVzJiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0
dWFsIHZvaWQgc2hvdygpIHsgfQogCiAgICAgdmlydHVhbCBib29sIGNhblJ1bk1vZGFsKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KQEAgLTI1OSw3ICsyNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKSB7IH0KIAotICAgIHZpcnR1YWwgRnJh
bWUqIGRpc3BhdGNoQ3JlYXRlUGFnZSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEZyYW1l
KiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpIHsgcmV0dXJuIDA7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCkgeyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0aW9uLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSB7IH0KSW5kZXg6IFdlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAJKHJldmlzaW9uIDcwMTgzKQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTY0LDIwICsyOTY0LDIwIEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWcKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6Y2Fs
bENvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KHZvaWQqIGFyZ3VtZW50LAotICAgIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1T
dGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGJvb2wgc2hvdWxkQ29udGludWUpCisgICAg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9y
bVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYg
YWN0aW9uLCBib29sIHNob3VsZENvbnRpbnVlKQogewogICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIg
PSBzdGF0aWNfY2FzdDxGcmFtZUxvYWRlcio+KGFyZ3VtZW50KTsKLSAgICBsb2FkZXItPmNvbnRp
bnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZSwgZnJhbWVOYW1l
LCBzaG91bGRDb250aW51ZSk7CisgICAgbG9hZGVyLT5jb250aW51ZUxvYWRBZnRlck5ld1dpbmRv
d1BvbGljeShyZXF1ZXN0LCBmb3JtU3RhdGUsIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250
aW51ZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93
UG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKLSAgICBQYXNzUmVmUHRyPEZv
cm1TdGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBzaG91bGRD
b250aW51ZSkKKyAgICBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJp
bmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3Vs
ZENvbnRpbnVlKQogewogICAgIGlmICghc2hvdWxkQ29udGludWUpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBtX2ZyYW1lOwotICAgIFJlZlB0cjxGcmFtZT4g
bWFpbkZyYW1lID0gbV9jbGllbnQtPmRpc3BhdGNoQ3JlYXRlUGFnZSgpOworICAgIFJlZlB0cjxG
cmFtZT4gbWFpbkZyYW1lID0gbV9jbGllbnQtPmRpc3BhdGNoQ3JlYXRlUGFnZShhY3Rpb24pOwog
ICAgIGlmICghbWFpbkZyYW1lKQogICAgICAgICByZXR1cm47CiAKQEAgLTM0NzYsNyArMzQ3Niw4
IEBAIEZyYW1lKiBjcmVhdGVXaW5kb3coRnJhbWUqIG9wZW5lckZyYW1lLCAKICAgICBpZiAoIW9s
ZFBhZ2UpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUGFnZSogcGFnZSA9IG9sZFBhZ2UtPmNo
cm9tZSgpLT5jcmVhdGVXaW5kb3cob3BlbmVyRnJhbWUsIHJlcXVlc3RXaXRoUmVmZXJyZXIsIGZl
YXR1cmVzKTsKKyAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbjsKKyAgICBQYWdlKiBwYWdlID0g
b2xkUGFnZS0+Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhvcGVuZXJGcmFtZSwgcmVxdWVzdFdpdGhS
ZWZlcnJlciwgZmVhdHVyZXMsIGFjdGlvbik7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1
cm4gMDsKIApJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA3MDE4MykKKysrIFdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2NCwxMSArMzY0LDEx
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMb2FkVHlwZShGcmFtZUxvYWRUeXBlKTsKIAogICAg
IHN0YXRpYyB2b2lkIGNhbGxDb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kodm9pZCos
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgYm9vbCBzaG91
bGRDb250aW51ZSk7Ci0gICAgc3RhdGljIHZvaWQgY2FsbENvbnRpbnVlTG9hZEFmdGVyTmV3V2lu
ZG93UG9saWN5KHZvaWQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4sIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBib29sIHNob3VsZENvbnRpbnVlKTsKKyAg
ICBzdGF0aWMgdm9pZCBjYWxsQ29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kodm9pZCos
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBib29sIHNob3VsZENvbnRp
bnVlKTsKICAgICBzdGF0aWMgdm9pZCBjYWxsQ29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2
aWdhdGlvblBvbGljeSh2b2lkKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxG
b3JtU3RhdGU+LCBib29sIHNob3VsZENvbnRpbnVlKTsKIAogICAgIHZvaWQgY29udGludWVMb2Fk
QWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8
Rm9ybVN0YXRlPiwgYm9vbCBzaG91bGRDb250aW51ZSk7Ci0gICAgdm9pZCBjb250aW51ZUxvYWRB
ZnRlck5ld1dpbmRvd1BvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZv
cm1TdGF0ZT4sIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBib29sIHNob3VsZENvbnRpbnVlKTsK
KyAgICB2b2lkIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUs
IGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBib29sIHNob3VsZENvbnRpbnVlKTsKICAgICB2b2lk
IGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgYm9vbCBzaG91bGRDb250aW51ZSk7CiAKICAgICBib29sIHNob3VsZFNjcm9s
bFRvQW5jaG9yKGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgRnJhbWVMb2FkVHlwZSwgY29uc3QgS1VS
TCYpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA3MDE4MykK
KysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0MCw3ICsxNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKSA9IDA7CiAKLSAgICAgICAgdmly
dHVhbCBGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKCkgPSAwOworICAgICAgICB2aXJ0dWFsIEZy
YW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpID0gMDsKIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0aW9u
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9IDA7Cklu
ZGV4OiBXZWJDb3JlL2xvYWRlci9Qb2xpY3lDYWxsYmFjay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2suY3BwCShyZXZpc2lvbiA3MDE4MykKKysrIFdlYkNv
cmUvbG9hZGVyL1BvbGljeUNhbGxiYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsMTEgKzcx
LDEyIEBAIHZvaWQgUG9saWN5Q2FsbGJhY2s6OnNldChjb25zdCBSZXNvdXJjZVIKIH0KIAogdm9p
ZCBQb2xpY3lDYWxsYmFjazo6c2V0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFz
c1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwKLSAgICBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgTmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiBmdW5jdGlvbiwgdm9pZCogYXJndW1l
bnQpCisgICAgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
IG5hdmlnYXRpb25BY3Rpb24sIE5ld1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVuY3Rp
b24sIHZvaWQqIGFyZ3VtZW50KQogewogICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgbV9m
b3JtU3RhdGUgPSBmb3JtU3RhdGU7CiAgICAgbV9mcmFtZU5hbWUgPSBmcmFtZU5hbWU7CisgICAg
bV9uYXZpZ2F0aW9uQWN0aW9uID0gbmF2aWdhdGlvbkFjdGlvbjsKIAogICAgIG1fbmF2aWdhdGlv
bkZ1bmN0aW9uID0gMDsKICAgICBtX25ld1dpbmRvd0Z1bmN0aW9uID0gZnVuY3Rpb247CkBAIC0x
MDAsNyArMTAxLDcgQEAgdm9pZCBQb2xpY3lDYWxsYmFjazo6Y2FsbChib29sIHNob3VsZENvbgog
ICAgIGlmIChtX25hdmlnYXRpb25GdW5jdGlvbikKICAgICAgICAgbV9uYXZpZ2F0aW9uRnVuY3Rp
b24obV9hcmd1bWVudCwgbV9yZXF1ZXN0LCBtX2Zvcm1TdGF0ZS5nZXQoKSwgc2hvdWxkQ29udGlu
dWUpOwogICAgIGlmIChtX25ld1dpbmRvd0Z1bmN0aW9uKQotICAgICAgICBtX25ld1dpbmRvd0Z1
bmN0aW9uKG1fYXJndW1lbnQsIG1fcmVxdWVzdCwgbV9mb3JtU3RhdGUuZ2V0KCksIG1fZnJhbWVO
YW1lLCBzaG91bGRDb250aW51ZSk7CisgICAgICAgIG1fbmV3V2luZG93RnVuY3Rpb24obV9hcmd1
bWVudCwgbV9yZXF1ZXN0LCBtX2Zvcm1TdGF0ZS5nZXQoKSwgbV9mcmFtZU5hbWUsIG1fbmF2aWdh
dGlvbkFjdGlvbiwgc2hvdWxkQ29udGludWUpOwogICAgIEFTU0VSVCghbV9jb250ZW50RnVuY3Rp
b24pOwogfQogCkBAIC0xMjUsNyArMTI2LDcgQEAgdm9pZCBQb2xpY3lDYWxsYmFjazo6Y2FuY2Vs
KCkKICAgICBpZiAobV9uYXZpZ2F0aW9uRnVuY3Rpb24pCiAgICAgICAgIG1fbmF2aWdhdGlvbkZ1
bmN0aW9uKG1fYXJndW1lbnQsIG1fcmVxdWVzdCwgbV9mb3JtU3RhdGUuZ2V0KCksIGZhbHNlKTsK
ICAgICBpZiAobV9uZXdXaW5kb3dGdW5jdGlvbikKLSAgICAgICAgbV9uZXdXaW5kb3dGdW5jdGlv
bihtX2FyZ3VtZW50LCBtX3JlcXVlc3QsIG1fZm9ybVN0YXRlLmdldCgpLCBtX2ZyYW1lTmFtZSwg
ZmFsc2UpOworICAgICAgICBtX25ld1dpbmRvd0Z1bmN0aW9uKG1fYXJndW1lbnQsIG1fcmVxdWVz
dCwgbV9mb3JtU3RhdGUuZ2V0KCksIG1fZnJhbWVOYW1lLCBtX25hdmlnYXRpb25BY3Rpb24sIGZh
bHNlKTsKICAgICBpZiAobV9jb250ZW50RnVuY3Rpb24pCiAgICAgICAgIG1fY29udGVudEZ1bmN0
aW9uKG1fYXJndW1lbnQsIFBvbGljeUlnbm9yZSk7CiB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9Q
b2xpY3lDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1BvbGljeUNhbGxi
YWNrLmgJKHJldmlzaW9uIDcwMTgzKQorKysgV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2su
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsMTAgQEAKICNkZWZpbmUgUG9saWN5Q2FsbGJh
Y2tfaAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgotI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCisjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbi5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw3ICs0Myw3IEBA
IGNsYXNzIEZvcm1TdGF0ZTsKIHR5cGVkZWYgdm9pZCAoKk5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bkZ1bmN0aW9uKSh2b2lkKiBhcmd1bWVudCwKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQ
YXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGJvb2wgc2hvdWxkQ29udGludWUpOwogdHlwZWRlZiB2b2lk
ICgqTmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbikodm9pZCogYXJndW1lbnQsCi0gICAg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25zdCBTdHJp
bmcmIGZyYW1lTmFtZSwgYm9vbCBzaG91bGRDb250aW51ZSk7CisgICAgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGJvb2wgc2hvdWxkQ29udGludWUpOwogdHlwZWRlZiB2
b2lkICgqQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24pKHZvaWQqIGFyZ3VtZW50LCBQb2xp
Y3lBY3Rpb24pOwogCiBjbGFzcyBQb2xpY3lDYWxsYmFjayB7CkBAIC01Myw3ICs1NCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNsZWFyKCk7CiAgICAgdm9pZCBzZXQoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LAogICAgICAgICBOYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb25GdW5jdGlvbiwgdm9pZCogYXJndW1lbnQpOwotICAgIHZvaWQgc2V0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsCisgICAgdm9pZCBzZXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3Jt
U3RhdGU+LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYs
CiAgICAgICAgIE5ld1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50
KTsKICAgICB2b2lkIHNldChDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiwgdm9pZCogYXJn
dW1lbnQpOwogCkBAIC02OCw2ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgUmVzb3VyY2VSZXF1ZXN0
IG1fcmVxdWVzdDsKICAgICBSZWZQdHI8Rm9ybVN0YXRlPiBtX2Zvcm1TdGF0ZTsKICAgICBTdHJp
bmcgbV9mcmFtZU5hbWU7CisgICAgTmF2aWdhdGlvbkFjdGlvbiBtX25hdmlnYXRpb25BY3Rpb247
CiAKICAgICBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiBtX25hdmlnYXRpb25GdW5j
dGlvbjsKICAgICBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uIG1fbmV3V2luZG93RnVu
Y3Rpb247CkluZGV4OiBXZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkocmV2aXNpb24gNzAxODMpCisr
KyBXZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIs
NyArOTIsNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljCiB2b2lk
IFBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KGNvbnN0IE5hdmlnYXRpb25BY3Rp
b24mIGFjdGlvbiwgTmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiBmdW5jdGlvbiwKICAg
ICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBm
b3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB2b2lkKiBhcmd1bWVudCkKIHsKLSAg
ICBtX2NhbGxiYWNrLnNldChyZXF1ZXN0LCBmb3JtU3RhdGUsIGZyYW1lTmFtZSwgZnVuY3Rpb24s
IGFyZ3VtZW50KTsKKyAgICBtX2NhbGxiYWNrLnNldChyZXF1ZXN0LCBmb3JtU3RhdGUsIGZyYW1l
TmFtZSwgYWN0aW9uLCBmdW5jdGlvbiwgYXJndW1lbnQpOwogICAgIG1fZnJhbWUtPmxvYWRlcigp
LT5jbGllbnQoKS0+ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oJlBvbGlj
eUNoZWNrZXI6OmNvbnRpbnVlQWZ0ZXJOZXdXaW5kb3dQb2xpY3ksCiAgICAgICAgIGFjdGlvbiwg
cmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUpOwogfQpJbmRleDogV2ViQ29yZS9wYWdlL0No
cm9tZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9u
IDcwMTgzKQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2
Myw5ICsxNjMsOSBAQCB2b2lkIENocm9tZTo6Zm9jdXNlZE5vZGVDaGFuZ2VkKE5vZGUqIG5vCiAg
ICAgbV9jbGllbnQtPmZvY3VzZWROb2RlQ2hhbmdlZChub2RlKTsKIH0KIAotUGFnZSogQ2hyb21l
OjpjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMpIGNvbnN0CitQYWdlKiBDaHJvbWU6
OmNyZWF0ZVdpbmRvdyhGcmFtZSogZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYgYWN0aW9uKSBjb25zdAogewotICAgIFBhZ2UqIG5ld1BhZ2UgPSBtX2NsaWVudC0+Y3JlYXRl
V2luZG93KGZyYW1lLCByZXF1ZXN0LCBmZWF0dXJlcyk7CisgICAgUGFnZSogbmV3UGFnZSA9IG1f
Y2xpZW50LT5jcmVhdGVXaW5kb3coZnJhbWUsIHJlcXVlc3QsIGZlYXR1cmVzLCBhY3Rpb24pOwog
CiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogICAgIGlmIChuZXdQYWdlKSB7CkluZGV4OiBXZWJD
b3JlL3BhZ2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5oCShy
ZXZpc2lvbiA3MDE4MykKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgR2VvbG9jYXRp
b247CiAgICAgY2xhc3MgSGl0VGVzdFJlc3VsdDsKICAgICBjbGFzcyBJbnRSZWN0OworICAgIGNs
YXNzIE5hdmlnYXRpb25BY3Rpb247CiAgICAgY2xhc3MgTm9kZTsKICAgICBjbGFzcyBQYWdlOwog
ICAgIGNsYXNzIFBvcHVwTWVudUNsaWVudDsKQEAgLTk0LDcgKzk1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIHZvaWQgZm9jdXNlZE5vZGVDaGFuZ2VkKE5vZGUqKSBjb25zdDsK
IAotICAgICAgICBQYWdlKiBjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1
ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmKSBjb25zdDsKKyAgICAgICAgUGFnZSogY3JlYXRl
V2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1
cmVzJiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpIGNvbnN0OwogICAgICAgICB2b2lkIHNob3co
KSBjb25zdDsKIAogICAgICAgICBib29sIGNhblJ1bk1vZGFsKCkgY29uc3Q7CkluZGV4OiBXZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCShyZXZpc2lvbiA3MDE4MykKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTEgKzU2LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBIVE1MUGFyc2VyUXVpcmtzOwogICAgIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiAg
ICAgY2xhc3MgSW50UmVjdDsKKyAgICBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOwogICAgIGNsYXNz
IE5vZGU7CiAgICAgY2xhc3MgUGFnZTsKKyAgICBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CiAgICAg
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CiAgICAgY2xhc3MgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q7
Ci0gICAgY2xhc3MgUG9wdXBNZW51Q2xpZW50OwogICAgIGNsYXNzIFdpZGdldDsKIAogICAgIHN0
cnVjdCBGcmFtZUxvYWRSZXF1ZXN0OwpAQCAtOTgsNyArOTksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIC8vIEZyYW1lIHdhbnRzIHRvIGNyZWF0ZSB0aGUgbmV3IFBhZ2UuICBBbHNv
LCB0aGUgbmV3bHkgY3JlYXRlZCB3aW5kb3cKICAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSBzaG93
biB0byB0aGUgdXNlciB1bnRpbCB0aGUgQ2hyb21lQ2xpZW50IG9mIHRoZSBuZXdseQogICAgICAg
ICAvLyBjcmVhdGVkIFBhZ2UgaGFzIGl0cyBzaG93IG1ldGhvZCBjYWxsZWQuCi0gICAgICAgIHZp
cnR1YWwgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYs
IGNvbnN0IFdpbmRvd0ZlYXR1cmVzJikgPSAwOworICAgICAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0
ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0
dXJlcyYsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBzaG93KCkgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpID0gMDsK
SW5kZXg6IFdlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3MDE4
MykKKysrIFdlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCisjaW5j
bHVkZSAiTmF2aWdhdGlvbkFjdGlvbi5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKQEAgLTEzOSw3ICsxNDAsOCBAQCBzdGF0
aWMgdm9pZCBvcGVuTmV3V2luZG93KGNvbnN0IEtVUkwmIHVyCiB7CiAgICAgaWYgKFBhZ2UqIG9s
ZFBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIFdpbmRvd0ZlYXR1cmVzIGZlYXR1cmVz
OwotICAgICAgICBpZiAoUGFnZSogbmV3UGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLT5jcmVhdGVX
aW5kb3coZnJhbWUsIEZyYW1lTG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHVybFRvTG9hZCwg
ZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpKSwgZmVhdHVyZXMpKQorICAgICAg
ICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbjsKKyAgICAgICAgaWYgKFBhZ2UqIG5ld1BhZ2UgPSBv
bGRQYWdlLT5jaHJvbWUoKS0+Y3JlYXRlV2luZG93KGZyYW1lLCBGcmFtZUxvYWRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCh1cmxUb0xvYWQsIGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJl
cigpKSksIGZlYXR1cmVzLCBhY3Rpb24pKQogICAgICAgICAgICAgbmV3UGFnZS0+Y2hyb21lKCkt
PnNob3coKTsKICAgICB9CiB9CkluZGV4OiBXZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gNzAzMTgpCisrKyBXZWJLaXQyL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEwLTEwLTIyICBTYW0gV2Vpbmln
ICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2ViS2l0MiBuZWVkcyB0byBwYXNzIHRoZSBjdXJyZW50IGV2ZW50IG1vZGlm
aWVyIGZsYWdzIHdoZW4gcmVxdWVzdGluZyBhIG5ldyB3aW5kb3cKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MTQwCisKKyAgICAgICAgSW4gYWRkaXRp
b24gdG8gcGFzc2luZyBtb2RpZmllciBmbGFncyBmcm9tIHRoZSBub3cgcGFzc2VkIE5hdmlnYXRp
b25BY3Rpb24sIGFsc28gcGFzcworICAgICAgICB0aGUgV2luZG93RmVhdHVyZXMgdG8gdGhlIFVJ
UHJvY2Vzcy4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oOgor
ICAgICAgICAoQ29yZUlQQzo6Y2FsbE1lbWJlckZ1bmN0aW9uKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYkV2ZW50Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkV2ZW50Ojptb2RpZmllcnMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlVJQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGll
bnQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Om1vZGlmaWVyc0Zv
ck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0Ojptb3VzZUJ1dHRvbkZvck5hdmln
YXRpb25BY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMC0xMC0yMCAgSm9uIEhvbmV5Y3V0dCAgPGpob25leWN1
dHRAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDIzNzY2PiBDdXJzb3Ig
ZG9lcyBub3QgYmVjb21lICJidXN5IiB3aGVuIGEgcGFnZSBpcwpJbmRleDogV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCShyZXZpc2lvbiA3MDI0MSkKKysrIFdlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNzYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2
ICsxMDMsMTIgQEAgdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oY29uc3QgQXJndW1lbnRzMwogICAg
IChvYmplY3QtPipmdW5jdGlvbikoYXJncy5hcmd1bWVudDEsIGFyZ3MuYXJndW1lbnQyLCBhcmdz
LmFyZ3VtZW50MywgcmVwbHlBcmdzLmFyZ3VtZW50MSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1l
IEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0
eXBlbmFtZSBSMSwgdHlwZW5hbWUgUjI+Cit2b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihjb25zdCBB
cmd1bWVudHMzPFAxLCBQMiwgUDM+JiBhcmdzLCBBcmd1bWVudHMyPFIxLCBSMj4mIHJlcGx5QXJn
cywgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK3sKKyAgICAob2JqZWN0LT4qZnVuY3Rpb24pKGFy
Z3MuYXJndW1lbnQxLCBhcmdzLmFyZ3VtZW50MiwgYXJncy5hcmd1bWVudDMsIHJlcGx5QXJncy5h
cmd1bWVudDEsIHJlcGx5QXJncy5hcmd1bWVudDIpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBD
LCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlw
ZW5hbWUgUDQsIHR5cGVuYW1lIFIxPgogdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oY29uc3QgQXJn
dW1lbnRzNDxQMSwgUDIsIFAzLCBQND4mIGFyZ3MsIEFyZ3VtZW50czE8UjE+JiByZXBseUFyZ3Ms
IEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiB7CkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAkocmV2aXNpb24gNzAyNDEpCisrKyBXZWJLaXQyL1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWV3cG9ydEFyZ3VtZW50cy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvV2luZG93RmVhdHVyZXMuaD4KICNpbmNsdWRlIDxsaW1pdHM+CiAKIG5hbWVz
cGFjZSBDb3JlSVBDIHsKQEAgLTE2OCw2ICsxNjksNjYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOgogICAgIH0KIH07CiAKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcz4geworICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1
cmVzJiB3aW5kb3dGZWF0dXJlcykKKyAgICB7CisgICAgICAgIGVuY29kZXItPmVuY29kZSh3aW5k
b3dGZWF0dXJlcy54KTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHdpbmRvd0ZlYXR1cmVzLnkp
OworICAgICAgICBlbmNvZGVyLT5lbmNvZGUod2luZG93RmVhdHVyZXMud2lkdGgpOworICAgICAg
ICBlbmNvZGVyLT5lbmNvZGUod2luZG93RmVhdHVyZXMuaGVpZ2h0KTsKKyAgICAgICAgZW5jb2Rl
ci0+ZW5jb2RlKHdpbmRvd0ZlYXR1cmVzLnhTZXQpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUo
d2luZG93RmVhdHVyZXMueVNldCk7CisgICAgICAgIGVuY29kZXItPmVuY29kZSh3aW5kb3dGZWF0
dXJlcy53aWR0aFNldCk7CisgICAgICAgIGVuY29kZXItPmVuY29kZSh3aW5kb3dGZWF0dXJlcy5o
ZWlnaHRTZXQpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUod2luZG93RmVhdHVyZXMubWVudUJh
clZpc2libGUpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUod2luZG93RmVhdHVyZXMuc3RhdHVz
QmFyVmlzaWJsZSk7CisgICAgICAgIGVuY29kZXItPmVuY29kZSh3aW5kb3dGZWF0dXJlcy50b29s
QmFyVmlzaWJsZSk7CisgICAgICAgIGVuY29kZXItPmVuY29kZSh3aW5kb3dGZWF0dXJlcy5sb2Nh
dGlvbkJhclZpc2libGUpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUod2luZG93RmVhdHVyZXMu
c2Nyb2xsYmFyc1Zpc2libGUpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUod2luZG93RmVhdHVy
ZXMucmVzaXphYmxlKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHdpbmRvd0ZlYXR1cmVzLmZ1
bGxzY3JlZW4pOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUod2luZG93RmVhdHVyZXMuZGlhbG9n
KTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmIHdpbmRvd0ZlYXR1cmVzKQorICAgIHsK
KyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUod2luZG93RmVhdHVyZXMueCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHdpbmRvd0Zl
YXR1cmVzLnkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWRlY29k
ZXItPmRlY29kZSh3aW5kb3dGZWF0dXJlcy53aWR0aCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHdpbmRvd0ZlYXR1cmVzLmhlaWdodCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KHdpbmRvd0ZlYXR1cmVzLnhTZXQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAoIWRlY29kZXItPmRlY29kZSh3aW5kb3dGZWF0dXJlcy55U2V0KSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUod2luZG93RmVhdHVy
ZXMud2lkdGhTZXQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWRl
Y29kZXItPmRlY29kZSh3aW5kb3dGZWF0dXJlcy5oZWlnaHRTZXQpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh3aW5kb3dGZWF0dXJlcy5t
ZW51QmFyVmlzaWJsZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKHdpbmRvd0ZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh3aW5kb3dG
ZWF0dXJlcy50b29sQmFyVmlzaWJsZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHdpbmRvd0ZlYXR1cmVzLmxvY2F0aW9uQmFyVmlzaWJs
ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKHdpbmRvd0ZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUod2luZG93RmVhdHVyZXMucmVz
aXphYmxlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUod2luZG93RmVhdHVyZXMuZnVsbHNjcmVlbikpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHdpbmRvd0ZlYXR1cmVzLmRpYWxv
ZykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KK307CisKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKIAogI2VuZGlmIC8vIFdlYkNvcmVBcmd1
bWVudENvZGVyc19oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9u
IDcwMjQxKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYlVSTFJlcXVlc3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvV2luZG93RmVhdHVyZXMuaD4KICNpbmNsdWRlIDxzdGRpby5oPgog
CiAjaWZuZGVmIE5ERUJVRwpAQCAtODI5LDkgKzgzMCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3
aWxsU3VibWl0Rm9ybSh1aW50NjQKIAogLy8gVUlDbGllbnQKIAotdm9pZCBXZWJQYWdlUHJveHk6
OmNyZWF0ZU5ld1BhZ2UodWludDY0X3QmIG5ld1BhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYgbmV3UGFnZVBhcmFtZXRlcnMpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFn
ZShjb25zdCBXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIHVpbnQzMl90IG9wYXF1ZU1v
ZGlmaWVycywgaW50MzJfdCBvcGFxdWVNb3VzZUJ1dHRvbiwgdWludDY0X3QmIG5ld1BhZ2VJRCwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgbmV3UGFnZVBhcmFtZXRlcnMpCiB7Ci0gICAgUmVm
UHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFnZSA9IG1fdWlDbGllbnQuY3JlYXRlTmV3UGFnZSh0aGlz
KTsKKyAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQYWdlID0gbV91aUNsaWVudC5jcmVhdGVO
ZXdQYWdlKHRoaXMsIHdpbmRvd0ZlYXR1cmVzLCBzdGF0aWNfY2FzdDxXZWJFdmVudDo6TW9kaWZp
ZXJzPihvcGFxdWVNb2RpZmllcnMpLCBzdGF0aWNfY2FzdDxXZWJNb3VzZUV2ZW50OjpCdXR0b24+
KG9wYXF1ZU1vdXNlQnV0dG9uKSk7CiAgICAgaWYgKG5ld1BhZ2UpIHsKICAgICAgICAgLy8gRklY
TUU6IFBhc3MgdGhlIHJlYWwgc2l6ZS4KICAgICAgICAgbmV3UGFnZUlEID0gbmV3UGFnZS0+cGFn
ZUlEKCk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gNzAyNDEpCisr
KyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNjEs
NiArNjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRmxvYXRSZWN0OwogICAg
IGNsYXNzIEludFNpemU7CiAgICAgc3RydWN0IFZpZXdwb3J0QXJndW1lbnRzOworICAgIHN0cnVj
dCBXaW5kb3dGZWF0dXJlczsKIH0KIAogc3RydWN0IFdLQ29udGV4dFN0YXRpc3RpY3M7CkBAIC0y
NTYsNyArMjU3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnN0IFN0cmluZ1BhaXJWZWN0b3Im
IHRleHRGaWVsZFZhbHVlcywgdWludDY0X3QgbGlzdGVuZXJJRCwgQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKik7CiAKICAgICAvLyBVSSBjbGllbnQKLSAgICB2b2lkIGNyZWF0ZU5ld1BhZ2UodWlu
dDY0X3QmIG5ld1BhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOworICAgIHZvaWQg
Y3JlYXRlTmV3UGFnZShjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIHVpbnQzMl90IG1v
ZGlmaWVycywgaW50MzJfdCBtb3VzZUJ1dHRvbiwgdWludDY0X3QmIG5ld1BhZ2VJRCwgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgc2hvd1BhZ2UoKTsKICAgICB2b2lkIGNs
b3NlUGFnZSgpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFN0cmluZyYpOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgkocmV2aXNpb24gNzAyNDEpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKIAogbWVz
c2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICAjIFVJIG1lc3NhZ2VzLgotICAgIENyZWF0ZU5l
d1BhZ2UoKSAtPiAodWludDY0X3QgbmV3UGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMgbmV3UGFnZVBhcmFtZXRlcnMpCisgICAgQ3JlYXRlTmV3UGFnZShXZWJDb3JlOjpX
aW5kb3dGZWF0dXJlcyB3aW5kb3dGZWF0dXJlcywgdWludDMyX3QgbW9kaWZpZXJzLCBpbnQzMl90
IG1vdXNlQnV0dG9uKSAtPiAodWludDY0X3QgbmV3UGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMgbmV3UGFnZVBhcmFtZXRlcnMpCiAgICAgU2hvd1BhZ2UoKQogICAgIENs
b3NlUGFnZSgpCiAgICAgUnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIFdURjo6
U3RyaW5nIG1lc3NhZ2UpIC0+ICgpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwCShy
ZXZpc2lvbiA3MDI0MSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjUsOCArMjUsMTAgQEAKIAogI2luY2x1ZGUgIldlYlVJQ2xpZW50Lmgi
CiAKKyNpbmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYk51
bWJlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmxv
YXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CkBAIC01MCwxMiArNTIsMzAg
QEAgdm9pZCBXZWJVSUNsaWVudDo6aW5pdGlhbGl6ZShjb25zdCBXS1BhZwogICAgICAgICBtZW1z
ZXQoJm1fcGFnZVVJQ2xpZW50LCAwLCBzaXplb2YobV9wYWdlVUlDbGllbnQpKTsKIH0KIAotUGFz
c1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQ
cm94eSogcGFnZSkKK1Bhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJVSUNsaWVudDo6Y3JlYXRl
TmV3UGFnZShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiB3aW5kb3dG
ZWF0dXJlcywgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMsIFdlYk1vdXNlRXZlbnQ6OkJ1
dHRvbiBidXR0b24pCiB7CiAgICAgaWYgKCFtX3BhZ2VVSUNsaWVudC5jcmVhdGVOZXdQYWdlKQog
ICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYodG9JbXBsKG1fcGFn
ZVVJQ2xpZW50LmNyZWF0ZU5ld1BhZ2UodG9BUEkocGFnZSksIG1fcGFnZVVJQ2xpZW50LmNsaWVu
dEluZm8pKSk7CisKKyAgICBJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlIG1hcDsKKyAgICBp
ZiAod2luZG93RmVhdHVyZXMueFNldCkKKyAgICAgICAgbWFwLnNldCgieCIsIFdlYkRvdWJsZTo6
Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLngpKTsKKyAgICBpZiAod2luZG93RmVhdHVyZXMueVNldCkK
KyAgICAgICAgbWFwLnNldCgieSIsIFdlYkRvdWJsZTo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnkp
KTsKKyAgICBpZiAod2luZG93RmVhdHVyZXMud2lkdGhTZXQpCisgICAgICAgIG1hcC5zZXQoIndp
ZHRoIiwgV2ViRG91YmxlOjpjcmVhdGUod2luZG93RmVhdHVyZXMud2lkdGgpKTsKKyAgICBpZiAo
d2luZG93RmVhdHVyZXMuaGVpZ2h0U2V0KQorICAgICAgICBtYXAuc2V0KCJoZWlnaHQiLCBXZWJE
b3VibGU6OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5oZWlnaHQpKTsKKyAgICBtYXAuc2V0KCJtZW51
QmFyVmlzaWJsZSIsIFdlYkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5tZW51QmFyVmlz
aWJsZSkpOworICAgIG1hcC5zZXQoInN0YXR1c0JhclZpc2libGUiLCBXZWJCb29sZWFuOjpjcmVh
dGUod2luZG93RmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSkpOworICAgIG1hcC5zZXQoInRvb2xC
YXJWaXNpYmxlIiwgV2ViQm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnRvb2xCYXJWaXNp
YmxlKSk7CisgICAgbWFwLnNldCgic2Nyb2xsYmFyc1Zpc2libGUiLCBXZWJCb29sZWFuOjpjcmVh
dGUod2luZG93RmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUpKTsKKyAgICBtYXAuc2V0KCJyZXNp
emFibGUiLCBXZWJCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMucmVzaXphYmxlKSk7Cisg
ICAgbWFwLnNldCgiZnVsbHNjcmVlbiIsIFdlYkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJl
cy5mdWxsc2NyZWVuKSk7CisgICAgbWFwLnNldCgiZGlhbG9nIiwgV2ViQm9vbGVhbjo6Y3JlYXRl
KHdpbmRvd0ZlYXR1cmVzLmRpYWxvZykpOworICAgIFJlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5
PiBmZWF0dXJlc01hcCA9IEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KG1hcCk7CisKKyAgICBy
ZXR1cm4gYWRvcHRSZWYodG9JbXBsKG1fcGFnZVVJQ2xpZW50LmNyZWF0ZU5ld1BhZ2UodG9BUEko
cGFnZSksIHRvQVBJKGZlYXR1cmVzTWFwLmdldCgpKSwgdG9BUEkobW9kaWZpZXJzKSwgdG9BUEko
YnV0dG9uKSwgbV9wYWdlVUlDbGllbnQuY2xpZW50SW5mbykpKTsKIH0gCiAKIHZvaWQgV2ViVUlD
bGllbnQ6OnNob3dQYWdlKFdlYlBhZ2VQcm94eSogcGFnZSkKSW5kZXg6IFdlYktpdDIvVUlQcm9j
ZXNzL1dlYlVJQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlD
bGllbnQuaAkocmV2aXNpb24gNzAyNDEpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEludFNpemU7CitzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgV2ViVUlDbGllbnQoKTsK
ICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgV0tQYWdlVUlDbGllbnQqKTsKIAotICAgIFBhc3NS
ZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSopOworICAgIFBh
c3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSosIGNvbnN0
IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwgV2ViRXZlbnQ6Ok1vZGlmaWVycywgV2ViTW91c2VF
dmVudDo6QnV0dG9uKTsKICAgICB2b2lkIHNob3dQYWdlKFdlYlBhZ2VQcm94eSopOwogICAgIHZv
aWQgY2xvc2UoV2ViUGFnZVByb3h5Kik7CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5o
CShyZXZpc2lvbiA3MDI0MSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5LDcgQEAgc3RydWN0IFdLUGFnZUZvcm1DbGllbnQg
ewogdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlRm9ybUNsaWVudCBXS1BhZ2VGb3JtQ2xpZW50OwogCiAv
LyBVSSBDbGllbnQKLXR5cGVkZWYgV0tQYWdlUmVmICgqV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxi
YWNrKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIFdL
UGFnZVJlZiAoKldLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdL
RGljdGlvbmFyeVJlZiBmZWF0dXJlcywgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZl
bnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBl
ZGVmIHZvaWQgKCpXS1BhZ2VTaG93UGFnZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VDbG9zZUNhbGxiYWNrKShX
S1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpX
S1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5n
UmVmIGFsZXJ0VGV4dCwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7
CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gNzAyNDEpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEy
LDExICsxMTIsMTQgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmZvY3VzZWROb2RlQ2hhbmdlZAog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLVBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRl
V2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1
cmVzJikKK1BhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3Qg
RnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywg
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbikKIHsKKyAgICB1aW50MzJf
dCBtb2RpZmllcnMgPSBtb2RpZmllcnNGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rp
b24pOworICAgIGludDMyX3QgbW91c2VCdXR0b24gPSBtb3VzZUJ1dHRvbkZvck5hdmlnYXRpb25B
Y3Rpb24obmF2aWdhdGlvbkFjdGlvbik7CisKICAgICB1aW50NjRfdCBuZXdQYWdlSUQgPSAwOwog
ICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Q3JlYXRlTmV3UGFnZSgpLAorICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdl
KHdpbmRvd0ZlYXR1cmVzLCBtb2RpZmllcnMsIG1vdXNlQnV0dG9uKSwKICAgICAgICAgICAgIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OlJlcGx5KG5ld1BhZ2VJRCwgcGFy
YW1ldGVycyksCiAgICAgICAgICAgICBtX3BhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpDb25uZWN0
aW9uOjpOb1RpbWVvdXQpKSB7CiAgICAgICAgIHJldHVybiAwOwpJbmRleDogV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNp
b24gNzAyNDEpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICAv
LyBGcmFtZSB3YW50cyB0byBjcmVhdGUgdGhlIG5ldyBQYWdlLiAgQWxzbywgdGhlIG5ld2x5IGNy
ZWF0ZWQgd2luZG93CiAgICAgLy8gc2hvdWxkIG5vdCBiZSBzaG93biB0byB0aGUgdXNlciB1bnRp
bCB0aGUgQ2hyb21lQ2xpZW50IG9mIHRoZSBuZXdseQogICAgIC8vIGNyZWF0ZWQgUGFnZSBoYXMg
aXRzIHNob3cgbWV0aG9kIGNhbGxlZC4KLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIGNyZWF0
ZVdpbmRvdyhXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6
UGFnZSogY3JlYXRlV2luZG93KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6RnJhbWVM
b2FkUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwgY29uc3QgV2ViQ29y
ZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7CiAgICAgCiAg
ICAgdmlydHVhbCBib29sIGNhblJ1bk1vZGFsKCk7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJ
KHJldmlzaW9uIDcwMjQ0KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQzLDE0ICs0NDMsMTQg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaQogICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCks
IEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSksIHdlYlBh
Z2UtPnBhZ2VJRCgpKTsKIH0KIAotRnJhbWUqIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aENyZWF0ZVBhZ2UoKQorRnJhbWUqIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0
ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbikKIHsKICAgICBX
ZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBKdXN0IGNhbGwgdGhyb3VnaCB0byB0aGUgY2hyb21l
IGNsaWVudC4KLSAgICBQYWdlKiBuZXdQYWdlID0gd2ViUGFnZS0+Y29yZVBhZ2UoKS0+Y2hyb21l
KCktPmNyZWF0ZVdpbmRvdyhtX2ZyYW1lLT5jb3JlRnJhbWUoKSwgRnJhbWVMb2FkUmVxdWVzdCgp
LCBXaW5kb3dGZWF0dXJlcygpKTsKKyAgICBQYWdlKiBuZXdQYWdlID0gd2ViUGFnZS0+Y29yZVBh
Z2UoKS0+Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhtX2ZyYW1lLT5jb3JlRnJhbWUoKSwgRnJhbWVM
b2FkUmVxdWVzdCgpLCBXaW5kb3dGZWF0dXJlcygpLCBuYXZpZ2F0aW9uQWN0aW9uKTsKICAgICBp
ZiAoIW5ld1BhZ2UpCiAgICAgICAgIHJldHVybiAwOwogICAgIApAQCAtNDY2LDcgKzQ2Niw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygKICAgICB3ZWJQYWdlLT5z
aG93KCk7CiB9CiAKLXN0YXRpYyB1aW50MzJfdCBtb2RpZmllcnNGb3JOYXZpZ2F0aW9uQWN0aW9u
KGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24pCit1aW50MzJfdCBtb2Rp
ZmllcnNGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRp
b25BY3Rpb24pCiB7CiAgICAgdWludDMyX3QgbW9kaWZpZXJzID0gMDsKICAgICBpZiAoY29uc3Qg
VUlFdmVudFdpdGhLZXlTdGF0ZSoga2V5U3RhdGVFdmVudCA9IGZpbmRFdmVudFdpdGhLZXlTdGF0
ZShjb25zdF9jYXN0PEV2ZW50Kj4obmF2aWdhdGlvbkFjdGlvbi5ldmVudCgpKSkpIHsKQEAgLTQ5
Miw3ICs0OTIsNyBAQCBzdGF0aWMgY29uc3QgTW91c2VFdmVudCogZmluZE1vdXNlRXZlbnQoCiAg
ICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQzMl90IG1vdXNlQnV0dG9uRm9yTmF2aWdhdGlv
bkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uKQoraW50MzJf
dCBtb3VzZUJ1dHRvbkZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYg
bmF2aWdhdGlvbkFjdGlvbikKIHsKICAgICBjb25zdCBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0g
ZmluZE1vdXNlRXZlbnQobmF2aWdhdGlvbkFjdGlvbi5ldmVudCgpKTsKICAgICBpZiAoIW1vdXNl
RXZlbnQpCkBAIC01MDQsNyArNTA0LDYgQEAgc3RhdGljIGludDMyX3QgbW91c2VCdXR0b25Gb3JO
YXZpZ2F0aW9uQQogICAgIHJldHVybiBtb3VzZUV2ZW50LT5idXR0b24oKTsKIH0KIAotCiB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck1JTUVUeXBlKEZy
YW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAobV9mcmFtZS0+Y29yZUZyYW1l
KCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT51cmwoKS5pc0VtcHR5KCkgJiYgcmVxdWVz
dC51cmwoKSA9PSBibGFua1VSTCgpKSB7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24g
NzAyNDEpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCk7CiAgICAgCi0gICAgdmly
dHVhbCBXZWJDb3JlOjpGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKCk7CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRp
b25BY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCk7CiAgICAgCiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUoV2ViQ29yZTo6RnJh
bWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Jik7CkBAIC0yMTEsNiArMjExLDkgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3OwogfTsKIAordWludDMyX3QgbW9kaWZpZXJz
Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7Citp
bnQzMl90IG1vdXNlQnV0dG9uRm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZp
Z2F0aW9uQWN0aW9uJik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gV2Vi
RnJhbWVMb2FkZXJDbGllbnRfaApJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA3MDMxOCkKKysr
IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBA
QAorMjAxMC0xMC0yMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdDIgbmVlZHMgdG8gcGFz
cyB0aGUgY3VycmVudCBldmVudCBtb2RpZmllciBmbGFncyB3aGVuIHJlcXVlc3RpbmcgYSBuZXcg
d2luZG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
ODE0MAorCisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDaHJvbWVDbGllbnRJbXBsOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIHNyYy9DaHJv
bWVDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hDcmVhdGVQ
YWdlKToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmg6CisgICAgICAgIEFk
ZCBOYXZpZ2F0aW9uQWN0aW9uIHBhcmFtZXRlci4KKwogMjAxMC0xMC0yMiAgU2hlcmlmZiBCb3Qg
IDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjcwMzAxLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudElt
cGwuY3BwCShyZXZpc2lvbiA3MDE4MykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xp
ZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW50UmVj
dC5oIgorI2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJOb2RlLmgiCiAj
aW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
QEAgLTI1MSw3ICsyNTIsNyBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OmZvY3VzZWROb2RlQ2hh
bmdlCiB9CiAKIFBhZ2UqIENocm9tZUNsaWVudEltcGw6OmNyZWF0ZVdpbmRvdygKLSAgICBGcmFt
ZSogZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHIsIGNvbnN0IFdpbmRvd0ZlYXR1cmVz
JiBmZWF0dXJlcykKKyAgICBGcmFtZSogZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHIs
IGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYp
CiB7CiAgICAgaWYgKCFtX3dlYlZpZXctPmNsaWVudCgpKQogICAgICAgICByZXR1cm4gMDsKSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA3MDE4MykK
KysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGFrZUZvY3VzKFdl
YkNvcmU6OkZvY3VzRGlyZWN0aW9uKTsKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXNlZE5vZGVDaGFu
Z2VkKFdlYkNvcmU6Ok5vZGUqKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIGNyZWF0ZVdp
bmRvdygKLSAgICAgICAgV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXZWJDb3JlOjpGcmFtZUxvYWRS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmKTsKKyAgICAgICAgV2ViQ29y
ZTo6RnJhbWUqLCBjb25zdCBXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6V2luZG93RmVhdHVyZXMmLCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7CiAg
ICAgdmlydHVhbCB2b2lkIHNob3coKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuTW9kYWwoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcnVuTW9kYWwoKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDcwMTgzKQorKysgV2ViS2l0
L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MTIsMTEgKzgxMiwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hE
aWRGCiAgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXQobV93ZWJGcmFtZSk7CiB9CiAKLUZyYW1lKiBGcmFtZUxvYWRlckNsaWVudEltcGw6
OmRpc3BhdGNoQ3JlYXRlUGFnZSgpCitGcmFtZSogRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNw
YXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uKQogewogICAgIHN0
cnVjdCBXaW5kb3dGZWF0dXJlcyBmZWF0dXJlczsKICAgICBQYWdlKiBuZXdQYWdlID0gbV93ZWJG
cmFtZS0+ZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y3JlYXRlV2luZG93KAotICAgICAgICBt
X3dlYkZyYW1lLT5mcmFtZSgpLCBGcmFtZUxvYWRSZXF1ZXN0KCksIGZlYXR1cmVzKTsKKyAgICAg
ICAgbV93ZWJGcmFtZS0+ZnJhbWUoKSwgRnJhbWVMb2FkUmVxdWVzdCgpLCBmZWF0dXJlcywgYWN0
aW9uKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIGhhdmUgYSB2YWxpZCBkaXNwb3NpdGlv
bi4gIFRoaXMgc2hvdWxkIGhhdmUgYmVlbiBzZXQgaW4KICAgICAvLyB0aGUgcHJlY2VlZGluZyBj
YWxsIHRvIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uLgpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA3MDE4
MykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmluaXNoTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0
TGF5b3V0KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0KCk7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpGcmFtZSogZGlzcGF0Y2hDcmVhdGVQ
YWdlKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNv
bnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hTaG93KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5
cGUoV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgV1RGOjpTdHJp
bmcmIG1pbWVfdHlwZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6
OkZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25B
Y3Rpb24mIGFjdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4gZm9ybV9zdGF0ZSwgY29uc3QgV1RGOjpTdHJp
bmcmIGZyYW1lX25hbWUpOwpJbmRleDogV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJldmlzaW9uIDcwMzE4KQorKysgV2ViS2l0L2VmbC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0xMC0yMiAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdlYktpdDIgbmVlZHMgdG8gcGFzcyB0aGUgY3VycmVudCBldmVu
dCBtb2RpZmllciBmbGFncyB3aGVuIHJlcXVlc3RpbmcgYSBuZXcgd2luZG93CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODE0MAorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudEVmbDo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlz
cGF0Y2hDcmVhdGVQYWdlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5oOgorICAgICAgICBBZGQgTmF2aWdhdGlvbkFjdGlvbiBwYXJhbWV0ZXIuCisKIDIw
MTAtMTAtMTkgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gNzAxODMpCisrKyBXZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW50UmVj
dC5oIgogI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uLmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC0xNDMsNyArMTQ0LDcgQEAgdm9pZCBDaHJv
bWVDbGllbnRFZmw6OnVuZm9jdXMoKQogICAgIGV2YXNfb2JqZWN0X2ZvY3VzX3NldChtX3ZpZXcs
IEVJTkFfRkFMU0UpOwogfQogCi1QYWdlKiBDaHJvbWVDbGllbnRFZmw6OmNyZWF0ZVdpbmRvdyhG
cmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFdp
bmRvd0ZlYXR1cmVzJiBmZWF0dXJlcykKK1BhZ2UqIENocm9tZUNsaWVudEVmbDo6Y3JlYXRlV2lu
ZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29u
c3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikKIHsK
ICAgICBFdmFzX09iamVjdCogbmV3VmlldyA9IGV3a192aWV3X3dpbmRvd19jcmVhdGUobV92aWV3
LCBFSU5BX1RSVUUsICZmZWF0dXJlcyk7CiAgICAgaWYgKCFuZXdWaWV3KQpJbmRleDogV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCShyZXZpc2lvbiA3MDE4MykK
KysrIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGZvY3Vz
ZWROb2RlQ2hhbmdlZChOb2RlKik7CiAKLSAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhG
cmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYpOwor
ICAgIHZpcnR1YWwgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVx
dWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpOwog
ICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuTW9kYWwo
KTsKSW5kZXg6IFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuY3BwCShyZXZpc2lvbiA3MDE4MykKKysrIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NjAsNyArODYw
LDcgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2FuQ2FjaGVQYWdlKAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotRnJhbWUqIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaENyZWF0
ZVBhZ2UoKQorRnJhbWUqIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaENyZWF0ZVBhZ2Uo
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpCiB7CiAgICAgaWYgKCFtX3ZpZXcpCiAgICAgICAgIHJl
dHVybiAwOwpJbmRleDogV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuaAkocmV2aXNpb24gNzAxODMpCisrKyBXZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEs
NyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtCiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsKIAotICAgIHZpcnR1YWwgRnJhbWUq
IGRpc3BhdGNoQ3JlYXRlUGFnZSgpOworICAgIHZpcnR1YWwgRnJhbWUqIGRpc3BhdGNoQ3JlYXRl
UGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoU2hvdygpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTUlNRVR5cGUoRnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNzAzMTgpCisrKyBXZWJL
aXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEwLTEw
LTIyICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViS2l0MiBuZWVkcyB0byBwYXNzIHRoZSBjdXJy
ZW50IGV2ZW50IG1vZGlmaWVyIGZsYWdzIHdoZW4gcmVxdWVzdGluZyBhIG5ldyB3aW5kb3cKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MTQwCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50R3RrLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hDcmVhdGVQYWdlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5oOgorICAgICAgICBBZGQgTmF2aWdhdGlvbkFjdGlvbiBwYXJhbWV0ZXIuCisKIDIw
MTAtMTAtMjAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDcwMTgzKQorKysgV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkljb24u
aCIKICNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbi5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCiAj
aW5jbHVkZSAiUG9wdXBNZW51R3RrLmgiCkBAIC0xMzcsNyArMTM4LDcgQEAgdm9pZCBDaHJvbWVD
bGllbnQ6OnVuZm9jdXMoKQogICAgICAgICBndGtfd2luZG93X3NldF9mb2N1cyhHVEtfV0lORE9X
KHdpbmRvdyksIE5VTEwpOwogfQogCi1QYWdlKiBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhG
cmFtZSogZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNv
bnN0IFdpbmRvd0ZlYXR1cmVzJiBjb3JlRmVhdHVyZXMpCitQYWdlKiBDaHJvbWVDbGllbnQ6OmNy
ZWF0ZVdpbmRvdyhGcmFtZSogZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9h
ZFJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBjb3JlRmVhdHVyZXMsIGNvbnN0IE5hdmln
YXRpb25BY3Rpb24mKQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSAwOwogCkluZGV4
OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgJKHJldmlzaW9u
IDcwMTgzKQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAko
d29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZm9jdXNlZE5vZGVDaGFuZ2VkKFdlYkNvcmU6Ok5vZGUqKTsKIAot
ICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIGNyZWF0ZVdpbmRvdyhXZWJDb3JlOjpGcmFt
ZSosIGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5k
b3dGZWF0dXJlcyYpOworICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIGNyZWF0ZVdpbmRv
dyhXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rp
b24mKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHNob3coKTsKIAogICAgICAgICB2aXJ0dWFsIGJv
b2wgY2FuUnVuTW9kYWwoKTsKSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCShyZXZpc2lvbiA3MDE4MykKKysrIFdlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjAwLDcgKzEyMDAsNyBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5DYWNoZVBh
Z2UoKSBjCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUZyYW1lKiBGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hDcmVhdGVQYWdlKCkKK0ZyYW1lKiBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hD
cmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKQogewogICAgIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOwogICAgIFdlYktpdFdlYlZpZXcq
IG5ld1dlYlZpZXcgPSAwOwpJbmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuaAkocmV2aXNpb24gNzAxODMpCisrKyBXZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTkx
LDcgKzkxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZpcnN0TGF5b3V0KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOwogCi0gICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6
RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZSgpOworICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZy
YW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCk7CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUoV2ViQ29yZTo6RnJhbWVQb2xp
Y3lGdW5jdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKTsKSW5kZXg6IFdlYktpdC9oYWlrdS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwkocmV2aXNpb24gNzAzMTgpCisrKyBXZWJLaXQv
aGFpa3UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMTAt
MjIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQyIG5lZWRzIHRvIHBhc3MgdGhlIGN1cnJl
bnQgZXZlbnQgbW9kaWZpZXIgZmxhZ3Mgd2hlbiByZXF1ZXN0aW5nIGEgbmV3IHdpbmRvdworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgxNDAKKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEhhaWt1OjpkaXNwYXRjaENyZWF0ZVBhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaDoKKyAgICAgICAgQWRkIE5hdmlnYXRpb25BY3Rp
b24gcGFyYW1ldGVyLgorCiAyMDEwLTA5LTI4ICBKZW5uIEJyYWl0aHdhaXRlICA8amVubmJAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERtaXRyeSBUaXRvdi4KSW5kZXg6IFdl
YktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcAko
cmV2aXNpb24gNzAxODMpCisrKyBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50SGFpa3UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkljb24u
aCIKKyNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCkBAIC0xMDcsNyArMTA4LDcgQEAgdm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6Zm9jdXNl
ZE5vZGVDaGFuZwogewogfQogCi1QYWdlKiBDaHJvbWVDbGllbnRIYWlrdTo6Y3JlYXRlV2luZG93
KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0Zl
YXR1cmVzJikKK1BhZ2UqIENocm9tZUNsaWVudEhhaWt1OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBj
b25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmLCBj
b25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogICAgIHJldHVybiAwOwpJbmRleDogV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEhhaWt1LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEhhaWt1LmgJKHJldmlzaW9uIDcwMTgzKQorKysgV2ViS2l0L2hhaWt1L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcg
KzYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgZm9jdXNlZE5vZGVD
aGFuZ2VkKE5vZGUqKTsKIAotICAgICAgICBQYWdlKiBjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25z
dCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmKTsKKyAg
ICAgICAgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlv
bkFjdGlvbiYpOwogICAgICAgICBQYWdlKiBjcmVhdGVNb2RhbERpYWxvZyhGcmFtZSosIGNvbnN0
IEZyYW1lTG9hZFJlcXVlc3QmKTsKICAgICAgICAgdm9pZCBzaG93KCk7CiAKSW5kZXg6IFdlYktp
dC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlr
dS5jcHAJKHJldmlzaW9uIDcwMTgzKQorKysgV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDUsNyArNjQ1LDcg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZAogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKLUZyYW1lKiBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaENy
ZWF0ZVBhZ2UoKQorRnJhbWUqIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoQ3JlYXRl
UGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJikKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFdlYktpdC9oYWlrdS9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2hhaWt1
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAkocmV2aXNpb24gNzAxODMp
CisrKyBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWls
TG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgICAgIHZpcnR1YWwgRnJhbWUqIGRpc3Bh
dGNoQ3JlYXRlUGFnZSgpOworICAgICAgICB2aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBh
Z2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0aW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcm
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MDMxOCkKKysrIFdlYktp
dC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMTAt
MjIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQyIG5lZWRzIHRvIHBhc3MgdGhlIGN1cnJl
bnQgZXZlbnQgbW9kaWZpZXIgZmxhZ3Mgd2hlbiByZXF1ZXN0aW5nIGEgbmV3IHdpbmRvdworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgxNDAKKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6
Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSk6Cisg
ICAgICAgIEFkZCBOYXZpZ2F0aW9uQWN0aW9uIHBhcmFtZXRlci4KKwogMjAxMC0xMC0yMCAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYW4gQmVybnN0ZWluLgpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCShyZXZpc2lvbiA3MDE4MykKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGZvY3VzZWROb2RlQ2hhbmdlZChXZWJDb3JlOjpOb2Rl
Kik7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIGNyZWF0ZVdpbmRvdyhXZWJDb3JlOjpG
cmFtZSosIGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpX
aW5kb3dGZWF0dXJlcyYpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogY3JlYXRlV2luZG93
KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlv
biYpOwogICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVu
TW9kYWwoKTsKSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tCShyZXZpc2lvbiA3MDE4MykKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSWNvbi5oPgogI2lt
cG9ydCA8V2ViQ29yZS9JbnRSZWN0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL05hdmlnYXRpb25BY3Rp
b24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9y
bVNjcmVlbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVN0cmluZy5oPgpAQCAtMTk5LDcg
KzIwMCw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpmb2N1c2VkTm9kZUNoYW5nZWQKIHsKIH0K
IAotUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBjb25z
dCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVy
ZXMpCitQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSogZnJhbWUsIGNv
bnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0
dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpCiB7CiAgICAgTlNVUkxSZXF1ZXN0ICpVUkxS
ZXF1ZXN0ID0gbmlsOwogICAgIGlmICghcmVxdWVzdC5pc0VtcHR5KCkpCkluZGV4OiBXZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lv
biA3MDE4MykKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsKIAotICAgIHZpcnR1YWwgV2Vi
Q29yZTo6RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6
RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9u
Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpOwogCiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUoV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5j
dGlvbiwKSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQkocmV2aXNpb24gNzAxODMpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02OTcsNyArNjk3
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaQogICAgICAgICBD
YWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRJbkZyYW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZTopLCBtX3dlYkZyYW1lLmdldCgpKTsKIH0K
IAotRnJhbWUqIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UoKQorRnJh
bWUqIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYpCiB7CiAgICAgV2ViVmlldyAqY3VycmVudFdlYlZpZXcgPSBnZXRXZWJWaWV3
KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIE5TRGljdGlvbmFyeSAqZmVhdHVyZXMgPSBbW05TRGlj
dGlvbmFyeSBhbGxvY10gaW5pdF07CkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDcwMzE4KQorKysgV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEwLTEwLTIyICBT
YW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViS2l0MiBuZWVkcyB0byBwYXNzIHRoZSBjdXJyZW50IGV2
ZW50IG1vZGlmaWVyIGZsYWdzIHdoZW4gcmVxdWVzdGluZyBhIG5ldyB3aW5kb3cKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MTQwCisKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAob3Blbk5ld1dpbmRvdyk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50UXQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNo
Q3JlYXRlUGFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5oOgorICAgICAgICBBZGQgTmF2aWdhdGlvbkFjdGlvbiBwYXJhbWV0ZXIuCisKIDIwMTAtMTAt
MjIgIFlpIFNoZW4gIDx5aS40LnNoZW5Abm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFuZHJlYXMgS2xpbmcuCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gNzAxODMpCisrKyBX
ZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsNyBA
QAogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2lu
Y2x1ZGUgIlNjcm9sbGJhci5oIgorI2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNs
dWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVu
dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgpAQCAtMjA4OSw4ICsyMDkwLDkg
QEAgc3RhdGljIHZvaWQgb3Blbk5ld1dpbmRvdyhjb25zdCBRVXJsJiB1cgogewogICAgIGlmIChQ
YWdlKiBvbGRQYWdlID0gZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBXaW5kb3dGZWF0dXJlcyBm
ZWF0dXJlczsKKyAgICAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb247CiAgICAgICAgIGlmIChQ
YWdlKiBuZXdQYWdlID0gb2xkUGFnZS0+Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhmcmFtZSwKLSAg
ICAgICAgICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0KHVybCwgZnJhbWUpLCBmZWF0dXJlcykpCisg
ICAgICAgICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdCh1cmwsIGZyYW1lKSwgZmVhdHVyZXMsIGFj
dGlvbikpCiAgICAgICAgICAgICBuZXdQYWdlLT5jaHJvbWUoKS0+c2hvdygpOwogICAgIH0KIH0K
SW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAkocmV2
aXNpb24gNzAxODMpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiR2VvbG9jYXRp
b25QZXJtaXNzaW9uQ2xpZW50UXQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5j
bHVkZSAiSWNvbi5oIgorI2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJO
ZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuaCIKQEAgLTE2OSw3ICsxNzAsNyBAQCB2
b2lkIENocm9tZUNsaWVudFF0Ojpmb2N1c2VkTm9kZUNoYW5nZWQoCiB9CiAKIAotUGFnZSogQ2hy
b21lQ2xpZW50UXQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcykKK1BhZ2UqIENocm9tZUNs
aWVudFF0OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIGNvbnN0IE5hdmlnYXRpb25BY3Rp
b24mKQogewogICAgIFFXZWJQYWdlKiBuZXdQYWdlID0gbV93ZWJQYWdlLT5jcmVhdGVXaW5kb3co
ZmVhdHVyZXMuZGlhbG9nID8gUVdlYlBhZ2U6OldlYk1vZGFsRGlhbG9nIDogUVdlYlBhZ2U6Oldl
YkJyb3dzZXJXaW5kb3cpOwogICAgIGlmICghbmV3UGFnZSkKSW5kZXg6IFdlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCShyZXZpc2lvbiA3MDE4MykKKysrIFdlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3
ICs3Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZm9j
dXNlZE5vZGVDaGFuZ2VkKE5vZGUqKTsKIAotICAgICAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdp
bmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJl
cyYpOworICAgICAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZy
YW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHNob3coKTsKIAogICAgICAgICB2aXJ0dWFs
IGJvb2wgY2FuUnVuTW9kYWwoKTsKSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHJldmlzaW9uIDcwMTgzKQorKysgV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTAyLDcgKzExMDIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlk
RmFpCiAgICAgICAgIGNhbGxFcnJvclBhZ2VFeHRlbnNpb24oZXJyb3IpOwogfQogCi1XZWJDb3Jl
OjpGcmFtZSogRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKCkKK1dlYkNv
cmU6OkZyYW1lKiBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpCiB7CiAgICAgaWYgKCFtX3dlYkZyYW1lKQogICAg
ICAgICByZXR1cm4gMDsKSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuaAkocmV2aXNpb24gNzAxODMpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
KCk7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoKTsK
KyAgICB2aXJ0dWFsIFdlYkNvcmU6OkZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2Vi
Q29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3co
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck1JTUVUeXBlKEZy
YW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNzAzMTgpCisrKyBXZWJL
aXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEwLTEw
LTIyICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViS2l0MiBuZWVkcyB0byBwYXNzIHRoZSBjdXJy
ZW50IGV2ZW50IG1vZGlmaWVyIGZsYWdzIHdoZW4gcmVxdWVzdGluZyBhIG5ldyB3aW5kb3cKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MTQwCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaENyZWF0ZVBhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgIEFkZCBOYXZpZ2F0aW9uQWN0aW9uIHBhcmFtZXRlci4KKwog
MjAxMC0xMC0yMSBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHRvdWNoZWQgaXQgdG8gZml4IHRoZSBidWlsZC4KSW5kZXg6IFdlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDcwMTgz
KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiV2ViRGVza3RvcE5vdGlmaWNh
dGlvbnNEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiV2ViVmlldy5oIgotI3ByYWdtYSB3YXJuaW5nKHB1c2gsIDApCiAjaW5jbHVkZSA8V2ViQ29y
ZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db25zb2xlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Db250ZXh0TWVudS5oPgpAQCAtNDgsMjMgKzQ3LDIzIEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZUxvYWRSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0dlb2xvY2F0aW9uLmg+Ci0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgotI2VuZGlmCiAjaW5j
bHVkZSA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ljb24uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0xvY2FsV2luZG93c0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0xvY2FsaXplZFN0cmluZ3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05hdmlnYXRpb25BY3Rpb24u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUG9wdXBNZW51V2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWFyY2hQb3B1cE1l
bnVXaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+Ci0jcHJhZ21hIHdh
cm5pbmcocG9wKQotCiAjaW5jbHVkZSA8dGNoYXIuaD4KIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KKyNlbmRpZgor
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gV2hlbiB5b3UgY2FsbCBHZXRPcGVuRmls
ZU5hbWUsIGlmIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgaXMgdG9vIHNtYWxsLApAQCAtMTk1LDcg
KzE5NCw3IEBAIHN0YXRpYyBDT01QdHI8SVByb3BlcnR5QmFnPiBjcmVhdGVXaW5kb3cKICAgICBy
ZXR1cm4gQ09NUHRyPElQcm9wZXJ0eUJhZz4oQWRvcHRDT00sIENPTVByb3BlcnR5QmFnPENPTVZh
cmlhbnQ+OjphZG9wdChtYXApKTsKIH0KIAotUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVX
aW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBj
b25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMpCitQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVl
c3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYpCiB7CiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiBkZWxlZ2F0ZSA9IHVpRGVsZWdhdGUo
KTsKICAgICBpZiAoIWRlbGVnYXRlKQpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDcwMTgzKQorKysgV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZEZpCiAgICAgICAgIGZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZS0+ZGlkRmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZSh3ZWJWaWV3LCBtX3dlYkZyYW1lKTsKIH0KIAotRnJh
bWUqIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UoKQorRnJhbWUqIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYpCiB7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsK
IApJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAkocmV2aXNpb24gNzAxODMpCisrKyBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCk7CiAKLSAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoKTsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6OkZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2
aWdhdGlvbkFjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExvYWRNYWluUmVzb3VyY2UoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqKTsKSW5kZXg6IFdlYktpdC93aW5jZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkocmV2aXNpb24gNzAzMTgpCisrKyBXZWJLaXQvd2luY2Uv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMTAtMjIgIFNh
bSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWJLaXQyIG5lZWRzIHRvIHBhc3MgdGhlIGN1cnJlbnQgZXZl
bnQgbW9kaWZpZXIgZmxhZ3Mgd2hlbiByZXF1ZXN0aW5nIGEgbmV3IHdpbmRvdworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgxNDAKKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Q2hyb21lQ2xpZW50V2luQ0U6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50V2luQ0UuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRX
aW5DRTo6ZGlzcGF0Y2hDcmVhdGVQYWdlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFdpbkNFLmg6CisgICAgICAgIEFkZCBOYXZpZ2F0aW9uQWN0aW9uIHBhcmFt
ZXRlci4KKwogMjAxMC0xMC0yMiAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpJbmRleDogV2ViS2l0L3dpbmNl
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFdpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50V2luQ0UuY3BwCShyZXZpc2lvbiA3
MDE4MykKKysrIFdlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRXaW5DRS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJGaWxlQ2hvb3Nl
ci5oIgogI2luY2x1ZGUgIkljb24uaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2lu
Y2x1ZGUgIk5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJQb3B1cE1lbnVXaW4uaCIKICNp
bmNsdWRlICJTZWFyY2hQb3B1cE1lbnVXaW4uaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCkBAIC04
Myw3ICs4NCw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50V2luQ0U6OnVuZm9jdXMoKQogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKLVBhZ2UqIENocm9tZUNsaWVudFdpbkNFOjpjcmVhdGVXaW5kb3co
RnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmKQor
UGFnZSogQ2hyb21lQ2xpZW50V2luQ0U6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1l
TG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IE5hdmlnYXRpb25BY3Rp
b24mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CkluZGV4OiBXZWJL
aXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50V2luQ0UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50V2luQ0UuaAkocmV2aXNp
b24gNzAxODMpCisrKyBXZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50V2lu
Q0UuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgLy8gRnJh
bWUgd2FudHMgdG8gY3JlYXRlIHRoZSBuZXcgUGFnZS4gIEFsc28sIHRoZSBuZXdseSBjcmVhdGVk
IHdpbmRvdwogICAgIC8vIHNob3VsZCBub3QgYmUgc2hvd24gdG8gdGhlIHVzZXIgdW50aWwgdGhl
IENocm9tZUNsaWVudCBvZiB0aGUgbmV3bHkKICAgICAvLyBjcmVhdGVkIFBhZ2UgaGFzIGl0cyBz
aG93IG1ldGhvZCBjYWxsZWQuCi0gICAgdmlydHVhbCBXZWJDb3JlOjpQYWdlKiBjcmVhdGVXaW5k
b3coV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2Uq
IGNyZWF0ZVdpbmRvdyhXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IFdlYkNvcmU6Ok5h
dmlnYXRpb25BY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgc2hvdygpOwogCiAgICAgdmlydHVh
bCBib29sIGNhblJ1bk1vZGFsKCk7CkluZGV4OiBXZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbmNlL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCShyZXZpc2lvbiA3MDE4MykK
KysrIFdlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTU3LDcgKzU1Nyw3IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGll
bnRXaW5DRTo6Y2FuQ2FjaGVQYWcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRnJhbWUqIEZyYW1l
TG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoQ3JlYXRlUGFnZSgpCitGcmFtZSogRnJhbWVMb2Fk
ZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CkluZGV4OiBXZWJLaXQv
d2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgJ
KHJldmlzaW9uIDcwMTgzKQorKysgV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V2luQ0UuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsKIAotICAgIHZp
cnR1YWwgV2ViQ29yZTo6RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZSgpOworICAgIHZpcnR1YWwg
V2ViQ29yZTo6RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0
aW9uQWN0aW9uJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpOwogCiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUoV2ViQ29yZTo6RnJhbWVQ
b2xpY3lGdW5jdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKTsKSW5kZXg6IFdlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gNzAzMTgpCisrKyBXZWJLaXQvd3gv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMTAtMjIgIFNh
bSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWJLaXQyIG5lZWRzIHRvIHBhc3MgdGhlIGN1cnJlbnQgZXZl
bnQgbW9kaWZpZXIgZmxhZ3Mgd2hlbiByZXF1ZXN0aW5nIGEgbmV3IHdpbmRvdworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgxNDAKKworICAgICAgICAq
IFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50V3g6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJv
bWVDbGllbnRXeC5oOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRX
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaENy
ZWF0ZVBhZ2UpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5o
OgorICAgICAgICBBZGQgTmF2aWdhdGlvbkFjdGlvbiBwYXJhbWV0ZXIuCisKIDIwMTAtMTAtMTMg
IEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDogV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hy
b21lQ2xpZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0No
cm9tZUNsaWVudFd4LmNwcAkocmV2aXNpb24gNzAxODMpCisrKyBXZWJLaXQvd3gvV2ViS2l0U3Vw
cG9ydC9DaHJvbWVDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKICNpbmNs
dWRlICJJY29uLmgiCisjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbi5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgpAQCAtMTM2LDcgKzEzNyw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50V3g6
OmZvY3VzZWROb2RlQ2hhbmdlZCgKIHsKIH0KIAotUGFnZSogQ2hyb21lQ2xpZW50V3g6OmNyZWF0
ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdp
bmRvd0ZlYXR1cmVzJiBmZWF0dXJlcykKK1BhZ2UqIENocm9tZUNsaWVudFd4OjpjcmVhdGVXaW5k
b3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dG
ZWF0dXJlcyYgZmVhdHVyZXMsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKQogewogICAgIFBhZ2Uq
IG15UGFnZSA9IDA7CiAgICAgd3hXZWJWaWV3TmV3V2luZG93RXZlbnQgd2tFdmVudChtX3dlYlZp
ZXcpOwpJbmRleDogV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oCShyZXZp
c2lvbiA3MDE4MykKKysrIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGZvY3VzZWROb2RlQ2hhbmdlZChOb2RlKik7CiAKLSAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0
ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0
dXJlcyYpOworICAgIHZpcnR1YWwgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJh
bWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwgY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYpOwogICAgIHZpcnR1YWwgUGFnZSogY3JlYXRlTW9kYWxEaWFsb2coRnJhbWUqLCBjb25z
dCBGcmFtZUxvYWRSZXF1ZXN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHNob3coKTsKIApJbmRleDog
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAJKHJl
dmlzaW9uIDcwMTgzKQorKysgV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2Niw3ICs3NjYsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkRmFpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
RnJhbWUqIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoQ3JlYXRlUGFnZSgpCitGcmFtZSog
RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRl
eDogV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAkocmV2
aXNpb24gNzAxODMpCisrKyBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFd4LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw3ICsxOTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICAgICAgdmlydHVhbCBGcmFtZSog
ZGlzcGF0Y2hDcmVhdGVQYWdlKCk7CisgICAgICAgIHZpcnR1YWwgRnJhbWUqIGRpc3BhdGNoQ3Jl
YXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck1JTUVUeXBlKEZyYW1lUG9saWN5RnVuY3Rp
b24gZnVuY3Rpb24sIGNvbnN0IFN0cmluZyYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
RnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5n
Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7Cklu
ZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA3MDMxOCkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTEwLTIyICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2ViS2l0MiBuZWVkcyB0byBwYXNzIHRoZSBjdXJyZW50IGV2ZW50IG1vZGlmaWVyIGZsYWdz
IHdoZW4gcmVxdWVzdGluZyBhIG5ldyB3aW5kb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MTQwCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMv
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKGNyZWF0ZU5ld1BhZ2UpOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RS
OjpjcmVhdGVPdGhlclBhZ2UpOgorICAgICAgICBVcGRhdGUgZm9yIG5ldyBzaWduYXR1cmUgZm9y
IHRoZSBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2suCisKIDIwMTAtMTAtMjIgIFNoZXJpZmYg
Qm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHI3MDMwMS4KSW5kZXg6IFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9C
cm93c2VyV2luZG93Q29udHJvbGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL01pbmlC
cm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCShyZXZpc2lvbiA3MDMxNykKKysr
IFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCSh3
b3JraW5nIGNvcHkpCkBAIC0zNjEsNyArMzYxLDcgQEAgc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5
Rm9yTUlNRVR5cGUoV0tQYQogCiAjcHJhZ21hIG1hcmsgVUkgQ2xpZW50IENhbGxiYWNrcwogCi1z
dGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCitzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBh
Z2UsIFdLRGljdGlvbmFyeVJlZiBmZWF0dXJlcywgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMs
IFdLRXZlbnRNb3VzZUJ1dHRvbiBidXR0b24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAg
ICAgTE9HKEAiY3JlYXRlTmV3UGFnZSIpOwogICAgIEJyb3dzZXJXaW5kb3dDb250cm9sbGVyICpj
b250cm9sbGVyID0gW1tCcm93c2VyV2luZG93Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhQYWdl
TmFtZXNwYWNlOldLUGFnZUdldFBhZ2VOYW1lc3BhY2UocGFnZSldOwpJbmRleDogV2ViS2l0VG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDcw
MzE3KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIHZvaWQgY2xvc2VPdGhlclBh
Z2UoV0tQYWdlUmVmIHBhZwogICAgIGRlbGV0ZSB2aWV3OwogfQogCi1zdGF0aWMgV0tQYWdlUmVm
IGNyZWF0ZU90aGVyUGFnZShXS1BhZ2VSZWYgb2xkUGFnZSwgY29uc3Qgdm9pZCopCitzdGF0aWMg
V0tQYWdlUmVmIGNyZWF0ZU90aGVyUGFnZShXS1BhZ2VSZWYgb2xkUGFnZSwgV0tEaWN0aW9uYXJ5
UmVmLCBXS0V2ZW50TW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24sIGNvbnN0IHZvaWQqKQog
ewogICAgIFBsYXRmb3JtV2ViVmlldyogdmlldyA9IG5ldyBQbGF0Zm9ybVdlYlZpZXcoV0tQYWdl
R2V0UGFnZU5hbWVzcGFjZShvbGRQYWdlKSk7CiAgICAgV0tQYWdlUmVmIG5ld1BhZ2UgPSB2aWV3
LT5wYWdlKCk7Cg==
</data>
<flag name="review"
          id="61661"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>