<?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>45485</bug_id>
          
          <creation_ts>2010-09-09 12:33:22 -0700</creation_ts>
          <short_desc>REGRESSION(r67095): Broke GTK+ and Windows (Requested by xan_ on #webkit).</short_desc>
          <delta_ts>2010-09-15 00:19:27 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>44778</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>cfleizach</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>276670</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-09 12:33:22 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67095 broke the build:
Broke GTK+ and Windows (Requested by xan_ on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276671</commentid>
    <comment_count>1</comment_count>
      <attachid>67080</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-09 12:33:32 -0700</bug_when>
    <thetext>Created attachment 67080
ROLLOUT of r67095

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID --ignore-builders

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276673</commentid>
    <comment_count>2</comment_count>
      <attachid>67080</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-09-09 12:35:14 -0700</bug_when>
    <thetext>Comment on attachment 67080
ROLLOUT of r67095

Perhaps a wrong patch was committed? This one ends up accessing void pointers as RefPtrs and doing .get() on them, among other things, in GTK+ and Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276677</commentid>
    <comment_count>3</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-09-09 12:39:56 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 67080 [details])
&gt; Perhaps a wrong patch was committed? This one ends up accessing void pointers as RefPtrs and doing .get() on them, among other things, in GTK+ and Windows.

trying to integrate david&apos;s suggestion of using RetainPtr. i&apos;m looking at this now and will fix soon</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276684</commentid>
    <comment_count>4</comment_count>
      <attachid>67080</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-09-09 12:48:16 -0700</bug_when>
    <thetext>Comment on attachment 67080
ROLLOUT of r67095

i will fix this now</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67080</attachid>
            <date>2010-09-09 12:33:32 -0700</date>
            <delta_ts>2010-09-09 12:48:16 -0700</delta_ts>
            <desc>ROLLOUT of r67095</desc>
            <filename>bug-45485-20100909193331.patch</filename>
            <type>text/plain</type>
            <size>49838</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzMzg3ODcwNjMwZmExZTFlZDE5ZGU5MGY0MmNkZDY5NzVmYzYwMDViLi42YWQ5NmVi
MmY1ZTlmZTkxNTdjNTRkNmViM2Y5NmMzOGM1YzgyNTc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDktMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgor
CisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2NzA5NS4KKyAgICAgICAgaHR0cDov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjcwOTUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NDg1CisKKyAgICAgICAgQnJva2UgR1RLKyBhbmQg
V2luZG93cyAoUmVxdWVzdGVkIGJ5IHhhbl8gb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9lbGVtZW50LWZvci10ZXh0LW1hcmtlci1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvZWxlbWVu
dC1mb3ItdGV4dC1tYXJrZXIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci1sZW5ndGgtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyLWxlbmd0aC5o
dG1sOiBSZW1vdmVkLgorCiAyMDEwLTA5LTA5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvZWxlbWVudC1mb3ItdGV4dC1tYXJr
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkv
ZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1ZDMzZGFjYjJkM2Y1ZjZiODJiYzAwOTI1MjZjOTU3MDcyZWZkMmY4Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLXRleHQgaGVyZQotdGV4dCBibG9j
awotdGV4dCBoZXJlCi1UaGlzIHRlc3RzIHRoZSB0ZXh0IG1hcmtlciBzeXN0ZW0gd2lsbCByZXR1
cm4gdGhlIGNvcnJlY3QgZWxlbWVudCB3aGVuIGdpdmVuIGEgdGV4dCBtYXJrZXIuCi0KLU9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3Ro
KHRleHRNYXJrZXJSYW5nZTEpIGlzIDEwCi1QQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRG
b3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIGlzIHRydWUKLVBBU1MgdGV4
dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRl
eHQpIGlzIHRydWUKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3TWFya2VyUmFu
Z2UpIGlzIDEwCi1QQVNTIG5ld01hcmtlclJhbmdlLmlzRXF1YWwodGV4dE1hcmtlclJhbmdlMSkg
aXMgdHJ1ZQotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRF
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2Vs
ZW1lbnQtZm9yLXRleHQtbWFya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA4ZTcxZGY0OTliMGZiZWJiODFhNzk1MmI2ZGE2MjQyN2M5OThiYTBlLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Ci08c2NyaXB0PgotdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IGZhbHNlOwotPC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHkgaWQ9ImJvZHkiPgotCi10ZXh0IGhlcmUKLTxkaXYgaWQ9
InRleHQxIiB0YWJpbmRleD0iMCI+dGV4dCBibG9jazwvZGl2PgotdGV4dCBoZXJlCi0KLTxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0KLTxzY3JpcHQ+
Ci0KLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgdGV4dCBtYXJrZXIgc3lzdGVtIHdp
bGwgcmV0dXJuIHRoZSBjb3JyZWN0IGVsZW1lbnQgd2hlbiBnaXZlbiBhIHRleHQgbWFya2VyLiIp
OwotCi0gICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewotCi0gICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHQxIikuZm9jdXMoKTsKLSAgICAgICAgICB2
YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OwotCi0gICAg
ICAgICAgLy8gR2V0IHRoZSBhY3R1YWwgdGV4dCBub2RlLgotICAgICAgICAgIHRleHQgPSB0ZXh0
LmNoaWxkQXRJbmRleCgwKTsKLQotICAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgY2FuIGdldCB0
aGUgc3RhcnQgbWFya2VyIGZvciB0aGlzIHJhbmdlLgotICAgICAgICAgIHZhciB0ZXh0TWFya2Vy
UmFuZ2UxID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOwotICAgICAgICAg
IHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UxKSIs
ICIxMCIpOwotICAgICAgICAgIHZhciBzdGFydE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTEpOwotCi0gICAgICAgICAgLy8gQ2hl
Y2sgdGhhdCB0aGUgc3RhcnQgbWFya2VyIHdpbGwgZ2l2ZSB1cyB0aGUgc2FtZSBlbGVtZW50IHRo
YXQgd2Ugc3RhcnRlZCB3aXRoLgotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dC5hY2Nlc3Np
YmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwodGV4dCkiKTsK
LQotICAgICAgICAgIC8vIEdldCB0aGUgZW5kIG1hcmtlciBhbmQgY2hlY2sgdGhhdCBpdCBnaXZl
cyB1cyB0aGUgc2FtZSBlbGVtZW50LgotICAgICAgICAgIHZhciBlbmRNYXJrZXIgPSB0ZXh0LmVu
ZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMSk7Ci0gICAgICAg
ICAgc2hvdWxkQmVUcnVlKCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihl
bmRNYXJrZXIpLmlzRXF1YWwodGV4dCkiKTsKLQotICAgICAgICAgIC8vIE1ha2UgYSBtYXJrZXIg
cmFuZ2Ugb3V0IG9mIHRoZSBzdGFydCBhbmQgZW5kIG1hcmtlcnMgYW5kIGNoZWNrIHRoZSBsZW5n
dGgKLSAgICAgICAgICB2YXIgbmV3TWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMoc3RhcnRNYXJrZXIsIGVuZE1hcmtlcik7Ci0gICAgICAgICAgc2hvdWxkQmUoInRl
eHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKG5ld01hcmtlclJhbmdlKSIsICIxMCIpOwotCi0gICAg
ICAgICAgLy8gQW5kIG1ha2Ugc3VyZSBpdCBlcXVhbHMgdGhlIHNhbWUgbWFya2VyIHJhbmdlIHdl
IHN0YXJ0ZWQgd2l0aAotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgibmV3TWFya2VyUmFuZ2UuaXNF
cXVhbCh0ZXh0TWFya2VyUmFuZ2UxKSIpOwotICAgIH0KLQotICAgIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Ci08L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtl
ci1sZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvdGV4dC1tYXJrZXItbGVuZ3RoLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjM1NThlNWEzZjFlY2VhNDdlYTZjOTBlNDc3MjcyMzM1NWE5ZGU1ZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci1sZW5ndGgtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotdGV4dCBibG9jawotVGhpcyB0ZXN0cyB0
aGUgdGV4dCBtYXJrZXIgaW1wbGVtZW50aW9uIG9mIERSVCBpcyB3b3JraW5nIGJ5IHJldHVybmlu
ZyBhIG1hcmtlciByYW5nZSBhbmQgYnkgcmV0dXJuaW5nIGl0cyBjb3JyZWN0IGxlbmd0aC4KLQot
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VM
ZW5ndGgodGV4dE1hcmtlclJhbmdlKSBpcyAxMAotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyLWxlbmd0aC5odG1sIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXItbGVuZ3RoLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2YTNlNTQ0ZmM0M2NiNmI1M2MzMTkyNzQ0MjNiMTY3
ODYzODZhZjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXItbGVuZ3Ro
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Ci08c2NyaXB0PgotdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IGZhbHNlOwotPC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgaWQ9ImJvZHkiPgotCi08ZGl2IGlkPSJ0ZXh0
IiB0YWJpbmRleD0iMCI+dGV4dCBibG9jazwvZGl2PgotCi08cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCi08c2NyaXB0PgotCi0gICAgZGVzY3JpcHRp
b24oIlRoaXMgdGVzdHMgdGhlIHRleHQgbWFya2VyIGltcGxlbWVudGlvbiBvZiBEUlQgaXMgd29y
a2luZyBieSByZXR1cm5pbmcgYSBtYXJrZXIgcmFuZ2UgYW5kIGJ5IHJldHVybmluZyBpdHMgY29y
cmVjdCBsZW5ndGguIik7Ci0KLSAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KSB7Ci0KLSAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dCIpLmZvY3VzKCk7
Ci0gICAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudDsKLSAgICAgICAgICB2YXIgdGV4dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFu
Z2VGb3JFbGVtZW50KHRleHQpOwotICAgICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJS
YW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UpIiwgIjEwIik7Ci0gICAgfQotCi0gICAgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKLTwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggYjgyYmRlN2E4NmYwMDhiYjFiZDA4YTZiMWZjMDhlYmJjMDVhODg1Yy4uNjQzYjdjN2E0
YWZmNWVlZjRjMWQwYWZjYmRkYTcwYzY5ZTAwMWQyMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wOS0w
OSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjY3MDk1LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC82NzA5NQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDU0ODUKKworICAgICAgICBCcm9rZSBHVEsrIGFuZCBXaW5kb3dzIChS
ZXF1ZXN0ZWQgYnkgeGFuXyBvbiAjd2Via2l0KS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
bWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAoLVtBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6Zm9yUGFyYW1ldGVy
Ol0pOgorCiAyMDEwLTA5LTA5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbSBiL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KaW5kZXggODU5YTc5
OWJhYzczNTFmZjEzNmUyZjc2YTM1MTAwY2U5ZDQxYTk4OC4uOTU5NWUyNWE0MTI4MWYzZjBhZTJj
MTcwODZiN2ZmMmUxYjUxMWVlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQorKysgYi9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCkBAIC0yMzUyLDM3ICsyMzUyLDM3
IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhOU1ZpZXcqIHZpZXcpCiAg
ICAgfQogICAgIAogICAgIC8vIGRpc3BhdGNoCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRv
U3RyaW5nOkAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2VyIl0pIHsKKyAgICBpZiAoW2F0dHJpYnV0
ZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2VyIl0pIHsKICAgICAg
ICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFy
a2VyKHRleHRNYXJrZXIpOwogICAgICAgICByZXR1cm4gbV9vYmplY3QtPmFjY2Vzc2liaWxpdHlP
YmplY3RGb3JQb3NpdGlvbih2aXNpYmxlUG9zKS0+d3JhcHBlcigpOwogICAgIH0KIAotICAgIGlm
IChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYVGV4dE1hcmtlclJhbmdlRm9yVUlFbGVt
ZW50Il0pIHsKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhUZXh0TWFy
a2VyUmFuZ2VGb3JVSUVsZW1lbnQiXSkgewogICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2
cFJhbmdlID0gdWlFbGVtZW50LmdldCgpLT52aXNpYmxlUG9zaXRpb25SYW5nZSgpOwogICAgICAg
ICByZXR1cm4gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zKHZwUmFuZ2Uu
c3RhcnQsIHZwUmFuZ2UuZW5kKTsKICAgICB9CiAKLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFs
VG9TdHJpbmc6QCJBWExpbmVGb3JUZXh0TWFya2VyIl0pIHsKKyAgICBpZiAoW2F0dHJpYnV0ZSBp
c0VxdWFsVG9TdHJpbmc6IEAiQVhMaW5lRm9yVGV4dE1hcmtlciJdKSB7CiAgICAgICAgIFZpc2li
bGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcih0ZXh0
TWFya2VyKTsKICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6
bV9vYmplY3QtPmxpbmVGb3JQb3NpdGlvbih2aXNpYmxlUG9zKV07CiAgICAgfQogCi0gICAgaWYg
KFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JMaW5lIl0p
IHsKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhUZXh0TWFya2VyUmFu
Z2VGb3JMaW5lIl0pIHsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdnBSYW5nZSA9IG1f
b2JqZWN0LT52aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUoW251bWJlciBpbnRWYWx1ZV0pOwog
ICAgICAgICByZXR1cm4gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zKHZw
UmFuZ2Uuc3RhcnQsIHZwUmFuZ2UuZW5kKTsKICAgICB9CiAKLSAgICBpZiAoW2F0dHJpYnV0ZSBp
c0VxdWFsVG9TdHJpbmc6QCJBWFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSJdKSB7CisgICAgaWYg
KFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
Il0pIHsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc1JhbmdlID0gW3Nl
bGYgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2U6dGV4dE1hcmtlclJhbmdl
XTsKICAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5zdHJpbmdGb3JWaXNpYmxlUG9zaXRpb25SYW5n
ZSh2aXNpYmxlUG9zUmFuZ2UpOwogICAgIH0KIAotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxU
b1N0cmluZzpAIkFYVGV4dE1hcmtlckZvclBvc2l0aW9uIl0pIHsKKyAgICBpZiAoW2F0dHJpYnV0
ZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhUZXh0TWFya2VyRm9yUG9zaXRpb24iXSkgewogICAgICAg
ICBJbnRQb2ludCB3ZWJDb3JlUG9pbnQgPSBJbnRQb2ludChwb2ludCk7CiAgICAgICAgIHJldHVy
biBwb2ludFNldCA/IHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb24obV9vYmplY3QtPnZpc2li
bGVQb3NpdGlvbkZvclBvaW50KHdlYkNvcmVQb2ludCkpIDogbmlsOwogICAgIH0KIAotICAgIGlm
IChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYQm91bmRzRm9yVGV4dE1hcmtlclJhbmdl
Il0pIHsKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhCb3VuZHNGb3JU
ZXh0TWFya2VyUmFuZ2UiXSkgewogICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxl
UG9zUmFuZ2UgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclRleHRNYXJrZXJSYW5nZTp0
ZXh0TWFya2VyUmFuZ2VdOwogICAgICAgICBOU1JlY3QgcmVjdCA9IG1fb2JqZWN0LT5ib3VuZHNG
b3JWaXNpYmxlUG9zaXRpb25SYW5nZSh2aXNpYmxlUG9zUmFuZ2UpOwogICAgICAgICByZXR1cm4g
W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpyZWN0XTsKQEAgLTI0MDUsMTAgKzI0MDUsMTAgQEAgc3Rh
dGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KE5TVmlldyogdmlldykKICAgICAgICAg
cmV0dXJuIG1fb2JqZWN0LT5zdHJpbmdGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShWaXNpYmxlUG9z
aXRpb25SYW5nZShzdGFydCwgZW5kKSk7CiAgICAgfQogCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNF
cXVhbFRvU3RyaW5nOkAiQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIl0pCisg
ICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYQXR0cmlidXRlZFN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZSJdKQogICAgICAgICByZXR1cm4gW3NlbGYgZG9BWEF0dHJpYnV0ZWRT
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2U6dGV4dE1hcmtlclJhbmdlXTsKIAotICAgIGlmIChbYXR0
cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYVGV4dE1hcmtlclJhbmdlRm9yVW5vcmRlcmVkVGV4
dE1hcmtlcnMiXSkgeworICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzogQCJBWFRl
eHRNYXJrZXJSYW5nZUZvclVub3JkZXJlZFRleHRNYXJrZXJzIl0pIHsKICAgICAgICAgaWYgKFth
cnJheSBjb3VudF0gPCAyKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMjQyNCw5OSAr
MjQyNCw5OSBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoTlNWaWV3KiB2
aWV3KQogICAgICAgICByZXR1cm4gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRp
b25zKHZwUmFuZ2Uuc3RhcnQsIHZwUmFuZ2UuZW5kKTsKICAgICB9CiAKLSAgICBpZiAoW2F0dHJp
YnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWE5leHRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciJdKSB7
CisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYTmV4dFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyIl0pIHsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSB2
aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKHRleHRNYXJrZXIpOwogICAgICAgICByZXR1cm4g
dGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbihtX29iamVjdC0+bmV4dFZpc2libGVQb3NpdGlv
bih2aXNpYmxlUG9zKSk7CiAgICAgfQogCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOkAiQVhQcmV2aW91c1RleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKKyAgICBpZiAoW2F0
dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhQcmV2aW91c1RleHRNYXJrZXJGb3JUZXh0TWFy
a2VyIl0pIHsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSB2aXNpYmxlUG9z
aXRpb25Gb3JUZXh0TWFya2VyKHRleHRNYXJrZXIpOwogICAgICAgICByZXR1cm4gdGV4dE1hcmtl
ckZvclZpc2libGVQb3NpdGlvbihtX29iamVjdC0+cHJldmlvdXNWaXNpYmxlUG9zaXRpb24odmlz
aWJsZVBvcykpOwogICAgIH0KIAotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpA
IkFYTGVmdFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIl0pIHsKKyAgICBpZiAoW2F0
dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhMZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZvclRl
eHRNYXJrZXIiXSkgewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IHZpc2li
bGVQb3NpdGlvbkZvclRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgICAgIFZpc2libGVQb3Np
dGlvblJhbmdlIHZwUmFuZ2UgPSBtX29iamVjdC0+cG9zaXRpb25PZkxlZnRXb3JkKHZpc2libGVQ
b3MpOwogICAgICAgICByZXR1cm4gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRp
b25zKHZwUmFuZ2Uuc3RhcnQsIHZwUmFuZ2UuZW5kKTsKICAgICB9CiAKLSAgICBpZiAoW2F0dHJp
YnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFJpZ2h0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRN
YXJrZXIiXSkgeworICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzogQCJBWFJpZ2h0
V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiXSkgewogICAgICAgICBWaXNpYmxlUG9z
aXRpb24gdmlzaWJsZVBvcyA9IHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXIodGV4dE1hcmtl
cik7CiAgICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZwUmFuZ2UgPSBtX29iamVjdC0+cG9z
aXRpb25PZlJpZ2h0V29yZCh2aXNpYmxlUG9zKTsKICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFy
a2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9ucyh2cFJhbmdlLnN0YXJ0LCB2cFJhbmdlLmVuZCk7
CiAgICAgfQogCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhMZWZ0TGlu
ZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiXSkgeworICAgIGlmIChbYXR0cmlidXRlIGlz
RXF1YWxUb1N0cmluZzogQCJBWExlZnRMaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciJd
KSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gdmlzaWJsZVBvc2l0aW9u
Rm9yVGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
dnBSYW5nZSA9IG1fb2JqZWN0LT5sZWZ0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKHZpc2libGVQ
b3MpOwogICAgICAgICByZXR1cm4gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRp
b25zKHZwUmFuZ2Uuc3RhcnQsIHZwUmFuZ2UuZW5kKTsKICAgICB9CiAKLSAgICBpZiAoW2F0dHJp
YnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFJpZ2h0TGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRN
YXJrZXIiXSkgeworICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzogQCJBWFJpZ2h0
TGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiXSkgewogICAgICAgICBWaXNpYmxlUG9z
aXRpb24gdmlzaWJsZVBvcyA9IHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXIodGV4dE1hcmtl
cik7CiAgICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZwUmFuZ2UgPSBtX29iamVjdC0+cmln
aHRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UodmlzaWJsZVBvcyk7CiAgICAgICAgIHJldHVybiAo
aWQpdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnModnBSYW5nZS5zdGFydCwgdnBS
YW5nZS5lbmQpOwogICAgIH0KIAotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpA
IkFYU2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIl0pIHsKKyAgICBpZiAoW2F0
dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhTZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZvclRl
eHRNYXJrZXIiXSkgewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IHZpc2li
bGVQb3NpdGlvbkZvclRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgICAgIFZpc2libGVQb3Np
dGlvblJhbmdlIHZwUmFuZ2UgPSBtX29iamVjdC0+c2VudGVuY2VGb3JQb3NpdGlvbih2aXNpYmxl
UG9zKTsKICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0
aW9ucyh2cFJhbmdlLnN0YXJ0LCB2cFJhbmdlLmVuZCk7CiAgICAgfQogCi0gICAgaWYgKFthdHRy
aWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhQYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0
TWFya2VyIl0pIHsKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhQYXJh
Z3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIl0pIHsKICAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVQb3MgPSB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKHRleHRNYXJr
ZXIpOwogICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2cFJhbmdlID0gbV9vYmplY3QtPnBh
cmFncmFwaEZvclBvc2l0aW9uKHZpc2libGVQb3MpOwogICAgICAgICByZXR1cm4gKGlkKXRleHRN
YXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zKHZwUmFuZ2Uuc3RhcnQsIHZwUmFuZ2UuZW5k
KTsKICAgICB9CiAKLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWE5leHRX
b3JkRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgeworICAgIGlmIChbYXR0cmlidXRlIGlz
RXF1YWxUb1N0cmluZzogQCJBWE5leHRXb3JkRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkg
ewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IHZpc2libGVQb3NpdGlvbkZv
clRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgICAgIHJldHVybiB0ZXh0TWFya2VyRm9yVmlz
aWJsZVBvc2l0aW9uKG1fb2JqZWN0LT5uZXh0V29yZEVuZCh2aXNpYmxlUG9zKSk7CiAgICAgfQog
ICAgIAotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYUHJldmlvdXNXb3Jk
U3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciJdKSB7CisgICAgaWYgKFthdHRyaWJ1dGUgaXNF
cXVhbFRvU3RyaW5nOiBAIkFYUHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
ciJdKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gdmlzaWJsZVBvc2l0
aW9uRm9yVGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKICAgICAgICAgcmV0dXJuIHRleHRNYXJrZXJG
b3JWaXNpYmxlUG9zaXRpb24obV9vYmplY3QtPnByZXZpb3VzV29yZFN0YXJ0KHZpc2libGVQb3Mp
KTsKICAgICB9CiAKLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWE5leHRM
aW5lRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgeworICAgIGlmIChbYXR0cmlidXRlIGlz
RXF1YWxUb1N0cmluZzogQCJBWE5leHRMaW5lRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkg
ewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IHZpc2libGVQb3NpdGlvbkZv
clRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgICAgIHJldHVybiB0ZXh0TWFya2VyRm9yVmlz
aWJsZVBvc2l0aW9uKG1fb2JqZWN0LT5uZXh0TGluZUVuZFBvc2l0aW9uKHZpc2libGVQb3MpKTsK
ICAgICB9CiAKLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFByZXZpb3Vz
TGluZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgeworICAgIGlmIChbYXR0cmlidXRl
IGlzRXF1YWxUb1N0cmluZzogQCJBWFByZXZpb3VzTGluZVN0YXJ0VGV4dE1hcmtlckZvclRleHRN
YXJrZXIiXSkgewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IHZpc2libGVQ
b3NpdGlvbkZvclRleHRNYXJrZXIodGV4dE1hcmtlcik7CiAgICAgICAgIHJldHVybiB0ZXh0TWFy
a2VyRm9yVmlzaWJsZVBvc2l0aW9uKG1fb2JqZWN0LT5wcmV2aW91c0xpbmVTdGFydFBvc2l0aW9u
KHZpc2libGVQb3MpKTsKICAgICB9CiAKLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJp
bmc6QCJBWE5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKKyAgICBp
ZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhOZXh0U2VudGVuY2VFbmRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlciJdKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
ID0gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKICAgICAgICAgcmV0
dXJuIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb24obV9vYmplY3QtPm5leHRTZW50ZW5jZUVu
ZFBvc2l0aW9uKHZpc2libGVQb3MpKTsKICAgICB9CiAKLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0Vx
dWFsVG9TdHJpbmc6QCJBWFByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyIl0pIHsKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhQcmV2aW91
c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciJdKSB7CiAgICAgICAgIFZpc2li
bGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcih0ZXh0
TWFya2VyKTsKICAgICAgICAgcmV0dXJuIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb24obV9v
YmplY3QtPnByZXZpb3VzU2VudGVuY2VTdGFydFBvc2l0aW9uKHZpc2libGVQb3MpKTsKICAgICB9
CiAKLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWE5leHRQYXJhZ3JhcGhF
bmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciJdKSB7CisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVh
bFRvU3RyaW5nOiBAIkFYTmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0p
IHsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSB2aXNpYmxlUG9zaXRpb25G
b3JUZXh0TWFya2VyKHRleHRNYXJrZXIpOwogICAgICAgICByZXR1cm4gdGV4dE1hcmtlckZvclZp
c2libGVQb3NpdGlvbihtX29iamVjdC0+bmV4dFBhcmFncmFwaEVuZFBvc2l0aW9uKHZpc2libGVQ
b3MpKTsKICAgICB9CiAKLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFBy
ZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciJdKSB7CisgICAgaWYg
KFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYUHJldmlvdXNQYXJhZ3JhcGhTdGFydFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVQb3MgPSB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKHRleHRNYXJrZXIpOwogICAgICAg
ICByZXR1cm4gdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbihtX29iamVjdC0+cHJldmlvdXNQ
YXJhZ3JhcGhTdGFydFBvc2l0aW9uKHZpc2libGVQb3MpKTsKICAgICB9CiAKLSAgICBpZiAoW2F0
dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFN0eWxlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1h
cmtlciJdKSB7CisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYU3R5bGVU
ZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIl0pIHsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IHZpc2libGVQb3MgPSB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKHRleHRNYXJrZXIpOwog
ICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2cFJhbmdlID0gbV9vYmplY3QtPnN0eWxlUmFu
Z2VGb3JQb3NpdGlvbih2aXNpYmxlUG9zKTsKICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2Vy
UmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9ucyh2cFJhbmdlLnN0YXJ0LCB2cFJhbmdlLmVuZCk7CiAg
ICAgfQogCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhMZW5ndGhGb3JU
ZXh0TWFya2VyUmFuZ2UiXSkgeworICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzog
QCJBWExlbmd0aEZvclRleHRNYXJrZXJSYW5nZSJdKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlv
blJhbmdlIHZpc2libGVQb3NSYW5nZSA9IFtzZWxmIHZpc2libGVQb3NpdGlvblJhbmdlRm9yVGV4
dE1hcmtlclJhbmdlOnRleHRNYXJrZXJSYW5nZV07CiAgICAgICAgIGludCBsZW5ndGggPSBtX29i
amVjdC0+bGVuZ3RoRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UodmlzaWJsZVBvc1JhbmdlKTsKICAg
ICAgICAgaWYgKGxlbmd0aCA8IDApCkBAIC0yNTI0LDE3ICsyNTI0LDYgQEAgc3RhdGljIFJlbmRl
ck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KE5TVmlldyogdmlldykKICAgICAgICAgcmV0dXJuIFtO
U051bWJlciBudW1iZXJXaXRoSW50Omxlbmd0aF07CiAgICAgfQogCi0gICAgLy8gVXNlZCBvbmx5
IGJ5IER1bXBSZW5kZXJUcmVlIChzbyBmYXIpLgotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxU
b1N0cmluZzpAIkFYU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlIl0pIHsKLSAgICAg
ICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc1JhbmdlID0gW3NlbGYgdmlzaWJsZVBv
c2l0aW9uUmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2U6dGV4dE1hcmtlclJhbmdlXTsKLSAgICAgICAg
cmV0dXJuIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb24odmlzaWJsZVBvc1JhbmdlLnN0YXJ0
KTsKLSAgICB9Ci0KLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEVuZFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UiXSkgewotICAgICAgICBWaXNpYmxlUG9zaXRpb25S
YW5nZSB2aXNpYmxlUG9zUmFuZ2UgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclRleHRN
YXJrZXJSYW5nZTp0ZXh0TWFya2VyUmFuZ2VdOwotICAgICAgICByZXR1cm4gdGV4dE1hcmtlckZv
clZpc2libGVQb3NpdGlvbih2aXNpYmxlUG9zUmFuZ2UuZW5kKTsKLSAgICB9Ci0gICAgCiAgICAg
aWYgKG1fb2JqZWN0LT5pc0RhdGFUYWJsZSgpKSB7CiAgICAgICAgIGlmIChbYXR0cmlidXRlIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDZWxsRm9yQ29sdW1uQW5kUm93UGFyYW1ldGVy
aXplZEF0dHJpYnV0ZV0pIHsKICAgICAgICAgICAgIGlmIChhcnJheSA9PSBuaWwgfHwgW2FycmF5
IGNvdW50XSAhPSAyKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRiZjc0YTRlMmMxZTViZTJhNjAzYjYxYjgwMzg5NDRmM2Qz
NTA2YTAuLjU5NzFlMmJjZjg5ZWQ5ZDhkOTFiNWY2MWY0MWVmYjUwMjIyNGRmNmUgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMyBAQAorMjAxMC0wOS0wOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJv
dEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjY3MDk1Lgor
ICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC82NzA5NQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU0ODUKKworICAgICAgICBC
cm9rZSBHVEsrIGFuZCBXaW5kb3dzIChSZXF1ZXN0ZWQgYnkgeGFuXyBvbiAjd2Via2l0KS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5o
OiBSZW1vdmVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0SlNDbGFzcyk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
TWFjLm1tOiBSZW1vdmVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVt
b3ZlU2VsZWN0aW9uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRy
ZWUudmNwcm9qOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorCiAyMDEwLTA5LTA5ICBDaHJp
cyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGF2aWQgS2lsemVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
ODRlZTgwZWNmNzE2OTIyYjk0ZWFmYWIyZDc2MmQzODBhNTRmZmYwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oIgotCi0j
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTUmV0YWluUHRyLmg+Ci0KLSNwcmFnbWEgbWFyayBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cgotCi0vLyBDYWxsYmFjayBtZXRob2RzCi0KLUFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0b1Rl
eHRNYXJrZXIoSlNPYmplY3RSZWYgb2JqZWN0KQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZShvYmplY3QpKTsKLX0K
LQotc3RhdGljIEpTVmFsdWVSZWYgaXNNYXJrZXJFcXVhbENhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKLXsKLSAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAxKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIGZhbHNlKTsKLQotICAgIEpTT2JqZWN0
UmVmIG90aGVyTWFya2VyID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFyZ3VtZW50c1swXSwg
ZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHRvVGV4
dE1hcmtlcih0aGlzT2JqZWN0KS0+aXNFcXVhbCh0b1RleHRNYXJrZXIob3RoZXJNYXJrZXIpKSk7
Ci19Ci0KLS8vIERlc3RydWN0aW9uCi0KLXN0YXRpYyB2b2lkIG1hcmtlckZpbmFsaXplKEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QpCi17Ci0gICAgZGVsZXRlIHRvVGV4dE1hcmtlcih0aGlzT2JqZWN0
KTsKLX0KLQotLy8gT2JqZWN0IENyZWF0aW9uCi0KLUpTT2JqZWN0UmVmIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyOjptYWtlSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihKU0NvbnRleHRSZWYgY29u
dGV4dCwgY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXImIGVsZW1lbnQpCi17Ci0gICAgcmV0
dXJuIEpTT2JqZWN0TWFrZShjb250ZXh0LCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Z2V0SlND
bGFzcygpLCBuZXcgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoZWxlbWVudCkpOwotfQotCi1KU0Ns
YXNzUmVmIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpnZXRKU0NsYXNzKCkKLXsKLSAgICBzdGF0
aWMgSlNTdGF0aWNWYWx1ZSBzdGF0aWNWYWx1ZXNbXSA9IHsKLSAgICAgICAgeyAwLCAwLCAwLCAw
IH0KLSAgICB9OwotICAgIAotICAgIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIHN0YXRpY0Z1bmN0
aW9uc1tdID0gewotICAgICAgICB7ICJpc0VxdWFsIiwgaXNNYXJrZXJFcXVhbENhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCi0gICAgICAgIHsgMCwgMCwgMCB9Ci0gICAgfTsKLSAgICAKLSAgICBzdGF0aWMgSlND
bGFzc0RlZmluaXRpb24gY2xhc3NEZWZpbml0aW9uID0gewotICAgICAgICAwLCBrSlNDbGFzc0F0
dHJpYnV0ZU5vbmUsICJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciIsIDAsIHN0YXRpY1ZhbHVlcywg
c3RhdGljRnVuY3Rpb25zLAotICAgICAgICAwLCBtYXJrZXJGaW5hbGl6ZSwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMAotICAgIH07Ci0gICAgCi0gICAgc3RhdGljIEpTQ2xhc3NSZWYgYWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJDbGFzcyA9IEpTQ2xhc3NDcmVhdGUoJmNsYXNzRGVmaW5pdGlvbik7
Ci0gICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlUZXh0TWFya2VyQ2xhc3M7Ci19Ci0KLSNwcmFnbWEg
bWFyayBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlCi0KLS8vIENhbGxiYWNrIG1ldGhvZHMK
LQotQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogdG9UZXh0TWFya2VyUmFuZ2UoSlNPYmpl
Y3RSZWYgb2JqZWN0KQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlKj4oSlNPYmplY3RHZXRQcml2YXRlKG9iamVjdCkpOwotfQotCi1zdGF0aWMg
SlNWYWx1ZVJlZiBpc01hcmtlclJhbmdlRXF1YWxDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBh
cmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCi17Ci0gICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCBmYWxzZSk7Ci0gICAgCi0gICAgSlNPYmplY3RS
ZWYgb3RoZXJNYXJrZXIgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgYXJndW1lbnRzWzBdLCBl
eGNlcHRpb24pOwotICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgdG9UZXh0
TWFya2VyUmFuZ2UodGhpc09iamVjdCktPmlzRXF1YWwodG9UZXh0TWFya2VyUmFuZ2Uob3RoZXJN
YXJrZXIpKSk7Ci19Ci0KLS8vIERlc3RydWN0aW9uCi0KLXN0YXRpYyB2b2lkIG1hcmtlclJhbmdl
RmluYWxpemUoSlNPYmplY3RSZWYgdGhpc09iamVjdCkKLXsKLSAgICBkZWxldGUgdG9UZXh0TWFy
a2VyUmFuZ2UodGhpc09iamVjdCk7Ci19Ci0KLS8vIE9iamVjdCBDcmVhdGlvbgotCi1KU09iamVj
dFJlZiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjptYWtlSlNBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlJiBlbGVtZW50KQotewotICAgIHJldHVybiBKU09iamVjdE1ha2UoY29udGV4
dCwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Z2V0SlNDbGFzcygpLCBuZXcgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZShlbGVtZW50KSk7Ci19Ci0KLUpTQ2xhc3NSZWYgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Z2V0SlNDbGFzcygpCi17Ci0gICAgc3RhdGljIEpTU3Rh
dGljVmFsdWUgc3RhdGljVmFsdWVzW10gPSB7Ci0gICAgICAgIHsgMCwgMCwgMCwgMCB9Ci0gICAg
fTsKLSAgICAKLSAgICBzdGF0aWMgSlNTdGF0aWNGdW5jdGlvbiBzdGF0aWNGdW5jdGlvbnNbXSA9
IHsKLSAgICAgICAgeyAiaXNFcXVhbCIsIGlzTWFya2VyUmFuZ2VFcXVhbENhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCi0gICAgICAgIHsgMCwgMCwgMCB9Ci0gICAgfTsKLSAgICAKLSAgICBzdGF0aWMgSlNDbGFz
c0RlZmluaXRpb24gY2xhc3NEZWZpbml0aW9uID0gewotICAgICAgICAwLCBrSlNDbGFzc0F0dHJp
YnV0ZU5vbmUsICJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIiwgMCwgc3RhdGljVmFsdWVz
LCBzdGF0aWNGdW5jdGlvbnMsCi0gICAgICAgIDAsIG1hcmtlclJhbmdlRmluYWxpemUsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAKLSAgICB9OwotICAgIAotICAgIHN0YXRpYyBKU0NsYXNzUmVm
IGFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VDbGFzcyA9IEpTQ2xhc3NDcmVhdGUoJmNsYXNz
RGVmaW5pdGlvbik7Ci0gICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VDbGFz
czsKLX0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxp
dHlUZXh0TWFya2VyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmIwMGNjNWU2MTBm
NjA0YTRkZDFmMTQyMmIzZTZmZTA4ZTY1M2UzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxp
dHlUZXh0TWFya2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyX2gKLSNkZWZpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJfaAotCi0jaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykK
LSNkZWZpbmUgU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMgMQotI2Vsc2UKLSNkZWZpbmUgU1VQUE9S
VFNfQVhfVEVYVE1BUktFUlMgMAotI2VuZGlmCi0KLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgotdHlwZWRlZiBDRlR5cGVSZWYgUGxhdGZvcm1UZXh0TWFya2Vy
OwotdHlwZWRlZiBDRlR5cGVSZWYgUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2U7Ci0jZWxzZQotdHlw
ZWRlZiB2b2lkKiBQbGF0Zm9ybVRleHRNYXJrZXI7Ci10eXBlZGVmIHZvaWQqIFBsYXRmb3JtVGV4
dE1hcmtlclJhbmdlOwotI2VuZGlmCi0KLWNsYXNzIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ7Ci0K
LWNsYXNzIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHsKLXB1YmxpYzoKLSAgICBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcihQbGF0Zm9ybVRleHRNYXJrZXIpOwotICAgIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJik7Ci0gICAgfkFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKCk7Ci0gICAgCi0gICAgUGxhdGZvcm1UZXh0TWFya2VyIHBsYXRmb3JtVGV4
dE1hcmtlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dE1hcmtlci5nZXQoKTsgfQotICAgIAotICAg
IHN0YXRpYyBKU09iamVjdFJlZiBtYWtlSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihKU0NvbnRl
eHRSZWYsIGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJik7Ci0gICAgYm9vbCBpc0VxdWFs
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7Ci0gICAgCi1wcml2YXRlOgotICAgIHN0YXRpYyBK
U0NsYXNzUmVmIGdldEpTQ2xhc3MoKTsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgUmV0YWluUHRy
PFBsYXRmb3JtVGV4dE1hcmtlcj4gbV90ZXh0TWFya2VyOwotI2Vsc2UKLSAgICBQbGF0Zm9ybVRl
eHRNYXJrZXIgbV90ZXh0TWFya2VyOwotI2VuZGlmCi19OwotCi1jbGFzcyBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlIHsKLXB1YmxpYzoKLSAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKTsKLSAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UmKTsKLSAgICB+QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZSgpOwotICAgIAotICAgIFBsYXRmb3JtVGV4dE1hcmtlclJh
bmdlIHBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0TWFya2Vy
UmFuZ2UuZ2V0KCk7IH0KLSAgICAKLSAgICBzdGF0aWMgSlNPYmplY3RSZWYgbWFrZUpTQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZShKU0NvbnRleHRSZWYsIGNvbnN0IEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UmKTsKLSAgICBib29sIGlzRXF1YWwoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSopOwotICAgIAotcHJpdmF0ZToKLSAgICBzdGF0aWMgSlNDbGFzc1JlZiBnZXRKU0Ns
YXNzKCk7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIFJldGFpblB0cjxQbGF0Zm9ybVRleHRNYXJr
ZXJSYW5nZT4gbV90ZXh0TWFya2VyUmFuZ2U7Ci0jZWxzZQotICAgIFBsYXRmb3JtVGV4dE1hcmtl
clJhbmdlIG1fdGV4dE1hcmtlclJhbmdlOwotI2VuZGlmCi19OwotCi1BY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciogdG9UZXh0TWFya2VyKEpTT2JqZWN0UmVmIG9iamVjdCk7Ci1BY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlKiB0b1RleHRNYXJrZXJSYW5nZShKU09iamVjdFJlZiBvYmplY3QpOwot
Ci0jaWYgIVNVUFBPUlRTX0FYX1RFWFRNQVJLRVJTCi1pbmxpbmUgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKFBsYXRmb3JtVGV4dE1hcmtlcikgeyB9Ci1p
bmxpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKGNv
bnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJikgeyB9Ci1pbmxpbmUgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcigpIHsgfQotaW5saW5lIGJvb2wgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7
IHJldHVybiBmYWxzZTsgfQotCi1pbmxpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZShQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSkgeyB9
Ci1pbmxpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZShjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlJikgeyB9Ci1pbmxp
bmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6fkFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UoKSB7IH0KLWlubGluZSBib29sIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6Omlz
RXF1YWwoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopIHsgcmV0dXJuIGZhbHNlOyB9Ci0j
ZW5kaWYKLQotI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRfaApkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAppbmRl
eCAyMmJiYmFhMjk5ODdhYzY4ZTkwNjkxYWFhODc0ZDhhMTE1MjA5OTAzLi5lMDllYjM1ZWViMjYz
ZWI4M2IzNGUzZjdlMmIxYzBkZjBhOWM0MmIwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcApAQCAtNDA2LDYyICs0MDYs
NiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiByZW1vdmVTZWxlY3Rpb25DYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuYwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKIH0KIAotc3RhdGljIEpTVmFsdWVSZWYgdGV4dE1hcmtlclJhbmdlRm9y
RWxlbWVudENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlv
biwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKLXsKLSAgICBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KiB1aUVsZW1lbnQgPSAwOwotICAgIGlmIChhcmd1bWVudENvdW50
ID09IDEpCi0gICAgICAgIHVpRWxlbWVudCA9IHRvQVhFbGVtZW50KEpTVmFsdWVUb09iamVjdChj
b250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOwotICAgIAotICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjptYWtlSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKGNvbnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT50ZXh0TWFya2VyUmFuZ2VGb3JF
bGVtZW50KHVpRWxlbWVudCkpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiB0ZXh0TWFya2VyUmFu
Z2VMZW5ndGhDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCi17Ci0gICAgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UgPSAwOwotICAgIGlmIChhcmd1bWVudENv
dW50ID09IDEpCi0gICAgICAgIHJhbmdlID0gdG9UZXh0TWFya2VyUmFuZ2UoSlNWYWx1ZVRvT2Jq
ZWN0KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7Ci0gICAgCi0gICAgcmV0dXJu
IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIChpbnQpdG9BWEVsZW1lbnQodGhpc09iamVjdCkt
PnRleHRNYXJrZXJSYW5nZUxlbmd0aChyYW5nZSkpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiB0
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQotewotICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciA9IDA7Ci0g
ICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlciA9IDA7Ci0gICAgaWYgKGFyZ3Vt
ZW50Q291bnQgPT0gMikgewotICAgICAgICBzdGFydE1hcmtlciA9IHRvVGV4dE1hcmtlcihKU1Zh
bHVlVG9PYmplY3QoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKLSAgICAgICAg
ZW5kTWFya2VyID0gdG9UZXh0TWFya2VyKEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBhcmd1bWVu
dHNbMV0sIGV4Y2VwdGlvbikpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZTo6bWFrZUpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZShjb250
ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+dGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyhz
dGFydE1hcmtlciwgZW5kTWFya2VyKSk7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIHN0YXJ0VGV4
dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKLXsKLSAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBtYXJrZXJSYW5nZSA9
IDA7Ci0gICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkKLSAgICAgICAgbWFya2VyUmFuZ2UgPSB0
b1RleHRNYXJrZXJSYW5nZShKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgYXJndW1lbnRzWzBdLCBl
eGNlcHRpb24pKTsKLSAgICAKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6Om1h
a2VKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyKGNvbnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmpl
Y3QpLT5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpKTsKLX0K
LQotc3RhdGljIEpTVmFsdWVSZWYgZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZUNhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKLXsKLSAgICBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlKiBtYXJrZXJSYW5nZSA9IDA7Ci0gICAgaWYgKGFyZ3VtZW50Q291bnQgPT0g
MSkKLSAgICAgICAgbWFya2VyUmFuZ2UgPSB0b1RleHRNYXJrZXJSYW5nZShKU1ZhbHVlVG9PYmpl
Y3QoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKLSAgICAKLSAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6Om1ha2VKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyKGNv
bnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSk7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIGFjY2Vzc2liaWxp
dHlFbGVtZW50Rm9yVGV4dE1hcmtlckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKLXsKLSAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2VyID0gMDsKLSAgICBpZiAo
YXJndW1lbnRDb3VudCA9PSAxKQotICAgICAgICBtYXJrZXIgPSB0b1RleHRNYXJrZXIoSlNWYWx1
ZVRvT2JqZWN0KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7Ci0gICAgCi0gICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQoY29udGV4dCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmFjY2Vzc2liaWxpdHlFbGVtZW50
Rm9yVGV4dE1hcmtlcihtYXJrZXIpKTsKLX0KIAogLy8gU3RhdGljIFZhbHVlIEdldHRlcnMKIApA
QCAtNzE4LDQyICs2NjIsNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiByZW1vdmVOb3RpZmljYXRpb25M
aXN0ZW5lckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iagogICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAotLy8gSW1wbGVtZW50YXRpb24KLQot
I2lmICFTVVBQT1JUU19BWF9URVhUTUFSS0VSUwotCi1BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCopCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSopCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLUFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2Vy
cyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciosIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikKLXsK
LSAgICByZXR1cm4gMDsKLX0KLQotQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UqKQotewotICAgIHJldHVybiAwOwotfQotCi1BY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1h
cmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKQotewotICAgIHJldHVybiAw
OyAgIAotfQotCi1BY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciopCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLSNlbmRpZgotCiAvLyBEZXN0cnVjdGlvbgogCiBz
dGF0aWMgdm9pZCBmaW5hbGl6ZShKU09iamVjdFJlZiB0aGlzT2JqZWN0KQpAQCAtODY2LDEyICs3
NzQsNiBAQCBKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTQ2xhc3MoKQog
ICAgICAgICB7ICJ0YWtlU2VsZWN0aW9uIiwgdGFrZVNlbGVjdGlvbkNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgImFkZFNlbGVjdGlvbiIsIGFkZFNlbGVjdGlvbkNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgInJlbW92ZVNlbGVjdGlvbiIsIHJlbW92ZVNlbGVjdGlvbkNhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCi0gICAgICAgIHsgInRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQiLCB0ZXh0TWFya2Vy
UmFuZ2VGb3JFbGVtZW50Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKLSAgICAgICAgeyAidGV4dE1hcmtlclJh
bmdlRm9yTWFya2VycyIsIHRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnNDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAotICAgICAgICB7ICJzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UiLCBzdGFydFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAotICAgICAgICB7ICJl
bmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlIiwgZW5kVGV4dE1hcmtlckZvclRleHRNYXJr
ZXJSYW5nZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCi0gICAgICAgIHsgImFjY2Vzc2liaWxpdHlFbGVtZW50
Rm9yVGV4dE1hcmtlciIsIGFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlckNhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCi0gICAgICAgIHsgInRleHRNYXJrZXJSYW5nZUxlbmd0aCIsIHRleHRNYXJrZXJS
YW5nZUxlbmd0aENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgMCwgMCwgMCB9CiAgICAgfTsK
IApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oCmluZGV4IDI2MDY3OTVkZmU3MzM4YTQzYjIxYjU0YjA3YTI0M2E4NjVlMzA4NzEuLjEz
NDE1Y2RjZjQzODMzMzYxMTUxMzNkMzc2NDY5YzlkNjE0Y2VmYzIgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKQEAgLTI2LDcg
KzI2LDYgQEAKICNpZm5kZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudF9oCiAjZGVmaW5lIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnRfaAogCi0jaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgogI2luY2x1ZGUgPHd0
Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQxLDggKzQwLDggQEAg
dHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QqIFBsYXRmb3JtVUlFbGVtZW50OwogI3VuZGVmIF9X
SU5TT0NLQVBJXwogI2RlZmluZSBfV0lOU09DS0FQSV8gLy8gUHJldmVudCBpbmNsdXNpb24gb2Yg
d2luc29jay5oIGluIHdpbmRvd3MuaAogCi0jaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNp
bmNsdWRlIDxvbGVhY2MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgogCiB0eXBlZGVm
IENPTVB0cjxJQWNjZXNzaWJsZT4gUGxhdGZvcm1VSUVsZW1lbnQ7CiAjZWxpZiBQTEFURk9STShH
VEspCkBAIC0xODQsMTQgKzE4Myw2IEBAIHB1YmxpYzoKICAgICAvLyBUYWJsZS1zcGVjaWZpYwog
ICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgY2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBj
b2x1bW4sIHVuc2lnbmVkIHJvdyk7CiAKLSAgICAvLyBUZXh0IG1hcmtlcnMuCi0gICAgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZSB0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQqKTsgICAgCi0gICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSB0
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1h
cmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcik7Ci0gICAgQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIgc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKLSAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBlbmRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Uq
KTsKLSAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4
dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOwotICAgIGludCB0ZXh0TWFya2VyUmFu
Z2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwotICAgIAogICAgIC8vIE5v
dGlmaWNhdGlvbnMKICAgICAvLyBGdW5jdGlvbiBjYWxsYmFjayBzaG91bGQgdGFrZSBvbmUgYXJn
dW1lbnQsIHRoZSBuYW1lIG9mIHRoZSBub3RpZmljYXRpb24uCiAgICAgYm9vbCBhZGROb3RpZmlj
YXRpb25MaXN0ZW5lcihKU09iamVjdFJlZiBmdW5jdGlvbkNhbGxiYWNrKTsKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMwMWNhNGVkM2JiZDJlYjAyYWNjZWE2Zjc4
Nzc2YTkxZDI5ZmE4ZGYuLmM5MmM3MDQ3MzdmMjRkYTg4OWM4MzUzNTk5NGEyYTk2NGI4OThmNTUg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
RHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDMsOSArNDMsNiBA
QAogCQkxQUM3N0RDRjEyMDYwNUI2MDA1QzE5RUYgLyogTlBSdW50aW1lUmVtb3ZlUHJvcGVydHku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDNzdE
Q0UxMjA2MDVCNjAwNUMxOUVGIC8qIE5QUnVudGltZVJlbW92ZVByb3BlcnR5LmNwcCAqLzsgfTsK
IAkJMUFEOUQyRkUxMjAyODQwOTAwMUE3MEQxIC8qIFBsdWdpblNjcmlwdGFibGVOUE9iamVjdElu
dm9rZURlZmF1bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUFEOUQyRkQxMjAyODQwOTAwMUE3MEQxIC8qIFBsdWdpblNjcmlwdGFibGVOUE9iamVj
dEludm9rZURlZmF1bHQuY3BwICovOyB9OwogCQkyM0JDQjg5MDBFQTU3NjIzMDAzQzYyODkgLyog
T3BlbkdMLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDIzQkNCODhGMEVBNTc2MjMwMDNDNjI4OSAvKiBPcGVuR0wuZnJhbWV3b3JrICov
OyB9OwotCQkyOUNGQkExMDEyMjczNkU2MDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5Q0ZC
QTBFMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oICovOyB9Owot
CQkyOUNGQkExMTEyMjczNkU2MDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRkJBMEYx
MjI3MzZFNjAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCAqLzsgfTsKLQkJ
MjlDRkJBMkUxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRkJBMkQx
MjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tICovOyB9Owog
CQkzNzEzRURFMjExNUJFMTkzMDA3MDU3MjAgLyogQ29sb3JCaXRzLUEucG5nIGluIENvcHkgRm9u
dCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzEzRURERjExNUJF
MTZGMDA3MDU3MjAgLyogQ29sb3JCaXRzLUEucG5nICovOyB9OwogCQkzNzEzRURFMzExNUJFMTkz
MDA3MDU3MjAgLyogQ29sb3JCaXRzLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxM0VERTAxMTVCRTE2RjAwNzA1NzIwIC8qIENvbG9y
Qml0cy50dGYgKi87IH07CiAJCTUxODVGNkIyMTA3MTRFMDcwMDdBQTM5MyAvKiBIaXN0b3J5RGVs
ZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTg1RjY5RjEwNzE0QTU3MDA3QUEzOTMgLyogSGlzdG9yeURlbGVnYXRlLm1tICovOyB9OwpAQCAt
MjA1LDkgKzIwMiw2IEBACiAJCTFBQzc3RENFMTIwNjA1QjYwMDVDMTlFRiAvKiBOUFJ1bnRpbWVS
ZW1vdmVQcm9wZXJ0eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBO
UFJ1bnRpbWVSZW1vdmVQcm9wZXJ0eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBRDlEMkZEMTIwMjg0MDkwMDFBNzBEMSAvKiBQbHVnaW5TY3JpcHRhYmxlTlBPYmplY3RJbnZv
a2VEZWZhdWx0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsdWdp
blNjcmlwdGFibGVOUE9iamVjdEludm9rZURlZmF1bHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyM0JDQjg4RjBFQTU3NjIzMDAzQzYyODkgLyogT3BlbkdMLmZyYW1ld29yayAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIu
ZnJhbWV3b3JrOyBuYW1lID0gT3BlbkdMLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7
IH07Ci0JCTI5Q0ZCQTBFMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyOUNGQkEwRjEyMjczNkU2MDBC
QzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkyOUNGQkEyRDEyMjczQTEwMDBCQzMwQzAgLyogQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbTsgcGF0aCA9IG1hYy9BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzJBNzBB
QUIwMzcwNUUxRjAwQzkxNzgzIC8qIER1bXBSZW5kZXJUcmVlUHJlZml4LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IER1bXBSZW5kZXJUcmVlUHJlZml4Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTM3MTNFRERGMTE1QkUxNkYwMDcwNTcyMCAvKiBDb2xvckJpdHMt
QS5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBp
bWFnZS5wbmc7IG5hbWUgPSAiQ29sb3JCaXRzLUEucG5nIjsgcGF0aCA9ICJmb250cy9Db2xvckJp
dHMtQS5wbmciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzEzRURFMDExNUJFMTZG
MDA3MDU3MjAgLyogQ29sb3JCaXRzLnR0ZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IG5hbWUgPSBDb2xvckJpdHMudHRmOyBwYXRoID0gZm9u
dHMvQ29sb3JCaXRzLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM5NSw5ICsz
ODksNiBAQAogCQkJCUJDRDA4QjM5MEUxMDU3RUYwMEE3RDBDMSAvKiBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5jcHAgKi8sCiAJCQkJQkNEMDhBNTgwRTEwNDk2QjAwQTdEMEMxIC8qIEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmggKi8sCiAJCQkJQkNEMDhCNzAwRTEwNTlEMjAwQTdEMEMxIC8qIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tICovLAotCQkJCTI5Q0ZCQTBGMTIyNzM2RTYwMEJD
MzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi8sCi0JCQkJMjlDRkJBMEUxMjI3
MzZFNjAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggKi8sCi0JCQkJMjlDRkJB
MkQxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tICovLAog
CQkJCUJDMEUyNERGMEUyRDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNw
cCAqLywKIAkJCQlCQzBFMjRERTBFMkQ5NDUxMDAxQjZCQzIgLyogQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oICovLAogCQkJCUJDMEUyNjE0MEUyREE0QzYwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tICovLApAQCAtNTk0LDcgKzU4NSw2IEBACiAJCQkJQkM5RDkwMjYwQzk3
NDcyRTAwOTlBNEEzIC8qIFdvcmtRdWV1ZUl0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxODVG
NkIzMTA3MTRFMTIwMDdBQTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxQjc4MTY3MTFBRjMxQzMwMDdFMUJDMiAvKiBNb2NrR2VvbG9jYXRpb25Qcm92aWRlci5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMjlDRkJBMTAxMjI3MzZFNjAwQkMzMEMwIC8qIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTc2OCw4ICs3NTgsNiBAQAogCQkJ
CUJDQTE4QjI2MEM5QjAxNUMwMDExNDM2OSAvKiBXb3JrUXVldWVJdGVtTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTE4NUY2QjIxMDcxNEUwNzAwN0FBMzkzIC8qIEhpc3RvcnlEZWxlZ2F0ZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUUxQjc4MTY1MTFBRjMxQjcwMDdFMUJDMiAvKiBNb2NrR2Vv
bG9jYXRpb25Qcm92aWRlci5tbSBpbiBTb3VyY2VzICovLAotCQkJCTI5Q0ZCQTExMTIyNzM2RTYw
MEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQkyOUNGQkEyRTEyMjczQTEwMDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMu
bW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNTg1NjQxNGM3ZTFjZTAxMDYyYThkMDNhMmIzMDVmMjhkNTBkNjgxMS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0KKysrIC9k
ZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotCi0jaW1wb3J0ICJBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlci5oIgotI2ltcG9ydCAiRHVtcFJlbmRlclRyZWUuaCIKLQotI3ByYWdtYSBt
YXJrIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyCi0KLUFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihQbGF0Zm9ybVRleHRNYXJrZXIgbWFya2VyKQotICAgIDog
bV90ZXh0TWFya2VyKG1hcmtlcikKLXsKLX0KLQotQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJiBtYXJr
ZXIpCi0gICAgOiBtX3RleHRNYXJrZXIobWFya2VyLnBsYXRmb3JtVGV4dE1hcmtlcigpKQotewot
fQotCi1BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6fkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKCkK
LXsKLX0KLQotYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNFcXVhbChBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciogb3RoZXIpCi17Ci0gICAgcmV0dXJuIFsoaWQpcGxhdGZvcm1UZXh0TWFy
a2VyKCkgaXNFcXVhbDooaWQpb3RoZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLX0KLQotI3By
YWdtYSBtYXJrIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UKLQotQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZTo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZShQbGF0Zm9ybVRleHRN
YXJrZXJSYW5nZSBtYXJrZXJSYW5nZSkKLSAgICA6IG1fdGV4dE1hcmtlclJhbmdlKG1hcmtlclJh
bmdlKQotewotfQotCi1BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UmIG1hcmtl
clJhbmdlKQotICAgIDogbV90ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UucGxhdGZvcm1UZXh0
TWFya2VyUmFuZ2UoKSkKLXsKLX0KLQotQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6fkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoKQotewotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogb3Ro
ZXIpCi17Ci0gICAgcmV0dXJuIFsoaWQpcGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBpc0VxdWFs
OihpZClvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07Ci19Ci0KZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFj
Lm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0KaW5kZXggZmE0YWNmNTdkOTk3YmRjZGQ2OTE1YWVlNjMyYjU0ZGQzOTlhYzQwYy4u
ZDE1OTJiMmE2ZGNiMzI4ZTJlNjBhYmYyYmRjMjMxMTk2ZmIzYjc0ZiAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0K
KysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0KQEAgLTExOTAsNzAgKzExOTAsMyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnJlbW92ZVNlbGVjdGlvbigpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogfQotCi0j
aWYgU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMKLQotLy8gVGV4dCBtYXJrZXJzCi1BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5n
ZUZvckVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkKLXsKLSAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtlclJhbmdlRm9yVUlFbGVt
ZW50IiBmb3JQYXJhbWV0ZXI6ZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKV07Ci0gICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKLSAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgCi0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSogcmFuZ2UpCi17Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0g
ICAgTlNOdW1iZXIqIGxlbmd0aFZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6QCJBWExlbmd0aEZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihpZCly
YW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07Ci0gICAgcmV0dXJuIFtsZW5ndGhWYWx1
ZSBpbnRWYWx1ZV07Ci0gICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAotICAgIHJldHVy
biAwOwotfQotCi0KLUFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBlbmRNYXJrZXIpCi17Ci0g
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNBcnJheSogdGV4dE1hcmtlcnMgPSBb
TlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihpZClzdGFydE1hcmtlci0+cGxhdGZvcm1UZXh0TWFy
a2VyKCksIChpZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpLCBuaWxdOwotICAgIGlk
IHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JVbm9yZGVyZWRUZXh0TWFya2VycyIgZm9yUGFyYW1ldGVy
OnRleHRNYXJrZXJzXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSh0
ZXh0TWFya2VyUmFuZ2UpOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKLSAgICBy
ZXR1cm4gMDsKLX0KLQotQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UqIHJhbmdlKQotewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAg
IGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6KGlkKXJh
bmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIodGV4dE1hcmtlcik7Ci0gICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAg
IAotICAgIHJldHVybiAwOyAgICAKLX0KLQotQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKLXsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKLSAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6QCJBWEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRl
cjooaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOwotICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKLSAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCi0gICAgCi0gICAgcmV0dXJuIDA7ICAgIAotfQotCi1BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtl
cihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2VyKQotewotICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwotICAgIGlkIHVpRWxlbWVudCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KGlk
KW1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KHVpRWxlbWVudCk7Ci0gICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAot
ICAgIHJldHVybiAwOyAgCi19Ci0KLSNlbmRpZiAvLyBTVVBQT1JUU19BWF9URVhUTUFSS0VSUwpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LnZjcHJvaiBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS52
Y3Byb2oKaW5kZXggMWU3NjVjNmE5ZmM4Y2E4YWNmOGEyMWVhNGQ0ZjcyY2U4NmVkMDcwMy4uMTI1
YzZjNmZlYjg3M2MwY2RhYmQ4NjA5OThmNGZmMmZjNjJhMzEyYSAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLnZjcHJvagorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUudmNwcm9qCkBAIC01Nzgs
MTQgKzU3OCw2IEBACiAJCQk+DQogCQk8L0ZpbGU+DQogCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0
aD0iLi5cQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIg0KLQkJCT4NCi0JCTwvRmlsZT4NCi0J
CTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oIg0K
LQkJCT4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQogCQkJUmVsYXRpdmVQYXRoPSIuXERyYWdnaW5n
SW5mby5oIg0KIAkJCT4NCiAJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9HTlVt
YWtlZmlsZS5hbSBiL1dlYktpdFRvb2xzL0dOVW1ha2VmaWxlLmFtCmluZGV4IDI5MmNhN2VhOWEy
OWQyNjVlZDNkMTY4ODFiZWM3OTc5ZWIwZjVlMzkuLjM5ZGY0MjFmNDQzOTEyZjZhMzIyNzI5YWU1
OWE0NjIxMTkwODJkNWQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1dlYktpdFRvb2xzL0dOVW1ha2VmaWxlLmFtCkBAIC00OSw4ICs0OSw2IEBAIFByb2dyYW1z
X0R1bXBSZW5kZXJUcmVlX1NPVVJDRVMgPSBcCiAJV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
RHVtcFJlbmRlclRyZWVQcmVmaXguaCBcCiAJV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIFwKIAlXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIFwKLQlXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9B
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgXAotCVdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggXAogCVdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIFwKIAlXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggXAogCVdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0dDQ29udHJvbGxlci5jcHAgXAo=
</data>
<flag name="review"
          id="56285"
          type_id="1"
          status="+"
          setter="xan.lopez"
    />
    <flag name="commit-queue"
          id="56283"
          type_id="3"
          status="-"
          setter="cfleizach"
    />
          </attachment>
      

    </bug>

</bugzilla>